From c27e4a5420976462e92dc579fb0664f2efad2cc9 Mon Sep 17 00:00:00 2001
From: A1300399510 <A1300399510>
Date: Wed, 29 Nov 2023 12:28:01 +0800
Subject: [PATCH] no message

---
 css/index.css                                 |   216 +-
 css/index.less                                |   306 +-
 img/hot-icon.png                              |   Bin 0 -> 1934 bytes
 img/issue-bj.png                              |   Bin 0 -> 2331 bytes
 img/logo.png                                  |   Bin 6157 -> 33855 bytes
 index.html                                    |   175 +-
 js/axios.min.js                               |     9 +
 js/index.js                                   |   452 +-
 js/vue.js                                     | 12014 +++++++++++
 js/vue@3.2.36.js                              | 15929 +++++++++++++++
 node_modules/.bin/xss                         |    12 +
 node_modules/.bin/xss.cmd                     |    17 +
 node_modules/.bin/xss.ps1                     |    28 +
 node_modules/.package-lock.json               |    40 +
 node_modules/commander/CHANGELOG.md           |   419 +
 node_modules/commander/LICENSE                |    22 +
 node_modules/commander/Readme.md              |   428 +
 node_modules/commander/index.js               |  1224 ++
 node_modules/commander/package.json           |    38 +
 node_modules/commander/typings/index.d.ts     |   310 +
 node_modules/cssfilter/LICENSE                |    22 +
 node_modules/cssfilter/README.md              |    86 +
 node_modules/cssfilter/lib/css.js             |   110 +
 node_modules/cssfilter/lib/default.js         |   398 +
 node_modules/cssfilter/lib/index.js           |    32 +
 node_modules/cssfilter/lib/parser.js          |    74 +
 node_modules/cssfilter/lib/util.js            |    35 +
 node_modules/cssfilter/package.json           |    49 +
 node_modules/mavon-editor/LICENSE             |    21 +
 node_modules/mavon-editor/README.md           |   339 +
 node_modules/mavon-editor/dist/css/index.css  |     1 +
 .../mavon-editor/dist/font/fontello.eot       |   Bin 0 -> 15568 bytes
 .../mavon-editor/dist/font/fontello.svg       |    72 +
 .../mavon-editor/dist/font/fontello.ttf       |   Bin 0 -> 15400 bytes
 .../mavon-editor/dist/font/fontello.woff      |   Bin 0 -> 9068 bytes
 .../mavon-editor/dist/font/fontello.woff2     |   Bin 0 -> 7764 bytes
 .../dist/highlightjs/highlight.min.js         |  1149 ++
 .../dist/highlightjs/languages/1c.min.js      |    24 +
 .../dist/highlightjs/languages/abnf.min.js    |    11 +
 .../highlightjs/languages/accesslog.min.js    |    13 +
 .../highlightjs/languages/actionscript.min.js |    17 +
 .../dist/highlightjs/languages/ada.min.js     |    26 +
 .../highlightjs/languages/angelscript.min.js  |    21 +
 .../dist/highlightjs/languages/apache.min.js  |    14 +
 .../highlightjs/languages/applescript.min.js  |    19 +
 .../dist/highlightjs/languages/arcade.min.js  |    27 +
 .../dist/highlightjs/languages/arduino.min.js |    54 +
 .../dist/highlightjs/languages/armasm.min.js  |    17 +
 .../highlightjs/languages/asciidoc.min.js     |    35 +
 .../dist/highlightjs/languages/aspectj.min.js |    31 +
 .../highlightjs/languages/autohotkey.min.js   |    14 +
 .../dist/highlightjs/languages/autoit.min.js  |    21 +
 .../dist/highlightjs/languages/avrasm.min.js  |    12 +
 .../dist/highlightjs/languages/awk.min.js     |    11 +
 .../dist/highlightjs/languages/axapta.min.js  |    10 +
 .../dist/highlightjs/languages/bash.min.js    |    20 +
 .../dist/highlightjs/languages/basic.min.js   |    10 +
 .../dist/highlightjs/languages/bnf.min.js     |     6 +
 .../highlightjs/languages/brainfuck.min.js    |     7 +
 .../dist/highlightjs/languages/c.min.js       |    41 +
 .../dist/highlightjs/languages/cal.min.js     |    14 +
 .../highlightjs/languages/capnproto.min.js    |    13 +
 .../dist/highlightjs/languages/ceylon.min.js  |    15 +
 .../dist/highlightjs/languages/clean.min.js   |     8 +
 .../highlightjs/languages/clojure-repl.min.js |     4 +
 .../dist/highlightjs/languages/clojure.min.js |    19 +
 .../dist/highlightjs/languages/cmake.min.js   |     7 +
 .../highlightjs/languages/coffeescript.min.js |    29 +
 .../dist/highlightjs/languages/coq.min.js     |     7 +
 .../dist/highlightjs/languages/cos.min.js     |    15 +
 .../dist/highlightjs/languages/cpp.min.js     |    47 +
 .../dist/highlightjs/languages/crmsh.min.js   |    19 +
 .../dist/highlightjs/languages/crystal.min.js |    48 +
 .../dist/highlightjs/languages/csharp.min.js  |    47 +
 .../dist/highlightjs/languages/csp.min.js     |     7 +
 .../dist/highlightjs/languages/css.min.js     |    31 +
 .../dist/highlightjs/languages/d.min.js       |    20 +
 .../dist/highlightjs/languages/dart.min.js    |    22 +
 .../dist/highlightjs/languages/delphi.min.js  |    17 +
 .../dist/highlightjs/languages/diff.min.js    |     9 +
 .../dist/highlightjs/languages/django.min.js  |    13 +
 .../dist/highlightjs/languages/dns.min.js     |    11 +
 .../highlightjs/languages/dockerfile.min.js   |     8 +
 .../dist/highlightjs/languages/dos.min.js     |    12 +
 .../highlightjs/languages/dsconfig.min.js     |     9 +
 .../dist/highlightjs/languages/dts.min.js     |    22 +
 .../dist/highlightjs/languages/dust.min.js    |     8 +
 .../dist/highlightjs/languages/ebnf.min.js    |     7 +
 .../dist/highlightjs/languages/elixir.min.js  |    33 +
 .../dist/highlightjs/languages/elm.min.js     |    18 +
 .../dist/highlightjs/languages/erb.min.js     |     5 +
 .../highlightjs/languages/erlang-repl.min.js  |    13 +
 .../dist/highlightjs/languages/erlang.min.js  |    27 +
 .../dist/highlightjs/languages/excel.min.js   |    10 +
 .../dist/highlightjs/languages/fix.min.js     |     7 +
 .../dist/highlightjs/languages/flix.min.js    |    10 +
 .../dist/highlightjs/languages/fortran.min.js |    16 +
 .../dist/highlightjs/languages/fsharp.min.js  |    35 +
 .../dist/highlightjs/languages/gams.min.js    |    28 +
 .../dist/highlightjs/languages/gauss.min.js   |    36 +
 .../dist/highlightjs/languages/gcode.min.js   |    16 +
 .../dist/highlightjs/languages/gherkin.min.js |     8 +
 .../dist/highlightjs/languages/glsl.min.js    |     8 +
 .../dist/highlightjs/languages/gml.min.js     |    11 +
 .../dist/highlightjs/languages/go.min.js      |    14 +
 .../dist/highlightjs/languages/golo.min.js    |     6 +
 .../dist/highlightjs/languages/gradle.min.js  |     5 +
 .../dist/highlightjs/languages/groovy.min.js  |    20 +
 .../dist/highlightjs/languages/haml.min.js    |    18 +
 .../highlightjs/languages/handlebars.min.js   |    29 +
 .../dist/highlightjs/languages/haskell.min.js |    29 +
 .../dist/highlightjs/languages/haxe.min.js    |    26 +
 .../dist/highlightjs/languages/hsp.min.js     |    14 +
 .../dist/highlightjs/languages/http.min.js    |    14 +
 .../dist/highlightjs/languages/hy.min.js      |    16 +
 .../dist/highlightjs/languages/inform7.min.js |    11 +
 .../dist/highlightjs/languages/ini.min.js     |    15 +
 .../dist/highlightjs/languages/irpf90.min.js  |    15 +
 .../dist/highlightjs/languages/isbl.min.js    |    25 +
 .../dist/highlightjs/languages/java.min.js    |    37 +
 .../highlightjs/languages/javascript.min.js   |    76 +
 .../highlightjs/languages/jboss-cli.min.js    |    10 +
 .../dist/highlightjs/languages/json.min.js    |     7 +
 .../highlightjs/languages/julia-repl.min.js   |     5 +
 .../dist/highlightjs/languages/julia.min.js   |    18 +
 .../dist/highlightjs/languages/kotlin.min.js  |    45 +
 .../dist/highlightjs/languages/lasso.min.js   |    29 +
 .../dist/highlightjs/languages/latex.min.js   |    33 +
 .../dist/highlightjs/languages/ldif.min.js    |     5 +
 .../dist/highlightjs/languages/leaf.min.js    |     8 +
 .../dist/highlightjs/languages/less.min.js    |    43 +
 .../dist/highlightjs/languages/lisp.min.js    |    17 +
 .../languages/livecodeserver.min.js           |    21 +
 .../highlightjs/languages/livescript.min.js   |    35 +
 .../dist/highlightjs/languages/llvm.min.js    |    14 +
 .../dist/highlightjs/languages/lsl.min.js     |    19 +
 .../dist/highlightjs/languages/lua.min.js     |    15 +
 .../highlightjs/languages/makefile.min.js     |    14 +
 .../highlightjs/languages/markdown.min.js     |    31 +
 .../highlightjs/languages/mathematica.min.js  |    21 +
 .../dist/highlightjs/languages/matlab.min.js  |    16 +
 .../dist/highlightjs/languages/maxima.min.js  |    12 +
 .../dist/highlightjs/languages/mel.min.js     |     8 +
 .../dist/highlightjs/languages/mercury.min.js |    16 +
 .../dist/highlightjs/languages/mipsasm.min.js |    15 +
 .../dist/highlightjs/languages/mizar.min.js   |     4 +
 .../highlightjs/languages/mojolicious.min.js  |     6 +
 .../dist/highlightjs/languages/monkey.min.js  |    17 +
 .../highlightjs/languages/moonscript.min.js   |    23 +
 .../dist/highlightjs/languages/n1ql.min.js    |    13 +
 .../highlightjs/languages/nestedtext.min.js   |     9 +
 .../dist/highlightjs/languages/nginx.min.js   |    21 +
 .../dist/highlightjs/languages/nim.min.js     |    15 +
 .../dist/highlightjs/languages/nix.min.js     |    12 +
 .../highlightjs/languages/node-repl.min.js    |     5 +
 .../dist/highlightjs/languages/nsis.min.js    |    27 +
 .../highlightjs/languages/objectivec.min.js   |    21 +
 .../dist/highlightjs/languages/ocaml.min.js   |    14 +
 .../highlightjs/languages/openscad.min.js     |    15 +
 .../dist/highlightjs/languages/oxygene.min.js |    15 +
 .../dist/highlightjs/languages/parser3.min.js |    10 +
 .../dist/highlightjs/languages/perl.min.js    |    36 +
 .../dist/highlightjs/languages/pf.min.js      |     9 +
 .../dist/highlightjs/languages/pgsql.min.js   |    69 +
 .../highlightjs/languages/php-template.min.js |     8 +
 .../dist/highlightjs/languages/php.min.js     |    37 +
 .../highlightjs/languages/plaintext.min.js    |     4 +
 .../dist/highlightjs/languages/pony.min.js    |    12 +
 .../highlightjs/languages/powershell.min.js   |    39 +
 .../highlightjs/languages/processing.min.js   |    18 +
 .../dist/highlightjs/languages/profile.min.js |     9 +
 .../dist/highlightjs/languages/prolog.min.js  |    11 +
 .../highlightjs/languages/properties.min.js   |    11 +
 .../highlightjs/languages/protobuf.min.js     |    11 +
 .../dist/highlightjs/languages/puppet.min.js  |    17 +
 .../highlightjs/languages/purebasic.min.js    |    11 +
 .../highlightjs/languages/python-repl.min.js  |     5 +
 .../dist/highlightjs/languages/python.min.js  |    42 +
 .../dist/highlightjs/languages/q.min.js       |     8 +
 .../dist/highlightjs/languages/qml.min.js     |    29 +
 .../dist/highlightjs/languages/r.min.js       |    26 +
 .../highlightjs/languages/reasonml.min.js     |    43 +
 .../dist/highlightjs/languages/rib.min.js     |     6 +
 .../highlightjs/languages/roboconf.min.js     |    12 +
 .../highlightjs/languages/routeros.min.js     |    22 +
 .../dist/highlightjs/languages/rsl.min.js     |    10 +
 .../dist/highlightjs/languages/ruby.min.js    |    48 +
 .../languages/ruleslanguage.min.js            |     9 +
 .../dist/highlightjs/languages/rust.min.js    |    29 +
 .../dist/highlightjs/languages/sas.min.js     |    18 +
 .../dist/highlightjs/languages/scala.min.js   |    25 +
 .../dist/highlightjs/languages/scheme.min.js  |    19 +
 .../dist/highlightjs/languages/scilab.min.js  |    13 +
 .../dist/highlightjs/languages/scss.min.js    |    33 +
 .../dist/highlightjs/languages/shell.min.js   |     5 +
 .../dist/highlightjs/languages/smali.min.js   |    13 +
 .../highlightjs/languages/smalltalk.min.js    |    11 +
 .../dist/highlightjs/languages/sml.min.js     |    14 +
 .../dist/highlightjs/languages/sqf.min.js     |    17 +
 .../dist/highlightjs/languages/sql.min.js     |    17 +
 .../dist/highlightjs/languages/stan.min.js    |    17 +
 .../dist/highlightjs/languages/stata.min.js   |    11 +
 .../dist/highlightjs/languages/step21.min.js  |    10 +
 .../dist/highlightjs/languages/stylus.min.js  |    36 +
 .../dist/highlightjs/languages/subunit.min.js |     9 +
 .../dist/highlightjs/languages/swift.min.js   |    60 +
 .../highlightjs/languages/taggerscript.min.js |     8 +
 .../dist/highlightjs/languages/tap.min.js     |     7 +
 .../dist/highlightjs/languages/tcl.min.js     |    15 +
 .../dist/highlightjs/languages/thrift.min.js  |    12 +
 .../dist/highlightjs/languages/tp.min.js      |    19 +
 .../dist/highlightjs/languages/twig.min.js    |    15 +
 .../highlightjs/languages/typescript.min.js   |    92 +
 .../dist/highlightjs/languages/vala.min.js    |     9 +
 .../dist/highlightjs/languages/vbnet.min.js   |    25 +
 .../languages/vbscript-html.min.js            |     4 +
 .../highlightjs/languages/vbscript.min.js     |    10 +
 .../dist/highlightjs/languages/verilog.min.js |    17 +
 .../dist/highlightjs/languages/vhdl.min.js    |    14 +
 .../dist/highlightjs/languages/vim.min.js     |    12 +
 .../dist/highlightjs/languages/wasm.min.js    |    14 +
 .../dist/highlightjs/languages/wren.min.js    |    30 +
 .../dist/highlightjs/languages/x86asm.min.js  |    19 +
 .../dist/highlightjs/languages/xl.min.js      |    15 +
 .../dist/highlightjs/languages/xml.min.js     |    28 +
 .../dist/highlightjs/languages/xquery.min.js  |    32 +
 .../dist/highlightjs/languages/yaml.min.js    |    25 +
 .../dist/highlightjs/languages/zephir.min.js  |    18 +
 .../dist/highlightjs/styles/a11y-dark.min.css |     7 +
 .../highlightjs/styles/a11y-light.min.css     |     7 +
 .../dist/highlightjs/styles/agate.min.css     |    20 +
 .../highlightjs/styles/an-old-hope.min.css    |     9 +
 .../highlightjs/styles/androidstudio.min.css  |     1 +
 .../highlightjs/styles/arduino-light.min.css  |     1 +
 .../dist/highlightjs/styles/arta.min.css      |     1 +
 .../dist/highlightjs/styles/ascetic.min.css   |     1 +
 .../styles/atom-one-dark-reasonable.min.css   |     1 +
 .../highlightjs/styles/atom-one-dark.min.css  |     1 +
 .../highlightjs/styles/atom-one-light.min.css |     1 +
 .../highlightjs/styles/base16/3024.min.css    |     7 +
 .../highlightjs/styles/base16/apathy.min.css  |     7 +
 .../styles/base16/apprentice.min.css          |     7 +
 .../highlightjs/styles/base16/ashes.min.css   |     7 +
 .../styles/base16/atelier-cave-light.min.css  |     7 +
 .../styles/base16/atelier-cave.min.css        |     7 +
 .../styles/base16/atelier-dune-light.min.css  |     7 +
 .../styles/base16/atelier-dune.min.css        |     7 +
 .../base16/atelier-estuary-light.min.css      |     7 +
 .../styles/base16/atelier-estuary.min.css     |     7 +
 .../base16/atelier-forest-light.min.css       |     7 +
 .../styles/base16/atelier-forest.min.css      |     7 +
 .../styles/base16/atelier-heath-light.min.css |     7 +
 .../styles/base16/atelier-heath.min.css       |     7 +
 .../base16/atelier-lakeside-light.min.css     |     7 +
 .../styles/base16/atelier-lakeside.min.css    |     7 +
 .../base16/atelier-plateau-light.min.css      |     7 +
 .../styles/base16/atelier-plateau.min.css     |     7 +
 .../base16/atelier-savanna-light.min.css      |     7 +
 .../styles/base16/atelier-savanna.min.css     |     7 +
 .../base16/atelier-seaside-light.min.css      |     7 +
 .../styles/base16/atelier-seaside.min.css     |     7 +
 .../base16/atelier-sulphurpool-light.min.css  |     7 +
 .../styles/base16/atelier-sulphurpool.min.css |     7 +
 .../highlightjs/styles/base16/atlas.min.css   |     7 +
 .../highlightjs/styles/base16/bespin.min.css  |     7 +
 .../styles/base16/black-metal-bathory.min.css |     7 +
 .../styles/base16/black-metal-burzum.min.css  |     7 +
 .../base16/black-metal-dark-funeral.min.css   |     7 +
 .../base16/black-metal-gorgoroth.min.css      |     7 +
 .../base16/black-metal-immortal.min.css       |     7 +
 .../styles/base16/black-metal-khold.min.css   |     7 +
 .../styles/base16/black-metal-marduk.min.css  |     7 +
 .../styles/base16/black-metal-mayhem.min.css  |     7 +
 .../styles/base16/black-metal-nile.min.css    |     7 +
 .../styles/base16/black-metal-venom.min.css   |     7 +
 .../styles/base16/black-metal.min.css         |     7 +
 .../highlightjs/styles/base16/brewer.min.css  |     7 +
 .../highlightjs/styles/base16/bright.min.css  |     7 +
 .../styles/base16/brogrammer.min.css          |     7 +
 .../styles/base16/brush-trees-dark.min.css    |     7 +
 .../styles/base16/brush-trees.min.css         |     7 +
 .../highlightjs/styles/base16/chalk.min.css   |     7 +
 .../highlightjs/styles/base16/circus.min.css  |     7 +
 .../styles/base16/classic-dark.min.css        |     7 +
 .../styles/base16/classic-light.min.css       |     7 +
 .../styles/base16/codeschool.min.css          |     7 +
 .../highlightjs/styles/base16/colors.min.css  |     7 +
 .../highlightjs/styles/base16/cupcake.min.css |     7 +
 .../styles/base16/cupertino.min.css           |     7 +
 .../highlightjs/styles/base16/danqing.min.css |     7 +
 .../highlightjs/styles/base16/darcula.min.css |     7 +
 .../styles/base16/dark-violet.min.css         |     7 +
 .../styles/base16/darkmoss.min.css            |     7 +
 .../styles/base16/darktooth.min.css           |     7 +
 .../highlightjs/styles/base16/decaf.min.css   |     7 +
 .../styles/base16/default-dark.min.css        |     7 +
 .../styles/base16/default-light.min.css       |     7 +
 .../styles/base16/dirtysea.min.css            |     7 +
 .../highlightjs/styles/base16/dracula.min.css |     7 +
 .../styles/base16/edge-dark.min.css           |     7 +
 .../styles/base16/edge-light.min.css          |     7 +
 .../styles/base16/eighties.min.css            |     7 +
 .../highlightjs/styles/base16/embers.min.css  |     7 +
 .../styles/base16/equilibrium-dark.min.css    |     7 +
 .../base16/equilibrium-gray-dark.min.css      |     7 +
 .../base16/equilibrium-gray-light.min.css     |     7 +
 .../styles/base16/equilibrium-light.min.css   |     7 +
 .../styles/base16/espresso.min.css            |     7 +
 .../highlightjs/styles/base16/eva-dim.min.css |     7 +
 .../highlightjs/styles/base16/eva.min.css     |     7 +
 .../highlightjs/styles/base16/flat.min.css    |     7 +
 .../highlightjs/styles/base16/framer.min.css  |     7 +
 .../styles/base16/fruit-soda.min.css          |     7 +
 .../styles/base16/gigavolt.min.css            |     7 +
 .../highlightjs/styles/base16/github.min.css  |     7 +
 .../styles/base16/google-dark.min.css         |     7 +
 .../styles/base16/google-light.min.css        |     7 +
 .../styles/base16/grayscale-dark.min.css      |     7 +
 .../styles/base16/grayscale-light.min.css     |     7 +
 .../styles/base16/green-screen.min.css        |     7 +
 .../styles/base16/gruvbox-dark-hard.min.css   |     7 +
 .../styles/base16/gruvbox-dark-medium.min.css |     7 +
 .../styles/base16/gruvbox-dark-pale.min.css   |     7 +
 .../styles/base16/gruvbox-dark-soft.min.css   |     7 +
 .../styles/base16/gruvbox-light-hard.min.css  |     7 +
 .../base16/gruvbox-light-medium.min.css       |     7 +
 .../styles/base16/gruvbox-light-soft.min.css  |     7 +
 .../styles/base16/hardcore.min.css            |     7 +
 .../styles/base16/harmonic16-dark.min.css     |     7 +
 .../styles/base16/harmonic16-light.min.css    |     7 +
 .../styles/base16/heetch-dark.min.css         |     7 +
 .../styles/base16/heetch-light.min.css        |     7 +
 .../highlightjs/styles/base16/helios.min.css  |     7 +
 .../styles/base16/hopscotch.min.css           |     7 +
 .../styles/base16/horizon-dark.min.css        |     7 +
 .../styles/base16/horizon-light.min.css       |     7 +
 .../styles/base16/humanoid-dark.min.css       |     7 +
 .../styles/base16/humanoid-light.min.css      |     7 +
 .../highlightjs/styles/base16/ia-dark.min.css |     7 +
 .../styles/base16/ia-light.min.css            |     7 +
 .../styles/base16/icy-dark.min.css            |     7 +
 .../styles/base16/ir-black.min.css            |     7 +
 .../highlightjs/styles/base16/isotope.min.css |     7 +
 .../highlightjs/styles/base16/kimber.min.css  |     7 +
 .../styles/base16/london-tube.min.css         |     7 +
 .../styles/base16/macintosh.min.css           |     7 +
 .../styles/base16/marrakesh.min.css           |     7 +
 .../highlightjs/styles/base16/materia.min.css |     7 +
 .../styles/base16/material-darker.min.css     |     7 +
 .../styles/base16/material-lighter.min.css    |     7 +
 .../styles/base16/material-palenight.min.css  |     7 +
 .../styles/base16/material-vivid.min.css      |     7 +
 .../styles/base16/material.min.css            |     7 +
 .../styles/base16/mellow-purple.min.css       |     7 +
 .../styles/base16/mexico-light.min.css        |     7 +
 .../highlightjs/styles/base16/mocha.min.css   |     7 +
 .../highlightjs/styles/base16/monokai.min.css |     7 +
 .../highlightjs/styles/base16/nebula.min.css  |     7 +
 .../highlightjs/styles/base16/nord.min.css    |     7 +
 .../highlightjs/styles/base16/nova.min.css    |     7 +
 .../highlightjs/styles/base16/ocean.min.css   |     7 +
 .../styles/base16/oceanicnext.min.css         |     7 +
 .../styles/base16/one-light.min.css           |     7 +
 .../highlightjs/styles/base16/onedark.min.css |     7 +
 .../styles/base16/outrun-dark.min.css         |     7 +
 .../styles/base16/papercolor-dark.min.css     |     7 +
 .../styles/base16/papercolor-light.min.css    |     7 +
 .../highlightjs/styles/base16/paraiso.min.css |     7 +
 .../highlightjs/styles/base16/pasque.min.css  |     7 +
 .../highlightjs/styles/base16/phd.min.css     |     7 +
 .../highlightjs/styles/base16/pico.min.css    |     7 +
 .../highlightjs/styles/base16/pop.min.css     |     7 +
 .../highlightjs/styles/base16/porple.min.css  |     7 +
 .../highlightjs/styles/base16/qualia.min.css  |     7 +
 .../styles/base16/railscasts.min.css          |     7 +
 .../highlightjs/styles/base16/rebecca.min.css |     7 +
 .../styles/base16/ros-pine-dawn.min.css       |     7 +
 .../styles/base16/ros-pine-moon.min.css       |     7 +
 .../styles/base16/ros-pine.min.css            |     7 +
 .../styles/base16/sagelight.min.css           |     7 +
 .../styles/base16/sandcastle.min.css          |     7 +
 .../highlightjs/styles/base16/seti-ui.min.css |     7 +
 .../styles/base16/shapeshifter.min.css        |     7 +
 .../styles/base16/silk-dark.min.css           |     7 +
 .../styles/base16/silk-light.min.css          |     7 +
 .../highlightjs/styles/base16/snazzy.min.css  |     7 +
 .../styles/base16/solar-flare-light.min.css   |     7 +
 .../styles/base16/solar-flare.min.css         |     7 +
 .../styles/base16/solarized-dark.min.css      |     7 +
 .../styles/base16/solarized-light.min.css     |     7 +
 .../styles/base16/spacemacs.min.css           |     7 +
 .../styles/base16/summercamp.min.css          |     7 +
 .../styles/base16/summerfruit-dark.min.css    |     7 +
 .../styles/base16/summerfruit-light.min.css   |     7 +
 .../synth-midnight-terminal-dark.min.css      |     7 +
 .../synth-midnight-terminal-light.min.css     |     7 +
 .../highlightjs/styles/base16/tango.min.css   |     7 +
 .../highlightjs/styles/base16/tender.min.css  |     7 +
 .../styles/base16/tomorrow-night.min.css      |     7 +
 .../styles/base16/tomorrow.min.css            |     7 +
 .../styles/base16/twilight.min.css            |     7 +
 .../styles/base16/unikitty-dark.min.css       |     7 +
 .../styles/base16/unikitty-light.min.css      |     7 +
 .../highlightjs/styles/base16/vulcan.min.css  |     7 +
 .../styles/base16/windows-10-light.min.css    |     7 +
 .../styles/base16/windows-10.min.css          |     7 +
 .../styles/base16/windows-95-light.min.css    |     7 +
 .../styles/base16/windows-95.min.css          |     7 +
 .../windows-high-contrast-light.min.css       |     7 +
 .../base16/windows-high-contrast.min.css      |     7 +
 .../styles/base16/windows-nt-light.min.css    |     7 +
 .../styles/base16/windows-nt.min.css          |     7 +
 .../styles/base16/woodland.min.css            |     7 +
 .../styles/base16/xcode-dusk.min.css          |     7 +
 .../highlightjs/styles/base16/zenburn.min.css |     7 +
 .../highlightjs/styles/brown-paper.min.css    |     1 +
 .../dist/highlightjs/styles/brown-papersq.png |   Bin 0 -> 18198 bytes
 .../highlightjs/styles/codepen-embed.min.css  |     1 +
 .../highlightjs/styles/color-brewer.min.css   |     1 +
 .../dist/highlightjs/styles/dark.min.css      |     1 +
 .../dist/highlightjs/styles/default.min.css   |     9 +
 .../dist/highlightjs/styles/devibeans.min.css |     7 +
 .../dist/highlightjs/styles/docco.min.css     |     1 +
 .../dist/highlightjs/styles/far.min.css       |     1 +
 .../highlightjs/styles/foundation.min.css     |     1 +
 .../styles/github-dark-dimmed.min.css         |     9 +
 .../highlightjs/styles/github-dark.min.css    |    10 +
 .../dist/highlightjs/styles/github.min.css    |    10 +
 .../dist/highlightjs/styles/gml.min.css       |     1 +
 .../highlightjs/styles/googlecode.min.css     |     1 +
 .../highlightjs/styles/gradient-dark.min.css  |     1 +
 .../highlightjs/styles/gradient-light.min.css |     1 +
 .../dist/highlightjs/styles/grayscale.min.css |     1 +
 .../dist/highlightjs/styles/hybrid.min.css    |     1 +
 .../dist/highlightjs/styles/idea.min.css      |     1 +
 .../dist/highlightjs/styles/ir-black.min.css  |     1 +
 .../styles/isbl-editor-dark.min.css           |     1 +
 .../styles/isbl-editor-light.min.css          |     1 +
 .../highlightjs/styles/kimbie-dark.min.css    |     1 +
 .../highlightjs/styles/kimbie-light.min.css   |     1 +
 .../dist/highlightjs/styles/lightfair.min.css |     1 +
 .../dist/highlightjs/styles/lioshi.min.css    |     1 +
 .../dist/highlightjs/styles/magula.min.css    |     1 +
 .../dist/highlightjs/styles/mono-blue.min.css |     1 +
 .../styles/monokai-sublime.min.css            |     1 +
 .../dist/highlightjs/styles/monokai.min.css   |     1 +
 .../dist/highlightjs/styles/night-owl.min.css |     1 +
 .../dist/highlightjs/styles/nnfx-dark.min.css |    10 +
 .../highlightjs/styles/nnfx-light.min.css     |    10 +
 .../dist/highlightjs/styles/nord.min.css      |     1 +
 .../dist/highlightjs/styles/obsidian.min.css  |     1 +
 .../highlightjs/styles/paraiso-dark.min.css   |     1 +
 .../highlightjs/styles/paraiso-light.min.css  |     1 +
 .../dist/highlightjs/styles/pojoaque.jpg      |   Bin 0 -> 1186 bytes
 .../dist/highlightjs/styles/pojoaque.min.css  |     1 +
 .../dist/highlightjs/styles/purebasic.min.css |     1 +
 .../highlightjs/styles/qtcreator-dark.min.css |     1 +
 .../styles/qtcreator-light.min.css            |     1 +
 .../dist/highlightjs/styles/rainbow.min.css   |     1 +
 .../dist/highlightjs/styles/routeros.min.css  |     1 +
 .../highlightjs/styles/school-book.min.css    |     1 +
 .../styles/shades-of-purple.min.css           |     1 +
 .../dist/highlightjs/styles/srcery.min.css    |     1 +
 .../styles/stackoverflow-dark.min.css         |    13 +
 .../styles/stackoverflow-light.min.css        |    13 +
 .../dist/highlightjs/styles/sunburst.min.css  |     1 +
 .../styles/tomorrow-night-blue.min.css        |     1 +
 .../styles/tomorrow-night-bright.min.css      |     1 +
 .../dist/highlightjs/styles/vs.min.css        |     1 +
 .../dist/highlightjs/styles/vs2015.min.css    |     1 +
 .../dist/highlightjs/styles/xcode.min.css     |     1 +
 .../dist/highlightjs/styles/xt256.min.css     |     1 +
 .../dist/katex/contrib/auto-render.min.js     |     1 +
 .../dist/katex/contrib/auto-render.mjs        |   215 +
 .../dist/katex/contrib/copy-tex.min.css       |     1 +
 .../dist/katex/contrib/copy-tex.min.js        |     1 +
 .../dist/katex/contrib/copy-tex.mjs           |    85 +
 .../katex/contrib/mathtex-script-type.min.js  |     1 +
 .../katex/contrib/mathtex-script-type.mjs     |    24 +
 .../dist/katex/contrib/mhchem.min.js          |     1 +
 .../dist/katex/contrib/mhchem.mjs             |  3109 +++
 .../katex/contrib/render-a11y-string.min.js   |     1 +
 .../dist/katex/contrib/render-a11y-string.mjs |   741 +
 .../dist/katex/fonts/KaTeX_AMS-Regular.ttf    |   Bin 0 -> 70972 bytes
 .../dist/katex/fonts/KaTeX_AMS-Regular.woff   |   Bin 0 -> 38868 bytes
 .../dist/katex/fonts/KaTeX_AMS-Regular.woff2  |   Bin 0 -> 32944 bytes
 .../katex/fonts/KaTeX_Caligraphic-Bold.ttf    |   Bin 0 -> 19316 bytes
 .../katex/fonts/KaTeX_Caligraphic-Bold.woff   |   Bin 0 -> 11696 bytes
 .../katex/fonts/KaTeX_Caligraphic-Bold.woff2  |   Bin 0 -> 10448 bytes
 .../katex/fonts/KaTeX_Caligraphic-Regular.ttf |   Bin 0 -> 18684 bytes
 .../fonts/KaTeX_Caligraphic-Regular.woff      |   Bin 0 -> 11460 bytes
 .../fonts/KaTeX_Caligraphic-Regular.woff2     |   Bin 0 -> 10240 bytes
 .../dist/katex/fonts/KaTeX_Fraktur-Bold.ttf   |   Bin 0 -> 35660 bytes
 .../dist/katex/fonts/KaTeX_Fraktur-Bold.woff  |   Bin 0 -> 22632 bytes
 .../dist/katex/fonts/KaTeX_Fraktur-Bold.woff2 |   Bin 0 -> 20360 bytes
 .../katex/fonts/KaTeX_Fraktur-Regular.ttf     |   Bin 0 -> 34352 bytes
 .../katex/fonts/KaTeX_Fraktur-Regular.woff    |   Bin 0 -> 22088 bytes
 .../katex/fonts/KaTeX_Fraktur-Regular.woff2   |   Bin 0 -> 19784 bytes
 .../dist/katex/fonts/KaTeX_Main-Bold.ttf      |   Bin 0 -> 60784 bytes
 .../dist/katex/fonts/KaTeX_Main-Bold.woff     |   Bin 0 -> 35464 bytes
 .../dist/katex/fonts/KaTeX_Main-Bold.woff2    |   Bin 0 -> 30244 bytes
 .../katex/fonts/KaTeX_Main-BoldItalic.ttf     |   Bin 0 -> 44496 bytes
 .../katex/fonts/KaTeX_Main-BoldItalic.woff    |   Bin 0 -> 25352 bytes
 .../katex/fonts/KaTeX_Main-BoldItalic.woff2   |   Bin 0 -> 21944 bytes
 .../dist/katex/fonts/KaTeX_Main-Italic.ttf    |   Bin 0 -> 47640 bytes
 .../dist/katex/fonts/KaTeX_Main-Italic.woff   |   Bin 0 -> 26228 bytes
 .../dist/katex/fonts/KaTeX_Main-Italic.woff2  |   Bin 0 -> 22748 bytes
 .../dist/katex/fonts/KaTeX_Main-Regular.ttf   |   Bin 0 -> 69520 bytes
 .../dist/katex/fonts/KaTeX_Main-Regular.woff  |   Bin 0 -> 38112 bytes
 .../dist/katex/fonts/KaTeX_Main-Regular.woff2 |   Bin 0 -> 32464 bytes
 .../katex/fonts/KaTeX_Math-BoldItalic.ttf     |   Bin 0 -> 39308 bytes
 .../katex/fonts/KaTeX_Math-BoldItalic.woff    |   Bin 0 -> 22324 bytes
 .../katex/fonts/KaTeX_Math-BoldItalic.woff2   |   Bin 0 -> 19720 bytes
 .../dist/katex/fonts/KaTeX_Math-Italic.ttf    |   Bin 0 -> 40992 bytes
 .../dist/katex/fonts/KaTeX_Math-Italic.woff   |   Bin 0 -> 22844 bytes
 .../dist/katex/fonts/KaTeX_Math-Italic.woff2  |   Bin 0 -> 20096 bytes
 .../dist/katex/fonts/KaTeX_SansSerif-Bold.ttf |   Bin 0 -> 33688 bytes
 .../katex/fonts/KaTeX_SansSerif-Bold.woff     |   Bin 0 -> 18516 bytes
 .../katex/fonts/KaTeX_SansSerif-Bold.woff2    |   Bin 0 -> 15732 bytes
 .../katex/fonts/KaTeX_SansSerif-Italic.ttf    |   Bin 0 -> 30960 bytes
 .../katex/fonts/KaTeX_SansSerif-Italic.woff   |   Bin 0 -> 17572 bytes
 .../katex/fonts/KaTeX_SansSerif-Italic.woff2  |   Bin 0 -> 15024 bytes
 .../katex/fonts/KaTeX_SansSerif-Regular.ttf   |   Bin 0 -> 29812 bytes
 .../katex/fonts/KaTeX_SansSerif-Regular.woff  |   Bin 0 -> 16228 bytes
 .../katex/fonts/KaTeX_SansSerif-Regular.woff2 |   Bin 0 -> 13708 bytes
 .../dist/katex/fonts/KaTeX_Script-Regular.ttf |   Bin 0 -> 24620 bytes
 .../katex/fonts/KaTeX_Script-Regular.woff     |   Bin 0 -> 13428 bytes
 .../katex/fonts/KaTeX_Script-Regular.woff2    |   Bin 0 -> 12064 bytes
 .../dist/katex/fonts/KaTeX_Size1-Regular.ttf  |   Bin 0 -> 12916 bytes
 .../dist/katex/fonts/KaTeX_Size1-Regular.woff |   Bin 0 -> 6696 bytes
 .../katex/fonts/KaTeX_Size1-Regular.woff2     |   Bin 0 -> 5592 bytes
 .../dist/katex/fonts/KaTeX_Size2-Regular.ttf  |   Bin 0 -> 12172 bytes
 .../dist/katex/fonts/KaTeX_Size2-Regular.woff |   Bin 0 -> 6436 bytes
 .../katex/fonts/KaTeX_Size2-Regular.woff2     |   Bin 0 -> 5392 bytes
 .../dist/katex/fonts/KaTeX_Size3-Regular.ttf  |   Bin 0 -> 8120 bytes
 .../dist/katex/fonts/KaTeX_Size3-Regular.woff |   Bin 0 -> 4568 bytes
 .../katex/fonts/KaTeX_Size3-Regular.woff2     |   Bin 0 -> 3728 bytes
 .../dist/katex/fonts/KaTeX_Size4-Regular.ttf  |   Bin 0 -> 11016 bytes
 .../dist/katex/fonts/KaTeX_Size4-Regular.woff |   Bin 0 -> 6184 bytes
 .../katex/fonts/KaTeX_Size4-Regular.woff2     |   Bin 0 -> 5028 bytes
 .../katex/fonts/KaTeX_Typewriter-Regular.ttf  |   Bin 0 -> 35924 bytes
 .../katex/fonts/KaTeX_Typewriter-Regular.woff |   Bin 0 -> 20260 bytes
 .../fonts/KaTeX_Typewriter-Regular.woff2      |   Bin 0 -> 17272 bytes
 .../mavon-editor/dist/katex/katex.min.css     |     1 +
 .../mavon-editor/dist/katex/katex.min.js      |     1 +
 .../mavon-editor/dist/katex/katex.mjs         | 17021 ++++++++++++++++
 .../dist/markdown/github-markdown.min.css     |     2 +
 .../mavon-editor/dist/mavon-editor.js         |    22 +
 node_modules/mavon-editor/mavon-editor.d.ts   |    10 +
 node_modules/mavon-editor/package.json        |   128 +
 .../src/components/auto-textarea.vue          |   119 +
 .../src/components/md-toolbar-left.vue        |   750 +
 .../src/components/md-toolbar-right.vue       |    71 +
 node_modules/mavon-editor/src/dev/app.vue     |   354 +
 .../mavon-editor/src/dev/assets/config.js     |    35 +
 .../mavon-editor/src/dev/assets/img/1.png     |   Bin 0 -> 2708 bytes
 .../mavon-editor/src/dev/assets/img/2.png     |   Bin 0 -> 2502 bytes
 .../src/dev/assets/lang/de/help_de.md         |   204 +
 .../src/dev/assets/lang/de/words_de.json      |    54 +
 .../src/dev/assets/lang/en/help_en.md         |   204 +
 .../src/dev/assets/lang/en/words_en.json      |    54 +
 .../src/dev/assets/lang/fr/help_fr.md         |   204 +
 .../src/dev/assets/lang/fr/words_fr.json      |    55 +
 .../src/dev/assets/lang/pt-BR/help_pt-BR.md   |   204 +
 .../dev/assets/lang/pt-BR/words_pt-BR.json    |    54 +
 .../src/dev/assets/lang/ru/help_ru.md         |   202 +
 .../src/dev/assets/lang/ru/words_ru.json      |    54 +
 .../src/dev/assets/lang/zh-CN/help_zh-CN.md   |   198 +
 .../dev/assets/lang/zh-CN/words_zh-CN.json    |    54 +
 .../src/dev/assets/lang/zh-TW/help_zh-TW.md   |   198 +
 .../dev/assets/lang/zh-TW/words_zh-TW.json    |    54 +
 node_modules/mavon-editor/src/dev/demo.vue    |    34 +
 node_modules/mavon-editor/src/dev/editor.vue  |    66 +
 node_modules/mavon-editor/src/dev/index.html  |    12 +
 node_modules/mavon-editor/src/dev/index.js    |    18 +
 node_modules/mavon-editor/src/index.js        |    25 +
 node_modules/mavon-editor/src/lib/config.js   |    79 +
 .../src/lib/core/extra-function.js            |   538 +
 .../mavon-editor/src/lib/core/highlight.js    |    95 +
 .../src/lib/core/hljs/lang.hljs.css.js        |    70 +
 .../src/lib/core/hljs/lang.hljs.js            |   322 +
 .../src/lib/core/keydown-listen.js            |   359 +
 .../mavon-editor/src/lib/core/markdown.js     |    90 +
 .../src/lib/core/onecolumn-event.js           |   159 +
 .../mavon-editor/src/lib/core/sanitizer.js    |    31 +
 .../mavon-editor/src/lib/core/to-markdown.js  |   171 +
 .../mavon-editor/src/lib/css/markdown.css     |   783 +
 .../src/lib/css/mavon-editor.styl             |   297 +
 node_modules/mavon-editor/src/lib/css/md.css  |    27 +
 .../mavon-editor/src/lib/css/scroll.styl      |    15 +
 .../mavon-editor/src/lib/font/LICENSE.txt     |    12 +
 .../mavon-editor/src/lib/font/README.txt      |    75 +
 .../mavon-editor/src/lib/font/config.json     |   196 +
 .../src/lib/font/css/animation.css            |    85 +
 .../src/lib/font/css/fontello-codes.css       |    32 +
 .../src/lib/font/css/fontello-embedded.css    |    85 +
 .../src/lib/font/css/fontello-ie7-codes.css   |    32 +
 .../src/lib/font/css/fontello-ie7.css         |    43 +
 .../src/lib/font/css/fontello.css             |    88 +
 .../mavon-editor/src/lib/font/demo.html       |   353 +
 .../src/lib/font/font/fontello.eot            |   Bin 0 -> 15568 bytes
 .../src/lib/font/font/fontello.svg            |    72 +
 .../src/lib/font/font/fontello.ttf            |   Bin 0 -> 15400 bytes
 .../src/lib/font/font/fontello.woff           |   Bin 0 -> 9068 bytes
 .../src/lib/font/font/fontello.woff2          |   Bin 0 -> 7764 bytes
 .../mavon-editor/src/lib/lang/de/help_de.md   |   204 +
 .../src/lib/lang/de/words_de.json             |    54 +
 .../mavon-editor/src/lib/lang/en/help_en.md   |   204 +
 .../src/lib/lang/en/words_en.json             |    54 +
 .../mavon-editor/src/lib/lang/fr/help_fr.md   |   204 +
 .../src/lib/lang/fr/words_fr.json             |    55 +
 .../mavon-editor/src/lib/lang/ja/help_ja.md   |   205 +
 .../src/lib/lang/ja/words_ja.json             |    54 +
 .../src/lib/lang/pt-BR/help_pt-BR.md          |   204 +
 .../src/lib/lang/pt-BR/words_pt-BR.json       |    54 +
 .../mavon-editor/src/lib/lang/ru/help_ru.md   |   202 +
 .../src/lib/lang/ru/words_ru.json             |    54 +
 .../src/lib/lang/zh-CN/help_zh-CN.md          |   203 +
 .../src/lib/lang/zh-CN/words_zh-CN.json       |    54 +
 .../src/lib/lang/zh-TW/help_zh-TW.md          |   198 +
 .../src/lib/lang/zh-TW/words_zh-TW.json       |    54 +
 .../mavon-editor/src/lib/mixins/markdown.js   |   154 +
 .../src/lib/toolbar_left_click.js             |   197 +
 .../src/lib/toolbar_right_click.js            |    92 +
 node_modules/mavon-editor/src/lib/util.js     |    52 +
 .../mavon-editor/src/mavon-editor.vue         |   932 +
 node_modules/xss/LICENSE                      |    23 +
 node_modules/xss/README.md                    |   508 +
 node_modules/xss/README.zh.md                 |   491 +
 node_modules/xss/bin/xss                      |    67 +
 node_modules/xss/dist/test.html               |    15 +
 node_modules/xss/dist/xss.js                  |  1700 ++
 node_modules/xss/dist/xss.min.js              |     1 +
 node_modules/xss/lib/cli.js                   |    45 +
 node_modules/xss/lib/default.js               |   459 +
 node_modules/xss/lib/index.js                 |    51 +
 node_modules/xss/lib/parser.js                |   257 +
 node_modules/xss/lib/util.js                  |    34 +
 node_modules/xss/lib/xss.js                   |   229 +
 node_modules/xss/package.json                 |    65 +
 node_modules/xss/typings/xss.d.ts             |   203 +
 package-lock.json                             |    45 +
 package.json                                  |     5 +
 643 files changed, 75279 insertions(+), 243 deletions(-)
 create mode 100644 img/hot-icon.png
 create mode 100644 img/issue-bj.png
 create mode 100644 js/axios.min.js
 create mode 100644 js/vue.js
 create mode 100644 js/vue@3.2.36.js
 create mode 100644 node_modules/.bin/xss
 create mode 100644 node_modules/.bin/xss.cmd
 create mode 100644 node_modules/.bin/xss.ps1
 create mode 100644 node_modules/.package-lock.json
 create mode 100644 node_modules/commander/CHANGELOG.md
 create mode 100644 node_modules/commander/LICENSE
 create mode 100644 node_modules/commander/Readme.md
 create mode 100644 node_modules/commander/index.js
 create mode 100644 node_modules/commander/package.json
 create mode 100644 node_modules/commander/typings/index.d.ts
 create mode 100644 node_modules/cssfilter/LICENSE
 create mode 100644 node_modules/cssfilter/README.md
 create mode 100644 node_modules/cssfilter/lib/css.js
 create mode 100644 node_modules/cssfilter/lib/default.js
 create mode 100644 node_modules/cssfilter/lib/index.js
 create mode 100644 node_modules/cssfilter/lib/parser.js
 create mode 100644 node_modules/cssfilter/lib/util.js
 create mode 100644 node_modules/cssfilter/package.json
 create mode 100644 node_modules/mavon-editor/LICENSE
 create mode 100644 node_modules/mavon-editor/README.md
 create mode 100644 node_modules/mavon-editor/dist/css/index.css
 create mode 100644 node_modules/mavon-editor/dist/font/fontello.eot
 create mode 100644 node_modules/mavon-editor/dist/font/fontello.svg
 create mode 100644 node_modules/mavon-editor/dist/font/fontello.ttf
 create mode 100644 node_modules/mavon-editor/dist/font/fontello.woff
 create mode 100644 node_modules/mavon-editor/dist/font/fontello.woff2
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/highlight.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/1c.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/abnf.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/accesslog.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/actionscript.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/ada.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/angelscript.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/apache.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/applescript.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/arcade.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/arduino.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/armasm.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/asciidoc.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/aspectj.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/autohotkey.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/autoit.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/avrasm.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/awk.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/axapta.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/bash.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/basic.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/bnf.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/brainfuck.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/c.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/cal.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/capnproto.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/ceylon.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/clean.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/clojure-repl.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/clojure.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/cmake.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/coffeescript.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/coq.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/cos.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/cpp.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/crmsh.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/crystal.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/csharp.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/csp.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/css.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/d.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/dart.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/delphi.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/diff.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/django.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/dns.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/dockerfile.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/dos.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/dsconfig.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/dts.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/dust.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/ebnf.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/elixir.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/elm.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/erb.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/erlang-repl.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/erlang.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/excel.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/fix.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/flix.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/fortran.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/fsharp.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/gams.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/gauss.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/gcode.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/gherkin.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/glsl.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/gml.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/go.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/golo.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/gradle.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/groovy.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/haml.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/handlebars.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/haskell.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/haxe.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/hsp.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/http.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/hy.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/inform7.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/ini.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/irpf90.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/isbl.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/java.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/javascript.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/jboss-cli.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/json.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/julia-repl.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/julia.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/kotlin.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/lasso.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/latex.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/ldif.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/leaf.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/less.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/lisp.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/livecodeserver.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/livescript.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/llvm.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/lsl.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/lua.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/makefile.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/markdown.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/mathematica.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/matlab.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/maxima.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/mel.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/mercury.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/mipsasm.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/mizar.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/mojolicious.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/monkey.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/moonscript.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/n1ql.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/nestedtext.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/nginx.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/nim.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/nix.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/node-repl.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/nsis.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/objectivec.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/ocaml.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/openscad.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/oxygene.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/parser3.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/perl.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/pf.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/pgsql.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/php-template.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/php.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/plaintext.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/pony.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/powershell.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/processing.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/profile.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/prolog.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/properties.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/protobuf.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/puppet.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/purebasic.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/python-repl.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/python.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/q.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/qml.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/r.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/reasonml.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/rib.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/roboconf.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/routeros.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/rsl.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/ruby.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/ruleslanguage.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/rust.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/sas.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/scala.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/scheme.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/scilab.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/scss.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/shell.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/smali.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/smalltalk.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/sml.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/sqf.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/sql.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/stan.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/stata.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/step21.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/stylus.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/subunit.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/swift.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/taggerscript.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/tap.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/tcl.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/thrift.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/tp.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/twig.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/typescript.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/vala.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/vbnet.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/vbscript-html.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/vbscript.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/verilog.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/vhdl.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/vim.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/wasm.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/wren.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/x86asm.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/xl.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/xml.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/xquery.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/yaml.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/languages/zephir.min.js
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/a11y-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/a11y-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/agate.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/an-old-hope.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/androidstudio.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/arduino-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/arta.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/ascetic.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/atom-one-dark-reasonable.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/atom-one-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/atom-one-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/3024.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/apathy.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/apprentice.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/ashes.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-cave-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-cave.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-dune-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-dune.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-estuary-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-estuary.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-forest-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-forest.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-heath-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-heath.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-lakeside-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-lakeside.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-plateau-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-plateau.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-savanna-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-savanna.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-seaside-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-seaside.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-sulphurpool-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-sulphurpool.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/atlas.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/bespin.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-bathory.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-burzum.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-dark-funeral.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-gorgoroth.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-immortal.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-khold.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-marduk.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-mayhem.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-nile.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-venom.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/brewer.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/bright.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/brogrammer.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/brush-trees-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/brush-trees.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/chalk.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/circus.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/classic-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/classic-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/codeschool.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/colors.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/cupcake.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/cupertino.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/danqing.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/darcula.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/dark-violet.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/darkmoss.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/darktooth.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/decaf.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/default-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/default-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/dirtysea.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/dracula.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/edge-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/edge-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/eighties.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/embers.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-gray-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-gray-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/espresso.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/eva-dim.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/eva.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/flat.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/framer.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/fruit-soda.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/gigavolt.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/github.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/google-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/google-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/grayscale-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/grayscale-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/green-screen.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-hard.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-medium.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-pale.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-soft.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-light-hard.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-light-medium.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-light-soft.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/hardcore.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/harmonic16-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/harmonic16-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/heetch-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/heetch-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/helios.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/hopscotch.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/horizon-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/horizon-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/humanoid-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/humanoid-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/ia-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/ia-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/icy-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/ir-black.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/isotope.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/kimber.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/london-tube.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/macintosh.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/marrakesh.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/materia.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/material-darker.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/material-lighter.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/material-palenight.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/material-vivid.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/material.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/mellow-purple.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/mexico-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/mocha.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/monokai.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/nebula.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/nord.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/nova.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/ocean.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/oceanicnext.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/one-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/onedark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/outrun-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/papercolor-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/papercolor-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/paraiso.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/pasque.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/phd.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/pico.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/pop.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/porple.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/qualia.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/railscasts.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/rebecca.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/ros-pine-dawn.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/ros-pine-moon.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/ros-pine.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/sagelight.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/sandcastle.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/seti-ui.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/shapeshifter.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/silk-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/silk-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/snazzy.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/solar-flare-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/solar-flare.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/solarized-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/solarized-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/spacemacs.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/summercamp.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/summerfruit-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/summerfruit-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/synth-midnight-terminal-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/synth-midnight-terminal-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/tango.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/tender.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/tomorrow-night.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/tomorrow.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/twilight.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/unikitty-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/unikitty-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/vulcan.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-10-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-10.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-95-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-95.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-high-contrast-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-high-contrast.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-nt-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-nt.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/woodland.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/xcode-dusk.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/base16/zenburn.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/brown-paper.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/brown-papersq.png
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/codepen-embed.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/color-brewer.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/default.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/devibeans.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/docco.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/far.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/foundation.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/github-dark-dimmed.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/github-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/github.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/gml.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/googlecode.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/gradient-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/gradient-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/grayscale.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/hybrid.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/idea.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/ir-black.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/isbl-editor-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/isbl-editor-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/kimbie-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/kimbie-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/lightfair.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/lioshi.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/magula.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/mono-blue.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/monokai-sublime.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/monokai.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/night-owl.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/nnfx-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/nnfx-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/nord.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/obsidian.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/paraiso-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/paraiso-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/pojoaque.jpg
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/pojoaque.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/purebasic.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/qtcreator-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/qtcreator-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/rainbow.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/routeros.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/school-book.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/shades-of-purple.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/srcery.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/stackoverflow-dark.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/stackoverflow-light.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/sunburst.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/tomorrow-night-blue.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/tomorrow-night-bright.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/vs.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/vs2015.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/xcode.min.css
 create mode 100644 node_modules/mavon-editor/dist/highlightjs/styles/xt256.min.css
 create mode 100644 node_modules/mavon-editor/dist/katex/contrib/auto-render.min.js
 create mode 100644 node_modules/mavon-editor/dist/katex/contrib/auto-render.mjs
 create mode 100644 node_modules/mavon-editor/dist/katex/contrib/copy-tex.min.css
 create mode 100644 node_modules/mavon-editor/dist/katex/contrib/copy-tex.min.js
 create mode 100644 node_modules/mavon-editor/dist/katex/contrib/copy-tex.mjs
 create mode 100644 node_modules/mavon-editor/dist/katex/contrib/mathtex-script-type.min.js
 create mode 100644 node_modules/mavon-editor/dist/katex/contrib/mathtex-script-type.mjs
 create mode 100644 node_modules/mavon-editor/dist/katex/contrib/mhchem.min.js
 create mode 100644 node_modules/mavon-editor/dist/katex/contrib/mhchem.mjs
 create mode 100644 node_modules/mavon-editor/dist/katex/contrib/render-a11y-string.min.js
 create mode 100644 node_modules/mavon-editor/dist/katex/contrib/render-a11y-string.mjs
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_AMS-Regular.ttf
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_AMS-Regular.woff
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_AMS-Regular.woff2
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Bold.ttf
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Bold.woff
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Bold.woff2
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Regular.ttf
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Regular.woff
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Regular.woff2
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Bold.ttf
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Bold.woff
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Bold.woff2
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Regular.ttf
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Regular.woff
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Regular.woff2
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Bold.ttf
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Bold.woff
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Bold.woff2
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-BoldItalic.ttf
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-BoldItalic.woff
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-BoldItalic.woff2
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Italic.ttf
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Italic.woff
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Italic.woff2
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Regular.ttf
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Regular.woff
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Regular.woff2
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-BoldItalic.ttf
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-BoldItalic.woff
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-BoldItalic.woff2
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-Italic.ttf
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-Italic.woff
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-Italic.woff2
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Bold.ttf
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Bold.woff
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Bold.woff2
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Italic.ttf
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Italic.woff
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Italic.woff2
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Regular.ttf
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Regular.woff
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Regular.woff2
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Script-Regular.ttf
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Script-Regular.woff
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Script-Regular.woff2
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size1-Regular.ttf
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size1-Regular.woff
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size1-Regular.woff2
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size2-Regular.ttf
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size2-Regular.woff
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size2-Regular.woff2
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size3-Regular.ttf
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size3-Regular.woff
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size3-Regular.woff2
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size4-Regular.ttf
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size4-Regular.woff
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size4-Regular.woff2
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Typewriter-Regular.ttf
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Typewriter-Regular.woff
 create mode 100644 node_modules/mavon-editor/dist/katex/fonts/KaTeX_Typewriter-Regular.woff2
 create mode 100644 node_modules/mavon-editor/dist/katex/katex.min.css
 create mode 100644 node_modules/mavon-editor/dist/katex/katex.min.js
 create mode 100644 node_modules/mavon-editor/dist/katex/katex.mjs
 create mode 100644 node_modules/mavon-editor/dist/markdown/github-markdown.min.css
 create mode 100644 node_modules/mavon-editor/dist/mavon-editor.js
 create mode 100644 node_modules/mavon-editor/mavon-editor.d.ts
 create mode 100644 node_modules/mavon-editor/package.json
 create mode 100644 node_modules/mavon-editor/src/components/auto-textarea.vue
 create mode 100644 node_modules/mavon-editor/src/components/md-toolbar-left.vue
 create mode 100644 node_modules/mavon-editor/src/components/md-toolbar-right.vue
 create mode 100644 node_modules/mavon-editor/src/dev/app.vue
 create mode 100644 node_modules/mavon-editor/src/dev/assets/config.js
 create mode 100644 node_modules/mavon-editor/src/dev/assets/img/1.png
 create mode 100644 node_modules/mavon-editor/src/dev/assets/img/2.png
 create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/de/help_de.md
 create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/de/words_de.json
 create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/en/help_en.md
 create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/en/words_en.json
 create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/fr/help_fr.md
 create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/fr/words_fr.json
 create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/pt-BR/help_pt-BR.md
 create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/pt-BR/words_pt-BR.json
 create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/ru/help_ru.md
 create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/ru/words_ru.json
 create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/zh-CN/help_zh-CN.md
 create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/zh-CN/words_zh-CN.json
 create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/zh-TW/help_zh-TW.md
 create mode 100644 node_modules/mavon-editor/src/dev/assets/lang/zh-TW/words_zh-TW.json
 create mode 100644 node_modules/mavon-editor/src/dev/demo.vue
 create mode 100644 node_modules/mavon-editor/src/dev/editor.vue
 create mode 100644 node_modules/mavon-editor/src/dev/index.html
 create mode 100644 node_modules/mavon-editor/src/dev/index.js
 create mode 100644 node_modules/mavon-editor/src/index.js
 create mode 100644 node_modules/mavon-editor/src/lib/config.js
 create mode 100644 node_modules/mavon-editor/src/lib/core/extra-function.js
 create mode 100644 node_modules/mavon-editor/src/lib/core/highlight.js
 create mode 100644 node_modules/mavon-editor/src/lib/core/hljs/lang.hljs.css.js
 create mode 100644 node_modules/mavon-editor/src/lib/core/hljs/lang.hljs.js
 create mode 100644 node_modules/mavon-editor/src/lib/core/keydown-listen.js
 create mode 100644 node_modules/mavon-editor/src/lib/core/markdown.js
 create mode 100644 node_modules/mavon-editor/src/lib/core/onecolumn-event.js
 create mode 100644 node_modules/mavon-editor/src/lib/core/sanitizer.js
 create mode 100644 node_modules/mavon-editor/src/lib/core/to-markdown.js
 create mode 100644 node_modules/mavon-editor/src/lib/css/markdown.css
 create mode 100644 node_modules/mavon-editor/src/lib/css/mavon-editor.styl
 create mode 100644 node_modules/mavon-editor/src/lib/css/md.css
 create mode 100644 node_modules/mavon-editor/src/lib/css/scroll.styl
 create mode 100644 node_modules/mavon-editor/src/lib/font/LICENSE.txt
 create mode 100644 node_modules/mavon-editor/src/lib/font/README.txt
 create mode 100644 node_modules/mavon-editor/src/lib/font/config.json
 create mode 100644 node_modules/mavon-editor/src/lib/font/css/animation.css
 create mode 100644 node_modules/mavon-editor/src/lib/font/css/fontello-codes.css
 create mode 100644 node_modules/mavon-editor/src/lib/font/css/fontello-embedded.css
 create mode 100644 node_modules/mavon-editor/src/lib/font/css/fontello-ie7-codes.css
 create mode 100644 node_modules/mavon-editor/src/lib/font/css/fontello-ie7.css
 create mode 100644 node_modules/mavon-editor/src/lib/font/css/fontello.css
 create mode 100644 node_modules/mavon-editor/src/lib/font/demo.html
 create mode 100644 node_modules/mavon-editor/src/lib/font/font/fontello.eot
 create mode 100644 node_modules/mavon-editor/src/lib/font/font/fontello.svg
 create mode 100644 node_modules/mavon-editor/src/lib/font/font/fontello.ttf
 create mode 100644 node_modules/mavon-editor/src/lib/font/font/fontello.woff
 create mode 100644 node_modules/mavon-editor/src/lib/font/font/fontello.woff2
 create mode 100644 node_modules/mavon-editor/src/lib/lang/de/help_de.md
 create mode 100644 node_modules/mavon-editor/src/lib/lang/de/words_de.json
 create mode 100644 node_modules/mavon-editor/src/lib/lang/en/help_en.md
 create mode 100644 node_modules/mavon-editor/src/lib/lang/en/words_en.json
 create mode 100644 node_modules/mavon-editor/src/lib/lang/fr/help_fr.md
 create mode 100644 node_modules/mavon-editor/src/lib/lang/fr/words_fr.json
 create mode 100644 node_modules/mavon-editor/src/lib/lang/ja/help_ja.md
 create mode 100644 node_modules/mavon-editor/src/lib/lang/ja/words_ja.json
 create mode 100644 node_modules/mavon-editor/src/lib/lang/pt-BR/help_pt-BR.md
 create mode 100644 node_modules/mavon-editor/src/lib/lang/pt-BR/words_pt-BR.json
 create mode 100644 node_modules/mavon-editor/src/lib/lang/ru/help_ru.md
 create mode 100644 node_modules/mavon-editor/src/lib/lang/ru/words_ru.json
 create mode 100644 node_modules/mavon-editor/src/lib/lang/zh-CN/help_zh-CN.md
 create mode 100644 node_modules/mavon-editor/src/lib/lang/zh-CN/words_zh-CN.json
 create mode 100644 node_modules/mavon-editor/src/lib/lang/zh-TW/help_zh-TW.md
 create mode 100644 node_modules/mavon-editor/src/lib/lang/zh-TW/words_zh-TW.json
 create mode 100644 node_modules/mavon-editor/src/lib/mixins/markdown.js
 create mode 100644 node_modules/mavon-editor/src/lib/toolbar_left_click.js
 create mode 100644 node_modules/mavon-editor/src/lib/toolbar_right_click.js
 create mode 100644 node_modules/mavon-editor/src/lib/util.js
 create mode 100644 node_modules/mavon-editor/src/mavon-editor.vue
 create mode 100644 node_modules/xss/LICENSE
 create mode 100644 node_modules/xss/README.md
 create mode 100644 node_modules/xss/README.zh.md
 create mode 100644 node_modules/xss/bin/xss
 create mode 100644 node_modules/xss/dist/test.html
 create mode 100644 node_modules/xss/dist/xss.js
 create mode 100644 node_modules/xss/dist/xss.min.js
 create mode 100644 node_modules/xss/lib/cli.js
 create mode 100644 node_modules/xss/lib/default.js
 create mode 100644 node_modules/xss/lib/index.js
 create mode 100644 node_modules/xss/lib/parser.js
 create mode 100644 node_modules/xss/lib/util.js
 create mode 100644 node_modules/xss/lib/xss.js
 create mode 100644 node_modules/xss/package.json
 create mode 100644 node_modules/xss/typings/xss.d.ts
 create mode 100644 package-lock.json
 create mode 100644 package.json

diff --git a/css/index.css b/css/index.css
index c6b2d7f..697eab4 100644
--- a/css/index.css
+++ b/css/index.css
@@ -56,6 +56,10 @@
   overflow: hidden;
   text-overflow: ellipsis;
 }
+#answer-app {
+  min-width: 1200px;
+  overflow-x: hidden;
+}
 #answer-app header {
   background: #f6f6f6;
   height: 150px;
@@ -181,7 +185,8 @@
   font-size: 14px;
   height: 24px;
   color: #333;
-  margin-right: 30px;
+  margin-right: 23px;
+  cursor: pointer;
 }
 #answer-app header .tab-box .tab-list .item.pitch {
   padding: 0 11px;
@@ -190,13 +195,26 @@
   font-weight: 650;
   color: #FFFFFF;
 }
+#answer-app header .tab-box .tab-list .halving-line {
+  font-size: 14px;
+  color: #d7d7d7;
+  margin-right: 23px;
+}
 #answer-app .main {
   margin: 0 auto;
-  height: calc(100vh - 150px);
+  height: calc(100vh - 167px);
   justify-content: center;
   background-color: #fbfbfb;
   min-width: 1200px;
 }
+#answer-app .main .transmit-mask {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1;
+  width: 100%;
+  height: 100%;
+}
 #answer-app .main.mode-list {
   background: #fff;
 }
@@ -206,7 +224,11 @@
 #answer-app .main.mode-list .list-box .list .item {
   border-right: none;
 }
+#answer-app .main.mode-list .list-box .list .item:nth-child(2) {
+  border-top: 1px solid #ebebeb;
+}
 #answer-app .main .main-header {
+  min-width: 512px;
   margin: 0 auto;
   padding-left: calc((100vw - 1200px) / 2);
   display: inline-flex;
@@ -221,6 +243,7 @@
   font-size: 14px;
   height: 20px;
   cursor: pointer;
+  width: 400px;
   padding-right: 20px;
   margin-right: 20px;
   border-right: 1px solid #ebebeb;
@@ -239,6 +262,8 @@
   overflow-y: auto;
   overflow-x: hidden;
   padding-right: 15px;
+  scrollbar-width: none;
+  -ms-overflow-style: none;
 }
 #answer-app .main .list-box::-webkit-scrollbar {
   width: 0 !important;
@@ -248,8 +273,10 @@
   flex-wrap: wrap;
   justify-content: space-between;
   position: relative;
+  min-width: 512px;
 }
 #answer-app .main .list-box .list .item {
+  cursor: pointer;
   position: absolute;
   padding: 20px 0 0;
   transition-property: top, left, background;
@@ -302,12 +329,19 @@
   border-bottom: 1px dotted #ebebeb;
   padding-bottom: 20px;
 }
-#answer-app .main .list-box .list .item .content .issue {
+#answer-app .main .list-box .list .item .content .issue-title {
+  margin-bottom: 8px;
+}
+#answer-app .main .list-box .list .item .content .issue-title .hot-icon {
+  width: 16px;
+  height: 16px;
+  margin-right: 8px;
+}
+#answer-app .main .list-box .list .item .content .issue-title .issue {
   font-weight: 650;
   font-size: 14px;
   color: #000000;
   line-height: 22px;
-  margin-bottom: 8px;
 }
 #answer-app .main .list-box .list .item .content .answer {
   color: #555;
@@ -361,6 +395,7 @@
 }
 #answer-app .main .details-area-box {
   width: calc((100vw - 1200px) / 2 + 688px);
+  min-width: 688px;
   background-color: #fbfbfb;
   overflow-y: auto;
   overflow-x: hidden;
@@ -372,6 +407,7 @@
   padding-left: 60px;
   flex-direction: column;
   flex: 1;
+  position: relative;
 }
 #answer-app .main .details-area-box .details-box .close-box {
   height: 69px;
@@ -382,6 +418,8 @@
 #answer-app .main .details-area-box .details-box .close-box .close-circle {
   position: relative;
   cursor: pointer;
+  width: 20px;
+  height: 20px;
 }
 #answer-app .main .details-area-box .details-box .close-box .close-circle .close-icon {
   width: 20px;
@@ -407,17 +445,19 @@
   position: relative;
 }
 #answer-app .main .details-area-box .details-box .details-issue .icon {
-  position: absolute;
   background-color: #72db86;
   font-family: 'PingFangSC-Semibold', 'PingFang SC Semibold', 'PingFang SC', sans-serif;
   font-weight: 650;
   font-size: 13px;
-  width: 20px;
-  height: 20px;
+  width: 28px;
+  height: 28px;
   line-height: 20px;
   border-radius: 50%;
   color: #fff;
-  margin-right: 17px;
+  border: 4px solid #fbfbfb;
+  position: absolute;
+  top: -4px;
+  left: -4px;
 }
 #answer-app .main .details-area-box .details-box .details-issue .title {
   font-weight: 650;
@@ -492,6 +532,22 @@
   box-shadow: 0px 0px 11px rgba(0, 0, 0, 0.1);
   padding-top: 24px;
   margin-bottom: 21px;
+  position: relative;
+}
+#answer-app .main .details-area-box .details-box .answer-box-item .icon-box {
+  background-color: #62b1ff;
+  font-family: 'PingFangSC-Semibold', 'PingFang SC Semibold', 'PingFang SC', sans-serif;
+  font-weight: 650;
+  font-size: 13px;
+  width: 28px;
+  height: 28px;
+  line-height: 20px;
+  border-radius: 50%;
+  color: #fff;
+  border: 4px solid #fbfbfb;
+  position: absolute;
+  top: -4px;
+  left: -4px;
 }
 #answer-app .main .details-area-box .details-box .answer-box-item .answer-text {
   font-size: 14px;
@@ -502,6 +558,7 @@
 }
 #answer-app .main .details-area-box .details-box .answer-box-item .answer-text img {
   max-width: 100%;
+  cursor: pointer;
 }
 #answer-app .main .details-area-box .details-box .answer-box-item .operate-box {
   padding: 0 24px;
@@ -752,6 +809,8 @@
   cursor: pointer;
   height: 53px;
   position: relative;
+}
+#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.commentnum {
   z-index: 1;
 }
 #answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.commentnum::after {
@@ -784,7 +843,6 @@
 }
 #answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit {
   position: relative;
-  z-index: 1;
 }
 #answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box {
   width: 628px;
@@ -799,6 +857,7 @@
   background: #fff;
   justify-content: space-between;
   padding: 40px 35px 42px;
+  z-index: 1;
 }
 #answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .transmit-title {
   font-weight: 650;
@@ -823,6 +882,7 @@
 }
 #answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .transmit-web .transmit-content .transmit-url {
   color: #AAAAAA;
+  word-wrap: break-word;
 }
 #answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-box .transmit-web .transmit-web-btn {
   width: 120px;
@@ -848,14 +908,6 @@
   height: 12px;
   margin-right: 8px;
 }
-#answer-app .main .details-area-box .details-box .operate-box .operate-list .operate-item.operate-transmit .transmit-mask {
-  position: fixed;
-  top: 0;
-  left: 0;
-  z-index: -1;
-  width: 100vw;
-  height: 100vh;
-}
 #answer-app .main .details-area-box .details-box .copyright {
   font-size: 13px;
   color: #d7d7d7;
@@ -1074,7 +1126,7 @@
 #answer-app .my-popover .popover-box .content-box .item .operate-box .state-box .state-popup {
   position: absolute;
   top: 28px;
-  right: 0;
+  right: 3px;
   width: 140px;
   height: 101px;
   background-color: #ffffff;
@@ -1148,7 +1200,7 @@
   background-color: rgba(0, 0, 0, 0.5);
   width: 100vw;
   height: 100vh;
-  z-index: 1;
+  z-index: 1000;
 }
 #answer-app .issue-box .choosing-theme {
   width: 530px;
@@ -1180,25 +1232,23 @@
   transform: translateY(-50%);
 }
 #answer-app .issue-box .choosing-theme .theme-list {
-  justify-content: space-between;
   flex-wrap: wrap;
 }
-#answer-app .issue-box .choosing-theme .theme-list::after {
-  content: "";
-  width: 140px;
-  height: 0;
+#answer-app .issue-box .choosing-theme .theme-list .theme-stair-box {
+  flex-wrap: wrap;
 }
 #answer-app .issue-box .choosing-theme .theme-list .theme-item {
-  width: 140px;
+  width: 106px;
   height: 36px;
   background-color: #f6f6f6;
   border-radius: 5px;
   font-size: 14px;
   color: #333333;
   cursor: pointer;
+  margin-bottom: 10px;
 }
-#answer-app .issue-box .choosing-theme .theme-list .theme-item:not(:nth-last-child(-n+3)) {
-  margin-bottom: 20px;
+#answer-app .issue-box .choosing-theme .theme-list .theme-item:not(:nth-child(4n)) {
+  margin-right: 11px;
 }
 #answer-app .issue-box .choosing-theme .theme-list .theme-item:hover {
   color: #000000;
@@ -1206,16 +1256,16 @@
 }
 #answer-app .issue-box .issue-form {
   padding-top: 30px;
-  width: 721px;
+  width: 720px;
   height: 520px;
-  background-color: #fff;
   border-radius: 10px;
   position: relative;
   z-index: 1;
+  background-position: -4px -3px;
 }
 #answer-app .issue-box .issue-form .issue-bj {
   position: absolute;
-  left: -3px;
+  left: -4px;
   top: -3px;
   width: 727px;
   height: 526px;
@@ -1231,8 +1281,8 @@
   color: #FFFFFF;
   background-color: #72db86;
   position: absolute;
-  top: 0;
-  left: 0;
+  top: -1px;
+  left: -1px;
 }
 #answer-app .issue-box .issue-form .cross-icon {
   position: absolute;
@@ -1253,19 +1303,22 @@
   height: 80px;
   border-bottom: 1px dotted #ebebeb;
 }
-#answer-app .issue-box .issue-form .issue-input input {
+#answer-app .issue-box .issue-form .issue-input textarea {
   font-size: 18px;
   width: 100%;
+  height: 100%;
+  resize: none;
 }
-#answer-app .issue-box .issue-form .issue-input input::placeholder {
+#answer-app .issue-box .issue-form .issue-input textarea::placeholder {
   color: #AAAAAA;
 }
 #answer-app .issue-box .issue-form .issue-replenish {
-  width: 100%;
+  width: 720px;
   height: 330px;
   font-size: 14px;
   padding: 20px 30px;
   resize: none;
+  display: block;
 }
 #answer-app .issue-box .issue-form .issue-replenish::placeholder {
   color: #AAAAAA;
@@ -1280,6 +1333,8 @@
   -webkit-box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.11764706);
   box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.11764706);
   position: relative;
+  display: flex;
+  flex-direction: column;
 }
 #answer-app .edit-answers .close-icon {
   width: 12px;
@@ -1298,17 +1353,25 @@
   padding-top: 20px;
   padding-left: 20px;
 }
-#answer-app .edit-answers textarea {
+#answer-app .edit-answers .question-textarea {
   display: block;
   border: none;
   outline: none;
   width: 100%;
-  height: 255px;
   font-size: 14px;
   color: #555555;
   line-height: 26px;
   resize: none;
   padding: 20px;
+  flex: 1;
+  overflow: auto;
+}
+#answer-app .edit-answers .question-textarea.placeholder::after {
+  content: "输入图文内容回答提问";
+  color: #999;
+}
+#answer-app .edit-answers .question-textarea img {
+  max-width: 100%;
 }
 #answer-app .issue-bottom {
   justify-content: space-between;
@@ -1401,7 +1464,6 @@
   margin-right: 12px;
 }
 #answer-app .i-answer-box .question-middle .question-textarea {
-  height: 412px;
   width: 100%;
   border: none;
   outline: none;
@@ -1416,6 +1478,80 @@
 #answer-app .i-answer-box .question-middle .question-textarea img {
   max-width: 100%;
 }
-a::after {
-  content: "";
+#answer-app .detail-image-mask {
+  width: 100%;
+  height: 100%;
+  max-width: none;
+  max-height: none;
+  border: none;
+  position: fixed;
+  top: 0;
+  left: 0;
+  background-color: rgba(255, 255, 255, 0.8);
+  z-index: 100;
+}
+#answer-app .detail-image-mask .detail-image {
+  width: 80vw;
+  height: 80vh;
+  border-radius: 8px;
+  background-color: #111;
+}
+#answer-app .detail-image-mask .detail-image .detail-img {
+  max-width: 100%;
+  max-height: 100%;
+}
+.box-item {
+  min-width: 380px;
+  border: 1px solid #EBEEF5;
+  border-radius: 4px;
+  position: fixed;
+  left: 50%;
+  transform: translateX(-50%);
+  background-color: #edf2fc;
+  transition: opacity 0.3s, transform 0.4s, top 0.4s;
+  padding: 15px 15px 15px 20px;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  font-size: 14px;
+  z-index: 5000;
+}
+.box-item-success {
+  background-color: #f0f9eb;
+  border-color: #e1f3d8;
+  color: #67c23a;
+}
+.box-item-warning {
+  background-color: #fdf6ec;
+  border-color: #faecd8;
+  color: #e6a23c;
+}
+.box-item-error {
+  background-color: #fef0f0;
+  border-color: #fde2e2;
+  color: #f56c6c;
+}
+.msg-container {
+  display: flex;
+  align-items: center;
+  line-height: 16px;
+}
+.msg-container .iconfont {
+  margin-right: 5px;
+}
+.msg-enter-active {
+  animation: anim 0.5s;
+}
+.msg-leave-active {
+  animation: anim 0.5s reverse;
+}
+@keyframes anim {
+  0% {
+    opacity: 0;
+    transform: translate(-50%, -200%);
+  }
+  100% {
+    opacity: 1;
+    transform: translate(-50%, 0);
+  }
 }
diff --git a/css/index.less b/css/index.less
index 8deac2c..92d3407 100644
--- a/css/index.less
+++ b/css/index.less
@@ -70,6 +70,9 @@
 }
 
 #answer-app {
+    min-width: 1200px;
+    overflow-x: hidden;
+
     header {
         background: rgba(246, 246, 246, 1);
         height: 150px;
@@ -219,7 +222,8 @@
                     font-size: 14px;
                     height: 24px;
                     color: #333;
-                    margin-right: 30px;
+                    margin-right: 23px;
+                    cursor: pointer;
 
                     &.pitch {
                         padding: 0 11px;
@@ -228,6 +232,13 @@
                         font-weight: 650;
                         color: #FFFFFF;
                     }
+
+                }
+
+                .halving-line {
+                    font-size: 14px;
+                    color: #d7d7d7;
+                    margin-right: 23px;
                 }
             }
         }
@@ -236,11 +247,22 @@
     .main {
         // width: 1200px;
         margin: 0 auto;
-        height: calc(100vh - 150px);
+        // height: calc(100vh - 150px);
+        height: calc(100vh - 167px);
         justify-content: center;
         background-color: #fbfbfb;
         min-width: 1200px;
 
+        .transmit-mask {
+            position: absolute;
+            top: 0;
+            left: 0;
+            z-index: 1;
+            width: 100%;
+            height: 100%;
+            // background-color: rgba(0, 0, 0, 0.5);
+        }
+
         &.mode-list {
             background: #fff;
 
@@ -251,10 +273,15 @@
             .list-box .list .item {
                 border-right: none;
             }
+
+            .list-box .list .item:nth-child(2) {
+                border-top: 1px solid #ebebeb;
+            }
         }
 
         .main-header {
             // width: 1200px;
+            min-width: 512px;
             margin: 0 auto;
             // justify-content: space-between;
             padding-left: calc((100vw - 1200px) / 2);
@@ -268,6 +295,7 @@
                 font-size: 14px;
                 height: 20px;
                 cursor: pointer;
+                width: 400px;
 
                 .search-keyword-cross {
                     width: 14px;
@@ -304,14 +332,20 @@
                 width: 0 !important;
             }
 
+            scrollbar-width: none;
+            -ms-overflow-style: none;
+
+
             .list {
                 display: flex;
                 flex-wrap: wrap;
                 justify-content: space-between;
                 // margin: 0 auto;
                 position: relative;
+                min-width: 512px;
 
                 .item {
+                    cursor: pointer;
                     position: absolute;
                     padding: 20px 0 0;
                     // transition: all .5s;
@@ -388,14 +422,25 @@
                         // width: 531px;
                         border-bottom: 1px dotted #ebebeb;
                         padding-bottom: 20px;
+
                         // transition: all 0.3s;
 
-                        .issue {
-                            font-weight: 650;
-                            font-size: 14px;
-                            color: #000000;
-                            line-height: 22px;
+
+                        .issue-title {
+                            .hot-icon {
+                                width: 16px;
+                                height: 16px;
+                                margin-right: 8px;
+                            }
+
                             margin-bottom: 8px;
+
+                            .issue {
+                                font-weight: 650;
+                                font-size: 14px;
+                                color: #000000;
+                                line-height: 22px;
+                            }
                         }
 
                         .answer {
@@ -465,6 +510,7 @@
 
         .details-area-box {
             width: calc((100vw - 1200px) / 2 + 688px);
+            min-width: 688px;
             // min-height: 1000vh;
             // background-color: #72DB86;
             background-color: rgba(251, 251, 251, 1);
@@ -480,6 +526,7 @@
                 padding-left: 60px;
                 flex-direction: column;
                 flex: 1;
+                position: relative;
 
                 .close-box {
                     height: 69px;
@@ -490,6 +537,8 @@
                     .close-circle {
                         position: relative;
                         cursor: pointer;
+                        width: 20px;
+                        height: 20px;
 
                         .close-icon {
                             width: 20px;
@@ -519,20 +568,36 @@
                     margin-bottom: 28px;
                     position: relative;
 
+                    // .icon-boxb {
+                    // border: 4px solid #fbfbfb;
+                    // position: absolute;
+                    // top: -5px;
+                    // left: -5px;
+                    // width: 28px;
+                    // height: 28px;
+
+
                     .icon {
-                        position: absolute;
                         background-color: #72db86;
                         font-family: 'PingFangSC-Semibold', 'PingFang SC Semibold', 'PingFang SC', sans-serif;
                         font-weight: 650;
                         font-size: 13px;
-                        width: 20px;
-                        height: 20px;
+                        width: 28px;
+                        height: 28px;
+                        // width: 20px;
+                        // height: 20px;
                         line-height: 20px;
                         border-radius: 50%;
                         color: #fff;
-                        margin-right: 17px;
+                        border: 4px solid #fbfbfb;
+                        position: absolute;
+                        // margin-right: 17px;
+                        top: -4px;
+                        left: -4px;
                     }
 
+                    // }
+
                     .title {
                         font-weight: 650;
                         font-size: 18px;
@@ -624,6 +689,24 @@
                     box-shadow: 0px 0px 11px rgb(0 0 0 / 10%);
                     padding-top: 24px;
                     margin-bottom: 21px;
+                    position: relative;
+
+                    .icon-box {
+                        background-color: #62b1ff;
+                        font-family: 'PingFangSC-Semibold', 'PingFang SC Semibold', 'PingFang SC', sans-serif;
+                        font-weight: 650;
+                        font-size: 13px;
+                        width: 28px;
+                        height: 28px;
+                        line-height: 20px;
+                        border-radius: 50%;
+                        color: #fff;
+                        border: 4px solid #fbfbfb;
+                        position: absolute;
+                        top: -4px;
+                        left: -4px;
+                    }
+
 
                     .answer-text {
                         font-size: 14px;
@@ -634,6 +717,7 @@
 
                         img {
                             max-width: 100%;
+                            cursor: pointer;
                         }
                     }
 
@@ -947,19 +1031,24 @@
                             // background-color: #333333;
 
                             position: relative;
-                            z-index: 1;
+                            // z-index: 1;
 
-                            &.commentnum::after {
-                                content: "";
-                                width: 80px;
-                                height: 100%;
-                                background: inherit;
-                                background-color: rgba(246, 246, 246, 1);
-                                position: absolute;
-                                top: 0;
-                                left: 50%;
-                                z-index: -1;
-                                transform: translateX(-50%);
+                            &.commentnum {
+
+                                z-index: 1;
+
+                                &::after {
+                                    content: "";
+                                    width: 80px;
+                                    height: 100%;
+                                    background: inherit;
+                                    background-color: rgba(246, 246, 246, 1);
+                                    position: absolute;
+                                    top: 0;
+                                    left: 50%;
+                                    z-index: -1;
+                                    transform: translateX(-50%);
+                                }
                             }
 
                             .operate-icon {
@@ -984,7 +1073,7 @@
 
                             &.operate-transmit {
                                 position: relative;
-                                z-index: 1;
+                                // z-index: 1;
 
                                 .transmit-box {
                                     width: 628px;
@@ -1001,6 +1090,7 @@
                                     background: #fff;
                                     justify-content: space-between;
                                     padding: 40px 35px 42px;
+                                    z-index: 1;
 
                                     .transmit-title {
                                         font-weight: 650;
@@ -1029,6 +1119,7 @@
 
                                             .transmit-url {
                                                 color: #AAAAAA;
+                                                word-wrap: break-word;
                                             }
                                         }
 
@@ -1069,15 +1160,6 @@
 
                                 }
 
-                                .transmit-mask {
-                                    position: fixed;
-                                    top: 0;
-                                    left: 0;
-                                    // background-color:;
-                                    z-index: -1;
-                                    width: 100vw;
-                                    height: 100vh;
-                                }
                             }
 
                         }
@@ -1354,7 +1436,7 @@
                             .state-popup {
                                 position: absolute;
                                 top: 28px;
-                                right: 0;
+                                right: 3px;
                                 width: 140px;
                                 height: 101px;
                                 background-color: rgba(255, 255, 255, 1);
@@ -1465,7 +1547,7 @@
         background-color: rgba(0, 0, 0, 0.5);
         width: 100vw;
         height: 100vh;
-        z-index: 1;
+        z-index: 1000;
     }
 
     .issue-box {
@@ -1503,17 +1585,19 @@
             }
 
             .theme-list {
-                justify-content: space-between;
+                // justify-content: space-between;
                 flex-wrap: wrap;
 
-                &::after {
-                    content: "";
-                    width: 140px;
-                    height: 0;
+                .theme-stair-box {
+                    flex-wrap: wrap;
+                    // border-bottom: 1px dotted #dedede;
+                    // margin-bottom: 20px;
+
                 }
 
+
                 .theme-item {
-                    width: 140px;
+                    width: 106px;
                     height: 36px;
                     background-color: rgba(246, 246, 246, 1);
                     border-radius: 5px;
@@ -1521,8 +1605,10 @@
                     color: #333333;
                     cursor: pointer;
 
-                    &:not(:nth-last-child(-n+3)) {
-                        margin-bottom: 20px;
+                    margin-bottom: 10px;
+
+                    &:not(:nth-child(4n)) {
+                        margin-right: 11px;
                     }
 
                     &:hover {
@@ -1532,23 +1618,26 @@
 
 
                 }
+
             }
         }
 
         .issue-form {
             padding-top: 30px;
-            width: 721px;
+            // width: 721px;
             // height: 520px;
-            width: 721px;
+            width: 720px;
             height: 520px;
-            background-color: #fff;
+            // background-color: #fff;
             border-radius: 10px;
             position: relative;
             z-index: 1;
+            // background-image: url(../img/issue-bj.svg);
+            background-position: -4px -3px;
 
             .issue-bj {
                 position: absolute;
-                left: -3px;
+                left: -4px;
                 top: -3px;
                 width: 727px;
                 height: 526px;
@@ -1565,8 +1654,8 @@
                 color: #FFFFFF;
                 background-color: #72db86;
                 position: absolute;
-                top: 0;
-                left: 0;
+                top: -1px;
+                left: -1px;
             }
 
             .cross-icon {
@@ -1590,9 +1679,11 @@
                 height: 80px;
                 border-bottom: 1px dotted #ebebeb;
 
-                input {
+                textarea {
                     font-size: 18px;
                     width: 100%;
+                    height: 100%;
+                    resize: none;
 
                     &::placeholder {
                         color: #AAAAAA;
@@ -1601,11 +1692,12 @@
             }
 
             .issue-replenish {
-                width: 100%;
+                width: 720px;
                 height: 330px;
                 font-size: 14px;
                 padding: 20px 30px;
                 resize: none;
+                display: block;
 
                 &::placeholder {
                     color: #AAAAAA;
@@ -1626,6 +1718,8 @@
         -webkit-box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.117647058823529);
         box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.117647058823529);
         position: relative;
+        display: flex;
+        flex-direction: column;
 
         .close-icon {
             width: 12px;
@@ -1646,17 +1740,29 @@
             padding-left: 20px;
         }
 
-        textarea {
+        .question-textarea {
             display: block;
             border: none;
             outline: none;
             width: 100%;
-            height: 255px;
+            // height: 255px;
             font-size: 14px;
             color: #555555;
             line-height: 26px;
             resize: none;
             padding: 20px;
+            flex: 1;
+            overflow: auto;
+
+
+            &.placeholder::after {
+                content: "输入图文内容回答提问";
+                color: #999;
+            }
+
+            img {
+                max-width: 100%;
+            }
         }
     }
 
@@ -1764,7 +1870,7 @@
             }
 
             .question-textarea {
-                height: 412px;
+                // height: 412px;
                 width: 100%;
                 border: none;
                 outline: none;
@@ -1784,9 +1890,97 @@
         }
     }
 
+    .detail-image-mask {
+        width: 100%;
+        height: 100%;
+        max-width: none;
+        max-height: none;
+        border: none;
+        position: fixed;
+        top: 0;
+        left: 0;
+        background-color: rgba(255, 255, 255, 0.8);
+        z-index: 100;
+
+        .detail-image {
+            width: 80vw;
+            height: 80vh;
+            border-radius: 8px;
+            background-color: #111;
+
+            .detail-img {
+                max-width: 100%;
+                max-height: 100%;
+            }
+        }
+
+    }
+
 }
 
+.box-item {
+    // height: 16px;
+    position: fixed;
+    min-width: 380px;
+    border: 1px solid #EBEEF5;
+    border-radius: 4px;
+    position: fixed;
+    left: 50%;
+    transform: translateX(-50%);
+    background-color: #edf2fc;
+    transition: opacity .3s, transform .4s, top .4s;
+    padding: 15px 15px 15px 20px;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    font-size: 14px;
+    z-index: 5000;
 
-a::after {
-    content: "";
+    &-success {
+        background-color: #f0f9eb;
+        border-color: #e1f3d8;
+        color: #67c23a;
+    }
+
+    &-warning {
+        background-color: #fdf6ec;
+        border-color: #faecd8;
+        color: #e6a23c;
+    }
+
+    &-error {
+        background-color: #fef0f0;
+        border-color: #fde2e2;
+        color: #f56c6c;
+    }
+}
+
+.msg-container {
+    display: flex;
+    align-items: center;
+    line-height: 16px;
+
+    .iconfont {
+        margin-right: 5px;
+    }
+}
+
+.msg-enter-active {
+    animation: anim 0.5s;
+}
+
+.msg-leave-active {
+    animation: anim 0.5s reverse;
+}
+
+@keyframes anim {
+    0% {
+        opacity: 0;
+        transform: translate(-50%, -200%);
+    }
+
+    100% {
+        opacity: 1;
+        transform: translate(-50%, 0);
+    }
 }
\ No newline at end of file
diff --git a/img/hot-icon.png b/img/hot-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..2b97527c0f444352b61a555ff5818a3be395edde
GIT binary patch
literal 1934
zcmV;92XXj`P)<h;3K|Lk000e1NJLTq002M$002M;1^@s6s%dfF00001b5ch_0Itp)
z=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@
z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuC_(?=TRCodHTU~P7HV_8=qu1~T
zQBM&11ZGYU<plO~e<tb)te(K?OxsthC$M}1vnMcpf;uOt{Hi2kzFh(&NP-Y3fs*Vg
zW+*POKfo>*iv>staX=*-M`8A36zy_IC%f!S?~9ZbU&IHIi5TsqbR?EcamK$p`q{Yw
zvY(?^ti&fMJ2L3_d+=A98rpkn+L-}Z@l0Gn`M6b^fta-7dP4MW0Cx4IxPjuPCtj)*
zh`)nrx+oiV1NCYEe(Fnc3su6k>I7o8mZk@Spa+>O64Cq;z>TB)&zSo|M_R9BM_#2#
zVcAd77@({2#5I?!JHL5106+OmTzAssNF<%;Jra90Ku5PP)i~Lo0ldWknZZ4jS~){|
zoBuRIpB_Nbev|UF36n1#FUz2G{o#g#N?rMoQw)(lQ*cd1Ant-c(!`awjn0<`T(x!J
z(7te>VG<-tPuM%0;Tj{cx`*NaMXoV&<u}o7Z2&odp-Fg8ZHXp#2t(Xr*}Z4)&=9WR
z)&{WV_O7GoM%SD&w4+>#hfTa;djkk;X}2q3C-y+JO_`9rA<saaMfxzn(787=VPtM@
zX$=qn?d3)WWjmF``Y?b~M;4-Y7Tl&NXCrK70N(0uI>eGM<XvM~w?iv2v=bEA8yC52
z4M5RVW_g8V1$f)P(?N-Qai21@LeSBhrC1HXiX*xrU$hB%w#auwA&R4~wYx{D%!Qj!
zrlNC4Ylhlt0NEKaQ*>QeI!!IOE~rb}dd}lnihCYU7pb{%Cv7aPn;|@rDVRPHBMvKU
zbQ6$tabXf^F9GikQ)GO(;R8H`Ok9E~v@=?;1MvfAk~I?JUVwuKo!rU->km!Lj6TA$
zv{ICw?)g!9Tu93bXmeo6XA~dn0?bpO9+bXXBJauCb-CW>zUm{>s?ab16Xj1pA84!V
zwR(omeJJp%c~aFd0NnYyG2X2GNV{!`Y{)o_hN$iZ6$1b{!Z@SGSTpfKt_lql8vF)8
zQx87d@?cs>tQY{1mJDDjA$D7|<t(NGmaGdr{Ra@Y@tEZ7zbz9N6x7u~isg-!TZ;b_
z!g5c6i!At;fcgzf`-BEsdcYT6XI%#W(v>G2FO;IC0ovVP(Y~g8vA-z|AjJ7=($GN{
zj$NDy^3q_=<~~EvlO~MZ|BY5J!9Y9~scYWaPMhOt6O|SM@^trIQLh6{`E`nQ_4)&j
zi6Kvg+uzyGRIngoMEwM}x*$Sf!yv}NpXD)iD=l7w!%$PmEtStD2pNb+s7`RbmCgCB
zCclDns9-!<jg0kBdx5xy?4wHFG=h;DimT4#`N9l_m}46|g`qAKu8%u;z8(Ym=tIdQ
zcORLax+2i;WC$4Q5^Z;SyLT9;OUeV<=boQl$0p^oU(U|Ow=6~%3o*c(9(wVimjRaM
zCC8vQl%gZ~TIgtkVW{_d8=WcW^#ZO>fE-a6AS?*|1N8E9ri+zx{T|9kMf*}rG59GI
z`c<`&Ct&VQQNO|!VM?qo&5fLmC+vR;<cAy8LD2j*Ws`X2CHEsb{amkjh9flvT;<L{
zm>7vqD$Au#lIj(PvAJrrsfHD2q=nKnb>IaG>;2xz0CiV(8cpp*hRiua3$G1lVcQJV
z{}kvxuJi6J8*`+}18A8tXLy=yxMC!Z12f%m_9)kJjRRo)MFt(A<)6e>>B`zaCD=Q(
zP#%ytb~Q!hPK?*r)-7^n0!t%NQe-YcHI`t-7@7$^wBkTl86fo_u1!SKrH}A|gSkA5
zQ!%NamLjgyeOBO&$^dhpa%-|0=WzJ6WsZ}GkJvvvYP5HN<3=*n*O43groK1^$fbtd
z@~t)?e;{RX<LJE}BiIOQK9EFWG)D3>^fwSqQkF00$^!^9)6l*_`Y!+(A#@eY2~pP%
zE?tEa-GGxZ?MN(dpw*zSLV5i?=K+=;DCl9ep|8ttEo9rF@-Ne$NJyYdk}h|xwau{X
z&5HWBYzjCk>Q!J2+O%l0(>{SN!A184t`HZECWgz$47>gu2UU7nrPdYgJz>QF#0Tpq
zxHTg;Azw!+PJ~GvJqG0J4fvd&0^;i{6#3<GxKgfR02!%AAm}q5sQ!0(ryPUys+5KS
z2usT%qGVKCrz?yvtU?ddlw%mCfYgi=l2Z;yl%Txak|$d+KU9MjjUZ^C5xgd^I8QKd
zgiK6_&_*ZFr#P*){29y10Hg~iF-y+j$EY5<At;DX@YH9xTZ^*+loV+Q3MQAh4sE$~
zR$S@R*#L@>?v%CR{C<Swg$%MUV>}~R&oKt$%NBjSCU`3Y)CF>yoAK#w3|xe(kIfZ5
zW%|QJf-BwjPZM4ZfPpm%PnrC%guXW<qm(5O!<OA%QW61@|0>&7*^12nE4c-}1A4kE
Uz}%q2<^TWy07*qoM6N<$g4ca%6#xJL

literal 0
HcmV?d00001

diff --git a/img/issue-bj.png b/img/issue-bj.png
new file mode 100644
index 0000000000000000000000000000000000000000..d33b46e99b2112f70919b54eff5316ff8a35b49c
GIT binary patch
literal 2331
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
BZs7m`

literal 0
HcmV?d00001

diff --git a/img/logo.png b/img/logo.png
index a31c8e2ab118866db3228d11415f7cf46476139b..dc6308b13ce5182e66b943bc19ab36890c623027 100644
GIT binary patch
literal 33855
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
bE|CnmSZ7C9#?r-e0Q^x?0;!RAG0*=G9d85A

literal 6157
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

diff --git a/index.html b/index.html
index 3516369..dcd0977 100644
--- a/index.html
+++ b/index.html
@@ -7,13 +7,14 @@
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Document</title>
     <link rel="stylesheet" href="./css/index.css">
-    <script src="../js文件/vue@3.2.36.js"></script>
-    <!-- <script src="./js/masonry.pkgd.min.js"></script> -->
+    <script src="./js/vue@3.2.36.js"></script>
+    <script src="https://app.gter.net/bottom?tpl=header&menukey=ask"></script>
+    <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
+
 </head>
 
 <body>
     <div class="" id="answer-app">
-        <!-- <video poster="https://oss.gter.net/avatar/97KwEWQHYuMQGDnFqkimXF9SHKuGwVV5zW-tYWFjYQ~~/middle?istype=1&t=20231123103322" src="null" autoplay></video> -->
         <header class="flexacenter" id="pageHeader">
             <div class="flexacenter top">
                 <img class="logo" src="./img/logo.png">
@@ -24,7 +25,7 @@
                         <div class="history-box" v-if="historicalSearchState" @click.stop="">
                             <div class="history-title">历史搜索</div>
                             <div class="history-list">
-                                <div class="history-item" v-for="(item,index) in historicalSearchList" :key="index" @click.stop="handleClickHistoricalItem(item)">{{ item }}</div>
+                                <div class="history-item ellipsis" v-for="(item,index) in historicalSearchList" :key="index" @click.stop="handleClickHistoricalItem(item)">{{ item }}</div>
                             </div>
                         </div>
                     </div>
@@ -41,32 +42,37 @@
             </div>
             <div class="tab-box flexcenter" :class="{'tab-list-fixed': tabListFixeState}">
                 <div class="tab-list flexacenter">
-                    <div class="item flexcenter" :class="{'pitch': typePitch === item['id'] }" v-for="(item,index) in typeList" :key="index">{{ item['name'] }}</div>
+                    <div class="item flexcenter" :class="{'pitch': typePitch === null }"  @click="cutType(null)">All</div>
+                    <template v-for="(item,index) in typeList" :key="index">
+                        <div class="halving-line">|</div>
+                        <div class="item flexcenter" :class="{'pitch': typePitch === it['id'] }" v-for="(it,i) in item" :key="it" @click="cutType(it.id)">{{ it['name'] }}</div>
+                    </template>
                 </div>
             </div>
-
         </header>
 
-        <!-- <div class="" v-if="keyword && list.length == 0">搜索为空</div> -->
-
         <div class="main flexflex" :class="{'mode-list': type == 'list'}">
-            <div class="list-box" :style="listBoxStyle()" @scroll="handleListScroll">
+            <div class="list-box" @scroll="handleListScroll">
                 <div class="main-header " :style="{paddingLeft: type == 'list' ? 0 : 'calc((100vw - 1200px) / 2)'}">
                     <div class="search-keyword flexacenter" v-if="isSearchMode" @click="handleClickClear()">
-                        {{ keyword }}<img class="search-keyword-cross" src="./img/cross-circle-icon.png">
+                        <div class="flex1 ellipsis">{{ keywordText }}</div>
+                        <img class="search-keyword-cross" src="./img/cross-circle-icon.png">
                     </div>
-                    <div class="total grid-item" @click="cut">共 {{ total }} 条回答</div>
+                    <div class="total grid-item" @click="cut">共 {{ total }} 条问答</div>
                 </div>
                 <div class="list" id="list" :style="listStyle()">
-                    <div class="item grid-item flexflex" v-for="(item, index) in list" :key="index" :style="itemStyle(index,item['content'])" :class="{'pitch': index === pitchIndex,'upLevel': index === pitchIndex - 1}">
+                    <div class="item grid-item flexflex" v-for="(item, index) in list" :key="index" :style="itemStyle(index,item['content'])" :class="{'pitch': index === pitchIndex,'upLevel': index === pitchIndex - 1}" @click.stop="getDetails(item['uniqid'],index)">
                         <img class="dot" src="./img/dot.svg">
                         <div class="content" :style="{width: type == 'list' ? '531px' : '430px'}">
-                            <div class="issue ellipsis" v-html="item['title']"></div>
-                            <div class="answer ellipsis">{{ item['content'] || '' }}</div>
+                            <div class="issue-title flexcenter">
+                                <img class="hot-icon" src="./img/hot-icon.png">
+                                <div class="issue ellipsis flex1" v-html="item['title']"></div>
+                            </div>
+                            <div class="answer ellipsis" v-html="item['content']"></div>
                             <div class="bottom flexacenter">
                                 <div class="quantity">{{ item['answers'] == 0 ? '暂无回答' : `共${ item['answers'] }个回答` }}</div>
                                 <div class="longString"></div>
-                                <div class="answer-btn" @click.stop="getDetails(item['uniqid'],index)">我来回答</div>
+                                <div class="answer-btn" @click.stop="getDetails(item['uniqid'],index,true)">我来回答</div>
                             </div>
                         </div>
                     </div>
@@ -78,9 +84,10 @@
                 </div>
             </div>
 
-            <!-- <div class="details-area-box flexflex" v-if="type == 'details'" :style="{height: 'calc(100vh - ' + pageHeaderHeight + 'px)'}"> -->
-            <div class="details-area-box flexflex" v-if="type == 'details'" :style="{height: pageListHeight + 'px'}">
+            <div class="details-area-box flexflex" v-if="type == 'details'" @scroll="handleDetailsScroll">
                 <div class="details-box flexflex">
+                    <div class="transmit-mask" v-if="questionsTransmitMaskState" @click="closeAllTransmitState()"></div>
+
                     <div class="close-box">
                         <div class="close-circle flexcenter" @click="closeDetailMode()">
                             <img class="close-icon" src="./img/close-icon.svg" />
@@ -92,7 +99,7 @@
                         <div class="icon q flexcenter">Q</div>
 
                         <div class="title">{{ detailsInfo['title'] }}</div>
-                        <div class="hint" v-html="detailsInfo['content']"></div>
+                        <div class="hint" @click="handleAnswerText" v-html="detailsInfo['content']"></div>
                         <div class="info-box flexacenter">
                             <div class="user-info flexacenter">
                                 <img class="avatar" :src="detailsInfo['avatar']">
@@ -111,18 +118,17 @@
                                     <img class="operate-icon operate-collect-icon" :src="detailsIscollection == 0 ? './img/collect-icon.png' : './img/collect-icon-colours.svg'">
                                     收藏
                                 </div>
-                                <div class="operate-item flexacenter operate-transmit" style="z-index: 2;" @click="closeTransmitState()">
+                                <div class="operate-item flexacenter operate-transmit" @click="closeTransmitState()">
                                     <img class="operate-icon operate-transmit-icon" src="./img/transmit-icon.png">
                                     转发
-                                    <div class="transmit-box flexflex" v-if="questionsTransmitState" @click.stop="">
-                                        <!-- <div class="transmit-mask" @click="closeTransmitState()"></div> -->
+                                    <div class="transmit-box flexflex" v-if="questionsTransmitState" @click.stop="" style="z-index: 1;">
                                         <div class="transmit-left transmit-web">
                                             <div class="transmit-title">转发网页版</div>
                                             <div class="transmit-content">
-                                                <div class="transmit-headline">25fall!求定位,大佬帮忙解答一下~ (港,新,美)</div>
-                                                <div class="transmit-url">https://ask.gter.net/jb179020.html</div>
+                                                <div class="transmit-headline">{{ detailsInfo['title'] }}</div>
+                                                <div class="transmit-url">{{ getCurrentUrl() }}</div>
                                             </div>
-                                            <div class="transmit-web-btn flexcenter">复制链接</div>
+                                            <div class="transmit-web-btn flexcenter" @click="copyText(detailsInfo['title'] + getCurrentUrl())">复制链接</div>
                                         </div>
                                         <div class="transmit-right transmit-mini">
                                             <div class="transmit-title">转发小程序版</div>
@@ -143,7 +149,7 @@
                     <div class="answer-total-amount">共 {{ detailsInfo['answers'] }} 个回答</div>
 
                     <!-- 回答-没有数据 -->
-                    <div class="answer-empty-box flexcenter" v-if="answerList.length == 0">
+                    <div class="answer-empty-box flexcenter" v-if="answerList.length == 0 && answerPage == 0">
                         <div class="empty-box flexcenter">
                             <div class="dot-list flexacenter">
                                 <img class="dot-item" src="./img/dot-yellow.svg" v-for="item in 3">
@@ -155,9 +161,13 @@
                     </div>
 
                     <!-- 回答-数据 -->
-                    <div class="answer-box-item" v-for="(item,index) in answerList" :style="{zIndex: item['transmitState'] ? 1 : 0}">
-                        <div class="answer-text" v-html="item['content']"></div>
+                    <!-- <div class="answer-box-item" v-for="(item,index) in answerList" :style="{zIndex: item['transmitState'] ? 1 : 0}"> -->
+                    <div class="answer-box-item" v-for="(item,index) in answerList">
+                        <div class="icon-circle-box">
+                            <div class="icon-box flexcenter">A</div>
+                        </div>
 
+                        <div class="answer-text" v-html="item['content']" @click="handleAnswerText"></div>
                         <div class="info-box flexacenter">
                             <div class="user-info flexacenter">
                                 <img class="avatar" :src="item['avatar']">
@@ -194,10 +204,10 @@
                                         <div class="transmit-left transmit-web">
                                             <div class="transmit-title">转发网页版</div>
                                             <div class="transmit-content">
-                                                <div class="transmit-headline">25fall!求定位,大佬帮忙解答一下~ (港,新,美)</div>
-                                                <div class="transmit-url">https://ask.gter.net/jb179020.html</div>
+                                                <div class="transmit-headline">{{ detailsInfo['title'] }}</div>
+                                                <div class="transmit-url">{{ getCurrentUrl() }}</div>
                                             </div>
-                                            <div class="transmit-web-btn flexcenter">复制链接</div>
+                                            <div class="transmit-web-btn flexcenter" @click="copyText(detailsInfo['title'] + getCurrentUrl())">复制链接</div>
                                         </div>
                                         <div class="transmit-right transmit-mini">
                                             <div class="transmit-title">转发小程序版</div>
@@ -289,7 +299,7 @@
                                             </div>
                                         </div>
                                         <div class="comments-also flexacenter" v-if="it['childnum'] >= 3 && it['childnum'] != it['child'].length" @click="alsoCommentsData(index,ind)">
-                                            <div class="">还有{{ it['childnum'] - 3 }}条回复</div>
+                                            <div class="">还有{{ it['childnum'] - 1 }}条回复</div>
                                             <img class="also-icon" src="./img/arrow-circular-gray.png" />
                                         </div>
                                     </div>
@@ -313,9 +323,6 @@
                                 </div>
                                 <div class="empty-hint">和我说说你的想法或疑问吧</div>
                             </div>
-
-
-
                         </template>
 
                     </div>
@@ -346,13 +353,13 @@
             <div class="popover-box flexflex">
                 <img class="cross-icon" src="./img/cross-icon.png" @click="myType = ''">
                 <div class="tab-list flexcenter">
-                    <div class="tab-item flexacenter" :class="{'pitch': myType == 'collect'}" @click="handleMy('collect')">我的收藏 <div class="quantity">{{ myCollectionCount  || 0}}</div>
+                    <div class="tab-item flexacenter" :class="{'pitch': myType == 'collect'}" @click="handleMy('collect')">我的收藏 <div class="quantity">{{ myCollectionCount || myCount['collect'] || 0 }}</div>
                     </div>
                     <div class="long-string"></div>
-                    <div class="tab-item flexacenter" :class="{'pitch': myType == 'answers'}" @click="handleMy('answers')">我的回答 <div class="quantity">{{ myAnswerCount }}</div>
+                    <div class="tab-item flexacenter" :class="{'pitch': myType == 'answers'}" @click="handleMy('answers')">我的回答 <div class="quantity">{{ myAnswerCount || myCount['answer'] || 0 }}</div>
                     </div>
                     <div class="long-string"></div>
-                    <div class="tab-item flexacenter" :class="{'pitch': myType == 'questions'}" @click="handleMy('questions')">我的提问 <div class="quantity">{{ myQuestionsCount }}</div>
+                    <div class="tab-item flexacenter" :class="{'pitch': myType == 'questions'}" @click="handleMy('questions')">我的提问 <div class="quantity">{{ myQuestionsCount || myCount['questions'] || 0 }}</div>
                     </div>
                 </div>
                 <div class="empty-box flexcenter" v-if="(myType == 'collect' && myCollectionList.length == 0) || (myType == 'answers' && myAnswerList.length == 0) || (myType == 'questions' && myQuestionsList.length == 0)">
@@ -367,8 +374,8 @@
                     <img class="empty-icon" src="./img/empty-icon.svg">
                     <div class="empty-hint">暂无内容</div>
                 </div>
-                <div class="content-box collect-list" v-if="myType == 'collect'" @scroll="handleCollectionScroll">
-                    <div class="item flexflex" v-for="(item,index) in myCollectionList" :key="item">
+                <div class="content-box collect-list" v-if="myType == 'collect' && myCollectionList.length != 0" @scroll="handleCollectionScroll">
+                    <div class="item flexflex" v-for="(item,index) in myCollectionList" :key="item" @click.stop="myOpenDetails(item)">
                         <template v-if="item.type == 'askanswercollection'">
                             <div class="icon a flexcenter">A</div>
                             <div class="centre flexflex flex1">
@@ -376,7 +383,7 @@
                                 <div class="text ellipsis">提问:{{ item['data']['title'] }}</div>
                             </div>
                             <div class="delete-box flexacenter">
-                                <img class="delete-icon" @click="cancelCollection(item['token'],index)" src="./img/delete-icon.svg">
+                                <img class="delete-icon" @click.stop="cancelCollection(item['token'],index)" src="./img/delete-icon.svg">
                             </div>
                         </template>
                         <template v-else>
@@ -386,14 +393,14 @@
                                 <div class="text ellipsis">{{ item['data']['answers'] > 0 ? `共${ item['data']['answers'] }个回答` : '暂无回答'}}</div>
                             </div>
                             <div class="delete-box flexacenter">
-                                <img class="delete-icon" @click="cancelCollection(item['token'],index)" src="./img/delete-icon.svg">
+                                <img class="delete-icon" @click.stop="cancelCollection(item['token'],index)" src="./img/delete-icon.svg">
                             </div>
                         </template>
 
                     </div>
                 </div>
-                <div class="content-box answers-list" v-if="myType == 'answers'" @scroll="handleAnswersScroll">
-                    <div class="item flexflex" v-for="(item,index) in myAnswerList" :key="item">
+                <div class="content-box answers-list" v-if="myType == 'answers' && myAnswerList.length != 0" @scroll="handleAnswersScroll">
+                    <div class="item flexflex" v-for="(item,index) in myAnswerList" :key="item" @click.stop="myOpenDetails(item)">
                         <div class="icon a flexcenter">A</div>
                         <!-- <div class="icon a flexcenter">A</div> -->
                         <div class="centre flexflex flex1">
@@ -405,7 +412,7 @@
                             <div class="text ellipsis">提问:{{ item['title'] }}</div>
                         </div>
                         <div class="operate-box flexacenter">
-                            <div class="state-box flexacenter" @click="cutAnswerPopupState(index)">
+                            <div class="state-box flexacenter" @click.stop="cutAnswerPopupState(index)">
                                 <div class="text">{{ item['anonymous'] == 0 ? '公开' : '匿名' }}</div>
                                 <img class="arrows" src="./img/arrows-icon.svg">
                                 <div class="state-popup flexflex" v-if="item['popupState']">
@@ -420,37 +427,37 @@
                                     </div>
                                 </div>
                             </div>
-                            <img class="edit-icon" @click="openIAnswer(index,'my')" src="./img/edit-icon.png">
+                            <img class="edit-icon" @click.stop="openIAnswer(index,'my')" src="./img/edit-icon.png">
                         </div>
                     </div>
                 </div>
-                <div class="content-box questions-list" v-if="myType == 'questions' && myQuestionsList.length != 0">
-                    <div class="item flexflex" v-for="item in myQuestionsList" :key="item">
+                <div class="content-box questions-list" v-if="myType == 'questions' && myQuestionsList.length != 0" @scroll="handleQuestionsScroll">
+                    <div class="item flexflex" v-for="(item,index) in myQuestionsList" :key="item" @click.stop="myOpenDetails(item)">
                         <div class="icon q flexcenter">Q</div>
-                        <!-- <div class="icon a flexcenter">A</div> -->
                         <div class="centre flexflex flex1">
                             <div class="info flexacenter">
-                                <div class="name">Ada.Wu</div>
-                                <div class="time">1小时前</div>
+                                <div class="name">{{ item['nickname'] }}</div>
+                                <div class="time">{{ handleDate(item['publicationdate']) }}</div>
                             </div>
-                            <div class="title ellipsis">关于港大RP和HKFPS的RP部分能否有相同的部分内容?</div>
+                            <div class="title ellipsis">{{ item['title'] }}</div>
                             <div class="text flexacenter">
-                                <div class="new-answer flexacenter">有1个新回答 <div class="long-string"></div>
+                                <div class="new-answer flexacenter" v-if="item['authornewnum'] > 0">有{{ item['authornewnum'] }}个新回答 <div class="long-string"></div>
                                 </div>
-                                暂无回答
+
+                                {{ item['answers'] == 0 ? '暂无回答' : `共${item['answers']}个回答`}}
                             </div>
                         </div>
                         <div class="operate-box flexacenter">
-                            <div class="state-box flexacenter">
-                                <div class="text">公开</div>
+                            <div class="state-box flexacenter" @click.stop="cutQuestionsPopupState(index)">
+                                <div class="text">{{ item['anonymous'] == 0 ? '公开' : '匿名' }}</div>
                                 <img class="arrows" src="./img/arrows-icon.svg">
-                                <div class="state-popup flexflex" v-if="false">
-                                    <div class="state-popup-item flexacenter flex1 pitch">
+                                <div class="state-popup flexflex" v-if="item['popupState']">
+                                    <div class="state-popup-item flexacenter flex1" :class="{'pitch': item['anonymous'] == 0 }" @click.stop="changeAnonymousQuestions(item['token'], 0,index)">
                                         <div class="">公开发表</div>
                                         <img class="state-popup-icon" src="./img/tick-orange.svg">
                                     </div>
-                                    <div class="state-popup-item flexacenter flex1">
-                                        <div class="">公开发表</div>
+                                    <div class="state-popup-item flexacenter flex1" :class="{'pitch': item['anonymous'] == 1 }" @click.stop="changeAnonymousQuestions(item['token'], 1,index)">
+                                        <div class="">匿名发表</div>
                                         <img class="state-popup-icon" src="./img/tick-orange.svg">
                                     </div>
                                 </div>
@@ -464,20 +471,32 @@
         <!-- 我要提问 -->
         <div class="popover-mask flexcenter issue-box" v-if="questionsSetp">
             <!-- 第一步 -->
-            <div class="choosing-theme" v-if="questionsSetp == 1">
+            <!-- <div class="choosing-theme" v-if="questionsSetp == 1">
                 <div class="title">选择提问所属主题</div>
                 <div class="theme-list flexflex">
                     <div class="theme-item flexcenter" v-for="item in questionsTypeList" :key="item.id" @click="choosingTheme(item.id)">{{ item.name }}</div>
                 </div>
+            </div> -->
+
+            <div class="choosing-theme" v-if="questionsSetp == 1">
+                <div class="title">选择提问所属主题</div>
+                <div class="theme-list flexflex">
+                    <div class="theme-stair-box flexflex" v-for="(item,index) in questionsTypeList">
+                        <div class="theme-item flexcenter" v-for="item in item" :key="item.id" @click="choosingTheme(item.id)">{{ item.name }}</div>
+                        <!-- <div class="halving-line"></div> -->
+                    </div>
+                </div>
             </div>
 
             <!-- 第二步 -->
             <div class="issue-form" v-else>
-                <!-- <img class="issue-bj" src="./img/issue-bj.svg"> -->
-                <!-- <div class="flexcenter q">Q</div> -->
+                <!-- <img class="issue-bj" src="./img/issue-bj.png"> -->
+                <img class="issue-bj" src="./img/issue-bj.svg">
+                <div class="flexcenter q">Q</div>
                 <img class="cross-icon" @click="cutQuestionsSetp(0)" src="./img/cross-icon.png">
                 <div class="issue-input">
-                    <input class="" v-model="questionsObj.title" placeholder="一句话描述问题,以问号结尾" />
+                    <textarea v-model="questionsObj.title" placeholder="一句话描述问题,以问号结尾"></textarea>
+                    <!-- <input class="" v-model="questionsObj.title" placeholder="一句话描述问题,以问号结尾" /> -->
                 </div>
                 <textarea class="issue-replenish" v-model="questionsObj.content" placeholder="欢迎对问题补充说明,清晰表达问题的关键点,可获得更有效的解答(非必填)"></textarea>
                 <div class="issue-bottom flexacenter">
@@ -497,9 +516,10 @@
             <div class="edit-answers">
                 <img class="close-icon" src="./img/cross-icon.png" @click="closeIAnswer">
                 <div class="title">编辑回答</div>
-                <textarea placeholder="输入图文内容回答提问" v-model="IAnswerInfo['text']"></textarea>
+                <!-- <textarea placeholder="输入图文内容回答提问" v-model="IAnswerInfo['text']"></textarea> -->
+                <div class="question-textarea" :class="{'placeholder': questionPlaceholderState}" contenteditable="true" @paste="handlePaste" v-html="IAnswerInfo['text']" @input="handleInput"></div>
                 <div class="issue-bottom flexacenter">
-                    <div class="option-box flexacenter">
+                    <div class="option-box flexacenter" @click="amendIAnswer">
                         <img class="option-icon" v-if="IAnswerInfo['anonymous'] == 0" src="./img/tick-no.svg">
                         <img class="option-icon" v-else src="./img/tick-option.svg">
                         匿名发表
@@ -522,7 +542,6 @@
                 </div>
                 <div class="question-middle flexflex">
                     <div class="question-icon flexcenter">A</div>
-                    <!-- <textarea class="question-textarea flex1" placeholder="输入图文内容回答提问" v-model="IAnswerInfo['text']"></textarea> -->
                     <div class="question-textarea" :class="{'placeholder': questionPlaceholderState}" contenteditable="true" @paste="handlePaste" v-html="IAnswerInfo['text']" @input="handleInput"></div>
                 </div>
 
@@ -539,9 +558,31 @@
         </div>
 
 
+        <!-- 提示框 -->
+        <transition name="msg" appear v-show="msg['state']">
+            <!-- <div :class="['box-item', boxClass]" v-if="" :style="{top: info.top + 'px'}"> -->
+            <div class="box-item" :class="boxClass()" :style="{top: 20 + 'px'}">
+                <div class="msg-container">
+                    <!-- <i :class="['iconfont', iconClass]"></i> -->
+                    {{ msg['text'] }}
+                </div>
+            </div>
+        </transition>
+
+        <!-- 大图 -->
+        <div class="detail-image-mask flexcenter" v-if="dialogSrc" @click="dialogSrc = ''">
+            <div class="detail-image flexcenter">
+                <img class="detail-img" :src="dialogSrc">
+            </div>
+        </div>
+
+
+
     </div>
-    <script src="../js文件/axios.min.js"></script>
+    <script src="./js/axios.min.js"></script>
     <script src="./js/index.js"></script>
+    <script src="https://app.gter.net/bottom?tpl=footer"></script>
+
 </body>
 
 </html>
\ No newline at end of file
diff --git a/js/axios.min.js b/js/axios.min.js
new file mode 100644
index 0000000..0f36816
--- /dev/null
+++ b/js/axios.min.js
@@ -0,0 +1,9 @@
+/* axios v0.19.0 | (c) 2019 by Matt Zabriskie */
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.axios=t():e.axios=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";function r(e){var t=new i(e),n=s(i.prototype.request,t);return o.extend(n,i.prototype,t),o.extend(n,t),n}var o=n(2),s=n(3),i=n(5),a=n(22),u=n(11),c=r(u);c.Axios=i,c.create=function(e){return r(a(c.defaults,e))},c.Cancel=n(23),c.CancelToken=n(24),c.isCancel=n(10),c.all=function(e){return Promise.all(e)},c.spread=n(25),e.exports=c,e.exports.default=c},function(e,t,n){"use strict";function r(e){return"[object Array]"===j.call(e)}function o(e){return"[object ArrayBuffer]"===j.call(e)}function s(e){return"undefined"!=typeof FormData&&e instanceof FormData}function i(e){var t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function a(e){return"string"==typeof e}function u(e){return"number"==typeof e}function c(e){return"undefined"==typeof e}function f(e){return null!==e&&"object"==typeof e}function p(e){return"[object Date]"===j.call(e)}function d(e){return"[object File]"===j.call(e)}function l(e){return"[object Blob]"===j.call(e)}function h(e){return"[object Function]"===j.call(e)}function m(e){return f(e)&&h(e.pipe)}function y(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams}function g(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function x(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)}function v(e,t){if(null!==e&&"undefined"!=typeof e)if("object"!=typeof e&&(e=[e]),r(e))for(var n=0,o=e.length;n<o;n++)t.call(null,e[n],n,e);else for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.call(null,e[s],s,e)}function w(){function e(e,n){"object"==typeof t[n]&&"object"==typeof e?t[n]=w(t[n],e):t[n]=e}for(var t={},n=0,r=arguments.length;n<r;n++)v(arguments[n],e);return t}function b(){function e(e,n){"object"==typeof t[n]&&"object"==typeof e?t[n]=b(t[n],e):"object"==typeof e?t[n]=b({},e):t[n]=e}for(var t={},n=0,r=arguments.length;n<r;n++)v(arguments[n],e);return t}function E(e,t,n){return v(t,function(t,r){n&&"function"==typeof t?e[r]=S(t,n):e[r]=t}),e}var S=n(3),R=n(4),j=Object.prototype.toString;e.exports={isArray:r,isArrayBuffer:o,isBuffer:R,isFormData:s,isArrayBufferView:i,isString:a,isNumber:u,isObject:f,isUndefined:c,isDate:p,isFile:d,isBlob:l,isFunction:h,isStream:m,isURLSearchParams:y,isStandardBrowserEnv:x,forEach:v,merge:w,deepMerge:b,extend:E,trim:g}},function(e,t){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return e.apply(t,n)}}},function(e,t){/*!
+	 * Determine if an object is a Buffer
+	 *
+	 * @author   Feross Aboukhadijeh <https://feross.org>
+	 * @license  MIT
+	 */
+e.exports=function(e){return null!=e&&null!=e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}},function(e,t,n){"use strict";function r(e){this.defaults=e,this.interceptors={request:new i,response:new i}}var o=n(2),s=n(6),i=n(7),a=n(8),u=n(22);r.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{},e.url=arguments[0]):e=e||{},e=u(this.defaults,e),e.method=e.method?e.method.toLowerCase():"get";var t=[a,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){t.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){t.push(e.fulfilled,e.rejected)});t.length;)n=n.then(t.shift(),t.shift());return n},r.prototype.getUri=function(e){return e=u(this.defaults,e),s(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},o.forEach(["delete","get","head","options"],function(e){r.prototype[e]=function(t,n){return this.request(o.merge(n||{},{method:e,url:t}))}}),o.forEach(["post","put","patch"],function(e){r.prototype[e]=function(t,n,r){return this.request(o.merge(r||{},{method:e,url:t,data:n}))}}),e.exports=r},function(e,t,n){"use strict";function r(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var o=n(2);e.exports=function(e,t,n){if(!t)return e;var s;if(n)s=n(t);else if(o.isURLSearchParams(t))s=t.toString();else{var i=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)?t+="[]":e=[e],o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),i.push(r(t)+"="+r(e))}))}),s=i.join("&")}if(s){var a=e.indexOf("#");a!==-1&&(e=e.slice(0,a)),e+=(e.indexOf("?")===-1?"?":"&")+s}return e}},function(e,t,n){"use strict";function r(){this.handlers=[]}var o=n(2);r.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},r.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},r.prototype.forEach=function(e){o.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=r},function(e,t,n){"use strict";function r(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var o=n(2),s=n(9),i=n(10),a=n(11),u=n(20),c=n(21);e.exports=function(e){r(e),e.baseURL&&!u(e.url)&&(e.url=c(e.baseURL,e.url)),e.headers=e.headers||{},e.data=s(e.data,e.headers,e.transformRequest),e.headers=o.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),o.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]});var t=e.adapter||a.adapter;return t(e).then(function(t){return r(e),t.data=s(t.data,t.headers,e.transformResponse),t},function(t){return i(t)||(r(e),t&&t.response&&(t.response.data=s(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)})}},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},function(e,t,n){"use strict";function r(e,t){!s.isUndefined(e)&&s.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}function o(){var e;return"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process)?e=n(13):"undefined"!=typeof XMLHttpRequest&&(e=n(13)),e}var s=n(2),i=n(12),a={"Content-Type":"application/x-www-form-urlencoded"},u={adapter:o(),transformRequest:[function(e,t){return i(t,"Accept"),i(t,"Content-Type"),s.isFormData(e)||s.isArrayBuffer(e)||s.isBuffer(e)||s.isStream(e)||s.isFile(e)||s.isBlob(e)?e:s.isArrayBufferView(e)?e.buffer:s.isURLSearchParams(e)?(r(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):s.isObject(e)?(r(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return e>=200&&e<300}};u.headers={common:{Accept:"application/json, text/plain, */*"}},s.forEach(["delete","get","head"],function(e){u.headers[e]={}}),s.forEach(["post","put","patch"],function(e){u.headers[e]=s.merge(a)}),e.exports=u},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t){r.forEach(e,function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])})}},function(e,t,n){"use strict";var r=n(2),o=n(14),s=n(6),i=n(17),a=n(18),u=n(15);e.exports=function(e){return new Promise(function(t,c){var f=e.data,p=e.headers;r.isFormData(f)&&delete p["Content-Type"];var d=new XMLHttpRequest;if(e.auth){var l=e.auth.username||"",h=e.auth.password||"";p.Authorization="Basic "+btoa(l+":"+h)}if(d.open(e.method.toUpperCase(),s(e.url,e.params,e.paramsSerializer),!0),d.timeout=e.timeout,d.onreadystatechange=function(){if(d&&4===d.readyState&&(0!==d.status||d.responseURL&&0===d.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in d?i(d.getAllResponseHeaders()):null,r=e.responseType&&"text"!==e.responseType?d.response:d.responseText,s={data:r,status:d.status,statusText:d.statusText,headers:n,config:e,request:d};o(t,c,s),d=null}},d.onabort=function(){d&&(c(u("Request aborted",e,"ECONNABORTED",d)),d=null)},d.onerror=function(){c(u("Network Error",e,null,d)),d=null},d.ontimeout=function(){c(u("timeout of "+e.timeout+"ms exceeded",e,"ECONNABORTED",d)),d=null},r.isStandardBrowserEnv()){var m=n(19),y=(e.withCredentials||a(e.url))&&e.xsrfCookieName?m.read(e.xsrfCookieName):void 0;y&&(p[e.xsrfHeaderName]=y)}if("setRequestHeader"in d&&r.forEach(p,function(e,t){"undefined"==typeof f&&"content-type"===t.toLowerCase()?delete p[t]:d.setRequestHeader(t,e)}),e.withCredentials&&(d.withCredentials=!0),e.responseType)try{d.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&d.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&d.upload&&d.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then(function(e){d&&(d.abort(),c(e),d=null)}),void 0===f&&(f=null),d.send(f)})}},function(e,t,n){"use strict";var r=n(15);e.exports=function(e,t,n){var o=n.config.validateStatus;!o||o(n.status)?e(n):t(r("Request failed with status code "+n.status,n.config,null,n.request,n))}},function(e,t,n){"use strict";var r=n(16);e.exports=function(e,t,n,o,s){var i=new Error(e);return r(i,t,n,o,s)}},function(e,t){"use strict";e.exports=function(e,t,n,r,o){return e.config=t,n&&(e.code=n),e.request=r,e.response=o,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},function(e,t,n){"use strict";var r=n(2),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,s,i={};return e?(r.forEach(e.split("\n"),function(e){if(s=e.indexOf(":"),t=r.trim(e.substr(0,s)).toLowerCase(),n=r.trim(e.substr(s+1)),t){if(i[t]&&o.indexOf(t)>=0)return;"set-cookie"===t?i[t]=(i[t]?i[t]:[]).concat([n]):i[t]=i[t]?i[t]+", "+n:n}}),i):i}},function(e,t,n){"use strict";var r=n(2);e.exports=r.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(n){var o=r.isString(n)?e(n):n;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t,n){"use strict";var r=n(2);e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,s,i){var a=[];a.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),r.isString(o)&&a.push("path="+o),r.isString(s)&&a.push("domain="+s),i===!0&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},function(e,t){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,t){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t){t=t||{};var n={};return r.forEach(["url","method","params","data"],function(e){"undefined"!=typeof t[e]&&(n[e]=t[e])}),r.forEach(["headers","auth","proxy"],function(o){r.isObject(t[o])?n[o]=r.deepMerge(e[o],t[o]):"undefined"!=typeof t[o]?n[o]=t[o]:r.isObject(e[o])?n[o]=r.deepMerge(e[o]):"undefined"!=typeof e[o]&&(n[o]=e[o])}),r.forEach(["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"],function(r){"undefined"!=typeof t[r]?n[r]=t[r]:"undefined"!=typeof e[r]&&(n[r]=e[r])}),n}},function(e,t){"use strict";function n(e){this.message=e}n.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},n.prototype.__CANCEL__=!0,e.exports=n},function(e,t,n){"use strict";function r(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(e){t=e});var n=this;e(function(e){n.reason||(n.reason=new o(e),t(n.reason))})}var o=n(23);r.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},r.source=function(){var e,t=new r(function(t){e=t});return{token:t,cancel:e}},e.exports=r},function(e,t){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}}])});
+//# sourceMappingURL=axios.min.map
\ No newline at end of file
diff --git a/js/index.js b/js/index.js
index b38ca74..5902d64 100644
--- a/js/index.js
+++ b/js/index.js
@@ -1,3 +1,8 @@
+// 提交问题
+// 切换头部分类
+// 转发的链接和title
+// 图片上传有一些错误
+
 Object.assign(window, Vue)
 const forumApp = Vue.createApp({
     setup() {
@@ -6,31 +11,53 @@ const forumApp = Vue.createApp({
         let type = ref('list') // list details
 
         onMounted(() => {
+            getUrlParams()
             getUserData()
             getList()
             getListClass()
             window.addEventListener('scroll', handleScroll);
 
             getHistoricalSearchList()
+
+
         })
 
         onUnmounted(() => {
             window.removeEventListener('scroll', handleScroll);
         });
 
+        let initParams = {}
+        // 获取url的参数
+        const getUrlParams = () => {
+            const params = {};
+            const regex = /[?&]([^=#]+)=([^&#]*)/g;
+            let match;
+
+            while ((match = regex.exec(window.location.href))) {
+                params[match[1]] = decodeURIComponent(match[2]);
+            }
+
+            initParams = params
+
+            if (params['uniqid']) getDetails(params['uniqid'])
+
+        }
+
+        // 获取当前url
+        const getCurrentUrl = () => {
+            return window.location.href;
+        }
+
+
         // 我的 数据 数量
         let myCount = ref({}) // 
 
         // 获取用户数据
         const getUserData = () => {
             $ajax("/api/user").then(res => {
-                console.log("res", res);
                 if (res.code != 200) return
-
                 let data = res.data
-                console.log(data, "data");
                 myCount.value = data.count
-
             })
         }
 
@@ -62,7 +89,8 @@ const forumApp = Vue.createApp({
             list.value = []
             type.value = 'list'
             pitchIndex.value = null
-
+            replaceState({ keyword: keyword.value })
+            searchBlur()
             getList()
         }
 
@@ -75,7 +103,7 @@ const forumApp = Vue.createApp({
 
         // 搜索失去焦点
         const searchBlur = () => {
-            setTimeout(() => historicalSearchState.value = false, 100)
+            setTimeout(() => historicalSearchState.value = false, 300)
         }
 
         // 点击历史记录 item
@@ -93,6 +121,8 @@ const forumApp = Vue.createApp({
             pitchIndex.value = null
 
             getList()
+
+            replaceState()
         }
 
         let historicalSearchState = ref(false) // 历史记录弹窗状态
@@ -114,6 +144,7 @@ const forumApp = Vue.createApp({
         }
 
         let keyword = ref('') // 搜索的值
+        let keywordText = ref('') // 搜索的文本
 
         let list = ref([]) // 列表数据
         let page = 1
@@ -125,13 +156,12 @@ const forumApp = Vue.createApp({
             if (page == 0 || loading) return
             loading = true
 
-            $ajax("/api/lists",
-                {
-                    page,
-                    limit: 20,
-                    keyword: keyword.value,
-                    // type: 'all',
-                }
+            $ajax("/api/lists", {
+                page,
+                limit: 20,
+                keyword: keyword.value,
+                type: typePitch.value,
+            }
             ).then(res => {
                 if (res.code != 200) return
 
@@ -140,8 +170,9 @@ const forumApp = Vue.createApp({
                 list.value = list.value.concat(data.data || [])
                 total.value = data.count || 0
 
-                if (list.value.length != data['count']) page++
-                else page = 0
+                keywordText.value = keyword.value || ''
+
+                page++
 
                 if (keyword.value) isSearchMode.value = true
                 else isSearchMode.value = false
@@ -151,35 +182,16 @@ const forumApp = Vue.createApp({
         }
 
         let typeList = ref([])
-        let typePitch = ref('')
+        let typePitch = ref(null)
 
         // 获取分类数据 列表分类
         const getListClass = () => {
             $ajax("/api/common/typeList").then(res => {
                 if (res.code != 200) return
                 let data = res.data
-                console.log(data, "data");
-                data = [{
-                    id: "all",
-                    name: "All",
-                }, {
-                    id: "all2",
-                    name: "All",
-                }, {
-                    id: "all3",
-                    name: "All",
-                }, {
-                    id: "all4",
-                    name: "All",
-                }, {
-                    id: "all5",
-                    name: "All",
-                }, {
-                    id: "all6",
-                    name: "All",
-                }]
                 typeList.value = data
-                typePitch.value = data[0].id
+
+                console.log("data", data);
 
                 getPageHeight()
             })
@@ -203,14 +215,12 @@ const forumApp = Vue.createApp({
         let detailShare = ref({}) // 详情信息
 
         // 获取详情
-        const getDetails = (uniqid, index) => {
-            uniqid = "fubm5CnD05qj"  // 标记一下
+        const getDetails = (uniqid, index, isOpenAnswer) => {
+            // uniqid = "fubm5CnD05qj"  // 标记一下
             $ajax("/api/details", { uniqid }).then(res => {
                 if (res.code != 200) return
                 let data = res.data
 
-                console.log("data", data);
-
                 detailsInfo.value = data['info'] || {}
                 detailsIsanswered.value = data['isanswered'] || 0
                 detailsIscollection.value = data['iscollection'] || 0
@@ -220,25 +230,68 @@ const forumApp = Vue.createApp({
 
                 type.value = 'details'
 
-                cut(index)
+                if (index !== null && index !== undefined) cut(index)
+                else {
+                    let targetList = [...list.value]
+                    let valve = false
+                    targetList.forEach((element, index) => {
+
+                        if (element['uniqid'] == uniqid) {
+                            cut(index)
+                            valve = true
+                        }
+                    })
+
+                    if (!valve) {
+                        list.value.unshift({
+                            answers: data.info['answers'],
+                            content: data.info['content'],
+                            publicationdate: data.info['publicationdate'],
+                            title: data.info['title'],
+                            uniqid,
+                        })
+                        cut(0)
+                    }
+
+                }
+
+                answerList.value = []
+                answerPage.value = 1
                 getAnswerList()
+
+                closeAllTransmitState()
+
+                if (isOpenAnswer) openIAnswer()
+
+                replaceState({ uniqid })
             })
         }
 
         let answerList = ref([]) // 回答列表数据
+        let answerPage = ref(1) // 回答列表页数
+        let answerLoading = false // 回答列表加载
 
         // 获取详情的回答数据
         const getAnswerList = () => {
-            $ajax("/api/details/answerList", { token: detailsToken }).then(res => {
+            if (answerLoading || answerPage.value == 0) return
+            answerLoading = true
+
+            $ajax("/api/details/answerList", { token: detailsToken, limit: 20, page: answerPage.value }).then(res => {
                 if (res.code != 200) return
                 let data = res.data
 
                 data.data.forEach(element => {
                     element['commentList'] = []
                 })
-                // commentList
-                answerList.value = data.data
-            })
+
+                answerList.value = answerList.value.concat(data.data)
+
+                if (answerList.value.length == data['count']) answerPage.value = 0
+                else answerPage.value++
+
+
+
+            }).finally(() => answerLoading = false)
         }
 
         // 操作 - 点赞
@@ -248,6 +301,7 @@ const forumApp = Vue.createApp({
                 let data = res.data
                 answerList.value[index]['islike'] = data['status']
                 answerList.value[index]['likenum'] = data['count']
+                handleMsg('success', res['message'] || '操作成功')
             })
         }
 
@@ -266,6 +320,12 @@ const forumApp = Vue.createApp({
                     answerList.value[index]['iscollection'] = data['status']
                     answerList.value[index]['collectionnum'] = data['count']
                 }
+
+                handleMsg('success', res['message'] || '操作成功')
+
+                if (data['status']) myCount.value['collect']++
+                else myCount.value['collect']--
+
             })
         }
 
@@ -314,6 +374,10 @@ const forumApp = Vue.createApp({
                 }
 
                 IAnswerEditState.value = true
+
+                nextTick(() => {
+                    handleInput()
+                })
             }
 
         }
@@ -341,12 +405,13 @@ const forumApp = Vue.createApp({
                 anonymous: IAnswerInfo.value['anonymous'] || 0,
                 content: IAnswerInfo.value['text'],
             }).then(res => {
-                console.log(res);
                 if (res.code == 200) {
                     getAnswerList()
                     closeIAnswer()
-
                     isNeedNewAnswersData = true
+                    handleMsg('success', res['message'] || '操作成功')
+
+                    if (!IAnswerInfo.value['token']) myCount.value['answer']++
                 } else {
 
                 }
@@ -385,6 +450,7 @@ const forumApp = Vue.createApp({
                 if (res.code != 200) return
                 let data = res.data
                 answerList.value[index]['commentList'] = answerList.value[index]['commentList'].concat(data.data.slice(3))
+                handleMsg('success', res['message'] || '操作成功')
             })
         }
 
@@ -394,6 +460,7 @@ const forumApp = Vue.createApp({
                 $ajax("/api/comment/lists", {
                     token: answerList.value[index]['token'],
                     limit: answerCommentLimit,
+                    childlimit: 1,
                 }).then(res => {
                     if (res.code != 200) return
                     resolve(res)
@@ -424,7 +491,6 @@ const forumApp = Vue.createApp({
                 token,
                 parentid,
             }).then(res => {
-                console.log("res", res);
                 if (res.code != 200) return
                 let data = res.data
 
@@ -469,6 +535,7 @@ const forumApp = Vue.createApp({
                 closeAnswerCommentsChild()
 
                 console.log("targetAnswerList", targetAnswerList);
+                handleMsg('success', res['message'] || '操作成功')
             })
         }
 
@@ -477,23 +544,22 @@ const forumApp = Vue.createApp({
             $ajax("/api/comment/like", {
                 token,
             }).then(res => {
-                console.log("res", res);
                 if (res.code != 200) return
 
                 let data = res.data
-                console.log("data", data);
                 const targetAnswerList = [...answerList.value]
 
                 if (i == null) {
-
                     targetAnswerList[index]['commentList'][ind]['islike'] = data['status']
                     targetAnswerList[index]['commentList'][ind]['likenum'] = data['likenum']
-
                 } else {
                     targetAnswerList[index]['commentList'][ind]['child'][i]['islike'] = data['status']
                     targetAnswerList[index]['commentList'][ind]['child'][i]['likenum'] = data['likenum']
                 }
                 answerList.value = targetAnswerList
+
+                handleMsg('success', res['message'] || '操作成功')
+
             })
         }
 
@@ -542,6 +608,7 @@ const forumApp = Vue.createApp({
                 parentid,
                 limit: 20,
                 page: 1,
+                childlimit: 1,
             }).then(res => {
                 console.log("res", res);
                 if (res.code != 200) return
@@ -568,10 +635,12 @@ const forumApp = Vue.createApp({
                 getMyAnswer()
                 return
             } else if (key == 'questions') {
+                myQuestionsList.value = []
+                myQuestionsPage = 1
                 getMyQuestions()
                 return
             }
-            myType.value = key
+            // myType.value = key
         }
 
         let myCollectionList = ref([])  // 我的收藏列表
@@ -591,9 +660,9 @@ const forumApp = Vue.createApp({
 
                 myCollectionList.value = myCollectionList.value.concat(data.data)
                 myCollectionCount.value = data.count
+
                 if (myCollectionList.value.length != data['count']) myCollectionPage++
                 else myCollectionPage = 0
-
             })
         }
 
@@ -603,6 +672,8 @@ const forumApp = Vue.createApp({
                 if (res.code == 200) {
                     myCollectionList.value.splice(index, 1)
                     myCollectionCount.value--
+                    myCount.value['collect']--
+                    handleMsg('success', res['message'] || '操作成功')
                 }
             })
         }
@@ -639,13 +710,13 @@ const forumApp = Vue.createApp({
                 if (myAnswerList.value.length != data['count']) myAnswerPage++
                 else myAnswerPage = 0
 
-                console.log("myAnswerList", myAnswerList.value);
                 myType.value = 'answers'
                 isNeedNewAnswersData = false
 
             })
         }
 
+        // 我的回答 的滚动到底部事件
         const handleAnswersScroll = e => {
             const el = e.target;
             // 判断滚动到底部
@@ -675,22 +746,67 @@ const forumApp = Vue.createApp({
                 let data = res.data
                 myAnswerList.value[index]['anonymous'] = anonymous
                 cutAnswerPopupState(index)
+                handleMsg('success', res['message'] || '操作成功')
             })
         }
 
         let myQuestionsList = ref([]) // 我的提问数据
         let myQuestionsCount = ref(0) // 我的提问数量
+        let myQuestionsPage = 0 // 我的提问页数
         // 获取我的提问
         const getMyQuestions = () => {
-            $ajax("/api/user/questions").then(res => {
+            if (myQuestionsPage == 0) return
+            $ajax("/api/user/questions", {
+                limit: 20,
+                page: myQuestionsPage,
+            }).then(res => {
                 if (res.code != 200) return
                 let data = res.data
                 myQuestionsList.value = myQuestionsList.value.concat(data.data)
                 myQuestionsCount.value = data.count
                 myType.value = 'questions'
+
+                if (myQuestionsList.value.length != data['count']) myQuestionsPage++
+                else myQuestionsPage = 0
+
             })
         }
 
+        // 我的提问 的滚动到底部 事件
+        const handleQuestionsScroll = e => {
+            const el = e.target;
+            // 判断滚动到底部
+            if (el.scrollHeight - el.scrollTop !== el.clientHeight) return
+            getMyQuestions()
+        }
+
+        let questionsIndexOld = null
+        // 切换 我的提问的公开匿名 弹窗状态
+        const cutQuestionsPopupState = index => {
+            myQuestionsList.value[index]['popupState'] = true
+
+            if (questionsIndexOld == index) {
+                myQuestionsList.value[index]['popupState'] = false
+                questionsIndexOld = null
+            } else {
+                myQuestionsList.value[index]['popupState'] = true
+                if (questionsIndexOld != null) myQuestionsList.value[questionsIndexOld]['popupState'] = false
+                questionsIndexOld = index
+            }
+        }
+
+        // 更改匿名状态
+        const changeAnonymousQuestions = (token, anonymous, index) => {
+            $ajax("/api/publish/changeAnonymous", { token, anonymous }).then(res => {
+                if (res.code != 200) return
+                let data = res.data
+                myQuestionsList.value[index]['anonymous'] = anonymous
+                cutQuestionsPopupState(index)
+                handleMsg('success', res['message'] || '操作成功')
+            })
+        }
+
+
         let questionsSetp = ref(0) // 提问的步骤
 
         // 切换提问步骤
@@ -716,6 +832,7 @@ const forumApp = Vue.createApp({
                 questionsObj.value['token'] = data['token']
 
                 questionsTypeList.value = data['typeList'] || []
+                console.log("data['typeList']", data['typeList']);
                 cutQuestionsSetp(1)
             })
         }
@@ -733,15 +850,23 @@ const forumApp = Vue.createApp({
 
         // 发布问题
         const postingIssue = () => {
+            // 还没有分类
             console.log("发布问题", questionsObj.value);
 
             $ajax("/api/publish/questionsSubmit", questionsObj.value).then(res => {
                 console.log("res", res);
+
+                myCount.value['questions']++
+                if (res.code == 200) {
+                    handleMsg('success', res['message'] || '操作成功')
+                }
+                handleMsg('error', res['message'] || '刷新重试!!!')
             })
         }
 
 
         let pitchIndex = ref(null) // 选中的下标
+        // 切换 滚动列表
         const cut = index => {
             // if (pitchIndex.value == null) type.value = type.value == 'list' ? 'details' : 'list'
 
@@ -754,12 +879,10 @@ const forumApp = Vue.createApp({
 
         // 滚动左边在中间
         const scrollLeftInMiddle = () => {
-            // console.log(pitchIndex.value, "pitchIndex");
             let list = document.querySelector(".list-box")
-            // console.log("list", list);
-            console.log(107 * pitchIndex.value, pageListHeight.value / 2);
             list.scrollTo({
-                top: 128 * pitchIndex.value + 64 - 385,
+                // top: 128 * pitchIndex.value -  pageListHeight.value / 2 - 385,
+                top: 128 * pitchIndex.value + 68 - pageListHeight.value / 2,
                 behavior: 'smooth'
             })
         }
@@ -783,7 +906,6 @@ const forumApp = Vue.createApp({
 
         const itemStyle = (index, content) => {
             const newtype = type.value
-            // pitchIndex
             // let itemHeight = content == "" ? 106 : 128
             let obj = {}
             if (newtype == 'list') {
@@ -816,6 +938,7 @@ const forumApp = Vue.createApp({
             return obj
         }
 
+
         const $ajax = (url, data) => {
             url = url.indexOf('//') > -1 ? url : baseURL + url;
             return new Promise(function (resolve, reject) {
@@ -824,15 +947,20 @@ const forumApp = Vue.createApp({
                     withCredentials: true,
                     headers: {
                         // authorization: "9l3vfdx6h5xhu2hbw4fv5ygbog1dhtly"
-                        authorization: "194cdc367ed40c938f2eaaf1c6dfa5ff"
+                        // authorization: "194cdc367ed40c938f2eaaf1c6dfa5ff"
+                        authorization: "63c9bef150557f9c90e93f98d2e2497e"
                     }
                 }).then(function (res) {
                     var data = null
                     try {
                         data = typeof res.data == 'string' ? JSON.parse(res.data) : res.data;
+
+                        if (data['code'] != 200) handleMsg('error', data['message'] || '报错了,请重试!!!')
                     } catch (error) { }
                     resolve(data)
-                });
+                }).catch(err => {
+                    if (err.response.status == 401) window.location.href = 'https://passport.gter.net';
+                })
             });
         }
 
@@ -868,34 +996,50 @@ const forumApp = Vue.createApp({
             return result;
         }
 
-        // 问题的转发 弹窗状态
-        let questionsTransmitState = ref(false)
+        let questionsTransmitState = ref(false)  // 问题的转发 弹窗状态
+        let questionsTransmitMaskState = ref(false) // 问题的转发 弹窗蒙版状态状态
 
         // 关闭转发状态
         const closeTransmitState = () => {
+            questionsTransmitState.value = true
+            questionsTransmitMaskState.value = true
+            countForwardingTimes(detailsToken)
+        }
+
+        // 关闭全部转发状态
+        const closeAllTransmitState = () => {
             answerList.value.forEach(element => {
                 element['transmitState'] = false
             })
-            questionsTransmitState.value = !questionsTransmitState.value
+            questionsTransmitState.value = false
+            questionsTransmitMaskState.value = false
         }
 
         // 开启和关闭回答的转发状态  type open close
         const handleAnswerTransmitList = (Iindex, type) => {
-            // handleAnswerTransmitList
-            questionsTransmitState.value = false
+            answerList.value[Iindex]['transmitState'] = true
+            questionsTransmitMaskState.value = true
+            countForwardingTimes(answerList.value[Iindex]['token'])
+        }
 
-            answerList.value.forEach((element, index) => {
-                if (index != Iindex) element['transmitState'] = false
+        // 统计转发次数
+        const countForwardingTimes = (token) => {
+            console.log("token", token);
+
+            // return
+            $ajax("/api/operate/share", { token }).then(res => {
+                console.log("res", res);
             })
-            answerList.value[Iindex]['transmitState'] = !answerList.value[Iindex]['transmitState']
         }
 
         // 关闭详情模式
         const closeDetailMode = () => {
             type.value = 'list'
             pitchIndex.value = null
+            replaceState()
         }
 
+        // 全部的启动到底部
         const handleListScroll = (e) => {
             const el = e.target;
             // 判断滚动到底部
@@ -908,37 +1052,173 @@ const forumApp = Vue.createApp({
         const handlePaste = (event) => {
             const items = (event.clipboardData || event.originalEvent.clipboardData).items;
             for (const item of items) {
+                console.log(item);
                 if (item.type.indexOf('image') === 0) {
                     const file = item.getAsFile();
                     const reader = new FileReader();
                     reader.onload = (e) => {
-                        const img = new Image();
-                        img.src = e.target.result;
-
-                        const questionTextarea = document.querySelector(".question-textarea")
-                        questionTextarea.appendChild(img);
-                        handleInput()
-                        // IAnswerInfo.value['text'] = questionTextarea.innerHTML
+                        const base64 = e.target.result
+                        // console.log("base64", base64);
+                        uploadImg(base64).then(res => {
+                            const questionTextarea = document.querySelector(".question-textarea")
+                            const imgElements = questionTextarea.querySelectorAll("img");
+                            // console.log("imgElements1111", imgElements);
+                            if (imgElements.length == 0) {
+                                questionTextarea.innerHTML += `<img 1 src="${res.url}" data-aid="${res.aid}" />`
+                                handleInput()
+                            } else {
+                                imgElements.forEach(img => {
+                                    // console.log("src", img.getAttribute("src"));
+                                    // if (img.getAttribute("src") == base64) {
+                                    if (img.getAttribute("data-aid") == null && img.getAttribute('data-custom') == null) {
+                                        img.setAttribute("src", res.url);
+                                        img.setAttribute("data-aid", res.aid);
+                                    }
+                                });
+                            }
 
+                        })
                     };
                     reader.readAsDataURL(file);
                 }
             }
         }
+        // 上传图片 获取图片url
+        const uploadImg = (base64) => {
+            return new Promise((resolve, reject) => {
+                $ajax("/api/common/upload", { data: base64 }).then(res => {
+                    if (res.code != 200) return
+                    let data = res.data
+                    resolve(data)
+                })
+            })
 
+        }
+
+        // 回答 的 placeholder 状态
         let questionPlaceholderState = ref(false)
 
+        // 回答的输入事件 判断是否显示 placeholder 用
         const handleInput = (event) => {
             // IAnswerInfo.value['text'] = event.target.innerHTML;
             const questionTextarea = document.querySelector(".question-textarea")
             const html = questionTextarea.innerHTML
             if (html) questionPlaceholderState.value = false
             else questionPlaceholderState.value = true
-            console.log("questionPlaceholderState", questionPlaceholderState);
         }
 
 
+        let msg = ref({}) // 提示文本的对象 state 类型 type  success warning error 显示状态 text 内容
+
+        // 调用 提示框方法
+        const handleMsg = (type, text) => {
+            msg.value['state'] = true
+            msg.value['type'] = type
+            msg.value['text'] = text
+        }
+
+        // 修改提示框类型
+        const boxClass = () => {
+            msgShowTimer()
+            return type ? `box-item-${msg.value['type']}` : ''
+        }
+
+        let msgTimer = null
+        const msgShowTimer = () => {
+            clearTimeout(msgTimer)
+            msgTimer = setTimeout(() => {
+                msg.value['state'] = false
+            }, 1000)
+        }
+
+        // 复制
+        let copyText = text => {
+            if (navigator.clipboard) {
+                copyText = () => {
+                    navigator.clipboard.writeText(text)
+                    handleMsg('success', '复制成功')
+                }
+            } else {
+                copyText = () => {
+                    var tempInput = document.createElement("input")
+                    tempInput.value = text
+                    document.body.appendChild(tempInput)
+                    tempInput.select()
+                    document.execCommand("copy")
+                    document.body.removeChild(tempInput)
+                    handleMsg('success', '复制成功')
+
+                }
+            }
+            copyText()
+        }
+
+        // 修改 url
+        const replaceState = (obj = {}) => {
+            // 获取当前URL参数
+            let params = new URLSearchParams(window.location.search);
+
+            // 循环删除所有参数
+            for (let key of params.keys()) {
+                params.delete(key);
+            }
+            // 修改URL参数
+            // params.set('paramName', 'paramValue');
+            for (const key in obj) {
+                params.set(key, obj[key]);
+            }
+
+            // 替换当前URL,但不刷新页面
+            window.history.replaceState({}, '', `${window.location.pathname}?${params}`);
+        }
+
+        // 我的打开 详情
+        const myOpenDetails = (value) => {
+            getDetails(value['uniqid'])
+            myType.value = ""
+        }
+
+
+        // 详情页滚动事件
+        const handleDetailsScroll = e => {
+            // console.log("e", e);
+            const el = e.target;
+            // 判断滚动到底部
+            if (el.scrollHeight - el.scrollTop !== el.clientHeight) return
+            // console.log("底部");
+            getAnswerList()
+        }
+
+        let dialogSrc = ref("")   // 大图的src
+
+        // 处理点击答案图片 展开大图
+        const handleAnswerText = e => {
+            if (e.target.tagName === 'IMG') {
+                var src = e.target.getAttribute('src');
+                dialogSrc.value = src
+            }
+        }
+
+
+        // 切换顶部的 type 
+        const cutType = (id) => {
+            typePitch.value = id
+            page = 1
+            list.value = []
+            type.value = 'list'
+            getList()
+        }
+
+
+
         return {
+            cutType,
+            dialogSrc,
+            answerPage,
+            handleDetailsScroll,
+            replaceState,
+            copyText,
+            boxClass,
             questionPlaceholderState,
             handleInput,
             handlePaste,
@@ -951,6 +1231,7 @@ const forumApp = Vue.createApp({
             cut,
             list,
             keyword,
+            keywordText,
             getList,
             total,
             typeList,
@@ -989,20 +1270,25 @@ const forumApp = Vue.createApp({
             handleDate,
             handleCollectionScroll,
             handleAnswersScroll,
+            handleQuestionsScroll,
             cancelCollection,
             getMyCollection,
             questionsSetp,
             questionsObj,
             cutAnonymous,
             cutQuestionsSetp,
+            cutQuestionsPopupState,
             questionsTypeList,
             postingIssue,
             choosingTheme,
             handleMy,
             changeAnonymous,
+            changeAnonymousQuestions,
             pageHeaderHeight,
             pageListHeight,
             questionsTransmitState,
+            questionsTransmitMaskState,
+            closeAllTransmitState,
             closeTransmitState,
             handleAnswerTransmitList,
             closeDetailMode,
@@ -1017,9 +1303,15 @@ const forumApp = Vue.createApp({
             handleClickClear,
             isSearchMode,
             questionsInit,
+            myCount,
+            msg,
+            myOpenDetails,
+            handleAnswerText,
+            getCurrentUrl
         };
 
     }
 })
 
+
 forumApp.mount("#answer-app"); //初始化
\ No newline at end of file
diff --git a/js/vue.js b/js/vue.js
new file mode 100644
index 0000000..d800532
--- /dev/null
+++ b/js/vue.js
@@ -0,0 +1,12014 @@
+/*!
+ * Vue.js v2.6.14
+ * (c) 2014-2021 Evan You
+ * Released under the MIT License.
+ */
+(function (global, factory) {
+  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+  typeof define === 'function' && define.amd ? define(factory) :
+  (global = global || self, global.Vue = factory());
+}(this, function () { 'use strict';
+
+  /*  */
+
+  var emptyObject = Object.freeze({});
+
+  // These helpers produce better VM code in JS engines due to their
+  // explicitness and function inlining.
+  function isUndef (v) {
+    return v === undefined || v === null
+  }
+
+  function isDef (v) {
+    return v !== undefined && v !== null
+  }
+
+  function isTrue (v) {
+    return v === true
+  }
+
+  function isFalse (v) {
+    return v === false
+  }
+
+  /**
+   * Check if value is primitive.
+   */
+  function isPrimitive (value) {
+    return (
+      typeof value === 'string' ||
+      typeof value === 'number' ||
+      // $flow-disable-line
+      typeof value === 'symbol' ||
+      typeof value === 'boolean'
+    )
+  }
+
+  /**
+   * Quick object check - this is primarily used to tell
+   * Objects from primitive values when we know the value
+   * is a JSON-compliant type.
+   */
+  function isObject (obj) {
+    return obj !== null && typeof obj === 'object'
+  }
+
+  /**
+   * Get the raw type string of a value, e.g., [object Object].
+   */
+  var _toString = Object.prototype.toString;
+
+  function toRawType (value) {
+    return _toString.call(value).slice(8, -1)
+  }
+
+  /**
+   * Strict object type check. Only returns true
+   * for plain JavaScript objects.
+   */
+  function isPlainObject (obj) {
+    return _toString.call(obj) === '[object Object]'
+  }
+
+  function isRegExp (v) {
+    return _toString.call(v) === '[object RegExp]'
+  }
+
+  /**
+   * Check if val is a valid array index.
+   */
+  function isValidArrayIndex (val) {
+    var n = parseFloat(String(val));
+    return n >= 0 && Math.floor(n) === n && isFinite(val)
+  }
+
+  function isPromise (val) {
+    return (
+      isDef(val) &&
+      typeof val.then === 'function' &&
+      typeof val.catch === 'function'
+    )
+  }
+
+  /**
+   * Convert a value to a string that is actually rendered.
+   */
+  function toString (val) {
+    return val == null
+      ? ''
+      : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)
+        ? JSON.stringify(val, null, 2)
+        : String(val)
+  }
+
+  /**
+   * Convert an input value to a number for persistence.
+   * If the conversion fails, return original string.
+   */
+  function toNumber (val) {
+    var n = parseFloat(val);
+    return isNaN(n) ? val : n
+  }
+
+  /**
+   * Make a map and return a function for checking if a key
+   * is in that map.
+   */
+  function makeMap (
+    str,
+    expectsLowerCase
+  ) {
+    var map = Object.create(null);
+    var list = str.split(',');
+    for (var i = 0; i < list.length; i++) {
+      map[list[i]] = true;
+    }
+    return expectsLowerCase
+      ? function (val) { return map[val.toLowerCase()]; }
+      : function (val) { return map[val]; }
+  }
+
+  /**
+   * Check if a tag is a built-in tag.
+   */
+  var isBuiltInTag = makeMap('slot,component', true);
+
+  /**
+   * Check if an attribute is a reserved attribute.
+   */
+  var isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');
+
+  /**
+   * Remove an item from an array.
+   */
+  function remove (arr, item) {
+    if (arr.length) {
+      var index = arr.indexOf(item);
+      if (index > -1) {
+        return arr.splice(index, 1)
+      }
+    }
+  }
+
+  /**
+   * Check whether an object has the property.
+   */
+  var hasOwnProperty = Object.prototype.hasOwnProperty;
+  function hasOwn (obj, key) {
+    return hasOwnProperty.call(obj, key)
+  }
+
+  /**
+   * Create a cached version of a pure function.
+   */
+  function cached (fn) {
+    var cache = Object.create(null);
+    return (function cachedFn (str) {
+      var hit = cache[str];
+      return hit || (cache[str] = fn(str))
+    })
+  }
+
+  /**
+   * Camelize a hyphen-delimited string.
+   */
+  var camelizeRE = /-(\w)/g;
+  var camelize = cached(function (str) {
+    return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })
+  });
+
+  /**
+   * Capitalize a string.
+   */
+  var capitalize = cached(function (str) {
+    return str.charAt(0).toUpperCase() + str.slice(1)
+  });
+
+  /**
+   * Hyphenate a camelCase string.
+   */
+  var hyphenateRE = /\B([A-Z])/g;
+  var hyphenate = cached(function (str) {
+    return str.replace(hyphenateRE, '-$1').toLowerCase()
+  });
+
+  /**
+   * Simple bind polyfill for environments that do not support it,
+   * e.g., PhantomJS 1.x. Technically, we don't need this anymore
+   * since native bind is now performant enough in most browsers.
+   * But removing it would mean breaking code that was able to run in
+   * PhantomJS 1.x, so this must be kept for backward compatibility.
+   */
+
+  /* istanbul ignore next */
+  function polyfillBind (fn, ctx) {
+    function boundFn (a) {
+      var l = arguments.length;
+      return l
+        ? l > 1
+          ? fn.apply(ctx, arguments)
+          : fn.call(ctx, a)
+        : fn.call(ctx)
+    }
+
+    boundFn._length = fn.length;
+    return boundFn
+  }
+
+  function nativeBind (fn, ctx) {
+    return fn.bind(ctx)
+  }
+
+  var bind = Function.prototype.bind
+    ? nativeBind
+    : polyfillBind;
+
+  /**
+   * Convert an Array-like object to a real Array.
+   */
+  function toArray (list, start) {
+    start = start || 0;
+    var i = list.length - start;
+    var ret = new Array(i);
+    while (i--) {
+      ret[i] = list[i + start];
+    }
+    return ret
+  }
+
+  /**
+   * Mix properties into target object.
+   */
+  function extend (to, _from) {
+    for (var key in _from) {
+      to[key] = _from[key];
+    }
+    return to
+  }
+
+  /**
+   * Merge an Array of Objects into a single Object.
+   */
+  function toObject (arr) {
+    var res = {};
+    for (var i = 0; i < arr.length; i++) {
+      if (arr[i]) {
+        extend(res, arr[i]);
+      }
+    }
+    return res
+  }
+
+  /* eslint-disable no-unused-vars */
+
+  /**
+   * Perform no operation.
+   * Stubbing args to make Flow happy without leaving useless transpiled code
+   * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).
+   */
+  function noop (a, b, c) {}
+
+  /**
+   * Always return false.
+   */
+  var no = function (a, b, c) { return false; };
+
+  /* eslint-enable no-unused-vars */
+
+  /**
+   * Return the same value.
+   */
+  var identity = function (_) { return _; };
+
+  /**
+   * Generate a string containing static keys from compiler modules.
+   */
+  function genStaticKeys (modules) {
+    return modules.reduce(function (keys, m) {
+      return keys.concat(m.staticKeys || [])
+    }, []).join(',')
+  }
+
+  /**
+   * Check if two values are loosely equal - that is,
+   * if they are plain objects, do they have the same shape?
+   */
+  function looseEqual (a, b) {
+    if (a === b) { return true }
+    var isObjectA = isObject(a);
+    var isObjectB = isObject(b);
+    if (isObjectA && isObjectB) {
+      try {
+        var isArrayA = Array.isArray(a);
+        var isArrayB = Array.isArray(b);
+        if (isArrayA && isArrayB) {
+          return a.length === b.length && a.every(function (e, i) {
+            return looseEqual(e, b[i])
+          })
+        } else if (a instanceof Date && b instanceof Date) {
+          return a.getTime() === b.getTime()
+        } else if (!isArrayA && !isArrayB) {
+          var keysA = Object.keys(a);
+          var keysB = Object.keys(b);
+          return keysA.length === keysB.length && keysA.every(function (key) {
+            return looseEqual(a[key], b[key])
+          })
+        } else {
+          /* istanbul ignore next */
+          return false
+        }
+      } catch (e) {
+        /* istanbul ignore next */
+        return false
+      }
+    } else if (!isObjectA && !isObjectB) {
+      return String(a) === String(b)
+    } else {
+      return false
+    }
+  }
+
+  /**
+   * Return the first index at which a loosely equal value can be
+   * found in the array (if value is a plain object, the array must
+   * contain an object of the same shape), or -1 if it is not present.
+   */
+  function looseIndexOf (arr, val) {
+    for (var i = 0; i < arr.length; i++) {
+      if (looseEqual(arr[i], val)) { return i }
+    }
+    return -1
+  }
+
+  /**
+   * Ensure a function is called only once.
+   */
+  function once (fn) {
+    var called = false;
+    return function () {
+      if (!called) {
+        called = true;
+        fn.apply(this, arguments);
+      }
+    }
+  }
+
+  var SSR_ATTR = 'data-server-rendered';
+
+  var ASSET_TYPES = [
+    'component',
+    'directive',
+    'filter'
+  ];
+
+  var LIFECYCLE_HOOKS = [
+    'beforeCreate',
+    'created',
+    'beforeMount',
+    'mounted',
+    'beforeUpdate',
+    'updated',
+    'beforeDestroy',
+    'destroyed',
+    'activated',
+    'deactivated',
+    'errorCaptured',
+    'serverPrefetch'
+  ];
+
+  /*  */
+
+
+
+  var config = ({
+    /**
+     * Option merge strategies (used in core/util/options)
+     */
+    // $flow-disable-line
+    optionMergeStrategies: Object.create(null),
+
+    /**
+     * Whether to suppress warnings.
+     */
+    silent: false,
+
+    /**
+     * Show production mode tip message on boot?
+     */
+    productionTip: "development" !== 'production',
+
+    /**
+     * Whether to enable devtools
+     */
+    devtools: "development" !== 'production',
+
+    /**
+     * Whether to record perf
+     */
+    performance: false,
+
+    /**
+     * Error handler for watcher errors
+     */
+    errorHandler: null,
+
+    /**
+     * Warn handler for watcher warns
+     */
+    warnHandler: null,
+
+    /**
+     * Ignore certain custom elements
+     */
+    ignoredElements: [],
+
+    /**
+     * Custom user key aliases for v-on
+     */
+    // $flow-disable-line
+    keyCodes: Object.create(null),
+
+    /**
+     * Check if a tag is reserved so that it cannot be registered as a
+     * component. This is platform-dependent and may be overwritten.
+     */
+    isReservedTag: no,
+
+    /**
+     * Check if an attribute is reserved so that it cannot be used as a component
+     * prop. This is platform-dependent and may be overwritten.
+     */
+    isReservedAttr: no,
+
+    /**
+     * Check if a tag is an unknown element.
+     * Platform-dependent.
+     */
+    isUnknownElement: no,
+
+    /**
+     * Get the namespace of an element
+     */
+    getTagNamespace: noop,
+
+    /**
+     * Parse the real tag name for the specific platform.
+     */
+    parsePlatformTagName: identity,
+
+    /**
+     * Check if an attribute must be bound using property, e.g. value
+     * Platform-dependent.
+     */
+    mustUseProp: no,
+
+    /**
+     * Perform updates asynchronously. Intended to be used by Vue Test Utils
+     * This will significantly reduce performance if set to false.
+     */
+    async: true,
+
+    /**
+     * Exposed for legacy reasons
+     */
+    _lifecycleHooks: LIFECYCLE_HOOKS
+  });
+
+  /*  */
+
+  /**
+   * unicode letters used for parsing html tags, component names and property paths.
+   * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname
+   * skipping \u10000-\uEFFFF due to it freezing up PhantomJS
+   */
+  var unicodeRegExp = /a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/;
+
+  /**
+   * Check if a string starts with $ or _
+   */
+  function isReserved (str) {
+    var c = (str + '').charCodeAt(0);
+    return c === 0x24 || c === 0x5F
+  }
+
+  /**
+   * Define a property.
+   */
+  function def (obj, key, val, enumerable) {
+    Object.defineProperty(obj, key, {
+      value: val,
+      enumerable: !!enumerable,
+      writable: true,
+      configurable: true
+    });
+  }
+
+  /**
+   * Parse simple path.
+   */
+  var bailRE = new RegExp(("[^" + (unicodeRegExp.source) + ".$_\\d]"));
+  function parsePath (path) {
+    if (bailRE.test(path)) {
+      return
+    }
+    var segments = path.split('.');
+    return function (obj) {
+      for (var i = 0; i < segments.length; i++) {
+        if (!obj) { return }
+        obj = obj[segments[i]];
+      }
+      return obj
+    }
+  }
+
+  /*  */
+
+  // can we use __proto__?
+  var hasProto = '__proto__' in {};
+
+  // Browser environment sniffing
+  var inBrowser = typeof window !== 'undefined';
+  var inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;
+  var weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();
+  var UA = inBrowser && window.navigator.userAgent.toLowerCase();
+  var isIE = UA && /msie|trident/.test(UA);
+  var isIE9 = UA && UA.indexOf('msie 9.0') > 0;
+  var isEdge = UA && UA.indexOf('edge/') > 0;
+  var isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');
+  var isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');
+  var isChrome = UA && /chrome\/\d+/.test(UA) && !isEdge;
+  var isPhantomJS = UA && /phantomjs/.test(UA);
+  var isFF = UA && UA.match(/firefox\/(\d+)/);
+
+  // Firefox has a "watch" function on Object.prototype...
+  var nativeWatch = ({}).watch;
+
+  var supportsPassive = false;
+  if (inBrowser) {
+    try {
+      var opts = {};
+      Object.defineProperty(opts, 'passive', ({
+        get: function get () {
+          /* istanbul ignore next */
+          supportsPassive = true;
+        }
+      })); // https://github.com/facebook/flow/issues/285
+      window.addEventListener('test-passive', null, opts);
+    } catch (e) {}
+  }
+
+  // this needs to be lazy-evaled because vue may be required before
+  // vue-server-renderer can set VUE_ENV
+  var _isServer;
+  var isServerRendering = function () {
+    if (_isServer === undefined) {
+      /* istanbul ignore if */
+      if (!inBrowser && !inWeex && typeof global !== 'undefined') {
+        // detect presence of vue-server-renderer and avoid
+        // Webpack shimming the process
+        _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';
+      } else {
+        _isServer = false;
+      }
+    }
+    return _isServer
+  };
+
+  // detect devtools
+  var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;
+
+  /* istanbul ignore next */
+  function isNative (Ctor) {
+    return typeof Ctor === 'function' && /native code/.test(Ctor.toString())
+  }
+
+  var hasSymbol =
+    typeof Symbol !== 'undefined' && isNative(Symbol) &&
+    typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);
+
+  var _Set;
+  /* istanbul ignore if */ // $flow-disable-line
+  if (typeof Set !== 'undefined' && isNative(Set)) {
+    // use native Set when available.
+    _Set = Set;
+  } else {
+    // a non-standard Set polyfill that only works with primitive keys.
+    _Set = /*@__PURE__*/(function () {
+      function Set () {
+        this.set = Object.create(null);
+      }
+      Set.prototype.has = function has (key) {
+        return this.set[key] === true
+      };
+      Set.prototype.add = function add (key) {
+        this.set[key] = true;
+      };
+      Set.prototype.clear = function clear () {
+        this.set = Object.create(null);
+      };
+
+      return Set;
+    }());
+  }
+
+  /*  */
+
+  var warn = noop;
+  var tip = noop;
+  var generateComponentTrace = (noop); // work around flow check
+  var formatComponentName = (noop);
+
+  {
+    var hasConsole = typeof console !== 'undefined';
+    var classifyRE = /(?:^|[-_])(\w)/g;
+    var classify = function (str) { return str
+      .replace(classifyRE, function (c) { return c.toUpperCase(); })
+      .replace(/[-_]/g, ''); };
+
+    warn = function (msg, vm) {
+      var trace = vm ? generateComponentTrace(vm) : '';
+
+      if (config.warnHandler) {
+        config.warnHandler.call(null, msg, vm, trace);
+      } else if (hasConsole && (!config.silent)) {
+        console.error(("[Vue warn]: " + msg + trace));
+      }
+    };
+
+    tip = function (msg, vm) {
+      if (hasConsole && (!config.silent)) {
+        console.warn("[Vue tip]: " + msg + (
+          vm ? generateComponentTrace(vm) : ''
+        ));
+      }
+    };
+
+    formatComponentName = function (vm, includeFile) {
+      if (vm.$root === vm) {
+        return '<Root>'
+      }
+      var options = typeof vm === 'function' && vm.cid != null
+        ? vm.options
+        : vm._isVue
+          ? vm.$options || vm.constructor.options
+          : vm;
+      var name = options.name || options._componentTag;
+      var file = options.__file;
+      if (!name && file) {
+        var match = file.match(/([^/\\]+)\.vue$/);
+        name = match && match[1];
+      }
+
+      return (
+        (name ? ("<" + (classify(name)) + ">") : "<Anonymous>") +
+        (file && includeFile !== false ? (" at " + file) : '')
+      )
+    };
+
+    var repeat = function (str, n) {
+      var res = '';
+      while (n) {
+        if (n % 2 === 1) { res += str; }
+        if (n > 1) { str += str; }
+        n >>= 1;
+      }
+      return res
+    };
+
+    generateComponentTrace = function (vm) {
+      if (vm._isVue && vm.$parent) {
+        var tree = [];
+        var currentRecursiveSequence = 0;
+        while (vm) {
+          if (tree.length > 0) {
+            var last = tree[tree.length - 1];
+            if (last.constructor === vm.constructor) {
+              currentRecursiveSequence++;
+              vm = vm.$parent;
+              continue
+            } else if (currentRecursiveSequence > 0) {
+              tree[tree.length - 1] = [last, currentRecursiveSequence];
+              currentRecursiveSequence = 0;
+            }
+          }
+          tree.push(vm);
+          vm = vm.$parent;
+        }
+        return '\n\nfound in\n\n' + tree
+          .map(function (vm, i) { return ("" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)
+              ? ((formatComponentName(vm[0])) + "... (" + (vm[1]) + " recursive calls)")
+              : formatComponentName(vm))); })
+          .join('\n')
+      } else {
+        return ("\n\n(found in " + (formatComponentName(vm)) + ")")
+      }
+    };
+  }
+
+  /*  */
+
+  var uid = 0;
+
+  /**
+   * A dep is an observable that can have multiple
+   * directives subscribing to it.
+   */
+  var Dep = function Dep () {
+    this.id = uid++;
+    this.subs = [];
+  };
+
+  Dep.prototype.addSub = function addSub (sub) {
+    this.subs.push(sub);
+  };
+
+  Dep.prototype.removeSub = function removeSub (sub) {
+    remove(this.subs, sub);
+  };
+
+  Dep.prototype.depend = function depend () {
+    if (Dep.target) {
+      Dep.target.addDep(this);
+    }
+  };
+
+  Dep.prototype.notify = function notify () {
+    // stabilize the subscriber list first
+    var subs = this.subs.slice();
+    if (!config.async) {
+      // subs aren't sorted in scheduler if not running async
+      // we need to sort them now to make sure they fire in correct
+      // order
+      subs.sort(function (a, b) { return a.id - b.id; });
+    }
+    for (var i = 0, l = subs.length; i < l; i++) {
+      subs[i].update();
+    }
+  };
+
+  // The current target watcher being evaluated.
+  // This is globally unique because only one watcher
+  // can be evaluated at a time.
+  Dep.target = null;
+  var targetStack = [];
+
+  function pushTarget (target) {
+    targetStack.push(target);
+    Dep.target = target;
+  }
+
+  function popTarget () {
+    targetStack.pop();
+    Dep.target = targetStack[targetStack.length - 1];
+  }
+
+  /*  */
+
+  var VNode = function VNode (
+    tag,
+    data,
+    children,
+    text,
+    elm,
+    context,
+    componentOptions,
+    asyncFactory
+  ) {
+    this.tag = tag;
+    this.data = data;
+    this.children = children;
+    this.text = text;
+    this.elm = elm;
+    this.ns = undefined;
+    this.context = context;
+    this.fnContext = undefined;
+    this.fnOptions = undefined;
+    this.fnScopeId = undefined;
+    this.key = data && data.key;
+    this.componentOptions = componentOptions;
+    this.componentInstance = undefined;
+    this.parent = undefined;
+    this.raw = false;
+    this.isStatic = false;
+    this.isRootInsert = true;
+    this.isComment = false;
+    this.isCloned = false;
+    this.isOnce = false;
+    this.asyncFactory = asyncFactory;
+    this.asyncMeta = undefined;
+    this.isAsyncPlaceholder = false;
+  };
+
+  var prototypeAccessors = { child: { configurable: true } };
+
+  // DEPRECATED: alias for componentInstance for backwards compat.
+  /* istanbul ignore next */
+  prototypeAccessors.child.get = function () {
+    return this.componentInstance
+  };
+
+  Object.defineProperties( VNode.prototype, prototypeAccessors );
+
+  var createEmptyVNode = function (text) {
+    if ( text === void 0 ) text = '';
+
+    var node = new VNode();
+    node.text = text;
+    node.isComment = true;
+    return node
+  };
+
+  function createTextVNode (val) {
+    return new VNode(undefined, undefined, undefined, String(val))
+  }
+
+  // optimized shallow clone
+  // used for static nodes and slot nodes because they may be reused across
+  // multiple renders, cloning them avoids errors when DOM manipulations rely
+  // on their elm reference.
+  function cloneVNode (vnode) {
+    var cloned = new VNode(
+      vnode.tag,
+      vnode.data,
+      // #7975
+      // clone children array to avoid mutating original in case of cloning
+      // a child.
+      vnode.children && vnode.children.slice(),
+      vnode.text,
+      vnode.elm,
+      vnode.context,
+      vnode.componentOptions,
+      vnode.asyncFactory
+    );
+    cloned.ns = vnode.ns;
+    cloned.isStatic = vnode.isStatic;
+    cloned.key = vnode.key;
+    cloned.isComment = vnode.isComment;
+    cloned.fnContext = vnode.fnContext;
+    cloned.fnOptions = vnode.fnOptions;
+    cloned.fnScopeId = vnode.fnScopeId;
+    cloned.asyncMeta = vnode.asyncMeta;
+    cloned.isCloned = true;
+    return cloned
+  }
+
+  /*
+   * not type checking this file because flow doesn't play well with
+   * dynamically accessing methods on Array prototype
+   */
+
+  var arrayProto = Array.prototype;
+  var arrayMethods = Object.create(arrayProto);
+
+  var methodsToPatch = [
+    'push',
+    'pop',
+    'shift',
+    'unshift',
+    'splice',
+    'sort',
+    'reverse'
+  ];
+
+  /**
+   * Intercept mutating methods and emit events
+   */
+  methodsToPatch.forEach(function (method) {
+    // cache original method
+    var original = arrayProto[method];
+    def(arrayMethods, method, function mutator () {
+      var args = [], len = arguments.length;
+      while ( len-- ) args[ len ] = arguments[ len ];
+
+      var result = original.apply(this, args);
+      var ob = this.__ob__;
+      var inserted;
+      switch (method) {
+        case 'push':
+        case 'unshift':
+          inserted = args;
+          break
+        case 'splice':
+          inserted = args.slice(2);
+          break
+      }
+      if (inserted) { ob.observeArray(inserted); }
+      // notify change
+      ob.dep.notify();
+      return result
+    });
+  });
+
+  /*  */
+
+  var arrayKeys = Object.getOwnPropertyNames(arrayMethods);
+
+  /**
+   * In some cases we may want to disable observation inside a component's
+   * update computation.
+   */
+  var shouldObserve = true;
+
+  function toggleObserving (value) {
+    shouldObserve = value;
+  }
+
+  /**
+   * Observer class that is attached to each observed
+   * object. Once attached, the observer converts the target
+   * object's property keys into getter/setters that
+   * collect dependencies and dispatch updates.
+   */
+  var Observer = function Observer (value) {
+    this.value = value;
+    this.dep = new Dep();
+    this.vmCount = 0;
+    def(value, '__ob__', this);
+    if (Array.isArray(value)) {
+      if (hasProto) {
+        protoAugment(value, arrayMethods);
+      } else {
+        copyAugment(value, arrayMethods, arrayKeys);
+      }
+      this.observeArray(value);
+    } else {
+      this.walk(value);
+    }
+  };
+
+  /**
+   * Walk through all properties and convert them into
+   * getter/setters. This method should only be called when
+   * value type is Object.
+   */
+  Observer.prototype.walk = function walk (obj) {
+    var keys = Object.keys(obj);
+    for (var i = 0; i < keys.length; i++) {
+      defineReactive$$1(obj, keys[i]);
+    }
+  };
+
+  /**
+   * Observe a list of Array items.
+   */
+  Observer.prototype.observeArray = function observeArray (items) {
+    for (var i = 0, l = items.length; i < l; i++) {
+      observe(items[i]);
+    }
+  };
+
+  // helpers
+
+  /**
+   * Augment a target Object or Array by intercepting
+   * the prototype chain using __proto__
+   */
+  function protoAugment (target, src) {
+    /* eslint-disable no-proto */
+    target.__proto__ = src;
+    /* eslint-enable no-proto */
+  }
+
+  /**
+   * Augment a target Object or Array by defining
+   * hidden properties.
+   */
+  /* istanbul ignore next */
+  function copyAugment (target, src, keys) {
+    for (var i = 0, l = keys.length; i < l; i++) {
+      var key = keys[i];
+      def(target, key, src[key]);
+    }
+  }
+
+  /**
+   * Attempt to create an observer instance for a value,
+   * returns the new observer if successfully observed,
+   * or the existing observer if the value already has one.
+   */
+  function observe (value, asRootData) {
+    if (!isObject(value) || value instanceof VNode) {
+      return
+    }
+    var ob;
+    if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {
+      ob = value.__ob__;
+    } else if (
+      shouldObserve &&
+      !isServerRendering() &&
+      (Array.isArray(value) || isPlainObject(value)) &&
+      Object.isExtensible(value) &&
+      !value._isVue
+    ) {
+      ob = new Observer(value);
+    }
+    if (asRootData && ob) {
+      ob.vmCount++;
+    }
+    return ob
+  }
+
+  /**
+   * Define a reactive property on an Object.
+   */
+  function defineReactive$$1 (
+    obj,
+    key,
+    val,
+    customSetter,
+    shallow
+  ) {
+    var dep = new Dep();
+
+    var property = Object.getOwnPropertyDescriptor(obj, key);
+    if (property && property.configurable === false) {
+      return
+    }
+
+    // cater for pre-defined getter/setters
+    var getter = property && property.get;
+    var setter = property && property.set;
+    if ((!getter || setter) && arguments.length === 2) {
+      val = obj[key];
+    }
+
+    var childOb = !shallow && observe(val);
+    Object.defineProperty(obj, key, {
+      enumerable: true,
+      configurable: true,
+      get: function reactiveGetter () {
+        var value = getter ? getter.call(obj) : val;
+        if (Dep.target) {
+          dep.depend();
+          if (childOb) {
+            childOb.dep.depend();
+            if (Array.isArray(value)) {
+              dependArray(value);
+            }
+          }
+        }
+        return value
+      },
+      set: function reactiveSetter (newVal) {
+        var value = getter ? getter.call(obj) : val;
+        /* eslint-disable no-self-compare */
+        if (newVal === value || (newVal !== newVal && value !== value)) {
+          return
+        }
+        /* eslint-enable no-self-compare */
+        if (customSetter) {
+          customSetter();
+        }
+        // #7981: for accessor properties without setter
+        if (getter && !setter) { return }
+        if (setter) {
+          setter.call(obj, newVal);
+        } else {
+          val = newVal;
+        }
+        childOb = !shallow && observe(newVal);
+        dep.notify();
+      }
+    });
+  }
+
+  /**
+   * Set a property on an object. Adds the new property and
+   * triggers change notification if the property doesn't
+   * already exist.
+   */
+  function set (target, key, val) {
+    if (isUndef(target) || isPrimitive(target)
+    ) {
+      warn(("Cannot set reactive property on undefined, null, or primitive value: " + ((target))));
+    }
+    if (Array.isArray(target) && isValidArrayIndex(key)) {
+      target.length = Math.max(target.length, key);
+      target.splice(key, 1, val);
+      return val
+    }
+    if (key in target && !(key in Object.prototype)) {
+      target[key] = val;
+      return val
+    }
+    var ob = (target).__ob__;
+    if (target._isVue || (ob && ob.vmCount)) {
+      warn(
+        'Avoid adding reactive properties to a Vue instance or its root $data ' +
+        'at runtime - declare it upfront in the data option.'
+      );
+      return val
+    }
+    if (!ob) {
+      target[key] = val;
+      return val
+    }
+    defineReactive$$1(ob.value, key, val);
+    ob.dep.notify();
+    return val
+  }
+
+  /**
+   * Delete a property and trigger change if necessary.
+   */
+  function del (target, key) {
+    if (isUndef(target) || isPrimitive(target)
+    ) {
+      warn(("Cannot delete reactive property on undefined, null, or primitive value: " + ((target))));
+    }
+    if (Array.isArray(target) && isValidArrayIndex(key)) {
+      target.splice(key, 1);
+      return
+    }
+    var ob = (target).__ob__;
+    if (target._isVue || (ob && ob.vmCount)) {
+      warn(
+        'Avoid deleting properties on a Vue instance or its root $data ' +
+        '- just set it to null.'
+      );
+      return
+    }
+    if (!hasOwn(target, key)) {
+      return
+    }
+    delete target[key];
+    if (!ob) {
+      return
+    }
+    ob.dep.notify();
+  }
+
+  /**
+   * Collect dependencies on array elements when the array is touched, since
+   * we cannot intercept array element access like property getters.
+   */
+  function dependArray (value) {
+    for (var e = (void 0), i = 0, l = value.length; i < l; i++) {
+      e = value[i];
+      e && e.__ob__ && e.__ob__.dep.depend();
+      if (Array.isArray(e)) {
+        dependArray(e);
+      }
+    }
+  }
+
+  /*  */
+
+  /**
+   * Option overwriting strategies are functions that handle
+   * how to merge a parent option value and a child option
+   * value into the final value.
+   */
+  var strats = config.optionMergeStrategies;
+
+  /**
+   * Options with restrictions
+   */
+  {
+    strats.el = strats.propsData = function (parent, child, vm, key) {
+      if (!vm) {
+        warn(
+          "option \"" + key + "\" can only be used during instance " +
+          'creation with the `new` keyword.'
+        );
+      }
+      return defaultStrat(parent, child)
+    };
+  }
+
+  /**
+   * Helper that recursively merges two data objects together.
+   */
+  function mergeData (to, from) {
+    if (!from) { return to }
+    var key, toVal, fromVal;
+
+    var keys = hasSymbol
+      ? Reflect.ownKeys(from)
+      : Object.keys(from);
+
+    for (var i = 0; i < keys.length; i++) {
+      key = keys[i];
+      // in case the object is already observed...
+      if (key === '__ob__') { continue }
+      toVal = to[key];
+      fromVal = from[key];
+      if (!hasOwn(to, key)) {
+        set(to, key, fromVal);
+      } else if (
+        toVal !== fromVal &&
+        isPlainObject(toVal) &&
+        isPlainObject(fromVal)
+      ) {
+        mergeData(toVal, fromVal);
+      }
+    }
+    return to
+  }
+
+  /**
+   * Data
+   */
+  function mergeDataOrFn (
+    parentVal,
+    childVal,
+    vm
+  ) {
+    if (!vm) {
+      // in a Vue.extend merge, both should be functions
+      if (!childVal) {
+        return parentVal
+      }
+      if (!parentVal) {
+        return childVal
+      }
+      // when parentVal & childVal are both present,
+      // we need to return a function that returns the
+      // merged result of both functions... no need to
+      // check if parentVal is a function here because
+      // it has to be a function to pass previous merges.
+      return function mergedDataFn () {
+        return mergeData(
+          typeof childVal === 'function' ? childVal.call(this, this) : childVal,
+          typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal
+        )
+      }
+    } else {
+      return function mergedInstanceDataFn () {
+        // instance merge
+        var instanceData = typeof childVal === 'function'
+          ? childVal.call(vm, vm)
+          : childVal;
+        var defaultData = typeof parentVal === 'function'
+          ? parentVal.call(vm, vm)
+          : parentVal;
+        if (instanceData) {
+          return mergeData(instanceData, defaultData)
+        } else {
+          return defaultData
+        }
+      }
+    }
+  }
+
+  strats.data = function (
+    parentVal,
+    childVal,
+    vm
+  ) {
+    if (!vm) {
+      if (childVal && typeof childVal !== 'function') {
+        warn(
+          'The "data" option should be a function ' +
+          'that returns a per-instance value in component ' +
+          'definitions.',
+          vm
+        );
+
+        return parentVal
+      }
+      return mergeDataOrFn(parentVal, childVal)
+    }
+
+    return mergeDataOrFn(parentVal, childVal, vm)
+  };
+
+  /**
+   * Hooks and props are merged as arrays.
+   */
+  function mergeHook (
+    parentVal,
+    childVal
+  ) {
+    var res = childVal
+      ? parentVal
+        ? parentVal.concat(childVal)
+        : Array.isArray(childVal)
+          ? childVal
+          : [childVal]
+      : parentVal;
+    return res
+      ? dedupeHooks(res)
+      : res
+  }
+
+  function dedupeHooks (hooks) {
+    var res = [];
+    for (var i = 0; i < hooks.length; i++) {
+      if (res.indexOf(hooks[i]) === -1) {
+        res.push(hooks[i]);
+      }
+    }
+    return res
+  }
+
+  LIFECYCLE_HOOKS.forEach(function (hook) {
+    strats[hook] = mergeHook;
+  });
+
+  /**
+   * Assets
+   *
+   * When a vm is present (instance creation), we need to do
+   * a three-way merge between constructor options, instance
+   * options and parent options.
+   */
+  function mergeAssets (
+    parentVal,
+    childVal,
+    vm,
+    key
+  ) {
+    var res = Object.create(parentVal || null);
+    if (childVal) {
+      assertObjectType(key, childVal, vm);
+      return extend(res, childVal)
+    } else {
+      return res
+    }
+  }
+
+  ASSET_TYPES.forEach(function (type) {
+    strats[type + 's'] = mergeAssets;
+  });
+
+  /**
+   * Watchers.
+   *
+   * Watchers hashes should not overwrite one
+   * another, so we merge them as arrays.
+   */
+  strats.watch = function (
+    parentVal,
+    childVal,
+    vm,
+    key
+  ) {
+    // work around Firefox's Object.prototype.watch...
+    if (parentVal === nativeWatch) { parentVal = undefined; }
+    if (childVal === nativeWatch) { childVal = undefined; }
+    /* istanbul ignore if */
+    if (!childVal) { return Object.create(parentVal || null) }
+    {
+      assertObjectType(key, childVal, vm);
+    }
+    if (!parentVal) { return childVal }
+    var ret = {};
+    extend(ret, parentVal);
+    for (var key$1 in childVal) {
+      var parent = ret[key$1];
+      var child = childVal[key$1];
+      if (parent && !Array.isArray(parent)) {
+        parent = [parent];
+      }
+      ret[key$1] = parent
+        ? parent.concat(child)
+        : Array.isArray(child) ? child : [child];
+    }
+    return ret
+  };
+
+  /**
+   * Other object hashes.
+   */
+  strats.props =
+  strats.methods =
+  strats.inject =
+  strats.computed = function (
+    parentVal,
+    childVal,
+    vm,
+    key
+  ) {
+    if (childVal && "development" !== 'production') {
+      assertObjectType(key, childVal, vm);
+    }
+    if (!parentVal) { return childVal }
+    var ret = Object.create(null);
+    extend(ret, parentVal);
+    if (childVal) { extend(ret, childVal); }
+    return ret
+  };
+  strats.provide = mergeDataOrFn;
+
+  /**
+   * Default strategy.
+   */
+  var defaultStrat = function (parentVal, childVal) {
+    return childVal === undefined
+      ? parentVal
+      : childVal
+  };
+
+  /**
+   * Validate component names
+   */
+  function checkComponents (options) {
+    for (var key in options.components) {
+      validateComponentName(key);
+    }
+  }
+
+  function validateComponentName (name) {
+    if (!new RegExp(("^[a-zA-Z][\\-\\.0-9_" + (unicodeRegExp.source) + "]*$")).test(name)) {
+      warn(
+        'Invalid component name: "' + name + '". Component names ' +
+        'should conform to valid custom element name in html5 specification.'
+      );
+    }
+    if (isBuiltInTag(name) || config.isReservedTag(name)) {
+      warn(
+        'Do not use built-in or reserved HTML elements as component ' +
+        'id: ' + name
+      );
+    }
+  }
+
+  /**
+   * Ensure all props option syntax are normalized into the
+   * Object-based format.
+   */
+  function normalizeProps (options, vm) {
+    var props = options.props;
+    if (!props) { return }
+    var res = {};
+    var i, val, name;
+    if (Array.isArray(props)) {
+      i = props.length;
+      while (i--) {
+        val = props[i];
+        if (typeof val === 'string') {
+          name = camelize(val);
+          res[name] = { type: null };
+        } else {
+          warn('props must be strings when using array syntax.');
+        }
+      }
+    } else if (isPlainObject(props)) {
+      for (var key in props) {
+        val = props[key];
+        name = camelize(key);
+        res[name] = isPlainObject(val)
+          ? val
+          : { type: val };
+      }
+    } else {
+      warn(
+        "Invalid value for option \"props\": expected an Array or an Object, " +
+        "but got " + (toRawType(props)) + ".",
+        vm
+      );
+    }
+    options.props = res;
+  }
+
+  /**
+   * Normalize all injections into Object-based format
+   */
+  function normalizeInject (options, vm) {
+    var inject = options.inject;
+    if (!inject) { return }
+    var normalized = options.inject = {};
+    if (Array.isArray(inject)) {
+      for (var i = 0; i < inject.length; i++) {
+        normalized[inject[i]] = { from: inject[i] };
+      }
+    } else if (isPlainObject(inject)) {
+      for (var key in inject) {
+        var val = inject[key];
+        normalized[key] = isPlainObject(val)
+          ? extend({ from: key }, val)
+          : { from: val };
+      }
+    } else {
+      warn(
+        "Invalid value for option \"inject\": expected an Array or an Object, " +
+        "but got " + (toRawType(inject)) + ".",
+        vm
+      );
+    }
+  }
+
+  /**
+   * Normalize raw function directives into object format.
+   */
+  function normalizeDirectives (options) {
+    var dirs = options.directives;
+    if (dirs) {
+      for (var key in dirs) {
+        var def$$1 = dirs[key];
+        if (typeof def$$1 === 'function') {
+          dirs[key] = { bind: def$$1, update: def$$1 };
+        }
+      }
+    }
+  }
+
+  function assertObjectType (name, value, vm) {
+    if (!isPlainObject(value)) {
+      warn(
+        "Invalid value for option \"" + name + "\": expected an Object, " +
+        "but got " + (toRawType(value)) + ".",
+        vm
+      );
+    }
+  }
+
+  /**
+   * Merge two option objects into a new one.
+   * Core utility used in both instantiation and inheritance.
+   */
+  function mergeOptions (
+    parent,
+    child,
+    vm
+  ) {
+    {
+      checkComponents(child);
+    }
+
+    if (typeof child === 'function') {
+      child = child.options;
+    }
+
+    normalizeProps(child, vm);
+    normalizeInject(child, vm);
+    normalizeDirectives(child);
+
+    // Apply extends and mixins on the child options,
+    // but only if it is a raw options object that isn't
+    // the result of another mergeOptions call.
+    // Only merged options has the _base property.
+    if (!child._base) {
+      if (child.extends) {
+        parent = mergeOptions(parent, child.extends, vm);
+      }
+      if (child.mixins) {
+        for (var i = 0, l = child.mixins.length; i < l; i++) {
+          parent = mergeOptions(parent, child.mixins[i], vm);
+        }
+      }
+    }
+
+    var options = {};
+    var key;
+    for (key in parent) {
+      mergeField(key);
+    }
+    for (key in child) {
+      if (!hasOwn(parent, key)) {
+        mergeField(key);
+      }
+    }
+    function mergeField (key) {
+      var strat = strats[key] || defaultStrat;
+      options[key] = strat(parent[key], child[key], vm, key);
+    }
+    return options
+  }
+
+  /**
+   * Resolve an asset.
+   * This function is used because child instances need access
+   * to assets defined in its ancestor chain.
+   */
+  function resolveAsset (
+    options,
+    type,
+    id,
+    warnMissing
+  ) {
+    /* istanbul ignore if */
+    if (typeof id !== 'string') {
+      return
+    }
+    var assets = options[type];
+    // check local registration variations first
+    if (hasOwn(assets, id)) { return assets[id] }
+    var camelizedId = camelize(id);
+    if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }
+    var PascalCaseId = capitalize(camelizedId);
+    if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }
+    // fallback to prototype chain
+    var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];
+    if (warnMissing && !res) {
+      warn(
+        'Failed to resolve ' + type.slice(0, -1) + ': ' + id,
+        options
+      );
+    }
+    return res
+  }
+
+  /*  */
+
+
+
+  function validateProp (
+    key,
+    propOptions,
+    propsData,
+    vm
+  ) {
+    var prop = propOptions[key];
+    var absent = !hasOwn(propsData, key);
+    var value = propsData[key];
+    // boolean casting
+    var booleanIndex = getTypeIndex(Boolean, prop.type);
+    if (booleanIndex > -1) {
+      if (absent && !hasOwn(prop, 'default')) {
+        value = false;
+      } else if (value === '' || value === hyphenate(key)) {
+        // only cast empty string / same name to boolean if
+        // boolean has higher priority
+        var stringIndex = getTypeIndex(String, prop.type);
+        if (stringIndex < 0 || booleanIndex < stringIndex) {
+          value = true;
+        }
+      }
+    }
+    // check default value
+    if (value === undefined) {
+      value = getPropDefaultValue(vm, prop, key);
+      // since the default value is a fresh copy,
+      // make sure to observe it.
+      var prevShouldObserve = shouldObserve;
+      toggleObserving(true);
+      observe(value);
+      toggleObserving(prevShouldObserve);
+    }
+    {
+      assertProp(prop, key, value, vm, absent);
+    }
+    return value
+  }
+
+  /**
+   * Get the default value of a prop.
+   */
+  function getPropDefaultValue (vm, prop, key) {
+    // no default, return undefined
+    if (!hasOwn(prop, 'default')) {
+      return undefined
+    }
+    var def = prop.default;
+    // warn against non-factory defaults for Object & Array
+    if (isObject(def)) {
+      warn(
+        'Invalid default value for prop "' + key + '": ' +
+        'Props with type Object/Array must use a factory function ' +
+        'to return the default value.',
+        vm
+      );
+    }
+    // the raw prop value was also undefined from previous render,
+    // return previous default value to avoid unnecessary watcher trigger
+    if (vm && vm.$options.propsData &&
+      vm.$options.propsData[key] === undefined &&
+      vm._props[key] !== undefined
+    ) {
+      return vm._props[key]
+    }
+    // call factory function for non-Function types
+    // a value is Function if its prototype is function even across different execution context
+    return typeof def === 'function' && getType(prop.type) !== 'Function'
+      ? def.call(vm)
+      : def
+  }
+
+  /**
+   * Assert whether a prop is valid.
+   */
+  function assertProp (
+    prop,
+    name,
+    value,
+    vm,
+    absent
+  ) {
+    if (prop.required && absent) {
+      warn(
+        'Missing required prop: "' + name + '"',
+        vm
+      );
+      return
+    }
+    if (value == null && !prop.required) {
+      return
+    }
+    var type = prop.type;
+    var valid = !type || type === true;
+    var expectedTypes = [];
+    if (type) {
+      if (!Array.isArray(type)) {
+        type = [type];
+      }
+      for (var i = 0; i < type.length && !valid; i++) {
+        var assertedType = assertType(value, type[i], vm);
+        expectedTypes.push(assertedType.expectedType || '');
+        valid = assertedType.valid;
+      }
+    }
+
+    var haveExpectedTypes = expectedTypes.some(function (t) { return t; });
+    if (!valid && haveExpectedTypes) {
+      warn(
+        getInvalidTypeMessage(name, value, expectedTypes),
+        vm
+      );
+      return
+    }
+    var validator = prop.validator;
+    if (validator) {
+      if (!validator(value)) {
+        warn(
+          'Invalid prop: custom validator check failed for prop "' + name + '".',
+          vm
+        );
+      }
+    }
+  }
+
+  var simpleCheckRE = /^(String|Number|Boolean|Function|Symbol|BigInt)$/;
+
+  function assertType (value, type, vm) {
+    var valid;
+    var expectedType = getType(type);
+    if (simpleCheckRE.test(expectedType)) {
+      var t = typeof value;
+      valid = t === expectedType.toLowerCase();
+      // for primitive wrapper objects
+      if (!valid && t === 'object') {
+        valid = value instanceof type;
+      }
+    } else if (expectedType === 'Object') {
+      valid = isPlainObject(value);
+    } else if (expectedType === 'Array') {
+      valid = Array.isArray(value);
+    } else {
+      try {
+        valid = value instanceof type;
+      } catch (e) {
+        warn('Invalid prop type: "' + String(type) + '" is not a constructor', vm);
+        valid = false;
+      }
+    }
+    return {
+      valid: valid,
+      expectedType: expectedType
+    }
+  }
+
+  var functionTypeCheckRE = /^\s*function (\w+)/;
+
+  /**
+   * Use function string name to check built-in types,
+   * because a simple equality check will fail when running
+   * across different vms / iframes.
+   */
+  function getType (fn) {
+    var match = fn && fn.toString().match(functionTypeCheckRE);
+    return match ? match[1] : ''
+  }
+
+  function isSameType (a, b) {
+    return getType(a) === getType(b)
+  }
+
+  function getTypeIndex (type, expectedTypes) {
+    if (!Array.isArray(expectedTypes)) {
+      return isSameType(expectedTypes, type) ? 0 : -1
+    }
+    for (var i = 0, len = expectedTypes.length; i < len; i++) {
+      if (isSameType(expectedTypes[i], type)) {
+        return i
+      }
+    }
+    return -1
+  }
+
+  function getInvalidTypeMessage (name, value, expectedTypes) {
+    var message = "Invalid prop: type check failed for prop \"" + name + "\"." +
+      " Expected " + (expectedTypes.map(capitalize).join(', '));
+    var expectedType = expectedTypes[0];
+    var receivedType = toRawType(value);
+    // check if we need to specify expected value
+    if (
+      expectedTypes.length === 1 &&
+      isExplicable(expectedType) &&
+      isExplicable(typeof value) &&
+      !isBoolean(expectedType, receivedType)
+    ) {
+      message += " with value " + (styleValue(value, expectedType));
+    }
+    message += ", got " + receivedType + " ";
+    // check if we need to specify received value
+    if (isExplicable(receivedType)) {
+      message += "with value " + (styleValue(value, receivedType)) + ".";
+    }
+    return message
+  }
+
+  function styleValue (value, type) {
+    if (type === 'String') {
+      return ("\"" + value + "\"")
+    } else if (type === 'Number') {
+      return ("" + (Number(value)))
+    } else {
+      return ("" + value)
+    }
+  }
+
+  var EXPLICABLE_TYPES = ['string', 'number', 'boolean'];
+  function isExplicable (value) {
+    return EXPLICABLE_TYPES.some(function (elem) { return value.toLowerCase() === elem; })
+  }
+
+  function isBoolean () {
+    var args = [], len = arguments.length;
+    while ( len-- ) args[ len ] = arguments[ len ];
+
+    return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })
+  }
+
+  /*  */
+
+  function handleError (err, vm, info) {
+    // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.
+    // See: https://github.com/vuejs/vuex/issues/1505
+    pushTarget();
+    try {
+      if (vm) {
+        var cur = vm;
+        while ((cur = cur.$parent)) {
+          var hooks = cur.$options.errorCaptured;
+          if (hooks) {
+            for (var i = 0; i < hooks.length; i++) {
+              try {
+                var capture = hooks[i].call(cur, err, vm, info) === false;
+                if (capture) { return }
+              } catch (e) {
+                globalHandleError(e, cur, 'errorCaptured hook');
+              }
+            }
+          }
+        }
+      }
+      globalHandleError(err, vm, info);
+    } finally {
+      popTarget();
+    }
+  }
+
+  function invokeWithErrorHandling (
+    handler,
+    context,
+    args,
+    vm,
+    info
+  ) {
+    var res;
+    try {
+      res = args ? handler.apply(context, args) : handler.call(context);
+      if (res && !res._isVue && isPromise(res) && !res._handled) {
+        res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
+        // issue #9511
+        // avoid catch triggering multiple times when nested calls
+        res._handled = true;
+      }
+    } catch (e) {
+      handleError(e, vm, info);
+    }
+    return res
+  }
+
+  function globalHandleError (err, vm, info) {
+    if (config.errorHandler) {
+      try {
+        return config.errorHandler.call(null, err, vm, info)
+      } catch (e) {
+        // if the user intentionally throws the original error in the handler,
+        // do not log it twice
+        if (e !== err) {
+          logError(e, null, 'config.errorHandler');
+        }
+      }
+    }
+    logError(err, vm, info);
+  }
+
+  function logError (err, vm, info) {
+    {
+      warn(("Error in " + info + ": \"" + (err.toString()) + "\""), vm);
+    }
+    /* istanbul ignore else */
+    if ((inBrowser || inWeex) && typeof console !== 'undefined') {
+      console.error(err);
+    } else {
+      throw err
+    }
+  }
+
+  /*  */
+
+  var isUsingMicroTask = false;
+
+  var callbacks = [];
+  var pending = false;
+
+  function flushCallbacks () {
+    pending = false;
+    var copies = callbacks.slice(0);
+    callbacks.length = 0;
+    for (var i = 0; i < copies.length; i++) {
+      copies[i]();
+    }
+  }
+
+  // Here we have async deferring wrappers using microtasks.
+  // In 2.5 we used (macro) tasks (in combination with microtasks).
+  // However, it has subtle problems when state is changed right before repaint
+  // (e.g. #6813, out-in transitions).
+  // Also, using (macro) tasks in event handler would cause some weird behaviors
+  // that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).
+  // So we now use microtasks everywhere, again.
+  // A major drawback of this tradeoff is that there are some scenarios
+  // where microtasks have too high a priority and fire in between supposedly
+  // sequential events (e.g. #4521, #6690, which have workarounds)
+  // or even between bubbling of the same event (#6566).
+  var timerFunc;
+
+  // The nextTick behavior leverages the microtask queue, which can be accessed
+  // via either native Promise.then or MutationObserver.
+  // MutationObserver has wider support, however it is seriously bugged in
+  // UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It
+  // completely stops working after triggering a few times... so, if native
+  // Promise is available, we will use it:
+  /* istanbul ignore next, $flow-disable-line */
+  if (typeof Promise !== 'undefined' && isNative(Promise)) {
+    var p = Promise.resolve();
+    timerFunc = function () {
+      p.then(flushCallbacks);
+      // In problematic UIWebViews, Promise.then doesn't completely break, but
+      // it can get stuck in a weird state where callbacks are pushed into the
+      // microtask queue but the queue isn't being flushed, until the browser
+      // needs to do some other work, e.g. handle a timer. Therefore we can
+      // "force" the microtask queue to be flushed by adding an empty timer.
+      if (isIOS) { setTimeout(noop); }
+    };
+    isUsingMicroTask = true;
+  } else if (!isIE && typeof MutationObserver !== 'undefined' && (
+    isNative(MutationObserver) ||
+    // PhantomJS and iOS 7.x
+    MutationObserver.toString() === '[object MutationObserverConstructor]'
+  )) {
+    // Use MutationObserver where native Promise is not available,
+    // e.g. PhantomJS, iOS7, Android 4.4
+    // (#6466 MutationObserver is unreliable in IE11)
+    var counter = 1;
+    var observer = new MutationObserver(flushCallbacks);
+    var textNode = document.createTextNode(String(counter));
+    observer.observe(textNode, {
+      characterData: true
+    });
+    timerFunc = function () {
+      counter = (counter + 1) % 2;
+      textNode.data = String(counter);
+    };
+    isUsingMicroTask = true;
+  } else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {
+    // Fallback to setImmediate.
+    // Technically it leverages the (macro) task queue,
+    // but it is still a better choice than setTimeout.
+    timerFunc = function () {
+      setImmediate(flushCallbacks);
+    };
+  } else {
+    // Fallback to setTimeout.
+    timerFunc = function () {
+      setTimeout(flushCallbacks, 0);
+    };
+  }
+
+  function nextTick (cb, ctx) {
+    var _resolve;
+    callbacks.push(function () {
+      if (cb) {
+        try {
+          cb.call(ctx);
+        } catch (e) {
+          handleError(e, ctx, 'nextTick');
+        }
+      } else if (_resolve) {
+        _resolve(ctx);
+      }
+    });
+    if (!pending) {
+      pending = true;
+      timerFunc();
+    }
+    // $flow-disable-line
+    if (!cb && typeof Promise !== 'undefined') {
+      return new Promise(function (resolve) {
+        _resolve = resolve;
+      })
+    }
+  }
+
+  /*  */
+
+  var mark;
+  var measure;
+
+  {
+    var perf = inBrowser && window.performance;
+    /* istanbul ignore if */
+    if (
+      perf &&
+      perf.mark &&
+      perf.measure &&
+      perf.clearMarks &&
+      perf.clearMeasures
+    ) {
+      mark = function (tag) { return perf.mark(tag); };
+      measure = function (name, startTag, endTag) {
+        perf.measure(name, startTag, endTag);
+        perf.clearMarks(startTag);
+        perf.clearMarks(endTag);
+        // perf.clearMeasures(name)
+      };
+    }
+  }
+
+  /* not type checking this file because flow doesn't play well with Proxy */
+
+  var initProxy;
+
+  {
+    var allowedGlobals = makeMap(
+      'Infinity,undefined,NaN,isFinite,isNaN,' +
+      'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +
+      'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,' +
+      'require' // for Webpack/Browserify
+    );
+
+    var warnNonPresent = function (target, key) {
+      warn(
+        "Property or method \"" + key + "\" is not defined on the instance but " +
+        'referenced during render. Make sure that this property is reactive, ' +
+        'either in the data option, or for class-based components, by ' +
+        'initializing the property. ' +
+        'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',
+        target
+      );
+    };
+
+    var warnReservedPrefix = function (target, key) {
+      warn(
+        "Property \"" + key + "\" must be accessed with \"$data." + key + "\" because " +
+        'properties starting with "$" or "_" are not proxied in the Vue instance to ' +
+        'prevent conflicts with Vue internals. ' +
+        'See: https://vuejs.org/v2/api/#data',
+        target
+      );
+    };
+
+    var hasProxy =
+      typeof Proxy !== 'undefined' && isNative(Proxy);
+
+    if (hasProxy) {
+      var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');
+      config.keyCodes = new Proxy(config.keyCodes, {
+        set: function set (target, key, value) {
+          if (isBuiltInModifier(key)) {
+            warn(("Avoid overwriting built-in modifier in config.keyCodes: ." + key));
+            return false
+          } else {
+            target[key] = value;
+            return true
+          }
+        }
+      });
+    }
+
+    var hasHandler = {
+      has: function has (target, key) {
+        var has = key in target;
+        var isAllowed = allowedGlobals(key) ||
+          (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));
+        if (!has && !isAllowed) {
+          if (key in target.$data) { warnReservedPrefix(target, key); }
+          else { warnNonPresent(target, key); }
+        }
+        return has || !isAllowed
+      }
+    };
+
+    var getHandler = {
+      get: function get (target, key) {
+        if (typeof key === 'string' && !(key in target)) {
+          if (key in target.$data) { warnReservedPrefix(target, key); }
+          else { warnNonPresent(target, key); }
+        }
+        return target[key]
+      }
+    };
+
+    initProxy = function initProxy (vm) {
+      if (hasProxy) {
+        // determine which proxy handler to use
+        var options = vm.$options;
+        var handlers = options.render && options.render._withStripped
+          ? getHandler
+          : hasHandler;
+        vm._renderProxy = new Proxy(vm, handlers);
+      } else {
+        vm._renderProxy = vm;
+      }
+    };
+  }
+
+  /*  */
+
+  var seenObjects = new _Set();
+
+  /**
+   * Recursively traverse an object to evoke all converted
+   * getters, so that every nested property inside the object
+   * is collected as a "deep" dependency.
+   */
+  function traverse (val) {
+    _traverse(val, seenObjects);
+    seenObjects.clear();
+  }
+
+  function _traverse (val, seen) {
+    var i, keys;
+    var isA = Array.isArray(val);
+    if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {
+      return
+    }
+    if (val.__ob__) {
+      var depId = val.__ob__.dep.id;
+      if (seen.has(depId)) {
+        return
+      }
+      seen.add(depId);
+    }
+    if (isA) {
+      i = val.length;
+      while (i--) { _traverse(val[i], seen); }
+    } else {
+      keys = Object.keys(val);
+      i = keys.length;
+      while (i--) { _traverse(val[keys[i]], seen); }
+    }
+  }
+
+  /*  */
+
+  var normalizeEvent = cached(function (name) {
+    var passive = name.charAt(0) === '&';
+    name = passive ? name.slice(1) : name;
+    var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first
+    name = once$$1 ? name.slice(1) : name;
+    var capture = name.charAt(0) === '!';
+    name = capture ? name.slice(1) : name;
+    return {
+      name: name,
+      once: once$$1,
+      capture: capture,
+      passive: passive
+    }
+  });
+
+  function createFnInvoker (fns, vm) {
+    function invoker () {
+      var arguments$1 = arguments;
+
+      var fns = invoker.fns;
+      if (Array.isArray(fns)) {
+        var cloned = fns.slice();
+        for (var i = 0; i < cloned.length; i++) {
+          invokeWithErrorHandling(cloned[i], null, arguments$1, vm, "v-on handler");
+        }
+      } else {
+        // return handler return value for single handlers
+        return invokeWithErrorHandling(fns, null, arguments, vm, "v-on handler")
+      }
+    }
+    invoker.fns = fns;
+    return invoker
+  }
+
+  function updateListeners (
+    on,
+    oldOn,
+    add,
+    remove$$1,
+    createOnceHandler,
+    vm
+  ) {
+    var name, def$$1, cur, old, event;
+    for (name in on) {
+      def$$1 = cur = on[name];
+      old = oldOn[name];
+      event = normalizeEvent(name);
+      if (isUndef(cur)) {
+        warn(
+          "Invalid handler for event \"" + (event.name) + "\": got " + String(cur),
+          vm
+        );
+      } else if (isUndef(old)) {
+        if (isUndef(cur.fns)) {
+          cur = on[name] = createFnInvoker(cur, vm);
+        }
+        if (isTrue(event.once)) {
+          cur = on[name] = createOnceHandler(event.name, cur, event.capture);
+        }
+        add(event.name, cur, event.capture, event.passive, event.params);
+      } else if (cur !== old) {
+        old.fns = cur;
+        on[name] = old;
+      }
+    }
+    for (name in oldOn) {
+      if (isUndef(on[name])) {
+        event = normalizeEvent(name);
+        remove$$1(event.name, oldOn[name], event.capture);
+      }
+    }
+  }
+
+  /*  */
+
+  function mergeVNodeHook (def, hookKey, hook) {
+    if (def instanceof VNode) {
+      def = def.data.hook || (def.data.hook = {});
+    }
+    var invoker;
+    var oldHook = def[hookKey];
+
+    function wrappedHook () {
+      hook.apply(this, arguments);
+      // important: remove merged hook to ensure it's called only once
+      // and prevent memory leak
+      remove(invoker.fns, wrappedHook);
+    }
+
+    if (isUndef(oldHook)) {
+      // no existing hook
+      invoker = createFnInvoker([wrappedHook]);
+    } else {
+      /* istanbul ignore if */
+      if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {
+        // already a merged invoker
+        invoker = oldHook;
+        invoker.fns.push(wrappedHook);
+      } else {
+        // existing plain hook
+        invoker = createFnInvoker([oldHook, wrappedHook]);
+      }
+    }
+
+    invoker.merged = true;
+    def[hookKey] = invoker;
+  }
+
+  /*  */
+
+  function extractPropsFromVNodeData (
+    data,
+    Ctor,
+    tag
+  ) {
+    // we are only extracting raw values here.
+    // validation and default values are handled in the child
+    // component itself.
+    var propOptions = Ctor.options.props;
+    if (isUndef(propOptions)) {
+      return
+    }
+    var res = {};
+    var attrs = data.attrs;
+    var props = data.props;
+    if (isDef(attrs) || isDef(props)) {
+      for (var key in propOptions) {
+        var altKey = hyphenate(key);
+        {
+          var keyInLowerCase = key.toLowerCase();
+          if (
+            key !== keyInLowerCase &&
+            attrs && hasOwn(attrs, keyInLowerCase)
+          ) {
+            tip(
+              "Prop \"" + keyInLowerCase + "\" is passed to component " +
+              (formatComponentName(tag || Ctor)) + ", but the declared prop name is" +
+              " \"" + key + "\". " +
+              "Note that HTML attributes are case-insensitive and camelCased " +
+              "props need to use their kebab-case equivalents when using in-DOM " +
+              "templates. You should probably use \"" + altKey + "\" instead of \"" + key + "\"."
+            );
+          }
+        }
+        checkProp(res, props, key, altKey, true) ||
+        checkProp(res, attrs, key, altKey, false);
+      }
+    }
+    return res
+  }
+
+  function checkProp (
+    res,
+    hash,
+    key,
+    altKey,
+    preserve
+  ) {
+    if (isDef(hash)) {
+      if (hasOwn(hash, key)) {
+        res[key] = hash[key];
+        if (!preserve) {
+          delete hash[key];
+        }
+        return true
+      } else if (hasOwn(hash, altKey)) {
+        res[key] = hash[altKey];
+        if (!preserve) {
+          delete hash[altKey];
+        }
+        return true
+      }
+    }
+    return false
+  }
+
+  /*  */
+
+  // The template compiler attempts to minimize the need for normalization by
+  // statically analyzing the template at compile time.
+  //
+  // For plain HTML markup, normalization can be completely skipped because the
+  // generated render function is guaranteed to return Array<VNode>. There are
+  // two cases where extra normalization is needed:
+
+  // 1. When the children contains components - because a functional component
+  // may return an Array instead of a single root. In this case, just a simple
+  // normalization is needed - if any child is an Array, we flatten the whole
+  // thing with Array.prototype.concat. It is guaranteed to be only 1-level deep
+  // because functional components already normalize their own children.
+  function simpleNormalizeChildren (children) {
+    for (var i = 0; i < children.length; i++) {
+      if (Array.isArray(children[i])) {
+        return Array.prototype.concat.apply([], children)
+      }
+    }
+    return children
+  }
+
+  // 2. When the children contains constructs that always generated nested Arrays,
+  // e.g. <template>, <slot>, v-for, or when the children is provided by user
+  // with hand-written render functions / JSX. In such cases a full normalization
+  // is needed to cater to all possible types of children values.
+  function normalizeChildren (children) {
+    return isPrimitive(children)
+      ? [createTextVNode(children)]
+      : Array.isArray(children)
+        ? normalizeArrayChildren(children)
+        : undefined
+  }
+
+  function isTextNode (node) {
+    return isDef(node) && isDef(node.text) && isFalse(node.isComment)
+  }
+
+  function normalizeArrayChildren (children, nestedIndex) {
+    var res = [];
+    var i, c, lastIndex, last;
+    for (i = 0; i < children.length; i++) {
+      c = children[i];
+      if (isUndef(c) || typeof c === 'boolean') { continue }
+      lastIndex = res.length - 1;
+      last = res[lastIndex];
+      //  nested
+      if (Array.isArray(c)) {
+        if (c.length > 0) {
+          c = normalizeArrayChildren(c, ((nestedIndex || '') + "_" + i));
+          // merge adjacent text nodes
+          if (isTextNode(c[0]) && isTextNode(last)) {
+            res[lastIndex] = createTextVNode(last.text + (c[0]).text);
+            c.shift();
+          }
+          res.push.apply(res, c);
+        }
+      } else if (isPrimitive(c)) {
+        if (isTextNode(last)) {
+          // merge adjacent text nodes
+          // this is necessary for SSR hydration because text nodes are
+          // essentially merged when rendered to HTML strings
+          res[lastIndex] = createTextVNode(last.text + c);
+        } else if (c !== '') {
+          // convert primitive to vnode
+          res.push(createTextVNode(c));
+        }
+      } else {
+        if (isTextNode(c) && isTextNode(last)) {
+          // merge adjacent text nodes
+          res[lastIndex] = createTextVNode(last.text + c.text);
+        } else {
+          // default key for nested array children (likely generated by v-for)
+          if (isTrue(children._isVList) &&
+            isDef(c.tag) &&
+            isUndef(c.key) &&
+            isDef(nestedIndex)) {
+            c.key = "__vlist" + nestedIndex + "_" + i + "__";
+          }
+          res.push(c);
+        }
+      }
+    }
+    return res
+  }
+
+  /*  */
+
+  function initProvide (vm) {
+    var provide = vm.$options.provide;
+    if (provide) {
+      vm._provided = typeof provide === 'function'
+        ? provide.call(vm)
+        : provide;
+    }
+  }
+
+  function initInjections (vm) {
+    var result = resolveInject(vm.$options.inject, vm);
+    if (result) {
+      toggleObserving(false);
+      Object.keys(result).forEach(function (key) {
+        /* istanbul ignore else */
+        {
+          defineReactive$$1(vm, key, result[key], function () {
+            warn(
+              "Avoid mutating an injected value directly since the changes will be " +
+              "overwritten whenever the provided component re-renders. " +
+              "injection being mutated: \"" + key + "\"",
+              vm
+            );
+          });
+        }
+      });
+      toggleObserving(true);
+    }
+  }
+
+  function resolveInject (inject, vm) {
+    if (inject) {
+      // inject is :any because flow is not smart enough to figure out cached
+      var result = Object.create(null);
+      var keys = hasSymbol
+        ? Reflect.ownKeys(inject)
+        : Object.keys(inject);
+
+      for (var i = 0; i < keys.length; i++) {
+        var key = keys[i];
+        // #6574 in case the inject object is observed...
+        if (key === '__ob__') { continue }
+        var provideKey = inject[key].from;
+        var source = vm;
+        while (source) {
+          if (source._provided && hasOwn(source._provided, provideKey)) {
+            result[key] = source._provided[provideKey];
+            break
+          }
+          source = source.$parent;
+        }
+        if (!source) {
+          if ('default' in inject[key]) {
+            var provideDefault = inject[key].default;
+            result[key] = typeof provideDefault === 'function'
+              ? provideDefault.call(vm)
+              : provideDefault;
+          } else {
+            warn(("Injection \"" + key + "\" not found"), vm);
+          }
+        }
+      }
+      return result
+    }
+  }
+
+  /*  */
+
+
+
+  /**
+   * Runtime helper for resolving raw children VNodes into a slot object.
+   */
+  function resolveSlots (
+    children,
+    context
+  ) {
+    if (!children || !children.length) {
+      return {}
+    }
+    var slots = {};
+    for (var i = 0, l = children.length; i < l; i++) {
+      var child = children[i];
+      var data = child.data;
+      // remove slot attribute if the node is resolved as a Vue slot node
+      if (data && data.attrs && data.attrs.slot) {
+        delete data.attrs.slot;
+      }
+      // named slots should only be respected if the vnode was rendered in the
+      // same context.
+      if ((child.context === context || child.fnContext === context) &&
+        data && data.slot != null
+      ) {
+        var name = data.slot;
+        var slot = (slots[name] || (slots[name] = []));
+        if (child.tag === 'template') {
+          slot.push.apply(slot, child.children || []);
+        } else {
+          slot.push(child);
+        }
+      } else {
+        (slots.default || (slots.default = [])).push(child);
+      }
+    }
+    // ignore slots that contains only whitespace
+    for (var name$1 in slots) {
+      if (slots[name$1].every(isWhitespace)) {
+        delete slots[name$1];
+      }
+    }
+    return slots
+  }
+
+  function isWhitespace (node) {
+    return (node.isComment && !node.asyncFactory) || node.text === ' '
+  }
+
+  /*  */
+
+  function isAsyncPlaceholder (node) {
+    return node.isComment && node.asyncFactory
+  }
+
+  /*  */
+
+  function normalizeScopedSlots (
+    slots,
+    normalSlots,
+    prevSlots
+  ) {
+    var res;
+    var hasNormalSlots = Object.keys(normalSlots).length > 0;
+    var isStable = slots ? !!slots.$stable : !hasNormalSlots;
+    var key = slots && slots.$key;
+    if (!slots) {
+      res = {};
+    } else if (slots._normalized) {
+      // fast path 1: child component re-render only, parent did not change
+      return slots._normalized
+    } else if (
+      isStable &&
+      prevSlots &&
+      prevSlots !== emptyObject &&
+      key === prevSlots.$key &&
+      !hasNormalSlots &&
+      !prevSlots.$hasNormal
+    ) {
+      // fast path 2: stable scoped slots w/ no normal slots to proxy,
+      // only need to normalize once
+      return prevSlots
+    } else {
+      res = {};
+      for (var key$1 in slots) {
+        if (slots[key$1] && key$1[0] !== '$') {
+          res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);
+        }
+      }
+    }
+    // expose normal slots on scopedSlots
+    for (var key$2 in normalSlots) {
+      if (!(key$2 in res)) {
+        res[key$2] = proxyNormalSlot(normalSlots, key$2);
+      }
+    }
+    // avoriaz seems to mock a non-extensible $scopedSlots object
+    // and when that is passed down this would cause an error
+    if (slots && Object.isExtensible(slots)) {
+      (slots)._normalized = res;
+    }
+    def(res, '$stable', isStable);
+    def(res, '$key', key);
+    def(res, '$hasNormal', hasNormalSlots);
+    return res
+  }
+
+  function normalizeScopedSlot(normalSlots, key, fn) {
+    var normalized = function () {
+      var res = arguments.length ? fn.apply(null, arguments) : fn({});
+      res = res && typeof res === 'object' && !Array.isArray(res)
+        ? [res] // single vnode
+        : normalizeChildren(res);
+      var vnode = res && res[0];
+      return res && (
+        !vnode ||
+        (res.length === 1 && vnode.isComment && !isAsyncPlaceholder(vnode)) // #9658, #10391
+      ) ? undefined
+        : res
+    };
+    // this is a slot using the new v-slot syntax without scope. although it is
+    // compiled as a scoped slot, render fn users would expect it to be present
+    // on this.$slots because the usage is semantically a normal slot.
+    if (fn.proxy) {
+      Object.defineProperty(normalSlots, key, {
+        get: normalized,
+        enumerable: true,
+        configurable: true
+      });
+    }
+    return normalized
+  }
+
+  function proxyNormalSlot(slots, key) {
+    return function () { return slots[key]; }
+  }
+
+  /*  */
+
+  /**
+   * Runtime helper for rendering v-for lists.
+   */
+  function renderList (
+    val,
+    render
+  ) {
+    var ret, i, l, keys, key;
+    if (Array.isArray(val) || typeof val === 'string') {
+      ret = new Array(val.length);
+      for (i = 0, l = val.length; i < l; i++) {
+        ret[i] = render(val[i], i);
+      }
+    } else if (typeof val === 'number') {
+      ret = new Array(val);
+      for (i = 0; i < val; i++) {
+        ret[i] = render(i + 1, i);
+      }
+    } else if (isObject(val)) {
+      if (hasSymbol && val[Symbol.iterator]) {
+        ret = [];
+        var iterator = val[Symbol.iterator]();
+        var result = iterator.next();
+        while (!result.done) {
+          ret.push(render(result.value, ret.length));
+          result = iterator.next();
+        }
+      } else {
+        keys = Object.keys(val);
+        ret = new Array(keys.length);
+        for (i = 0, l = keys.length; i < l; i++) {
+          key = keys[i];
+          ret[i] = render(val[key], key, i);
+        }
+      }
+    }
+    if (!isDef(ret)) {
+      ret = [];
+    }
+    (ret)._isVList = true;
+    return ret
+  }
+
+  /*  */
+
+  /**
+   * Runtime helper for rendering <slot>
+   */
+  function renderSlot (
+    name,
+    fallbackRender,
+    props,
+    bindObject
+  ) {
+    var scopedSlotFn = this.$scopedSlots[name];
+    var nodes;
+    if (scopedSlotFn) {
+      // scoped slot
+      props = props || {};
+      if (bindObject) {
+        if (!isObject(bindObject)) {
+          warn('slot v-bind without argument expects an Object', this);
+        }
+        props = extend(extend({}, bindObject), props);
+      }
+      nodes =
+        scopedSlotFn(props) ||
+        (typeof fallbackRender === 'function' ? fallbackRender() : fallbackRender);
+    } else {
+      nodes =
+        this.$slots[name] ||
+        (typeof fallbackRender === 'function' ? fallbackRender() : fallbackRender);
+    }
+
+    var target = props && props.slot;
+    if (target) {
+      return this.$createElement('template', { slot: target }, nodes)
+    } else {
+      return nodes
+    }
+  }
+
+  /*  */
+
+  /**
+   * Runtime helper for resolving filters
+   */
+  function resolveFilter (id) {
+    return resolveAsset(this.$options, 'filters', id, true) || identity
+  }
+
+  /*  */
+
+  function isKeyNotMatch (expect, actual) {
+    if (Array.isArray(expect)) {
+      return expect.indexOf(actual) === -1
+    } else {
+      return expect !== actual
+    }
+  }
+
+  /**
+   * Runtime helper for checking keyCodes from config.
+   * exposed as Vue.prototype._k
+   * passing in eventKeyName as last argument separately for backwards compat
+   */
+  function checkKeyCodes (
+    eventKeyCode,
+    key,
+    builtInKeyCode,
+    eventKeyName,
+    builtInKeyName
+  ) {
+    var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;
+    if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {
+      return isKeyNotMatch(builtInKeyName, eventKeyName)
+    } else if (mappedKeyCode) {
+      return isKeyNotMatch(mappedKeyCode, eventKeyCode)
+    } else if (eventKeyName) {
+      return hyphenate(eventKeyName) !== key
+    }
+    return eventKeyCode === undefined
+  }
+
+  /*  */
+
+  /**
+   * Runtime helper for merging v-bind="object" into a VNode's data.
+   */
+  function bindObjectProps (
+    data,
+    tag,
+    value,
+    asProp,
+    isSync
+  ) {
+    if (value) {
+      if (!isObject(value)) {
+        warn(
+          'v-bind without argument expects an Object or Array value',
+          this
+        );
+      } else {
+        if (Array.isArray(value)) {
+          value = toObject(value);
+        }
+        var hash;
+        var loop = function ( key ) {
+          if (
+            key === 'class' ||
+            key === 'style' ||
+            isReservedAttribute(key)
+          ) {
+            hash = data;
+          } else {
+            var type = data.attrs && data.attrs.type;
+            hash = asProp || config.mustUseProp(tag, type, key)
+              ? data.domProps || (data.domProps = {})
+              : data.attrs || (data.attrs = {});
+          }
+          var camelizedKey = camelize(key);
+          var hyphenatedKey = hyphenate(key);
+          if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {
+            hash[key] = value[key];
+
+            if (isSync) {
+              var on = data.on || (data.on = {});
+              on[("update:" + key)] = function ($event) {
+                value[key] = $event;
+              };
+            }
+          }
+        };
+
+        for (var key in value) loop( key );
+      }
+    }
+    return data
+  }
+
+  /*  */
+
+  /**
+   * Runtime helper for rendering static trees.
+   */
+  function renderStatic (
+    index,
+    isInFor
+  ) {
+    var cached = this._staticTrees || (this._staticTrees = []);
+    var tree = cached[index];
+    // if has already-rendered static tree and not inside v-for,
+    // we can reuse the same tree.
+    if (tree && !isInFor) {
+      return tree
+    }
+    // otherwise, render a fresh tree.
+    tree = cached[index] = this.$options.staticRenderFns[index].call(
+      this._renderProxy,
+      null,
+      this // for render fns generated for functional component templates
+    );
+    markStatic(tree, ("__static__" + index), false);
+    return tree
+  }
+
+  /**
+   * Runtime helper for v-once.
+   * Effectively it means marking the node as static with a unique key.
+   */
+  function markOnce (
+    tree,
+    index,
+    key
+  ) {
+    markStatic(tree, ("__once__" + index + (key ? ("_" + key) : "")), true);
+    return tree
+  }
+
+  function markStatic (
+    tree,
+    key,
+    isOnce
+  ) {
+    if (Array.isArray(tree)) {
+      for (var i = 0; i < tree.length; i++) {
+        if (tree[i] && typeof tree[i] !== 'string') {
+          markStaticNode(tree[i], (key + "_" + i), isOnce);
+        }
+      }
+    } else {
+      markStaticNode(tree, key, isOnce);
+    }
+  }
+
+  function markStaticNode (node, key, isOnce) {
+    node.isStatic = true;
+    node.key = key;
+    node.isOnce = isOnce;
+  }
+
+  /*  */
+
+  function bindObjectListeners (data, value) {
+    if (value) {
+      if (!isPlainObject(value)) {
+        warn(
+          'v-on without argument expects an Object value',
+          this
+        );
+      } else {
+        var on = data.on = data.on ? extend({}, data.on) : {};
+        for (var key in value) {
+          var existing = on[key];
+          var ours = value[key];
+          on[key] = existing ? [].concat(existing, ours) : ours;
+        }
+      }
+    }
+    return data
+  }
+
+  /*  */
+
+  function resolveScopedSlots (
+    fns, // see flow/vnode
+    res,
+    // the following are added in 2.6
+    hasDynamicKeys,
+    contentHashKey
+  ) {
+    res = res || { $stable: !hasDynamicKeys };
+    for (var i = 0; i < fns.length; i++) {
+      var slot = fns[i];
+      if (Array.isArray(slot)) {
+        resolveScopedSlots(slot, res, hasDynamicKeys);
+      } else if (slot) {
+        // marker for reverse proxying v-slot without scope on this.$slots
+        if (slot.proxy) {
+          slot.fn.proxy = true;
+        }
+        res[slot.key] = slot.fn;
+      }
+    }
+    if (contentHashKey) {
+      (res).$key = contentHashKey;
+    }
+    return res
+  }
+
+  /*  */
+
+  function bindDynamicKeys (baseObj, values) {
+    for (var i = 0; i < values.length; i += 2) {
+      var key = values[i];
+      if (typeof key === 'string' && key) {
+        baseObj[values[i]] = values[i + 1];
+      } else if (key !== '' && key !== null) {
+        // null is a special value for explicitly removing a binding
+        warn(
+          ("Invalid value for dynamic directive argument (expected string or null): " + key),
+          this
+        );
+      }
+    }
+    return baseObj
+  }
+
+  // helper to dynamically append modifier runtime markers to event names.
+  // ensure only append when value is already string, otherwise it will be cast
+  // to string and cause the type check to miss.
+  function prependModifier (value, symbol) {
+    return typeof value === 'string' ? symbol + value : value
+  }
+
+  /*  */
+
+  function installRenderHelpers (target) {
+    target._o = markOnce;
+    target._n = toNumber;
+    target._s = toString;
+    target._l = renderList;
+    target._t = renderSlot;
+    target._q = looseEqual;
+    target._i = looseIndexOf;
+    target._m = renderStatic;
+    target._f = resolveFilter;
+    target._k = checkKeyCodes;
+    target._b = bindObjectProps;
+    target._v = createTextVNode;
+    target._e = createEmptyVNode;
+    target._u = resolveScopedSlots;
+    target._g = bindObjectListeners;
+    target._d = bindDynamicKeys;
+    target._p = prependModifier;
+  }
+
+  /*  */
+
+  function FunctionalRenderContext (
+    data,
+    props,
+    children,
+    parent,
+    Ctor
+  ) {
+    var this$1 = this;
+
+    var options = Ctor.options;
+    // ensure the createElement function in functional components
+    // gets a unique context - this is necessary for correct named slot check
+    var contextVm;
+    if (hasOwn(parent, '_uid')) {
+      contextVm = Object.create(parent);
+      // $flow-disable-line
+      contextVm._original = parent;
+    } else {
+      // the context vm passed in is a functional context as well.
+      // in this case we want to make sure we are able to get a hold to the
+      // real context instance.
+      contextVm = parent;
+      // $flow-disable-line
+      parent = parent._original;
+    }
+    var isCompiled = isTrue(options._compiled);
+    var needNormalization = !isCompiled;
+
+    this.data = data;
+    this.props = props;
+    this.children = children;
+    this.parent = parent;
+    this.listeners = data.on || emptyObject;
+    this.injections = resolveInject(options.inject, parent);
+    this.slots = function () {
+      if (!this$1.$slots) {
+        normalizeScopedSlots(
+          data.scopedSlots,
+          this$1.$slots = resolveSlots(children, parent)
+        );
+      }
+      return this$1.$slots
+    };
+
+    Object.defineProperty(this, 'scopedSlots', ({
+      enumerable: true,
+      get: function get () {
+        return normalizeScopedSlots(data.scopedSlots, this.slots())
+      }
+    }));
+
+    // support for compiled functional template
+    if (isCompiled) {
+      // exposing $options for renderStatic()
+      this.$options = options;
+      // pre-resolve slots for renderSlot()
+      this.$slots = this.slots();
+      this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);
+    }
+
+    if (options._scopeId) {
+      this._c = function (a, b, c, d) {
+        var vnode = createElement(contextVm, a, b, c, d, needNormalization);
+        if (vnode && !Array.isArray(vnode)) {
+          vnode.fnScopeId = options._scopeId;
+          vnode.fnContext = parent;
+        }
+        return vnode
+      };
+    } else {
+      this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };
+    }
+  }
+
+  installRenderHelpers(FunctionalRenderContext.prototype);
+
+  function createFunctionalComponent (
+    Ctor,
+    propsData,
+    data,
+    contextVm,
+    children
+  ) {
+    var options = Ctor.options;
+    var props = {};
+    var propOptions = options.props;
+    if (isDef(propOptions)) {
+      for (var key in propOptions) {
+        props[key] = validateProp(key, propOptions, propsData || emptyObject);
+      }
+    } else {
+      if (isDef(data.attrs)) { mergeProps(props, data.attrs); }
+      if (isDef(data.props)) { mergeProps(props, data.props); }
+    }
+
+    var renderContext = new FunctionalRenderContext(
+      data,
+      props,
+      children,
+      contextVm,
+      Ctor
+    );
+
+    var vnode = options.render.call(null, renderContext._c, renderContext);
+
+    if (vnode instanceof VNode) {
+      return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext)
+    } else if (Array.isArray(vnode)) {
+      var vnodes = normalizeChildren(vnode) || [];
+      var res = new Array(vnodes.length);
+      for (var i = 0; i < vnodes.length; i++) {
+        res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);
+      }
+      return res
+    }
+  }
+
+  function cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) {
+    // #7817 clone node before setting fnContext, otherwise if the node is reused
+    // (e.g. it was from a cached normal slot) the fnContext causes named slots
+    // that should not be matched to match.
+    var clone = cloneVNode(vnode);
+    clone.fnContext = contextVm;
+    clone.fnOptions = options;
+    {
+      (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;
+    }
+    if (data.slot) {
+      (clone.data || (clone.data = {})).slot = data.slot;
+    }
+    return clone
+  }
+
+  function mergeProps (to, from) {
+    for (var key in from) {
+      to[camelize(key)] = from[key];
+    }
+  }
+
+  /*  */
+
+  /*  */
+
+  /*  */
+
+  /*  */
+
+  // inline hooks to be invoked on component VNodes during patch
+  var componentVNodeHooks = {
+    init: function init (vnode, hydrating) {
+      if (
+        vnode.componentInstance &&
+        !vnode.componentInstance._isDestroyed &&
+        vnode.data.keepAlive
+      ) {
+        // kept-alive components, treat as a patch
+        var mountedNode = vnode; // work around flow
+        componentVNodeHooks.prepatch(mountedNode, mountedNode);
+      } else {
+        var child = vnode.componentInstance = createComponentInstanceForVnode(
+          vnode,
+          activeInstance
+        );
+        child.$mount(hydrating ? vnode.elm : undefined, hydrating);
+      }
+    },
+
+    prepatch: function prepatch (oldVnode, vnode) {
+      var options = vnode.componentOptions;
+      var child = vnode.componentInstance = oldVnode.componentInstance;
+      updateChildComponent(
+        child,
+        options.propsData, // updated props
+        options.listeners, // updated listeners
+        vnode, // new parent vnode
+        options.children // new children
+      );
+    },
+
+    insert: function insert (vnode) {
+      var context = vnode.context;
+      var componentInstance = vnode.componentInstance;
+      if (!componentInstance._isMounted) {
+        componentInstance._isMounted = true;
+        callHook(componentInstance, 'mounted');
+      }
+      if (vnode.data.keepAlive) {
+        if (context._isMounted) {
+          // vue-router#1212
+          // During updates, a kept-alive component's child components may
+          // change, so directly walking the tree here may call activated hooks
+          // on incorrect children. Instead we push them into a queue which will
+          // be processed after the whole patch process ended.
+          queueActivatedComponent(componentInstance);
+        } else {
+          activateChildComponent(componentInstance, true /* direct */);
+        }
+      }
+    },
+
+    destroy: function destroy (vnode) {
+      var componentInstance = vnode.componentInstance;
+      if (!componentInstance._isDestroyed) {
+        if (!vnode.data.keepAlive) {
+          componentInstance.$destroy();
+        } else {
+          deactivateChildComponent(componentInstance, true /* direct */);
+        }
+      }
+    }
+  };
+
+  var hooksToMerge = Object.keys(componentVNodeHooks);
+
+  function createComponent (
+    Ctor,
+    data,
+    context,
+    children,
+    tag
+  ) {
+    if (isUndef(Ctor)) {
+      return
+    }
+
+    var baseCtor = context.$options._base;
+
+    // plain options object: turn it into a constructor
+    if (isObject(Ctor)) {
+      Ctor = baseCtor.extend(Ctor);
+    }
+
+    // if at this stage it's not a constructor or an async component factory,
+    // reject.
+    if (typeof Ctor !== 'function') {
+      {
+        warn(("Invalid Component definition: " + (String(Ctor))), context);
+      }
+      return
+    }
+
+    // async component
+    var asyncFactory;
+    if (isUndef(Ctor.cid)) {
+      asyncFactory = Ctor;
+      Ctor = resolveAsyncComponent(asyncFactory, baseCtor);
+      if (Ctor === undefined) {
+        // return a placeholder node for async component, which is rendered
+        // as a comment node but preserves all the raw information for the node.
+        // the information will be used for async server-rendering and hydration.
+        return createAsyncPlaceholder(
+          asyncFactory,
+          data,
+          context,
+          children,
+          tag
+        )
+      }
+    }
+
+    data = data || {};
+
+    // resolve constructor options in case global mixins are applied after
+    // component constructor creation
+    resolveConstructorOptions(Ctor);
+
+    // transform component v-model data into props & events
+    if (isDef(data.model)) {
+      transformModel(Ctor.options, data);
+    }
+
+    // extract props
+    var propsData = extractPropsFromVNodeData(data, Ctor, tag);
+
+    // functional component
+    if (isTrue(Ctor.options.functional)) {
+      return createFunctionalComponent(Ctor, propsData, data, context, children)
+    }
+
+    // extract listeners, since these needs to be treated as
+    // child component listeners instead of DOM listeners
+    var listeners = data.on;
+    // replace with listeners with .native modifier
+    // so it gets processed during parent component patch.
+    data.on = data.nativeOn;
+
+    if (isTrue(Ctor.options.abstract)) {
+      // abstract components do not keep anything
+      // other than props & listeners & slot
+
+      // work around flow
+      var slot = data.slot;
+      data = {};
+      if (slot) {
+        data.slot = slot;
+      }
+    }
+
+    // install component management hooks onto the placeholder node
+    installComponentHooks(data);
+
+    // return a placeholder vnode
+    var name = Ctor.options.name || tag;
+    var vnode = new VNode(
+      ("vue-component-" + (Ctor.cid) + (name ? ("-" + name) : '')),
+      data, undefined, undefined, undefined, context,
+      { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },
+      asyncFactory
+    );
+
+    return vnode
+  }
+
+  function createComponentInstanceForVnode (
+    // we know it's MountedComponentVNode but flow doesn't
+    vnode,
+    // activeInstance in lifecycle state
+    parent
+  ) {
+    var options = {
+      _isComponent: true,
+      _parentVnode: vnode,
+      parent: parent
+    };
+    // check inline-template render functions
+    var inlineTemplate = vnode.data.inlineTemplate;
+    if (isDef(inlineTemplate)) {
+      options.render = inlineTemplate.render;
+      options.staticRenderFns = inlineTemplate.staticRenderFns;
+    }
+    return new vnode.componentOptions.Ctor(options)
+  }
+
+  function installComponentHooks (data) {
+    var hooks = data.hook || (data.hook = {});
+    for (var i = 0; i < hooksToMerge.length; i++) {
+      var key = hooksToMerge[i];
+      var existing = hooks[key];
+      var toMerge = componentVNodeHooks[key];
+      if (existing !== toMerge && !(existing && existing._merged)) {
+        hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;
+      }
+    }
+  }
+
+  function mergeHook$1 (f1, f2) {
+    var merged = function (a, b) {
+      // flow complains about extra args which is why we use any
+      f1(a, b);
+      f2(a, b);
+    };
+    merged._merged = true;
+    return merged
+  }
+
+  // transform component v-model info (value and callback) into
+  // prop and event handler respectively.
+  function transformModel (options, data) {
+    var prop = (options.model && options.model.prop) || 'value';
+    var event = (options.model && options.model.event) || 'input'
+    ;(data.attrs || (data.attrs = {}))[prop] = data.model.value;
+    var on = data.on || (data.on = {});
+    var existing = on[event];
+    var callback = data.model.callback;
+    if (isDef(existing)) {
+      if (
+        Array.isArray(existing)
+          ? existing.indexOf(callback) === -1
+          : existing !== callback
+      ) {
+        on[event] = [callback].concat(existing);
+      }
+    } else {
+      on[event] = callback;
+    }
+  }
+
+  /*  */
+
+  var SIMPLE_NORMALIZE = 1;
+  var ALWAYS_NORMALIZE = 2;
+
+  // wrapper function for providing a more flexible interface
+  // without getting yelled at by flow
+  function createElement (
+    context,
+    tag,
+    data,
+    children,
+    normalizationType,
+    alwaysNormalize
+  ) {
+    if (Array.isArray(data) || isPrimitive(data)) {
+      normalizationType = children;
+      children = data;
+      data = undefined;
+    }
+    if (isTrue(alwaysNormalize)) {
+      normalizationType = ALWAYS_NORMALIZE;
+    }
+    return _createElement(context, tag, data, children, normalizationType)
+  }
+
+  function _createElement (
+    context,
+    tag,
+    data,
+    children,
+    normalizationType
+  ) {
+    if (isDef(data) && isDef((data).__ob__)) {
+      warn(
+        "Avoid using observed data object as vnode data: " + (JSON.stringify(data)) + "\n" +
+        'Always create fresh vnode data objects in each render!',
+        context
+      );
+      return createEmptyVNode()
+    }
+    // object syntax in v-bind
+    if (isDef(data) && isDef(data.is)) {
+      tag = data.is;
+    }
+    if (!tag) {
+      // in case of component :is set to falsy value
+      return createEmptyVNode()
+    }
+    // warn against non-primitive key
+    if (isDef(data) && isDef(data.key) && !isPrimitive(data.key)
+    ) {
+      {
+        warn(
+          'Avoid using non-primitive value as key, ' +
+          'use string/number value instead.',
+          context
+        );
+      }
+    }
+    // support single function children as default scoped slot
+    if (Array.isArray(children) &&
+      typeof children[0] === 'function'
+    ) {
+      data = data || {};
+      data.scopedSlots = { default: children[0] };
+      children.length = 0;
+    }
+    if (normalizationType === ALWAYS_NORMALIZE) {
+      children = normalizeChildren(children);
+    } else if (normalizationType === SIMPLE_NORMALIZE) {
+      children = simpleNormalizeChildren(children);
+    }
+    var vnode, ns;
+    if (typeof tag === 'string') {
+      var Ctor;
+      ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);
+      if (config.isReservedTag(tag)) {
+        // platform built-in elements
+        if (isDef(data) && isDef(data.nativeOn) && data.tag !== 'component') {
+          warn(
+            ("The .native modifier for v-on is only valid on components but it was used on <" + tag + ">."),
+            context
+          );
+        }
+        vnode = new VNode(
+          config.parsePlatformTagName(tag), data, children,
+          undefined, undefined, context
+        );
+      } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {
+        // component
+        vnode = createComponent(Ctor, data, context, children, tag);
+      } else {
+        // unknown or unlisted namespaced elements
+        // check at runtime because it may get assigned a namespace when its
+        // parent normalizes children
+        vnode = new VNode(
+          tag, data, children,
+          undefined, undefined, context
+        );
+      }
+    } else {
+      // direct component options / constructor
+      vnode = createComponent(tag, data, context, children);
+    }
+    if (Array.isArray(vnode)) {
+      return vnode
+    } else if (isDef(vnode)) {
+      if (isDef(ns)) { applyNS(vnode, ns); }
+      if (isDef(data)) { registerDeepBindings(data); }
+      return vnode
+    } else {
+      return createEmptyVNode()
+    }
+  }
+
+  function applyNS (vnode, ns, force) {
+    vnode.ns = ns;
+    if (vnode.tag === 'foreignObject') {
+      // use default namespace inside foreignObject
+      ns = undefined;
+      force = true;
+    }
+    if (isDef(vnode.children)) {
+      for (var i = 0, l = vnode.children.length; i < l; i++) {
+        var child = vnode.children[i];
+        if (isDef(child.tag) && (
+          isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {
+          applyNS(child, ns, force);
+        }
+      }
+    }
+  }
+
+  // ref #5318
+  // necessary to ensure parent re-render when deep bindings like :style and
+  // :class are used on slot nodes
+  function registerDeepBindings (data) {
+    if (isObject(data.style)) {
+      traverse(data.style);
+    }
+    if (isObject(data.class)) {
+      traverse(data.class);
+    }
+  }
+
+  /*  */
+
+  function initRender (vm) {
+    vm._vnode = null; // the root of the child tree
+    vm._staticTrees = null; // v-once cached trees
+    var options = vm.$options;
+    var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree
+    var renderContext = parentVnode && parentVnode.context;
+    vm.$slots = resolveSlots(options._renderChildren, renderContext);
+    vm.$scopedSlots = emptyObject;
+    // bind the createElement fn to this instance
+    // so that we get proper render context inside it.
+    // args order: tag, data, children, normalizationType, alwaysNormalize
+    // internal version is used by render functions compiled from templates
+    vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };
+    // normalization is always applied for the public version, used in
+    // user-written render functions.
+    vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };
+
+    // $attrs & $listeners are exposed for easier HOC creation.
+    // they need to be reactive so that HOCs using them are always updated
+    var parentData = parentVnode && parentVnode.data;
+
+    /* istanbul ignore else */
+    {
+      defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {
+        !isUpdatingChildComponent && warn("$attrs is readonly.", vm);
+      }, true);
+      defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {
+        !isUpdatingChildComponent && warn("$listeners is readonly.", vm);
+      }, true);
+    }
+  }
+
+  var currentRenderingInstance = null;
+
+  function renderMixin (Vue) {
+    // install runtime convenience helpers
+    installRenderHelpers(Vue.prototype);
+
+    Vue.prototype.$nextTick = function (fn) {
+      return nextTick(fn, this)
+    };
+
+    Vue.prototype._render = function () {
+      var vm = this;
+      var ref = vm.$options;
+      var render = ref.render;
+      var _parentVnode = ref._parentVnode;
+
+      if (_parentVnode) {
+        vm.$scopedSlots = normalizeScopedSlots(
+          _parentVnode.data.scopedSlots,
+          vm.$slots,
+          vm.$scopedSlots
+        );
+      }
+
+      // set parent vnode. this allows render functions to have access
+      // to the data on the placeholder node.
+      vm.$vnode = _parentVnode;
+      // render self
+      var vnode;
+      try {
+        // There's no need to maintain a stack because all render fns are called
+        // separately from one another. Nested component's render fns are called
+        // when parent component is patched.
+        currentRenderingInstance = vm;
+        vnode = render.call(vm._renderProxy, vm.$createElement);
+      } catch (e) {
+        handleError(e, vm, "render");
+        // return error render result,
+        // or previous vnode to prevent render error causing blank component
+        /* istanbul ignore else */
+        if (vm.$options.renderError) {
+          try {
+            vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);
+          } catch (e) {
+            handleError(e, vm, "renderError");
+            vnode = vm._vnode;
+          }
+        } else {
+          vnode = vm._vnode;
+        }
+      } finally {
+        currentRenderingInstance = null;
+      }
+      // if the returned array contains only a single node, allow it
+      if (Array.isArray(vnode) && vnode.length === 1) {
+        vnode = vnode[0];
+      }
+      // return empty vnode in case the render function errored out
+      if (!(vnode instanceof VNode)) {
+        if (Array.isArray(vnode)) {
+          warn(
+            'Multiple root nodes returned from render function. Render function ' +
+            'should return a single root node.',
+            vm
+          );
+        }
+        vnode = createEmptyVNode();
+      }
+      // set parent
+      vnode.parent = _parentVnode;
+      return vnode
+    };
+  }
+
+  /*  */
+
+  function ensureCtor (comp, base) {
+    if (
+      comp.__esModule ||
+      (hasSymbol && comp[Symbol.toStringTag] === 'Module')
+    ) {
+      comp = comp.default;
+    }
+    return isObject(comp)
+      ? base.extend(comp)
+      : comp
+  }
+
+  function createAsyncPlaceholder (
+    factory,
+    data,
+    context,
+    children,
+    tag
+  ) {
+    var node = createEmptyVNode();
+    node.asyncFactory = factory;
+    node.asyncMeta = { data: data, context: context, children: children, tag: tag };
+    return node
+  }
+
+  function resolveAsyncComponent (
+    factory,
+    baseCtor
+  ) {
+    if (isTrue(factory.error) && isDef(factory.errorComp)) {
+      return factory.errorComp
+    }
+
+    if (isDef(factory.resolved)) {
+      return factory.resolved
+    }
+
+    var owner = currentRenderingInstance;
+    if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
+      // already pending
+      factory.owners.push(owner);
+    }
+
+    if (isTrue(factory.loading) && isDef(factory.loadingComp)) {
+      return factory.loadingComp
+    }
+
+    if (owner && !isDef(factory.owners)) {
+      var owners = factory.owners = [owner];
+      var sync = true;
+      var timerLoading = null;
+      var timerTimeout = null
+
+      ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });
+
+      var forceRender = function (renderCompleted) {
+        for (var i = 0, l = owners.length; i < l; i++) {
+          (owners[i]).$forceUpdate();
+        }
+
+        if (renderCompleted) {
+          owners.length = 0;
+          if (timerLoading !== null) {
+            clearTimeout(timerLoading);
+            timerLoading = null;
+          }
+          if (timerTimeout !== null) {
+            clearTimeout(timerTimeout);
+            timerTimeout = null;
+          }
+        }
+      };
+
+      var resolve = once(function (res) {
+        // cache resolved
+        factory.resolved = ensureCtor(res, baseCtor);
+        // invoke callbacks only if this is not a synchronous resolve
+        // (async resolves are shimmed as synchronous during SSR)
+        if (!sync) {
+          forceRender(true);
+        } else {
+          owners.length = 0;
+        }
+      });
+
+      var reject = once(function (reason) {
+        warn(
+          "Failed to resolve async component: " + (String(factory)) +
+          (reason ? ("\nReason: " + reason) : '')
+        );
+        if (isDef(factory.errorComp)) {
+          factory.error = true;
+          forceRender(true);
+        }
+      });
+
+      var res = factory(resolve, reject);
+
+      if (isObject(res)) {
+        if (isPromise(res)) {
+          // () => Promise
+          if (isUndef(factory.resolved)) {
+            res.then(resolve, reject);
+          }
+        } else if (isPromise(res.component)) {
+          res.component.then(resolve, reject);
+
+          if (isDef(res.error)) {
+            factory.errorComp = ensureCtor(res.error, baseCtor);
+          }
+
+          if (isDef(res.loading)) {
+            factory.loadingComp = ensureCtor(res.loading, baseCtor);
+            if (res.delay === 0) {
+              factory.loading = true;
+            } else {
+              timerLoading = setTimeout(function () {
+                timerLoading = null;
+                if (isUndef(factory.resolved) && isUndef(factory.error)) {
+                  factory.loading = true;
+                  forceRender(false);
+                }
+              }, res.delay || 200);
+            }
+          }
+
+          if (isDef(res.timeout)) {
+            timerTimeout = setTimeout(function () {
+              timerTimeout = null;
+              if (isUndef(factory.resolved)) {
+                reject(
+                  "timeout (" + (res.timeout) + "ms)"
+                );
+              }
+            }, res.timeout);
+          }
+        }
+      }
+
+      sync = false;
+      // return in case resolved synchronously
+      return factory.loading
+        ? factory.loadingComp
+        : factory.resolved
+    }
+  }
+
+  /*  */
+
+  function getFirstComponentChild (children) {
+    if (Array.isArray(children)) {
+      for (var i = 0; i < children.length; i++) {
+        var c = children[i];
+        if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {
+          return c
+        }
+      }
+    }
+  }
+
+  /*  */
+
+  /*  */
+
+  function initEvents (vm) {
+    vm._events = Object.create(null);
+    vm._hasHookEvent = false;
+    // init parent attached events
+    var listeners = vm.$options._parentListeners;
+    if (listeners) {
+      updateComponentListeners(vm, listeners);
+    }
+  }
+
+  var target;
+
+  function add (event, fn) {
+    target.$on(event, fn);
+  }
+
+  function remove$1 (event, fn) {
+    target.$off(event, fn);
+  }
+
+  function createOnceHandler (event, fn) {
+    var _target = target;
+    return function onceHandler () {
+      var res = fn.apply(null, arguments);
+      if (res !== null) {
+        _target.$off(event, onceHandler);
+      }
+    }
+  }
+
+  function updateComponentListeners (
+    vm,
+    listeners,
+    oldListeners
+  ) {
+    target = vm;
+    updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);
+    target = undefined;
+  }
+
+  function eventsMixin (Vue) {
+    var hookRE = /^hook:/;
+    Vue.prototype.$on = function (event, fn) {
+      var vm = this;
+      if (Array.isArray(event)) {
+        for (var i = 0, l = event.length; i < l; i++) {
+          vm.$on(event[i], fn);
+        }
+      } else {
+        (vm._events[event] || (vm._events[event] = [])).push(fn);
+        // optimize hook:event cost by using a boolean flag marked at registration
+        // instead of a hash lookup
+        if (hookRE.test(event)) {
+          vm._hasHookEvent = true;
+        }
+      }
+      return vm
+    };
+
+    Vue.prototype.$once = function (event, fn) {
+      var vm = this;
+      function on () {
+        vm.$off(event, on);
+        fn.apply(vm, arguments);
+      }
+      on.fn = fn;
+      vm.$on(event, on);
+      return vm
+    };
+
+    Vue.prototype.$off = function (event, fn) {
+      var vm = this;
+      // all
+      if (!arguments.length) {
+        vm._events = Object.create(null);
+        return vm
+      }
+      // array of events
+      if (Array.isArray(event)) {
+        for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {
+          vm.$off(event[i$1], fn);
+        }
+        return vm
+      }
+      // specific event
+      var cbs = vm._events[event];
+      if (!cbs) {
+        return vm
+      }
+      if (!fn) {
+        vm._events[event] = null;
+        return vm
+      }
+      // specific handler
+      var cb;
+      var i = cbs.length;
+      while (i--) {
+        cb = cbs[i];
+        if (cb === fn || cb.fn === fn) {
+          cbs.splice(i, 1);
+          break
+        }
+      }
+      return vm
+    };
+
+    Vue.prototype.$emit = function (event) {
+      var vm = this;
+      {
+        var lowerCaseEvent = event.toLowerCase();
+        if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {
+          tip(
+            "Event \"" + lowerCaseEvent + "\" is emitted in component " +
+            (formatComponentName(vm)) + " but the handler is registered for \"" + event + "\". " +
+            "Note that HTML attributes are case-insensitive and you cannot use " +
+            "v-on to listen to camelCase events when using in-DOM templates. " +
+            "You should probably use \"" + (hyphenate(event)) + "\" instead of \"" + event + "\"."
+          );
+        }
+      }
+      var cbs = vm._events[event];
+      if (cbs) {
+        cbs = cbs.length > 1 ? toArray(cbs) : cbs;
+        var args = toArray(arguments, 1);
+        var info = "event handler for \"" + event + "\"";
+        for (var i = 0, l = cbs.length; i < l; i++) {
+          invokeWithErrorHandling(cbs[i], vm, args, vm, info);
+        }
+      }
+      return vm
+    };
+  }
+
+  /*  */
+
+  var activeInstance = null;
+  var isUpdatingChildComponent = false;
+
+  function setActiveInstance(vm) {
+    var prevActiveInstance = activeInstance;
+    activeInstance = vm;
+    return function () {
+      activeInstance = prevActiveInstance;
+    }
+  }
+
+  function initLifecycle (vm) {
+    var options = vm.$options;
+
+    // locate first non-abstract parent
+    var parent = options.parent;
+    if (parent && !options.abstract) {
+      while (parent.$options.abstract && parent.$parent) {
+        parent = parent.$parent;
+      }
+      parent.$children.push(vm);
+    }
+
+    vm.$parent = parent;
+    vm.$root = parent ? parent.$root : vm;
+
+    vm.$children = [];
+    vm.$refs = {};
+
+    vm._watcher = null;
+    vm._inactive = null;
+    vm._directInactive = false;
+    vm._isMounted = false;
+    vm._isDestroyed = false;
+    vm._isBeingDestroyed = false;
+  }
+
+  function lifecycleMixin (Vue) {
+    Vue.prototype._update = function (vnode, hydrating) {
+      var vm = this;
+      var prevEl = vm.$el;
+      var prevVnode = vm._vnode;
+      var restoreActiveInstance = setActiveInstance(vm);
+      vm._vnode = vnode;
+      // Vue.prototype.__patch__ is injected in entry points
+      // based on the rendering backend used.
+      if (!prevVnode) {
+        // initial render
+        vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);
+      } else {
+        // updates
+        vm.$el = vm.__patch__(prevVnode, vnode);
+      }
+      restoreActiveInstance();
+      // update __vue__ reference
+      if (prevEl) {
+        prevEl.__vue__ = null;
+      }
+      if (vm.$el) {
+        vm.$el.__vue__ = vm;
+      }
+      // if parent is an HOC, update its $el as well
+      if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {
+        vm.$parent.$el = vm.$el;
+      }
+      // updated hook is called by the scheduler to ensure that children are
+      // updated in a parent's updated hook.
+    };
+
+    Vue.prototype.$forceUpdate = function () {
+      var vm = this;
+      if (vm._watcher) {
+        vm._watcher.update();
+      }
+    };
+
+    Vue.prototype.$destroy = function () {
+      var vm = this;
+      if (vm._isBeingDestroyed) {
+        return
+      }
+      callHook(vm, 'beforeDestroy');
+      vm._isBeingDestroyed = true;
+      // remove self from parent
+      var parent = vm.$parent;
+      if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {
+        remove(parent.$children, vm);
+      }
+      // teardown watchers
+      if (vm._watcher) {
+        vm._watcher.teardown();
+      }
+      var i = vm._watchers.length;
+      while (i--) {
+        vm._watchers[i].teardown();
+      }
+      // remove reference from data ob
+      // frozen object may not have observer.
+      if (vm._data.__ob__) {
+        vm._data.__ob__.vmCount--;
+      }
+      // call the last hook...
+      vm._isDestroyed = true;
+      // invoke destroy hooks on current rendered tree
+      vm.__patch__(vm._vnode, null);
+      // fire destroyed hook
+      callHook(vm, 'destroyed');
+      // turn off all instance listeners.
+      vm.$off();
+      // remove __vue__ reference
+      if (vm.$el) {
+        vm.$el.__vue__ = null;
+      }
+      // release circular reference (#6759)
+      if (vm.$vnode) {
+        vm.$vnode.parent = null;
+      }
+    };
+  }
+
+  function mountComponent (
+    vm,
+    el,
+    hydrating
+  ) {
+    vm.$el = el;
+    if (!vm.$options.render) {
+      vm.$options.render = createEmptyVNode;
+      {
+        /* istanbul ignore if */
+        if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||
+          vm.$options.el || el) {
+          warn(
+            'You are using the runtime-only build of Vue where the template ' +
+            'compiler is not available. Either pre-compile the templates into ' +
+            'render functions, or use the compiler-included build.',
+            vm
+          );
+        } else {
+          warn(
+            'Failed to mount component: template or render function not defined.',
+            vm
+          );
+        }
+      }
+    }
+    callHook(vm, 'beforeMount');
+
+    var updateComponent;
+    /* istanbul ignore if */
+    if (config.performance && mark) {
+      updateComponent = function () {
+        var name = vm._name;
+        var id = vm._uid;
+        var startTag = "vue-perf-start:" + id;
+        var endTag = "vue-perf-end:" + id;
+
+        mark(startTag);
+        var vnode = vm._render();
+        mark(endTag);
+        measure(("vue " + name + " render"), startTag, endTag);
+
+        mark(startTag);
+        vm._update(vnode, hydrating);
+        mark(endTag);
+        measure(("vue " + name + " patch"), startTag, endTag);
+      };
+    } else {
+      updateComponent = function () {
+        vm._update(vm._render(), hydrating);
+      };
+    }
+
+    // we set this to vm._watcher inside the watcher's constructor
+    // since the watcher's initial patch may call $forceUpdate (e.g. inside child
+    // component's mounted hook), which relies on vm._watcher being already defined
+    new Watcher(vm, updateComponent, noop, {
+      before: function before () {
+        if (vm._isMounted && !vm._isDestroyed) {
+          callHook(vm, 'beforeUpdate');
+        }
+      }
+    }, true /* isRenderWatcher */);
+    hydrating = false;
+
+    // manually mounted instance, call mounted on self
+    // mounted is called for render-created child components in its inserted hook
+    if (vm.$vnode == null) {
+      vm._isMounted = true;
+      callHook(vm, 'mounted');
+    }
+    return vm
+  }
+
+  function updateChildComponent (
+    vm,
+    propsData,
+    listeners,
+    parentVnode,
+    renderChildren
+  ) {
+    {
+      isUpdatingChildComponent = true;
+    }
+
+    // determine whether component has slot children
+    // we need to do this before overwriting $options._renderChildren.
+
+    // check if there are dynamic scopedSlots (hand-written or compiled but with
+    // dynamic slot names). Static scoped slots compiled from template has the
+    // "$stable" marker.
+    var newScopedSlots = parentVnode.data.scopedSlots;
+    var oldScopedSlots = vm.$scopedSlots;
+    var hasDynamicScopedSlot = !!(
+      (newScopedSlots && !newScopedSlots.$stable) ||
+      (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||
+      (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key) ||
+      (!newScopedSlots && vm.$scopedSlots.$key)
+    );
+
+    // Any static slot children from the parent may have changed during parent's
+    // update. Dynamic scoped slots may also have changed. In such cases, a forced
+    // update is necessary to ensure correctness.
+    var needsForceUpdate = !!(
+      renderChildren ||               // has new static slots
+      vm.$options._renderChildren ||  // has old static slots
+      hasDynamicScopedSlot
+    );
+
+    vm.$options._parentVnode = parentVnode;
+    vm.$vnode = parentVnode; // update vm's placeholder node without re-render
+
+    if (vm._vnode) { // update child tree's parent
+      vm._vnode.parent = parentVnode;
+    }
+    vm.$options._renderChildren = renderChildren;
+
+    // update $attrs and $listeners hash
+    // these are also reactive so they may trigger child update if the child
+    // used them during render
+    vm.$attrs = parentVnode.data.attrs || emptyObject;
+    vm.$listeners = listeners || emptyObject;
+
+    // update props
+    if (propsData && vm.$options.props) {
+      toggleObserving(false);
+      var props = vm._props;
+      var propKeys = vm.$options._propKeys || [];
+      for (var i = 0; i < propKeys.length; i++) {
+        var key = propKeys[i];
+        var propOptions = vm.$options.props; // wtf flow?
+        props[key] = validateProp(key, propOptions, propsData, vm);
+      }
+      toggleObserving(true);
+      // keep a copy of raw propsData
+      vm.$options.propsData = propsData;
+    }
+
+    // update listeners
+    listeners = listeners || emptyObject;
+    var oldListeners = vm.$options._parentListeners;
+    vm.$options._parentListeners = listeners;
+    updateComponentListeners(vm, listeners, oldListeners);
+
+    // resolve slots + force update if has children
+    if (needsForceUpdate) {
+      vm.$slots = resolveSlots(renderChildren, parentVnode.context);
+      vm.$forceUpdate();
+    }
+
+    {
+      isUpdatingChildComponent = false;
+    }
+  }
+
+  function isInInactiveTree (vm) {
+    while (vm && (vm = vm.$parent)) {
+      if (vm._inactive) { return true }
+    }
+    return false
+  }
+
+  function activateChildComponent (vm, direct) {
+    if (direct) {
+      vm._directInactive = false;
+      if (isInInactiveTree(vm)) {
+        return
+      }
+    } else if (vm._directInactive) {
+      return
+    }
+    if (vm._inactive || vm._inactive === null) {
+      vm._inactive = false;
+      for (var i = 0; i < vm.$children.length; i++) {
+        activateChildComponent(vm.$children[i]);
+      }
+      callHook(vm, 'activated');
+    }
+  }
+
+  function deactivateChildComponent (vm, direct) {
+    if (direct) {
+      vm._directInactive = true;
+      if (isInInactiveTree(vm)) {
+        return
+      }
+    }
+    if (!vm._inactive) {
+      vm._inactive = true;
+      for (var i = 0; i < vm.$children.length; i++) {
+        deactivateChildComponent(vm.$children[i]);
+      }
+      callHook(vm, 'deactivated');
+    }
+  }
+
+  function callHook (vm, hook) {
+    // #7573 disable dep collection when invoking lifecycle hooks
+    pushTarget();
+    var handlers = vm.$options[hook];
+    var info = hook + " hook";
+    if (handlers) {
+      for (var i = 0, j = handlers.length; i < j; i++) {
+        invokeWithErrorHandling(handlers[i], vm, null, vm, info);
+      }
+    }
+    if (vm._hasHookEvent) {
+      vm.$emit('hook:' + hook);
+    }
+    popTarget();
+  }
+
+  /*  */
+
+  var MAX_UPDATE_COUNT = 100;
+
+  var queue = [];
+  var activatedChildren = [];
+  var has = {};
+  var circular = {};
+  var waiting = false;
+  var flushing = false;
+  var index = 0;
+
+  /**
+   * Reset the scheduler's state.
+   */
+  function resetSchedulerState () {
+    index = queue.length = activatedChildren.length = 0;
+    has = {};
+    {
+      circular = {};
+    }
+    waiting = flushing = false;
+  }
+
+  // Async edge case #6566 requires saving the timestamp when event listeners are
+  // attached. However, calling performance.now() has a perf overhead especially
+  // if the page has thousands of event listeners. Instead, we take a timestamp
+  // every time the scheduler flushes and use that for all event listeners
+  // attached during that flush.
+  var currentFlushTimestamp = 0;
+
+  // Async edge case fix requires storing an event listener's attach timestamp.
+  var getNow = Date.now;
+
+  // Determine what event timestamp the browser is using. Annoyingly, the
+  // timestamp can either be hi-res (relative to page load) or low-res
+  // (relative to UNIX epoch), so in order to compare time we have to use the
+  // same timestamp type when saving the flush timestamp.
+  // All IE versions use low-res event timestamps, and have problematic clock
+  // implementations (#9632)
+  if (inBrowser && !isIE) {
+    var performance = window.performance;
+    if (
+      performance &&
+      typeof performance.now === 'function' &&
+      getNow() > document.createEvent('Event').timeStamp
+    ) {
+      // if the event timestamp, although evaluated AFTER the Date.now(), is
+      // smaller than it, it means the event is using a hi-res timestamp,
+      // and we need to use the hi-res version for event listener timestamps as
+      // well.
+      getNow = function () { return performance.now(); };
+    }
+  }
+
+  /**
+   * Flush both queues and run the watchers.
+   */
+  function flushSchedulerQueue () {
+    currentFlushTimestamp = getNow();
+    flushing = true;
+    var watcher, id;
+
+    // Sort queue before flush.
+    // This ensures that:
+    // 1. Components are updated from parent to child. (because parent is always
+    //    created before the child)
+    // 2. A component's user watchers are run before its render watcher (because
+    //    user watchers are created before the render watcher)
+    // 3. If a component is destroyed during a parent component's watcher run,
+    //    its watchers can be skipped.
+    queue.sort(function (a, b) { return a.id - b.id; });
+
+    // do not cache length because more watchers might be pushed
+    // as we run existing watchers
+    for (index = 0; index < queue.length; index++) {
+      watcher = queue[index];
+      if (watcher.before) {
+        watcher.before();
+      }
+      id = watcher.id;
+      has[id] = null;
+      watcher.run();
+      // in dev build, check and stop circular updates.
+      if (has[id] != null) {
+        circular[id] = (circular[id] || 0) + 1;
+        if (circular[id] > MAX_UPDATE_COUNT) {
+          warn(
+            'You may have an infinite update loop ' + (
+              watcher.user
+                ? ("in watcher with expression \"" + (watcher.expression) + "\"")
+                : "in a component render function."
+            ),
+            watcher.vm
+          );
+          break
+        }
+      }
+    }
+
+    // keep copies of post queues before resetting state
+    var activatedQueue = activatedChildren.slice();
+    var updatedQueue = queue.slice();
+
+    resetSchedulerState();
+
+    // call component updated and activated hooks
+    callActivatedHooks(activatedQueue);
+    callUpdatedHooks(updatedQueue);
+
+    // devtool hook
+    /* istanbul ignore if */
+    if (devtools && config.devtools) {
+      devtools.emit('flush');
+    }
+  }
+
+  function callUpdatedHooks (queue) {
+    var i = queue.length;
+    while (i--) {
+      var watcher = queue[i];
+      var vm = watcher.vm;
+      if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {
+        callHook(vm, 'updated');
+      }
+    }
+  }
+
+  /**
+   * Queue a kept-alive component that was activated during patch.
+   * The queue will be processed after the entire tree has been patched.
+   */
+  function queueActivatedComponent (vm) {
+    // setting _inactive to false here so that a render function can
+    // rely on checking whether it's in an inactive tree (e.g. router-view)
+    vm._inactive = false;
+    activatedChildren.push(vm);
+  }
+
+  function callActivatedHooks (queue) {
+    for (var i = 0; i < queue.length; i++) {
+      queue[i]._inactive = true;
+      activateChildComponent(queue[i], true /* true */);
+    }
+  }
+
+  /**
+   * Push a watcher into the watcher queue.
+   * Jobs with duplicate IDs will be skipped unless it's
+   * pushed when the queue is being flushed.
+   */
+  function queueWatcher (watcher) {
+    var id = watcher.id;
+    if (has[id] == null) {
+      has[id] = true;
+      if (!flushing) {
+        queue.push(watcher);
+      } else {
+        // if already flushing, splice the watcher based on its id
+        // if already past its id, it will be run next immediately.
+        var i = queue.length - 1;
+        while (i > index && queue[i].id > watcher.id) {
+          i--;
+        }
+        queue.splice(i + 1, 0, watcher);
+      }
+      // queue the flush
+      if (!waiting) {
+        waiting = true;
+
+        if (!config.async) {
+          flushSchedulerQueue();
+          return
+        }
+        nextTick(flushSchedulerQueue);
+      }
+    }
+  }
+
+  /*  */
+
+
+
+  var uid$2 = 0;
+
+  /**
+   * A watcher parses an expression, collects dependencies,
+   * and fires callback when the expression value changes.
+   * This is used for both the $watch() api and directives.
+   */
+  var Watcher = function Watcher (
+    vm,
+    expOrFn,
+    cb,
+    options,
+    isRenderWatcher
+  ) {
+    this.vm = vm;
+    if (isRenderWatcher) {
+      vm._watcher = this;
+    }
+    vm._watchers.push(this);
+    // options
+    if (options) {
+      this.deep = !!options.deep;
+      this.user = !!options.user;
+      this.lazy = !!options.lazy;
+      this.sync = !!options.sync;
+      this.before = options.before;
+    } else {
+      this.deep = this.user = this.lazy = this.sync = false;
+    }
+    this.cb = cb;
+    this.id = ++uid$2; // uid for batching
+    this.active = true;
+    this.dirty = this.lazy; // for lazy watchers
+    this.deps = [];
+    this.newDeps = [];
+    this.depIds = new _Set();
+    this.newDepIds = new _Set();
+    this.expression = expOrFn.toString();
+    // parse expression for getter
+    if (typeof expOrFn === 'function') {
+      this.getter = expOrFn;
+    } else {
+      this.getter = parsePath(expOrFn);
+      if (!this.getter) {
+        this.getter = noop;
+        warn(
+          "Failed watching path: \"" + expOrFn + "\" " +
+          'Watcher only accepts simple dot-delimited paths. ' +
+          'For full control, use a function instead.',
+          vm
+        );
+      }
+    }
+    this.value = this.lazy
+      ? undefined
+      : this.get();
+  };
+
+  /**
+   * Evaluate the getter, and re-collect dependencies.
+   */
+  Watcher.prototype.get = function get () {
+    pushTarget(this);
+    var value;
+    var vm = this.vm;
+    try {
+      value = this.getter.call(vm, vm);
+    } catch (e) {
+      if (this.user) {
+        handleError(e, vm, ("getter for watcher \"" + (this.expression) + "\""));
+      } else {
+        throw e
+      }
+    } finally {
+      // "touch" every property so they are all tracked as
+      // dependencies for deep watching
+      if (this.deep) {
+        traverse(value);
+      }
+      popTarget();
+      this.cleanupDeps();
+    }
+    return value
+  };
+
+  /**
+   * Add a dependency to this directive.
+   */
+  Watcher.prototype.addDep = function addDep (dep) {
+    var id = dep.id;
+    if (!this.newDepIds.has(id)) {
+      this.newDepIds.add(id);
+      this.newDeps.push(dep);
+      if (!this.depIds.has(id)) {
+        dep.addSub(this);
+      }
+    }
+  };
+
+  /**
+   * Clean up for dependency collection.
+   */
+  Watcher.prototype.cleanupDeps = function cleanupDeps () {
+    var i = this.deps.length;
+    while (i--) {
+      var dep = this.deps[i];
+      if (!this.newDepIds.has(dep.id)) {
+        dep.removeSub(this);
+      }
+    }
+    var tmp = this.depIds;
+    this.depIds = this.newDepIds;
+    this.newDepIds = tmp;
+    this.newDepIds.clear();
+    tmp = this.deps;
+    this.deps = this.newDeps;
+    this.newDeps = tmp;
+    this.newDeps.length = 0;
+  };
+
+  /**
+   * Subscriber interface.
+   * Will be called when a dependency changes.
+   */
+  Watcher.prototype.update = function update () {
+    /* istanbul ignore else */
+    if (this.lazy) {
+      this.dirty = true;
+    } else if (this.sync) {
+      this.run();
+    } else {
+      queueWatcher(this);
+    }
+  };
+
+  /**
+   * Scheduler job interface.
+   * Will be called by the scheduler.
+   */
+  Watcher.prototype.run = function run () {
+    if (this.active) {
+      var value = this.get();
+      if (
+        value !== this.value ||
+        // Deep watchers and watchers on Object/Arrays should fire even
+        // when the value is the same, because the value may
+        // have mutated.
+        isObject(value) ||
+        this.deep
+      ) {
+        // set new value
+        var oldValue = this.value;
+        this.value = value;
+        if (this.user) {
+          var info = "callback for watcher \"" + (this.expression) + "\"";
+          invokeWithErrorHandling(this.cb, this.vm, [value, oldValue], this.vm, info);
+        } else {
+          this.cb.call(this.vm, value, oldValue);
+        }
+      }
+    }
+  };
+
+  /**
+   * Evaluate the value of the watcher.
+   * This only gets called for lazy watchers.
+   */
+  Watcher.prototype.evaluate = function evaluate () {
+    this.value = this.get();
+    this.dirty = false;
+  };
+
+  /**
+   * Depend on all deps collected by this watcher.
+   */
+  Watcher.prototype.depend = function depend () {
+    var i = this.deps.length;
+    while (i--) {
+      this.deps[i].depend();
+    }
+  };
+
+  /**
+   * Remove self from all dependencies' subscriber list.
+   */
+  Watcher.prototype.teardown = function teardown () {
+    if (this.active) {
+      // remove self from vm's watcher list
+      // this is a somewhat expensive operation so we skip it
+      // if the vm is being destroyed.
+      if (!this.vm._isBeingDestroyed) {
+        remove(this.vm._watchers, this);
+      }
+      var i = this.deps.length;
+      while (i--) {
+        this.deps[i].removeSub(this);
+      }
+      this.active = false;
+    }
+  };
+
+  /*  */
+
+  var sharedPropertyDefinition = {
+    enumerable: true,
+    configurable: true,
+    get: noop,
+    set: noop
+  };
+
+  function proxy (target, sourceKey, key) {
+    sharedPropertyDefinition.get = function proxyGetter () {
+      return this[sourceKey][key]
+    };
+    sharedPropertyDefinition.set = function proxySetter (val) {
+      this[sourceKey][key] = val;
+    };
+    Object.defineProperty(target, key, sharedPropertyDefinition);
+  }
+
+  function initState (vm) {
+    vm._watchers = [];
+    var opts = vm.$options;
+    if (opts.props) { initProps(vm, opts.props); }
+    if (opts.methods) { initMethods(vm, opts.methods); }
+    if (opts.data) {
+      initData(vm);
+    } else {
+      observe(vm._data = {}, true /* asRootData */);
+    }
+    if (opts.computed) { initComputed(vm, opts.computed); }
+    if (opts.watch && opts.watch !== nativeWatch) {
+      initWatch(vm, opts.watch);
+    }
+  }
+
+  function initProps (vm, propsOptions) {
+    var propsData = vm.$options.propsData || {};
+    var props = vm._props = {};
+    // cache prop keys so that future props updates can iterate using Array
+    // instead of dynamic object key enumeration.
+    var keys = vm.$options._propKeys = [];
+    var isRoot = !vm.$parent;
+    // root instance props should be converted
+    if (!isRoot) {
+      toggleObserving(false);
+    }
+    var loop = function ( key ) {
+      keys.push(key);
+      var value = validateProp(key, propsOptions, propsData, vm);
+      /* istanbul ignore else */
+      {
+        var hyphenatedKey = hyphenate(key);
+        if (isReservedAttribute(hyphenatedKey) ||
+            config.isReservedAttr(hyphenatedKey)) {
+          warn(
+            ("\"" + hyphenatedKey + "\" is a reserved attribute and cannot be used as component prop."),
+            vm
+          );
+        }
+        defineReactive$$1(props, key, value, function () {
+          if (!isRoot && !isUpdatingChildComponent) {
+            warn(
+              "Avoid mutating a prop directly since the value will be " +
+              "overwritten whenever the parent component re-renders. " +
+              "Instead, use a data or computed property based on the prop's " +
+              "value. Prop being mutated: \"" + key + "\"",
+              vm
+            );
+          }
+        });
+      }
+      // static props are already proxied on the component's prototype
+      // during Vue.extend(). We only need to proxy props defined at
+      // instantiation here.
+      if (!(key in vm)) {
+        proxy(vm, "_props", key);
+      }
+    };
+
+    for (var key in propsOptions) loop( key );
+    toggleObserving(true);
+  }
+
+  function initData (vm) {
+    var data = vm.$options.data;
+    data = vm._data = typeof data === 'function'
+      ? getData(data, vm)
+      : data || {};
+    if (!isPlainObject(data)) {
+      data = {};
+      warn(
+        'data functions should return an object:\n' +
+        'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',
+        vm
+      );
+    }
+    // proxy data on instance
+    var keys = Object.keys(data);
+    var props = vm.$options.props;
+    var methods = vm.$options.methods;
+    var i = keys.length;
+    while (i--) {
+      var key = keys[i];
+      {
+        if (methods && hasOwn(methods, key)) {
+          warn(
+            ("Method \"" + key + "\" has already been defined as a data property."),
+            vm
+          );
+        }
+      }
+      if (props && hasOwn(props, key)) {
+        warn(
+          "The data property \"" + key + "\" is already declared as a prop. " +
+          "Use prop default value instead.",
+          vm
+        );
+      } else if (!isReserved(key)) {
+        proxy(vm, "_data", key);
+      }
+    }
+    // observe data
+    observe(data, true /* asRootData */);
+  }
+
+  function getData (data, vm) {
+    // #7573 disable dep collection when invoking data getters
+    pushTarget();
+    try {
+      return data.call(vm, vm)
+    } catch (e) {
+      handleError(e, vm, "data()");
+      return {}
+    } finally {
+      popTarget();
+    }
+  }
+
+  var computedWatcherOptions = { lazy: true };
+
+  function initComputed (vm, computed) {
+    // $flow-disable-line
+    var watchers = vm._computedWatchers = Object.create(null);
+    // computed properties are just getters during SSR
+    var isSSR = isServerRendering();
+
+    for (var key in computed) {
+      var userDef = computed[key];
+      var getter = typeof userDef === 'function' ? userDef : userDef.get;
+      if (getter == null) {
+        warn(
+          ("Getter is missing for computed property \"" + key + "\"."),
+          vm
+        );
+      }
+
+      if (!isSSR) {
+        // create internal watcher for the computed property.
+        watchers[key] = new Watcher(
+          vm,
+          getter || noop,
+          noop,
+          computedWatcherOptions
+        );
+      }
+
+      // component-defined computed properties are already defined on the
+      // component prototype. We only need to define computed properties defined
+      // at instantiation here.
+      if (!(key in vm)) {
+        defineComputed(vm, key, userDef);
+      } else {
+        if (key in vm.$data) {
+          warn(("The computed property \"" + key + "\" is already defined in data."), vm);
+        } else if (vm.$options.props && key in vm.$options.props) {
+          warn(("The computed property \"" + key + "\" is already defined as a prop."), vm);
+        } else if (vm.$options.methods && key in vm.$options.methods) {
+          warn(("The computed property \"" + key + "\" is already defined as a method."), vm);
+        }
+      }
+    }
+  }
+
+  function defineComputed (
+    target,
+    key,
+    userDef
+  ) {
+    var shouldCache = !isServerRendering();
+    if (typeof userDef === 'function') {
+      sharedPropertyDefinition.get = shouldCache
+        ? createComputedGetter(key)
+        : createGetterInvoker(userDef);
+      sharedPropertyDefinition.set = noop;
+    } else {
+      sharedPropertyDefinition.get = userDef.get
+        ? shouldCache && userDef.cache !== false
+          ? createComputedGetter(key)
+          : createGetterInvoker(userDef.get)
+        : noop;
+      sharedPropertyDefinition.set = userDef.set || noop;
+    }
+    if (sharedPropertyDefinition.set === noop) {
+      sharedPropertyDefinition.set = function () {
+        warn(
+          ("Computed property \"" + key + "\" was assigned to but it has no setter."),
+          this
+        );
+      };
+    }
+    Object.defineProperty(target, key, sharedPropertyDefinition);
+  }
+
+  function createComputedGetter (key) {
+    return function computedGetter () {
+      var watcher = this._computedWatchers && this._computedWatchers[key];
+      if (watcher) {
+        if (watcher.dirty) {
+          watcher.evaluate();
+        }
+        if (Dep.target) {
+          watcher.depend();
+        }
+        return watcher.value
+      }
+    }
+  }
+
+  function createGetterInvoker(fn) {
+    return function computedGetter () {
+      return fn.call(this, this)
+    }
+  }
+
+  function initMethods (vm, methods) {
+    var props = vm.$options.props;
+    for (var key in methods) {
+      {
+        if (typeof methods[key] !== 'function') {
+          warn(
+            "Method \"" + key + "\" has type \"" + (typeof methods[key]) + "\" in the component definition. " +
+            "Did you reference the function correctly?",
+            vm
+          );
+        }
+        if (props && hasOwn(props, key)) {
+          warn(
+            ("Method \"" + key + "\" has already been defined as a prop."),
+            vm
+          );
+        }
+        if ((key in vm) && isReserved(key)) {
+          warn(
+            "Method \"" + key + "\" conflicts with an existing Vue instance method. " +
+            "Avoid defining component methods that start with _ or $."
+          );
+        }
+      }
+      vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);
+    }
+  }
+
+  function initWatch (vm, watch) {
+    for (var key in watch) {
+      var handler = watch[key];
+      if (Array.isArray(handler)) {
+        for (var i = 0; i < handler.length; i++) {
+          createWatcher(vm, key, handler[i]);
+        }
+      } else {
+        createWatcher(vm, key, handler);
+      }
+    }
+  }
+
+  function createWatcher (
+    vm,
+    expOrFn,
+    handler,
+    options
+  ) {
+    if (isPlainObject(handler)) {
+      options = handler;
+      handler = handler.handler;
+    }
+    if (typeof handler === 'string') {
+      handler = vm[handler];
+    }
+    return vm.$watch(expOrFn, handler, options)
+  }
+
+  function stateMixin (Vue) {
+    // flow somehow has problems with directly declared definition object
+    // when using Object.defineProperty, so we have to procedurally build up
+    // the object here.
+    var dataDef = {};
+    dataDef.get = function () { return this._data };
+    var propsDef = {};
+    propsDef.get = function () { return this._props };
+    {
+      dataDef.set = function () {
+        warn(
+          'Avoid replacing instance root $data. ' +
+          'Use nested data properties instead.',
+          this
+        );
+      };
+      propsDef.set = function () {
+        warn("$props is readonly.", this);
+      };
+    }
+    Object.defineProperty(Vue.prototype, '$data', dataDef);
+    Object.defineProperty(Vue.prototype, '$props', propsDef);
+
+    Vue.prototype.$set = set;
+    Vue.prototype.$delete = del;
+
+    Vue.prototype.$watch = function (
+      expOrFn,
+      cb,
+      options
+    ) {
+      var vm = this;
+      if (isPlainObject(cb)) {
+        return createWatcher(vm, expOrFn, cb, options)
+      }
+      options = options || {};
+      options.user = true;
+      var watcher = new Watcher(vm, expOrFn, cb, options);
+      if (options.immediate) {
+        var info = "callback for immediate watcher \"" + (watcher.expression) + "\"";
+        pushTarget();
+        invokeWithErrorHandling(cb, vm, [watcher.value], vm, info);
+        popTarget();
+      }
+      return function unwatchFn () {
+        watcher.teardown();
+      }
+    };
+  }
+
+  /*  */
+
+  var uid$3 = 0;
+
+  function initMixin (Vue) {
+    Vue.prototype._init = function (options) {
+      var vm = this;
+      // a uid
+      vm._uid = uid$3++;
+
+      var startTag, endTag;
+      /* istanbul ignore if */
+      if (config.performance && mark) {
+        startTag = "vue-perf-start:" + (vm._uid);
+        endTag = "vue-perf-end:" + (vm._uid);
+        mark(startTag);
+      }
+
+      // a flag to avoid this being observed
+      vm._isVue = true;
+      // merge options
+      if (options && options._isComponent) {
+        // optimize internal component instantiation
+        // since dynamic options merging is pretty slow, and none of the
+        // internal component options needs special treatment.
+        initInternalComponent(vm, options);
+      } else {
+        vm.$options = mergeOptions(
+          resolveConstructorOptions(vm.constructor),
+          options || {},
+          vm
+        );
+      }
+      /* istanbul ignore else */
+      {
+        initProxy(vm);
+      }
+      // expose real self
+      vm._self = vm;
+      initLifecycle(vm);
+      initEvents(vm);
+      initRender(vm);
+      callHook(vm, 'beforeCreate');
+      initInjections(vm); // resolve injections before data/props
+      initState(vm);
+      initProvide(vm); // resolve provide after data/props
+      callHook(vm, 'created');
+
+      /* istanbul ignore if */
+      if (config.performance && mark) {
+        vm._name = formatComponentName(vm, false);
+        mark(endTag);
+        measure(("vue " + (vm._name) + " init"), startTag, endTag);
+      }
+
+      if (vm.$options.el) {
+        vm.$mount(vm.$options.el);
+      }
+    };
+  }
+
+  function initInternalComponent (vm, options) {
+    var opts = vm.$options = Object.create(vm.constructor.options);
+    // doing this because it's faster than dynamic enumeration.
+    var parentVnode = options._parentVnode;
+    opts.parent = options.parent;
+    opts._parentVnode = parentVnode;
+
+    var vnodeComponentOptions = parentVnode.componentOptions;
+    opts.propsData = vnodeComponentOptions.propsData;
+    opts._parentListeners = vnodeComponentOptions.listeners;
+    opts._renderChildren = vnodeComponentOptions.children;
+    opts._componentTag = vnodeComponentOptions.tag;
+
+    if (options.render) {
+      opts.render = options.render;
+      opts.staticRenderFns = options.staticRenderFns;
+    }
+  }
+
+  function resolveConstructorOptions (Ctor) {
+    var options = Ctor.options;
+    if (Ctor.super) {
+      var superOptions = resolveConstructorOptions(Ctor.super);
+      var cachedSuperOptions = Ctor.superOptions;
+      if (superOptions !== cachedSuperOptions) {
+        // super option changed,
+        // need to resolve new options.
+        Ctor.superOptions = superOptions;
+        // check if there are any late-modified/attached options (#4976)
+        var modifiedOptions = resolveModifiedOptions(Ctor);
+        // update base extend options
+        if (modifiedOptions) {
+          extend(Ctor.extendOptions, modifiedOptions);
+        }
+        options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);
+        if (options.name) {
+          options.components[options.name] = Ctor;
+        }
+      }
+    }
+    return options
+  }
+
+  function resolveModifiedOptions (Ctor) {
+    var modified;
+    var latest = Ctor.options;
+    var sealed = Ctor.sealedOptions;
+    for (var key in latest) {
+      if (latest[key] !== sealed[key]) {
+        if (!modified) { modified = {}; }
+        modified[key] = latest[key];
+      }
+    }
+    return modified
+  }
+
+  function Vue (options) {
+    if (!(this instanceof Vue)
+    ) {
+      warn('Vue is a constructor and should be called with the `new` keyword');
+    }
+    this._init(options);
+  }
+
+  initMixin(Vue);
+  stateMixin(Vue);
+  eventsMixin(Vue);
+  lifecycleMixin(Vue);
+  renderMixin(Vue);
+
+  /*  */
+
+  function initUse (Vue) {
+    Vue.use = function (plugin) {
+      var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));
+      if (installedPlugins.indexOf(plugin) > -1) {
+        return this
+      }
+
+      // additional parameters
+      var args = toArray(arguments, 1);
+      args.unshift(this);
+      if (typeof plugin.install === 'function') {
+        plugin.install.apply(plugin, args);
+      } else if (typeof plugin === 'function') {
+        plugin.apply(null, args);
+      }
+      installedPlugins.push(plugin);
+      return this
+    };
+  }
+
+  /*  */
+
+  function initMixin$1 (Vue) {
+    Vue.mixin = function (mixin) {
+      this.options = mergeOptions(this.options, mixin);
+      return this
+    };
+  }
+
+  /*  */
+
+  function initExtend (Vue) {
+    /**
+     * Each instance constructor, including Vue, has a unique
+     * cid. This enables us to create wrapped "child
+     * constructors" for prototypal inheritance and cache them.
+     */
+    Vue.cid = 0;
+    var cid = 1;
+
+    /**
+     * Class inheritance
+     */
+    Vue.extend = function (extendOptions) {
+      extendOptions = extendOptions || {};
+      var Super = this;
+      var SuperId = Super.cid;
+      var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});
+      if (cachedCtors[SuperId]) {
+        return cachedCtors[SuperId]
+      }
+
+      var name = extendOptions.name || Super.options.name;
+      if (name) {
+        validateComponentName(name);
+      }
+
+      var Sub = function VueComponent (options) {
+        this._init(options);
+      };
+      Sub.prototype = Object.create(Super.prototype);
+      Sub.prototype.constructor = Sub;
+      Sub.cid = cid++;
+      Sub.options = mergeOptions(
+        Super.options,
+        extendOptions
+      );
+      Sub['super'] = Super;
+
+      // For props and computed properties, we define the proxy getters on
+      // the Vue instances at extension time, on the extended prototype. This
+      // avoids Object.defineProperty calls for each instance created.
+      if (Sub.options.props) {
+        initProps$1(Sub);
+      }
+      if (Sub.options.computed) {
+        initComputed$1(Sub);
+      }
+
+      // allow further extension/mixin/plugin usage
+      Sub.extend = Super.extend;
+      Sub.mixin = Super.mixin;
+      Sub.use = Super.use;
+
+      // create asset registers, so extended classes
+      // can have their private assets too.
+      ASSET_TYPES.forEach(function (type) {
+        Sub[type] = Super[type];
+      });
+      // enable recursive self-lookup
+      if (name) {
+        Sub.options.components[name] = Sub;
+      }
+
+      // keep a reference to the super options at extension time.
+      // later at instantiation we can check if Super's options have
+      // been updated.
+      Sub.superOptions = Super.options;
+      Sub.extendOptions = extendOptions;
+      Sub.sealedOptions = extend({}, Sub.options);
+
+      // cache constructor
+      cachedCtors[SuperId] = Sub;
+      return Sub
+    };
+  }
+
+  function initProps$1 (Comp) {
+    var props = Comp.options.props;
+    for (var key in props) {
+      proxy(Comp.prototype, "_props", key);
+    }
+  }
+
+  function initComputed$1 (Comp) {
+    var computed = Comp.options.computed;
+    for (var key in computed) {
+      defineComputed(Comp.prototype, key, computed[key]);
+    }
+  }
+
+  /*  */
+
+  function initAssetRegisters (Vue) {
+    /**
+     * Create asset registration methods.
+     */
+    ASSET_TYPES.forEach(function (type) {
+      Vue[type] = function (
+        id,
+        definition
+      ) {
+        if (!definition) {
+          return this.options[type + 's'][id]
+        } else {
+          /* istanbul ignore if */
+          if (type === 'component') {
+            validateComponentName(id);
+          }
+          if (type === 'component' && isPlainObject(definition)) {
+            definition.name = definition.name || id;
+            definition = this.options._base.extend(definition);
+          }
+          if (type === 'directive' && typeof definition === 'function') {
+            definition = { bind: definition, update: definition };
+          }
+          this.options[type + 's'][id] = definition;
+          return definition
+        }
+      };
+    });
+  }
+
+  /*  */
+
+
+
+
+
+  function getComponentName (opts) {
+    return opts && (opts.Ctor.options.name || opts.tag)
+  }
+
+  function matches (pattern, name) {
+    if (Array.isArray(pattern)) {
+      return pattern.indexOf(name) > -1
+    } else if (typeof pattern === 'string') {
+      return pattern.split(',').indexOf(name) > -1
+    } else if (isRegExp(pattern)) {
+      return pattern.test(name)
+    }
+    /* istanbul ignore next */
+    return false
+  }
+
+  function pruneCache (keepAliveInstance, filter) {
+    var cache = keepAliveInstance.cache;
+    var keys = keepAliveInstance.keys;
+    var _vnode = keepAliveInstance._vnode;
+    for (var key in cache) {
+      var entry = cache[key];
+      if (entry) {
+        var name = entry.name;
+        if (name && !filter(name)) {
+          pruneCacheEntry(cache, key, keys, _vnode);
+        }
+      }
+    }
+  }
+
+  function pruneCacheEntry (
+    cache,
+    key,
+    keys,
+    current
+  ) {
+    var entry = cache[key];
+    if (entry && (!current || entry.tag !== current.tag)) {
+      entry.componentInstance.$destroy();
+    }
+    cache[key] = null;
+    remove(keys, key);
+  }
+
+  var patternTypes = [String, RegExp, Array];
+
+  var KeepAlive = {
+    name: 'keep-alive',
+    abstract: true,
+
+    props: {
+      include: patternTypes,
+      exclude: patternTypes,
+      max: [String, Number]
+    },
+
+    methods: {
+      cacheVNode: function cacheVNode() {
+        var ref = this;
+        var cache = ref.cache;
+        var keys = ref.keys;
+        var vnodeToCache = ref.vnodeToCache;
+        var keyToCache = ref.keyToCache;
+        if (vnodeToCache) {
+          var tag = vnodeToCache.tag;
+          var componentInstance = vnodeToCache.componentInstance;
+          var componentOptions = vnodeToCache.componentOptions;
+          cache[keyToCache] = {
+            name: getComponentName(componentOptions),
+            tag: tag,
+            componentInstance: componentInstance,
+          };
+          keys.push(keyToCache);
+          // prune oldest entry
+          if (this.max && keys.length > parseInt(this.max)) {
+            pruneCacheEntry(cache, keys[0], keys, this._vnode);
+          }
+          this.vnodeToCache = null;
+        }
+      }
+    },
+
+    created: function created () {
+      this.cache = Object.create(null);
+      this.keys = [];
+    },
+
+    destroyed: function destroyed () {
+      for (var key in this.cache) {
+        pruneCacheEntry(this.cache, key, this.keys);
+      }
+    },
+
+    mounted: function mounted () {
+      var this$1 = this;
+
+      this.cacheVNode();
+      this.$watch('include', function (val) {
+        pruneCache(this$1, function (name) { return matches(val, name); });
+      });
+      this.$watch('exclude', function (val) {
+        pruneCache(this$1, function (name) { return !matches(val, name); });
+      });
+    },
+
+    updated: function updated () {
+      this.cacheVNode();
+    },
+
+    render: function render () {
+      var slot = this.$slots.default;
+      var vnode = getFirstComponentChild(slot);
+      var componentOptions = vnode && vnode.componentOptions;
+      if (componentOptions) {
+        // check pattern
+        var name = getComponentName(componentOptions);
+        var ref = this;
+        var include = ref.include;
+        var exclude = ref.exclude;
+        if (
+          // not included
+          (include && (!name || !matches(include, name))) ||
+          // excluded
+          (exclude && name && matches(exclude, name))
+        ) {
+          return vnode
+        }
+
+        var ref$1 = this;
+        var cache = ref$1.cache;
+        var keys = ref$1.keys;
+        var key = vnode.key == null
+          // same constructor may get registered as different local components
+          // so cid alone is not enough (#3269)
+          ? componentOptions.Ctor.cid + (componentOptions.tag ? ("::" + (componentOptions.tag)) : '')
+          : vnode.key;
+        if (cache[key]) {
+          vnode.componentInstance = cache[key].componentInstance;
+          // make current key freshest
+          remove(keys, key);
+          keys.push(key);
+        } else {
+          // delay setting the cache until update
+          this.vnodeToCache = vnode;
+          this.keyToCache = key;
+        }
+
+        vnode.data.keepAlive = true;
+      }
+      return vnode || (slot && slot[0])
+    }
+  };
+
+  var builtInComponents = {
+    KeepAlive: KeepAlive
+  };
+
+  /*  */
+
+  function initGlobalAPI (Vue) {
+    // config
+    var configDef = {};
+    configDef.get = function () { return config; };
+    {
+      configDef.set = function () {
+        warn(
+          'Do not replace the Vue.config object, set individual fields instead.'
+        );
+      };
+    }
+    Object.defineProperty(Vue, 'config', configDef);
+
+    // exposed util methods.
+    // NOTE: these are not considered part of the public API - avoid relying on
+    // them unless you are aware of the risk.
+    Vue.util = {
+      warn: warn,
+      extend: extend,
+      mergeOptions: mergeOptions,
+      defineReactive: defineReactive$$1
+    };
+
+    Vue.set = set;
+    Vue.delete = del;
+    Vue.nextTick = nextTick;
+
+    // 2.6 explicit observable API
+    Vue.observable = function (obj) {
+      observe(obj);
+      return obj
+    };
+
+    Vue.options = Object.create(null);
+    ASSET_TYPES.forEach(function (type) {
+      Vue.options[type + 's'] = Object.create(null);
+    });
+
+    // this is used to identify the "base" constructor to extend all plain-object
+    // components with in Weex's multi-instance scenarios.
+    Vue.options._base = Vue;
+
+    extend(Vue.options.components, builtInComponents);
+
+    initUse(Vue);
+    initMixin$1(Vue);
+    initExtend(Vue);
+    initAssetRegisters(Vue);
+  }
+
+  initGlobalAPI(Vue);
+
+  Object.defineProperty(Vue.prototype, '$isServer', {
+    get: isServerRendering
+  });
+
+  Object.defineProperty(Vue.prototype, '$ssrContext', {
+    get: function get () {
+      /* istanbul ignore next */
+      return this.$vnode && this.$vnode.ssrContext
+    }
+  });
+
+  // expose FunctionalRenderContext for ssr runtime helper installation
+  Object.defineProperty(Vue, 'FunctionalRenderContext', {
+    value: FunctionalRenderContext
+  });
+
+  Vue.version = '2.6.14';
+
+  /*  */
+
+  // these are reserved for web because they are directly compiled away
+  // during template compilation
+  var isReservedAttr = makeMap('style,class');
+
+  // attributes that should be using props for binding
+  var acceptValue = makeMap('input,textarea,option,select,progress');
+  var mustUseProp = function (tag, type, attr) {
+    return (
+      (attr === 'value' && acceptValue(tag)) && type !== 'button' ||
+      (attr === 'selected' && tag === 'option') ||
+      (attr === 'checked' && tag === 'input') ||
+      (attr === 'muted' && tag === 'video')
+    )
+  };
+
+  var isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');
+
+  var isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');
+
+  var convertEnumeratedValue = function (key, value) {
+    return isFalsyAttrValue(value) || value === 'false'
+      ? 'false'
+      // allow arbitrary string value for contenteditable
+      : key === 'contenteditable' && isValidContentEditableValue(value)
+        ? value
+        : 'true'
+  };
+
+  var isBooleanAttr = makeMap(
+    'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +
+    'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +
+    'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +
+    'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +
+    'required,reversed,scoped,seamless,selected,sortable,' +
+    'truespeed,typemustmatch,visible'
+  );
+
+  var xlinkNS = 'http://www.w3.org/1999/xlink';
+
+  var isXlink = function (name) {
+    return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'
+  };
+
+  var getXlinkProp = function (name) {
+    return isXlink(name) ? name.slice(6, name.length) : ''
+  };
+
+  var isFalsyAttrValue = function (val) {
+    return val == null || val === false
+  };
+
+  /*  */
+
+  function genClassForVnode (vnode) {
+    var data = vnode.data;
+    var parentNode = vnode;
+    var childNode = vnode;
+    while (isDef(childNode.componentInstance)) {
+      childNode = childNode.componentInstance._vnode;
+      if (childNode && childNode.data) {
+        data = mergeClassData(childNode.data, data);
+      }
+    }
+    while (isDef(parentNode = parentNode.parent)) {
+      if (parentNode && parentNode.data) {
+        data = mergeClassData(data, parentNode.data);
+      }
+    }
+    return renderClass(data.staticClass, data.class)
+  }
+
+  function mergeClassData (child, parent) {
+    return {
+      staticClass: concat(child.staticClass, parent.staticClass),
+      class: isDef(child.class)
+        ? [child.class, parent.class]
+        : parent.class
+    }
+  }
+
+  function renderClass (
+    staticClass,
+    dynamicClass
+  ) {
+    if (isDef(staticClass) || isDef(dynamicClass)) {
+      return concat(staticClass, stringifyClass(dynamicClass))
+    }
+    /* istanbul ignore next */
+    return ''
+  }
+
+  function concat (a, b) {
+    return a ? b ? (a + ' ' + b) : a : (b || '')
+  }
+
+  function stringifyClass (value) {
+    if (Array.isArray(value)) {
+      return stringifyArray(value)
+    }
+    if (isObject(value)) {
+      return stringifyObject(value)
+    }
+    if (typeof value === 'string') {
+      return value
+    }
+    /* istanbul ignore next */
+    return ''
+  }
+
+  function stringifyArray (value) {
+    var res = '';
+    var stringified;
+    for (var i = 0, l = value.length; i < l; i++) {
+      if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {
+        if (res) { res += ' '; }
+        res += stringified;
+      }
+    }
+    return res
+  }
+
+  function stringifyObject (value) {
+    var res = '';
+    for (var key in value) {
+      if (value[key]) {
+        if (res) { res += ' '; }
+        res += key;
+      }
+    }
+    return res
+  }
+
+  /*  */
+
+  var namespaceMap = {
+    svg: 'http://www.w3.org/2000/svg',
+    math: 'http://www.w3.org/1998/Math/MathML'
+  };
+
+  var isHTMLTag = makeMap(
+    'html,body,base,head,link,meta,style,title,' +
+    'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +
+    'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +
+    'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +
+    's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +
+    'embed,object,param,source,canvas,script,noscript,del,ins,' +
+    'caption,col,colgroup,table,thead,tbody,td,th,tr,' +
+    'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +
+    'output,progress,select,textarea,' +
+    'details,dialog,menu,menuitem,summary,' +
+    'content,element,shadow,template,blockquote,iframe,tfoot'
+  );
+
+  // this map is intentionally selective, only covering SVG elements that may
+  // contain child elements.
+  var isSVG = makeMap(
+    'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +
+    'foreignobject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +
+    'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',
+    true
+  );
+
+  var isPreTag = function (tag) { return tag === 'pre'; };
+
+  var isReservedTag = function (tag) {
+    return isHTMLTag(tag) || isSVG(tag)
+  };
+
+  function getTagNamespace (tag) {
+    if (isSVG(tag)) {
+      return 'svg'
+    }
+    // basic support for MathML
+    // note it doesn't support other MathML elements being component roots
+    if (tag === 'math') {
+      return 'math'
+    }
+  }
+
+  var unknownElementCache = Object.create(null);
+  function isUnknownElement (tag) {
+    /* istanbul ignore if */
+    if (!inBrowser) {
+      return true
+    }
+    if (isReservedTag(tag)) {
+      return false
+    }
+    tag = tag.toLowerCase();
+    /* istanbul ignore if */
+    if (unknownElementCache[tag] != null) {
+      return unknownElementCache[tag]
+    }
+    var el = document.createElement(tag);
+    if (tag.indexOf('-') > -1) {
+      // http://stackoverflow.com/a/28210364/1070244
+      return (unknownElementCache[tag] = (
+        el.constructor === window.HTMLUnknownElement ||
+        el.constructor === window.HTMLElement
+      ))
+    } else {
+      return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))
+    }
+  }
+
+  var isTextInputType = makeMap('text,number,password,search,email,tel,url');
+
+  /*  */
+
+  /**
+   * Query an element selector if it's not an element already.
+   */
+  function query (el) {
+    if (typeof el === 'string') {
+      var selected = document.querySelector(el);
+      if (!selected) {
+        warn(
+          'Cannot find element: ' + el
+        );
+        return document.createElement('div')
+      }
+      return selected
+    } else {
+      return el
+    }
+  }
+
+  /*  */
+
+  function createElement$1 (tagName, vnode) {
+    var elm = document.createElement(tagName);
+    if (tagName !== 'select') {
+      return elm
+    }
+    // false or null will remove the attribute but undefined will not
+    if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {
+      elm.setAttribute('multiple', 'multiple');
+    }
+    return elm
+  }
+
+  function createElementNS (namespace, tagName) {
+    return document.createElementNS(namespaceMap[namespace], tagName)
+  }
+
+  function createTextNode (text) {
+    return document.createTextNode(text)
+  }
+
+  function createComment (text) {
+    return document.createComment(text)
+  }
+
+  function insertBefore (parentNode, newNode, referenceNode) {
+    parentNode.insertBefore(newNode, referenceNode);
+  }
+
+  function removeChild (node, child) {
+    node.removeChild(child);
+  }
+
+  function appendChild (node, child) {
+    node.appendChild(child);
+  }
+
+  function parentNode (node) {
+    return node.parentNode
+  }
+
+  function nextSibling (node) {
+    return node.nextSibling
+  }
+
+  function tagName (node) {
+    return node.tagName
+  }
+
+  function setTextContent (node, text) {
+    node.textContent = text;
+  }
+
+  function setStyleScope (node, scopeId) {
+    node.setAttribute(scopeId, '');
+  }
+
+  var nodeOps = /*#__PURE__*/Object.freeze({
+    createElement: createElement$1,
+    createElementNS: createElementNS,
+    createTextNode: createTextNode,
+    createComment: createComment,
+    insertBefore: insertBefore,
+    removeChild: removeChild,
+    appendChild: appendChild,
+    parentNode: parentNode,
+    nextSibling: nextSibling,
+    tagName: tagName,
+    setTextContent: setTextContent,
+    setStyleScope: setStyleScope
+  });
+
+  /*  */
+
+  var ref = {
+    create: function create (_, vnode) {
+      registerRef(vnode);
+    },
+    update: function update (oldVnode, vnode) {
+      if (oldVnode.data.ref !== vnode.data.ref) {
+        registerRef(oldVnode, true);
+        registerRef(vnode);
+      }
+    },
+    destroy: function destroy (vnode) {
+      registerRef(vnode, true);
+    }
+  };
+
+  function registerRef (vnode, isRemoval) {
+    var key = vnode.data.ref;
+    if (!isDef(key)) { return }
+
+    var vm = vnode.context;
+    var ref = vnode.componentInstance || vnode.elm;
+    var refs = vm.$refs;
+    if (isRemoval) {
+      if (Array.isArray(refs[key])) {
+        remove(refs[key], ref);
+      } else if (refs[key] === ref) {
+        refs[key] = undefined;
+      }
+    } else {
+      if (vnode.data.refInFor) {
+        if (!Array.isArray(refs[key])) {
+          refs[key] = [ref];
+        } else if (refs[key].indexOf(ref) < 0) {
+          // $flow-disable-line
+          refs[key].push(ref);
+        }
+      } else {
+        refs[key] = ref;
+      }
+    }
+  }
+
+  /**
+   * Virtual DOM patching algorithm based on Snabbdom by
+   * Simon Friis Vindum (@paldepind)
+   * Licensed under the MIT License
+   * https://github.com/paldepind/snabbdom/blob/master/LICENSE
+   *
+   * modified by Evan You (@yyx990803)
+   *
+   * Not type-checking this because this file is perf-critical and the cost
+   * of making flow understand it is not worth it.
+   */
+
+  var emptyNode = new VNode('', {}, []);
+
+  var hooks = ['create', 'activate', 'update', 'remove', 'destroy'];
+
+  function sameVnode (a, b) {
+    return (
+      a.key === b.key &&
+      a.asyncFactory === b.asyncFactory && (
+        (
+          a.tag === b.tag &&
+          a.isComment === b.isComment &&
+          isDef(a.data) === isDef(b.data) &&
+          sameInputType(a, b)
+        ) || (
+          isTrue(a.isAsyncPlaceholder) &&
+          isUndef(b.asyncFactory.error)
+        )
+      )
+    )
+  }
+
+  function sameInputType (a, b) {
+    if (a.tag !== 'input') { return true }
+    var i;
+    var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;
+    var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;
+    return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)
+  }
+
+  function createKeyToOldIdx (children, beginIdx, endIdx) {
+    var i, key;
+    var map = {};
+    for (i = beginIdx; i <= endIdx; ++i) {
+      key = children[i].key;
+      if (isDef(key)) { map[key] = i; }
+    }
+    return map
+  }
+
+  function createPatchFunction (backend) {
+    var i, j;
+    var cbs = {};
+
+    var modules = backend.modules;
+    var nodeOps = backend.nodeOps;
+
+    for (i = 0; i < hooks.length; ++i) {
+      cbs[hooks[i]] = [];
+      for (j = 0; j < modules.length; ++j) {
+        if (isDef(modules[j][hooks[i]])) {
+          cbs[hooks[i]].push(modules[j][hooks[i]]);
+        }
+      }
+    }
+
+    function emptyNodeAt (elm) {
+      return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)
+    }
+
+    function createRmCb (childElm, listeners) {
+      function remove$$1 () {
+        if (--remove$$1.listeners === 0) {
+          removeNode(childElm);
+        }
+      }
+      remove$$1.listeners = listeners;
+      return remove$$1
+    }
+
+    function removeNode (el) {
+      var parent = nodeOps.parentNode(el);
+      // element may have already been removed due to v-html / v-text
+      if (isDef(parent)) {
+        nodeOps.removeChild(parent, el);
+      }
+    }
+
+    function isUnknownElement$$1 (vnode, inVPre) {
+      return (
+        !inVPre &&
+        !vnode.ns &&
+        !(
+          config.ignoredElements.length &&
+          config.ignoredElements.some(function (ignore) {
+            return isRegExp(ignore)
+              ? ignore.test(vnode.tag)
+              : ignore === vnode.tag
+          })
+        ) &&
+        config.isUnknownElement(vnode.tag)
+      )
+    }
+
+    var creatingElmInVPre = 0;
+
+    function createElm (
+      vnode,
+      insertedVnodeQueue,
+      parentElm,
+      refElm,
+      nested,
+      ownerArray,
+      index
+    ) {
+      if (isDef(vnode.elm) && isDef(ownerArray)) {
+        // This vnode was used in a previous render!
+        // now it's used as a new node, overwriting its elm would cause
+        // potential patch errors down the road when it's used as an insertion
+        // reference node. Instead, we clone the node on-demand before creating
+        // associated DOM element for it.
+        vnode = ownerArray[index] = cloneVNode(vnode);
+      }
+
+      vnode.isRootInsert = !nested; // for transition enter check
+      if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {
+        return
+      }
+
+      var data = vnode.data;
+      var children = vnode.children;
+      var tag = vnode.tag;
+      if (isDef(tag)) {
+        {
+          if (data && data.pre) {
+            creatingElmInVPre++;
+          }
+          if (isUnknownElement$$1(vnode, creatingElmInVPre)) {
+            warn(
+              'Unknown custom element: <' + tag + '> - did you ' +
+              'register the component correctly? For recursive components, ' +
+              'make sure to provide the "name" option.',
+              vnode.context
+            );
+          }
+        }
+
+        vnode.elm = vnode.ns
+          ? nodeOps.createElementNS(vnode.ns, tag)
+          : nodeOps.createElement(tag, vnode);
+        setScope(vnode);
+
+        /* istanbul ignore if */
+        {
+          createChildren(vnode, children, insertedVnodeQueue);
+          if (isDef(data)) {
+            invokeCreateHooks(vnode, insertedVnodeQueue);
+          }
+          insert(parentElm, vnode.elm, refElm);
+        }
+
+        if (data && data.pre) {
+          creatingElmInVPre--;
+        }
+      } else if (isTrue(vnode.isComment)) {
+        vnode.elm = nodeOps.createComment(vnode.text);
+        insert(parentElm, vnode.elm, refElm);
+      } else {
+        vnode.elm = nodeOps.createTextNode(vnode.text);
+        insert(parentElm, vnode.elm, refElm);
+      }
+    }
+
+    function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {
+      var i = vnode.data;
+      if (isDef(i)) {
+        var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;
+        if (isDef(i = i.hook) && isDef(i = i.init)) {
+          i(vnode, false /* hydrating */);
+        }
+        // after calling the init hook, if the vnode is a child component
+        // it should've created a child instance and mounted it. the child
+        // component also has set the placeholder vnode's elm.
+        // in that case we can just return the element and be done.
+        if (isDef(vnode.componentInstance)) {
+          initComponent(vnode, insertedVnodeQueue);
+          insert(parentElm, vnode.elm, refElm);
+          if (isTrue(isReactivated)) {
+            reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);
+          }
+          return true
+        }
+      }
+    }
+
+    function initComponent (vnode, insertedVnodeQueue) {
+      if (isDef(vnode.data.pendingInsert)) {
+        insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);
+        vnode.data.pendingInsert = null;
+      }
+      vnode.elm = vnode.componentInstance.$el;
+      if (isPatchable(vnode)) {
+        invokeCreateHooks(vnode, insertedVnodeQueue);
+        setScope(vnode);
+      } else {
+        // empty component root.
+        // skip all element-related modules except for ref (#3455)
+        registerRef(vnode);
+        // make sure to invoke the insert hook
+        insertedVnodeQueue.push(vnode);
+      }
+    }
+
+    function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {
+      var i;
+      // hack for #4339: a reactivated component with inner transition
+      // does not trigger because the inner node's created hooks are not called
+      // again. It's not ideal to involve module-specific logic in here but
+      // there doesn't seem to be a better way to do it.
+      var innerNode = vnode;
+      while (innerNode.componentInstance) {
+        innerNode = innerNode.componentInstance._vnode;
+        if (isDef(i = innerNode.data) && isDef(i = i.transition)) {
+          for (i = 0; i < cbs.activate.length; ++i) {
+            cbs.activate[i](emptyNode, innerNode);
+          }
+          insertedVnodeQueue.push(innerNode);
+          break
+        }
+      }
+      // unlike a newly created component,
+      // a reactivated keep-alive component doesn't insert itself
+      insert(parentElm, vnode.elm, refElm);
+    }
+
+    function insert (parent, elm, ref$$1) {
+      if (isDef(parent)) {
+        if (isDef(ref$$1)) {
+          if (nodeOps.parentNode(ref$$1) === parent) {
+            nodeOps.insertBefore(parent, elm, ref$$1);
+          }
+        } else {
+          nodeOps.appendChild(parent, elm);
+        }
+      }
+    }
+
+    function createChildren (vnode, children, insertedVnodeQueue) {
+      if (Array.isArray(children)) {
+        {
+          checkDuplicateKeys(children);
+        }
+        for (var i = 0; i < children.length; ++i) {
+          createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);
+        }
+      } else if (isPrimitive(vnode.text)) {
+        nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));
+      }
+    }
+
+    function isPatchable (vnode) {
+      while (vnode.componentInstance) {
+        vnode = vnode.componentInstance._vnode;
+      }
+      return isDef(vnode.tag)
+    }
+
+    function invokeCreateHooks (vnode, insertedVnodeQueue) {
+      for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {
+        cbs.create[i$1](emptyNode, vnode);
+      }
+      i = vnode.data.hook; // Reuse variable
+      if (isDef(i)) {
+        if (isDef(i.create)) { i.create(emptyNode, vnode); }
+        if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }
+      }
+    }
+
+    // set scope id attribute for scoped CSS.
+    // this is implemented as a special case to avoid the overhead
+    // of going through the normal attribute patching process.
+    function setScope (vnode) {
+      var i;
+      if (isDef(i = vnode.fnScopeId)) {
+        nodeOps.setStyleScope(vnode.elm, i);
+      } else {
+        var ancestor = vnode;
+        while (ancestor) {
+          if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {
+            nodeOps.setStyleScope(vnode.elm, i);
+          }
+          ancestor = ancestor.parent;
+        }
+      }
+      // for slot content they should also get the scopeId from the host instance.
+      if (isDef(i = activeInstance) &&
+        i !== vnode.context &&
+        i !== vnode.fnContext &&
+        isDef(i = i.$options._scopeId)
+      ) {
+        nodeOps.setStyleScope(vnode.elm, i);
+      }
+    }
+
+    function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {
+      for (; startIdx <= endIdx; ++startIdx) {
+        createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);
+      }
+    }
+
+    function invokeDestroyHook (vnode) {
+      var i, j;
+      var data = vnode.data;
+      if (isDef(data)) {
+        if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }
+        for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }
+      }
+      if (isDef(i = vnode.children)) {
+        for (j = 0; j < vnode.children.length; ++j) {
+          invokeDestroyHook(vnode.children[j]);
+        }
+      }
+    }
+
+    function removeVnodes (vnodes, startIdx, endIdx) {
+      for (; startIdx <= endIdx; ++startIdx) {
+        var ch = vnodes[startIdx];
+        if (isDef(ch)) {
+          if (isDef(ch.tag)) {
+            removeAndInvokeRemoveHook(ch);
+            invokeDestroyHook(ch);
+          } else { // Text node
+            removeNode(ch.elm);
+          }
+        }
+      }
+    }
+
+    function removeAndInvokeRemoveHook (vnode, rm) {
+      if (isDef(rm) || isDef(vnode.data)) {
+        var i;
+        var listeners = cbs.remove.length + 1;
+        if (isDef(rm)) {
+          // we have a recursively passed down rm callback
+          // increase the listeners count
+          rm.listeners += listeners;
+        } else {
+          // directly removing
+          rm = createRmCb(vnode.elm, listeners);
+        }
+        // recursively invoke hooks on child component root node
+        if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {
+          removeAndInvokeRemoveHook(i, rm);
+        }
+        for (i = 0; i < cbs.remove.length; ++i) {
+          cbs.remove[i](vnode, rm);
+        }
+        if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {
+          i(vnode, rm);
+        } else {
+          rm();
+        }
+      } else {
+        removeNode(vnode.elm);
+      }
+    }
+
+    function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {
+      var oldStartIdx = 0;
+      var newStartIdx = 0;
+      var oldEndIdx = oldCh.length - 1;
+      var oldStartVnode = oldCh[0];
+      var oldEndVnode = oldCh[oldEndIdx];
+      var newEndIdx = newCh.length - 1;
+      var newStartVnode = newCh[0];
+      var newEndVnode = newCh[newEndIdx];
+      var oldKeyToIdx, idxInOld, vnodeToMove, refElm;
+
+      // removeOnly is a special flag used only by <transition-group>
+      // to ensure removed elements stay in correct relative positions
+      // during leaving transitions
+      var canMove = !removeOnly;
+
+      {
+        checkDuplicateKeys(newCh);
+      }
+
+      while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {
+        if (isUndef(oldStartVnode)) {
+          oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left
+        } else if (isUndef(oldEndVnode)) {
+          oldEndVnode = oldCh[--oldEndIdx];
+        } else if (sameVnode(oldStartVnode, newStartVnode)) {
+          patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);
+          oldStartVnode = oldCh[++oldStartIdx];
+          newStartVnode = newCh[++newStartIdx];
+        } else if (sameVnode(oldEndVnode, newEndVnode)) {
+          patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);
+          oldEndVnode = oldCh[--oldEndIdx];
+          newEndVnode = newCh[--newEndIdx];
+        } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right
+          patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);
+          canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));
+          oldStartVnode = oldCh[++oldStartIdx];
+          newEndVnode = newCh[--newEndIdx];
+        } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left
+          patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);
+          canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);
+          oldEndVnode = oldCh[--oldEndIdx];
+          newStartVnode = newCh[++newStartIdx];
+        } else {
+          if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }
+          idxInOld = isDef(newStartVnode.key)
+            ? oldKeyToIdx[newStartVnode.key]
+            : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);
+          if (isUndef(idxInOld)) { // New element
+            createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);
+          } else {
+            vnodeToMove = oldCh[idxInOld];
+            if (sameVnode(vnodeToMove, newStartVnode)) {
+              patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);
+              oldCh[idxInOld] = undefined;
+              canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);
+            } else {
+              // same key but different element. treat as new element
+              createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);
+            }
+          }
+          newStartVnode = newCh[++newStartIdx];
+        }
+      }
+      if (oldStartIdx > oldEndIdx) {
+        refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;
+        addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);
+      } else if (newStartIdx > newEndIdx) {
+        removeVnodes(oldCh, oldStartIdx, oldEndIdx);
+      }
+    }
+
+    function checkDuplicateKeys (children) {
+      var seenKeys = {};
+      for (var i = 0; i < children.length; i++) {
+        var vnode = children[i];
+        var key = vnode.key;
+        if (isDef(key)) {
+          if (seenKeys[key]) {
+            warn(
+              ("Duplicate keys detected: '" + key + "'. This may cause an update error."),
+              vnode.context
+            );
+          } else {
+            seenKeys[key] = true;
+          }
+        }
+      }
+    }
+
+    function findIdxInOld (node, oldCh, start, end) {
+      for (var i = start; i < end; i++) {
+        var c = oldCh[i];
+        if (isDef(c) && sameVnode(node, c)) { return i }
+      }
+    }
+
+    function patchVnode (
+      oldVnode,
+      vnode,
+      insertedVnodeQueue,
+      ownerArray,
+      index,
+      removeOnly
+    ) {
+      if (oldVnode === vnode) {
+        return
+      }
+
+      if (isDef(vnode.elm) && isDef(ownerArray)) {
+        // clone reused vnode
+        vnode = ownerArray[index] = cloneVNode(vnode);
+      }
+
+      var elm = vnode.elm = oldVnode.elm;
+
+      if (isTrue(oldVnode.isAsyncPlaceholder)) {
+        if (isDef(vnode.asyncFactory.resolved)) {
+          hydrate(oldVnode.elm, vnode, insertedVnodeQueue);
+        } else {
+          vnode.isAsyncPlaceholder = true;
+        }
+        return
+      }
+
+      // reuse element for static trees.
+      // note we only do this if the vnode is cloned -
+      // if the new node is not cloned it means the render functions have been
+      // reset by the hot-reload-api and we need to do a proper re-render.
+      if (isTrue(vnode.isStatic) &&
+        isTrue(oldVnode.isStatic) &&
+        vnode.key === oldVnode.key &&
+        (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))
+      ) {
+        vnode.componentInstance = oldVnode.componentInstance;
+        return
+      }
+
+      var i;
+      var data = vnode.data;
+      if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {
+        i(oldVnode, vnode);
+      }
+
+      var oldCh = oldVnode.children;
+      var ch = vnode.children;
+      if (isDef(data) && isPatchable(vnode)) {
+        for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }
+        if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }
+      }
+      if (isUndef(vnode.text)) {
+        if (isDef(oldCh) && isDef(ch)) {
+          if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }
+        } else if (isDef(ch)) {
+          {
+            checkDuplicateKeys(ch);
+          }
+          if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }
+          addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);
+        } else if (isDef(oldCh)) {
+          removeVnodes(oldCh, 0, oldCh.length - 1);
+        } else if (isDef(oldVnode.text)) {
+          nodeOps.setTextContent(elm, '');
+        }
+      } else if (oldVnode.text !== vnode.text) {
+        nodeOps.setTextContent(elm, vnode.text);
+      }
+      if (isDef(data)) {
+        if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }
+      }
+    }
+
+    function invokeInsertHook (vnode, queue, initial) {
+      // delay insert hooks for component root nodes, invoke them after the
+      // element is really inserted
+      if (isTrue(initial) && isDef(vnode.parent)) {
+        vnode.parent.data.pendingInsert = queue;
+      } else {
+        for (var i = 0; i < queue.length; ++i) {
+          queue[i].data.hook.insert(queue[i]);
+        }
+      }
+    }
+
+    var hydrationBailed = false;
+    // list of modules that can skip create hook during hydration because they
+    // are already rendered on the client or has no need for initialization
+    // Note: style is excluded because it relies on initial clone for future
+    // deep updates (#7063).
+    var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');
+
+    // Note: this is a browser-only function so we can assume elms are DOM nodes.
+    function hydrate (elm, vnode, insertedVnodeQueue, inVPre) {
+      var i;
+      var tag = vnode.tag;
+      var data = vnode.data;
+      var children = vnode.children;
+      inVPre = inVPre || (data && data.pre);
+      vnode.elm = elm;
+
+      if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {
+        vnode.isAsyncPlaceholder = true;
+        return true
+      }
+      // assert node match
+      {
+        if (!assertNodeMatch(elm, vnode, inVPre)) {
+          return false
+        }
+      }
+      if (isDef(data)) {
+        if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }
+        if (isDef(i = vnode.componentInstance)) {
+          // child component. it should have hydrated its own tree.
+          initComponent(vnode, insertedVnodeQueue);
+          return true
+        }
+      }
+      if (isDef(tag)) {
+        if (isDef(children)) {
+          // empty element, allow client to pick up and populate children
+          if (!elm.hasChildNodes()) {
+            createChildren(vnode, children, insertedVnodeQueue);
+          } else {
+            // v-html and domProps: innerHTML
+            if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {
+              if (i !== elm.innerHTML) {
+                /* istanbul ignore if */
+                if (typeof console !== 'undefined' &&
+                  !hydrationBailed
+                ) {
+                  hydrationBailed = true;
+                  console.warn('Parent: ', elm);
+                  console.warn('server innerHTML: ', i);
+                  console.warn('client innerHTML: ', elm.innerHTML);
+                }
+                return false
+              }
+            } else {
+              // iterate and compare children lists
+              var childrenMatch = true;
+              var childNode = elm.firstChild;
+              for (var i$1 = 0; i$1 < children.length; i$1++) {
+                if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {
+                  childrenMatch = false;
+                  break
+                }
+                childNode = childNode.nextSibling;
+              }
+              // if childNode is not null, it means the actual childNodes list is
+              // longer than the virtual children list.
+              if (!childrenMatch || childNode) {
+                /* istanbul ignore if */
+                if (typeof console !== 'undefined' &&
+                  !hydrationBailed
+                ) {
+                  hydrationBailed = true;
+                  console.warn('Parent: ', elm);
+                  console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);
+                }
+                return false
+              }
+            }
+          }
+        }
+        if (isDef(data)) {
+          var fullInvoke = false;
+          for (var key in data) {
+            if (!isRenderedModule(key)) {
+              fullInvoke = true;
+              invokeCreateHooks(vnode, insertedVnodeQueue);
+              break
+            }
+          }
+          if (!fullInvoke && data['class']) {
+            // ensure collecting deps for deep class bindings for future updates
+            traverse(data['class']);
+          }
+        }
+      } else if (elm.data !== vnode.text) {
+        elm.data = vnode.text;
+      }
+      return true
+    }
+
+    function assertNodeMatch (node, vnode, inVPre) {
+      if (isDef(vnode.tag)) {
+        return vnode.tag.indexOf('vue-component') === 0 || (
+          !isUnknownElement$$1(vnode, inVPre) &&
+          vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())
+        )
+      } else {
+        return node.nodeType === (vnode.isComment ? 8 : 3)
+      }
+    }
+
+    return function patch (oldVnode, vnode, hydrating, removeOnly) {
+      if (isUndef(vnode)) {
+        if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }
+        return
+      }
+
+      var isInitialPatch = false;
+      var insertedVnodeQueue = [];
+
+      if (isUndef(oldVnode)) {
+        // empty mount (likely as component), create new root element
+        isInitialPatch = true;
+        createElm(vnode, insertedVnodeQueue);
+      } else {
+        var isRealElement = isDef(oldVnode.nodeType);
+        if (!isRealElement && sameVnode(oldVnode, vnode)) {
+          // patch existing root node
+          patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);
+        } else {
+          if (isRealElement) {
+            // mounting to a real element
+            // check if this is server-rendered content and if we can perform
+            // a successful hydration.
+            if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {
+              oldVnode.removeAttribute(SSR_ATTR);
+              hydrating = true;
+            }
+            if (isTrue(hydrating)) {
+              if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {
+                invokeInsertHook(vnode, insertedVnodeQueue, true);
+                return oldVnode
+              } else {
+                warn(
+                  'The client-side rendered virtual DOM tree is not matching ' +
+                  'server-rendered content. This is likely caused by incorrect ' +
+                  'HTML markup, for example nesting block-level elements inside ' +
+                  '<p>, or missing <tbody>. Bailing hydration and performing ' +
+                  'full client-side render.'
+                );
+              }
+            }
+            // either not server-rendered, or hydration failed.
+            // create an empty node and replace it
+            oldVnode = emptyNodeAt(oldVnode);
+          }
+
+          // replacing existing element
+          var oldElm = oldVnode.elm;
+          var parentElm = nodeOps.parentNode(oldElm);
+
+          // create new node
+          createElm(
+            vnode,
+            insertedVnodeQueue,
+            // extremely rare edge case: do not insert if old element is in a
+            // leaving transition. Only happens when combining transition +
+            // keep-alive + HOCs. (#4590)
+            oldElm._leaveCb ? null : parentElm,
+            nodeOps.nextSibling(oldElm)
+          );
+
+          // update parent placeholder node element, recursively
+          if (isDef(vnode.parent)) {
+            var ancestor = vnode.parent;
+            var patchable = isPatchable(vnode);
+            while (ancestor) {
+              for (var i = 0; i < cbs.destroy.length; ++i) {
+                cbs.destroy[i](ancestor);
+              }
+              ancestor.elm = vnode.elm;
+              if (patchable) {
+                for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {
+                  cbs.create[i$1](emptyNode, ancestor);
+                }
+                // #6513
+                // invoke insert hooks that may have been merged by create hooks.
+                // e.g. for directives that uses the "inserted" hook.
+                var insert = ancestor.data.hook.insert;
+                if (insert.merged) {
+                  // start at index 1 to avoid re-invoking component mounted hook
+                  for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {
+                    insert.fns[i$2]();
+                  }
+                }
+              } else {
+                registerRef(ancestor);
+              }
+              ancestor = ancestor.parent;
+            }
+          }
+
+          // destroy old node
+          if (isDef(parentElm)) {
+            removeVnodes([oldVnode], 0, 0);
+          } else if (isDef(oldVnode.tag)) {
+            invokeDestroyHook(oldVnode);
+          }
+        }
+      }
+
+      invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);
+      return vnode.elm
+    }
+  }
+
+  /*  */
+
+  var directives = {
+    create: updateDirectives,
+    update: updateDirectives,
+    destroy: function unbindDirectives (vnode) {
+      updateDirectives(vnode, emptyNode);
+    }
+  };
+
+  function updateDirectives (oldVnode, vnode) {
+    if (oldVnode.data.directives || vnode.data.directives) {
+      _update(oldVnode, vnode);
+    }
+  }
+
+  function _update (oldVnode, vnode) {
+    var isCreate = oldVnode === emptyNode;
+    var isDestroy = vnode === emptyNode;
+    var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);
+    var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);
+
+    var dirsWithInsert = [];
+    var dirsWithPostpatch = [];
+
+    var key, oldDir, dir;
+    for (key in newDirs) {
+      oldDir = oldDirs[key];
+      dir = newDirs[key];
+      if (!oldDir) {
+        // new directive, bind
+        callHook$1(dir, 'bind', vnode, oldVnode);
+        if (dir.def && dir.def.inserted) {
+          dirsWithInsert.push(dir);
+        }
+      } else {
+        // existing directive, update
+        dir.oldValue = oldDir.value;
+        dir.oldArg = oldDir.arg;
+        callHook$1(dir, 'update', vnode, oldVnode);
+        if (dir.def && dir.def.componentUpdated) {
+          dirsWithPostpatch.push(dir);
+        }
+      }
+    }
+
+    if (dirsWithInsert.length) {
+      var callInsert = function () {
+        for (var i = 0; i < dirsWithInsert.length; i++) {
+          callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);
+        }
+      };
+      if (isCreate) {
+        mergeVNodeHook(vnode, 'insert', callInsert);
+      } else {
+        callInsert();
+      }
+    }
+
+    if (dirsWithPostpatch.length) {
+      mergeVNodeHook(vnode, 'postpatch', function () {
+        for (var i = 0; i < dirsWithPostpatch.length; i++) {
+          callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);
+        }
+      });
+    }
+
+    if (!isCreate) {
+      for (key in oldDirs) {
+        if (!newDirs[key]) {
+          // no longer present, unbind
+          callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);
+        }
+      }
+    }
+  }
+
+  var emptyModifiers = Object.create(null);
+
+  function normalizeDirectives$1 (
+    dirs,
+    vm
+  ) {
+    var res = Object.create(null);
+    if (!dirs) {
+      // $flow-disable-line
+      return res
+    }
+    var i, dir;
+    for (i = 0; i < dirs.length; i++) {
+      dir = dirs[i];
+      if (!dir.modifiers) {
+        // $flow-disable-line
+        dir.modifiers = emptyModifiers;
+      }
+      res[getRawDirName(dir)] = dir;
+      dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);
+    }
+    // $flow-disable-line
+    return res
+  }
+
+  function getRawDirName (dir) {
+    return dir.rawName || ((dir.name) + "." + (Object.keys(dir.modifiers || {}).join('.')))
+  }
+
+  function callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {
+    var fn = dir.def && dir.def[hook];
+    if (fn) {
+      try {
+        fn(vnode.elm, dir, vnode, oldVnode, isDestroy);
+      } catch (e) {
+        handleError(e, vnode.context, ("directive " + (dir.name) + " " + hook + " hook"));
+      }
+    }
+  }
+
+  var baseModules = [
+    ref,
+    directives
+  ];
+
+  /*  */
+
+  function updateAttrs (oldVnode, vnode) {
+    var opts = vnode.componentOptions;
+    if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {
+      return
+    }
+    if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {
+      return
+    }
+    var key, cur, old;
+    var elm = vnode.elm;
+    var oldAttrs = oldVnode.data.attrs || {};
+    var attrs = vnode.data.attrs || {};
+    // clone observed objects, as the user probably wants to mutate it
+    if (isDef(attrs.__ob__)) {
+      attrs = vnode.data.attrs = extend({}, attrs);
+    }
+
+    for (key in attrs) {
+      cur = attrs[key];
+      old = oldAttrs[key];
+      if (old !== cur) {
+        setAttr(elm, key, cur, vnode.data.pre);
+      }
+    }
+    // #4391: in IE9, setting type can reset value for input[type=radio]
+    // #6666: IE/Edge forces progress value down to 1 before setting a max
+    /* istanbul ignore if */
+    if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {
+      setAttr(elm, 'value', attrs.value);
+    }
+    for (key in oldAttrs) {
+      if (isUndef(attrs[key])) {
+        if (isXlink(key)) {
+          elm.removeAttributeNS(xlinkNS, getXlinkProp(key));
+        } else if (!isEnumeratedAttr(key)) {
+          elm.removeAttribute(key);
+        }
+      }
+    }
+  }
+
+  function setAttr (el, key, value, isInPre) {
+    if (isInPre || el.tagName.indexOf('-') > -1) {
+      baseSetAttr(el, key, value);
+    } else if (isBooleanAttr(key)) {
+      // set attribute for blank value
+      // e.g. <option disabled>Select one</option>
+      if (isFalsyAttrValue(value)) {
+        el.removeAttribute(key);
+      } else {
+        // technically allowfullscreen is a boolean attribute for <iframe>,
+        // but Flash expects a value of "true" when used on <embed> tag
+        value = key === 'allowfullscreen' && el.tagName === 'EMBED'
+          ? 'true'
+          : key;
+        el.setAttribute(key, value);
+      }
+    } else if (isEnumeratedAttr(key)) {
+      el.setAttribute(key, convertEnumeratedValue(key, value));
+    } else if (isXlink(key)) {
+      if (isFalsyAttrValue(value)) {
+        el.removeAttributeNS(xlinkNS, getXlinkProp(key));
+      } else {
+        el.setAttributeNS(xlinkNS, key, value);
+      }
+    } else {
+      baseSetAttr(el, key, value);
+    }
+  }
+
+  function baseSetAttr (el, key, value) {
+    if (isFalsyAttrValue(value)) {
+      el.removeAttribute(key);
+    } else {
+      // #7138: IE10 & 11 fires input event when setting placeholder on
+      // <textarea>... block the first input event and remove the blocker
+      // immediately.
+      /* istanbul ignore if */
+      if (
+        isIE && !isIE9 &&
+        el.tagName === 'TEXTAREA' &&
+        key === 'placeholder' && value !== '' && !el.__ieph
+      ) {
+        var blocker = function (e) {
+          e.stopImmediatePropagation();
+          el.removeEventListener('input', blocker);
+        };
+        el.addEventListener('input', blocker);
+        // $flow-disable-line
+        el.__ieph = true; /* IE placeholder patched */
+      }
+      el.setAttribute(key, value);
+    }
+  }
+
+  var attrs = {
+    create: updateAttrs,
+    update: updateAttrs
+  };
+
+  /*  */
+
+  function updateClass (oldVnode, vnode) {
+    var el = vnode.elm;
+    var data = vnode.data;
+    var oldData = oldVnode.data;
+    if (
+      isUndef(data.staticClass) &&
+      isUndef(data.class) && (
+        isUndef(oldData) || (
+          isUndef(oldData.staticClass) &&
+          isUndef(oldData.class)
+        )
+      )
+    ) {
+      return
+    }
+
+    var cls = genClassForVnode(vnode);
+
+    // handle transition classes
+    var transitionClass = el._transitionClasses;
+    if (isDef(transitionClass)) {
+      cls = concat(cls, stringifyClass(transitionClass));
+    }
+
+    // set the class
+    if (cls !== el._prevClass) {
+      el.setAttribute('class', cls);
+      el._prevClass = cls;
+    }
+  }
+
+  var klass = {
+    create: updateClass,
+    update: updateClass
+  };
+
+  /*  */
+
+  var validDivisionCharRE = /[\w).+\-_$\]]/;
+
+  function parseFilters (exp) {
+    var inSingle = false;
+    var inDouble = false;
+    var inTemplateString = false;
+    var inRegex = false;
+    var curly = 0;
+    var square = 0;
+    var paren = 0;
+    var lastFilterIndex = 0;
+    var c, prev, i, expression, filters;
+
+    for (i = 0; i < exp.length; i++) {
+      prev = c;
+      c = exp.charCodeAt(i);
+      if (inSingle) {
+        if (c === 0x27 && prev !== 0x5C) { inSingle = false; }
+      } else if (inDouble) {
+        if (c === 0x22 && prev !== 0x5C) { inDouble = false; }
+      } else if (inTemplateString) {
+        if (c === 0x60 && prev !== 0x5C) { inTemplateString = false; }
+      } else if (inRegex) {
+        if (c === 0x2f && prev !== 0x5C) { inRegex = false; }
+      } else if (
+        c === 0x7C && // pipe
+        exp.charCodeAt(i + 1) !== 0x7C &&
+        exp.charCodeAt(i - 1) !== 0x7C &&
+        !curly && !square && !paren
+      ) {
+        if (expression === undefined) {
+          // first filter, end of expression
+          lastFilterIndex = i + 1;
+          expression = exp.slice(0, i).trim();
+        } else {
+          pushFilter();
+        }
+      } else {
+        switch (c) {
+          case 0x22: inDouble = true; break         // "
+          case 0x27: inSingle = true; break         // '
+          case 0x60: inTemplateString = true; break // `
+          case 0x28: paren++; break                 // (
+          case 0x29: paren--; break                 // )
+          case 0x5B: square++; break                // [
+          case 0x5D: square--; break                // ]
+          case 0x7B: curly++; break                 // {
+          case 0x7D: curly--; break                 // }
+        }
+        if (c === 0x2f) { // /
+          var j = i - 1;
+          var p = (void 0);
+          // find first non-whitespace prev char
+          for (; j >= 0; j--) {
+            p = exp.charAt(j);
+            if (p !== ' ') { break }
+          }
+          if (!p || !validDivisionCharRE.test(p)) {
+            inRegex = true;
+          }
+        }
+      }
+    }
+
+    if (expression === undefined) {
+      expression = exp.slice(0, i).trim();
+    } else if (lastFilterIndex !== 0) {
+      pushFilter();
+    }
+
+    function pushFilter () {
+      (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());
+      lastFilterIndex = i + 1;
+    }
+
+    if (filters) {
+      for (i = 0; i < filters.length; i++) {
+        expression = wrapFilter(expression, filters[i]);
+      }
+    }
+
+    return expression
+  }
+
+  function wrapFilter (exp, filter) {
+    var i = filter.indexOf('(');
+    if (i < 0) {
+      // _f: resolveFilter
+      return ("_f(\"" + filter + "\")(" + exp + ")")
+    } else {
+      var name = filter.slice(0, i);
+      var args = filter.slice(i + 1);
+      return ("_f(\"" + name + "\")(" + exp + (args !== ')' ? ',' + args : args))
+    }
+  }
+
+  /*  */
+
+
+
+  /* eslint-disable no-unused-vars */
+  function baseWarn (msg, range) {
+    console.error(("[Vue compiler]: " + msg));
+  }
+  /* eslint-enable no-unused-vars */
+
+  function pluckModuleFunction (
+    modules,
+    key
+  ) {
+    return modules
+      ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; })
+      : []
+  }
+
+  function addProp (el, name, value, range, dynamic) {
+    (el.props || (el.props = [])).push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));
+    el.plain = false;
+  }
+
+  function addAttr (el, name, value, range, dynamic) {
+    var attrs = dynamic
+      ? (el.dynamicAttrs || (el.dynamicAttrs = []))
+      : (el.attrs || (el.attrs = []));
+    attrs.push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));
+    el.plain = false;
+  }
+
+  // add a raw attr (use this in preTransforms)
+  function addRawAttr (el, name, value, range) {
+    el.attrsMap[name] = value;
+    el.attrsList.push(rangeSetItem({ name: name, value: value }, range));
+  }
+
+  function addDirective (
+    el,
+    name,
+    rawName,
+    value,
+    arg,
+    isDynamicArg,
+    modifiers,
+    range
+  ) {
+    (el.directives || (el.directives = [])).push(rangeSetItem({
+      name: name,
+      rawName: rawName,
+      value: value,
+      arg: arg,
+      isDynamicArg: isDynamicArg,
+      modifiers: modifiers
+    }, range));
+    el.plain = false;
+  }
+
+  function prependModifierMarker (symbol, name, dynamic) {
+    return dynamic
+      ? ("_p(" + name + ",\"" + symbol + "\")")
+      : symbol + name // mark the event as captured
+  }
+
+  function addHandler (
+    el,
+    name,
+    value,
+    modifiers,
+    important,
+    warn,
+    range,
+    dynamic
+  ) {
+    modifiers = modifiers || emptyObject;
+    // warn prevent and passive modifier
+    /* istanbul ignore if */
+    if (
+      warn &&
+      modifiers.prevent && modifiers.passive
+    ) {
+      warn(
+        'passive and prevent can\'t be used together. ' +
+        'Passive handler can\'t prevent default event.',
+        range
+      );
+    }
+
+    // normalize click.right and click.middle since they don't actually fire
+    // this is technically browser-specific, but at least for now browsers are
+    // the only target envs that have right/middle clicks.
+    if (modifiers.right) {
+      if (dynamic) {
+        name = "(" + name + ")==='click'?'contextmenu':(" + name + ")";
+      } else if (name === 'click') {
+        name = 'contextmenu';
+        delete modifiers.right;
+      }
+    } else if (modifiers.middle) {
+      if (dynamic) {
+        name = "(" + name + ")==='click'?'mouseup':(" + name + ")";
+      } else if (name === 'click') {
+        name = 'mouseup';
+      }
+    }
+
+    // check capture modifier
+    if (modifiers.capture) {
+      delete modifiers.capture;
+      name = prependModifierMarker('!', name, dynamic);
+    }
+    if (modifiers.once) {
+      delete modifiers.once;
+      name = prependModifierMarker('~', name, dynamic);
+    }
+    /* istanbul ignore if */
+    if (modifiers.passive) {
+      delete modifiers.passive;
+      name = prependModifierMarker('&', name, dynamic);
+    }
+
+    var events;
+    if (modifiers.native) {
+      delete modifiers.native;
+      events = el.nativeEvents || (el.nativeEvents = {});
+    } else {
+      events = el.events || (el.events = {});
+    }
+
+    var newHandler = rangeSetItem({ value: value.trim(), dynamic: dynamic }, range);
+    if (modifiers !== emptyObject) {
+      newHandler.modifiers = modifiers;
+    }
+
+    var handlers = events[name];
+    /* istanbul ignore if */
+    if (Array.isArray(handlers)) {
+      important ? handlers.unshift(newHandler) : handlers.push(newHandler);
+    } else if (handlers) {
+      events[name] = important ? [newHandler, handlers] : [handlers, newHandler];
+    } else {
+      events[name] = newHandler;
+    }
+
+    el.plain = false;
+  }
+
+  function getRawBindingAttr (
+    el,
+    name
+  ) {
+    return el.rawAttrsMap[':' + name] ||
+      el.rawAttrsMap['v-bind:' + name] ||
+      el.rawAttrsMap[name]
+  }
+
+  function getBindingAttr (
+    el,
+    name,
+    getStatic
+  ) {
+    var dynamicValue =
+      getAndRemoveAttr(el, ':' + name) ||
+      getAndRemoveAttr(el, 'v-bind:' + name);
+    if (dynamicValue != null) {
+      return parseFilters(dynamicValue)
+    } else if (getStatic !== false) {
+      var staticValue = getAndRemoveAttr(el, name);
+      if (staticValue != null) {
+        return JSON.stringify(staticValue)
+      }
+    }
+  }
+
+  // note: this only removes the attr from the Array (attrsList) so that it
+  // doesn't get processed by processAttrs.
+  // By default it does NOT remove it from the map (attrsMap) because the map is
+  // needed during codegen.
+  function getAndRemoveAttr (
+    el,
+    name,
+    removeFromMap
+  ) {
+    var val;
+    if ((val = el.attrsMap[name]) != null) {
+      var list = el.attrsList;
+      for (var i = 0, l = list.length; i < l; i++) {
+        if (list[i].name === name) {
+          list.splice(i, 1);
+          break
+        }
+      }
+    }
+    if (removeFromMap) {
+      delete el.attrsMap[name];
+    }
+    return val
+  }
+
+  function getAndRemoveAttrByRegex (
+    el,
+    name
+  ) {
+    var list = el.attrsList;
+    for (var i = 0, l = list.length; i < l; i++) {
+      var attr = list[i];
+      if (name.test(attr.name)) {
+        list.splice(i, 1);
+        return attr
+      }
+    }
+  }
+
+  function rangeSetItem (
+    item,
+    range
+  ) {
+    if (range) {
+      if (range.start != null) {
+        item.start = range.start;
+      }
+      if (range.end != null) {
+        item.end = range.end;
+      }
+    }
+    return item
+  }
+
+  /*  */
+
+  /**
+   * Cross-platform code generation for component v-model
+   */
+  function genComponentModel (
+    el,
+    value,
+    modifiers
+  ) {
+    var ref = modifiers || {};
+    var number = ref.number;
+    var trim = ref.trim;
+
+    var baseValueExpression = '$$v';
+    var valueExpression = baseValueExpression;
+    if (trim) {
+      valueExpression =
+        "(typeof " + baseValueExpression + " === 'string'" +
+        "? " + baseValueExpression + ".trim()" +
+        ": " + baseValueExpression + ")";
+    }
+    if (number) {
+      valueExpression = "_n(" + valueExpression + ")";
+    }
+    var assignment = genAssignmentCode(value, valueExpression);
+
+    el.model = {
+      value: ("(" + value + ")"),
+      expression: JSON.stringify(value),
+      callback: ("function (" + baseValueExpression + ") {" + assignment + "}")
+    };
+  }
+
+  /**
+   * Cross-platform codegen helper for generating v-model value assignment code.
+   */
+  function genAssignmentCode (
+    value,
+    assignment
+  ) {
+    var res = parseModel(value);
+    if (res.key === null) {
+      return (value + "=" + assignment)
+    } else {
+      return ("$set(" + (res.exp) + ", " + (res.key) + ", " + assignment + ")")
+    }
+  }
+
+  /**
+   * Parse a v-model expression into a base path and a final key segment.
+   * Handles both dot-path and possible square brackets.
+   *
+   * Possible cases:
+   *
+   * - test
+   * - test[key]
+   * - test[test1[key]]
+   * - test["a"][key]
+   * - xxx.test[a[a].test1[key]]
+   * - test.xxx.a["asa"][test1[key]]
+   *
+   */
+
+  var len, str, chr, index$1, expressionPos, expressionEndPos;
+
+
+
+  function parseModel (val) {
+    // Fix https://github.com/vuejs/vue/pull/7730
+    // allow v-model="obj.val " (trailing whitespace)
+    val = val.trim();
+    len = val.length;
+
+    if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {
+      index$1 = val.lastIndexOf('.');
+      if (index$1 > -1) {
+        return {
+          exp: val.slice(0, index$1),
+          key: '"' + val.slice(index$1 + 1) + '"'
+        }
+      } else {
+        return {
+          exp: val,
+          key: null
+        }
+      }
+    }
+
+    str = val;
+    index$1 = expressionPos = expressionEndPos = 0;
+
+    while (!eof()) {
+      chr = next();
+      /* istanbul ignore if */
+      if (isStringStart(chr)) {
+        parseString(chr);
+      } else if (chr === 0x5B) {
+        parseBracket(chr);
+      }
+    }
+
+    return {
+      exp: val.slice(0, expressionPos),
+      key: val.slice(expressionPos + 1, expressionEndPos)
+    }
+  }
+
+  function next () {
+    return str.charCodeAt(++index$1)
+  }
+
+  function eof () {
+    return index$1 >= len
+  }
+
+  function isStringStart (chr) {
+    return chr === 0x22 || chr === 0x27
+  }
+
+  function parseBracket (chr) {
+    var inBracket = 1;
+    expressionPos = index$1;
+    while (!eof()) {
+      chr = next();
+      if (isStringStart(chr)) {
+        parseString(chr);
+        continue
+      }
+      if (chr === 0x5B) { inBracket++; }
+      if (chr === 0x5D) { inBracket--; }
+      if (inBracket === 0) {
+        expressionEndPos = index$1;
+        break
+      }
+    }
+  }
+
+  function parseString (chr) {
+    var stringQuote = chr;
+    while (!eof()) {
+      chr = next();
+      if (chr === stringQuote) {
+        break
+      }
+    }
+  }
+
+  /*  */
+
+  var warn$1;
+
+  // in some cases, the event used has to be determined at runtime
+  // so we used some reserved tokens during compile.
+  var RANGE_TOKEN = '__r';
+  var CHECKBOX_RADIO_TOKEN = '__c';
+
+  function model (
+    el,
+    dir,
+    _warn
+  ) {
+    warn$1 = _warn;
+    var value = dir.value;
+    var modifiers = dir.modifiers;
+    var tag = el.tag;
+    var type = el.attrsMap.type;
+
+    {
+      // inputs with type="file" are read only and setting the input's
+      // value will throw an error.
+      if (tag === 'input' && type === 'file') {
+        warn$1(
+          "<" + (el.tag) + " v-model=\"" + value + "\" type=\"file\">:\n" +
+          "File inputs are read only. Use a v-on:change listener instead.",
+          el.rawAttrsMap['v-model']
+        );
+      }
+    }
+
+    if (el.component) {
+      genComponentModel(el, value, modifiers);
+      // component v-model doesn't need extra runtime
+      return false
+    } else if (tag === 'select') {
+      genSelect(el, value, modifiers);
+    } else if (tag === 'input' && type === 'checkbox') {
+      genCheckboxModel(el, value, modifiers);
+    } else if (tag === 'input' && type === 'radio') {
+      genRadioModel(el, value, modifiers);
+    } else if (tag === 'input' || tag === 'textarea') {
+      genDefaultModel(el, value, modifiers);
+    } else if (!config.isReservedTag(tag)) {
+      genComponentModel(el, value, modifiers);
+      // component v-model doesn't need extra runtime
+      return false
+    } else {
+      warn$1(
+        "<" + (el.tag) + " v-model=\"" + value + "\">: " +
+        "v-model is not supported on this element type. " +
+        'If you are working with contenteditable, it\'s recommended to ' +
+        'wrap a library dedicated for that purpose inside a custom component.',
+        el.rawAttrsMap['v-model']
+      );
+    }
+
+    // ensure runtime directive metadata
+    return true
+  }
+
+  function genCheckboxModel (
+    el,
+    value,
+    modifiers
+  ) {
+    var number = modifiers && modifiers.number;
+    var valueBinding = getBindingAttr(el, 'value') || 'null';
+    var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';
+    var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';
+    addProp(el, 'checked',
+      "Array.isArray(" + value + ")" +
+      "?_i(" + value + "," + valueBinding + ")>-1" + (
+        trueValueBinding === 'true'
+          ? (":(" + value + ")")
+          : (":_q(" + value + "," + trueValueBinding + ")")
+      )
+    );
+    addHandler(el, 'change',
+      "var $$a=" + value + "," +
+          '$$el=$event.target,' +
+          "$$c=$$el.checked?(" + trueValueBinding + "):(" + falseValueBinding + ");" +
+      'if(Array.isArray($$a)){' +
+        "var $$v=" + (number ? '_n(' + valueBinding + ')' : valueBinding) + "," +
+            '$$i=_i($$a,$$v);' +
+        "if($$el.checked){$$i<0&&(" + (genAssignmentCode(value, '$$a.concat([$$v])')) + ")}" +
+        "else{$$i>-1&&(" + (genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))')) + ")}" +
+      "}else{" + (genAssignmentCode(value, '$$c')) + "}",
+      null, true
+    );
+  }
+
+  function genRadioModel (
+    el,
+    value,
+    modifiers
+  ) {
+    var number = modifiers && modifiers.number;
+    var valueBinding = getBindingAttr(el, 'value') || 'null';
+    valueBinding = number ? ("_n(" + valueBinding + ")") : valueBinding;
+    addProp(el, 'checked', ("_q(" + value + "," + valueBinding + ")"));
+    addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true);
+  }
+
+  function genSelect (
+    el,
+    value,
+    modifiers
+  ) {
+    var number = modifiers && modifiers.number;
+    var selectedVal = "Array.prototype.filter" +
+      ".call($event.target.options,function(o){return o.selected})" +
+      ".map(function(o){var val = \"_value\" in o ? o._value : o.value;" +
+      "return " + (number ? '_n(val)' : 'val') + "})";
+
+    var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';
+    var code = "var $$selectedVal = " + selectedVal + ";";
+    code = code + " " + (genAssignmentCode(value, assignment));
+    addHandler(el, 'change', code, null, true);
+  }
+
+  function genDefaultModel (
+    el,
+    value,
+    modifiers
+  ) {
+    var type = el.attrsMap.type;
+
+    // warn if v-bind:value conflicts with v-model
+    // except for inputs with v-bind:type
+    {
+      var value$1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value'];
+      var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type'];
+      if (value$1 && !typeBinding) {
+        var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value';
+        warn$1(
+          binding + "=\"" + value$1 + "\" conflicts with v-model on the same element " +
+          'because the latter already expands to a value binding internally',
+          el.rawAttrsMap[binding]
+        );
+      }
+    }
+
+    var ref = modifiers || {};
+    var lazy = ref.lazy;
+    var number = ref.number;
+    var trim = ref.trim;
+    var needCompositionGuard = !lazy && type !== 'range';
+    var event = lazy
+      ? 'change'
+      : type === 'range'
+        ? RANGE_TOKEN
+        : 'input';
+
+    var valueExpression = '$event.target.value';
+    if (trim) {
+      valueExpression = "$event.target.value.trim()";
+    }
+    if (number) {
+      valueExpression = "_n(" + valueExpression + ")";
+    }
+
+    var code = genAssignmentCode(value, valueExpression);
+    if (needCompositionGuard) {
+      code = "if($event.target.composing)return;" + code;
+    }
+
+    addProp(el, 'value', ("(" + value + ")"));
+    addHandler(el, event, code, null, true);
+    if (trim || number) {
+      addHandler(el, 'blur', '$forceUpdate()');
+    }
+  }
+
+  /*  */
+
+  // normalize v-model event tokens that can only be determined at runtime.
+  // it's important to place the event as the first in the array because
+  // the whole point is ensuring the v-model callback gets called before
+  // user-attached handlers.
+  function normalizeEvents (on) {
+    /* istanbul ignore if */
+    if (isDef(on[RANGE_TOKEN])) {
+      // IE input[type=range] only supports `change` event
+      var event = isIE ? 'change' : 'input';
+      on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);
+      delete on[RANGE_TOKEN];
+    }
+    // This was originally intended to fix #4521 but no longer necessary
+    // after 2.5. Keeping it for backwards compat with generated code from < 2.4
+    /* istanbul ignore if */
+    if (isDef(on[CHECKBOX_RADIO_TOKEN])) {
+      on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);
+      delete on[CHECKBOX_RADIO_TOKEN];
+    }
+  }
+
+  var target$1;
+
+  function createOnceHandler$1 (event, handler, capture) {
+    var _target = target$1; // save current target element in closure
+    return function onceHandler () {
+      var res = handler.apply(null, arguments);
+      if (res !== null) {
+        remove$2(event, onceHandler, capture, _target);
+      }
+    }
+  }
+
+  // #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp
+  // implementation and does not fire microtasks in between event propagation, so
+  // safe to exclude.
+  var useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);
+
+  function add$1 (
+    name,
+    handler,
+    capture,
+    passive
+  ) {
+    // async edge case #6566: inner click event triggers patch, event handler
+    // attached to outer element during patch, and triggered again. This
+    // happens because browsers fire microtask ticks between event propagation.
+    // the solution is simple: we save the timestamp when a handler is attached,
+    // and the handler would only fire if the event passed to it was fired
+    // AFTER it was attached.
+    if (useMicrotaskFix) {
+      var attachedTimestamp = currentFlushTimestamp;
+      var original = handler;
+      handler = original._wrapper = function (e) {
+        if (
+          // no bubbling, should always fire.
+          // this is just a safety net in case event.timeStamp is unreliable in
+          // certain weird environments...
+          e.target === e.currentTarget ||
+          // event is fired after handler attachment
+          e.timeStamp >= attachedTimestamp ||
+          // bail for environments that have buggy event.timeStamp implementations
+          // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState
+          // #9681 QtWebEngine event.timeStamp is negative value
+          e.timeStamp <= 0 ||
+          // #9448 bail if event is fired in another document in a multi-page
+          // electron/nw.js app, since event.timeStamp will be using a different
+          // starting reference
+          e.target.ownerDocument !== document
+        ) {
+          return original.apply(this, arguments)
+        }
+      };
+    }
+    target$1.addEventListener(
+      name,
+      handler,
+      supportsPassive
+        ? { capture: capture, passive: passive }
+        : capture
+    );
+  }
+
+  function remove$2 (
+    name,
+    handler,
+    capture,
+    _target
+  ) {
+    (_target || target$1).removeEventListener(
+      name,
+      handler._wrapper || handler,
+      capture
+    );
+  }
+
+  function updateDOMListeners (oldVnode, vnode) {
+    if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {
+      return
+    }
+    var on = vnode.data.on || {};
+    var oldOn = oldVnode.data.on || {};
+    target$1 = vnode.elm;
+    normalizeEvents(on);
+    updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context);
+    target$1 = undefined;
+  }
+
+  var events = {
+    create: updateDOMListeners,
+    update: updateDOMListeners
+  };
+
+  /*  */
+
+  var svgContainer;
+
+  function updateDOMProps (oldVnode, vnode) {
+    if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {
+      return
+    }
+    var key, cur;
+    var elm = vnode.elm;
+    var oldProps = oldVnode.data.domProps || {};
+    var props = vnode.data.domProps || {};
+    // clone observed objects, as the user probably wants to mutate it
+    if (isDef(props.__ob__)) {
+      props = vnode.data.domProps = extend({}, props);
+    }
+
+    for (key in oldProps) {
+      if (!(key in props)) {
+        elm[key] = '';
+      }
+    }
+
+    for (key in props) {
+      cur = props[key];
+      // ignore children if the node has textContent or innerHTML,
+      // as these will throw away existing DOM nodes and cause removal errors
+      // on subsequent patches (#3360)
+      if (key === 'textContent' || key === 'innerHTML') {
+        if (vnode.children) { vnode.children.length = 0; }
+        if (cur === oldProps[key]) { continue }
+        // #6601 work around Chrome version <= 55 bug where single textNode
+        // replaced by innerHTML/textContent retains its parentNode property
+        if (elm.childNodes.length === 1) {
+          elm.removeChild(elm.childNodes[0]);
+        }
+      }
+
+      if (key === 'value' && elm.tagName !== 'PROGRESS') {
+        // store value as _value as well since
+        // non-string values will be stringified
+        elm._value = cur;
+        // avoid resetting cursor position when value is the same
+        var strCur = isUndef(cur) ? '' : String(cur);
+        if (shouldUpdateValue(elm, strCur)) {
+          elm.value = strCur;
+        }
+      } else if (key === 'innerHTML' && isSVG(elm.tagName) && isUndef(elm.innerHTML)) {
+        // IE doesn't support innerHTML for SVG elements
+        svgContainer = svgContainer || document.createElement('div');
+        svgContainer.innerHTML = "<svg>" + cur + "</svg>";
+        var svg = svgContainer.firstChild;
+        while (elm.firstChild) {
+          elm.removeChild(elm.firstChild);
+        }
+        while (svg.firstChild) {
+          elm.appendChild(svg.firstChild);
+        }
+      } else if (
+        // skip the update if old and new VDOM state is the same.
+        // `value` is handled separately because the DOM value may be temporarily
+        // out of sync with VDOM state due to focus, composition and modifiers.
+        // This  #4521 by skipping the unnecessary `checked` update.
+        cur !== oldProps[key]
+      ) {
+        // some property updates can throw
+        // e.g. `value` on <progress> w/ non-finite value
+        try {
+          elm[key] = cur;
+        } catch (e) {}
+      }
+    }
+  }
+
+  // check platforms/web/util/attrs.js acceptValue
+
+
+  function shouldUpdateValue (elm, checkVal) {
+    return (!elm.composing && (
+      elm.tagName === 'OPTION' ||
+      isNotInFocusAndDirty(elm, checkVal) ||
+      isDirtyWithModifiers(elm, checkVal)
+    ))
+  }
+
+  function isNotInFocusAndDirty (elm, checkVal) {
+    // return true when textbox (.number and .trim) loses focus and its value is
+    // not equal to the updated value
+    var notInFocus = true;
+    // #6157
+    // work around IE bug when accessing document.activeElement in an iframe
+    try { notInFocus = document.activeElement !== elm; } catch (e) {}
+    return notInFocus && elm.value !== checkVal
+  }
+
+  function isDirtyWithModifiers (elm, newVal) {
+    var value = elm.value;
+    var modifiers = elm._vModifiers; // injected by v-model runtime
+    if (isDef(modifiers)) {
+      if (modifiers.number) {
+        return toNumber(value) !== toNumber(newVal)
+      }
+      if (modifiers.trim) {
+        return value.trim() !== newVal.trim()
+      }
+    }
+    return value !== newVal
+  }
+
+  var domProps = {
+    create: updateDOMProps,
+    update: updateDOMProps
+  };
+
+  /*  */
+
+  var parseStyleText = cached(function (cssText) {
+    var res = {};
+    var listDelimiter = /;(?![^(]*\))/g;
+    var propertyDelimiter = /:(.+)/;
+    cssText.split(listDelimiter).forEach(function (item) {
+      if (item) {
+        var tmp = item.split(propertyDelimiter);
+        tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());
+      }
+    });
+    return res
+  });
+
+  // merge static and dynamic style data on the same vnode
+  function normalizeStyleData (data) {
+    var style = normalizeStyleBinding(data.style);
+    // static style is pre-processed into an object during compilation
+    // and is always a fresh object, so it's safe to merge into it
+    return data.staticStyle
+      ? extend(data.staticStyle, style)
+      : style
+  }
+
+  // normalize possible array / string values into Object
+  function normalizeStyleBinding (bindingStyle) {
+    if (Array.isArray(bindingStyle)) {
+      return toObject(bindingStyle)
+    }
+    if (typeof bindingStyle === 'string') {
+      return parseStyleText(bindingStyle)
+    }
+    return bindingStyle
+  }
+
+  /**
+   * parent component style should be after child's
+   * so that parent component's style could override it
+   */
+  function getStyle (vnode, checkChild) {
+    var res = {};
+    var styleData;
+
+    if (checkChild) {
+      var childNode = vnode;
+      while (childNode.componentInstance) {
+        childNode = childNode.componentInstance._vnode;
+        if (
+          childNode && childNode.data &&
+          (styleData = normalizeStyleData(childNode.data))
+        ) {
+          extend(res, styleData);
+        }
+      }
+    }
+
+    if ((styleData = normalizeStyleData(vnode.data))) {
+      extend(res, styleData);
+    }
+
+    var parentNode = vnode;
+    while ((parentNode = parentNode.parent)) {
+      if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {
+        extend(res, styleData);
+      }
+    }
+    return res
+  }
+
+  /*  */
+
+  var cssVarRE = /^--/;
+  var importantRE = /\s*!important$/;
+  var setProp = function (el, name, val) {
+    /* istanbul ignore if */
+    if (cssVarRE.test(name)) {
+      el.style.setProperty(name, val);
+    } else if (importantRE.test(val)) {
+      el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important');
+    } else {
+      var normalizedName = normalize(name);
+      if (Array.isArray(val)) {
+        // Support values array created by autoprefixer, e.g.
+        // {display: ["-webkit-box", "-ms-flexbox", "flex"]}
+        // Set them one by one, and the browser will only set those it can recognize
+        for (var i = 0, len = val.length; i < len; i++) {
+          el.style[normalizedName] = val[i];
+        }
+      } else {
+        el.style[normalizedName] = val;
+      }
+    }
+  };
+
+  var vendorNames = ['Webkit', 'Moz', 'ms'];
+
+  var emptyStyle;
+  var normalize = cached(function (prop) {
+    emptyStyle = emptyStyle || document.createElement('div').style;
+    prop = camelize(prop);
+    if (prop !== 'filter' && (prop in emptyStyle)) {
+      return prop
+    }
+    var capName = prop.charAt(0).toUpperCase() + prop.slice(1);
+    for (var i = 0; i < vendorNames.length; i++) {
+      var name = vendorNames[i] + capName;
+      if (name in emptyStyle) {
+        return name
+      }
+    }
+  });
+
+  function updateStyle (oldVnode, vnode) {
+    var data = vnode.data;
+    var oldData = oldVnode.data;
+
+    if (isUndef(data.staticStyle) && isUndef(data.style) &&
+      isUndef(oldData.staticStyle) && isUndef(oldData.style)
+    ) {
+      return
+    }
+
+    var cur, name;
+    var el = vnode.elm;
+    var oldStaticStyle = oldData.staticStyle;
+    var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};
+
+    // if static style exists, stylebinding already merged into it when doing normalizeStyleData
+    var oldStyle = oldStaticStyle || oldStyleBinding;
+
+    var style = normalizeStyleBinding(vnode.data.style) || {};
+
+    // store normalized style under a different key for next diff
+    // make sure to clone it if it's reactive, since the user likely wants
+    // to mutate it.
+    vnode.data.normalizedStyle = isDef(style.__ob__)
+      ? extend({}, style)
+      : style;
+
+    var newStyle = getStyle(vnode, true);
+
+    for (name in oldStyle) {
+      if (isUndef(newStyle[name])) {
+        setProp(el, name, '');
+      }
+    }
+    for (name in newStyle) {
+      cur = newStyle[name];
+      if (cur !== oldStyle[name]) {
+        // ie9 setting to null has no effect, must use empty string
+        setProp(el, name, cur == null ? '' : cur);
+      }
+    }
+  }
+
+  var style = {
+    create: updateStyle,
+    update: updateStyle
+  };
+
+  /*  */
+
+  var whitespaceRE = /\s+/;
+
+  /**
+   * Add class with compatibility for SVG since classList is not supported on
+   * SVG elements in IE
+   */
+  function addClass (el, cls) {
+    /* istanbul ignore if */
+    if (!cls || !(cls = cls.trim())) {
+      return
+    }
+
+    /* istanbul ignore else */
+    if (el.classList) {
+      if (cls.indexOf(' ') > -1) {
+        cls.split(whitespaceRE).forEach(function (c) { return el.classList.add(c); });
+      } else {
+        el.classList.add(cls);
+      }
+    } else {
+      var cur = " " + (el.getAttribute('class') || '') + " ";
+      if (cur.indexOf(' ' + cls + ' ') < 0) {
+        el.setAttribute('class', (cur + cls).trim());
+      }
+    }
+  }
+
+  /**
+   * Remove class with compatibility for SVG since classList is not supported on
+   * SVG elements in IE
+   */
+  function removeClass (el, cls) {
+    /* istanbul ignore if */
+    if (!cls || !(cls = cls.trim())) {
+      return
+    }
+
+    /* istanbul ignore else */
+    if (el.classList) {
+      if (cls.indexOf(' ') > -1) {
+        cls.split(whitespaceRE).forEach(function (c) { return el.classList.remove(c); });
+      } else {
+        el.classList.remove(cls);
+      }
+      if (!el.classList.length) {
+        el.removeAttribute('class');
+      }
+    } else {
+      var cur = " " + (el.getAttribute('class') || '') + " ";
+      var tar = ' ' + cls + ' ';
+      while (cur.indexOf(tar) >= 0) {
+        cur = cur.replace(tar, ' ');
+      }
+      cur = cur.trim();
+      if (cur) {
+        el.setAttribute('class', cur);
+      } else {
+        el.removeAttribute('class');
+      }
+    }
+  }
+
+  /*  */
+
+  function resolveTransition (def$$1) {
+    if (!def$$1) {
+      return
+    }
+    /* istanbul ignore else */
+    if (typeof def$$1 === 'object') {
+      var res = {};
+      if (def$$1.css !== false) {
+        extend(res, autoCssTransition(def$$1.name || 'v'));
+      }
+      extend(res, def$$1);
+      return res
+    } else if (typeof def$$1 === 'string') {
+      return autoCssTransition(def$$1)
+    }
+  }
+
+  var autoCssTransition = cached(function (name) {
+    return {
+      enterClass: (name + "-enter"),
+      enterToClass: (name + "-enter-to"),
+      enterActiveClass: (name + "-enter-active"),
+      leaveClass: (name + "-leave"),
+      leaveToClass: (name + "-leave-to"),
+      leaveActiveClass: (name + "-leave-active")
+    }
+  });
+
+  var hasTransition = inBrowser && !isIE9;
+  var TRANSITION = 'transition';
+  var ANIMATION = 'animation';
+
+  // Transition property/event sniffing
+  var transitionProp = 'transition';
+  var transitionEndEvent = 'transitionend';
+  var animationProp = 'animation';
+  var animationEndEvent = 'animationend';
+  if (hasTransition) {
+    /* istanbul ignore if */
+    if (window.ontransitionend === undefined &&
+      window.onwebkittransitionend !== undefined
+    ) {
+      transitionProp = 'WebkitTransition';
+      transitionEndEvent = 'webkitTransitionEnd';
+    }
+    if (window.onanimationend === undefined &&
+      window.onwebkitanimationend !== undefined
+    ) {
+      animationProp = 'WebkitAnimation';
+      animationEndEvent = 'webkitAnimationEnd';
+    }
+  }
+
+  // binding to window is necessary to make hot reload work in IE in strict mode
+  var raf = inBrowser
+    ? window.requestAnimationFrame
+      ? window.requestAnimationFrame.bind(window)
+      : setTimeout
+    : /* istanbul ignore next */ function (fn) { return fn(); };
+
+  function nextFrame (fn) {
+    raf(function () {
+      raf(fn);
+    });
+  }
+
+  function addTransitionClass (el, cls) {
+    var transitionClasses = el._transitionClasses || (el._transitionClasses = []);
+    if (transitionClasses.indexOf(cls) < 0) {
+      transitionClasses.push(cls);
+      addClass(el, cls);
+    }
+  }
+
+  function removeTransitionClass (el, cls) {
+    if (el._transitionClasses) {
+      remove(el._transitionClasses, cls);
+    }
+    removeClass(el, cls);
+  }
+
+  function whenTransitionEnds (
+    el,
+    expectedType,
+    cb
+  ) {
+    var ref = getTransitionInfo(el, expectedType);
+    var type = ref.type;
+    var timeout = ref.timeout;
+    var propCount = ref.propCount;
+    if (!type) { return cb() }
+    var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;
+    var ended = 0;
+    var end = function () {
+      el.removeEventListener(event, onEnd);
+      cb();
+    };
+    var onEnd = function (e) {
+      if (e.target === el) {
+        if (++ended >= propCount) {
+          end();
+        }
+      }
+    };
+    setTimeout(function () {
+      if (ended < propCount) {
+        end();
+      }
+    }, timeout + 1);
+    el.addEventListener(event, onEnd);
+  }
+
+  var transformRE = /\b(transform|all)(,|$)/;
+
+  function getTransitionInfo (el, expectedType) {
+    var styles = window.getComputedStyle(el);
+    // JSDOM may return undefined for transition properties
+    var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');
+    var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');
+    var transitionTimeout = getTimeout(transitionDelays, transitionDurations);
+    var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');
+    var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');
+    var animationTimeout = getTimeout(animationDelays, animationDurations);
+
+    var type;
+    var timeout = 0;
+    var propCount = 0;
+    /* istanbul ignore if */
+    if (expectedType === TRANSITION) {
+      if (transitionTimeout > 0) {
+        type = TRANSITION;
+        timeout = transitionTimeout;
+        propCount = transitionDurations.length;
+      }
+    } else if (expectedType === ANIMATION) {
+      if (animationTimeout > 0) {
+        type = ANIMATION;
+        timeout = animationTimeout;
+        propCount = animationDurations.length;
+      }
+    } else {
+      timeout = Math.max(transitionTimeout, animationTimeout);
+      type = timeout > 0
+        ? transitionTimeout > animationTimeout
+          ? TRANSITION
+          : ANIMATION
+        : null;
+      propCount = type
+        ? type === TRANSITION
+          ? transitionDurations.length
+          : animationDurations.length
+        : 0;
+    }
+    var hasTransform =
+      type === TRANSITION &&
+      transformRE.test(styles[transitionProp + 'Property']);
+    return {
+      type: type,
+      timeout: timeout,
+      propCount: propCount,
+      hasTransform: hasTransform
+    }
+  }
+
+  function getTimeout (delays, durations) {
+    /* istanbul ignore next */
+    while (delays.length < durations.length) {
+      delays = delays.concat(delays);
+    }
+
+    return Math.max.apply(null, durations.map(function (d, i) {
+      return toMs(d) + toMs(delays[i])
+    }))
+  }
+
+  // Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers
+  // in a locale-dependent way, using a comma instead of a dot.
+  // If comma is not replaced with a dot, the input will be rounded down (i.e. acting
+  // as a floor function) causing unexpected behaviors
+  function toMs (s) {
+    return Number(s.slice(0, -1).replace(',', '.')) * 1000
+  }
+
+  /*  */
+
+  function enter (vnode, toggleDisplay) {
+    var el = vnode.elm;
+
+    // call leave callback now
+    if (isDef(el._leaveCb)) {
+      el._leaveCb.cancelled = true;
+      el._leaveCb();
+    }
+
+    var data = resolveTransition(vnode.data.transition);
+    if (isUndef(data)) {
+      return
+    }
+
+    /* istanbul ignore if */
+    if (isDef(el._enterCb) || el.nodeType !== 1) {
+      return
+    }
+
+    var css = data.css;
+    var type = data.type;
+    var enterClass = data.enterClass;
+    var enterToClass = data.enterToClass;
+    var enterActiveClass = data.enterActiveClass;
+    var appearClass = data.appearClass;
+    var appearToClass = data.appearToClass;
+    var appearActiveClass = data.appearActiveClass;
+    var beforeEnter = data.beforeEnter;
+    var enter = data.enter;
+    var afterEnter = data.afterEnter;
+    var enterCancelled = data.enterCancelled;
+    var beforeAppear = data.beforeAppear;
+    var appear = data.appear;
+    var afterAppear = data.afterAppear;
+    var appearCancelled = data.appearCancelled;
+    var duration = data.duration;
+
+    // activeInstance will always be the <transition> component managing this
+    // transition. One edge case to check is when the <transition> is placed
+    // as the root node of a child component. In that case we need to check
+    // <transition>'s parent for appear check.
+    var context = activeInstance;
+    var transitionNode = activeInstance.$vnode;
+    while (transitionNode && transitionNode.parent) {
+      context = transitionNode.context;
+      transitionNode = transitionNode.parent;
+    }
+
+    var isAppear = !context._isMounted || !vnode.isRootInsert;
+
+    if (isAppear && !appear && appear !== '') {
+      return
+    }
+
+    var startClass = isAppear && appearClass
+      ? appearClass
+      : enterClass;
+    var activeClass = isAppear && appearActiveClass
+      ? appearActiveClass
+      : enterActiveClass;
+    var toClass = isAppear && appearToClass
+      ? appearToClass
+      : enterToClass;
+
+    var beforeEnterHook = isAppear
+      ? (beforeAppear || beforeEnter)
+      : beforeEnter;
+    var enterHook = isAppear
+      ? (typeof appear === 'function' ? appear : enter)
+      : enter;
+    var afterEnterHook = isAppear
+      ? (afterAppear || afterEnter)
+      : afterEnter;
+    var enterCancelledHook = isAppear
+      ? (appearCancelled || enterCancelled)
+      : enterCancelled;
+
+    var explicitEnterDuration = toNumber(
+      isObject(duration)
+        ? duration.enter
+        : duration
+    );
+
+    if (explicitEnterDuration != null) {
+      checkDuration(explicitEnterDuration, 'enter', vnode);
+    }
+
+    var expectsCSS = css !== false && !isIE9;
+    var userWantsControl = getHookArgumentsLength(enterHook);
+
+    var cb = el._enterCb = once(function () {
+      if (expectsCSS) {
+        removeTransitionClass(el, toClass);
+        removeTransitionClass(el, activeClass);
+      }
+      if (cb.cancelled) {
+        if (expectsCSS) {
+          removeTransitionClass(el, startClass);
+        }
+        enterCancelledHook && enterCancelledHook(el);
+      } else {
+        afterEnterHook && afterEnterHook(el);
+      }
+      el._enterCb = null;
+    });
+
+    if (!vnode.data.show) {
+      // remove pending leave element on enter by injecting an insert hook
+      mergeVNodeHook(vnode, 'insert', function () {
+        var parent = el.parentNode;
+        var pendingNode = parent && parent._pending && parent._pending[vnode.key];
+        if (pendingNode &&
+          pendingNode.tag === vnode.tag &&
+          pendingNode.elm._leaveCb
+        ) {
+          pendingNode.elm._leaveCb();
+        }
+        enterHook && enterHook(el, cb);
+      });
+    }
+
+    // start enter transition
+    beforeEnterHook && beforeEnterHook(el);
+    if (expectsCSS) {
+      addTransitionClass(el, startClass);
+      addTransitionClass(el, activeClass);
+      nextFrame(function () {
+        removeTransitionClass(el, startClass);
+        if (!cb.cancelled) {
+          addTransitionClass(el, toClass);
+          if (!userWantsControl) {
+            if (isValidDuration(explicitEnterDuration)) {
+              setTimeout(cb, explicitEnterDuration);
+            } else {
+              whenTransitionEnds(el, type, cb);
+            }
+          }
+        }
+      });
+    }
+
+    if (vnode.data.show) {
+      toggleDisplay && toggleDisplay();
+      enterHook && enterHook(el, cb);
+    }
+
+    if (!expectsCSS && !userWantsControl) {
+      cb();
+    }
+  }
+
+  function leave (vnode, rm) {
+    var el = vnode.elm;
+
+    // call enter callback now
+    if (isDef(el._enterCb)) {
+      el._enterCb.cancelled = true;
+      el._enterCb();
+    }
+
+    var data = resolveTransition(vnode.data.transition);
+    if (isUndef(data) || el.nodeType !== 1) {
+      return rm()
+    }
+
+    /* istanbul ignore if */
+    if (isDef(el._leaveCb)) {
+      return
+    }
+
+    var css = data.css;
+    var type = data.type;
+    var leaveClass = data.leaveClass;
+    var leaveToClass = data.leaveToClass;
+    var leaveActiveClass = data.leaveActiveClass;
+    var beforeLeave = data.beforeLeave;
+    var leave = data.leave;
+    var afterLeave = data.afterLeave;
+    var leaveCancelled = data.leaveCancelled;
+    var delayLeave = data.delayLeave;
+    var duration = data.duration;
+
+    var expectsCSS = css !== false && !isIE9;
+    var userWantsControl = getHookArgumentsLength(leave);
+
+    var explicitLeaveDuration = toNumber(
+      isObject(duration)
+        ? duration.leave
+        : duration
+    );
+
+    if (isDef(explicitLeaveDuration)) {
+      checkDuration(explicitLeaveDuration, 'leave', vnode);
+    }
+
+    var cb = el._leaveCb = once(function () {
+      if (el.parentNode && el.parentNode._pending) {
+        el.parentNode._pending[vnode.key] = null;
+      }
+      if (expectsCSS) {
+        removeTransitionClass(el, leaveToClass);
+        removeTransitionClass(el, leaveActiveClass);
+      }
+      if (cb.cancelled) {
+        if (expectsCSS) {
+          removeTransitionClass(el, leaveClass);
+        }
+        leaveCancelled && leaveCancelled(el);
+      } else {
+        rm();
+        afterLeave && afterLeave(el);
+      }
+      el._leaveCb = null;
+    });
+
+    if (delayLeave) {
+      delayLeave(performLeave);
+    } else {
+      performLeave();
+    }
+
+    function performLeave () {
+      // the delayed leave may have already been cancelled
+      if (cb.cancelled) {
+        return
+      }
+      // record leaving element
+      if (!vnode.data.show && el.parentNode) {
+        (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;
+      }
+      beforeLeave && beforeLeave(el);
+      if (expectsCSS) {
+        addTransitionClass(el, leaveClass);
+        addTransitionClass(el, leaveActiveClass);
+        nextFrame(function () {
+          removeTransitionClass(el, leaveClass);
+          if (!cb.cancelled) {
+            addTransitionClass(el, leaveToClass);
+            if (!userWantsControl) {
+              if (isValidDuration(explicitLeaveDuration)) {
+                setTimeout(cb, explicitLeaveDuration);
+              } else {
+                whenTransitionEnds(el, type, cb);
+              }
+            }
+          }
+        });
+      }
+      leave && leave(el, cb);
+      if (!expectsCSS && !userWantsControl) {
+        cb();
+      }
+    }
+  }
+
+  // only used in dev mode
+  function checkDuration (val, name, vnode) {
+    if (typeof val !== 'number') {
+      warn(
+        "<transition> explicit " + name + " duration is not a valid number - " +
+        "got " + (JSON.stringify(val)) + ".",
+        vnode.context
+      );
+    } else if (isNaN(val)) {
+      warn(
+        "<transition> explicit " + name + " duration is NaN - " +
+        'the duration expression might be incorrect.',
+        vnode.context
+      );
+    }
+  }
+
+  function isValidDuration (val) {
+    return typeof val === 'number' && !isNaN(val)
+  }
+
+  /**
+   * Normalize a transition hook's argument length. The hook may be:
+   * - a merged hook (invoker) with the original in .fns
+   * - a wrapped component method (check ._length)
+   * - a plain function (.length)
+   */
+  function getHookArgumentsLength (fn) {
+    if (isUndef(fn)) {
+      return false
+    }
+    var invokerFns = fn.fns;
+    if (isDef(invokerFns)) {
+      // invoker
+      return getHookArgumentsLength(
+        Array.isArray(invokerFns)
+          ? invokerFns[0]
+          : invokerFns
+      )
+    } else {
+      return (fn._length || fn.length) > 1
+    }
+  }
+
+  function _enter (_, vnode) {
+    if (vnode.data.show !== true) {
+      enter(vnode);
+    }
+  }
+
+  var transition = inBrowser ? {
+    create: _enter,
+    activate: _enter,
+    remove: function remove$$1 (vnode, rm) {
+      /* istanbul ignore else */
+      if (vnode.data.show !== true) {
+        leave(vnode, rm);
+      } else {
+        rm();
+      }
+    }
+  } : {};
+
+  var platformModules = [
+    attrs,
+    klass,
+    events,
+    domProps,
+    style,
+    transition
+  ];
+
+  /*  */
+
+  // the directive module should be applied last, after all
+  // built-in modules have been applied.
+  var modules = platformModules.concat(baseModules);
+
+  var patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });
+
+  /**
+   * Not type checking this file because flow doesn't like attaching
+   * properties to Elements.
+   */
+
+  /* istanbul ignore if */
+  if (isIE9) {
+    // http://www.matts411.com/post/internet-explorer-9-oninput/
+    document.addEventListener('selectionchange', function () {
+      var el = document.activeElement;
+      if (el && el.vmodel) {
+        trigger(el, 'input');
+      }
+    });
+  }
+
+  var directive = {
+    inserted: function inserted (el, binding, vnode, oldVnode) {
+      if (vnode.tag === 'select') {
+        // #6903
+        if (oldVnode.elm && !oldVnode.elm._vOptions) {
+          mergeVNodeHook(vnode, 'postpatch', function () {
+            directive.componentUpdated(el, binding, vnode);
+          });
+        } else {
+          setSelected(el, binding, vnode.context);
+        }
+        el._vOptions = [].map.call(el.options, getValue);
+      } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {
+        el._vModifiers = binding.modifiers;
+        if (!binding.modifiers.lazy) {
+          el.addEventListener('compositionstart', onCompositionStart);
+          el.addEventListener('compositionend', onCompositionEnd);
+          // Safari < 10.2 & UIWebView doesn't fire compositionend when
+          // switching focus before confirming composition choice
+          // this also fixes the issue where some browsers e.g. iOS Chrome
+          // fires "change" instead of "input" on autocomplete.
+          el.addEventListener('change', onCompositionEnd);
+          /* istanbul ignore if */
+          if (isIE9) {
+            el.vmodel = true;
+          }
+        }
+      }
+    },
+
+    componentUpdated: function componentUpdated (el, binding, vnode) {
+      if (vnode.tag === 'select') {
+        setSelected(el, binding, vnode.context);
+        // in case the options rendered by v-for have changed,
+        // it's possible that the value is out-of-sync with the rendered options.
+        // detect such cases and filter out values that no longer has a matching
+        // option in the DOM.
+        var prevOptions = el._vOptions;
+        var curOptions = el._vOptions = [].map.call(el.options, getValue);
+        if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {
+          // trigger change event if
+          // no matching option found for at least one value
+          var needReset = el.multiple
+            ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })
+            : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);
+          if (needReset) {
+            trigger(el, 'change');
+          }
+        }
+      }
+    }
+  };
+
+  function setSelected (el, binding, vm) {
+    actuallySetSelected(el, binding, vm);
+    /* istanbul ignore if */
+    if (isIE || isEdge) {
+      setTimeout(function () {
+        actuallySetSelected(el, binding, vm);
+      }, 0);
+    }
+  }
+
+  function actuallySetSelected (el, binding, vm) {
+    var value = binding.value;
+    var isMultiple = el.multiple;
+    if (isMultiple && !Array.isArray(value)) {
+      warn(
+        "<select multiple v-model=\"" + (binding.expression) + "\"> " +
+        "expects an Array value for its binding, but got " + (Object.prototype.toString.call(value).slice(8, -1)),
+        vm
+      );
+      return
+    }
+    var selected, option;
+    for (var i = 0, l = el.options.length; i < l; i++) {
+      option = el.options[i];
+      if (isMultiple) {
+        selected = looseIndexOf(value, getValue(option)) > -1;
+        if (option.selected !== selected) {
+          option.selected = selected;
+        }
+      } else {
+        if (looseEqual(getValue(option), value)) {
+          if (el.selectedIndex !== i) {
+            el.selectedIndex = i;
+          }
+          return
+        }
+      }
+    }
+    if (!isMultiple) {
+      el.selectedIndex = -1;
+    }
+  }
+
+  function hasNoMatchingOption (value, options) {
+    return options.every(function (o) { return !looseEqual(o, value); })
+  }
+
+  function getValue (option) {
+    return '_value' in option
+      ? option._value
+      : option.value
+  }
+
+  function onCompositionStart (e) {
+    e.target.composing = true;
+  }
+
+  function onCompositionEnd (e) {
+    // prevent triggering an input event for no reason
+    if (!e.target.composing) { return }
+    e.target.composing = false;
+    trigger(e.target, 'input');
+  }
+
+  function trigger (el, type) {
+    var e = document.createEvent('HTMLEvents');
+    e.initEvent(type, true, true);
+    el.dispatchEvent(e);
+  }
+
+  /*  */
+
+  // recursively search for possible transition defined inside the component root
+  function locateNode (vnode) {
+    return vnode.componentInstance && (!vnode.data || !vnode.data.transition)
+      ? locateNode(vnode.componentInstance._vnode)
+      : vnode
+  }
+
+  var show = {
+    bind: function bind (el, ref, vnode) {
+      var value = ref.value;
+
+      vnode = locateNode(vnode);
+      var transition$$1 = vnode.data && vnode.data.transition;
+      var originalDisplay = el.__vOriginalDisplay =
+        el.style.display === 'none' ? '' : el.style.display;
+      if (value && transition$$1) {
+        vnode.data.show = true;
+        enter(vnode, function () {
+          el.style.display = originalDisplay;
+        });
+      } else {
+        el.style.display = value ? originalDisplay : 'none';
+      }
+    },
+
+    update: function update (el, ref, vnode) {
+      var value = ref.value;
+      var oldValue = ref.oldValue;
+
+      /* istanbul ignore if */
+      if (!value === !oldValue) { return }
+      vnode = locateNode(vnode);
+      var transition$$1 = vnode.data && vnode.data.transition;
+      if (transition$$1) {
+        vnode.data.show = true;
+        if (value) {
+          enter(vnode, function () {
+            el.style.display = el.__vOriginalDisplay;
+          });
+        } else {
+          leave(vnode, function () {
+            el.style.display = 'none';
+          });
+        }
+      } else {
+        el.style.display = value ? el.__vOriginalDisplay : 'none';
+      }
+    },
+
+    unbind: function unbind (
+      el,
+      binding,
+      vnode,
+      oldVnode,
+      isDestroy
+    ) {
+      if (!isDestroy) {
+        el.style.display = el.__vOriginalDisplay;
+      }
+    }
+  };
+
+  var platformDirectives = {
+    model: directive,
+    show: show
+  };
+
+  /*  */
+
+  var transitionProps = {
+    name: String,
+    appear: Boolean,
+    css: Boolean,
+    mode: String,
+    type: String,
+    enterClass: String,
+    leaveClass: String,
+    enterToClass: String,
+    leaveToClass: String,
+    enterActiveClass: String,
+    leaveActiveClass: String,
+    appearClass: String,
+    appearActiveClass: String,
+    appearToClass: String,
+    duration: [Number, String, Object]
+  };
+
+  // in case the child is also an abstract component, e.g. <keep-alive>
+  // we want to recursively retrieve the real component to be rendered
+  function getRealChild (vnode) {
+    var compOptions = vnode && vnode.componentOptions;
+    if (compOptions && compOptions.Ctor.options.abstract) {
+      return getRealChild(getFirstComponentChild(compOptions.children))
+    } else {
+      return vnode
+    }
+  }
+
+  function extractTransitionData (comp) {
+    var data = {};
+    var options = comp.$options;
+    // props
+    for (var key in options.propsData) {
+      data[key] = comp[key];
+    }
+    // events.
+    // extract listeners and pass them directly to the transition methods
+    var listeners = options._parentListeners;
+    for (var key$1 in listeners) {
+      data[camelize(key$1)] = listeners[key$1];
+    }
+    return data
+  }
+
+  function placeholder (h, rawChild) {
+    if (/\d-keep-alive$/.test(rawChild.tag)) {
+      return h('keep-alive', {
+        props: rawChild.componentOptions.propsData
+      })
+    }
+  }
+
+  function hasParentTransition (vnode) {
+    while ((vnode = vnode.parent)) {
+      if (vnode.data.transition) {
+        return true
+      }
+    }
+  }
+
+  function isSameChild (child, oldChild) {
+    return oldChild.key === child.key && oldChild.tag === child.tag
+  }
+
+  var isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); };
+
+  var isVShowDirective = function (d) { return d.name === 'show'; };
+
+  var Transition = {
+    name: 'transition',
+    props: transitionProps,
+    abstract: true,
+
+    render: function render (h) {
+      var this$1 = this;
+
+      var children = this.$slots.default;
+      if (!children) {
+        return
+      }
+
+      // filter out text nodes (possible whitespaces)
+      children = children.filter(isNotTextNode);
+      /* istanbul ignore if */
+      if (!children.length) {
+        return
+      }
+
+      // warn multiple elements
+      if (children.length > 1) {
+        warn(
+          '<transition> can only be used on a single element. Use ' +
+          '<transition-group> for lists.',
+          this.$parent
+        );
+      }
+
+      var mode = this.mode;
+
+      // warn invalid mode
+      if (mode && mode !== 'in-out' && mode !== 'out-in'
+      ) {
+        warn(
+          'invalid <transition> mode: ' + mode,
+          this.$parent
+        );
+      }
+
+      var rawChild = children[0];
+
+      // if this is a component root node and the component's
+      // parent container node also has transition, skip.
+      if (hasParentTransition(this.$vnode)) {
+        return rawChild
+      }
+
+      // apply transition data to child
+      // use getRealChild() to ignore abstract components e.g. keep-alive
+      var child = getRealChild(rawChild);
+      /* istanbul ignore if */
+      if (!child) {
+        return rawChild
+      }
+
+      if (this._leaving) {
+        return placeholder(h, rawChild)
+      }
+
+      // ensure a key that is unique to the vnode type and to this transition
+      // component instance. This key will be used to remove pending leaving nodes
+      // during entering.
+      var id = "__transition-" + (this._uid) + "-";
+      child.key = child.key == null
+        ? child.isComment
+          ? id + 'comment'
+          : id + child.tag
+        : isPrimitive(child.key)
+          ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)
+          : child.key;
+
+      var data = (child.data || (child.data = {})).transition = extractTransitionData(this);
+      var oldRawChild = this._vnode;
+      var oldChild = getRealChild(oldRawChild);
+
+      // mark v-show
+      // so that the transition module can hand over the control to the directive
+      if (child.data.directives && child.data.directives.some(isVShowDirective)) {
+        child.data.show = true;
+      }
+
+      if (
+        oldChild &&
+        oldChild.data &&
+        !isSameChild(child, oldChild) &&
+        !isAsyncPlaceholder(oldChild) &&
+        // #6687 component root is a comment node
+        !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)
+      ) {
+        // replace old child transition data with fresh one
+        // important for dynamic transitions!
+        var oldData = oldChild.data.transition = extend({}, data);
+        // handle transition mode
+        if (mode === 'out-in') {
+          // return placeholder node and queue update when leave finishes
+          this._leaving = true;
+          mergeVNodeHook(oldData, 'afterLeave', function () {
+            this$1._leaving = false;
+            this$1.$forceUpdate();
+          });
+          return placeholder(h, rawChild)
+        } else if (mode === 'in-out') {
+          if (isAsyncPlaceholder(child)) {
+            return oldRawChild
+          }
+          var delayedLeave;
+          var performLeave = function () { delayedLeave(); };
+          mergeVNodeHook(data, 'afterEnter', performLeave);
+          mergeVNodeHook(data, 'enterCancelled', performLeave);
+          mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });
+        }
+      }
+
+      return rawChild
+    }
+  };
+
+  /*  */
+
+  var props = extend({
+    tag: String,
+    moveClass: String
+  }, transitionProps);
+
+  delete props.mode;
+
+  var TransitionGroup = {
+    props: props,
+
+    beforeMount: function beforeMount () {
+      var this$1 = this;
+
+      var update = this._update;
+      this._update = function (vnode, hydrating) {
+        var restoreActiveInstance = setActiveInstance(this$1);
+        // force removing pass
+        this$1.__patch__(
+          this$1._vnode,
+          this$1.kept,
+          false, // hydrating
+          true // removeOnly (!important, avoids unnecessary moves)
+        );
+        this$1._vnode = this$1.kept;
+        restoreActiveInstance();
+        update.call(this$1, vnode, hydrating);
+      };
+    },
+
+    render: function render (h) {
+      var tag = this.tag || this.$vnode.data.tag || 'span';
+      var map = Object.create(null);
+      var prevChildren = this.prevChildren = this.children;
+      var rawChildren = this.$slots.default || [];
+      var children = this.children = [];
+      var transitionData = extractTransitionData(this);
+
+      for (var i = 0; i < rawChildren.length; i++) {
+        var c = rawChildren[i];
+        if (c.tag) {
+          if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {
+            children.push(c);
+            map[c.key] = c
+            ;(c.data || (c.data = {})).transition = transitionData;
+          } else {
+            var opts = c.componentOptions;
+            var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;
+            warn(("<transition-group> children must be keyed: <" + name + ">"));
+          }
+        }
+      }
+
+      if (prevChildren) {
+        var kept = [];
+        var removed = [];
+        for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {
+          var c$1 = prevChildren[i$1];
+          c$1.data.transition = transitionData;
+          c$1.data.pos = c$1.elm.getBoundingClientRect();
+          if (map[c$1.key]) {
+            kept.push(c$1);
+          } else {
+            removed.push(c$1);
+          }
+        }
+        this.kept = h(tag, null, kept);
+        this.removed = removed;
+      }
+
+      return h(tag, null, children)
+    },
+
+    updated: function updated () {
+      var children = this.prevChildren;
+      var moveClass = this.moveClass || ((this.name || 'v') + '-move');
+      if (!children.length || !this.hasMove(children[0].elm, moveClass)) {
+        return
+      }
+
+      // we divide the work into three loops to avoid mixing DOM reads and writes
+      // in each iteration - which helps prevent layout thrashing.
+      children.forEach(callPendingCbs);
+      children.forEach(recordPosition);
+      children.forEach(applyTranslation);
+
+      // force reflow to put everything in position
+      // assign to this to avoid being removed in tree-shaking
+      // $flow-disable-line
+      this._reflow = document.body.offsetHeight;
+
+      children.forEach(function (c) {
+        if (c.data.moved) {
+          var el = c.elm;
+          var s = el.style;
+          addTransitionClass(el, moveClass);
+          s.transform = s.WebkitTransform = s.transitionDuration = '';
+          el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {
+            if (e && e.target !== el) {
+              return
+            }
+            if (!e || /transform$/.test(e.propertyName)) {
+              el.removeEventListener(transitionEndEvent, cb);
+              el._moveCb = null;
+              removeTransitionClass(el, moveClass);
+            }
+          });
+        }
+      });
+    },
+
+    methods: {
+      hasMove: function hasMove (el, moveClass) {
+        /* istanbul ignore if */
+        if (!hasTransition) {
+          return false
+        }
+        /* istanbul ignore if */
+        if (this._hasMove) {
+          return this._hasMove
+        }
+        // Detect whether an element with the move class applied has
+        // CSS transitions. Since the element may be inside an entering
+        // transition at this very moment, we make a clone of it and remove
+        // all other transition classes applied to ensure only the move class
+        // is applied.
+        var clone = el.cloneNode();
+        if (el._transitionClasses) {
+          el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });
+        }
+        addClass(clone, moveClass);
+        clone.style.display = 'none';
+        this.$el.appendChild(clone);
+        var info = getTransitionInfo(clone);
+        this.$el.removeChild(clone);
+        return (this._hasMove = info.hasTransform)
+      }
+    }
+  };
+
+  function callPendingCbs (c) {
+    /* istanbul ignore if */
+    if (c.elm._moveCb) {
+      c.elm._moveCb();
+    }
+    /* istanbul ignore if */
+    if (c.elm._enterCb) {
+      c.elm._enterCb();
+    }
+  }
+
+  function recordPosition (c) {
+    c.data.newPos = c.elm.getBoundingClientRect();
+  }
+
+  function applyTranslation (c) {
+    var oldPos = c.data.pos;
+    var newPos = c.data.newPos;
+    var dx = oldPos.left - newPos.left;
+    var dy = oldPos.top - newPos.top;
+    if (dx || dy) {
+      c.data.moved = true;
+      var s = c.elm.style;
+      s.transform = s.WebkitTransform = "translate(" + dx + "px," + dy + "px)";
+      s.transitionDuration = '0s';
+    }
+  }
+
+  var platformComponents = {
+    Transition: Transition,
+    TransitionGroup: TransitionGroup
+  };
+
+  /*  */
+
+  // install platform specific utils
+  Vue.config.mustUseProp = mustUseProp;
+  Vue.config.isReservedTag = isReservedTag;
+  Vue.config.isReservedAttr = isReservedAttr;
+  Vue.config.getTagNamespace = getTagNamespace;
+  Vue.config.isUnknownElement = isUnknownElement;
+
+  // install platform runtime directives & components
+  extend(Vue.options.directives, platformDirectives);
+  extend(Vue.options.components, platformComponents);
+
+  // install platform patch function
+  Vue.prototype.__patch__ = inBrowser ? patch : noop;
+
+  // public mount method
+  Vue.prototype.$mount = function (
+    el,
+    hydrating
+  ) {
+    el = el && inBrowser ? query(el) : undefined;
+    return mountComponent(this, el, hydrating)
+  };
+
+  // devtools global hook
+  /* istanbul ignore next */
+  if (inBrowser) {
+    setTimeout(function () {
+      if (config.devtools) {
+        if (devtools) {
+          devtools.emit('init', Vue);
+        } else {
+          console[console.info ? 'info' : 'log'](
+            'Download the Vue Devtools extension for a better development experience:\n' +
+            'https://github.com/vuejs/vue-devtools'
+          );
+        }
+      }
+      if (config.productionTip !== false &&
+        typeof console !== 'undefined'
+      ) {
+        console[console.info ? 'info' : 'log'](
+          "You are running Vue in development mode.\n" +
+          "Make sure to turn on production mode when deploying for production.\n" +
+          "See more tips at https://vuejs.org/guide/deployment.html"
+        );
+      }
+    }, 0);
+  }
+
+  /*  */
+
+  var defaultTagRE = /\{\{((?:.|\r?\n)+?)\}\}/g;
+  var regexEscapeRE = /[-.*+?^${}()|[\]\/\\]/g;
+
+  var buildRegex = cached(function (delimiters) {
+    var open = delimiters[0].replace(regexEscapeRE, '\\$&');
+    var close = delimiters[1].replace(regexEscapeRE, '\\$&');
+    return new RegExp(open + '((?:.|\\n)+?)' + close, 'g')
+  });
+
+
+
+  function parseText (
+    text,
+    delimiters
+  ) {
+    var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;
+    if (!tagRE.test(text)) {
+      return
+    }
+    var tokens = [];
+    var rawTokens = [];
+    var lastIndex = tagRE.lastIndex = 0;
+    var match, index, tokenValue;
+    while ((match = tagRE.exec(text))) {
+      index = match.index;
+      // push text token
+      if (index > lastIndex) {
+        rawTokens.push(tokenValue = text.slice(lastIndex, index));
+        tokens.push(JSON.stringify(tokenValue));
+      }
+      // tag token
+      var exp = parseFilters(match[1].trim());
+      tokens.push(("_s(" + exp + ")"));
+      rawTokens.push({ '@binding': exp });
+      lastIndex = index + match[0].length;
+    }
+    if (lastIndex < text.length) {
+      rawTokens.push(tokenValue = text.slice(lastIndex));
+      tokens.push(JSON.stringify(tokenValue));
+    }
+    return {
+      expression: tokens.join('+'),
+      tokens: rawTokens
+    }
+  }
+
+  /*  */
+
+  function transformNode (el, options) {
+    var warn = options.warn || baseWarn;
+    var staticClass = getAndRemoveAttr(el, 'class');
+    if (staticClass) {
+      var res = parseText(staticClass, options.delimiters);
+      if (res) {
+        warn(
+          "class=\"" + staticClass + "\": " +
+          'Interpolation inside attributes has been removed. ' +
+          'Use v-bind or the colon shorthand instead. For example, ' +
+          'instead of <div class="{{ val }}">, use <div :class="val">.',
+          el.rawAttrsMap['class']
+        );
+      }
+    }
+    if (staticClass) {
+      el.staticClass = JSON.stringify(staticClass);
+    }
+    var classBinding = getBindingAttr(el, 'class', false /* getStatic */);
+    if (classBinding) {
+      el.classBinding = classBinding;
+    }
+  }
+
+  function genData (el) {
+    var data = '';
+    if (el.staticClass) {
+      data += "staticClass:" + (el.staticClass) + ",";
+    }
+    if (el.classBinding) {
+      data += "class:" + (el.classBinding) + ",";
+    }
+    return data
+  }
+
+  var klass$1 = {
+    staticKeys: ['staticClass'],
+    transformNode: transformNode,
+    genData: genData
+  };
+
+  /*  */
+
+  function transformNode$1 (el, options) {
+    var warn = options.warn || baseWarn;
+    var staticStyle = getAndRemoveAttr(el, 'style');
+    if (staticStyle) {
+      /* istanbul ignore if */
+      {
+        var res = parseText(staticStyle, options.delimiters);
+        if (res) {
+          warn(
+            "style=\"" + staticStyle + "\": " +
+            'Interpolation inside attributes has been removed. ' +
+            'Use v-bind or the colon shorthand instead. For example, ' +
+            'instead of <div style="{{ val }}">, use <div :style="val">.',
+            el.rawAttrsMap['style']
+          );
+        }
+      }
+      el.staticStyle = JSON.stringify(parseStyleText(staticStyle));
+    }
+
+    var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);
+    if (styleBinding) {
+      el.styleBinding = styleBinding;
+    }
+  }
+
+  function genData$1 (el) {
+    var data = '';
+    if (el.staticStyle) {
+      data += "staticStyle:" + (el.staticStyle) + ",";
+    }
+    if (el.styleBinding) {
+      data += "style:(" + (el.styleBinding) + "),";
+    }
+    return data
+  }
+
+  var style$1 = {
+    staticKeys: ['staticStyle'],
+    transformNode: transformNode$1,
+    genData: genData$1
+  };
+
+  /*  */
+
+  var decoder;
+
+  var he = {
+    decode: function decode (html) {
+      decoder = decoder || document.createElement('div');
+      decoder.innerHTML = html;
+      return decoder.textContent
+    }
+  };
+
+  /*  */
+
+  var isUnaryTag = makeMap(
+    'area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +
+    'link,meta,param,source,track,wbr'
+  );
+
+  // Elements that you can, intentionally, leave open
+  // (and which close themselves)
+  var canBeLeftOpenTag = makeMap(
+    'colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source'
+  );
+
+  // HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3
+  // Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content
+  var isNonPhrasingTag = makeMap(
+    'address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +
+    'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +
+    'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +
+    'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +
+    'title,tr,track'
+  );
+
+  /**
+   * Not type-checking this file because it's mostly vendor code.
+   */
+
+  // Regular Expressions for parsing tags and attributes
+  var attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
+  var dynamicArgAttribute = /^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+?\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
+  var ncname = "[a-zA-Z_][\\-\\.0-9_a-zA-Z" + (unicodeRegExp.source) + "]*";
+  var qnameCapture = "((?:" + ncname + "\\:)?" + ncname + ")";
+  var startTagOpen = new RegExp(("^<" + qnameCapture));
+  var startTagClose = /^\s*(\/?)>/;
+  var endTag = new RegExp(("^<\\/" + qnameCapture + "[^>]*>"));
+  var doctype = /^<!DOCTYPE [^>]+>/i;
+  // #7298: escape - to avoid being passed as HTML comment when inlined in page
+  var comment = /^<!\--/;
+  var conditionalComment = /^<!\[/;
+
+  // Special Elements (can contain anything)
+  var isPlainTextElement = makeMap('script,style,textarea', true);
+  var reCache = {};
+
+  var decodingMap = {
+    '&lt;': '<',
+    '&gt;': '>',
+    '&quot;': '"',
+    '&amp;': '&',
+    '&#10;': '\n',
+    '&#9;': '\t',
+    '&#39;': "'"
+  };
+  var encodedAttr = /&(?:lt|gt|quot|amp|#39);/g;
+  var encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#39|#10|#9);/g;
+
+  // #5992
+  var isIgnoreNewlineTag = makeMap('pre,textarea', true);
+  var shouldIgnoreFirstNewline = function (tag, html) { return tag && isIgnoreNewlineTag(tag) && html[0] === '\n'; };
+
+  function decodeAttr (value, shouldDecodeNewlines) {
+    var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;
+    return value.replace(re, function (match) { return decodingMap[match]; })
+  }
+
+  function parseHTML (html, options) {
+    var stack = [];
+    var expectHTML = options.expectHTML;
+    var isUnaryTag$$1 = options.isUnaryTag || no;
+    var canBeLeftOpenTag$$1 = options.canBeLeftOpenTag || no;
+    var index = 0;
+    var last, lastTag;
+    while (html) {
+      last = html;
+      // Make sure we're not in a plaintext content element like script/style
+      if (!lastTag || !isPlainTextElement(lastTag)) {
+        var textEnd = html.indexOf('<');
+        if (textEnd === 0) {
+          // Comment:
+          if (comment.test(html)) {
+            var commentEnd = html.indexOf('-->');
+
+            if (commentEnd >= 0) {
+              if (options.shouldKeepComment) {
+                options.comment(html.substring(4, commentEnd), index, index + commentEnd + 3);
+              }
+              advance(commentEnd + 3);
+              continue
+            }
+          }
+
+          // http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment
+          if (conditionalComment.test(html)) {
+            var conditionalEnd = html.indexOf(']>');
+
+            if (conditionalEnd >= 0) {
+              advance(conditionalEnd + 2);
+              continue
+            }
+          }
+
+          // Doctype:
+          var doctypeMatch = html.match(doctype);
+          if (doctypeMatch) {
+            advance(doctypeMatch[0].length);
+            continue
+          }
+
+          // End tag:
+          var endTagMatch = html.match(endTag);
+          if (endTagMatch) {
+            var curIndex = index;
+            advance(endTagMatch[0].length);
+            parseEndTag(endTagMatch[1], curIndex, index);
+            continue
+          }
+
+          // Start tag:
+          var startTagMatch = parseStartTag();
+          if (startTagMatch) {
+            handleStartTag(startTagMatch);
+            if (shouldIgnoreFirstNewline(startTagMatch.tagName, html)) {
+              advance(1);
+            }
+            continue
+          }
+        }
+
+        var text = (void 0), rest = (void 0), next = (void 0);
+        if (textEnd >= 0) {
+          rest = html.slice(textEnd);
+          while (
+            !endTag.test(rest) &&
+            !startTagOpen.test(rest) &&
+            !comment.test(rest) &&
+            !conditionalComment.test(rest)
+          ) {
+            // < in plain text, be forgiving and treat it as text
+            next = rest.indexOf('<', 1);
+            if (next < 0) { break }
+            textEnd += next;
+            rest = html.slice(textEnd);
+          }
+          text = html.substring(0, textEnd);
+        }
+
+        if (textEnd < 0) {
+          text = html;
+        }
+
+        if (text) {
+          advance(text.length);
+        }
+
+        if (options.chars && text) {
+          options.chars(text, index - text.length, index);
+        }
+      } else {
+        var endTagLength = 0;
+        var stackedTag = lastTag.toLowerCase();
+        var reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp('([\\s\\S]*?)(</' + stackedTag + '[^>]*>)', 'i'));
+        var rest$1 = html.replace(reStackedTag, function (all, text, endTag) {
+          endTagLength = endTag.length;
+          if (!isPlainTextElement(stackedTag) && stackedTag !== 'noscript') {
+            text = text
+              .replace(/<!\--([\s\S]*?)-->/g, '$1') // #7298
+              .replace(/<!\[CDATA\[([\s\S]*?)]]>/g, '$1');
+          }
+          if (shouldIgnoreFirstNewline(stackedTag, text)) {
+            text = text.slice(1);
+          }
+          if (options.chars) {
+            options.chars(text);
+          }
+          return ''
+        });
+        index += html.length - rest$1.length;
+        html = rest$1;
+        parseEndTag(stackedTag, index - endTagLength, index);
+      }
+
+      if (html === last) {
+        options.chars && options.chars(html);
+        if (!stack.length && options.warn) {
+          options.warn(("Mal-formatted tag at end of template: \"" + html + "\""), { start: index + html.length });
+        }
+        break
+      }
+    }
+
+    // Clean up any remaining tags
+    parseEndTag();
+
+    function advance (n) {
+      index += n;
+      html = html.substring(n);
+    }
+
+    function parseStartTag () {
+      var start = html.match(startTagOpen);
+      if (start) {
+        var match = {
+          tagName: start[1],
+          attrs: [],
+          start: index
+        };
+        advance(start[0].length);
+        var end, attr;
+        while (!(end = html.match(startTagClose)) && (attr = html.match(dynamicArgAttribute) || html.match(attribute))) {
+          attr.start = index;
+          advance(attr[0].length);
+          attr.end = index;
+          match.attrs.push(attr);
+        }
+        if (end) {
+          match.unarySlash = end[1];
+          advance(end[0].length);
+          match.end = index;
+          return match
+        }
+      }
+    }
+
+    function handleStartTag (match) {
+      var tagName = match.tagName;
+      var unarySlash = match.unarySlash;
+
+      if (expectHTML) {
+        if (lastTag === 'p' && isNonPhrasingTag(tagName)) {
+          parseEndTag(lastTag);
+        }
+        if (canBeLeftOpenTag$$1(tagName) && lastTag === tagName) {
+          parseEndTag(tagName);
+        }
+      }
+
+      var unary = isUnaryTag$$1(tagName) || !!unarySlash;
+
+      var l = match.attrs.length;
+      var attrs = new Array(l);
+      for (var i = 0; i < l; i++) {
+        var args = match.attrs[i];
+        var value = args[3] || args[4] || args[5] || '';
+        var shouldDecodeNewlines = tagName === 'a' && args[1] === 'href'
+          ? options.shouldDecodeNewlinesForHref
+          : options.shouldDecodeNewlines;
+        attrs[i] = {
+          name: args[1],
+          value: decodeAttr(value, shouldDecodeNewlines)
+        };
+        if (options.outputSourceRange) {
+          attrs[i].start = args.start + args[0].match(/^\s*/).length;
+          attrs[i].end = args.end;
+        }
+      }
+
+      if (!unary) {
+        stack.push({ tag: tagName, lowerCasedTag: tagName.toLowerCase(), attrs: attrs, start: match.start, end: match.end });
+        lastTag = tagName;
+      }
+
+      if (options.start) {
+        options.start(tagName, attrs, unary, match.start, match.end);
+      }
+    }
+
+    function parseEndTag (tagName, start, end) {
+      var pos, lowerCasedTagName;
+      if (start == null) { start = index; }
+      if (end == null) { end = index; }
+
+      // Find the closest opened tag of the same type
+      if (tagName) {
+        lowerCasedTagName = tagName.toLowerCase();
+        for (pos = stack.length - 1; pos >= 0; pos--) {
+          if (stack[pos].lowerCasedTag === lowerCasedTagName) {
+            break
+          }
+        }
+      } else {
+        // If no tag name is provided, clean shop
+        pos = 0;
+      }
+
+      if (pos >= 0) {
+        // Close all the open elements, up the stack
+        for (var i = stack.length - 1; i >= pos; i--) {
+          if (i > pos || !tagName &&
+            options.warn
+          ) {
+            options.warn(
+              ("tag <" + (stack[i].tag) + "> has no matching end tag."),
+              { start: stack[i].start, end: stack[i].end }
+            );
+          }
+          if (options.end) {
+            options.end(stack[i].tag, start, end);
+          }
+        }
+
+        // Remove the open elements from the stack
+        stack.length = pos;
+        lastTag = pos && stack[pos - 1].tag;
+      } else if (lowerCasedTagName === 'br') {
+        if (options.start) {
+          options.start(tagName, [], true, start, end);
+        }
+      } else if (lowerCasedTagName === 'p') {
+        if (options.start) {
+          options.start(tagName, [], false, start, end);
+        }
+        if (options.end) {
+          options.end(tagName, start, end);
+        }
+      }
+    }
+  }
+
+  /*  */
+
+  var onRE = /^@|^v-on:/;
+  var dirRE = /^v-|^@|^:|^#/;
+  var forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/;
+  var forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/;
+  var stripParensRE = /^\(|\)$/g;
+  var dynamicArgRE = /^\[.*\]$/;
+
+  var argRE = /:(.*)$/;
+  var bindRE = /^:|^\.|^v-bind:/;
+  var modifierRE = /\.[^.\]]+(?=[^\]]*$)/g;
+
+  var slotRE = /^v-slot(:|$)|^#/;
+
+  var lineBreakRE = /[\r\n]/;
+  var whitespaceRE$1 = /[ \f\t\r\n]+/g;
+
+  var invalidAttributeRE = /[\s"'<>\/=]/;
+
+  var decodeHTMLCached = cached(he.decode);
+
+  var emptySlotScopeToken = "_empty_";
+
+  // configurable state
+  var warn$2;
+  var delimiters;
+  var transforms;
+  var preTransforms;
+  var postTransforms;
+  var platformIsPreTag;
+  var platformMustUseProp;
+  var platformGetTagNamespace;
+  var maybeComponent;
+
+  function createASTElement (
+    tag,
+    attrs,
+    parent
+  ) {
+    return {
+      type: 1,
+      tag: tag,
+      attrsList: attrs,
+      attrsMap: makeAttrsMap(attrs),
+      rawAttrsMap: {},
+      parent: parent,
+      children: []
+    }
+  }
+
+  /**
+   * Convert HTML string to AST.
+   */
+  function parse (
+    template,
+    options
+  ) {
+    warn$2 = options.warn || baseWarn;
+
+    platformIsPreTag = options.isPreTag || no;
+    platformMustUseProp = options.mustUseProp || no;
+    platformGetTagNamespace = options.getTagNamespace || no;
+    var isReservedTag = options.isReservedTag || no;
+    maybeComponent = function (el) { return !!(
+      el.component ||
+      el.attrsMap[':is'] ||
+      el.attrsMap['v-bind:is'] ||
+      !(el.attrsMap.is ? isReservedTag(el.attrsMap.is) : isReservedTag(el.tag))
+    ); };
+    transforms = pluckModuleFunction(options.modules, 'transformNode');
+    preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');
+    postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');
+
+    delimiters = options.delimiters;
+
+    var stack = [];
+    var preserveWhitespace = options.preserveWhitespace !== false;
+    var whitespaceOption = options.whitespace;
+    var root;
+    var currentParent;
+    var inVPre = false;
+    var inPre = false;
+    var warned = false;
+
+    function warnOnce (msg, range) {
+      if (!warned) {
+        warned = true;
+        warn$2(msg, range);
+      }
+    }
+
+    function closeElement (element) {
+      trimEndingWhitespace(element);
+      if (!inVPre && !element.processed) {
+        element = processElement(element, options);
+      }
+      // tree management
+      if (!stack.length && element !== root) {
+        // allow root elements with v-if, v-else-if and v-else
+        if (root.if && (element.elseif || element.else)) {
+          {
+            checkRootConstraints(element);
+          }
+          addIfCondition(root, {
+            exp: element.elseif,
+            block: element
+          });
+        } else {
+          warnOnce(
+            "Component template should contain exactly one root element. " +
+            "If you are using v-if on multiple elements, " +
+            "use v-else-if to chain them instead.",
+            { start: element.start }
+          );
+        }
+      }
+      if (currentParent && !element.forbidden) {
+        if (element.elseif || element.else) {
+          processIfConditions(element, currentParent);
+        } else {
+          if (element.slotScope) {
+            // scoped slot
+            // keep it in the children list so that v-else(-if) conditions can
+            // find it as the prev node.
+            var name = element.slotTarget || '"default"'
+            ;(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element;
+          }
+          currentParent.children.push(element);
+          element.parent = currentParent;
+        }
+      }
+
+      // final children cleanup
+      // filter out scoped slots
+      element.children = element.children.filter(function (c) { return !(c).slotScope; });
+      // remove trailing whitespace node again
+      trimEndingWhitespace(element);
+
+      // check pre state
+      if (element.pre) {
+        inVPre = false;
+      }
+      if (platformIsPreTag(element.tag)) {
+        inPre = false;
+      }
+      // apply post-transforms
+      for (var i = 0; i < postTransforms.length; i++) {
+        postTransforms[i](element, options);
+      }
+    }
+
+    function trimEndingWhitespace (el) {
+      // remove trailing whitespace node
+      if (!inPre) {
+        var lastNode;
+        while (
+          (lastNode = el.children[el.children.length - 1]) &&
+          lastNode.type === 3 &&
+          lastNode.text === ' '
+        ) {
+          el.children.pop();
+        }
+      }
+    }
+
+    function checkRootConstraints (el) {
+      if (el.tag === 'slot' || el.tag === 'template') {
+        warnOnce(
+          "Cannot use <" + (el.tag) + "> as component root element because it may " +
+          'contain multiple nodes.',
+          { start: el.start }
+        );
+      }
+      if (el.attrsMap.hasOwnProperty('v-for')) {
+        warnOnce(
+          'Cannot use v-for on stateful component root element because ' +
+          'it renders multiple elements.',
+          el.rawAttrsMap['v-for']
+        );
+      }
+    }
+
+    parseHTML(template, {
+      warn: warn$2,
+      expectHTML: options.expectHTML,
+      isUnaryTag: options.isUnaryTag,
+      canBeLeftOpenTag: options.canBeLeftOpenTag,
+      shouldDecodeNewlines: options.shouldDecodeNewlines,
+      shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref,
+      shouldKeepComment: options.comments,
+      outputSourceRange: options.outputSourceRange,
+      start: function start (tag, attrs, unary, start$1, end) {
+        // check namespace.
+        // inherit parent ns if there is one
+        var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag);
+
+        // handle IE svg bug
+        /* istanbul ignore if */
+        if (isIE && ns === 'svg') {
+          attrs = guardIESVGBug(attrs);
+        }
+
+        var element = createASTElement(tag, attrs, currentParent);
+        if (ns) {
+          element.ns = ns;
+        }
+
+        {
+          if (options.outputSourceRange) {
+            element.start = start$1;
+            element.end = end;
+            element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {
+              cumulated[attr.name] = attr;
+              return cumulated
+            }, {});
+          }
+          attrs.forEach(function (attr) {
+            if (invalidAttributeRE.test(attr.name)) {
+              warn$2(
+                "Invalid dynamic argument expression: attribute names cannot contain " +
+                "spaces, quotes, <, >, / or =.",
+                {
+                  start: attr.start + attr.name.indexOf("["),
+                  end: attr.start + attr.name.length
+                }
+              );
+            }
+          });
+        }
+
+        if (isForbiddenTag(element) && !isServerRendering()) {
+          element.forbidden = true;
+          warn$2(
+            'Templates should only be responsible for mapping the state to the ' +
+            'UI. Avoid placing tags with side-effects in your templates, such as ' +
+            "<" + tag + ">" + ', as they will not be parsed.',
+            { start: element.start }
+          );
+        }
+
+        // apply pre-transforms
+        for (var i = 0; i < preTransforms.length; i++) {
+          element = preTransforms[i](element, options) || element;
+        }
+
+        if (!inVPre) {
+          processPre(element);
+          if (element.pre) {
+            inVPre = true;
+          }
+        }
+        if (platformIsPreTag(element.tag)) {
+          inPre = true;
+        }
+        if (inVPre) {
+          processRawAttrs(element);
+        } else if (!element.processed) {
+          // structural directives
+          processFor(element);
+          processIf(element);
+          processOnce(element);
+        }
+
+        if (!root) {
+          root = element;
+          {
+            checkRootConstraints(root);
+          }
+        }
+
+        if (!unary) {
+          currentParent = element;
+          stack.push(element);
+        } else {
+          closeElement(element);
+        }
+      },
+
+      end: function end (tag, start, end$1) {
+        var element = stack[stack.length - 1];
+        // pop stack
+        stack.length -= 1;
+        currentParent = stack[stack.length - 1];
+        if (options.outputSourceRange) {
+          element.end = end$1;
+        }
+        closeElement(element);
+      },
+
+      chars: function chars (text, start, end) {
+        if (!currentParent) {
+          {
+            if (text === template) {
+              warnOnce(
+                'Component template requires a root element, rather than just text.',
+                { start: start }
+              );
+            } else if ((text = text.trim())) {
+              warnOnce(
+                ("text \"" + text + "\" outside root element will be ignored."),
+                { start: start }
+              );
+            }
+          }
+          return
+        }
+        // IE textarea placeholder bug
+        /* istanbul ignore if */
+        if (isIE &&
+          currentParent.tag === 'textarea' &&
+          currentParent.attrsMap.placeholder === text
+        ) {
+          return
+        }
+        var children = currentParent.children;
+        if (inPre || text.trim()) {
+          text = isTextTag(currentParent) ? text : decodeHTMLCached(text);
+        } else if (!children.length) {
+          // remove the whitespace-only node right after an opening tag
+          text = '';
+        } else if (whitespaceOption) {
+          if (whitespaceOption === 'condense') {
+            // in condense mode, remove the whitespace node if it contains
+            // line break, otherwise condense to a single space
+            text = lineBreakRE.test(text) ? '' : ' ';
+          } else {
+            text = ' ';
+          }
+        } else {
+          text = preserveWhitespace ? ' ' : '';
+        }
+        if (text) {
+          if (!inPre && whitespaceOption === 'condense') {
+            // condense consecutive whitespaces into single space
+            text = text.replace(whitespaceRE$1, ' ');
+          }
+          var res;
+          var child;
+          if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) {
+            child = {
+              type: 2,
+              expression: res.expression,
+              tokens: res.tokens,
+              text: text
+            };
+          } else if (text !== ' ' || !children.length || children[children.length - 1].text !== ' ') {
+            child = {
+              type: 3,
+              text: text
+            };
+          }
+          if (child) {
+            if (options.outputSourceRange) {
+              child.start = start;
+              child.end = end;
+            }
+            children.push(child);
+          }
+        }
+      },
+      comment: function comment (text, start, end) {
+        // adding anything as a sibling to the root node is forbidden
+        // comments should still be allowed, but ignored
+        if (currentParent) {
+          var child = {
+            type: 3,
+            text: text,
+            isComment: true
+          };
+          if (options.outputSourceRange) {
+            child.start = start;
+            child.end = end;
+          }
+          currentParent.children.push(child);
+        }
+      }
+    });
+    return root
+  }
+
+  function processPre (el) {
+    if (getAndRemoveAttr(el, 'v-pre') != null) {
+      el.pre = true;
+    }
+  }
+
+  function processRawAttrs (el) {
+    var list = el.attrsList;
+    var len = list.length;
+    if (len) {
+      var attrs = el.attrs = new Array(len);
+      for (var i = 0; i < len; i++) {
+        attrs[i] = {
+          name: list[i].name,
+          value: JSON.stringify(list[i].value)
+        };
+        if (list[i].start != null) {
+          attrs[i].start = list[i].start;
+          attrs[i].end = list[i].end;
+        }
+      }
+    } else if (!el.pre) {
+      // non root node in pre blocks with no attributes
+      el.plain = true;
+    }
+  }
+
+  function processElement (
+    element,
+    options
+  ) {
+    processKey(element);
+
+    // determine whether this is a plain element after
+    // removing structural attributes
+    element.plain = (
+      !element.key &&
+      !element.scopedSlots &&
+      !element.attrsList.length
+    );
+
+    processRef(element);
+    processSlotContent(element);
+    processSlotOutlet(element);
+    processComponent(element);
+    for (var i = 0; i < transforms.length; i++) {
+      element = transforms[i](element, options) || element;
+    }
+    processAttrs(element);
+    return element
+  }
+
+  function processKey (el) {
+    var exp = getBindingAttr(el, 'key');
+    if (exp) {
+      {
+        if (el.tag === 'template') {
+          warn$2(
+            "<template> cannot be keyed. Place the key on real elements instead.",
+            getRawBindingAttr(el, 'key')
+          );
+        }
+        if (el.for) {
+          var iterator = el.iterator2 || el.iterator1;
+          var parent = el.parent;
+          if (iterator && iterator === exp && parent && parent.tag === 'transition-group') {
+            warn$2(
+              "Do not use v-for index as key on <transition-group> children, " +
+              "this is the same as not using keys.",
+              getRawBindingAttr(el, 'key'),
+              true /* tip */
+            );
+          }
+        }
+      }
+      el.key = exp;
+    }
+  }
+
+  function processRef (el) {
+    var ref = getBindingAttr(el, 'ref');
+    if (ref) {
+      el.ref = ref;
+      el.refInFor = checkInFor(el);
+    }
+  }
+
+  function processFor (el) {
+    var exp;
+    if ((exp = getAndRemoveAttr(el, 'v-for'))) {
+      var res = parseFor(exp);
+      if (res) {
+        extend(el, res);
+      } else {
+        warn$2(
+          ("Invalid v-for expression: " + exp),
+          el.rawAttrsMap['v-for']
+        );
+      }
+    }
+  }
+
+
+
+  function parseFor (exp) {
+    var inMatch = exp.match(forAliasRE);
+    if (!inMatch) { return }
+    var res = {};
+    res.for = inMatch[2].trim();
+    var alias = inMatch[1].trim().replace(stripParensRE, '');
+    var iteratorMatch = alias.match(forIteratorRE);
+    if (iteratorMatch) {
+      res.alias = alias.replace(forIteratorRE, '').trim();
+      res.iterator1 = iteratorMatch[1].trim();
+      if (iteratorMatch[2]) {
+        res.iterator2 = iteratorMatch[2].trim();
+      }
+    } else {
+      res.alias = alias;
+    }
+    return res
+  }
+
+  function processIf (el) {
+    var exp = getAndRemoveAttr(el, 'v-if');
+    if (exp) {
+      el.if = exp;
+      addIfCondition(el, {
+        exp: exp,
+        block: el
+      });
+    } else {
+      if (getAndRemoveAttr(el, 'v-else') != null) {
+        el.else = true;
+      }
+      var elseif = getAndRemoveAttr(el, 'v-else-if');
+      if (elseif) {
+        el.elseif = elseif;
+      }
+    }
+  }
+
+  function processIfConditions (el, parent) {
+    var prev = findPrevElement(parent.children);
+    if (prev && prev.if) {
+      addIfCondition(prev, {
+        exp: el.elseif,
+        block: el
+      });
+    } else {
+      warn$2(
+        "v-" + (el.elseif ? ('else-if="' + el.elseif + '"') : 'else') + " " +
+        "used on element <" + (el.tag) + "> without corresponding v-if.",
+        el.rawAttrsMap[el.elseif ? 'v-else-if' : 'v-else']
+      );
+    }
+  }
+
+  function findPrevElement (children) {
+    var i = children.length;
+    while (i--) {
+      if (children[i].type === 1) {
+        return children[i]
+      } else {
+        if (children[i].text !== ' ') {
+          warn$2(
+            "text \"" + (children[i].text.trim()) + "\" between v-if and v-else(-if) " +
+            "will be ignored.",
+            children[i]
+          );
+        }
+        children.pop();
+      }
+    }
+  }
+
+  function addIfCondition (el, condition) {
+    if (!el.ifConditions) {
+      el.ifConditions = [];
+    }
+    el.ifConditions.push(condition);
+  }
+
+  function processOnce (el) {
+    var once$$1 = getAndRemoveAttr(el, 'v-once');
+    if (once$$1 != null) {
+      el.once = true;
+    }
+  }
+
+  // handle content being passed to a component as slot,
+  // e.g. <template slot="xxx">, <div slot-scope="xxx">
+  function processSlotContent (el) {
+    var slotScope;
+    if (el.tag === 'template') {
+      slotScope = getAndRemoveAttr(el, 'scope');
+      /* istanbul ignore if */
+      if (slotScope) {
+        warn$2(
+          "the \"scope\" attribute for scoped slots have been deprecated and " +
+          "replaced by \"slot-scope\" since 2.5. The new \"slot-scope\" attribute " +
+          "can also be used on plain elements in addition to <template> to " +
+          "denote scoped slots.",
+          el.rawAttrsMap['scope'],
+          true
+        );
+      }
+      el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope');
+    } else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) {
+      /* istanbul ignore if */
+      if (el.attrsMap['v-for']) {
+        warn$2(
+          "Ambiguous combined usage of slot-scope and v-for on <" + (el.tag) + "> " +
+          "(v-for takes higher priority). Use a wrapper <template> for the " +
+          "scoped slot to make it clearer.",
+          el.rawAttrsMap['slot-scope'],
+          true
+        );
+      }
+      el.slotScope = slotScope;
+    }
+
+    // slot="xxx"
+    var slotTarget = getBindingAttr(el, 'slot');
+    if (slotTarget) {
+      el.slotTarget = slotTarget === '""' ? '"default"' : slotTarget;
+      el.slotTargetDynamic = !!(el.attrsMap[':slot'] || el.attrsMap['v-bind:slot']);
+      // preserve slot as an attribute for native shadow DOM compat
+      // only for non-scoped slots.
+      if (el.tag !== 'template' && !el.slotScope) {
+        addAttr(el, 'slot', slotTarget, getRawBindingAttr(el, 'slot'));
+      }
+    }
+
+    // 2.6 v-slot syntax
+    {
+      if (el.tag === 'template') {
+        // v-slot on <template>
+        var slotBinding = getAndRemoveAttrByRegex(el, slotRE);
+        if (slotBinding) {
+          {
+            if (el.slotTarget || el.slotScope) {
+              warn$2(
+                "Unexpected mixed usage of different slot syntaxes.",
+                el
+              );
+            }
+            if (el.parent && !maybeComponent(el.parent)) {
+              warn$2(
+                "<template v-slot> can only appear at the root level inside " +
+                "the receiving component",
+                el
+              );
+            }
+          }
+          var ref = getSlotName(slotBinding);
+          var name = ref.name;
+          var dynamic = ref.dynamic;
+          el.slotTarget = name;
+          el.slotTargetDynamic = dynamic;
+          el.slotScope = slotBinding.value || emptySlotScopeToken; // force it into a scoped slot for perf
+        }
+      } else {
+        // v-slot on component, denotes default slot
+        var slotBinding$1 = getAndRemoveAttrByRegex(el, slotRE);
+        if (slotBinding$1) {
+          {
+            if (!maybeComponent(el)) {
+              warn$2(
+                "v-slot can only be used on components or <template>.",
+                slotBinding$1
+              );
+            }
+            if (el.slotScope || el.slotTarget) {
+              warn$2(
+                "Unexpected mixed usage of different slot syntaxes.",
+                el
+              );
+            }
+            if (el.scopedSlots) {
+              warn$2(
+                "To avoid scope ambiguity, the default slot should also use " +
+                "<template> syntax when there are other named slots.",
+                slotBinding$1
+              );
+            }
+          }
+          // add the component's children to its default slot
+          var slots = el.scopedSlots || (el.scopedSlots = {});
+          var ref$1 = getSlotName(slotBinding$1);
+          var name$1 = ref$1.name;
+          var dynamic$1 = ref$1.dynamic;
+          var slotContainer = slots[name$1] = createASTElement('template', [], el);
+          slotContainer.slotTarget = name$1;
+          slotContainer.slotTargetDynamic = dynamic$1;
+          slotContainer.children = el.children.filter(function (c) {
+            if (!c.slotScope) {
+              c.parent = slotContainer;
+              return true
+            }
+          });
+          slotContainer.slotScope = slotBinding$1.value || emptySlotScopeToken;
+          // remove children as they are returned from scopedSlots now
+          el.children = [];
+          // mark el non-plain so data gets generated
+          el.plain = false;
+        }
+      }
+    }
+  }
+
+  function getSlotName (binding) {
+    var name = binding.name.replace(slotRE, '');
+    if (!name) {
+      if (binding.name[0] !== '#') {
+        name = 'default';
+      } else {
+        warn$2(
+          "v-slot shorthand syntax requires a slot name.",
+          binding
+        );
+      }
+    }
+    return dynamicArgRE.test(name)
+      // dynamic [name]
+      ? { name: name.slice(1, -1), dynamic: true }
+      // static name
+      : { name: ("\"" + name + "\""), dynamic: false }
+  }
+
+  // handle <slot/> outlets
+  function processSlotOutlet (el) {
+    if (el.tag === 'slot') {
+      el.slotName = getBindingAttr(el, 'name');
+      if (el.key) {
+        warn$2(
+          "`key` does not work on <slot> because slots are abstract outlets " +
+          "and can possibly expand into multiple elements. " +
+          "Use the key on a wrapping element instead.",
+          getRawBindingAttr(el, 'key')
+        );
+      }
+    }
+  }
+
+  function processComponent (el) {
+    var binding;
+    if ((binding = getBindingAttr(el, 'is'))) {
+      el.component = binding;
+    }
+    if (getAndRemoveAttr(el, 'inline-template') != null) {
+      el.inlineTemplate = true;
+    }
+  }
+
+  function processAttrs (el) {
+    var list = el.attrsList;
+    var i, l, name, rawName, value, modifiers, syncGen, isDynamic;
+    for (i = 0, l = list.length; i < l; i++) {
+      name = rawName = list[i].name;
+      value = list[i].value;
+      if (dirRE.test(name)) {
+        // mark element as dynamic
+        el.hasBindings = true;
+        // modifiers
+        modifiers = parseModifiers(name.replace(dirRE, ''));
+        // support .foo shorthand syntax for the .prop modifier
+        if (modifiers) {
+          name = name.replace(modifierRE, '');
+        }
+        if (bindRE.test(name)) { // v-bind
+          name = name.replace(bindRE, '');
+          value = parseFilters(value);
+          isDynamic = dynamicArgRE.test(name);
+          if (isDynamic) {
+            name = name.slice(1, -1);
+          }
+          if (
+            value.trim().length === 0
+          ) {
+            warn$2(
+              ("The value for a v-bind expression cannot be empty. Found in \"v-bind:" + name + "\"")
+            );
+          }
+          if (modifiers) {
+            if (modifiers.prop && !isDynamic) {
+              name = camelize(name);
+              if (name === 'innerHtml') { name = 'innerHTML'; }
+            }
+            if (modifiers.camel && !isDynamic) {
+              name = camelize(name);
+            }
+            if (modifiers.sync) {
+              syncGen = genAssignmentCode(value, "$event");
+              if (!isDynamic) {
+                addHandler(
+                  el,
+                  ("update:" + (camelize(name))),
+                  syncGen,
+                  null,
+                  false,
+                  warn$2,
+                  list[i]
+                );
+                if (hyphenate(name) !== camelize(name)) {
+                  addHandler(
+                    el,
+                    ("update:" + (hyphenate(name))),
+                    syncGen,
+                    null,
+                    false,
+                    warn$2,
+                    list[i]
+                  );
+                }
+              } else {
+                // handler w/ dynamic event name
+                addHandler(
+                  el,
+                  ("\"update:\"+(" + name + ")"),
+                  syncGen,
+                  null,
+                  false,
+                  warn$2,
+                  list[i],
+                  true // dynamic
+                );
+              }
+            }
+          }
+          if ((modifiers && modifiers.prop) || (
+            !el.component && platformMustUseProp(el.tag, el.attrsMap.type, name)
+          )) {
+            addProp(el, name, value, list[i], isDynamic);
+          } else {
+            addAttr(el, name, value, list[i], isDynamic);
+          }
+        } else if (onRE.test(name)) { // v-on
+          name = name.replace(onRE, '');
+          isDynamic = dynamicArgRE.test(name);
+          if (isDynamic) {
+            name = name.slice(1, -1);
+          }
+          addHandler(el, name, value, modifiers, false, warn$2, list[i], isDynamic);
+        } else { // normal directives
+          name = name.replace(dirRE, '');
+          // parse arg
+          var argMatch = name.match(argRE);
+          var arg = argMatch && argMatch[1];
+          isDynamic = false;
+          if (arg) {
+            name = name.slice(0, -(arg.length + 1));
+            if (dynamicArgRE.test(arg)) {
+              arg = arg.slice(1, -1);
+              isDynamic = true;
+            }
+          }
+          addDirective(el, name, rawName, value, arg, isDynamic, modifiers, list[i]);
+          if (name === 'model') {
+            checkForAliasModel(el, value);
+          }
+        }
+      } else {
+        // literal attribute
+        {
+          var res = parseText(value, delimiters);
+          if (res) {
+            warn$2(
+              name + "=\"" + value + "\": " +
+              'Interpolation inside attributes has been removed. ' +
+              'Use v-bind or the colon shorthand instead. For example, ' +
+              'instead of <div id="{{ val }}">, use <div :id="val">.',
+              list[i]
+            );
+          }
+        }
+        addAttr(el, name, JSON.stringify(value), list[i]);
+        // #6887 firefox doesn't update muted state if set via attribute
+        // even immediately after element creation
+        if (!el.component &&
+            name === 'muted' &&
+            platformMustUseProp(el.tag, el.attrsMap.type, name)) {
+          addProp(el, name, 'true', list[i]);
+        }
+      }
+    }
+  }
+
+  function checkInFor (el) {
+    var parent = el;
+    while (parent) {
+      if (parent.for !== undefined) {
+        return true
+      }
+      parent = parent.parent;
+    }
+    return false
+  }
+
+  function parseModifiers (name) {
+    var match = name.match(modifierRE);
+    if (match) {
+      var ret = {};
+      match.forEach(function (m) { ret[m.slice(1)] = true; });
+      return ret
+    }
+  }
+
+  function makeAttrsMap (attrs) {
+    var map = {};
+    for (var i = 0, l = attrs.length; i < l; i++) {
+      if (
+        map[attrs[i].name] && !isIE && !isEdge
+      ) {
+        warn$2('duplicate attribute: ' + attrs[i].name, attrs[i]);
+      }
+      map[attrs[i].name] = attrs[i].value;
+    }
+    return map
+  }
+
+  // for script (e.g. type="x/template") or style, do not decode content
+  function isTextTag (el) {
+    return el.tag === 'script' || el.tag === 'style'
+  }
+
+  function isForbiddenTag (el) {
+    return (
+      el.tag === 'style' ||
+      (el.tag === 'script' && (
+        !el.attrsMap.type ||
+        el.attrsMap.type === 'text/javascript'
+      ))
+    )
+  }
+
+  var ieNSBug = /^xmlns:NS\d+/;
+  var ieNSPrefix = /^NS\d+:/;
+
+  /* istanbul ignore next */
+  function guardIESVGBug (attrs) {
+    var res = [];
+    for (var i = 0; i < attrs.length; i++) {
+      var attr = attrs[i];
+      if (!ieNSBug.test(attr.name)) {
+        attr.name = attr.name.replace(ieNSPrefix, '');
+        res.push(attr);
+      }
+    }
+    return res
+  }
+
+  function checkForAliasModel (el, value) {
+    var _el = el;
+    while (_el) {
+      if (_el.for && _el.alias === value) {
+        warn$2(
+          "<" + (el.tag) + " v-model=\"" + value + "\">: " +
+          "You are binding v-model directly to a v-for iteration alias. " +
+          "This will not be able to modify the v-for source array because " +
+          "writing to the alias is like modifying a function local variable. " +
+          "Consider using an array of objects and use v-model on an object property instead.",
+          el.rawAttrsMap['v-model']
+        );
+      }
+      _el = _el.parent;
+    }
+  }
+
+  /*  */
+
+  function preTransformNode (el, options) {
+    if (el.tag === 'input') {
+      var map = el.attrsMap;
+      if (!map['v-model']) {
+        return
+      }
+
+      var typeBinding;
+      if (map[':type'] || map['v-bind:type']) {
+        typeBinding = getBindingAttr(el, 'type');
+      }
+      if (!map.type && !typeBinding && map['v-bind']) {
+        typeBinding = "(" + (map['v-bind']) + ").type";
+      }
+
+      if (typeBinding) {
+        var ifCondition = getAndRemoveAttr(el, 'v-if', true);
+        var ifConditionExtra = ifCondition ? ("&&(" + ifCondition + ")") : "";
+        var hasElse = getAndRemoveAttr(el, 'v-else', true) != null;
+        var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true);
+        // 1. checkbox
+        var branch0 = cloneASTElement(el);
+        // process for on the main node
+        processFor(branch0);
+        addRawAttr(branch0, 'type', 'checkbox');
+        processElement(branch0, options);
+        branch0.processed = true; // prevent it from double-processed
+        branch0.if = "(" + typeBinding + ")==='checkbox'" + ifConditionExtra;
+        addIfCondition(branch0, {
+          exp: branch0.if,
+          block: branch0
+        });
+        // 2. add radio else-if condition
+        var branch1 = cloneASTElement(el);
+        getAndRemoveAttr(branch1, 'v-for', true);
+        addRawAttr(branch1, 'type', 'radio');
+        processElement(branch1, options);
+        addIfCondition(branch0, {
+          exp: "(" + typeBinding + ")==='radio'" + ifConditionExtra,
+          block: branch1
+        });
+        // 3. other
+        var branch2 = cloneASTElement(el);
+        getAndRemoveAttr(branch2, 'v-for', true);
+        addRawAttr(branch2, ':type', typeBinding);
+        processElement(branch2, options);
+        addIfCondition(branch0, {
+          exp: ifCondition,
+          block: branch2
+        });
+
+        if (hasElse) {
+          branch0.else = true;
+        } else if (elseIfCondition) {
+          branch0.elseif = elseIfCondition;
+        }
+
+        return branch0
+      }
+    }
+  }
+
+  function cloneASTElement (el) {
+    return createASTElement(el.tag, el.attrsList.slice(), el.parent)
+  }
+
+  var model$1 = {
+    preTransformNode: preTransformNode
+  };
+
+  var modules$1 = [
+    klass$1,
+    style$1,
+    model$1
+  ];
+
+  /*  */
+
+  function text (el, dir) {
+    if (dir.value) {
+      addProp(el, 'textContent', ("_s(" + (dir.value) + ")"), dir);
+    }
+  }
+
+  /*  */
+
+  function html (el, dir) {
+    if (dir.value) {
+      addProp(el, 'innerHTML', ("_s(" + (dir.value) + ")"), dir);
+    }
+  }
+
+  var directives$1 = {
+    model: model,
+    text: text,
+    html: html
+  };
+
+  /*  */
+
+  var baseOptions = {
+    expectHTML: true,
+    modules: modules$1,
+    directives: directives$1,
+    isPreTag: isPreTag,
+    isUnaryTag: isUnaryTag,
+    mustUseProp: mustUseProp,
+    canBeLeftOpenTag: canBeLeftOpenTag,
+    isReservedTag: isReservedTag,
+    getTagNamespace: getTagNamespace,
+    staticKeys: genStaticKeys(modules$1)
+  };
+
+  /*  */
+
+  var isStaticKey;
+  var isPlatformReservedTag;
+
+  var genStaticKeysCached = cached(genStaticKeys$1);
+
+  /**
+   * Goal of the optimizer: walk the generated template AST tree
+   * and detect sub-trees that are purely static, i.e. parts of
+   * the DOM that never needs to change.
+   *
+   * Once we detect these sub-trees, we can:
+   *
+   * 1. Hoist them into constants, so that we no longer need to
+   *    create fresh nodes for them on each re-render;
+   * 2. Completely skip them in the patching process.
+   */
+  function optimize (root, options) {
+    if (!root) { return }
+    isStaticKey = genStaticKeysCached(options.staticKeys || '');
+    isPlatformReservedTag = options.isReservedTag || no;
+    // first pass: mark all non-static nodes.
+    markStatic$1(root);
+    // second pass: mark static roots.
+    markStaticRoots(root, false);
+  }
+
+  function genStaticKeys$1 (keys) {
+    return makeMap(
+      'type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap' +
+      (keys ? ',' + keys : '')
+    )
+  }
+
+  function markStatic$1 (node) {
+    node.static = isStatic(node);
+    if (node.type === 1) {
+      // do not make component slot content static. this avoids
+      // 1. components not able to mutate slot nodes
+      // 2. static slot content fails for hot-reloading
+      if (
+        !isPlatformReservedTag(node.tag) &&
+        node.tag !== 'slot' &&
+        node.attrsMap['inline-template'] == null
+      ) {
+        return
+      }
+      for (var i = 0, l = node.children.length; i < l; i++) {
+        var child = node.children[i];
+        markStatic$1(child);
+        if (!child.static) {
+          node.static = false;
+        }
+      }
+      if (node.ifConditions) {
+        for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {
+          var block = node.ifConditions[i$1].block;
+          markStatic$1(block);
+          if (!block.static) {
+            node.static = false;
+          }
+        }
+      }
+    }
+  }
+
+  function markStaticRoots (node, isInFor) {
+    if (node.type === 1) {
+      if (node.static || node.once) {
+        node.staticInFor = isInFor;
+      }
+      // For a node to qualify as a static root, it should have children that
+      // are not just static text. Otherwise the cost of hoisting out will
+      // outweigh the benefits and it's better off to just always render it fresh.
+      if (node.static && node.children.length && !(
+        node.children.length === 1 &&
+        node.children[0].type === 3
+      )) {
+        node.staticRoot = true;
+        return
+      } else {
+        node.staticRoot = false;
+      }
+      if (node.children) {
+        for (var i = 0, l = node.children.length; i < l; i++) {
+          markStaticRoots(node.children[i], isInFor || !!node.for);
+        }
+      }
+      if (node.ifConditions) {
+        for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {
+          markStaticRoots(node.ifConditions[i$1].block, isInFor);
+        }
+      }
+    }
+  }
+
+  function isStatic (node) {
+    if (node.type === 2) { // expression
+      return false
+    }
+    if (node.type === 3) { // text
+      return true
+    }
+    return !!(node.pre || (
+      !node.hasBindings && // no dynamic bindings
+      !node.if && !node.for && // not v-if or v-for or v-else
+      !isBuiltInTag(node.tag) && // not a built-in
+      isPlatformReservedTag(node.tag) && // not a component
+      !isDirectChildOfTemplateFor(node) &&
+      Object.keys(node).every(isStaticKey)
+    ))
+  }
+
+  function isDirectChildOfTemplateFor (node) {
+    while (node.parent) {
+      node = node.parent;
+      if (node.tag !== 'template') {
+        return false
+      }
+      if (node.for) {
+        return true
+      }
+    }
+    return false
+  }
+
+  /*  */
+
+  var fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function(?:\s+[\w$]+)?\s*\(/;
+  var fnInvokeRE = /\([^)]*?\);*$/;
+  var simplePathRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/;
+
+  // KeyboardEvent.keyCode aliases
+  var keyCodes = {
+    esc: 27,
+    tab: 9,
+    enter: 13,
+    space: 32,
+    up: 38,
+    left: 37,
+    right: 39,
+    down: 40,
+    'delete': [8, 46]
+  };
+
+  // KeyboardEvent.key aliases
+  var keyNames = {
+    // #7880: IE11 and Edge use `Esc` for Escape key name.
+    esc: ['Esc', 'Escape'],
+    tab: 'Tab',
+    enter: 'Enter',
+    // #9112: IE11 uses `Spacebar` for Space key name.
+    space: [' ', 'Spacebar'],
+    // #7806: IE11 uses key names without `Arrow` prefix for arrow keys.
+    up: ['Up', 'ArrowUp'],
+    left: ['Left', 'ArrowLeft'],
+    right: ['Right', 'ArrowRight'],
+    down: ['Down', 'ArrowDown'],
+    // #9112: IE11 uses `Del` for Delete key name.
+    'delete': ['Backspace', 'Delete', 'Del']
+  };
+
+  // #4868: modifiers that prevent the execution of the listener
+  // need to explicitly return null so that we can determine whether to remove
+  // the listener for .once
+  var genGuard = function (condition) { return ("if(" + condition + ")return null;"); };
+
+  var modifierCode = {
+    stop: '$event.stopPropagation();',
+    prevent: '$event.preventDefault();',
+    self: genGuard("$event.target !== $event.currentTarget"),
+    ctrl: genGuard("!$event.ctrlKey"),
+    shift: genGuard("!$event.shiftKey"),
+    alt: genGuard("!$event.altKey"),
+    meta: genGuard("!$event.metaKey"),
+    left: genGuard("'button' in $event && $event.button !== 0"),
+    middle: genGuard("'button' in $event && $event.button !== 1"),
+    right: genGuard("'button' in $event && $event.button !== 2")
+  };
+
+  function genHandlers (
+    events,
+    isNative
+  ) {
+    var prefix = isNative ? 'nativeOn:' : 'on:';
+    var staticHandlers = "";
+    var dynamicHandlers = "";
+    for (var name in events) {
+      var handlerCode = genHandler(events[name]);
+      if (events[name] && events[name].dynamic) {
+        dynamicHandlers += name + "," + handlerCode + ",";
+      } else {
+        staticHandlers += "\"" + name + "\":" + handlerCode + ",";
+      }
+    }
+    staticHandlers = "{" + (staticHandlers.slice(0, -1)) + "}";
+    if (dynamicHandlers) {
+      return prefix + "_d(" + staticHandlers + ",[" + (dynamicHandlers.slice(0, -1)) + "])"
+    } else {
+      return prefix + staticHandlers
+    }
+  }
+
+  function genHandler (handler) {
+    if (!handler) {
+      return 'function(){}'
+    }
+
+    if (Array.isArray(handler)) {
+      return ("[" + (handler.map(function (handler) { return genHandler(handler); }).join(',')) + "]")
+    }
+
+    var isMethodPath = simplePathRE.test(handler.value);
+    var isFunctionExpression = fnExpRE.test(handler.value);
+    var isFunctionInvocation = simplePathRE.test(handler.value.replace(fnInvokeRE, ''));
+
+    if (!handler.modifiers) {
+      if (isMethodPath || isFunctionExpression) {
+        return handler.value
+      }
+      return ("function($event){" + (isFunctionInvocation ? ("return " + (handler.value)) : handler.value) + "}") // inline statement
+    } else {
+      var code = '';
+      var genModifierCode = '';
+      var keys = [];
+      for (var key in handler.modifiers) {
+        if (modifierCode[key]) {
+          genModifierCode += modifierCode[key];
+          // left/right
+          if (keyCodes[key]) {
+            keys.push(key);
+          }
+        } else if (key === 'exact') {
+          var modifiers = (handler.modifiers);
+          genModifierCode += genGuard(
+            ['ctrl', 'shift', 'alt', 'meta']
+              .filter(function (keyModifier) { return !modifiers[keyModifier]; })
+              .map(function (keyModifier) { return ("$event." + keyModifier + "Key"); })
+              .join('||')
+          );
+        } else {
+          keys.push(key);
+        }
+      }
+      if (keys.length) {
+        code += genKeyFilter(keys);
+      }
+      // Make sure modifiers like prevent and stop get executed after key filtering
+      if (genModifierCode) {
+        code += genModifierCode;
+      }
+      var handlerCode = isMethodPath
+        ? ("return " + (handler.value) + ".apply(null, arguments)")
+        : isFunctionExpression
+          ? ("return (" + (handler.value) + ").apply(null, arguments)")
+          : isFunctionInvocation
+            ? ("return " + (handler.value))
+            : handler.value;
+      return ("function($event){" + code + handlerCode + "}")
+    }
+  }
+
+  function genKeyFilter (keys) {
+    return (
+      // make sure the key filters only apply to KeyboardEvents
+      // #9441: can't use 'keyCode' in $event because Chrome autofill fires fake
+      // key events that do not have keyCode property...
+      "if(!$event.type.indexOf('key')&&" +
+      (keys.map(genFilterCode).join('&&')) + ")return null;"
+    )
+  }
+
+  function genFilterCode (key) {
+    var keyVal = parseInt(key, 10);
+    if (keyVal) {
+      return ("$event.keyCode!==" + keyVal)
+    }
+    var keyCode = keyCodes[key];
+    var keyName = keyNames[key];
+    return (
+      "_k($event.keyCode," +
+      (JSON.stringify(key)) + "," +
+      (JSON.stringify(keyCode)) + "," +
+      "$event.key," +
+      "" + (JSON.stringify(keyName)) +
+      ")"
+    )
+  }
+
+  /*  */
+
+  function on (el, dir) {
+    if (dir.modifiers) {
+      warn("v-on without argument does not support modifiers.");
+    }
+    el.wrapListeners = function (code) { return ("_g(" + code + "," + (dir.value) + ")"); };
+  }
+
+  /*  */
+
+  function bind$1 (el, dir) {
+    el.wrapData = function (code) {
+      return ("_b(" + code + ",'" + (el.tag) + "'," + (dir.value) + "," + (dir.modifiers && dir.modifiers.prop ? 'true' : 'false') + (dir.modifiers && dir.modifiers.sync ? ',true' : '') + ")")
+    };
+  }
+
+  /*  */
+
+  var baseDirectives = {
+    on: on,
+    bind: bind$1,
+    cloak: noop
+  };
+
+  /*  */
+
+
+
+
+
+  var CodegenState = function CodegenState (options) {
+    this.options = options;
+    this.warn = options.warn || baseWarn;
+    this.transforms = pluckModuleFunction(options.modules, 'transformCode');
+    this.dataGenFns = pluckModuleFunction(options.modules, 'genData');
+    this.directives = extend(extend({}, baseDirectives), options.directives);
+    var isReservedTag = options.isReservedTag || no;
+    this.maybeComponent = function (el) { return !!el.component || !isReservedTag(el.tag); };
+    this.onceId = 0;
+    this.staticRenderFns = [];
+    this.pre = false;
+  };
+
+
+
+  function generate (
+    ast,
+    options
+  ) {
+    var state = new CodegenState(options);
+    // fix #11483, Root level <script> tags should not be rendered.
+    var code = ast ? (ast.tag === 'script' ? 'null' : genElement(ast, state)) : '_c("div")';
+    return {
+      render: ("with(this){return " + code + "}"),
+      staticRenderFns: state.staticRenderFns
+    }
+  }
+
+  function genElement (el, state) {
+    if (el.parent) {
+      el.pre = el.pre || el.parent.pre;
+    }
+
+    if (el.staticRoot && !el.staticProcessed) {
+      return genStatic(el, state)
+    } else if (el.once && !el.onceProcessed) {
+      return genOnce(el, state)
+    } else if (el.for && !el.forProcessed) {
+      return genFor(el, state)
+    } else if (el.if && !el.ifProcessed) {
+      return genIf(el, state)
+    } else if (el.tag === 'template' && !el.slotTarget && !state.pre) {
+      return genChildren(el, state) || 'void 0'
+    } else if (el.tag === 'slot') {
+      return genSlot(el, state)
+    } else {
+      // component or element
+      var code;
+      if (el.component) {
+        code = genComponent(el.component, el, state);
+      } else {
+        var data;
+        if (!el.plain || (el.pre && state.maybeComponent(el))) {
+          data = genData$2(el, state);
+        }
+
+        var children = el.inlineTemplate ? null : genChildren(el, state, true);
+        code = "_c('" + (el.tag) + "'" + (data ? ("," + data) : '') + (children ? ("," + children) : '') + ")";
+      }
+      // module transforms
+      for (var i = 0; i < state.transforms.length; i++) {
+        code = state.transforms[i](el, code);
+      }
+      return code
+    }
+  }
+
+  // hoist static sub-trees out
+  function genStatic (el, state) {
+    el.staticProcessed = true;
+    // Some elements (templates) need to behave differently inside of a v-pre
+    // node.  All pre nodes are static roots, so we can use this as a location to
+    // wrap a state change and reset it upon exiting the pre node.
+    var originalPreState = state.pre;
+    if (el.pre) {
+      state.pre = el.pre;
+    }
+    state.staticRenderFns.push(("with(this){return " + (genElement(el, state)) + "}"));
+    state.pre = originalPreState;
+    return ("_m(" + (state.staticRenderFns.length - 1) + (el.staticInFor ? ',true' : '') + ")")
+  }
+
+  // v-once
+  function genOnce (el, state) {
+    el.onceProcessed = true;
+    if (el.if && !el.ifProcessed) {
+      return genIf(el, state)
+    } else if (el.staticInFor) {
+      var key = '';
+      var parent = el.parent;
+      while (parent) {
+        if (parent.for) {
+          key = parent.key;
+          break
+        }
+        parent = parent.parent;
+      }
+      if (!key) {
+        state.warn(
+          "v-once can only be used inside v-for that is keyed. ",
+          el.rawAttrsMap['v-once']
+        );
+        return genElement(el, state)
+      }
+      return ("_o(" + (genElement(el, state)) + "," + (state.onceId++) + "," + key + ")")
+    } else {
+      return genStatic(el, state)
+    }
+  }
+
+  function genIf (
+    el,
+    state,
+    altGen,
+    altEmpty
+  ) {
+    el.ifProcessed = true; // avoid recursion
+    return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty)
+  }
+
+  function genIfConditions (
+    conditions,
+    state,
+    altGen,
+    altEmpty
+  ) {
+    if (!conditions.length) {
+      return altEmpty || '_e()'
+    }
+
+    var condition = conditions.shift();
+    if (condition.exp) {
+      return ("(" + (condition.exp) + ")?" + (genTernaryExp(condition.block)) + ":" + (genIfConditions(conditions, state, altGen, altEmpty)))
+    } else {
+      return ("" + (genTernaryExp(condition.block)))
+    }
+
+    // v-if with v-once should generate code like (a)?_m(0):_m(1)
+    function genTernaryExp (el) {
+      return altGen
+        ? altGen(el, state)
+        : el.once
+          ? genOnce(el, state)
+          : genElement(el, state)
+    }
+  }
+
+  function genFor (
+    el,
+    state,
+    altGen,
+    altHelper
+  ) {
+    var exp = el.for;
+    var alias = el.alias;
+    var iterator1 = el.iterator1 ? ("," + (el.iterator1)) : '';
+    var iterator2 = el.iterator2 ? ("," + (el.iterator2)) : '';
+
+    if (state.maybeComponent(el) &&
+      el.tag !== 'slot' &&
+      el.tag !== 'template' &&
+      !el.key
+    ) {
+      state.warn(
+        "<" + (el.tag) + " v-for=\"" + alias + " in " + exp + "\">: component lists rendered with " +
+        "v-for should have explicit keys. " +
+        "See https://vuejs.org/guide/list.html#key for more info.",
+        el.rawAttrsMap['v-for'],
+        true /* tip */
+      );
+    }
+
+    el.forProcessed = true; // avoid recursion
+    return (altHelper || '_l') + "((" + exp + ")," +
+      "function(" + alias + iterator1 + iterator2 + "){" +
+        "return " + ((altGen || genElement)(el, state)) +
+      '})'
+  }
+
+  function genData$2 (el, state) {
+    var data = '{';
+
+    // directives first.
+    // directives may mutate the el's other properties before they are generated.
+    var dirs = genDirectives(el, state);
+    if (dirs) { data += dirs + ','; }
+
+    // key
+    if (el.key) {
+      data += "key:" + (el.key) + ",";
+    }
+    // ref
+    if (el.ref) {
+      data += "ref:" + (el.ref) + ",";
+    }
+    if (el.refInFor) {
+      data += "refInFor:true,";
+    }
+    // pre
+    if (el.pre) {
+      data += "pre:true,";
+    }
+    // record original tag name for components using "is" attribute
+    if (el.component) {
+      data += "tag:\"" + (el.tag) + "\",";
+    }
+    // module data generation functions
+    for (var i = 0; i < state.dataGenFns.length; i++) {
+      data += state.dataGenFns[i](el);
+    }
+    // attributes
+    if (el.attrs) {
+      data += "attrs:" + (genProps(el.attrs)) + ",";
+    }
+    // DOM props
+    if (el.props) {
+      data += "domProps:" + (genProps(el.props)) + ",";
+    }
+    // event handlers
+    if (el.events) {
+      data += (genHandlers(el.events, false)) + ",";
+    }
+    if (el.nativeEvents) {
+      data += (genHandlers(el.nativeEvents, true)) + ",";
+    }
+    // slot target
+    // only for non-scoped slots
+    if (el.slotTarget && !el.slotScope) {
+      data += "slot:" + (el.slotTarget) + ",";
+    }
+    // scoped slots
+    if (el.scopedSlots) {
+      data += (genScopedSlots(el, el.scopedSlots, state)) + ",";
+    }
+    // component v-model
+    if (el.model) {
+      data += "model:{value:" + (el.model.value) + ",callback:" + (el.model.callback) + ",expression:" + (el.model.expression) + "},";
+    }
+    // inline-template
+    if (el.inlineTemplate) {
+      var inlineTemplate = genInlineTemplate(el, state);
+      if (inlineTemplate) {
+        data += inlineTemplate + ",";
+      }
+    }
+    data = data.replace(/,$/, '') + '}';
+    // v-bind dynamic argument wrap
+    // v-bind with dynamic arguments must be applied using the same v-bind object
+    // merge helper so that class/style/mustUseProp attrs are handled correctly.
+    if (el.dynamicAttrs) {
+      data = "_b(" + data + ",\"" + (el.tag) + "\"," + (genProps(el.dynamicAttrs)) + ")";
+    }
+    // v-bind data wrap
+    if (el.wrapData) {
+      data = el.wrapData(data);
+    }
+    // v-on data wrap
+    if (el.wrapListeners) {
+      data = el.wrapListeners(data);
+    }
+    return data
+  }
+
+  function genDirectives (el, state) {
+    var dirs = el.directives;
+    if (!dirs) { return }
+    var res = 'directives:[';
+    var hasRuntime = false;
+    var i, l, dir, needRuntime;
+    for (i = 0, l = dirs.length; i < l; i++) {
+      dir = dirs[i];
+      needRuntime = true;
+      var gen = state.directives[dir.name];
+      if (gen) {
+        // compile-time directive that manipulates AST.
+        // returns true if it also needs a runtime counterpart.
+        needRuntime = !!gen(el, dir, state.warn);
+      }
+      if (needRuntime) {
+        hasRuntime = true;
+        res += "{name:\"" + (dir.name) + "\",rawName:\"" + (dir.rawName) + "\"" + (dir.value ? (",value:(" + (dir.value) + "),expression:" + (JSON.stringify(dir.value))) : '') + (dir.arg ? (",arg:" + (dir.isDynamicArg ? dir.arg : ("\"" + (dir.arg) + "\""))) : '') + (dir.modifiers ? (",modifiers:" + (JSON.stringify(dir.modifiers))) : '') + "},";
+      }
+    }
+    if (hasRuntime) {
+      return res.slice(0, -1) + ']'
+    }
+  }
+
+  function genInlineTemplate (el, state) {
+    var ast = el.children[0];
+    if (el.children.length !== 1 || ast.type !== 1) {
+      state.warn(
+        'Inline-template components must have exactly one child element.',
+        { start: el.start }
+      );
+    }
+    if (ast && ast.type === 1) {
+      var inlineRenderFns = generate(ast, state.options);
+      return ("inlineTemplate:{render:function(){" + (inlineRenderFns.render) + "},staticRenderFns:[" + (inlineRenderFns.staticRenderFns.map(function (code) { return ("function(){" + code + "}"); }).join(',')) + "]}")
+    }
+  }
+
+  function genScopedSlots (
+    el,
+    slots,
+    state
+  ) {
+    // by default scoped slots are considered "stable", this allows child
+    // components with only scoped slots to skip forced updates from parent.
+    // but in some cases we have to bail-out of this optimization
+    // for example if the slot contains dynamic names, has v-if or v-for on them...
+    var needsForceUpdate = el.for || Object.keys(slots).some(function (key) {
+      var slot = slots[key];
+      return (
+        slot.slotTargetDynamic ||
+        slot.if ||
+        slot.for ||
+        containsSlotChild(slot) // is passing down slot from parent which may be dynamic
+      )
+    });
+
+    // #9534: if a component with scoped slots is inside a conditional branch,
+    // it's possible for the same component to be reused but with different
+    // compiled slot content. To avoid that, we generate a unique key based on
+    // the generated code of all the slot contents.
+    var needsKey = !!el.if;
+
+    // OR when it is inside another scoped slot or v-for (the reactivity may be
+    // disconnected due to the intermediate scope variable)
+    // #9438, #9506
+    // TODO: this can be further optimized by properly analyzing in-scope bindings
+    // and skip force updating ones that do not actually use scope variables.
+    if (!needsForceUpdate) {
+      var parent = el.parent;
+      while (parent) {
+        if (
+          (parent.slotScope && parent.slotScope !== emptySlotScopeToken) ||
+          parent.for
+        ) {
+          needsForceUpdate = true;
+          break
+        }
+        if (parent.if) {
+          needsKey = true;
+        }
+        parent = parent.parent;
+      }
+    }
+
+    var generatedSlots = Object.keys(slots)
+      .map(function (key) { return genScopedSlot(slots[key], state); })
+      .join(',');
+
+    return ("scopedSlots:_u([" + generatedSlots + "]" + (needsForceUpdate ? ",null,true" : "") + (!needsForceUpdate && needsKey ? (",null,false," + (hash(generatedSlots))) : "") + ")")
+  }
+
+  function hash(str) {
+    var hash = 5381;
+    var i = str.length;
+    while(i) {
+      hash = (hash * 33) ^ str.charCodeAt(--i);
+    }
+    return hash >>> 0
+  }
+
+  function containsSlotChild (el) {
+    if (el.type === 1) {
+      if (el.tag === 'slot') {
+        return true
+      }
+      return el.children.some(containsSlotChild)
+    }
+    return false
+  }
+
+  function genScopedSlot (
+    el,
+    state
+  ) {
+    var isLegacySyntax = el.attrsMap['slot-scope'];
+    if (el.if && !el.ifProcessed && !isLegacySyntax) {
+      return genIf(el, state, genScopedSlot, "null")
+    }
+    if (el.for && !el.forProcessed) {
+      return genFor(el, state, genScopedSlot)
+    }
+    var slotScope = el.slotScope === emptySlotScopeToken
+      ? ""
+      : String(el.slotScope);
+    var fn = "function(" + slotScope + "){" +
+      "return " + (el.tag === 'template'
+        ? el.if && isLegacySyntax
+          ? ("(" + (el.if) + ")?" + (genChildren(el, state) || 'undefined') + ":undefined")
+          : genChildren(el, state) || 'undefined'
+        : genElement(el, state)) + "}";
+    // reverse proxy v-slot without scope on this.$slots
+    var reverseProxy = slotScope ? "" : ",proxy:true";
+    return ("{key:" + (el.slotTarget || "\"default\"") + ",fn:" + fn + reverseProxy + "}")
+  }
+
+  function genChildren (
+    el,
+    state,
+    checkSkip,
+    altGenElement,
+    altGenNode
+  ) {
+    var children = el.children;
+    if (children.length) {
+      var el$1 = children[0];
+      // optimize single v-for
+      if (children.length === 1 &&
+        el$1.for &&
+        el$1.tag !== 'template' &&
+        el$1.tag !== 'slot'
+      ) {
+        var normalizationType = checkSkip
+          ? state.maybeComponent(el$1) ? ",1" : ",0"
+          : "";
+        return ("" + ((altGenElement || genElement)(el$1, state)) + normalizationType)
+      }
+      var normalizationType$1 = checkSkip
+        ? getNormalizationType(children, state.maybeComponent)
+        : 0;
+      var gen = altGenNode || genNode;
+      return ("[" + (children.map(function (c) { return gen(c, state); }).join(',')) + "]" + (normalizationType$1 ? ("," + normalizationType$1) : ''))
+    }
+  }
+
+  // determine the normalization needed for the children array.
+  // 0: no normalization needed
+  // 1: simple normalization needed (possible 1-level deep nested array)
+  // 2: full normalization needed
+  function getNormalizationType (
+    children,
+    maybeComponent
+  ) {
+    var res = 0;
+    for (var i = 0; i < children.length; i++) {
+      var el = children[i];
+      if (el.type !== 1) {
+        continue
+      }
+      if (needsNormalization(el) ||
+          (el.ifConditions && el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {
+        res = 2;
+        break
+      }
+      if (maybeComponent(el) ||
+          (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {
+        res = 1;
+      }
+    }
+    return res
+  }
+
+  function needsNormalization (el) {
+    return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'
+  }
+
+  function genNode (node, state) {
+    if (node.type === 1) {
+      return genElement(node, state)
+    } else if (node.type === 3 && node.isComment) {
+      return genComment(node)
+    } else {
+      return genText(node)
+    }
+  }
+
+  function genText (text) {
+    return ("_v(" + (text.type === 2
+      ? text.expression // no need for () because already wrapped in _s()
+      : transformSpecialNewlines(JSON.stringify(text.text))) + ")")
+  }
+
+  function genComment (comment) {
+    return ("_e(" + (JSON.stringify(comment.text)) + ")")
+  }
+
+  function genSlot (el, state) {
+    var slotName = el.slotName || '"default"';
+    var children = genChildren(el, state);
+    var res = "_t(" + slotName + (children ? (",function(){return " + children + "}") : '');
+    var attrs = el.attrs || el.dynamicAttrs
+      ? genProps((el.attrs || []).concat(el.dynamicAttrs || []).map(function (attr) { return ({
+          // slot props are camelized
+          name: camelize(attr.name),
+          value: attr.value,
+          dynamic: attr.dynamic
+        }); }))
+      : null;
+    var bind$$1 = el.attrsMap['v-bind'];
+    if ((attrs || bind$$1) && !children) {
+      res += ",null";
+    }
+    if (attrs) {
+      res += "," + attrs;
+    }
+    if (bind$$1) {
+      res += (attrs ? '' : ',null') + "," + bind$$1;
+    }
+    return res + ')'
+  }
+
+  // componentName is el.component, take it as argument to shun flow's pessimistic refinement
+  function genComponent (
+    componentName,
+    el,
+    state
+  ) {
+    var children = el.inlineTemplate ? null : genChildren(el, state, true);
+    return ("_c(" + componentName + "," + (genData$2(el, state)) + (children ? ("," + children) : '') + ")")
+  }
+
+  function genProps (props) {
+    var staticProps = "";
+    var dynamicProps = "";
+    for (var i = 0; i < props.length; i++) {
+      var prop = props[i];
+      var value = transformSpecialNewlines(prop.value);
+      if (prop.dynamic) {
+        dynamicProps += (prop.name) + "," + value + ",";
+      } else {
+        staticProps += "\"" + (prop.name) + "\":" + value + ",";
+      }
+    }
+    staticProps = "{" + (staticProps.slice(0, -1)) + "}";
+    if (dynamicProps) {
+      return ("_d(" + staticProps + ",[" + (dynamicProps.slice(0, -1)) + "])")
+    } else {
+      return staticProps
+    }
+  }
+
+  // #3895, #4268
+  function transformSpecialNewlines (text) {
+    return text
+      .replace(/\u2028/g, '\\u2028')
+      .replace(/\u2029/g, '\\u2029')
+  }
+
+  /*  */
+
+
+
+  // these keywords should not appear inside expressions, but operators like
+  // typeof, instanceof and in are allowed
+  var prohibitedKeywordRE = new RegExp('\\b' + (
+    'do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +
+    'super,throw,while,yield,delete,export,import,return,switch,default,' +
+    'extends,finally,continue,debugger,function,arguments'
+  ).split(',').join('\\b|\\b') + '\\b');
+
+  // these unary operators should not be used as property/method names
+  var unaryOperatorsRE = new RegExp('\\b' + (
+    'delete,typeof,void'
+  ).split(',').join('\\s*\\([^\\)]*\\)|\\b') + '\\s*\\([^\\)]*\\)');
+
+  // strip strings in expressions
+  var stripStringRE = /'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g;
+
+  // detect problematic expressions in a template
+  function detectErrors (ast, warn) {
+    if (ast) {
+      checkNode(ast, warn);
+    }
+  }
+
+  function checkNode (node, warn) {
+    if (node.type === 1) {
+      for (var name in node.attrsMap) {
+        if (dirRE.test(name)) {
+          var value = node.attrsMap[name];
+          if (value) {
+            var range = node.rawAttrsMap[name];
+            if (name === 'v-for') {
+              checkFor(node, ("v-for=\"" + value + "\""), warn, range);
+            } else if (name === 'v-slot' || name[0] === '#') {
+              checkFunctionParameterExpression(value, (name + "=\"" + value + "\""), warn, range);
+            } else if (onRE.test(name)) {
+              checkEvent(value, (name + "=\"" + value + "\""), warn, range);
+            } else {
+              checkExpression(value, (name + "=\"" + value + "\""), warn, range);
+            }
+          }
+        }
+      }
+      if (node.children) {
+        for (var i = 0; i < node.children.length; i++) {
+          checkNode(node.children[i], warn);
+        }
+      }
+    } else if (node.type === 2) {
+      checkExpression(node.expression, node.text, warn, node);
+    }
+  }
+
+  function checkEvent (exp, text, warn, range) {
+    var stripped = exp.replace(stripStringRE, '');
+    var keywordMatch = stripped.match(unaryOperatorsRE);
+    if (keywordMatch && stripped.charAt(keywordMatch.index - 1) !== '$') {
+      warn(
+        "avoid using JavaScript unary operator as property name: " +
+        "\"" + (keywordMatch[0]) + "\" in expression " + (text.trim()),
+        range
+      );
+    }
+    checkExpression(exp, text, warn, range);
+  }
+
+  function checkFor (node, text, warn, range) {
+    checkExpression(node.for || '', text, warn, range);
+    checkIdentifier(node.alias, 'v-for alias', text, warn, range);
+    checkIdentifier(node.iterator1, 'v-for iterator', text, warn, range);
+    checkIdentifier(node.iterator2, 'v-for iterator', text, warn, range);
+  }
+
+  function checkIdentifier (
+    ident,
+    type,
+    text,
+    warn,
+    range
+  ) {
+    if (typeof ident === 'string') {
+      try {
+        new Function(("var " + ident + "=_"));
+      } catch (e) {
+        warn(("invalid " + type + " \"" + ident + "\" in expression: " + (text.trim())), range);
+      }
+    }
+  }
+
+  function checkExpression (exp, text, warn, range) {
+    try {
+      new Function(("return " + exp));
+    } catch (e) {
+      var keywordMatch = exp.replace(stripStringRE, '').match(prohibitedKeywordRE);
+      if (keywordMatch) {
+        warn(
+          "avoid using JavaScript keyword as property name: " +
+          "\"" + (keywordMatch[0]) + "\"\n  Raw expression: " + (text.trim()),
+          range
+        );
+      } else {
+        warn(
+          "invalid expression: " + (e.message) + " in\n\n" +
+          "    " + exp + "\n\n" +
+          "  Raw expression: " + (text.trim()) + "\n",
+          range
+        );
+      }
+    }
+  }
+
+  function checkFunctionParameterExpression (exp, text, warn, range) {
+    try {
+      new Function(exp, '');
+    } catch (e) {
+      warn(
+        "invalid function parameter expression: " + (e.message) + " in\n\n" +
+        "    " + exp + "\n\n" +
+        "  Raw expression: " + (text.trim()) + "\n",
+        range
+      );
+    }
+  }
+
+  /*  */
+
+  var range = 2;
+
+  function generateCodeFrame (
+    source,
+    start,
+    end
+  ) {
+    if ( start === void 0 ) start = 0;
+    if ( end === void 0 ) end = source.length;
+
+    var lines = source.split(/\r?\n/);
+    var count = 0;
+    var res = [];
+    for (var i = 0; i < lines.length; i++) {
+      count += lines[i].length + 1;
+      if (count >= start) {
+        for (var j = i - range; j <= i + range || end > count; j++) {
+          if (j < 0 || j >= lines.length) { continue }
+          res.push(("" + (j + 1) + (repeat$1(" ", 3 - String(j + 1).length)) + "|  " + (lines[j])));
+          var lineLength = lines[j].length;
+          if (j === i) {
+            // push underline
+            var pad = start - (count - lineLength) + 1;
+            var length = end > count ? lineLength - pad : end - start;
+            res.push("   |  " + repeat$1(" ", pad) + repeat$1("^", length));
+          } else if (j > i) {
+            if (end > count) {
+              var length$1 = Math.min(end - count, lineLength);
+              res.push("   |  " + repeat$1("^", length$1));
+            }
+            count += lineLength + 1;
+          }
+        }
+        break
+      }
+    }
+    return res.join('\n')
+  }
+
+  function repeat$1 (str, n) {
+    var result = '';
+    if (n > 0) {
+      while (true) { // eslint-disable-line
+        if (n & 1) { result += str; }
+        n >>>= 1;
+        if (n <= 0) { break }
+        str += str;
+      }
+    }
+    return result
+  }
+
+  /*  */
+
+
+
+  function createFunction (code, errors) {
+    try {
+      return new Function(code)
+    } catch (err) {
+      errors.push({ err: err, code: code });
+      return noop
+    }
+  }
+
+  function createCompileToFunctionFn (compile) {
+    var cache = Object.create(null);
+
+    return function compileToFunctions (
+      template,
+      options,
+      vm
+    ) {
+      options = extend({}, options);
+      var warn$$1 = options.warn || warn;
+      delete options.warn;
+
+      /* istanbul ignore if */
+      {
+        // detect possible CSP restriction
+        try {
+          new Function('return 1');
+        } catch (e) {
+          if (e.toString().match(/unsafe-eval|CSP/)) {
+            warn$$1(
+              'It seems you are using the standalone build of Vue.js in an ' +
+              'environment with Content Security Policy that prohibits unsafe-eval. ' +
+              'The template compiler cannot work in this environment. Consider ' +
+              'relaxing the policy to allow unsafe-eval or pre-compiling your ' +
+              'templates into render functions.'
+            );
+          }
+        }
+      }
+
+      // check cache
+      var key = options.delimiters
+        ? String(options.delimiters) + template
+        : template;
+      if (cache[key]) {
+        return cache[key]
+      }
+
+      // compile
+      var compiled = compile(template, options);
+
+      // check compilation errors/tips
+      {
+        if (compiled.errors && compiled.errors.length) {
+          if (options.outputSourceRange) {
+            compiled.errors.forEach(function (e) {
+              warn$$1(
+                "Error compiling template:\n\n" + (e.msg) + "\n\n" +
+                generateCodeFrame(template, e.start, e.end),
+                vm
+              );
+            });
+          } else {
+            warn$$1(
+              "Error compiling template:\n\n" + template + "\n\n" +
+              compiled.errors.map(function (e) { return ("- " + e); }).join('\n') + '\n',
+              vm
+            );
+          }
+        }
+        if (compiled.tips && compiled.tips.length) {
+          if (options.outputSourceRange) {
+            compiled.tips.forEach(function (e) { return tip(e.msg, vm); });
+          } else {
+            compiled.tips.forEach(function (msg) { return tip(msg, vm); });
+          }
+        }
+      }
+
+      // turn code into functions
+      var res = {};
+      var fnGenErrors = [];
+      res.render = createFunction(compiled.render, fnGenErrors);
+      res.staticRenderFns = compiled.staticRenderFns.map(function (code) {
+        return createFunction(code, fnGenErrors)
+      });
+
+      // check function generation errors.
+      // this should only happen if there is a bug in the compiler itself.
+      // mostly for codegen development use
+      /* istanbul ignore if */
+      {
+        if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {
+          warn$$1(
+            "Failed to generate render function:\n\n" +
+            fnGenErrors.map(function (ref) {
+              var err = ref.err;
+              var code = ref.code;
+
+              return ((err.toString()) + " in\n\n" + code + "\n");
+          }).join('\n'),
+            vm
+          );
+        }
+      }
+
+      return (cache[key] = res)
+    }
+  }
+
+  /*  */
+
+  function createCompilerCreator (baseCompile) {
+    return function createCompiler (baseOptions) {
+      function compile (
+        template,
+        options
+      ) {
+        var finalOptions = Object.create(baseOptions);
+        var errors = [];
+        var tips = [];
+
+        var warn = function (msg, range, tip) {
+          (tip ? tips : errors).push(msg);
+        };
+
+        if (options) {
+          if (options.outputSourceRange) {
+            // $flow-disable-line
+            var leadingSpaceLength = template.match(/^\s*/)[0].length;
+
+            warn = function (msg, range, tip) {
+              var data = { msg: msg };
+              if (range) {
+                if (range.start != null) {
+                  data.start = range.start + leadingSpaceLength;
+                }
+                if (range.end != null) {
+                  data.end = range.end + leadingSpaceLength;
+                }
+              }
+              (tip ? tips : errors).push(data);
+            };
+          }
+          // merge custom modules
+          if (options.modules) {
+            finalOptions.modules =
+              (baseOptions.modules || []).concat(options.modules);
+          }
+          // merge custom directives
+          if (options.directives) {
+            finalOptions.directives = extend(
+              Object.create(baseOptions.directives || null),
+              options.directives
+            );
+          }
+          // copy other options
+          for (var key in options) {
+            if (key !== 'modules' && key !== 'directives') {
+              finalOptions[key] = options[key];
+            }
+          }
+        }
+
+        finalOptions.warn = warn;
+
+        var compiled = baseCompile(template.trim(), finalOptions);
+        {
+          detectErrors(compiled.ast, warn);
+        }
+        compiled.errors = errors;
+        compiled.tips = tips;
+        return compiled
+      }
+
+      return {
+        compile: compile,
+        compileToFunctions: createCompileToFunctionFn(compile)
+      }
+    }
+  }
+
+  /*  */
+
+  // `createCompilerCreator` allows creating compilers that use alternative
+  // parser/optimizer/codegen, e.g the SSR optimizing compiler.
+  // Here we just export a default compiler using the default parts.
+  var createCompiler = createCompilerCreator(function baseCompile (
+    template,
+    options
+  ) {
+    var ast = parse(template.trim(), options);
+    if (options.optimize !== false) {
+      optimize(ast, options);
+    }
+    var code = generate(ast, options);
+    return {
+      ast: ast,
+      render: code.render,
+      staticRenderFns: code.staticRenderFns
+    }
+  });
+
+  /*  */
+
+  var ref$1 = createCompiler(baseOptions);
+  var compile = ref$1.compile;
+  var compileToFunctions = ref$1.compileToFunctions;
+
+  /*  */
+
+  // check whether current browser encodes a char inside attribute values
+  var div;
+  function getShouldDecode (href) {
+    div = div || document.createElement('div');
+    div.innerHTML = href ? "<a href=\"\n\"/>" : "<div a=\"\n\"/>";
+    return div.innerHTML.indexOf('&#10;') > 0
+  }
+
+  // #3663: IE encodes newlines inside attribute values while other browsers don't
+  var shouldDecodeNewlines = inBrowser ? getShouldDecode(false) : false;
+  // #6828: chrome encodes content in a[href]
+  var shouldDecodeNewlinesForHref = inBrowser ? getShouldDecode(true) : false;
+
+  /*  */
+
+  var idToTemplate = cached(function (id) {
+    var el = query(id);
+    return el && el.innerHTML
+  });
+
+  var mount = Vue.prototype.$mount;
+  Vue.prototype.$mount = function (
+    el,
+    hydrating
+  ) {
+    el = el && query(el);
+
+    /* istanbul ignore if */
+    if (el === document.body || el === document.documentElement) {
+      warn(
+        "Do not mount Vue to <html> or <body> - mount to normal elements instead."
+      );
+      return this
+    }
+
+    var options = this.$options;
+    // resolve template/el and convert to render function
+    if (!options.render) {
+      var template = options.template;
+      if (template) {
+        if (typeof template === 'string') {
+          if (template.charAt(0) === '#') {
+            template = idToTemplate(template);
+            /* istanbul ignore if */
+            if (!template) {
+              warn(
+                ("Template element not found or is empty: " + (options.template)),
+                this
+              );
+            }
+          }
+        } else if (template.nodeType) {
+          template = template.innerHTML;
+        } else {
+          {
+            warn('invalid template option:' + template, this);
+          }
+          return this
+        }
+      } else if (el) {
+        template = getOuterHTML(el);
+      }
+      if (template) {
+        /* istanbul ignore if */
+        if (config.performance && mark) {
+          mark('compile');
+        }
+
+        var ref = compileToFunctions(template, {
+          outputSourceRange: "development" !== 'production',
+          shouldDecodeNewlines: shouldDecodeNewlines,
+          shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref,
+          delimiters: options.delimiters,
+          comments: options.comments
+        }, this);
+        var render = ref.render;
+        var staticRenderFns = ref.staticRenderFns;
+        options.render = render;
+        options.staticRenderFns = staticRenderFns;
+
+        /* istanbul ignore if */
+        if (config.performance && mark) {
+          mark('compile end');
+          measure(("vue " + (this._name) + " compile"), 'compile', 'compile end');
+        }
+      }
+    }
+    return mount.call(this, el, hydrating)
+  };
+
+  /**
+   * Get outerHTML of elements, taking care
+   * of SVG elements in IE as well.
+   */
+  function getOuterHTML (el) {
+    if (el.outerHTML) {
+      return el.outerHTML
+    } else {
+      var container = document.createElement('div');
+      container.appendChild(el.cloneNode(true));
+      return container.innerHTML
+    }
+  }
+
+  Vue.compile = compileToFunctions;
+
+  return Vue;
+
+}));
diff --git a/js/vue@3.2.36.js b/js/vue@3.2.36.js
new file mode 100644
index 0000000..faa2b30
--- /dev/null
+++ b/js/vue@3.2.36.js
@@ -0,0 +1,15929 @@
+var Vue = (function (exports) {
+  'use strict';
+
+  /**
+   * Make a map and return a function for checking if a key
+   * is in that map.
+   * IMPORTANT: all calls of this function must be prefixed with
+   * \/\*#\_\_PURE\_\_\*\/
+   * So that rollup can tree-shake them if necessary.
+   */
+  function makeMap(str, expectsLowerCase) {
+      const map = Object.create(null);
+      const list = str.split(',');
+      for (let i = 0; i < list.length; i++) {
+          map[list[i]] = true;
+      }
+      return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val];
+  }
+
+  /**
+   * dev only flag -> name mapping
+   */
+  const PatchFlagNames = {
+      [1 /* TEXT */]: `TEXT`,
+      [2 /* CLASS */]: `CLASS`,
+      [4 /* STYLE */]: `STYLE`,
+      [8 /* PROPS */]: `PROPS`,
+      [16 /* FULL_PROPS */]: `FULL_PROPS`,
+      [32 /* HYDRATE_EVENTS */]: `HYDRATE_EVENTS`,
+      [64 /* STABLE_FRAGMENT */]: `STABLE_FRAGMENT`,
+      [128 /* KEYED_FRAGMENT */]: `KEYED_FRAGMENT`,
+      [256 /* UNKEYED_FRAGMENT */]: `UNKEYED_FRAGMENT`,
+      [512 /* NEED_PATCH */]: `NEED_PATCH`,
+      [1024 /* DYNAMIC_SLOTS */]: `DYNAMIC_SLOTS`,
+      [2048 /* DEV_ROOT_FRAGMENT */]: `DEV_ROOT_FRAGMENT`,
+      [-1 /* HOISTED */]: `HOISTED`,
+      [-2 /* BAIL */]: `BAIL`
+  };
+
+  /**
+   * Dev only
+   */
+  const slotFlagsText = {
+      [1 /* STABLE */]: 'STABLE',
+      [2 /* DYNAMIC */]: 'DYNAMIC',
+      [3 /* FORWARDED */]: 'FORWARDED'
+  };
+
+  const GLOBALS_WHITE_LISTED = 'Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,' +
+      'decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,' +
+      'Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt';
+  const isGloballyWhitelisted = /*#__PURE__*/ makeMap(GLOBALS_WHITE_LISTED);
+
+  const range = 2;
+  function generateCodeFrame(source, start = 0, end = source.length) {
+      // Split the content into individual lines but capture the newline sequence
+      // that separated each line. This is important because the actual sequence is
+      // needed to properly take into account the full line length for offset
+      // comparison
+      let lines = source.split(/(\r?\n)/);
+      // Separate the lines and newline sequences into separate arrays for easier referencing
+      const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);
+      lines = lines.filter((_, idx) => idx % 2 === 0);
+      let count = 0;
+      const res = [];
+      for (let i = 0; i < lines.length; i++) {
+          count +=
+              lines[i].length +
+                  ((newlineSequences[i] && newlineSequences[i].length) || 0);
+          if (count >= start) {
+              for (let j = i - range; j <= i + range || end > count; j++) {
+                  if (j < 0 || j >= lines.length)
+                      continue;
+                  const line = j + 1;
+                  res.push(`${line}${' '.repeat(Math.max(3 - String(line).length, 0))}|  ${lines[j]}`);
+                  const lineLength = lines[j].length;
+                  const newLineSeqLength = (newlineSequences[j] && newlineSequences[j].length) || 0;
+                  if (j === i) {
+                      // push underline
+                      const pad = start - (count - (lineLength + newLineSeqLength));
+                      const length = Math.max(1, end > count ? lineLength - pad : end - start);
+                      res.push(`   |  ` + ' '.repeat(pad) + '^'.repeat(length));
+                  }
+                  else if (j > i) {
+                      if (end > count) {
+                          const length = Math.max(Math.min(end - count, lineLength), 1);
+                          res.push(`   |  ` + '^'.repeat(length));
+                      }
+                      count += lineLength + newLineSeqLength;
+                  }
+              }
+              break;
+          }
+      }
+      return res.join('\n');
+  }
+
+  /**
+   * On the client we only need to offer special cases for boolean attributes that
+   * have different names from their corresponding dom properties:
+   * - itemscope -> N/A
+   * - allowfullscreen -> allowFullscreen
+   * - formnovalidate -> formNoValidate
+   * - ismap -> isMap
+   * - nomodule -> noModule
+   * - novalidate -> noValidate
+   * - readonly -> readOnly
+   */
+  const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
+  const isSpecialBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs);
+  /**
+   * Boolean attributes should be included if the value is truthy or ''.
+   * e.g. `<select multiple>` compiles to `{ multiple: '' }`
+   */
+  function includeBooleanAttr(value) {
+      return !!value || value === '';
+  }
+
+  function normalizeStyle(value) {
+      if (isArray(value)) {
+          const res = {};
+          for (let i = 0; i < value.length; i++) {
+              const item = value[i];
+              const normalized = isString(item)
+                  ? parseStringStyle(item)
+                  : normalizeStyle(item);
+              if (normalized) {
+                  for (const key in normalized) {
+                      res[key] = normalized[key];
+                  }
+              }
+          }
+          return res;
+      }
+      else if (isString(value)) {
+          return value;
+      }
+      else if (isObject(value)) {
+          return value;
+      }
+  }
+  const listDelimiterRE = /;(?![^(]*\))/g;
+  const propertyDelimiterRE = /:(.+)/;
+  function parseStringStyle(cssText) {
+      const ret = {};
+      cssText.split(listDelimiterRE).forEach(item => {
+          if (item) {
+              const tmp = item.split(propertyDelimiterRE);
+              tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());
+          }
+      });
+      return ret;
+  }
+  function normalizeClass(value) {
+      let res = '';
+      if (isString(value)) {
+          res = value;
+      }
+      else if (isArray(value)) {
+          for (let i = 0; i < value.length; i++) {
+              const normalized = normalizeClass(value[i]);
+              if (normalized) {
+                  res += normalized + ' ';
+              }
+          }
+      }
+      else if (isObject(value)) {
+          for (const name in value) {
+              if (value[name]) {
+                  res += name + ' ';
+              }
+          }
+      }
+      return res.trim();
+  }
+  function normalizeProps(props) {
+      if (!props)
+          return null;
+      let { class: klass, style } = props;
+      if (klass && !isString(klass)) {
+          props.class = normalizeClass(klass);
+      }
+      if (style) {
+          props.style = normalizeStyle(style);
+      }
+      return props;
+  }
+
+  // These tag configs are shared between compiler-dom and runtime-dom, so they
+  // https://developer.mozilla.org/en-US/docs/Web/HTML/Element
+  const HTML_TAGS = 'html,body,base,head,link,meta,style,title,address,article,aside,footer,' +
+      'header,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,' +
+      'figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,' +
+      'data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,' +
+      'time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,' +
+      'canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,' +
+      'th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,' +
+      'option,output,progress,select,textarea,details,dialog,menu,' +
+      'summary,template,blockquote,iframe,tfoot';
+  // https://developer.mozilla.org/en-US/docs/Web/SVG/Element
+  const SVG_TAGS = 'svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,' +
+      'defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,' +
+      'feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,' +
+      'feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,' +
+      'feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,' +
+      'fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,' +
+      'foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,' +
+      'mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,' +
+      'polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,' +
+      'text,textPath,title,tspan,unknown,use,view';
+  const VOID_TAGS = 'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr';
+  /**
+   * Compiler only.
+   * Do NOT use in runtime code paths unless behind `true` flag.
+   */
+  const isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS);
+  /**
+   * Compiler only.
+   * Do NOT use in runtime code paths unless behind `true` flag.
+   */
+  const isSVGTag = /*#__PURE__*/ makeMap(SVG_TAGS);
+  /**
+   * Compiler only.
+   * Do NOT use in runtime code paths unless behind `true` flag.
+   */
+  const isVoidTag = /*#__PURE__*/ makeMap(VOID_TAGS);
+
+  function looseCompareArrays(a, b) {
+      if (a.length !== b.length)
+          return false;
+      let equal = true;
+      for (let i = 0; equal && i < a.length; i++) {
+          equal = looseEqual(a[i], b[i]);
+      }
+      return equal;
+  }
+  function looseEqual(a, b) {
+      if (a === b)
+          return true;
+      let aValidType = isDate(a);
+      let bValidType = isDate(b);
+      if (aValidType || bValidType) {
+          return aValidType && bValidType ? a.getTime() === b.getTime() : false;
+      }
+      aValidType = isSymbol(a);
+      bValidType = isSymbol(b);
+      if (aValidType || bValidType) {
+          return a === b;
+      }
+      aValidType = isArray(a);
+      bValidType = isArray(b);
+      if (aValidType || bValidType) {
+          return aValidType && bValidType ? looseCompareArrays(a, b) : false;
+      }
+      aValidType = isObject(a);
+      bValidType = isObject(b);
+      if (aValidType || bValidType) {
+          /* istanbul ignore if: this if will probably never be called */
+          if (!aValidType || !bValidType) {
+              return false;
+          }
+          const aKeysCount = Object.keys(a).length;
+          const bKeysCount = Object.keys(b).length;
+          if (aKeysCount !== bKeysCount) {
+              return false;
+          }
+          for (const key in a) {
+              const aHasKey = a.hasOwnProperty(key);
+              const bHasKey = b.hasOwnProperty(key);
+              if ((aHasKey && !bHasKey) ||
+                  (!aHasKey && bHasKey) ||
+                  !looseEqual(a[key], b[key])) {
+                  return false;
+              }
+          }
+      }
+      return String(a) === String(b);
+  }
+  function looseIndexOf(arr, val) {
+      return arr.findIndex(item => looseEqual(item, val));
+  }
+
+  /**
+   * For converting {{ interpolation }} values to displayed strings.
+   * @private
+   */
+  const toDisplayString = (val) => {
+      return isString(val)
+          ? val
+          : val == null
+              ? ''
+              : isArray(val) ||
+                  (isObject(val) &&
+                      (val.toString === objectToString || !isFunction(val.toString)))
+                  ? JSON.stringify(val, replacer, 2)
+                  : String(val);
+  };
+  const replacer = (_key, val) => {
+      // can't use isRef here since @vue/shared has no deps
+      if (val && val.__v_isRef) {
+          return replacer(_key, val.value);
+      }
+      else if (isMap(val)) {
+          return {
+              [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val]) => {
+                  entries[`${key} =>`] = val;
+                  return entries;
+              }, {})
+          };
+      }
+      else if (isSet(val)) {
+          return {
+              [`Set(${val.size})`]: [...val.values()]
+          };
+      }
+      else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {
+          return String(val);
+      }
+      return val;
+  };
+
+  const EMPTY_OBJ = Object.freeze({})
+      ;
+  const EMPTY_ARR = Object.freeze([]) ;
+  const NOOP = () => { };
+  /**
+   * Always return false.
+   */
+  const NO = () => false;
+  const onRE = /^on[^a-z]/;
+  const isOn = (key) => onRE.test(key);
+  const isModelListener = (key) => key.startsWith('onUpdate:');
+  const extend = Object.assign;
+  const remove = (arr, el) => {
+      const i = arr.indexOf(el);
+      if (i > -1) {
+          arr.splice(i, 1);
+      }
+  };
+  const hasOwnProperty = Object.prototype.hasOwnProperty;
+  const hasOwn = (val, key) => hasOwnProperty.call(val, key);
+  const isArray = Array.isArray;
+  const isMap = (val) => toTypeString(val) === '[object Map]';
+  const isSet = (val) => toTypeString(val) === '[object Set]';
+  const isDate = (val) => toTypeString(val) === '[object Date]';
+  const isFunction = (val) => typeof val === 'function';
+  const isString = (val) => typeof val === 'string';
+  const isSymbol = (val) => typeof val === 'symbol';
+  const isObject = (val) => val !== null && typeof val === 'object';
+  const isPromise = (val) => {
+      return isObject(val) && isFunction(val.then) && isFunction(val.catch);
+  };
+  const objectToString = Object.prototype.toString;
+  const toTypeString = (value) => objectToString.call(value);
+  const toRawType = (value) => {
+      // extract "RawType" from strings like "[object RawType]"
+      return toTypeString(value).slice(8, -1);
+  };
+  const isPlainObject = (val) => toTypeString(val) === '[object Object]';
+  const isIntegerKey = (key) => isString(key) &&
+      key !== 'NaN' &&
+      key[0] !== '-' &&
+      '' + parseInt(key, 10) === key;
+  const isReservedProp = /*#__PURE__*/ makeMap(
+  // the leading comma is intentional so empty string "" is also included
+  ',key,ref,ref_for,ref_key,' +
+      'onVnodeBeforeMount,onVnodeMounted,' +
+      'onVnodeBeforeUpdate,onVnodeUpdated,' +
+      'onVnodeBeforeUnmount,onVnodeUnmounted');
+  const isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');
+  const cacheStringFunction = (fn) => {
+      const cache = Object.create(null);
+      return ((str) => {
+          const hit = cache[str];
+          return hit || (cache[str] = fn(str));
+      });
+  };
+  const camelizeRE = /-(\w)/g;
+  /**
+   * @private
+   */
+  const camelize = cacheStringFunction((str) => {
+      return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : ''));
+  });
+  const hyphenateRE = /\B([A-Z])/g;
+  /**
+   * @private
+   */
+  const hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, '-$1').toLowerCase());
+  /**
+   * @private
+   */
+  const capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));
+  /**
+   * @private
+   */
+  const toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);
+  // compare whether a value has changed, accounting for NaN.
+  const hasChanged = (value, oldValue) => !Object.is(value, oldValue);
+  const invokeArrayFns = (fns, arg) => {
+      for (let i = 0; i < fns.length; i++) {
+          fns[i](arg);
+      }
+  };
+  const def = (obj, key, value) => {
+      Object.defineProperty(obj, key, {
+          configurable: true,
+          enumerable: false,
+          value
+      });
+  };
+  const toNumber = (val) => {
+      const n = parseFloat(val);
+      return isNaN(n) ? val : n;
+  };
+  let _globalThis;
+  const getGlobalThis = () => {
+      return (_globalThis ||
+          (_globalThis =
+              typeof globalThis !== 'undefined'
+                  ? globalThis
+                  : typeof self !== 'undefined'
+                      ? self
+                      : typeof window !== 'undefined'
+                          ? window
+                          : typeof global !== 'undefined'
+                              ? global
+                              : {}));
+  };
+
+  function warn(msg, ...args) {
+      console.warn(`[Vue warn] ${msg}`, ...args);
+  }
+
+  let activeEffectScope;
+  class EffectScope {
+      constructor(detached = false) {
+          /**
+           * @internal
+           */
+          this.active = true;
+          /**
+           * @internal
+           */
+          this.effects = [];
+          /**
+           * @internal
+           */
+          this.cleanups = [];
+          if (!detached && activeEffectScope) {
+              this.parent = activeEffectScope;
+              this.index =
+                  (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;
+          }
+      }
+      run(fn) {
+          if (this.active) {
+              const currentEffectScope = activeEffectScope;
+              try {
+                  activeEffectScope = this;
+                  return fn();
+              }
+              finally {
+                  activeEffectScope = currentEffectScope;
+              }
+          }
+          else {
+              warn(`cannot run an inactive effect scope.`);
+          }
+      }
+      /**
+       * This should only be called on non-detached scopes
+       * @internal
+       */
+      on() {
+          activeEffectScope = this;
+      }
+      /**
+       * This should only be called on non-detached scopes
+       * @internal
+       */
+      off() {
+          activeEffectScope = this.parent;
+      }
+      stop(fromParent) {
+          if (this.active) {
+              let i, l;
+              for (i = 0, l = this.effects.length; i < l; i++) {
+                  this.effects[i].stop();
+              }
+              for (i = 0, l = this.cleanups.length; i < l; i++) {
+                  this.cleanups[i]();
+              }
+              if (this.scopes) {
+                  for (i = 0, l = this.scopes.length; i < l; i++) {
+                      this.scopes[i].stop(true);
+                  }
+              }
+              // nested scope, dereference from parent to avoid memory leaks
+              if (this.parent && !fromParent) {
+                  // optimized O(1) removal
+                  const last = this.parent.scopes.pop();
+                  if (last && last !== this) {
+                      this.parent.scopes[this.index] = last;
+                      last.index = this.index;
+                  }
+              }
+              this.active = false;
+          }
+      }
+  }
+  function effectScope(detached) {
+      return new EffectScope(detached);
+  }
+  function recordEffectScope(effect, scope = activeEffectScope) {
+      if (scope && scope.active) {
+          scope.effects.push(effect);
+      }
+  }
+  function getCurrentScope() {
+      return activeEffectScope;
+  }
+  function onScopeDispose(fn) {
+      if (activeEffectScope) {
+          activeEffectScope.cleanups.push(fn);
+      }
+      else {
+          warn(`onScopeDispose() is called when there is no active effect scope` +
+              ` to be associated with.`);
+      }
+  }
+
+  const createDep = (effects) => {
+      const dep = new Set(effects);
+      dep.w = 0;
+      dep.n = 0;
+      return dep;
+  };
+  const wasTracked = (dep) => (dep.w & trackOpBit) > 0;
+  const newTracked = (dep) => (dep.n & trackOpBit) > 0;
+  const initDepMarkers = ({ deps }) => {
+      if (deps.length) {
+          for (let i = 0; i < deps.length; i++) {
+              deps[i].w |= trackOpBit; // set was tracked
+          }
+      }
+  };
+  const finalizeDepMarkers = (effect) => {
+      const { deps } = effect;
+      if (deps.length) {
+          let ptr = 0;
+          for (let i = 0; i < deps.length; i++) {
+              const dep = deps[i];
+              if (wasTracked(dep) && !newTracked(dep)) {
+                  dep.delete(effect);
+              }
+              else {
+                  deps[ptr++] = dep;
+              }
+              // clear bits
+              dep.w &= ~trackOpBit;
+              dep.n &= ~trackOpBit;
+          }
+          deps.length = ptr;
+      }
+  };
+
+  const targetMap = new WeakMap();
+  // The number of effects currently being tracked recursively.
+  let effectTrackDepth = 0;
+  let trackOpBit = 1;
+  /**
+   * The bitwise track markers support at most 30 levels of recursion.
+   * This value is chosen to enable modern JS engines to use a SMI on all platforms.
+   * When recursion depth is greater, fall back to using a full cleanup.
+   */
+  const maxMarkerBits = 30;
+  let activeEffect;
+  const ITERATE_KEY = Symbol('iterate' );
+  const MAP_KEY_ITERATE_KEY = Symbol('Map key iterate' );
+  class ReactiveEffect {
+      constructor(fn, scheduler = null, scope) {
+          this.fn = fn;
+          this.scheduler = scheduler;
+          this.active = true;
+          this.deps = [];
+          this.parent = undefined;
+          recordEffectScope(this, scope);
+      }
+      run() {
+          if (!this.active) {
+              return this.fn();
+          }
+          let parent = activeEffect;
+          let lastShouldTrack = shouldTrack;
+          while (parent) {
+              if (parent === this) {
+                  return;
+              }
+              parent = parent.parent;
+          }
+          try {
+              this.parent = activeEffect;
+              activeEffect = this;
+              shouldTrack = true;
+              trackOpBit = 1 << ++effectTrackDepth;
+              if (effectTrackDepth <= maxMarkerBits) {
+                  initDepMarkers(this);
+              }
+              else {
+                  cleanupEffect(this);
+              }
+              return this.fn();
+          }
+          finally {
+              if (effectTrackDepth <= maxMarkerBits) {
+                  finalizeDepMarkers(this);
+              }
+              trackOpBit = 1 << --effectTrackDepth;
+              activeEffect = this.parent;
+              shouldTrack = lastShouldTrack;
+              this.parent = undefined;
+              if (this.deferStop) {
+                  this.stop();
+              }
+          }
+      }
+      stop() {
+          // stopped while running itself - defer the cleanup
+          if (activeEffect === this) {
+              this.deferStop = true;
+          }
+          else if (this.active) {
+              cleanupEffect(this);
+              if (this.onStop) {
+                  this.onStop();
+              }
+              this.active = false;
+          }
+      }
+  }
+  function cleanupEffect(effect) {
+      const { deps } = effect;
+      if (deps.length) {
+          for (let i = 0; i < deps.length; i++) {
+              deps[i].delete(effect);
+          }
+          deps.length = 0;
+      }
+  }
+  function effect(fn, options) {
+      if (fn.effect) {
+          fn = fn.effect.fn;
+      }
+      const _effect = new ReactiveEffect(fn);
+      if (options) {
+          extend(_effect, options);
+          if (options.scope)
+              recordEffectScope(_effect, options.scope);
+      }
+      if (!options || !options.lazy) {
+          _effect.run();
+      }
+      const runner = _effect.run.bind(_effect);
+      runner.effect = _effect;
+      return runner;
+  }
+  function stop(runner) {
+      runner.effect.stop();
+  }
+  let shouldTrack = true;
+  const trackStack = [];
+  function pauseTracking() {
+      trackStack.push(shouldTrack);
+      shouldTrack = false;
+  }
+  function resetTracking() {
+      const last = trackStack.pop();
+      shouldTrack = last === undefined ? true : last;
+  }
+  function track(target, type, key) {
+      if (shouldTrack && activeEffect) {
+          let depsMap = targetMap.get(target);
+          if (!depsMap) {
+              targetMap.set(target, (depsMap = new Map()));
+          }
+          let dep = depsMap.get(key);
+          if (!dep) {
+              depsMap.set(key, (dep = createDep()));
+          }
+          const eventInfo = { effect: activeEffect, target, type, key }
+              ;
+          trackEffects(dep, eventInfo);
+      }
+  }
+  function trackEffects(dep, debuggerEventExtraInfo) {
+      let shouldTrack = false;
+      if (effectTrackDepth <= maxMarkerBits) {
+          if (!newTracked(dep)) {
+              dep.n |= trackOpBit; // set newly tracked
+              shouldTrack = !wasTracked(dep);
+          }
+      }
+      else {
+          // Full cleanup mode.
+          shouldTrack = !dep.has(activeEffect);
+      }
+      if (shouldTrack) {
+          dep.add(activeEffect);
+          activeEffect.deps.push(dep);
+          if (activeEffect.onTrack) {
+              activeEffect.onTrack(Object.assign({ effect: activeEffect }, debuggerEventExtraInfo));
+          }
+      }
+  }
+  function trigger(target, type, key, newValue, oldValue, oldTarget) {
+      const depsMap = targetMap.get(target);
+      if (!depsMap) {
+          // never been tracked
+          return;
+      }
+      let deps = [];
+      if (type === "clear" /* CLEAR */) {
+          // collection being cleared
+          // trigger all effects for target
+          deps = [...depsMap.values()];
+      }
+      else if (key === 'length' && isArray(target)) {
+          depsMap.forEach((dep, key) => {
+              if (key === 'length' || key >= newValue) {
+                  deps.push(dep);
+              }
+          });
+      }
+      else {
+          // schedule runs for SET | ADD | DELETE
+          if (key !== void 0) {
+              deps.push(depsMap.get(key));
+          }
+          // also run for iteration key on ADD | DELETE | Map.SET
+          switch (type) {
+              case "add" /* ADD */:
+                  if (!isArray(target)) {
+                      deps.push(depsMap.get(ITERATE_KEY));
+                      if (isMap(target)) {
+                          deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));
+                      }
+                  }
+                  else if (isIntegerKey(key)) {
+                      // new index added to array -> length changes
+                      deps.push(depsMap.get('length'));
+                  }
+                  break;
+              case "delete" /* DELETE */:
+                  if (!isArray(target)) {
+                      deps.push(depsMap.get(ITERATE_KEY));
+                      if (isMap(target)) {
+                          deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));
+                      }
+                  }
+                  break;
+              case "set" /* SET */:
+                  if (isMap(target)) {
+                      deps.push(depsMap.get(ITERATE_KEY));
+                  }
+                  break;
+          }
+      }
+      const eventInfo = { target, type, key, newValue, oldValue, oldTarget }
+          ;
+      if (deps.length === 1) {
+          if (deps[0]) {
+              {
+                  triggerEffects(deps[0], eventInfo);
+              }
+          }
+      }
+      else {
+          const effects = [];
+          for (const dep of deps) {
+              if (dep) {
+                  effects.push(...dep);
+              }
+          }
+          {
+              triggerEffects(createDep(effects), eventInfo);
+          }
+      }
+  }
+  function triggerEffects(dep, debuggerEventExtraInfo) {
+      // spread into array for stabilization
+      const effects = isArray(dep) ? dep : [...dep];
+      for (const effect of effects) {
+          if (effect.computed) {
+              triggerEffect(effect, debuggerEventExtraInfo);
+          }
+      }
+      for (const effect of effects) {
+          if (!effect.computed) {
+              triggerEffect(effect, debuggerEventExtraInfo);
+          }
+      }
+  }
+  function triggerEffect(effect, debuggerEventExtraInfo) {
+      if (effect !== activeEffect || effect.allowRecurse) {
+          if (effect.onTrigger) {
+              effect.onTrigger(extend({ effect }, debuggerEventExtraInfo));
+          }
+          if (effect.scheduler) {
+              effect.scheduler();
+          }
+          else {
+              effect.run();
+          }
+      }
+  }
+
+  const isNonTrackableKeys = /*#__PURE__*/ makeMap(`__proto__,__v_isRef,__isVue`);
+  const builtInSymbols = new Set(
+  /*#__PURE__*/
+  Object.getOwnPropertyNames(Symbol)
+      // ios10.x Object.getOwnPropertyNames(Symbol) can enumerate 'arguments' and 'caller'
+      // but accessing them on Symbol leads to TypeError because Symbol is a strict mode
+      // function
+      .filter(key => key !== 'arguments' && key !== 'caller')
+      .map(key => Symbol[key])
+      .filter(isSymbol));
+  const get = /*#__PURE__*/ createGetter();
+  const shallowGet = /*#__PURE__*/ createGetter(false, true);
+  const readonlyGet = /*#__PURE__*/ createGetter(true);
+  const shallowReadonlyGet = /*#__PURE__*/ createGetter(true, true);
+  const arrayInstrumentations = /*#__PURE__*/ createArrayInstrumentations();
+  function createArrayInstrumentations() {
+      const instrumentations = {};
+      ['includes', 'indexOf', 'lastIndexOf'].forEach(key => {
+          instrumentations[key] = function (...args) {
+              const arr = toRaw(this);
+              for (let i = 0, l = this.length; i < l; i++) {
+                  track(arr, "get" /* GET */, i + '');
+              }
+              // we run the method using the original args first (which may be reactive)
+              const res = arr[key](...args);
+              if (res === -1 || res === false) {
+                  // if that didn't work, run it again using raw values.
+                  return arr[key](...args.map(toRaw));
+              }
+              else {
+                  return res;
+              }
+          };
+      });
+      ['push', 'pop', 'shift', 'unshift', 'splice'].forEach(key => {
+          instrumentations[key] = function (...args) {
+              pauseTracking();
+              const res = toRaw(this)[key].apply(this, args);
+              resetTracking();
+              return res;
+          };
+      });
+      return instrumentations;
+  }
+  function createGetter(isReadonly = false, shallow = false) {
+      return function get(target, key, receiver) {
+          if (key === "__v_isReactive" /* IS_REACTIVE */) {
+              return !isReadonly;
+          }
+          else if (key === "__v_isReadonly" /* IS_READONLY */) {
+              return isReadonly;
+          }
+          else if (key === "__v_isShallow" /* IS_SHALLOW */) {
+              return shallow;
+          }
+          else if (key === "__v_raw" /* RAW */ &&
+              receiver ===
+                  (isReadonly
+                      ? shallow
+                          ? shallowReadonlyMap
+                          : readonlyMap
+                      : shallow
+                          ? shallowReactiveMap
+                          : reactiveMap).get(target)) {
+              return target;
+          }
+          const targetIsArray = isArray(target);
+          if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) {
+              return Reflect.get(arrayInstrumentations, key, receiver);
+          }
+          const res = Reflect.get(target, key, receiver);
+          if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {
+              return res;
+          }
+          if (!isReadonly) {
+              track(target, "get" /* GET */, key);
+          }
+          if (shallow) {
+              return res;
+          }
+          if (isRef(res)) {
+              // ref unwrapping - skip unwrap for Array + integer key.
+              return targetIsArray && isIntegerKey(key) ? res : res.value;
+          }
+          if (isObject(res)) {
+              // Convert returned value into a proxy as well. we do the isObject check
+              // here to avoid invalid value warning. Also need to lazy access readonly
+              // and reactive here to avoid circular dependency.
+              return isReadonly ? readonly(res) : reactive(res);
+          }
+          return res;
+      };
+  }
+  const set = /*#__PURE__*/ createSetter();
+  const shallowSet = /*#__PURE__*/ createSetter(true);
+  function createSetter(shallow = false) {
+      return function set(target, key, value, receiver) {
+          let oldValue = target[key];
+          if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {
+              return false;
+          }
+          if (!shallow && !isReadonly(value)) {
+              if (!isShallow(value)) {
+                  value = toRaw(value);
+                  oldValue = toRaw(oldValue);
+              }
+              if (!isArray(target) && isRef(oldValue) && !isRef(value)) {
+                  oldValue.value = value;
+                  return true;
+              }
+          }
+          const hadKey = isArray(target) && isIntegerKey(key)
+              ? Number(key) < target.length
+              : hasOwn(target, key);
+          const result = Reflect.set(target, key, value, receiver);
+          // don't trigger if target is something up in the prototype chain of original
+          if (target === toRaw(receiver)) {
+              if (!hadKey) {
+                  trigger(target, "add" /* ADD */, key, value);
+              }
+              else if (hasChanged(value, oldValue)) {
+                  trigger(target, "set" /* SET */, key, value, oldValue);
+              }
+          }
+          return result;
+      };
+  }
+  function deleteProperty(target, key) {
+      const hadKey = hasOwn(target, key);
+      const oldValue = target[key];
+      const result = Reflect.deleteProperty(target, key);
+      if (result && hadKey) {
+          trigger(target, "delete" /* DELETE */, key, undefined, oldValue);
+      }
+      return result;
+  }
+  function has(target, key) {
+      const result = Reflect.has(target, key);
+      if (!isSymbol(key) || !builtInSymbols.has(key)) {
+          track(target, "has" /* HAS */, key);
+      }
+      return result;
+  }
+  function ownKeys(target) {
+      track(target, "iterate" /* ITERATE */, isArray(target) ? 'length' : ITERATE_KEY);
+      return Reflect.ownKeys(target);
+  }
+  const mutableHandlers = {
+      get,
+      set,
+      deleteProperty,
+      has,
+      ownKeys
+  };
+  const readonlyHandlers = {
+      get: readonlyGet,
+      set(target, key) {
+          {
+              warn(`Set operation on key "${String(key)}" failed: target is readonly.`, target);
+          }
+          return true;
+      },
+      deleteProperty(target, key) {
+          {
+              warn(`Delete operation on key "${String(key)}" failed: target is readonly.`, target);
+          }
+          return true;
+      }
+  };
+  const shallowReactiveHandlers = /*#__PURE__*/ extend({}, mutableHandlers, {
+      get: shallowGet,
+      set: shallowSet
+  });
+  // Props handlers are special in the sense that it should not unwrap top-level
+  // refs (in order to allow refs to be explicitly passed down), but should
+  // retain the reactivity of the normal readonly object.
+  const shallowReadonlyHandlers = /*#__PURE__*/ extend({}, readonlyHandlers, {
+      get: shallowReadonlyGet
+  });
+
+  const toShallow = (value) => value;
+  const getProto = (v) => Reflect.getPrototypeOf(v);
+  function get$1(target, key, isReadonly = false, isShallow = false) {
+      // #1772: readonly(reactive(Map)) should return readonly + reactive version
+      // of the value
+      target = target["__v_raw" /* RAW */];
+      const rawTarget = toRaw(target);
+      const rawKey = toRaw(key);
+      if (!isReadonly) {
+          if (key !== rawKey) {
+              track(rawTarget, "get" /* GET */, key);
+          }
+          track(rawTarget, "get" /* GET */, rawKey);
+      }
+      const { has } = getProto(rawTarget);
+      const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
+      if (has.call(rawTarget, key)) {
+          return wrap(target.get(key));
+      }
+      else if (has.call(rawTarget, rawKey)) {
+          return wrap(target.get(rawKey));
+      }
+      else if (target !== rawTarget) {
+          // #3602 readonly(reactive(Map))
+          // ensure that the nested reactive `Map` can do tracking for itself
+          target.get(key);
+      }
+  }
+  function has$1(key, isReadonly = false) {
+      const target = this["__v_raw" /* RAW */];
+      const rawTarget = toRaw(target);
+      const rawKey = toRaw(key);
+      if (!isReadonly) {
+          if (key !== rawKey) {
+              track(rawTarget, "has" /* HAS */, key);
+          }
+          track(rawTarget, "has" /* HAS */, rawKey);
+      }
+      return key === rawKey
+          ? target.has(key)
+          : target.has(key) || target.has(rawKey);
+  }
+  function size(target, isReadonly = false) {
+      target = target["__v_raw" /* RAW */];
+      !isReadonly && track(toRaw(target), "iterate" /* ITERATE */, ITERATE_KEY);
+      return Reflect.get(target, 'size', target);
+  }
+  function add(value) {
+      value = toRaw(value);
+      const target = toRaw(this);
+      const proto = getProto(target);
+      const hadKey = proto.has.call(target, value);
+      if (!hadKey) {
+          target.add(value);
+          trigger(target, "add" /* ADD */, value, value);
+      }
+      return this;
+  }
+  function set$1(key, value) {
+      value = toRaw(value);
+      const target = toRaw(this);
+      const { has, get } = getProto(target);
+      let hadKey = has.call(target, key);
+      if (!hadKey) {
+          key = toRaw(key);
+          hadKey = has.call(target, key);
+      }
+      else {
+          checkIdentityKeys(target, has, key);
+      }
+      const oldValue = get.call(target, key);
+      target.set(key, value);
+      if (!hadKey) {
+          trigger(target, "add" /* ADD */, key, value);
+      }
+      else if (hasChanged(value, oldValue)) {
+          trigger(target, "set" /* SET */, key, value, oldValue);
+      }
+      return this;
+  }
+  function deleteEntry(key) {
+      const target = toRaw(this);
+      const { has, get } = getProto(target);
+      let hadKey = has.call(target, key);
+      if (!hadKey) {
+          key = toRaw(key);
+          hadKey = has.call(target, key);
+      }
+      else {
+          checkIdentityKeys(target, has, key);
+      }
+      const oldValue = get ? get.call(target, key) : undefined;
+      // forward the operation before queueing reactions
+      const result = target.delete(key);
+      if (hadKey) {
+          trigger(target, "delete" /* DELETE */, key, undefined, oldValue);
+      }
+      return result;
+  }
+  function clear() {
+      const target = toRaw(this);
+      const hadItems = target.size !== 0;
+      const oldTarget = isMap(target)
+              ? new Map(target)
+              : new Set(target)
+          ;
+      // forward the operation before queueing reactions
+      const result = target.clear();
+      if (hadItems) {
+          trigger(target, "clear" /* CLEAR */, undefined, undefined, oldTarget);
+      }
+      return result;
+  }
+  function createForEach(isReadonly, isShallow) {
+      return function forEach(callback, thisArg) {
+          const observed = this;
+          const target = observed["__v_raw" /* RAW */];
+          const rawTarget = toRaw(target);
+          const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
+          !isReadonly && track(rawTarget, "iterate" /* ITERATE */, ITERATE_KEY);
+          return target.forEach((value, key) => {
+              // important: make sure the callback is
+              // 1. invoked with the reactive map as `this` and 3rd arg
+              // 2. the value received should be a corresponding reactive/readonly.
+              return callback.call(thisArg, wrap(value), wrap(key), observed);
+          });
+      };
+  }
+  function createIterableMethod(method, isReadonly, isShallow) {
+      return function (...args) {
+          const target = this["__v_raw" /* RAW */];
+          const rawTarget = toRaw(target);
+          const targetIsMap = isMap(rawTarget);
+          const isPair = method === 'entries' || (method === Symbol.iterator && targetIsMap);
+          const isKeyOnly = method === 'keys' && targetIsMap;
+          const innerIterator = target[method](...args);
+          const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;
+          !isReadonly &&
+              track(rawTarget, "iterate" /* ITERATE */, isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);
+          // return a wrapped iterator which returns observed versions of the
+          // values emitted from the real iterator
+          return {
+              // iterator protocol
+              next() {
+                  const { value, done } = innerIterator.next();
+                  return done
+                      ? { value, done }
+                      : {
+                          value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),
+                          done
+                      };
+              },
+              // iterable protocol
+              [Symbol.iterator]() {
+                  return this;
+              }
+          };
+      };
+  }
+  function createReadonlyMethod(type) {
+      return function (...args) {
+          {
+              const key = args[0] ? `on key "${args[0]}" ` : ``;
+              console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this));
+          }
+          return type === "delete" /* DELETE */ ? false : this;
+      };
+  }
+  function createInstrumentations() {
+      const mutableInstrumentations = {
+          get(key) {
+              return get$1(this, key);
+          },
+          get size() {
+              return size(this);
+          },
+          has: has$1,
+          add,
+          set: set$1,
+          delete: deleteEntry,
+          clear,
+          forEach: createForEach(false, false)
+      };
+      const shallowInstrumentations = {
+          get(key) {
+              return get$1(this, key, false, true);
+          },
+          get size() {
+              return size(this);
+          },
+          has: has$1,
+          add,
+          set: set$1,
+          delete: deleteEntry,
+          clear,
+          forEach: createForEach(false, true)
+      };
+      const readonlyInstrumentations = {
+          get(key) {
+              return get$1(this, key, true);
+          },
+          get size() {
+              return size(this, true);
+          },
+          has(key) {
+              return has$1.call(this, key, true);
+          },
+          add: createReadonlyMethod("add" /* ADD */),
+          set: createReadonlyMethod("set" /* SET */),
+          delete: createReadonlyMethod("delete" /* DELETE */),
+          clear: createReadonlyMethod("clear" /* CLEAR */),
+          forEach: createForEach(true, false)
+      };
+      const shallowReadonlyInstrumentations = {
+          get(key) {
+              return get$1(this, key, true, true);
+          },
+          get size() {
+              return size(this, true);
+          },
+          has(key) {
+              return has$1.call(this, key, true);
+          },
+          add: createReadonlyMethod("add" /* ADD */),
+          set: createReadonlyMethod("set" /* SET */),
+          delete: createReadonlyMethod("delete" /* DELETE */),
+          clear: createReadonlyMethod("clear" /* CLEAR */),
+          forEach: createForEach(true, true)
+      };
+      const iteratorMethods = ['keys', 'values', 'entries', Symbol.iterator];
+      iteratorMethods.forEach(method => {
+          mutableInstrumentations[method] = createIterableMethod(method, false, false);
+          readonlyInstrumentations[method] = createIterableMethod(method, true, false);
+          shallowInstrumentations[method] = createIterableMethod(method, false, true);
+          shallowReadonlyInstrumentations[method] = createIterableMethod(method, true, true);
+      });
+      return [
+          mutableInstrumentations,
+          readonlyInstrumentations,
+          shallowInstrumentations,
+          shallowReadonlyInstrumentations
+      ];
+  }
+  const [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* #__PURE__*/ createInstrumentations();
+  function createInstrumentationGetter(isReadonly, shallow) {
+      const instrumentations = shallow
+          ? isReadonly
+              ? shallowReadonlyInstrumentations
+              : shallowInstrumentations
+          : isReadonly
+              ? readonlyInstrumentations
+              : mutableInstrumentations;
+      return (target, key, receiver) => {
+          if (key === "__v_isReactive" /* IS_REACTIVE */) {
+              return !isReadonly;
+          }
+          else if (key === "__v_isReadonly" /* IS_READONLY */) {
+              return isReadonly;
+          }
+          else if (key === "__v_raw" /* RAW */) {
+              return target;
+          }
+          return Reflect.get(hasOwn(instrumentations, key) && key in target
+              ? instrumentations
+              : target, key, receiver);
+      };
+  }
+  const mutableCollectionHandlers = {
+      get: /*#__PURE__*/ createInstrumentationGetter(false, false)
+  };
+  const shallowCollectionHandlers = {
+      get: /*#__PURE__*/ createInstrumentationGetter(false, true)
+  };
+  const readonlyCollectionHandlers = {
+      get: /*#__PURE__*/ createInstrumentationGetter(true, false)
+  };
+  const shallowReadonlyCollectionHandlers = {
+      get: /*#__PURE__*/ createInstrumentationGetter(true, true)
+  };
+  function checkIdentityKeys(target, has, key) {
+      const rawKey = toRaw(key);
+      if (rawKey !== key && has.call(target, rawKey)) {
+          const type = toRawType(target);
+          console.warn(`Reactive ${type} contains both the raw and reactive ` +
+              `versions of the same object${type === `Map` ? ` as keys` : ``}, ` +
+              `which can lead to inconsistencies. ` +
+              `Avoid differentiating between the raw and reactive versions ` +
+              `of an object and only use the reactive version if possible.`);
+      }
+  }
+
+  const reactiveMap = new WeakMap();
+  const shallowReactiveMap = new WeakMap();
+  const readonlyMap = new WeakMap();
+  const shallowReadonlyMap = new WeakMap();
+  function targetTypeMap(rawType) {
+      switch (rawType) {
+          case 'Object':
+          case 'Array':
+              return 1 /* COMMON */;
+          case 'Map':
+          case 'Set':
+          case 'WeakMap':
+          case 'WeakSet':
+              return 2 /* COLLECTION */;
+          default:
+              return 0 /* INVALID */;
+      }
+  }
+  function getTargetType(value) {
+      return value["__v_skip" /* SKIP */] || !Object.isExtensible(value)
+          ? 0 /* INVALID */
+          : targetTypeMap(toRawType(value));
+  }
+  function reactive(target) {
+      // if trying to observe a readonly proxy, return the readonly version.
+      if (isReadonly(target)) {
+          return target;
+      }
+      return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);
+  }
+  /**
+   * Return a shallowly-reactive copy of the original object, where only the root
+   * level properties are reactive. It also does not auto-unwrap refs (even at the
+   * root level).
+   */
+  function shallowReactive(target) {
+      return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap);
+  }
+  /**
+   * Creates a readonly copy of the original object. Note the returned copy is not
+   * made reactive, but `readonly` can be called on an already reactive object.
+   */
+  function readonly(target) {
+      return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);
+  }
+  /**
+   * Returns a reactive-copy of the original object, where only the root level
+   * properties are readonly, and does NOT unwrap refs nor recursively convert
+   * returned properties.
+   * This is used for creating the props proxy object for stateful components.
+   */
+  function shallowReadonly(target) {
+      return createReactiveObject(target, true, shallowReadonlyHandlers, shallowReadonlyCollectionHandlers, shallowReadonlyMap);
+  }
+  function createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) {
+      if (!isObject(target)) {
+          {
+              console.warn(`value cannot be made reactive: ${String(target)}`);
+          }
+          return target;
+      }
+      // target is already a Proxy, return it.
+      // exception: calling readonly() on a reactive object
+      if (target["__v_raw" /* RAW */] &&
+          !(isReadonly && target["__v_isReactive" /* IS_REACTIVE */])) {
+          return target;
+      }
+      // target already has corresponding Proxy
+      const existingProxy = proxyMap.get(target);
+      if (existingProxy) {
+          return existingProxy;
+      }
+      // only specific value types can be observed.
+      const targetType = getTargetType(target);
+      if (targetType === 0 /* INVALID */) {
+          return target;
+      }
+      const proxy = new Proxy(target, targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers);
+      proxyMap.set(target, proxy);
+      return proxy;
+  }
+  function isReactive(value) {
+      if (isReadonly(value)) {
+          return isReactive(value["__v_raw" /* RAW */]);
+      }
+      return !!(value && value["__v_isReactive" /* IS_REACTIVE */]);
+  }
+  function isReadonly(value) {
+      return !!(value && value["__v_isReadonly" /* IS_READONLY */]);
+  }
+  function isShallow(value) {
+      return !!(value && value["__v_isShallow" /* IS_SHALLOW */]);
+  }
+  function isProxy(value) {
+      return isReactive(value) || isReadonly(value);
+  }
+  function toRaw(observed) {
+      const raw = observed && observed["__v_raw" /* RAW */];
+      return raw ? toRaw(raw) : observed;
+  }
+  function markRaw(value) {
+      def(value, "__v_skip" /* SKIP */, true);
+      return value;
+  }
+  const toReactive = (value) => isObject(value) ? reactive(value) : value;
+  const toReadonly = (value) => isObject(value) ? readonly(value) : value;
+
+  function trackRefValue(ref) {
+      if (shouldTrack && activeEffect) {
+          ref = toRaw(ref);
+          {
+              trackEffects(ref.dep || (ref.dep = createDep()), {
+                  target: ref,
+                  type: "get" /* GET */,
+                  key: 'value'
+              });
+          }
+      }
+  }
+  function triggerRefValue(ref, newVal) {
+      ref = toRaw(ref);
+      if (ref.dep) {
+          {
+              triggerEffects(ref.dep, {
+                  target: ref,
+                  type: "set" /* SET */,
+                  key: 'value',
+                  newValue: newVal
+              });
+          }
+      }
+  }
+  function isRef(r) {
+      return !!(r && r.__v_isRef === true);
+  }
+  function ref(value) {
+      return createRef(value, false);
+  }
+  function shallowRef(value) {
+      return createRef(value, true);
+  }
+  function createRef(rawValue, shallow) {
+      if (isRef(rawValue)) {
+          return rawValue;
+      }
+      return new RefImpl(rawValue, shallow);
+  }
+  class RefImpl {
+      constructor(value, __v_isShallow) {
+          this.__v_isShallow = __v_isShallow;
+          this.dep = undefined;
+          this.__v_isRef = true;
+          this._rawValue = __v_isShallow ? value : toRaw(value);
+          this._value = __v_isShallow ? value : toReactive(value);
+      }
+      get value() {
+          trackRefValue(this);
+          return this._value;
+      }
+      set value(newVal) {
+          newVal = this.__v_isShallow ? newVal : toRaw(newVal);
+          if (hasChanged(newVal, this._rawValue)) {
+              this._rawValue = newVal;
+              this._value = this.__v_isShallow ? newVal : toReactive(newVal);
+              triggerRefValue(this, newVal);
+          }
+      }
+  }
+  function triggerRef(ref) {
+      triggerRefValue(ref, ref.value );
+  }
+  function unref(ref) {
+      return isRef(ref) ? ref.value : ref;
+  }
+  const shallowUnwrapHandlers = {
+      get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),
+      set: (target, key, value, receiver) => {
+          const oldValue = target[key];
+          if (isRef(oldValue) && !isRef(value)) {
+              oldValue.value = value;
+              return true;
+          }
+          else {
+              return Reflect.set(target, key, value, receiver);
+          }
+      }
+  };
+  function proxyRefs(objectWithRefs) {
+      return isReactive(objectWithRefs)
+          ? objectWithRefs
+          : new Proxy(objectWithRefs, shallowUnwrapHandlers);
+  }
+  class CustomRefImpl {
+      constructor(factory) {
+          this.dep = undefined;
+          this.__v_isRef = true;
+          const { get, set } = factory(() => trackRefValue(this), () => triggerRefValue(this));
+          this._get = get;
+          this._set = set;
+      }
+      get value() {
+          return this._get();
+      }
+      set value(newVal) {
+          this._set(newVal);
+      }
+  }
+  function customRef(factory) {
+      return new CustomRefImpl(factory);
+  }
+  function toRefs(object) {
+      if (!isProxy(object)) {
+          console.warn(`toRefs() expects a reactive object but received a plain one.`);
+      }
+      const ret = isArray(object) ? new Array(object.length) : {};
+      for (const key in object) {
+          ret[key] = toRef(object, key);
+      }
+      return ret;
+  }
+  class ObjectRefImpl {
+      constructor(_object, _key, _defaultValue) {
+          this._object = _object;
+          this._key = _key;
+          this._defaultValue = _defaultValue;
+          this.__v_isRef = true;
+      }
+      get value() {
+          const val = this._object[this._key];
+          return val === undefined ? this._defaultValue : val;
+      }
+      set value(newVal) {
+          this._object[this._key] = newVal;
+      }
+  }
+  function toRef(object, key, defaultValue) {
+      const val = object[key];
+      return isRef(val)
+          ? val
+          : new ObjectRefImpl(object, key, defaultValue);
+  }
+
+  class ComputedRefImpl {
+      constructor(getter, _setter, isReadonly, isSSR) {
+          this._setter = _setter;
+          this.dep = undefined;
+          this.__v_isRef = true;
+          this._dirty = true;
+          this.effect = new ReactiveEffect(getter, () => {
+              if (!this._dirty) {
+                  this._dirty = true;
+                  triggerRefValue(this);
+              }
+          });
+          this.effect.computed = this;
+          this.effect.active = this._cacheable = !isSSR;
+          this["__v_isReadonly" /* IS_READONLY */] = isReadonly;
+      }
+      get value() {
+          // the computed ref may get wrapped by other proxies e.g. readonly() #3376
+          const self = toRaw(this);
+          trackRefValue(self);
+          if (self._dirty || !self._cacheable) {
+              self._dirty = false;
+              self._value = self.effect.run();
+          }
+          return self._value;
+      }
+      set value(newValue) {
+          this._setter(newValue);
+      }
+  }
+  function computed(getterOrOptions, debugOptions, isSSR = false) {
+      let getter;
+      let setter;
+      const onlyGetter = isFunction(getterOrOptions);
+      if (onlyGetter) {
+          getter = getterOrOptions;
+          setter = () => {
+                  console.warn('Write operation failed: computed value is readonly');
+              }
+              ;
+      }
+      else {
+          getter = getterOrOptions.get;
+          setter = getterOrOptions.set;
+      }
+      const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);
+      if (debugOptions && !isSSR) {
+          cRef.effect.onTrack = debugOptions.onTrack;
+          cRef.effect.onTrigger = debugOptions.onTrigger;
+      }
+      return cRef;
+  }
+
+  const stack = [];
+  function pushWarningContext(vnode) {
+      stack.push(vnode);
+  }
+  function popWarningContext() {
+      stack.pop();
+  }
+  function warn$1(msg, ...args) {
+      // avoid props formatting or warn handler tracking deps that might be mutated
+      // during patch, leading to infinite recursion.
+      pauseTracking();
+      const instance = stack.length ? stack[stack.length - 1].component : null;
+      const appWarnHandler = instance && instance.appContext.config.warnHandler;
+      const trace = getComponentTrace();
+      if (appWarnHandler) {
+          callWithErrorHandling(appWarnHandler, instance, 11 /* APP_WARN_HANDLER */, [
+              msg + args.join(''),
+              instance && instance.proxy,
+              trace
+                  .map(({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`)
+                  .join('\n'),
+              trace
+          ]);
+      }
+      else {
+          const warnArgs = [`[Vue warn]: ${msg}`, ...args];
+          /* istanbul ignore if */
+          if (trace.length &&
+              // avoid spamming console during tests
+              !false) {
+              warnArgs.push(`\n`, ...formatTrace(trace));
+          }
+          console.warn(...warnArgs);
+      }
+      resetTracking();
+  }
+  function getComponentTrace() {
+      let currentVNode = stack[stack.length - 1];
+      if (!currentVNode) {
+          return [];
+      }
+      // we can't just use the stack because it will be incomplete during updates
+      // that did not start from the root. Re-construct the parent chain using
+      // instance parent pointers.
+      const normalizedStack = [];
+      while (currentVNode) {
+          const last = normalizedStack[0];
+          if (last && last.vnode === currentVNode) {
+              last.recurseCount++;
+          }
+          else {
+              normalizedStack.push({
+                  vnode: currentVNode,
+                  recurseCount: 0
+              });
+          }
+          const parentInstance = currentVNode.component && currentVNode.component.parent;
+          currentVNode = parentInstance && parentInstance.vnode;
+      }
+      return normalizedStack;
+  }
+  /* istanbul ignore next */
+  function formatTrace(trace) {
+      const logs = [];
+      trace.forEach((entry, i) => {
+          logs.push(...(i === 0 ? [] : [`\n`]), ...formatTraceEntry(entry));
+      });
+      return logs;
+  }
+  function formatTraceEntry({ vnode, recurseCount }) {
+      const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;
+      const isRoot = vnode.component ? vnode.component.parent == null : false;
+      const open = ` at <${formatComponentName(vnode.component, vnode.type, isRoot)}`;
+      const close = `>` + postfix;
+      return vnode.props
+          ? [open, ...formatProps(vnode.props), close]
+          : [open + close];
+  }
+  /* istanbul ignore next */
+  function formatProps(props) {
+      const res = [];
+      const keys = Object.keys(props);
+      keys.slice(0, 3).forEach(key => {
+          res.push(...formatProp(key, props[key]));
+      });
+      if (keys.length > 3) {
+          res.push(` ...`);
+      }
+      return res;
+  }
+  /* istanbul ignore next */
+  function formatProp(key, value, raw) {
+      if (isString(value)) {
+          value = JSON.stringify(value);
+          return raw ? value : [`${key}=${value}`];
+      }
+      else if (typeof value === 'number' ||
+          typeof value === 'boolean' ||
+          value == null) {
+          return raw ? value : [`${key}=${value}`];
+      }
+      else if (isRef(value)) {
+          value = formatProp(key, toRaw(value.value), true);
+          return raw ? value : [`${key}=Ref<`, value, `>`];
+      }
+      else if (isFunction(value)) {
+          return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];
+      }
+      else {
+          value = toRaw(value);
+          return raw ? value : [`${key}=`, value];
+      }
+  }
+
+  const ErrorTypeStrings = {
+      ["sp" /* SERVER_PREFETCH */]: 'serverPrefetch hook',
+      ["bc" /* BEFORE_CREATE */]: 'beforeCreate hook',
+      ["c" /* CREATED */]: 'created hook',
+      ["bm" /* BEFORE_MOUNT */]: 'beforeMount hook',
+      ["m" /* MOUNTED */]: 'mounted hook',
+      ["bu" /* BEFORE_UPDATE */]: 'beforeUpdate hook',
+      ["u" /* UPDATED */]: 'updated',
+      ["bum" /* BEFORE_UNMOUNT */]: 'beforeUnmount hook',
+      ["um" /* UNMOUNTED */]: 'unmounted hook',
+      ["a" /* ACTIVATED */]: 'activated hook',
+      ["da" /* DEACTIVATED */]: 'deactivated hook',
+      ["ec" /* ERROR_CAPTURED */]: 'errorCaptured hook',
+      ["rtc" /* RENDER_TRACKED */]: 'renderTracked hook',
+      ["rtg" /* RENDER_TRIGGERED */]: 'renderTriggered hook',
+      [0 /* SETUP_FUNCTION */]: 'setup function',
+      [1 /* RENDER_FUNCTION */]: 'render function',
+      [2 /* WATCH_GETTER */]: 'watcher getter',
+      [3 /* WATCH_CALLBACK */]: 'watcher callback',
+      [4 /* WATCH_CLEANUP */]: 'watcher cleanup function',
+      [5 /* NATIVE_EVENT_HANDLER */]: 'native event handler',
+      [6 /* COMPONENT_EVENT_HANDLER */]: 'component event handler',
+      [7 /* VNODE_HOOK */]: 'vnode hook',
+      [8 /* DIRECTIVE_HOOK */]: 'directive hook',
+      [9 /* TRANSITION_HOOK */]: 'transition hook',
+      [10 /* APP_ERROR_HANDLER */]: 'app errorHandler',
+      [11 /* APP_WARN_HANDLER */]: 'app warnHandler',
+      [12 /* FUNCTION_REF */]: 'ref function',
+      [13 /* ASYNC_COMPONENT_LOADER */]: 'async component loader',
+      [14 /* SCHEDULER */]: 'scheduler flush. This is likely a Vue internals bug. ' +
+          'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core'
+  };
+  function callWithErrorHandling(fn, instance, type, args) {
+      let res;
+      try {
+          res = args ? fn(...args) : fn();
+      }
+      catch (err) {
+          handleError(err, instance, type);
+      }
+      return res;
+  }
+  function callWithAsyncErrorHandling(fn, instance, type, args) {
+      if (isFunction(fn)) {
+          const res = callWithErrorHandling(fn, instance, type, args);
+          if (res && isPromise(res)) {
+              res.catch(err => {
+                  handleError(err, instance, type);
+              });
+          }
+          return res;
+      }
+      const values = [];
+      for (let i = 0; i < fn.length; i++) {
+          values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));
+      }
+      return values;
+  }
+  function handleError(err, instance, type, throwInDev = true) {
+      const contextVNode = instance ? instance.vnode : null;
+      if (instance) {
+          let cur = instance.parent;
+          // the exposed instance is the render proxy to keep it consistent with 2.x
+          const exposedInstance = instance.proxy;
+          // in production the hook receives only the error code
+          const errorInfo = ErrorTypeStrings[type] ;
+          while (cur) {
+              const errorCapturedHooks = cur.ec;
+              if (errorCapturedHooks) {
+                  for (let i = 0; i < errorCapturedHooks.length; i++) {
+                      if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {
+                          return;
+                      }
+                  }
+              }
+              cur = cur.parent;
+          }
+          // app-level handling
+          const appErrorHandler = instance.appContext.config.errorHandler;
+          if (appErrorHandler) {
+              callWithErrorHandling(appErrorHandler, null, 10 /* APP_ERROR_HANDLER */, [err, exposedInstance, errorInfo]);
+              return;
+          }
+      }
+      logError(err, type, contextVNode, throwInDev);
+  }
+  function logError(err, type, contextVNode, throwInDev = true) {
+      {
+          const info = ErrorTypeStrings[type];
+          if (contextVNode) {
+              pushWarningContext(contextVNode);
+          }
+          warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);
+          if (contextVNode) {
+              popWarningContext();
+          }
+          // crash in dev by default so it's more noticeable
+          if (throwInDev) {
+              throw err;
+          }
+          else {
+              console.error(err);
+          }
+      }
+  }
+
+  let isFlushing = false;
+  let isFlushPending = false;
+  const queue = [];
+  let flushIndex = 0;
+  const pendingPreFlushCbs = [];
+  let activePreFlushCbs = null;
+  let preFlushIndex = 0;
+  const pendingPostFlushCbs = [];
+  let activePostFlushCbs = null;
+  let postFlushIndex = 0;
+  const resolvedPromise = /*#__PURE__*/ Promise.resolve();
+  let currentFlushPromise = null;
+  let currentPreFlushParentJob = null;
+  const RECURSION_LIMIT = 100;
+  function nextTick(fn) {
+      const p = currentFlushPromise || resolvedPromise;
+      return fn ? p.then(this ? fn.bind(this) : fn) : p;
+  }
+  // #2768
+  // Use binary-search to find a suitable position in the queue,
+  // so that the queue maintains the increasing order of job's id,
+  // which can prevent the job from being skipped and also can avoid repeated patching.
+  function findInsertionIndex(id) {
+      // the start index should be `flushIndex + 1`
+      let start = flushIndex + 1;
+      let end = queue.length;
+      while (start < end) {
+          const middle = (start + end) >>> 1;
+          const middleJobId = getId(queue[middle]);
+          middleJobId < id ? (start = middle + 1) : (end = middle);
+      }
+      return start;
+  }
+  function queueJob(job) {
+      // the dedupe search uses the startIndex argument of Array.includes()
+      // by default the search index includes the current job that is being run
+      // so it cannot recursively trigger itself again.
+      // if the job is a watch() callback, the search will start with a +1 index to
+      // allow it recursively trigger itself - it is the user's responsibility to
+      // ensure it doesn't end up in an infinite loop.
+      if ((!queue.length ||
+          !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) &&
+          job !== currentPreFlushParentJob) {
+          if (job.id == null) {
+              queue.push(job);
+          }
+          else {
+              queue.splice(findInsertionIndex(job.id), 0, job);
+          }
+          queueFlush();
+      }
+  }
+  function queueFlush() {
+      if (!isFlushing && !isFlushPending) {
+          isFlushPending = true;
+          currentFlushPromise = resolvedPromise.then(flushJobs);
+      }
+  }
+  function invalidateJob(job) {
+      const i = queue.indexOf(job);
+      if (i > flushIndex) {
+          queue.splice(i, 1);
+      }
+  }
+  function queueCb(cb, activeQueue, pendingQueue, index) {
+      if (!isArray(cb)) {
+          if (!activeQueue ||
+              !activeQueue.includes(cb, cb.allowRecurse ? index + 1 : index)) {
+              pendingQueue.push(cb);
+          }
+      }
+      else {
+          // if cb is an array, it is a component lifecycle hook which can only be
+          // triggered by a job, which is already deduped in the main queue, so
+          // we can skip duplicate check here to improve perf
+          pendingQueue.push(...cb);
+      }
+      queueFlush();
+  }
+  function queuePreFlushCb(cb) {
+      queueCb(cb, activePreFlushCbs, pendingPreFlushCbs, preFlushIndex);
+  }
+  function queuePostFlushCb(cb) {
+      queueCb(cb, activePostFlushCbs, pendingPostFlushCbs, postFlushIndex);
+  }
+  function flushPreFlushCbs(seen, parentJob = null) {
+      if (pendingPreFlushCbs.length) {
+          currentPreFlushParentJob = parentJob;
+          activePreFlushCbs = [...new Set(pendingPreFlushCbs)];
+          pendingPreFlushCbs.length = 0;
+          {
+              seen = seen || new Map();
+          }
+          for (preFlushIndex = 0; preFlushIndex < activePreFlushCbs.length; preFlushIndex++) {
+              if (checkRecursiveUpdates(seen, activePreFlushCbs[preFlushIndex])) {
+                  continue;
+              }
+              activePreFlushCbs[preFlushIndex]();
+          }
+          activePreFlushCbs = null;
+          preFlushIndex = 0;
+          currentPreFlushParentJob = null;
+          // recursively flush until it drains
+          flushPreFlushCbs(seen, parentJob);
+      }
+  }
+  function flushPostFlushCbs(seen) {
+      // flush any pre cbs queued during the flush (e.g. pre watchers)
+      flushPreFlushCbs();
+      if (pendingPostFlushCbs.length) {
+          const deduped = [...new Set(pendingPostFlushCbs)];
+          pendingPostFlushCbs.length = 0;
+          // #1947 already has active queue, nested flushPostFlushCbs call
+          if (activePostFlushCbs) {
+              activePostFlushCbs.push(...deduped);
+              return;
+          }
+          activePostFlushCbs = deduped;
+          {
+              seen = seen || new Map();
+          }
+          activePostFlushCbs.sort((a, b) => getId(a) - getId(b));
+          for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {
+              if (checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {
+                  continue;
+              }
+              activePostFlushCbs[postFlushIndex]();
+          }
+          activePostFlushCbs = null;
+          postFlushIndex = 0;
+      }
+  }
+  const getId = (job) => job.id == null ? Infinity : job.id;
+  function flushJobs(seen) {
+      isFlushPending = false;
+      isFlushing = true;
+      {
+          seen = seen || new Map();
+      }
+      flushPreFlushCbs(seen);
+      // Sort queue before flush.
+      // This ensures that:
+      // 1. Components are updated from parent to child. (because parent is always
+      //    created before the child so its render effect will have smaller
+      //    priority number)
+      // 2. If a component is unmounted during a parent component's update,
+      //    its update can be skipped.
+      queue.sort((a, b) => getId(a) - getId(b));
+      // conditional usage of checkRecursiveUpdate must be determined out of
+      // try ... catch block since Rollup by default de-optimizes treeshaking
+      // inside try-catch. This can leave all warning code unshaked. Although
+      // they would get eventually shaken by a minifier like terser, some minifiers
+      // would fail to do that (e.g. https://github.com/evanw/esbuild/issues/1610)
+      const check = (job) => checkRecursiveUpdates(seen, job)
+          ;
+      try {
+          for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {
+              const job = queue[flushIndex];
+              if (job && job.active !== false) {
+                  if (true && check(job)) {
+                      continue;
+                  }
+                  // console.log(`running:`, job.id)
+                  callWithErrorHandling(job, null, 14 /* SCHEDULER */);
+              }
+          }
+      }
+      finally {
+          flushIndex = 0;
+          queue.length = 0;
+          flushPostFlushCbs(seen);
+          isFlushing = false;
+          currentFlushPromise = null;
+          // some postFlushCb queued jobs!
+          // keep flushing until it drains.
+          if (queue.length ||
+              pendingPreFlushCbs.length ||
+              pendingPostFlushCbs.length) {
+              flushJobs(seen);
+          }
+      }
+  }
+  function checkRecursiveUpdates(seen, fn) {
+      if (!seen.has(fn)) {
+          seen.set(fn, 1);
+      }
+      else {
+          const count = seen.get(fn);
+          if (count > RECURSION_LIMIT) {
+              const instance = fn.ownerInstance;
+              const componentName = instance && getComponentName(instance.type);
+              warn$1(`Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. ` +
+                  `This means you have a reactive effect that is mutating its own ` +
+                  `dependencies and thus recursively triggering itself. Possible sources ` +
+                  `include component template, render function, updated hook or ` +
+                  `watcher source function.`);
+              return true;
+          }
+          else {
+              seen.set(fn, count + 1);
+          }
+      }
+  }
+
+  /* eslint-disable no-restricted-globals */
+  let isHmrUpdating = false;
+  const hmrDirtyComponents = new Set();
+  // Expose the HMR runtime on the global object
+  // This makes it entirely tree-shakable without polluting the exports and makes
+  // it easier to be used in toolings like vue-loader
+  // Note: for a component to be eligible for HMR it also needs the __hmrId option
+  // to be set so that its instances can be registered / removed.
+  {
+      getGlobalThis().__VUE_HMR_RUNTIME__ = {
+          createRecord: tryWrap(createRecord),
+          rerender: tryWrap(rerender),
+          reload: tryWrap(reload)
+      };
+  }
+  const map = new Map();
+  function registerHMR(instance) {
+      const id = instance.type.__hmrId;
+      let record = map.get(id);
+      if (!record) {
+          createRecord(id, instance.type);
+          record = map.get(id);
+      }
+      record.instances.add(instance);
+  }
+  function unregisterHMR(instance) {
+      map.get(instance.type.__hmrId).instances.delete(instance);
+  }
+  function createRecord(id, initialDef) {
+      if (map.has(id)) {
+          return false;
+      }
+      map.set(id, {
+          initialDef: normalizeClassComponent(initialDef),
+          instances: new Set()
+      });
+      return true;
+  }
+  function normalizeClassComponent(component) {
+      return isClassComponent(component) ? component.__vccOpts : component;
+  }
+  function rerender(id, newRender) {
+      const record = map.get(id);
+      if (!record) {
+          return;
+      }
+      // update initial record (for not-yet-rendered component)
+      record.initialDef.render = newRender;
+      [...record.instances].forEach(instance => {
+          if (newRender) {
+              instance.render = newRender;
+              normalizeClassComponent(instance.type).render = newRender;
+          }
+          instance.renderCache = [];
+          // this flag forces child components with slot content to update
+          isHmrUpdating = true;
+          instance.update();
+          isHmrUpdating = false;
+      });
+  }
+  function reload(id, newComp) {
+      const record = map.get(id);
+      if (!record)
+          return;
+      newComp = normalizeClassComponent(newComp);
+      // update initial def (for not-yet-rendered components)
+      updateComponentDef(record.initialDef, newComp);
+      // create a snapshot which avoids the set being mutated during updates
+      const instances = [...record.instances];
+      for (const instance of instances) {
+          const oldComp = normalizeClassComponent(instance.type);
+          if (!hmrDirtyComponents.has(oldComp)) {
+              // 1. Update existing comp definition to match new one
+              if (oldComp !== record.initialDef) {
+                  updateComponentDef(oldComp, newComp);
+              }
+              // 2. mark definition dirty. This forces the renderer to replace the
+              // component on patch.
+              hmrDirtyComponents.add(oldComp);
+          }
+          // 3. invalidate options resolution cache
+          instance.appContext.optionsCache.delete(instance.type);
+          // 4. actually update
+          if (instance.ceReload) {
+              // custom element
+              hmrDirtyComponents.add(oldComp);
+              instance.ceReload(newComp.styles);
+              hmrDirtyComponents.delete(oldComp);
+          }
+          else if (instance.parent) {
+              // 4. Force the parent instance to re-render. This will cause all updated
+              // components to be unmounted and re-mounted. Queue the update so that we
+              // don't end up forcing the same parent to re-render multiple times.
+              queueJob(instance.parent.update);
+              // instance is the inner component of an async custom element
+              // invoke to reset styles
+              if (instance.parent.type.__asyncLoader &&
+                  instance.parent.ceReload) {
+                  instance.parent.ceReload(newComp.styles);
+              }
+          }
+          else if (instance.appContext.reload) {
+              // root instance mounted via createApp() has a reload method
+              instance.appContext.reload();
+          }
+          else if (typeof window !== 'undefined') {
+              // root instance inside tree created via raw render(). Force reload.
+              window.location.reload();
+          }
+          else {
+              console.warn('[HMR] Root or manually mounted instance modified. Full reload required.');
+          }
+      }
+      // 5. make sure to cleanup dirty hmr components after update
+      queuePostFlushCb(() => {
+          for (const instance of instances) {
+              hmrDirtyComponents.delete(normalizeClassComponent(instance.type));
+          }
+      });
+  }
+  function updateComponentDef(oldComp, newComp) {
+      extend(oldComp, newComp);
+      for (const key in oldComp) {
+          if (key !== '__file' && !(key in newComp)) {
+              delete oldComp[key];
+          }
+      }
+  }
+  function tryWrap(fn) {
+      return (id, arg) => {
+          try {
+              return fn(id, arg);
+          }
+          catch (e) {
+              console.error(e);
+              console.warn(`[HMR] Something went wrong during Vue component hot-reload. ` +
+                  `Full reload required.`);
+          }
+      };
+  }
+
+  let buffer = [];
+  let devtoolsNotInstalled = false;
+  function emit(event, ...args) {
+      if (exports.devtools) {
+          exports.devtools.emit(event, ...args);
+      }
+      else if (!devtoolsNotInstalled) {
+          buffer.push({ event, args });
+      }
+  }
+  function setDevtoolsHook(hook, target) {
+      var _a, _b;
+      exports.devtools = hook;
+      if (exports.devtools) {
+          exports.devtools.enabled = true;
+          buffer.forEach(({ event, args }) => exports.devtools.emit(event, ...args));
+          buffer = [];
+      }
+      else if (
+      // handle late devtools injection - only do this if we are in an actual
+      // browser environment to avoid the timer handle stalling test runner exit
+      // (#4815)
+      typeof window !== 'undefined' &&
+          // some envs mock window but not fully
+          window.HTMLElement &&
+          // also exclude jsdom
+          !((_b = (_a = window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) === null || _b === void 0 ? void 0 : _b.includes('jsdom'))) {
+          const replay = (target.__VUE_DEVTOOLS_HOOK_REPLAY__ =
+              target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []);
+          replay.push((newHook) => {
+              setDevtoolsHook(newHook, target);
+          });
+          // clear buffer after 3s - the user probably doesn't have devtools installed
+          // at all, and keeping the buffer will cause memory leaks (#4738)
+          setTimeout(() => {
+              if (!exports.devtools) {
+                  target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;
+                  devtoolsNotInstalled = true;
+                  buffer = [];
+              }
+          }, 3000);
+      }
+      else {
+          // non-browser env, assume not installed
+          devtoolsNotInstalled = true;
+          buffer = [];
+      }
+  }
+  function devtoolsInitApp(app, version) {
+      emit("app:init" /* APP_INIT */, app, version, {
+          Fragment,
+          Text,
+          Comment,
+          Static
+      });
+  }
+  function devtoolsUnmountApp(app) {
+      emit("app:unmount" /* APP_UNMOUNT */, app);
+  }
+  const devtoolsComponentAdded = /*#__PURE__*/ createDevtoolsComponentHook("component:added" /* COMPONENT_ADDED */);
+  const devtoolsComponentUpdated = 
+  /*#__PURE__*/ createDevtoolsComponentHook("component:updated" /* COMPONENT_UPDATED */);
+  const devtoolsComponentRemoved = 
+  /*#__PURE__*/ createDevtoolsComponentHook("component:removed" /* COMPONENT_REMOVED */);
+  function createDevtoolsComponentHook(hook) {
+      return (component) => {
+          emit(hook, component.appContext.app, component.uid, component.parent ? component.parent.uid : undefined, component);
+      };
+  }
+  const devtoolsPerfStart = /*#__PURE__*/ createDevtoolsPerformanceHook("perf:start" /* PERFORMANCE_START */);
+  const devtoolsPerfEnd = /*#__PURE__*/ createDevtoolsPerformanceHook("perf:end" /* PERFORMANCE_END */);
+  function createDevtoolsPerformanceHook(hook) {
+      return (component, type, time) => {
+          emit(hook, component.appContext.app, component.uid, component, type, time);
+      };
+  }
+  function devtoolsComponentEmit(component, event, params) {
+      emit("component:emit" /* COMPONENT_EMIT */, component.appContext.app, component, event, params);
+  }
+
+  function emit$1(instance, event, ...rawArgs) {
+      if (instance.isUnmounted)
+          return;
+      const props = instance.vnode.props || EMPTY_OBJ;
+      {
+          const { emitsOptions, propsOptions: [propsOptions] } = instance;
+          if (emitsOptions) {
+              if (!(event in emitsOptions) &&
+                  !(false )) {
+                  if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {
+                      warn$1(`Component emitted event "${event}" but it is neither declared in ` +
+                          `the emits option nor as an "${toHandlerKey(event)}" prop.`);
+                  }
+              }
+              else {
+                  const validator = emitsOptions[event];
+                  if (isFunction(validator)) {
+                      const isValid = validator(...rawArgs);
+                      if (!isValid) {
+                          warn$1(`Invalid event arguments: event validation failed for event "${event}".`);
+                      }
+                  }
+              }
+          }
+      }
+      let args = rawArgs;
+      const isModelListener = event.startsWith('update:');
+      // for v-model update:xxx events, apply modifiers on args
+      const modelArg = isModelListener && event.slice(7);
+      if (modelArg && modelArg in props) {
+          const modifiersKey = `${modelArg === 'modelValue' ? 'model' : modelArg}Modifiers`;
+          const { number, trim } = props[modifiersKey] || EMPTY_OBJ;
+          if (trim) {
+              args = rawArgs.map(a => a.trim());
+          }
+          if (number) {
+              args = rawArgs.map(toNumber);
+          }
+      }
+      {
+          devtoolsComponentEmit(instance, event, args);
+      }
+      {
+          const lowerCaseEvent = event.toLowerCase();
+          if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {
+              warn$1(`Event "${lowerCaseEvent}" is emitted in component ` +
+                  `${formatComponentName(instance, instance.type)} but the handler is registered for "${event}". ` +
+                  `Note that HTML attributes are case-insensitive and you cannot use ` +
+                  `v-on to listen to camelCase events when using in-DOM templates. ` +
+                  `You should probably use "${hyphenate(event)}" instead of "${event}".`);
+          }
+      }
+      let handlerName;
+      let handler = props[(handlerName = toHandlerKey(event))] ||
+          // also try camelCase event handler (#2249)
+          props[(handlerName = toHandlerKey(camelize(event)))];
+      // for v-model update:xxx events, also trigger kebab-case equivalent
+      // for props passed via kebab-case
+      if (!handler && isModelListener) {
+          handler = props[(handlerName = toHandlerKey(hyphenate(event)))];
+      }
+      if (handler) {
+          callWithAsyncErrorHandling(handler, instance, 6 /* COMPONENT_EVENT_HANDLER */, args);
+      }
+      const onceHandler = props[handlerName + `Once`];
+      if (onceHandler) {
+          if (!instance.emitted) {
+              instance.emitted = {};
+          }
+          else if (instance.emitted[handlerName]) {
+              return;
+          }
+          instance.emitted[handlerName] = true;
+          callWithAsyncErrorHandling(onceHandler, instance, 6 /* COMPONENT_EVENT_HANDLER */, args);
+      }
+  }
+  function normalizeEmitsOptions(comp, appContext, asMixin = false) {
+      const cache = appContext.emitsCache;
+      const cached = cache.get(comp);
+      if (cached !== undefined) {
+          return cached;
+      }
+      const raw = comp.emits;
+      let normalized = {};
+      // apply mixin/extends props
+      let hasExtends = false;
+      if (!isFunction(comp)) {
+          const extendEmits = (raw) => {
+              const normalizedFromExtend = normalizeEmitsOptions(raw, appContext, true);
+              if (normalizedFromExtend) {
+                  hasExtends = true;
+                  extend(normalized, normalizedFromExtend);
+              }
+          };
+          if (!asMixin && appContext.mixins.length) {
+              appContext.mixins.forEach(extendEmits);
+          }
+          if (comp.extends) {
+              extendEmits(comp.extends);
+          }
+          if (comp.mixins) {
+              comp.mixins.forEach(extendEmits);
+          }
+      }
+      if (!raw && !hasExtends) {
+          cache.set(comp, null);
+          return null;
+      }
+      if (isArray(raw)) {
+          raw.forEach(key => (normalized[key] = null));
+      }
+      else {
+          extend(normalized, raw);
+      }
+      cache.set(comp, normalized);
+      return normalized;
+  }
+  // Check if an incoming prop key is a declared emit event listener.
+  // e.g. With `emits: { click: null }`, props named `onClick` and `onclick` are
+  // both considered matched listeners.
+  function isEmitListener(options, key) {
+      if (!options || !isOn(key)) {
+          return false;
+      }
+      key = key.slice(2).replace(/Once$/, '');
+      return (hasOwn(options, key[0].toLowerCase() + key.slice(1)) ||
+          hasOwn(options, hyphenate(key)) ||
+          hasOwn(options, key));
+  }
+
+  /**
+   * mark the current rendering instance for asset resolution (e.g.
+   * resolveComponent, resolveDirective) during render
+   */
+  let currentRenderingInstance = null;
+  let currentScopeId = null;
+  /**
+   * Note: rendering calls maybe nested. The function returns the parent rendering
+   * instance if present, which should be restored after the render is done:
+   *
+   * ```js
+   * const prev = setCurrentRenderingInstance(i)
+   * // ...render
+   * setCurrentRenderingInstance(prev)
+   * ```
+   */
+  function setCurrentRenderingInstance(instance) {
+      const prev = currentRenderingInstance;
+      currentRenderingInstance = instance;
+      currentScopeId = (instance && instance.type.__scopeId) || null;
+      return prev;
+  }
+  /**
+   * Set scope id when creating hoisted vnodes.
+   * @private compiler helper
+   */
+  function pushScopeId(id) {
+      currentScopeId = id;
+  }
+  /**
+   * Technically we no longer need this after 3.0.8 but we need to keep the same
+   * API for backwards compat w/ code generated by compilers.
+   * @private
+   */
+  function popScopeId() {
+      currentScopeId = null;
+  }
+  /**
+   * Only for backwards compat
+   * @private
+   */
+  const withScopeId = (_id) => withCtx;
+  /**
+   * Wrap a slot function to memoize current rendering instance
+   * @private compiler helper
+   */
+  function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot // false only
+  ) {
+      if (!ctx)
+          return fn;
+      // already normalized
+      if (fn._n) {
+          return fn;
+      }
+      const renderFnWithContext = (...args) => {
+          // If a user calls a compiled slot inside a template expression (#1745), it
+          // can mess up block tracking, so by default we disable block tracking and
+          // force bail out when invoking a compiled slot (indicated by the ._d flag).
+          // This isn't necessary if rendering a compiled `<slot>`, so we flip the
+          // ._d flag off when invoking the wrapped fn inside `renderSlot`.
+          if (renderFnWithContext._d) {
+              setBlockTracking(-1);
+          }
+          const prevInstance = setCurrentRenderingInstance(ctx);
+          const res = fn(...args);
+          setCurrentRenderingInstance(prevInstance);
+          if (renderFnWithContext._d) {
+              setBlockTracking(1);
+          }
+          {
+              devtoolsComponentUpdated(ctx);
+          }
+          return res;
+      };
+      // mark normalized to avoid duplicated wrapping
+      renderFnWithContext._n = true;
+      // mark this as compiled by default
+      // this is used in vnode.ts -> normalizeChildren() to set the slot
+      // rendering flag.
+      renderFnWithContext._c = true;
+      // disable block tracking by default
+      renderFnWithContext._d = true;
+      return renderFnWithContext;
+  }
+
+  /**
+   * dev only flag to track whether $attrs was used during render.
+   * If $attrs was used during render then the warning for failed attrs
+   * fallthrough can be suppressed.
+   */
+  let accessedAttrs = false;
+  function markAttrsAccessed() {
+      accessedAttrs = true;
+  }
+  function renderComponentRoot(instance) {
+      const { type: Component, vnode, proxy, withProxy, props, propsOptions: [propsOptions], slots, attrs, emit, render, renderCache, data, setupState, ctx, inheritAttrs } = instance;
+      let result;
+      let fallthroughAttrs;
+      const prev = setCurrentRenderingInstance(instance);
+      {
+          accessedAttrs = false;
+      }
+      try {
+          if (vnode.shapeFlag & 4 /* STATEFUL_COMPONENT */) {
+              // withProxy is a proxy with a different `has` trap only for
+              // runtime-compiled render functions using `with` block.
+              const proxyToUse = withProxy || proxy;
+              result = normalizeVNode(render.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx));
+              fallthroughAttrs = attrs;
+          }
+          else {
+              // functional
+              const render = Component;
+              // in dev, mark attrs accessed if optional props (attrs === props)
+              if (true && attrs === props) {
+                  markAttrsAccessed();
+              }
+              result = normalizeVNode(render.length > 1
+                  ? render(props, true
+                      ? {
+                          get attrs() {
+                              markAttrsAccessed();
+                              return attrs;
+                          },
+                          slots,
+                          emit
+                      }
+                      : { attrs, slots, emit })
+                  : render(props, null /* we know it doesn't need it */));
+              fallthroughAttrs = Component.props
+                  ? attrs
+                  : getFunctionalFallthrough(attrs);
+          }
+      }
+      catch (err) {
+          blockStack.length = 0;
+          handleError(err, instance, 1 /* RENDER_FUNCTION */);
+          result = createVNode(Comment);
+      }
+      // attr merging
+      // in dev mode, comments are preserved, and it's possible for a template
+      // to have comments along side the root element which makes it a fragment
+      let root = result;
+      let setRoot = undefined;
+      if (result.patchFlag > 0 &&
+          result.patchFlag & 2048 /* DEV_ROOT_FRAGMENT */) {
+          [root, setRoot] = getChildRoot(result);
+      }
+      if (fallthroughAttrs && inheritAttrs !== false) {
+          const keys = Object.keys(fallthroughAttrs);
+          const { shapeFlag } = root;
+          if (keys.length) {
+              if (shapeFlag & (1 /* ELEMENT */ | 6 /* COMPONENT */)) {
+                  if (propsOptions && keys.some(isModelListener)) {
+                      // If a v-model listener (onUpdate:xxx) has a corresponding declared
+                      // prop, it indicates this component expects to handle v-model and
+                      // it should not fallthrough.
+                      // related: #1543, #1643, #1989
+                      fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions);
+                  }
+                  root = cloneVNode(root, fallthroughAttrs);
+              }
+              else if (!accessedAttrs && root.type !== Comment) {
+                  const allAttrs = Object.keys(attrs);
+                  const eventAttrs = [];
+                  const extraAttrs = [];
+                  for (let i = 0, l = allAttrs.length; i < l; i++) {
+                      const key = allAttrs[i];
+                      if (isOn(key)) {
+                          // ignore v-model handlers when they fail to fallthrough
+                          if (!isModelListener(key)) {
+                              // remove `on`, lowercase first letter to reflect event casing
+                              // accurately
+                              eventAttrs.push(key[2].toLowerCase() + key.slice(3));
+                          }
+                      }
+                      else {
+                          extraAttrs.push(key);
+                      }
+                  }
+                  if (extraAttrs.length) {
+                      warn$1(`Extraneous non-props attributes (` +
+                          `${extraAttrs.join(', ')}) ` +
+                          `were passed to component but could not be automatically inherited ` +
+                          `because component renders fragment or text root nodes.`);
+                  }
+                  if (eventAttrs.length) {
+                      warn$1(`Extraneous non-emits event listeners (` +
+                          `${eventAttrs.join(', ')}) ` +
+                          `were passed to component but could not be automatically inherited ` +
+                          `because component renders fragment or text root nodes. ` +
+                          `If the listener is intended to be a component custom event listener only, ` +
+                          `declare it using the "emits" option.`);
+                  }
+              }
+          }
+      }
+      // inherit directives
+      if (vnode.dirs) {
+          if (!isElementRoot(root)) {
+              warn$1(`Runtime directive used on component with non-element root node. ` +
+                  `The directives will not function as intended.`);
+          }
+          // clone before mutating since the root may be a hoisted vnode
+          root = cloneVNode(root);
+          root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;
+      }
+      // inherit transition data
+      if (vnode.transition) {
+          if (!isElementRoot(root)) {
+              warn$1(`Component inside <Transition> renders non-element root node ` +
+                  `that cannot be animated.`);
+          }
+          root.transition = vnode.transition;
+      }
+      if (setRoot) {
+          setRoot(root);
+      }
+      else {
+          result = root;
+      }
+      setCurrentRenderingInstance(prev);
+      return result;
+  }
+  /**
+   * dev only
+   * In dev mode, template root level comments are rendered, which turns the
+   * template into a fragment root, but we need to locate the single element
+   * root for attrs and scope id processing.
+   */
+  const getChildRoot = (vnode) => {
+      const rawChildren = vnode.children;
+      const dynamicChildren = vnode.dynamicChildren;
+      const childRoot = filterSingleRoot(rawChildren);
+      if (!childRoot) {
+          return [vnode, undefined];
+      }
+      const index = rawChildren.indexOf(childRoot);
+      const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;
+      const setRoot = (updatedRoot) => {
+          rawChildren[index] = updatedRoot;
+          if (dynamicChildren) {
+              if (dynamicIndex > -1) {
+                  dynamicChildren[dynamicIndex] = updatedRoot;
+              }
+              else if (updatedRoot.patchFlag > 0) {
+                  vnode.dynamicChildren = [...dynamicChildren, updatedRoot];
+              }
+          }
+      };
+      return [normalizeVNode(childRoot), setRoot];
+  };
+  function filterSingleRoot(children) {
+      let singleRoot;
+      for (let i = 0; i < children.length; i++) {
+          const child = children[i];
+          if (isVNode(child)) {
+              // ignore user comment
+              if (child.type !== Comment || child.children === 'v-if') {
+                  if (singleRoot) {
+                      // has more than 1 non-comment child, return now
+                      return;
+                  }
+                  else {
+                      singleRoot = child;
+                  }
+              }
+          }
+          else {
+              return;
+          }
+      }
+      return singleRoot;
+  }
+  const getFunctionalFallthrough = (attrs) => {
+      let res;
+      for (const key in attrs) {
+          if (key === 'class' || key === 'style' || isOn(key)) {
+              (res || (res = {}))[key] = attrs[key];
+          }
+      }
+      return res;
+  };
+  const filterModelListeners = (attrs, props) => {
+      const res = {};
+      for (const key in attrs) {
+          if (!isModelListener(key) || !(key.slice(9) in props)) {
+              res[key] = attrs[key];
+          }
+      }
+      return res;
+  };
+  const isElementRoot = (vnode) => {
+      return (vnode.shapeFlag & (6 /* COMPONENT */ | 1 /* ELEMENT */) ||
+          vnode.type === Comment // potential v-if branch switch
+      );
+  };
+  function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
+      const { props: prevProps, children: prevChildren, component } = prevVNode;
+      const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;
+      const emits = component.emitsOptions;
+      // Parent component's render function was hot-updated. Since this may have
+      // caused the child component's slots content to have changed, we need to
+      // force the child to update as well.
+      if ((prevChildren || nextChildren) && isHmrUpdating) {
+          return true;
+      }
+      // force child update for runtime directive or transition on component vnode.
+      if (nextVNode.dirs || nextVNode.transition) {
+          return true;
+      }
+      if (optimized && patchFlag >= 0) {
+          if (patchFlag & 1024 /* DYNAMIC_SLOTS */) {
+              // slot content that references values that might have changed,
+              // e.g. in a v-for
+              return true;
+          }
+          if (patchFlag & 16 /* FULL_PROPS */) {
+              if (!prevProps) {
+                  return !!nextProps;
+              }
+              // presence of this flag indicates props are always non-null
+              return hasPropsChanged(prevProps, nextProps, emits);
+          }
+          else if (patchFlag & 8 /* PROPS */) {
+              const dynamicProps = nextVNode.dynamicProps;
+              for (let i = 0; i < dynamicProps.length; i++) {
+                  const key = dynamicProps[i];
+                  if (nextProps[key] !== prevProps[key] &&
+                      !isEmitListener(emits, key)) {
+                      return true;
+                  }
+              }
+          }
+      }
+      else {
+          // this path is only taken by manually written render functions
+          // so presence of any children leads to a forced update
+          if (prevChildren || nextChildren) {
+              if (!nextChildren || !nextChildren.$stable) {
+                  return true;
+              }
+          }
+          if (prevProps === nextProps) {
+              return false;
+          }
+          if (!prevProps) {
+              return !!nextProps;
+          }
+          if (!nextProps) {
+              return true;
+          }
+          return hasPropsChanged(prevProps, nextProps, emits);
+      }
+      return false;
+  }
+  function hasPropsChanged(prevProps, nextProps, emitsOptions) {
+      const nextKeys = Object.keys(nextProps);
+      if (nextKeys.length !== Object.keys(prevProps).length) {
+          return true;
+      }
+      for (let i = 0; i < nextKeys.length; i++) {
+          const key = nextKeys[i];
+          if (nextProps[key] !== prevProps[key] &&
+              !isEmitListener(emitsOptions, key)) {
+              return true;
+          }
+      }
+      return false;
+  }
+  function updateHOCHostEl({ vnode, parent }, el // HostNode
+  ) {
+      while (parent && parent.subTree === vnode) {
+          (vnode = parent.vnode).el = el;
+          parent = parent.parent;
+      }
+  }
+
+  const isSuspense = (type) => type.__isSuspense;
+  // Suspense exposes a component-like API, and is treated like a component
+  // in the compiler, but internally it's a special built-in type that hooks
+  // directly into the renderer.
+  const SuspenseImpl = {
+      name: 'Suspense',
+      // In order to make Suspense tree-shakable, we need to avoid importing it
+      // directly in the renderer. The renderer checks for the __isSuspense flag
+      // on a vnode's type and calls the `process` method, passing in renderer
+      // internals.
+      __isSuspense: true,
+      process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, 
+      // platform-specific impl passed from renderer
+      rendererInternals) {
+          if (n1 == null) {
+              mountSuspense(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals);
+          }
+          else {
+              patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, rendererInternals);
+          }
+      },
+      hydrate: hydrateSuspense,
+      create: createSuspenseBoundary,
+      normalize: normalizeSuspenseChildren
+  };
+  // Force-casted public typing for h and TSX props inference
+  const Suspense = (SuspenseImpl );
+  function triggerEvent(vnode, name) {
+      const eventListener = vnode.props && vnode.props[name];
+      if (isFunction(eventListener)) {
+          eventListener();
+      }
+  }
+  function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {
+      const { p: patch, o: { createElement } } = rendererInternals;
+      const hiddenContainer = createElement('div');
+      const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals));
+      // start mounting the content subtree in an off-dom container
+      patch(null, (suspense.pendingBranch = vnode.ssContent), hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds);
+      // now check if we have encountered any async deps
+      if (suspense.deps > 0) {
+          // has async
+          // invoke @fallback event
+          triggerEvent(vnode, 'onPending');
+          triggerEvent(vnode, 'onFallback');
+          // mount the fallback tree
+          patch(null, vnode.ssFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context
+          isSVG, slotScopeIds);
+          setActiveBranch(suspense, vnode.ssFallback);
+      }
+      else {
+          // Suspense has no async deps. Just resolve.
+          suspense.resolve();
+      }
+  }
+  function patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {
+      const suspense = (n2.suspense = n1.suspense);
+      suspense.vnode = n2;
+      n2.el = n1.el;
+      const newBranch = n2.ssContent;
+      const newFallback = n2.ssFallback;
+      const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;
+      if (pendingBranch) {
+          suspense.pendingBranch = newBranch;
+          if (isSameVNodeType(newBranch, pendingBranch)) {
+              // same root type but content may have changed.
+              patch(pendingBranch, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);
+              if (suspense.deps <= 0) {
+                  suspense.resolve();
+              }
+              else if (isInFallback) {
+                  patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context
+                  isSVG, slotScopeIds, optimized);
+                  setActiveBranch(suspense, newFallback);
+              }
+          }
+          else {
+              // toggled before pending tree is resolved
+              suspense.pendingId++;
+              if (isHydrating) {
+                  // if toggled before hydration is finished, the current DOM tree is
+                  // no longer valid. set it as the active branch so it will be unmounted
+                  // when resolved
+                  suspense.isHydrating = false;
+                  suspense.activeBranch = pendingBranch;
+              }
+              else {
+                  unmount(pendingBranch, parentComponent, suspense);
+              }
+              // increment pending ID. this is used to invalidate async callbacks
+              // reset suspense state
+              suspense.deps = 0;
+              // discard effects from pending branch
+              suspense.effects.length = 0;
+              // discard previous container
+              suspense.hiddenContainer = createElement('div');
+              if (isInFallback) {
+                  // already in fallback state
+                  patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);
+                  if (suspense.deps <= 0) {
+                      suspense.resolve();
+                  }
+                  else {
+                      patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context
+                      isSVG, slotScopeIds, optimized);
+                      setActiveBranch(suspense, newFallback);
+                  }
+              }
+              else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {
+                  // toggled "back" to current active branch
+                  patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);
+                  // force resolve
+                  suspense.resolve(true);
+              }
+              else {
+                  // switched to a 3rd branch
+                  patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);
+                  if (suspense.deps <= 0) {
+                      suspense.resolve();
+                  }
+              }
+          }
+      }
+      else {
+          if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {
+              // root did not change, just normal patch
+              patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);
+              setActiveBranch(suspense, newBranch);
+          }
+          else {
+              // root node toggled
+              // invoke @pending event
+              triggerEvent(n2, 'onPending');
+              // mount pending branch in off-dom container
+              suspense.pendingBranch = newBranch;
+              suspense.pendingId++;
+              patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);
+              if (suspense.deps <= 0) {
+                  // incoming branch has no async deps, resolve now.
+                  suspense.resolve();
+              }
+              else {
+                  const { timeout, pendingId } = suspense;
+                  if (timeout > 0) {
+                      setTimeout(() => {
+                          if (suspense.pendingId === pendingId) {
+                              suspense.fallback(newFallback);
+                          }
+                      }, timeout);
+                  }
+                  else if (timeout === 0) {
+                      suspense.fallback(newFallback);
+                  }
+              }
+          }
+      }
+  }
+  let hasWarned = false;
+  function createSuspenseBoundary(vnode, parent, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) {
+      /* istanbul ignore if */
+      if (!hasWarned) {
+          hasWarned = true;
+          // @ts-ignore `console.info` cannot be null error
+          console[console.info ? 'info' : 'log'](`<Suspense> is an experimental feature and its API will likely change.`);
+      }
+      const { p: patch, m: move, um: unmount, n: next, o: { parentNode, remove } } = rendererInternals;
+      const timeout = toNumber(vnode.props && vnode.props.timeout);
+      const suspense = {
+          vnode,
+          parent,
+          parentComponent,
+          isSVG,
+          container,
+          hiddenContainer,
+          anchor,
+          deps: 0,
+          pendingId: 0,
+          timeout: typeof timeout === 'number' ? timeout : -1,
+          activeBranch: null,
+          pendingBranch: null,
+          isInFallback: true,
+          isHydrating,
+          isUnmounted: false,
+          effects: [],
+          resolve(resume = false) {
+              {
+                  if (!resume && !suspense.pendingBranch) {
+                      throw new Error(`suspense.resolve() is called without a pending branch.`);
+                  }
+                  if (suspense.isUnmounted) {
+                      throw new Error(`suspense.resolve() is called on an already unmounted suspense boundary.`);
+                  }
+              }
+              const { vnode, activeBranch, pendingBranch, pendingId, effects, parentComponent, container } = suspense;
+              if (suspense.isHydrating) {
+                  suspense.isHydrating = false;
+              }
+              else if (!resume) {
+                  const delayEnter = activeBranch &&
+                      pendingBranch.transition &&
+                      pendingBranch.transition.mode === 'out-in';
+                  if (delayEnter) {
+                      activeBranch.transition.afterLeave = () => {
+                          if (pendingId === suspense.pendingId) {
+                              move(pendingBranch, container, anchor, 0 /* ENTER */);
+                          }
+                      };
+                  }
+                  // this is initial anchor on mount
+                  let { anchor } = suspense;
+                  // unmount current active tree
+                  if (activeBranch) {
+                      // if the fallback tree was mounted, it may have been moved
+                      // as part of a parent suspense. get the latest anchor for insertion
+                      anchor = next(activeBranch);
+                      unmount(activeBranch, parentComponent, suspense, true);
+                  }
+                  if (!delayEnter) {
+                      // move content from off-dom container to actual container
+                      move(pendingBranch, container, anchor, 0 /* ENTER */);
+                  }
+              }
+              setActiveBranch(suspense, pendingBranch);
+              suspense.pendingBranch = null;
+              suspense.isInFallback = false;
+              // flush buffered effects
+              // check if there is a pending parent suspense
+              let parent = suspense.parent;
+              let hasUnresolvedAncestor = false;
+              while (parent) {
+                  if (parent.pendingBranch) {
+                      // found a pending parent suspense, merge buffered post jobs
+                      // into that parent
+                      parent.effects.push(...effects);
+                      hasUnresolvedAncestor = true;
+                      break;
+                  }
+                  parent = parent.parent;
+              }
+              // no pending parent suspense, flush all jobs
+              if (!hasUnresolvedAncestor) {
+                  queuePostFlushCb(effects);
+              }
+              suspense.effects = [];
+              // invoke @resolve event
+              triggerEvent(vnode, 'onResolve');
+          },
+          fallback(fallbackVNode) {
+              if (!suspense.pendingBranch) {
+                  return;
+              }
+              const { vnode, activeBranch, parentComponent, container, isSVG } = suspense;
+              // invoke @fallback event
+              triggerEvent(vnode, 'onFallback');
+              const anchor = next(activeBranch);
+              const mountFallback = () => {
+                  if (!suspense.isInFallback) {
+                      return;
+                  }
+                  // mount the fallback tree
+                  patch(null, fallbackVNode, container, anchor, parentComponent, null, // fallback tree will not have suspense context
+                  isSVG, slotScopeIds, optimized);
+                  setActiveBranch(suspense, fallbackVNode);
+              };
+              const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === 'out-in';
+              if (delayEnter) {
+                  activeBranch.transition.afterLeave = mountFallback;
+              }
+              suspense.isInFallback = true;
+              // unmount current active branch
+              unmount(activeBranch, parentComponent, null, // no suspense so unmount hooks fire now
+              true // shouldRemove
+              );
+              if (!delayEnter) {
+                  mountFallback();
+              }
+          },
+          move(container, anchor, type) {
+              suspense.activeBranch &&
+                  move(suspense.activeBranch, container, anchor, type);
+              suspense.container = container;
+          },
+          next() {
+              return suspense.activeBranch && next(suspense.activeBranch);
+          },
+          registerDep(instance, setupRenderEffect) {
+              const isInPendingSuspense = !!suspense.pendingBranch;
+              if (isInPendingSuspense) {
+                  suspense.deps++;
+              }
+              const hydratedEl = instance.vnode.el;
+              instance
+                  .asyncDep.catch(err => {
+                  handleError(err, instance, 0 /* SETUP_FUNCTION */);
+              })
+                  .then(asyncSetupResult => {
+                  // retry when the setup() promise resolves.
+                  // component may have been unmounted before resolve.
+                  if (instance.isUnmounted ||
+                      suspense.isUnmounted ||
+                      suspense.pendingId !== instance.suspenseId) {
+                      return;
+                  }
+                  // retry from this component
+                  instance.asyncResolved = true;
+                  const { vnode } = instance;
+                  {
+                      pushWarningContext(vnode);
+                  }
+                  handleSetupResult(instance, asyncSetupResult, false);
+                  if (hydratedEl) {
+                      // vnode may have been replaced if an update happened before the
+                      // async dep is resolved.
+                      vnode.el = hydratedEl;
+                  }
+                  const placeholder = !hydratedEl && instance.subTree.el;
+                  setupRenderEffect(instance, vnode, 
+                  // component may have been moved before resolve.
+                  // if this is not a hydration, instance.subTree will be the comment
+                  // placeholder.
+                  parentNode(hydratedEl || instance.subTree.el), 
+                  // anchor will not be used if this is hydration, so only need to
+                  // consider the comment placeholder case.
+                  hydratedEl ? null : next(instance.subTree), suspense, isSVG, optimized);
+                  if (placeholder) {
+                      remove(placeholder);
+                  }
+                  updateHOCHostEl(instance, vnode.el);
+                  {
+                      popWarningContext();
+                  }
+                  // only decrease deps count if suspense is not already resolved
+                  if (isInPendingSuspense && --suspense.deps === 0) {
+                      suspense.resolve();
+                  }
+              });
+          },
+          unmount(parentSuspense, doRemove) {
+              suspense.isUnmounted = true;
+              if (suspense.activeBranch) {
+                  unmount(suspense.activeBranch, parentComponent, parentSuspense, doRemove);
+              }
+              if (suspense.pendingBranch) {
+                  unmount(suspense.pendingBranch, parentComponent, parentSuspense, doRemove);
+              }
+          }
+      };
+      return suspense;
+  }
+  function hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) {
+      /* eslint-disable no-restricted-globals */
+      const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, node.parentNode, document.createElement('div'), null, isSVG, slotScopeIds, optimized, rendererInternals, true /* hydrating */));
+      // there are two possible scenarios for server-rendered suspense:
+      // - success: ssr content should be fully resolved
+      // - failure: ssr content should be the fallback branch.
+      // however, on the client we don't really know if it has failed or not
+      // attempt to hydrate the DOM assuming it has succeeded, but we still
+      // need to construct a suspense boundary first
+      const result = hydrateNode(node, (suspense.pendingBranch = vnode.ssContent), parentComponent, suspense, slotScopeIds, optimized);
+      if (suspense.deps === 0) {
+          suspense.resolve();
+      }
+      return result;
+      /* eslint-enable no-restricted-globals */
+  }
+  function normalizeSuspenseChildren(vnode) {
+      const { shapeFlag, children } = vnode;
+      const isSlotChildren = shapeFlag & 32 /* SLOTS_CHILDREN */;
+      vnode.ssContent = normalizeSuspenseSlot(isSlotChildren ? children.default : children);
+      vnode.ssFallback = isSlotChildren
+          ? normalizeSuspenseSlot(children.fallback)
+          : createVNode(Comment);
+  }
+  function normalizeSuspenseSlot(s) {
+      let block;
+      if (isFunction(s)) {
+          const trackBlock = isBlockTreeEnabled && s._c;
+          if (trackBlock) {
+              // disableTracking: false
+              // allow block tracking for compiled slots
+              // (see ./componentRenderContext.ts)
+              s._d = false;
+              openBlock();
+          }
+          s = s();
+          if (trackBlock) {
+              s._d = true;
+              block = currentBlock;
+              closeBlock();
+          }
+      }
+      if (isArray(s)) {
+          const singleChild = filterSingleRoot(s);
+          if (!singleChild) {
+              warn$1(`<Suspense> slots expect a single root node.`);
+          }
+          s = singleChild;
+      }
+      s = normalizeVNode(s);
+      if (block && !s.dynamicChildren) {
+          s.dynamicChildren = block.filter(c => c !== s);
+      }
+      return s;
+  }
+  function queueEffectWithSuspense(fn, suspense) {
+      if (suspense && suspense.pendingBranch) {
+          if (isArray(fn)) {
+              suspense.effects.push(...fn);
+          }
+          else {
+              suspense.effects.push(fn);
+          }
+      }
+      else {
+          queuePostFlushCb(fn);
+      }
+  }
+  function setActiveBranch(suspense, branch) {
+      suspense.activeBranch = branch;
+      const { vnode, parentComponent } = suspense;
+      const el = (vnode.el = branch.el);
+      // in case suspense is the root node of a component,
+      // recursively update the HOC el
+      if (parentComponent && parentComponent.subTree === vnode) {
+          parentComponent.vnode.el = el;
+          updateHOCHostEl(parentComponent, el);
+      }
+  }
+
+  function provide(key, value) {
+      if (!currentInstance) {
+          {
+              warn$1(`provide() can only be used inside setup().`);
+          }
+      }
+      else {
+          let provides = currentInstance.provides;
+          // by default an instance inherits its parent's provides object
+          // but when it needs to provide values of its own, it creates its
+          // own provides object using parent provides object as prototype.
+          // this way in `inject` we can simply look up injections from direct
+          // parent and let the prototype chain do the work.
+          const parentProvides = currentInstance.parent && currentInstance.parent.provides;
+          if (parentProvides === provides) {
+              provides = currentInstance.provides = Object.create(parentProvides);
+          }
+          // TS doesn't allow symbol as index type
+          provides[key] = value;
+      }
+  }
+  function inject(key, defaultValue, treatDefaultAsFactory = false) {
+      // fallback to `currentRenderingInstance` so that this can be called in
+      // a functional component
+      const instance = currentInstance || currentRenderingInstance;
+      if (instance) {
+          // #2400
+          // to support `app.use` plugins,
+          // fallback to appContext's `provides` if the instance is at root
+          const provides = instance.parent == null
+              ? instance.vnode.appContext && instance.vnode.appContext.provides
+              : instance.parent.provides;
+          if (provides && key in provides) {
+              // TS doesn't allow symbol as index type
+              return provides[key];
+          }
+          else if (arguments.length > 1) {
+              return treatDefaultAsFactory && isFunction(defaultValue)
+                  ? defaultValue.call(instance.proxy)
+                  : defaultValue;
+          }
+          else {
+              warn$1(`injection "${String(key)}" not found.`);
+          }
+      }
+      else {
+          warn$1(`inject() can only be used inside setup() or functional components.`);
+      }
+  }
+
+  // Simple effect.
+  function watchEffect(effect, options) {
+      return doWatch(effect, null, options);
+  }
+  function watchPostEffect(effect, options) {
+      return doWatch(effect, null, (Object.assign(Object.assign({}, options), { flush: 'post' }) ));
+  }
+  function watchSyncEffect(effect, options) {
+      return doWatch(effect, null, (Object.assign(Object.assign({}, options), { flush: 'sync' }) ));
+  }
+  // initial value for watchers to trigger on undefined initial values
+  const INITIAL_WATCHER_VALUE = {};
+  // implementation
+  function watch(source, cb, options) {
+      if (!isFunction(cb)) {
+          warn$1(`\`watch(fn, options?)\` signature has been moved to a separate API. ` +
+              `Use \`watchEffect(fn, options?)\` instead. \`watch\` now only ` +
+              `supports \`watch(source, cb, options?) signature.`);
+      }
+      return doWatch(source, cb, options);
+  }
+  function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ) {
+      if (!cb) {
+          if (immediate !== undefined) {
+              warn$1(`watch() "immediate" option is only respected when using the ` +
+                  `watch(source, callback, options?) signature.`);
+          }
+          if (deep !== undefined) {
+              warn$1(`watch() "deep" option is only respected when using the ` +
+                  `watch(source, callback, options?) signature.`);
+          }
+      }
+      const warnInvalidSource = (s) => {
+          warn$1(`Invalid watch source: `, s, `A watch source can only be a getter/effect function, a ref, ` +
+              `a reactive object, or an array of these types.`);
+      };
+      const instance = currentInstance;
+      let getter;
+      let forceTrigger = false;
+      let isMultiSource = false;
+      if (isRef(source)) {
+          getter = () => source.value;
+          forceTrigger = isShallow(source);
+      }
+      else if (isReactive(source)) {
+          getter = () => source;
+          deep = true;
+      }
+      else if (isArray(source)) {
+          isMultiSource = true;
+          forceTrigger = source.some(s => isReactive(s) || isShallow(s));
+          getter = () => source.map(s => {
+              if (isRef(s)) {
+                  return s.value;
+              }
+              else if (isReactive(s)) {
+                  return traverse(s);
+              }
+              else if (isFunction(s)) {
+                  return callWithErrorHandling(s, instance, 2 /* WATCH_GETTER */);
+              }
+              else {
+                  warnInvalidSource(s);
+              }
+          });
+      }
+      else if (isFunction(source)) {
+          if (cb) {
+              // getter with cb
+              getter = () => callWithErrorHandling(source, instance, 2 /* WATCH_GETTER */);
+          }
+          else {
+              // no cb -> simple effect
+              getter = () => {
+                  if (instance && instance.isUnmounted) {
+                      return;
+                  }
+                  if (cleanup) {
+                      cleanup();
+                  }
+                  return callWithAsyncErrorHandling(source, instance, 3 /* WATCH_CALLBACK */, [onCleanup]);
+              };
+          }
+      }
+      else {
+          getter = NOOP;
+          warnInvalidSource(source);
+      }
+      if (cb && deep) {
+          const baseGetter = getter;
+          getter = () => traverse(baseGetter());
+      }
+      let cleanup;
+      let onCleanup = (fn) => {
+          cleanup = effect.onStop = () => {
+              callWithErrorHandling(fn, instance, 4 /* WATCH_CLEANUP */);
+          };
+      };
+      let oldValue = isMultiSource ? [] : INITIAL_WATCHER_VALUE;
+      const job = () => {
+          if (!effect.active) {
+              return;
+          }
+          if (cb) {
+              // watch(source, cb)
+              const newValue = effect.run();
+              if (deep ||
+                  forceTrigger ||
+                  (isMultiSource
+                      ? newValue.some((v, i) => hasChanged(v, oldValue[i]))
+                      : hasChanged(newValue, oldValue)) ||
+                  (false  )) {
+                  // cleanup before running cb again
+                  if (cleanup) {
+                      cleanup();
+                  }
+                  callWithAsyncErrorHandling(cb, instance, 3 /* WATCH_CALLBACK */, [
+                      newValue,
+                      // pass undefined as the old value when it's changed for the first time
+                      oldValue === INITIAL_WATCHER_VALUE ? undefined : oldValue,
+                      onCleanup
+                  ]);
+                  oldValue = newValue;
+              }
+          }
+          else {
+              // watchEffect
+              effect.run();
+          }
+      };
+      // important: mark the job as a watcher callback so that scheduler knows
+      // it is allowed to self-trigger (#1727)
+      job.allowRecurse = !!cb;
+      let scheduler;
+      if (flush === 'sync') {
+          scheduler = job; // the scheduler function gets called directly
+      }
+      else if (flush === 'post') {
+          scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);
+      }
+      else {
+          // default: 'pre'
+          scheduler = () => queuePreFlushCb(job);
+      }
+      const effect = new ReactiveEffect(getter, scheduler);
+      {
+          effect.onTrack = onTrack;
+          effect.onTrigger = onTrigger;
+      }
+      // initial run
+      if (cb) {
+          if (immediate) {
+              job();
+          }
+          else {
+              oldValue = effect.run();
+          }
+      }
+      else if (flush === 'post') {
+          queuePostRenderEffect(effect.run.bind(effect), instance && instance.suspense);
+      }
+      else {
+          effect.run();
+      }
+      return () => {
+          effect.stop();
+          if (instance && instance.scope) {
+              remove(instance.scope.effects, effect);
+          }
+      };
+  }
+  // this.$watch
+  function instanceWatch(source, value, options) {
+      const publicThis = this.proxy;
+      const getter = isString(source)
+          ? source.includes('.')
+              ? createPathGetter(publicThis, source)
+              : () => publicThis[source]
+          : source.bind(publicThis, publicThis);
+      let cb;
+      if (isFunction(value)) {
+          cb = value;
+      }
+      else {
+          cb = value.handler;
+          options = value;
+      }
+      const cur = currentInstance;
+      setCurrentInstance(this);
+      const res = doWatch(getter, cb.bind(publicThis), options);
+      if (cur) {
+          setCurrentInstance(cur);
+      }
+      else {
+          unsetCurrentInstance();
+      }
+      return res;
+  }
+  function createPathGetter(ctx, path) {
+      const segments = path.split('.');
+      return () => {
+          let cur = ctx;
+          for (let i = 0; i < segments.length && cur; i++) {
+              cur = cur[segments[i]];
+          }
+          return cur;
+      };
+  }
+  function traverse(value, seen) {
+      if (!isObject(value) || value["__v_skip" /* SKIP */]) {
+          return value;
+      }
+      seen = seen || new Set();
+      if (seen.has(value)) {
+          return value;
+      }
+      seen.add(value);
+      if (isRef(value)) {
+          traverse(value.value, seen);
+      }
+      else if (isArray(value)) {
+          for (let i = 0; i < value.length; i++) {
+              traverse(value[i], seen);
+          }
+      }
+      else if (isSet(value) || isMap(value)) {
+          value.forEach((v) => {
+              traverse(v, seen);
+          });
+      }
+      else if (isPlainObject(value)) {
+          for (const key in value) {
+              traverse(value[key], seen);
+          }
+      }
+      return value;
+  }
+
+  function useTransitionState() {
+      const state = {
+          isMounted: false,
+          isLeaving: false,
+          isUnmounting: false,
+          leavingVNodes: new Map()
+      };
+      onMounted(() => {
+          state.isMounted = true;
+      });
+      onBeforeUnmount(() => {
+          state.isUnmounting = true;
+      });
+      return state;
+  }
+  const TransitionHookValidator = [Function, Array];
+  const BaseTransitionImpl = {
+      name: `BaseTransition`,
+      props: {
+          mode: String,
+          appear: Boolean,
+          persisted: Boolean,
+          // enter
+          onBeforeEnter: TransitionHookValidator,
+          onEnter: TransitionHookValidator,
+          onAfterEnter: TransitionHookValidator,
+          onEnterCancelled: TransitionHookValidator,
+          // leave
+          onBeforeLeave: TransitionHookValidator,
+          onLeave: TransitionHookValidator,
+          onAfterLeave: TransitionHookValidator,
+          onLeaveCancelled: TransitionHookValidator,
+          // appear
+          onBeforeAppear: TransitionHookValidator,
+          onAppear: TransitionHookValidator,
+          onAfterAppear: TransitionHookValidator,
+          onAppearCancelled: TransitionHookValidator
+      },
+      setup(props, { slots }) {
+          const instance = getCurrentInstance();
+          const state = useTransitionState();
+          let prevTransitionKey;
+          return () => {
+              const children = slots.default && getTransitionRawChildren(slots.default(), true);
+              if (!children || !children.length) {
+                  return;
+              }
+              let child = children[0];
+              if (children.length > 1) {
+                  let hasFound = false;
+                  // locate first non-comment child
+                  for (const c of children) {
+                      if (c.type !== Comment) {
+                          if (hasFound) {
+                              // warn more than one non-comment child
+                              warn$1('<transition> can only be used on a single element or component. ' +
+                                  'Use <transition-group> for lists.');
+                              break;
+                          }
+                          child = c;
+                          hasFound = true;
+                      }
+                  }
+              }
+              // there's no need to track reactivity for these props so use the raw
+              // props for a bit better perf
+              const rawProps = toRaw(props);
+              const { mode } = rawProps;
+              // check mode
+              if (mode &&
+                  mode !== 'in-out' &&
+                  mode !== 'out-in' &&
+                  mode !== 'default') {
+                  warn$1(`invalid <transition> mode: ${mode}`);
+              }
+              if (state.isLeaving) {
+                  return emptyPlaceholder(child);
+              }
+              // in the case of <transition><keep-alive/></transition>, we need to
+              // compare the type of the kept-alive children.
+              const innerChild = getKeepAliveChild(child);
+              if (!innerChild) {
+                  return emptyPlaceholder(child);
+              }
+              const enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance);
+              setTransitionHooks(innerChild, enterHooks);
+              const oldChild = instance.subTree;
+              const oldInnerChild = oldChild && getKeepAliveChild(oldChild);
+              let transitionKeyChanged = false;
+              const { getTransitionKey } = innerChild.type;
+              if (getTransitionKey) {
+                  const key = getTransitionKey();
+                  if (prevTransitionKey === undefined) {
+                      prevTransitionKey = key;
+                  }
+                  else if (key !== prevTransitionKey) {
+                      prevTransitionKey = key;
+                      transitionKeyChanged = true;
+                  }
+              }
+              // handle mode
+              if (oldInnerChild &&
+                  oldInnerChild.type !== Comment &&
+                  (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {
+                  const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance);
+                  // update old tree's hooks in case of dynamic transition
+                  setTransitionHooks(oldInnerChild, leavingHooks);
+                  // switching between different views
+                  if (mode === 'out-in') {
+                      state.isLeaving = true;
+                      // return placeholder node and queue update when leave finishes
+                      leavingHooks.afterLeave = () => {
+                          state.isLeaving = false;
+                          instance.update();
+                      };
+                      return emptyPlaceholder(child);
+                  }
+                  else if (mode === 'in-out' && innerChild.type !== Comment) {
+                      leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {
+                          const leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild);
+                          leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;
+                          // early removal callback
+                          el._leaveCb = () => {
+                              earlyRemove();
+                              el._leaveCb = undefined;
+                              delete enterHooks.delayedLeave;
+                          };
+                          enterHooks.delayedLeave = delayedLeave;
+                      };
+                  }
+              }
+              return child;
+          };
+      }
+  };
+  // export the public type for h/tsx inference
+  // also to avoid inline import() in generated d.ts files
+  const BaseTransition = BaseTransitionImpl;
+  function getLeavingNodesForType(state, vnode) {
+      const { leavingVNodes } = state;
+      let leavingVNodesCache = leavingVNodes.get(vnode.type);
+      if (!leavingVNodesCache) {
+          leavingVNodesCache = Object.create(null);
+          leavingVNodes.set(vnode.type, leavingVNodesCache);
+      }
+      return leavingVNodesCache;
+  }
+  // The transition hooks are attached to the vnode as vnode.transition
+  // and will be called at appropriate timing in the renderer.
+  function resolveTransitionHooks(vnode, props, state, instance) {
+      const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props;
+      const key = String(vnode.key);
+      const leavingVNodesCache = getLeavingNodesForType(state, vnode);
+      const callHook = (hook, args) => {
+          hook &&
+              callWithAsyncErrorHandling(hook, instance, 9 /* TRANSITION_HOOK */, args);
+      };
+      const callAsyncHook = (hook, args) => {
+          const done = args[1];
+          callHook(hook, args);
+          if (isArray(hook)) {
+              if (hook.every(hook => hook.length <= 1))
+                  done();
+          }
+          else if (hook.length <= 1) {
+              done();
+          }
+      };
+      const hooks = {
+          mode,
+          persisted,
+          beforeEnter(el) {
+              let hook = onBeforeEnter;
+              if (!state.isMounted) {
+                  if (appear) {
+                      hook = onBeforeAppear || onBeforeEnter;
+                  }
+                  else {
+                      return;
+                  }
+              }
+              // for same element (v-show)
+              if (el._leaveCb) {
+                  el._leaveCb(true /* cancelled */);
+              }
+              // for toggled element with same key (v-if)
+              const leavingVNode = leavingVNodesCache[key];
+              if (leavingVNode &&
+                  isSameVNodeType(vnode, leavingVNode) &&
+                  leavingVNode.el._leaveCb) {
+                  // force early removal (not cancelled)
+                  leavingVNode.el._leaveCb();
+              }
+              callHook(hook, [el]);
+          },
+          enter(el) {
+              let hook = onEnter;
+              let afterHook = onAfterEnter;
+              let cancelHook = onEnterCancelled;
+              if (!state.isMounted) {
+                  if (appear) {
+                      hook = onAppear || onEnter;
+                      afterHook = onAfterAppear || onAfterEnter;
+                      cancelHook = onAppearCancelled || onEnterCancelled;
+                  }
+                  else {
+                      return;
+                  }
+              }
+              let called = false;
+              const done = (el._enterCb = (cancelled) => {
+                  if (called)
+                      return;
+                  called = true;
+                  if (cancelled) {
+                      callHook(cancelHook, [el]);
+                  }
+                  else {
+                      callHook(afterHook, [el]);
+                  }
+                  if (hooks.delayedLeave) {
+                      hooks.delayedLeave();
+                  }
+                  el._enterCb = undefined;
+              });
+              if (hook) {
+                  callAsyncHook(hook, [el, done]);
+              }
+              else {
+                  done();
+              }
+          },
+          leave(el, remove) {
+              const key = String(vnode.key);
+              if (el._enterCb) {
+                  el._enterCb(true /* cancelled */);
+              }
+              if (state.isUnmounting) {
+                  return remove();
+              }
+              callHook(onBeforeLeave, [el]);
+              let called = false;
+              const done = (el._leaveCb = (cancelled) => {
+                  if (called)
+                      return;
+                  called = true;
+                  remove();
+                  if (cancelled) {
+                      callHook(onLeaveCancelled, [el]);
+                  }
+                  else {
+                      callHook(onAfterLeave, [el]);
+                  }
+                  el._leaveCb = undefined;
+                  if (leavingVNodesCache[key] === vnode) {
+                      delete leavingVNodesCache[key];
+                  }
+              });
+              leavingVNodesCache[key] = vnode;
+              if (onLeave) {
+                  callAsyncHook(onLeave, [el, done]);
+              }
+              else {
+                  done();
+              }
+          },
+          clone(vnode) {
+              return resolveTransitionHooks(vnode, props, state, instance);
+          }
+      };
+      return hooks;
+  }
+  // the placeholder really only handles one special case: KeepAlive
+  // in the case of a KeepAlive in a leave phase we need to return a KeepAlive
+  // placeholder with empty content to avoid the KeepAlive instance from being
+  // unmounted.
+  function emptyPlaceholder(vnode) {
+      if (isKeepAlive(vnode)) {
+          vnode = cloneVNode(vnode);
+          vnode.children = null;
+          return vnode;
+      }
+  }
+  function getKeepAliveChild(vnode) {
+      return isKeepAlive(vnode)
+          ? vnode.children
+              ? vnode.children[0]
+              : undefined
+          : vnode;
+  }
+  function setTransitionHooks(vnode, hooks) {
+      if (vnode.shapeFlag & 6 /* COMPONENT */ && vnode.component) {
+          setTransitionHooks(vnode.component.subTree, hooks);
+      }
+      else if (vnode.shapeFlag & 128 /* SUSPENSE */) {
+          vnode.ssContent.transition = hooks.clone(vnode.ssContent);
+          vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);
+      }
+      else {
+          vnode.transition = hooks;
+      }
+  }
+  function getTransitionRawChildren(children, keepComment = false, parentKey) {
+      let ret = [];
+      let keyedFragmentCount = 0;
+      for (let i = 0; i < children.length; i++) {
+          let child = children[i];
+          // #5360 inherit parent key in case of <template v-for>
+          const key = parentKey == null
+              ? child.key
+              : String(parentKey) + String(child.key != null ? child.key : i);
+          // handle fragment children case, e.g. v-for
+          if (child.type === Fragment) {
+              if (child.patchFlag & 128 /* KEYED_FRAGMENT */)
+                  keyedFragmentCount++;
+              ret = ret.concat(getTransitionRawChildren(child.children, keepComment, key));
+          }
+          // comment placeholders should be skipped, e.g. v-if
+          else if (keepComment || child.type !== Comment) {
+              ret.push(key != null ? cloneVNode(child, { key }) : child);
+          }
+      }
+      // #1126 if a transition children list contains multiple sub fragments, these
+      // fragments will be merged into a flat children array. Since each v-for
+      // fragment may contain different static bindings inside, we need to de-op
+      // these children to force full diffs to ensure correct behavior.
+      if (keyedFragmentCount > 1) {
+          for (let i = 0; i < ret.length; i++) {
+              ret[i].patchFlag = -2 /* BAIL */;
+          }
+      }
+      return ret;
+  }
+
+  // implementation, close to no-op
+  function defineComponent(options) {
+      return isFunction(options) ? { setup: options, name: options.name } : options;
+  }
+
+  const isAsyncWrapper = (i) => !!i.type.__asyncLoader;
+  function defineAsyncComponent(source) {
+      if (isFunction(source)) {
+          source = { loader: source };
+      }
+      const { loader, loadingComponent, errorComponent, delay = 200, timeout, // undefined = never times out
+      suspensible = true, onError: userOnError } = source;
+      let pendingRequest = null;
+      let resolvedComp;
+      let retries = 0;
+      const retry = () => {
+          retries++;
+          pendingRequest = null;
+          return load();
+      };
+      const load = () => {
+          let thisRequest;
+          return (pendingRequest ||
+              (thisRequest = pendingRequest =
+                  loader()
+                      .catch(err => {
+                      err = err instanceof Error ? err : new Error(String(err));
+                      if (userOnError) {
+                          return new Promise((resolve, reject) => {
+                              const userRetry = () => resolve(retry());
+                              const userFail = () => reject(err);
+                              userOnError(err, userRetry, userFail, retries + 1);
+                          });
+                      }
+                      else {
+                          throw err;
+                      }
+                  })
+                      .then((comp) => {
+                      if (thisRequest !== pendingRequest && pendingRequest) {
+                          return pendingRequest;
+                      }
+                      if (!comp) {
+                          warn$1(`Async component loader resolved to undefined. ` +
+                              `If you are using retry(), make sure to return its return value.`);
+                      }
+                      // interop module default
+                      if (comp &&
+                          (comp.__esModule || comp[Symbol.toStringTag] === 'Module')) {
+                          comp = comp.default;
+                      }
+                      if (comp && !isObject(comp) && !isFunction(comp)) {
+                          throw new Error(`Invalid async component load result: ${comp}`);
+                      }
+                      resolvedComp = comp;
+                      return comp;
+                  })));
+      };
+      return defineComponent({
+          name: 'AsyncComponentWrapper',
+          __asyncLoader: load,
+          get __asyncResolved() {
+              return resolvedComp;
+          },
+          setup() {
+              const instance = currentInstance;
+              // already resolved
+              if (resolvedComp) {
+                  return () => createInnerComp(resolvedComp, instance);
+              }
+              const onError = (err) => {
+                  pendingRequest = null;
+                  handleError(err, instance, 13 /* ASYNC_COMPONENT_LOADER */, !errorComponent /* do not throw in dev if user provided error component */);
+              };
+              // suspense-controlled or SSR.
+              if ((suspensible && instance.suspense) ||
+                  (false )) {
+                  return load()
+                      .then(comp => {
+                      return () => createInnerComp(comp, instance);
+                  })
+                      .catch(err => {
+                      onError(err);
+                      return () => errorComponent
+                          ? createVNode(errorComponent, {
+                              error: err
+                          })
+                          : null;
+                  });
+              }
+              const loaded = ref(false);
+              const error = ref();
+              const delayed = ref(!!delay);
+              if (delay) {
+                  setTimeout(() => {
+                      delayed.value = false;
+                  }, delay);
+              }
+              if (timeout != null) {
+                  setTimeout(() => {
+                      if (!loaded.value && !error.value) {
+                          const err = new Error(`Async component timed out after ${timeout}ms.`);
+                          onError(err);
+                          error.value = err;
+                      }
+                  }, timeout);
+              }
+              load()
+                  .then(() => {
+                  loaded.value = true;
+                  if (instance.parent && isKeepAlive(instance.parent.vnode)) {
+                      // parent is keep-alive, force update so the loaded component's
+                      // name is taken into account
+                      queueJob(instance.parent.update);
+                  }
+              })
+                  .catch(err => {
+                  onError(err);
+                  error.value = err;
+              });
+              return () => {
+                  if (loaded.value && resolvedComp) {
+                      return createInnerComp(resolvedComp, instance);
+                  }
+                  else if (error.value && errorComponent) {
+                      return createVNode(errorComponent, {
+                          error: error.value
+                      });
+                  }
+                  else if (loadingComponent && !delayed.value) {
+                      return createVNode(loadingComponent);
+                  }
+              };
+          }
+      });
+  }
+  function createInnerComp(comp, { vnode: { ref, props, children, shapeFlag }, parent }) {
+      const vnode = createVNode(comp, props, children);
+      // ensure inner component inherits the async wrapper's ref owner
+      vnode.ref = ref;
+      return vnode;
+  }
+
+  const isKeepAlive = (vnode) => vnode.type.__isKeepAlive;
+  const KeepAliveImpl = {
+      name: `KeepAlive`,
+      // Marker for special handling inside the renderer. We are not using a ===
+      // check directly on KeepAlive in the renderer, because importing it directly
+      // would prevent it from being tree-shaken.
+      __isKeepAlive: true,
+      props: {
+          include: [String, RegExp, Array],
+          exclude: [String, RegExp, Array],
+          max: [String, Number]
+      },
+      setup(props, { slots }) {
+          const instance = getCurrentInstance();
+          // KeepAlive communicates with the instantiated renderer via the
+          // ctx where the renderer passes in its internals,
+          // and the KeepAlive instance exposes activate/deactivate implementations.
+          // The whole point of this is to avoid importing KeepAlive directly in the
+          // renderer to facilitate tree-shaking.
+          const sharedContext = instance.ctx;
+          const cache = new Map();
+          const keys = new Set();
+          let current = null;
+          {
+              instance.__v_cache = cache;
+          }
+          const parentSuspense = instance.suspense;
+          const { renderer: { p: patch, m: move, um: _unmount, o: { createElement } } } = sharedContext;
+          const storageContainer = createElement('div');
+          sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => {
+              const instance = vnode.component;
+              move(vnode, container, anchor, 0 /* ENTER */, parentSuspense);
+              // in case props have changed
+              patch(instance.vnode, vnode, container, anchor, instance, parentSuspense, isSVG, vnode.slotScopeIds, optimized);
+              queuePostRenderEffect(() => {
+                  instance.isDeactivated = false;
+                  if (instance.a) {
+                      invokeArrayFns(instance.a);
+                  }
+                  const vnodeHook = vnode.props && vnode.props.onVnodeMounted;
+                  if (vnodeHook) {
+                      invokeVNodeHook(vnodeHook, instance.parent, vnode);
+                  }
+              }, parentSuspense);
+              {
+                  // Update components tree
+                  devtoolsComponentAdded(instance);
+              }
+          };
+          sharedContext.deactivate = (vnode) => {
+              const instance = vnode.component;
+              move(vnode, storageContainer, null, 1 /* LEAVE */, parentSuspense);
+              queuePostRenderEffect(() => {
+                  if (instance.da) {
+                      invokeArrayFns(instance.da);
+                  }
+                  const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;
+                  if (vnodeHook) {
+                      invokeVNodeHook(vnodeHook, instance.parent, vnode);
+                  }
+                  instance.isDeactivated = true;
+              }, parentSuspense);
+              {
+                  // Update components tree
+                  devtoolsComponentAdded(instance);
+              }
+          };
+          function unmount(vnode) {
+              // reset the shapeFlag so it can be properly unmounted
+              resetShapeFlag(vnode);
+              _unmount(vnode, instance, parentSuspense, true);
+          }
+          function pruneCache(filter) {
+              cache.forEach((vnode, key) => {
+                  const name = getComponentName(vnode.type);
+                  if (name && (!filter || !filter(name))) {
+                      pruneCacheEntry(key);
+                  }
+              });
+          }
+          function pruneCacheEntry(key) {
+              const cached = cache.get(key);
+              if (!current || cached.type !== current.type) {
+                  unmount(cached);
+              }
+              else if (current) {
+                  // current active instance should no longer be kept-alive.
+                  // we can't unmount it now but it might be later, so reset its flag now.
+                  resetShapeFlag(current);
+              }
+              cache.delete(key);
+              keys.delete(key);
+          }
+          // prune cache on include/exclude prop change
+          watch(() => [props.include, props.exclude], ([include, exclude]) => {
+              include && pruneCache(name => matches(include, name));
+              exclude && pruneCache(name => !matches(exclude, name));
+          }, 
+          // prune post-render after `current` has been updated
+          { flush: 'post', deep: true });
+          // cache sub tree after render
+          let pendingCacheKey = null;
+          const cacheSubtree = () => {
+              // fix #1621, the pendingCacheKey could be 0
+              if (pendingCacheKey != null) {
+                  cache.set(pendingCacheKey, getInnerChild(instance.subTree));
+              }
+          };
+          onMounted(cacheSubtree);
+          onUpdated(cacheSubtree);
+          onBeforeUnmount(() => {
+              cache.forEach(cached => {
+                  const { subTree, suspense } = instance;
+                  const vnode = getInnerChild(subTree);
+                  if (cached.type === vnode.type) {
+                      // current instance will be unmounted as part of keep-alive's unmount
+                      resetShapeFlag(vnode);
+                      // but invoke its deactivated hook here
+                      const da = vnode.component.da;
+                      da && queuePostRenderEffect(da, suspense);
+                      return;
+                  }
+                  unmount(cached);
+              });
+          });
+          return () => {
+              pendingCacheKey = null;
+              if (!slots.default) {
+                  return null;
+              }
+              const children = slots.default();
+              const rawVNode = children[0];
+              if (children.length > 1) {
+                  {
+                      warn$1(`KeepAlive should contain exactly one component child.`);
+                  }
+                  current = null;
+                  return children;
+              }
+              else if (!isVNode(rawVNode) ||
+                  (!(rawVNode.shapeFlag & 4 /* STATEFUL_COMPONENT */) &&
+                      !(rawVNode.shapeFlag & 128 /* SUSPENSE */))) {
+                  current = null;
+                  return rawVNode;
+              }
+              let vnode = getInnerChild(rawVNode);
+              const comp = vnode.type;
+              // for async components, name check should be based in its loaded
+              // inner component if available
+              const name = getComponentName(isAsyncWrapper(vnode)
+                  ? vnode.type.__asyncResolved || {}
+                  : comp);
+              const { include, exclude, max } = props;
+              if ((include && (!name || !matches(include, name))) ||
+                  (exclude && name && matches(exclude, name))) {
+                  current = vnode;
+                  return rawVNode;
+              }
+              const key = vnode.key == null ? comp : vnode.key;
+              const cachedVNode = cache.get(key);
+              // clone vnode if it's reused because we are going to mutate it
+              if (vnode.el) {
+                  vnode = cloneVNode(vnode);
+                  if (rawVNode.shapeFlag & 128 /* SUSPENSE */) {
+                      rawVNode.ssContent = vnode;
+                  }
+              }
+              // #1513 it's possible for the returned vnode to be cloned due to attr
+              // fallthrough or scopeId, so the vnode here may not be the final vnode
+              // that is mounted. Instead of caching it directly, we store the pending
+              // key and cache `instance.subTree` (the normalized vnode) in
+              // beforeMount/beforeUpdate hooks.
+              pendingCacheKey = key;
+              if (cachedVNode) {
+                  // copy over mounted state
+                  vnode.el = cachedVNode.el;
+                  vnode.component = cachedVNode.component;
+                  if (vnode.transition) {
+                      // recursively update transition hooks on subTree
+                      setTransitionHooks(vnode, vnode.transition);
+                  }
+                  // avoid vnode being mounted as fresh
+                  vnode.shapeFlag |= 512 /* COMPONENT_KEPT_ALIVE */;
+                  // make this key the freshest
+                  keys.delete(key);
+                  keys.add(key);
+              }
+              else {
+                  keys.add(key);
+                  // prune oldest entry
+                  if (max && keys.size > parseInt(max, 10)) {
+                      pruneCacheEntry(keys.values().next().value);
+                  }
+              }
+              // avoid vnode being unmounted
+              vnode.shapeFlag |= 256 /* COMPONENT_SHOULD_KEEP_ALIVE */;
+              current = vnode;
+              return isSuspense(rawVNode.type) ? rawVNode : vnode;
+          };
+      }
+  };
+  // export the public type for h/tsx inference
+  // also to avoid inline import() in generated d.ts files
+  const KeepAlive = KeepAliveImpl;
+  function matches(pattern, name) {
+      if (isArray(pattern)) {
+          return pattern.some((p) => matches(p, name));
+      }
+      else if (isString(pattern)) {
+          return pattern.split(',').includes(name);
+      }
+      else if (pattern.test) {
+          return pattern.test(name);
+      }
+      /* istanbul ignore next */
+      return false;
+  }
+  function onActivated(hook, target) {
+      registerKeepAliveHook(hook, "a" /* ACTIVATED */, target);
+  }
+  function onDeactivated(hook, target) {
+      registerKeepAliveHook(hook, "da" /* DEACTIVATED */, target);
+  }
+  function registerKeepAliveHook(hook, type, target = currentInstance) {
+      // cache the deactivate branch check wrapper for injected hooks so the same
+      // hook can be properly deduped by the scheduler. "__wdc" stands for "with
+      // deactivation check".
+      const wrappedHook = hook.__wdc ||
+          (hook.__wdc = () => {
+              // only fire the hook if the target instance is NOT in a deactivated branch.
+              let current = target;
+              while (current) {
+                  if (current.isDeactivated) {
+                      return;
+                  }
+                  current = current.parent;
+              }
+              return hook();
+          });
+      injectHook(type, wrappedHook, target);
+      // In addition to registering it on the target instance, we walk up the parent
+      // chain and register it on all ancestor instances that are keep-alive roots.
+      // This avoids the need to walk the entire component tree when invoking these
+      // hooks, and more importantly, avoids the need to track child components in
+      // arrays.
+      if (target) {
+          let current = target.parent;
+          while (current && current.parent) {
+              if (isKeepAlive(current.parent.vnode)) {
+                  injectToKeepAliveRoot(wrappedHook, type, target, current);
+              }
+              current = current.parent;
+          }
+      }
+  }
+  function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {
+      // injectHook wraps the original for error handling, so make sure to remove
+      // the wrapped version.
+      const injected = injectHook(type, hook, keepAliveRoot, true /* prepend */);
+      onUnmounted(() => {
+          remove(keepAliveRoot[type], injected);
+      }, target);
+  }
+  function resetShapeFlag(vnode) {
+      let shapeFlag = vnode.shapeFlag;
+      if (shapeFlag & 256 /* COMPONENT_SHOULD_KEEP_ALIVE */) {
+          shapeFlag -= 256 /* COMPONENT_SHOULD_KEEP_ALIVE */;
+      }
+      if (shapeFlag & 512 /* COMPONENT_KEPT_ALIVE */) {
+          shapeFlag -= 512 /* COMPONENT_KEPT_ALIVE */;
+      }
+      vnode.shapeFlag = shapeFlag;
+  }
+  function getInnerChild(vnode) {
+      return vnode.shapeFlag & 128 /* SUSPENSE */ ? vnode.ssContent : vnode;
+  }
+
+  function injectHook(type, hook, target = currentInstance, prepend = false) {
+      if (target) {
+          const hooks = target[type] || (target[type] = []);
+          // cache the error handling wrapper for injected hooks so the same hook
+          // can be properly deduped by the scheduler. "__weh" stands for "with error
+          // handling".
+          const wrappedHook = hook.__weh ||
+              (hook.__weh = (...args) => {
+                  if (target.isUnmounted) {
+                      return;
+                  }
+                  // disable tracking inside all lifecycle hooks
+                  // since they can potentially be called inside effects.
+                  pauseTracking();
+                  // Set currentInstance during hook invocation.
+                  // This assumes the hook does not synchronously trigger other hooks, which
+                  // can only be false when the user does something really funky.
+                  setCurrentInstance(target);
+                  const res = callWithAsyncErrorHandling(hook, target, type, args);
+                  unsetCurrentInstance();
+                  resetTracking();
+                  return res;
+              });
+          if (prepend) {
+              hooks.unshift(wrappedHook);
+          }
+          else {
+              hooks.push(wrappedHook);
+          }
+          return wrappedHook;
+      }
+      else {
+          const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, ''));
+          warn$1(`${apiName} is called when there is no active component instance to be ` +
+              `associated with. ` +
+              `Lifecycle injection APIs can only be used during execution of setup().` +
+              (` If you are using async setup(), make sure to register lifecycle ` +
+                      `hooks before the first await statement.`
+                  ));
+      }
+  }
+  const createHook = (lifecycle) => (hook, target = currentInstance) => 
+  // post-create lifecycle registrations are noops during SSR (except for serverPrefetch)
+  (!isInSSRComponentSetup || lifecycle === "sp" /* SERVER_PREFETCH */) &&
+      injectHook(lifecycle, hook, target);
+  const onBeforeMount = createHook("bm" /* BEFORE_MOUNT */);
+  const onMounted = createHook("m" /* MOUNTED */);
+  const onBeforeUpdate = createHook("bu" /* BEFORE_UPDATE */);
+  const onUpdated = createHook("u" /* UPDATED */);
+  const onBeforeUnmount = createHook("bum" /* BEFORE_UNMOUNT */);
+  const onUnmounted = createHook("um" /* UNMOUNTED */);
+  const onServerPrefetch = createHook("sp" /* SERVER_PREFETCH */);
+  const onRenderTriggered = createHook("rtg" /* RENDER_TRIGGERED */);
+  const onRenderTracked = createHook("rtc" /* RENDER_TRACKED */);
+  function onErrorCaptured(hook, target = currentInstance) {
+      injectHook("ec" /* ERROR_CAPTURED */, hook, target);
+  }
+
+  /**
+  Runtime helper for applying directives to a vnode. Example usage:
+
+  const comp = resolveComponent('comp')
+  const foo = resolveDirective('foo')
+  const bar = resolveDirective('bar')
+
+  return withDirectives(h(comp), [
+    [foo, this.x],
+    [bar, this.y]
+  ])
+  */
+  function validateDirectiveName(name) {
+      if (isBuiltInDirective(name)) {
+          warn$1('Do not use built-in directive ids as custom directive id: ' + name);
+      }
+  }
+  /**
+   * Adds directives to a VNode.
+   */
+  function withDirectives(vnode, directives) {
+      const internalInstance = currentRenderingInstance;
+      if (internalInstance === null) {
+          warn$1(`withDirectives can only be used inside render functions.`);
+          return vnode;
+      }
+      const instance = getExposeProxy(internalInstance) ||
+          internalInstance.proxy;
+      const bindings = vnode.dirs || (vnode.dirs = []);
+      for (let i = 0; i < directives.length; i++) {
+          let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];
+          if (isFunction(dir)) {
+              dir = {
+                  mounted: dir,
+                  updated: dir
+              };
+          }
+          if (dir.deep) {
+              traverse(value);
+          }
+          bindings.push({
+              dir,
+              instance,
+              value,
+              oldValue: void 0,
+              arg,
+              modifiers
+          });
+      }
+      return vnode;
+  }
+  function invokeDirectiveHook(vnode, prevVNode, instance, name) {
+      const bindings = vnode.dirs;
+      const oldBindings = prevVNode && prevVNode.dirs;
+      for (let i = 0; i < bindings.length; i++) {
+          const binding = bindings[i];
+          if (oldBindings) {
+              binding.oldValue = oldBindings[i].value;
+          }
+          let hook = binding.dir[name];
+          if (hook) {
+              // disable tracking inside all lifecycle hooks
+              // since they can potentially be called inside effects.
+              pauseTracking();
+              callWithAsyncErrorHandling(hook, instance, 8 /* DIRECTIVE_HOOK */, [
+                  vnode.el,
+                  binding,
+                  vnode,
+                  prevVNode
+              ]);
+              resetTracking();
+          }
+      }
+  }
+
+  const COMPONENTS = 'components';
+  const DIRECTIVES = 'directives';
+  /**
+   * @private
+   */
+  function resolveComponent(name, maybeSelfReference) {
+      return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;
+  }
+  const NULL_DYNAMIC_COMPONENT = Symbol();
+  /**
+   * @private
+   */
+  function resolveDynamicComponent(component) {
+      if (isString(component)) {
+          return resolveAsset(COMPONENTS, component, false) || component;
+      }
+      else {
+          // invalid types will fallthrough to createVNode and raise warning
+          return (component || NULL_DYNAMIC_COMPONENT);
+      }
+  }
+  /**
+   * @private
+   */
+  function resolveDirective(name) {
+      return resolveAsset(DIRECTIVES, name);
+  }
+  // implementation
+  function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {
+      const instance = currentRenderingInstance || currentInstance;
+      if (instance) {
+          const Component = instance.type;
+          // explicit self name has highest priority
+          if (type === COMPONENTS) {
+              const selfName = getComponentName(Component);
+              if (selfName &&
+                  (selfName === name ||
+                      selfName === camelize(name) ||
+                      selfName === capitalize(camelize(name)))) {
+                  return Component;
+              }
+          }
+          const res = 
+          // local registration
+          // check instance[type] first which is resolved for options API
+          resolve(instance[type] || Component[type], name) ||
+              // global registration
+              resolve(instance.appContext[type], name);
+          if (!res && maybeSelfReference) {
+              // fallback to implicit self-reference
+              return Component;
+          }
+          if (warnMissing && !res) {
+              const extra = type === COMPONENTS
+                  ? `\nIf this is a native custom element, make sure to exclude it from ` +
+                      `component resolution via compilerOptions.isCustomElement.`
+                  : ``;
+              warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);
+          }
+          return res;
+      }
+      else {
+          warn$1(`resolve${capitalize(type.slice(0, -1))} ` +
+              `can only be used in render() or setup().`);
+      }
+  }
+  function resolve(registry, name) {
+      return (registry &&
+          (registry[name] ||
+              registry[camelize(name)] ||
+              registry[capitalize(camelize(name))]));
+  }
+
+  /**
+   * Actual implementation
+   */
+  function renderList(source, renderItem, cache, index) {
+      let ret;
+      const cached = (cache && cache[index]);
+      if (isArray(source) || isString(source)) {
+          ret = new Array(source.length);
+          for (let i = 0, l = source.length; i < l; i++) {
+              ret[i] = renderItem(source[i], i, undefined, cached && cached[i]);
+          }
+      }
+      else if (typeof source === 'number') {
+          if (!Number.isInteger(source)) {
+              warn$1(`The v-for range expect an integer value but got ${source}.`);
+          }
+          ret = new Array(source);
+          for (let i = 0; i < source; i++) {
+              ret[i] = renderItem(i + 1, i, undefined, cached && cached[i]);
+          }
+      }
+      else if (isObject(source)) {
+          if (source[Symbol.iterator]) {
+              ret = Array.from(source, (item, i) => renderItem(item, i, undefined, cached && cached[i]));
+          }
+          else {
+              const keys = Object.keys(source);
+              ret = new Array(keys.length);
+              for (let i = 0, l = keys.length; i < l; i++) {
+                  const key = keys[i];
+                  ret[i] = renderItem(source[key], key, i, cached && cached[i]);
+              }
+          }
+      }
+      else {
+          ret = [];
+      }
+      if (cache) {
+          cache[index] = ret;
+      }
+      return ret;
+  }
+
+  /**
+   * Compiler runtime helper for creating dynamic slots object
+   * @private
+   */
+  function createSlots(slots, dynamicSlots) {
+      for (let i = 0; i < dynamicSlots.length; i++) {
+          const slot = dynamicSlots[i];
+          // array of dynamic slot generated by <template v-for="..." #[...]>
+          if (isArray(slot)) {
+              for (let j = 0; j < slot.length; j++) {
+                  slots[slot[j].name] = slot[j].fn;
+              }
+          }
+          else if (slot) {
+              // conditional single slot generated by <template v-if="..." #foo>
+              slots[slot.name] = slot.fn;
+          }
+      }
+      return slots;
+  }
+
+  /**
+   * Compiler runtime helper for rendering `<slot/>`
+   * @private
+   */
+  function renderSlot(slots, name, props = {}, 
+  // this is not a user-facing function, so the fallback is always generated by
+  // the compiler and guaranteed to be a function returning an array
+  fallback, noSlotted) {
+      if (currentRenderingInstance.isCE ||
+          (currentRenderingInstance.parent &&
+              isAsyncWrapper(currentRenderingInstance.parent) &&
+              currentRenderingInstance.parent.isCE)) {
+          return createVNode('slot', name === 'default' ? null : { name }, fallback && fallback());
+      }
+      let slot = slots[name];
+      if (slot && slot.length > 1) {
+          warn$1(`SSR-optimized slot function detected in a non-SSR-optimized render ` +
+              `function. You need to mark this component with $dynamic-slots in the ` +
+              `parent template.`);
+          slot = () => [];
+      }
+      // a compiled slot disables block tracking by default to avoid manual
+      // invocation interfering with template-based block tracking, but in
+      // `renderSlot` we can be sure that it's template-based so we can force
+      // enable it.
+      if (slot && slot._c) {
+          slot._d = false;
+      }
+      openBlock();
+      const validSlotContent = slot && ensureValidVNode(slot(props));
+      const rendered = createBlock(Fragment, { key: props.key || `_${name}` }, validSlotContent || (fallback ? fallback() : []), validSlotContent && slots._ === 1 /* STABLE */
+          ? 64 /* STABLE_FRAGMENT */
+          : -2 /* BAIL */);
+      if (!noSlotted && rendered.scopeId) {
+          rendered.slotScopeIds = [rendered.scopeId + '-s'];
+      }
+      if (slot && slot._c) {
+          slot._d = true;
+      }
+      return rendered;
+  }
+  function ensureValidVNode(vnodes) {
+      return vnodes.some(child => {
+          if (!isVNode(child))
+              return true;
+          if (child.type === Comment)
+              return false;
+          if (child.type === Fragment &&
+              !ensureValidVNode(child.children))
+              return false;
+          return true;
+      })
+          ? vnodes
+          : null;
+  }
+
+  /**
+   * For prefixing keys in v-on="obj" with "on"
+   * @private
+   */
+  function toHandlers(obj) {
+      const ret = {};
+      if (!isObject(obj)) {
+          warn$1(`v-on with no argument expects an object value.`);
+          return ret;
+      }
+      for (const key in obj) {
+          ret[toHandlerKey(key)] = obj[key];
+      }
+      return ret;
+  }
+
+  /**
+   * #2437 In Vue 3, functional components do not have a public instance proxy but
+   * they exist in the internal parent chain. For code that relies on traversing
+   * public $parent chains, skip functional ones and go to the parent instead.
+   */
+  const getPublicInstance = (i) => {
+      if (!i)
+          return null;
+      if (isStatefulComponent(i))
+          return getExposeProxy(i) || i.proxy;
+      return getPublicInstance(i.parent);
+  };
+  const publicPropertiesMap = 
+  // Move PURE marker to new line to workaround compiler discarding it
+  // due to type annotation
+  /*#__PURE__*/ extend(Object.create(null), {
+      $: i => i,
+      $el: i => i.vnode.el,
+      $data: i => i.data,
+      $props: i => (shallowReadonly(i.props) ),
+      $attrs: i => (shallowReadonly(i.attrs) ),
+      $slots: i => (shallowReadonly(i.slots) ),
+      $refs: i => (shallowReadonly(i.refs) ),
+      $parent: i => getPublicInstance(i.parent),
+      $root: i => getPublicInstance(i.root),
+      $emit: i => i.emit,
+      $options: i => (resolveMergedOptions(i) ),
+      $forceUpdate: i => i.f || (i.f = () => queueJob(i.update)),
+      $nextTick: i => i.n || (i.n = nextTick.bind(i.proxy)),
+      $watch: i => (instanceWatch.bind(i) )
+  });
+  const isReservedPrefix = (key) => key === '_' || key === '$';
+  const PublicInstanceProxyHandlers = {
+      get({ _: instance }, key) {
+          const { ctx, setupState, data, props, accessCache, type, appContext } = instance;
+          // for internal formatters to know that this is a Vue instance
+          if (key === '__isVue') {
+              return true;
+          }
+          // prioritize <script setup> bindings during dev.
+          // this allows even properties that start with _ or $ to be used - so that
+          // it aligns with the production behavior where the render fn is inlined and
+          // indeed has access to all declared variables.
+          if (setupState !== EMPTY_OBJ &&
+              setupState.__isScriptSetup &&
+              hasOwn(setupState, key)) {
+              return setupState[key];
+          }
+          // data / props / ctx
+          // This getter gets called for every property access on the render context
+          // during render and is a major hotspot. The most expensive part of this
+          // is the multiple hasOwn() calls. It's much faster to do a simple property
+          // access on a plain object, so we use an accessCache object (with null
+          // prototype) to memoize what access type a key corresponds to.
+          let normalizedProps;
+          if (key[0] !== '$') {
+              const n = accessCache[key];
+              if (n !== undefined) {
+                  switch (n) {
+                      case 1 /* SETUP */:
+                          return setupState[key];
+                      case 2 /* DATA */:
+                          return data[key];
+                      case 4 /* CONTEXT */:
+                          return ctx[key];
+                      case 3 /* PROPS */:
+                          return props[key];
+                      // default: just fallthrough
+                  }
+              }
+              else if (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) {
+                  accessCache[key] = 1 /* SETUP */;
+                  return setupState[key];
+              }
+              else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
+                  accessCache[key] = 2 /* DATA */;
+                  return data[key];
+              }
+              else if (
+              // only cache other properties when instance has declared (thus stable)
+              // props
+              (normalizedProps = instance.propsOptions[0]) &&
+                  hasOwn(normalizedProps, key)) {
+                  accessCache[key] = 3 /* PROPS */;
+                  return props[key];
+              }
+              else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {
+                  accessCache[key] = 4 /* CONTEXT */;
+                  return ctx[key];
+              }
+              else if (shouldCacheAccess) {
+                  accessCache[key] = 0 /* OTHER */;
+              }
+          }
+          const publicGetter = publicPropertiesMap[key];
+          let cssModule, globalProperties;
+          // public $xxx properties
+          if (publicGetter) {
+              if (key === '$attrs') {
+                  track(instance, "get" /* GET */, key);
+                  markAttrsAccessed();
+              }
+              return publicGetter(instance);
+          }
+          else if (
+          // css module (injected by vue-loader)
+          (cssModule = type.__cssModules) &&
+              (cssModule = cssModule[key])) {
+              return cssModule;
+          }
+          else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {
+              // user may set custom properties to `this` that start with `$`
+              accessCache[key] = 4 /* CONTEXT */;
+              return ctx[key];
+          }
+          else if (
+          // global properties
+          ((globalProperties = appContext.config.globalProperties),
+              hasOwn(globalProperties, key))) {
+              {
+                  return globalProperties[key];
+              }
+          }
+          else if (currentRenderingInstance &&
+              (!isString(key) ||
+                  // #1091 avoid internal isRef/isVNode checks on component instance leading
+                  // to infinite warning loop
+                  key.indexOf('__v') !== 0)) {
+              if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {
+                  warn$1(`Property ${JSON.stringify(key)} must be accessed via $data because it starts with a reserved ` +
+                      `character ("$" or "_") and is not proxied on the render context.`);
+              }
+              else if (instance === currentRenderingInstance) {
+                  warn$1(`Property ${JSON.stringify(key)} was accessed during render ` +
+                      `but is not defined on instance.`);
+              }
+          }
+      },
+      set({ _: instance }, key, value) {
+          const { data, setupState, ctx } = instance;
+          if (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) {
+              setupState[key] = value;
+              return true;
+          }
+          else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
+              data[key] = value;
+              return true;
+          }
+          else if (hasOwn(instance.props, key)) {
+              warn$1(`Attempting to mutate prop "${key}". Props are readonly.`, instance);
+              return false;
+          }
+          if (key[0] === '$' && key.slice(1) in instance) {
+              warn$1(`Attempting to mutate public property "${key}". ` +
+                      `Properties starting with $ are reserved and readonly.`, instance);
+              return false;
+          }
+          else {
+              if (key in instance.appContext.config.globalProperties) {
+                  Object.defineProperty(ctx, key, {
+                      enumerable: true,
+                      configurable: true,
+                      value
+                  });
+              }
+              else {
+                  ctx[key] = value;
+              }
+          }
+          return true;
+      },
+      has({ _: { data, setupState, accessCache, ctx, appContext, propsOptions } }, key) {
+          let normalizedProps;
+          return (!!accessCache[key] ||
+              (data !== EMPTY_OBJ && hasOwn(data, key)) ||
+              (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) ||
+              ((normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key)) ||
+              hasOwn(ctx, key) ||
+              hasOwn(publicPropertiesMap, key) ||
+              hasOwn(appContext.config.globalProperties, key));
+      },
+      defineProperty(target, key, descriptor) {
+          if (descriptor.get != null) {
+              // invalidate key cache of a getter based property #5417
+              target._.accessCache[key] = 0;
+          }
+          else if (hasOwn(descriptor, 'value')) {
+              this.set(target, key, descriptor.value, null);
+          }
+          return Reflect.defineProperty(target, key, descriptor);
+      }
+  };
+  {
+      PublicInstanceProxyHandlers.ownKeys = (target) => {
+          warn$1(`Avoid app logic that relies on enumerating keys on a component instance. ` +
+              `The keys will be empty in production mode to avoid performance overhead.`);
+          return Reflect.ownKeys(target);
+      };
+  }
+  const RuntimeCompiledPublicInstanceProxyHandlers = /*#__PURE__*/ extend({}, PublicInstanceProxyHandlers, {
+      get(target, key) {
+          // fast path for unscopables when using `with` block
+          if (key === Symbol.unscopables) {
+              return;
+          }
+          return PublicInstanceProxyHandlers.get(target, key, target);
+      },
+      has(_, key) {
+          const has = key[0] !== '_' && !isGloballyWhitelisted(key);
+          if (!has && PublicInstanceProxyHandlers.has(_, key)) {
+              warn$1(`Property ${JSON.stringify(key)} should not start with _ which is a reserved prefix for Vue internals.`);
+          }
+          return has;
+      }
+  });
+  // dev only
+  // In dev mode, the proxy target exposes the same properties as seen on `this`
+  // for easier console inspection. In prod mode it will be an empty object so
+  // these properties definitions can be skipped.
+  function createDevRenderContext(instance) {
+      const target = {};
+      // expose internal instance for proxy handlers
+      Object.defineProperty(target, `_`, {
+          configurable: true,
+          enumerable: false,
+          get: () => instance
+      });
+      // expose public properties
+      Object.keys(publicPropertiesMap).forEach(key => {
+          Object.defineProperty(target, key, {
+              configurable: true,
+              enumerable: false,
+              get: () => publicPropertiesMap[key](instance),
+              // intercepted by the proxy so no need for implementation,
+              // but needed to prevent set errors
+              set: NOOP
+          });
+      });
+      return target;
+  }
+  // dev only
+  function exposePropsOnRenderContext(instance) {
+      const { ctx, propsOptions: [propsOptions] } = instance;
+      if (propsOptions) {
+          Object.keys(propsOptions).forEach(key => {
+              Object.defineProperty(ctx, key, {
+                  enumerable: true,
+                  configurable: true,
+                  get: () => instance.props[key],
+                  set: NOOP
+              });
+          });
+      }
+  }
+  // dev only
+  function exposeSetupStateOnRenderContext(instance) {
+      const { ctx, setupState } = instance;
+      Object.keys(toRaw(setupState)).forEach(key => {
+          if (!setupState.__isScriptSetup) {
+              if (isReservedPrefix(key[0])) {
+                  warn$1(`setup() return property ${JSON.stringify(key)} should not start with "$" or "_" ` +
+                      `which are reserved prefixes for Vue internals.`);
+                  return;
+              }
+              Object.defineProperty(ctx, key, {
+                  enumerable: true,
+                  configurable: true,
+                  get: () => setupState[key],
+                  set: NOOP
+              });
+          }
+      });
+  }
+
+  function createDuplicateChecker() {
+      const cache = Object.create(null);
+      return (type, key) => {
+          if (cache[key]) {
+              warn$1(`${type} property "${key}" is already defined in ${cache[key]}.`);
+          }
+          else {
+              cache[key] = type;
+          }
+      };
+  }
+  let shouldCacheAccess = true;
+  function applyOptions(instance) {
+      const options = resolveMergedOptions(instance);
+      const publicThis = instance.proxy;
+      const ctx = instance.ctx;
+      // do not cache property access on public proxy during state initialization
+      shouldCacheAccess = false;
+      // call beforeCreate first before accessing other options since
+      // the hook may mutate resolved options (#2791)
+      if (options.beforeCreate) {
+          callHook(options.beforeCreate, instance, "bc" /* BEFORE_CREATE */);
+      }
+      const { 
+      // state
+      data: dataOptions, computed: computedOptions, methods, watch: watchOptions, provide: provideOptions, inject: injectOptions, 
+      // lifecycle
+      created, beforeMount, mounted, beforeUpdate, updated, activated, deactivated, beforeDestroy, beforeUnmount, destroyed, unmounted, render, renderTracked, renderTriggered, errorCaptured, serverPrefetch, 
+      // public API
+      expose, inheritAttrs, 
+      // assets
+      components, directives, filters } = options;
+      const checkDuplicateProperties = createDuplicateChecker() ;
+      {
+          const [propsOptions] = instance.propsOptions;
+          if (propsOptions) {
+              for (const key in propsOptions) {
+                  checkDuplicateProperties("Props" /* PROPS */, key);
+              }
+          }
+      }
+      // options initialization order (to be consistent with Vue 2):
+      // - props (already done outside of this function)
+      // - inject
+      // - methods
+      // - data (deferred since it relies on `this` access)
+      // - computed
+      // - watch (deferred since it relies on `this` access)
+      if (injectOptions) {
+          resolveInjections(injectOptions, ctx, checkDuplicateProperties, instance.appContext.config.unwrapInjectedRef);
+      }
+      if (methods) {
+          for (const key in methods) {
+              const methodHandler = methods[key];
+              if (isFunction(methodHandler)) {
+                  // In dev mode, we use the `createRenderContext` function to define
+                  // methods to the proxy target, and those are read-only but
+                  // reconfigurable, so it needs to be redefined here
+                  {
+                      Object.defineProperty(ctx, key, {
+                          value: methodHandler.bind(publicThis),
+                          configurable: true,
+                          enumerable: true,
+                          writable: true
+                      });
+                  }
+                  {
+                      checkDuplicateProperties("Methods" /* METHODS */, key);
+                  }
+              }
+              else {
+                  warn$1(`Method "${key}" has type "${typeof methodHandler}" in the component definition. ` +
+                      `Did you reference the function correctly?`);
+              }
+          }
+      }
+      if (dataOptions) {
+          if (!isFunction(dataOptions)) {
+              warn$1(`The data option must be a function. ` +
+                  `Plain object usage is no longer supported.`);
+          }
+          const data = dataOptions.call(publicThis, publicThis);
+          if (isPromise(data)) {
+              warn$1(`data() returned a Promise - note data() cannot be async; If you ` +
+                  `intend to perform data fetching before component renders, use ` +
+                  `async setup() + <Suspense>.`);
+          }
+          if (!isObject(data)) {
+              warn$1(`data() should return an object.`);
+          }
+          else {
+              instance.data = reactive(data);
+              {
+                  for (const key in data) {
+                      checkDuplicateProperties("Data" /* DATA */, key);
+                      // expose data on ctx during dev
+                      if (!isReservedPrefix(key[0])) {
+                          Object.defineProperty(ctx, key, {
+                              configurable: true,
+                              enumerable: true,
+                              get: () => data[key],
+                              set: NOOP
+                          });
+                      }
+                  }
+              }
+          }
+      }
+      // state initialization complete at this point - start caching access
+      shouldCacheAccess = true;
+      if (computedOptions) {
+          for (const key in computedOptions) {
+              const opt = computedOptions[key];
+              const get = isFunction(opt)
+                  ? opt.bind(publicThis, publicThis)
+                  : isFunction(opt.get)
+                      ? opt.get.bind(publicThis, publicThis)
+                      : NOOP;
+              if (get === NOOP) {
+                  warn$1(`Computed property "${key}" has no getter.`);
+              }
+              const set = !isFunction(opt) && isFunction(opt.set)
+                  ? opt.set.bind(publicThis)
+                  : () => {
+                          warn$1(`Write operation failed: computed property "${key}" is readonly.`);
+                      }
+                      ;
+              const c = computed$1({
+                  get,
+                  set
+              });
+              Object.defineProperty(ctx, key, {
+                  enumerable: true,
+                  configurable: true,
+                  get: () => c.value,
+                  set: v => (c.value = v)
+              });
+              {
+                  checkDuplicateProperties("Computed" /* COMPUTED */, key);
+              }
+          }
+      }
+      if (watchOptions) {
+          for (const key in watchOptions) {
+              createWatcher(watchOptions[key], ctx, publicThis, key);
+          }
+      }
+      if (provideOptions) {
+          const provides = isFunction(provideOptions)
+              ? provideOptions.call(publicThis)
+              : provideOptions;
+          Reflect.ownKeys(provides).forEach(key => {
+              provide(key, provides[key]);
+          });
+      }
+      if (created) {
+          callHook(created, instance, "c" /* CREATED */);
+      }
+      function registerLifecycleHook(register, hook) {
+          if (isArray(hook)) {
+              hook.forEach(_hook => register(_hook.bind(publicThis)));
+          }
+          else if (hook) {
+              register(hook.bind(publicThis));
+          }
+      }
+      registerLifecycleHook(onBeforeMount, beforeMount);
+      registerLifecycleHook(onMounted, mounted);
+      registerLifecycleHook(onBeforeUpdate, beforeUpdate);
+      registerLifecycleHook(onUpdated, updated);
+      registerLifecycleHook(onActivated, activated);
+      registerLifecycleHook(onDeactivated, deactivated);
+      registerLifecycleHook(onErrorCaptured, errorCaptured);
+      registerLifecycleHook(onRenderTracked, renderTracked);
+      registerLifecycleHook(onRenderTriggered, renderTriggered);
+      registerLifecycleHook(onBeforeUnmount, beforeUnmount);
+      registerLifecycleHook(onUnmounted, unmounted);
+      registerLifecycleHook(onServerPrefetch, serverPrefetch);
+      if (isArray(expose)) {
+          if (expose.length) {
+              const exposed = instance.exposed || (instance.exposed = {});
+              expose.forEach(key => {
+                  Object.defineProperty(exposed, key, {
+                      get: () => publicThis[key],
+                      set: val => (publicThis[key] = val)
+                  });
+              });
+          }
+          else if (!instance.exposed) {
+              instance.exposed = {};
+          }
+      }
+      // options that are handled when creating the instance but also need to be
+      // applied from mixins
+      if (render && instance.render === NOOP) {
+          instance.render = render;
+      }
+      if (inheritAttrs != null) {
+          instance.inheritAttrs = inheritAttrs;
+      }
+      // asset options.
+      if (components)
+          instance.components = components;
+      if (directives)
+          instance.directives = directives;
+  }
+  function resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP, unwrapRef = false) {
+      if (isArray(injectOptions)) {
+          injectOptions = normalizeInject(injectOptions);
+      }
+      for (const key in injectOptions) {
+          const opt = injectOptions[key];
+          let injected;
+          if (isObject(opt)) {
+              if ('default' in opt) {
+                  injected = inject(opt.from || key, opt.default, true /* treat default function as factory */);
+              }
+              else {
+                  injected = inject(opt.from || key);
+              }
+          }
+          else {
+              injected = inject(opt);
+          }
+          if (isRef(injected)) {
+              // TODO remove the check in 3.3
+              if (unwrapRef) {
+                  Object.defineProperty(ctx, key, {
+                      enumerable: true,
+                      configurable: true,
+                      get: () => injected.value,
+                      set: v => (injected.value = v)
+                  });
+              }
+              else {
+                  {
+                      warn$1(`injected property "${key}" is a ref and will be auto-unwrapped ` +
+                          `and no longer needs \`.value\` in the next minor release. ` +
+                          `To opt-in to the new behavior now, ` +
+                          `set \`app.config.unwrapInjectedRef = true\` (this config is ` +
+                          `temporary and will not be needed in the future.)`);
+                  }
+                  ctx[key] = injected;
+              }
+          }
+          else {
+              ctx[key] = injected;
+          }
+          {
+              checkDuplicateProperties("Inject" /* INJECT */, key);
+          }
+      }
+  }
+  function callHook(hook, instance, type) {
+      callWithAsyncErrorHandling(isArray(hook)
+          ? hook.map(h => h.bind(instance.proxy))
+          : hook.bind(instance.proxy), instance, type);
+  }
+  function createWatcher(raw, ctx, publicThis, key) {
+      const getter = key.includes('.')
+          ? createPathGetter(publicThis, key)
+          : () => publicThis[key];
+      if (isString(raw)) {
+          const handler = ctx[raw];
+          if (isFunction(handler)) {
+              watch(getter, handler);
+          }
+          else {
+              warn$1(`Invalid watch handler specified by key "${raw}"`, handler);
+          }
+      }
+      else if (isFunction(raw)) {
+          watch(getter, raw.bind(publicThis));
+      }
+      else if (isObject(raw)) {
+          if (isArray(raw)) {
+              raw.forEach(r => createWatcher(r, ctx, publicThis, key));
+          }
+          else {
+              const handler = isFunction(raw.handler)
+                  ? raw.handler.bind(publicThis)
+                  : ctx[raw.handler];
+              if (isFunction(handler)) {
+                  watch(getter, handler, raw);
+              }
+              else {
+                  warn$1(`Invalid watch handler specified by key "${raw.handler}"`, handler);
+              }
+          }
+      }
+      else {
+          warn$1(`Invalid watch option: "${key}"`, raw);
+      }
+  }
+  /**
+   * Resolve merged options and cache it on the component.
+   * This is done only once per-component since the merging does not involve
+   * instances.
+   */
+  function resolveMergedOptions(instance) {
+      const base = instance.type;
+      const { mixins, extends: extendsOptions } = base;
+      const { mixins: globalMixins, optionsCache: cache, config: { optionMergeStrategies } } = instance.appContext;
+      const cached = cache.get(base);
+      let resolved;
+      if (cached) {
+          resolved = cached;
+      }
+      else if (!globalMixins.length && !mixins && !extendsOptions) {
+          {
+              resolved = base;
+          }
+      }
+      else {
+          resolved = {};
+          if (globalMixins.length) {
+              globalMixins.forEach(m => mergeOptions(resolved, m, optionMergeStrategies, true));
+          }
+          mergeOptions(resolved, base, optionMergeStrategies);
+      }
+      cache.set(base, resolved);
+      return resolved;
+  }
+  function mergeOptions(to, from, strats, asMixin = false) {
+      const { mixins, extends: extendsOptions } = from;
+      if (extendsOptions) {
+          mergeOptions(to, extendsOptions, strats, true);
+      }
+      if (mixins) {
+          mixins.forEach((m) => mergeOptions(to, m, strats, true));
+      }
+      for (const key in from) {
+          if (asMixin && key === 'expose') {
+              warn$1(`"expose" option is ignored when declared in mixins or extends. ` +
+                      `It should only be declared in the base component itself.`);
+          }
+          else {
+              const strat = internalOptionMergeStrats[key] || (strats && strats[key]);
+              to[key] = strat ? strat(to[key], from[key]) : from[key];
+          }
+      }
+      return to;
+  }
+  const internalOptionMergeStrats = {
+      data: mergeDataFn,
+      props: mergeObjectOptions,
+      emits: mergeObjectOptions,
+      // objects
+      methods: mergeObjectOptions,
+      computed: mergeObjectOptions,
+      // lifecycle
+      beforeCreate: mergeAsArray,
+      created: mergeAsArray,
+      beforeMount: mergeAsArray,
+      mounted: mergeAsArray,
+      beforeUpdate: mergeAsArray,
+      updated: mergeAsArray,
+      beforeDestroy: mergeAsArray,
+      beforeUnmount: mergeAsArray,
+      destroyed: mergeAsArray,
+      unmounted: mergeAsArray,
+      activated: mergeAsArray,
+      deactivated: mergeAsArray,
+      errorCaptured: mergeAsArray,
+      serverPrefetch: mergeAsArray,
+      // assets
+      components: mergeObjectOptions,
+      directives: mergeObjectOptions,
+      // watch
+      watch: mergeWatchOptions,
+      // provide / inject
+      provide: mergeDataFn,
+      inject: mergeInject
+  };
+  function mergeDataFn(to, from) {
+      if (!from) {
+          return to;
+      }
+      if (!to) {
+          return from;
+      }
+      return function mergedDataFn() {
+          return (extend)(isFunction(to) ? to.call(this, this) : to, isFunction(from) ? from.call(this, this) : from);
+      };
+  }
+  function mergeInject(to, from) {
+      return mergeObjectOptions(normalizeInject(to), normalizeInject(from));
+  }
+  function normalizeInject(raw) {
+      if (isArray(raw)) {
+          const res = {};
+          for (let i = 0; i < raw.length; i++) {
+              res[raw[i]] = raw[i];
+          }
+          return res;
+      }
+      return raw;
+  }
+  function mergeAsArray(to, from) {
+      return to ? [...new Set([].concat(to, from))] : from;
+  }
+  function mergeObjectOptions(to, from) {
+      return to ? extend(extend(Object.create(null), to), from) : from;
+  }
+  function mergeWatchOptions(to, from) {
+      if (!to)
+          return from;
+      if (!from)
+          return to;
+      const merged = extend(Object.create(null), to);
+      for (const key in from) {
+          merged[key] = mergeAsArray(to[key], from[key]);
+      }
+      return merged;
+  }
+
+  function initProps(instance, rawProps, isStateful, // result of bitwise flag comparison
+  isSSR = false) {
+      const props = {};
+      const attrs = {};
+      def(attrs, InternalObjectKey, 1);
+      instance.propsDefaults = Object.create(null);
+      setFullProps(instance, rawProps, props, attrs);
+      // ensure all declared prop keys are present
+      for (const key in instance.propsOptions[0]) {
+          if (!(key in props)) {
+              props[key] = undefined;
+          }
+      }
+      // validation
+      {
+          validateProps(rawProps || {}, props, instance);
+      }
+      if (isStateful) {
+          // stateful
+          instance.props = isSSR ? props : shallowReactive(props);
+      }
+      else {
+          if (!instance.type.props) {
+              // functional w/ optional props, props === attrs
+              instance.props = attrs;
+          }
+          else {
+              // functional w/ declared props
+              instance.props = props;
+          }
+      }
+      instance.attrs = attrs;
+  }
+  function updateProps(instance, rawProps, rawPrevProps, optimized) {
+      const { props, attrs, vnode: { patchFlag } } = instance;
+      const rawCurrentProps = toRaw(props);
+      const [options] = instance.propsOptions;
+      let hasAttrsChanged = false;
+      if (
+      // always force full diff in dev
+      // - #1942 if hmr is enabled with sfc component
+      // - vite#872 non-sfc component used by sfc component
+      !((instance.type.__hmrId ||
+              (instance.parent && instance.parent.type.__hmrId))) &&
+          (optimized || patchFlag > 0) &&
+          !(patchFlag & 16 /* FULL_PROPS */)) {
+          if (patchFlag & 8 /* PROPS */) {
+              // Compiler-generated props & no keys change, just set the updated
+              // the props.
+              const propsToUpdate = instance.vnode.dynamicProps;
+              for (let i = 0; i < propsToUpdate.length; i++) {
+                  let key = propsToUpdate[i];
+                  // skip if the prop key is a declared emit event listener
+                  if (isEmitListener(instance.emitsOptions, key)) {
+                      continue;
+                  }
+                  // PROPS flag guarantees rawProps to be non-null
+                  const value = rawProps[key];
+                  if (options) {
+                      // attr / props separation was done on init and will be consistent
+                      // in this code path, so just check if attrs have it.
+                      if (hasOwn(attrs, key)) {
+                          if (value !== attrs[key]) {
+                              attrs[key] = value;
+                              hasAttrsChanged = true;
+                          }
+                      }
+                      else {
+                          const camelizedKey = camelize(key);
+                          props[camelizedKey] = resolvePropValue(options, rawCurrentProps, camelizedKey, value, instance, false /* isAbsent */);
+                      }
+                  }
+                  else {
+                      if (value !== attrs[key]) {
+                          attrs[key] = value;
+                          hasAttrsChanged = true;
+                      }
+                  }
+              }
+          }
+      }
+      else {
+          // full props update.
+          if (setFullProps(instance, rawProps, props, attrs)) {
+              hasAttrsChanged = true;
+          }
+          // in case of dynamic props, check if we need to delete keys from
+          // the props object
+          let kebabKey;
+          for (const key in rawCurrentProps) {
+              if (!rawProps ||
+                  // for camelCase
+                  (!hasOwn(rawProps, key) &&
+                      // it's possible the original props was passed in as kebab-case
+                      // and converted to camelCase (#955)
+                      ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey)))) {
+                  if (options) {
+                      if (rawPrevProps &&
+                          // for camelCase
+                          (rawPrevProps[key] !== undefined ||
+                              // for kebab-case
+                              rawPrevProps[kebabKey] !== undefined)) {
+                          props[key] = resolvePropValue(options, rawCurrentProps, key, undefined, instance, true /* isAbsent */);
+                      }
+                  }
+                  else {
+                      delete props[key];
+                  }
+              }
+          }
+          // in the case of functional component w/o props declaration, props and
+          // attrs point to the same object so it should already have been updated.
+          if (attrs !== rawCurrentProps) {
+              for (const key in attrs) {
+                  if (!rawProps ||
+                      (!hasOwn(rawProps, key) &&
+                          (!false ))) {
+                      delete attrs[key];
+                      hasAttrsChanged = true;
+                  }
+              }
+          }
+      }
+      // trigger updates for $attrs in case it's used in component slots
+      if (hasAttrsChanged) {
+          trigger(instance, "set" /* SET */, '$attrs');
+      }
+      {
+          validateProps(rawProps || {}, props, instance);
+      }
+  }
+  function setFullProps(instance, rawProps, props, attrs) {
+      const [options, needCastKeys] = instance.propsOptions;
+      let hasAttrsChanged = false;
+      let rawCastValues;
+      if (rawProps) {
+          for (let key in rawProps) {
+              // key, ref are reserved and never passed down
+              if (isReservedProp(key)) {
+                  continue;
+              }
+              const value = rawProps[key];
+              // prop option names are camelized during normalization, so to support
+              // kebab -> camel conversion here we need to camelize the key.
+              let camelKey;
+              if (options && hasOwn(options, (camelKey = camelize(key)))) {
+                  if (!needCastKeys || !needCastKeys.includes(camelKey)) {
+                      props[camelKey] = value;
+                  }
+                  else {
+                      (rawCastValues || (rawCastValues = {}))[camelKey] = value;
+                  }
+              }
+              else if (!isEmitListener(instance.emitsOptions, key)) {
+                  if (!(key in attrs) || value !== attrs[key]) {
+                      attrs[key] = value;
+                      hasAttrsChanged = true;
+                  }
+              }
+          }
+      }
+      if (needCastKeys) {
+          const rawCurrentProps = toRaw(props);
+          const castValues = rawCastValues || EMPTY_OBJ;
+          for (let i = 0; i < needCastKeys.length; i++) {
+              const key = needCastKeys[i];
+              props[key] = resolvePropValue(options, rawCurrentProps, key, castValues[key], instance, !hasOwn(castValues, key));
+          }
+      }
+      return hasAttrsChanged;
+  }
+  function resolvePropValue(options, props, key, value, instance, isAbsent) {
+      const opt = options[key];
+      if (opt != null) {
+          const hasDefault = hasOwn(opt, 'default');
+          // default values
+          if (hasDefault && value === undefined) {
+              const defaultValue = opt.default;
+              if (opt.type !== Function && isFunction(defaultValue)) {
+                  const { propsDefaults } = instance;
+                  if (key in propsDefaults) {
+                      value = propsDefaults[key];
+                  }
+                  else {
+                      setCurrentInstance(instance);
+                      value = propsDefaults[key] = defaultValue.call(null, props);
+                      unsetCurrentInstance();
+                  }
+              }
+              else {
+                  value = defaultValue;
+              }
+          }
+          // boolean casting
+          if (opt[0 /* shouldCast */]) {
+              if (isAbsent && !hasDefault) {
+                  value = false;
+              }
+              else if (opt[1 /* shouldCastTrue */] &&
+                  (value === '' || value === hyphenate(key))) {
+                  value = true;
+              }
+          }
+      }
+      return value;
+  }
+  function normalizePropsOptions(comp, appContext, asMixin = false) {
+      const cache = appContext.propsCache;
+      const cached = cache.get(comp);
+      if (cached) {
+          return cached;
+      }
+      const raw = comp.props;
+      const normalized = {};
+      const needCastKeys = [];
+      // apply mixin/extends props
+      let hasExtends = false;
+      if (!isFunction(comp)) {
+          const extendProps = (raw) => {
+              hasExtends = true;
+              const [props, keys] = normalizePropsOptions(raw, appContext, true);
+              extend(normalized, props);
+              if (keys)
+                  needCastKeys.push(...keys);
+          };
+          if (!asMixin && appContext.mixins.length) {
+              appContext.mixins.forEach(extendProps);
+          }
+          if (comp.extends) {
+              extendProps(comp.extends);
+          }
+          if (comp.mixins) {
+              comp.mixins.forEach(extendProps);
+          }
+      }
+      if (!raw && !hasExtends) {
+          cache.set(comp, EMPTY_ARR);
+          return EMPTY_ARR;
+      }
+      if (isArray(raw)) {
+          for (let i = 0; i < raw.length; i++) {
+              if (!isString(raw[i])) {
+                  warn$1(`props must be strings when using array syntax.`, raw[i]);
+              }
+              const normalizedKey = camelize(raw[i]);
+              if (validatePropName(normalizedKey)) {
+                  normalized[normalizedKey] = EMPTY_OBJ;
+              }
+          }
+      }
+      else if (raw) {
+          if (!isObject(raw)) {
+              warn$1(`invalid props options`, raw);
+          }
+          for (const key in raw) {
+              const normalizedKey = camelize(key);
+              if (validatePropName(normalizedKey)) {
+                  const opt = raw[key];
+                  const prop = (normalized[normalizedKey] =
+                      isArray(opt) || isFunction(opt) ? { type: opt } : opt);
+                  if (prop) {
+                      const booleanIndex = getTypeIndex(Boolean, prop.type);
+                      const stringIndex = getTypeIndex(String, prop.type);
+                      prop[0 /* shouldCast */] = booleanIndex > -1;
+                      prop[1 /* shouldCastTrue */] =
+                          stringIndex < 0 || booleanIndex < stringIndex;
+                      // if the prop needs boolean casting or default value
+                      if (booleanIndex > -1 || hasOwn(prop, 'default')) {
+                          needCastKeys.push(normalizedKey);
+                      }
+                  }
+              }
+          }
+      }
+      const res = [normalized, needCastKeys];
+      cache.set(comp, res);
+      return res;
+  }
+  function validatePropName(key) {
+      if (key[0] !== '$') {
+          return true;
+      }
+      else {
+          warn$1(`Invalid prop name: "${key}" is a reserved property.`);
+      }
+      return false;
+  }
+  // use function string name to check type constructors
+  // so that it works across vms / iframes.
+  function getType(ctor) {
+      const match = ctor && ctor.toString().match(/^\s*function (\w+)/);
+      return match ? match[1] : ctor === null ? 'null' : '';
+  }
+  function isSameType(a, b) {
+      return getType(a) === getType(b);
+  }
+  function getTypeIndex(type, expectedTypes) {
+      if (isArray(expectedTypes)) {
+          return expectedTypes.findIndex(t => isSameType(t, type));
+      }
+      else if (isFunction(expectedTypes)) {
+          return isSameType(expectedTypes, type) ? 0 : -1;
+      }
+      return -1;
+  }
+  /**
+   * dev only
+   */
+  function validateProps(rawProps, props, instance) {
+      const resolvedValues = toRaw(props);
+      const options = instance.propsOptions[0];
+      for (const key in options) {
+          let opt = options[key];
+          if (opt == null)
+              continue;
+          validateProp(key, resolvedValues[key], opt, !hasOwn(rawProps, key) && !hasOwn(rawProps, hyphenate(key)));
+      }
+  }
+  /**
+   * dev only
+   */
+  function validateProp(name, value, prop, isAbsent) {
+      const { type, required, validator } = prop;
+      // required!
+      if (required && isAbsent) {
+          warn$1('Missing required prop: "' + name + '"');
+          return;
+      }
+      // missing but optional
+      if (value == null && !prop.required) {
+          return;
+      }
+      // type check
+      if (type != null && type !== true) {
+          let isValid = false;
+          const types = isArray(type) ? type : [type];
+          const expectedTypes = [];
+          // value is valid as long as one of the specified types match
+          for (let i = 0; i < types.length && !isValid; i++) {
+              const { valid, expectedType } = assertType(value, types[i]);
+              expectedTypes.push(expectedType || '');
+              isValid = valid;
+          }
+          if (!isValid) {
+              warn$1(getInvalidTypeMessage(name, value, expectedTypes));
+              return;
+          }
+      }
+      // custom validator
+      if (validator && !validator(value)) {
+          warn$1('Invalid prop: custom validator check failed for prop "' + name + '".');
+      }
+  }
+  const isSimpleType = /*#__PURE__*/ makeMap('String,Number,Boolean,Function,Symbol,BigInt');
+  /**
+   * dev only
+   */
+  function assertType(value, type) {
+      let valid;
+      const expectedType = getType(type);
+      if (isSimpleType(expectedType)) {
+          const t = typeof value;
+          valid = t === expectedType.toLowerCase();
+          // for primitive wrapper objects
+          if (!valid && t === 'object') {
+              valid = value instanceof type;
+          }
+      }
+      else if (expectedType === 'Object') {
+          valid = isObject(value);
+      }
+      else if (expectedType === 'Array') {
+          valid = isArray(value);
+      }
+      else if (expectedType === 'null') {
+          valid = value === null;
+      }
+      else {
+          valid = value instanceof type;
+      }
+      return {
+          valid,
+          expectedType
+      };
+  }
+  /**
+   * dev only
+   */
+  function getInvalidTypeMessage(name, value, expectedTypes) {
+      let message = `Invalid prop: type check failed for prop "${name}".` +
+          ` Expected ${expectedTypes.map(capitalize).join(' | ')}`;
+      const expectedType = expectedTypes[0];
+      const receivedType = toRawType(value);
+      const expectedValue = styleValue(value, expectedType);
+      const receivedValue = styleValue(value, receivedType);
+      // check if we need to specify expected value
+      if (expectedTypes.length === 1 &&
+          isExplicable(expectedType) &&
+          !isBoolean(expectedType, receivedType)) {
+          message += ` with value ${expectedValue}`;
+      }
+      message += `, got ${receivedType} `;
+      // check if we need to specify received value
+      if (isExplicable(receivedType)) {
+          message += `with value ${receivedValue}.`;
+      }
+      return message;
+  }
+  /**
+   * dev only
+   */
+  function styleValue(value, type) {
+      if (type === 'String') {
+          return `"${value}"`;
+      }
+      else if (type === 'Number') {
+          return `${Number(value)}`;
+      }
+      else {
+          return `${value}`;
+      }
+  }
+  /**
+   * dev only
+   */
+  function isExplicable(type) {
+      const explicitTypes = ['string', 'number', 'boolean'];
+      return explicitTypes.some(elem => type.toLowerCase() === elem);
+  }
+  /**
+   * dev only
+   */
+  function isBoolean(...args) {
+      return args.some(elem => elem.toLowerCase() === 'boolean');
+  }
+
+  const isInternalKey = (key) => key[0] === '_' || key === '$stable';
+  const normalizeSlotValue = (value) => isArray(value)
+      ? value.map(normalizeVNode)
+      : [normalizeVNode(value)];
+  const normalizeSlot = (key, rawSlot, ctx) => {
+      if (rawSlot._n) {
+          // already normalized - #5353
+          return rawSlot;
+      }
+      const normalized = withCtx((...args) => {
+          if (currentInstance) {
+              warn$1(`Slot "${key}" invoked outside of the render function: ` +
+                  `this will not track dependencies used in the slot. ` +
+                  `Invoke the slot function inside the render function instead.`);
+          }
+          return normalizeSlotValue(rawSlot(...args));
+      }, ctx);
+      normalized._c = false;
+      return normalized;
+  };
+  const normalizeObjectSlots = (rawSlots, slots, instance) => {
+      const ctx = rawSlots._ctx;
+      for (const key in rawSlots) {
+          if (isInternalKey(key))
+              continue;
+          const value = rawSlots[key];
+          if (isFunction(value)) {
+              slots[key] = normalizeSlot(key, value, ctx);
+          }
+          else if (value != null) {
+              {
+                  warn$1(`Non-function value encountered for slot "${key}". ` +
+                      `Prefer function slots for better performance.`);
+              }
+              const normalized = normalizeSlotValue(value);
+              slots[key] = () => normalized;
+          }
+      }
+  };
+  const normalizeVNodeSlots = (instance, children) => {
+      if (!isKeepAlive(instance.vnode) &&
+          !(false )) {
+          warn$1(`Non-function value encountered for default slot. ` +
+              `Prefer function slots for better performance.`);
+      }
+      const normalized = normalizeSlotValue(children);
+      instance.slots.default = () => normalized;
+  };
+  const initSlots = (instance, children) => {
+      if (instance.vnode.shapeFlag & 32 /* SLOTS_CHILDREN */) {
+          const type = children._;
+          if (type) {
+              // users can get the shallow readonly version of the slots object through `this.$slots`,
+              // we should avoid the proxy object polluting the slots of the internal instance
+              instance.slots = toRaw(children);
+              // make compiler marker non-enumerable
+              def(children, '_', type);
+          }
+          else {
+              normalizeObjectSlots(children, (instance.slots = {}));
+          }
+      }
+      else {
+          instance.slots = {};
+          if (children) {
+              normalizeVNodeSlots(instance, children);
+          }
+      }
+      def(instance.slots, InternalObjectKey, 1);
+  };
+  const updateSlots = (instance, children, optimized) => {
+      const { vnode, slots } = instance;
+      let needDeletionCheck = true;
+      let deletionComparisonTarget = EMPTY_OBJ;
+      if (vnode.shapeFlag & 32 /* SLOTS_CHILDREN */) {
+          const type = children._;
+          if (type) {
+              // compiled slots.
+              if (isHmrUpdating) {
+                  // Parent was HMR updated so slot content may have changed.
+                  // force update slots and mark instance for hmr as well
+                  extend(slots, children);
+              }
+              else if (optimized && type === 1 /* STABLE */) {
+                  // compiled AND stable.
+                  // no need to update, and skip stale slots removal.
+                  needDeletionCheck = false;
+              }
+              else {
+                  // compiled but dynamic (v-if/v-for on slots) - update slots, but skip
+                  // normalization.
+                  extend(slots, children);
+                  // #2893
+                  // when rendering the optimized slots by manually written render function,
+                  // we need to delete the `slots._` flag if necessary to make subsequent updates reliable,
+                  // i.e. let the `renderSlot` create the bailed Fragment
+                  if (!optimized && type === 1 /* STABLE */) {
+                      delete slots._;
+                  }
+              }
+          }
+          else {
+              needDeletionCheck = !children.$stable;
+              normalizeObjectSlots(children, slots);
+          }
+          deletionComparisonTarget = children;
+      }
+      else if (children) {
+          // non slot object children (direct value) passed to a component
+          normalizeVNodeSlots(instance, children);
+          deletionComparisonTarget = { default: 1 };
+      }
+      // delete stale slots
+      if (needDeletionCheck) {
+          for (const key in slots) {
+              if (!isInternalKey(key) && !(key in deletionComparisonTarget)) {
+                  delete slots[key];
+              }
+          }
+      }
+  };
+
+  function createAppContext() {
+      return {
+          app: null,
+          config: {
+              isNativeTag: NO,
+              performance: false,
+              globalProperties: {},
+              optionMergeStrategies: {},
+              errorHandler: undefined,
+              warnHandler: undefined,
+              compilerOptions: {}
+          },
+          mixins: [],
+          components: {},
+          directives: {},
+          provides: Object.create(null),
+          optionsCache: new WeakMap(),
+          propsCache: new WeakMap(),
+          emitsCache: new WeakMap()
+      };
+  }
+  let uid = 0;
+  function createAppAPI(render, hydrate) {
+      return function createApp(rootComponent, rootProps = null) {
+          if (!isFunction(rootComponent)) {
+              rootComponent = Object.assign({}, rootComponent);
+          }
+          if (rootProps != null && !isObject(rootProps)) {
+              warn$1(`root props passed to app.mount() must be an object.`);
+              rootProps = null;
+          }
+          const context = createAppContext();
+          const installedPlugins = new Set();
+          let isMounted = false;
+          const app = (context.app = {
+              _uid: uid++,
+              _component: rootComponent,
+              _props: rootProps,
+              _container: null,
+              _context: context,
+              _instance: null,
+              version,
+              get config() {
+                  return context.config;
+              },
+              set config(v) {
+                  {
+                      warn$1(`app.config cannot be replaced. Modify individual options instead.`);
+                  }
+              },
+              use(plugin, ...options) {
+                  if (installedPlugins.has(plugin)) {
+                      warn$1(`Plugin has already been applied to target app.`);
+                  }
+                  else if (plugin && isFunction(plugin.install)) {
+                      installedPlugins.add(plugin);
+                      plugin.install(app, ...options);
+                  }
+                  else if (isFunction(plugin)) {
+                      installedPlugins.add(plugin);
+                      plugin(app, ...options);
+                  }
+                  else {
+                      warn$1(`A plugin must either be a function or an object with an "install" ` +
+                          `function.`);
+                  }
+                  return app;
+              },
+              mixin(mixin) {
+                  {
+                      if (!context.mixins.includes(mixin)) {
+                          context.mixins.push(mixin);
+                      }
+                      else {
+                          warn$1('Mixin has already been applied to target app' +
+                              (mixin.name ? `: ${mixin.name}` : ''));
+                      }
+                  }
+                  return app;
+              },
+              component(name, component) {
+                  {
+                      validateComponentName(name, context.config);
+                  }
+                  if (!component) {
+                      return context.components[name];
+                  }
+                  if (context.components[name]) {
+                      warn$1(`Component "${name}" has already been registered in target app.`);
+                  }
+                  context.components[name] = component;
+                  return app;
+              },
+              directive(name, directive) {
+                  {
+                      validateDirectiveName(name);
+                  }
+                  if (!directive) {
+                      return context.directives[name];
+                  }
+                  if (context.directives[name]) {
+                      warn$1(`Directive "${name}" has already been registered in target app.`);
+                  }
+                  context.directives[name] = directive;
+                  return app;
+              },
+              mount(rootContainer, isHydrate, isSVG) {
+                  if (!isMounted) {
+                      // #5571
+                      if (rootContainer.__vue_app__) {
+                          warn$1(`There is already an app instance mounted on the host container.\n` +
+                              ` If you want to mount another app on the same host container,` +
+                              ` you need to unmount the previous app by calling \`app.unmount()\` first.`);
+                      }
+                      const vnode = createVNode(rootComponent, rootProps);
+                      // store app context on the root VNode.
+                      // this will be set on the root instance on initial mount.
+                      vnode.appContext = context;
+                      // HMR root reload
+                      {
+                          context.reload = () => {
+                              render(cloneVNode(vnode), rootContainer, isSVG);
+                          };
+                      }
+                      if (isHydrate && hydrate) {
+                          hydrate(vnode, rootContainer);
+                      }
+                      else {
+                          render(vnode, rootContainer, isSVG);
+                      }
+                      isMounted = true;
+                      app._container = rootContainer;
+                      rootContainer.__vue_app__ = app;
+                      {
+                          app._instance = vnode.component;
+                          devtoolsInitApp(app, version);
+                      }
+                      return getExposeProxy(vnode.component) || vnode.component.proxy;
+                  }
+                  else {
+                      warn$1(`App has already been mounted.\n` +
+                          `If you want to remount the same app, move your app creation logic ` +
+                          `into a factory function and create fresh app instances for each ` +
+                          `mount - e.g. \`const createMyApp = () => createApp(App)\``);
+                  }
+              },
+              unmount() {
+                  if (isMounted) {
+                      render(null, app._container);
+                      {
+                          app._instance = null;
+                          devtoolsUnmountApp(app);
+                      }
+                      delete app._container.__vue_app__;
+                  }
+                  else {
+                      warn$1(`Cannot unmount an app that is not mounted.`);
+                  }
+              },
+              provide(key, value) {
+                  if (key in context.provides) {
+                      warn$1(`App already provides property with key "${String(key)}". ` +
+                          `It will be overwritten with the new value.`);
+                  }
+                  context.provides[key] = value;
+                  return app;
+              }
+          });
+          return app;
+      };
+  }
+
+  /**
+   * Function for handling a template ref
+   */
+  function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
+      if (isArray(rawRef)) {
+          rawRef.forEach((r, i) => setRef(r, oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), parentSuspense, vnode, isUnmount));
+          return;
+      }
+      if (isAsyncWrapper(vnode) && !isUnmount) {
+          // when mounting async components, nothing needs to be done,
+          // because the template ref is forwarded to inner component
+          return;
+      }
+      const refValue = vnode.shapeFlag & 4 /* STATEFUL_COMPONENT */
+          ? getExposeProxy(vnode.component) || vnode.component.proxy
+          : vnode.el;
+      const value = isUnmount ? null : refValue;
+      const { i: owner, r: ref } = rawRef;
+      if (!owner) {
+          warn$1(`Missing ref owner context. ref cannot be used on hoisted vnodes. ` +
+              `A vnode with ref must be created inside the render function.`);
+          return;
+      }
+      const oldRef = oldRawRef && oldRawRef.r;
+      const refs = owner.refs === EMPTY_OBJ ? (owner.refs = {}) : owner.refs;
+      const setupState = owner.setupState;
+      // dynamic ref changed. unset old ref
+      if (oldRef != null && oldRef !== ref) {
+          if (isString(oldRef)) {
+              refs[oldRef] = null;
+              if (hasOwn(setupState, oldRef)) {
+                  setupState[oldRef] = null;
+              }
+          }
+          else if (isRef(oldRef)) {
+              oldRef.value = null;
+          }
+      }
+      if (isFunction(ref)) {
+          callWithErrorHandling(ref, owner, 12 /* FUNCTION_REF */, [value, refs]);
+      }
+      else {
+          const _isString = isString(ref);
+          const _isRef = isRef(ref);
+          if (_isString || _isRef) {
+              const doSet = () => {
+                  if (rawRef.f) {
+                      const existing = _isString ? refs[ref] : ref.value;
+                      if (isUnmount) {
+                          isArray(existing) && remove(existing, refValue);
+                      }
+                      else {
+                          if (!isArray(existing)) {
+                              if (_isString) {
+                                  refs[ref] = [refValue];
+                                  if (hasOwn(setupState, ref)) {
+                                      setupState[ref] = refs[ref];
+                                  }
+                              }
+                              else {
+                                  ref.value = [refValue];
+                                  if (rawRef.k)
+                                      refs[rawRef.k] = ref.value;
+                              }
+                          }
+                          else if (!existing.includes(refValue)) {
+                              existing.push(refValue);
+                          }
+                      }
+                  }
+                  else if (_isString) {
+                      refs[ref] = value;
+                      if (hasOwn(setupState, ref)) {
+                          setupState[ref] = value;
+                      }
+                  }
+                  else if (isRef(ref)) {
+                      ref.value = value;
+                      if (rawRef.k)
+                          refs[rawRef.k] = value;
+                  }
+                  else {
+                      warn$1('Invalid template ref type:', ref, `(${typeof ref})`);
+                  }
+              };
+              if (value) {
+                  doSet.id = -1;
+                  queuePostRenderEffect(doSet, parentSuspense);
+              }
+              else {
+                  doSet();
+              }
+          }
+          else {
+              warn$1('Invalid template ref type:', ref, `(${typeof ref})`);
+          }
+      }
+  }
+
+  let hasMismatch = false;
+  const isSVGContainer = (container) => /svg/.test(container.namespaceURI) && container.tagName !== 'foreignObject';
+  const isComment = (node) => node.nodeType === 8 /* COMMENT */;
+  // Note: hydration is DOM-specific
+  // But we have to place it in core due to tight coupling with core - splitting
+  // it out creates a ton of unnecessary complexity.
+  // Hydration also depends on some renderer internal logic which needs to be
+  // passed in via arguments.
+  function createHydrationFunctions(rendererInternals) {
+      const { mt: mountComponent, p: patch, o: { patchProp, createText, nextSibling, parentNode, remove, insert, createComment } } = rendererInternals;
+      const hydrate = (vnode, container) => {
+          if (!container.hasChildNodes()) {
+              warn$1(`Attempting to hydrate existing markup but container is empty. ` +
+                      `Performing full mount instead.`);
+              patch(null, vnode, container);
+              flushPostFlushCbs();
+              return;
+          }
+          hasMismatch = false;
+          hydrateNode(container.firstChild, vnode, null, null, null);
+          flushPostFlushCbs();
+          if (hasMismatch && !false) {
+              // this error should show up in production
+              console.error(`Hydration completed but contains mismatches.`);
+          }
+      };
+      const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {
+          const isFragmentStart = isComment(node) && node.data === '[';
+          const onMismatch = () => handleMismatch(node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragmentStart);
+          const { type, ref, shapeFlag, patchFlag } = vnode;
+          const domType = node.nodeType;
+          vnode.el = node;
+          if (patchFlag === -2 /* BAIL */) {
+              optimized = false;
+              vnode.dynamicChildren = null;
+          }
+          let nextNode = null;
+          switch (type) {
+              case Text:
+                  if (domType !== 3 /* TEXT */) {
+                      // #5728 empty text node inside a slot can cause hydration failure
+                      // because the server rendered HTML won't contain a text node
+                      if (vnode.children === '') {
+                          insert((vnode.el = createText('')), parentNode(node), node);
+                          nextNode = node;
+                      }
+                      else {
+                          nextNode = onMismatch();
+                      }
+                  }
+                  else {
+                      if (node.data !== vnode.children) {
+                          hasMismatch = true;
+                          warn$1(`Hydration text mismatch:` +
+                                  `\n- Client: ${JSON.stringify(node.data)}` +
+                                  `\n- Server: ${JSON.stringify(vnode.children)}`);
+                          node.data = vnode.children;
+                      }
+                      nextNode = nextSibling(node);
+                  }
+                  break;
+              case Comment:
+                  if (domType !== 8 /* COMMENT */ || isFragmentStart) {
+                      nextNode = onMismatch();
+                  }
+                  else {
+                      nextNode = nextSibling(node);
+                  }
+                  break;
+              case Static:
+                  if (domType !== 1 /* ELEMENT */) {
+                      nextNode = onMismatch();
+                  }
+                  else {
+                      // determine anchor, adopt content
+                      nextNode = node;
+                      // if the static vnode has its content stripped during build,
+                      // adopt it from the server-rendered HTML.
+                      const needToAdoptContent = !vnode.children.length;
+                      for (let i = 0; i < vnode.staticCount; i++) {
+                          if (needToAdoptContent)
+                              vnode.children += nextNode.outerHTML;
+                          if (i === vnode.staticCount - 1) {
+                              vnode.anchor = nextNode;
+                          }
+                          nextNode = nextSibling(nextNode);
+                      }
+                      return nextNode;
+                  }
+                  break;
+              case Fragment:
+                  if (!isFragmentStart) {
+                      nextNode = onMismatch();
+                  }
+                  else {
+                      nextNode = hydrateFragment(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);
+                  }
+                  break;
+              default:
+                  if (shapeFlag & 1 /* ELEMENT */) {
+                      if (domType !== 1 /* ELEMENT */ ||
+                          vnode.type.toLowerCase() !==
+                              node.tagName.toLowerCase()) {
+                          nextNode = onMismatch();
+                      }
+                      else {
+                          nextNode = hydrateElement(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);
+                      }
+                  }
+                  else if (shapeFlag & 6 /* COMPONENT */) {
+                      // when setting up the render effect, if the initial vnode already
+                      // has .el set, the component will perform hydration instead of mount
+                      // on its sub-tree.
+                      vnode.slotScopeIds = slotScopeIds;
+                      const container = parentNode(node);
+                      mountComponent(vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), optimized);
+                      // component may be async, so in the case of fragments we cannot rely
+                      // on component's rendered output to determine the end of the fragment
+                      // instead, we do a lookahead to find the end anchor node.
+                      nextNode = isFragmentStart
+                          ? locateClosingAsyncAnchor(node)
+                          : nextSibling(node);
+                      // #4293 teleport as component root
+                      if (nextNode &&
+                          isComment(nextNode) &&
+                          nextNode.data === 'teleport end') {
+                          nextNode = nextSibling(nextNode);
+                      }
+                      // #3787
+                      // if component is async, it may get moved / unmounted before its
+                      // inner component is loaded, so we need to give it a placeholder
+                      // vnode that matches its adopted DOM.
+                      if (isAsyncWrapper(vnode)) {
+                          let subTree;
+                          if (isFragmentStart) {
+                              subTree = createVNode(Fragment);
+                              subTree.anchor = nextNode
+                                  ? nextNode.previousSibling
+                                  : container.lastChild;
+                          }
+                          else {
+                              subTree =
+                                  node.nodeType === 3 ? createTextVNode('') : createVNode('div');
+                          }
+                          subTree.el = node;
+                          vnode.component.subTree = subTree;
+                      }
+                  }
+                  else if (shapeFlag & 64 /* TELEPORT */) {
+                      if (domType !== 8 /* COMMENT */) {
+                          nextNode = onMismatch();
+                      }
+                      else {
+                          nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, rendererInternals, hydrateChildren);
+                      }
+                  }
+                  else if (shapeFlag & 128 /* SUSPENSE */) {
+                      nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, isSVGContainer(parentNode(node)), slotScopeIds, optimized, rendererInternals, hydrateNode);
+                  }
+                  else {
+                      warn$1('Invalid HostVNode type:', type, `(${typeof type})`);
+                  }
+          }
+          if (ref != null) {
+              setRef(ref, null, parentSuspense, vnode);
+          }
+          return nextNode;
+      };
+      const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {
+          optimized = optimized || !!vnode.dynamicChildren;
+          const { type, props, patchFlag, shapeFlag, dirs } = vnode;
+          // #4006 for form elements with non-string v-model value bindings
+          // e.g. <option :value="obj">, <input type="checkbox" :true-value="1">
+          const forcePatchValue = (type === 'input' && dirs) || type === 'option';
+          // skip props & children if this is hoisted static nodes
+          // #5405 in dev, always hydrate children for HMR
+          {
+              if (dirs) {
+                  invokeDirectiveHook(vnode, null, parentComponent, 'created');
+              }
+              // props
+              if (props) {
+                  if (forcePatchValue ||
+                      !optimized ||
+                      patchFlag & (16 /* FULL_PROPS */ | 32 /* HYDRATE_EVENTS */)) {
+                      for (const key in props) {
+                          if ((forcePatchValue && key.endsWith('value')) ||
+                              (isOn(key) && !isReservedProp(key))) {
+                              patchProp(el, key, null, props[key], false, undefined, parentComponent);
+                          }
+                      }
+                  }
+                  else if (props.onClick) {
+                      // Fast path for click listeners (which is most often) to avoid
+                      // iterating through props.
+                      patchProp(el, 'onClick', null, props.onClick, false, undefined, parentComponent);
+                  }
+              }
+              // vnode / directive hooks
+              let vnodeHooks;
+              if ((vnodeHooks = props && props.onVnodeBeforeMount)) {
+                  invokeVNodeHook(vnodeHooks, parentComponent, vnode);
+              }
+              if (dirs) {
+                  invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount');
+              }
+              if ((vnodeHooks = props && props.onVnodeMounted) || dirs) {
+                  queueEffectWithSuspense(() => {
+                      vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);
+                      dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted');
+                  }, parentSuspense);
+              }
+              // children
+              if (shapeFlag & 16 /* ARRAY_CHILDREN */ &&
+                  // skip if element has innerHTML / textContent
+                  !(props && (props.innerHTML || props.textContent))) {
+                  let next = hydrateChildren(el.firstChild, vnode, el, parentComponent, parentSuspense, slotScopeIds, optimized);
+                  let hasWarned = false;
+                  while (next) {
+                      hasMismatch = true;
+                      if (!hasWarned) {
+                          warn$1(`Hydration children mismatch in <${vnode.type}>: ` +
+                              `server rendered element contains more child nodes than client vdom.`);
+                          hasWarned = true;
+                      }
+                      // The SSRed DOM contains more nodes than it should. Remove them.
+                      const cur = next;
+                      next = next.nextSibling;
+                      remove(cur);
+                  }
+              }
+              else if (shapeFlag & 8 /* TEXT_CHILDREN */) {
+                  if (el.textContent !== vnode.children) {
+                      hasMismatch = true;
+                      warn$1(`Hydration text content mismatch in <${vnode.type}>:\n` +
+                              `- Client: ${el.textContent}\n` +
+                              `- Server: ${vnode.children}`);
+                      el.textContent = vnode.children;
+                  }
+              }
+          }
+          return el.nextSibling;
+      };
+      const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {
+          optimized = optimized || !!parentVNode.dynamicChildren;
+          const children = parentVNode.children;
+          const l = children.length;
+          let hasWarned = false;
+          for (let i = 0; i < l; i++) {
+              const vnode = optimized
+                  ? children[i]
+                  : (children[i] = normalizeVNode(children[i]));
+              if (node) {
+                  node = hydrateNode(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);
+              }
+              else if (vnode.type === Text && !vnode.children) {
+                  continue;
+              }
+              else {
+                  hasMismatch = true;
+                  if (!hasWarned) {
+                      warn$1(`Hydration children mismatch in <${container.tagName.toLowerCase()}>: ` +
+                          `server rendered element contains fewer child nodes than client vdom.`);
+                      hasWarned = true;
+                  }
+                  // the SSRed DOM didn't contain enough nodes. Mount the missing ones.
+                  patch(null, vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), slotScopeIds);
+              }
+          }
+          return node;
+      };
+      const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {
+          const { slotScopeIds: fragmentSlotScopeIds } = vnode;
+          if (fragmentSlotScopeIds) {
+              slotScopeIds = slotScopeIds
+                  ? slotScopeIds.concat(fragmentSlotScopeIds)
+                  : fragmentSlotScopeIds;
+          }
+          const container = parentNode(node);
+          const next = hydrateChildren(nextSibling(node), vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized);
+          if (next && isComment(next) && next.data === ']') {
+              return nextSibling((vnode.anchor = next));
+          }
+          else {
+              // fragment didn't hydrate successfully, since we didn't get a end anchor
+              // back. This should have led to node/children mismatch warnings.
+              hasMismatch = true;
+              // since the anchor is missing, we need to create one and insert it
+              insert((vnode.anchor = createComment(`]`)), container, next);
+              return next;
+          }
+      };
+      const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {
+          hasMismatch = true;
+          warn$1(`Hydration node mismatch:\n- Client vnode:`, vnode.type, `\n- Server rendered DOM:`, node, node.nodeType === 3 /* TEXT */
+                  ? `(text)`
+                  : isComment(node) && node.data === '['
+                      ? `(start of fragment)`
+                      : ``);
+          vnode.el = null;
+          if (isFragment) {
+              // remove excessive fragment nodes
+              const end = locateClosingAsyncAnchor(node);
+              while (true) {
+                  const next = nextSibling(node);
+                  if (next && next !== end) {
+                      remove(next);
+                  }
+                  else {
+                      break;
+                  }
+              }
+          }
+          const next = nextSibling(node);
+          const container = parentNode(node);
+          remove(node);
+          patch(null, vnode, container, next, parentComponent, parentSuspense, isSVGContainer(container), slotScopeIds);
+          return next;
+      };
+      const locateClosingAsyncAnchor = (node) => {
+          let match = 0;
+          while (node) {
+              node = nextSibling(node);
+              if (node && isComment(node)) {
+                  if (node.data === '[')
+                      match++;
+                  if (node.data === ']') {
+                      if (match === 0) {
+                          return nextSibling(node);
+                      }
+                      else {
+                          match--;
+                      }
+                  }
+              }
+          }
+          return node;
+      };
+      return [hydrate, hydrateNode];
+  }
+
+  /* eslint-disable no-restricted-globals */
+  let supported;
+  let perf;
+  function startMeasure(instance, type) {
+      if (instance.appContext.config.performance && isSupported()) {
+          perf.mark(`vue-${type}-${instance.uid}`);
+      }
+      {
+          devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now());
+      }
+  }
+  function endMeasure(instance, type) {
+      if (instance.appContext.config.performance && isSupported()) {
+          const startTag = `vue-${type}-${instance.uid}`;
+          const endTag = startTag + `:end`;
+          perf.mark(endTag);
+          perf.measure(`<${formatComponentName(instance, instance.type)}> ${type}`, startTag, endTag);
+          perf.clearMarks(startTag);
+          perf.clearMarks(endTag);
+      }
+      {
+          devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now());
+      }
+  }
+  function isSupported() {
+      if (supported !== undefined) {
+          return supported;
+      }
+      if (typeof window !== 'undefined' && window.performance) {
+          supported = true;
+          perf = window.performance;
+      }
+      else {
+          supported = false;
+      }
+      return supported;
+  }
+
+  const queuePostRenderEffect = queueEffectWithSuspense
+      ;
+  /**
+   * The createRenderer function accepts two generic arguments:
+   * HostNode and HostElement, corresponding to Node and Element types in the
+   * host environment. For example, for runtime-dom, HostNode would be the DOM
+   * `Node` interface and HostElement would be the DOM `Element` interface.
+   *
+   * Custom renderers can pass in the platform specific types like this:
+   *
+   * ``` js
+   * const { render, createApp } = createRenderer<Node, Element>({
+   *   patchProp,
+   *   ...nodeOps
+   * })
+   * ```
+   */
+  function createRenderer(options) {
+      return baseCreateRenderer(options);
+  }
+  // Separate API for creating hydration-enabled renderer.
+  // Hydration logic is only used when calling this function, making it
+  // tree-shakable.
+  function createHydrationRenderer(options) {
+      return baseCreateRenderer(options, createHydrationFunctions);
+  }
+  // implementation
+  function baseCreateRenderer(options, createHydrationFns) {
+      const target = getGlobalThis();
+      target.__VUE__ = true;
+      {
+          setDevtoolsHook(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target);
+      }
+      const { insert: hostInsert, remove: hostRemove, patchProp: hostPatchProp, createElement: hostCreateElement, createText: hostCreateText, createComment: hostCreateComment, setText: hostSetText, setElementText: hostSetElementText, parentNode: hostParentNode, nextSibling: hostNextSibling, setScopeId: hostSetScopeId = NOOP, cloneNode: hostCloneNode, insertStaticContent: hostInsertStaticContent } = options;
+      // Note: functions inside this closure should use `const xxx = () => {}`
+      // style in order to prevent being inlined by minifiers.
+      const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = isHmrUpdating ? false : !!n2.dynamicChildren) => {
+          if (n1 === n2) {
+              return;
+          }
+          // patching & not same type, unmount old tree
+          if (n1 && !isSameVNodeType(n1, n2)) {
+              anchor = getNextHostNode(n1);
+              unmount(n1, parentComponent, parentSuspense, true);
+              n1 = null;
+          }
+          if (n2.patchFlag === -2 /* BAIL */) {
+              optimized = false;
+              n2.dynamicChildren = null;
+          }
+          const { type, ref, shapeFlag } = n2;
+          switch (type) {
+              case Text:
+                  processText(n1, n2, container, anchor);
+                  break;
+              case Comment:
+                  processCommentNode(n1, n2, container, anchor);
+                  break;
+              case Static:
+                  if (n1 == null) {
+                      mountStaticNode(n2, container, anchor, isSVG);
+                  }
+                  else {
+                      patchStaticNode(n1, n2, container, isSVG);
+                  }
+                  break;
+              case Fragment:
+                  processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
+                  break;
+              default:
+                  if (shapeFlag & 1 /* ELEMENT */) {
+                      processElement(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
+                  }
+                  else if (shapeFlag & 6 /* COMPONENT */) {
+                      processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
+                  }
+                  else if (shapeFlag & 64 /* TELEPORT */) {
+                      type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);
+                  }
+                  else if (shapeFlag & 128 /* SUSPENSE */) {
+                      type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);
+                  }
+                  else {
+                      warn$1('Invalid VNode type:', type, `(${typeof type})`);
+                  }
+          }
+          // set ref
+          if (ref != null && parentComponent) {
+              setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);
+          }
+      };
+      const processText = (n1, n2, container, anchor) => {
+          if (n1 == null) {
+              hostInsert((n2.el = hostCreateText(n2.children)), container, anchor);
+          }
+          else {
+              const el = (n2.el = n1.el);
+              if (n2.children !== n1.children) {
+                  hostSetText(el, n2.children);
+              }
+          }
+      };
+      const processCommentNode = (n1, n2, container, anchor) => {
+          if (n1 == null) {
+              hostInsert((n2.el = hostCreateComment(n2.children || '')), container, anchor);
+          }
+          else {
+              // there's no support for dynamic comments
+              n2.el = n1.el;
+          }
+      };
+      const mountStaticNode = (n2, container, anchor, isSVG) => {
+          [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG, n2.el, n2.anchor);
+      };
+      /**
+       * Dev / HMR only
+       */
+      const patchStaticNode = (n1, n2, container, isSVG) => {
+          // static nodes are only patched during dev for HMR
+          if (n2.children !== n1.children) {
+              const anchor = hostNextSibling(n1.anchor);
+              // remove existing
+              removeStaticNode(n1);
+              [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG);
+          }
+          else {
+              n2.el = n1.el;
+              n2.anchor = n1.anchor;
+          }
+      };
+      const moveStaticNode = ({ el, anchor }, container, nextSibling) => {
+          let next;
+          while (el && el !== anchor) {
+              next = hostNextSibling(el);
+              hostInsert(el, container, nextSibling);
+              el = next;
+          }
+          hostInsert(anchor, container, nextSibling);
+      };
+      const removeStaticNode = ({ el, anchor }) => {
+          let next;
+          while (el && el !== anchor) {
+              next = hostNextSibling(el);
+              hostRemove(el);
+              el = next;
+          }
+          hostRemove(anchor);
+      };
+      const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
+          isSVG = isSVG || n2.type === 'svg';
+          if (n1 == null) {
+              mountElement(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
+          }
+          else {
+              patchElement(n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
+          }
+      };
+      const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
+          let el;
+          let vnodeHook;
+          const { type, props, shapeFlag, transition, patchFlag, dirs } = vnode;
+          {
+              el = vnode.el = hostCreateElement(vnode.type, isSVG, props && props.is, props);
+              // mount children first, since some props may rely on child content
+              // being already rendered, e.g. `<select value>`
+              if (shapeFlag & 8 /* TEXT_CHILDREN */) {
+                  hostSetElementText(el, vnode.children);
+              }
+              else if (shapeFlag & 16 /* ARRAY_CHILDREN */) {
+                  mountChildren(vnode.children, el, null, parentComponent, parentSuspense, isSVG && type !== 'foreignObject', slotScopeIds, optimized);
+              }
+              if (dirs) {
+                  invokeDirectiveHook(vnode, null, parentComponent, 'created');
+              }
+              // props
+              if (props) {
+                  for (const key in props) {
+                      if (key !== 'value' && !isReservedProp(key)) {
+                          hostPatchProp(el, key, null, props[key], isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);
+                      }
+                  }
+                  /**
+                   * Special case for setting value on DOM elements:
+                   * - it can be order-sensitive (e.g. should be set *after* min/max, #2325, #4024)
+                   * - it needs to be forced (#1471)
+                   * #2353 proposes adding another renderer option to configure this, but
+                   * the properties affects are so finite it is worth special casing it
+                   * here to reduce the complexity. (Special casing it also should not
+                   * affect non-DOM renderers)
+                   */
+                  if ('value' in props) {
+                      hostPatchProp(el, 'value', null, props.value);
+                  }
+                  if ((vnodeHook = props.onVnodeBeforeMount)) {
+                      invokeVNodeHook(vnodeHook, parentComponent, vnode);
+                  }
+              }
+              // scopeId
+              setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);
+          }
+          {
+              Object.defineProperty(el, '__vnode', {
+                  value: vnode,
+                  enumerable: false
+              });
+              Object.defineProperty(el, '__vueParentComponent', {
+                  value: parentComponent,
+                  enumerable: false
+              });
+          }
+          if (dirs) {
+              invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount');
+          }
+          // #1583 For inside suspense + suspense not resolved case, enter hook should call when suspense resolved
+          // #1689 For inside suspense + suspense resolved case, just call it
+          const needCallTransitionHooks = (!parentSuspense || (parentSuspense && !parentSuspense.pendingBranch)) &&
+              transition &&
+              !transition.persisted;
+          if (needCallTransitionHooks) {
+              transition.beforeEnter(el);
+          }
+          hostInsert(el, container, anchor);
+          if ((vnodeHook = props && props.onVnodeMounted) ||
+              needCallTransitionHooks ||
+              dirs) {
+              queuePostRenderEffect(() => {
+                  vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);
+                  needCallTransitionHooks && transition.enter(el);
+                  dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted');
+              }, parentSuspense);
+          }
+      };
+      const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {
+          if (scopeId) {
+              hostSetScopeId(el, scopeId);
+          }
+          if (slotScopeIds) {
+              for (let i = 0; i < slotScopeIds.length; i++) {
+                  hostSetScopeId(el, slotScopeIds[i]);
+              }
+          }
+          if (parentComponent) {
+              let subTree = parentComponent.subTree;
+              if (subTree.patchFlag > 0 &&
+                  subTree.patchFlag & 2048 /* DEV_ROOT_FRAGMENT */) {
+                  subTree =
+                      filterSingleRoot(subTree.children) || subTree;
+              }
+              if (vnode === subTree) {
+                  const parentVNode = parentComponent.vnode;
+                  setScopeId(el, parentVNode, parentVNode.scopeId, parentVNode.slotScopeIds, parentComponent.parent);
+              }
+          }
+      };
+      const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, start = 0) => {
+          for (let i = start; i < children.length; i++) {
+              const child = (children[i] = optimized
+                  ? cloneIfMounted(children[i])
+                  : normalizeVNode(children[i]));
+              patch(null, child, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
+          }
+      };
+      const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
+          const el = (n2.el = n1.el);
+          let { patchFlag, dynamicChildren, dirs } = n2;
+          // #1426 take the old vnode's patch flag into account since user may clone a
+          // compiler-generated vnode, which de-opts to FULL_PROPS
+          patchFlag |= n1.patchFlag & 16 /* FULL_PROPS */;
+          const oldProps = n1.props || EMPTY_OBJ;
+          const newProps = n2.props || EMPTY_OBJ;
+          let vnodeHook;
+          // disable recurse in beforeUpdate hooks
+          parentComponent && toggleRecurse(parentComponent, false);
+          if ((vnodeHook = newProps.onVnodeBeforeUpdate)) {
+              invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
+          }
+          if (dirs) {
+              invokeDirectiveHook(n2, n1, parentComponent, 'beforeUpdate');
+          }
+          parentComponent && toggleRecurse(parentComponent, true);
+          if (isHmrUpdating) {
+              // HMR updated, force full diff
+              patchFlag = 0;
+              optimized = false;
+              dynamicChildren = null;
+          }
+          const areChildrenSVG = isSVG && n2.type !== 'foreignObject';
+          if (dynamicChildren) {
+              patchBlockChildren(n1.dynamicChildren, dynamicChildren, el, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds);
+              if (parentComponent && parentComponent.type.__hmrId) {
+                  traverseStaticChildren(n1, n2);
+              }
+          }
+          else if (!optimized) {
+              // full diff
+              patchChildren(n1, n2, el, null, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds, false);
+          }
+          if (patchFlag > 0) {
+              // the presence of a patchFlag means this element's render code was
+              // generated by the compiler and can take the fast path.
+              // in this path old node and new node are guaranteed to have the same shape
+              // (i.e. at the exact same position in the source template)
+              if (patchFlag & 16 /* FULL_PROPS */) {
+                  // element props contain dynamic keys, full diff needed
+                  patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);
+              }
+              else {
+                  // class
+                  // this flag is matched when the element has dynamic class bindings.
+                  if (patchFlag & 2 /* CLASS */) {
+                      if (oldProps.class !== newProps.class) {
+                          hostPatchProp(el, 'class', null, newProps.class, isSVG);
+                      }
+                  }
+                  // style
+                  // this flag is matched when the element has dynamic style bindings
+                  if (patchFlag & 4 /* STYLE */) {
+                      hostPatchProp(el, 'style', oldProps.style, newProps.style, isSVG);
+                  }
+                  // props
+                  // This flag is matched when the element has dynamic prop/attr bindings
+                  // other than class and style. The keys of dynamic prop/attrs are saved for
+                  // faster iteration.
+                  // Note dynamic keys like :[foo]="bar" will cause this optimization to
+                  // bail out and go through a full diff because we need to unset the old key
+                  if (patchFlag & 8 /* PROPS */) {
+                      // if the flag is present then dynamicProps must be non-null
+                      const propsToUpdate = n2.dynamicProps;
+                      for (let i = 0; i < propsToUpdate.length; i++) {
+                          const key = propsToUpdate[i];
+                          const prev = oldProps[key];
+                          const next = newProps[key];
+                          // #1471 force patch value
+                          if (next !== prev || key === 'value') {
+                              hostPatchProp(el, key, prev, next, isSVG, n1.children, parentComponent, parentSuspense, unmountChildren);
+                          }
+                      }
+                  }
+              }
+              // text
+              // This flag is matched when the element has only dynamic text children.
+              if (patchFlag & 1 /* TEXT */) {
+                  if (n1.children !== n2.children) {
+                      hostSetElementText(el, n2.children);
+                  }
+              }
+          }
+          else if (!optimized && dynamicChildren == null) {
+              // unoptimized, full diff
+              patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);
+          }
+          if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {
+              queuePostRenderEffect(() => {
+                  vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
+                  dirs && invokeDirectiveHook(n2, n1, parentComponent, 'updated');
+              }, parentSuspense);
+          }
+      };
+      // The fast path for blocks.
+      const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG, slotScopeIds) => {
+          for (let i = 0; i < newChildren.length; i++) {
+              const oldVNode = oldChildren[i];
+              const newVNode = newChildren[i];
+              // Determine the container (parent element) for the patch.
+              const container = 
+              // oldVNode may be an errored async setup() component inside Suspense
+              // which will not have a mounted element
+              oldVNode.el &&
+                  // - In the case of a Fragment, we need to provide the actual parent
+                  // of the Fragment itself so it can move its children.
+                  (oldVNode.type === Fragment ||
+                      // - In the case of different nodes, there is going to be a replacement
+                      // which also requires the correct parent container
+                      !isSameVNodeType(oldVNode, newVNode) ||
+                      // - In the case of a component, it could contain anything.
+                      oldVNode.shapeFlag & (6 /* COMPONENT */ | 64 /* TELEPORT */))
+                  ? hostParentNode(oldVNode.el)
+                  : // In other cases, the parent container is not actually used so we
+                      // just pass the block element here to avoid a DOM parentNode call.
+                      fallbackContainer;
+              patch(oldVNode, newVNode, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, true);
+          }
+      };
+      const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => {
+          if (oldProps !== newProps) {
+              for (const key in newProps) {
+                  // empty string is not valid prop
+                  if (isReservedProp(key))
+                      continue;
+                  const next = newProps[key];
+                  const prev = oldProps[key];
+                  // defer patching value
+                  if (next !== prev && key !== 'value') {
+                      hostPatchProp(el, key, prev, next, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);
+                  }
+              }
+              if (oldProps !== EMPTY_OBJ) {
+                  for (const key in oldProps) {
+                      if (!isReservedProp(key) && !(key in newProps)) {
+                          hostPatchProp(el, key, oldProps[key], null, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);
+                      }
+                  }
+              }
+              if ('value' in newProps) {
+                  hostPatchProp(el, 'value', oldProps.value, newProps.value);
+              }
+          }
+      };
+      const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
+          const fragmentStartAnchor = (n2.el = n1 ? n1.el : hostCreateText(''));
+          const fragmentEndAnchor = (n2.anchor = n1 ? n1.anchor : hostCreateText(''));
+          let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;
+          if (// #5523 dev root fragment may inherit directives
+              (isHmrUpdating || patchFlag & 2048 /* DEV_ROOT_FRAGMENT */)) {
+              // HMR updated / Dev root fragment (w/ comments), force full diff
+              patchFlag = 0;
+              optimized = false;
+              dynamicChildren = null;
+          }
+          // check if this is a slot fragment with :slotted scope ids
+          if (fragmentSlotScopeIds) {
+              slotScopeIds = slotScopeIds
+                  ? slotScopeIds.concat(fragmentSlotScopeIds)
+                  : fragmentSlotScopeIds;
+          }
+          if (n1 == null) {
+              hostInsert(fragmentStartAnchor, container, anchor);
+              hostInsert(fragmentEndAnchor, container, anchor);
+              // a fragment can only have array children
+              // since they are either generated by the compiler, or implicitly created
+              // from arrays.
+              mountChildren(n2.children, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
+          }
+          else {
+              if (patchFlag > 0 &&
+                  patchFlag & 64 /* STABLE_FRAGMENT */ &&
+                  dynamicChildren &&
+                  // #2715 the previous fragment could've been a BAILed one as a result
+                  // of renderSlot() with no valid children
+                  n1.dynamicChildren) {
+                  // a stable fragment (template root or <template v-for>) doesn't need to
+                  // patch children order, but it may contain dynamicChildren.
+                  patchBlockChildren(n1.dynamicChildren, dynamicChildren, container, parentComponent, parentSuspense, isSVG, slotScopeIds);
+                  if (parentComponent && parentComponent.type.__hmrId) {
+                      traverseStaticChildren(n1, n2);
+                  }
+                  else if (
+                  // #2080 if the stable fragment has a key, it's a <template v-for> that may
+                  //  get moved around. Make sure all root level vnodes inherit el.
+                  // #2134 or if it's a component root, it may also get moved around
+                  // as the component is being moved.
+                  n2.key != null ||
+                      (parentComponent && n2 === parentComponent.subTree)) {
+                      traverseStaticChildren(n1, n2, true /* shallow */);
+                  }
+              }
+              else {
+                  // keyed / unkeyed, or manual fragments.
+                  // for keyed & unkeyed, since they are compiler generated from v-for,
+                  // each child is guaranteed to be a block so the fragment will never
+                  // have dynamicChildren.
+                  patchChildren(n1, n2, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
+              }
+          }
+      };
+      const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
+          n2.slotScopeIds = slotScopeIds;
+          if (n1 == null) {
+              if (n2.shapeFlag & 512 /* COMPONENT_KEPT_ALIVE */) {
+                  parentComponent.ctx.activate(n2, container, anchor, isSVG, optimized);
+              }
+              else {
+                  mountComponent(n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized);
+              }
+          }
+          else {
+              updateComponent(n1, n2, optimized);
+          }
+      };
+      const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {
+          const instance = (initialVNode.component = createComponentInstance(initialVNode, parentComponent, parentSuspense));
+          if (instance.type.__hmrId) {
+              registerHMR(instance);
+          }
+          {
+              pushWarningContext(initialVNode);
+              startMeasure(instance, `mount`);
+          }
+          // inject renderer internals for keepAlive
+          if (isKeepAlive(initialVNode)) {
+              instance.ctx.renderer = internals;
+          }
+          // resolve props and slots for setup context
+          {
+              {
+                  startMeasure(instance, `init`);
+              }
+              setupComponent(instance);
+              {
+                  endMeasure(instance, `init`);
+              }
+          }
+          // setup() is async. This component relies on async logic to be resolved
+          // before proceeding
+          if (instance.asyncDep) {
+              parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect);
+              // Give it a placeholder if this is not hydration
+              // TODO handle self-defined fallback
+              if (!initialVNode.el) {
+                  const placeholder = (instance.subTree = createVNode(Comment));
+                  processCommentNode(null, placeholder, container, anchor);
+              }
+              return;
+          }
+          setupRenderEffect(instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized);
+          {
+              popWarningContext();
+              endMeasure(instance, `mount`);
+          }
+      };
+      const updateComponent = (n1, n2, optimized) => {
+          const instance = (n2.component = n1.component);
+          if (shouldUpdateComponent(n1, n2, optimized)) {
+              if (instance.asyncDep &&
+                  !instance.asyncResolved) {
+                  // async & still pending - just update props and slots
+                  // since the component's reactive effect for render isn't set-up yet
+                  {
+                      pushWarningContext(n2);
+                  }
+                  updateComponentPreRender(instance, n2, optimized);
+                  {
+                      popWarningContext();
+                  }
+                  return;
+              }
+              else {
+                  // normal update
+                  instance.next = n2;
+                  // in case the child component is also queued, remove it to avoid
+                  // double updating the same child component in the same flush.
+                  invalidateJob(instance.update);
+                  // instance.update is the reactive effect.
+                  instance.update();
+              }
+          }
+          else {
+              // no update needed. just copy over properties
+              n2.el = n1.el;
+              instance.vnode = n2;
+          }
+      };
+      const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => {
+          const componentUpdateFn = () => {
+              if (!instance.isMounted) {
+                  let vnodeHook;
+                  const { el, props } = initialVNode;
+                  const { bm, m, parent } = instance;
+                  const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);
+                  toggleRecurse(instance, false);
+                  // beforeMount hook
+                  if (bm) {
+                      invokeArrayFns(bm);
+                  }
+                  // onVnodeBeforeMount
+                  if (!isAsyncWrapperVNode &&
+                      (vnodeHook = props && props.onVnodeBeforeMount)) {
+                      invokeVNodeHook(vnodeHook, parent, initialVNode);
+                  }
+                  toggleRecurse(instance, true);
+                  if (el && hydrateNode) {
+                      // vnode has adopted host node - perform hydration instead of mount.
+                      const hydrateSubTree = () => {
+                          {
+                              startMeasure(instance, `render`);
+                          }
+                          instance.subTree = renderComponentRoot(instance);
+                          {
+                              endMeasure(instance, `render`);
+                          }
+                          {
+                              startMeasure(instance, `hydrate`);
+                          }
+                          hydrateNode(el, instance.subTree, instance, parentSuspense, null);
+                          {
+                              endMeasure(instance, `hydrate`);
+                          }
+                      };
+                      if (isAsyncWrapperVNode) {
+                          initialVNode.type.__asyncLoader().then(
+                          // note: we are moving the render call into an async callback,
+                          // which means it won't track dependencies - but it's ok because
+                          // a server-rendered async wrapper is already in resolved state
+                          // and it will never need to change.
+                          () => !instance.isUnmounted && hydrateSubTree());
+                      }
+                      else {
+                          hydrateSubTree();
+                      }
+                  }
+                  else {
+                      {
+                          startMeasure(instance, `render`);
+                      }
+                      const subTree = (instance.subTree = renderComponentRoot(instance));
+                      {
+                          endMeasure(instance, `render`);
+                      }
+                      {
+                          startMeasure(instance, `patch`);
+                      }
+                      patch(null, subTree, container, anchor, instance, parentSuspense, isSVG);
+                      {
+                          endMeasure(instance, `patch`);
+                      }
+                      initialVNode.el = subTree.el;
+                  }
+                  // mounted hook
+                  if (m) {
+                      queuePostRenderEffect(m, parentSuspense);
+                  }
+                  // onVnodeMounted
+                  if (!isAsyncWrapperVNode &&
+                      (vnodeHook = props && props.onVnodeMounted)) {
+                      const scopedInitialVNode = initialVNode;
+                      queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), parentSuspense);
+                  }
+                  // activated hook for keep-alive roots.
+                  // #1742 activated hook must be accessed after first render
+                  // since the hook may be injected by a child keep-alive
+                  if (initialVNode.shapeFlag & 256 /* COMPONENT_SHOULD_KEEP_ALIVE */ ||
+                      (parent &&
+                          isAsyncWrapper(parent.vnode) &&
+                          parent.vnode.shapeFlag & 256 /* COMPONENT_SHOULD_KEEP_ALIVE */)) {
+                      instance.a && queuePostRenderEffect(instance.a, parentSuspense);
+                  }
+                  instance.isMounted = true;
+                  {
+                      devtoolsComponentAdded(instance);
+                  }
+                  // #2458: deference mount-only object parameters to prevent memleaks
+                  initialVNode = container = anchor = null;
+              }
+              else {
+                  // updateComponent
+                  // This is triggered by mutation of component's own state (next: null)
+                  // OR parent calling processComponent (next: VNode)
+                  let { next, bu, u, parent, vnode } = instance;
+                  let originNext = next;
+                  let vnodeHook;
+                  {
+                      pushWarningContext(next || instance.vnode);
+                  }
+                  // Disallow component effect recursion during pre-lifecycle hooks.
+                  toggleRecurse(instance, false);
+                  if (next) {
+                      next.el = vnode.el;
+                      updateComponentPreRender(instance, next, optimized);
+                  }
+                  else {
+                      next = vnode;
+                  }
+                  // beforeUpdate hook
+                  if (bu) {
+                      invokeArrayFns(bu);
+                  }
+                  // onVnodeBeforeUpdate
+                  if ((vnodeHook = next.props && next.props.onVnodeBeforeUpdate)) {
+                      invokeVNodeHook(vnodeHook, parent, next, vnode);
+                  }
+                  toggleRecurse(instance, true);
+                  // render
+                  {
+                      startMeasure(instance, `render`);
+                  }
+                  const nextTree = renderComponentRoot(instance);
+                  {
+                      endMeasure(instance, `render`);
+                  }
+                  const prevTree = instance.subTree;
+                  instance.subTree = nextTree;
+                  {
+                      startMeasure(instance, `patch`);
+                  }
+                  patch(prevTree, nextTree, 
+                  // parent may have changed if it's in a teleport
+                  hostParentNode(prevTree.el), 
+                  // anchor may have changed if it's in a fragment
+                  getNextHostNode(prevTree), instance, parentSuspense, isSVG);
+                  {
+                      endMeasure(instance, `patch`);
+                  }
+                  next.el = nextTree.el;
+                  if (originNext === null) {
+                      // self-triggered update. In case of HOC, update parent component
+                      // vnode el. HOC is indicated by parent instance's subTree pointing
+                      // to child component's vnode
+                      updateHOCHostEl(instance, nextTree.el);
+                  }
+                  // updated hook
+                  if (u) {
+                      queuePostRenderEffect(u, parentSuspense);
+                  }
+                  // onVnodeUpdated
+                  if ((vnodeHook = next.props && next.props.onVnodeUpdated)) {
+                      queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, next, vnode), parentSuspense);
+                  }
+                  {
+                      devtoolsComponentUpdated(instance);
+                  }
+                  {
+                      popWarningContext();
+                  }
+              }
+          };
+          // create reactive effect for rendering
+          const effect = (instance.effect = new ReactiveEffect(componentUpdateFn, () => queueJob(update), instance.scope // track it in component's effect scope
+          ));
+          const update = (instance.update = () => effect.run());
+          update.id = instance.uid;
+          // allowRecurse
+          // #1801, #2043 component render effects should allow recursive updates
+          toggleRecurse(instance, true);
+          {
+              effect.onTrack = instance.rtc
+                  ? e => invokeArrayFns(instance.rtc, e)
+                  : void 0;
+              effect.onTrigger = instance.rtg
+                  ? e => invokeArrayFns(instance.rtg, e)
+                  : void 0;
+              update.ownerInstance = instance;
+          }
+          update();
+      };
+      const updateComponentPreRender = (instance, nextVNode, optimized) => {
+          nextVNode.component = instance;
+          const prevProps = instance.vnode.props;
+          instance.vnode = nextVNode;
+          instance.next = null;
+          updateProps(instance, nextVNode.props, prevProps, optimized);
+          updateSlots(instance, nextVNode.children, optimized);
+          pauseTracking();
+          // props update may have triggered pre-flush watchers.
+          // flush them before the render update.
+          flushPreFlushCbs(undefined, instance.update);
+          resetTracking();
+      };
+      const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized = false) => {
+          const c1 = n1 && n1.children;
+          const prevShapeFlag = n1 ? n1.shapeFlag : 0;
+          const c2 = n2.children;
+          const { patchFlag, shapeFlag } = n2;
+          // fast path
+          if (patchFlag > 0) {
+              if (patchFlag & 128 /* KEYED_FRAGMENT */) {
+                  // this could be either fully-keyed or mixed (some keyed some not)
+                  // presence of patchFlag means children are guaranteed to be arrays
+                  patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
+                  return;
+              }
+              else if (patchFlag & 256 /* UNKEYED_FRAGMENT */) {
+                  // unkeyed
+                  patchUnkeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
+                  return;
+              }
+          }
+          // children has 3 possibilities: text, array or no children.
+          if (shapeFlag & 8 /* TEXT_CHILDREN */) {
+              // text children fast path
+              if (prevShapeFlag & 16 /* ARRAY_CHILDREN */) {
+                  unmountChildren(c1, parentComponent, parentSuspense);
+              }
+              if (c2 !== c1) {
+                  hostSetElementText(container, c2);
+              }
+          }
+          else {
+              if (prevShapeFlag & 16 /* ARRAY_CHILDREN */) {
+                  // prev children was array
+                  if (shapeFlag & 16 /* ARRAY_CHILDREN */) {
+                      // two arrays, cannot assume anything, do full diff
+                      patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
+                  }
+                  else {
+                      // no new children, just unmount old
+                      unmountChildren(c1, parentComponent, parentSuspense, true);
+                  }
+              }
+              else {
+                  // prev children was text OR null
+                  // new children is array OR null
+                  if (prevShapeFlag & 8 /* TEXT_CHILDREN */) {
+                      hostSetElementText(container, '');
+                  }
+                  // mount new if array
+                  if (shapeFlag & 16 /* ARRAY_CHILDREN */) {
+                      mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
+                  }
+              }
+          }
+      };
+      const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
+          c1 = c1 || EMPTY_ARR;
+          c2 = c2 || EMPTY_ARR;
+          const oldLength = c1.length;
+          const newLength = c2.length;
+          const commonLength = Math.min(oldLength, newLength);
+          let i;
+          for (i = 0; i < commonLength; i++) {
+              const nextChild = (c2[i] = optimized
+                  ? cloneIfMounted(c2[i])
+                  : normalizeVNode(c2[i]));
+              patch(c1[i], nextChild, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
+          }
+          if (oldLength > newLength) {
+              // remove old
+              unmountChildren(c1, parentComponent, parentSuspense, true, false, commonLength);
+          }
+          else {
+              // mount new
+              mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, commonLength);
+          }
+      };
+      // can be all-keyed or mixed
+      const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {
+          let i = 0;
+          const l2 = c2.length;
+          let e1 = c1.length - 1; // prev ending index
+          let e2 = l2 - 1; // next ending index
+          // 1. sync from start
+          // (a b) c
+          // (a b) d e
+          while (i <= e1 && i <= e2) {
+              const n1 = c1[i];
+              const n2 = (c2[i] = optimized
+                  ? cloneIfMounted(c2[i])
+                  : normalizeVNode(c2[i]));
+              if (isSameVNodeType(n1, n2)) {
+                  patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
+              }
+              else {
+                  break;
+              }
+              i++;
+          }
+          // 2. sync from end
+          // a (b c)
+          // d e (b c)
+          while (i <= e1 && i <= e2) {
+              const n1 = c1[e1];
+              const n2 = (c2[e2] = optimized
+                  ? cloneIfMounted(c2[e2])
+                  : normalizeVNode(c2[e2]));
+              if (isSameVNodeType(n1, n2)) {
+                  patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
+              }
+              else {
+                  break;
+              }
+              e1--;
+              e2--;
+          }
+          // 3. common sequence + mount
+          // (a b)
+          // (a b) c
+          // i = 2, e1 = 1, e2 = 2
+          // (a b)
+          // c (a b)
+          // i = 0, e1 = -1, e2 = 0
+          if (i > e1) {
+              if (i <= e2) {
+                  const nextPos = e2 + 1;
+                  const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;
+                  while (i <= e2) {
+                      patch(null, (c2[i] = optimized
+                          ? cloneIfMounted(c2[i])
+                          : normalizeVNode(c2[i])), container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
+                      i++;
+                  }
+              }
+          }
+          // 4. common sequence + unmount
+          // (a b) c
+          // (a b)
+          // i = 2, e1 = 2, e2 = 1
+          // a (b c)
+          // (b c)
+          // i = 0, e1 = 0, e2 = -1
+          else if (i > e2) {
+              while (i <= e1) {
+                  unmount(c1[i], parentComponent, parentSuspense, true);
+                  i++;
+              }
+          }
+          // 5. unknown sequence
+          // [i ... e1 + 1]: a b [c d e] f g
+          // [i ... e2 + 1]: a b [e d c h] f g
+          // i = 2, e1 = 4, e2 = 5
+          else {
+              const s1 = i; // prev starting index
+              const s2 = i; // next starting index
+              // 5.1 build key:index map for newChildren
+              const keyToNewIndexMap = new Map();
+              for (i = s2; i <= e2; i++) {
+                  const nextChild = (c2[i] = optimized
+                      ? cloneIfMounted(c2[i])
+                      : normalizeVNode(c2[i]));
+                  if (nextChild.key != null) {
+                      if (keyToNewIndexMap.has(nextChild.key)) {
+                          warn$1(`Duplicate keys found during update:`, JSON.stringify(nextChild.key), `Make sure keys are unique.`);
+                      }
+                      keyToNewIndexMap.set(nextChild.key, i);
+                  }
+              }
+              // 5.2 loop through old children left to be patched and try to patch
+              // matching nodes & remove nodes that are no longer present
+              let j;
+              let patched = 0;
+              const toBePatched = e2 - s2 + 1;
+              let moved = false;
+              // used to track whether any node has moved
+              let maxNewIndexSoFar = 0;
+              // works as Map<newIndex, oldIndex>
+              // Note that oldIndex is offset by +1
+              // and oldIndex = 0 is a special value indicating the new node has
+              // no corresponding old node.
+              // used for determining longest stable subsequence
+              const newIndexToOldIndexMap = new Array(toBePatched);
+              for (i = 0; i < toBePatched; i++)
+                  newIndexToOldIndexMap[i] = 0;
+              for (i = s1; i <= e1; i++) {
+                  const prevChild = c1[i];
+                  if (patched >= toBePatched) {
+                      // all new children have been patched so this can only be a removal
+                      unmount(prevChild, parentComponent, parentSuspense, true);
+                      continue;
+                  }
+                  let newIndex;
+                  if (prevChild.key != null) {
+                      newIndex = keyToNewIndexMap.get(prevChild.key);
+                  }
+                  else {
+                      // key-less node, try to locate a key-less node of the same type
+                      for (j = s2; j <= e2; j++) {
+                          if (newIndexToOldIndexMap[j - s2] === 0 &&
+                              isSameVNodeType(prevChild, c2[j])) {
+                              newIndex = j;
+                              break;
+                          }
+                      }
+                  }
+                  if (newIndex === undefined) {
+                      unmount(prevChild, parentComponent, parentSuspense, true);
+                  }
+                  else {
+                      newIndexToOldIndexMap[newIndex - s2] = i + 1;
+                      if (newIndex >= maxNewIndexSoFar) {
+                          maxNewIndexSoFar = newIndex;
+                      }
+                      else {
+                          moved = true;
+                      }
+                      patch(prevChild, c2[newIndex], container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
+                      patched++;
+                  }
+              }
+              // 5.3 move and mount
+              // generate longest stable subsequence only when nodes have moved
+              const increasingNewIndexSequence = moved
+                  ? getSequence(newIndexToOldIndexMap)
+                  : EMPTY_ARR;
+              j = increasingNewIndexSequence.length - 1;
+              // looping backwards so that we can use last patched node as anchor
+              for (i = toBePatched - 1; i >= 0; i--) {
+                  const nextIndex = s2 + i;
+                  const nextChild = c2[nextIndex];
+                  const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;
+                  if (newIndexToOldIndexMap[i] === 0) {
+                      // mount new
+                      patch(null, nextChild, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
+                  }
+                  else if (moved) {
+                      // move if:
+                      // There is no stable subsequence (e.g. a reverse)
+                      // OR current node is not among the stable sequence
+                      if (j < 0 || i !== increasingNewIndexSequence[j]) {
+                          move(nextChild, container, anchor, 2 /* REORDER */);
+                      }
+                      else {
+                          j--;
+                      }
+                  }
+              }
+          }
+      };
+      const move = (vnode, container, anchor, moveType, parentSuspense = null) => {
+          const { el, type, transition, children, shapeFlag } = vnode;
+          if (shapeFlag & 6 /* COMPONENT */) {
+              move(vnode.component.subTree, container, anchor, moveType);
+              return;
+          }
+          if (shapeFlag & 128 /* SUSPENSE */) {
+              vnode.suspense.move(container, anchor, moveType);
+              return;
+          }
+          if (shapeFlag & 64 /* TELEPORT */) {
+              type.move(vnode, container, anchor, internals);
+              return;
+          }
+          if (type === Fragment) {
+              hostInsert(el, container, anchor);
+              for (let i = 0; i < children.length; i++) {
+                  move(children[i], container, anchor, moveType);
+              }
+              hostInsert(vnode.anchor, container, anchor);
+              return;
+          }
+          if (type === Static) {
+              moveStaticNode(vnode, container, anchor);
+              return;
+          }
+          // single nodes
+          const needTransition = moveType !== 2 /* REORDER */ &&
+              shapeFlag & 1 /* ELEMENT */ &&
+              transition;
+          if (needTransition) {
+              if (moveType === 0 /* ENTER */) {
+                  transition.beforeEnter(el);
+                  hostInsert(el, container, anchor);
+                  queuePostRenderEffect(() => transition.enter(el), parentSuspense);
+              }
+              else {
+                  const { leave, delayLeave, afterLeave } = transition;
+                  const remove = () => hostInsert(el, container, anchor);
+                  const performLeave = () => {
+                      leave(el, () => {
+                          remove();
+                          afterLeave && afterLeave();
+                      });
+                  };
+                  if (delayLeave) {
+                      delayLeave(el, remove, performLeave);
+                  }
+                  else {
+                      performLeave();
+                  }
+              }
+          }
+          else {
+              hostInsert(el, container, anchor);
+          }
+      };
+      const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {
+          const { type, props, ref, children, dynamicChildren, shapeFlag, patchFlag, dirs } = vnode;
+          // unset ref
+          if (ref != null) {
+              setRef(ref, null, parentSuspense, vnode, true);
+          }
+          if (shapeFlag & 256 /* COMPONENT_SHOULD_KEEP_ALIVE */) {
+              parentComponent.ctx.deactivate(vnode);
+              return;
+          }
+          const shouldInvokeDirs = shapeFlag & 1 /* ELEMENT */ && dirs;
+          const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);
+          let vnodeHook;
+          if (shouldInvokeVnodeHook &&
+              (vnodeHook = props && props.onVnodeBeforeUnmount)) {
+              invokeVNodeHook(vnodeHook, parentComponent, vnode);
+          }
+          if (shapeFlag & 6 /* COMPONENT */) {
+              unmountComponent(vnode.component, parentSuspense, doRemove);
+          }
+          else {
+              if (shapeFlag & 128 /* SUSPENSE */) {
+                  vnode.suspense.unmount(parentSuspense, doRemove);
+                  return;
+              }
+              if (shouldInvokeDirs) {
+                  invokeDirectiveHook(vnode, null, parentComponent, 'beforeUnmount');
+              }
+              if (shapeFlag & 64 /* TELEPORT */) {
+                  vnode.type.remove(vnode, parentComponent, parentSuspense, optimized, internals, doRemove);
+              }
+              else if (dynamicChildren &&
+                  // #1153: fast path should not be taken for non-stable (v-for) fragments
+                  (type !== Fragment ||
+                      (patchFlag > 0 && patchFlag & 64 /* STABLE_FRAGMENT */))) {
+                  // fast path for block nodes: only need to unmount dynamic children.
+                  unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true);
+              }
+              else if ((type === Fragment &&
+                  patchFlag &
+                      (128 /* KEYED_FRAGMENT */ | 256 /* UNKEYED_FRAGMENT */)) ||
+                  (!optimized && shapeFlag & 16 /* ARRAY_CHILDREN */)) {
+                  unmountChildren(children, parentComponent, parentSuspense);
+              }
+              if (doRemove) {
+                  remove(vnode);
+              }
+          }
+          if ((shouldInvokeVnodeHook &&
+              (vnodeHook = props && props.onVnodeUnmounted)) ||
+              shouldInvokeDirs) {
+              queuePostRenderEffect(() => {
+                  vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);
+                  shouldInvokeDirs &&
+                      invokeDirectiveHook(vnode, null, parentComponent, 'unmounted');
+              }, parentSuspense);
+          }
+      };
+      const remove = vnode => {
+          const { type, el, anchor, transition } = vnode;
+          if (type === Fragment) {
+              if (vnode.patchFlag > 0 &&
+                  vnode.patchFlag & 2048 /* DEV_ROOT_FRAGMENT */ &&
+                  transition &&
+                  !transition.persisted) {
+                  vnode.children.forEach(child => {
+                      if (child.type === Comment) {
+                          hostRemove(child.el);
+                      }
+                      else {
+                          remove(child);
+                      }
+                  });
+              }
+              else {
+                  removeFragment(el, anchor);
+              }
+              return;
+          }
+          if (type === Static) {
+              removeStaticNode(vnode);
+              return;
+          }
+          const performRemove = () => {
+              hostRemove(el);
+              if (transition && !transition.persisted && transition.afterLeave) {
+                  transition.afterLeave();
+              }
+          };
+          if (vnode.shapeFlag & 1 /* ELEMENT */ &&
+              transition &&
+              !transition.persisted) {
+              const { leave, delayLeave } = transition;
+              const performLeave = () => leave(el, performRemove);
+              if (delayLeave) {
+                  delayLeave(vnode.el, performRemove, performLeave);
+              }
+              else {
+                  performLeave();
+              }
+          }
+          else {
+              performRemove();
+          }
+      };
+      const removeFragment = (cur, end) => {
+          // For fragments, directly remove all contained DOM nodes.
+          // (fragment child nodes cannot have transition)
+          let next;
+          while (cur !== end) {
+              next = hostNextSibling(cur);
+              hostRemove(cur);
+              cur = next;
+          }
+          hostRemove(end);
+      };
+      const unmountComponent = (instance, parentSuspense, doRemove) => {
+          if (instance.type.__hmrId) {
+              unregisterHMR(instance);
+          }
+          const { bum, scope, update, subTree, um } = instance;
+          // beforeUnmount hook
+          if (bum) {
+              invokeArrayFns(bum);
+          }
+          // stop effects in component scope
+          scope.stop();
+          // update may be null if a component is unmounted before its async
+          // setup has resolved.
+          if (update) {
+              // so that scheduler will no longer invoke it
+              update.active = false;
+              unmount(subTree, instance, parentSuspense, doRemove);
+          }
+          // unmounted hook
+          if (um) {
+              queuePostRenderEffect(um, parentSuspense);
+          }
+          queuePostRenderEffect(() => {
+              instance.isUnmounted = true;
+          }, parentSuspense);
+          // A component with async dep inside a pending suspense is unmounted before
+          // its async dep resolves. This should remove the dep from the suspense, and
+          // cause the suspense to resolve immediately if that was the last dep.
+          if (parentSuspense &&
+              parentSuspense.pendingBranch &&
+              !parentSuspense.isUnmounted &&
+              instance.asyncDep &&
+              !instance.asyncResolved &&
+              instance.suspenseId === parentSuspense.pendingId) {
+              parentSuspense.deps--;
+              if (parentSuspense.deps === 0) {
+                  parentSuspense.resolve();
+              }
+          }
+          {
+              devtoolsComponentRemoved(instance);
+          }
+      };
+      const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {
+          for (let i = start; i < children.length; i++) {
+              unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);
+          }
+      };
+      const getNextHostNode = vnode => {
+          if (vnode.shapeFlag & 6 /* COMPONENT */) {
+              return getNextHostNode(vnode.component.subTree);
+          }
+          if (vnode.shapeFlag & 128 /* SUSPENSE */) {
+              return vnode.suspense.next();
+          }
+          return hostNextSibling((vnode.anchor || vnode.el));
+      };
+      const render = (vnode, container, isSVG) => {
+          if (vnode == null) {
+              if (container._vnode) {
+                  unmount(container._vnode, null, null, true);
+              }
+          }
+          else {
+              patch(container._vnode || null, vnode, container, null, null, null, isSVG);
+          }
+          flushPostFlushCbs();
+          container._vnode = vnode;
+      };
+      const internals = {
+          p: patch,
+          um: unmount,
+          m: move,
+          r: remove,
+          mt: mountComponent,
+          mc: mountChildren,
+          pc: patchChildren,
+          pbc: patchBlockChildren,
+          n: getNextHostNode,
+          o: options
+      };
+      let hydrate;
+      let hydrateNode;
+      if (createHydrationFns) {
+          [hydrate, hydrateNode] = createHydrationFns(internals);
+      }
+      return {
+          render,
+          hydrate,
+          createApp: createAppAPI(render, hydrate)
+      };
+  }
+  function toggleRecurse({ effect, update }, allowed) {
+      effect.allowRecurse = update.allowRecurse = allowed;
+  }
+  /**
+   * #1156
+   * When a component is HMR-enabled, we need to make sure that all static nodes
+   * inside a block also inherit the DOM element from the previous tree so that
+   * HMR updates (which are full updates) can retrieve the element for patching.
+   *
+   * #2080
+   * Inside keyed `template` fragment static children, if a fragment is moved,
+   * the children will always be moved. Therefore, in order to ensure correct move
+   * position, el should be inherited from previous nodes.
+   */
+  function traverseStaticChildren(n1, n2, shallow = false) {
+      const ch1 = n1.children;
+      const ch2 = n2.children;
+      if (isArray(ch1) && isArray(ch2)) {
+          for (let i = 0; i < ch1.length; i++) {
+              // this is only called in the optimized path so array children are
+              // guaranteed to be vnodes
+              const c1 = ch1[i];
+              let c2 = ch2[i];
+              if (c2.shapeFlag & 1 /* ELEMENT */ && !c2.dynamicChildren) {
+                  if (c2.patchFlag <= 0 || c2.patchFlag === 32 /* HYDRATE_EVENTS */) {
+                      c2 = ch2[i] = cloneIfMounted(ch2[i]);
+                      c2.el = c1.el;
+                  }
+                  if (!shallow)
+                      traverseStaticChildren(c1, c2);
+              }
+              // also inherit for comment nodes, but not placeholders (e.g. v-if which
+              // would have received .el during block patch)
+              if (c2.type === Comment && !c2.el) {
+                  c2.el = c1.el;
+              }
+          }
+      }
+  }
+  // https://en.wikipedia.org/wiki/Longest_increasing_subsequence
+  function getSequence(arr) {
+      const p = arr.slice();
+      const result = [0];
+      let i, j, u, v, c;
+      const len = arr.length;
+      for (i = 0; i < len; i++) {
+          const arrI = arr[i];
+          if (arrI !== 0) {
+              j = result[result.length - 1];
+              if (arr[j] < arrI) {
+                  p[i] = j;
+                  result.push(i);
+                  continue;
+              }
+              u = 0;
+              v = result.length - 1;
+              while (u < v) {
+                  c = (u + v) >> 1;
+                  if (arr[result[c]] < arrI) {
+                      u = c + 1;
+                  }
+                  else {
+                      v = c;
+                  }
+              }
+              if (arrI < arr[result[u]]) {
+                  if (u > 0) {
+                      p[i] = result[u - 1];
+                  }
+                  result[u] = i;
+              }
+          }
+      }
+      u = result.length;
+      v = result[u - 1];
+      while (u-- > 0) {
+          result[u] = v;
+          v = p[v];
+      }
+      return result;
+  }
+
+  const isTeleport = (type) => type.__isTeleport;
+  const isTeleportDisabled = (props) => props && (props.disabled || props.disabled === '');
+  const isTargetSVG = (target) => typeof SVGElement !== 'undefined' && target instanceof SVGElement;
+  const resolveTarget = (props, select) => {
+      const targetSelector = props && props.to;
+      if (isString(targetSelector)) {
+          if (!select) {
+              warn$1(`Current renderer does not support string target for Teleports. ` +
+                      `(missing querySelector renderer option)`);
+              return null;
+          }
+          else {
+              const target = select(targetSelector);
+              if (!target) {
+                  warn$1(`Failed to locate Teleport target with selector "${targetSelector}". ` +
+                          `Note the target element must exist before the component is mounted - ` +
+                          `i.e. the target cannot be rendered by the component itself, and ` +
+                          `ideally should be outside of the entire Vue component tree.`);
+              }
+              return target;
+          }
+      }
+      else {
+          if (!targetSelector && !isTeleportDisabled(props)) {
+              warn$1(`Invalid Teleport target: ${targetSelector}`);
+          }
+          return targetSelector;
+      }
+  };
+  const TeleportImpl = {
+      __isTeleport: true,
+      process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals) {
+          const { mc: mountChildren, pc: patchChildren, pbc: patchBlockChildren, o: { insert, querySelector, createText, createComment } } = internals;
+          const disabled = isTeleportDisabled(n2.props);
+          let { shapeFlag, children, dynamicChildren } = n2;
+          // #3302
+          // HMR updated, force full diff
+          if (isHmrUpdating) {
+              optimized = false;
+              dynamicChildren = null;
+          }
+          if (n1 == null) {
+              // insert anchors in the main view
+              const placeholder = (n2.el = createComment('teleport start')
+                  );
+              const mainAnchor = (n2.anchor = createComment('teleport end')
+                  );
+              insert(placeholder, container, anchor);
+              insert(mainAnchor, container, anchor);
+              const target = (n2.target = resolveTarget(n2.props, querySelector));
+              const targetAnchor = (n2.targetAnchor = createText(''));
+              if (target) {
+                  insert(targetAnchor, target);
+                  // #2652 we could be teleporting from a non-SVG tree into an SVG tree
+                  isSVG = isSVG || isTargetSVG(target);
+              }
+              else if (!disabled) {
+                  warn$1('Invalid Teleport target on mount:', target, `(${typeof target})`);
+              }
+              const mount = (container, anchor) => {
+                  // Teleport *always* has Array children. This is enforced in both the
+                  // compiler and vnode children normalization.
+                  if (shapeFlag & 16 /* ARRAY_CHILDREN */) {
+                      mountChildren(children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);
+                  }
+              };
+              if (disabled) {
+                  mount(container, mainAnchor);
+              }
+              else if (target) {
+                  mount(target, targetAnchor);
+              }
+          }
+          else {
+              // update content
+              n2.el = n1.el;
+              const mainAnchor = (n2.anchor = n1.anchor);
+              const target = (n2.target = n1.target);
+              const targetAnchor = (n2.targetAnchor = n1.targetAnchor);
+              const wasDisabled = isTeleportDisabled(n1.props);
+              const currentContainer = wasDisabled ? container : target;
+              const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;
+              isSVG = isSVG || isTargetSVG(target);
+              if (dynamicChildren) {
+                  // fast path when the teleport happens to be a block root
+                  patchBlockChildren(n1.dynamicChildren, dynamicChildren, currentContainer, parentComponent, parentSuspense, isSVG, slotScopeIds);
+                  // even in block tree mode we need to make sure all root-level nodes
+                  // in the teleport inherit previous DOM references so that they can
+                  // be moved in future patches.
+                  traverseStaticChildren(n1, n2, true);
+              }
+              else if (!optimized) {
+                  patchChildren(n1, n2, currentContainer, currentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, false);
+              }
+              if (disabled) {
+                  if (!wasDisabled) {
+                      // enabled -> disabled
+                      // move into main container
+                      moveTeleport(n2, container, mainAnchor, internals, 1 /* TOGGLE */);
+                  }
+              }
+              else {
+                  // target changed
+                  if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {
+                      const nextTarget = (n2.target = resolveTarget(n2.props, querySelector));
+                      if (nextTarget) {
+                          moveTeleport(n2, nextTarget, null, internals, 0 /* TARGET_CHANGE */);
+                      }
+                      else {
+                          warn$1('Invalid Teleport target on update:', target, `(${typeof target})`);
+                      }
+                  }
+                  else if (wasDisabled) {
+                      // disabled -> enabled
+                      // move into teleport target
+                      moveTeleport(n2, target, targetAnchor, internals, 1 /* TOGGLE */);
+                  }
+              }
+          }
+      },
+      remove(vnode, parentComponent, parentSuspense, optimized, { um: unmount, o: { remove: hostRemove } }, doRemove) {
+          const { shapeFlag, children, anchor, targetAnchor, target, props } = vnode;
+          if (target) {
+              hostRemove(targetAnchor);
+          }
+          // an unmounted teleport should always remove its children if not disabled
+          if (doRemove || !isTeleportDisabled(props)) {
+              hostRemove(anchor);
+              if (shapeFlag & 16 /* ARRAY_CHILDREN */) {
+                  for (let i = 0; i < children.length; i++) {
+                      const child = children[i];
+                      unmount(child, parentComponent, parentSuspense, true, !!child.dynamicChildren);
+                  }
+              }
+          }
+      },
+      move: moveTeleport,
+      hydrate: hydrateTeleport
+  };
+  function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2 /* REORDER */) {
+      // move target anchor if this is a target change.
+      if (moveType === 0 /* TARGET_CHANGE */) {
+          insert(vnode.targetAnchor, container, parentAnchor);
+      }
+      const { el, anchor, shapeFlag, children, props } = vnode;
+      const isReorder = moveType === 2 /* REORDER */;
+      // move main view anchor if this is a re-order.
+      if (isReorder) {
+          insert(el, container, parentAnchor);
+      }
+      // if this is a re-order and teleport is enabled (content is in target)
+      // do not move children. So the opposite is: only move children if this
+      // is not a reorder, or the teleport is disabled
+      if (!isReorder || isTeleportDisabled(props)) {
+          // Teleport has either Array children or no children.
+          if (shapeFlag & 16 /* ARRAY_CHILDREN */) {
+              for (let i = 0; i < children.length; i++) {
+                  move(children[i], container, parentAnchor, 2 /* REORDER */);
+              }
+          }
+      }
+      // move main view anchor if this is a re-order.
+      if (isReorder) {
+          insert(anchor, container, parentAnchor);
+      }
+  }
+  function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { o: { nextSibling, parentNode, querySelector } }, hydrateChildren) {
+      const target = (vnode.target = resolveTarget(vnode.props, querySelector));
+      if (target) {
+          // if multiple teleports rendered to the same target element, we need to
+          // pick up from where the last teleport finished instead of the first node
+          const targetNode = target._lpa || target.firstChild;
+          if (vnode.shapeFlag & 16 /* ARRAY_CHILDREN */) {
+              if (isTeleportDisabled(vnode.props)) {
+                  vnode.anchor = hydrateChildren(nextSibling(node), vnode, parentNode(node), parentComponent, parentSuspense, slotScopeIds, optimized);
+                  vnode.targetAnchor = targetNode;
+              }
+              else {
+                  vnode.anchor = nextSibling(node);
+                  // lookahead until we find the target anchor
+                  // we cannot rely on return value of hydrateChildren() because there
+                  // could be nested teleports
+                  let targetAnchor = targetNode;
+                  while (targetAnchor) {
+                      targetAnchor = nextSibling(targetAnchor);
+                      if (targetAnchor &&
+                          targetAnchor.nodeType === 8 &&
+                          targetAnchor.data === 'teleport anchor') {
+                          vnode.targetAnchor = targetAnchor;
+                          target._lpa =
+                              vnode.targetAnchor && nextSibling(vnode.targetAnchor);
+                          break;
+                      }
+                  }
+                  hydrateChildren(targetNode, vnode, target, parentComponent, parentSuspense, slotScopeIds, optimized);
+              }
+          }
+      }
+      return vnode.anchor && nextSibling(vnode.anchor);
+  }
+  // Force-casted public typing for h and TSX props inference
+  const Teleport = TeleportImpl;
+
+  const Fragment = Symbol('Fragment' );
+  const Text = Symbol('Text' );
+  const Comment = Symbol('Comment' );
+  const Static = Symbol('Static' );
+  // Since v-if and v-for are the two possible ways node structure can dynamically
+  // change, once we consider v-if branches and each v-for fragment a block, we
+  // can divide a template into nested blocks, and within each block the node
+  // structure would be stable. This allows us to skip most children diffing
+  // and only worry about the dynamic nodes (indicated by patch flags).
+  const blockStack = [];
+  let currentBlock = null;
+  /**
+   * Open a block.
+   * This must be called before `createBlock`. It cannot be part of `createBlock`
+   * because the children of the block are evaluated before `createBlock` itself
+   * is called. The generated code typically looks like this:
+   *
+   * ```js
+   * function render() {
+   *   return (openBlock(),createBlock('div', null, [...]))
+   * }
+   * ```
+   * disableTracking is true when creating a v-for fragment block, since a v-for
+   * fragment always diffs its children.
+   *
+   * @private
+   */
+  function openBlock(disableTracking = false) {
+      blockStack.push((currentBlock = disableTracking ? null : []));
+  }
+  function closeBlock() {
+      blockStack.pop();
+      currentBlock = blockStack[blockStack.length - 1] || null;
+  }
+  // Whether we should be tracking dynamic child nodes inside a block.
+  // Only tracks when this value is > 0
+  // We are not using a simple boolean because this value may need to be
+  // incremented/decremented by nested usage of v-once (see below)
+  let isBlockTreeEnabled = 1;
+  /**
+   * Block tracking sometimes needs to be disabled, for example during the
+   * creation of a tree that needs to be cached by v-once. The compiler generates
+   * code like this:
+   *
+   * ``` js
+   * _cache[1] || (
+   *   setBlockTracking(-1),
+   *   _cache[1] = createVNode(...),
+   *   setBlockTracking(1),
+   *   _cache[1]
+   * )
+   * ```
+   *
+   * @private
+   */
+  function setBlockTracking(value) {
+      isBlockTreeEnabled += value;
+  }
+  function setupBlock(vnode) {
+      // save current block children on the block vnode
+      vnode.dynamicChildren =
+          isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;
+      // close block
+      closeBlock();
+      // a block is always going to be patched, so track it as a child of its
+      // parent block
+      if (isBlockTreeEnabled > 0 && currentBlock) {
+          currentBlock.push(vnode);
+      }
+      return vnode;
+  }
+  /**
+   * @private
+   */
+  function createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) {
+      return setupBlock(createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, true /* isBlock */));
+  }
+  /**
+   * Create a block root vnode. Takes the same exact arguments as `createVNode`.
+   * A block root keeps track of dynamic nodes within the block in the
+   * `dynamicChildren` array.
+   *
+   * @private
+   */
+  function createBlock(type, props, children, patchFlag, dynamicProps) {
+      return setupBlock(createVNode(type, props, children, patchFlag, dynamicProps, true /* isBlock: prevent a block from tracking itself */));
+  }
+  function isVNode(value) {
+      return value ? value.__v_isVNode === true : false;
+  }
+  function isSameVNodeType(n1, n2) {
+      if (n2.shapeFlag & 6 /* COMPONENT */ &&
+          hmrDirtyComponents.has(n2.type)) {
+          // HMR only: if the component has been hot-updated, force a reload.
+          return false;
+      }
+      return n1.type === n2.type && n1.key === n2.key;
+  }
+  let vnodeArgsTransformer;
+  /**
+   * Internal API for registering an arguments transform for createVNode
+   * used for creating stubs in the test-utils
+   * It is *internal* but needs to be exposed for test-utils to pick up proper
+   * typings
+   */
+  function transformVNodeArgs(transformer) {
+      vnodeArgsTransformer = transformer;
+  }
+  const createVNodeWithArgsTransform = (...args) => {
+      return _createVNode(...(vnodeArgsTransformer
+          ? vnodeArgsTransformer(args, currentRenderingInstance)
+          : args));
+  };
+  const InternalObjectKey = `__vInternal`;
+  const normalizeKey = ({ key }) => key != null ? key : null;
+  const normalizeRef = ({ ref, ref_key, ref_for }) => {
+      return (ref != null
+          ? isString(ref) || isRef(ref) || isFunction(ref)
+              ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for }
+              : ref
+          : null);
+  };
+  function createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1 /* ELEMENT */, isBlockNode = false, needFullChildrenNormalization = false) {
+      const vnode = {
+          __v_isVNode: true,
+          __v_skip: true,
+          type,
+          props,
+          key: props && normalizeKey(props),
+          ref: props && normalizeRef(props),
+          scopeId: currentScopeId,
+          slotScopeIds: null,
+          children,
+          component: null,
+          suspense: null,
+          ssContent: null,
+          ssFallback: null,
+          dirs: null,
+          transition: null,
+          el: null,
+          anchor: null,
+          target: null,
+          targetAnchor: null,
+          staticCount: 0,
+          shapeFlag,
+          patchFlag,
+          dynamicProps,
+          dynamicChildren: null,
+          appContext: null
+      };
+      if (needFullChildrenNormalization) {
+          normalizeChildren(vnode, children);
+          // normalize suspense children
+          if (shapeFlag & 128 /* SUSPENSE */) {
+              type.normalize(vnode);
+          }
+      }
+      else if (children) {
+          // compiled element vnode - if children is passed, only possible types are
+          // string or Array.
+          vnode.shapeFlag |= isString(children)
+              ? 8 /* TEXT_CHILDREN */
+              : 16 /* ARRAY_CHILDREN */;
+      }
+      // validate key
+      if (vnode.key !== vnode.key) {
+          warn$1(`VNode created with invalid key (NaN). VNode type:`, vnode.type);
+      }
+      // track vnode for block tree
+      if (isBlockTreeEnabled > 0 &&
+          // avoid a block node from tracking itself
+          !isBlockNode &&
+          // has current parent block
+          currentBlock &&
+          // presence of a patch flag indicates this node needs patching on updates.
+          // component nodes also should always be patched, because even if the
+          // component doesn't need to update, it needs to persist the instance on to
+          // the next vnode so that it can be properly unmounted later.
+          (vnode.patchFlag > 0 || shapeFlag & 6 /* COMPONENT */) &&
+          // the EVENTS flag is only for hydration and if it is the only flag, the
+          // vnode should not be considered dynamic due to handler caching.
+          vnode.patchFlag !== 32 /* HYDRATE_EVENTS */) {
+          currentBlock.push(vnode);
+      }
+      return vnode;
+  }
+  const createVNode = (createVNodeWithArgsTransform );
+  function _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {
+      if (!type || type === NULL_DYNAMIC_COMPONENT) {
+          if (!type) {
+              warn$1(`Invalid vnode type when creating vnode: ${type}.`);
+          }
+          type = Comment;
+      }
+      if (isVNode(type)) {
+          // createVNode receiving an existing vnode. This happens in cases like
+          // <component :is="vnode"/>
+          // #2078 make sure to merge refs during the clone instead of overwriting it
+          const cloned = cloneVNode(type, props, true /* mergeRef: true */);
+          if (children) {
+              normalizeChildren(cloned, children);
+          }
+          if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {
+              if (cloned.shapeFlag & 6 /* COMPONENT */) {
+                  currentBlock[currentBlock.indexOf(type)] = cloned;
+              }
+              else {
+                  currentBlock.push(cloned);
+              }
+          }
+          cloned.patchFlag |= -2 /* BAIL */;
+          return cloned;
+      }
+      // class component normalization.
+      if (isClassComponent(type)) {
+          type = type.__vccOpts;
+      }
+      // class & style normalization.
+      if (props) {
+          // for reactive or proxy objects, we need to clone it to enable mutation.
+          props = guardReactiveProps(props);
+          let { class: klass, style } = props;
+          if (klass && !isString(klass)) {
+              props.class = normalizeClass(klass);
+          }
+          if (isObject(style)) {
+              // reactive state objects need to be cloned since they are likely to be
+              // mutated
+              if (isProxy(style) && !isArray(style)) {
+                  style = extend({}, style);
+              }
+              props.style = normalizeStyle(style);
+          }
+      }
+      // encode the vnode type information into a bitmap
+      const shapeFlag = isString(type)
+          ? 1 /* ELEMENT */
+          : isSuspense(type)
+              ? 128 /* SUSPENSE */
+              : isTeleport(type)
+                  ? 64 /* TELEPORT */
+                  : isObject(type)
+                      ? 4 /* STATEFUL_COMPONENT */
+                      : isFunction(type)
+                          ? 2 /* FUNCTIONAL_COMPONENT */
+                          : 0;
+      if (shapeFlag & 4 /* STATEFUL_COMPONENT */ && isProxy(type)) {
+          type = toRaw(type);
+          warn$1(`Vue received a Component which was made a reactive object. This can ` +
+              `lead to unnecessary performance overhead, and should be avoided by ` +
+              `marking the component with \`markRaw\` or using \`shallowRef\` ` +
+              `instead of \`ref\`.`, `\nComponent that was made reactive: `, type);
+      }
+      return createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, isBlockNode, true);
+  }
+  function guardReactiveProps(props) {
+      if (!props)
+          return null;
+      return isProxy(props) || InternalObjectKey in props
+          ? extend({}, props)
+          : props;
+  }
+  function cloneVNode(vnode, extraProps, mergeRef = false) {
+      // This is intentionally NOT using spread or extend to avoid the runtime
+      // key enumeration cost.
+      const { props, ref, patchFlag, children } = vnode;
+      const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;
+      const cloned = {
+          __v_isVNode: true,
+          __v_skip: true,
+          type: vnode.type,
+          props: mergedProps,
+          key: mergedProps && normalizeKey(mergedProps),
+          ref: extraProps && extraProps.ref
+              ? // #2078 in the case of <component :is="vnode" ref="extra"/>
+                  // if the vnode itself already has a ref, cloneVNode will need to merge
+                  // the refs so the single vnode can be set on multiple refs
+                  mergeRef && ref
+                      ? isArray(ref)
+                          ? ref.concat(normalizeRef(extraProps))
+                          : [ref, normalizeRef(extraProps)]
+                      : normalizeRef(extraProps)
+              : ref,
+          scopeId: vnode.scopeId,
+          slotScopeIds: vnode.slotScopeIds,
+          children: patchFlag === -1 /* HOISTED */ && isArray(children)
+              ? children.map(deepCloneVNode)
+              : children,
+          target: vnode.target,
+          targetAnchor: vnode.targetAnchor,
+          staticCount: vnode.staticCount,
+          shapeFlag: vnode.shapeFlag,
+          // if the vnode is cloned with extra props, we can no longer assume its
+          // existing patch flag to be reliable and need to add the FULL_PROPS flag.
+          // note: preserve flag for fragments since they use the flag for children
+          // fast paths only.
+          patchFlag: extraProps && vnode.type !== Fragment
+              ? patchFlag === -1 // hoisted node
+                  ? 16 /* FULL_PROPS */
+                  : patchFlag | 16 /* FULL_PROPS */
+              : patchFlag,
+          dynamicProps: vnode.dynamicProps,
+          dynamicChildren: vnode.dynamicChildren,
+          appContext: vnode.appContext,
+          dirs: vnode.dirs,
+          transition: vnode.transition,
+          // These should technically only be non-null on mounted VNodes. However,
+          // they *should* be copied for kept-alive vnodes. So we just always copy
+          // them since them being non-null during a mount doesn't affect the logic as
+          // they will simply be overwritten.
+          component: vnode.component,
+          suspense: vnode.suspense,
+          ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),
+          ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),
+          el: vnode.el,
+          anchor: vnode.anchor
+      };
+      return cloned;
+  }
+  /**
+   * Dev only, for HMR of hoisted vnodes reused in v-for
+   * https://github.com/vitejs/vite/issues/2022
+   */
+  function deepCloneVNode(vnode) {
+      const cloned = cloneVNode(vnode);
+      if (isArray(vnode.children)) {
+          cloned.children = vnode.children.map(deepCloneVNode);
+      }
+      return cloned;
+  }
+  /**
+   * @private
+   */
+  function createTextVNode(text = ' ', flag = 0) {
+      return createVNode(Text, null, text, flag);
+  }
+  /**
+   * @private
+   */
+  function createStaticVNode(content, numberOfNodes) {
+      // A static vnode can contain multiple stringified elements, and the number
+      // of elements is necessary for hydration.
+      const vnode = createVNode(Static, null, content);
+      vnode.staticCount = numberOfNodes;
+      return vnode;
+  }
+  /**
+   * @private
+   */
+  function createCommentVNode(text = '', 
+  // when used as the v-else branch, the comment node must be created as a
+  // block to ensure correct updates.
+  asBlock = false) {
+      return asBlock
+          ? (openBlock(), createBlock(Comment, null, text))
+          : createVNode(Comment, null, text);
+  }
+  function normalizeVNode(child) {
+      if (child == null || typeof child === 'boolean') {
+          // empty placeholder
+          return createVNode(Comment);
+      }
+      else if (isArray(child)) {
+          // fragment
+          return createVNode(Fragment, null, 
+          // #3666, avoid reference pollution when reusing vnode
+          child.slice());
+      }
+      else if (typeof child === 'object') {
+          // already vnode, this should be the most common since compiled templates
+          // always produce all-vnode children arrays
+          return cloneIfMounted(child);
+      }
+      else {
+          // strings and numbers
+          return createVNode(Text, null, String(child));
+      }
+  }
+  // optimized normalization for template-compiled render fns
+  function cloneIfMounted(child) {
+      return child.el === null || child.memo ? child : cloneVNode(child);
+  }
+  function normalizeChildren(vnode, children) {
+      let type = 0;
+      const { shapeFlag } = vnode;
+      if (children == null) {
+          children = null;
+      }
+      else if (isArray(children)) {
+          type = 16 /* ARRAY_CHILDREN */;
+      }
+      else if (typeof children === 'object') {
+          if (shapeFlag & (1 /* ELEMENT */ | 64 /* TELEPORT */)) {
+              // Normalize slot to plain children for plain element and Teleport
+              const slot = children.default;
+              if (slot) {
+                  // _c marker is added by withCtx() indicating this is a compiled slot
+                  slot._c && (slot._d = false);
+                  normalizeChildren(vnode, slot());
+                  slot._c && (slot._d = true);
+              }
+              return;
+          }
+          else {
+              type = 32 /* SLOTS_CHILDREN */;
+              const slotFlag = children._;
+              if (!slotFlag && !(InternalObjectKey in children)) {
+                  children._ctx = currentRenderingInstance;
+              }
+              else if (slotFlag === 3 /* FORWARDED */ && currentRenderingInstance) {
+                  // a child component receives forwarded slots from the parent.
+                  // its slot type is determined by its parent's slot type.
+                  if (currentRenderingInstance.slots._ === 1 /* STABLE */) {
+                      children._ = 1 /* STABLE */;
+                  }
+                  else {
+                      children._ = 2 /* DYNAMIC */;
+                      vnode.patchFlag |= 1024 /* DYNAMIC_SLOTS */;
+                  }
+              }
+          }
+      }
+      else if (isFunction(children)) {
+          children = { default: children, _ctx: currentRenderingInstance };
+          type = 32 /* SLOTS_CHILDREN */;
+      }
+      else {
+          children = String(children);
+          // force teleport children to array so it can be moved around
+          if (shapeFlag & 64 /* TELEPORT */) {
+              type = 16 /* ARRAY_CHILDREN */;
+              children = [createTextVNode(children)];
+          }
+          else {
+              type = 8 /* TEXT_CHILDREN */;
+          }
+      }
+      vnode.children = children;
+      vnode.shapeFlag |= type;
+  }
+  function mergeProps(...args) {
+      const ret = {};
+      for (let i = 0; i < args.length; i++) {
+          const toMerge = args[i];
+          for (const key in toMerge) {
+              if (key === 'class') {
+                  if (ret.class !== toMerge.class) {
+                      ret.class = normalizeClass([ret.class, toMerge.class]);
+                  }
+              }
+              else if (key === 'style') {
+                  ret.style = normalizeStyle([ret.style, toMerge.style]);
+              }
+              else if (isOn(key)) {
+                  const existing = ret[key];
+                  const incoming = toMerge[key];
+                  if (incoming &&
+                      existing !== incoming &&
+                      !(isArray(existing) && existing.includes(incoming))) {
+                      ret[key] = existing
+                          ? [].concat(existing, incoming)
+                          : incoming;
+                  }
+              }
+              else if (key !== '') {
+                  ret[key] = toMerge[key];
+              }
+          }
+      }
+      return ret;
+  }
+  function invokeVNodeHook(hook, instance, vnode, prevVNode = null) {
+      callWithAsyncErrorHandling(hook, instance, 7 /* VNODE_HOOK */, [
+          vnode,
+          prevVNode
+      ]);
+  }
+
+  const emptyAppContext = createAppContext();
+  let uid$1 = 0;
+  function createComponentInstance(vnode, parent, suspense) {
+      const type = vnode.type;
+      // inherit parent app context - or - if root, adopt from root vnode
+      const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;
+      const instance = {
+          uid: uid$1++,
+          vnode,
+          type,
+          parent,
+          appContext,
+          root: null,
+          next: null,
+          subTree: null,
+          effect: null,
+          update: null,
+          scope: new EffectScope(true /* detached */),
+          render: null,
+          proxy: null,
+          exposed: null,
+          exposeProxy: null,
+          withProxy: null,
+          provides: parent ? parent.provides : Object.create(appContext.provides),
+          accessCache: null,
+          renderCache: [],
+          // local resolved assets
+          components: null,
+          directives: null,
+          // resolved props and emits options
+          propsOptions: normalizePropsOptions(type, appContext),
+          emitsOptions: normalizeEmitsOptions(type, appContext),
+          // emit
+          emit: null,
+          emitted: null,
+          // props default value
+          propsDefaults: EMPTY_OBJ,
+          // inheritAttrs
+          inheritAttrs: type.inheritAttrs,
+          // state
+          ctx: EMPTY_OBJ,
+          data: EMPTY_OBJ,
+          props: EMPTY_OBJ,
+          attrs: EMPTY_OBJ,
+          slots: EMPTY_OBJ,
+          refs: EMPTY_OBJ,
+          setupState: EMPTY_OBJ,
+          setupContext: null,
+          // suspense related
+          suspense,
+          suspenseId: suspense ? suspense.pendingId : 0,
+          asyncDep: null,
+          asyncResolved: false,
+          // lifecycle hooks
+          // not using enums here because it results in computed properties
+          isMounted: false,
+          isUnmounted: false,
+          isDeactivated: false,
+          bc: null,
+          c: null,
+          bm: null,
+          m: null,
+          bu: null,
+          u: null,
+          um: null,
+          bum: null,
+          da: null,
+          a: null,
+          rtg: null,
+          rtc: null,
+          ec: null,
+          sp: null
+      };
+      {
+          instance.ctx = createDevRenderContext(instance);
+      }
+      instance.root = parent ? parent.root : instance;
+      instance.emit = emit$1.bind(null, instance);
+      // apply custom element special handling
+      if (vnode.ce) {
+          vnode.ce(instance);
+      }
+      return instance;
+  }
+  let currentInstance = null;
+  const getCurrentInstance = () => currentInstance || currentRenderingInstance;
+  const setCurrentInstance = (instance) => {
+      currentInstance = instance;
+      instance.scope.on();
+  };
+  const unsetCurrentInstance = () => {
+      currentInstance && currentInstance.scope.off();
+      currentInstance = null;
+  };
+  const isBuiltInTag = /*#__PURE__*/ makeMap('slot,component');
+  function validateComponentName(name, config) {
+      const appIsNativeTag = config.isNativeTag || NO;
+      if (isBuiltInTag(name) || appIsNativeTag(name)) {
+          warn$1('Do not use built-in or reserved HTML elements as component id: ' + name);
+      }
+  }
+  function isStatefulComponent(instance) {
+      return instance.vnode.shapeFlag & 4 /* STATEFUL_COMPONENT */;
+  }
+  let isInSSRComponentSetup = false;
+  function setupComponent(instance, isSSR = false) {
+      isInSSRComponentSetup = isSSR;
+      const { props, children } = instance.vnode;
+      const isStateful = isStatefulComponent(instance);
+      initProps(instance, props, isStateful, isSSR);
+      initSlots(instance, children);
+      const setupResult = isStateful
+          ? setupStatefulComponent(instance, isSSR)
+          : undefined;
+      isInSSRComponentSetup = false;
+      return setupResult;
+  }
+  function setupStatefulComponent(instance, isSSR) {
+      var _a;
+      const Component = instance.type;
+      {
+          if (Component.name) {
+              validateComponentName(Component.name, instance.appContext.config);
+          }
+          if (Component.components) {
+              const names = Object.keys(Component.components);
+              for (let i = 0; i < names.length; i++) {
+                  validateComponentName(names[i], instance.appContext.config);
+              }
+          }
+          if (Component.directives) {
+              const names = Object.keys(Component.directives);
+              for (let i = 0; i < names.length; i++) {
+                  validateDirectiveName(names[i]);
+              }
+          }
+          if (Component.compilerOptions && isRuntimeOnly()) {
+              warn$1(`"compilerOptions" is only supported when using a build of Vue that ` +
+                  `includes the runtime compiler. Since you are using a runtime-only ` +
+                  `build, the options should be passed via your build tool config instead.`);
+          }
+      }
+      // 0. create render proxy property access cache
+      instance.accessCache = Object.create(null);
+      // 1. create public instance / render proxy
+      // also mark it raw so it's never observed
+      instance.proxy = markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers));
+      {
+          exposePropsOnRenderContext(instance);
+      }
+      // 2. call setup()
+      const { setup } = Component;
+      if (setup) {
+          const setupContext = (instance.setupContext =
+              setup.length > 1 ? createSetupContext(instance) : null);
+          setCurrentInstance(instance);
+          pauseTracking();
+          const setupResult = callWithErrorHandling(setup, instance, 0 /* SETUP_FUNCTION */, [shallowReadonly(instance.props) , setupContext]);
+          resetTracking();
+          unsetCurrentInstance();
+          if (isPromise(setupResult)) {
+              setupResult.then(unsetCurrentInstance, unsetCurrentInstance);
+              if (isSSR) {
+                  // return the promise so server-renderer can wait on it
+                  return setupResult
+                      .then((resolvedResult) => {
+                      handleSetupResult(instance, resolvedResult, isSSR);
+                  })
+                      .catch(e => {
+                      handleError(e, instance, 0 /* SETUP_FUNCTION */);
+                  });
+              }
+              else {
+                  // async setup returned Promise.
+                  // bail here and wait for re-entry.
+                  instance.asyncDep = setupResult;
+                  if (!instance.suspense) {
+                      const name = (_a = Component.name) !== null && _a !== void 0 ? _a : 'Anonymous';
+                      warn$1(`Component <${name}>: setup function returned a promise, but no ` +
+                          `<Suspense> boundary was found in the parent component tree. ` +
+                          `A component with async setup() must be nested in a <Suspense> ` +
+                          `in order to be rendered.`);
+                  }
+              }
+          }
+          else {
+              handleSetupResult(instance, setupResult, isSSR);
+          }
+      }
+      else {
+          finishComponentSetup(instance, isSSR);
+      }
+  }
+  function handleSetupResult(instance, setupResult, isSSR) {
+      if (isFunction(setupResult)) {
+          // setup returned an inline render function
+          {
+              instance.render = setupResult;
+          }
+      }
+      else if (isObject(setupResult)) {
+          if (isVNode(setupResult)) {
+              warn$1(`setup() should not return VNodes directly - ` +
+                  `return a render function instead.`);
+          }
+          // setup returned bindings.
+          // assuming a render function compiled from template is present.
+          {
+              instance.devtoolsRawSetupState = setupResult;
+          }
+          instance.setupState = proxyRefs(setupResult);
+          {
+              exposeSetupStateOnRenderContext(instance);
+          }
+      }
+      else if (setupResult !== undefined) {
+          warn$1(`setup() should return an object. Received: ${setupResult === null ? 'null' : typeof setupResult}`);
+      }
+      finishComponentSetup(instance, isSSR);
+  }
+  let compile;
+  let installWithProxy;
+  /**
+   * For runtime-dom to register the compiler.
+   * Note the exported method uses any to avoid d.ts relying on the compiler types.
+   */
+  function registerRuntimeCompiler(_compile) {
+      compile = _compile;
+      installWithProxy = i => {
+          if (i.render._rc) {
+              i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers);
+          }
+      };
+  }
+  // dev only
+  const isRuntimeOnly = () => !compile;
+  function finishComponentSetup(instance, isSSR, skipOptions) {
+      const Component = instance.type;
+      // template / render function normalization
+      // could be already set when returned from setup()
+      if (!instance.render) {
+          // only do on-the-fly compile if not in SSR - SSR on-the-fly compilation
+          // is done by server-renderer
+          if (!isSSR && compile && !Component.render) {
+              const template = Component.template;
+              if (template) {
+                  {
+                      startMeasure(instance, `compile`);
+                  }
+                  const { isCustomElement, compilerOptions } = instance.appContext.config;
+                  const { delimiters, compilerOptions: componentCompilerOptions } = Component;
+                  const finalCompilerOptions = extend(extend({
+                      isCustomElement,
+                      delimiters
+                  }, compilerOptions), componentCompilerOptions);
+                  Component.render = compile(template, finalCompilerOptions);
+                  {
+                      endMeasure(instance, `compile`);
+                  }
+              }
+          }
+          instance.render = (Component.render || NOOP);
+          // for runtime-compiled render functions using `with` blocks, the render
+          // proxy used needs a different `has` handler which is more performant and
+          // also only allows a whitelist of globals to fallthrough.
+          if (installWithProxy) {
+              installWithProxy(instance);
+          }
+      }
+      // support for 2.x options
+      {
+          setCurrentInstance(instance);
+          pauseTracking();
+          applyOptions(instance);
+          resetTracking();
+          unsetCurrentInstance();
+      }
+      // warn missing template/render
+      // the runtime compilation of template in SSR is done by server-render
+      if (!Component.render && instance.render === NOOP && !isSSR) {
+          /* istanbul ignore if */
+          if (!compile && Component.template) {
+              warn$1(`Component provided template option but ` +
+                  `runtime compilation is not supported in this build of Vue.` +
+                  (` Use "vue.global.js" instead.`
+                              ) /* should not happen */);
+          }
+          else {
+              warn$1(`Component is missing template or render function.`);
+          }
+      }
+  }
+  function createAttrsProxy(instance) {
+      return new Proxy(instance.attrs, {
+              get(target, key) {
+                  markAttrsAccessed();
+                  track(instance, "get" /* GET */, '$attrs');
+                  return target[key];
+              },
+              set() {
+                  warn$1(`setupContext.attrs is readonly.`);
+                  return false;
+              },
+              deleteProperty() {
+                  warn$1(`setupContext.attrs is readonly.`);
+                  return false;
+              }
+          }
+          );
+  }
+  function createSetupContext(instance) {
+      const expose = exposed => {
+          if (instance.exposed) {
+              warn$1(`expose() should be called only once per setup().`);
+          }
+          instance.exposed = exposed || {};
+      };
+      let attrs;
+      {
+          // We use getters in dev in case libs like test-utils overwrite instance
+          // properties (overwrites should not be done in prod)
+          return Object.freeze({
+              get attrs() {
+                  return attrs || (attrs = createAttrsProxy(instance));
+              },
+              get slots() {
+                  return shallowReadonly(instance.slots);
+              },
+              get emit() {
+                  return (event, ...args) => instance.emit(event, ...args);
+              },
+              expose
+          });
+      }
+  }
+  function getExposeProxy(instance) {
+      if (instance.exposed) {
+          return (instance.exposeProxy ||
+              (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {
+                  get(target, key) {
+                      if (key in target) {
+                          return target[key];
+                      }
+                      else if (key in publicPropertiesMap) {
+                          return publicPropertiesMap[key](instance);
+                      }
+                  }
+              })));
+      }
+  }
+  const classifyRE = /(?:^|[-_])(\w)/g;
+  const classify = (str) => str.replace(classifyRE, c => c.toUpperCase()).replace(/[-_]/g, '');
+  function getComponentName(Component) {
+      return isFunction(Component)
+          ? Component.displayName || Component.name
+          : Component.name;
+  }
+  /* istanbul ignore next */
+  function formatComponentName(instance, Component, isRoot = false) {
+      let name = getComponentName(Component);
+      if (!name && Component.__file) {
+          const match = Component.__file.match(/([^/\\]+)\.\w+$/);
+          if (match) {
+              name = match[1];
+          }
+      }
+      if (!name && instance && instance.parent) {
+          // try to infer the name based on reverse resolution
+          const inferFromRegistry = (registry) => {
+              for (const key in registry) {
+                  if (registry[key] === Component) {
+                      return key;
+                  }
+              }
+          };
+          name =
+              inferFromRegistry(instance.components ||
+                  instance.parent.type.components) || inferFromRegistry(instance.appContext.components);
+      }
+      return name ? classify(name) : isRoot ? `App` : `Anonymous`;
+  }
+  function isClassComponent(value) {
+      return isFunction(value) && '__vccOpts' in value;
+  }
+
+  const computed$1 = ((getterOrOptions, debugOptions) => {
+      // @ts-ignore
+      return computed(getterOrOptions, debugOptions, isInSSRComponentSetup);
+  });
+
+  // dev only
+  const warnRuntimeUsage = (method) => warn$1(`${method}() is a compiler-hint helper that is only usable inside ` +
+      `<script setup> of a single file component. Its arguments should be ` +
+      `compiled away and passing it at runtime has no effect.`);
+  // implementation
+  function defineProps() {
+      {
+          warnRuntimeUsage(`defineProps`);
+      }
+      return null;
+  }
+  // implementation
+  function defineEmits() {
+      {
+          warnRuntimeUsage(`defineEmits`);
+      }
+      return null;
+  }
+  /**
+   * Vue `<script setup>` compiler macro for declaring a component's exposed
+   * instance properties when it is accessed by a parent component via template
+   * refs.
+   *
+   * `<script setup>` components are closed by default - i.e. variables inside
+   * the `<script setup>` scope is not exposed to parent unless explicitly exposed
+   * via `defineExpose`.
+   *
+   * This is only usable inside `<script setup>`, is compiled away in the
+   * output and should **not** be actually called at runtime.
+   */
+  function defineExpose(exposed) {
+      {
+          warnRuntimeUsage(`defineExpose`);
+      }
+  }
+  /**
+   * Vue `<script setup>` compiler macro for providing props default values when
+   * using type-based `defineProps` declaration.
+   *
+   * Example usage:
+   * ```ts
+   * withDefaults(defineProps<{
+   *   size?: number
+   *   labels?: string[]
+   * }>(), {
+   *   size: 3,
+   *   labels: () => ['default label']
+   * })
+   * ```
+   *
+   * This is only usable inside `<script setup>`, is compiled away in the output
+   * and should **not** be actually called at runtime.
+   */
+  function withDefaults(props, defaults) {
+      {
+          warnRuntimeUsage(`withDefaults`);
+      }
+      return null;
+  }
+  function useSlots() {
+      return getContext().slots;
+  }
+  function useAttrs() {
+      return getContext().attrs;
+  }
+  function getContext() {
+      const i = getCurrentInstance();
+      if (!i) {
+          warn$1(`useContext() called without active instance.`);
+      }
+      return i.setupContext || (i.setupContext = createSetupContext(i));
+  }
+  /**
+   * Runtime helper for merging default declarations. Imported by compiled code
+   * only.
+   * @internal
+   */
+  function mergeDefaults(raw, defaults) {
+      const props = isArray(raw)
+          ? raw.reduce((normalized, p) => ((normalized[p] = {}), normalized), {})
+          : raw;
+      for (const key in defaults) {
+          const opt = props[key];
+          if (opt) {
+              if (isArray(opt) || isFunction(opt)) {
+                  props[key] = { type: opt, default: defaults[key] };
+              }
+              else {
+                  opt.default = defaults[key];
+              }
+          }
+          else if (opt === null) {
+              props[key] = { default: defaults[key] };
+          }
+          else {
+              warn$1(`props default key "${key}" has no corresponding declaration.`);
+          }
+      }
+      return props;
+  }
+  /**
+   * Used to create a proxy for the rest element when destructuring props with
+   * defineProps().
+   * @internal
+   */
+  function createPropsRestProxy(props, excludedKeys) {
+      const ret = {};
+      for (const key in props) {
+          if (!excludedKeys.includes(key)) {
+              Object.defineProperty(ret, key, {
+                  enumerable: true,
+                  get: () => props[key]
+              });
+          }
+      }
+      return ret;
+  }
+  /**
+   * `<script setup>` helper for persisting the current instance context over
+   * async/await flows.
+   *
+   * `@vue/compiler-sfc` converts the following:
+   *
+   * ```ts
+   * const x = await foo()
+   * ```
+   *
+   * into:
+   *
+   * ```ts
+   * let __temp, __restore
+   * const x = (([__temp, __restore] = withAsyncContext(() => foo())),__temp=await __temp,__restore(),__temp)
+   * ```
+   * @internal
+   */
+  function withAsyncContext(getAwaitable) {
+      const ctx = getCurrentInstance();
+      if (!ctx) {
+          warn$1(`withAsyncContext called without active current instance. ` +
+              `This is likely a bug.`);
+      }
+      let awaitable = getAwaitable();
+      unsetCurrentInstance();
+      if (isPromise(awaitable)) {
+          awaitable = awaitable.catch(e => {
+              setCurrentInstance(ctx);
+              throw e;
+          });
+      }
+      return [awaitable, () => setCurrentInstance(ctx)];
+  }
+
+  // Actual implementation
+  function h(type, propsOrChildren, children) {
+      const l = arguments.length;
+      if (l === 2) {
+          if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {
+              // single vnode without props
+              if (isVNode(propsOrChildren)) {
+                  return createVNode(type, null, [propsOrChildren]);
+              }
+              // props without children
+              return createVNode(type, propsOrChildren);
+          }
+          else {
+              // omit props
+              return createVNode(type, null, propsOrChildren);
+          }
+      }
+      else {
+          if (l > 3) {
+              children = Array.prototype.slice.call(arguments, 2);
+          }
+          else if (l === 3 && isVNode(children)) {
+              children = [children];
+          }
+          return createVNode(type, propsOrChildren, children);
+      }
+  }
+
+  const ssrContextKey = Symbol(`ssrContext` );
+  const useSSRContext = () => {
+      {
+          warn$1(`useSSRContext() is not supported in the global build.`);
+      }
+  };
+
+  function initCustomFormatter() {
+      /* eslint-disable no-restricted-globals */
+      if (typeof window === 'undefined') {
+          return;
+      }
+      const vueStyle = { style: 'color:#3ba776' };
+      const numberStyle = { style: 'color:#0b1bc9' };
+      const stringStyle = { style: 'color:#b62e24' };
+      const keywordStyle = { style: 'color:#9d288c' };
+      // custom formatter for Chrome
+      // https://www.mattzeunert.com/2016/02/19/custom-chrome-devtools-object-formatters.html
+      const formatter = {
+          header(obj) {
+              // TODO also format ComponentPublicInstance & ctx.slots/attrs in setup
+              if (!isObject(obj)) {
+                  return null;
+              }
+              if (obj.__isVue) {
+                  return ['div', vueStyle, `VueInstance`];
+              }
+              else if (isRef(obj)) {
+                  return [
+                      'div',
+                      {},
+                      ['span', vueStyle, genRefFlag(obj)],
+                      '<',
+                      formatValue(obj.value),
+                      `>`
+                  ];
+              }
+              else if (isReactive(obj)) {
+                  return [
+                      'div',
+                      {},
+                      ['span', vueStyle, isShallow(obj) ? 'ShallowReactive' : 'Reactive'],
+                      '<',
+                      formatValue(obj),
+                      `>${isReadonly(obj) ? ` (readonly)` : ``}`
+                  ];
+              }
+              else if (isReadonly(obj)) {
+                  return [
+                      'div',
+                      {},
+                      ['span', vueStyle, isShallow(obj) ? 'ShallowReadonly' : 'Readonly'],
+                      '<',
+                      formatValue(obj),
+                      '>'
+                  ];
+              }
+              return null;
+          },
+          hasBody(obj) {
+              return obj && obj.__isVue;
+          },
+          body(obj) {
+              if (obj && obj.__isVue) {
+                  return [
+                      'div',
+                      {},
+                      ...formatInstance(obj.$)
+                  ];
+              }
+          }
+      };
+      function formatInstance(instance) {
+          const blocks = [];
+          if (instance.type.props && instance.props) {
+              blocks.push(createInstanceBlock('props', toRaw(instance.props)));
+          }
+          if (instance.setupState !== EMPTY_OBJ) {
+              blocks.push(createInstanceBlock('setup', instance.setupState));
+          }
+          if (instance.data !== EMPTY_OBJ) {
+              blocks.push(createInstanceBlock('data', toRaw(instance.data)));
+          }
+          const computed = extractKeys(instance, 'computed');
+          if (computed) {
+              blocks.push(createInstanceBlock('computed', computed));
+          }
+          const injected = extractKeys(instance, 'inject');
+          if (injected) {
+              blocks.push(createInstanceBlock('injected', injected));
+          }
+          blocks.push([
+              'div',
+              {},
+              [
+                  'span',
+                  {
+                      style: keywordStyle.style + ';opacity:0.66'
+                  },
+                  '$ (internal): '
+              ],
+              ['object', { object: instance }]
+          ]);
+          return blocks;
+      }
+      function createInstanceBlock(type, target) {
+          target = extend({}, target);
+          if (!Object.keys(target).length) {
+              return ['span', {}];
+          }
+          return [
+              'div',
+              { style: 'line-height:1.25em;margin-bottom:0.6em' },
+              [
+                  'div',
+                  {
+                      style: 'color:#476582'
+                  },
+                  type
+              ],
+              [
+                  'div',
+                  {
+                      style: 'padding-left:1.25em'
+                  },
+                  ...Object.keys(target).map(key => {
+                      return [
+                          'div',
+                          {},
+                          ['span', keywordStyle, key + ': '],
+                          formatValue(target[key], false)
+                      ];
+                  })
+              ]
+          ];
+      }
+      function formatValue(v, asRaw = true) {
+          if (typeof v === 'number') {
+              return ['span', numberStyle, v];
+          }
+          else if (typeof v === 'string') {
+              return ['span', stringStyle, JSON.stringify(v)];
+          }
+          else if (typeof v === 'boolean') {
+              return ['span', keywordStyle, v];
+          }
+          else if (isObject(v)) {
+              return ['object', { object: asRaw ? toRaw(v) : v }];
+          }
+          else {
+              return ['span', stringStyle, String(v)];
+          }
+      }
+      function extractKeys(instance, type) {
+          const Comp = instance.type;
+          if (isFunction(Comp)) {
+              return;
+          }
+          const extracted = {};
+          for (const key in instance.ctx) {
+              if (isKeyOfType(Comp, key, type)) {
+                  extracted[key] = instance.ctx[key];
+              }
+          }
+          return extracted;
+      }
+      function isKeyOfType(Comp, key, type) {
+          const opts = Comp[type];
+          if ((isArray(opts) && opts.includes(key)) ||
+              (isObject(opts) && key in opts)) {
+              return true;
+          }
+          if (Comp.extends && isKeyOfType(Comp.extends, key, type)) {
+              return true;
+          }
+          if (Comp.mixins && Comp.mixins.some(m => isKeyOfType(m, key, type))) {
+              return true;
+          }
+      }
+      function genRefFlag(v) {
+          if (isShallow(v)) {
+              return `ShallowRef`;
+          }
+          if (v.effect) {
+              return `ComputedRef`;
+          }
+          return `Ref`;
+      }
+      if (window.devtoolsFormatters) {
+          window.devtoolsFormatters.push(formatter);
+      }
+      else {
+          window.devtoolsFormatters = [formatter];
+      }
+  }
+
+  function withMemo(memo, render, cache, index) {
+      const cached = cache[index];
+      if (cached && isMemoSame(cached, memo)) {
+          return cached;
+      }
+      const ret = render();
+      // shallow clone
+      ret.memo = memo.slice();
+      return (cache[index] = ret);
+  }
+  function isMemoSame(cached, memo) {
+      const prev = cached.memo;
+      if (prev.length != memo.length) {
+          return false;
+      }
+      for (let i = 0; i < prev.length; i++) {
+          if (hasChanged(prev[i], memo[i])) {
+              return false;
+          }
+      }
+      // make sure to let parent block track it when returning cached
+      if (isBlockTreeEnabled > 0 && currentBlock) {
+          currentBlock.push(cached);
+      }
+      return true;
+  }
+
+  // Core API ------------------------------------------------------------------
+  const version = "3.2.36";
+  /**
+   * SSR utils for \@vue/server-renderer. Only exposed in cjs builds.
+   * @internal
+   */
+  const ssrUtils = (null);
+  /**
+   * @internal only exposed in compat builds
+   */
+  const resolveFilter = null;
+  /**
+   * @internal only exposed in compat builds.
+   */
+  const compatUtils = (null);
+
+  const svgNS = 'http://www.w3.org/2000/svg';
+  const doc = (typeof document !== 'undefined' ? document : null);
+  const templateContainer = doc && /*#__PURE__*/ doc.createElement('template');
+  const nodeOps = {
+      insert: (child, parent, anchor) => {
+          parent.insertBefore(child, anchor || null);
+      },
+      remove: child => {
+          const parent = child.parentNode;
+          if (parent) {
+              parent.removeChild(child);
+          }
+      },
+      createElement: (tag, isSVG, is, props) => {
+          const el = isSVG
+              ? doc.createElementNS(svgNS, tag)
+              : doc.createElement(tag, is ? { is } : undefined);
+          if (tag === 'select' && props && props.multiple != null) {
+              el.setAttribute('multiple', props.multiple);
+          }
+          return el;
+      },
+      createText: text => doc.createTextNode(text),
+      createComment: text => doc.createComment(text),
+      setText: (node, text) => {
+          node.nodeValue = text;
+      },
+      setElementText: (el, text) => {
+          el.textContent = text;
+      },
+      parentNode: node => node.parentNode,
+      nextSibling: node => node.nextSibling,
+      querySelector: selector => doc.querySelector(selector),
+      setScopeId(el, id) {
+          el.setAttribute(id, '');
+      },
+      cloneNode(el) {
+          const cloned = el.cloneNode(true);
+          // #3072
+          // - in `patchDOMProp`, we store the actual value in the `el._value` property.
+          // - normally, elements using `:value` bindings will not be hoisted, but if
+          //   the bound value is a constant, e.g. `:value="true"` - they do get
+          //   hoisted.
+          // - in production, hoisted nodes are cloned when subsequent inserts, but
+          //   cloneNode() does not copy the custom property we attached.
+          // - This may need to account for other custom DOM properties we attach to
+          //   elements in addition to `_value` in the future.
+          if (`_value` in el) {
+              cloned._value = el._value;
+          }
+          return cloned;
+      },
+      // __UNSAFE__
+      // Reason: innerHTML.
+      // Static content here can only come from compiled templates.
+      // As long as the user only uses trusted templates, this is safe.
+      insertStaticContent(content, parent, anchor, isSVG, start, end) {
+          // <parent> before | first ... last | anchor </parent>
+          const before = anchor ? anchor.previousSibling : parent.lastChild;
+          // #5308 can only take cached path if:
+          // - has a single root node
+          // - nextSibling info is still available
+          if (start && (start === end || start.nextSibling)) {
+              // cached
+              while (true) {
+                  parent.insertBefore(start.cloneNode(true), anchor);
+                  if (start === end || !(start = start.nextSibling))
+                      break;
+              }
+          }
+          else {
+              // fresh insert
+              templateContainer.innerHTML = isSVG ? `<svg>${content}</svg>` : content;
+              const template = templateContainer.content;
+              if (isSVG) {
+                  // remove outer svg wrapper
+                  const wrapper = template.firstChild;
+                  while (wrapper.firstChild) {
+                      template.appendChild(wrapper.firstChild);
+                  }
+                  template.removeChild(wrapper);
+              }
+              parent.insertBefore(template, anchor);
+          }
+          return [
+              // first
+              before ? before.nextSibling : parent.firstChild,
+              // last
+              anchor ? anchor.previousSibling : parent.lastChild
+          ];
+      }
+  };
+
+  // compiler should normalize class + :class bindings on the same element
+  // into a single binding ['staticClass', dynamic]
+  function patchClass(el, value, isSVG) {
+      // directly setting className should be faster than setAttribute in theory
+      // if this is an element during a transition, take the temporary transition
+      // classes into account.
+      const transitionClasses = el._vtc;
+      if (transitionClasses) {
+          value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(' ');
+      }
+      if (value == null) {
+          el.removeAttribute('class');
+      }
+      else if (isSVG) {
+          el.setAttribute('class', value);
+      }
+      else {
+          el.className = value;
+      }
+  }
+
+  function patchStyle(el, prev, next) {
+      const style = el.style;
+      const isCssString = isString(next);
+      if (next && !isCssString) {
+          for (const key in next) {
+              setStyle(style, key, next[key]);
+          }
+          if (prev && !isString(prev)) {
+              for (const key in prev) {
+                  if (next[key] == null) {
+                      setStyle(style, key, '');
+                  }
+              }
+          }
+      }
+      else {
+          const currentDisplay = style.display;
+          if (isCssString) {
+              if (prev !== next) {
+                  style.cssText = next;
+              }
+          }
+          else if (prev) {
+              el.removeAttribute('style');
+          }
+          // indicates that the `display` of the element is controlled by `v-show`,
+          // so we always keep the current `display` value regardless of the `style`
+          // value, thus handing over control to `v-show`.
+          if ('_vod' in el) {
+              style.display = currentDisplay;
+          }
+      }
+  }
+  const importantRE = /\s*!important$/;
+  function setStyle(style, name, val) {
+      if (isArray(val)) {
+          val.forEach(v => setStyle(style, name, v));
+      }
+      else {
+          if (val == null)
+              val = '';
+          if (name.startsWith('--')) {
+              // custom property definition
+              style.setProperty(name, val);
+          }
+          else {
+              const prefixed = autoPrefix(style, name);
+              if (importantRE.test(val)) {
+                  // !important
+                  style.setProperty(hyphenate(prefixed), val.replace(importantRE, ''), 'important');
+              }
+              else {
+                  style[prefixed] = val;
+              }
+          }
+      }
+  }
+  const prefixes = ['Webkit', 'Moz', 'ms'];
+  const prefixCache = {};
+  function autoPrefix(style, rawName) {
+      const cached = prefixCache[rawName];
+      if (cached) {
+          return cached;
+      }
+      let name = camelize(rawName);
+      if (name !== 'filter' && name in style) {
+          return (prefixCache[rawName] = name);
+      }
+      name = capitalize(name);
+      for (let i = 0; i < prefixes.length; i++) {
+          const prefixed = prefixes[i] + name;
+          if (prefixed in style) {
+              return (prefixCache[rawName] = prefixed);
+          }
+      }
+      return rawName;
+  }
+
+  const xlinkNS = 'http://www.w3.org/1999/xlink';
+  function patchAttr(el, key, value, isSVG, instance) {
+      if (isSVG && key.startsWith('xlink:')) {
+          if (value == null) {
+              el.removeAttributeNS(xlinkNS, key.slice(6, key.length));
+          }
+          else {
+              el.setAttributeNS(xlinkNS, key, value);
+          }
+      }
+      else {
+          // note we are only checking boolean attributes that don't have a
+          // corresponding dom prop of the same name here.
+          const isBoolean = isSpecialBooleanAttr(key);
+          if (value == null || (isBoolean && !includeBooleanAttr(value))) {
+              el.removeAttribute(key);
+          }
+          else {
+              el.setAttribute(key, isBoolean ? '' : value);
+          }
+      }
+  }
+
+  // __UNSAFE__
+  // functions. The user is responsible for using them with only trusted content.
+  function patchDOMProp(el, key, value, 
+  // the following args are passed only due to potential innerHTML/textContent
+  // overriding existing VNodes, in which case the old tree must be properly
+  // unmounted.
+  prevChildren, parentComponent, parentSuspense, unmountChildren) {
+      if (key === 'innerHTML' || key === 'textContent') {
+          if (prevChildren) {
+              unmountChildren(prevChildren, parentComponent, parentSuspense);
+          }
+          el[key] = value == null ? '' : value;
+          return;
+      }
+      if (key === 'value' &&
+          el.tagName !== 'PROGRESS' &&
+          // custom elements may use _value internally
+          !el.tagName.includes('-')) {
+          // store value as _value as well since
+          // non-string values will be stringified.
+          el._value = value;
+          const newValue = value == null ? '' : value;
+          if (el.value !== newValue ||
+              // #4956: always set for OPTION elements because its value falls back to
+              // textContent if no value attribute is present. And setting .value for
+              // OPTION has no side effect
+              el.tagName === 'OPTION') {
+              el.value = newValue;
+          }
+          if (value == null) {
+              el.removeAttribute(key);
+          }
+          return;
+      }
+      let needRemove = false;
+      if (value === '' || value == null) {
+          const type = typeof el[key];
+          if (type === 'boolean') {
+              // e.g. <select multiple> compiles to { multiple: '' }
+              value = includeBooleanAttr(value);
+          }
+          else if (value == null && type === 'string') {
+              // e.g. <div :id="null">
+              value = '';
+              needRemove = true;
+          }
+          else if (type === 'number') {
+              // e.g. <img :width="null">
+              // the value of some IDL attr must be greater than 0, e.g. input.size = 0 -> error
+              value = 0;
+              needRemove = true;
+          }
+      }
+      // some properties perform value validation and throw,
+      // some properties has getter, no setter, will error in 'use strict'
+      // eg. <select :type="null"></select> <select :willValidate="null"></select>
+      try {
+          el[key] = value;
+      }
+      catch (e) {
+          {
+              warn$1(`Failed setting prop "${key}" on <${el.tagName.toLowerCase()}>: ` +
+                  `value ${value} is invalid.`, e);
+          }
+      }
+      needRemove && el.removeAttribute(key);
+  }
+
+  // Async edge case fix requires storing an event listener's attach timestamp.
+  const [_getNow, skipTimestampCheck] = /*#__PURE__*/ (() => {
+      let _getNow = Date.now;
+      let skipTimestampCheck = false;
+      if (typeof window !== 'undefined') {
+          // Determine what event timestamp the browser is using. Annoyingly, the
+          // timestamp can either be hi-res (relative to page load) or low-res
+          // (relative to UNIX epoch), so in order to compare time we have to use the
+          // same timestamp type when saving the flush timestamp.
+          if (Date.now() > document.createEvent('Event').timeStamp) {
+              // if the low-res timestamp which is bigger than the event timestamp
+              // (which is evaluated AFTER) it means the event is using a hi-res timestamp,
+              // and we need to use the hi-res version for event listeners as well.
+              _getNow = performance.now.bind(performance);
+          }
+          // #3485: Firefox <= 53 has incorrect Event.timeStamp implementation
+          // and does not fire microtasks in between event propagation, so safe to exclude.
+          const ffMatch = navigator.userAgent.match(/firefox\/(\d+)/i);
+          skipTimestampCheck = !!(ffMatch && Number(ffMatch[1]) <= 53);
+      }
+      return [_getNow, skipTimestampCheck];
+  })();
+  // To avoid the overhead of repeatedly calling performance.now(), we cache
+  // and use the same timestamp for all event listeners attached in the same tick.
+  let cachedNow = 0;
+  const p = /*#__PURE__*/ Promise.resolve();
+  const reset = () => {
+      cachedNow = 0;
+  };
+  const getNow = () => cachedNow || (p.then(reset), (cachedNow = _getNow()));
+  function addEventListener(el, event, handler, options) {
+      el.addEventListener(event, handler, options);
+  }
+  function removeEventListener(el, event, handler, options) {
+      el.removeEventListener(event, handler, options);
+  }
+  function patchEvent(el, rawName, prevValue, nextValue, instance = null) {
+      // vei = vue event invokers
+      const invokers = el._vei || (el._vei = {});
+      const existingInvoker = invokers[rawName];
+      if (nextValue && existingInvoker) {
+          // patch
+          existingInvoker.value = nextValue;
+      }
+      else {
+          const [name, options] = parseName(rawName);
+          if (nextValue) {
+              // add
+              const invoker = (invokers[rawName] = createInvoker(nextValue, instance));
+              addEventListener(el, name, invoker, options);
+          }
+          else if (existingInvoker) {
+              // remove
+              removeEventListener(el, name, existingInvoker, options);
+              invokers[rawName] = undefined;
+          }
+      }
+  }
+  const optionsModifierRE = /(?:Once|Passive|Capture)$/;
+  function parseName(name) {
+      let options;
+      if (optionsModifierRE.test(name)) {
+          options = {};
+          let m;
+          while ((m = name.match(optionsModifierRE))) {
+              name = name.slice(0, name.length - m[0].length);
+              options[m[0].toLowerCase()] = true;
+          }
+      }
+      return [hyphenate(name.slice(2)), options];
+  }
+  function createInvoker(initialValue, instance) {
+      const invoker = (e) => {
+          // async edge case #6566: inner click event triggers patch, event handler
+          // attached to outer element during patch, and triggered again. This
+          // happens because browsers fire microtask ticks between event propagation.
+          // the solution is simple: we save the timestamp when a handler is attached,
+          // and the handler would only fire if the event passed to it was fired
+          // AFTER it was attached.
+          const timeStamp = e.timeStamp || _getNow();
+          if (skipTimestampCheck || timeStamp >= invoker.attached - 1) {
+              callWithAsyncErrorHandling(patchStopImmediatePropagation(e, invoker.value), instance, 5 /* NATIVE_EVENT_HANDLER */, [e]);
+          }
+      };
+      invoker.value = initialValue;
+      invoker.attached = getNow();
+      return invoker;
+  }
+  function patchStopImmediatePropagation(e, value) {
+      if (isArray(value)) {
+          const originalStop = e.stopImmediatePropagation;
+          e.stopImmediatePropagation = () => {
+              originalStop.call(e);
+              e._stopped = true;
+          };
+          return value.map(fn => (e) => !e._stopped && fn && fn(e));
+      }
+      else {
+          return value;
+      }
+  }
+
+  const nativeOnRE = /^on[a-z]/;
+  const patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => {
+      if (key === 'class') {
+          patchClass(el, nextValue, isSVG);
+      }
+      else if (key === 'style') {
+          patchStyle(el, prevValue, nextValue);
+      }
+      else if (isOn(key)) {
+          // ignore v-model listeners
+          if (!isModelListener(key)) {
+              patchEvent(el, key, prevValue, nextValue, parentComponent);
+          }
+      }
+      else if (key[0] === '.'
+          ? ((key = key.slice(1)), true)
+          : key[0] === '^'
+              ? ((key = key.slice(1)), false)
+              : shouldSetAsProp(el, key, nextValue, isSVG)) {
+          patchDOMProp(el, key, nextValue, prevChildren, parentComponent, parentSuspense, unmountChildren);
+      }
+      else {
+          // special case for <input v-model type="checkbox"> with
+          // :true-value & :false-value
+          // store value as dom properties since non-string values will be
+          // stringified.
+          if (key === 'true-value') {
+              el._trueValue = nextValue;
+          }
+          else if (key === 'false-value') {
+              el._falseValue = nextValue;
+          }
+          patchAttr(el, key, nextValue, isSVG);
+      }
+  };
+  function shouldSetAsProp(el, key, value, isSVG) {
+      if (isSVG) {
+          // most keys must be set as attribute on svg elements to work
+          // ...except innerHTML & textContent
+          if (key === 'innerHTML' || key === 'textContent') {
+              return true;
+          }
+          // or native onclick with function values
+          if (key in el && nativeOnRE.test(key) && isFunction(value)) {
+              return true;
+          }
+          return false;
+      }
+      // these are enumerated attrs, however their corresponding DOM properties
+      // are actually booleans - this leads to setting it with a string "false"
+      // value leading it to be coerced to `true`, so we need to always treat
+      // them as attributes.
+      // Note that `contentEditable` doesn't have this problem: its DOM
+      // property is also enumerated string values.
+      if (key === 'spellcheck' || key === 'draggable' || key === 'translate') {
+          return false;
+      }
+      // #1787, #2840 form property on form elements is readonly and must be set as
+      // attribute.
+      if (key === 'form') {
+          return false;
+      }
+      // #1526 <input list> must be set as attribute
+      if (key === 'list' && el.tagName === 'INPUT') {
+          return false;
+      }
+      // #2766 <textarea type> must be set as attribute
+      if (key === 'type' && el.tagName === 'TEXTAREA') {
+          return false;
+      }
+      // native onclick with string value, must be set as attribute
+      if (nativeOnRE.test(key) && isString(value)) {
+          return false;
+      }
+      return key in el;
+  }
+
+  function defineCustomElement(options, hydrate) {
+      const Comp = defineComponent(options);
+      class VueCustomElement extends VueElement {
+          constructor(initialProps) {
+              super(Comp, initialProps, hydrate);
+          }
+      }
+      VueCustomElement.def = Comp;
+      return VueCustomElement;
+  }
+  const defineSSRCustomElement = ((options) => {
+      // @ts-ignore
+      return defineCustomElement(options, hydrate);
+  });
+  const BaseClass = (typeof HTMLElement !== 'undefined' ? HTMLElement : class {
+  });
+  class VueElement extends BaseClass {
+      constructor(_def, _props = {}, hydrate) {
+          super();
+          this._def = _def;
+          this._props = _props;
+          /**
+           * @internal
+           */
+          this._instance = null;
+          this._connected = false;
+          this._resolved = false;
+          this._numberProps = null;
+          if (this.shadowRoot && hydrate) {
+              hydrate(this._createVNode(), this.shadowRoot);
+          }
+          else {
+              if (this.shadowRoot) {
+                  warn$1(`Custom element has pre-rendered declarative shadow root but is not ` +
+                      `defined as hydratable. Use \`defineSSRCustomElement\`.`);
+              }
+              this.attachShadow({ mode: 'open' });
+          }
+      }
+      connectedCallback() {
+          this._connected = true;
+          if (!this._instance) {
+              this._resolveDef();
+          }
+      }
+      disconnectedCallback() {
+          this._connected = false;
+          nextTick(() => {
+              if (!this._connected) {
+                  render(null, this.shadowRoot);
+                  this._instance = null;
+              }
+          });
+      }
+      /**
+       * resolve inner component definition (handle possible async component)
+       */
+      _resolveDef() {
+          if (this._resolved) {
+              return;
+          }
+          this._resolved = true;
+          // set initial attrs
+          for (let i = 0; i < this.attributes.length; i++) {
+              this._setAttr(this.attributes[i].name);
+          }
+          // watch future attr changes
+          new MutationObserver(mutations => {
+              for (const m of mutations) {
+                  this._setAttr(m.attributeName);
+              }
+          }).observe(this, { attributes: true });
+          const resolve = (def) => {
+              const { props, styles } = def;
+              const hasOptions = !isArray(props);
+              const rawKeys = props ? (hasOptions ? Object.keys(props) : props) : [];
+              // cast Number-type props set before resolve
+              let numberProps;
+              if (hasOptions) {
+                  for (const key in this._props) {
+                      const opt = props[key];
+                      if (opt === Number || (opt && opt.type === Number)) {
+                          this._props[key] = toNumber(this._props[key]);
+                          (numberProps || (numberProps = Object.create(null)))[key] = true;
+                      }
+                  }
+              }
+              this._numberProps = numberProps;
+              // check if there are props set pre-upgrade or connect
+              for (const key of Object.keys(this)) {
+                  if (key[0] !== '_') {
+                      this._setProp(key, this[key], true, false);
+                  }
+              }
+              // defining getter/setters on prototype
+              for (const key of rawKeys.map(camelize)) {
+                  Object.defineProperty(this, key, {
+                      get() {
+                          return this._getProp(key);
+                      },
+                      set(val) {
+                          this._setProp(key, val);
+                      }
+                  });
+              }
+              // apply CSS
+              this._applyStyles(styles);
+              // initial render
+              this._update();
+          };
+          const asyncDef = this._def.__asyncLoader;
+          if (asyncDef) {
+              asyncDef().then(resolve);
+          }
+          else {
+              resolve(this._def);
+          }
+      }
+      _setAttr(key) {
+          let value = this.getAttribute(key);
+          if (this._numberProps && this._numberProps[key]) {
+              value = toNumber(value);
+          }
+          this._setProp(camelize(key), value, false);
+      }
+      /**
+       * @internal
+       */
+      _getProp(key) {
+          return this._props[key];
+      }
+      /**
+       * @internal
+       */
+      _setProp(key, val, shouldReflect = true, shouldUpdate = true) {
+          if (val !== this._props[key]) {
+              this._props[key] = val;
+              if (shouldUpdate && this._instance) {
+                  this._update();
+              }
+              // reflect
+              if (shouldReflect) {
+                  if (val === true) {
+                      this.setAttribute(hyphenate(key), '');
+                  }
+                  else if (typeof val === 'string' || typeof val === 'number') {
+                      this.setAttribute(hyphenate(key), val + '');
+                  }
+                  else if (!val) {
+                      this.removeAttribute(hyphenate(key));
+                  }
+              }
+          }
+      }
+      _update() {
+          render(this._createVNode(), this.shadowRoot);
+      }
+      _createVNode() {
+          const vnode = createVNode(this._def, extend({}, this._props));
+          if (!this._instance) {
+              vnode.ce = instance => {
+                  this._instance = instance;
+                  instance.isCE = true;
+                  // HMR
+                  {
+                      instance.ceReload = newStyles => {
+                          // always reset styles
+                          if (this._styles) {
+                              this._styles.forEach(s => this.shadowRoot.removeChild(s));
+                              this._styles.length = 0;
+                          }
+                          this._applyStyles(newStyles);
+                          // if this is an async component, ceReload is called from the inner
+                          // component so no need to reload the async wrapper
+                          if (!this._def.__asyncLoader) {
+                              // reload
+                              this._instance = null;
+                              this._update();
+                          }
+                      };
+                  }
+                  // intercept emit
+                  instance.emit = (event, ...args) => {
+                      this.dispatchEvent(new CustomEvent(event, {
+                          detail: args
+                      }));
+                  };
+                  // locate nearest Vue custom element parent for provide/inject
+                  let parent = this;
+                  while ((parent =
+                      parent && (parent.parentNode || parent.host))) {
+                      if (parent instanceof VueElement) {
+                          instance.parent = parent._instance;
+                          break;
+                      }
+                  }
+              };
+          }
+          return vnode;
+      }
+      _applyStyles(styles) {
+          if (styles) {
+              styles.forEach(css => {
+                  const s = document.createElement('style');
+                  s.textContent = css;
+                  this.shadowRoot.appendChild(s);
+                  // record for HMR
+                  {
+                      (this._styles || (this._styles = [])).push(s);
+                  }
+              });
+          }
+      }
+  }
+
+  function useCssModule(name = '$style') {
+      /* istanbul ignore else */
+      {
+          {
+              warn$1(`useCssModule() is not supported in the global build.`);
+          }
+          return EMPTY_OBJ;
+      }
+  }
+
+  /**
+   * Runtime helper for SFC's CSS variable injection feature.
+   * @private
+   */
+  function useCssVars(getter) {
+      const instance = getCurrentInstance();
+      /* istanbul ignore next */
+      if (!instance) {
+          warn$1(`useCssVars is called without current active component instance.`);
+          return;
+      }
+      const setVars = () => setVarsOnVNode(instance.subTree, getter(instance.proxy));
+      watchPostEffect(setVars);
+      onMounted(() => {
+          const ob = new MutationObserver(setVars);
+          ob.observe(instance.subTree.el.parentNode, { childList: true });
+          onUnmounted(() => ob.disconnect());
+      });
+  }
+  function setVarsOnVNode(vnode, vars) {
+      if (vnode.shapeFlag & 128 /* SUSPENSE */) {
+          const suspense = vnode.suspense;
+          vnode = suspense.activeBranch;
+          if (suspense.pendingBranch && !suspense.isHydrating) {
+              suspense.effects.push(() => {
+                  setVarsOnVNode(suspense.activeBranch, vars);
+              });
+          }
+      }
+      // drill down HOCs until it's a non-component vnode
+      while (vnode.component) {
+          vnode = vnode.component.subTree;
+      }
+      if (vnode.shapeFlag & 1 /* ELEMENT */ && vnode.el) {
+          setVarsOnNode(vnode.el, vars);
+      }
+      else if (vnode.type === Fragment) {
+          vnode.children.forEach(c => setVarsOnVNode(c, vars));
+      }
+      else if (vnode.type === Static) {
+          let { el, anchor } = vnode;
+          while (el) {
+              setVarsOnNode(el, vars);
+              if (el === anchor)
+                  break;
+              el = el.nextSibling;
+          }
+      }
+  }
+  function setVarsOnNode(el, vars) {
+      if (el.nodeType === 1) {
+          const style = el.style;
+          for (const key in vars) {
+              style.setProperty(`--${key}`, vars[key]);
+          }
+      }
+  }
+
+  const TRANSITION = 'transition';
+  const ANIMATION = 'animation';
+  // DOM Transition is a higher-order-component based on the platform-agnostic
+  // base Transition component, with DOM-specific logic.
+  const Transition = (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots);
+  Transition.displayName = 'Transition';
+  const DOMTransitionPropsValidators = {
+      name: String,
+      type: String,
+      css: {
+          type: Boolean,
+          default: true
+      },
+      duration: [String, Number, Object],
+      enterFromClass: String,
+      enterActiveClass: String,
+      enterToClass: String,
+      appearFromClass: String,
+      appearActiveClass: String,
+      appearToClass: String,
+      leaveFromClass: String,
+      leaveActiveClass: String,
+      leaveToClass: String
+  };
+  const TransitionPropsValidators = (Transition.props =
+      /*#__PURE__*/ extend({}, BaseTransition.props, DOMTransitionPropsValidators));
+  /**
+   * #3227 Incoming hooks may be merged into arrays when wrapping Transition
+   * with custom HOCs.
+   */
+  const callHook$1 = (hook, args = []) => {
+      if (isArray(hook)) {
+          hook.forEach(h => h(...args));
+      }
+      else if (hook) {
+          hook(...args);
+      }
+  };
+  /**
+   * Check if a hook expects a callback (2nd arg), which means the user
+   * intends to explicitly control the end of the transition.
+   */
+  const hasExplicitCallback = (hook) => {
+      return hook
+          ? isArray(hook)
+              ? hook.some(h => h.length > 1)
+              : hook.length > 1
+          : false;
+  };
+  function resolveTransitionProps(rawProps) {
+      const baseProps = {};
+      for (const key in rawProps) {
+          if (!(key in DOMTransitionPropsValidators)) {
+              baseProps[key] = rawProps[key];
+          }
+      }
+      if (rawProps.css === false) {
+          return baseProps;
+      }
+      const { name = 'v', type, duration, enterFromClass = `${name}-enter-from`, enterActiveClass = `${name}-enter-active`, enterToClass = `${name}-enter-to`, appearFromClass = enterFromClass, appearActiveClass = enterActiveClass, appearToClass = enterToClass, leaveFromClass = `${name}-leave-from`, leaveActiveClass = `${name}-leave-active`, leaveToClass = `${name}-leave-to` } = rawProps;
+      const durations = normalizeDuration(duration);
+      const enterDuration = durations && durations[0];
+      const leaveDuration = durations && durations[1];
+      const { onBeforeEnter, onEnter, onEnterCancelled, onLeave, onLeaveCancelled, onBeforeAppear = onBeforeEnter, onAppear = onEnter, onAppearCancelled = onEnterCancelled } = baseProps;
+      const finishEnter = (el, isAppear, done) => {
+          removeTransitionClass(el, isAppear ? appearToClass : enterToClass);
+          removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);
+          done && done();
+      };
+      const finishLeave = (el, done) => {
+          el._isLeaving = false;
+          removeTransitionClass(el, leaveFromClass);
+          removeTransitionClass(el, leaveToClass);
+          removeTransitionClass(el, leaveActiveClass);
+          done && done();
+      };
+      const makeEnterHook = (isAppear) => {
+          return (el, done) => {
+              const hook = isAppear ? onAppear : onEnter;
+              const resolve = () => finishEnter(el, isAppear, done);
+              callHook$1(hook, [el, resolve]);
+              nextFrame(() => {
+                  removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);
+                  addTransitionClass(el, isAppear ? appearToClass : enterToClass);
+                  if (!hasExplicitCallback(hook)) {
+                      whenTransitionEnds(el, type, enterDuration, resolve);
+                  }
+              });
+          };
+      };
+      return extend(baseProps, {
+          onBeforeEnter(el) {
+              callHook$1(onBeforeEnter, [el]);
+              addTransitionClass(el, enterFromClass);
+              addTransitionClass(el, enterActiveClass);
+          },
+          onBeforeAppear(el) {
+              callHook$1(onBeforeAppear, [el]);
+              addTransitionClass(el, appearFromClass);
+              addTransitionClass(el, appearActiveClass);
+          },
+          onEnter: makeEnterHook(false),
+          onAppear: makeEnterHook(true),
+          onLeave(el, done) {
+              el._isLeaving = true;
+              const resolve = () => finishLeave(el, done);
+              addTransitionClass(el, leaveFromClass);
+              // force reflow so *-leave-from classes immediately take effect (#2593)
+              forceReflow();
+              addTransitionClass(el, leaveActiveClass);
+              nextFrame(() => {
+                  if (!el._isLeaving) {
+                      // cancelled
+                      return;
+                  }
+                  removeTransitionClass(el, leaveFromClass);
+                  addTransitionClass(el, leaveToClass);
+                  if (!hasExplicitCallback(onLeave)) {
+                      whenTransitionEnds(el, type, leaveDuration, resolve);
+                  }
+              });
+              callHook$1(onLeave, [el, resolve]);
+          },
+          onEnterCancelled(el) {
+              finishEnter(el, false);
+              callHook$1(onEnterCancelled, [el]);
+          },
+          onAppearCancelled(el) {
+              finishEnter(el, true);
+              callHook$1(onAppearCancelled, [el]);
+          },
+          onLeaveCancelled(el) {
+              finishLeave(el);
+              callHook$1(onLeaveCancelled, [el]);
+          }
+      });
+  }
+  function normalizeDuration(duration) {
+      if (duration == null) {
+          return null;
+      }
+      else if (isObject(duration)) {
+          return [NumberOf(duration.enter), NumberOf(duration.leave)];
+      }
+      else {
+          const n = NumberOf(duration);
+          return [n, n];
+      }
+  }
+  function NumberOf(val) {
+      const res = toNumber(val);
+      validateDuration(res);
+      return res;
+  }
+  function validateDuration(val) {
+      if (typeof val !== 'number') {
+          warn$1(`<transition> explicit duration is not a valid number - ` +
+              `got ${JSON.stringify(val)}.`);
+      }
+      else if (isNaN(val)) {
+          warn$1(`<transition> explicit duration is NaN - ` +
+              'the duration expression might be incorrect.');
+      }
+  }
+  function addTransitionClass(el, cls) {
+      cls.split(/\s+/).forEach(c => c && el.classList.add(c));
+      (el._vtc ||
+          (el._vtc = new Set())).add(cls);
+  }
+  function removeTransitionClass(el, cls) {
+      cls.split(/\s+/).forEach(c => c && el.classList.remove(c));
+      const { _vtc } = el;
+      if (_vtc) {
+          _vtc.delete(cls);
+          if (!_vtc.size) {
+              el._vtc = undefined;
+          }
+      }
+  }
+  function nextFrame(cb) {
+      requestAnimationFrame(() => {
+          requestAnimationFrame(cb);
+      });
+  }
+  let endId = 0;
+  function whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {
+      const id = (el._endId = ++endId);
+      const resolveIfNotStale = () => {
+          if (id === el._endId) {
+              resolve();
+          }
+      };
+      if (explicitTimeout) {
+          return setTimeout(resolveIfNotStale, explicitTimeout);
+      }
+      const { type, timeout, propCount } = getTransitionInfo(el, expectedType);
+      if (!type) {
+          return resolve();
+      }
+      const endEvent = type + 'end';
+      let ended = 0;
+      const end = () => {
+          el.removeEventListener(endEvent, onEnd);
+          resolveIfNotStale();
+      };
+      const onEnd = (e) => {
+          if (e.target === el && ++ended >= propCount) {
+              end();
+          }
+      };
+      setTimeout(() => {
+          if (ended < propCount) {
+              end();
+          }
+      }, timeout + 1);
+      el.addEventListener(endEvent, onEnd);
+  }
+  function getTransitionInfo(el, expectedType) {
+      const styles = window.getComputedStyle(el);
+      // JSDOM may return undefined for transition properties
+      const getStyleProperties = (key) => (styles[key] || '').split(', ');
+      const transitionDelays = getStyleProperties(TRANSITION + 'Delay');
+      const transitionDurations = getStyleProperties(TRANSITION + 'Duration');
+      const transitionTimeout = getTimeout(transitionDelays, transitionDurations);
+      const animationDelays = getStyleProperties(ANIMATION + 'Delay');
+      const animationDurations = getStyleProperties(ANIMATION + 'Duration');
+      const animationTimeout = getTimeout(animationDelays, animationDurations);
+      let type = null;
+      let timeout = 0;
+      let propCount = 0;
+      /* istanbul ignore if */
+      if (expectedType === TRANSITION) {
+          if (transitionTimeout > 0) {
+              type = TRANSITION;
+              timeout = transitionTimeout;
+              propCount = transitionDurations.length;
+          }
+      }
+      else if (expectedType === ANIMATION) {
+          if (animationTimeout > 0) {
+              type = ANIMATION;
+              timeout = animationTimeout;
+              propCount = animationDurations.length;
+          }
+      }
+      else {
+          timeout = Math.max(transitionTimeout, animationTimeout);
+          type =
+              timeout > 0
+                  ? transitionTimeout > animationTimeout
+                      ? TRANSITION
+                      : ANIMATION
+                  : null;
+          propCount = type
+              ? type === TRANSITION
+                  ? transitionDurations.length
+                  : animationDurations.length
+              : 0;
+      }
+      const hasTransform = type === TRANSITION &&
+          /\b(transform|all)(,|$)/.test(styles[TRANSITION + 'Property']);
+      return {
+          type,
+          timeout,
+          propCount,
+          hasTransform
+      };
+  }
+  function getTimeout(delays, durations) {
+      while (delays.length < durations.length) {
+          delays = delays.concat(delays);
+      }
+      return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));
+  }
+  // Old versions of Chromium (below 61.0.3163.100) formats floating pointer
+  // numbers in a locale-dependent way, using a comma instead of a dot.
+  // If comma is not replaced with a dot, the input will be rounded down
+  // (i.e. acting as a floor function) causing unexpected behaviors
+  function toMs(s) {
+      return Number(s.slice(0, -1).replace(',', '.')) * 1000;
+  }
+  // synchronously force layout to put elements into a certain state
+  function forceReflow() {
+      return document.body.offsetHeight;
+  }
+
+  const positionMap = new WeakMap();
+  const newPositionMap = new WeakMap();
+  const TransitionGroupImpl = {
+      name: 'TransitionGroup',
+      props: /*#__PURE__*/ extend({}, TransitionPropsValidators, {
+          tag: String,
+          moveClass: String
+      }),
+      setup(props, { slots }) {
+          const instance = getCurrentInstance();
+          const state = useTransitionState();
+          let prevChildren;
+          let children;
+          onUpdated(() => {
+              // children is guaranteed to exist after initial render
+              if (!prevChildren.length) {
+                  return;
+              }
+              const moveClass = props.moveClass || `${props.name || 'v'}-move`;
+              if (!hasCSSTransform(prevChildren[0].el, instance.vnode.el, moveClass)) {
+                  return;
+              }
+              // we divide the work into three loops to avoid mixing DOM reads and writes
+              // in each iteration - which helps prevent layout thrashing.
+              prevChildren.forEach(callPendingCbs);
+              prevChildren.forEach(recordPosition);
+              const movedChildren = prevChildren.filter(applyTranslation);
+              // force reflow to put everything in position
+              forceReflow();
+              movedChildren.forEach(c => {
+                  const el = c.el;
+                  const style = el.style;
+                  addTransitionClass(el, moveClass);
+                  style.transform = style.webkitTransform = style.transitionDuration = '';
+                  const cb = (el._moveCb = (e) => {
+                      if (e && e.target !== el) {
+                          return;
+                      }
+                      if (!e || /transform$/.test(e.propertyName)) {
+                          el.removeEventListener('transitionend', cb);
+                          el._moveCb = null;
+                          removeTransitionClass(el, moveClass);
+                      }
+                  });
+                  el.addEventListener('transitionend', cb);
+              });
+          });
+          return () => {
+              const rawProps = toRaw(props);
+              const cssTransitionProps = resolveTransitionProps(rawProps);
+              let tag = rawProps.tag || Fragment;
+              prevChildren = children;
+              children = slots.default ? getTransitionRawChildren(slots.default()) : [];
+              for (let i = 0; i < children.length; i++) {
+                  const child = children[i];
+                  if (child.key != null) {
+                      setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
+                  }
+                  else {
+                      warn$1(`<TransitionGroup> children must be keyed.`);
+                  }
+              }
+              if (prevChildren) {
+                  for (let i = 0; i < prevChildren.length; i++) {
+                      const child = prevChildren[i];
+                      setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));
+                      positionMap.set(child, child.el.getBoundingClientRect());
+                  }
+              }
+              return createVNode(tag, null, children);
+          };
+      }
+  };
+  const TransitionGroup = TransitionGroupImpl;
+  function callPendingCbs(c) {
+      const el = c.el;
+      if (el._moveCb) {
+          el._moveCb();
+      }
+      if (el._enterCb) {
+          el._enterCb();
+      }
+  }
+  function recordPosition(c) {
+      newPositionMap.set(c, c.el.getBoundingClientRect());
+  }
+  function applyTranslation(c) {
+      const oldPos = positionMap.get(c);
+      const newPos = newPositionMap.get(c);
+      const dx = oldPos.left - newPos.left;
+      const dy = oldPos.top - newPos.top;
+      if (dx || dy) {
+          const s = c.el.style;
+          s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;
+          s.transitionDuration = '0s';
+          return c;
+      }
+  }
+  function hasCSSTransform(el, root, moveClass) {
+      // Detect whether an element with the move class applied has
+      // CSS transitions. Since the element may be inside an entering
+      // transition at this very moment, we make a clone of it and remove
+      // all other transition classes applied to ensure only the move class
+      // is applied.
+      const clone = el.cloneNode();
+      if (el._vtc) {
+          el._vtc.forEach(cls => {
+              cls.split(/\s+/).forEach(c => c && clone.classList.remove(c));
+          });
+      }
+      moveClass.split(/\s+/).forEach(c => c && clone.classList.add(c));
+      clone.style.display = 'none';
+      const container = (root.nodeType === 1 ? root : root.parentNode);
+      container.appendChild(clone);
+      const { hasTransform } = getTransitionInfo(clone);
+      container.removeChild(clone);
+      return hasTransform;
+  }
+
+  const getModelAssigner = (vnode) => {
+      const fn = vnode.props['onUpdate:modelValue'] ||
+          (false );
+      return isArray(fn) ? value => invokeArrayFns(fn, value) : fn;
+  };
+  function onCompositionStart(e) {
+      e.target.composing = true;
+  }
+  function onCompositionEnd(e) {
+      const target = e.target;
+      if (target.composing) {
+          target.composing = false;
+          target.dispatchEvent(new Event('input'));
+      }
+  }
+  // We are exporting the v-model runtime directly as vnode hooks so that it can
+  // be tree-shaken in case v-model is never used.
+  const vModelText = {
+      created(el, { modifiers: { lazy, trim, number } }, vnode) {
+          el._assign = getModelAssigner(vnode);
+          const castToNumber = number || (vnode.props && vnode.props.type === 'number');
+          addEventListener(el, lazy ? 'change' : 'input', e => {
+              if (e.target.composing)
+                  return;
+              let domValue = el.value;
+              if (trim) {
+                  domValue = domValue.trim();
+              }
+              if (castToNumber) {
+                  domValue = toNumber(domValue);
+              }
+              el._assign(domValue);
+          });
+          if (trim) {
+              addEventListener(el, 'change', () => {
+                  el.value = el.value.trim();
+              });
+          }
+          if (!lazy) {
+              addEventListener(el, 'compositionstart', onCompositionStart);
+              addEventListener(el, 'compositionend', onCompositionEnd);
+              // Safari < 10.2 & UIWebView doesn't fire compositionend when
+              // switching focus before confirming composition choice
+              // this also fixes the issue where some browsers e.g. iOS Chrome
+              // fires "change" instead of "input" on autocomplete.
+              addEventListener(el, 'change', onCompositionEnd);
+          }
+      },
+      // set value on mounted so it's after min/max for type="range"
+      mounted(el, { value }) {
+          el.value = value == null ? '' : value;
+      },
+      beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) {
+          el._assign = getModelAssigner(vnode);
+          // avoid clearing unresolved text. #2302
+          if (el.composing)
+              return;
+          if (document.activeElement === el && el.type !== 'range') {
+              if (lazy) {
+                  return;
+              }
+              if (trim && el.value.trim() === value) {
+                  return;
+              }
+              if ((number || el.type === 'number') && toNumber(el.value) === value) {
+                  return;
+              }
+          }
+          const newValue = value == null ? '' : value;
+          if (el.value !== newValue) {
+              el.value = newValue;
+          }
+      }
+  };
+  const vModelCheckbox = {
+      // #4096 array checkboxes need to be deep traversed
+      deep: true,
+      created(el, _, vnode) {
+          el._assign = getModelAssigner(vnode);
+          addEventListener(el, 'change', () => {
+              const modelValue = el._modelValue;
+              const elementValue = getValue(el);
+              const checked = el.checked;
+              const assign = el._assign;
+              if (isArray(modelValue)) {
+                  const index = looseIndexOf(modelValue, elementValue);
+                  const found = index !== -1;
+                  if (checked && !found) {
+                      assign(modelValue.concat(elementValue));
+                  }
+                  else if (!checked && found) {
+                      const filtered = [...modelValue];
+                      filtered.splice(index, 1);
+                      assign(filtered);
+                  }
+              }
+              else if (isSet(modelValue)) {
+                  const cloned = new Set(modelValue);
+                  if (checked) {
+                      cloned.add(elementValue);
+                  }
+                  else {
+                      cloned.delete(elementValue);
+                  }
+                  assign(cloned);
+              }
+              else {
+                  assign(getCheckboxValue(el, checked));
+              }
+          });
+      },
+      // set initial checked on mount to wait for true-value/false-value
+      mounted: setChecked,
+      beforeUpdate(el, binding, vnode) {
+          el._assign = getModelAssigner(vnode);
+          setChecked(el, binding, vnode);
+      }
+  };
+  function setChecked(el, { value, oldValue }, vnode) {
+      el._modelValue = value;
+      if (isArray(value)) {
+          el.checked = looseIndexOf(value, vnode.props.value) > -1;
+      }
+      else if (isSet(value)) {
+          el.checked = value.has(vnode.props.value);
+      }
+      else if (value !== oldValue) {
+          el.checked = looseEqual(value, getCheckboxValue(el, true));
+      }
+  }
+  const vModelRadio = {
+      created(el, { value }, vnode) {
+          el.checked = looseEqual(value, vnode.props.value);
+          el._assign = getModelAssigner(vnode);
+          addEventListener(el, 'change', () => {
+              el._assign(getValue(el));
+          });
+      },
+      beforeUpdate(el, { value, oldValue }, vnode) {
+          el._assign = getModelAssigner(vnode);
+          if (value !== oldValue) {
+              el.checked = looseEqual(value, vnode.props.value);
+          }
+      }
+  };
+  const vModelSelect = {
+      // <select multiple> value need to be deep traversed
+      deep: true,
+      created(el, { value, modifiers: { number } }, vnode) {
+          const isSetModel = isSet(value);
+          addEventListener(el, 'change', () => {
+              const selectedVal = Array.prototype.filter
+                  .call(el.options, (o) => o.selected)
+                  .map((o) => number ? toNumber(getValue(o)) : getValue(o));
+              el._assign(el.multiple
+                  ? isSetModel
+                      ? new Set(selectedVal)
+                      : selectedVal
+                  : selectedVal[0]);
+          });
+          el._assign = getModelAssigner(vnode);
+      },
+      // set value in mounted & updated because <select> relies on its children
+      // <option>s.
+      mounted(el, { value }) {
+          setSelected(el, value);
+      },
+      beforeUpdate(el, _binding, vnode) {
+          el._assign = getModelAssigner(vnode);
+      },
+      updated(el, { value }) {
+          setSelected(el, value);
+      }
+  };
+  function setSelected(el, value) {
+      const isMultiple = el.multiple;
+      if (isMultiple && !isArray(value) && !isSet(value)) {
+          warn$1(`<select multiple v-model> expects an Array or Set value for its binding, ` +
+                  `but got ${Object.prototype.toString.call(value).slice(8, -1)}.`);
+          return;
+      }
+      for (let i = 0, l = el.options.length; i < l; i++) {
+          const option = el.options[i];
+          const optionValue = getValue(option);
+          if (isMultiple) {
+              if (isArray(value)) {
+                  option.selected = looseIndexOf(value, optionValue) > -1;
+              }
+              else {
+                  option.selected = value.has(optionValue);
+              }
+          }
+          else {
+              if (looseEqual(getValue(option), value)) {
+                  if (el.selectedIndex !== i)
+                      el.selectedIndex = i;
+                  return;
+              }
+          }
+      }
+      if (!isMultiple && el.selectedIndex !== -1) {
+          el.selectedIndex = -1;
+      }
+  }
+  // retrieve raw value set via :value bindings
+  function getValue(el) {
+      return '_value' in el ? el._value : el.value;
+  }
+  // retrieve raw value for true-value and false-value set via :true-value or :false-value bindings
+  function getCheckboxValue(el, checked) {
+      const key = checked ? '_trueValue' : '_falseValue';
+      return key in el ? el[key] : checked;
+  }
+  const vModelDynamic = {
+      created(el, binding, vnode) {
+          callModelHook(el, binding, vnode, null, 'created');
+      },
+      mounted(el, binding, vnode) {
+          callModelHook(el, binding, vnode, null, 'mounted');
+      },
+      beforeUpdate(el, binding, vnode, prevVNode) {
+          callModelHook(el, binding, vnode, prevVNode, 'beforeUpdate');
+      },
+      updated(el, binding, vnode, prevVNode) {
+          callModelHook(el, binding, vnode, prevVNode, 'updated');
+      }
+  };
+  function resolveDynamicModel(tagName, type) {
+      switch (tagName) {
+          case 'SELECT':
+              return vModelSelect;
+          case 'TEXTAREA':
+              return vModelText;
+          default:
+              switch (type) {
+                  case 'checkbox':
+                      return vModelCheckbox;
+                  case 'radio':
+                      return vModelRadio;
+                  default:
+                      return vModelText;
+              }
+      }
+  }
+  function callModelHook(el, binding, vnode, prevVNode, hook) {
+      const modelToUse = resolveDynamicModel(el.tagName, vnode.props && vnode.props.type);
+      const fn = modelToUse[hook];
+      fn && fn(el, binding, vnode, prevVNode);
+  }
+
+  const systemModifiers = ['ctrl', 'shift', 'alt', 'meta'];
+  const modifierGuards = {
+      stop: e => e.stopPropagation(),
+      prevent: e => e.preventDefault(),
+      self: e => e.target !== e.currentTarget,
+      ctrl: e => !e.ctrlKey,
+      shift: e => !e.shiftKey,
+      alt: e => !e.altKey,
+      meta: e => !e.metaKey,
+      left: e => 'button' in e && e.button !== 0,
+      middle: e => 'button' in e && e.button !== 1,
+      right: e => 'button' in e && e.button !== 2,
+      exact: (e, modifiers) => systemModifiers.some(m => e[`${m}Key`] && !modifiers.includes(m))
+  };
+  /**
+   * @private
+   */
+  const withModifiers = (fn, modifiers) => {
+      return (event, ...args) => {
+          for (let i = 0; i < modifiers.length; i++) {
+              const guard = modifierGuards[modifiers[i]];
+              if (guard && guard(event, modifiers))
+                  return;
+          }
+          return fn(event, ...args);
+      };
+  };
+  // Kept for 2.x compat.
+  // Note: IE11 compat for `spacebar` and `del` is removed for now.
+  const keyNames = {
+      esc: 'escape',
+      space: ' ',
+      up: 'arrow-up',
+      left: 'arrow-left',
+      right: 'arrow-right',
+      down: 'arrow-down',
+      delete: 'backspace'
+  };
+  /**
+   * @private
+   */
+  const withKeys = (fn, modifiers) => {
+      return (event) => {
+          if (!('key' in event)) {
+              return;
+          }
+          const eventKey = hyphenate(event.key);
+          if (modifiers.some(k => k === eventKey || keyNames[k] === eventKey)) {
+              return fn(event);
+          }
+      };
+  };
+
+  const vShow = {
+      beforeMount(el, { value }, { transition }) {
+          el._vod = el.style.display === 'none' ? '' : el.style.display;
+          if (transition && value) {
+              transition.beforeEnter(el);
+          }
+          else {
+              setDisplay(el, value);
+          }
+      },
+      mounted(el, { value }, { transition }) {
+          if (transition && value) {
+              transition.enter(el);
+          }
+      },
+      updated(el, { value, oldValue }, { transition }) {
+          if (!value === !oldValue)
+              return;
+          if (transition) {
+              if (value) {
+                  transition.beforeEnter(el);
+                  setDisplay(el, true);
+                  transition.enter(el);
+              }
+              else {
+                  transition.leave(el, () => {
+                      setDisplay(el, false);
+                  });
+              }
+          }
+          else {
+              setDisplay(el, value);
+          }
+      },
+      beforeUnmount(el, { value }) {
+          setDisplay(el, value);
+      }
+  };
+  function setDisplay(el, value) {
+      el.style.display = value ? el._vod : 'none';
+  }
+
+  const rendererOptions = /*#__PURE__*/ extend({ patchProp }, nodeOps);
+  // lazy create the renderer - this makes core renderer logic tree-shakable
+  // in case the user only imports reactivity utilities from Vue.
+  let renderer;
+  let enabledHydration = false;
+  function ensureRenderer() {
+      return (renderer ||
+          (renderer = createRenderer(rendererOptions)));
+  }
+  function ensureHydrationRenderer() {
+      renderer = enabledHydration
+          ? renderer
+          : createHydrationRenderer(rendererOptions);
+      enabledHydration = true;
+      return renderer;
+  }
+  // use explicit type casts here to avoid import() calls in rolled-up d.ts
+  const render = ((...args) => {
+      ensureRenderer().render(...args);
+  });
+  const hydrate = ((...args) => {
+      ensureHydrationRenderer().hydrate(...args);
+  });
+  const createApp = ((...args) => {
+      const app = ensureRenderer().createApp(...args);
+      {
+          injectNativeTagCheck(app);
+          injectCompilerOptionsCheck(app);
+      }
+      const { mount } = app;
+      app.mount = (containerOrSelector) => {
+          const container = normalizeContainer(containerOrSelector);
+          if (!container)
+              return;
+          const component = app._component;
+          if (!isFunction(component) && !component.render && !component.template) {
+              // __UNSAFE__
+              // Reason: potential execution of JS expressions in in-DOM template.
+              // The user must make sure the in-DOM template is trusted. If it's
+              // rendered by the server, the template should not contain any user data.
+              component.template = container.innerHTML;
+          }
+          // clear content before mounting
+          container.innerHTML = '';
+          const proxy = mount(container, false, container instanceof SVGElement);
+          if (container instanceof Element) {
+              container.removeAttribute('v-cloak');
+              container.setAttribute('data-v-app', '');
+          }
+          return proxy;
+      };
+      return app;
+  });
+  const createSSRApp = ((...args) => {
+      const app = ensureHydrationRenderer().createApp(...args);
+      {
+          injectNativeTagCheck(app);
+          injectCompilerOptionsCheck(app);
+      }
+      const { mount } = app;
+      app.mount = (containerOrSelector) => {
+          const container = normalizeContainer(containerOrSelector);
+          if (container) {
+              return mount(container, true, container instanceof SVGElement);
+          }
+      };
+      return app;
+  });
+  function injectNativeTagCheck(app) {
+      // Inject `isNativeTag`
+      // this is used for component name validation (dev only)
+      Object.defineProperty(app.config, 'isNativeTag', {
+          value: (tag) => isHTMLTag(tag) || isSVGTag(tag),
+          writable: false
+      });
+  }
+  // dev only
+  function injectCompilerOptionsCheck(app) {
+      if (isRuntimeOnly()) {
+          const isCustomElement = app.config.isCustomElement;
+          Object.defineProperty(app.config, 'isCustomElement', {
+              get() {
+                  return isCustomElement;
+              },
+              set() {
+                  warn$1(`The \`isCustomElement\` config option is deprecated. Use ` +
+                      `\`compilerOptions.isCustomElement\` instead.`);
+              }
+          });
+          const compilerOptions = app.config.compilerOptions;
+          const msg = `The \`compilerOptions\` config option is only respected when using ` +
+              `a build of Vue.js that includes the runtime compiler (aka "full build"). ` +
+              `Since you are using the runtime-only build, \`compilerOptions\` ` +
+              `must be passed to \`@vue/compiler-dom\` in the build setup instead.\n` +
+              `- For vue-loader: pass it via vue-loader's \`compilerOptions\` loader option.\n` +
+              `- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader\n` +
+              `- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-dom`;
+          Object.defineProperty(app.config, 'compilerOptions', {
+              get() {
+                  warn$1(msg);
+                  return compilerOptions;
+              },
+              set() {
+                  warn$1(msg);
+              }
+          });
+      }
+  }
+  function normalizeContainer(container) {
+      if (isString(container)) {
+          const res = document.querySelector(container);
+          if (!res) {
+              warn$1(`Failed to mount app: mount target selector "${container}" returned null.`);
+          }
+          return res;
+      }
+      if (window.ShadowRoot &&
+          container instanceof window.ShadowRoot &&
+          container.mode === 'closed') {
+          warn$1(`mounting on a ShadowRoot with \`{mode: "closed"}\` may lead to unpredictable bugs`);
+      }
+      return container;
+  }
+  /**
+   * @internal
+   */
+  const initDirectivesForSSR = NOOP;
+
+  function initDev() {
+      {
+          {
+              console.info(`You are running a development build of Vue.\n` +
+                  `Make sure to use the production build (*.prod.js) when deploying for production.`);
+          }
+          initCustomFormatter();
+      }
+  }
+
+  function defaultOnError(error) {
+      throw error;
+  }
+  function defaultOnWarn(msg) {
+      console.warn(`[Vue warn] ${msg.message}`);
+  }
+  function createCompilerError(code, loc, messages, additionalMessage) {
+      const msg = (messages || errorMessages)[code] + (additionalMessage || ``)
+          ;
+      const error = new SyntaxError(String(msg));
+      error.code = code;
+      error.loc = loc;
+      return error;
+  }
+  const errorMessages = {
+      // parse errors
+      [0 /* ABRUPT_CLOSING_OF_EMPTY_COMMENT */]: 'Illegal comment.',
+      [1 /* CDATA_IN_HTML_CONTENT */]: 'CDATA section is allowed only in XML context.',
+      [2 /* DUPLICATE_ATTRIBUTE */]: 'Duplicate attribute.',
+      [3 /* END_TAG_WITH_ATTRIBUTES */]: 'End tag cannot have attributes.',
+      [4 /* END_TAG_WITH_TRAILING_SOLIDUS */]: "Illegal '/' in tags.",
+      [5 /* EOF_BEFORE_TAG_NAME */]: 'Unexpected EOF in tag.',
+      [6 /* EOF_IN_CDATA */]: 'Unexpected EOF in CDATA section.',
+      [7 /* EOF_IN_COMMENT */]: 'Unexpected EOF in comment.',
+      [8 /* EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT */]: 'Unexpected EOF in script.',
+      [9 /* EOF_IN_TAG */]: 'Unexpected EOF in tag.',
+      [10 /* INCORRECTLY_CLOSED_COMMENT */]: 'Incorrectly closed comment.',
+      [11 /* INCORRECTLY_OPENED_COMMENT */]: 'Incorrectly opened comment.',
+      [12 /* INVALID_FIRST_CHARACTER_OF_TAG_NAME */]: "Illegal tag name. Use '&lt;' to print '<'.",
+      [13 /* MISSING_ATTRIBUTE_VALUE */]: 'Attribute value was expected.',
+      [14 /* MISSING_END_TAG_NAME */]: 'End tag name was expected.',
+      [15 /* MISSING_WHITESPACE_BETWEEN_ATTRIBUTES */]: 'Whitespace was expected.',
+      [16 /* NESTED_COMMENT */]: "Unexpected '<!--' in comment.",
+      [17 /* UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME */]: 'Attribute name cannot contain U+0022 ("), U+0027 (\'), and U+003C (<).',
+      [18 /* UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE */]: 'Unquoted attribute value cannot contain U+0022 ("), U+0027 (\'), U+003C (<), U+003D (=), and U+0060 (`).',
+      [19 /* UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME */]: "Attribute name cannot start with '='.",
+      [21 /* UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME */]: "'<?' is allowed only in XML context.",
+      [20 /* UNEXPECTED_NULL_CHARACTER */]: `Unexpected null character.`,
+      [22 /* UNEXPECTED_SOLIDUS_IN_TAG */]: "Illegal '/' in tags.",
+      // Vue-specific parse errors
+      [23 /* X_INVALID_END_TAG */]: 'Invalid end tag.',
+      [24 /* X_MISSING_END_TAG */]: 'Element is missing end tag.',
+      [25 /* X_MISSING_INTERPOLATION_END */]: 'Interpolation end sign was not found.',
+      [27 /* X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END */]: 'End bracket for dynamic directive argument was not found. ' +
+          'Note that dynamic directive argument cannot contain spaces.',
+      [26 /* X_MISSING_DIRECTIVE_NAME */]: 'Legal directive name was expected.',
+      // transform errors
+      [28 /* X_V_IF_NO_EXPRESSION */]: `v-if/v-else-if is missing expression.`,
+      [29 /* X_V_IF_SAME_KEY */]: `v-if/else branches must use unique keys.`,
+      [30 /* X_V_ELSE_NO_ADJACENT_IF */]: `v-else/v-else-if has no adjacent v-if or v-else-if.`,
+      [31 /* X_V_FOR_NO_EXPRESSION */]: `v-for is missing expression.`,
+      [32 /* X_V_FOR_MALFORMED_EXPRESSION */]: `v-for has invalid expression.`,
+      [33 /* X_V_FOR_TEMPLATE_KEY_PLACEMENT */]: `<template v-for> key should be placed on the <template> tag.`,
+      [34 /* X_V_BIND_NO_EXPRESSION */]: `v-bind is missing expression.`,
+      [35 /* X_V_ON_NO_EXPRESSION */]: `v-on is missing expression.`,
+      [36 /* X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET */]: `Unexpected custom directive on <slot> outlet.`,
+      [37 /* X_V_SLOT_MIXED_SLOT_USAGE */]: `Mixed v-slot usage on both the component and nested <template>.` +
+          `When there are multiple named slots, all slots should use <template> ` +
+          `syntax to avoid scope ambiguity.`,
+      [38 /* X_V_SLOT_DUPLICATE_SLOT_NAMES */]: `Duplicate slot names found. `,
+      [39 /* X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN */]: `Extraneous children found when component already has explicitly named ` +
+          `default slot. These children will be ignored.`,
+      [40 /* X_V_SLOT_MISPLACED */]: `v-slot can only be used on components or <template> tags.`,
+      [41 /* X_V_MODEL_NO_EXPRESSION */]: `v-model is missing expression.`,
+      [42 /* X_V_MODEL_MALFORMED_EXPRESSION */]: `v-model value must be a valid JavaScript member expression.`,
+      [43 /* X_V_MODEL_ON_SCOPE_VARIABLE */]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`,
+      [44 /* X_INVALID_EXPRESSION */]: `Error parsing JavaScript expression: `,
+      [45 /* X_KEEP_ALIVE_INVALID_CHILDREN */]: `<KeepAlive> expects exactly one child component.`,
+      // generic errors
+      [46 /* X_PREFIX_ID_NOT_SUPPORTED */]: `"prefixIdentifiers" option is not supported in this build of compiler.`,
+      [47 /* X_MODULE_MODE_NOT_SUPPORTED */]: `ES module mode is not supported in this build of compiler.`,
+      [48 /* X_CACHE_HANDLER_NOT_SUPPORTED */]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`,
+      [49 /* X_SCOPE_ID_NOT_SUPPORTED */]: `"scopeId" option is only supported in module mode.`,
+      // just to fulfill types
+      [50 /* __EXTEND_POINT__ */]: ``
+  };
+
+  const FRAGMENT = Symbol(`Fragment` );
+  const TELEPORT = Symbol(`Teleport` );
+  const SUSPENSE = Symbol(`Suspense` );
+  const KEEP_ALIVE = Symbol(`KeepAlive` );
+  const BASE_TRANSITION = Symbol(`BaseTransition` );
+  const OPEN_BLOCK = Symbol(`openBlock` );
+  const CREATE_BLOCK = Symbol(`createBlock` );
+  const CREATE_ELEMENT_BLOCK = Symbol(`createElementBlock` );
+  const CREATE_VNODE = Symbol(`createVNode` );
+  const CREATE_ELEMENT_VNODE = Symbol(`createElementVNode` );
+  const CREATE_COMMENT = Symbol(`createCommentVNode` );
+  const CREATE_TEXT = Symbol(`createTextVNode` );
+  const CREATE_STATIC = Symbol(`createStaticVNode` );
+  const RESOLVE_COMPONENT = Symbol(`resolveComponent` );
+  const RESOLVE_DYNAMIC_COMPONENT = Symbol(`resolveDynamicComponent` );
+  const RESOLVE_DIRECTIVE = Symbol(`resolveDirective` );
+  const RESOLVE_FILTER = Symbol(`resolveFilter` );
+  const WITH_DIRECTIVES = Symbol(`withDirectives` );
+  const RENDER_LIST = Symbol(`renderList` );
+  const RENDER_SLOT = Symbol(`renderSlot` );
+  const CREATE_SLOTS = Symbol(`createSlots` );
+  const TO_DISPLAY_STRING = Symbol(`toDisplayString` );
+  const MERGE_PROPS = Symbol(`mergeProps` );
+  const NORMALIZE_CLASS = Symbol(`normalizeClass` );
+  const NORMALIZE_STYLE = Symbol(`normalizeStyle` );
+  const NORMALIZE_PROPS = Symbol(`normalizeProps` );
+  const GUARD_REACTIVE_PROPS = Symbol(`guardReactiveProps` );
+  const TO_HANDLERS = Symbol(`toHandlers` );
+  const CAMELIZE = Symbol(`camelize` );
+  const CAPITALIZE = Symbol(`capitalize` );
+  const TO_HANDLER_KEY = Symbol(`toHandlerKey` );
+  const SET_BLOCK_TRACKING = Symbol(`setBlockTracking` );
+  const PUSH_SCOPE_ID = Symbol(`pushScopeId` );
+  const POP_SCOPE_ID = Symbol(`popScopeId` );
+  const WITH_CTX = Symbol(`withCtx` );
+  const UNREF = Symbol(`unref` );
+  const IS_REF = Symbol(`isRef` );
+  const WITH_MEMO = Symbol(`withMemo` );
+  const IS_MEMO_SAME = Symbol(`isMemoSame` );
+  // Name mapping for runtime helpers that need to be imported from 'vue' in
+  // generated code. Make sure these are correctly exported in the runtime!
+  // Using `any` here because TS doesn't allow symbols as index type.
+  const helperNameMap = {
+      [FRAGMENT]: `Fragment`,
+      [TELEPORT]: `Teleport`,
+      [SUSPENSE]: `Suspense`,
+      [KEEP_ALIVE]: `KeepAlive`,
+      [BASE_TRANSITION]: `BaseTransition`,
+      [OPEN_BLOCK]: `openBlock`,
+      [CREATE_BLOCK]: `createBlock`,
+      [CREATE_ELEMENT_BLOCK]: `createElementBlock`,
+      [CREATE_VNODE]: `createVNode`,
+      [CREATE_ELEMENT_VNODE]: `createElementVNode`,
+      [CREATE_COMMENT]: `createCommentVNode`,
+      [CREATE_TEXT]: `createTextVNode`,
+      [CREATE_STATIC]: `createStaticVNode`,
+      [RESOLVE_COMPONENT]: `resolveComponent`,
+      [RESOLVE_DYNAMIC_COMPONENT]: `resolveDynamicComponent`,
+      [RESOLVE_DIRECTIVE]: `resolveDirective`,
+      [RESOLVE_FILTER]: `resolveFilter`,
+      [WITH_DIRECTIVES]: `withDirectives`,
+      [RENDER_LIST]: `renderList`,
+      [RENDER_SLOT]: `renderSlot`,
+      [CREATE_SLOTS]: `createSlots`,
+      [TO_DISPLAY_STRING]: `toDisplayString`,
+      [MERGE_PROPS]: `mergeProps`,
+      [NORMALIZE_CLASS]: `normalizeClass`,
+      [NORMALIZE_STYLE]: `normalizeStyle`,
+      [NORMALIZE_PROPS]: `normalizeProps`,
+      [GUARD_REACTIVE_PROPS]: `guardReactiveProps`,
+      [TO_HANDLERS]: `toHandlers`,
+      [CAMELIZE]: `camelize`,
+      [CAPITALIZE]: `capitalize`,
+      [TO_HANDLER_KEY]: `toHandlerKey`,
+      [SET_BLOCK_TRACKING]: `setBlockTracking`,
+      [PUSH_SCOPE_ID]: `pushScopeId`,
+      [POP_SCOPE_ID]: `popScopeId`,
+      [WITH_CTX]: `withCtx`,
+      [UNREF]: `unref`,
+      [IS_REF]: `isRef`,
+      [WITH_MEMO]: `withMemo`,
+      [IS_MEMO_SAME]: `isMemoSame`
+  };
+  function registerRuntimeHelpers(helpers) {
+      Object.getOwnPropertySymbols(helpers).forEach(s => {
+          helperNameMap[s] = helpers[s];
+      });
+  }
+
+  // AST Utilities ---------------------------------------------------------------
+  // Some expressions, e.g. sequence and conditional expressions, are never
+  // associated with template nodes, so their source locations are just a stub.
+  // Container types like CompoundExpression also don't need a real location.
+  const locStub = {
+      source: '',
+      start: { line: 1, column: 1, offset: 0 },
+      end: { line: 1, column: 1, offset: 0 }
+  };
+  function createRoot(children, loc = locStub) {
+      return {
+          type: 0 /* ROOT */,
+          children,
+          helpers: [],
+          components: [],
+          directives: [],
+          hoists: [],
+          imports: [],
+          cached: 0,
+          temps: 0,
+          codegenNode: undefined,
+          loc
+      };
+  }
+  function createVNodeCall(context, tag, props, children, patchFlag, dynamicProps, directives, isBlock = false, disableTracking = false, isComponent = false, loc = locStub) {
+      if (context) {
+          if (isBlock) {
+              context.helper(OPEN_BLOCK);
+              context.helper(getVNodeBlockHelper(context.inSSR, isComponent));
+          }
+          else {
+              context.helper(getVNodeHelper(context.inSSR, isComponent));
+          }
+          if (directives) {
+              context.helper(WITH_DIRECTIVES);
+          }
+      }
+      return {
+          type: 13 /* VNODE_CALL */,
+          tag,
+          props,
+          children,
+          patchFlag,
+          dynamicProps,
+          directives,
+          isBlock,
+          disableTracking,
+          isComponent,
+          loc
+      };
+  }
+  function createArrayExpression(elements, loc = locStub) {
+      return {
+          type: 17 /* JS_ARRAY_EXPRESSION */,
+          loc,
+          elements
+      };
+  }
+  function createObjectExpression(properties, loc = locStub) {
+      return {
+          type: 15 /* JS_OBJECT_EXPRESSION */,
+          loc,
+          properties
+      };
+  }
+  function createObjectProperty(key, value) {
+      return {
+          type: 16 /* JS_PROPERTY */,
+          loc: locStub,
+          key: isString(key) ? createSimpleExpression(key, true) : key,
+          value
+      };
+  }
+  function createSimpleExpression(content, isStatic = false, loc = locStub, constType = 0 /* NOT_CONSTANT */) {
+      return {
+          type: 4 /* SIMPLE_EXPRESSION */,
+          loc,
+          content,
+          isStatic,
+          constType: isStatic ? 3 /* CAN_STRINGIFY */ : constType
+      };
+  }
+  function createCompoundExpression(children, loc = locStub) {
+      return {
+          type: 8 /* COMPOUND_EXPRESSION */,
+          loc,
+          children
+      };
+  }
+  function createCallExpression(callee, args = [], loc = locStub) {
+      return {
+          type: 14 /* JS_CALL_EXPRESSION */,
+          loc,
+          callee,
+          arguments: args
+      };
+  }
+  function createFunctionExpression(params, returns = undefined, newline = false, isSlot = false, loc = locStub) {
+      return {
+          type: 18 /* JS_FUNCTION_EXPRESSION */,
+          params,
+          returns,
+          newline,
+          isSlot,
+          loc
+      };
+  }
+  function createConditionalExpression(test, consequent, alternate, newline = true) {
+      return {
+          type: 19 /* JS_CONDITIONAL_EXPRESSION */,
+          test,
+          consequent,
+          alternate,
+          newline,
+          loc: locStub
+      };
+  }
+  function createCacheExpression(index, value, isVNode = false) {
+      return {
+          type: 20 /* JS_CACHE_EXPRESSION */,
+          index,
+          value,
+          isVNode,
+          loc: locStub
+      };
+  }
+  function createBlockStatement(body) {
+      return {
+          type: 21 /* JS_BLOCK_STATEMENT */,
+          body,
+          loc: locStub
+      };
+  }
+
+  const isStaticExp = (p) => p.type === 4 /* SIMPLE_EXPRESSION */ && p.isStatic;
+  const isBuiltInType = (tag, expected) => tag === expected || tag === hyphenate(expected);
+  function isCoreComponent(tag) {
+      if (isBuiltInType(tag, 'Teleport')) {
+          return TELEPORT;
+      }
+      else if (isBuiltInType(tag, 'Suspense')) {
+          return SUSPENSE;
+      }
+      else if (isBuiltInType(tag, 'KeepAlive')) {
+          return KEEP_ALIVE;
+      }
+      else if (isBuiltInType(tag, 'BaseTransition')) {
+          return BASE_TRANSITION;
+      }
+  }
+  const nonIdentifierRE = /^\d|[^\$\w]/;
+  const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name);
+  const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/;
+  const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/;
+  const whitespaceRE = /\s+[.[]\s*|\s*[.[]\s+/g;
+  /**
+   * Simple lexer to check if an expression is a member expression. This is
+   * lax and only checks validity at the root level (i.e. does not validate exps
+   * inside square brackets), but it's ok since these are only used on template
+   * expressions and false positives are invalid expressions in the first place.
+   */
+  const isMemberExpressionBrowser = (path) => {
+      // remove whitespaces around . or [ first
+      path = path.trim().replace(whitespaceRE, s => s.trim());
+      let state = 0 /* inMemberExp */;
+      let stateStack = [];
+      let currentOpenBracketCount = 0;
+      let currentOpenParensCount = 0;
+      let currentStringType = null;
+      for (let i = 0; i < path.length; i++) {
+          const char = path.charAt(i);
+          switch (state) {
+              case 0 /* inMemberExp */:
+                  if (char === '[') {
+                      stateStack.push(state);
+                      state = 1 /* inBrackets */;
+                      currentOpenBracketCount++;
+                  }
+                  else if (char === '(') {
+                      stateStack.push(state);
+                      state = 2 /* inParens */;
+                      currentOpenParensCount++;
+                  }
+                  else if (!(i === 0 ? validFirstIdentCharRE : validIdentCharRE).test(char)) {
+                      return false;
+                  }
+                  break;
+              case 1 /* inBrackets */:
+                  if (char === `'` || char === `"` || char === '`') {
+                      stateStack.push(state);
+                      state = 3 /* inString */;
+                      currentStringType = char;
+                  }
+                  else if (char === `[`) {
+                      currentOpenBracketCount++;
+                  }
+                  else if (char === `]`) {
+                      if (!--currentOpenBracketCount) {
+                          state = stateStack.pop();
+                      }
+                  }
+                  break;
+              case 2 /* inParens */:
+                  if (char === `'` || char === `"` || char === '`') {
+                      stateStack.push(state);
+                      state = 3 /* inString */;
+                      currentStringType = char;
+                  }
+                  else if (char === `(`) {
+                      currentOpenParensCount++;
+                  }
+                  else if (char === `)`) {
+                      // if the exp ends as a call then it should not be considered valid
+                      if (i === path.length - 1) {
+                          return false;
+                      }
+                      if (!--currentOpenParensCount) {
+                          state = stateStack.pop();
+                      }
+                  }
+                  break;
+              case 3 /* inString */:
+                  if (char === currentStringType) {
+                      state = stateStack.pop();
+                      currentStringType = null;
+                  }
+                  break;
+          }
+      }
+      return !currentOpenBracketCount && !currentOpenParensCount;
+  };
+  const isMemberExpression = isMemberExpressionBrowser
+      ;
+  function getInnerRange(loc, offset, length) {
+      const source = loc.source.slice(offset, offset + length);
+      const newLoc = {
+          source,
+          start: advancePositionWithClone(loc.start, loc.source, offset),
+          end: loc.end
+      };
+      if (length != null) {
+          newLoc.end = advancePositionWithClone(loc.start, loc.source, offset + length);
+      }
+      return newLoc;
+  }
+  function advancePositionWithClone(pos, source, numberOfCharacters = source.length) {
+      return advancePositionWithMutation(extend({}, pos), source, numberOfCharacters);
+  }
+  // advance by mutation without cloning (for performance reasons), since this
+  // gets called a lot in the parser
+  function advancePositionWithMutation(pos, source, numberOfCharacters = source.length) {
+      let linesCount = 0;
+      let lastNewLinePos = -1;
+      for (let i = 0; i < numberOfCharacters; i++) {
+          if (source.charCodeAt(i) === 10 /* newline char code */) {
+              linesCount++;
+              lastNewLinePos = i;
+          }
+      }
+      pos.offset += numberOfCharacters;
+      pos.line += linesCount;
+      pos.column =
+          lastNewLinePos === -1
+              ? pos.column + numberOfCharacters
+              : numberOfCharacters - lastNewLinePos;
+      return pos;
+  }
+  function assert(condition, msg) {
+      /* istanbul ignore if */
+      if (!condition) {
+          throw new Error(msg || `unexpected compiler condition`);
+      }
+  }
+  function findDir(node, name, allowEmpty = false) {
+      for (let i = 0; i < node.props.length; i++) {
+          const p = node.props[i];
+          if (p.type === 7 /* DIRECTIVE */ &&
+              (allowEmpty || p.exp) &&
+              (isString(name) ? p.name === name : name.test(p.name))) {
+              return p;
+          }
+      }
+  }
+  function findProp(node, name, dynamicOnly = false, allowEmpty = false) {
+      for (let i = 0; i < node.props.length; i++) {
+          const p = node.props[i];
+          if (p.type === 6 /* ATTRIBUTE */) {
+              if (dynamicOnly)
+                  continue;
+              if (p.name === name && (p.value || allowEmpty)) {
+                  return p;
+              }
+          }
+          else if (p.name === 'bind' &&
+              (p.exp || allowEmpty) &&
+              isStaticArgOf(p.arg, name)) {
+              return p;
+          }
+      }
+  }
+  function isStaticArgOf(arg, name) {
+      return !!(arg && isStaticExp(arg) && arg.content === name);
+  }
+  function hasDynamicKeyVBind(node) {
+      return node.props.some(p => p.type === 7 /* DIRECTIVE */ &&
+          p.name === 'bind' &&
+          (!p.arg || // v-bind="obj"
+              p.arg.type !== 4 /* SIMPLE_EXPRESSION */ || // v-bind:[_ctx.foo]
+              !p.arg.isStatic) // v-bind:[foo]
+      );
+  }
+  function isText(node) {
+      return node.type === 5 /* INTERPOLATION */ || node.type === 2 /* TEXT */;
+  }
+  function isVSlot(p) {
+      return p.type === 7 /* DIRECTIVE */ && p.name === 'slot';
+  }
+  function isTemplateNode(node) {
+      return (node.type === 1 /* ELEMENT */ && node.tagType === 3 /* TEMPLATE */);
+  }
+  function isSlotOutlet(node) {
+      return node.type === 1 /* ELEMENT */ && node.tagType === 2 /* SLOT */;
+  }
+  function getVNodeHelper(ssr, isComponent) {
+      return ssr || isComponent ? CREATE_VNODE : CREATE_ELEMENT_VNODE;
+  }
+  function getVNodeBlockHelper(ssr, isComponent) {
+      return ssr || isComponent ? CREATE_BLOCK : CREATE_ELEMENT_BLOCK;
+  }
+  const propsHelperSet = new Set([NORMALIZE_PROPS, GUARD_REACTIVE_PROPS]);
+  function getUnnormalizedProps(props, callPath = []) {
+      if (props &&
+          !isString(props) &&
+          props.type === 14 /* JS_CALL_EXPRESSION */) {
+          const callee = props.callee;
+          if (!isString(callee) && propsHelperSet.has(callee)) {
+              return getUnnormalizedProps(props.arguments[0], callPath.concat(props));
+          }
+      }
+      return [props, callPath];
+  }
+  function injectProp(node, prop, context) {
+      let propsWithInjection;
+      /**
+       * 1. mergeProps(...)
+       * 2. toHandlers(...)
+       * 3. normalizeProps(...)
+       * 4. normalizeProps(guardReactiveProps(...))
+       *
+       * we need to get the real props before normalization
+       */
+      let props = node.type === 13 /* VNODE_CALL */ ? node.props : node.arguments[2];
+      let callPath = [];
+      let parentCall;
+      if (props &&
+          !isString(props) &&
+          props.type === 14 /* JS_CALL_EXPRESSION */) {
+          const ret = getUnnormalizedProps(props);
+          props = ret[0];
+          callPath = ret[1];
+          parentCall = callPath[callPath.length - 1];
+      }
+      if (props == null || isString(props)) {
+          propsWithInjection = createObjectExpression([prop]);
+      }
+      else if (props.type === 14 /* JS_CALL_EXPRESSION */) {
+          // merged props... add ours
+          // only inject key to object literal if it's the first argument so that
+          // if doesn't override user provided keys
+          const first = props.arguments[0];
+          if (!isString(first) && first.type === 15 /* JS_OBJECT_EXPRESSION */) {
+              first.properties.unshift(prop);
+          }
+          else {
+              if (props.callee === TO_HANDLERS) {
+                  // #2366
+                  propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [
+                      createObjectExpression([prop]),
+                      props
+                  ]);
+              }
+              else {
+                  props.arguments.unshift(createObjectExpression([prop]));
+              }
+          }
+          !propsWithInjection && (propsWithInjection = props);
+      }
+      else if (props.type === 15 /* JS_OBJECT_EXPRESSION */) {
+          let alreadyExists = false;
+          // check existing key to avoid overriding user provided keys
+          if (prop.key.type === 4 /* SIMPLE_EXPRESSION */) {
+              const propKeyName = prop.key.content;
+              alreadyExists = props.properties.some(p => p.key.type === 4 /* SIMPLE_EXPRESSION */ &&
+                  p.key.content === propKeyName);
+          }
+          if (!alreadyExists) {
+              props.properties.unshift(prop);
+          }
+          propsWithInjection = props;
+      }
+      else {
+          // single v-bind with expression, return a merged replacement
+          propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [
+              createObjectExpression([prop]),
+              props
+          ]);
+          // in the case of nested helper call, e.g. `normalizeProps(guardReactiveProps(props))`,
+          // it will be rewritten as `normalizeProps(mergeProps({ key: 0 }, props))`,
+          // the `guardReactiveProps` will no longer be needed
+          if (parentCall && parentCall.callee === GUARD_REACTIVE_PROPS) {
+              parentCall = callPath[callPath.length - 2];
+          }
+      }
+      if (node.type === 13 /* VNODE_CALL */) {
+          if (parentCall) {
+              parentCall.arguments[0] = propsWithInjection;
+          }
+          else {
+              node.props = propsWithInjection;
+          }
+      }
+      else {
+          if (parentCall) {
+              parentCall.arguments[0] = propsWithInjection;
+          }
+          else {
+              node.arguments[2] = propsWithInjection;
+          }
+      }
+  }
+  function toValidAssetId(name, type) {
+      // see issue#4422, we need adding identifier on validAssetId if variable `name` has specific character
+      return `_${type}_${name.replace(/[^\w]/g, (searchValue, replaceValue) => {
+        return searchValue === '-' ? '_' : name.charCodeAt(replaceValue).toString();
+    })}`;
+  }
+  function getMemoedVNodeCall(node) {
+      if (node.type === 14 /* JS_CALL_EXPRESSION */ && node.callee === WITH_MEMO) {
+          return node.arguments[1].returns;
+      }
+      else {
+          return node;
+      }
+  }
+  function makeBlock(node, { helper, removeHelper, inSSR }) {
+      if (!node.isBlock) {
+          node.isBlock = true;
+          removeHelper(getVNodeHelper(inSSR, node.isComponent));
+          helper(OPEN_BLOCK);
+          helper(getVNodeBlockHelper(inSSR, node.isComponent));
+      }
+  }
+
+  const deprecationData = {
+      ["COMPILER_IS_ON_ELEMENT" /* COMPILER_IS_ON_ELEMENT */]: {
+          message: `Platform-native elements with "is" prop will no longer be ` +
+              `treated as components in Vue 3 unless the "is" value is explicitly ` +
+              `prefixed with "vue:".`,
+          link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html`
+      },
+      ["COMPILER_V_BIND_SYNC" /* COMPILER_V_BIND_SYNC */]: {
+          message: key => `.sync modifier for v-bind has been removed. Use v-model with ` +
+              `argument instead. \`v-bind:${key}.sync\` should be changed to ` +
+              `\`v-model:${key}\`.`,
+          link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html`
+      },
+      ["COMPILER_V_BIND_PROP" /* COMPILER_V_BIND_PROP */]: {
+          message: `.prop modifier for v-bind has been removed and no longer necessary. ` +
+              `Vue 3 will automatically set a binding as DOM property when appropriate.`
+      },
+      ["COMPILER_V_BIND_OBJECT_ORDER" /* COMPILER_V_BIND_OBJECT_ORDER */]: {
+          message: `v-bind="obj" usage is now order sensitive and behaves like JavaScript ` +
+              `object spread: it will now overwrite an existing non-mergeable attribute ` +
+              `that appears before v-bind in the case of conflict. ` +
+              `To retain 2.x behavior, move v-bind to make it the first attribute. ` +
+              `You can also suppress this warning if the usage is intended.`,
+          link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html`
+      },
+      ["COMPILER_V_ON_NATIVE" /* COMPILER_V_ON_NATIVE */]: {
+          message: `.native modifier for v-on has been removed as is no longer necessary.`,
+          link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html`
+      },
+      ["COMPILER_V_IF_V_FOR_PRECEDENCE" /* COMPILER_V_IF_V_FOR_PRECEDENCE */]: {
+          message: `v-if / v-for precedence when used on the same element has changed ` +
+              `in Vue 3: v-if now takes higher precedence and will no longer have ` +
+              `access to v-for scope variables. It is best to avoid the ambiguity ` +
+              `with <template> tags or use a computed property that filters v-for ` +
+              `data source.`,
+          link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html`
+      },
+      ["COMPILER_NATIVE_TEMPLATE" /* COMPILER_NATIVE_TEMPLATE */]: {
+          message: `<template> with no special directives will render as a native template ` +
+              `element instead of its inner content in Vue 3.`
+      },
+      ["COMPILER_INLINE_TEMPLATE" /* COMPILER_INLINE_TEMPLATE */]: {
+          message: `"inline-template" has been removed in Vue 3.`,
+          link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html`
+      },
+      ["COMPILER_FILTER" /* COMPILER_FILTERS */]: {
+          message: `filters have been removed in Vue 3. ` +
+              `The "|" symbol will be treated as native JavaScript bitwise OR operator. ` +
+              `Use method calls or computed properties instead.`,
+          link: `https://v3-migration.vuejs.org/breaking-changes/filters.html`
+      }
+  };
+  function getCompatValue(key, context) {
+      const config = context.options
+          ? context.options.compatConfig
+          : context.compatConfig;
+      const value = config && config[key];
+      if (key === 'MODE') {
+          return value || 3; // compiler defaults to v3 behavior
+      }
+      else {
+          return value;
+      }
+  }
+  function isCompatEnabled(key, context) {
+      const mode = getCompatValue('MODE', context);
+      const value = getCompatValue(key, context);
+      // in v3 mode, only enable if explicitly set to true
+      // otherwise enable for any non-false value
+      return mode === 3 ? value === true : value !== false;
+  }
+  function checkCompatEnabled(key, context, loc, ...args) {
+      const enabled = isCompatEnabled(key, context);
+      if (enabled) {
+          warnDeprecation(key, context, loc, ...args);
+      }
+      return enabled;
+  }
+  function warnDeprecation(key, context, loc, ...args) {
+      const val = getCompatValue(key, context);
+      if (val === 'suppress-warning') {
+          return;
+      }
+      const { message, link } = deprecationData[key];
+      const msg = `(deprecation ${key}) ${typeof message === 'function' ? message(...args) : message}${link ? `\n  Details: ${link}` : ``}`;
+      const err = new SyntaxError(msg);
+      err.code = key;
+      if (loc)
+          err.loc = loc;
+      context.onWarn(err);
+  }
+
+  // The default decoder only provides escapes for characters reserved as part of
+  // the template syntax, and is only used if the custom renderer did not provide
+  // a platform-specific decoder.
+  const decodeRE = /&(gt|lt|amp|apos|quot);/g;
+  const decodeMap = {
+      gt: '>',
+      lt: '<',
+      amp: '&',
+      apos: "'",
+      quot: '"'
+  };
+  const defaultParserOptions = {
+      delimiters: [`{{`, `}}`],
+      getNamespace: () => 0 /* HTML */,
+      getTextMode: () => 0 /* DATA */,
+      isVoidTag: NO,
+      isPreTag: NO,
+      isCustomElement: NO,
+      decodeEntities: (rawText) => rawText.replace(decodeRE, (_, p1) => decodeMap[p1]),
+      onError: defaultOnError,
+      onWarn: defaultOnWarn,
+      comments: true
+  };
+  function baseParse(content, options = {}) {
+      const context = createParserContext(content, options);
+      const start = getCursor(context);
+      return createRoot(parseChildren(context, 0 /* DATA */, []), getSelection(context, start));
+  }
+  function createParserContext(content, rawOptions) {
+      const options = extend({}, defaultParserOptions);
+      let key;
+      for (key in rawOptions) {
+          // @ts-ignore
+          options[key] =
+              rawOptions[key] === undefined
+                  ? defaultParserOptions[key]
+                  : rawOptions[key];
+      }
+      return {
+          options,
+          column: 1,
+          line: 1,
+          offset: 0,
+          originalSource: content,
+          source: content,
+          inPre: false,
+          inVPre: false,
+          onWarn: options.onWarn
+      };
+  }
+  function parseChildren(context, mode, ancestors) {
+      const parent = last(ancestors);
+      const ns = parent ? parent.ns : 0 /* HTML */;
+      const nodes = [];
+      while (!isEnd(context, mode, ancestors)) {
+          const s = context.source;
+          let node = undefined;
+          if (mode === 0 /* DATA */ || mode === 1 /* RCDATA */) {
+              if (!context.inVPre && startsWith(s, context.options.delimiters[0])) {
+                  // '{{'
+                  node = parseInterpolation(context, mode);
+              }
+              else if (mode === 0 /* DATA */ && s[0] === '<') {
+                  // https://html.spec.whatwg.org/multipage/parsing.html#tag-open-state
+                  if (s.length === 1) {
+                      emitError(context, 5 /* EOF_BEFORE_TAG_NAME */, 1);
+                  }
+                  else if (s[1] === '!') {
+                      // https://html.spec.whatwg.org/multipage/parsing.html#markup-declaration-open-state
+                      if (startsWith(s, '<!--')) {
+                          node = parseComment(context);
+                      }
+                      else if (startsWith(s, '<!DOCTYPE')) {
+                          // Ignore DOCTYPE by a limitation.
+                          node = parseBogusComment(context);
+                      }
+                      else if (startsWith(s, '<![CDATA[')) {
+                          if (ns !== 0 /* HTML */) {
+                              node = parseCDATA(context, ancestors);
+                          }
+                          else {
+                              emitError(context, 1 /* CDATA_IN_HTML_CONTENT */);
+                              node = parseBogusComment(context);
+                          }
+                      }
+                      else {
+                          emitError(context, 11 /* INCORRECTLY_OPENED_COMMENT */);
+                          node = parseBogusComment(context);
+                      }
+                  }
+                  else if (s[1] === '/') {
+                      // https://html.spec.whatwg.org/multipage/parsing.html#end-tag-open-state
+                      if (s.length === 2) {
+                          emitError(context, 5 /* EOF_BEFORE_TAG_NAME */, 2);
+                      }
+                      else if (s[2] === '>') {
+                          emitError(context, 14 /* MISSING_END_TAG_NAME */, 2);
+                          advanceBy(context, 3);
+                          continue;
+                      }
+                      else if (/[a-z]/i.test(s[2])) {
+                          emitError(context, 23 /* X_INVALID_END_TAG */);
+                          parseTag(context, 1 /* End */, parent);
+                          continue;
+                      }
+                      else {
+                          emitError(context, 12 /* INVALID_FIRST_CHARACTER_OF_TAG_NAME */, 2);
+                          node = parseBogusComment(context);
+                      }
+                  }
+                  else if (/[a-z]/i.test(s[1])) {
+                      node = parseElement(context, ancestors);
+                  }
+                  else if (s[1] === '?') {
+                      emitError(context, 21 /* UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME */, 1);
+                      node = parseBogusComment(context);
+                  }
+                  else {
+                      emitError(context, 12 /* INVALID_FIRST_CHARACTER_OF_TAG_NAME */, 1);
+                  }
+              }
+          }
+          if (!node) {
+              node = parseText(context, mode);
+          }
+          if (isArray(node)) {
+              for (let i = 0; i < node.length; i++) {
+                  pushNode(nodes, node[i]);
+              }
+          }
+          else {
+              pushNode(nodes, node);
+          }
+      }
+      // Whitespace handling strategy like v2
+      let removedWhitespace = false;
+      if (mode !== 2 /* RAWTEXT */ && mode !== 1 /* RCDATA */) {
+          const shouldCondense = context.options.whitespace !== 'preserve';
+          for (let i = 0; i < nodes.length; i++) {
+              const node = nodes[i];
+              if (!context.inPre && node.type === 2 /* TEXT */) {
+                  if (!/[^\t\r\n\f ]/.test(node.content)) {
+                      const prev = nodes[i - 1];
+                      const next = nodes[i + 1];
+                      // Remove if:
+                      // - the whitespace is the first or last node, or:
+                      // - (condense mode) the whitespace is adjacent to a comment, or:
+                      // - (condense mode) the whitespace is between two elements AND contains newline
+                      if (!prev ||
+                          !next ||
+                          (shouldCondense &&
+                              (prev.type === 3 /* COMMENT */ ||
+                                  next.type === 3 /* COMMENT */ ||
+                                  (prev.type === 1 /* ELEMENT */ &&
+                                      next.type === 1 /* ELEMENT */ &&
+                                      /[\r\n]/.test(node.content))))) {
+                          removedWhitespace = true;
+                          nodes[i] = null;
+                      }
+                      else {
+                          // Otherwise, the whitespace is condensed into a single space
+                          node.content = ' ';
+                      }
+                  }
+                  else if (shouldCondense) {
+                      // in condense mode, consecutive whitespaces in text are condensed
+                      // down to a single space.
+                      node.content = node.content.replace(/[\t\r\n\f ]+/g, ' ');
+                  }
+              }
+              // Remove comment nodes if desired by configuration.
+              else if (node.type === 3 /* COMMENT */ && !context.options.comments) {
+                  removedWhitespace = true;
+                  nodes[i] = null;
+              }
+          }
+          if (context.inPre && parent && context.options.isPreTag(parent.tag)) {
+              // remove leading newline per html spec
+              // https://html.spec.whatwg.org/multipage/grouping-content.html#the-pre-element
+              const first = nodes[0];
+              if (first && first.type === 2 /* TEXT */) {
+                  first.content = first.content.replace(/^\r?\n/, '');
+              }
+          }
+      }
+      return removedWhitespace ? nodes.filter(Boolean) : nodes;
+  }
+  function pushNode(nodes, node) {
+      if (node.type === 2 /* TEXT */) {
+          const prev = last(nodes);
+          // Merge if both this and the previous node are text and those are
+          // consecutive. This happens for cases like "a < b".
+          if (prev &&
+              prev.type === 2 /* TEXT */ &&
+              prev.loc.end.offset === node.loc.start.offset) {
+              prev.content += node.content;
+              prev.loc.end = node.loc.end;
+              prev.loc.source += node.loc.source;
+              return;
+          }
+      }
+      nodes.push(node);
+  }
+  function parseCDATA(context, ancestors) {
+      advanceBy(context, 9);
+      const nodes = parseChildren(context, 3 /* CDATA */, ancestors);
+      if (context.source.length === 0) {
+          emitError(context, 6 /* EOF_IN_CDATA */);
+      }
+      else {
+          advanceBy(context, 3);
+      }
+      return nodes;
+  }
+  function parseComment(context) {
+      const start = getCursor(context);
+      let content;
+      // Regular comment.
+      const match = /--(\!)?>/.exec(context.source);
+      if (!match) {
+          content = context.source.slice(4);
+          advanceBy(context, context.source.length);
+          emitError(context, 7 /* EOF_IN_COMMENT */);
+      }
+      else {
+          if (match.index <= 3) {
+              emitError(context, 0 /* ABRUPT_CLOSING_OF_EMPTY_COMMENT */);
+          }
+          if (match[1]) {
+              emitError(context, 10 /* INCORRECTLY_CLOSED_COMMENT */);
+          }
+          content = context.source.slice(4, match.index);
+          // Advancing with reporting nested comments.
+          const s = context.source.slice(0, match.index);
+          let prevIndex = 1, nestedIndex = 0;
+          while ((nestedIndex = s.indexOf('<!--', prevIndex)) !== -1) {
+              advanceBy(context, nestedIndex - prevIndex + 1);
+              if (nestedIndex + 4 < s.length) {
+                  emitError(context, 16 /* NESTED_COMMENT */);
+              }
+              prevIndex = nestedIndex + 1;
+          }
+          advanceBy(context, match.index + match[0].length - prevIndex + 1);
+      }
+      return {
+          type: 3 /* COMMENT */,
+          content,
+          loc: getSelection(context, start)
+      };
+  }
+  function parseBogusComment(context) {
+      const start = getCursor(context);
+      const contentStart = context.source[1] === '?' ? 1 : 2;
+      let content;
+      const closeIndex = context.source.indexOf('>');
+      if (closeIndex === -1) {
+          content = context.source.slice(contentStart);
+          advanceBy(context, context.source.length);
+      }
+      else {
+          content = context.source.slice(contentStart, closeIndex);
+          advanceBy(context, closeIndex + 1);
+      }
+      return {
+          type: 3 /* COMMENT */,
+          content,
+          loc: getSelection(context, start)
+      };
+  }
+  function parseElement(context, ancestors) {
+      // Start tag.
+      const wasInPre = context.inPre;
+      const wasInVPre = context.inVPre;
+      const parent = last(ancestors);
+      const element = parseTag(context, 0 /* Start */, parent);
+      const isPreBoundary = context.inPre && !wasInPre;
+      const isVPreBoundary = context.inVPre && !wasInVPre;
+      if (element.isSelfClosing || context.options.isVoidTag(element.tag)) {
+          // #4030 self-closing <pre> tag
+          if (isPreBoundary) {
+              context.inPre = false;
+          }
+          if (isVPreBoundary) {
+              context.inVPre = false;
+          }
+          return element;
+      }
+      // Children.
+      ancestors.push(element);
+      const mode = context.options.getTextMode(element, parent);
+      const children = parseChildren(context, mode, ancestors);
+      ancestors.pop();
+      element.children = children;
+      // End tag.
+      if (startsWithEndTagOpen(context.source, element.tag)) {
+          parseTag(context, 1 /* End */, parent);
+      }
+      else {
+          emitError(context, 24 /* X_MISSING_END_TAG */, 0, element.loc.start);
+          if (context.source.length === 0 && element.tag.toLowerCase() === 'script') {
+              const first = children[0];
+              if (first && startsWith(first.loc.source, '<!--')) {
+                  emitError(context, 8 /* EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT */);
+              }
+          }
+      }
+      element.loc = getSelection(context, element.loc.start);
+      if (isPreBoundary) {
+          context.inPre = false;
+      }
+      if (isVPreBoundary) {
+          context.inVPre = false;
+      }
+      return element;
+  }
+  const isSpecialTemplateDirective = /*#__PURE__*/ makeMap(`if,else,else-if,for,slot`);
+  function parseTag(context, type, parent) {
+      // Tag open.
+      const start = getCursor(context);
+      const match = /^<\/?([a-z][^\t\r\n\f />]*)/i.exec(context.source);
+      const tag = match[1];
+      const ns = context.options.getNamespace(tag, parent);
+      advanceBy(context, match[0].length);
+      advanceSpaces(context);
+      // save current state in case we need to re-parse attributes with v-pre
+      const cursor = getCursor(context);
+      const currentSource = context.source;
+      // check <pre> tag
+      if (context.options.isPreTag(tag)) {
+          context.inPre = true;
+      }
+      // Attributes.
+      let props = parseAttributes(context, type);
+      // check v-pre
+      if (type === 0 /* Start */ &&
+          !context.inVPre &&
+          props.some(p => p.type === 7 /* DIRECTIVE */ && p.name === 'pre')) {
+          context.inVPre = true;
+          // reset context
+          extend(context, cursor);
+          context.source = currentSource;
+          // re-parse attrs and filter out v-pre itself
+          props = parseAttributes(context, type).filter(p => p.name !== 'v-pre');
+      }
+      // Tag close.
+      let isSelfClosing = false;
+      if (context.source.length === 0) {
+          emitError(context, 9 /* EOF_IN_TAG */);
+      }
+      else {
+          isSelfClosing = startsWith(context.source, '/>');
+          if (type === 1 /* End */ && isSelfClosing) {
+              emitError(context, 4 /* END_TAG_WITH_TRAILING_SOLIDUS */);
+          }
+          advanceBy(context, isSelfClosing ? 2 : 1);
+      }
+      if (type === 1 /* End */) {
+          return;
+      }
+      let tagType = 0 /* ELEMENT */;
+      if (!context.inVPre) {
+          if (tag === 'slot') {
+              tagType = 2 /* SLOT */;
+          }
+          else if (tag === 'template') {
+              if (props.some(p => p.type === 7 /* DIRECTIVE */ && isSpecialTemplateDirective(p.name))) {
+                  tagType = 3 /* TEMPLATE */;
+              }
+          }
+          else if (isComponent(tag, props, context)) {
+              tagType = 1 /* COMPONENT */;
+          }
+      }
+      return {
+          type: 1 /* ELEMENT */,
+          ns,
+          tag,
+          tagType,
+          props,
+          isSelfClosing,
+          children: [],
+          loc: getSelection(context, start),
+          codegenNode: undefined // to be created during transform phase
+      };
+  }
+  function isComponent(tag, props, context) {
+      const options = context.options;
+      if (options.isCustomElement(tag)) {
+          return false;
+      }
+      if (tag === 'component' ||
+          /^[A-Z]/.test(tag) ||
+          isCoreComponent(tag) ||
+          (options.isBuiltInComponent && options.isBuiltInComponent(tag)) ||
+          (options.isNativeTag && !options.isNativeTag(tag))) {
+          return true;
+      }
+      // at this point the tag should be a native tag, but check for potential "is"
+      // casting
+      for (let i = 0; i < props.length; i++) {
+          const p = props[i];
+          if (p.type === 6 /* ATTRIBUTE */) {
+              if (p.name === 'is' && p.value) {
+                  if (p.value.content.startsWith('vue:')) {
+                      return true;
+                  }
+              }
+          }
+          else {
+              // directive
+              // v-is (TODO Deprecate)
+              if (p.name === 'is') {
+                  return true;
+              }
+              else if (
+              // :is on plain element - only treat as component in compat mode
+              p.name === 'bind' &&
+                  isStaticArgOf(p.arg, 'is') &&
+                  false &&
+                  checkCompatEnabled("COMPILER_IS_ON_ELEMENT" /* COMPILER_IS_ON_ELEMENT */, context, p.loc)) {
+                  return true;
+              }
+          }
+      }
+  }
+  function parseAttributes(context, type) {
+      const props = [];
+      const attributeNames = new Set();
+      while (context.source.length > 0 &&
+          !startsWith(context.source, '>') &&
+          !startsWith(context.source, '/>')) {
+          if (startsWith(context.source, '/')) {
+              emitError(context, 22 /* UNEXPECTED_SOLIDUS_IN_TAG */);
+              advanceBy(context, 1);
+              advanceSpaces(context);
+              continue;
+          }
+          if (type === 1 /* End */) {
+              emitError(context, 3 /* END_TAG_WITH_ATTRIBUTES */);
+          }
+          const attr = parseAttribute(context, attributeNames);
+          // Trim whitespace between class
+          // https://github.com/vuejs/core/issues/4251
+          if (attr.type === 6 /* ATTRIBUTE */ &&
+              attr.value &&
+              attr.name === 'class') {
+              attr.value.content = attr.value.content.replace(/\s+/g, ' ').trim();
+          }
+          if (type === 0 /* Start */) {
+              props.push(attr);
+          }
+          if (/^[^\t\r\n\f />]/.test(context.source)) {
+              emitError(context, 15 /* MISSING_WHITESPACE_BETWEEN_ATTRIBUTES */);
+          }
+          advanceSpaces(context);
+      }
+      return props;
+  }
+  function parseAttribute(context, nameSet) {
+      // Name.
+      const start = getCursor(context);
+      const match = /^[^\t\r\n\f />][^\t\r\n\f />=]*/.exec(context.source);
+      const name = match[0];
+      if (nameSet.has(name)) {
+          emitError(context, 2 /* DUPLICATE_ATTRIBUTE */);
+      }
+      nameSet.add(name);
+      if (name[0] === '=') {
+          emitError(context, 19 /* UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME */);
+      }
+      {
+          const pattern = /["'<]/g;
+          let m;
+          while ((m = pattern.exec(name))) {
+              emitError(context, 17 /* UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME */, m.index);
+          }
+      }
+      advanceBy(context, name.length);
+      // Value
+      let value = undefined;
+      if (/^[\t\r\n\f ]*=/.test(context.source)) {
+          advanceSpaces(context);
+          advanceBy(context, 1);
+          advanceSpaces(context);
+          value = parseAttributeValue(context);
+          if (!value) {
+              emitError(context, 13 /* MISSING_ATTRIBUTE_VALUE */);
+          }
+      }
+      const loc = getSelection(context, start);
+      if (!context.inVPre && /^(v-[A-Za-z0-9-]|:|\.|@|#)/.test(name)) {
+          const match = /(?:^v-([a-z0-9-]+))?(?:(?::|^\.|^@|^#)(\[[^\]]+\]|[^\.]+))?(.+)?$/i.exec(name);
+          let isPropShorthand = startsWith(name, '.');
+          let dirName = match[1] ||
+              (isPropShorthand || startsWith(name, ':')
+                  ? 'bind'
+                  : startsWith(name, '@')
+                      ? 'on'
+                      : 'slot');
+          let arg;
+          if (match[2]) {
+              const isSlot = dirName === 'slot';
+              const startOffset = name.lastIndexOf(match[2]);
+              const loc = getSelection(context, getNewPosition(context, start, startOffset), getNewPosition(context, start, startOffset + match[2].length + ((isSlot && match[3]) || '').length));
+              let content = match[2];
+              let isStatic = true;
+              if (content.startsWith('[')) {
+                  isStatic = false;
+                  if (!content.endsWith(']')) {
+                      emitError(context, 27 /* X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END */);
+                      content = content.slice(1);
+                  }
+                  else {
+                      content = content.slice(1, content.length - 1);
+                  }
+              }
+              else if (isSlot) {
+                  // #1241 special case for v-slot: vuetify relies extensively on slot
+                  // names containing dots. v-slot doesn't have any modifiers and Vue 2.x
+                  // supports such usage so we are keeping it consistent with 2.x.
+                  content += match[3] || '';
+              }
+              arg = {
+                  type: 4 /* SIMPLE_EXPRESSION */,
+                  content,
+                  isStatic,
+                  constType: isStatic
+                      ? 3 /* CAN_STRINGIFY */
+                      : 0 /* NOT_CONSTANT */,
+                  loc
+              };
+          }
+          if (value && value.isQuoted) {
+              const valueLoc = value.loc;
+              valueLoc.start.offset++;
+              valueLoc.start.column++;
+              valueLoc.end = advancePositionWithClone(valueLoc.start, value.content);
+              valueLoc.source = valueLoc.source.slice(1, -1);
+          }
+          const modifiers = match[3] ? match[3].slice(1).split('.') : [];
+          if (isPropShorthand)
+              modifiers.push('prop');
+          return {
+              type: 7 /* DIRECTIVE */,
+              name: dirName,
+              exp: value && {
+                  type: 4 /* SIMPLE_EXPRESSION */,
+                  content: value.content,
+                  isStatic: false,
+                  // Treat as non-constant by default. This can be potentially set to
+                  // other values by `transformExpression` to make it eligible for hoisting.
+                  constType: 0 /* NOT_CONSTANT */,
+                  loc: value.loc
+              },
+              arg,
+              modifiers,
+              loc
+          };
+      }
+      // missing directive name or illegal directive name
+      if (!context.inVPre && startsWith(name, 'v-')) {
+          emitError(context, 26 /* X_MISSING_DIRECTIVE_NAME */);
+      }
+      return {
+          type: 6 /* ATTRIBUTE */,
+          name,
+          value: value && {
+              type: 2 /* TEXT */,
+              content: value.content,
+              loc: value.loc
+          },
+          loc
+      };
+  }
+  function parseAttributeValue(context) {
+      const start = getCursor(context);
+      let content;
+      const quote = context.source[0];
+      const isQuoted = quote === `"` || quote === `'`;
+      if (isQuoted) {
+          // Quoted value.
+          advanceBy(context, 1);
+          const endIndex = context.source.indexOf(quote);
+          if (endIndex === -1) {
+              content = parseTextData(context, context.source.length, 4 /* ATTRIBUTE_VALUE */);
+          }
+          else {
+              content = parseTextData(context, endIndex, 4 /* ATTRIBUTE_VALUE */);
+              advanceBy(context, 1);
+          }
+      }
+      else {
+          // Unquoted
+          const match = /^[^\t\r\n\f >]+/.exec(context.source);
+          if (!match) {
+              return undefined;
+          }
+          const unexpectedChars = /["'<=`]/g;
+          let m;
+          while ((m = unexpectedChars.exec(match[0]))) {
+              emitError(context, 18 /* UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE */, m.index);
+          }
+          content = parseTextData(context, match[0].length, 4 /* ATTRIBUTE_VALUE */);
+      }
+      return { content, isQuoted, loc: getSelection(context, start) };
+  }
+  function parseInterpolation(context, mode) {
+      const [open, close] = context.options.delimiters;
+      const closeIndex = context.source.indexOf(close, open.length);
+      if (closeIndex === -1) {
+          emitError(context, 25 /* X_MISSING_INTERPOLATION_END */);
+          return undefined;
+      }
+      const start = getCursor(context);
+      advanceBy(context, open.length);
+      const innerStart = getCursor(context);
+      const innerEnd = getCursor(context);
+      const rawContentLength = closeIndex - open.length;
+      const rawContent = context.source.slice(0, rawContentLength);
+      const preTrimContent = parseTextData(context, rawContentLength, mode);
+      const content = preTrimContent.trim();
+      const startOffset = preTrimContent.indexOf(content);
+      if (startOffset > 0) {
+          advancePositionWithMutation(innerStart, rawContent, startOffset);
+      }
+      const endOffset = rawContentLength - (preTrimContent.length - content.length - startOffset);
+      advancePositionWithMutation(innerEnd, rawContent, endOffset);
+      advanceBy(context, close.length);
+      return {
+          type: 5 /* INTERPOLATION */,
+          content: {
+              type: 4 /* SIMPLE_EXPRESSION */,
+              isStatic: false,
+              // Set `isConstant` to false by default and will decide in transformExpression
+              constType: 0 /* NOT_CONSTANT */,
+              content,
+              loc: getSelection(context, innerStart, innerEnd)
+          },
+          loc: getSelection(context, start)
+      };
+  }
+  function parseText(context, mode) {
+      const endTokens = mode === 3 /* CDATA */ ? [']]>'] : ['<', context.options.delimiters[0]];
+      let endIndex = context.source.length;
+      for (let i = 0; i < endTokens.length; i++) {
+          const index = context.source.indexOf(endTokens[i], 1);
+          if (index !== -1 && endIndex > index) {
+              endIndex = index;
+          }
+      }
+      const start = getCursor(context);
+      const content = parseTextData(context, endIndex, mode);
+      return {
+          type: 2 /* TEXT */,
+          content,
+          loc: getSelection(context, start)
+      };
+  }
+  /**
+   * Get text data with a given length from the current location.
+   * This translates HTML entities in the text data.
+   */
+  function parseTextData(context, length, mode) {
+      const rawText = context.source.slice(0, length);
+      advanceBy(context, length);
+      if (mode === 2 /* RAWTEXT */ ||
+          mode === 3 /* CDATA */ ||
+          !rawText.includes('&')) {
+          return rawText;
+      }
+      else {
+          // DATA or RCDATA containing "&"". Entity decoding required.
+          return context.options.decodeEntities(rawText, mode === 4 /* ATTRIBUTE_VALUE */);
+      }
+  }
+  function getCursor(context) {
+      const { column, line, offset } = context;
+      return { column, line, offset };
+  }
+  function getSelection(context, start, end) {
+      end = end || getCursor(context);
+      return {
+          start,
+          end,
+          source: context.originalSource.slice(start.offset, end.offset)
+      };
+  }
+  function last(xs) {
+      return xs[xs.length - 1];
+  }
+  function startsWith(source, searchString) {
+      return source.startsWith(searchString);
+  }
+  function advanceBy(context, numberOfCharacters) {
+      const { source } = context;
+      advancePositionWithMutation(context, source, numberOfCharacters);
+      context.source = source.slice(numberOfCharacters);
+  }
+  function advanceSpaces(context) {
+      const match = /^[\t\r\n\f ]+/.exec(context.source);
+      if (match) {
+          advanceBy(context, match[0].length);
+      }
+  }
+  function getNewPosition(context, start, numberOfCharacters) {
+      return advancePositionWithClone(start, context.originalSource.slice(start.offset, numberOfCharacters), numberOfCharacters);
+  }
+  function emitError(context, code, offset, loc = getCursor(context)) {
+      if (offset) {
+          loc.offset += offset;
+          loc.column += offset;
+      }
+      context.options.onError(createCompilerError(code, {
+          start: loc,
+          end: loc,
+          source: ''
+      }));
+  }
+  function isEnd(context, mode, ancestors) {
+      const s = context.source;
+      switch (mode) {
+          case 0 /* DATA */:
+              if (startsWith(s, '</')) {
+                  // TODO: probably bad performance
+                  for (let i = ancestors.length - 1; i >= 0; --i) {
+                      if (startsWithEndTagOpen(s, ancestors[i].tag)) {
+                          return true;
+                      }
+                  }
+              }
+              break;
+          case 1 /* RCDATA */:
+          case 2 /* RAWTEXT */: {
+              const parent = last(ancestors);
+              if (parent && startsWithEndTagOpen(s, parent.tag)) {
+                  return true;
+              }
+              break;
+          }
+          case 3 /* CDATA */:
+              if (startsWith(s, ']]>')) {
+                  return true;
+              }
+              break;
+      }
+      return !s;
+  }
+  function startsWithEndTagOpen(source, tag) {
+      return (startsWith(source, '</') &&
+          source.slice(2, 2 + tag.length).toLowerCase() === tag.toLowerCase() &&
+          /[\t\r\n\f />]/.test(source[2 + tag.length] || '>'));
+  }
+
+  function hoistStatic(root, context) {
+      walk(root, context, 
+      // Root node is unfortunately non-hoistable due to potential parent
+      // fallthrough attributes.
+      isSingleElementRoot(root, root.children[0]));
+  }
+  function isSingleElementRoot(root, child) {
+      const { children } = root;
+      return (children.length === 1 &&
+          child.type === 1 /* ELEMENT */ &&
+          !isSlotOutlet(child));
+  }
+  function walk(node, context, doNotHoistNode = false) {
+      const { children } = node;
+      const originalCount = children.length;
+      let hoistedCount = 0;
+      for (let i = 0; i < children.length; i++) {
+          const child = children[i];
+          // only plain elements & text calls are eligible for hoisting.
+          if (child.type === 1 /* ELEMENT */ &&
+              child.tagType === 0 /* ELEMENT */) {
+              const constantType = doNotHoistNode
+                  ? 0 /* NOT_CONSTANT */
+                  : getConstantType(child, context);
+              if (constantType > 0 /* NOT_CONSTANT */) {
+                  if (constantType >= 2 /* CAN_HOIST */) {
+                      child.codegenNode.patchFlag =
+                          -1 /* HOISTED */ + (` /* HOISTED */` );
+                      child.codegenNode = context.hoist(child.codegenNode);
+                      hoistedCount++;
+                      continue;
+                  }
+              }
+              else {
+                  // node may contain dynamic children, but its props may be eligible for
+                  // hoisting.
+                  const codegenNode = child.codegenNode;
+                  if (codegenNode.type === 13 /* VNODE_CALL */) {
+                      const flag = getPatchFlag(codegenNode);
+                      if ((!flag ||
+                          flag === 512 /* NEED_PATCH */ ||
+                          flag === 1 /* TEXT */) &&
+                          getGeneratedPropsConstantType(child, context) >=
+                              2 /* CAN_HOIST */) {
+                          const props = getNodeProps(child);
+                          if (props) {
+                              codegenNode.props = context.hoist(props);
+                          }
+                      }
+                      if (codegenNode.dynamicProps) {
+                          codegenNode.dynamicProps = context.hoist(codegenNode.dynamicProps);
+                      }
+                  }
+              }
+          }
+          else if (child.type === 12 /* TEXT_CALL */ &&
+              getConstantType(child.content, context) >= 2 /* CAN_HOIST */) {
+              child.codegenNode = context.hoist(child.codegenNode);
+              hoistedCount++;
+          }
+          // walk further
+          if (child.type === 1 /* ELEMENT */) {
+              const isComponent = child.tagType === 1 /* COMPONENT */;
+              if (isComponent) {
+                  context.scopes.vSlot++;
+              }
+              walk(child, context);
+              if (isComponent) {
+                  context.scopes.vSlot--;
+              }
+          }
+          else if (child.type === 11 /* FOR */) {
+              // Do not hoist v-for single child because it has to be a block
+              walk(child, context, child.children.length === 1);
+          }
+          else if (child.type === 9 /* IF */) {
+              for (let i = 0; i < child.branches.length; i++) {
+                  // Do not hoist v-if single child because it has to be a block
+                  walk(child.branches[i], context, child.branches[i].children.length === 1);
+              }
+          }
+      }
+      if (hoistedCount && context.transformHoist) {
+          context.transformHoist(children, context, node);
+      }
+      // all children were hoisted - the entire children array is hoistable.
+      if (hoistedCount &&
+          hoistedCount === originalCount &&
+          node.type === 1 /* ELEMENT */ &&
+          node.tagType === 0 /* ELEMENT */ &&
+          node.codegenNode &&
+          node.codegenNode.type === 13 /* VNODE_CALL */ &&
+          isArray(node.codegenNode.children)) {
+          node.codegenNode.children = context.hoist(createArrayExpression(node.codegenNode.children));
+      }
+  }
+  function getConstantType(node, context) {
+      const { constantCache } = context;
+      switch (node.type) {
+          case 1 /* ELEMENT */:
+              if (node.tagType !== 0 /* ELEMENT */) {
+                  return 0 /* NOT_CONSTANT */;
+              }
+              const cached = constantCache.get(node);
+              if (cached !== undefined) {
+                  return cached;
+              }
+              const codegenNode = node.codegenNode;
+              if (codegenNode.type !== 13 /* VNODE_CALL */) {
+                  return 0 /* NOT_CONSTANT */;
+              }
+              if (codegenNode.isBlock &&
+                  node.tag !== 'svg' &&
+                  node.tag !== 'foreignObject') {
+                  return 0 /* NOT_CONSTANT */;
+              }
+              const flag = getPatchFlag(codegenNode);
+              if (!flag) {
+                  let returnType = 3 /* CAN_STRINGIFY */;
+                  // Element itself has no patch flag. However we still need to check:
+                  // 1. Even for a node with no patch flag, it is possible for it to contain
+                  // non-hoistable expressions that refers to scope variables, e.g. compiler
+                  // injected keys or cached event handlers. Therefore we need to always
+                  // check the codegenNode's props to be sure.
+                  const generatedPropsType = getGeneratedPropsConstantType(node, context);
+                  if (generatedPropsType === 0 /* NOT_CONSTANT */) {
+                      constantCache.set(node, 0 /* NOT_CONSTANT */);
+                      return 0 /* NOT_CONSTANT */;
+                  }
+                  if (generatedPropsType < returnType) {
+                      returnType = generatedPropsType;
+                  }
+                  // 2. its children.
+                  for (let i = 0; i < node.children.length; i++) {
+                      const childType = getConstantType(node.children[i], context);
+                      if (childType === 0 /* NOT_CONSTANT */) {
+                          constantCache.set(node, 0 /* NOT_CONSTANT */);
+                          return 0 /* NOT_CONSTANT */;
+                      }
+                      if (childType < returnType) {
+                          returnType = childType;
+                      }
+                  }
+                  // 3. if the type is not already CAN_SKIP_PATCH which is the lowest non-0
+                  // type, check if any of the props can cause the type to be lowered
+                  // we can skip can_patch because it's guaranteed by the absence of a
+                  // patchFlag.
+                  if (returnType > 1 /* CAN_SKIP_PATCH */) {
+                      for (let i = 0; i < node.props.length; i++) {
+                          const p = node.props[i];
+                          if (p.type === 7 /* DIRECTIVE */ && p.name === 'bind' && p.exp) {
+                              const expType = getConstantType(p.exp, context);
+                              if (expType === 0 /* NOT_CONSTANT */) {
+                                  constantCache.set(node, 0 /* NOT_CONSTANT */);
+                                  return 0 /* NOT_CONSTANT */;
+                              }
+                              if (expType < returnType) {
+                                  returnType = expType;
+                              }
+                          }
+                      }
+                  }
+                  // only svg/foreignObject could be block here, however if they are
+                  // static then they don't need to be blocks since there will be no
+                  // nested updates.
+                  if (codegenNode.isBlock) {
+                      // except set custom directives.
+                      for (let i = 0; i < node.props.length; i++) {
+                          const p = node.props[i];
+                          if (p.type === 7 /* DIRECTIVE */) {
+                              constantCache.set(node, 0 /* NOT_CONSTANT */);
+                              return 0 /* NOT_CONSTANT */;
+                          }
+                      }
+                      context.removeHelper(OPEN_BLOCK);
+                      context.removeHelper(getVNodeBlockHelper(context.inSSR, codegenNode.isComponent));
+                      codegenNode.isBlock = false;
+                      context.helper(getVNodeHelper(context.inSSR, codegenNode.isComponent));
+                  }
+                  constantCache.set(node, returnType);
+                  return returnType;
+              }
+              else {
+                  constantCache.set(node, 0 /* NOT_CONSTANT */);
+                  return 0 /* NOT_CONSTANT */;
+              }
+          case 2 /* TEXT */:
+          case 3 /* COMMENT */:
+              return 3 /* CAN_STRINGIFY */;
+          case 9 /* IF */:
+          case 11 /* FOR */:
+          case 10 /* IF_BRANCH */:
+              return 0 /* NOT_CONSTANT */;
+          case 5 /* INTERPOLATION */:
+          case 12 /* TEXT_CALL */:
+              return getConstantType(node.content, context);
+          case 4 /* SIMPLE_EXPRESSION */:
+              return node.constType;
+          case 8 /* COMPOUND_EXPRESSION */:
+              let returnType = 3 /* CAN_STRINGIFY */;
+              for (let i = 0; i < node.children.length; i++) {
+                  const child = node.children[i];
+                  if (isString(child) || isSymbol(child)) {
+                      continue;
+                  }
+                  const childType = getConstantType(child, context);
+                  if (childType === 0 /* NOT_CONSTANT */) {
+                      return 0 /* NOT_CONSTANT */;
+                  }
+                  else if (childType < returnType) {
+                      returnType = childType;
+                  }
+              }
+              return returnType;
+          default:
+              return 0 /* NOT_CONSTANT */;
+      }
+  }
+  const allowHoistedHelperSet = new Set([
+      NORMALIZE_CLASS,
+      NORMALIZE_STYLE,
+      NORMALIZE_PROPS,
+      GUARD_REACTIVE_PROPS
+  ]);
+  function getConstantTypeOfHelperCall(value, context) {
+      if (value.type === 14 /* JS_CALL_EXPRESSION */ &&
+          !isString(value.callee) &&
+          allowHoistedHelperSet.has(value.callee)) {
+          const arg = value.arguments[0];
+          if (arg.type === 4 /* SIMPLE_EXPRESSION */) {
+              return getConstantType(arg, context);
+          }
+          else if (arg.type === 14 /* JS_CALL_EXPRESSION */) {
+              // in the case of nested helper call, e.g. `normalizeProps(guardReactiveProps(exp))`
+              return getConstantTypeOfHelperCall(arg, context);
+          }
+      }
+      return 0 /* NOT_CONSTANT */;
+  }
+  function getGeneratedPropsConstantType(node, context) {
+      let returnType = 3 /* CAN_STRINGIFY */;
+      const props = getNodeProps(node);
+      if (props && props.type === 15 /* JS_OBJECT_EXPRESSION */) {
+          const { properties } = props;
+          for (let i = 0; i < properties.length; i++) {
+              const { key, value } = properties[i];
+              const keyType = getConstantType(key, context);
+              if (keyType === 0 /* NOT_CONSTANT */) {
+                  return keyType;
+              }
+              if (keyType < returnType) {
+                  returnType = keyType;
+              }
+              let valueType;
+              if (value.type === 4 /* SIMPLE_EXPRESSION */) {
+                  valueType = getConstantType(value, context);
+              }
+              else if (value.type === 14 /* JS_CALL_EXPRESSION */) {
+                  // some helper calls can be hoisted,
+                  // such as the `normalizeProps` generated by the compiler for pre-normalize class,
+                  // in this case we need to respect the ConstantType of the helper's arguments
+                  valueType = getConstantTypeOfHelperCall(value, context);
+              }
+              else {
+                  valueType = 0 /* NOT_CONSTANT */;
+              }
+              if (valueType === 0 /* NOT_CONSTANT */) {
+                  return valueType;
+              }
+              if (valueType < returnType) {
+                  returnType = valueType;
+              }
+          }
+      }
+      return returnType;
+  }
+  function getNodeProps(node) {
+      const codegenNode = node.codegenNode;
+      if (codegenNode.type === 13 /* VNODE_CALL */) {
+          return codegenNode.props;
+      }
+  }
+  function getPatchFlag(node) {
+      const flag = node.patchFlag;
+      return flag ? parseInt(flag, 10) : undefined;
+  }
+
+  function createTransformContext(root, { filename = '', prefixIdentifiers = false, hoistStatic = false, cacheHandlers = false, nodeTransforms = [], directiveTransforms = {}, transformHoist = null, isBuiltInComponent = NOOP, isCustomElement = NOOP, expressionPlugins = [], scopeId = null, slotted = true, ssr = false, inSSR = false, ssrCssVars = ``, bindingMetadata = EMPTY_OBJ, inline = false, isTS = false, onError = defaultOnError, onWarn = defaultOnWarn, compatConfig }) {
+      const nameMatch = filename.replace(/\?.*$/, '').match(/([^/\\]+)\.\w+$/);
+      const context = {
+          // options
+          selfName: nameMatch && capitalize(camelize(nameMatch[1])),
+          prefixIdentifiers,
+          hoistStatic,
+          cacheHandlers,
+          nodeTransforms,
+          directiveTransforms,
+          transformHoist,
+          isBuiltInComponent,
+          isCustomElement,
+          expressionPlugins,
+          scopeId,
+          slotted,
+          ssr,
+          inSSR,
+          ssrCssVars,
+          bindingMetadata,
+          inline,
+          isTS,
+          onError,
+          onWarn,
+          compatConfig,
+          // state
+          root,
+          helpers: new Map(),
+          components: new Set(),
+          directives: new Set(),
+          hoists: [],
+          imports: [],
+          constantCache: new Map(),
+          temps: 0,
+          cached: 0,
+          identifiers: Object.create(null),
+          scopes: {
+              vFor: 0,
+              vSlot: 0,
+              vPre: 0,
+              vOnce: 0
+          },
+          parent: null,
+          currentNode: root,
+          childIndex: 0,
+          inVOnce: false,
+          // methods
+          helper(name) {
+              const count = context.helpers.get(name) || 0;
+              context.helpers.set(name, count + 1);
+              return name;
+          },
+          removeHelper(name) {
+              const count = context.helpers.get(name);
+              if (count) {
+                  const currentCount = count - 1;
+                  if (!currentCount) {
+                      context.helpers.delete(name);
+                  }
+                  else {
+                      context.helpers.set(name, currentCount);
+                  }
+              }
+          },
+          helperString(name) {
+              return `_${helperNameMap[context.helper(name)]}`;
+          },
+          replaceNode(node) {
+              /* istanbul ignore if */
+              {
+                  if (!context.currentNode) {
+                      throw new Error(`Node being replaced is already removed.`);
+                  }
+                  if (!context.parent) {
+                      throw new Error(`Cannot replace root node.`);
+                  }
+              }
+              context.parent.children[context.childIndex] = context.currentNode = node;
+          },
+          removeNode(node) {
+              if (!context.parent) {
+                  throw new Error(`Cannot remove root node.`);
+              }
+              const list = context.parent.children;
+              const removalIndex = node
+                  ? list.indexOf(node)
+                  : context.currentNode
+                      ? context.childIndex
+                      : -1;
+              /* istanbul ignore if */
+              if (removalIndex < 0) {
+                  throw new Error(`node being removed is not a child of current parent`);
+              }
+              if (!node || node === context.currentNode) {
+                  // current node removed
+                  context.currentNode = null;
+                  context.onNodeRemoved();
+              }
+              else {
+                  // sibling node removed
+                  if (context.childIndex > removalIndex) {
+                      context.childIndex--;
+                      context.onNodeRemoved();
+                  }
+              }
+              context.parent.children.splice(removalIndex, 1);
+          },
+          onNodeRemoved: () => { },
+          addIdentifiers(exp) {
+          },
+          removeIdentifiers(exp) {
+          },
+          hoist(exp) {
+              if (isString(exp))
+                  exp = createSimpleExpression(exp);
+              context.hoists.push(exp);
+              const identifier = createSimpleExpression(`_hoisted_${context.hoists.length}`, false, exp.loc, 2 /* CAN_HOIST */);
+              identifier.hoisted = exp;
+              return identifier;
+          },
+          cache(exp, isVNode = false) {
+              return createCacheExpression(context.cached++, exp, isVNode);
+          }
+      };
+      return context;
+  }
+  function transform(root, options) {
+      const context = createTransformContext(root, options);
+      traverseNode(root, context);
+      if (options.hoistStatic) {
+          hoistStatic(root, context);
+      }
+      if (!options.ssr) {
+          createRootCodegen(root, context);
+      }
+      // finalize meta information
+      root.helpers = [...context.helpers.keys()];
+      root.components = [...context.components];
+      root.directives = [...context.directives];
+      root.imports = context.imports;
+      root.hoists = context.hoists;
+      root.temps = context.temps;
+      root.cached = context.cached;
+  }
+  function createRootCodegen(root, context) {
+      const { helper } = context;
+      const { children } = root;
+      if (children.length === 1) {
+          const child = children[0];
+          // if the single child is an element, turn it into a block.
+          if (isSingleElementRoot(root, child) && child.codegenNode) {
+              // single element root is never hoisted so codegenNode will never be
+              // SimpleExpressionNode
+              const codegenNode = child.codegenNode;
+              if (codegenNode.type === 13 /* VNODE_CALL */) {
+                  makeBlock(codegenNode, context);
+              }
+              root.codegenNode = codegenNode;
+          }
+          else {
+              // - single <slot/>, IfNode, ForNode: already blocks.
+              // - single text node: always patched.
+              // root codegen falls through via genNode()
+              root.codegenNode = child;
+          }
+      }
+      else if (children.length > 1) {
+          // root has multiple nodes - return a fragment block.
+          let patchFlag = 64 /* STABLE_FRAGMENT */;
+          let patchFlagText = PatchFlagNames[64 /* STABLE_FRAGMENT */];
+          // check if the fragment actually contains a single valid child with
+          // the rest being comments
+          if (children.filter(c => c.type !== 3 /* COMMENT */).length === 1) {
+              patchFlag |= 2048 /* DEV_ROOT_FRAGMENT */;
+              patchFlagText += `, ${PatchFlagNames[2048 /* DEV_ROOT_FRAGMENT */]}`;
+          }
+          root.codegenNode = createVNodeCall(context, helper(FRAGMENT), undefined, root.children, patchFlag + (` /* ${patchFlagText} */` ), undefined, undefined, true, undefined, false /* isComponent */);
+      }
+      else ;
+  }
+  function traverseChildren(parent, context) {
+      let i = 0;
+      const nodeRemoved = () => {
+          i--;
+      };
+      for (; i < parent.children.length; i++) {
+          const child = parent.children[i];
+          if (isString(child))
+              continue;
+          context.parent = parent;
+          context.childIndex = i;
+          context.onNodeRemoved = nodeRemoved;
+          traverseNode(child, context);
+      }
+  }
+  function traverseNode(node, context) {
+      context.currentNode = node;
+      // apply transform plugins
+      const { nodeTransforms } = context;
+      const exitFns = [];
+      for (let i = 0; i < nodeTransforms.length; i++) {
+          const onExit = nodeTransforms[i](node, context);
+          if (onExit) {
+              if (isArray(onExit)) {
+                  exitFns.push(...onExit);
+              }
+              else {
+                  exitFns.push(onExit);
+              }
+          }
+          if (!context.currentNode) {
+              // node was removed
+              return;
+          }
+          else {
+              // node may have been replaced
+              node = context.currentNode;
+          }
+      }
+      switch (node.type) {
+          case 3 /* COMMENT */:
+              if (!context.ssr) {
+                  // inject import for the Comment symbol, which is needed for creating
+                  // comment nodes with `createVNode`
+                  context.helper(CREATE_COMMENT);
+              }
+              break;
+          case 5 /* INTERPOLATION */:
+              // no need to traverse, but we need to inject toString helper
+              if (!context.ssr) {
+                  context.helper(TO_DISPLAY_STRING);
+              }
+              break;
+          // for container types, further traverse downwards
+          case 9 /* IF */:
+              for (let i = 0; i < node.branches.length; i++) {
+                  traverseNode(node.branches[i], context);
+              }
+              break;
+          case 10 /* IF_BRANCH */:
+          case 11 /* FOR */:
+          case 1 /* ELEMENT */:
+          case 0 /* ROOT */:
+              traverseChildren(node, context);
+              break;
+      }
+      // exit transforms
+      context.currentNode = node;
+      let i = exitFns.length;
+      while (i--) {
+          exitFns[i]();
+      }
+  }
+  function createStructuralDirectiveTransform(name, fn) {
+      const matches = isString(name)
+          ? (n) => n === name
+          : (n) => name.test(n);
+      return (node, context) => {
+          if (node.type === 1 /* ELEMENT */) {
+              const { props } = node;
+              // structural directive transforms are not concerned with slots
+              // as they are handled separately in vSlot.ts
+              if (node.tagType === 3 /* TEMPLATE */ && props.some(isVSlot)) {
+                  return;
+              }
+              const exitFns = [];
+              for (let i = 0; i < props.length; i++) {
+                  const prop = props[i];
+                  if (prop.type === 7 /* DIRECTIVE */ && matches(prop.name)) {
+                      // structural directives are removed to avoid infinite recursion
+                      // also we remove them *before* applying so that it can further
+                      // traverse itself in case it moves the node around
+                      props.splice(i, 1);
+                      i--;
+                      const onExit = fn(node, prop, context);
+                      if (onExit)
+                          exitFns.push(onExit);
+                  }
+              }
+              return exitFns;
+          }
+      };
+  }
+
+  const PURE_ANNOTATION = `/*#__PURE__*/`;
+  const aliasHelper = (s) => `${helperNameMap[s]}: _${helperNameMap[s]}`;
+  function createCodegenContext(ast, { mode = 'function', prefixIdentifiers = mode === 'module', sourceMap = false, filename = `template.vue.html`, scopeId = null, optimizeImports = false, runtimeGlobalName = `Vue`, runtimeModuleName = `vue`, ssrRuntimeModuleName = 'vue/server-renderer', ssr = false, isTS = false, inSSR = false }) {
+      const context = {
+          mode,
+          prefixIdentifiers,
+          sourceMap,
+          filename,
+          scopeId,
+          optimizeImports,
+          runtimeGlobalName,
+          runtimeModuleName,
+          ssrRuntimeModuleName,
+          ssr,
+          isTS,
+          inSSR,
+          source: ast.loc.source,
+          code: ``,
+          column: 1,
+          line: 1,
+          offset: 0,
+          indentLevel: 0,
+          pure: false,
+          map: undefined,
+          helper(key) {
+              return `_${helperNameMap[key]}`;
+          },
+          push(code, node) {
+              context.code += code;
+          },
+          indent() {
+              newline(++context.indentLevel);
+          },
+          deindent(withoutNewLine = false) {
+              if (withoutNewLine) {
+                  --context.indentLevel;
+              }
+              else {
+                  newline(--context.indentLevel);
+              }
+          },
+          newline() {
+              newline(context.indentLevel);
+          }
+      };
+      function newline(n) {
+          context.push('\n' + `  `.repeat(n));
+      }
+      return context;
+  }
+  function generate(ast, options = {}) {
+      const context = createCodegenContext(ast, options);
+      if (options.onContextCreated)
+          options.onContextCreated(context);
+      const { mode, push, prefixIdentifiers, indent, deindent, newline, scopeId, ssr } = context;
+      const hasHelpers = ast.helpers.length > 0;
+      const useWithBlock = !prefixIdentifiers && mode !== 'module';
+      // preambles
+      // in setup() inline mode, the preamble is generated in a sub context
+      // and returned separately.
+      const preambleContext = context;
+      {
+          genFunctionPreamble(ast, preambleContext);
+      }
+      // enter render function
+      const functionName = ssr ? `ssrRender` : `render`;
+      const args = ssr ? ['_ctx', '_push', '_parent', '_attrs'] : ['_ctx', '_cache'];
+      const signature = args.join(', ');
+      {
+          push(`function ${functionName}(${signature}) {`);
+      }
+      indent();
+      if (useWithBlock) {
+          push(`with (_ctx) {`);
+          indent();
+          // function mode const declarations should be inside with block
+          // also they should be renamed to avoid collision with user properties
+          if (hasHelpers) {
+              push(`const { ${ast.helpers.map(aliasHelper).join(', ')} } = _Vue`);
+              push(`\n`);
+              newline();
+          }
+      }
+      // generate asset resolution statements
+      if (ast.components.length) {
+          genAssets(ast.components, 'component', context);
+          if (ast.directives.length || ast.temps > 0) {
+              newline();
+          }
+      }
+      if (ast.directives.length) {
+          genAssets(ast.directives, 'directive', context);
+          if (ast.temps > 0) {
+              newline();
+          }
+      }
+      if (ast.temps > 0) {
+          push(`let `);
+          for (let i = 0; i < ast.temps; i++) {
+              push(`${i > 0 ? `, ` : ``}_temp${i}`);
+          }
+      }
+      if (ast.components.length || ast.directives.length || ast.temps) {
+          push(`\n`);
+          newline();
+      }
+      // generate the VNode tree expression
+      if (!ssr) {
+          push(`return `);
+      }
+      if (ast.codegenNode) {
+          genNode(ast.codegenNode, context);
+      }
+      else {
+          push(`null`);
+      }
+      if (useWithBlock) {
+          deindent();
+          push(`}`);
+      }
+      deindent();
+      push(`}`);
+      return {
+          ast,
+          code: context.code,
+          preamble: ``,
+          // SourceMapGenerator does have toJSON() method but it's not in the types
+          map: context.map ? context.map.toJSON() : undefined
+      };
+  }
+  function genFunctionPreamble(ast, context) {
+      const { ssr, prefixIdentifiers, push, newline, runtimeModuleName, runtimeGlobalName, ssrRuntimeModuleName } = context;
+      const VueBinding = runtimeGlobalName;
+      // Generate const declaration for helpers
+      // In prefix mode, we place the const declaration at top so it's done
+      // only once; But if we not prefixing, we place the declaration inside the
+      // with block so it doesn't incur the `in` check cost for every helper access.
+      if (ast.helpers.length > 0) {
+          {
+              // "with" mode.
+              // save Vue in a separate variable to avoid collision
+              push(`const _Vue = ${VueBinding}\n`);
+              // in "with" mode, helpers are declared inside the with block to avoid
+              // has check cost, but hoists are lifted out of the function - we need
+              // to provide the helper here.
+              if (ast.hoists.length) {
+                  const staticHelpers = [
+                      CREATE_VNODE,
+                      CREATE_ELEMENT_VNODE,
+                      CREATE_COMMENT,
+                      CREATE_TEXT,
+                      CREATE_STATIC
+                  ]
+                      .filter(helper => ast.helpers.includes(helper))
+                      .map(aliasHelper)
+                      .join(', ');
+                  push(`const { ${staticHelpers} } = _Vue\n`);
+              }
+          }
+      }
+      genHoists(ast.hoists, context);
+      newline();
+      push(`return `);
+  }
+  function genAssets(assets, type, { helper, push, newline, isTS }) {
+      const resolver = helper(type === 'component'
+              ? RESOLVE_COMPONENT
+              : RESOLVE_DIRECTIVE);
+      for (let i = 0; i < assets.length; i++) {
+          let id = assets[i];
+          // potential component implicit self-reference inferred from SFC filename
+          const maybeSelfReference = id.endsWith('__self');
+          if (maybeSelfReference) {
+              id = id.slice(0, -6);
+          }
+          push(`const ${toValidAssetId(id, type)} = ${resolver}(${JSON.stringify(id)}${maybeSelfReference ? `, true` : ``})${isTS ? `!` : ``}`);
+          if (i < assets.length - 1) {
+              newline();
+          }
+      }
+  }
+  function genHoists(hoists, context) {
+      if (!hoists.length) {
+          return;
+      }
+      context.pure = true;
+      const { push, newline, helper, scopeId, mode } = context;
+      newline();
+      for (let i = 0; i < hoists.length; i++) {
+          const exp = hoists[i];
+          if (exp) {
+              push(`const _hoisted_${i + 1} = ${``}`);
+              genNode(exp, context);
+              newline();
+          }
+      }
+      context.pure = false;
+  }
+  function isText$1(n) {
+      return (isString(n) ||
+          n.type === 4 /* SIMPLE_EXPRESSION */ ||
+          n.type === 2 /* TEXT */ ||
+          n.type === 5 /* INTERPOLATION */ ||
+          n.type === 8 /* COMPOUND_EXPRESSION */);
+  }
+  function genNodeListAsArray(nodes, context) {
+      const multilines = nodes.length > 3 ||
+          (nodes.some(n => isArray(n) || !isText$1(n)));
+      context.push(`[`);
+      multilines && context.indent();
+      genNodeList(nodes, context, multilines);
+      multilines && context.deindent();
+      context.push(`]`);
+  }
+  function genNodeList(nodes, context, multilines = false, comma = true) {
+      const { push, newline } = context;
+      for (let i = 0; i < nodes.length; i++) {
+          const node = nodes[i];
+          if (isString(node)) {
+              push(node);
+          }
+          else if (isArray(node)) {
+              genNodeListAsArray(node, context);
+          }
+          else {
+              genNode(node, context);
+          }
+          if (i < nodes.length - 1) {
+              if (multilines) {
+                  comma && push(',');
+                  newline();
+              }
+              else {
+                  comma && push(', ');
+              }
+          }
+      }
+  }
+  function genNode(node, context) {
+      if (isString(node)) {
+          context.push(node);
+          return;
+      }
+      if (isSymbol(node)) {
+          context.push(context.helper(node));
+          return;
+      }
+      switch (node.type) {
+          case 1 /* ELEMENT */:
+          case 9 /* IF */:
+          case 11 /* FOR */:
+              assert(node.codegenNode != null, `Codegen node is missing for element/if/for node. ` +
+                      `Apply appropriate transforms first.`);
+              genNode(node.codegenNode, context);
+              break;
+          case 2 /* TEXT */:
+              genText(node, context);
+              break;
+          case 4 /* SIMPLE_EXPRESSION */:
+              genExpression(node, context);
+              break;
+          case 5 /* INTERPOLATION */:
+              genInterpolation(node, context);
+              break;
+          case 12 /* TEXT_CALL */:
+              genNode(node.codegenNode, context);
+              break;
+          case 8 /* COMPOUND_EXPRESSION */:
+              genCompoundExpression(node, context);
+              break;
+          case 3 /* COMMENT */:
+              genComment(node, context);
+              break;
+          case 13 /* VNODE_CALL */:
+              genVNodeCall(node, context);
+              break;
+          case 14 /* JS_CALL_EXPRESSION */:
+              genCallExpression(node, context);
+              break;
+          case 15 /* JS_OBJECT_EXPRESSION */:
+              genObjectExpression(node, context);
+              break;
+          case 17 /* JS_ARRAY_EXPRESSION */:
+              genArrayExpression(node, context);
+              break;
+          case 18 /* JS_FUNCTION_EXPRESSION */:
+              genFunctionExpression(node, context);
+              break;
+          case 19 /* JS_CONDITIONAL_EXPRESSION */:
+              genConditionalExpression(node, context);
+              break;
+          case 20 /* JS_CACHE_EXPRESSION */:
+              genCacheExpression(node, context);
+              break;
+          case 21 /* JS_BLOCK_STATEMENT */:
+              genNodeList(node.body, context, true, false);
+              break;
+          // SSR only types
+          case 22 /* JS_TEMPLATE_LITERAL */:
+              break;
+          case 23 /* JS_IF_STATEMENT */:
+              break;
+          case 24 /* JS_ASSIGNMENT_EXPRESSION */:
+              break;
+          case 25 /* JS_SEQUENCE_EXPRESSION */:
+              break;
+          case 26 /* JS_RETURN_STATEMENT */:
+              break;
+          /* istanbul ignore next */
+          case 10 /* IF_BRANCH */:
+              // noop
+              break;
+          default:
+              {
+                  assert(false, `unhandled codegen node type: ${node.type}`);
+                  // make sure we exhaust all possible types
+                  const exhaustiveCheck = node;
+                  return exhaustiveCheck;
+              }
+      }
+  }
+  function genText(node, context) {
+      context.push(JSON.stringify(node.content), node);
+  }
+  function genExpression(node, context) {
+      const { content, isStatic } = node;
+      context.push(isStatic ? JSON.stringify(content) : content, node);
+  }
+  function genInterpolation(node, context) {
+      const { push, helper, pure } = context;
+      if (pure)
+          push(PURE_ANNOTATION);
+      push(`${helper(TO_DISPLAY_STRING)}(`);
+      genNode(node.content, context);
+      push(`)`);
+  }
+  function genCompoundExpression(node, context) {
+      for (let i = 0; i < node.children.length; i++) {
+          const child = node.children[i];
+          if (isString(child)) {
+              context.push(child);
+          }
+          else {
+              genNode(child, context);
+          }
+      }
+  }
+  function genExpressionAsPropertyKey(node, context) {
+      const { push } = context;
+      if (node.type === 8 /* COMPOUND_EXPRESSION */) {
+          push(`[`);
+          genCompoundExpression(node, context);
+          push(`]`);
+      }
+      else if (node.isStatic) {
+          // only quote keys if necessary
+          const text = isSimpleIdentifier(node.content)
+              ? node.content
+              : JSON.stringify(node.content);
+          push(text, node);
+      }
+      else {
+          push(`[${node.content}]`, node);
+      }
+  }
+  function genComment(node, context) {
+      const { push, helper, pure } = context;
+      if (pure) {
+          push(PURE_ANNOTATION);
+      }
+      push(`${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`, node);
+  }
+  function genVNodeCall(node, context) {
+      const { push, helper, pure } = context;
+      const { tag, props, children, patchFlag, dynamicProps, directives, isBlock, disableTracking, isComponent } = node;
+      if (directives) {
+          push(helper(WITH_DIRECTIVES) + `(`);
+      }
+      if (isBlock) {
+          push(`(${helper(OPEN_BLOCK)}(${disableTracking ? `true` : ``}), `);
+      }
+      if (pure) {
+          push(PURE_ANNOTATION);
+      }
+      const callHelper = isBlock
+          ? getVNodeBlockHelper(context.inSSR, isComponent)
+          : getVNodeHelper(context.inSSR, isComponent);
+      push(helper(callHelper) + `(`, node);
+      genNodeList(genNullableArgs([tag, props, children, patchFlag, dynamicProps]), context);
+      push(`)`);
+      if (isBlock) {
+          push(`)`);
+      }
+      if (directives) {
+          push(`, `);
+          genNode(directives, context);
+          push(`)`);
+      }
+  }
+  function genNullableArgs(args) {
+      let i = args.length;
+      while (i--) {
+          if (args[i] != null)
+              break;
+      }
+      return args.slice(0, i + 1).map(arg => arg || `null`);
+  }
+  // JavaScript
+  function genCallExpression(node, context) {
+      const { push, helper, pure } = context;
+      const callee = isString(node.callee) ? node.callee : helper(node.callee);
+      if (pure) {
+          push(PURE_ANNOTATION);
+      }
+      push(callee + `(`, node);
+      genNodeList(node.arguments, context);
+      push(`)`);
+  }
+  function genObjectExpression(node, context) {
+      const { push, indent, deindent, newline } = context;
+      const { properties } = node;
+      if (!properties.length) {
+          push(`{}`, node);
+          return;
+      }
+      const multilines = properties.length > 1 ||
+          (properties.some(p => p.value.type !== 4 /* SIMPLE_EXPRESSION */));
+      push(multilines ? `{` : `{ `);
+      multilines && indent();
+      for (let i = 0; i < properties.length; i++) {
+          const { key, value } = properties[i];
+          // key
+          genExpressionAsPropertyKey(key, context);
+          push(`: `);
+          // value
+          genNode(value, context);
+          if (i < properties.length - 1) {
+              // will only reach this if it's multilines
+              push(`,`);
+              newline();
+          }
+      }
+      multilines && deindent();
+      push(multilines ? `}` : ` }`);
+  }
+  function genArrayExpression(node, context) {
+      genNodeListAsArray(node.elements, context);
+  }
+  function genFunctionExpression(node, context) {
+      const { push, indent, deindent } = context;
+      const { params, returns, body, newline, isSlot } = node;
+      if (isSlot) {
+          // wrap slot functions with owner context
+          push(`_${helperNameMap[WITH_CTX]}(`);
+      }
+      push(`(`, node);
+      if (isArray(params)) {
+          genNodeList(params, context);
+      }
+      else if (params) {
+          genNode(params, context);
+      }
+      push(`) => `);
+      if (newline || body) {
+          push(`{`);
+          indent();
+      }
+      if (returns) {
+          if (newline) {
+              push(`return `);
+          }
+          if (isArray(returns)) {
+              genNodeListAsArray(returns, context);
+          }
+          else {
+              genNode(returns, context);
+          }
+      }
+      else if (body) {
+          genNode(body, context);
+      }
+      if (newline || body) {
+          deindent();
+          push(`}`);
+      }
+      if (isSlot) {
+          push(`)`);
+      }
+  }
+  function genConditionalExpression(node, context) {
+      const { test, consequent, alternate, newline: needNewline } = node;
+      const { push, indent, deindent, newline } = context;
+      if (test.type === 4 /* SIMPLE_EXPRESSION */) {
+          const needsParens = !isSimpleIdentifier(test.content);
+          needsParens && push(`(`);
+          genExpression(test, context);
+          needsParens && push(`)`);
+      }
+      else {
+          push(`(`);
+          genNode(test, context);
+          push(`)`);
+      }
+      needNewline && indent();
+      context.indentLevel++;
+      needNewline || push(` `);
+      push(`? `);
+      genNode(consequent, context);
+      context.indentLevel--;
+      needNewline && newline();
+      needNewline || push(` `);
+      push(`: `);
+      const isNested = alternate.type === 19 /* JS_CONDITIONAL_EXPRESSION */;
+      if (!isNested) {
+          context.indentLevel++;
+      }
+      genNode(alternate, context);
+      if (!isNested) {
+          context.indentLevel--;
+      }
+      needNewline && deindent(true /* without newline */);
+  }
+  function genCacheExpression(node, context) {
+      const { push, helper, indent, deindent, newline } = context;
+      push(`_cache[${node.index}] || (`);
+      if (node.isVNode) {
+          indent();
+          push(`${helper(SET_BLOCK_TRACKING)}(-1),`);
+          newline();
+      }
+      push(`_cache[${node.index}] = `);
+      genNode(node.value, context);
+      if (node.isVNode) {
+          push(`,`);
+          newline();
+          push(`${helper(SET_BLOCK_TRACKING)}(1),`);
+          newline();
+          push(`_cache[${node.index}]`);
+          deindent();
+      }
+      push(`)`);
+  }
+
+  // these keywords should not appear inside expressions, but operators like
+  // typeof, instanceof and in are allowed
+  const prohibitedKeywordRE = new RegExp('\\b' +
+      ('do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +
+          'super,throw,while,yield,delete,export,import,return,switch,default,' +
+          'extends,finally,continue,debugger,function,arguments,typeof,void')
+          .split(',')
+          .join('\\b|\\b') +
+      '\\b');
+  // strip strings in expressions
+  const stripStringRE = /'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g;
+  /**
+   * Validate a non-prefixed expression.
+   * This is only called when using the in-browser runtime compiler since it
+   * doesn't prefix expressions.
+   */
+  function validateBrowserExpression(node, context, asParams = false, asRawStatements = false) {
+      const exp = node.content;
+      // empty expressions are validated per-directive since some directives
+      // do allow empty expressions.
+      if (!exp.trim()) {
+          return;
+      }
+      try {
+          new Function(asRawStatements
+              ? ` ${exp} `
+              : `return ${asParams ? `(${exp}) => {}` : `(${exp})`}`);
+      }
+      catch (e) {
+          let message = e.message;
+          const keywordMatch = exp
+              .replace(stripStringRE, '')
+              .match(prohibitedKeywordRE);
+          if (keywordMatch) {
+              message = `avoid using JavaScript keyword as property name: "${keywordMatch[0]}"`;
+          }
+          context.onError(createCompilerError(44 /* X_INVALID_EXPRESSION */, node.loc, undefined, message));
+      }
+  }
+
+  const transformExpression = (node, context) => {
+      if (node.type === 5 /* INTERPOLATION */) {
+          node.content = processExpression(node.content, context);
+      }
+      else if (node.type === 1 /* ELEMENT */) {
+          // handle directives on element
+          for (let i = 0; i < node.props.length; i++) {
+              const dir = node.props[i];
+              // do not process for v-on & v-for since they are special handled
+              if (dir.type === 7 /* DIRECTIVE */ && dir.name !== 'for') {
+                  const exp = dir.exp;
+                  const arg = dir.arg;
+                  // do not process exp if this is v-on:arg - we need special handling
+                  // for wrapping inline statements.
+                  if (exp &&
+                      exp.type === 4 /* SIMPLE_EXPRESSION */ &&
+                      !(dir.name === 'on' && arg)) {
+                      dir.exp = processExpression(exp, context, 
+                      // slot args must be processed as function params
+                      dir.name === 'slot');
+                  }
+                  if (arg && arg.type === 4 /* SIMPLE_EXPRESSION */ && !arg.isStatic) {
+                      dir.arg = processExpression(arg, context);
+                  }
+              }
+          }
+      }
+  };
+  // Important: since this function uses Node.js only dependencies, it should
+  // always be used with a leading !true check so that it can be
+  // tree-shaken from the browser build.
+  function processExpression(node, context, 
+  // some expressions like v-slot props & v-for aliases should be parsed as
+  // function params
+  asParams = false, 
+  // v-on handler values may contain multiple statements
+  asRawStatements = false, localVars = Object.create(context.identifiers)) {
+      {
+          {
+              // simple in-browser validation (same logic in 2.x)
+              validateBrowserExpression(node, context, asParams, asRawStatements);
+          }
+          return node;
+      }
+  }
+
+  const transformIf = createStructuralDirectiveTransform(/^(if|else|else-if)$/, (node, dir, context) => {
+      return processIf(node, dir, context, (ifNode, branch, isRoot) => {
+          // #1587: We need to dynamically increment the key based on the current
+          // node's sibling nodes, since chained v-if/else branches are
+          // rendered at the same depth
+          const siblings = context.parent.children;
+          let i = siblings.indexOf(ifNode);
+          let key = 0;
+          while (i-- >= 0) {
+              const sibling = siblings[i];
+              if (sibling && sibling.type === 9 /* IF */) {
+                  key += sibling.branches.length;
+              }
+          }
+          // Exit callback. Complete the codegenNode when all children have been
+          // transformed.
+          return () => {
+              if (isRoot) {
+                  ifNode.codegenNode = createCodegenNodeForBranch(branch, key, context);
+              }
+              else {
+                  // attach this branch's codegen node to the v-if root.
+                  const parentCondition = getParentCondition(ifNode.codegenNode);
+                  parentCondition.alternate = createCodegenNodeForBranch(branch, key + ifNode.branches.length - 1, context);
+              }
+          };
+      });
+  });
+  // target-agnostic transform used for both Client and SSR
+  function processIf(node, dir, context, processCodegen) {
+      if (dir.name !== 'else' &&
+          (!dir.exp || !dir.exp.content.trim())) {
+          const loc = dir.exp ? dir.exp.loc : node.loc;
+          context.onError(createCompilerError(28 /* X_V_IF_NO_EXPRESSION */, dir.loc));
+          dir.exp = createSimpleExpression(`true`, false, loc);
+      }
+      if (dir.exp) {
+          validateBrowserExpression(dir.exp, context);
+      }
+      if (dir.name === 'if') {
+          const branch = createIfBranch(node, dir);
+          const ifNode = {
+              type: 9 /* IF */,
+              loc: node.loc,
+              branches: [branch]
+          };
+          context.replaceNode(ifNode);
+          if (processCodegen) {
+              return processCodegen(ifNode, branch, true);
+          }
+      }
+      else {
+          // locate the adjacent v-if
+          const siblings = context.parent.children;
+          const comments = [];
+          let i = siblings.indexOf(node);
+          while (i-- >= -1) {
+              const sibling = siblings[i];
+              if (sibling && sibling.type === 3 /* COMMENT */) {
+                  context.removeNode(sibling);
+                  comments.unshift(sibling);
+                  continue;
+              }
+              if (sibling &&
+                  sibling.type === 2 /* TEXT */ &&
+                  !sibling.content.trim().length) {
+                  context.removeNode(sibling);
+                  continue;
+              }
+              if (sibling && sibling.type === 9 /* IF */) {
+                  // Check if v-else was followed by v-else-if
+                  if (dir.name === 'else-if' &&
+                      sibling.branches[sibling.branches.length - 1].condition === undefined) {
+                      context.onError(createCompilerError(30 /* X_V_ELSE_NO_ADJACENT_IF */, node.loc));
+                  }
+                  // move the node to the if node's branches
+                  context.removeNode();
+                  const branch = createIfBranch(node, dir);
+                  if (comments.length &&
+                      // #3619 ignore comments if the v-if is direct child of <transition>
+                      !(context.parent &&
+                          context.parent.type === 1 /* ELEMENT */ &&
+                          isBuiltInType(context.parent.tag, 'transition'))) {
+                      branch.children = [...comments, ...branch.children];
+                  }
+                  // check if user is forcing same key on different branches
+                  {
+                      const key = branch.userKey;
+                      if (key) {
+                          sibling.branches.forEach(({ userKey }) => {
+                              if (isSameKey(userKey, key)) {
+                                  context.onError(createCompilerError(29 /* X_V_IF_SAME_KEY */, branch.userKey.loc));
+                              }
+                          });
+                      }
+                  }
+                  sibling.branches.push(branch);
+                  const onExit = processCodegen && processCodegen(sibling, branch, false);
+                  // since the branch was removed, it will not be traversed.
+                  // make sure to traverse here.
+                  traverseNode(branch, context);
+                  // call on exit
+                  if (onExit)
+                      onExit();
+                  // make sure to reset currentNode after traversal to indicate this
+                  // node has been removed.
+                  context.currentNode = null;
+              }
+              else {
+                  context.onError(createCompilerError(30 /* X_V_ELSE_NO_ADJACENT_IF */, node.loc));
+              }
+              break;
+          }
+      }
+  }
+  function createIfBranch(node, dir) {
+      const isTemplateIf = node.tagType === 3 /* TEMPLATE */;
+      return {
+          type: 10 /* IF_BRANCH */,
+          loc: node.loc,
+          condition: dir.name === 'else' ? undefined : dir.exp,
+          children: isTemplateIf && !findDir(node, 'for') ? node.children : [node],
+          userKey: findProp(node, `key`),
+          isTemplateIf
+      };
+  }
+  function createCodegenNodeForBranch(branch, keyIndex, context) {
+      if (branch.condition) {
+          return createConditionalExpression(branch.condition, createChildrenCodegenNode(branch, keyIndex, context), 
+          // make sure to pass in asBlock: true so that the comment node call
+          // closes the current block.
+          createCallExpression(context.helper(CREATE_COMMENT), [
+              '"v-if"' ,
+              'true'
+          ]));
+      }
+      else {
+          return createChildrenCodegenNode(branch, keyIndex, context);
+      }
+  }
+  function createChildrenCodegenNode(branch, keyIndex, context) {
+      const { helper } = context;
+      const keyProperty = createObjectProperty(`key`, createSimpleExpression(`${keyIndex}`, false, locStub, 2 /* CAN_HOIST */));
+      const { children } = branch;
+      const firstChild = children[0];
+      const needFragmentWrapper = children.length !== 1 || firstChild.type !== 1 /* ELEMENT */;
+      if (needFragmentWrapper) {
+          if (children.length === 1 && firstChild.type === 11 /* FOR */) {
+              // optimize away nested fragments when child is a ForNode
+              const vnodeCall = firstChild.codegenNode;
+              injectProp(vnodeCall, keyProperty, context);
+              return vnodeCall;
+          }
+          else {
+              let patchFlag = 64 /* STABLE_FRAGMENT */;
+              let patchFlagText = PatchFlagNames[64 /* STABLE_FRAGMENT */];
+              // check if the fragment actually contains a single valid child with
+              // the rest being comments
+              if (!branch.isTemplateIf &&
+                  children.filter(c => c.type !== 3 /* COMMENT */).length === 1) {
+                  patchFlag |= 2048 /* DEV_ROOT_FRAGMENT */;
+                  patchFlagText += `, ${PatchFlagNames[2048 /* DEV_ROOT_FRAGMENT */]}`;
+              }
+              return createVNodeCall(context, helper(FRAGMENT), createObjectExpression([keyProperty]), children, patchFlag + (` /* ${patchFlagText} */` ), undefined, undefined, true, false, false /* isComponent */, branch.loc);
+          }
+      }
+      else {
+          const ret = firstChild.codegenNode;
+          const vnodeCall = getMemoedVNodeCall(ret);
+          // Change createVNode to createBlock.
+          if (vnodeCall.type === 13 /* VNODE_CALL */) {
+              makeBlock(vnodeCall, context);
+          }
+          // inject branch key
+          injectProp(vnodeCall, keyProperty, context);
+          return ret;
+      }
+  }
+  function isSameKey(a, b) {
+      if (!a || a.type !== b.type) {
+          return false;
+      }
+      if (a.type === 6 /* ATTRIBUTE */) {
+          if (a.value.content !== b.value.content) {
+              return false;
+          }
+      }
+      else {
+          // directive
+          const exp = a.exp;
+          const branchExp = b.exp;
+          if (exp.type !== branchExp.type) {
+              return false;
+          }
+          if (exp.type !== 4 /* SIMPLE_EXPRESSION */ ||
+              exp.isStatic !== branchExp.isStatic ||
+              exp.content !== branchExp.content) {
+              return false;
+          }
+      }
+      return true;
+  }
+  function getParentCondition(node) {
+      while (true) {
+          if (node.type === 19 /* JS_CONDITIONAL_EXPRESSION */) {
+              if (node.alternate.type === 19 /* JS_CONDITIONAL_EXPRESSION */) {
+                  node = node.alternate;
+              }
+              else {
+                  return node;
+              }
+          }
+          else if (node.type === 20 /* JS_CACHE_EXPRESSION */) {
+              node = node.value;
+          }
+      }
+  }
+
+  const transformFor = createStructuralDirectiveTransform('for', (node, dir, context) => {
+      const { helper, removeHelper } = context;
+      return processFor(node, dir, context, forNode => {
+          // create the loop render function expression now, and add the
+          // iterator on exit after all children have been traversed
+          const renderExp = createCallExpression(helper(RENDER_LIST), [
+              forNode.source
+          ]);
+          const isTemplate = isTemplateNode(node);
+          const memo = findDir(node, 'memo');
+          const keyProp = findProp(node, `key`);
+          const keyExp = keyProp &&
+              (keyProp.type === 6 /* ATTRIBUTE */
+                  ? createSimpleExpression(keyProp.value.content, true)
+                  : keyProp.exp);
+          const keyProperty = keyProp ? createObjectProperty(`key`, keyExp) : null;
+          const isStableFragment = forNode.source.type === 4 /* SIMPLE_EXPRESSION */ &&
+              forNode.source.constType > 0 /* NOT_CONSTANT */;
+          const fragmentFlag = isStableFragment
+              ? 64 /* STABLE_FRAGMENT */
+              : keyProp
+                  ? 128 /* KEYED_FRAGMENT */
+                  : 256 /* UNKEYED_FRAGMENT */;
+          forNode.codegenNode = createVNodeCall(context, helper(FRAGMENT), undefined, renderExp, fragmentFlag +
+              (` /* ${PatchFlagNames[fragmentFlag]} */` ), undefined, undefined, true /* isBlock */, !isStableFragment /* disableTracking */, false /* isComponent */, node.loc);
+          return () => {
+              // finish the codegen now that all children have been traversed
+              let childBlock;
+              const { children } = forNode;
+              // check <template v-for> key placement
+              if (isTemplate) {
+                  node.children.some(c => {
+                      if (c.type === 1 /* ELEMENT */) {
+                          const key = findProp(c, 'key');
+                          if (key) {
+                              context.onError(createCompilerError(33 /* X_V_FOR_TEMPLATE_KEY_PLACEMENT */, key.loc));
+                              return true;
+                          }
+                      }
+                  });
+              }
+              const needFragmentWrapper = children.length !== 1 || children[0].type !== 1 /* ELEMENT */;
+              const slotOutlet = isSlotOutlet(node)
+                  ? node
+                  : isTemplate &&
+                      node.children.length === 1 &&
+                      isSlotOutlet(node.children[0])
+                      ? node.children[0] // api-extractor somehow fails to infer this
+                      : null;
+              if (slotOutlet) {
+                  // <slot v-for="..."> or <template v-for="..."><slot/></template>
+                  childBlock = slotOutlet.codegenNode;
+                  if (isTemplate && keyProperty) {
+                      // <template v-for="..." :key="..."><slot/></template>
+                      // we need to inject the key to the renderSlot() call.
+                      // the props for renderSlot is passed as the 3rd argument.
+                      injectProp(childBlock, keyProperty, context);
+                  }
+              }
+              else if (needFragmentWrapper) {
+                  // <template v-for="..."> with text or multi-elements
+                  // should generate a fragment block for each loop
+                  childBlock = createVNodeCall(context, helper(FRAGMENT), keyProperty ? createObjectExpression([keyProperty]) : undefined, node.children, 64 /* STABLE_FRAGMENT */ +
+                      (` /* ${PatchFlagNames[64 /* STABLE_FRAGMENT */]} */`
+                          ), undefined, undefined, true, undefined, false /* isComponent */);
+              }
+              else {
+                  // Normal element v-for. Directly use the child's codegenNode
+                  // but mark it as a block.
+                  childBlock = children[0]
+                      .codegenNode;
+                  if (isTemplate && keyProperty) {
+                      injectProp(childBlock, keyProperty, context);
+                  }
+                  if (childBlock.isBlock !== !isStableFragment) {
+                      if (childBlock.isBlock) {
+                          // switch from block to vnode
+                          removeHelper(OPEN_BLOCK);
+                          removeHelper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent));
+                      }
+                      else {
+                          // switch from vnode to block
+                          removeHelper(getVNodeHelper(context.inSSR, childBlock.isComponent));
+                      }
+                  }
+                  childBlock.isBlock = !isStableFragment;
+                  if (childBlock.isBlock) {
+                      helper(OPEN_BLOCK);
+                      helper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent));
+                  }
+                  else {
+                      helper(getVNodeHelper(context.inSSR, childBlock.isComponent));
+                  }
+              }
+              if (memo) {
+                  const loop = createFunctionExpression(createForLoopParams(forNode.parseResult, [
+                      createSimpleExpression(`_cached`)
+                  ]));
+                  loop.body = createBlockStatement([
+                      createCompoundExpression([`const _memo = (`, memo.exp, `)`]),
+                      createCompoundExpression([
+                          `if (_cached`,
+                          ...(keyExp ? [` && _cached.key === `, keyExp] : []),
+                          ` && ${context.helperString(IS_MEMO_SAME)}(_cached, _memo)) return _cached`
+                      ]),
+                      createCompoundExpression([`const _item = `, childBlock]),
+                      createSimpleExpression(`_item.memo = _memo`),
+                      createSimpleExpression(`return _item`)
+                  ]);
+                  renderExp.arguments.push(loop, createSimpleExpression(`_cache`), createSimpleExpression(String(context.cached++)));
+              }
+              else {
+                  renderExp.arguments.push(createFunctionExpression(createForLoopParams(forNode.parseResult), childBlock, true /* force newline */));
+              }
+          };
+      });
+  });
+  // target-agnostic transform used for both Client and SSR
+  function processFor(node, dir, context, processCodegen) {
+      if (!dir.exp) {
+          context.onError(createCompilerError(31 /* X_V_FOR_NO_EXPRESSION */, dir.loc));
+          return;
+      }
+      const parseResult = parseForExpression(
+      // can only be simple expression because vFor transform is applied
+      // before expression transform.
+      dir.exp, context);
+      if (!parseResult) {
+          context.onError(createCompilerError(32 /* X_V_FOR_MALFORMED_EXPRESSION */, dir.loc));
+          return;
+      }
+      const { addIdentifiers, removeIdentifiers, scopes } = context;
+      const { source, value, key, index } = parseResult;
+      const forNode = {
+          type: 11 /* FOR */,
+          loc: dir.loc,
+          source,
+          valueAlias: value,
+          keyAlias: key,
+          objectIndexAlias: index,
+          parseResult,
+          children: isTemplateNode(node) ? node.children : [node]
+      };
+      context.replaceNode(forNode);
+      // bookkeeping
+      scopes.vFor++;
+      const onExit = processCodegen && processCodegen(forNode);
+      return () => {
+          scopes.vFor--;
+          if (onExit)
+              onExit();
+      };
+  }
+  const forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/;
+  // This regex doesn't cover the case if key or index aliases have destructuring,
+  // but those do not make sense in the first place, so this works in practice.
+  const forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/;
+  const stripParensRE = /^\(|\)$/g;
+  function parseForExpression(input, context) {
+      const loc = input.loc;
+      const exp = input.content;
+      const inMatch = exp.match(forAliasRE);
+      if (!inMatch)
+          return;
+      const [, LHS, RHS] = inMatch;
+      const result = {
+          source: createAliasExpression(loc, RHS.trim(), exp.indexOf(RHS, LHS.length)),
+          value: undefined,
+          key: undefined,
+          index: undefined
+      };
+      {
+          validateBrowserExpression(result.source, context);
+      }
+      let valueContent = LHS.trim().replace(stripParensRE, '').trim();
+      const trimmedOffset = LHS.indexOf(valueContent);
+      const iteratorMatch = valueContent.match(forIteratorRE);
+      if (iteratorMatch) {
+          valueContent = valueContent.replace(forIteratorRE, '').trim();
+          const keyContent = iteratorMatch[1].trim();
+          let keyOffset;
+          if (keyContent) {
+              keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length);
+              result.key = createAliasExpression(loc, keyContent, keyOffset);
+              {
+                  validateBrowserExpression(result.key, context, true);
+              }
+          }
+          if (iteratorMatch[2]) {
+              const indexContent = iteratorMatch[2].trim();
+              if (indexContent) {
+                  result.index = createAliasExpression(loc, indexContent, exp.indexOf(indexContent, result.key
+                      ? keyOffset + keyContent.length
+                      : trimmedOffset + valueContent.length));
+                  {
+                      validateBrowserExpression(result.index, context, true);
+                  }
+              }
+          }
+      }
+      if (valueContent) {
+          result.value = createAliasExpression(loc, valueContent, trimmedOffset);
+          {
+              validateBrowserExpression(result.value, context, true);
+          }
+      }
+      return result;
+  }
+  function createAliasExpression(range, content, offset) {
+      return createSimpleExpression(content, false, getInnerRange(range, offset, content.length));
+  }
+  function createForLoopParams({ value, key, index }, memoArgs = []) {
+      return createParamsList([value, key, index, ...memoArgs]);
+  }
+  function createParamsList(args) {
+      let i = args.length;
+      while (i--) {
+          if (args[i])
+              break;
+      }
+      return args
+          .slice(0, i + 1)
+          .map((arg, i) => arg || createSimpleExpression(`_`.repeat(i + 1), false));
+  }
+
+  const defaultFallback = createSimpleExpression(`undefined`, false);
+  // A NodeTransform that:
+  // 1. Tracks scope identifiers for scoped slots so that they don't get prefixed
+  //    by transformExpression. This is only applied in non-browser builds with
+  //    { prefixIdentifiers: true }.
+  // 2. Track v-slot depths so that we know a slot is inside another slot.
+  //    Note the exit callback is executed before buildSlots() on the same node,
+  //    so only nested slots see positive numbers.
+  const trackSlotScopes = (node, context) => {
+      if (node.type === 1 /* ELEMENT */ &&
+          (node.tagType === 1 /* COMPONENT */ ||
+              node.tagType === 3 /* TEMPLATE */)) {
+          // We are only checking non-empty v-slot here
+          // since we only care about slots that introduce scope variables.
+          const vSlot = findDir(node, 'slot');
+          if (vSlot) {
+              vSlot.exp;
+              context.scopes.vSlot++;
+              return () => {
+                  context.scopes.vSlot--;
+              };
+          }
+      }
+  };
+  const buildClientSlotFn = (props, children, loc) => createFunctionExpression(props, children, false /* newline */, true /* isSlot */, children.length ? children[0].loc : loc);
+  // Instead of being a DirectiveTransform, v-slot processing is called during
+  // transformElement to build the slots object for a component.
+  function buildSlots(node, context, buildSlotFn = buildClientSlotFn) {
+      context.helper(WITH_CTX);
+      const { children, loc } = node;
+      const slotsProperties = [];
+      const dynamicSlots = [];
+      // If the slot is inside a v-for or another v-slot, force it to be dynamic
+      // since it likely uses a scope variable.
+      let hasDynamicSlots = context.scopes.vSlot > 0 || context.scopes.vFor > 0;
+      // 1. Check for slot with slotProps on component itself.
+      //    <Comp v-slot="{ prop }"/>
+      const onComponentSlot = findDir(node, 'slot', true);
+      if (onComponentSlot) {
+          const { arg, exp } = onComponentSlot;
+          if (arg && !isStaticExp(arg)) {
+              hasDynamicSlots = true;
+          }
+          slotsProperties.push(createObjectProperty(arg || createSimpleExpression('default', true), buildSlotFn(exp, children, loc)));
+      }
+      // 2. Iterate through children and check for template slots
+      //    <template v-slot:foo="{ prop }">
+      let hasTemplateSlots = false;
+      let hasNamedDefaultSlot = false;
+      const implicitDefaultChildren = [];
+      const seenSlotNames = new Set();
+      for (let i = 0; i < children.length; i++) {
+          const slotElement = children[i];
+          let slotDir;
+          if (!isTemplateNode(slotElement) ||
+              !(slotDir = findDir(slotElement, 'slot', true))) {
+              // not a <template v-slot>, skip.
+              if (slotElement.type !== 3 /* COMMENT */) {
+                  implicitDefaultChildren.push(slotElement);
+              }
+              continue;
+          }
+          if (onComponentSlot) {
+              // already has on-component slot - this is incorrect usage.
+              context.onError(createCompilerError(37 /* X_V_SLOT_MIXED_SLOT_USAGE */, slotDir.loc));
+              break;
+          }
+          hasTemplateSlots = true;
+          const { children: slotChildren, loc: slotLoc } = slotElement;
+          const { arg: slotName = createSimpleExpression(`default`, true), exp: slotProps, loc: dirLoc } = slotDir;
+          // check if name is dynamic.
+          let staticSlotName;
+          if (isStaticExp(slotName)) {
+              staticSlotName = slotName ? slotName.content : `default`;
+          }
+          else {
+              hasDynamicSlots = true;
+          }
+          const slotFunction = buildSlotFn(slotProps, slotChildren, slotLoc);
+          // check if this slot is conditional (v-if/v-for)
+          let vIf;
+          let vElse;
+          let vFor;
+          if ((vIf = findDir(slotElement, 'if'))) {
+              hasDynamicSlots = true;
+              dynamicSlots.push(createConditionalExpression(vIf.exp, buildDynamicSlot(slotName, slotFunction), defaultFallback));
+          }
+          else if ((vElse = findDir(slotElement, /^else(-if)?$/, true /* allowEmpty */))) {
+              // find adjacent v-if
+              let j = i;
+              let prev;
+              while (j--) {
+                  prev = children[j];
+                  if (prev.type !== 3 /* COMMENT */) {
+                      break;
+                  }
+              }
+              if (prev && isTemplateNode(prev) && findDir(prev, 'if')) {
+                  // remove node
+                  children.splice(i, 1);
+                  i--;
+                  // attach this slot to previous conditional
+                  let conditional = dynamicSlots[dynamicSlots.length - 1];
+                  while (conditional.alternate.type === 19 /* JS_CONDITIONAL_EXPRESSION */) {
+                      conditional = conditional.alternate;
+                  }
+                  conditional.alternate = vElse.exp
+                      ? createConditionalExpression(vElse.exp, buildDynamicSlot(slotName, slotFunction), defaultFallback)
+                      : buildDynamicSlot(slotName, slotFunction);
+              }
+              else {
+                  context.onError(createCompilerError(30 /* X_V_ELSE_NO_ADJACENT_IF */, vElse.loc));
+              }
+          }
+          else if ((vFor = findDir(slotElement, 'for'))) {
+              hasDynamicSlots = true;
+              const parseResult = vFor.parseResult ||
+                  parseForExpression(vFor.exp, context);
+              if (parseResult) {
+                  // Render the dynamic slots as an array and add it to the createSlot()
+                  // args. The runtime knows how to handle it appropriately.
+                  dynamicSlots.push(createCallExpression(context.helper(RENDER_LIST), [
+                      parseResult.source,
+                      createFunctionExpression(createForLoopParams(parseResult), buildDynamicSlot(slotName, slotFunction), true /* force newline */)
+                  ]));
+              }
+              else {
+                  context.onError(createCompilerError(32 /* X_V_FOR_MALFORMED_EXPRESSION */, vFor.loc));
+              }
+          }
+          else {
+              // check duplicate static names
+              if (staticSlotName) {
+                  if (seenSlotNames.has(staticSlotName)) {
+                      context.onError(createCompilerError(38 /* X_V_SLOT_DUPLICATE_SLOT_NAMES */, dirLoc));
+                      continue;
+                  }
+                  seenSlotNames.add(staticSlotName);
+                  if (staticSlotName === 'default') {
+                      hasNamedDefaultSlot = true;
+                  }
+              }
+              slotsProperties.push(createObjectProperty(slotName, slotFunction));
+          }
+      }
+      if (!onComponentSlot) {
+          const buildDefaultSlotProperty = (props, children) => {
+              const fn = buildSlotFn(props, children, loc);
+              return createObjectProperty(`default`, fn);
+          };
+          if (!hasTemplateSlots) {
+              // implicit default slot (on component)
+              slotsProperties.push(buildDefaultSlotProperty(undefined, children));
+          }
+          else if (implicitDefaultChildren.length &&
+              // #3766
+              // with whitespace: 'preserve', whitespaces between slots will end up in
+              // implicitDefaultChildren. Ignore if all implicit children are whitespaces.
+              implicitDefaultChildren.some(node => isNonWhitespaceContent(node))) {
+              // implicit default slot (mixed with named slots)
+              if (hasNamedDefaultSlot) {
+                  context.onError(createCompilerError(39 /* X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN */, implicitDefaultChildren[0].loc));
+              }
+              else {
+                  slotsProperties.push(buildDefaultSlotProperty(undefined, implicitDefaultChildren));
+              }
+          }
+      }
+      const slotFlag = hasDynamicSlots
+          ? 2 /* DYNAMIC */
+          : hasForwardedSlots(node.children)
+              ? 3 /* FORWARDED */
+              : 1 /* STABLE */;
+      let slots = createObjectExpression(slotsProperties.concat(createObjectProperty(`_`, 
+      // 2 = compiled but dynamic = can skip normalization, but must run diff
+      // 1 = compiled and static = can skip normalization AND diff as optimized
+      createSimpleExpression(slotFlag + (` /* ${slotFlagsText[slotFlag]} */` ), false))), loc);
+      if (dynamicSlots.length) {
+          slots = createCallExpression(context.helper(CREATE_SLOTS), [
+              slots,
+              createArrayExpression(dynamicSlots)
+          ]);
+      }
+      return {
+          slots,
+          hasDynamicSlots
+      };
+  }
+  function buildDynamicSlot(name, fn) {
+      return createObjectExpression([
+          createObjectProperty(`name`, name),
+          createObjectProperty(`fn`, fn)
+      ]);
+  }
+  function hasForwardedSlots(children) {
+      for (let i = 0; i < children.length; i++) {
+          const child = children[i];
+          switch (child.type) {
+              case 1 /* ELEMENT */:
+                  if (child.tagType === 2 /* SLOT */ ||
+                      hasForwardedSlots(child.children)) {
+                      return true;
+                  }
+                  break;
+              case 9 /* IF */:
+                  if (hasForwardedSlots(child.branches))
+                      return true;
+                  break;
+              case 10 /* IF_BRANCH */:
+              case 11 /* FOR */:
+                  if (hasForwardedSlots(child.children))
+                      return true;
+                  break;
+          }
+      }
+      return false;
+  }
+  function isNonWhitespaceContent(node) {
+      if (node.type !== 2 /* TEXT */ && node.type !== 12 /* TEXT_CALL */)
+          return true;
+      return node.type === 2 /* TEXT */
+          ? !!node.content.trim()
+          : isNonWhitespaceContent(node.content);
+  }
+
+  // some directive transforms (e.g. v-model) may return a symbol for runtime
+  // import, which should be used instead of a resolveDirective call.
+  const directiveImportMap = new WeakMap();
+  // generate a JavaScript AST for this element's codegen
+  const transformElement = (node, context) => {
+      // perform the work on exit, after all child expressions have been
+      // processed and merged.
+      return function postTransformElement() {
+          node = context.currentNode;
+          if (!(node.type === 1 /* ELEMENT */ &&
+              (node.tagType === 0 /* ELEMENT */ ||
+                  node.tagType === 1 /* COMPONENT */))) {
+              return;
+          }
+          const { tag, props } = node;
+          const isComponent = node.tagType === 1 /* COMPONENT */;
+          // The goal of the transform is to create a codegenNode implementing the
+          // VNodeCall interface.
+          let vnodeTag = isComponent
+              ? resolveComponentType(node, context)
+              : `"${tag}"`;
+          const isDynamicComponent = isObject(vnodeTag) && vnodeTag.callee === RESOLVE_DYNAMIC_COMPONENT;
+          let vnodeProps;
+          let vnodeChildren;
+          let vnodePatchFlag;
+          let patchFlag = 0;
+          let vnodeDynamicProps;
+          let dynamicPropNames;
+          let vnodeDirectives;
+          let shouldUseBlock = 
+          // dynamic component may resolve to plain elements
+          isDynamicComponent ||
+              vnodeTag === TELEPORT ||
+              vnodeTag === SUSPENSE ||
+              (!isComponent &&
+                  // <svg> and <foreignObject> must be forced into blocks so that block
+                  // updates inside get proper isSVG flag at runtime. (#639, #643)
+                  // This is technically web-specific, but splitting the logic out of core
+                  // leads to too much unnecessary complexity.
+                  (tag === 'svg' || tag === 'foreignObject'));
+          // props
+          if (props.length > 0) {
+              const propsBuildResult = buildProps(node, context, undefined, isComponent, isDynamicComponent);
+              vnodeProps = propsBuildResult.props;
+              patchFlag = propsBuildResult.patchFlag;
+              dynamicPropNames = propsBuildResult.dynamicPropNames;
+              const directives = propsBuildResult.directives;
+              vnodeDirectives =
+                  directives && directives.length
+                      ? createArrayExpression(directives.map(dir => buildDirectiveArgs(dir, context)))
+                      : undefined;
+              if (propsBuildResult.shouldUseBlock) {
+                  shouldUseBlock = true;
+              }
+          }
+          // children
+          if (node.children.length > 0) {
+              if (vnodeTag === KEEP_ALIVE) {
+                  // Although a built-in component, we compile KeepAlive with raw children
+                  // instead of slot functions so that it can be used inside Transition
+                  // or other Transition-wrapping HOCs.
+                  // To ensure correct updates with block optimizations, we need to:
+                  // 1. Force keep-alive into a block. This avoids its children being
+                  //    collected by a parent block.
+                  shouldUseBlock = true;
+                  // 2. Force keep-alive to always be updated, since it uses raw children.
+                  patchFlag |= 1024 /* DYNAMIC_SLOTS */;
+                  if (node.children.length > 1) {
+                      context.onError(createCompilerError(45 /* X_KEEP_ALIVE_INVALID_CHILDREN */, {
+                          start: node.children[0].loc.start,
+                          end: node.children[node.children.length - 1].loc.end,
+                          source: ''
+                      }));
+                  }
+              }
+              const shouldBuildAsSlots = isComponent &&
+                  // Teleport is not a real component and has dedicated runtime handling
+                  vnodeTag !== TELEPORT &&
+                  // explained above.
+                  vnodeTag !== KEEP_ALIVE;
+              if (shouldBuildAsSlots) {
+                  const { slots, hasDynamicSlots } = buildSlots(node, context);
+                  vnodeChildren = slots;
+                  if (hasDynamicSlots) {
+                      patchFlag |= 1024 /* DYNAMIC_SLOTS */;
+                  }
+              }
+              else if (node.children.length === 1 && vnodeTag !== TELEPORT) {
+                  const child = node.children[0];
+                  const type = child.type;
+                  // check for dynamic text children
+                  const hasDynamicTextChild = type === 5 /* INTERPOLATION */ ||
+                      type === 8 /* COMPOUND_EXPRESSION */;
+                  if (hasDynamicTextChild &&
+                      getConstantType(child, context) === 0 /* NOT_CONSTANT */) {
+                      patchFlag |= 1 /* TEXT */;
+                  }
+                  // pass directly if the only child is a text node
+                  // (plain / interpolation / expression)
+                  if (hasDynamicTextChild || type === 2 /* TEXT */) {
+                      vnodeChildren = child;
+                  }
+                  else {
+                      vnodeChildren = node.children;
+                  }
+              }
+              else {
+                  vnodeChildren = node.children;
+              }
+          }
+          // patchFlag & dynamicPropNames
+          if (patchFlag !== 0) {
+              {
+                  if (patchFlag < 0) {
+                      // special flags (negative and mutually exclusive)
+                      vnodePatchFlag = patchFlag + ` /* ${PatchFlagNames[patchFlag]} */`;
+                  }
+                  else {
+                      // bitwise flags
+                      const flagNames = Object.keys(PatchFlagNames)
+                          .map(Number)
+                          .filter(n => n > 0 && patchFlag & n)
+                          .map(n => PatchFlagNames[n])
+                          .join(`, `);
+                      vnodePatchFlag = patchFlag + ` /* ${flagNames} */`;
+                  }
+              }
+              if (dynamicPropNames && dynamicPropNames.length) {
+                  vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames);
+              }
+          }
+          node.codegenNode = createVNodeCall(context, vnodeTag, vnodeProps, vnodeChildren, vnodePatchFlag, vnodeDynamicProps, vnodeDirectives, !!shouldUseBlock, false /* disableTracking */, isComponent, node.loc);
+      };
+  };
+  function resolveComponentType(node, context, ssr = false) {
+      let { tag } = node;
+      // 1. dynamic component
+      const isExplicitDynamic = isComponentTag(tag);
+      const isProp = findProp(node, 'is');
+      if (isProp) {
+          if (isExplicitDynamic ||
+              (false )) {
+              const exp = isProp.type === 6 /* ATTRIBUTE */
+                  ? isProp.value && createSimpleExpression(isProp.value.content, true)
+                  : isProp.exp;
+              if (exp) {
+                  return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [
+                      exp
+                  ]);
+              }
+          }
+          else if (isProp.type === 6 /* ATTRIBUTE */ &&
+              isProp.value.content.startsWith('vue:')) {
+              // <button is="vue:xxx">
+              // if not <component>, only is value that starts with "vue:" will be
+              // treated as component by the parse phase and reach here, unless it's
+              // compat mode where all is values are considered components
+              tag = isProp.value.content.slice(4);
+          }
+      }
+      // 1.5 v-is (TODO: Deprecate)
+      const isDir = !isExplicitDynamic && findDir(node, 'is');
+      if (isDir && isDir.exp) {
+          return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [
+              isDir.exp
+          ]);
+      }
+      // 2. built-in components (Teleport, Transition, KeepAlive, Suspense...)
+      const builtIn = isCoreComponent(tag) || context.isBuiltInComponent(tag);
+      if (builtIn) {
+          // built-ins are simply fallthroughs / have special handling during ssr
+          // so we don't need to import their runtime equivalents
+          if (!ssr)
+              context.helper(builtIn);
+          return builtIn;
+      }
+      // 5. user component (resolve)
+      context.helper(RESOLVE_COMPONENT);
+      context.components.add(tag);
+      return toValidAssetId(tag, `component`);
+  }
+  function buildProps(node, context, props = node.props, isComponent, isDynamicComponent, ssr = false) {
+      const { tag, loc: elementLoc, children } = node;
+      let properties = [];
+      const mergeArgs = [];
+      const runtimeDirectives = [];
+      const hasChildren = children.length > 0;
+      let shouldUseBlock = false;
+      // patchFlag analysis
+      let patchFlag = 0;
+      let hasRef = false;
+      let hasClassBinding = false;
+      let hasStyleBinding = false;
+      let hasHydrationEventBinding = false;
+      let hasDynamicKeys = false;
+      let hasVnodeHook = false;
+      const dynamicPropNames = [];
+      const analyzePatchFlag = ({ key, value }) => {
+          if (isStaticExp(key)) {
+              const name = key.content;
+              const isEventHandler = isOn(name);
+              if (isEventHandler &&
+                  (!isComponent || isDynamicComponent) &&
+                  // omit the flag for click handlers because hydration gives click
+                  // dedicated fast path.
+                  name.toLowerCase() !== 'onclick' &&
+                  // omit v-model handlers
+                  name !== 'onUpdate:modelValue' &&
+                  // omit onVnodeXXX hooks
+                  !isReservedProp(name)) {
+                  hasHydrationEventBinding = true;
+              }
+              if (isEventHandler && isReservedProp(name)) {
+                  hasVnodeHook = true;
+              }
+              if (value.type === 20 /* JS_CACHE_EXPRESSION */ ||
+                  ((value.type === 4 /* SIMPLE_EXPRESSION */ ||
+                      value.type === 8 /* COMPOUND_EXPRESSION */) &&
+                      getConstantType(value, context) > 0)) {
+                  // skip if the prop is a cached handler or has constant value
+                  return;
+              }
+              if (name === 'ref') {
+                  hasRef = true;
+              }
+              else if (name === 'class') {
+                  hasClassBinding = true;
+              }
+              else if (name === 'style') {
+                  hasStyleBinding = true;
+              }
+              else if (name !== 'key' && !dynamicPropNames.includes(name)) {
+                  dynamicPropNames.push(name);
+              }
+              // treat the dynamic class and style binding of the component as dynamic props
+              if (isComponent &&
+                  (name === 'class' || name === 'style') &&
+                  !dynamicPropNames.includes(name)) {
+                  dynamicPropNames.push(name);
+              }
+          }
+          else {
+              hasDynamicKeys = true;
+          }
+      };
+      for (let i = 0; i < props.length; i++) {
+          // static attribute
+          const prop = props[i];
+          if (prop.type === 6 /* ATTRIBUTE */) {
+              const { loc, name, value } = prop;
+              let isStatic = true;
+              if (name === 'ref') {
+                  hasRef = true;
+                  if (context.scopes.vFor > 0) {
+                      properties.push(createObjectProperty(createSimpleExpression('ref_for', true), createSimpleExpression('true')));
+                  }
+              }
+              // skip is on <component>, or is="vue:xxx"
+              if (name === 'is' &&
+                  (isComponentTag(tag) ||
+                      (value && value.content.startsWith('vue:')) ||
+                      (false ))) {
+                  continue;
+              }
+              properties.push(createObjectProperty(createSimpleExpression(name, true, getInnerRange(loc, 0, name.length)), createSimpleExpression(value ? value.content : '', isStatic, value ? value.loc : loc)));
+          }
+          else {
+              // directives
+              const { name, arg, exp, loc } = prop;
+              const isVBind = name === 'bind';
+              const isVOn = name === 'on';
+              // skip v-slot - it is handled by its dedicated transform.
+              if (name === 'slot') {
+                  if (!isComponent) {
+                      context.onError(createCompilerError(40 /* X_V_SLOT_MISPLACED */, loc));
+                  }
+                  continue;
+              }
+              // skip v-once/v-memo - they are handled by dedicated transforms.
+              if (name === 'once' || name === 'memo') {
+                  continue;
+              }
+              // skip v-is and :is on <component>
+              if (name === 'is' ||
+                  (isVBind &&
+                      isStaticArgOf(arg, 'is') &&
+                      (isComponentTag(tag) ||
+                          (false )))) {
+                  continue;
+              }
+              // skip v-on in SSR compilation
+              if (isVOn && ssr) {
+                  continue;
+              }
+              if (
+              // #938: elements with dynamic keys should be forced into blocks
+              (isVBind && isStaticArgOf(arg, 'key')) ||
+                  // inline before-update hooks need to force block so that it is invoked
+                  // before children
+                  (isVOn && hasChildren && isStaticArgOf(arg, 'vue:before-update'))) {
+                  shouldUseBlock = true;
+              }
+              if (isVBind && isStaticArgOf(arg, 'ref') && context.scopes.vFor > 0) {
+                  properties.push(createObjectProperty(createSimpleExpression('ref_for', true), createSimpleExpression('true')));
+              }
+              // special case for v-bind and v-on with no argument
+              if (!arg && (isVBind || isVOn)) {
+                  hasDynamicKeys = true;
+                  if (exp) {
+                      if (properties.length) {
+                          mergeArgs.push(createObjectExpression(dedupeProperties(properties), elementLoc));
+                          properties = [];
+                      }
+                      if (isVBind) {
+                          mergeArgs.push(exp);
+                      }
+                      else {
+                          // v-on="obj" -> toHandlers(obj)
+                          mergeArgs.push({
+                              type: 14 /* JS_CALL_EXPRESSION */,
+                              loc,
+                              callee: context.helper(TO_HANDLERS),
+                              arguments: [exp]
+                          });
+                      }
+                  }
+                  else {
+                      context.onError(createCompilerError(isVBind
+                          ? 34 /* X_V_BIND_NO_EXPRESSION */
+                          : 35 /* X_V_ON_NO_EXPRESSION */, loc));
+                  }
+                  continue;
+              }
+              const directiveTransform = context.directiveTransforms[name];
+              if (directiveTransform) {
+                  // has built-in directive transform.
+                  const { props, needRuntime } = directiveTransform(prop, node, context);
+                  !ssr && props.forEach(analyzePatchFlag);
+                  properties.push(...props);
+                  if (needRuntime) {
+                      runtimeDirectives.push(prop);
+                      if (isSymbol(needRuntime)) {
+                          directiveImportMap.set(prop, needRuntime);
+                      }
+                  }
+              }
+              else if (!isBuiltInDirective(name)) {
+                  // no built-in transform, this is a user custom directive.
+                  runtimeDirectives.push(prop);
+                  // custom dirs may use beforeUpdate so they need to force blocks
+                  // to ensure before-update gets called before children update
+                  if (hasChildren) {
+                      shouldUseBlock = true;
+                  }
+              }
+          }
+      }
+      let propsExpression = undefined;
+      // has v-bind="object" or v-on="object", wrap with mergeProps
+      if (mergeArgs.length) {
+          if (properties.length) {
+              mergeArgs.push(createObjectExpression(dedupeProperties(properties), elementLoc));
+          }
+          if (mergeArgs.length > 1) {
+              propsExpression = createCallExpression(context.helper(MERGE_PROPS), mergeArgs, elementLoc);
+          }
+          else {
+              // single v-bind with nothing else - no need for a mergeProps call
+              propsExpression = mergeArgs[0];
+          }
+      }
+      else if (properties.length) {
+          propsExpression = createObjectExpression(dedupeProperties(properties), elementLoc);
+      }
+      // patchFlag analysis
+      if (hasDynamicKeys) {
+          patchFlag |= 16 /* FULL_PROPS */;
+      }
+      else {
+          if (hasClassBinding && !isComponent) {
+              patchFlag |= 2 /* CLASS */;
+          }
+          if (hasStyleBinding && !isComponent) {
+              patchFlag |= 4 /* STYLE */;
+          }
+          if (dynamicPropNames.length) {
+              patchFlag |= 8 /* PROPS */;
+          }
+          if (hasHydrationEventBinding) {
+              patchFlag |= 32 /* HYDRATE_EVENTS */;
+          }
+      }
+      if (!shouldUseBlock &&
+          (patchFlag === 0 || patchFlag === 32 /* HYDRATE_EVENTS */) &&
+          (hasRef || hasVnodeHook || runtimeDirectives.length > 0)) {
+          patchFlag |= 512 /* NEED_PATCH */;
+      }
+      // pre-normalize props, SSR is skipped for now
+      if (!context.inSSR && propsExpression) {
+          switch (propsExpression.type) {
+              case 15 /* JS_OBJECT_EXPRESSION */:
+                  // means that there is no v-bind,
+                  // but still need to deal with dynamic key binding
+                  let classKeyIndex = -1;
+                  let styleKeyIndex = -1;
+                  let hasDynamicKey = false;
+                  for (let i = 0; i < propsExpression.properties.length; i++) {
+                      const key = propsExpression.properties[i].key;
+                      if (isStaticExp(key)) {
+                          if (key.content === 'class') {
+                              classKeyIndex = i;
+                          }
+                          else if (key.content === 'style') {
+                              styleKeyIndex = i;
+                          }
+                      }
+                      else if (!key.isHandlerKey) {
+                          hasDynamicKey = true;
+                      }
+                  }
+                  const classProp = propsExpression.properties[classKeyIndex];
+                  const styleProp = propsExpression.properties[styleKeyIndex];
+                  // no dynamic key
+                  if (!hasDynamicKey) {
+                      if (classProp && !isStaticExp(classProp.value)) {
+                          classProp.value = createCallExpression(context.helper(NORMALIZE_CLASS), [classProp.value]);
+                      }
+                      if (styleProp &&
+                          // the static style is compiled into an object,
+                          // so use `hasStyleBinding` to ensure that it is a dynamic style binding
+                          (hasStyleBinding ||
+                              (styleProp.value.type === 4 /* SIMPLE_EXPRESSION */ &&
+                                  styleProp.value.content.trim()[0] === `[`) ||
+                              // v-bind:style and style both exist,
+                              // v-bind:style with static literal object
+                              styleProp.value.type === 17 /* JS_ARRAY_EXPRESSION */)) {
+                          styleProp.value = createCallExpression(context.helper(NORMALIZE_STYLE), [styleProp.value]);
+                      }
+                  }
+                  else {
+                      // dynamic key binding, wrap with `normalizeProps`
+                      propsExpression = createCallExpression(context.helper(NORMALIZE_PROPS), [propsExpression]);
+                  }
+                  break;
+              case 14 /* JS_CALL_EXPRESSION */:
+                  // mergeProps call, do nothing
+                  break;
+              default:
+                  // single v-bind
+                  propsExpression = createCallExpression(context.helper(NORMALIZE_PROPS), [
+                      createCallExpression(context.helper(GUARD_REACTIVE_PROPS), [
+                          propsExpression
+                      ])
+                  ]);
+                  break;
+          }
+      }
+      return {
+          props: propsExpression,
+          directives: runtimeDirectives,
+          patchFlag,
+          dynamicPropNames,
+          shouldUseBlock
+      };
+  }
+  // Dedupe props in an object literal.
+  // Literal duplicated attributes would have been warned during the parse phase,
+  // however, it's possible to encounter duplicated `onXXX` handlers with different
+  // modifiers. We also need to merge static and dynamic class / style attributes.
+  // - onXXX handlers / style: merge into array
+  // - class: merge into single expression with concatenation
+  function dedupeProperties(properties) {
+      const knownProps = new Map();
+      const deduped = [];
+      for (let i = 0; i < properties.length; i++) {
+          const prop = properties[i];
+          // dynamic keys are always allowed
+          if (prop.key.type === 8 /* COMPOUND_EXPRESSION */ || !prop.key.isStatic) {
+              deduped.push(prop);
+              continue;
+          }
+          const name = prop.key.content;
+          const existing = knownProps.get(name);
+          if (existing) {
+              if (name === 'style' || name === 'class' || isOn(name)) {
+                  mergeAsArray$1(existing, prop);
+              }
+              // unexpected duplicate, should have emitted error during parse
+          }
+          else {
+              knownProps.set(name, prop);
+              deduped.push(prop);
+          }
+      }
+      return deduped;
+  }
+  function mergeAsArray$1(existing, incoming) {
+      if (existing.value.type === 17 /* JS_ARRAY_EXPRESSION */) {
+          existing.value.elements.push(incoming.value);
+      }
+      else {
+          existing.value = createArrayExpression([existing.value, incoming.value], existing.loc);
+      }
+  }
+  function buildDirectiveArgs(dir, context) {
+      const dirArgs = [];
+      const runtime = directiveImportMap.get(dir);
+      if (runtime) {
+          // built-in directive with runtime
+          dirArgs.push(context.helperString(runtime));
+      }
+      else {
+          {
+              // inject statement for resolving directive
+              context.helper(RESOLVE_DIRECTIVE);
+              context.directives.add(dir.name);
+              dirArgs.push(toValidAssetId(dir.name, `directive`));
+          }
+      }
+      const { loc } = dir;
+      if (dir.exp)
+          dirArgs.push(dir.exp);
+      if (dir.arg) {
+          if (!dir.exp) {
+              dirArgs.push(`void 0`);
+          }
+          dirArgs.push(dir.arg);
+      }
+      if (Object.keys(dir.modifiers).length) {
+          if (!dir.arg) {
+              if (!dir.exp) {
+                  dirArgs.push(`void 0`);
+              }
+              dirArgs.push(`void 0`);
+          }
+          const trueExpression = createSimpleExpression(`true`, false, loc);
+          dirArgs.push(createObjectExpression(dir.modifiers.map(modifier => createObjectProperty(modifier, trueExpression)), loc));
+      }
+      return createArrayExpression(dirArgs, dir.loc);
+  }
+  function stringifyDynamicPropNames(props) {
+      let propsNamesString = `[`;
+      for (let i = 0, l = props.length; i < l; i++) {
+          propsNamesString += JSON.stringify(props[i]);
+          if (i < l - 1)
+              propsNamesString += ', ';
+      }
+      return propsNamesString + `]`;
+  }
+  function isComponentTag(tag) {
+      return tag === 'component' || tag === 'Component';
+  }
+
+  const transformSlotOutlet = (node, context) => {
+      if (isSlotOutlet(node)) {
+          const { children, loc } = node;
+          const { slotName, slotProps } = processSlotOutlet(node, context);
+          const slotArgs = [
+              context.prefixIdentifiers ? `_ctx.$slots` : `$slots`,
+              slotName,
+              '{}',
+              'undefined',
+              'true'
+          ];
+          let expectedLen = 2;
+          if (slotProps) {
+              slotArgs[2] = slotProps;
+              expectedLen = 3;
+          }
+          if (children.length) {
+              slotArgs[3] = createFunctionExpression([], children, false, false, loc);
+              expectedLen = 4;
+          }
+          if (context.scopeId && !context.slotted) {
+              expectedLen = 5;
+          }
+          slotArgs.splice(expectedLen); // remove unused arguments
+          node.codegenNode = createCallExpression(context.helper(RENDER_SLOT), slotArgs, loc);
+      }
+  };
+  function processSlotOutlet(node, context) {
+      let slotName = `"default"`;
+      let slotProps = undefined;
+      const nonNameProps = [];
+      for (let i = 0; i < node.props.length; i++) {
+          const p = node.props[i];
+          if (p.type === 6 /* ATTRIBUTE */) {
+              if (p.value) {
+                  if (p.name === 'name') {
+                      slotName = JSON.stringify(p.value.content);
+                  }
+                  else {
+                      p.name = camelize(p.name);
+                      nonNameProps.push(p);
+                  }
+              }
+          }
+          else {
+              if (p.name === 'bind' && isStaticArgOf(p.arg, 'name')) {
+                  if (p.exp)
+                      slotName = p.exp;
+              }
+              else {
+                  if (p.name === 'bind' && p.arg && isStaticExp(p.arg)) {
+                      p.arg.content = camelize(p.arg.content);
+                  }
+                  nonNameProps.push(p);
+              }
+          }
+      }
+      if (nonNameProps.length > 0) {
+          const { props, directives } = buildProps(node, context, nonNameProps, false, false);
+          slotProps = props;
+          if (directives.length) {
+              context.onError(createCompilerError(36 /* X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET */, directives[0].loc));
+          }
+      }
+      return {
+          slotName,
+          slotProps
+      };
+  }
+
+  const fnExpRE = /^\s*([\w$_]+|(async\s*)?\([^)]*?\))\s*=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/;
+  const transformOn = (dir, node, context, augmentor) => {
+      const { loc, modifiers, arg } = dir;
+      if (!dir.exp && !modifiers.length) {
+          context.onError(createCompilerError(35 /* X_V_ON_NO_EXPRESSION */, loc));
+      }
+      let eventName;
+      if (arg.type === 4 /* SIMPLE_EXPRESSION */) {
+          if (arg.isStatic) {
+              let rawName = arg.content;
+              // TODO deprecate @vnodeXXX usage
+              if (rawName.startsWith('vue:')) {
+                  rawName = `vnode-${rawName.slice(4)}`;
+              }
+              // for all event listeners, auto convert it to camelCase. See issue #2249
+              eventName = createSimpleExpression(toHandlerKey(camelize(rawName)), true, arg.loc);
+          }
+          else {
+              // #2388
+              eventName = createCompoundExpression([
+                  `${context.helperString(TO_HANDLER_KEY)}(`,
+                  arg,
+                  `)`
+              ]);
+          }
+      }
+      else {
+          // already a compound expression.
+          eventName = arg;
+          eventName.children.unshift(`${context.helperString(TO_HANDLER_KEY)}(`);
+          eventName.children.push(`)`);
+      }
+      // handler processing
+      let exp = dir.exp;
+      if (exp && !exp.content.trim()) {
+          exp = undefined;
+      }
+      let shouldCache = context.cacheHandlers && !exp && !context.inVOnce;
+      if (exp) {
+          const isMemberExp = isMemberExpression(exp.content);
+          const isInlineStatement = !(isMemberExp || fnExpRE.test(exp.content));
+          const hasMultipleStatements = exp.content.includes(`;`);
+          {
+              validateBrowserExpression(exp, context, false, hasMultipleStatements);
+          }
+          if (isInlineStatement || (shouldCache && isMemberExp)) {
+              // wrap inline statement in a function expression
+              exp = createCompoundExpression([
+                  `${isInlineStatement
+                    ? `$event`
+                    : `${``}(...args)`} => ${hasMultipleStatements ? `{` : `(`}`,
+                  exp,
+                  hasMultipleStatements ? `}` : `)`
+              ]);
+          }
+      }
+      let ret = {
+          props: [
+              createObjectProperty(eventName, exp || createSimpleExpression(`() => {}`, false, loc))
+          ]
+      };
+      // apply extended compiler augmentor
+      if (augmentor) {
+          ret = augmentor(ret);
+      }
+      if (shouldCache) {
+          // cache handlers so that it's always the same handler being passed down.
+          // this avoids unnecessary re-renders when users use inline handlers on
+          // components.
+          ret.props[0].value = context.cache(ret.props[0].value);
+      }
+      // mark the key as handler for props normalization check
+      ret.props.forEach(p => (p.key.isHandlerKey = true));
+      return ret;
+  };
+
+  // v-bind without arg is handled directly in ./transformElements.ts due to it affecting
+  // codegen for the entire props object. This transform here is only for v-bind
+  // *with* args.
+  const transformBind = (dir, _node, context) => {
+      const { exp, modifiers, loc } = dir;
+      const arg = dir.arg;
+      if (arg.type !== 4 /* SIMPLE_EXPRESSION */) {
+          arg.children.unshift(`(`);
+          arg.children.push(`) || ""`);
+      }
+      else if (!arg.isStatic) {
+          arg.content = `${arg.content} || ""`;
+      }
+      // .sync is replaced by v-model:arg
+      if (modifiers.includes('camel')) {
+          if (arg.type === 4 /* SIMPLE_EXPRESSION */) {
+              if (arg.isStatic) {
+                  arg.content = camelize(arg.content);
+              }
+              else {
+                  arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`;
+              }
+          }
+          else {
+              arg.children.unshift(`${context.helperString(CAMELIZE)}(`);
+              arg.children.push(`)`);
+          }
+      }
+      if (!context.inSSR) {
+          if (modifiers.includes('prop')) {
+              injectPrefix(arg, '.');
+          }
+          if (modifiers.includes('attr')) {
+              injectPrefix(arg, '^');
+          }
+      }
+      if (!exp ||
+          (exp.type === 4 /* SIMPLE_EXPRESSION */ && !exp.content.trim())) {
+          context.onError(createCompilerError(34 /* X_V_BIND_NO_EXPRESSION */, loc));
+          return {
+              props: [createObjectProperty(arg, createSimpleExpression('', true, loc))]
+          };
+      }
+      return {
+          props: [createObjectProperty(arg, exp)]
+      };
+  };
+  const injectPrefix = (arg, prefix) => {
+      if (arg.type === 4 /* SIMPLE_EXPRESSION */) {
+          if (arg.isStatic) {
+              arg.content = prefix + arg.content;
+          }
+          else {
+              arg.content = `\`${prefix}\${${arg.content}}\``;
+          }
+      }
+      else {
+          arg.children.unshift(`'${prefix}' + (`);
+          arg.children.push(`)`);
+      }
+  };
+
+  // Merge adjacent text nodes and expressions into a single expression
+  // e.g. <div>abc {{ d }} {{ e }}</div> should have a single expression node as child.
+  const transformText = (node, context) => {
+      if (node.type === 0 /* ROOT */ ||
+          node.type === 1 /* ELEMENT */ ||
+          node.type === 11 /* FOR */ ||
+          node.type === 10 /* IF_BRANCH */) {
+          // perform the transform on node exit so that all expressions have already
+          // been processed.
+          return () => {
+              const children = node.children;
+              let currentContainer = undefined;
+              let hasText = false;
+              for (let i = 0; i < children.length; i++) {
+                  const child = children[i];
+                  if (isText(child)) {
+                      hasText = true;
+                      for (let j = i + 1; j < children.length; j++) {
+                          const next = children[j];
+                          if (isText(next)) {
+                              if (!currentContainer) {
+                                  currentContainer = children[i] = createCompoundExpression([child], child.loc);
+                              }
+                              // merge adjacent text node into current
+                              currentContainer.children.push(` + `, next);
+                              children.splice(j, 1);
+                              j--;
+                          }
+                          else {
+                              currentContainer = undefined;
+                              break;
+                          }
+                      }
+                  }
+              }
+              if (!hasText ||
+                  // if this is a plain element with a single text child, leave it
+                  // as-is since the runtime has dedicated fast path for this by directly
+                  // setting textContent of the element.
+                  // for component root it's always normalized anyway.
+                  (children.length === 1 &&
+                      (node.type === 0 /* ROOT */ ||
+                          (node.type === 1 /* ELEMENT */ &&
+                              node.tagType === 0 /* ELEMENT */ &&
+                              // #3756
+                              // custom directives can potentially add DOM elements arbitrarily,
+                              // we need to avoid setting textContent of the element at runtime
+                              // to avoid accidentally overwriting the DOM elements added
+                              // by the user through custom directives.
+                              !node.props.find(p => p.type === 7 /* DIRECTIVE */ &&
+                                  !context.directiveTransforms[p.name]) &&
+                              // in compat mode, <template> tags with no special directives
+                              // will be rendered as a fragment so its children must be
+                              // converted into vnodes.
+                              !(false ))))) {
+                  return;
+              }
+              // pre-convert text nodes into createTextVNode(text) calls to avoid
+              // runtime normalization.
+              for (let i = 0; i < children.length; i++) {
+                  const child = children[i];
+                  if (isText(child) || child.type === 8 /* COMPOUND_EXPRESSION */) {
+                      const callArgs = [];
+                      // createTextVNode defaults to single whitespace, so if it is a
+                      // single space the code could be an empty call to save bytes.
+                      if (child.type !== 2 /* TEXT */ || child.content !== ' ') {
+                          callArgs.push(child);
+                      }
+                      // mark dynamic text with flag so it gets patched inside a block
+                      if (!context.ssr &&
+                          getConstantType(child, context) === 0 /* NOT_CONSTANT */) {
+                          callArgs.push(1 /* TEXT */ +
+                              (` /* ${PatchFlagNames[1 /* TEXT */]} */` ));
+                      }
+                      children[i] = {
+                          type: 12 /* TEXT_CALL */,
+                          content: child,
+                          loc: child.loc,
+                          codegenNode: createCallExpression(context.helper(CREATE_TEXT), callArgs)
+                      };
+                  }
+              }
+          };
+      }
+  };
+
+  const seen = new WeakSet();
+  const transformOnce = (node, context) => {
+      if (node.type === 1 /* ELEMENT */ && findDir(node, 'once', true)) {
+          if (seen.has(node) || context.inVOnce) {
+              return;
+          }
+          seen.add(node);
+          context.inVOnce = true;
+          context.helper(SET_BLOCK_TRACKING);
+          return () => {
+              context.inVOnce = false;
+              const cur = context.currentNode;
+              if (cur.codegenNode) {
+                  cur.codegenNode = context.cache(cur.codegenNode, true /* isVNode */);
+              }
+          };
+      }
+  };
+
+  const transformModel = (dir, node, context) => {
+      const { exp, arg } = dir;
+      if (!exp) {
+          context.onError(createCompilerError(41 /* X_V_MODEL_NO_EXPRESSION */, dir.loc));
+          return createTransformProps();
+      }
+      const rawExp = exp.loc.source;
+      const expString = exp.type === 4 /* SIMPLE_EXPRESSION */ ? exp.content : rawExp;
+      // im SFC <script setup> inline mode, the exp may have been transformed into
+      // _unref(exp)
+      context.bindingMetadata[rawExp];
+      const maybeRef = !true    /* SETUP_CONST */;
+      if (!expString.trim() ||
+          (!isMemberExpression(expString) && !maybeRef)) {
+          context.onError(createCompilerError(42 /* X_V_MODEL_MALFORMED_EXPRESSION */, exp.loc));
+          return createTransformProps();
+      }
+      const propName = arg ? arg : createSimpleExpression('modelValue', true);
+      const eventName = arg
+          ? isStaticExp(arg)
+              ? `onUpdate:${arg.content}`
+              : createCompoundExpression(['"onUpdate:" + ', arg])
+          : `onUpdate:modelValue`;
+      let assignmentExp;
+      const eventArg = context.isTS ? `($event: any)` : `$event`;
+      {
+          assignmentExp = createCompoundExpression([
+              `${eventArg} => ((`,
+              exp,
+              `) = $event)`
+          ]);
+      }
+      const props = [
+          // modelValue: foo
+          createObjectProperty(propName, dir.exp),
+          // "onUpdate:modelValue": $event => (foo = $event)
+          createObjectProperty(eventName, assignmentExp)
+      ];
+      // modelModifiers: { foo: true, "bar-baz": true }
+      if (dir.modifiers.length && node.tagType === 1 /* COMPONENT */) {
+          const modifiers = dir.modifiers
+              .map(m => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`)
+              .join(`, `);
+          const modifiersKey = arg
+              ? isStaticExp(arg)
+                  ? `${arg.content}Modifiers`
+                  : createCompoundExpression([arg, ' + "Modifiers"'])
+              : `modelModifiers`;
+          props.push(createObjectProperty(modifiersKey, createSimpleExpression(`{ ${modifiers} }`, false, dir.loc, 2 /* CAN_HOIST */)));
+      }
+      return createTransformProps(props);
+  };
+  function createTransformProps(props = []) {
+      return { props };
+  }
+
+  const seen$1 = new WeakSet();
+  const transformMemo = (node, context) => {
+      if (node.type === 1 /* ELEMENT */) {
+          const dir = findDir(node, 'memo');
+          if (!dir || seen$1.has(node)) {
+              return;
+          }
+          seen$1.add(node);
+          return () => {
+              const codegenNode = node.codegenNode ||
+                  context.currentNode.codegenNode;
+              if (codegenNode && codegenNode.type === 13 /* VNODE_CALL */) {
+                  // non-component sub tree should be turned into a block
+                  if (node.tagType !== 1 /* COMPONENT */) {
+                      makeBlock(codegenNode, context);
+                  }
+                  node.codegenNode = createCallExpression(context.helper(WITH_MEMO), [
+                      dir.exp,
+                      createFunctionExpression(undefined, codegenNode),
+                      `_cache`,
+                      String(context.cached++)
+                  ]);
+              }
+          };
+      }
+  };
+
+  function getBaseTransformPreset(prefixIdentifiers) {
+      return [
+          [
+              transformOnce,
+              transformIf,
+              transformMemo,
+              transformFor,
+              ...([]),
+              ...([transformExpression]
+                      ),
+              transformSlotOutlet,
+              transformElement,
+              trackSlotScopes,
+              transformText
+          ],
+          {
+              on: transformOn,
+              bind: transformBind,
+              model: transformModel
+          }
+      ];
+  }
+  // we name it `baseCompile` so that higher order compilers like
+  // @vue/compiler-dom can export `compile` while re-exporting everything else.
+  function baseCompile(template, options = {}) {
+      const onError = options.onError || defaultOnError;
+      const isModuleMode = options.mode === 'module';
+      /* istanbul ignore if */
+      {
+          if (options.prefixIdentifiers === true) {
+              onError(createCompilerError(46 /* X_PREFIX_ID_NOT_SUPPORTED */));
+          }
+          else if (isModuleMode) {
+              onError(createCompilerError(47 /* X_MODULE_MODE_NOT_SUPPORTED */));
+          }
+      }
+      const prefixIdentifiers = !true ;
+      if (options.cacheHandlers) {
+          onError(createCompilerError(48 /* X_CACHE_HANDLER_NOT_SUPPORTED */));
+      }
+      if (options.scopeId && !isModuleMode) {
+          onError(createCompilerError(49 /* X_SCOPE_ID_NOT_SUPPORTED */));
+      }
+      const ast = isString(template) ? baseParse(template, options) : template;
+      const [nodeTransforms, directiveTransforms] = getBaseTransformPreset();
+      transform(ast, extend({}, options, {
+          prefixIdentifiers,
+          nodeTransforms: [
+              ...nodeTransforms,
+              ...(options.nodeTransforms || []) // user transforms
+          ],
+          directiveTransforms: extend({}, directiveTransforms, options.directiveTransforms || {} // user transforms
+          )
+      }));
+      return generate(ast, extend({}, options, {
+          prefixIdentifiers
+      }));
+  }
+
+  const noopDirectiveTransform = () => ({ props: [] });
+
+  const V_MODEL_RADIO = Symbol(`vModelRadio` );
+  const V_MODEL_CHECKBOX = Symbol(`vModelCheckbox` );
+  const V_MODEL_TEXT = Symbol(`vModelText` );
+  const V_MODEL_SELECT = Symbol(`vModelSelect` );
+  const V_MODEL_DYNAMIC = Symbol(`vModelDynamic` );
+  const V_ON_WITH_MODIFIERS = Symbol(`vOnModifiersGuard` );
+  const V_ON_WITH_KEYS = Symbol(`vOnKeysGuard` );
+  const V_SHOW = Symbol(`vShow` );
+  const TRANSITION$1 = Symbol(`Transition` );
+  const TRANSITION_GROUP = Symbol(`TransitionGroup` );
+  registerRuntimeHelpers({
+      [V_MODEL_RADIO]: `vModelRadio`,
+      [V_MODEL_CHECKBOX]: `vModelCheckbox`,
+      [V_MODEL_TEXT]: `vModelText`,
+      [V_MODEL_SELECT]: `vModelSelect`,
+      [V_MODEL_DYNAMIC]: `vModelDynamic`,
+      [V_ON_WITH_MODIFIERS]: `withModifiers`,
+      [V_ON_WITH_KEYS]: `withKeys`,
+      [V_SHOW]: `vShow`,
+      [TRANSITION$1]: `Transition`,
+      [TRANSITION_GROUP]: `TransitionGroup`
+  });
+
+  /* eslint-disable no-restricted-globals */
+  let decoder;
+  function decodeHtmlBrowser(raw, asAttr = false) {
+      if (!decoder) {
+          decoder = document.createElement('div');
+      }
+      if (asAttr) {
+          decoder.innerHTML = `<div foo="${raw.replace(/"/g, '&quot;')}">`;
+          return decoder.children[0].getAttribute('foo');
+      }
+      else {
+          decoder.innerHTML = raw;
+          return decoder.textContent;
+      }
+  }
+
+  const isRawTextContainer = /*#__PURE__*/ makeMap('style,iframe,script,noscript', true);
+  const parserOptions = {
+      isVoidTag,
+      isNativeTag: tag => isHTMLTag(tag) || isSVGTag(tag),
+      isPreTag: tag => tag === 'pre',
+      decodeEntities: decodeHtmlBrowser ,
+      isBuiltInComponent: (tag) => {
+          if (isBuiltInType(tag, `Transition`)) {
+              return TRANSITION$1;
+          }
+          else if (isBuiltInType(tag, `TransitionGroup`)) {
+              return TRANSITION_GROUP;
+          }
+      },
+      // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher
+      getNamespace(tag, parent) {
+          let ns = parent ? parent.ns : 0 /* HTML */;
+          if (parent && ns === 2 /* MATH_ML */) {
+              if (parent.tag === 'annotation-xml') {
+                  if (tag === 'svg') {
+                      return 1 /* SVG */;
+                  }
+                  if (parent.props.some(a => a.type === 6 /* ATTRIBUTE */ &&
+                      a.name === 'encoding' &&
+                      a.value != null &&
+                      (a.value.content === 'text/html' ||
+                          a.value.content === 'application/xhtml+xml'))) {
+                      ns = 0 /* HTML */;
+                  }
+              }
+              else if (/^m(?:[ions]|text)$/.test(parent.tag) &&
+                  tag !== 'mglyph' &&
+                  tag !== 'malignmark') {
+                  ns = 0 /* HTML */;
+              }
+          }
+          else if (parent && ns === 1 /* SVG */) {
+              if (parent.tag === 'foreignObject' ||
+                  parent.tag === 'desc' ||
+                  parent.tag === 'title') {
+                  ns = 0 /* HTML */;
+              }
+          }
+          if (ns === 0 /* HTML */) {
+              if (tag === 'svg') {
+                  return 1 /* SVG */;
+              }
+              if (tag === 'math') {
+                  return 2 /* MATH_ML */;
+              }
+          }
+          return ns;
+      },
+      // https://html.spec.whatwg.org/multipage/parsing.html#parsing-html-fragments
+      getTextMode({ tag, ns }) {
+          if (ns === 0 /* HTML */) {
+              if (tag === 'textarea' || tag === 'title') {
+                  return 1 /* RCDATA */;
+              }
+              if (isRawTextContainer(tag)) {
+                  return 2 /* RAWTEXT */;
+              }
+          }
+          return 0 /* DATA */;
+      }
+  };
+
+  // Parse inline CSS strings for static style attributes into an object.
+  // This is a NodeTransform since it works on the static `style` attribute and
+  // converts it into a dynamic equivalent:
+  // style="color: red" -> :style='{ "color": "red" }'
+  // It is then processed by `transformElement` and included in the generated
+  // props.
+  const transformStyle = node => {
+      if (node.type === 1 /* ELEMENT */) {
+          node.props.forEach((p, i) => {
+              if (p.type === 6 /* ATTRIBUTE */ && p.name === 'style' && p.value) {
+                  // replace p with an expression node
+                  node.props[i] = {
+                      type: 7 /* DIRECTIVE */,
+                      name: `bind`,
+                      arg: createSimpleExpression(`style`, true, p.loc),
+                      exp: parseInlineCSS(p.value.content, p.loc),
+                      modifiers: [],
+                      loc: p.loc
+                  };
+              }
+          });
+      }
+  };
+  const parseInlineCSS = (cssText, loc) => {
+      const normalized = parseStringStyle(cssText);
+      return createSimpleExpression(JSON.stringify(normalized), false, loc, 3 /* CAN_STRINGIFY */);
+  };
+
+  function createDOMCompilerError(code, loc) {
+      return createCompilerError(code, loc, DOMErrorMessages );
+  }
+  const DOMErrorMessages = {
+      [50 /* X_V_HTML_NO_EXPRESSION */]: `v-html is missing expression.`,
+      [51 /* X_V_HTML_WITH_CHILDREN */]: `v-html will override element children.`,
+      [52 /* X_V_TEXT_NO_EXPRESSION */]: `v-text is missing expression.`,
+      [53 /* X_V_TEXT_WITH_CHILDREN */]: `v-text will override element children.`,
+      [54 /* X_V_MODEL_ON_INVALID_ELEMENT */]: `v-model can only be used on <input>, <textarea> and <select> elements.`,
+      [55 /* X_V_MODEL_ARG_ON_ELEMENT */]: `v-model argument is not supported on plain elements.`,
+      [56 /* X_V_MODEL_ON_FILE_INPUT_ELEMENT */]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`,
+      [57 /* X_V_MODEL_UNNECESSARY_VALUE */]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`,
+      [58 /* X_V_SHOW_NO_EXPRESSION */]: `v-show is missing expression.`,
+      [59 /* X_TRANSITION_INVALID_CHILDREN */]: `<Transition> expects exactly one child element or component.`,
+      [60 /* X_IGNORED_SIDE_EFFECT_TAG */]: `Tags with side effect (<script> and <style>) are ignored in client component templates.`
+  };
+
+  const transformVHtml = (dir, node, context) => {
+      const { exp, loc } = dir;
+      if (!exp) {
+          context.onError(createDOMCompilerError(50 /* X_V_HTML_NO_EXPRESSION */, loc));
+      }
+      if (node.children.length) {
+          context.onError(createDOMCompilerError(51 /* X_V_HTML_WITH_CHILDREN */, loc));
+          node.children.length = 0;
+      }
+      return {
+          props: [
+              createObjectProperty(createSimpleExpression(`innerHTML`, true, loc), exp || createSimpleExpression('', true))
+          ]
+      };
+  };
+
+  const transformVText = (dir, node, context) => {
+      const { exp, loc } = dir;
+      if (!exp) {
+          context.onError(createDOMCompilerError(52 /* X_V_TEXT_NO_EXPRESSION */, loc));
+      }
+      if (node.children.length) {
+          context.onError(createDOMCompilerError(53 /* X_V_TEXT_WITH_CHILDREN */, loc));
+          node.children.length = 0;
+      }
+      return {
+          props: [
+              createObjectProperty(createSimpleExpression(`textContent`, true), exp
+                  ? getConstantType(exp, context) > 0
+                      ? exp
+                      : createCallExpression(context.helperString(TO_DISPLAY_STRING), [exp], loc)
+                  : createSimpleExpression('', true))
+          ]
+      };
+  };
+
+  const transformModel$1 = (dir, node, context) => {
+      const baseResult = transformModel(dir, node, context);
+      // base transform has errors OR component v-model (only need props)
+      if (!baseResult.props.length || node.tagType === 1 /* COMPONENT */) {
+          return baseResult;
+      }
+      if (dir.arg) {
+          context.onError(createDOMCompilerError(55 /* X_V_MODEL_ARG_ON_ELEMENT */, dir.arg.loc));
+      }
+      function checkDuplicatedValue() {
+          const value = findProp(node, 'value');
+          if (value) {
+              context.onError(createDOMCompilerError(57 /* X_V_MODEL_UNNECESSARY_VALUE */, value.loc));
+          }
+      }
+      const { tag } = node;
+      const isCustomElement = context.isCustomElement(tag);
+      if (tag === 'input' ||
+          tag === 'textarea' ||
+          tag === 'select' ||
+          isCustomElement) {
+          let directiveToUse = V_MODEL_TEXT;
+          let isInvalidType = false;
+          if (tag === 'input' || isCustomElement) {
+              const type = findProp(node, `type`);
+              if (type) {
+                  if (type.type === 7 /* DIRECTIVE */) {
+                      // :type="foo"
+                      directiveToUse = V_MODEL_DYNAMIC;
+                  }
+                  else if (type.value) {
+                      switch (type.value.content) {
+                          case 'radio':
+                              directiveToUse = V_MODEL_RADIO;
+                              break;
+                          case 'checkbox':
+                              directiveToUse = V_MODEL_CHECKBOX;
+                              break;
+                          case 'file':
+                              isInvalidType = true;
+                              context.onError(createDOMCompilerError(56 /* X_V_MODEL_ON_FILE_INPUT_ELEMENT */, dir.loc));
+                              break;
+                          default:
+                              // text type
+                              checkDuplicatedValue();
+                              break;
+                      }
+                  }
+              }
+              else if (hasDynamicKeyVBind(node)) {
+                  // element has bindings with dynamic keys, which can possibly contain
+                  // "type".
+                  directiveToUse = V_MODEL_DYNAMIC;
+              }
+              else {
+                  // text type
+                  checkDuplicatedValue();
+              }
+          }
+          else if (tag === 'select') {
+              directiveToUse = V_MODEL_SELECT;
+          }
+          else {
+              // textarea
+              checkDuplicatedValue();
+          }
+          // inject runtime directive
+          // by returning the helper symbol via needRuntime
+          // the import will replaced a resolveDirective call.
+          if (!isInvalidType) {
+              baseResult.needRuntime = context.helper(directiveToUse);
+          }
+      }
+      else {
+          context.onError(createDOMCompilerError(54 /* X_V_MODEL_ON_INVALID_ELEMENT */, dir.loc));
+      }
+      // native vmodel doesn't need the `modelValue` props since they are also
+      // passed to the runtime as `binding.value`. removing it reduces code size.
+      baseResult.props = baseResult.props.filter(p => !(p.key.type === 4 /* SIMPLE_EXPRESSION */ &&
+          p.key.content === 'modelValue'));
+      return baseResult;
+  };
+
+  const isEventOptionModifier = /*#__PURE__*/ makeMap(`passive,once,capture`);
+  const isNonKeyModifier = /*#__PURE__*/ makeMap(
+  // event propagation management
+`stop,prevent,self,`   +
+      // system modifiers + exact
+      `ctrl,shift,alt,meta,exact,` +
+      // mouse
+      `middle`);
+  // left & right could be mouse or key modifiers based on event type
+  const maybeKeyModifier = /*#__PURE__*/ makeMap('left,right');
+  const isKeyboardEvent = /*#__PURE__*/ makeMap(`onkeyup,onkeydown,onkeypress`, true);
+  const resolveModifiers = (key, modifiers, context, loc) => {
+      const keyModifiers = [];
+      const nonKeyModifiers = [];
+      const eventOptionModifiers = [];
+      for (let i = 0; i < modifiers.length; i++) {
+          const modifier = modifiers[i];
+          if (isEventOptionModifier(modifier)) {
+              // eventOptionModifiers: modifiers for addEventListener() options,
+              // e.g. .passive & .capture
+              eventOptionModifiers.push(modifier);
+          }
+          else {
+              // runtimeModifiers: modifiers that needs runtime guards
+              if (maybeKeyModifier(modifier)) {
+                  if (isStaticExp(key)) {
+                      if (isKeyboardEvent(key.content)) {
+                          keyModifiers.push(modifier);
+                      }
+                      else {
+                          nonKeyModifiers.push(modifier);
+                      }
+                  }
+                  else {
+                      keyModifiers.push(modifier);
+                      nonKeyModifiers.push(modifier);
+                  }
+              }
+              else {
+                  if (isNonKeyModifier(modifier)) {
+                      nonKeyModifiers.push(modifier);
+                  }
+                  else {
+                      keyModifiers.push(modifier);
+                  }
+              }
+          }
+      }
+      return {
+          keyModifiers,
+          nonKeyModifiers,
+          eventOptionModifiers
+      };
+  };
+  const transformClick = (key, event) => {
+      const isStaticClick = isStaticExp(key) && key.content.toLowerCase() === 'onclick';
+      return isStaticClick
+          ? createSimpleExpression(event, true)
+          : key.type !== 4 /* SIMPLE_EXPRESSION */
+              ? createCompoundExpression([
+                  `(`,
+                  key,
+                  `) === "onClick" ? "${event}" : (`,
+                  key,
+                  `)`
+              ])
+              : key;
+  };
+  const transformOn$1 = (dir, node, context) => {
+      return transformOn(dir, node, context, baseResult => {
+          const { modifiers } = dir;
+          if (!modifiers.length)
+              return baseResult;
+          let { key, value: handlerExp } = baseResult.props[0];
+          const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc);
+          // normalize click.right and click.middle since they don't actually fire
+          if (nonKeyModifiers.includes('right')) {
+              key = transformClick(key, `onContextmenu`);
+          }
+          if (nonKeyModifiers.includes('middle')) {
+              key = transformClick(key, `onMouseup`);
+          }
+          if (nonKeyModifiers.length) {
+              handlerExp = createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [
+                  handlerExp,
+                  JSON.stringify(nonKeyModifiers)
+              ]);
+          }
+          if (keyModifiers.length &&
+              // if event name is dynamic, always wrap with keys guard
+              (!isStaticExp(key) || isKeyboardEvent(key.content))) {
+              handlerExp = createCallExpression(context.helper(V_ON_WITH_KEYS), [
+                  handlerExp,
+                  JSON.stringify(keyModifiers)
+              ]);
+          }
+          if (eventOptionModifiers.length) {
+              const modifierPostfix = eventOptionModifiers.map(capitalize).join('');
+              key = isStaticExp(key)
+                  ? createSimpleExpression(`${key.content}${modifierPostfix}`, true)
+                  : createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]);
+          }
+          return {
+              props: [createObjectProperty(key, handlerExp)]
+          };
+      });
+  };
+
+  const transformShow = (dir, node, context) => {
+      const { exp, loc } = dir;
+      if (!exp) {
+          context.onError(createDOMCompilerError(58 /* X_V_SHOW_NO_EXPRESSION */, loc));
+      }
+      return {
+          props: [],
+          needRuntime: context.helper(V_SHOW)
+      };
+  };
+
+  const transformTransition = (node, context) => {
+      if (node.type === 1 /* ELEMENT */ &&
+          node.tagType === 1 /* COMPONENT */) {
+          const component = context.isBuiltInComponent(node.tag);
+          if (component === TRANSITION$1) {
+              return () => {
+                  if (!node.children.length) {
+                      return;
+                  }
+                  // warn multiple transition children
+                  if (hasMultipleChildren(node)) {
+                      context.onError(createDOMCompilerError(59 /* X_TRANSITION_INVALID_CHILDREN */, {
+                          start: node.children[0].loc.start,
+                          end: node.children[node.children.length - 1].loc.end,
+                          source: ''
+                      }));
+                  }
+                  // check if it's s single child w/ v-show
+                  // if yes, inject "persisted: true" to the transition props
+                  const child = node.children[0];
+                  if (child.type === 1 /* ELEMENT */) {
+                      for (const p of child.props) {
+                          if (p.type === 7 /* DIRECTIVE */ && p.name === 'show') {
+                              node.props.push({
+                                  type: 6 /* ATTRIBUTE */,
+                                  name: 'persisted',
+                                  value: undefined,
+                                  loc: node.loc
+                              });
+                          }
+                      }
+                  }
+              };
+          }
+      }
+  };
+  function hasMultipleChildren(node) {
+      // #1352 filter out potential comment nodes.
+      const children = (node.children = node.children.filter(c => c.type !== 3 /* COMMENT */ &&
+          !(c.type === 2 /* TEXT */ && !c.content.trim())));
+      const child = children[0];
+      return (children.length !== 1 ||
+          child.type === 11 /* FOR */ ||
+          (child.type === 9 /* IF */ && child.branches.some(hasMultipleChildren)));
+  }
+
+  const ignoreSideEffectTags = (node, context) => {
+      if (node.type === 1 /* ELEMENT */ &&
+          node.tagType === 0 /* ELEMENT */ &&
+          (node.tag === 'script' || node.tag === 'style')) {
+          context.onError(createDOMCompilerError(60 /* X_IGNORED_SIDE_EFFECT_TAG */, node.loc));
+          context.removeNode();
+      }
+  };
+
+  const DOMNodeTransforms = [
+      transformStyle,
+      ...([transformTransition] )
+  ];
+  const DOMDirectiveTransforms = {
+      cloak: noopDirectiveTransform,
+      html: transformVHtml,
+      text: transformVText,
+      model: transformModel$1,
+      on: transformOn$1,
+      show: transformShow
+  };
+  function compile$1(template, options = {}) {
+      return baseCompile(template, extend({}, parserOptions, options, {
+          nodeTransforms: [
+              // ignore <script> and <tag>
+              // this is not put inside DOMNodeTransforms because that list is used
+              // by compiler-ssr to generate vnode fallback branches
+              ignoreSideEffectTags,
+              ...DOMNodeTransforms,
+              ...(options.nodeTransforms || [])
+          ],
+          directiveTransforms: extend({}, DOMDirectiveTransforms, options.directiveTransforms || {}),
+          transformHoist: null 
+      }));
+  }
+
+  // This entry is the "full-build" that includes both the runtime
+  {
+      initDev();
+  }
+  const compileCache = Object.create(null);
+  function compileToFunction(template, options) {
+      if (!isString(template)) {
+          if (template.nodeType) {
+              template = template.innerHTML;
+          }
+          else {
+              warn$1(`invalid template option: `, template);
+              return NOOP;
+          }
+      }
+      const key = template;
+      const cached = compileCache[key];
+      if (cached) {
+          return cached;
+      }
+      if (template[0] === '#') {
+          const el = document.querySelector(template);
+          if (!el) {
+              warn$1(`Template element not found or is empty: ${template}`);
+          }
+          // __UNSAFE__
+          // Reason: potential execution of JS expressions in in-DOM template.
+          // The user must make sure the in-DOM template is trusted. If it's rendered
+          // by the server, the template should not contain any user data.
+          template = el ? el.innerHTML : ``;
+      }
+      const { code } = compile$1(template, extend({
+          hoistStatic: true,
+          onError: onError ,
+          onWarn: e => onError(e, true) 
+      }, options));
+      function onError(err, asWarning = false) {
+          const message = asWarning
+              ? err.message
+              : `Template compilation error: ${err.message}`;
+          const codeFrame = err.loc &&
+              generateCodeFrame(template, err.loc.start.offset, err.loc.end.offset);
+          warn$1(codeFrame ? `${message}\n${codeFrame}` : message);
+      }
+      // The wildcard import results in a huge object with every export
+      // with keys that cannot be mangled, and can be quite heavy size-wise.
+      // In the global build we know `Vue` is available globally so we can avoid
+      // the wildcard object.
+      const render = (new Function(code)() );
+      render._rc = true;
+      return (compileCache[key] = render);
+  }
+  registerRuntimeCompiler(compileToFunction);
+
+  exports.BaseTransition = BaseTransition;
+  exports.Comment = Comment;
+  exports.EffectScope = EffectScope;
+  exports.Fragment = Fragment;
+  exports.KeepAlive = KeepAlive;
+  exports.ReactiveEffect = ReactiveEffect;
+  exports.Static = Static;
+  exports.Suspense = Suspense;
+  exports.Teleport = Teleport;
+  exports.Text = Text;
+  exports.Transition = Transition;
+  exports.TransitionGroup = TransitionGroup;
+  exports.VueElement = VueElement;
+  exports.callWithAsyncErrorHandling = callWithAsyncErrorHandling;
+  exports.callWithErrorHandling = callWithErrorHandling;
+  exports.camelize = camelize;
+  exports.capitalize = capitalize;
+  exports.cloneVNode = cloneVNode;
+  exports.compatUtils = compatUtils;
+  exports.compile = compileToFunction;
+  exports.computed = computed$1;
+  exports.createApp = createApp;
+  exports.createBlock = createBlock;
+  exports.createCommentVNode = createCommentVNode;
+  exports.createElementBlock = createElementBlock;
+  exports.createElementVNode = createBaseVNode;
+  exports.createHydrationRenderer = createHydrationRenderer;
+  exports.createPropsRestProxy = createPropsRestProxy;
+  exports.createRenderer = createRenderer;
+  exports.createSSRApp = createSSRApp;
+  exports.createSlots = createSlots;
+  exports.createStaticVNode = createStaticVNode;
+  exports.createTextVNode = createTextVNode;
+  exports.createVNode = createVNode;
+  exports.customRef = customRef;
+  exports.defineAsyncComponent = defineAsyncComponent;
+  exports.defineComponent = defineComponent;
+  exports.defineCustomElement = defineCustomElement;
+  exports.defineEmits = defineEmits;
+  exports.defineExpose = defineExpose;
+  exports.defineProps = defineProps;
+  exports.defineSSRCustomElement = defineSSRCustomElement;
+  exports.effect = effect;
+  exports.effectScope = effectScope;
+  exports.getCurrentInstance = getCurrentInstance;
+  exports.getCurrentScope = getCurrentScope;
+  exports.getTransitionRawChildren = getTransitionRawChildren;
+  exports.guardReactiveProps = guardReactiveProps;
+  exports.h = h;
+  exports.handleError = handleError;
+  exports.hydrate = hydrate;
+  exports.initCustomFormatter = initCustomFormatter;
+  exports.initDirectivesForSSR = initDirectivesForSSR;
+  exports.inject = inject;
+  exports.isMemoSame = isMemoSame;
+  exports.isProxy = isProxy;
+  exports.isReactive = isReactive;
+  exports.isReadonly = isReadonly;
+  exports.isRef = isRef;
+  exports.isRuntimeOnly = isRuntimeOnly;
+  exports.isShallow = isShallow;
+  exports.isVNode = isVNode;
+  exports.markRaw = markRaw;
+  exports.mergeDefaults = mergeDefaults;
+  exports.mergeProps = mergeProps;
+  exports.nextTick = nextTick;
+  exports.normalizeClass = normalizeClass;
+  exports.normalizeProps = normalizeProps;
+  exports.normalizeStyle = normalizeStyle;
+  exports.onActivated = onActivated;
+  exports.onBeforeMount = onBeforeMount;
+  exports.onBeforeUnmount = onBeforeUnmount;
+  exports.onBeforeUpdate = onBeforeUpdate;
+  exports.onDeactivated = onDeactivated;
+  exports.onErrorCaptured = onErrorCaptured;
+  exports.onMounted = onMounted;
+  exports.onRenderTracked = onRenderTracked;
+  exports.onRenderTriggered = onRenderTriggered;
+  exports.onScopeDispose = onScopeDispose;
+  exports.onServerPrefetch = onServerPrefetch;
+  exports.onUnmounted = onUnmounted;
+  exports.onUpdated = onUpdated;
+  exports.openBlock = openBlock;
+  exports.popScopeId = popScopeId;
+  exports.provide = provide;
+  exports.proxyRefs = proxyRefs;
+  exports.pushScopeId = pushScopeId;
+  exports.queuePostFlushCb = queuePostFlushCb;
+  exports.reactive = reactive;
+  exports.readonly = readonly;
+  exports.ref = ref;
+  exports.registerRuntimeCompiler = registerRuntimeCompiler;
+  exports.render = render;
+  exports.renderList = renderList;
+  exports.renderSlot = renderSlot;
+  exports.resolveComponent = resolveComponent;
+  exports.resolveDirective = resolveDirective;
+  exports.resolveDynamicComponent = resolveDynamicComponent;
+  exports.resolveFilter = resolveFilter;
+  exports.resolveTransitionHooks = resolveTransitionHooks;
+  exports.setBlockTracking = setBlockTracking;
+  exports.setDevtoolsHook = setDevtoolsHook;
+  exports.setTransitionHooks = setTransitionHooks;
+  exports.shallowReactive = shallowReactive;
+  exports.shallowReadonly = shallowReadonly;
+  exports.shallowRef = shallowRef;
+  exports.ssrContextKey = ssrContextKey;
+  exports.ssrUtils = ssrUtils;
+  exports.stop = stop;
+  exports.toDisplayString = toDisplayString;
+  exports.toHandlerKey = toHandlerKey;
+  exports.toHandlers = toHandlers;
+  exports.toRaw = toRaw;
+  exports.toRef = toRef;
+  exports.toRefs = toRefs;
+  exports.transformVNodeArgs = transformVNodeArgs;
+  exports.triggerRef = triggerRef;
+  exports.unref = unref;
+  exports.useAttrs = useAttrs;
+  exports.useCssModule = useCssModule;
+  exports.useCssVars = useCssVars;
+  exports.useSSRContext = useSSRContext;
+  exports.useSlots = useSlots;
+  exports.useTransitionState = useTransitionState;
+  exports.vModelCheckbox = vModelCheckbox;
+  exports.vModelDynamic = vModelDynamic;
+  exports.vModelRadio = vModelRadio;
+  exports.vModelSelect = vModelSelect;
+  exports.vModelText = vModelText;
+  exports.vShow = vShow;
+  exports.version = version;
+  exports.warn = warn$1;
+  exports.watch = watch;
+  exports.watchEffect = watchEffect;
+  exports.watchPostEffect = watchPostEffect;
+  exports.watchSyncEffect = watchSyncEffect;
+  exports.withAsyncContext = withAsyncContext;
+  exports.withCtx = withCtx;
+  exports.withDefaults = withDefaults;
+  exports.withDirectives = withDirectives;
+  exports.withKeys = withKeys;
+  exports.withMemo = withMemo;
+  exports.withModifiers = withModifiers;
+  exports.withScopeId = withScopeId;
+
+  Object.defineProperty(exports, '__esModule', { value: true });
+
+  return exports;
+
+}({}));
\ No newline at end of file
diff --git a/node_modules/.bin/xss b/node_modules/.bin/xss
new file mode 100644
index 0000000..79c8f47
--- /dev/null
+++ b/node_modules/.bin/xss
@@ -0,0 +1,12 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+    *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
+esac
+
+if [ -x "$basedir/node" ]; then
+  exec "$basedir/node"  "$basedir/../xss/bin/xss" "$@"
+else 
+  exec node  "$basedir/../xss/bin/xss" "$@"
+fi
diff --git a/node_modules/.bin/xss.cmd b/node_modules/.bin/xss.cmd
new file mode 100644
index 0000000..9aa358c
--- /dev/null
+++ b/node_modules/.bin/xss.cmd
@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+  SET "_prog=%dp0%\node.exe"
+) ELSE (
+  SET "_prog=node"
+  SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\xss\bin\xss" %*
diff --git a/node_modules/.bin/xss.ps1 b/node_modules/.bin/xss.ps1
new file mode 100644
index 0000000..63f827b
--- /dev/null
+++ b/node_modules/.bin/xss.ps1
@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+  # Fix case when both the Windows and Linux builds of Node
+  # are installed in the same directory
+  $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+  # Support pipeline input
+  if ($MyInvocation.ExpectingInput) {
+    $input | & "$basedir/node$exe"  "$basedir/../xss/bin/xss" $args
+  } else {
+    & "$basedir/node$exe"  "$basedir/../xss/bin/xss" $args
+  }
+  $ret=$LASTEXITCODE
+} else {
+  # Support pipeline input
+  if ($MyInvocation.ExpectingInput) {
+    $input | & "node$exe"  "$basedir/../xss/bin/xss" $args
+  } else {
+    & "node$exe"  "$basedir/../xss/bin/xss" $args
+  }
+  $ret=$LASTEXITCODE
+}
+exit $ret
diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json
new file mode 100644
index 0000000..3772ed5
--- /dev/null
+++ b/node_modules/.package-lock.json
@@ -0,0 +1,40 @@
+{
+  "name": "PC问答",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "node_modules/commander": {
+      "version": "2.20.3",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+    },
+    "node_modules/cssfilter": {
+      "version": "0.0.10",
+      "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz",
+      "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw=="
+    },
+    "node_modules/mavon-editor": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/mavon-editor/-/mavon-editor-3.0.1.tgz",
+      "integrity": "sha512-973cYCwv+AB+fcecsU6Ua6UXATxDMaY0Q7QzKQ/GmRW1sg+3DolZDnCGXth7XHDgrmqKTO57N42fVYujt0wfFw==",
+      "dependencies": {
+        "xss": "^1.0.10"
+      }
+    },
+    "node_modules/xss": {
+      "version": "1.0.14",
+      "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.14.tgz",
+      "integrity": "sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==",
+      "dependencies": {
+        "commander": "^2.20.3",
+        "cssfilter": "0.0.10"
+      },
+      "bin": {
+        "xss": "bin/xss"
+      },
+      "engines": {
+        "node": ">= 0.10.0"
+      }
+    }
+  }
+}
diff --git a/node_modules/commander/CHANGELOG.md b/node_modules/commander/CHANGELOG.md
new file mode 100644
index 0000000..7dce779
--- /dev/null
+++ b/node_modules/commander/CHANGELOG.md
@@ -0,0 +1,419 @@
+2.20.3 / 2019-10-11
+==================
+
+  * Support Node.js 0.10 (Revert #1059)
+  * Ran "npm unpublish commander@2.20.2". There is no 2.20.2.
+
+2.20.1 / 2019-09-29
+==================
+
+  * Improve executable subcommand tracking
+  * Update dev dependencies
+
+2.20.0 / 2019-04-02
+==================
+
+  * fix: resolve symbolic links completely when hunting for subcommands (#935)
+  * Update index.d.ts (#930)
+  * Update Readme.md (#924)
+  * Remove --save option as it isn't required anymore (#918)
+  * Add link to the license file (#900)
+  * Added example of receiving args from options (#858)
+  * Added missing semicolon (#882)
+  * Add extension to .eslintrc (#876)
+
+2.19.0 / 2018-10-02
+==================
+
+  * Removed newline after Options and Commands headers (#864)
+  * Bugfix - Error output (#862)
+  * Fix to change default value to string (#856)
+
+2.18.0 / 2018-09-07
+==================
+
+  * Standardize help output (#853)
+  * chmod 644 travis.yml (#851)
+  * add support for execute typescript subcommand via ts-node (#849)
+
+2.17.1 / 2018-08-07
+==================
+
+  * Fix bug in command emit (#844)
+
+2.17.0 / 2018-08-03
+==================
+
+  * fixed newline output after help information (#833)
+  * Fix to emit the action even without command (#778)
+  * npm update (#823)
+
+2.16.0 / 2018-06-29
+==================
+
+  * Remove Makefile and `test/run` (#821)
+  * Make 'npm test' run on Windows (#820)
+  * Add badge to display install size (#807)
+  * chore: cache node_modules (#814)
+  * chore: remove Node.js 4 (EOL), add Node.js 10 (#813)
+  * fixed typo in readme (#812)
+  * Fix types (#804)
+  * Update eslint to resolve vulnerabilities in lodash (#799)
+  * updated readme with custom event listeners. (#791)
+  * fix tests (#794)
+
+2.15.0 / 2018-03-07
+==================
+
+  * Update downloads badge to point to graph of downloads over time instead of duplicating link to npm
+  * Arguments description
+
+2.14.1 / 2018-02-07
+==================
+
+  * Fix typing of help function
+
+2.14.0 / 2018-02-05
+==================
+
+  * only register the option:version event once
+  * Fixes issue #727: Passing empty string for option on command is set to undefined
+  * enable eqeqeq rule
+  * resolves #754 add linter configuration to project
+  * resolves #560 respect custom name for version option
+  * document how to override the version flag
+  * document using options per command
+
+2.13.0 / 2018-01-09
+==================
+
+  * Do not print default for --no-
+  * remove trailing spaces in command help
+  * Update CI's Node.js to LTS and latest version
+  * typedefs: Command and Option types added to commander namespace
+
+2.12.2 / 2017-11-28
+==================
+
+  * fix: typings are not shipped
+
+2.12.1 / 2017-11-23
+==================
+
+  * Move @types/node to dev dependency
+
+2.12.0 / 2017-11-22
+==================
+
+  * add attributeName() method to Option objects
+  * Documentation updated for options with --no prefix
+  * typings: `outputHelp` takes a string as the first parameter
+  * typings: use overloads
+  * feat(typings): update to match js api
+  * Print default value in option help
+  * Fix translation error
+  * Fail when using same command and alias (#491)
+  * feat(typings): add help callback
+  * fix bug when description is add after command with options (#662)
+  * Format js code
+  * Rename History.md to CHANGELOG.md (#668)
+  * feat(typings): add typings to support TypeScript (#646)
+  * use current node
+
+2.11.0 / 2017-07-03
+==================
+
+  * Fix help section order and padding (#652)
+  * feature: support for signals to subcommands (#632)
+  * Fixed #37, --help should not display first (#447)
+  * Fix translation errors. (#570)
+  * Add package-lock.json
+  * Remove engines
+  * Upgrade package version
+  * Prefix events to prevent conflicts between commands and options (#494)
+  * Removing dependency on graceful-readlink
+  * Support setting name in #name function and make it chainable
+  * Add .vscode directory to .gitignore (Visual Studio Code metadata)
+  * Updated link to ruby commander in readme files
+
+2.10.0 / 2017-06-19
+==================
+
+  * Update .travis.yml. drop support for older node.js versions.
+  * Fix require arguments in README.md
+  * On SemVer you do not start from 0.0.1
+  * Add missing semi colon in readme
+  * Add save param to npm install
+  * node v6 travis test
+  * Update Readme_zh-CN.md
+  * Allow literal '--' to be passed-through as an argument
+  * Test subcommand alias help
+  * link build badge to master branch
+  * Support the alias of Git style sub-command
+  * added keyword commander for better search result on npm
+  * Fix Sub-Subcommands
+  * test node.js stable
+  * Fixes TypeError when a command has an option called `--description`
+  * Update README.md to make it beginner friendly and elaborate on the difference between angled and square brackets.
+  * Add chinese Readme file
+
+2.9.0 / 2015-10-13
+==================
+
+  * Add option `isDefault` to set default subcommand #415 @Qix-
+  * Add callback to allow filtering or post-processing of help text #434 @djulien
+  * Fix `undefined` text in help information close #414 #416 @zhiyelee
+
+2.8.1 / 2015-04-22
+==================
+
+ * Back out `support multiline description` Close #396 #397
+
+2.8.0 / 2015-04-07
+==================
+
+  * Add `process.execArg` support, execution args like `--harmony` will be passed to sub-commands #387 @DigitalIO @zhiyelee
+  * Fix bug in Git-style sub-commands #372 @zhiyelee
+  * Allow commands to be hidden from help #383 @tonylukasavage
+  * When git-style sub-commands are in use, yet none are called, display help #382 @claylo
+  * Add ability to specify arguments syntax for top-level command #258 @rrthomas
+  * Support multiline descriptions #208 @zxqfox
+
+2.7.1 / 2015-03-11
+==================
+
+ * Revert #347 (fix collisions when option and first arg have same name) which causes a bug in #367.
+
+2.7.0 / 2015-03-09
+==================
+
+ * Fix git-style bug when installed globally. Close #335 #349 @zhiyelee
+ * Fix collisions when option and first arg have same name. Close #346 #347 @tonylukasavage
+ * Add support for camelCase on `opts()`. Close #353  @nkzawa
+ * Add node.js 0.12 and io.js to travis.yml
+ * Allow RegEx options. #337 @palanik
+ * Fixes exit code when sub-command failing.  Close #260 #332 @pirelenito
+ * git-style `bin` files in $PATH make sense. Close #196 #327  @zhiyelee
+
+2.6.0 / 2014-12-30
+==================
+
+  * added `Command#allowUnknownOption` method. Close #138 #318 @doozr @zhiyelee
+  * Add application description to the help msg. Close #112 @dalssoft
+
+2.5.1 / 2014-12-15
+==================
+
+  * fixed two bugs incurred by variadic arguments. Close #291 @Quentin01 #302 @zhiyelee
+
+2.5.0 / 2014-10-24
+==================
+
+ * add support for variadic arguments. Closes #277 @whitlockjc
+
+2.4.0 / 2014-10-17
+==================
+
+ * fixed a bug on executing the coercion function of subcommands option. Closes #270
+ * added `Command.prototype.name` to retrieve command name. Closes #264 #266 @tonylukasavage
+ * added `Command.prototype.opts` to retrieve all the options as a simple object of key-value pairs. Closes #262 @tonylukasavage
+ * fixed a bug on subcommand name. Closes #248 @jonathandelgado
+ * fixed function normalize doesn’t honor option terminator. Closes #216 @abbr
+
+2.3.0 / 2014-07-16
+==================
+
+ * add command alias'. Closes PR #210
+ * fix: Typos. Closes #99
+ * fix: Unused fs module. Closes #217
+
+2.2.0 / 2014-03-29
+==================
+
+ * add passing of previous option value
+ * fix: support subcommands on windows. Closes #142
+ * Now the defaultValue passed as the second argument of the coercion function.
+
+2.1.0 / 2013-11-21
+==================
+
+ * add: allow cflag style option params, unit test, fixes #174
+
+2.0.0 / 2013-07-18
+==================
+
+ * remove input methods (.prompt, .confirm, etc)
+
+1.3.2 / 2013-07-18
+==================
+
+ * add support for sub-commands to co-exist with the original command
+
+1.3.1 / 2013-07-18
+==================
+
+ * add quick .runningCommand hack so you can opt-out of other logic when running a sub command
+
+1.3.0 / 2013-07-09
+==================
+
+ * add EACCES error handling
+ * fix sub-command --help
+
+1.2.0 / 2013-06-13
+==================
+
+ * allow "-" hyphen as an option argument
+ * support for RegExp coercion
+
+1.1.1 / 2012-11-20
+==================
+
+  * add more sub-command padding
+  * fix .usage() when args are present. Closes #106
+
+1.1.0 / 2012-11-16
+==================
+
+  * add git-style executable subcommand support. Closes #94
+
+1.0.5 / 2012-10-09
+==================
+
+  * fix `--name` clobbering. Closes #92
+  * fix examples/help. Closes #89
+
+1.0.4 / 2012-09-03
+==================
+
+  * add `outputHelp()` method.
+
+1.0.3 / 2012-08-30
+==================
+
+  * remove invalid .version() defaulting
+
+1.0.2 / 2012-08-24
+==================
+
+  * add `--foo=bar` support [arv]
+  * fix password on node 0.8.8. Make backward compatible with 0.6 [focusaurus]
+
+1.0.1 / 2012-08-03
+==================
+
+  * fix issue #56
+  * fix tty.setRawMode(mode) was moved to tty.ReadStream#setRawMode() (i.e. process.stdin.setRawMode())
+
+1.0.0 / 2012-07-05
+==================
+
+  * add support for optional option descriptions
+  * add defaulting of `.version()` to package.json's version
+
+0.6.1 / 2012-06-01
+==================
+
+  * Added: append (yes or no) on confirmation
+  * Added: allow node.js v0.7.x
+
+0.6.0 / 2012-04-10
+==================
+
+  * Added `.prompt(obj, callback)` support. Closes #49
+  * Added default support to .choose(). Closes #41
+  * Fixed the choice example
+
+0.5.1 / 2011-12-20
+==================
+
+  * Fixed `password()` for recent nodes. Closes #36
+
+0.5.0 / 2011-12-04
+==================
+
+  * Added sub-command option support [itay]
+
+0.4.3 / 2011-12-04
+==================
+
+  * Fixed custom help ordering. Closes #32
+
+0.4.2 / 2011-11-24
+==================
+
+  * Added travis support
+  * Fixed: line-buffered input automatically trimmed. Closes #31
+
+0.4.1 / 2011-11-18
+==================
+
+  * Removed listening for "close" on --help
+
+0.4.0 / 2011-11-15
+==================
+
+  * Added support for `--`. Closes #24
+
+0.3.3 / 2011-11-14
+==================
+
+  * Fixed: wait for close event when writing help info [Jerry Hamlet]
+
+0.3.2 / 2011-11-01
+==================
+
+  * Fixed long flag definitions with values [felixge]
+
+0.3.1 / 2011-10-31
+==================
+
+  * Changed `--version` short flag to `-V` from `-v`
+  * Changed `.version()` so it's configurable [felixge]
+
+0.3.0 / 2011-10-31
+==================
+
+  * Added support for long flags only. Closes #18
+
+0.2.1 / 2011-10-24
+==================
+
+  * "node": ">= 0.4.x < 0.7.0". Closes #20
+
+0.2.0 / 2011-09-26
+==================
+
+  * Allow for defaults that are not just boolean. Default peassignment only occurs for --no-*, optional, and required arguments. [Jim Isaacs]
+
+0.1.0 / 2011-08-24
+==================
+
+  * Added support for custom `--help` output
+
+0.0.5 / 2011-08-18
+==================
+
+  * Changed: when the user enters nothing prompt for password again
+  * Fixed issue with passwords beginning with numbers [NuckChorris]
+
+0.0.4 / 2011-08-15
+==================
+
+  * Fixed `Commander#args`
+
+0.0.3 / 2011-08-15
+==================
+
+  * Added default option value support
+
+0.0.2 / 2011-08-15
+==================
+
+  * Added mask support to `Command#password(str[, mask], fn)`
+  * Added `Command#password(str, fn)`
+
+0.0.1 / 2010-01-03
+==================
+
+  * Initial release
diff --git a/node_modules/commander/LICENSE b/node_modules/commander/LICENSE
new file mode 100644
index 0000000..10f997a
--- /dev/null
+++ b/node_modules/commander/LICENSE
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>
+
+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.
diff --git a/node_modules/commander/Readme.md b/node_modules/commander/Readme.md
new file mode 100644
index 0000000..c846e7a
--- /dev/null
+++ b/node_modules/commander/Readme.md
@@ -0,0 +1,428 @@
+# Commander.js
+
+
+[![Build Status](https://api.travis-ci.org/tj/commander.js.svg?branch=master)](http://travis-ci.org/tj/commander.js)
+[![NPM Version](http://img.shields.io/npm/v/commander.svg?style=flat)](https://www.npmjs.org/package/commander)
+[![NPM Downloads](https://img.shields.io/npm/dm/commander.svg?style=flat)](https://npmcharts.com/compare/commander?minimal=true)
+[![Install Size](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander)
+[![Join the chat at https://gitter.im/tj/commander.js](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/tj/commander.js?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+
+  The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/commander-rb/commander).  
+  [API documentation](http://tj.github.com/commander.js/)
+
+
+## Installation
+
+    $ npm install commander
+
+## Option parsing
+
+Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options.
+
+```js
+#!/usr/bin/env node
+
+/**
+ * Module dependencies.
+ */
+
+var program = require('commander');
+
+program
+  .version('0.1.0')
+  .option('-p, --peppers', 'Add peppers')
+  .option('-P, --pineapple', 'Add pineapple')
+  .option('-b, --bbq-sauce', 'Add bbq sauce')
+  .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')
+  .parse(process.argv);
+
+console.log('you ordered a pizza with:');
+if (program.peppers) console.log('  - peppers');
+if (program.pineapple) console.log('  - pineapple');
+if (program.bbqSauce) console.log('  - bbq');
+console.log('  - %s cheese', program.cheese);
+```
+
+Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc.
+
+Note that multi-word options starting with `--no` prefix negate the boolean value of the following word. For example, `--no-sauce` sets the value of `program.sauce` to false.
+
+```js
+#!/usr/bin/env node
+
+/**
+ * Module dependencies.
+ */
+
+var program = require('commander');
+
+program
+  .option('--no-sauce', 'Remove sauce')
+  .parse(process.argv);
+
+console.log('you ordered a pizza');
+if (program.sauce) console.log('  with sauce');
+else console.log(' without sauce');
+```
+
+To get string arguments from options you will need to use angle brackets <> for required inputs or square brackets [] for optional inputs. 
+
+e.g. ```.option('-m --myarg [myVar]', 'my super cool description')```
+
+Then to access the input if it was passed in.
+
+e.g. ```var myInput = program.myarg```
+
+**NOTE**: If you pass a argument without using brackets the example above will return true and not the value passed in.
+
+
+## Version option
+
+Calling the `version` implicitly adds the `-V` and `--version` options to the command.
+When either of these options is present, the command prints the version number and exits.
+
+    $ ./examples/pizza -V
+    0.0.1
+
+If you want your program to respond to the `-v` option instead of the `-V` option, simply pass custom flags to the `version` method using the same syntax as the `option` method.
+
+```js
+program
+  .version('0.0.1', '-v, --version')
+```
+
+The version flags can be named anything, but the long option is required.
+
+## Command-specific options
+
+You can attach options to a command.
+
+```js
+#!/usr/bin/env node
+
+var program = require('commander');
+
+program
+  .command('rm <dir>')
+  .option('-r, --recursive', 'Remove recursively')
+  .action(function (dir, cmd) {
+    console.log('remove ' + dir + (cmd.recursive ? ' recursively' : ''))
+  })
+
+program.parse(process.argv)
+```
+
+A command's options are validated when the command is used. Any unknown options will be reported as an error. However, if an action-based command does not define an action, then the options are not validated.
+
+## Coercion
+
+```js
+function range(val) {
+  return val.split('..').map(Number);
+}
+
+function list(val) {
+  return val.split(',');
+}
+
+function collect(val, memo) {
+  memo.push(val);
+  return memo;
+}
+
+function increaseVerbosity(v, total) {
+  return total + 1;
+}
+
+program
+  .version('0.1.0')
+  .usage('[options] <file ...>')
+  .option('-i, --integer <n>', 'An integer argument', parseInt)
+  .option('-f, --float <n>', 'A float argument', parseFloat)
+  .option('-r, --range <a>..<b>', 'A range', range)
+  .option('-l, --list <items>', 'A list', list)
+  .option('-o, --optional [value]', 'An optional value')
+  .option('-c, --collect [value]', 'A repeatable value', collect, [])
+  .option('-v, --verbose', 'A value that can be increased', increaseVerbosity, 0)
+  .parse(process.argv);
+
+console.log(' int: %j', program.integer);
+console.log(' float: %j', program.float);
+console.log(' optional: %j', program.optional);
+program.range = program.range || [];
+console.log(' range: %j..%j', program.range[0], program.range[1]);
+console.log(' list: %j', program.list);
+console.log(' collect: %j', program.collect);
+console.log(' verbosity: %j', program.verbose);
+console.log(' args: %j', program.args);
+```
+
+## Regular Expression
+```js
+program
+  .version('0.1.0')
+  .option('-s --size <size>', 'Pizza size', /^(large|medium|small)$/i, 'medium')
+  .option('-d --drink [drink]', 'Drink', /^(coke|pepsi|izze)$/i)
+  .parse(process.argv);
+
+console.log(' size: %j', program.size);
+console.log(' drink: %j', program.drink);
+```
+
+## Variadic arguments
+
+ The last argument of a command can be variadic, and only the last argument.  To make an argument variadic you have to
+ append `...` to the argument name.  Here is an example:
+
+```js
+#!/usr/bin/env node
+
+/**
+ * Module dependencies.
+ */
+
+var program = require('commander');
+
+program
+  .version('0.1.0')
+  .command('rmdir <dir> [otherDirs...]')
+  .action(function (dir, otherDirs) {
+    console.log('rmdir %s', dir);
+    if (otherDirs) {
+      otherDirs.forEach(function (oDir) {
+        console.log('rmdir %s', oDir);
+      });
+    }
+  });
+
+program.parse(process.argv);
+```
+
+ An `Array` is used for the value of a variadic argument.  This applies to `program.args` as well as the argument passed
+ to your action as demonstrated above.
+
+## Specify the argument syntax
+
+```js
+#!/usr/bin/env node
+
+var program = require('commander');
+
+program
+  .version('0.1.0')
+  .arguments('<cmd> [env]')
+  .action(function (cmd, env) {
+     cmdValue = cmd;
+     envValue = env;
+  });
+
+program.parse(process.argv);
+
+if (typeof cmdValue === 'undefined') {
+   console.error('no command given!');
+   process.exit(1);
+}
+console.log('command:', cmdValue);
+console.log('environment:', envValue || "no environment given");
+```
+Angled brackets (e.g. `<cmd>`) indicate required input. Square brackets (e.g. `[env]`) indicate optional input.
+
+## Git-style sub-commands
+
+```js
+// file: ./examples/pm
+var program = require('commander');
+
+program
+  .version('0.1.0')
+  .command('install [name]', 'install one or more packages')
+  .command('search [query]', 'search with optional query')
+  .command('list', 'list packages installed', {isDefault: true})
+  .parse(process.argv);
+```
+
+When `.command()` is invoked with a description argument, no `.action(callback)` should be called to handle sub-commands, otherwise there will be an error. This tells commander that you're going to use separate executables for sub-commands, much like `git(1)` and other popular tools.  
+The commander will try to search the executables in the directory of the entry script (like `./examples/pm`) with the name `program-command`, like `pm-install`, `pm-search`.
+
+Options can be passed with the call to `.command()`. Specifying `true` for `opts.noHelp` will remove the subcommand from the generated help output. Specifying `true` for `opts.isDefault` will run the subcommand if no other subcommand is specified.
+
+If the program is designed to be installed globally, make sure the executables have proper modes, like `755`.
+
+### `--harmony`
+
+You can enable `--harmony` option in two ways:
+* Use `#! /usr/bin/env node --harmony` in the sub-commands scripts. Note some os version don’t support this pattern.
+* Use the `--harmony` option when call the command, like `node --harmony examples/pm publish`. The `--harmony` option will be preserved when spawning sub-command process.
+
+## Automated --help
+
+ The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free:
+
+```  
+$ ./examples/pizza --help
+Usage: pizza [options]
+
+An application for pizzas ordering
+
+Options:
+  -h, --help           output usage information
+  -V, --version        output the version number
+  -p, --peppers        Add peppers
+  -P, --pineapple      Add pineapple
+  -b, --bbq            Add bbq sauce
+  -c, --cheese <type>  Add the specified type of cheese [marble]
+  -C, --no-cheese      You do not want any cheese
+```
+
+## Custom help
+
+ You can display arbitrary `-h, --help` information
+ by listening for "--help". Commander will automatically
+ exit once you are done so that the remainder of your program
+ does not execute causing undesired behaviors, for example
+ in the following executable "stuff" will not output when
+ `--help` is used.
+
+```js
+#!/usr/bin/env node
+
+/**
+ * Module dependencies.
+ */
+
+var program = require('commander');
+
+program
+  .version('0.1.0')
+  .option('-f, --foo', 'enable some foo')
+  .option('-b, --bar', 'enable some bar')
+  .option('-B, --baz', 'enable some baz');
+
+// must be before .parse() since
+// node's emit() is immediate
+
+program.on('--help', function(){
+  console.log('')
+  console.log('Examples:');
+  console.log('  $ custom-help --help');
+  console.log('  $ custom-help -h');
+});
+
+program.parse(process.argv);
+
+console.log('stuff');
+```
+
+Yields the following help output when `node script-name.js -h` or `node script-name.js --help` are run:
+
+```
+Usage: custom-help [options]
+
+Options:
+  -h, --help     output usage information
+  -V, --version  output the version number
+  -f, --foo      enable some foo
+  -b, --bar      enable some bar
+  -B, --baz      enable some baz
+
+Examples:
+  $ custom-help --help
+  $ custom-help -h
+```
+
+## .outputHelp(cb)
+
+Output help information without exiting.
+Optional callback cb allows post-processing of help text before it is displayed.
+
+If you want to display help by default (e.g. if no command was provided), you can use something like:
+
+```js
+var program = require('commander');
+var colors = require('colors');
+
+program
+  .version('0.1.0')
+  .command('getstream [url]', 'get stream URL')
+  .parse(process.argv);
+
+if (!process.argv.slice(2).length) {
+  program.outputHelp(make_red);
+}
+
+function make_red(txt) {
+  return colors.red(txt); //display the help text in red on the console
+}
+```
+
+## .help(cb)
+
+  Output help information and exit immediately.
+  Optional callback cb allows post-processing of help text before it is displayed.
+
+
+## Custom event listeners
+ You can execute custom actions by listening to command and option events.
+
+```js
+program.on('option:verbose', function () {
+  process.env.VERBOSE = this.verbose;
+});
+
+// error on unknown commands
+program.on('command:*', function () {
+  console.error('Invalid command: %s\nSee --help for a list of available commands.', program.args.join(' '));
+  process.exit(1);
+});
+```
+
+## Examples
+
+```js
+var program = require('commander');
+
+program
+  .version('0.1.0')
+  .option('-C, --chdir <path>', 'change the working directory')
+  .option('-c, --config <path>', 'set config path. defaults to ./deploy.conf')
+  .option('-T, --no-tests', 'ignore test hook');
+
+program
+  .command('setup [env]')
+  .description('run setup commands for all envs')
+  .option("-s, --setup_mode [mode]", "Which setup mode to use")
+  .action(function(env, options){
+    var mode = options.setup_mode || "normal";
+    env = env || 'all';
+    console.log('setup for %s env(s) with %s mode', env, mode);
+  });
+
+program
+  .command('exec <cmd>')
+  .alias('ex')
+  .description('execute the given remote cmd')
+  .option("-e, --exec_mode <mode>", "Which exec mode to use")
+  .action(function(cmd, options){
+    console.log('exec "%s" using %s mode', cmd, options.exec_mode);
+  }).on('--help', function() {
+    console.log('');
+    console.log('Examples:');
+    console.log('');
+    console.log('  $ deploy exec sequential');
+    console.log('  $ deploy exec async');
+  });
+
+program
+  .command('*')
+  .action(function(env){
+    console.log('deploying "%s"', env);
+  });
+
+program.parse(process.argv);
+```
+
+More Demos can be found in the [examples](https://github.com/tj/commander.js/tree/master/examples) directory.
+
+## License
+
+[MIT](https://github.com/tj/commander.js/blob/master/LICENSE)
diff --git a/node_modules/commander/index.js b/node_modules/commander/index.js
new file mode 100644
index 0000000..ec1d61d
--- /dev/null
+++ b/node_modules/commander/index.js
@@ -0,0 +1,1224 @@
+/**
+ * Module dependencies.
+ */
+
+var EventEmitter = require('events').EventEmitter;
+var spawn = require('child_process').spawn;
+var path = require('path');
+var dirname = path.dirname;
+var basename = path.basename;
+var fs = require('fs');
+
+/**
+ * Inherit `Command` from `EventEmitter.prototype`.
+ */
+
+require('util').inherits(Command, EventEmitter);
+
+/**
+ * Expose the root command.
+ */
+
+exports = module.exports = new Command();
+
+/**
+ * Expose `Command`.
+ */
+
+exports.Command = Command;
+
+/**
+ * Expose `Option`.
+ */
+
+exports.Option = Option;
+
+/**
+ * Initialize a new `Option` with the given `flags` and `description`.
+ *
+ * @param {String} flags
+ * @param {String} description
+ * @api public
+ */
+
+function Option(flags, description) {
+  this.flags = flags;
+  this.required = flags.indexOf('<') >= 0;
+  this.optional = flags.indexOf('[') >= 0;
+  this.bool = flags.indexOf('-no-') === -1;
+  flags = flags.split(/[ ,|]+/);
+  if (flags.length > 1 && !/^[[<]/.test(flags[1])) this.short = flags.shift();
+  this.long = flags.shift();
+  this.description = description || '';
+}
+
+/**
+ * Return option name.
+ *
+ * @return {String}
+ * @api private
+ */
+
+Option.prototype.name = function() {
+  return this.long
+    .replace('--', '')
+    .replace('no-', '');
+};
+
+/**
+ * Return option name, in a camelcase format that can be used
+ * as a object attribute key.
+ *
+ * @return {String}
+ * @api private
+ */
+
+Option.prototype.attributeName = function() {
+  return camelcase(this.name());
+};
+
+/**
+ * Check if `arg` matches the short or long flag.
+ *
+ * @param {String} arg
+ * @return {Boolean}
+ * @api private
+ */
+
+Option.prototype.is = function(arg) {
+  return this.short === arg || this.long === arg;
+};
+
+/**
+ * Initialize a new `Command`.
+ *
+ * @param {String} name
+ * @api public
+ */
+
+function Command(name) {
+  this.commands = [];
+  this.options = [];
+  this._execs = {};
+  this._allowUnknownOption = false;
+  this._args = [];
+  this._name = name || '';
+}
+
+/**
+ * Add command `name`.
+ *
+ * The `.action()` callback is invoked when the
+ * command `name` is specified via __ARGV__,
+ * and the remaining arguments are applied to the
+ * function for access.
+ *
+ * When the `name` is "*" an un-matched command
+ * will be passed as the first arg, followed by
+ * the rest of __ARGV__ remaining.
+ *
+ * Examples:
+ *
+ *      program
+ *        .version('0.0.1')
+ *        .option('-C, --chdir <path>', 'change the working directory')
+ *        .option('-c, --config <path>', 'set config path. defaults to ./deploy.conf')
+ *        .option('-T, --no-tests', 'ignore test hook')
+ *
+ *      program
+ *        .command('setup')
+ *        .description('run remote setup commands')
+ *        .action(function() {
+ *          console.log('setup');
+ *        });
+ *
+ *      program
+ *        .command('exec <cmd>')
+ *        .description('run the given remote command')
+ *        .action(function(cmd) {
+ *          console.log('exec "%s"', cmd);
+ *        });
+ *
+ *      program
+ *        .command('teardown <dir> [otherDirs...]')
+ *        .description('run teardown commands')
+ *        .action(function(dir, otherDirs) {
+ *          console.log('dir "%s"', dir);
+ *          if (otherDirs) {
+ *            otherDirs.forEach(function (oDir) {
+ *              console.log('dir "%s"', oDir);
+ *            });
+ *          }
+ *        });
+ *
+ *      program
+ *        .command('*')
+ *        .description('deploy the given env')
+ *        .action(function(env) {
+ *          console.log('deploying "%s"', env);
+ *        });
+ *
+ *      program.parse(process.argv);
+  *
+ * @param {String} name
+ * @param {String} [desc] for git-style sub-commands
+ * @return {Command} the new command
+ * @api public
+ */
+
+Command.prototype.command = function(name, desc, opts) {
+  if (typeof desc === 'object' && desc !== null) {
+    opts = desc;
+    desc = null;
+  }
+  opts = opts || {};
+  var args = name.split(/ +/);
+  var cmd = new Command(args.shift());
+
+  if (desc) {
+    cmd.description(desc);
+    this.executables = true;
+    this._execs[cmd._name] = true;
+    if (opts.isDefault) this.defaultExecutable = cmd._name;
+  }
+  cmd._noHelp = !!opts.noHelp;
+  this.commands.push(cmd);
+  cmd.parseExpectedArgs(args);
+  cmd.parent = this;
+
+  if (desc) return this;
+  return cmd;
+};
+
+/**
+ * Define argument syntax for the top-level command.
+ *
+ * @api public
+ */
+
+Command.prototype.arguments = function(desc) {
+  return this.parseExpectedArgs(desc.split(/ +/));
+};
+
+/**
+ * Add an implicit `help [cmd]` subcommand
+ * which invokes `--help` for the given command.
+ *
+ * @api private
+ */
+
+Command.prototype.addImplicitHelpCommand = function() {
+  this.command('help [cmd]', 'display help for [cmd]');
+};
+
+/**
+ * Parse expected `args`.
+ *
+ * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`.
+ *
+ * @param {Array} args
+ * @return {Command} for chaining
+ * @api public
+ */
+
+Command.prototype.parseExpectedArgs = function(args) {
+  if (!args.length) return;
+  var self = this;
+  args.forEach(function(arg) {
+    var argDetails = {
+      required: false,
+      name: '',
+      variadic: false
+    };
+
+    switch (arg[0]) {
+      case '<':
+        argDetails.required = true;
+        argDetails.name = arg.slice(1, -1);
+        break;
+      case '[':
+        argDetails.name = arg.slice(1, -1);
+        break;
+    }
+
+    if (argDetails.name.length > 3 && argDetails.name.slice(-3) === '...') {
+      argDetails.variadic = true;
+      argDetails.name = argDetails.name.slice(0, -3);
+    }
+    if (argDetails.name) {
+      self._args.push(argDetails);
+    }
+  });
+  return this;
+};
+
+/**
+ * Register callback `fn` for the command.
+ *
+ * Examples:
+ *
+ *      program
+ *        .command('help')
+ *        .description('display verbose help')
+ *        .action(function() {
+ *           // output help here
+ *        });
+ *
+ * @param {Function} fn
+ * @return {Command} for chaining
+ * @api public
+ */
+
+Command.prototype.action = function(fn) {
+  var self = this;
+  var listener = function(args, unknown) {
+    // Parse any so-far unknown options
+    args = args || [];
+    unknown = unknown || [];
+
+    var parsed = self.parseOptions(unknown);
+
+    // Output help if necessary
+    outputHelpIfNecessary(self, parsed.unknown);
+
+    // If there are still any unknown options, then we simply
+    // die, unless someone asked for help, in which case we give it
+    // to them, and then we die.
+    if (parsed.unknown.length > 0) {
+      self.unknownOption(parsed.unknown[0]);
+    }
+
+    // Leftover arguments need to be pushed back. Fixes issue #56
+    if (parsed.args.length) args = parsed.args.concat(args);
+
+    self._args.forEach(function(arg, i) {
+      if (arg.required && args[i] == null) {
+        self.missingArgument(arg.name);
+      } else if (arg.variadic) {
+        if (i !== self._args.length - 1) {
+          self.variadicArgNotLast(arg.name);
+        }
+
+        args[i] = args.splice(i);
+      }
+    });
+
+    // Always append ourselves to the end of the arguments,
+    // to make sure we match the number of arguments the user
+    // expects
+    if (self._args.length) {
+      args[self._args.length] = self;
+    } else {
+      args.push(self);
+    }
+
+    fn.apply(self, args);
+  };
+  var parent = this.parent || this;
+  var name = parent === this ? '*' : this._name;
+  parent.on('command:' + name, listener);
+  if (this._alias) parent.on('command:' + this._alias, listener);
+  return this;
+};
+
+/**
+ * Define option with `flags`, `description` and optional
+ * coercion `fn`.
+ *
+ * The `flags` string should contain both the short and long flags,
+ * separated by comma, a pipe or space. The following are all valid
+ * all will output this way when `--help` is used.
+ *
+ *    "-p, --pepper"
+ *    "-p|--pepper"
+ *    "-p --pepper"
+ *
+ * Examples:
+ *
+ *     // simple boolean defaulting to false
+ *     program.option('-p, --pepper', 'add pepper');
+ *
+ *     --pepper
+ *     program.pepper
+ *     // => Boolean
+ *
+ *     // simple boolean defaulting to true
+ *     program.option('-C, --no-cheese', 'remove cheese');
+ *
+ *     program.cheese
+ *     // => true
+ *
+ *     --no-cheese
+ *     program.cheese
+ *     // => false
+ *
+ *     // required argument
+ *     program.option('-C, --chdir <path>', 'change the working directory');
+ *
+ *     --chdir /tmp
+ *     program.chdir
+ *     // => "/tmp"
+ *
+ *     // optional argument
+ *     program.option('-c, --cheese [type]', 'add cheese [marble]');
+ *
+ * @param {String} flags
+ * @param {String} description
+ * @param {Function|*} [fn] or default
+ * @param {*} [defaultValue]
+ * @return {Command} for chaining
+ * @api public
+ */
+
+Command.prototype.option = function(flags, description, fn, defaultValue) {
+  var self = this,
+    option = new Option(flags, description),
+    oname = option.name(),
+    name = option.attributeName();
+
+  // default as 3rd arg
+  if (typeof fn !== 'function') {
+    if (fn instanceof RegExp) {
+      var regex = fn;
+      fn = function(val, def) {
+        var m = regex.exec(val);
+        return m ? m[0] : def;
+      };
+    } else {
+      defaultValue = fn;
+      fn = null;
+    }
+  }
+
+  // preassign default value only for --no-*, [optional], or <required>
+  if (!option.bool || option.optional || option.required) {
+    // when --no-* we make sure default is true
+    if (!option.bool) defaultValue = true;
+    // preassign only if we have a default
+    if (defaultValue !== undefined) {
+      self[name] = defaultValue;
+      option.defaultValue = defaultValue;
+    }
+  }
+
+  // register the option
+  this.options.push(option);
+
+  // when it's passed assign the value
+  // and conditionally invoke the callback
+  this.on('option:' + oname, function(val) {
+    // coercion
+    if (val !== null && fn) {
+      val = fn(val, self[name] === undefined ? defaultValue : self[name]);
+    }
+
+    // unassigned or bool
+    if (typeof self[name] === 'boolean' || typeof self[name] === 'undefined') {
+      // if no value, bool true, and we have a default, then use it!
+      if (val == null) {
+        self[name] = option.bool
+          ? defaultValue || true
+          : false;
+      } else {
+        self[name] = val;
+      }
+    } else if (val !== null) {
+      // reassign
+      self[name] = val;
+    }
+  });
+
+  return this;
+};
+
+/**
+ * Allow unknown options on the command line.
+ *
+ * @param {Boolean} arg if `true` or omitted, no error will be thrown
+ * for unknown options.
+ * @api public
+ */
+Command.prototype.allowUnknownOption = function(arg) {
+  this._allowUnknownOption = arguments.length === 0 || arg;
+  return this;
+};
+
+/**
+ * Parse `argv`, settings options and invoking commands when defined.
+ *
+ * @param {Array} argv
+ * @return {Command} for chaining
+ * @api public
+ */
+
+Command.prototype.parse = function(argv) {
+  // implicit help
+  if (this.executables) this.addImplicitHelpCommand();
+
+  // store raw args
+  this.rawArgs = argv;
+
+  // guess name
+  this._name = this._name || basename(argv[1], '.js');
+
+  // github-style sub-commands with no sub-command
+  if (this.executables && argv.length < 3 && !this.defaultExecutable) {
+    // this user needs help
+    argv.push('--help');
+  }
+
+  // process argv
+  var parsed = this.parseOptions(this.normalize(argv.slice(2)));
+  var args = this.args = parsed.args;
+
+  var result = this.parseArgs(this.args, parsed.unknown);
+
+  // executable sub-commands
+  var name = result.args[0];
+
+  var aliasCommand = null;
+  // check alias of sub commands
+  if (name) {
+    aliasCommand = this.commands.filter(function(command) {
+      return command.alias() === name;
+    })[0];
+  }
+
+  if (this._execs[name] === true) {
+    return this.executeSubCommand(argv, args, parsed.unknown);
+  } else if (aliasCommand) {
+    // is alias of a subCommand
+    args[0] = aliasCommand._name;
+    return this.executeSubCommand(argv, args, parsed.unknown);
+  } else if (this.defaultExecutable) {
+    // use the default subcommand
+    args.unshift(this.defaultExecutable);
+    return this.executeSubCommand(argv, args, parsed.unknown);
+  }
+
+  return result;
+};
+
+/**
+ * Execute a sub-command executable.
+ *
+ * @param {Array} argv
+ * @param {Array} args
+ * @param {Array} unknown
+ * @api private
+ */
+
+Command.prototype.executeSubCommand = function(argv, args, unknown) {
+  args = args.concat(unknown);
+
+  if (!args.length) this.help();
+  if (args[0] === 'help' && args.length === 1) this.help();
+
+  // <cmd> --help
+  if (args[0] === 'help') {
+    args[0] = args[1];
+    args[1] = '--help';
+  }
+
+  // executable
+  var f = argv[1];
+  // name of the subcommand, link `pm-install`
+  var bin = basename(f, path.extname(f)) + '-' + args[0];
+
+  // In case of globally installed, get the base dir where executable
+  //  subcommand file should be located at
+  var baseDir;
+
+  var resolvedLink = fs.realpathSync(f);
+
+  baseDir = dirname(resolvedLink);
+
+  // prefer local `./<bin>` to bin in the $PATH
+  var localBin = path.join(baseDir, bin);
+
+  // whether bin file is a js script with explicit `.js` or `.ts` extension
+  var isExplicitJS = false;
+  if (exists(localBin + '.js')) {
+    bin = localBin + '.js';
+    isExplicitJS = true;
+  } else if (exists(localBin + '.ts')) {
+    bin = localBin + '.ts';
+    isExplicitJS = true;
+  } else if (exists(localBin)) {
+    bin = localBin;
+  }
+
+  args = args.slice(1);
+
+  var proc;
+  if (process.platform !== 'win32') {
+    if (isExplicitJS) {
+      args.unshift(bin);
+      // add executable arguments to spawn
+      args = (process.execArgv || []).concat(args);
+
+      proc = spawn(process.argv[0], args, { stdio: 'inherit', customFds: [0, 1, 2] });
+    } else {
+      proc = spawn(bin, args, { stdio: 'inherit', customFds: [0, 1, 2] });
+    }
+  } else {
+    args.unshift(bin);
+    proc = spawn(process.execPath, args, { stdio: 'inherit' });
+  }
+
+  var signals = ['SIGUSR1', 'SIGUSR2', 'SIGTERM', 'SIGINT', 'SIGHUP'];
+  signals.forEach(function(signal) {
+    process.on(signal, function() {
+      if (proc.killed === false && proc.exitCode === null) {
+        proc.kill(signal);
+      }
+    });
+  });
+  proc.on('close', process.exit.bind(process));
+  proc.on('error', function(err) {
+    if (err.code === 'ENOENT') {
+      console.error('error: %s(1) does not exist, try --help', bin);
+    } else if (err.code === 'EACCES') {
+      console.error('error: %s(1) not executable. try chmod or run with root', bin);
+    }
+    process.exit(1);
+  });
+
+  // Store the reference to the child process
+  this.runningCommand = proc;
+};
+
+/**
+ * Normalize `args`, splitting joined short flags. For example
+ * the arg "-abc" is equivalent to "-a -b -c".
+ * This also normalizes equal sign and splits "--abc=def" into "--abc def".
+ *
+ * @param {Array} args
+ * @return {Array}
+ * @api private
+ */
+
+Command.prototype.normalize = function(args) {
+  var ret = [],
+    arg,
+    lastOpt,
+    index;
+
+  for (var i = 0, len = args.length; i < len; ++i) {
+    arg = args[i];
+    if (i > 0) {
+      lastOpt = this.optionFor(args[i - 1]);
+    }
+
+    if (arg === '--') {
+      // Honor option terminator
+      ret = ret.concat(args.slice(i));
+      break;
+    } else if (lastOpt && lastOpt.required) {
+      ret.push(arg);
+    } else if (arg.length > 1 && arg[0] === '-' && arg[1] !== '-') {
+      arg.slice(1).split('').forEach(function(c) {
+        ret.push('-' + c);
+      });
+    } else if (/^--/.test(arg) && ~(index = arg.indexOf('='))) {
+      ret.push(arg.slice(0, index), arg.slice(index + 1));
+    } else {
+      ret.push(arg);
+    }
+  }
+
+  return ret;
+};
+
+/**
+ * Parse command `args`.
+ *
+ * When listener(s) are available those
+ * callbacks are invoked, otherwise the "*"
+ * event is emitted and those actions are invoked.
+ *
+ * @param {Array} args
+ * @return {Command} for chaining
+ * @api private
+ */
+
+Command.prototype.parseArgs = function(args, unknown) {
+  var name;
+
+  if (args.length) {
+    name = args[0];
+    if (this.listeners('command:' + name).length) {
+      this.emit('command:' + args.shift(), args, unknown);
+    } else {
+      this.emit('command:*', args);
+    }
+  } else {
+    outputHelpIfNecessary(this, unknown);
+
+    // If there were no args and we have unknown options,
+    // then they are extraneous and we need to error.
+    if (unknown.length > 0) {
+      this.unknownOption(unknown[0]);
+    }
+    if (this.commands.length === 0 &&
+        this._args.filter(function(a) { return a.required; }).length === 0) {
+      this.emit('command:*');
+    }
+  }
+
+  return this;
+};
+
+/**
+ * Return an option matching `arg` if any.
+ *
+ * @param {String} arg
+ * @return {Option}
+ * @api private
+ */
+
+Command.prototype.optionFor = function(arg) {
+  for (var i = 0, len = this.options.length; i < len; ++i) {
+    if (this.options[i].is(arg)) {
+      return this.options[i];
+    }
+  }
+};
+
+/**
+ * Parse options from `argv` returning `argv`
+ * void of these options.
+ *
+ * @param {Array} argv
+ * @return {Array}
+ * @api public
+ */
+
+Command.prototype.parseOptions = function(argv) {
+  var args = [],
+    len = argv.length,
+    literal,
+    option,
+    arg;
+
+  var unknownOptions = [];
+
+  // parse options
+  for (var i = 0; i < len; ++i) {
+    arg = argv[i];
+
+    // literal args after --
+    if (literal) {
+      args.push(arg);
+      continue;
+    }
+
+    if (arg === '--') {
+      literal = true;
+      continue;
+    }
+
+    // find matching Option
+    option = this.optionFor(arg);
+
+    // option is defined
+    if (option) {
+      // requires arg
+      if (option.required) {
+        arg = argv[++i];
+        if (arg == null) return this.optionMissingArgument(option);
+        this.emit('option:' + option.name(), arg);
+      // optional arg
+      } else if (option.optional) {
+        arg = argv[i + 1];
+        if (arg == null || (arg[0] === '-' && arg !== '-')) {
+          arg = null;
+        } else {
+          ++i;
+        }
+        this.emit('option:' + option.name(), arg);
+      // bool
+      } else {
+        this.emit('option:' + option.name());
+      }
+      continue;
+    }
+
+    // looks like an option
+    if (arg.length > 1 && arg[0] === '-') {
+      unknownOptions.push(arg);
+
+      // If the next argument looks like it might be
+      // an argument for this option, we pass it on.
+      // If it isn't, then it'll simply be ignored
+      if ((i + 1) < argv.length && argv[i + 1][0] !== '-') {
+        unknownOptions.push(argv[++i]);
+      }
+      continue;
+    }
+
+    // arg
+    args.push(arg);
+  }
+
+  return { args: args, unknown: unknownOptions };
+};
+
+/**
+ * Return an object containing options as key-value pairs
+ *
+ * @return {Object}
+ * @api public
+ */
+Command.prototype.opts = function() {
+  var result = {},
+    len = this.options.length;
+
+  for (var i = 0; i < len; i++) {
+    var key = this.options[i].attributeName();
+    result[key] = key === this._versionOptionName ? this._version : this[key];
+  }
+  return result;
+};
+
+/**
+ * Argument `name` is missing.
+ *
+ * @param {String} name
+ * @api private
+ */
+
+Command.prototype.missingArgument = function(name) {
+  console.error("error: missing required argument `%s'", name);
+  process.exit(1);
+};
+
+/**
+ * `Option` is missing an argument, but received `flag` or nothing.
+ *
+ * @param {String} option
+ * @param {String} flag
+ * @api private
+ */
+
+Command.prototype.optionMissingArgument = function(option, flag) {
+  if (flag) {
+    console.error("error: option `%s' argument missing, got `%s'", option.flags, flag);
+  } else {
+    console.error("error: option `%s' argument missing", option.flags);
+  }
+  process.exit(1);
+};
+
+/**
+ * Unknown option `flag`.
+ *
+ * @param {String} flag
+ * @api private
+ */
+
+Command.prototype.unknownOption = function(flag) {
+  if (this._allowUnknownOption) return;
+  console.error("error: unknown option `%s'", flag);
+  process.exit(1);
+};
+
+/**
+ * Variadic argument with `name` is not the last argument as required.
+ *
+ * @param {String} name
+ * @api private
+ */
+
+Command.prototype.variadicArgNotLast = function(name) {
+  console.error("error: variadic arguments must be last `%s'", name);
+  process.exit(1);
+};
+
+/**
+ * Set the program version to `str`.
+ *
+ * This method auto-registers the "-V, --version" flag
+ * which will print the version number when passed.
+ *
+ * @param {String} str
+ * @param {String} [flags]
+ * @return {Command} for chaining
+ * @api public
+ */
+
+Command.prototype.version = function(str, flags) {
+  if (arguments.length === 0) return this._version;
+  this._version = str;
+  flags = flags || '-V, --version';
+  var versionOption = new Option(flags, 'output the version number');
+  this._versionOptionName = versionOption.long.substr(2) || 'version';
+  this.options.push(versionOption);
+  this.on('option:' + this._versionOptionName, function() {
+    process.stdout.write(str + '\n');
+    process.exit(0);
+  });
+  return this;
+};
+
+/**
+ * Set the description to `str`.
+ *
+ * @param {String} str
+ * @param {Object} argsDescription
+ * @return {String|Command}
+ * @api public
+ */
+
+Command.prototype.description = function(str, argsDescription) {
+  if (arguments.length === 0) return this._description;
+  this._description = str;
+  this._argsDescription = argsDescription;
+  return this;
+};
+
+/**
+ * Set an alias for the command
+ *
+ * @param {String} alias
+ * @return {String|Command}
+ * @api public
+ */
+
+Command.prototype.alias = function(alias) {
+  var command = this;
+  if (this.commands.length !== 0) {
+    command = this.commands[this.commands.length - 1];
+  }
+
+  if (arguments.length === 0) return command._alias;
+
+  if (alias === command._name) throw new Error('Command alias can\'t be the same as its name');
+
+  command._alias = alias;
+  return this;
+};
+
+/**
+ * Set / get the command usage `str`.
+ *
+ * @param {String} str
+ * @return {String|Command}
+ * @api public
+ */
+
+Command.prototype.usage = function(str) {
+  var args = this._args.map(function(arg) {
+    return humanReadableArgName(arg);
+  });
+
+  var usage = '[options]' +
+    (this.commands.length ? ' [command]' : '') +
+    (this._args.length ? ' ' + args.join(' ') : '');
+
+  if (arguments.length === 0) return this._usage || usage;
+  this._usage = str;
+
+  return this;
+};
+
+/**
+ * Get or set the name of the command
+ *
+ * @param {String} str
+ * @return {String|Command}
+ * @api public
+ */
+
+Command.prototype.name = function(str) {
+  if (arguments.length === 0) return this._name;
+  this._name = str;
+  return this;
+};
+
+/**
+ * Return prepared commands.
+ *
+ * @return {Array}
+ * @api private
+ */
+
+Command.prototype.prepareCommands = function() {
+  return this.commands.filter(function(cmd) {
+    return !cmd._noHelp;
+  }).map(function(cmd) {
+    var args = cmd._args.map(function(arg) {
+      return humanReadableArgName(arg);
+    }).join(' ');
+
+    return [
+      cmd._name +
+        (cmd._alias ? '|' + cmd._alias : '') +
+        (cmd.options.length ? ' [options]' : '') +
+        (args ? ' ' + args : ''),
+      cmd._description
+    ];
+  });
+};
+
+/**
+ * Return the largest command length.
+ *
+ * @return {Number}
+ * @api private
+ */
+
+Command.prototype.largestCommandLength = function() {
+  var commands = this.prepareCommands();
+  return commands.reduce(function(max, command) {
+    return Math.max(max, command[0].length);
+  }, 0);
+};
+
+/**
+ * Return the largest option length.
+ *
+ * @return {Number}
+ * @api private
+ */
+
+Command.prototype.largestOptionLength = function() {
+  var options = [].slice.call(this.options);
+  options.push({
+    flags: '-h, --help'
+  });
+  return options.reduce(function(max, option) {
+    return Math.max(max, option.flags.length);
+  }, 0);
+};
+
+/**
+ * Return the largest arg length.
+ *
+ * @return {Number}
+ * @api private
+ */
+
+Command.prototype.largestArgLength = function() {
+  return this._args.reduce(function(max, arg) {
+    return Math.max(max, arg.name.length);
+  }, 0);
+};
+
+/**
+ * Return the pad width.
+ *
+ * @return {Number}
+ * @api private
+ */
+
+Command.prototype.padWidth = function() {
+  var width = this.largestOptionLength();
+  if (this._argsDescription && this._args.length) {
+    if (this.largestArgLength() > width) {
+      width = this.largestArgLength();
+    }
+  }
+
+  if (this.commands && this.commands.length) {
+    if (this.largestCommandLength() > width) {
+      width = this.largestCommandLength();
+    }
+  }
+
+  return width;
+};
+
+/**
+ * Return help for options.
+ *
+ * @return {String}
+ * @api private
+ */
+
+Command.prototype.optionHelp = function() {
+  var width = this.padWidth();
+
+  // Append the help information
+  return this.options.map(function(option) {
+    return pad(option.flags, width) + '  ' + option.description +
+      ((option.bool && option.defaultValue !== undefined) ? ' (default: ' + JSON.stringify(option.defaultValue) + ')' : '');
+  }).concat([pad('-h, --help', width) + '  ' + 'output usage information'])
+    .join('\n');
+};
+
+/**
+ * Return command help documentation.
+ *
+ * @return {String}
+ * @api private
+ */
+
+Command.prototype.commandHelp = function() {
+  if (!this.commands.length) return '';
+
+  var commands = this.prepareCommands();
+  var width = this.padWidth();
+
+  return [
+    'Commands:',
+    commands.map(function(cmd) {
+      var desc = cmd[1] ? '  ' + cmd[1] : '';
+      return (desc ? pad(cmd[0], width) : cmd[0]) + desc;
+    }).join('\n').replace(/^/gm, '  '),
+    ''
+  ].join('\n');
+};
+
+/**
+ * Return program help documentation.
+ *
+ * @return {String}
+ * @api private
+ */
+
+Command.prototype.helpInformation = function() {
+  var desc = [];
+  if (this._description) {
+    desc = [
+      this._description,
+      ''
+    ];
+
+    var argsDescription = this._argsDescription;
+    if (argsDescription && this._args.length) {
+      var width = this.padWidth();
+      desc.push('Arguments:');
+      desc.push('');
+      this._args.forEach(function(arg) {
+        desc.push('  ' + pad(arg.name, width) + '  ' + argsDescription[arg.name]);
+      });
+      desc.push('');
+    }
+  }
+
+  var cmdName = this._name;
+  if (this._alias) {
+    cmdName = cmdName + '|' + this._alias;
+  }
+  var usage = [
+    'Usage: ' + cmdName + ' ' + this.usage(),
+    ''
+  ];
+
+  var cmds = [];
+  var commandHelp = this.commandHelp();
+  if (commandHelp) cmds = [commandHelp];
+
+  var options = [
+    'Options:',
+    '' + this.optionHelp().replace(/^/gm, '  '),
+    ''
+  ];
+
+  return usage
+    .concat(desc)
+    .concat(options)
+    .concat(cmds)
+    .join('\n');
+};
+
+/**
+ * Output help information for this command
+ *
+ * @api public
+ */
+
+Command.prototype.outputHelp = function(cb) {
+  if (!cb) {
+    cb = function(passthru) {
+      return passthru;
+    };
+  }
+  process.stdout.write(cb(this.helpInformation()));
+  this.emit('--help');
+};
+
+/**
+ * Output help information and exit.
+ *
+ * @api public
+ */
+
+Command.prototype.help = function(cb) {
+  this.outputHelp(cb);
+  process.exit();
+};
+
+/**
+ * Camel-case the given `flag`
+ *
+ * @param {String} flag
+ * @return {String}
+ * @api private
+ */
+
+function camelcase(flag) {
+  return flag.split('-').reduce(function(str, word) {
+    return str + word[0].toUpperCase() + word.slice(1);
+  });
+}
+
+/**
+ * Pad `str` to `width`.
+ *
+ * @param {String} str
+ * @param {Number} width
+ * @return {String}
+ * @api private
+ */
+
+function pad(str, width) {
+  var len = Math.max(0, width - str.length);
+  return str + Array(len + 1).join(' ');
+}
+
+/**
+ * Output help information if necessary
+ *
+ * @param {Command} command to output help for
+ * @param {Array} array of options to search for -h or --help
+ * @api private
+ */
+
+function outputHelpIfNecessary(cmd, options) {
+  options = options || [];
+  for (var i = 0; i < options.length; i++) {
+    if (options[i] === '--help' || options[i] === '-h') {
+      cmd.outputHelp();
+      process.exit(0);
+    }
+  }
+}
+
+/**
+ * Takes an argument an returns its human readable equivalent for help usage.
+ *
+ * @param {Object} arg
+ * @return {String}
+ * @api private
+ */
+
+function humanReadableArgName(arg) {
+  var nameOutput = arg.name + (arg.variadic === true ? '...' : '');
+
+  return arg.required
+    ? '<' + nameOutput + '>'
+    : '[' + nameOutput + ']';
+}
+
+// for versions before node v0.8 when there weren't `fs.existsSync`
+function exists(file) {
+  try {
+    if (fs.statSync(file).isFile()) {
+      return true;
+    }
+  } catch (e) {
+    return false;
+  }
+}
diff --git a/node_modules/commander/package.json b/node_modules/commander/package.json
new file mode 100644
index 0000000..0023c5c
--- /dev/null
+++ b/node_modules/commander/package.json
@@ -0,0 +1,38 @@
+{
+  "name": "commander",
+  "version": "2.20.3",
+  "description": "the complete solution for node.js command-line programs",
+  "keywords": [
+    "commander",
+    "command",
+    "option",
+    "parser"
+  ],
+  "author": "TJ Holowaychuk <tj@vision-media.ca>",
+  "license": "MIT",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/tj/commander.js.git"
+  },
+  "scripts": {
+    "lint": "eslint index.js",
+    "test": "node test/run.js && npm run test-typings",
+    "test-typings": "tsc -p tsconfig.json"
+  },
+  "main": "index",
+  "files": [
+    "index.js",
+    "typings/index.d.ts"
+  ],
+  "dependencies": {},
+  "devDependencies": {
+    "@types/node": "^12.7.8",
+    "eslint": "^6.4.0",
+    "should": "^13.2.3",
+    "sinon": "^7.5.0",
+    "standard": "^14.3.1",
+    "ts-node": "^8.4.1",
+    "typescript": "^3.6.3"
+  },
+  "typings": "typings/index.d.ts"
+}
diff --git a/node_modules/commander/typings/index.d.ts b/node_modules/commander/typings/index.d.ts
new file mode 100644
index 0000000..bcda277
--- /dev/null
+++ b/node_modules/commander/typings/index.d.ts
@@ -0,0 +1,310 @@
+// Type definitions for commander 2.11
+// Project: https://github.com/visionmedia/commander.js
+// Definitions by: Alan Agius <https://github.com/alan-agius4>, Marcelo Dezem <https://github.com/mdezem>, vvakame <https://github.com/vvakame>, Jules Randolph <https://github.com/sveinburne>
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+declare namespace local {
+
+  class Option {
+    flags: string;
+    required: boolean;
+    optional: boolean;
+    bool: boolean;
+    short?: string;
+    long: string;
+    description: string;
+
+    /**
+     * Initialize a new `Option` with the given `flags` and `description`.
+     *
+     * @param {string} flags
+     * @param {string} [description]
+     */
+    constructor(flags: string, description?: string);
+  }
+
+  class Command extends NodeJS.EventEmitter {
+    [key: string]: any;
+
+    args: string[];
+
+    /**
+     * Initialize a new `Command`.
+     *
+     * @param {string} [name]
+     */
+    constructor(name?: string);
+
+    /**
+     * Set the program version to `str`.
+     *
+     * This method auto-registers the "-V, --version" flag
+     * which will print the version number when passed.
+     *
+     * @param {string} str
+     * @param {string} [flags]
+     * @returns {Command} for chaining
+     */
+    version(str: string, flags?: string): Command;
+
+    /**
+     * Add command `name`.
+     *
+     * The `.action()` callback is invoked when the
+     * command `name` is specified via __ARGV__,
+     * and the remaining arguments are applied to the
+     * function for access.
+     *
+     * When the `name` is "*" an un-matched command
+     * will be passed as the first arg, followed by
+     * the rest of __ARGV__ remaining.
+     *
+     * @example
+     *      program
+     *        .version('0.0.1')
+     *        .option('-C, --chdir <path>', 'change the working directory')
+     *        .option('-c, --config <path>', 'set config path. defaults to ./deploy.conf')
+     *        .option('-T, --no-tests', 'ignore test hook')
+     *
+     *      program
+     *        .command('setup')
+     *        .description('run remote setup commands')
+     *        .action(function() {
+     *          console.log('setup');
+     *        });
+     *
+     *      program
+     *        .command('exec <cmd>')
+     *        .description('run the given remote command')
+     *        .action(function(cmd) {
+     *          console.log('exec "%s"', cmd);
+     *        });
+     *
+     *      program
+     *        .command('teardown <dir> [otherDirs...]')
+     *        .description('run teardown commands')
+     *        .action(function(dir, otherDirs) {
+     *          console.log('dir "%s"', dir);
+     *          if (otherDirs) {
+     *            otherDirs.forEach(function (oDir) {
+     *              console.log('dir "%s"', oDir);
+     *            });
+     *          }
+     *        });
+     *
+     *      program
+     *        .command('*')
+     *        .description('deploy the given env')
+     *        .action(function(env) {
+     *          console.log('deploying "%s"', env);
+     *        });
+     *
+     *      program.parse(process.argv);
+     *
+     * @param {string} name
+     * @param {string} [desc] for git-style sub-commands
+     * @param {CommandOptions} [opts] command options
+     * @returns {Command} the new command
+     */
+    command(name: string, desc?: string, opts?: commander.CommandOptions): Command;
+
+    /**
+     * Define argument syntax for the top-level command.
+     *
+     * @param {string} desc
+     * @returns {Command} for chaining
+     */
+    arguments(desc: string): Command;
+
+    /**
+     * Parse expected `args`.
+     *
+     * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`.
+     *
+     * @param {string[]} args
+     * @returns {Command} for chaining
+     */
+    parseExpectedArgs(args: string[]): Command;
+
+    /**
+     * Register callback `fn` for the command.
+     *
+     * @example
+     *      program
+     *        .command('help')
+     *        .description('display verbose help')
+     *        .action(function() {
+     *           // output help here
+     *        });
+     *
+     * @param {(...args: any[]) => void} fn
+     * @returns {Command} for chaining
+     */
+    action(fn: (...args: any[]) => void): Command;
+
+    /**
+     * Define option with `flags`, `description` and optional
+     * coercion `fn`.
+     *
+     * The `flags` string should contain both the short and long flags,
+     * separated by comma, a pipe or space. The following are all valid
+     * all will output this way when `--help` is used.
+     *
+     *    "-p, --pepper"
+     *    "-p|--pepper"
+     *    "-p --pepper"
+     *
+     * @example
+     *     // simple boolean defaulting to false
+     *     program.option('-p, --pepper', 'add pepper');
+     *
+     *     --pepper
+     *     program.pepper
+     *     // => Boolean
+     *
+     *     // simple boolean defaulting to true
+     *     program.option('-C, --no-cheese', 'remove cheese');
+     *
+     *     program.cheese
+     *     // => true
+     *
+     *     --no-cheese
+     *     program.cheese
+     *     // => false
+     *
+     *     // required argument
+     *     program.option('-C, --chdir <path>', 'change the working directory');
+     *
+     *     --chdir /tmp
+     *     program.chdir
+     *     // => "/tmp"
+     *
+     *     // optional argument
+     *     program.option('-c, --cheese [type]', 'add cheese [marble]');
+     *
+     * @param {string} flags
+     * @param {string} [description]
+     * @param {((arg1: any, arg2: any) => void) | RegExp} [fn] function or default
+     * @param {*} [defaultValue]
+     * @returns {Command} for chaining
+     */
+    option(flags: string, description?: string, fn?: ((arg1: any, arg2: any) => void) | RegExp, defaultValue?: any): Command;
+    option(flags: string, description?: string, defaultValue?: any): Command;
+
+    /**
+     * Allow unknown options on the command line.
+     *
+     * @param {boolean} [arg] if `true` or omitted, no error will be thrown for unknown options.
+     * @returns {Command} for chaining
+     */
+    allowUnknownOption(arg?: boolean): Command;
+
+    /**
+     * Parse `argv`, settings options and invoking commands when defined.
+     *
+     * @param {string[]} argv
+     * @returns {Command} for chaining
+     */
+    parse(argv: string[]): Command;
+
+    /**
+     * Parse options from `argv` returning `argv` void of these options.
+     *
+     * @param {string[]} argv
+     * @returns {ParseOptionsResult}
+     */
+    parseOptions(argv: string[]): commander.ParseOptionsResult;
+
+    /**
+     * Return an object containing options as key-value pairs
+     *
+     * @returns {{[key: string]: any}}
+     */
+    opts(): { [key: string]: any };
+
+    /**
+     * Set the description to `str`.
+     *
+     * @param {string} str
+     * @param {{[argName: string]: string}} argsDescription
+     * @return {(Command | string)}
+     */
+    description(str: string, argsDescription?: {[argName: string]: string}): Command;
+    description(): string;
+
+    /**
+     * Set an alias for the command.
+     *
+     * @param {string} alias
+     * @return {(Command | string)}
+     */
+    alias(alias: string): Command;
+    alias(): string;
+
+    /**
+     * Set or get the command usage.
+     *
+     * @param {string} str
+     * @return {(Command | string)}
+     */
+    usage(str: string): Command;
+    usage(): string;
+
+    /**
+     * Set the name of the command.
+     *
+     * @param {string} str
+     * @return {Command}
+     */
+    name(str: string): Command;
+
+    /**
+     * Get the name of the command.
+     *
+     * @return {string}
+     */
+    name(): string;
+
+    /**
+     * Output help information for this command.
+     *
+     * @param {(str: string) => string} [cb]
+     */
+    outputHelp(cb?: (str: string) => string): void;
+
+    /** Output help information and exit.
+     *
+     * @param {(str: string) => string} [cb]
+     */
+    help(cb?: (str: string) => string): never;
+  }
+
+}
+
+declare namespace commander {
+
+    type Command = local.Command
+
+    type Option = local.Option
+
+    interface CommandOptions {
+        noHelp?: boolean;
+        isDefault?: boolean;
+    }
+
+    interface ParseOptionsResult {
+        args: string[];
+        unknown: string[];
+    }
+
+    interface CommanderStatic extends Command {
+        Command: typeof local.Command;
+        Option: typeof local.Option;
+        CommandOptions: CommandOptions;
+        ParseOptionsResult: ParseOptionsResult;
+    }
+
+}
+
+declare const commander: commander.CommanderStatic;
+export = commander;
diff --git a/node_modules/cssfilter/LICENSE b/node_modules/cssfilter/LICENSE
new file mode 100644
index 0000000..49b61eb
--- /dev/null
+++ b/node_modules/cssfilter/LICENSE
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2015 老雷
+
+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.
+
diff --git a/node_modules/cssfilter/README.md b/node_modules/cssfilter/README.md
new file mode 100644
index 0000000..21cd65d
--- /dev/null
+++ b/node_modules/cssfilter/README.md
@@ -0,0 +1,86 @@
+[![NPM version](https://badge.fury.io/js/cssfilter.png)](http://badge.fury.io/js/xss)
+[![Build Status](https://secure.travis-ci.org/leizongmin/js-css-filter.png?branch=master)](http://travis-ci.org/leizongmin/js-css-filter)
+[![Dependencies Status](https://david-dm.org/leizongmin/js-css-filter.png)](https://david-dm.org/leizongmin/js-css-filter)
+[![coveralls-image](https://img.shields.io/coveralls/leizongmin/js-css-filter.svg?style=flat-square)](https://coveralls.io/r/leizongmin/js-css-filter?branch=master)
+
+# cssfilter
+Sanitize untrusted CSS with a configuration specified by a Whitelist. 根据白名单过滤CSS
+
+
+## 安装
+
+```bash
+$ npm install cssfilter --save
+```
+
+
+## 使用方法
+
+```javascript
+var cssfilter = require('cssfilter');
+var css = cssfilter('position:fixed; /* this is comments */ width:100px; height:100px; background:#aaa;');
+console.log(css);
+// 输出:width:100px; height:100px; background:#aaa;
+// 因为position不在白名单允许范围
+```
+
+或者:
+
+```javascript
+options = {
+  // 白名单,可选
+  whiteList: {
+    a: true,                 // true表示允许
+    b: /^fixed|relative$/,   // 正则test()返回true表示允许
+    c: function (value) {
+      // 返回true表示允许
+    },
+    d: false                 // 除以上三个以外,所有值均表示不允许
+  },
+  // 当匹配到一个在白名单中的属性时
+  onAttr: function (name, value, options) {
+    // name为属性名
+    // value为属性值
+    // 返回字符串表示覆盖此段CSS
+    // 不返回任何值表示使用默认生成方法,即 name:value
+  },
+  // 当匹配到一个不在白名单中的属性时
+  onIgnoreAttr: function (name, value, options) {
+    // name为属性名
+    // value为属性值
+    // 返回字符串表示覆盖此段CSS
+    // 不返回任何值表示使用默认生成方法,即将此段CSS去掉
+  }
+};
+mycss = new cssfilter.FilterCSS(options);
+// then apply mycss.process()
+css = mycss.process('position:fixed; width:100px; height:100px; background:#aaa;');
+console.log(css);
+```
+
+
+## License
+
+```
+The MIT License (MIT)
+
+Copyright (c) 2015-2016 Zongmin Lei(雷宗民) <leizongmin@gmail.com>
+
+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.
+```
diff --git a/node_modules/cssfilter/lib/css.js b/node_modules/cssfilter/lib/css.js
new file mode 100644
index 0000000..49e9707
--- /dev/null
+++ b/node_modules/cssfilter/lib/css.js
@@ -0,0 +1,110 @@
+/**
+ * cssfilter
+ *
+ * @author 老雷<leizongmin@gmail.com>
+ */
+
+var DEFAULT = require('./default');
+var parseStyle = require('./parser');
+var _ = require('./util');
+
+
+/**
+ * 返回值是否为空
+ *
+ * @param {Object} obj
+ * @return {Boolean}
+ */
+function isNull (obj) {
+  return (obj === undefined || obj === null);
+}
+
+/**
+ * 浅拷贝对象
+ *
+ * @param {Object} obj
+ * @return {Object}
+ */
+function shallowCopyObject (obj) {
+  var ret = {};
+  for (var i in obj) {
+    ret[i] = obj[i];
+  }
+  return ret;
+}
+
+/**
+ * 创建CSS过滤器
+ *
+ * @param {Object} options
+ *   - {Object} whiteList
+ *   - {Function} onAttr
+ *   - {Function} onIgnoreAttr
+ *   - {Function} safeAttrValue
+ */
+function FilterCSS (options) {
+  options = shallowCopyObject(options || {});
+  options.whiteList = options.whiteList || DEFAULT.whiteList;
+  options.onAttr = options.onAttr || DEFAULT.onAttr;
+  options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT.onIgnoreAttr;
+  options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;
+  this.options = options;
+}
+
+FilterCSS.prototype.process = function (css) {
+  // 兼容各种奇葩输入
+  css = css || '';
+  css = css.toString();
+  if (!css) return '';
+
+  var me = this;
+  var options = me.options;
+  var whiteList = options.whiteList;
+  var onAttr = options.onAttr;
+  var onIgnoreAttr = options.onIgnoreAttr;
+  var safeAttrValue = options.safeAttrValue;
+
+  var retCSS = parseStyle(css, function (sourcePosition, position, name, value, source) {
+
+    var check = whiteList[name];
+    var isWhite = false;
+    if (check === true) isWhite = check;
+    else if (typeof check === 'function') isWhite = check(value);
+    else if (check instanceof RegExp) isWhite = check.test(value);
+    if (isWhite !== true) isWhite = false;
+
+    // 如果过滤后 value 为空则直接忽略
+    value = safeAttrValue(name, value);
+    if (!value) return;
+
+    var opts = {
+      position: position,
+      sourcePosition: sourcePosition,
+      source: source,
+      isWhite: isWhite
+    };
+
+    if (isWhite) {
+
+      var ret = onAttr(name, value, opts);
+      if (isNull(ret)) {
+        return name + ':' + value;
+      } else {
+        return ret;
+      }
+
+    } else {
+
+      var ret = onIgnoreAttr(name, value, opts);
+      if (!isNull(ret)) {
+        return ret;
+      }
+
+    }
+  });
+
+  return retCSS;
+};
+
+
+module.exports = FilterCSS;
diff --git a/node_modules/cssfilter/lib/default.js b/node_modules/cssfilter/lib/default.js
new file mode 100644
index 0000000..b677225
--- /dev/null
+++ b/node_modules/cssfilter/lib/default.js
@@ -0,0 +1,398 @@
+/**
+ * cssfilter
+ *
+ * @author 老雷<leizongmin@gmail.com>
+ */
+
+function getDefaultWhiteList () {
+  // 白名单值说明:
+  // true: 允许该属性
+  // Function: function (val) { } 返回true表示允许该属性,其他值均表示不允许
+  // RegExp: regexp.test(val) 返回true表示允许该属性,其他值均表示不允许
+  // 除上面列出的值外均表示不允许
+  var whiteList = {};
+
+  whiteList['align-content'] = false; // default: auto
+  whiteList['align-items'] = false; // default: auto
+  whiteList['align-self'] = false; // default: auto
+  whiteList['alignment-adjust'] = false; // default: auto
+  whiteList['alignment-baseline'] = false; // default: baseline
+  whiteList['all'] = false; // default: depending on individual properties
+  whiteList['anchor-point'] = false; // default: none
+  whiteList['animation'] = false; // default: depending on individual properties
+  whiteList['animation-delay'] = false; // default: 0
+  whiteList['animation-direction'] = false; // default: normal
+  whiteList['animation-duration'] = false; // default: 0
+  whiteList['animation-fill-mode'] = false; // default: none
+  whiteList['animation-iteration-count'] = false; // default: 1
+  whiteList['animation-name'] = false; // default: none
+  whiteList['animation-play-state'] = false; // default: running
+  whiteList['animation-timing-function'] = false; // default: ease
+  whiteList['azimuth'] = false; // default: center
+  whiteList['backface-visibility'] = false; // default: visible
+  whiteList['background'] = true; // default: depending on individual properties
+  whiteList['background-attachment'] = true; // default: scroll
+  whiteList['background-clip'] = true; // default: border-box
+  whiteList['background-color'] = true; // default: transparent
+  whiteList['background-image'] = true; // default: none
+  whiteList['background-origin'] = true; // default: padding-box
+  whiteList['background-position'] = true; // default: 0% 0%
+  whiteList['background-repeat'] = true; // default: repeat
+  whiteList['background-size'] = true; // default: auto
+  whiteList['baseline-shift'] = false; // default: baseline
+  whiteList['binding'] = false; // default: none
+  whiteList['bleed'] = false; // default: 6pt
+  whiteList['bookmark-label'] = false; // default: content()
+  whiteList['bookmark-level'] = false; // default: none
+  whiteList['bookmark-state'] = false; // default: open
+  whiteList['border'] = true; // default: depending on individual properties
+  whiteList['border-bottom'] = true; // default: depending on individual properties
+  whiteList['border-bottom-color'] = true; // default: current color
+  whiteList['border-bottom-left-radius'] = true; // default: 0
+  whiteList['border-bottom-right-radius'] = true; // default: 0
+  whiteList['border-bottom-style'] = true; // default: none
+  whiteList['border-bottom-width'] = true; // default: medium
+  whiteList['border-collapse'] = true; // default: separate
+  whiteList['border-color'] = true; // default: depending on individual properties
+  whiteList['border-image'] = true; // default: none
+  whiteList['border-image-outset'] = true; // default: 0
+  whiteList['border-image-repeat'] = true; // default: stretch
+  whiteList['border-image-slice'] = true; // default: 100%
+  whiteList['border-image-source'] = true; // default: none
+  whiteList['border-image-width'] = true; // default: 1
+  whiteList['border-left'] = true; // default: depending on individual properties
+  whiteList['border-left-color'] = true; // default: current color
+  whiteList['border-left-style'] = true; // default: none
+  whiteList['border-left-width'] = true; // default: medium
+  whiteList['border-radius'] = true; // default: 0
+  whiteList['border-right'] = true; // default: depending on individual properties
+  whiteList['border-right-color'] = true; // default: current color
+  whiteList['border-right-style'] = true; // default: none
+  whiteList['border-right-width'] = true; // default: medium
+  whiteList['border-spacing'] = true; // default: 0
+  whiteList['border-style'] = true; // default: depending on individual properties
+  whiteList['border-top'] = true; // default: depending on individual properties
+  whiteList['border-top-color'] = true; // default: current color
+  whiteList['border-top-left-radius'] = true; // default: 0
+  whiteList['border-top-right-radius'] = true; // default: 0
+  whiteList['border-top-style'] = true; // default: none
+  whiteList['border-top-width'] = true; // default: medium
+  whiteList['border-width'] = true; // default: depending on individual properties
+  whiteList['bottom'] = false; // default: auto
+  whiteList['box-decoration-break'] = true; // default: slice
+  whiteList['box-shadow'] = true; // default: none
+  whiteList['box-sizing'] = true; // default: content-box
+  whiteList['box-snap'] = true; // default: none
+  whiteList['box-suppress'] = true; // default: show
+  whiteList['break-after'] = true; // default: auto
+  whiteList['break-before'] = true; // default: auto
+  whiteList['break-inside'] = true; // default: auto
+  whiteList['caption-side'] = false; // default: top
+  whiteList['chains'] = false; // default: none
+  whiteList['clear'] = true; // default: none
+  whiteList['clip'] = false; // default: auto
+  whiteList['clip-path'] = false; // default: none
+  whiteList['clip-rule'] = false; // default: nonzero
+  whiteList['color'] = true; // default: implementation dependent
+  whiteList['color-interpolation-filters'] = true; // default: auto
+  whiteList['column-count'] = false; // default: auto
+  whiteList['column-fill'] = false; // default: balance
+  whiteList['column-gap'] = false; // default: normal
+  whiteList['column-rule'] = false; // default: depending on individual properties
+  whiteList['column-rule-color'] = false; // default: current color
+  whiteList['column-rule-style'] = false; // default: medium
+  whiteList['column-rule-width'] = false; // default: medium
+  whiteList['column-span'] = false; // default: none
+  whiteList['column-width'] = false; // default: auto
+  whiteList['columns'] = false; // default: depending on individual properties
+  whiteList['contain'] = false; // default: none
+  whiteList['content'] = false; // default: normal
+  whiteList['counter-increment'] = false; // default: none
+  whiteList['counter-reset'] = false; // default: none
+  whiteList['counter-set'] = false; // default: none
+  whiteList['crop'] = false; // default: auto
+  whiteList['cue'] = false; // default: depending on individual properties
+  whiteList['cue-after'] = false; // default: none
+  whiteList['cue-before'] = false; // default: none
+  whiteList['cursor'] = false; // default: auto
+  whiteList['direction'] = false; // default: ltr
+  whiteList['display'] = true; // default: depending on individual properties
+  whiteList['display-inside'] = true; // default: auto
+  whiteList['display-list'] = true; // default: none
+  whiteList['display-outside'] = true; // default: inline-level
+  whiteList['dominant-baseline'] = false; // default: auto
+  whiteList['elevation'] = false; // default: level
+  whiteList['empty-cells'] = false; // default: show
+  whiteList['filter'] = false; // default: none
+  whiteList['flex'] = false; // default: depending on individual properties
+  whiteList['flex-basis'] = false; // default: auto
+  whiteList['flex-direction'] = false; // default: row
+  whiteList['flex-flow'] = false; // default: depending on individual properties
+  whiteList['flex-grow'] = false; // default: 0
+  whiteList['flex-shrink'] = false; // default: 1
+  whiteList['flex-wrap'] = false; // default: nowrap
+  whiteList['float'] = false; // default: none
+  whiteList['float-offset'] = false; // default: 0 0
+  whiteList['flood-color'] = false; // default: black
+  whiteList['flood-opacity'] = false; // default: 1
+  whiteList['flow-from'] = false; // default: none
+  whiteList['flow-into'] = false; // default: none
+  whiteList['font'] = true; // default: depending on individual properties
+  whiteList['font-family'] = true; // default: implementation dependent
+  whiteList['font-feature-settings'] = true; // default: normal
+  whiteList['font-kerning'] = true; // default: auto
+  whiteList['font-language-override'] = true; // default: normal
+  whiteList['font-size'] = true; // default: medium
+  whiteList['font-size-adjust'] = true; // default: none
+  whiteList['font-stretch'] = true; // default: normal
+  whiteList['font-style'] = true; // default: normal
+  whiteList['font-synthesis'] = true; // default: weight style
+  whiteList['font-variant'] = true; // default: normal
+  whiteList['font-variant-alternates'] = true; // default: normal
+  whiteList['font-variant-caps'] = true; // default: normal
+  whiteList['font-variant-east-asian'] = true; // default: normal
+  whiteList['font-variant-ligatures'] = true; // default: normal
+  whiteList['font-variant-numeric'] = true; // default: normal
+  whiteList['font-variant-position'] = true; // default: normal
+  whiteList['font-weight'] = true; // default: normal
+  whiteList['grid'] = false; // default: depending on individual properties
+  whiteList['grid-area'] = false; // default: depending on individual properties
+  whiteList['grid-auto-columns'] = false; // default: auto
+  whiteList['grid-auto-flow'] = false; // default: none
+  whiteList['grid-auto-rows'] = false; // default: auto
+  whiteList['grid-column'] = false; // default: depending on individual properties
+  whiteList['grid-column-end'] = false; // default: auto
+  whiteList['grid-column-start'] = false; // default: auto
+  whiteList['grid-row'] = false; // default: depending on individual properties
+  whiteList['grid-row-end'] = false; // default: auto
+  whiteList['grid-row-start'] = false; // default: auto
+  whiteList['grid-template'] = false; // default: depending on individual properties
+  whiteList['grid-template-areas'] = false; // default: none
+  whiteList['grid-template-columns'] = false; // default: none
+  whiteList['grid-template-rows'] = false; // default: none
+  whiteList['hanging-punctuation'] = false; // default: none
+  whiteList['height'] = true; // default: auto
+  whiteList['hyphens'] = false; // default: manual
+  whiteList['icon'] = false; // default: auto
+  whiteList['image-orientation'] = false; // default: auto
+  whiteList['image-resolution'] = false; // default: normal
+  whiteList['ime-mode'] = false; // default: auto
+  whiteList['initial-letters'] = false; // default: normal
+  whiteList['inline-box-align'] = false; // default: last
+  whiteList['justify-content'] = false; // default: auto
+  whiteList['justify-items'] = false; // default: auto
+  whiteList['justify-self'] = false; // default: auto
+  whiteList['left'] = false; // default: auto
+  whiteList['letter-spacing'] = true; // default: normal
+  whiteList['lighting-color'] = true; // default: white
+  whiteList['line-box-contain'] = false; // default: block inline replaced
+  whiteList['line-break'] = false; // default: auto
+  whiteList['line-grid'] = false; // default: match-parent
+  whiteList['line-height'] = false; // default: normal
+  whiteList['line-snap'] = false; // default: none
+  whiteList['line-stacking'] = false; // default: depending on individual properties
+  whiteList['line-stacking-ruby'] = false; // default: exclude-ruby
+  whiteList['line-stacking-shift'] = false; // default: consider-shifts
+  whiteList['line-stacking-strategy'] = false; // default: inline-line-height
+  whiteList['list-style'] = true; // default: depending on individual properties
+  whiteList['list-style-image'] = true; // default: none
+  whiteList['list-style-position'] = true; // default: outside
+  whiteList['list-style-type'] = true; // default: disc
+  whiteList['margin'] = true; // default: depending on individual properties
+  whiteList['margin-bottom'] = true; // default: 0
+  whiteList['margin-left'] = true; // default: 0
+  whiteList['margin-right'] = true; // default: 0
+  whiteList['margin-top'] = true; // default: 0
+  whiteList['marker-offset'] = false; // default: auto
+  whiteList['marker-side'] = false; // default: list-item
+  whiteList['marks'] = false; // default: none
+  whiteList['mask'] = false; // default: border-box
+  whiteList['mask-box'] = false; // default: see individual properties
+  whiteList['mask-box-outset'] = false; // default: 0
+  whiteList['mask-box-repeat'] = false; // default: stretch
+  whiteList['mask-box-slice'] = false; // default: 0 fill
+  whiteList['mask-box-source'] = false; // default: none
+  whiteList['mask-box-width'] = false; // default: auto
+  whiteList['mask-clip'] = false; // default: border-box
+  whiteList['mask-image'] = false; // default: none
+  whiteList['mask-origin'] = false; // default: border-box
+  whiteList['mask-position'] = false; // default: center
+  whiteList['mask-repeat'] = false; // default: no-repeat
+  whiteList['mask-size'] = false; // default: border-box
+  whiteList['mask-source-type'] = false; // default: auto
+  whiteList['mask-type'] = false; // default: luminance
+  whiteList['max-height'] = true; // default: none
+  whiteList['max-lines'] = false; // default: none
+  whiteList['max-width'] = true; // default: none
+  whiteList['min-height'] = true; // default: 0
+  whiteList['min-width'] = true; // default: 0
+  whiteList['move-to'] = false; // default: normal
+  whiteList['nav-down'] = false; // default: auto
+  whiteList['nav-index'] = false; // default: auto
+  whiteList['nav-left'] = false; // default: auto
+  whiteList['nav-right'] = false; // default: auto
+  whiteList['nav-up'] = false; // default: auto
+  whiteList['object-fit'] = false; // default: fill
+  whiteList['object-position'] = false; // default: 50% 50%
+  whiteList['opacity'] = false; // default: 1
+  whiteList['order'] = false; // default: 0
+  whiteList['orphans'] = false; // default: 2
+  whiteList['outline'] = false; // default: depending on individual properties
+  whiteList['outline-color'] = false; // default: invert
+  whiteList['outline-offset'] = false; // default: 0
+  whiteList['outline-style'] = false; // default: none
+  whiteList['outline-width'] = false; // default: medium
+  whiteList['overflow'] = false; // default: depending on individual properties
+  whiteList['overflow-wrap'] = false; // default: normal
+  whiteList['overflow-x'] = false; // default: visible
+  whiteList['overflow-y'] = false; // default: visible
+  whiteList['padding'] = true; // default: depending on individual properties
+  whiteList['padding-bottom'] = true; // default: 0
+  whiteList['padding-left'] = true; // default: 0
+  whiteList['padding-right'] = true; // default: 0
+  whiteList['padding-top'] = true; // default: 0
+  whiteList['page'] = false; // default: auto
+  whiteList['page-break-after'] = false; // default: auto
+  whiteList['page-break-before'] = false; // default: auto
+  whiteList['page-break-inside'] = false; // default: auto
+  whiteList['page-policy'] = false; // default: start
+  whiteList['pause'] = false; // default: implementation dependent
+  whiteList['pause-after'] = false; // default: implementation dependent
+  whiteList['pause-before'] = false; // default: implementation dependent
+  whiteList['perspective'] = false; // default: none
+  whiteList['perspective-origin'] = false; // default: 50% 50%
+  whiteList['pitch'] = false; // default: medium
+  whiteList['pitch-range'] = false; // default: 50
+  whiteList['play-during'] = false; // default: auto
+  whiteList['position'] = false; // default: static
+  whiteList['presentation-level'] = false; // default: 0
+  whiteList['quotes'] = false; // default: text
+  whiteList['region-fragment'] = false; // default: auto
+  whiteList['resize'] = false; // default: none
+  whiteList['rest'] = false; // default: depending on individual properties
+  whiteList['rest-after'] = false; // default: none
+  whiteList['rest-before'] = false; // default: none
+  whiteList['richness'] = false; // default: 50
+  whiteList['right'] = false; // default: auto
+  whiteList['rotation'] = false; // default: 0
+  whiteList['rotation-point'] = false; // default: 50% 50%
+  whiteList['ruby-align'] = false; // default: auto
+  whiteList['ruby-merge'] = false; // default: separate
+  whiteList['ruby-position'] = false; // default: before
+  whiteList['shape-image-threshold'] = false; // default: 0.0
+  whiteList['shape-outside'] = false; // default: none
+  whiteList['shape-margin'] = false; // default: 0
+  whiteList['size'] = false; // default: auto
+  whiteList['speak'] = false; // default: auto
+  whiteList['speak-as'] = false; // default: normal
+  whiteList['speak-header'] = false; // default: once
+  whiteList['speak-numeral'] = false; // default: continuous
+  whiteList['speak-punctuation'] = false; // default: none
+  whiteList['speech-rate'] = false; // default: medium
+  whiteList['stress'] = false; // default: 50
+  whiteList['string-set'] = false; // default: none
+  whiteList['tab-size'] = false; // default: 8
+  whiteList['table-layout'] = false; // default: auto
+  whiteList['text-align'] = true; // default: start
+  whiteList['text-align-last'] = true; // default: auto
+  whiteList['text-combine-upright'] = true; // default: none
+  whiteList['text-decoration'] = true; // default: none
+  whiteList['text-decoration-color'] = true; // default: currentColor
+  whiteList['text-decoration-line'] = true; // default: none
+  whiteList['text-decoration-skip'] = true; // default: objects
+  whiteList['text-decoration-style'] = true; // default: solid
+  whiteList['text-emphasis'] = true; // default: depending on individual properties
+  whiteList['text-emphasis-color'] = true; // default: currentColor
+  whiteList['text-emphasis-position'] = true; // default: over right
+  whiteList['text-emphasis-style'] = true; // default: none
+  whiteList['text-height'] = true; // default: auto
+  whiteList['text-indent'] = true; // default: 0
+  whiteList['text-justify'] = true; // default: auto
+  whiteList['text-orientation'] = true; // default: mixed
+  whiteList['text-overflow'] = true; // default: clip
+  whiteList['text-shadow'] = true; // default: none
+  whiteList['text-space-collapse'] = true; // default: collapse
+  whiteList['text-transform'] = true; // default: none
+  whiteList['text-underline-position'] = true; // default: auto
+  whiteList['text-wrap'] = true; // default: normal
+  whiteList['top'] = false; // default: auto
+  whiteList['transform'] = false; // default: none
+  whiteList['transform-origin'] = false; // default: 50% 50% 0
+  whiteList['transform-style'] = false; // default: flat
+  whiteList['transition'] = false; // default: depending on individual properties
+  whiteList['transition-delay'] = false; // default: 0s
+  whiteList['transition-duration'] = false; // default: 0s
+  whiteList['transition-property'] = false; // default: all
+  whiteList['transition-timing-function'] = false; // default: ease
+  whiteList['unicode-bidi'] = false; // default: normal
+  whiteList['vertical-align'] = false; // default: baseline
+  whiteList['visibility'] = false; // default: visible
+  whiteList['voice-balance'] = false; // default: center
+  whiteList['voice-duration'] = false; // default: auto
+  whiteList['voice-family'] = false; // default: implementation dependent
+  whiteList['voice-pitch'] = false; // default: medium
+  whiteList['voice-range'] = false; // default: medium
+  whiteList['voice-rate'] = false; // default: normal
+  whiteList['voice-stress'] = false; // default: normal
+  whiteList['voice-volume'] = false; // default: medium
+  whiteList['volume'] = false; // default: medium
+  whiteList['white-space'] = false; // default: normal
+  whiteList['widows'] = false; // default: 2
+  whiteList['width'] = true; // default: auto
+  whiteList['will-change'] = false; // default: auto
+  whiteList['word-break'] = true; // default: normal
+  whiteList['word-spacing'] = true; // default: normal
+  whiteList['word-wrap'] = true; // default: normal
+  whiteList['wrap-flow'] = false; // default: auto
+  whiteList['wrap-through'] = false; // default: wrap
+  whiteList['writing-mode'] = false; // default: horizontal-tb
+  whiteList['z-index'] = false; // default: auto
+
+  return whiteList;
+}
+
+
+/**
+ * 匹配到白名单上的一个属性时
+ *
+ * @param {String} name
+ * @param {String} value
+ * @param {Object} options
+ * @return {String}
+ */
+function onAttr (name, value, options) {
+  // do nothing
+}
+
+/**
+ * 匹配到不在白名单上的一个属性时
+ *
+ * @param {String} name
+ * @param {String} value
+ * @param {Object} options
+ * @return {String}
+ */
+function onIgnoreAttr (name, value, options) {
+  // do nothing
+}
+
+var REGEXP_URL_JAVASCRIPT = /javascript\s*\:/img;
+
+/**
+ * 过滤属性值
+ *
+ * @param {String} name
+ * @param {String} value
+ * @return {String}
+ */
+function safeAttrValue(name, value) {
+  if (REGEXP_URL_JAVASCRIPT.test(value)) return '';
+  return value;
+}
+
+
+exports.whiteList = getDefaultWhiteList();
+exports.getDefaultWhiteList = getDefaultWhiteList;
+exports.onAttr = onAttr;
+exports.onIgnoreAttr = onIgnoreAttr;
+exports.safeAttrValue = safeAttrValue;
diff --git a/node_modules/cssfilter/lib/index.js b/node_modules/cssfilter/lib/index.js
new file mode 100644
index 0000000..712f55f
--- /dev/null
+++ b/node_modules/cssfilter/lib/index.js
@@ -0,0 +1,32 @@
+/**
+ * cssfilter
+ *
+ * @author 老雷<leizongmin@gmail.com>
+ */
+
+var DEFAULT = require('./default');
+var FilterCSS = require('./css');
+
+
+/**
+ * XSS过滤
+ *
+ * @param {String} css 要过滤的CSS代码
+ * @param {Object} options 选项:whiteList, onAttr, onIgnoreAttr
+ * @return {String}
+ */
+function filterCSS (html, options) {
+  var xss = new FilterCSS(options);
+  return xss.process(html);
+}
+
+
+// 输出
+exports = module.exports = filterCSS;
+exports.FilterCSS = FilterCSS;
+for (var i in DEFAULT) exports[i] = DEFAULT[i];
+
+// 在浏览器端使用
+if (typeof window !== 'undefined') {
+  window.filterCSS = module.exports;
+}
diff --git a/node_modules/cssfilter/lib/parser.js b/node_modules/cssfilter/lib/parser.js
new file mode 100644
index 0000000..fcb9418
--- /dev/null
+++ b/node_modules/cssfilter/lib/parser.js
@@ -0,0 +1,74 @@
+/**
+ * cssfilter
+ *
+ * @author 老雷<leizongmin@gmail.com>
+ */
+
+var _ = require('./util');
+
+
+/**
+ * 解析style
+ *
+ * @param {String} css
+ * @param {Function} onAttr 处理属性的函数
+ *   参数格式: function (sourcePosition, position, name, value, source)
+ * @return {String}
+ */
+function parseStyle (css, onAttr) {
+  css = _.trimRight(css);
+  if (css[css.length - 1] !== ';') css += ';';
+  var cssLength = css.length;
+  var isParenthesisOpen = false;
+  var lastPos = 0;
+  var i = 0;
+  var retCSS = '';
+
+  function addNewAttr () {
+    // 如果没有正常的闭合圆括号,则直接忽略当前属性
+    if (!isParenthesisOpen) {
+      var source = _.trim(css.slice(lastPos, i));
+      var j = source.indexOf(':');
+      if (j !== -1) {
+        var name = _.trim(source.slice(0, j));
+        var value = _.trim(source.slice(j + 1));
+        // 必须有属性名称
+        if (name) {
+          var ret = onAttr(lastPos, retCSS.length, name, value, source);
+          if (ret) retCSS += ret + '; ';
+        }
+      }
+    }
+    lastPos = i + 1;
+  }
+
+  for (; i < cssLength; i++) {
+    var c = css[i];
+    if (c === '/' && css[i + 1] === '*') {
+      // 备注开始
+      var j = css.indexOf('*/', i + 2);
+      // 如果没有正常的备注结束,则后面的部分全部跳过
+      if (j === -1) break;
+      // 直接将当前位置调到备注结尾,并且初始化状态
+      i = j + 1;
+      lastPos = i + 1;
+      isParenthesisOpen = false;
+    } else if (c === '(') {
+      isParenthesisOpen = true;
+    } else if (c === ')') {
+      isParenthesisOpen = false;
+    } else if (c === ';') {
+      if (isParenthesisOpen) {
+        // 在圆括号里面,忽略
+      } else {
+        addNewAttr();
+      }
+    } else if (c === '\n') {
+      addNewAttr();
+    }
+  }
+
+  return _.trim(retCSS);
+}
+
+module.exports = parseStyle;
diff --git a/node_modules/cssfilter/lib/util.js b/node_modules/cssfilter/lib/util.js
new file mode 100644
index 0000000..c8b4f7b
--- /dev/null
+++ b/node_modules/cssfilter/lib/util.js
@@ -0,0 +1,35 @@
+module.exports = {
+  indexOf: function (arr, item) {
+    var i, j;
+    if (Array.prototype.indexOf) {
+      return arr.indexOf(item);
+    }
+    for (i = 0, j = arr.length; i < j; i++) {
+      if (arr[i] === item) {
+        return i;
+      }
+    }
+    return -1;
+  },
+  forEach: function (arr, fn, scope) {
+    var i, j;
+    if (Array.prototype.forEach) {
+      return arr.forEach(fn, scope);
+    }
+    for (i = 0, j = arr.length; i < j; i++) {
+      fn.call(scope, arr[i], i, arr);
+    }
+  },
+  trim: function (str) {
+    if (String.prototype.trim) {
+      return str.trim();
+    }
+    return str.replace(/(^\s*)|(\s*$)/g, '');
+  },
+  trimRight: function (str) {
+    if (String.prototype.trimRight) {
+      return str.trimRight();
+    }
+    return str.replace(/(\s*$)/g, '');
+  }
+};
diff --git a/node_modules/cssfilter/package.json b/node_modules/cssfilter/package.json
new file mode 100644
index 0000000..26b92c1
--- /dev/null
+++ b/node_modules/cssfilter/package.json
@@ -0,0 +1,49 @@
+{
+  "name": "cssfilter",
+  "version": "0.0.10",
+  "description": "Sanitize untrusted CSS with a configuration specified by a Whitelist. 根据白名单过滤CSS",
+  "main": "lib/index.js",
+  "files": [
+    "lib"
+  ],
+  "scripts": {
+    "test": "istanbul cover _mocha --report lcovonly -- -t 5000 -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage",
+    "build": "./build",
+    "prepublish": "npm run test && npm run build"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/leizongmin/js-css-filter.git"
+  },
+  "keywords": [
+    "sanitization",
+    "xss",
+    "sanitize",
+    "sanitisation",
+    "input",
+    "security",
+    "escape",
+    "encode",
+    "filter",
+    "validator",
+    "html",
+    "css",
+    "injection",
+    "whitelist"
+  ],
+  "author": "Zongmin Lei <leizongmin@gmail.com>",
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/leizongmin/js-css-filter/issues"
+  },
+  "homepage": "https://github.com/leizongmin/js-css-filter",
+  "devDependencies": {
+    "blanket": "^1.1.6",
+    "browserify": "^13.1.1",
+    "coveralls": "^2.11.14",
+    "istanbul": "^0.4.5",
+    "mocha": "^3.1.2",
+    "should": "^11.1.1",
+    "uglify-js": "^2.7.4"
+  }
+}
diff --git a/node_modules/mavon-editor/LICENSE b/node_modules/mavon-editor/LICENSE
new file mode 100644
index 0000000..7f71306
--- /dev/null
+++ b/node_modules/mavon-editor/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 hinesboy
+
+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.
diff --git a/node_modules/mavon-editor/README.md b/node_modules/mavon-editor/README.md
new file mode 100644
index 0000000..dceac06
--- /dev/null
+++ b/node_modules/mavon-editor/README.md
@@ -0,0 +1,339 @@
+# mavonEditor
+| Vue2 | [![npm](https://img.shields.io/npm/v/mavon-editor/latest.svg)](https://www.npmjs.com/package/mavon-editor/v/latest) |
+| ---- | ------------------------------------------------------------ |
+| **Vue3** | [![npm](https://img.shields.io/npm/v/mavon-editor/next.svg)](https://www.npmjs.com/package/mavon-editor/v/next) |
+
+### [English Documents](./README-EN.md)
+
+## example (图片展示)
+
+### PC
+
+![PC](./img/cn/cn-common.png)
+
+![PC](./img/cn/cn-image.gif)
+
+> [查看更多图片点击这里...](./doc/cn/images.md)
+
+### Install mavon-editor (安装)
+
+```
+$ npm install mavon-editor@next --save
+```
+
+### Use (如何引入)
+
+`index.js`:
+```javascript
+    // 全局注册
+    // import with ES6
+    import { createApp } from 'vue'
+    import mavonEditor from 'mavon-editor'
+    import 'mavon-editor/dist/css/index.css'
+    // use
+    createApp(App).use(mavonEditor).mount('#app')
+```
+`index.html`
+```html
+<div id="app">
+    <mavon-editor v-model="value"/>
+</div>
+```
+
+> [更多引入方式点击这里...](./doc/cn/use.md)
+
+> [如何获取并设置markdown-it对象...](./doc/cn/markdown.md)
+
+## API 文档
+
+### props
+
+| name 名称      | type 类型 | default 默认值 | describe 描述                          |
+| ------------ | :-----: | :---------: | ---------------------------------------- |
+| value        | String  |             | 初始值                                     |
+| language     | String  |     zh-CN      | 语言选择,暂支持 zh-CN: 简体中文, zh-TW: 正体中文 , en: 英文 , fr: 法语, pt-BR: 葡萄牙语, ru: 俄语, de: 德语, ja: 日语 |
+| fontSize     | String  |     14px      | 编辑区域文字大小 |
+| scrollStyle  | Boolean |    true     | 开启滚动条样式(暂时仅支持chrome)              |
+| boxShadow     | Boolean  |     true     | 开启边框阴影                |
+| boxShadowStyle | String | 0 2px 12px 0 rgba(0, 0, 0, 0.1) | 边框阴影样式 |
+| transition | Boolean | true | 是否开启过渡动画 |
+| toolbarsBackground | String | #ffffff | 工具栏背景颜色 |
+| previewBackground | String | #fbfbfb | 预览框背景颜色 |
+| subfield     | Boolean |    true     | true: 双栏(编辑预览同屏), false: 单栏(编辑预览分屏)    |
+| defaultOpen | String | |在单栏(`subfield=false`)时默认展示区域.<br/> edit: 默认展示编辑区域,<br/> preview: 默认展示预览区域 <br/> 其他 = edit |
+| placeholder | String |    开始编辑...     |  输入框为空时默认提示文本  |
+| editable     | Boolean |    true     | 是否允许编辑     |
+| codeStyle | String |    code-github     | markdown样式: 默认github, [可选配色方案](./src/lib/core/hljs/lang.hljs.css.js)   |
+| toolbarsFlag | Boolean |    true     | 工具栏是否显示                |
+| navigation | Boolean |    false    |  默认展示目录  |
+| shortCut | Boolean |    true    |  是否启用快捷键  |
+| autofocus | Boolean |    true    |  自动聚焦到文本框  |
+| ishljs       | Boolean |     true     |  代码高亮 |
+| imageFilter | function |     null     |  图片过滤函数,参数为一个`File Object`,要求返回一个`Boolean`, `true`表示文件合法,`false`表示文件不合法 |
+| imageClick | function |     null     |  图片点击事件,默认为预览,可覆盖 |
+| tabSize     | Number  |     \t     | tab转化为几个空格,默认为\t                      |
+| html     | Boolean  |     true     | 启用HTML标签,因为历史原因这个标记一直默认为true,但建议不使用HTML标签就关闭它,它能彻底杜绝安全问题。                      |
+| xssOptions     | Object  |     {}     | xss规则配置, 默认开启,设置false可以关闭,开启后会对HTML标签进行过滤,默认过滤所有HTML标签属性,建议按需配置白名单减少被攻击的可能。<br/>- 自定义规则参考: [https://jsxss.com/zh/options.html](https://jsxss.com/zh/options.html)<br/>- 参考DEMO: [dev-demo](./src/dev/editor.vue)                  |
+| toolbars     | Object  |     如下例     | 工具栏                      |
+
+#### toolbars
+默认工具栏按钮全部开启, 传入自定义对象,可以选择启用部分按钮
+
+```javascript
+ /*
+    例如: {
+        bold: true, // 粗体
+        italic: true,// 斜体
+        header: true,// 标题
+    }
+    此时, 仅仅显示此三个功能键
+ */
+
+toolbars: {
+    bold: true, // 粗体
+    italic: true, // 斜体
+    header: true, // 标题
+    underline: true, // 下划线
+    strikethrough: true, // 中划线
+    mark: true, // 标记
+    superscript: true, // 上角标
+    subscript: true, // 下角标
+    quote: true, // 引用
+    ol: true, // 有序列表
+    ul: true, // 无序列表
+    link: true, // 链接
+    imagelink: true, // 图片链接
+    code: true, // code
+    table: true, // 表格
+    fullscreen: true, // 全屏编辑
+    readmodel: true, // 沉浸式阅读
+    htmlcode: true, // 展示html源码
+    help: true, // 帮助
+    /* 1.3.5 */
+    undo: true, // 上一步
+    redo: true, // 下一步
+    trash: true, // 清空
+    save: true, // 保存(触发events中的save事件)
+    /* 1.4.2 */
+    navigation: true, // 导航目录
+    /* 2.1.8 */
+    alignleft: true, // 左对齐
+    aligncenter: true, // 居中
+    alignright: true, // 右对齐
+    /* 2.2.1 */
+    subfield: true, // 单双栏模式
+    preview: true, // 预览
+  }
+```
+
+如果需要自定义添加工具栏按钮,可以通过以下方式
+```js
+<mavon-editor>
+  <!-- 左工具栏前加入自定义按钮 -->
+  <template slot="left-toolbar-before">
+    <button
+      type="button"
+      @click="$click('test')"
+      class="op-icon fa fa-mavon-align-left"
+      aria-hidden="true"
+      title="自定义"
+    ></button>
+  </template>
+  <!-- 左工具栏后加入自定义按钮  -->
+  <template slot="left-toolbar-after">
+    <button
+      type="button"
+      @click="$click('test')"
+      class="op-icon fa fa-mavon-align-left"
+      aria-hidden="true"
+      title="自定义"
+    ></button>
+  </template>
+  <!-- 右工具栏前加入自定义按钮  -->
+  <template slot="right-toolbar-before">
+    <button
+      type="button"
+      @click="$click('test')"
+      class="op-icon fa fa-mavon-align-left"
+      aria-hidden="true"
+      title="自定义"
+    ></button>
+  </template>
+  <!-- 右工具栏后加入自定义按钮  -->
+  <template slot="right-toolbar-after">
+    <button
+      type="button"
+      @click="$click('test')"
+      class="op-icon fa fa-mavon-align-left"
+      aria-hidden="true"
+      title="自定义"
+    ></button>
+  </template>
+</mavon-editor>
+```
+
+### events 事件绑定
+
+| name 方法名         |            params 参数            | describe 描述                              |
+| ---------------- | :-----------------------------: | ---------------------------------------- |
+| change           |  String: value , String: render  | 编辑区发生变化的回调事件(render: value 经过markdown解析后的结果) |
+| save             |  String: value , String: render  | ctrl + s 的回调事件(保存按键,同样触发该回调)             |
+| fullScreen       | Boolean: status , String: value | 切换全屏编辑的回调事件(boolean: 全屏开启状态)             |
+| readModel        | Boolean: status , String: value | 切换沉浸式阅读的回调事件(boolean: 阅读开启状态)            |
+| htmlCode         | Boolean: status , String: value | 查看html源码的回调事件(boolean: 源码开启状态)           |
+| subfieldToggle   | Boolean: status , String: value | 切换单双栏编辑的回调事件(boolean: 双栏开启状态)            |
+| previewToggle   | Boolean: status , String: value | 切换预览编辑的回调事件(boolean: 预览开启状态)            |
+| helpToggle       | Boolean: status , String: value | 查看帮助的回调事件(boolean: 帮助开启状态)               |
+| navigationToggle | Boolean: status , String: value | 切换导航目录的回调事件(boolean: 导航开启状态)             |
+| imgAdd           | Number: pos, [File](https://developer.mozilla.org/en-US/docs/Web/API/File): imgfile | 图片文件添加回调事件(pos: 图片在列表中的位置, File: File Object) |
+| imgDel           | Array(2):[Number: pos,[File](https://developer.mozilla.org/en-US/docs/Web/API/File):imgfile ] | 图片文件删除回调事件(Array(2): 两个元素的数组,第一位是图片在列表中的位置,第二位是File对象)          |
+
+### 代码高亮
+
+> 如不需要hightlight代码高亮显示,你应该设置ishljs为false
+
+开启代码高亮props
+```vue
+    <!-- ishljs默认为true -->
+    <mavon-editor :ishljs = "true"></mavon-editor>
+```
+
+为优化插件体积,从**v2.4.2**起以下文件将默认使用`cdnjs`外链:
+ + `highlight.js`
+ + `github-markdown-css`
+ + `katex`(**v2.4.7**)
+
+代码高亮`highlight.js`中的语言解析文件和代码高亮样式将在使用时按需加载.
+`github-markdown-css`和`katex`仅会在`mounted`时加载
+
+**Notice**:
+[可选配色方案](./src/lib/core/hljs/lang.hljs.css.js) 和 [支持的语言](./src/lib/core/hljs/lang.hljs.js) 是从 [highlight.js/9.12.0](https://github.com/isagalaev/highlight.js/tree/master/src) 导出的
+
+> [不使用cdn,本地按需加载点击这里...](./doc/cn/no-cnd.md)
+
+### 图片上传
+
+```vue
+<template>
+    <mavon-editor ref=md @imgAdd="$imgAdd" @imgDel="$imgDel"></mavon-editor>
+</template>
+<script>
+exports default {
+    methods: {
+        // 绑定@imgAdd event
+        $imgAdd(pos, $file){
+            // 第一步.将图片上传到服务器.
+           var formdata = new FormData();
+           formdata.append('image', $file);
+           axios({
+               url: 'server url',
+               method: 'post',
+               data: formdata,
+               headers: { 'Content-Type': 'multipart/form-data' },
+           }).then((url) => {
+               // 第二步.将返回的url替换到文本原位置![...](0) -> ![...](url)
+               /**
+               * $vm 指为mavonEditor实例,可以通过如下两种方式获取
+               * 1. 通过引入对象获取: `import {mavonEditor} from ...` 等方式引入后,`$vm`为`mavonEditor`
+               * 2. 通过$refs获取: html声明ref : `<mavon-editor ref=md ></mavon-editor>,`$vm`为 `this.$refs.md`
+               */
+               $vm.$img2Url(pos, url);
+           })
+        }
+    }
+}
+</script>
+```
+> [图片上传详情点击这里...](./doc/cn/upload-images.md)
+
+### 注
+
+- **默认大小样式为 min-height: 300px , min-width: 300px 可自行覆盖**
+- **基础z-index: 1500**
+- **仅用作展示可以设置props: toolbarsFlag: false , subfield: false, defaultOpen: "preview"**
+
+
+### 快捷键
+
+| key       | keycode  |            功能            |
+| ---------------- | :----------------: | :-----------------------------: |
+| F8           | 119 |  开启/关闭导航  |
+| F9           | 120   |  预览/编辑切换  |
+| F10     | 121   | 开启/关闭全屏 |
+| F11      | 122   | 开启/关闭阅读模式 |
+| F12       | 123   | 单栏/双栏切换 |
+| TAB  | 9  | 缩进 |
+| CTRL + S    | 17 + 83 | 触发保存 |
+| CTRL + D    | 17 + 68 | 删除选中行 |
+| CTRL + Z    | 17 + 90 | 上一步 |
+| CTRL + Y    | 17 + 89 | 下一步 |
+| CTRL + BreakSpace    | 17 + 8 | 清空编辑 |
+| CTRL + B       | 17 + 66 | \*\*加粗\*\* |
+| CTRL + I | 17 + 73 | \*斜体\* |
+| CTRL + H       | 17 + 72 | # 标题 |
+| CTRL + 1       | 17 + 97 or 49 | # 标题 |
+| CTRL + 2       | 17 + 98 or 50 | ## 标题 |
+| CTRL + 3       | 17 + 99 or 51 | ### 标题 |
+| CTRL + 4       | 17 + 100 or 52 | #### 标题 |
+| CTRL + 5       | 17 + 101 or 53 | ##### 标题 |
+| CTRL + 6       | 17 + 102 or 54 | ###### 标题 |
+| CTRL + U    | 17 + 85 | ++下划线++ |
+| CTRL + M    | 17 + 77 | ==标记== |
+| CTRL + Q    | 17 + 81 | > 引用 |
+| CTRL + O    | 17 + 79 | 1. 有序列表 |
+| CTRL + L    | 17 + 76 | \[链接标题\](链接地址) |
+| CTRL + ALT + S    | 17 + 18 + 83 | ^上角标^ |
+| CTRL + ALT + U    | 17 + 18 + 85 | - 无序列表 |
+| CTRL + ALT + C    | 17 + 18 + 67 | \`\`\` 代码块 |
+| CTRL + ALT + L    | 17 + 18 + 76 | \!\[图片标题\](图片链接) |
+| CTRL + ALT + T    | 17 + 18 + 84 | 表格 |
+| CTRL + SHIFT + S    | 17 + 16 + 83 | ~下角标~ |
+| CTRL + SHIFT + D    | 17 + 16 + 68 | \~\~中划线\~\~ |
+| CTRL + SHIFT + C    | 17 + 16 + 67 | 居中 |
+| CTRL + SHIFT + L    | 17 + 16 + 76 | 居左 |
+| CTRL + SHIFT + R    | 17 + 16 + 82 | 居右 |
+| SHIFT + TAB    | 16 + 9 | 取消缩进 |
+
+
+## Dependencies (依赖)
+
+- [markdown-it](https://github.com/markdown-it/markdown-it)
+
+- [auto-textarea](https://github.com/hinesboy/auto-textarea)
+
+
+## Markdown 语法拓展
+
+- [emoji](https://github.com/markdown-it/markdown-it-emoji)
+- [subscript](https://github.com/markdown-it/markdown-it-sub)
+- [superscript](https://github.com/markdown-it/markdown-it-sup)
+- [container](https://github.com/markdown-it/markdown-it-container)
+- [definition list](https://github.com/markdown-it/markdown-it-deflist)
+- [abbreviation](https://github.com/markdown-it/markdown-it-abbr)
+- [footnote](https://github.com/markdown-it/markdown-it-footnote)
+- [insert](https://github.com/markdown-it/markdown-it-ins)
+- [mark](https://github.com/markdown-it/markdown-it-mark)
+- [todo list](https://github.com/revin/markdown-it-task-lists)
+- [highlight](https://github.com/isagalaev/highlight.js)
+- [katex](https://github.com/Khan/KaTeX)
+- [images preview](https://github.com/CHENXCHEN/markdown-it-images-preview)
+- [toc](https://github.com/tylerlong/markdown-it-toc)
+> 可通过[获取markdown-it对象](./doc/cn/markdown.md)引入[其他语法插件](https://www.npmjs.com/search?q=keywords:markdown-it-plugin)
+
+
+## update(更新内容)
+
+- [更新日志](./LOG.md)
+
+## Collaborators(合作者)
+
+- [CHENXCHEN](https://github.com/CHENXCHEN)
+- [ygj6](https://github.com/ygj6)
+- [yukaige](https://github.com/yukaige)
+
+
+## License (证书)
+
+mavonEditor is open source and released under the MIT License.
+
+Copyright (c) 2017 hinesboy
diff --git a/node_modules/mavon-editor/dist/css/index.css b/node_modules/mavon-editor/dist/css/index.css
new file mode 100644
index 0000000..1fa309b
--- /dev/null
+++ b/node_modules/mavon-editor/dist/css/index.css
@@ -0,0 +1 @@
+.auto-textarea-wrapper[data-v-33c11741]{height:100%}.markdown-body strong{font-weight:bolder}.markdown-body .hljs-center{text-align:center}.markdown-body .hljs-right{text-align:right}.markdown-body .hljs-left{text-align:left}.markdown-body .hljs{overflow:auto}@font-face{font-family:fontello;src:url(../font/fontello.eot);src:url(../font/fontello.eot#iefix) format("embedded-opentype"),url(../font/fontello.woff2) format("woff2"),url(../font/fontello.woff) format("woff"),url(../font/fontello.ttf) format("truetype"),url(../font/fontello.svg#fontello) format("svg");font-weight:400;font-style:normal}[class*=" fa-mavon-"]:before,[class^=fa-mavon-]:before{font-family:fontello;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;margin-right:.2em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;margin-left:.2em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-mavon-bold:before{content:"\e800"}.fa-mavon-italic:before{content:"\e801"}.fa-mavon-thumb-tack:before{content:"\e802"}.fa-mavon-link:before{content:"\e803"}.fa-mavon-picture-o:before{content:"\e804"}.fa-mavon-repeat:before{content:"\e805"}.fa-mavon-undo:before{content:"\e806"}.fa-mavon-trash-o:before{content:"\e807"}.fa-mavon-floppy-o:before{content:"\e808"}.fa-mavon-compress:before{content:"\e809"}.fa-mavon-eye:before{content:"\e80a"}.fa-mavon-eye-slash:before{content:"\e80b"}.fa-mavon-question-circle:before{content:"\e80c"}.fa-mavon-times:before{content:"\e80d"}.fa-mavon-align-left:before{content:"\e80f"}.fa-mavon-align-center:before{content:"\e810"}.fa-mavon-align-right:before{content:"\e811"}.fa-mavon-arrows-alt:before{content:"\f0b2"}.fa-mavon-bars:before{content:"\f0c9"}.fa-mavon-list-ul:before{content:"\f0ca"}.fa-mavon-list-ol:before{content:"\f0cb"}.fa-mavon-strikethrough:before{content:"\f0cc"}.fa-mavon-underline:before{content:"\f0cd"}.fa-mavon-table:before{content:"\f0ce"}.fa-mavon-columns:before{content:"\f0db"}.fa-mavon-quote-left:before{content:"\f10d"}.fa-mavon-code:before{content:"\f121"}.fa-mavon-superscript:before{content:"\f12b"}.fa-mavon-subscript:before{content:"\f12c"}.fa-mavon-header:before{content:"\f1dc"}.fa-mavon-window-maximize:before{content:"\f2d0"}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/font/fontello.eot b/node_modules/mavon-editor/dist/font/fontello.eot
new file mode 100644
index 0000000000000000000000000000000000000000..4f8bd8207106c88b0d216d339dfcc50bee7ae8b2
GIT binary patch
literal 15568
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
MlK5d5iV;HoA7$VQ@c;k-

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/font/fontello.svg b/node_modules/mavon-editor/dist/font/fontello.svg
new file mode 100644
index 0000000..01812b4
--- /dev/null
+++ b/node_modules/mavon-editor/dist/font/fontello.svg
@@ -0,0 +1,72 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Copyright (C) 2017 by original authors @ fontello.com</metadata>
+<defs>
+<font id="fontello" horiz-adv-x="1000" >
+<font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
+<missing-glyph horiz-adv-x="1000" />
+<glyph glyph-name="bold" unicode="&#xe800;" d="M310 1q41-18 78-18 210 0 210 187 0 64-23 101-15 24-34 41t-38 26-45 14-47 6-53 1q-40 0-56-6 0-29 0-88t-1-88q0-5 0-38t0-54 2-47 7-37z m-8 417q23-4 61-4 46 0 80 7t61 25 42 50 14 79q0 39-16 68t-45 46-60 24-69 8q-28 0-73-7 0-28 3-84t2-85q0-15 0-45t-1-44q0-26 1-38z m-302-497l1 53q9 2 48 9t59 15q4 7 7 15t4 19 4 18 1 21 0 19v36q0 548-12 572-2 5-12 8t-25 6-28 4-27 3-17 2l-2 46q55 1 190 6t208 6q13 0 38-1t38 0q39 0 76-7t72-24 60-39 41-59 16-76q0-29-9-54t-22-40-36-32-41-25-47-22q86-20 144-75t57-138q0-56-20-101t-52-72-77-48-91-27-98-8q-25 0-74 2t-74 1q-59 0-171-6t-129-7z" horiz-adv-x="785.7" />
+
+<glyph glyph-name="italic" unicode="&#xe801;" d="M0-78l10 48q12 4 34 9t40 11 33 13q16 19 23 56 1 4 35 162t63 303 29 165v14q-13 8-30 11t-39 4-32 3l10 58q19-1 67-4t84-4 67-1q27 0 55 1t68 4 54 4q-2-22-10-50-17-6-57-16t-60-19q-5-10-8-23t-5-23-4-25-4-24q-15-82-49-234t-43-198q-1-5-7-32t-11-51-9-46-4-32l1-10q9-3 103-18-2-24-9-55-6 0-18-1t-18-1q-16 0-49 6t-48 6q-77 1-115 1-28 0-79-5t-68-7z" horiz-adv-x="571.4" />
+
+<glyph glyph-name="thumb-tack" unicode="&#xe802;" d="M650 779q12 0 24-5 19-8 29-23t11-35v-719q0-19-11-35t-29-23q-10-4-24-4-27 0-47 18l-246 236-246-236q-20-19-46-19-13 0-25 5-18 7-29 23t-11 35v719q0 19 11 35t29 23q12 5 25 5h585z" horiz-adv-x="714.3" />
+
+<glyph glyph-name="link" unicode="&#xe803;" d="M813 171q0 23-16 38l-116 116q-16 16-38 16-24 0-40-18 1-1 10-10t12-12 9-11 7-14 2-15q0-23-16-38t-38-16q-8 0-15 2t-14 7-11 9-12 12-10 10q-19-17-19-40 0-23 16-38l115-116q15-15 38-15 22 0 38 15l82 81q16 16 16 37z m-393 394q0 22-15 38l-115 115q-16 16-38 16-22 0-38-15l-82-82q-16-15-16-37 0-22 16-38l116-116q15-15 38-15 23 0 40 17-2 2-11 11t-12 12-8 10-7 14-2 16q0 22 15 38t38 15q9 0 16-2t14-7 11-8 12-12 10-11q18 17 18 41z m500-394q0-66-48-113l-82-81q-46-47-113-47-68 0-114 48l-115 115q-46 47-46 114 0 68 49 116l-49 49q-48-49-116-49-67 0-114 47l-116 116q-47 47-47 114t47 113l82 82q47 46 114 46 67 0 114-47l115-116q46-46 46-113 0-69-49-117l49-49q48 49 116 49 67 0 114-47l116-116q47-47 47-114z" horiz-adv-x="928.6" />
+
+<glyph glyph-name="picture-o" unicode="&#xe804;" d="M357 529q0-45-31-76t-76-32-76 32-31 76 31 76 76 31 76-31 31-76z m572-215v-250h-786v107l178 179 90-89 285 285z m53 393h-893q-7 0-12-5t-6-13v-678q0-7 6-13t12-5h893q7 0 13 5t5 13v678q0 8-5 13t-13 5z m89-18v-678q0-37-26-63t-63-27h-893q-36 0-63 27t-26 63v678q0 37 26 63t63 27h893q37 0 63-27t26-63z" horiz-adv-x="1071.4" />
+
+<glyph glyph-name="repeat" unicode="&#xe805;" d="M857 707v-250q0-14-10-25t-26-11h-250q-23 0-32 23-10 22 7 38l77 77q-82 77-194 77-58 0-111-23t-91-61-61-91-23-111 23-111 61-91 91-61 111-23q66 0 125 29t100 82q4 6 13 7 8 0 14-5l76-77q5-4 6-11t-5-13q-60-74-147-114t-182-41q-87 0-167 34t-136 92-92 137-34 166 34 166 92 137 136 92 167 34q82 0 158-31t137-88l72 72q17 18 39 8 22-9 22-33z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="undo" unicode="&#xe806;" d="M857 350q0-87-34-166t-91-137-137-92-166-34q-96 0-183 41t-147 114q-4 6-4 13t5 11l76 77q6 5 14 5 9-1 13-7 41-53 100-82t126-29q58 0 110 23t92 61 61 91 22 111-22 111-61 91-92 61-110 23q-55 0-105-20t-90-57l77-77q17-16 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l72-72q60 57 137 88t159 31q87 0 166-34t137-92 91-137 34-166z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="trash-o" unicode="&#xe807;" d="M286 439v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m143 0v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m142 0v-321q0-8-5-13t-12-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q7 0 12-5t5-13z m72-404v529h-500v-529q0-12 4-22t8-15 6-5h464q2 0 6 5t8 15 4 22z m-375 601h250l-27 65q-4 5-9 6h-177q-6-1-10-6z m518-18v-36q0-8-5-13t-13-5h-54v-529q0-46-26-80t-63-34h-464q-37 0-63 33t-27 79v531h-53q-8 0-13 5t-5 13v36q0 8 5 13t13 5h172l39 93q9 21 31 35t44 15h178q23 0 44-15t30-35l39-93h173q8 0 13-5t5-13z" horiz-adv-x="785.7" />
+
+<glyph glyph-name="floppy-o" unicode="&#xe808;" d="M214-7h429v214h-429v-214z m500 0h72v500q0 8-6 21t-11 20l-157 156q-5 6-19 12t-22 5v-232q0-22-15-38t-38-16h-322q-22 0-37 16t-16 38v232h-72v-714h72v232q0 22 16 38t37 16h465q22 0 38-16t15-38v-232z m-214 518v178q0 8-5 13t-13 5h-107q-7 0-13-5t-5-13v-178q0-7 5-13t13-5h107q7 0 13 5t5 13z m357-18v-518q0-22-15-38t-38-16h-750q-23 0-38 16t-16 38v750q0 22 16 38t38 16h517q23 0 50-12t42-26l156-157q16-15 27-42t11-49z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="compress" unicode="&#xe809;" d="M429 314v-250q0-14-11-25t-25-10-25 10l-81 81-185-186q-5-5-13-5t-12 5l-64 64q-6 6-6 13t6 13l185 185-80 80q-11 11-11 25t11 25 25 11h250q14 0 25-11t11-25z m421 375q0-7-6-12l-185-186 80-80q11-11 11-25t-11-25-25-11h-250q-14 0-25 11t-10 25v250q0 14 10 25t25 10 25-10l81-80 185 185q6 5 13 5t13-5l63-64q6-5 6-13z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="eye" unicode="&#xe80a;" d="M929 314q-85 132-213 197 34-58 34-125 0-103-73-177t-177-73-177 73-73 177q0 67 34 125-128-65-213-197 75-114 187-182t242-68 243 68 186 182z m-402 215q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-11 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19z m473-215q0-19-11-38-78-129-210-206t-279-77-279 77-210 206q-11 19-11 38t11 39q78 128 210 205t279 78 279-78 210-205q11-20 11-39z" horiz-adv-x="1000" />
+
+<glyph glyph-name="eye-slash" unicode="&#xe80b;" d="M310 105l43 79q-48 35-76 88t-27 114q0 67 34 125-128-65-213-197 94-144 239-209z m217 424q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-11 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19z m202 106q0-4 0-5-59-105-176-316t-176-316l-28-50q-5-9-15-9-7 0-75 39-9 6-9 16 0 7 25 49-80 36-147 96t-117 137q-11 17-11 38t11 39q86 131 212 207t277 76q50 0 100-10l31 54q5 9 15 9 3 0 10-3t18-9 18-10 18-10 10-7q9-5 9-15z m21-249q0-78-44-142t-117-91l157 280q4-25 4-47z m250-72q0-19-11-38-22-36-61-81-84-96-194-149t-234-53l41 74q119 10 219 76t169 171q-65 100-158 164l35 63q53-36 102-85t81-103q11-19 11-39z" horiz-adv-x="1000" />
+
+<glyph glyph-name="question-circle" unicode="&#xe80c;" d="M500 82v107q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h107q8 0 13 5t5 13z m143 375q0 49-31 91t-77 65-95 23q-136 0-207-119-9-13 4-24l74-55q4-4 10-4 9 0 14 7 30 38 48 51 19 14 48 14 27 0 48-15t21-33q0-21-11-34t-38-25q-35-15-65-48t-29-70v-20q0-8 5-13t13-5h107q8 0 13 5t5 13q0 10 12 27t30 28q18 10 28 16t25 19 25 27 16 34 7 45z m214-107q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="times" unicode="&#xe80d;" d="M724 112q0-22-15-38l-76-76q-16-15-38-15t-38 15l-164 165-164-165q-16-15-38-15t-38 15l-76 76q-16 16-16 38t16 38l164 164-164 164q-16 16-16 38t16 38l76 76q16 16 38 16t38-16l164-164 164 164q16 16 38 16t38-16l76-76q15-15 15-38t-15-38l-164-164 164-164q15-15 15-38z" horiz-adv-x="785.7" />
+
+<glyph glyph-name="align-left" unicode="&#xe80f;" d="M1000 100v-71q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v71q0 15 11 25t25 11h928q15 0 25-11t11-25z m-214 214v-71q0-15-11-25t-25-11h-714q-15 0-25 11t-11 25v71q0 15 11 25t25 11h714q15 0 25-11t11-25z m143 215v-72q0-14-11-25t-25-11h-857q-15 0-25 11t-11 25v72q0 14 11 25t25 10h857q14 0 25-10t11-25z m-215 214v-72q0-14-10-25t-25-10h-643q-15 0-25 10t-11 25v72q0 14 11 25t25 11h643q14 0 25-11t10-25z" horiz-adv-x="1000" />
+
+<glyph glyph-name="align-center" unicode="&#xe810;" d="M1000 100v-71q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v71q0 15 11 25t25 11h928q15 0 25-11t11-25z m-214 214v-71q0-15-11-25t-25-11h-500q-14 0-25 11t-11 25v71q0 15 11 25t25 11h500q15 0 25-11t11-25z m143 215v-72q0-14-11-25t-25-11h-786q-14 0-25 11t-11 25v72q0 14 11 25t25 10h786q14 0 25-10t11-25z m-215 214v-72q0-14-10-25t-25-10h-358q-14 0-25 10t-10 25v72q0 14 10 25t25 11h358q14 0 25-11t10-25z" horiz-adv-x="1000" />
+
+<glyph glyph-name="align-right" unicode="&#xe811;" d="M1000 100v-71q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v71q0 15 11 25t25 11h928q15 0 25-11t11-25z m0 214v-71q0-15-11-25t-25-11h-714q-14 0-25 11t-11 25v71q0 15 11 25t25 11h714q15 0 25-11t11-25z m0 215v-72q0-14-11-25t-25-11h-857q-14 0-25 11t-11 25v72q0 14 11 25t25 10h857q15 0 25-10t11-25z m0 214v-72q0-14-11-25t-25-10h-643q-14 0-25 10t-10 25v72q0 14 10 25t25 11h643q15 0 25-11t11-25z" horiz-adv-x="1000" />
+
+<glyph glyph-name="arrows-alt" unicode="&#xf0b2;" d="M716 548l-198-198 198-198 80 80q17 18 39 8 22-9 22-33v-250q0-14-10-25t-26-11h-250q-23 0-32 23-10 21 7 38l81 81-198 198-198-198 80-81q17-17 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l80-80 198 198-198 198-80-80q-11-11-25-11-7 0-14 3-22 9-22 33v250q0 14 11 25t25 11h250q23 0 33-23 9-21-8-38l-80-81 198-198 198 198-81 81q-17 17-7 38 9 23 32 23h250q15 0 26-11t10-25v-250q0-24-22-33-7-3-14-3-14 0-25 11z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="bars" unicode="&#xf0c9;" d="M857 100v-71q0-15-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 25t25 11h785q15 0 26-11t10-25z m0 286v-72q0-14-10-25t-26-10h-785q-15 0-25 10t-11 25v72q0 14 11 25t25 10h785q15 0 26-10t10-25z m0 285v-71q0-14-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 26t25 10h785q15 0 26-10t10-26z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="list-ul" unicode="&#xf0ca;" d="M214 64q0-44-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m0 286q0-45-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m786-232v-107q0-7-5-13t-13-5h-678q-8 0-13 5t-5 13v107q0 7 5 12t13 6h678q7 0 13-6t5-12z m-786 518q0-45-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m786-232v-108q0-7-5-12t-13-5h-678q-8 0-13 5t-5 12v108q0 7 5 12t13 5h678q7 0 13-5t5-12z m0 285v-107q0-7-5-12t-13-6h-678q-8 0-13 6t-5 12v107q0 8 5 13t13 5h678q7 0 13-5t5-13z" horiz-adv-x="1000" />
+
+<glyph glyph-name="list-ol" unicode="&#xf0cb;" d="M213-54q0-45-31-70t-75-26q-60 0-96 37l31 49q28-25 60-25 16 0 28 8t12 24q0 35-59 31l-14 31q4 6 18 24t24 31 20 21v1q-9 0-27-1t-27 0v-30h-59v85h186v-49l-53-65q28-6 45-27t17-49z m1 350v-89h-202q-4 20-4 30 0 29 14 52t31 38 37 27 31 24 14 25q0 14-9 22t-22 7q-25 0-45-32l-47 33q13 28 40 44t59 16q40 0 68-23t28-63q0-28-19-51t-42-36-42-28-20-30h71v34h59z m786-178v-107q0-7-5-13t-13-5h-678q-8 0-13 5t-5 13v107q0 8 5 13t13 5h678q7 0 13-6t5-12z m-786 502v-56h-187v56h60q0 22 0 67t1 68v7h-1q-5-10-28-30l-40 42 76 71h59v-225h60z m786-216v-108q0-7-5-12t-13-5h-678q-8 0-13 5t-5 12v108q0 7 5 12t13 5h678q7 0 13-5t5-12z m0 285v-107q0-7-5-12t-13-6h-678q-8 0-13 6t-5 12v107q0 8 5 13t13 5h678q7 0 13-5t5-13z" horiz-adv-x="1000" />
+
+<glyph glyph-name="strikethrough" unicode="&#xf0cc;" d="M982 350q8 0 13-5t5-13v-36q0-7-5-12t-13-5h-964q-8 0-13 5t-5 12v36q0 8 5 13t13 5h964z m-712 36q-16 19-29 44-27 55-27 105 0 101 75 173 74 71 219 71 28 0 94-11 36-7 98-27 6-21 12-66 8-68 8-102 0-10-3-25l-7-2-46 4-8 1q-28 83-58 114-49 51-117 51-64 0-101-33-38-32-38-81 0-41 37-78t156-72q38-12 96-37 33-16 53-29h-414z m283-143h229q4-22 4-51 0-62-23-119-13-31-40-58-20-19-61-45-44-27-85-37-45-12-113-12-64 0-109 13l-78 23q-32 8-40 15-5 5-5 12v8q0 60-1 87 0 17 0 38l1 20v25l57 1q8-19 17-40t12-31 7-15q20-32 45-52 24-20 59-32 33-12 73-12 36 0 78 15 43 14 68 48 26 34 26 72 0 47-45 87-19 16-76 40z" horiz-adv-x="1000" />
+
+<glyph glyph-name="underline" unicode="&#xf0cd;" d="M27 726q-21 1-25 2l-2 49q7 1 22 1 34 0 63-3 74-4 93-4 47 0 93 2 65 2 82 3 31 0 48 1l-1-8 1-36v-5q-33-5-69-5-33 0-44-14-7-7-7-73 0-7 0-18t0-15l1-127 8-157q3-69 28-112 20-33 54-52 49-26 98-26 59 0 107 16 31 10 55 28 27 20 37 36 20 31 29 63 12 41 12 128 0 44-2 72t-6 68-8 89l-2 33q-3 37-13 49-19 20-43 19l-56-1-8 2 1 48h47l114-6q43-2 110 6l10-1q3-22 3-29 0-4-2-17-25-7-47-8-41-6-44-9-8-8-8-23 0-4 0-15t1-17q5-11 13-221 3-109-9-170-8-42-23-68-21-36-62-69-42-31-102-49-61-19-142-19-93 0-159 26-66 26-99 68-34 42-47 109-9 45-9 132v186q0 105-9 119-14 20-82 22z m830-787v36q0 8-5 13t-13 5h-821q-8 0-13-5t-5-13v-36q0-8 5-13t13-5h821q8 0 13 5t5 13z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="table" unicode="&#xf0ce;" d="M286 82v107q0 8-5 13t-13 5h-179q-7 0-12-5t-6-13v-107q0-8 6-13t12-5h179q8 0 13 5t5 13z m0 214v108q0 7-5 12t-13 5h-179q-7 0-12-5t-6-12v-108q0-7 6-12t12-5h179q8 0 13 5t5 12z m285-214v107q0 8-5 13t-12 5h-179q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h179q7 0 12 5t5 13z m-285 429v107q0 8-5 13t-13 5h-179q-7 0-12-5t-6-13v-107q0-8 6-13t12-5h179q8 0 13 5t5 13z m285-215v108q0 7-5 12t-12 5h-179q-8 0-13-5t-5-12v-108q0-7 5-12t13-5h179q7 0 12 5t5 12z m286-214v107q0 8-5 13t-13 5h-178q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h178q8 0 13 5t5 13z m-286 429v107q0 8-5 13t-12 5h-179q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h179q7 0 12 5t5 13z m286-215v108q0 7-5 12t-13 5h-178q-8 0-13-5t-5-12v-108q0-7 5-12t13-5h178q8 0 13 5t5 12z m0 215v107q0 8-5 13t-13 5h-178q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h178q8 0 13 5t5 13z m72 178v-607q0-37-27-63t-63-26h-750q-36 0-63 26t-26 63v607q0 37 26 63t63 27h750q37 0 63-27t27-63z" horiz-adv-x="928.6" />
+
+<glyph glyph-name="columns" unicode="&#xf0db;" d="M89-7h340v643h-358v-625q0-7 6-13t12-5z m768 18v625h-357v-643h339q8 0 13 5t5 13z m72 678v-678q0-37-27-63t-63-27h-750q-36 0-63 27t-26 63v678q0 37 26 63t63 27h750q37 0 63-27t27-63z" horiz-adv-x="928.6" />
+
+<glyph glyph-name="quote-left" unicode="&#xf10d;" d="M429 314v-214q0-45-32-76t-76-31h-214q-44 0-76 31t-31 76v393q0 58 23 111t61 91 91 61 111 23h35q15 0 26-11t10-25v-72q0-14-10-25t-26-10h-35q-59 0-101-42t-42-101v-18q0-22 16-38t37-16h125q45 0 76-31t32-76z m500 0v-214q0-45-32-76t-76-31h-214q-44 0-76 31t-31 76v393q0 58 23 111t61 91 91 61 111 23h35q15 0 26-11t10-25v-72q0-14-10-25t-26-10h-35q-59 0-101-42t-42-101v-18q0-22 16-38t37-16h125q45 0 76-31t32-76z" horiz-adv-x="928.6" />
+
+<glyph glyph-name="code" unicode="&#xf121;" d="M344 69l-28-28q-5-5-12-5t-13 5l-260 261q-6 5-6 12t6 13l260 260q5 6 13 6t12-6l28-28q6-5 6-13t-6-12l-219-220 219-219q6-6 6-13t-6-13z m330 596l-208-721q-2-7-9-11t-13-1l-34 9q-8 3-11 9t-2 14l209 720q2 8 8 11t13 2l35-10q7-2 11-9t1-13z m367-363l-260-261q-6-5-13-5t-13 5l-28 28q-5 6-5 13t5 13l219 219-219 220q-5 5-5 12t5 13l28 28q6 6 13 6t13-6l260-260q5-5 5-13t-5-12z" horiz-adv-x="1071.4" />
+
+<glyph glyph-name="superscript" unicode="&#xf12b;" d="M501 86v-93h-139l-89 141-13 23q-4 5-6 12h-2q0-2-1-4t-2-4-2-4q-5-11-14-25l-86-139h-144v93h71l110 162-103 152h-76v94h154l77-127q1-2 13-24 4-5 6-11h2q1 5 6 11l14 24 78 127h143v-94h-69l-103-149 114-165h61z m355 379v-115h-287l-1 15q-3 16-3 26 0 36 15 65t36 48 47 37 47 30 36 30 15 36q0 21-17 35t-39 13q-29 0-54-21-8-6-20-22l-59 52q15 20 35 37 47 36 105 36 61 0 99-33t38-89q0-31-13-57t-35-43-45-33-46-28-37-28-17-36h130v45h70z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="subscript" unicode="&#xf12c;" d="M501 86v-93h-139l-89 141-13 23q-4 5-6 12h-2q0-2-1-4t-2-4-2-4q-5-11-14-25l-86-139h-144v93h71l110 162-103 152h-76v94h154l77-127q1-2 13-24 4-5 6-11h2q1 5 6 11l14 24 78 127h143v-94h-69l-103-149 114-165h61z m356-121v-115h-287l-2 15q-2 25-2 26 0 35 15 65t36 48 47 37 47 30 36 30 15 36q0 21-17 35t-39 13q-28 0-54-21-8-6-20-22l-59 52q15 20 35 37 45 36 105 36 62 0 100-33t37-89q0-37-19-66t-47-48-55-35-49-35-23-41h130v45h70z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="header" unicode="&#xf1dc;" d="M939-79q-25 0-74 2t-75 2q-24 0-73-2t-74-2q-13 0-21 12t-7 25q0 18 9 26t22 9 29 4 25 9q18 11 18 78l0 218q0 12-1 17-7 3-28 3h-376q-22 0-29-3 0-5 0-17l-1-207q0-79 21-91 9-6 26-8t32-2 25-8 11-26q0-14-6-26t-21-13q-26 0-78 2t-77 2q-24 0-71-2t-71-2q-13 0-20 12t-7 25q0 17 9 25t20 10 26 4 24 9q18 13 18 80l-1 31v454q0 2 1 15t0 20-1 21-2 24-4 20-6 18-9 10q-8 5-25 7t-29 1-23 7-10 26q0 14 6 26t20 13q26 0 78-2t77-2q23 0 71 2t70 2q14 0 21-13t7-26q0-17-9-25t-22-8-27-2-24-7q-20-12-20-90l1-178q0-12 0-18 7-2 22-2h390q14 0 21 2 1 6 1 18l0 178q0 78-19 90-10 6-33 7t-37 7-14 28q0 14 7 26t21 13q24 0 74-2t73-2q24 0 72 2t72 2q14 0 21-13t7-26q0-17-10-25t-22-8-29-2-24-7q-20-13-20-90l1-526q0-66 19-78 9-6 25-8t30-2 23-9 10-25q0-14-6-26t-20-13z" horiz-adv-x="1000" />
+
+<glyph glyph-name="window-maximize" unicode="&#xf2d0;" d="M143 64h714v429h-714v-429z m857 625v-678q0-37-26-63t-63-27h-822q-36 0-63 27t-26 63v678q0 37 26 63t63 27h822q37 0 63-27t26-63z" horiz-adv-x="1000" />
+</font>
+</defs>
+</svg>
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/font/fontello.ttf b/node_modules/mavon-editor/dist/font/fontello.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..fcc3b308b45bd042835771713158f9e97b75211f
GIT binary patch
literal 15400
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
B_x=C?

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/font/fontello.woff b/node_modules/mavon-editor/dist/font/fontello.woff
new file mode 100644
index 0000000000000000000000000000000000000000..984445365a1cb97d508c612c13142313eece4b10
GIT binary patch
literal 9068
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/font/fontello.woff2 b/node_modules/mavon-editor/dist/font/fontello.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..957d0533bb3add3e396e6f484b3caa0383b11bdb
GIT binary patch
literal 7764
zcmV-a9;@MZPew8T0RR9103K8T4*&oF06ZuF03G}Q0RR9100000000000000000000
z0000SR0dW6hFl0B36^jX2nx!0z!d>D0we>001H9@1Rw>4O$UN}41oq4do?xe*h{z_
zh+_BdO+*oF90X<HB>Vrr9yi9o1g*M1mdFsQO|5}x)7lPqo1|d!fmHomh+n-B7mF1?
zs9td=J>J1oSQ@SAaJRz}6_=y$$0w641<GqEYr(=#V&meL&}<wuneG%hq2q-beW6Iu
z@SCV`c69O+M04??HFz}Af%1kDBm|{1_wHnwrANj9Qw4w}L7Acg#8RdGleF=su3Cih
zs+;k582sl7s08XAuafB2v3!zzG!MVcfBKRakP-<C>q*qLFu+UZa~#DOt^!$<i)a=R
zx^ljst8`Jps^w5;>SQIB9g=K?SOH)?AeZphPF=fA9mX$!fcV$vw}oo;n&4+j<n*m>
z^)vulO~2otRXY8b0pWZy+!nQ+WJh&?J0bl4YfGsp9iHYXKfJ36kx@$t+bjhoQ&GDp
zbEd1VCT#z2^L1wKy$^N;pUfzSsIqwj3hOvhK;97OE2(l)bm6KdC_66N1mNIry(XI{
zt%q>Z`n{SdftpYJOEhc_+aGeW`JF!#L1uDg%S>lRUIXzNI0yw<;vl@~y<OeRtYB6;
zmsV%m6CON_c+Py%Glyn~=vI27lb$&;a0Hxj5;#a4#CGN&{48`ih*A@XbhXo-kQ`sY
zFg6{|_<PMB1`;Nb>MOPd0k|mAK(=-CjbW^qyI~bEG-6%>+g-(qrHkj{=+>YebB4fC
zsUNaZby&>B26CJH2ROV|#2<=FkB&_dOC4I&zJMl+i8pE_z-Zbs#@WmB0XiK}K;G?%
zi7$u7-=Q{H-dea0(>1OE5rXRG>6X_D_TBcq@_qMv{g3>4{vQ)>0;7?IWip-~o7-Ec
zf(S**(rCa<Q2uwGM4@3r$BqLhF5GzVVqg*^Scp(z!bOM_C0dMFapEONgwQFSJpf|2
zOd>4iAp}?w$s$oK5{*S-W0B}A5<82;!6I?8NL(xuH;cr>BJr|F433Gjc7kv?!7wNL
zZc9QqPf0>K&q%^J&q=~LFGwOdFG(UfuSlXe-`#|0_`Q-CPBKX>Czm9SlSdNI`N1Q>
zJ1k<pBnl@g;T;I|b82D&2=pB%NqYMa-RIwuK0iesTv7bbr|Qlk((=E!I<g}>Y@7rA
z1KPNU2XpWMNX4ff3>}NNO+5V6pZ6vwN0aT((V1(yOL4dv9V#_qxS1LLC)EalUyeCn
zv~r$k#x6}N^u{y-?VlCqTg)Y%LUZ$h^ijV$r`T-`U?~~sEuN(0(V&SST8@Q-n~{(}
zk}!5X!PrA!JhjzvjWh@u=^2hXj3-Cf&7tb3F4g~ItIbMIq@b;sH=DAZq9u%{cH#wZ
z1hNKQn8yKh4tf-*g*l&Zi3Af!LP6;%%wSC1JUTSOEEkXdxl7eJ!IhlqYw|c+5=F1K
z94Fz9Q}lEUDBdwUSRR;xh-=oQJCzv0)RK!<njFFL6-qZ9Ftsvne_~v$lG6>Q!b+@1
zTp{-!1WD-IW+{rUF_-Q*j|UY85pR{T#|t2qaP!TYo>LMM!yNv=p7tIe1XD*+|A@<m
z+-HoK)jbNY1oJSw-Hp}rak_@5urm+G+pYL^r$RRFvdF%!g^GID_oCzF@?jDfTLMHH
z>fnHfNjNphP`??g;*z+A&a}{{cXP&KKRFE!$ZMoGEJ?v;yt5f1hnf0fyron)hK(V?
zy@xRE^gggLSA(0ok+B3#XeH1H5C>(L{NCu#qb^=T*VnCTh1WrIHF*Ro8Vx*tRDdWz
zFbWb4g$O}m;y@ANL{Xxn7@;UmjJgEoAd}l}1Ww{DPC;R5fMo!d1(*a_4q$nJ6#!NQ
z8cNXe8DB!>HkplBqyEK6-wDQCaH!S_DBJAKxp}IPW>R&+$}?N0`i`Z(a*wB`|NC-E
z^#)At2{uk$BRQ%Y8qi}N>zbG|fvDvLL+cSx2{iqMHi7z8dsZ9Xf5+33d1f@@u@$g9
z^A@$yUR?Hc$b85n(&cnfv7263s~HfNZGGK+`Q6ehipzC@2}<Z6@Gv=d$I}C73elZe
zA4uikq`O<B<*u8t`gJvGvy>nbDC)&yAoo;T@u&8Ssb;x?a50iXFhQv<OZf_InsH8%
zOcr2^cmQTTHZ+#wI$tc!6VJ0tPI|qV1PN_wH)fstQ=}(zfEi}Rj?H5pVTL{qE&H4V
zv@?)K=m_Z1*_^)~HcTRU2J%N0ci{*@J6nF{8CLmF3Fzn)^aPd?BXz;(Ep6)fimjH-
zH6{C!w)8M{%cQw+UcanHjMS^wT2`U_-Q^h%UP-g?{JNV{Jll+^2~4fV)->IYT25`P
zcroxyt4eH+XGYmO{@LfCXDuoV(6_Eva1_dEFVPYpY^j(>d6%tOaIDUzWwrLKtvB}4
zu+p*yH~dS?JP*bWONv~!dE?=>j=97iUsi-IJ6VZ2ODq}6#l@@6Brx3`Q}9h$YH8g(
zYbbqvSdrgZqW$D=4C$WGrjDi)Q>$smft9*jLsyhMexqy;d*pOyyhA+N6;NV(Iwrn<
zJgy`MQ1~Ihj{trQmy;8~PXT@g@N-y8E&#s-_!YpfVVK+iehctBfZxLv<N@$UfIk5(
z&qD?eF@M=1nQRul!&CA8wL}Y^p$}EVQ}T~Y;?pJ&pTPuuIc~(iPEF!l1>!q^ejGRE
zKc^<~s{-*G=<+)JX_SLsMg4>Uw7^cAXWu1B4~9Ve3oSYpCE+GCr=#NvxH^b*8+cOx
z3o%ik18c0qKT=^kOlS$mFdb8e3fB_mVMr{cY(E>)2n4C=1b{|UDE-tlGG2rc(wNEI
zBs!f)7vUJRTuK%#m{B!>Fl(UE(u8~F&d3iPRSf`ke+G-j5@m@p#$agSHX{`aVqLto
zv9}hH03HDR$7?Apf2?YOS~=RgP20lV0}3Gg!BX2_ZrcevF2YYkRyy8&XzBZ3(R)PQ
zbw^xKo^7s<xUR&VamP8Lc@a$lt6f(oCKf9G@6i9$*3zY{#>MK}emojTIuU~ej3{w_
znJ3MQ0>NZP(vpZC%H7E$@9IJ-7kq+eBL?CsS;`{PbRNbiEVuDhrLv_3R+^?D9J?aT
zvgoQT7nrGwiv8$_IFXD!)vH%gEQmsp{u^}kas`Ele2>(u?UP&8^OxFTfBTg-eJ^X_
zXD)WF4&zIF-0@W3op=LuP+`yApQRb(32utBb(=n^TI>lM-!e;^T==9qwSBfe@h-3|
zDp<N);W_HW@!VCg{KIx;=#fq0IFjbUzK-QyR0<96atbP=CtK=R>r+ApDcw*CMRWGB
zRB=aHc?#90m28SWT>a-BGo#{LV!;qLE@iU(Ag?}IMHVx0Ej#fd-Ytp@au=+#BXdwi
zZ^4t4#Lsq#rsY^~2(m7;>3((K5OM9fX(E$WF&}~`Dgo_C$px-KSc6m>f@)JF?Yq{I
zs3D+6@o}pGab?AGOj&6vONK@-iAQCuE@16*&v7C#Q&BQ6wzl~xfho2wTr}VH<PP9?
z9>ifsa^0`}N2*0Mr~8y{L-<1sjR%~6zWPs&t6~5D|NmvN`%0^~lytn$U94E)!1*F=
zFc4)6V!h`zph)lNW?R5z3Oh|=UgeH-J;r#Tc#j<x>3m=D<ijKG#@Kz~Fu>Tmu6ibw
zk|C6eC6+bm4U#oQs-5{bT`gO_+%6QpX9kVfm>P?{CMA_z$OlXOFe;~DK$uDZpQ$0U
ztjr32<>utPF$2xSN(I6hf<ZCvy(zU7hoIQ>6405ZcCcg4s6rXKG-!hg1sJ0Dro<fC
z0iOQ_Lh;p#EU{c5>bSJPjR_0P3N96lt)TYhd^qtel_P*hFgZEE*T$w2kMEiWf)zgQ
zO{!D=1hjGOtmqSO12cFsU77McjrmTcfiR}+Ol^>Sl=&lV(e`c5VPznWgzWHYTZCFQ
z1qha&lxn#Sia11BQ&T}y(?nabFENBQ0-EdV35I<V3@qO!A7O}IEA}ba8#wyzjDvck
zYjE*UrSC3})trpYcL5>Cyj7FPt(jXMTuqUL|A23ZuE_4F-%^dZO-@s`fkH40kFSlz
zgxtt15(u#`eLGE;*jPmcb-TY@Ury!|2M_}==B_Q-Ie;iUv$`M_!rw#u<Skk79nD9M
z(1n=QC_?u>Nk*y(H6WPGUG&ZLK=stIrTkrA^)&u=co-e(?Qk*3_+Wl~cf)B?9^v{#
z+b2*O?4&$l<EWXP(M*?3p9`h=?vdW|+jIBBG12GX@x<i9$JO~c;+Aff>O73)^0PK^
z7rT=CD-4Z3vQ+UoTNhS_b|L(w8-_u*S(bR)wuP;x`S8Jg<*J1MuZ}*X-3NsnvM92&
zW)KParIQbPYzvwKw#Bf5JtVQ`Kt(Nxs<yGFGKj{Aw!$En606&=UU8`>KJIJ)!&dO!
z34~%zcNg*Y;r`|{->G?;gBTapOt@mk)T^{mMI!Mcvqnz^d6ZxcxF?3kMcYzo$g-$a
zn@oq*gs8i^j}-$vsU=Agu-70iTId;;S+!|ci>ukqmd{V=IpLX<nPGE%Y5kY66{tm%
zO=Og|@wvxSJTEQxOBW5fhNVI+3TI1Uitj#{^JCs!H~%;vJAf<^Qc}dfG2<MR!h$+h
zNW&C~4l<#u^IFk@dJ4gepz#0ZSSW^cUaBQWKwsHWaW24!_Ct7!a)MuidDSEZw*fs?
zGXU#wu5NA9Jo}hutW958oX!MKgzudft3-e7kg2>#laDnL>tYmH#71seGU$P2v*_Mg
z5RouG1akW0A~>3kM71Nb<3vTd>q+E&Ic4Yzp>^y9AW!k-b+%QeQ1-Fw7{y(?kCLvu
zxSi7(jV7cY0vZ3o3ORq=_{(2afi!7nQ#3B=^tcmKSFztUH6_H`o8{>gC!!LUBHE0V
zWd!#9dcx%eo0Y?s(LO~gsao$%x!=^ZNKz5LDe=3-O@8a~yqz3xir$@C%(JYKCb=6#
zmg)YU?Y$uSW-a#TR-e5s!7hBhU`;a+12zHe?q;A3*o2R{>6@}t+GbGz4L2nV3PAIZ
z{Om%spBypOZui&+mh_U?Y?5AsgjeCM_g_in;Npo8;;+pP3j!L;PFF3WYBf9{YFdfj
zS+R0xbO~JTT~c<^WJ0!-LGx;>;FXc+YWVN^ogR%D0%4ookAQX$E{02bNL;qOUdU*h
zyRDC8KsaZR-A)yAeo`UI&;2b(lj%^b%v-e*jz)DW%LNB?_!wTax8U?<0|hecIABYF
zm}xovGo2hAj=Cs^M~5{2Owp>fd)?|+Ui_j9=u#D&bumk&qcEUW^6bd2nb_`b;jEmn
zu?aizvBs;oo!54Lx@!K6Z!@k~ZfGC)f_<M;Id8?j=sInl)+JaSeC*Zu7B<#LkA4fV
zd?56~1RTlnanA0FM<m!-PSxAxD>?(79mPMvz}_ux_n|gDO`QlF0*4N{T-*2o5Ow~B
zo`ApnIisk4Q#+QrU55_&LH|3yyo6rjpD;$tg?r3fZ~-}QPA`}{*hT&c*2w)Sn1}n!
zW>VsUF&s9K5)lcK9ERnj#FsOSb&jz>EPEDSt?Rn%^^P$>EDH&&bTqFwLOuU-ek|-o
zZsAcvb9!}e+T-aU46>x>%Z>B*+g>vffU_qNfoZPHNkbL(HGi!QjQ_P{iIV%&OhjM3
zs@jN{xPx+5jWMUJ;1vA`G1mF|`s!}?8kK7qLO8KY-%}f|sgS}A4PVw(ee(3t)5E|v
z&mOHP^Hoa}Q;kDrp0*UIa0KI3YthOiR&cviqr)&Mc4bl|<v)vVY7SoW42~Q*7JYFd
z+V2SV<<=wZ(a&ws<|F3I1K96uwoY;9`VC1>ip`b~C)RH$$nkV$TpACE3(He^`+`o>
z_vV71S<wCPIH`D6ppkm)iP;DkK|sMsZ>Ac)Pmf#=`m@Va8PCa>U<7(PV1IGu+KyP#
z9>B37XDl*&r$gqVGTMtUo>4xI!2%adHC3Dwc(Y60WkT)GQy*?JKL$lhRN$ufo*o)1
zw+ylSY)I9*25FMF8era(OX_Uti?h220s48u>AiSdn=;Q1-YR)@d}QaSe8I_Ja~!ij
zS};{W!TF<jJDnh`3G!5aY|Q&TRotHOeUZLDk^ghr)-O&DUp_g+wTU8QYZjlmi)(5w
zSiwO9F}wg^1JH(GQPks?<NSmcJ{fgaAW6rbQuTvFX|yr4%=P!6j?pWYAPI`GLQUYX
zLap7;MSKjNRuKjN5)7>pgQ@@JRy;UUmzLX{%MaZQfu;=g#g@U%?!tbb6z_}Li%MY$
z4nSJM!)->*L-m6jTx2>4Wev5<OALQ>x%m(A>(s}So0Q!a&Ys8D5eqK+YXCTdC~ffb
zy!TLgtyQbYvsi{?R4=8Lj-UM$5|sBmzfC#q@U$~}?O6x=+Ymi~FC}K9xnqHeK6M2E
zb8<y~z7o!sosfl7u4?79dTPf1Eog?ULyJTtvZNSM`p)i^h}C%oN<UqmL{MlFFC*($
zm(Mv=B`yS9a++v)=D>jwsw{$CTM5j~0x<l^?nxO#sZ<iy3UtW6{|tW#k6krP<Oxks
zRr<)4Gpi2wnsr&Wo-T>K7*ZHdgf1uS`K>?<IK2(m%I_(K=Fh_Q1tkAGhykrCrIpj;
z@1vId^9f)p05&d&PQkZOI6c9>=3Ec~vI1C-?;dp?Q(Ik@PZSsVFbY#?<5|#%E;#>$
z?h&9}UeAbho8YTIe&?o`JpQsq!J><I6kn745nmJkAx|rLDPx(Q4&JO}YJ5IT(t`f{
zn<aNYgJh2vRO#FGpdXF#g8?+!K!e)-G~cb;w{8VM*m2<^`?@!|sT#QWnzO$?uc5im
zz-%Ocy8$%Zit5|?mD?U@@~1sLP53zwn$czEaWxx-LKa$Q1*Xppnfk5mzQkU;%s%>r
znuWp`t~*B0sWo(87}>CTL^KtY5k)r_sg_($V)5L9iG%;M{;~XVNtsPol)7N={p<h9
z94~2U@%S~vbRjqM_5x_pReF39f8nx^jIil|tl;3f{n+u64JCVA@0p^?+2Q6=z73L6
z=Y5%!0^cHIy0V6`yCUwt+9olC6-e;lgOna<MF^ctx$dQ>`YuoA!{Bj)EZ}oh+%dXA
zj7S|GU%Z~Y4$TH{Zc<9?LX8t~B%w|Q8?fXSXa1s&b~bqZO>!75Ye@1IR3tMROC1Qx
za{i=Gd^#08=$u_~dgp0q?oqQ=6qpwk1n(=6^rRmJ{~xyV)(x*{vk|i^-syw(rh40-
z){nZtBlO2rKP>A1GZy@BQ}^0Kb6<HfFN<Z*lNu4c#02jU9%~(7a_hgbi;{wrFhks9
zo|%xQli2o${41kDUr{U#(lqu@6vP0$d*U{Ox&y$QU;7=emDFyw+29N$<^VB$tk-Qm
z3rXyqD4~}GJ3HKqwOIG)JH!@qH#iK3Ja#53Wehc5>QM0QR?ODj&d2puQr4}fet$nQ
zS~;>=^>`c10^ddjazzhErsvloB&AnjR^}*WU{4%UO7et7T_uk*Q>)~Cu+V~wIVTt^
z21AjMFyqKXc?AN~#so*hL3QD<AG^GR;E=D7GL6Z45D+`gj_?`WW3J;}Fx_PJN<JG7
zvLsL1wnby#M3vNlQ3<L86hhbvCYnA(fC%;%yTLVs<a4-udahs>WXBl?CrVQWi!(>C
zTf^(P(VQ1i#tY2DP67}HfH1w#3uc3I)qg{k0hP*y6Jc&J_3nk~ylWG&atS#he~1xk
z8P$F~R2ei%ENO|{wt0q}+c}y+wbQp78)~bAKCjDeG3hFV6#0#tW%>$s=9jY>Qk>n8
z-f&Oo7Me^ijrS<9RIEn=k+=*Awc-UhNYpth>hwz4uoujCxIN*Vxmp`QQkGFoHcnEP
z@8;_Z)z%QTPKM4kfOmHMqjAU)2PO(8Nv<KGp37x&yWAkd5I}(+B0-+igAopk;=l!C
zx-TGwKNQg8&_wywQ4D`ENqFHpihAx^UV$<tPM*l5@mFBl(e{{u+k6PKT{zHe`Hnf@
zm`-hsdRU6MuKh1z$b+y-5hFu^Vi_6otR4X{kerkfN_t|N?nzYafQC<}arid8Oql5o
zWf=vnN%<2oAxN02COM>ho=>;gz_J1%t3yVLoVq^WE&P=lL{lHO{zJWd&yqq8!7Dq7
zZLo#EldX#92Q8cTIvFB+@I)$VafVqTbxt=JE97r?c07oVN1o2rH)emcq^=*DhDE|_
zOKS9`6Rl|<yo5_Vw2eKiLyIQ0&2rSlZnvVS77{NNaD*>AT<+sWZN;#kv;Dz<Eo{r}
z%15a1Iv7Cjj6dB)jds?^;pkrG^6oult=a1M*y8dLueF{?1;N_gK{orgvCV_neWYqx
z&}?lQ&D(Hm&EJMvn%>5acepcSGd$Ynu#ARF6y&Xvdu*X#V{4P!bc&kp%nx!lxLHK2
zXqOm|2am5b4DrOFojth$%BnkBT5*-&a#8(JX_=d=WO}Nh{eM)uN}`Kcs#d)3OiTS4
z9&PH=E8O4=W!{=<ugC4OS>VdFS<~-yBBKFrh3sr5X#V!~8Q?Z>r@W)#0v-^^h`d5B
zyIuYv1anzmNg#+GC8aV$DQS*W(sY9%ZqFQcZF#57TDi<(J`_MEMrYgDGuhc==yqGU
zU5103MBIHBcD%DhHPySvfHx1lsG7B9tFMf;i(uPZB}LBCl=?QBW)}g*EJ@7P8vJ$e
zq*736Dqg0;jiYK%OHCQ3X0=pYwkEgLTdk52&yHr5fE{%K;Dh(N*84nRyWC!<l}ZT9
zmy_XDzB+iP@;(|m?Jt(%VN1{HvrjBKE_a$1&*!C$!c16)ZRS?W+o|95D36L{S^c=m
z8W(8j+Yq<5U<S9BTXVz~Y)wH{EnmD~){IFLnnw<f_UqFv9I6iZ9JcI@o5^&UtODjH
z1lfV5Uj&zy1b58VgNM)I@F{UPEV!$w#e~F^$D34jEv!a`Wtt$v$_eZSDRFkvsClBO
z1zQe!d(i<2UY+Bin56@AEduX6)GZc*);qewSwpDJBlLQX#ZDgNPFL~nsXZ|pX@y=6
zyln@`7NdGo`=BRUaa*EAQCsc|vjpe`IG}Kwgz)4cRn+K-^g+8ydM>m=DG{ePGmptw
zHtDwWIh5LD@i4b|l>1)IH;5I1#vVDzwc0$Kq<WsE<rd2cB7Kp@Z&1}c0ENUrxYpY8
z5=t4CMMWsc8OAwUu5JFJYxyelux8w8fvvFx{c0`6K8l5qb%kEDB6+-HLOQ)~=s~m7
z7724>`XlMvwsp<w<qPM`o-#f-(9^adqJED1Ex_<(lu&Pvl2S54<WE6jWxp&qNW)uy
zy5BJFb$iFnHcS6G+{yy@c<cXSxYC%(R6pQA0=4;vdJnA-gDk(bH$15eMFoSb-KU>{
zx<J`Fy$URXHX%fY6`vXiHI7xzg|`8_(2cd9?yLc70^D4c<N~ghND4Gq4}5X2VRKK2
zUpzbI5}8Nl$VJkS#7=!k;h+s`MqkK=o3W6NgV`Y$xfZY5O{kM7gysa6adj0E1T{kv
zLnJbVGV+-QjQWs`i2Y0l#{7_rNg}#gZZbZ-Eh*kJcD<U%pP!hztlpUB-cWHzFj#MF
z(w<n%2h&ne@Sbu<L)7&*bje%3wBh3Z0}E0xRbH;Mze51F3a5@&AvayE+M1SWFyF90
z%0#9saGLk3@qJMYRp96|#e2rCSMwOLtS6=}t2d^J?lMH7Vz3^xw@G^>6Tm*KS(_z;
zLZo`iT{`{&#ePR#m$La=#^lV$|3mizQLo%oc}ao4i$EnTqUyxACpRgpqqw#l3g&2j
z=35pw5q;k)aGGmG)%d>H_DQx#NLJwJy{wNwlI)U3XD~6du(Dyx0f!uM%#FcAh7KD(
zV&tgNf1!PE#f_gZanfWn-BR+W1*-MvHrl75$<(^@%wssOBRWkC87&whSe>PCqNTEx
zKBHCZDaQLVwRb>d5ShX~toL3f9$V<~I)Nxs$Q-isFjpKvHoe@h3z>&jcaI$%1O?t^
zrem-3#xm2bWY+7fu`ElEqFM5A+2r@4jAziEDRupNL=u=++W8P{<6-H@ry<DZI+4O4
z>o#+Af~}+oERHeiT2k}iFM6=7-tiX2+J@U~uy;7%1B~eXck=i2aW9B(7r_526CdwI
z@y|LJ7tfg=P05m+<V8={{=jz-HADGibY-biZhS9){(Rh{eq2^<L6_tM4%6+RU-|rH
ax5DGbVzc~Kx8&gBZ{xtE?`B87pKt@}gU<l~

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/highlightjs/highlight.min.js b/node_modules/mavon-editor/dist/highlightjs/highlight.min.js
new file mode 100644
index 0000000..2344106
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/highlight.min.js
@@ -0,0 +1,1149 @@
+/*!
+  Highlight.js v11.3.1 (git: 2a972d8658)
+  (c) 2006-2021 Ivan Sagalaev and other contributors
+  License: BSD-3-Clause
+ */
+var hljs=function(){"use strict";var e={exports:{}};function n(e){
+return e instanceof Map?e.clear=e.delete=e.set=()=>{
+throw Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=()=>{
+throw Error("set is read-only")
+}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach((t=>{var a=e[t]
+;"object"!=typeof a||Object.isFrozen(a)||n(a)})),e}
+e.exports=n,e.exports.default=n;var t=e.exports;class a{constructor(e){
+void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}
+ignoreMatch(){this.isMatchIgnored=!0}}function i(e){
+return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")
+}function r(e,...n){const t=Object.create(null);for(const n in e)t[n]=e[n]
+;return n.forEach((e=>{for(const n in e)t[n]=e[n]})),t}const s=e=>!!e.kind
+;class o{constructor(e,n){
+this.buffer="",this.classPrefix=n.classPrefix,e.walk(this)}addText(e){
+this.buffer+=i(e)}openNode(e){if(!s(e))return;let n=e.kind
+;n=e.sublanguage?"language-"+n:((e,{prefix:n})=>{if(e.includes(".")){
+const t=e.split(".")
+;return[`${n}${t.shift()}`,...t.map(((e,n)=>`${e}${"_".repeat(n+1)}`))].join(" ")
+}return`${n}${e}`})(n,{prefix:this.classPrefix}),this.span(n)}closeNode(e){
+s(e)&&(this.buffer+="</span>")}value(){return this.buffer}span(e){
+this.buffer+=`<span class="${e}">`}}class l{constructor(){this.rootNode={
+children:[]},this.stack=[this.rootNode]}get top(){
+return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){
+this.top.children.push(e)}openNode(e){const n={kind:e,children:[]}
+;this.add(n),this.stack.push(n)}closeNode(){
+if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){
+for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}
+walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,n){
+return"string"==typeof n?e.addText(n):n.children&&(e.openNode(n),
+n.children.forEach((n=>this._walk(e,n))),e.closeNode(n)),e}static _collapse(e){
+"string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{
+l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e}
+addKeyword(e,n){""!==e&&(this.openNode(n),this.addText(e),this.closeNode())}
+addText(e){""!==e&&this.add(e)}addSublanguage(e,n){const t=e.root
+;t.kind=n,t.sublanguage=!0,this.add(t)}toHTML(){
+return new o(this,this.options).value()}finalize(){return!0}}function d(e){
+return e?"string"==typeof e?e:e.source:null}function g(e){return m("(?=",e,")")}
+function u(e){return m("(?:",e,")*")}function b(e){return m("(?:",e,")?")}
+function m(...e){return e.map((e=>d(e))).join("")}function p(...e){const n=(e=>{
+const n=e[e.length-1]
+;return"object"==typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{}
+})(e);return"("+(n.capture?"":"?:")+e.map((e=>d(e))).join("|")+")"}
+function _(e){return RegExp(e.toString()+"|").exec("").length-1}
+const h=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./
+;function f(e,{joinWith:n}){let t=0;return e.map((e=>{t+=1;const n=t
+;let a=d(e),i="";for(;a.length>0;){const e=h.exec(a);if(!e){i+=a;break}
+i+=a.substring(0,e.index),
+a=a.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?i+="\\"+(Number(e[1])+n):(i+=e[0],
+"("===e[0]&&t++)}return i})).map((e=>`(${e})`)).join(n)}
+const E="[a-zA-Z]\\w*",y="[a-zA-Z_]\\w*",N="\\b\\d+(\\.\\d+)?",w="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",v="\\b(0b[01]+)",O={
+begin:"\\\\[\\s\\S]",relevance:0},x={scope:"string",begin:"'",end:"'",
+illegal:"\\n",contains:[O]},M={scope:"string",begin:'"',end:'"',illegal:"\\n",
+contains:[O]},k=(e,n,t={})=>{const a=r({scope:"comment",begin:e,end:n,
+contains:[]},t);a.contains.push({scope:"doctag",
+begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",
+end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0})
+;const i=p("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/)
+;return a.contains.push({begin:m(/[ ]+/,"(",i,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),a
+},S=k("//","$"),A=k("/\\*","\\*/"),C=k("#","$");var T=Object.freeze({
+__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:E,UNDERSCORE_IDENT_RE:y,
+NUMBER_RE:N,C_NUMBER_RE:w,BINARY_NUMBER_RE:v,
+RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",
+SHEBANG:(e={})=>{const n=/^#![ ]*\//
+;return e.binary&&(e.begin=m(n,/.*\b/,e.binary,/\b.*/)),r({scope:"meta",begin:n,
+end:/$/,relevance:0,"on:begin":(e,n)=>{0!==e.index&&n.ignoreMatch()}},e)},
+BACKSLASH_ESCAPE:O,APOS_STRING_MODE:x,QUOTE_STRING_MODE:M,PHRASAL_WORDS_MODE:{
+begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/
+},COMMENT:k,C_LINE_COMMENT_MODE:S,C_BLOCK_COMMENT_MODE:A,HASH_COMMENT_MODE:C,
+NUMBER_MODE:{scope:"number",begin:N,relevance:0},C_NUMBER_MODE:{scope:"number",
+begin:w,relevance:0},BINARY_NUMBER_MODE:{scope:"number",begin:v,relevance:0},
+REGEXP_MODE:{begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//,
+end:/\/[gimuy]*/,illegal:/\n/,contains:[O,{begin:/\[/,end:/\]/,relevance:0,
+contains:[O]}]}]},TITLE_MODE:{scope:"title",begin:E,relevance:0},
+UNDERSCORE_TITLE_MODE:{scope:"title",begin:y,relevance:0},METHOD_GUARD:{
+begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{
+"on:begin":(e,n)=>{n.data._beginMatch=e[1]},"on:end":(e,n)=>{
+n.data._beginMatch!==e[1]&&n.ignoreMatch()}})});function R(e,n){
+"."===e.input[e.index-1]&&n.ignoreMatch()}function D(e,n){
+void 0!==e.className&&(e.scope=e.className,delete e.className)}function I(e,n){
+n&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",
+e.__beforeBegin=R,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,
+void 0===e.relevance&&(e.relevance=0))}function L(e,n){
+Array.isArray(e.illegal)&&(e.illegal=p(...e.illegal))}function B(e,n){
+if(e.match){
+if(e.begin||e.end)throw Error("begin & end are not supported with match")
+;e.begin=e.match,delete e.match}}function $(e,n){
+void 0===e.relevance&&(e.relevance=1)}const F=(e,n)=>{if(!e.beforeMatch)return
+;if(e.starts)throw Error("beforeMatch cannot be used with starts")
+;const t=Object.assign({},e);Object.keys(e).forEach((n=>{delete e[n]
+})),e.keywords=t.keywords,e.begin=m(t.beforeMatch,g(t.begin)),e.starts={
+relevance:0,contains:[Object.assign(t,{endsParent:!0})]
+},e.relevance=0,delete t.beforeMatch
+},z=["of","and","for","in","not","or","if","then","parent","list","value"]
+;function U(e,n,t="keyword"){const a=Object.create(null)
+;return"string"==typeof e?i(t,e.split(" ")):Array.isArray(e)?i(t,e):Object.keys(e).forEach((t=>{
+Object.assign(a,U(e[t],n,t))})),a;function i(e,t){
+n&&(t=t.map((e=>e.toLowerCase()))),t.forEach((n=>{const t=n.split("|")
+;a[t[0]]=[e,j(t[0],t[1])]}))}}function j(e,n){
+return n?Number(n):(e=>z.includes(e.toLowerCase()))(e)?0:1}const P={},K=e=>{
+console.error(e)},q=(e,...n)=>{console.log("WARN: "+e,...n)},H=(e,n)=>{
+P[`${e}/${n}`]||(console.log(`Deprecated as of ${e}. ${n}`),P[`${e}/${n}`]=!0)
+},Z=Error();function G(e,n,{key:t}){let a=0;const i=e[t],r={},s={}
+;for(let e=1;e<=n.length;e++)s[e+a]=i[e],r[e+a]=!0,a+=_(n[e-1])
+;e[t]=s,e[t]._emit=r,e[t]._multi=!0}function W(e){(e=>{
+e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,
+delete e.scope)})(e),"string"==typeof e.beginScope&&(e.beginScope={
+_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope
+}),(e=>{if(Array.isArray(e.begin)){
+if(e.skip||e.excludeBegin||e.returnBegin)throw K("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),
+Z
+;if("object"!=typeof e.beginScope||null===e.beginScope)throw K("beginScope must be object"),
+Z;G(e,e.begin,{key:"beginScope"}),e.begin=f(e.begin,{joinWith:""})}})(e),(e=>{
+if(Array.isArray(e.end)){
+if(e.skip||e.excludeEnd||e.returnEnd)throw K("skip, excludeEnd, returnEnd not compatible with endScope: {}"),
+Z
+;if("object"!=typeof e.endScope||null===e.endScope)throw K("endScope must be object"),
+Z;G(e,e.end,{key:"endScope"}),e.end=f(e.end,{joinWith:""})}})(e)}function Q(e){
+function n(n,t){
+return RegExp(d(n),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(t?"g":""))
+}class t{constructor(){
+this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}
+addRule(e,n){
+n.position=this.position++,this.matchIndexes[this.matchAt]=n,this.regexes.push([n,e]),
+this.matchAt+=_(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null)
+;const e=this.regexes.map((e=>e[1]));this.matcherRe=n(f(e,{joinWith:"|"
+}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex
+;const n=this.matcherRe.exec(e);if(!n)return null
+;const t=n.findIndex(((e,n)=>n>0&&void 0!==e)),a=this.matchIndexes[t]
+;return n.splice(0,t),Object.assign(n,a)}}class a{constructor(){
+this.rules=[],this.multiRegexes=[],
+this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){
+if(this.multiRegexes[e])return this.multiRegexes[e];const n=new t
+;return this.rules.slice(e).forEach((([e,t])=>n.addRule(e,t))),
+n.compile(),this.multiRegexes[e]=n,n}resumingScanAtSamePosition(){
+return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,n){
+this.rules.push([e,n]),"begin"===n.type&&this.count++}exec(e){
+const n=this.getMatcher(this.regexIndex);n.lastIndex=this.lastIndex
+;let t=n.exec(e)
+;if(this.resumingScanAtSamePosition())if(t&&t.index===this.lastIndex);else{
+const n=this.getMatcher(0);n.lastIndex=this.lastIndex+1,t=n.exec(e)}
+return t&&(this.regexIndex+=t.position+1,
+this.regexIndex===this.count&&this.considerAll()),t}}
+if(e.compilerExtensions||(e.compilerExtensions=[]),
+e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language.  See documentation.")
+;return e.classNameAliases=r(e.classNameAliases||{}),function t(i,s){const o=i
+;if(i.isCompiled)return o
+;[D,B,W,F].forEach((e=>e(i,s))),e.compilerExtensions.forEach((e=>e(i,s))),
+i.__beforeBegin=null,[I,L,$].forEach((e=>e(i,s))),i.isCompiled=!0;let l=null
+;return"object"==typeof i.keywords&&i.keywords.$pattern&&(i.keywords=Object.assign({},i.keywords),
+l=i.keywords.$pattern,
+delete i.keywords.$pattern),l=l||/\w+/,i.keywords&&(i.keywords=U(i.keywords,e.case_insensitive)),
+o.keywordPatternRe=n(l,!0),
+s&&(i.begin||(i.begin=/\B|\b/),o.beginRe=n(o.begin),i.end||i.endsWithParent||(i.end=/\B|\b/),
+i.end&&(o.endRe=n(o.end)),
+o.terminatorEnd=d(o.end)||"",i.endsWithParent&&s.terminatorEnd&&(o.terminatorEnd+=(i.end?"|":"")+s.terminatorEnd)),
+i.illegal&&(o.illegalRe=n(i.illegal)),
+i.contains||(i.contains=[]),i.contains=[].concat(...i.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((n=>r(e,{
+variants:null},n)))),e.cachedVariants?e.cachedVariants:X(e)?r(e,{
+starts:e.starts?r(e.starts):null
+}):Object.isFrozen(e)?r(e):e))("self"===e?i:e)))),i.contains.forEach((e=>{t(e,o)
+})),i.starts&&t(i.starts,s),o.matcher=(e=>{const n=new a
+;return e.contains.forEach((e=>n.addRule(e.begin,{rule:e,type:"begin"
+}))),e.terminatorEnd&&n.addRule(e.terminatorEnd,{type:"end"
+}),e.illegal&&n.addRule(e.illegal,{type:"illegal"}),n})(o),o}(e)}function X(e){
+return!!e&&(e.endsWithParent||X(e.starts))}class V extends Error{
+constructor(e,n){super(e),this.name="HTMLInjectionError",this.html=n}}
+const J=i,Y=r,ee=Symbol("nomatch");var ne=(e=>{
+const n=Object.create(null),i=Object.create(null),r=[];let s=!0
+;const o="Could not find the language '{}', did you forget to load/include a language module?",l={
+disableAutodetect:!0,name:"Plain text",contains:[]};let d={
+ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,
+languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",
+cssSelector:"pre code",languages:null,__emitter:c};function _(e){
+return d.noHighlightRe.test(e)}function h(e,n,t){let a="",i=""
+;"object"==typeof n?(a=e,
+t=n.ignoreIllegals,i=n.language):(H("10.7.0","highlight(lang, code, ...args) has been deprecated."),
+H("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),
+i=e,a=n),void 0===t&&(t=!0);const r={code:a,language:i};M("before:highlight",r)
+;const s=r.result?r.result:f(r.language,r.code,t)
+;return s.code=r.code,M("after:highlight",s),s}function f(e,t,i,r){
+const l=Object.create(null);function c(){if(!x.keywords)return void k.addText(S)
+;let e=0;x.keywordPatternRe.lastIndex=0;let n=x.keywordPatternRe.exec(S),t=""
+;for(;n;){t+=S.substring(e,n.index)
+;const i=N.case_insensitive?n[0].toLowerCase():n[0],r=(a=i,x.keywords[a]);if(r){
+const[e,a]=r
+;if(k.addText(t),t="",l[i]=(l[i]||0)+1,l[i]<=7&&(A+=a),e.startsWith("_"))t+=n[0];else{
+const t=N.classNameAliases[e]||e;k.addKeyword(n[0],t)}}else t+=n[0]
+;e=x.keywordPatternRe.lastIndex,n=x.keywordPatternRe.exec(S)}var a
+;t+=S.substr(e),k.addText(t)}function g(){null!=x.subLanguage?(()=>{
+if(""===S)return;let e=null;if("string"==typeof x.subLanguage){
+if(!n[x.subLanguage])return void k.addText(S)
+;e=f(x.subLanguage,S,!0,M[x.subLanguage]),M[x.subLanguage]=e._top
+}else e=E(S,x.subLanguage.length?x.subLanguage:null)
+;x.relevance>0&&(A+=e.relevance),k.addSublanguage(e._emitter,e.language)
+})():c(),S=""}function u(e,n){let t=1;for(;void 0!==n[t];){if(!e._emit[t]){t++
+;continue}const a=N.classNameAliases[e[t]]||e[t],i=n[t]
+;a?k.addKeyword(i,a):(S=i,c(),S=""),t++}}function b(e,n){
+return e.scope&&"string"==typeof e.scope&&k.openNode(N.classNameAliases[e.scope]||e.scope),
+e.beginScope&&(e.beginScope._wrap?(k.addKeyword(S,N.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),
+S=""):e.beginScope._multi&&(u(e.beginScope,n),S="")),x=Object.create(e,{parent:{
+value:x}}),x}function m(e,n,t){let i=((e,n)=>{const t=e&&e.exec(n)
+;return t&&0===t.index})(e.endRe,t);if(i){if(e["on:end"]){const t=new a(e)
+;e["on:end"](n,t),t.isMatchIgnored&&(i=!1)}if(i){
+for(;e.endsParent&&e.parent;)e=e.parent;return e}}
+if(e.endsWithParent)return m(e.parent,n,t)}function p(e){
+return 0===x.matcher.regexIndex?(S+=e[0],1):(R=!0,0)}function _(e){
+const n=e[0],a=t.substr(e.index),i=m(x,e,a);if(!i)return ee;const r=x
+;x.endScope&&x.endScope._wrap?(g(),
+k.addKeyword(n,x.endScope._wrap)):x.endScope&&x.endScope._multi?(g(),
+u(x.endScope,e)):r.skip?S+=n:(r.returnEnd||r.excludeEnd||(S+=n),
+g(),r.excludeEnd&&(S=n));do{
+x.scope&&k.closeNode(),x.skip||x.subLanguage||(A+=x.relevance),x=x.parent
+}while(x!==i.parent);return i.starts&&b(i.starts,e),r.returnEnd?0:n.length}
+let h={};function y(n,r){const o=r&&r[0];if(S+=n,null==o)return g(),0
+;if("begin"===h.type&&"end"===r.type&&h.index===r.index&&""===o){
+if(S+=t.slice(r.index,r.index+1),!s){const n=Error(`0 width match regex (${e})`)
+;throw n.languageName=e,n.badRule=h.rule,n}return 1}
+if(h=r,"begin"===r.type)return(e=>{
+const n=e[0],t=e.rule,i=new a(t),r=[t.__beforeBegin,t["on:begin"]]
+;for(const t of r)if(t&&(t(e,i),i.isMatchIgnored))return p(n)
+;return t.skip?S+=n:(t.excludeBegin&&(S+=n),
+g(),t.returnBegin||t.excludeBegin||(S=n)),b(t,e),t.returnBegin?0:n.length})(r)
+;if("illegal"===r.type&&!i){
+const e=Error('Illegal lexeme "'+o+'" for mode "'+(x.scope||"<unnamed>")+'"')
+;throw e.mode=x,e}if("end"===r.type){const e=_(r);if(e!==ee)return e}
+if("illegal"===r.type&&""===o)return 1
+;if(T>1e5&&T>3*r.index)throw Error("potential infinite loop, way more iterations than matches")
+;return S+=o,o.length}const N=v(e)
+;if(!N)throw K(o.replace("{}",e)),Error('Unknown language: "'+e+'"')
+;const w=Q(N);let O="",x=r||w;const M={},k=new d.__emitter(d);(()=>{const e=[]
+;for(let n=x;n!==N;n=n.parent)n.scope&&e.unshift(n.scope)
+;e.forEach((e=>k.openNode(e)))})();let S="",A=0,C=0,T=0,R=!1;try{
+for(x.matcher.considerAll();;){
+T++,R?R=!1:x.matcher.considerAll(),x.matcher.lastIndex=C
+;const e=x.matcher.exec(t);if(!e)break;const n=y(t.substring(C,e.index),e)
+;C=e.index+n}return y(t.substr(C)),k.closeAllNodes(),k.finalize(),O=k.toHTML(),{
+language:e,value:O,relevance:A,illegal:!1,_emitter:k,_top:x}}catch(n){
+if(n.message&&n.message.includes("Illegal"))return{language:e,value:J(t),
+illegal:!0,relevance:0,_illegalBy:{message:n.message,index:C,
+context:t.slice(C-100,C+100),mode:n.mode,resultSoFar:O},_emitter:k};if(s)return{
+language:e,value:J(t),illegal:!1,relevance:0,errorRaised:n,_emitter:k,_top:x}
+;throw n}}function E(e,t){t=t||d.languages||Object.keys(n);const a=(e=>{
+const n={value:J(e),illegal:!1,relevance:0,_top:l,_emitter:new d.__emitter(d)}
+;return n._emitter.addText(e),n})(e),i=t.filter(v).filter(x).map((n=>f(n,e,!1)))
+;i.unshift(a);const r=i.sort(((e,n)=>{
+if(e.relevance!==n.relevance)return n.relevance-e.relevance
+;if(e.language&&n.language){if(v(e.language).supersetOf===n.language)return 1
+;if(v(n.language).supersetOf===e.language)return-1}return 0})),[s,o]=r,c=s
+;return c.secondBest=o,c}function y(e){let n=null;const t=(e=>{
+let n=e.className+" ";n+=e.parentNode?e.parentNode.className:""
+;const t=d.languageDetectRe.exec(n);if(t){const n=v(t[1])
+;return n||(q(o.replace("{}",t[1])),
+q("Falling back to no-highlight mode for this block.",e)),n?t[1]:"no-highlight"}
+return n.split(/\s+/).find((e=>_(e)||v(e)))})(e);if(_(t))return
+;if(M("before:highlightElement",{el:e,language:t
+}),e.children.length>0&&(d.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),
+console.warn("https://github.com/highlightjs/highlight.js/issues/2886"),
+console.warn(e)),
+d.throwUnescapedHTML))throw new V("One of your code blocks includes unescaped HTML.",e.innerHTML)
+;n=e;const a=n.textContent,r=t?h(a,{language:t,ignoreIllegals:!0}):E(a)
+;e.innerHTML=r.value,((e,n,t)=>{const a=n&&i[n]||t
+;e.classList.add("hljs"),e.classList.add("language-"+a)
+})(e,t,r.language),e.result={language:r.language,re:r.relevance,
+relevance:r.relevance},r.secondBest&&(e.secondBest={
+language:r.secondBest.language,relevance:r.secondBest.relevance
+}),M("after:highlightElement",{el:e,result:r,text:a})}let N=!1;function w(){
+"loading"!==document.readyState?document.querySelectorAll(d.cssSelector).forEach(y):N=!0
+}function v(e){return e=(e||"").toLowerCase(),n[e]||n[i[e]]}
+function O(e,{languageName:n}){"string"==typeof e&&(e=[e]),e.forEach((e=>{
+i[e.toLowerCase()]=n}))}function x(e){const n=v(e)
+;return n&&!n.disableAutodetect}function M(e,n){const t=e;r.forEach((e=>{
+e[t]&&e[t](n)}))}
+"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{
+N&&w()}),!1),Object.assign(e,{highlight:h,highlightAuto:E,highlightAll:w,
+highlightElement:y,
+highlightBlock:e=>(H("10.7.0","highlightBlock will be removed entirely in v12.0"),
+H("10.7.0","Please use highlightElement now."),y(e)),configure:e=>{d=Y(d,e)},
+initHighlighting:()=>{
+w(),H("10.6.0","initHighlighting() deprecated.  Use highlightAll() now.")},
+initHighlightingOnLoad:()=>{
+w(),H("10.6.0","initHighlightingOnLoad() deprecated.  Use highlightAll() now.")
+},registerLanguage:(t,a)=>{let i=null;try{i=a(e)}catch(e){
+if(K("Language definition for '{}' could not be registered.".replace("{}",t)),
+!s)throw e;K(e),i=l}
+i.name||(i.name=t),n[t]=i,i.rawDefinition=a.bind(null,e),i.aliases&&O(i.aliases,{
+languageName:t})},unregisterLanguage:e=>{delete n[e]
+;for(const n of Object.keys(i))i[n]===e&&delete i[n]},
+listLanguages:()=>Object.keys(n),getLanguage:v,registerAliases:O,
+autoDetection:x,inherit:Y,addPlugin:e=>{(e=>{
+e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=n=>{
+e["before:highlightBlock"](Object.assign({block:n.el},n))
+}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=n=>{
+e["after:highlightBlock"](Object.assign({block:n.el},n))})})(e),r.push(e)}
+}),e.debugMode=()=>{s=!1},e.safeMode=()=>{s=!0
+},e.versionString="11.3.1",e.regex={concat:m,lookahead:g,either:p,optional:b,
+anyNumberOfTimes:u};for(const e in T)"object"==typeof T[e]&&t(T[e])
+;return Object.assign(e,T),e})({});const te=e=>({IMPORTANT:{scope:"meta",
+begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{
+scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},
+FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},
+ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",
+contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{
+scope:"number",
+begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",
+relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/}
+}),ae=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],ie=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],re=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],se=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],oe=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-height","max-width","min-height","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse(),le=re.concat(se)
+;var ce="\\.([0-9](_*[0-9])*)",de="[0-9a-fA-F](_*[0-9a-fA-F])*",ge={
+className:"number",variants:[{
+begin:`(\\b([0-9](_*[0-9])*)((${ce})|\\.)?|(${ce}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b`
+},{begin:`\\b([0-9](_*[0-9])*)((${ce})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{
+begin:`(${ce})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{
+begin:`\\b0[xX]((${de})\\.?|(${de})?\\.(${de}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b`
+},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${de})[lL]?\\b`},{
+begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],
+relevance:0};function ue(e,n,t){return-1===t?"":e.replace(n,(a=>ue(e,n,t-1)))}
+const be="[A-Za-z$_][0-9A-Za-z$_]*",me=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],pe=["true","false","null","undefined","NaN","Infinity"],_e=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],he=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],fe=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],Ee=["arguments","this","super","console","window","document","localStorage","module","global"],ye=[].concat(fe,_e,he)
+;function Ne(e){const n=e.regex,t=be,a={begin:/<[A-Za-z0-9\\._:-]+/,
+end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{
+const t=e[0].length+e.index,a=e.input[t]
+;if("<"===a||","===a)return void n.ignoreMatch();let i
+;">"===a&&(((e,{after:n})=>{const t="</"+e[0].slice(1)
+;return-1!==e.input.indexOf(t,n)})(e,{after:t
+})||n.ignoreMatch()),(i=e.input.substr(t).match(/^\s+extends\s+/))&&0===i.index&&n.ignoreMatch()
+}},i={$pattern:be,keyword:me,literal:pe,built_in:ye,"variable.language":Ee
+},r="\\.([0-9](_?[0-9])*)",s="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",o={
+className:"number",variants:[{
+begin:`(\\b(${s})((${r})|\\.)?|(${r}))[eE][+-]?([0-9](_?[0-9])*)\\b`},{
+begin:`\\b(${s})\\b((${r})\\b|\\.)?|(${r})\\b`},{
+begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{
+begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{
+begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{
+begin:"\\b0[0-7]+n?\\b"}],relevance:0},l={className:"subst",begin:"\\$\\{",
+end:"\\}",keywords:i,contains:[]},c={begin:"html`",end:"",starts:{end:"`",
+returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,l],subLanguage:"xml"}},d={
+begin:"css`",end:"",starts:{end:"`",returnEnd:!1,
+contains:[e.BACKSLASH_ESCAPE,l],subLanguage:"css"}},g={className:"string",
+begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,l]},u={className:"comment",
+variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{
+begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",
+begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,
+excludeBegin:!0,relevance:0},{className:"variable",begin:t+"(?=\\s*(-)|$)",
+endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]
+}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]
+},b=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,c,d,g,o];l.contains=b.concat({
+begin:/\{/,end:/\}/,keywords:i,contains:["self"].concat(b)})
+;const m=[].concat(u,l.contains),p=m.concat([{begin:/\(/,end:/\)/,keywords:i,
+contains:["self"].concat(m)}]),_={className:"params",begin:/\(/,end:/\)/,
+excludeBegin:!0,excludeEnd:!0,keywords:i,contains:p},h={variants:[{
+match:[/class/,/\s+/,t,/\s+/,/extends/,/\s+/,n.concat(t,"(",n.concat(/\./,t),")*")],
+scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{
+match:[/class/,/\s+/,t],scope:{1:"keyword",3:"title.class"}}]},f={relevance:0,
+match:n.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]+|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+/),
+className:"title.class",keywords:{_:[..._e,...he]}},E={variants:[{
+match:[/function/,/\s+/,t,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],
+className:{1:"keyword",3:"title.function"},label:"func.def",contains:[_],
+illegal:/%/},y={
+match:n.concat(/\b/,(N=[...fe,"super"],n.concat("(?!",N.join("|"),")")),t,n.lookahead(/\(/)),
+className:"title.function",relevance:0};var N;const w={
+begin:n.concat(/\./,n.lookahead(n.concat(t,/(?![0-9A-Za-z$_(])/))),end:t,
+excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},v={
+match:[/get|set/,/\s+/,t,/(?=\()/],className:{1:"keyword",3:"title.function"},
+contains:[{begin:/\(\)/},_]
+},O="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",x={
+match:[/const|var|let/,/\s+/,t,/\s*/,/=\s*/,n.lookahead(O)],className:{
+1:"keyword",3:"title.function"},contains:[_]};return{name:"Javascript",
+aliases:["js","jsx","mjs","cjs"],keywords:i,exports:{PARAMS_CONTAINS:p,
+CLASS_REFERENCE:f},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",
+binary:"node",relevance:5}),{label:"use_strict",className:"meta",relevance:10,
+begin:/^\s*['"]use (strict|asm)['"]/
+},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,c,d,g,u,o,f,{className:"attr",
+begin:t+n.lookahead(":"),relevance:0},x,{
+begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",
+keywords:"return throw case",relevance:0,contains:[u,e.REGEXP_MODE,{
+className:"function",begin:O,returnBegin:!0,end:"\\s*=>",contains:[{
+className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{
+className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,
+excludeEnd:!0,keywords:i,contains:p}]}]},{begin:/,/,relevance:0},{match:/\s+/,
+relevance:0},{variants:[{begin:"<>",end:"</>"},{
+match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:a.begin,
+"on:begin":a.isTrulyOpeningTag,end:a.end}],subLanguage:"xml",contains:[{
+begin:a.begin,end:a.end,skip:!0,contains:["self"]}]}]},E,{
+beginKeywords:"while if switch catch for"},{
+begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",
+returnBegin:!0,label:"func.def",contains:[_,e.inherit(e.TITLE_MODE,{begin:t,
+className:"title.function"})]},{match:/\.\.\./,relevance:0},w,{match:"\\$"+t,
+relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},
+contains:[_]},y,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,
+className:"variable.constant"},h,v,{match:/\$[(.]/}]}}
+const we=e=>m(/\b/,e,/\w$/.test(e)?/\b/:/\B/),ve=["Protocol","Type"].map(we),Oe=["init","self"].map(we),xe=["Any","Self"],Me=["actor","associatedtype","async","await",/as\?/,/as!/,"as","break","case","catch","class","continue","convenience","default","defer","deinit","didSet","do","dynamic","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],ke=["false","nil","true"],Se=["assignment","associativity","higherThan","left","lowerThan","none","right"],Ae=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warn_unqualified_access","#warning"],Ce=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],Te=p(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),Re=p(Te,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),De=m(Te,Re,"*"),Ie=p(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),Le=p(Ie,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),Be=m(Ie,Le,"*"),$e=m(/[A-Z]/,Le,"*"),Fe=["autoclosure",m(/convention\(/,p("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",m(/objc\(/,Be,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","testable","UIApplicationMain","unknown","usableFromInline"],ze=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"]
+;var Ue=Object.freeze({__proto__:null,grmr_bash:e=>{const n=e.regex,t={},a={
+begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]}
+;Object.assign(t,{className:"variable",variants:[{
+begin:n.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},a]});const i={
+className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},r={
+begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,
+end:/(\w+)/,className:"string"})]}},s={className:"string",begin:/"/,end:/"/,
+contains:[e.BACKSLASH_ESCAPE,t,i]};i.contains.push(s);const o={begin:/\$\(\(/,
+end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t]
+},l=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10
+}),c={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,
+contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{
+name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z._-]+\b/,
+keyword:["if","then","else","elif","fi","for","while","in","do","done","case","esac","function"],
+literal:["true","false"],
+built_in:["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset","alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"]
+},contains:[l,e.SHEBANG(),c,o,e.HASH_COMMENT_MODE,r,{match:/(\/[a-z._-]+)+/},s,{
+className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},t]}},
+grmr_c:e=>{const n=e.regex,t=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]
+}),a="[a-zA-Z_]\\w*::",i="(decltype\\(auto\\)|"+n.optional(a)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",r={
+className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{
+match:/\batomic_[a-z]{3,6}\b/}]},s={className:"string",variants:[{
+begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{
+begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",
+end:"'",illegal:"."},e.END_SAME_AS_BEGIN({
+begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={
+className:"number",variants:[{begin:"\\b(0b[01']+)"},{
+begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"
+},{
+begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"
+}],relevance:0},l={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{
+keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"
+},contains:[{begin:/\\\n/,relevance:0},e.inherit(s,{className:"string"}),{
+className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},c={
+className:"title",begin:n.optional(a)+e.IDENT_RE,relevance:0
+},d=n.optional(a)+e.IDENT_RE+"\\s*\\(",g={
+keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],
+type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal128","const","static","complex","bool","imaginary"],
+literal:"true false NULL",
+built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"
+},u=[l,r,t,e.C_BLOCK_COMMENT_MODE,o,s],b={variants:[{begin:/=/,end:/;/},{
+begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],
+keywords:g,contains:u.concat([{begin:/\(/,end:/\)/,keywords:g,
+contains:u.concat(["self"]),relevance:0}]),relevance:0},m={
+begin:"("+i+"[\\*&\\s]+)+"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,
+keywords:g,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)",
+keywords:g,relevance:0},{begin:d,returnBegin:!0,contains:[e.inherit(c,{
+className:"title.function"})],relevance:0},{relevance:0,match:/,/},{
+className:"params",begin:/\(/,end:/\)/,keywords:g,relevance:0,
+contains:[t,e.C_BLOCK_COMMENT_MODE,s,o,r,{begin:/\(/,end:/\)/,keywords:g,
+relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,s,o,r]}]
+},r,t,e.C_BLOCK_COMMENT_MODE,l]};return{name:"C",aliases:["h"],keywords:g,
+disableAutodetect:!0,illegal:"</",contains:[].concat(b,m,u,[l,{
+begin:e.IDENT_RE+"::",keywords:g},{className:"class",
+beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{
+beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:l,
+strings:s,keywords:g}}},grmr_cpp:e=>{const n=e.regex,t=e.COMMENT("//","$",{
+contains:[{begin:/\\\n/}]
+}),a="[a-zA-Z_]\\w*::",i="(?!struct)(decltype\\(auto\\)|"+n.optional(a)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",r={
+className:"type",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string",variants:[{
+begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{
+begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",
+end:"'",illegal:"."},e.END_SAME_AS_BEGIN({
+begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={
+className:"number",variants:[{begin:"\\b(0b[01']+)"},{
+begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"
+},{
+begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"
+}],relevance:0},l={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{
+keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"
+},contains:[{begin:/\\\n/,relevance:0},e.inherit(s,{className:"string"}),{
+className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},c={
+className:"title",begin:n.optional(a)+e.IDENT_RE,relevance:0
+},d=n.optional(a)+e.IDENT_RE+"\\s*\\(",g={
+type:["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],
+keyword:["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],
+literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],
+_type_hints:["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"]
+},u={className:"function.dispatch",relevance:0,keywords:{
+_hint:["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"]
+},
+begin:n.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,n.lookahead(/(<[^<>]+>|)\s*\(/))
+},b=[u,l,r,t,e.C_BLOCK_COMMENT_MODE,o,s],m={variants:[{begin:/=/,end:/;/},{
+begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],
+keywords:g,contains:b.concat([{begin:/\(/,end:/\)/,keywords:g,
+contains:b.concat(["self"]),relevance:0}]),relevance:0},p={className:"function",
+begin:"("+i+"[\\*&\\s]+)+"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,
+keywords:g,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)",
+keywords:g,relevance:0},{begin:d,returnBegin:!0,contains:[c],relevance:0},{
+begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[s,o]},{
+relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:g,
+relevance:0,contains:[t,e.C_BLOCK_COMMENT_MODE,s,o,r,{begin:/\(/,end:/\)/,
+keywords:g,relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,s,o,r]}]
+},r,t,e.C_BLOCK_COMMENT_MODE,l]};return{name:"C++",
+aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:g,illegal:"</",
+classNameAliases:{"function.dispatch":"built_in"},
+contains:[].concat(m,p,u,b,[l,{
+begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function)\\s*<",
+end:">",keywords:g,contains:["self",r]},{begin:e.IDENT_RE+"::",keywords:g},{
+match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],
+className:{1:"keyword",3:"title.class"}}])}},grmr_csharp:e=>{const n={
+keyword:["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]),
+built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"],
+literal:["default","false","null","true"]},t=e.inherit(e.TITLE_MODE,{
+begin:"[a-zA-Z](\\.?\\w)*"}),a={className:"number",variants:[{
+begin:"\\b(0b[01']+)"},{
+begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{
+begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"
+}],relevance:0},i={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]
+},r=e.inherit(i,{illegal:/\n/}),s={className:"subst",begin:/\{/,end:/\}/,
+keywords:n},o=e.inherit(s,{illegal:/\n/}),l={className:"string",begin:/\$"/,
+end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/
+},e.BACKSLASH_ESCAPE,o]},c={className:"string",begin:/\$@"/,end:'"',contains:[{
+begin:/\{\{/},{begin:/\}\}/},{begin:'""'},s]},d=e.inherit(c,{illegal:/\n/,
+contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},o]})
+;s.contains=[c,l,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.C_BLOCK_COMMENT_MODE],
+o.contains=[d,l,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.inherit(e.C_BLOCK_COMMENT_MODE,{
+illegal:/\n/})];const g={variants:[c,l,i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]
+},u={begin:"<",end:">",contains:[{beginKeywords:"in out"},t]
+},b=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",m={
+begin:"@"+e.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],
+keywords:n,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,
+contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{
+begin:"\x3c!--|--\x3e"},{begin:"</?",end:">"}]}]
+}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",
+end:"$",keywords:{
+keyword:"if else elif endif define undef warning error line region endregion pragma checksum"
+}},g,a,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,
+illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"
+},t,u,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",
+relevance:0,end:/[{;=]/,illegal:/[^\s:]/,
+contains:[t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{
+beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,
+contains:[t,u,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",
+begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{
+className:"string",begin:/"/,end:/"/}]},{
+beginKeywords:"new return throw await else",relevance:0},{className:"function",
+begin:"("+b+"\\s+)+"+e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,
+end:/\s*[{;=]/,excludeEnd:!0,keywords:n,contains:[{
+beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial",
+relevance:0},{begin:e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,
+contains:[e.TITLE_MODE,u],relevance:0},{match:/\(\)/},{className:"params",
+begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,relevance:0,
+contains:[g,a,e.C_BLOCK_COMMENT_MODE]
+},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},m]}},grmr_css:e=>{
+const n=e.regex,t=te(e),a=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{
+name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{
+keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},
+contains:[t.BLOCK_COMMENT,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/
+},t.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0
+},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0
+},t.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{
+begin:":("+re.join("|")+")"},{begin:":(:)?("+se.join("|")+")"}]
+},t.CSS_VARIABLE,{className:"attribute",begin:"\\b("+oe.join("|")+")\\b"},{
+begin:/:/,end:/[;}{]/,
+contains:[t.BLOCK_COMMENT,t.HEXCOLOR,t.IMPORTANT,t.CSS_NUMBER_MODE,...a,{
+begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"
+},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]
+},t.FUNCTION_DISPATCH]},{begin:n.lookahead(/@/),end:"[{;]",relevance:0,
+illegal:/:/,contains:[{className:"keyword",begin:/@-?\w[\w]*(-\w+)*/},{
+begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{
+$pattern:/[a-z-]+/,keyword:"and or not only",attribute:ie.join(" ")},contains:[{
+begin:/[a-z-]+(?=:)/,className:"attribute"},...a,t.CSS_NUMBER_MODE]}]},{
+className:"selector-tag",begin:"\\b("+ae.join("|")+")\\b"}]}},grmr_diff:e=>{
+const n=e.regex;return{name:"Diff",aliases:["patch"],contains:[{
+className:"meta",relevance:10,
+match:n.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)
+},{className:"comment",variants:[{
+begin:n.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),
+end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{
+className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,
+end:/$/}]}},grmr_go:e=>{const n={
+keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],
+type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],
+literal:["true","false","iota","nil"],
+built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]
+};return{name:"Go",aliases:["golang"],keywords:n,illegal:"</",
+contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",
+variants:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:"`",end:"`"}]},{
+className:"number",variants:[{begin:e.C_NUMBER_RE+"[i]",relevance:1
+},e.C_NUMBER_MODE]},{begin:/:=/},{className:"function",beginKeywords:"func",
+end:"\\s*(\\{|$)",excludeEnd:!0,contains:[e.TITLE_MODE,{className:"params",
+begin:/\(/,end:/\)/,endsParent:!0,keywords:n,illegal:/["']/}]}]}},grmr_ini:e=>{
+const n=e.regex,t={className:"number",relevance:0,variants:[{
+begin:/([+-]+)?[\d]+_[\d_]+/},{begin:e.NUMBER_RE}]},a=e.COMMENT();a.variants=[{
+begin:/;/,end:/$/},{begin:/#/,end:/$/}];const i={className:"variable",
+variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},r={
+className:"literal",begin:/\bon|off|true|false|yes|no\b/},s={className:"string",
+contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{
+begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]
+},o={begin:/\[/,end:/\]/,contains:[a,r,i,s,t,"self"],relevance:0
+},l=n.either(/[A-Za-z0-9_-]+/,/"(\\"|[^"])*"/,/'[^']*'/);return{
+name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,
+contains:[a,{className:"section",begin:/\[+/,end:/\]+/},{
+begin:n.concat(l,"(\\s*\\.\\s*",l,")*",n.lookahead(/\s*=\s*[^#\s]/)),
+className:"attr",starts:{end:/$/,contains:[a,o,r,i,s,t]}}]}},grmr_java:e=>{
+e.regex
+;const n="[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*",t=n+ue("(?:<"+n+"~~~(?:\\s*,\\s*"+n+"~~~)*>)?",/~~~/g,2),a={
+keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do"],
+literal:["false","true","null"],
+type:["char","boolean","long","float","int","byte","short","double"],
+built_in:["super","this"]},i={className:"meta",begin:"@"+n,contains:[{
+begin:/\(/,end:/\)/,contains:["self"]}]},r={className:"params",begin:/\(/,
+end:/\)/,keywords:a,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0}
+;return{name:"Java",aliases:["jsp"],keywords:a,illegal:/<\/|#/,
+contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,
+relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{
+begin:/import java\.[a-z]+\./,keywords:"import",relevance:2
+},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,
+className:"string",contains:[e.BACKSLASH_ESCAPE]
+},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{
+match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,n],className:{
+1:"keyword",3:"title.class"}},{begin:[n,/\s+/,n,/\s+/,/=/],className:{1:"type",
+3:"variable",5:"operator"}},{begin:[/record/,/\s+/,n],className:{1:"keyword",
+3:"title.class"},contains:[r,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{
+beginKeywords:"new throw return else",relevance:0},{
+begin:["(?:"+t+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{
+2:"title.function"},keywords:a,contains:[{className:"params",begin:/\(/,
+end:/\)/,keywords:a,relevance:0,
+contains:[i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,ge,e.C_BLOCK_COMMENT_MODE]
+},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},ge,i]}},grmr_javascript:Ne,
+grmr_json:e=>({name:"JSON",contains:[{className:"attr",
+begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},{match:/[{}[\],:]/,
+className:"punctuation",relevance:0},e.QUOTE_STRING_MODE,{
+beginKeywords:"true false null"
+},e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}),
+grmr_kotlin:e=>{const n={
+keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",
+built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",
+literal:"true false null"},t={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"
+},a={className:"subst",begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},i={
+className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},r={className:"string",
+variants:[{begin:'"""',end:'"""(?=[^"])',contains:[i,a]},{begin:"'",end:"'",
+illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,
+contains:[e.BACKSLASH_ESCAPE,i,a]}]};a.contains.push(r);const s={
+className:"meta",
+begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"
+},o={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,
+end:/\)/,contains:[e.inherit(r,{className:"string"})]}]
+},l=ge,c=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),d={
+variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,
+contains:[]}]},g=d;return g.variants[1].contains=[d],d.variants[1].contains=[g],
+{name:"Kotlin",aliases:["kt","kts"],keywords:n,
+contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",
+begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,c,{className:"keyword",
+begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",
+begin:/@\w+/}]}},t,s,o,{className:"function",beginKeywords:"fun",end:"[(]|$",
+returnBegin:!0,excludeEnd:!0,keywords:n,relevance:5,contains:[{
+begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,
+contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,
+keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,
+endsParent:!0,keywords:n,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,
+endsWithParent:!0,contains:[d,e.C_LINE_COMMENT_MODE,c],relevance:0
+},e.C_LINE_COMMENT_MODE,c,s,o,r,e.C_NUMBER_MODE]},c]},{className:"class",
+beginKeywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,
+illegal:"extends implements",contains:[{
+beginKeywords:"public protected internal private constructor"
+},e.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,
+excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,]|$/,
+excludeBegin:!0,returnEnd:!0},s,o]},r,{className:"meta",begin:"^#!/usr/bin/env",
+end:"$",illegal:"\n"},l]}},grmr_less:e=>{
+const n=te(e),t=le,a="([\\w-]+|@\\{[\\w-]+\\})",i=[],r=[],s=e=>({
+className:"string",begin:"~?"+e+".*?"+e}),o=(e,n,t)=>({className:e,begin:n,
+relevance:t}),l={$pattern:/[a-z-]+/,keyword:"and or not only",
+attribute:ie.join(" ")},c={begin:"\\(",end:"\\)",contains:r,keywords:l,
+relevance:0}
+;r.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s("'"),s('"'),n.CSS_NUMBER_MODE,{
+begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",
+excludeEnd:!0}
+},n.HEXCOLOR,c,o("variable","@@?[\\w-]+",10),o("variable","@\\{[\\w-]+\\}"),o("built_in","~?`[^`]*?`"),{
+className:"attribute",begin:"[\\w-]+\\s*:",end:":",returnBegin:!0,excludeEnd:!0
+},n.IMPORTANT);const d=r.concat({begin:/\{/,end:/\}/,contains:i}),g={
+beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"
+}].concat(r)},u={begin:a+"\\s*:",returnBegin:!0,end:/[;}]/,relevance:0,
+contains:[{begin:/-(webkit|moz|ms|o)-/},n.CSS_VARIABLE,{className:"attribute",
+begin:"\\b("+oe.join("|")+")\\b",end:/(?=:)/,starts:{endsWithParent:!0,
+illegal:"[<=$]",relevance:0,contains:r}}]},b={className:"keyword",
+begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",
+starts:{end:"[;{}]",keywords:l,returnEnd:!0,contains:r,relevance:0}},m={
+className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{
+begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:d}},p={variants:[{
+begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:a,end:/\{/}],returnBegin:!0,
+returnEnd:!0,illegal:"[<='$\"]",relevance:0,
+contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,g,o("keyword","all\\b"),o("variable","@\\{[\\w-]+\\}"),{
+begin:"\\b("+ae.join("|")+")\\b",className:"selector-tag"
+},n.CSS_NUMBER_MODE,o("selector-tag",a,0),o("selector-id","#"+a),o("selector-class","\\."+a,0),o("selector-tag","&",0),n.ATTRIBUTE_SELECTOR_MODE,{
+className:"selector-pseudo",begin:":("+re.join("|")+")"},{
+className:"selector-pseudo",begin:":(:)?("+se.join("|")+")"},{begin:/\(/,
+end:/\)/,relevance:0,contains:d},{begin:"!important"},n.FUNCTION_DISPATCH]},_={
+begin:`[\\w-]+:(:)?(${t.join("|")})`,returnBegin:!0,contains:[p]}
+;return i.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,b,m,_,u,p),{
+name:"Less",case_insensitive:!0,illegal:"[=>'/<($\"]",contains:i}},grmr_lua:e=>{
+const n="\\[=*\\[",t="\\]=*\\]",a={begin:n,end:t,contains:["self"]
+},i=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",t,{contains:[a],
+relevance:10})];return{name:"Lua",keywords:{$pattern:e.UNDERSCORE_IDENT_RE,
+literal:"true false nil",
+keyword:"and break do else elseif end for goto if in local not or repeat return then until while",
+built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"
+},contains:i.concat([{className:"function",beginKeywords:"function",end:"\\)",
+contains:[e.inherit(e.TITLE_MODE,{
+begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",
+begin:"\\(",endsWithParent:!0,contains:i}].concat(i)
+},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",
+begin:n,end:t,contains:[a],relevance:5}])}},grmr_makefile:e=>{const n={
+className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)",
+contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%<?\^\+\*]/}]},t={className:"string",
+begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,n]},a={className:"variable",
+begin:/\$\([\w-]+\s/,end:/\)/,keywords:{
+built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"
+},contains:[n]},i={begin:"^"+e.UNDERSCORE_IDENT_RE+"\\s*(?=[:+?]?=)"},r={
+className:"section",begin:/^[^\s]+:/,end:/$/,contains:[n]};return{
+name:"Makefile",aliases:["mk","mak","make"],keywords:{$pattern:/[\w-]+/,
+keyword:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath"
+},contains:[e.HASH_COMMENT_MODE,n,t,a,i,{className:"meta",begin:/^\.PHONY:/,
+end:/$/,keywords:{$pattern:/[\.\w]+/,keyword:".PHONY"}},r]}},grmr_xml:e=>{
+const n=e.regex,t=n.concat(/[A-Z_]/,n.optional(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),a={
+className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},i={begin:/\s/,
+contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]
+},r=e.inherit(i,{begin:/\(/,end:/\)/}),s=e.inherit(e.APOS_STRING_MODE,{
+className:"string"}),o=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),l={
+endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",
+begin:/[A-Za-z0-9._:-]+/,relevance:0},{begin:/=\s*/,relevance:0,contains:[{
+className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[a]},{
+begin:/'/,end:/'/,contains:[a]},{begin:/[^\s"'=<>`]+/}]}]}]};return{
+name:"HTML, XML",
+aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],
+case_insensitive:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,
+relevance:10,contains:[i,o,s,r,{begin:/\[/,end:/\]/,contains:[{className:"meta",
+begin:/<![a-z]/,end:/>/,contains:[i,r,o,s]}]}]},e.COMMENT(/<!--/,/-->/,{
+relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},a,{
+className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",
+begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[l],starts:{
+end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",
+begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[l],starts:{
+end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{
+className:"tag",begin:/<>|<\/>/},{className:"tag",
+begin:n.concat(/</,n.lookahead(n.concat(t,n.either(/\/>/,/>/,/\s/)))),
+end:/\/?>/,contains:[{className:"name",begin:t,relevance:0,starts:l}]},{
+className:"tag",begin:n.concat(/<\//,n.lookahead(n.concat(t,/>/))),contains:[{
+className:"name",begin:t,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}
+},grmr_markdown:e=>{const n={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",
+relevance:0},t={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{
+begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,
+relevance:2},{
+begin:e.regex.concat(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/),
+relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{
+begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/
+},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,
+returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",
+excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",
+end:"\\]",excludeBegin:!0,excludeEnd:!0}]},a={className:"strong",contains:[],
+variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},i={
+className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{
+begin:/_(?!_)/,end:/_/,relevance:0}]};a.contains.push(i),i.contains.push(a)
+;let r=[n,t]
+;return a.contains=a.contains.concat(r),i.contains=i.contains.concat(r),
+r=r.concat(a,i),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{
+className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:r},{
+begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",
+contains:r}]}]},n,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",
+end:"\\s+",excludeEnd:!0},a,i,{className:"quote",begin:"^>\\s+",contains:r,
+end:"$"},{className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{
+begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{
+begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",
+contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{
+begin:"^[-\\*]{3,}",end:"$"},t,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{
+className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{
+className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}},grmr_objectivec:e=>{
+const n=/[a-zA-Z@][a-zA-Z0-9_]*/,t={$pattern:n,
+keyword:["@interface","@class","@protocol","@implementation"]};return{
+name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],
+keywords:{$pattern:n,
+keyword:["int","float","while","char","export","sizeof","typedef","const","struct","for","union","unsigned","long","volatile","static","bool","mutable","if","do","return","goto","void","enum","else","break","extern","asm","case","short","default","double","register","explicit","signed","typename","this","switch","continue","wchar_t","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","super","unichar","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],
+literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"],
+built_in:["BOOL","dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"]
+},illegal:"</",contains:[{className:"built_in",
+begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"
+},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{
+className:"string",variants:[{begin:'@"',end:'"',illegal:"\\n",
+contains:[e.BACKSLASH_ESCAPE]}]},{className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,
+keywords:{
+keyword:"if else elif endif define undef warning error line pragma ifdef ifndef include"
+},contains:[{begin:/\\\n/,relevance:0},e.inherit(e.QUOTE_STRING_MODE,{
+className:"string"}),{className:"string",begin:/<.*?>/,end:/$/,illegal:"\\n"
+},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class",
+begin:"("+t.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:t,
+contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,
+relevance:0}]}},grmr_perl:e=>{const n=e.regex,t=/[dualxmsipngr]{0,12}/,a={
+$pattern:/[\w.]+/,
+keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0"
+},i={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:a},r={begin:/->\{/,
+end:/\}/},s={variants:[{begin:/\$\d/},{
+begin:n.concat(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])")
+},{begin:/[$%@][^\s\w{]/,relevance:0}]
+},o=[e.BACKSLASH_ESCAPE,i,s],l=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],c=(e,a,i="\\1")=>{
+const r="\\1"===i?i:n.concat(i,a)
+;return n.concat(n.concat("(?:",e,")"),a,/(?:\\.|[^\\\/])*?/,r,/(?:\\.|[^\\\/])*?/,i,t)
+},d=(e,a,i)=>n.concat(n.concat("(?:",e,")"),a,/(?:\\.|[^\\\/])*?/,i,t),g=[s,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{
+endsWithParent:!0}),r,{className:"string",contains:o,variants:[{
+begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",
+end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{
+begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">",
+relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",
+contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",
+contains:[e.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{
+begin:"-?\\w+\\s*=>",relevance:0}]},{className:"number",
+begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",
+relevance:0},{
+begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",
+keywords:"split return print reverse grep",relevance:0,
+contains:[e.HASH_COMMENT_MODE,{className:"regexp",variants:[{
+begin:c("s|tr|y",n.either(...l,{capture:!0}))},{begin:c("s|tr|y","\\(","\\)")},{
+begin:c("s|tr|y","\\[","\\]")},{begin:c("s|tr|y","\\{","\\}")}],relevance:2},{
+className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{
+begin:d("(?:m|qr)?",/\//,/\//)},{begin:d("m|qr",n.either(...l,{capture:!0
+}),/\1/)},{begin:d("m|qr",/\(/,/\)/)},{begin:d("m|qr",/\[/,/\]/)},{
+begin:d("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub",
+end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{
+begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",
+subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]
+}];return i.contains=g,r.contains=g,{name:"Perl",aliases:["pl","pm"],keywords:a,
+contains:g}},grmr_php:e=>{const n={className:"variable",
+begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={
+className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{
+begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,
+end:/\}/}]},i=e.inherit(e.APOS_STRING_MODE,{illegal:null
+}),r=e.inherit(e.QUOTE_STRING_MODE,{illegal:null,
+contains:e.QUOTE_STRING_MODE.contains.concat(a)}),s=e.END_SAME_AS_BEGIN({
+begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/,
+contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o={className:"string",
+contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(i,{begin:"b'",end:"'"
+}),e.inherit(r,{begin:'b"',end:'"'}),r,i,s]},l={className:"number",variants:[{
+begin:"\\b0b[01]+(?:_[01]+)*\\b"},{begin:"\\b0o[0-7]+(?:_[0-7]+)*\\b"},{
+begin:"\\b0x[\\da-f]+(?:_[\\da-f]+)*\\b"},{
+begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:e[+-]?\\d+)?"
+}],relevance:0},c={
+keyword:"__CLASS__ __DIR__ __FILE__ __FUNCTION__ __LINE__ __METHOD__ __NAMESPACE__ __TRAIT__ die echo exit include include_once print require require_once array abstract and as binary bool boolean break callable case catch class clone const continue declare default do double else elseif empty enddeclare endfor endforeach endif endswitch endwhile enum eval extends final finally float for foreach from global goto if implements instanceof insteadof int integer interface isset iterable list match|0 mixed new object or private protected public real return string switch throw trait try unset use var void while xor yield",
+literal:"false null true",
+built_in:"Error|0 AppendIterator ArgumentCountError ArithmeticError ArrayIterator ArrayObject AssertionError BadFunctionCallException BadMethodCallException CachingIterator CallbackFilterIterator CompileError Countable DirectoryIterator DivisionByZeroError DomainException EmptyIterator ErrorException Exception FilesystemIterator FilterIterator GlobIterator InfiniteIterator InvalidArgumentException IteratorIterator LengthException LimitIterator LogicException MultipleIterator NoRewindIterator OutOfBoundsException OutOfRangeException OuterIterator OverflowException ParentIterator ParseError RangeException RecursiveArrayIterator RecursiveCachingIterator RecursiveCallbackFilterIterator RecursiveDirectoryIterator RecursiveFilterIterator RecursiveIterator RecursiveIteratorIterator RecursiveRegexIterator RecursiveTreeIterator RegexIterator RuntimeException SeekableIterator SplDoublyLinkedList SplFileInfo SplFileObject SplFixedArray SplHeap SplMaxHeap SplMinHeap SplObjectStorage SplObserver SplObserver SplPriorityQueue SplQueue SplStack SplSubject SplSubject SplTempFileObject TypeError UnderflowException UnexpectedValueException UnhandledMatchError ArrayAccess Closure Generator Iterator IteratorAggregate Serializable Stringable Throwable Traversable WeakReference WeakMap Directory __PHP_Incomplete_Class parent php_user_filter self static stdClass"
+};return{case_insensitive:!0,keywords:c,
+contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[t]
+}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]
+}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,
+keywords:"__halt_compiler"}),t,{className:"keyword",begin:/\$this\b/},n,{
+begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",
+relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,
+illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{
+begin:"=>",endsParent:!0},{className:"params",begin:"\\(",end:"\\)",
+excludeBegin:!0,excludeEnd:!0,keywords:c,
+contains:["self",n,e.C_BLOCK_COMMENT_MODE,o,l]}]},{className:"class",variants:[{
+beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",
+illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{
+beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{
+beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,
+contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",relevance:0,end:";",
+contains:[e.UNDERSCORE_TITLE_MODE]},o,l]}},grmr_php_template:e=>({
+name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,
+subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',
+end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},e.inherit(e.APOS_STRING_MODE,{
+illegal:null,className:null,contains:null,skip:!0
+}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,
+skip:!0})]}]}),grmr_plaintext:e=>({name:"Plain text",aliases:["text","txt"],
+disableAutodetect:!0}),grmr_python:e=>{
+const n=e.regex,t=/[\p{XID_Start}_]\p{XID_Continue}*/u,a={
+$pattern:/[A-Za-z]\w+|__\w+__/,
+keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],
+built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],
+literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],
+type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]
+},i={className:"meta",begin:/^(>>>|\.\.\.) /},r={className:"subst",begin:/\{/,
+end:/\}/,keywords:a,illegal:/#/},s={begin:/\{\{/,relevance:0},o={
+className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{
+begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,
+contains:[e.BACKSLASH_ESCAPE,i],relevance:10},{
+begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,
+contains:[e.BACKSLASH_ESCAPE,i],relevance:10},{
+begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,
+contains:[e.BACKSLASH_ESCAPE,i,s,r]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,
+end:/"""/,contains:[e.BACKSLASH_ESCAPE,i,s,r]},{begin:/([uU]|[rR])'/,end:/'/,
+relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{
+begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,
+end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,
+contains:[e.BACKSLASH_ESCAPE,s,r]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,
+contains:[e.BACKSLASH_ESCAPE,s,r]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]
+},l="[0-9](_?[0-9])*",c=`(\\b(${l}))?\\.(${l})|\\b(${l})\\.`,d={
+className:"number",relevance:0,variants:[{
+begin:`(\\b(${l})|(${c}))[eE][+-]?(${l})[jJ]?\\b`},{begin:`(${c})[jJ]?`},{
+begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{
+begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{
+begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${l})[jJ]\\b`}]},g={
+className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:a,contains:[{
+begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},u={
+className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,
+end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,
+contains:["self",i,d,o,e.HASH_COMMENT_MODE]}]};return r.contains=[o,d,i],{
+name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:a,
+illegal:/(<\/|->|\?)|=>/,contains:[i,d,{begin:/\bself\b/},{beginKeywords:"if",
+relevance:0},o,g,e.HASH_COMMENT_MODE,{match:[/def/,/\s+/,t],scope:{1:"keyword",
+3:"title.function"},contains:[u]},{variants:[{
+match:[/class/,/\s+/,t,/\s*/,/\(\s*/,t,/\s*\)/]},{match:[/class/,/\s+/,t]}],
+scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{
+className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[d,u,o]}]}},
+grmr_python_repl:e=>({aliases:["pycon"],contains:[{className:"meta",starts:{
+end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{
+begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}),grmr_r:e=>{
+const n=e.regex,t=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,a=n.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,/(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),i=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,r=n.either(/[()]/,/[{}]/,/\[\[/,/[[\]]/,/\\/,/,/)
+;return{name:"R",keywords:{$pattern:t,
+keyword:"function if in break next repeat else for while",
+literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10",
+built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm"
+},contains:[e.COMMENT(/#'/,/$/,{contains:[{scope:"doctag",match:/@examples/,
+starts:{end:n.lookahead(n.either(/\n^#'\s*(?=@[a-zA-Z]+)/,/\n^(?!#')/)),
+endsParent:!0}},{scope:"doctag",begin:"@param",end:/$/,contains:[{
+scope:"variable",variants:[{match:t},{match:/`(?:\\.|[^`\\])+`/}],endsParent:!0
+}]},{scope:"doctag",match:/@[a-zA-Z]+/},{scope:"keyword",match:/\\[a-zA-Z]+/}]
+}),e.HASH_COMMENT_MODE,{scope:"string",contains:[e.BACKSLASH_ESCAPE],
+variants:[e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/
+}),e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/
+}),e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/
+}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/
+}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/
+}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"',
+relevance:0},{begin:"'",end:"'",relevance:0}]},{relevance:0,variants:[{scope:{
+1:"operator",2:"number"},match:[i,a]},{scope:{1:"operator",2:"number"},
+match:[/%[^%]*%/,a]},{scope:{1:"punctuation",2:"number"},match:[r,a]},{scope:{
+2:"number"},match:[/[^a-zA-Z0-9._]|^/,a]}]},{scope:{3:"operator"},
+match:[t,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:i},{
+match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:r},{begin:"`",end:"`",
+contains:[{begin:/\\./}]}]}},grmr_ruby:e=>{
+const n=e.regex,t="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",a={
+keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor __FILE__",
+built_in:"proc lambda",literal:"true false nil"},i={className:"doctag",
+begin:"@[A-Za-z]+"},r={begin:"#<",end:">"},s=[e.COMMENT("#","$",{contains:[i]
+}),e.COMMENT("^=begin","^=end",{contains:[i],relevance:10
+}),e.COMMENT("^__END__","\\n$")],o={className:"subst",begin:/#\{/,end:/\}/,
+keywords:a},l={className:"string",contains:[e.BACKSLASH_ESCAPE,o],variants:[{
+begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,
+end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{
+begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,
+end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{
+begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{
+begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{
+begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{
+begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{
+begin:n.concat(/<<[-~]?'?/,n.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),
+contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,
+contains:[e.BACKSLASH_ESCAPE,o]})]}]},c="[0-9](_?[0-9])*",d={className:"number",
+relevance:0,variants:[{
+begin:`\\b([1-9](_?[0-9])*|0)(\\.(${c}))?([eE][+-]?(${c})|r)?i?\\b`},{
+begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"
+},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{
+begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{
+begin:"\\b0(_?[0-7])+r?i?\\b"}]},g={className:"params",begin:"\\(",end:"\\)",
+endsParent:!0,keywords:a},u=[l,{className:"class",beginKeywords:"class module",
+end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{
+begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{
+begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE,relevance:0}]}].concat(s)},{
+className:"function",begin:n.concat(/def\s+/,n.lookahead(t+"\\s*(\\(|;|$)")),
+relevance:0,keywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:t
+}),g].concat(s)},{begin:e.IDENT_RE+"::"},{className:"symbol",
+begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",
+begin:":(?!\\s)",contains:[l,{begin:t}],relevance:0},d,{className:"variable",
+begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{
+className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:a},{
+begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{
+className:"regexp",contains:[e.BACKSLASH_ESCAPE,o],illegal:/\n/,variants:[{
+begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",
+end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]
+}].concat(r,s),relevance:0}].concat(r,s);o.contains=u,g.contains=u;const b=[{
+begin:/^\s*=>/,starts:{end:"$",contains:u}},{className:"meta",
+begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])",
+starts:{end:"$",contains:u}}];return s.unshift(r),{name:"Ruby",
+aliases:["rb","gemspec","podspec","thor","irb"],keywords:a,illegal:/\/\*/,
+contains:[e.SHEBANG({binary:"ruby"})].concat(b).concat(s).concat(u)}},
+grmr_rust:e=>{const n=e.regex,t={className:"title.function.invoke",relevance:0,
+begin:n.concat(/\b/,/(?!let\b)/,e.IDENT_RE,n.lookahead(/\s*\(/))
+},a="([ui](8|16|32|64|128|size)|f(32|64))?",i=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","panic!","file!","format!","format_args!","include_bin!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"]
+;return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?",
+type:["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"],
+keyword:["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","unsafe","unsized","use","virtual","where","while","yield"],
+literal:["true","false","Some","None","Ok","Err"],built_in:i},illegal:"</",
+contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]
+}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{
+className:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{
+begin:/b?'\\?(x\w{2}|u\w{4}|U\w{8}|.)'/}]},{className:"symbol",
+begin:/'[a-zA-Z_][a-zA-Z0-9_]*/},{className:"number",variants:[{
+begin:"\\b0b([01_]+)"+a},{begin:"\\b0o([0-7_]+)"+a},{
+begin:"\\b0x([A-Fa-f0-9_]+)"+a},{
+begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+a}],relevance:0},{
+begin:[/fn/,/\s+/,e.UNDERSCORE_IDENT_RE],className:{1:"keyword",
+3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{
+className:"string",begin:/"/,end:/"/}]},{
+begin:[/let/,/\s+/,/(?:mut\s+)?/,e.UNDERSCORE_IDENT_RE],className:{1:"keyword",
+3:"keyword",4:"variable"}},{
+begin:[/for/,/\s+/,e.UNDERSCORE_IDENT_RE,/\s+/,/in/],className:{1:"keyword",
+3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,e.UNDERSCORE_IDENT_RE],
+className:{1:"keyword",3:"title.class"}},{
+begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,e.UNDERSCORE_IDENT_RE],
+className:{1:"keyword",3:"title.class"}},{begin:e.IDENT_RE+"::",keywords:{
+keyword:"Self",built_in:i}},{className:"punctuation",begin:"->"},t]}},
+grmr_scss:e=>{const n=te(e),t=se,a=re,i="@[a-z-]+",r={className:"variable",
+begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b"};return{name:"SCSS",case_insensitive:!0,
+illegal:"[=/|']",
+contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n.CSS_NUMBER_MODE,{
+className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{
+className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0
+},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag",
+begin:"\\b("+ae.join("|")+")\\b",relevance:0},{className:"selector-pseudo",
+begin:":("+a.join("|")+")"},{className:"selector-pseudo",
+begin:":(:)?("+t.join("|")+")"},r,{begin:/\(/,end:/\)/,
+contains:[n.CSS_NUMBER_MODE]},n.CSS_VARIABLE,{className:"attribute",
+begin:"\\b("+oe.join("|")+")\\b"},{
+begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"
+},{begin:/:/,end:/[;}{]/,
+contains:[n.BLOCK_COMMENT,r,n.HEXCOLOR,n.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,n.IMPORTANT]
+},{begin:"@(page|font-face)",keywords:{$pattern:i,keyword:"@page @font-face"}},{
+begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,
+keyword:"and or not only",attribute:ie.join(" ")},contains:[{begin:i,
+className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute"
+},r,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,n.HEXCOLOR,n.CSS_NUMBER_MODE]
+},n.FUNCTION_DISPATCH]}},grmr_shell:e=>({name:"Shell Session",
+aliases:["console","shellsession"],contains:[{className:"meta",
+begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,
+subLanguage:"bash"}}]}),grmr_sql:e=>{
+const n=e.regex,t=e.COMMENT("--","$"),a=["true","false","unknown"],i=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],r=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],s=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],o=r,l=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!r.includes(e))),c={
+begin:n.concat(/\b/,n.either(...o),/\s*\(/),relevance:0,keywords:{built_in:o}}
+;return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{
+$pattern:/\b[\w\.]+/,keyword:((e,{exceptions:n,when:t}={})=>{const a=t
+;return n=n||[],e.map((e=>e.match(/\|\d+$/)||n.includes(e)?e:a(e)?e+"|0":e))
+})(l,{when:e=>e.length<3}),literal:a,type:i,
+built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"]
+},contains:[{begin:n.either(...s),relevance:0,keywords:{$pattern:/[\w\.]+/,
+keyword:l.concat(s),literal:a,type:i}},{className:"type",
+begin:n.either("double precision","large object","with timezone","without timezone")
+},c,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{
+begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{
+begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,{className:"operator",
+begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}},
+grmr_swift:e=>{const n={match:/\s+/,relevance:0},t=e.COMMENT("/\\*","\\*/",{
+contains:["self"]}),a=[e.C_LINE_COMMENT_MODE,t],i={match:[/\./,p(...ve,...Oe)],
+className:{2:"keyword"}},r={match:m(/\./,p(...Me)),relevance:0
+},s=Me.filter((e=>"string"==typeof e)).concat(["_|0"]),o={variants:[{
+className:"keyword",
+match:p(...Me.filter((e=>"string"!=typeof e)).concat(xe).map(we),...Oe)}]},l={
+$pattern:p(/\b\w+/,/#\w+/),keyword:s.concat(Ae),literal:ke},c=[i,r,o],d=[{
+match:m(/\./,p(...Ce)),relevance:0},{className:"built_in",
+match:m(/\b/,p(...Ce),/(?=\()/)}],u={match:/->/,relevance:0},b=[u,{
+className:"operator",relevance:0,variants:[{match:De},{match:`\\.(\\.|${Re})+`}]
+}],_="([0-9a-fA-F]_*)+",h={className:"number",relevance:0,variants:[{
+match:"\\b(([0-9]_*)+)(\\.(([0-9]_*)+))?([eE][+-]?(([0-9]_*)+))?\\b"},{
+match:`\\b0x(${_})(\\.(${_}))?([pP][+-]?(([0-9]_*)+))?\\b`},{
+match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},f=(e="")=>({
+className:"subst",variants:[{match:m(/\\/,e,/[0\\tnr"']/)},{
+match:m(/\\/,e,/u\{[0-9a-fA-F]{1,8}\}/)}]}),E=(e="")=>({className:"subst",
+match:m(/\\/,e,/[\t ]*(?:[\r\n]|\r\n)/)}),y=(e="")=>({className:"subst",
+label:"interpol",begin:m(/\\/,e,/\(/),end:/\)/}),N=(e="")=>({begin:m(e,/"""/),
+end:m(/"""/,e),contains:[f(e),E(e),y(e)]}),w=(e="")=>({begin:m(e,/"/),
+end:m(/"/,e),contains:[f(e),y(e)]}),v={className:"string",
+variants:[N(),N("#"),N("##"),N("###"),w(),w("#"),w("##"),w("###")]},O={
+match:m(/`/,Be,/`/)},x=[O,{className:"variable",match:/\$\d+/},{
+className:"variable",match:`\\$${Le}+`}],M=[{match:/(@|#)available/,
+className:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:ze,
+contains:[...b,h,v]}]}},{className:"keyword",match:m(/@/,p(...Fe))},{
+className:"meta",match:m(/@/,Be)}],k={match:g(/\b[A-Z]/),relevance:0,contains:[{
+className:"type",
+match:m(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,Le,"+")
+},{className:"type",match:$e,relevance:0},{match:/[?!]+/,relevance:0},{
+match:/\.\.\./,relevance:0},{match:m(/\s+&\s+/,g($e)),relevance:0}]},S={
+begin:/</,end:/>/,keywords:l,contains:[...a,...c,...M,u,k]};k.contains.push(S)
+;const A={begin:/\(/,end:/\)/,relevance:0,keywords:l,contains:["self",{
+match:m(Be,/\s*:/),keywords:"_|0",relevance:0
+},...a,...c,...d,...b,h,v,...x,...M,k]},C={begin:/</,end:/>/,contains:[...a,k]
+},T={begin:/\(/,end:/\)/,keywords:l,contains:[{
+begin:p(g(m(Be,/\s*:/)),g(m(Be,/\s+/,Be,/\s*:/))),end:/:/,relevance:0,
+contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:Be}]
+},...a,...c,...b,h,v,...M,k,A],endsParent:!0,illegal:/["']/},R={
+match:[/func/,/\s+/,p(O.match,Be,De)],className:{1:"keyword",3:"title.function"
+},contains:[C,T,n],illegal:[/\[/,/%/]},D={
+match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},
+contains:[C,T,n],illegal:/\[|%/},I={match:[/operator/,/\s+/,De],className:{
+1:"keyword",3:"title"}},L={begin:[/precedencegroup/,/\s+/,$e],className:{
+1:"keyword",3:"title"},contains:[k],keywords:[...Se,...ke],end:/}/}
+;for(const e of v.variants){const n=e.contains.find((e=>"interpol"===e.label))
+;n.keywords=l;const t=[...c,...d,...b,h,v,...x];n.contains=[...t,{begin:/\(/,
+end:/\)/,contains:["self",...t]}]}return{name:"Swift",keywords:l,
+contains:[...a,R,D,{beginKeywords:"struct protocol class extension enum actor",
+end:"\\{",excludeEnd:!0,keywords:l,contains:[e.inherit(e.TITLE_MODE,{
+className:"title.class",begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/}),...c]
+},I,L,{beginKeywords:"import",end:/$/,contains:[...a],relevance:0
+},...c,...d,...b,h,v,...x,...M,k,A]}},grmr_typescript:e=>{
+const n=Ne(e),t=["any","void","number","boolean","string","object","never","enum"],a={
+beginKeywords:"namespace",end:/\{/,excludeEnd:!0,
+contains:[n.exports.CLASS_REFERENCE]},i={beginKeywords:"interface",end:/\{/,
+excludeEnd:!0,keywords:{keyword:"interface extends",built_in:t},
+contains:[n.exports.CLASS_REFERENCE]},r={$pattern:be,
+keyword:me.concat(["type","namespace","typedef","interface","public","private","protected","implements","declare","abstract","readonly"]),
+literal:pe,built_in:ye.concat(t),"variable.language":Ee},s={className:"meta",
+begin:"@[A-Za-z$_][0-9A-Za-z$_]*"},o=(e,n,t)=>{
+const a=e.contains.findIndex((e=>e.label===n))
+;if(-1===a)throw Error("can not find mode to replace");e.contains.splice(a,1,t)}
+;return Object.assign(n.keywords,r),
+n.exports.PARAMS_CONTAINS.push(s),n.contains=n.contains.concat([s,a,i]),
+o(n,"shebang",e.SHEBANG()),o(n,"use_strict",{className:"meta",relevance:10,
+begin:/^\s*['"]use strict['"]/
+}),n.contains.find((e=>"func.def"===e.label)).relevance=0,Object.assign(n,{
+name:"TypeScript",aliases:["ts","tsx"]}),n},grmr_vbnet:e=>{
+const n=e.regex,t=/\d{1,2}\/\d{1,2}\/\d{4}/,a=/\d{4}-\d{1,2}-\d{1,2}/,i=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,r=/\d{1,2}(:\d{1,2}){1,2}/,s={
+className:"literal",variants:[{begin:n.concat(/# */,n.either(a,t),/ *#/)},{
+begin:n.concat(/# */,r,/ *#/)},{begin:n.concat(/# */,i,/ *#/)},{
+begin:n.concat(/# */,n.either(a,t),/ +/,n.either(i,r),/ *#/)}]
+},o=e.COMMENT(/'''/,/$/,{contains:[{className:"doctag",begin:/<\/?/,end:/>/}]
+}),l=e.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\t ]|^)REM(?=\s)/}]})
+;return{name:"Visual Basic .NET",aliases:["vb"],case_insensitive:!0,
+classNameAliases:{label:"symbol"},keywords:{
+keyword:"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield",
+built_in:"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort",
+type:"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort",
+literal:"true false nothing"},
+illegal:"//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",contains:[{
+className:"string",begin:/"(""|[^/n])"C\b/},{className:"string",begin:/"/,
+end:/"/,illegal:/\n/,contains:[{begin:/""/}]},s,{className:"number",relevance:0,
+variants:[{begin:/\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/
+},{begin:/\b\d[\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\dA-F_]+((U?[SIL])|[%&])?/},{
+begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},{
+className:"label",begin:/^\w+:/},o,l,{className:"meta",
+begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/,
+end:/$/,keywords:{
+keyword:"const disable else elseif enable end externalsource if region then"},
+contains:[l]}]}},grmr_yaml:e=>{
+const n="true false yes no null",t="[\\w#;/?:@&=+$,.~*'()[\\]]+",a={
+className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/
+},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable",
+variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},i=e.inherit(a,{
+variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),r={
+end:",",endsWithParent:!0,excludeEnd:!0,keywords:n,relevance:0},s={begin:/\{/,
+end:/\}/,contains:[r],illegal:"\\n",relevance:0},o={begin:"\\[",end:"\\]",
+contains:[r],illegal:"\\n",relevance:0},l=[{className:"attr",variants:[{
+begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{
+begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---\\s*$",
+relevance:10},{className:"string",
+begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{
+begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,
+relevance:0},{className:"type",begin:"!\\w+!"+t},{className:"type",
+begin:"!<"+t+">"},{className:"type",begin:"!"+t},{className:"type",begin:"!!"+t
+},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",
+begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",
+relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},{
+className:"number",
+begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"
+},{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},s,o,a],c=[...l]
+;return c.pop(),c.push(i),r.contains=c,{name:"YAML",case_insensitive:!0,
+aliases:["yml"],contains:l}}});const je=ne;for(const e of Object.keys(Ue)){
+const n=e.replace("grmr_","").replace("_","-");je.registerLanguage(n,Ue[e])}
+return je}()
+;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/1c.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/1c.min.js
new file mode 100644
index 0000000..f011d8b
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/1c.min.js
@@ -0,0 +1,24 @@
+/*! `1c` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var s=(()=>{"use strict";return s=>{
+var x="[A-Za-z\u0410-\u042f\u0430-\u044f\u0451\u0401_][A-Za-z\u0410-\u042f\u0430-\u044f\u0451\u0401_0-9]+",n="\u0434\u0430\u043b\u0435\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c\u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0434\u043b\u044f \u0435\u0441\u043b\u0438 \u0438 \u0438\u0437 \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u0438\u043d\u0430\u0447\u0435\u0435\u0441\u043b\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043d\u0435\u0446\u0435\u0441\u043b\u0438 \u043a\u043e\u043d\u0435\u0446\u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u043a\u043e\u043d\u0435\u0446\u0446\u0438\u043a\u043b\u0430 \u043d\u0435 \u043d\u043e\u0432\u044b\u0439 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043f\u0435\u0440\u0435\u043c \u043f\u043e \u043f\u043e\u043a\u0430 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u043f\u0440\u0435\u0440\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0442\u043e\u0433\u0434\u0430 \u0446\u0438\u043a\u043b \u044d\u043a\u0441\u043f\u043e\u0440\u0442 ",e="null \u0438\u0441\u0442\u0438\u043d\u0430 \u043b\u043e\u0436\u044c \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e",o=s.inherit(s.NUMBER_MODE),t={
+className:"string",begin:'"|\\|',end:'"|$',contains:[{begin:'""'}]},a={
+begin:"'",end:"'",excludeBegin:!0,excludeEnd:!0,contains:[{className:"number",
+begin:"\\d{4}([\\.\\\\/:-]?\\d{2}){0,5}"}]},m=s.inherit(s.C_LINE_COMMENT_MODE)
+;return{name:"1C:Enterprise",case_insensitive:!0,keywords:{$pattern:x,keyword:n,
+built_in:"\u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c\u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c\u0441\u0442\u0440\u043e\u043a \u0441\u0438\u043c\u0432\u043e\u043b\u0442\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u0438 ansitooem oemtoansi \u0432\u0432\u0435\u0441\u0442\u0438\u0432\u0438\u0434\u0441\u0443\u0431\u043a\u043e\u043d\u0442\u043e \u0432\u0432\u0435\u0441\u0442\u0438\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0432\u0432\u0435\u0441\u0442\u0438\u043f\u0435\u0440\u0438\u043e\u0434 \u0432\u0432\u0435\u0441\u0442\u0438\u043f\u043b\u0430\u043d\u0441\u0447\u0435\u0442\u043e\u0432 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439\u043f\u043b\u0430\u043d\u0441\u0447\u0435\u0442\u043e\u0432 \u0434\u0430\u0442\u0430\u0433\u043e\u0434 \u0434\u0430\u0442\u0430\u043c\u0435\u0441\u044f\u0446 \u0434\u0430\u0442\u0430\u0447\u0438\u0441\u043b\u043e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0432\u0441\u0442\u0440\u043e\u043a\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0438\u0437\u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438\u0431 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043a\u043e\u0434\u0441\u0438\u043c\u0432 \u043a\u043e\u043d\u0433\u043e\u0434\u0430 \u043a\u043e\u043d\u0435\u0446\u043f\u0435\u0440\u0438\u043e\u0434\u0430\u0431\u0438 \u043a\u043e\u043d\u0435\u0446\u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0433\u043e\u043f\u0435\u0440\u0438\u043e\u0434\u0430\u0431\u0438 \u043a\u043e\u043d\u0435\u0446\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e\u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430 \u043a\u043e\u043d\u043a\u0432\u0430\u0440\u0442\u0430\u043b\u0430 \u043a\u043e\u043d\u043c\u0435\u0441\u044f\u0446\u0430 \u043a\u043e\u043d\u043d\u0435\u0434\u0435\u043b\u0438 \u043b\u043e\u0433 \u043b\u043e\u043310 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u0441\u0443\u0431\u043a\u043e\u043d\u0442\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043d\u0430\u0431\u043e\u0440\u0430\u043f\u0440\u0430\u0432 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c\u0432\u0438\u0434 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c\u0441\u0447\u0435\u0442 \u043d\u0430\u0439\u0442\u0438\u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430\u0447\u0430\u043b\u043e\u043f\u0435\u0440\u0438\u043e\u0434\u0430\u0431\u0438 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e\u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430 \u043d\u0430\u0447\u0433\u043e\u0434\u0430 \u043d\u0430\u0447\u043a\u0432\u0430\u0440\u0442\u0430\u043b\u0430 \u043d\u0430\u0447\u043c\u0435\u0441\u044f\u0446\u0430 \u043d\u0430\u0447\u043d\u0435\u0434\u0435\u043b\u0438 \u043d\u043e\u043c\u0435\u0440\u0434\u043d\u044f\u0433\u043e\u0434\u0430 \u043d\u043e\u043c\u0435\u0440\u0434\u043d\u044f\u043d\u0435\u0434\u0435\u043b\u0438 \u043d\u043e\u043c\u0435\u0440\u043d\u0435\u0434\u0435\u043b\u0438\u0433\u043e\u0434\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439\u0436\u0443\u0440\u043d\u0430\u043b\u0440\u0430\u0441\u0447\u0435\u0442\u043e\u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439\u043f\u043b\u0430\u043d\u0441\u0447\u0435\u0442\u043e\u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439\u044f\u0437\u044b\u043a \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c\u043e\u043a\u043d\u043e\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043f\u0435\u0440\u0438\u043e\u0434\u0441\u0442\u0440 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0432\u0440\u0435\u043c\u044f\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0434\u0430\u0442\u0443\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043e\u0442\u0431\u043e\u0440\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043f\u043e\u0437\u0438\u0446\u0438\u044e\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043f\u0443\u0441\u0442\u043e\u0435\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0442\u0430 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430\u0432\u0442\u043e\u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044c \u043f\u0443\u0441\u0442\u043e\u0435\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u043f\u043e\u0437\u0438\u0446\u0438\u044e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b\u043d\u0430 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b\u043f\u043e \u0441\u0438\u043c\u0432 \u0441\u043e\u0437\u0434\u0430\u0442\u044c\u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u0442\u0430\u0442\u0443\u0441\u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0441\u0442\u0440\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u0441\u0442\u0440\u043e\u043a \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u043f\u043e\u0437\u0438\u0446\u0438\u044e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0441\u0447\u0435\u0442\u043f\u043e\u043a\u043e\u0434\u0443 \u0442\u0435\u043a\u0443\u0449\u0435\u0435\u0432\u0440\u0435\u043c\u044f \u0442\u0438\u043f\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0441\u0442\u0440 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0442\u0430\u043d\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0442\u0430\u043f\u043e \u0444\u0438\u043a\u0441\u0448\u0430\u0431\u043b\u043e\u043d \u0448\u0430\u0431\u043b\u043e\u043d acos asin atan base64\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 base64\u0441\u0442\u0440\u043e\u043a\u0430 cos exp log log10 pow sin sqrt tan xml\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 xml\u0441\u0442\u0440\u043e\u043a\u0430 xml\u0442\u0438\u043f xml\u0442\u0438\u043f\u0437\u043d\u0447 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435\u043e\u043a\u043d\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439\u0440\u0435\u0436\u0438\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439\u0440\u0435\u0436\u0438\u043c\u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u043b\u0435\u0432\u043e \u0432\u0432\u0435\u0441\u0442\u0438\u0434\u0430\u0442\u0443 \u0432\u0432\u0435\u0441\u0442\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u0432\u0435\u0441\u0442\u0438\u0441\u0442\u0440\u043e\u043a\u0443 \u0432\u0432\u0435\u0441\u0442\u0438\u0447\u0438\u0441\u043b\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u0447\u0442\u0435\u043d\u0438\u044fxml \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u0440\u0435\u0433 \u0432\u044b\u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0436\u0443\u0440\u043d\u0430\u043b\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443\u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443\u043f\u0440\u0430\u0432\u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0433\u043e\u0434 \u0434\u0430\u043d\u043d\u044b\u0435\u0444\u043e\u0440\u043c\u044b\u0432\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u0442\u0430 \u0434\u0435\u043d\u044c \u0434\u0435\u043d\u044c\u0433\u043e\u0434\u0430 \u0434\u0435\u043d\u044c\u043d\u0435\u0434\u0435\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c\u043c\u0435\u0441\u044f\u0446 \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0434\u0430\u043d\u043d\u044b\u0435\u0434\u043b\u044f\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0440\u0430\u0431\u043e\u0442\u0443\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c\u0440\u0430\u0431\u043e\u0442\u0443\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0432\u043d\u0435\u0448\u043d\u044e\u044e\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0443 \u0437\u0430\u043a\u0440\u044b\u0442\u044c\u0441\u043f\u0440\u0430\u0432\u043a\u0443 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044cjson \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044cxml \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c\u0434\u0430\u0442\u0443json \u0437\u0430\u043f\u0438\u0441\u044c\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c\u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c\u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0432\u0434\u0430\u043d\u043d\u044b\u0435\u0444\u043e\u0440\u043c\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0432\u0441\u0442\u0440\u043e\u043a\u0443\u0432\u043d\u0443\u0442\u0440 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0432\u0444\u0430\u0439\u043b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0438\u0437\u0441\u0442\u0440\u043e\u043a\u0438\u0432\u043d\u0443\u0442\u0440 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0438\u0437\u0444\u0430\u0439\u043b\u0430 \u0438\u0437xml\u0442\u0438\u043f\u0430 \u0438\u043c\u043f\u043e\u0440\u0442\u043c\u043e\u0434\u0435\u043b\u0438xdto \u0438\u043c\u044f\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u0438\u043c\u044f\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u043e\u0431\u043e\u0448\u0438\u0431\u043a\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438\u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445\u0444\u0430\u0439\u043b\u043e\u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u0442\u0440\u043e\u043a\u0443 \u043a\u043e\u0434\u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u043a\u043e\u0434\u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043d\u0435\u0446\u0433\u043e\u0434\u0430 \u043a\u043e\u043d\u0435\u0446\u0434\u043d\u044f \u043a\u043e\u043d\u0435\u0446\u043a\u0432\u0430\u0440\u0442\u0430\u043b\u0430 \u043a\u043e\u043d\u0435\u0446\u043c\u0435\u0441\u044f\u0446\u0430 \u043a\u043e\u043d\u0435\u0446\u043c\u0438\u043d\u0443\u0442\u044b \u043a\u043e\u043d\u0435\u0446\u043d\u0435\u0434\u0435\u043b\u0438 \u043a\u043e\u043d\u0435\u0446\u0447\u0430\u0441\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0431\u0430\u0437\u044b\u0434\u0430\u043d\u043d\u044b\u0445\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0430\u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0430 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0434\u0430\u043d\u043d\u044b\u0435\u0444\u043e\u0440\u043c\u044b \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0444\u0430\u0439\u043b \u043a\u0440\u0430\u0442\u043a\u043e\u0435\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043e\u0448\u0438\u0431\u043a\u0438 \u043b\u0435\u0432 \u043c\u0430\u043a\u0441 \u043c\u0435\u0441\u0442\u043d\u043e\u0435\u0432\u0440\u0435\u043c\u044f \u043c\u0435\u0441\u044f\u0446 \u043c\u0438\u043d \u043c\u0438\u043d\u0443\u0442\u0430 \u043c\u043e\u043d\u043e\u043f\u043e\u043b\u044c\u043d\u044b\u0439\u0440\u0435\u0436\u0438\u043c \u043d\u0430\u0439\u0442\u0438 \u043d\u0430\u0439\u0442\u0438\u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435\u0441\u0438\u043c\u0432\u043e\u043b\u044bxml \u043d\u0430\u0439\u0442\u0438\u043e\u043a\u043d\u043e\u043f\u043e\u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0441\u0441\u044b\u043b\u043a\u0435 \u043d\u0430\u0439\u0442\u0438\u043f\u043e\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0435\u043d\u0430\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0439\u0442\u0438\u043f\u043e\u0441\u0441\u044b\u043b\u043a\u0430\u043c \u043d\u0430\u0439\u0442\u0438\u0444\u0430\u0439\u043b\u044b \u043d\u0430\u0447\u0430\u043b\u043e\u0433\u043e\u0434\u0430 \u043d\u0430\u0447\u0430\u043b\u043e\u0434\u043d\u044f \u043d\u0430\u0447\u0430\u043b\u043e\u043a\u0432\u0430\u0440\u0442\u0430\u043b\u0430 \u043d\u0430\u0447\u0430\u043b\u043e\u043c\u0435\u0441\u044f\u0446\u0430 \u043d\u0430\u0447\u0430\u043b\u043e\u043c\u0438\u043d\u0443\u0442\u044b \u043d\u0430\u0447\u0430\u043b\u043e\u043d\u0435\u0434\u0435\u043b\u0438 \u043d\u0430\u0447\u0430\u043b\u043e\u0447\u0430\u0441\u0430 \u043d\u0430\u0447\u0430\u0442\u044c\u0437\u0430\u043f\u0440\u043e\u0441\u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430\u0447\u0430\u0442\u044c\u0437\u0430\u043f\u0443\u0441\u043a\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u0447\u0430\u0442\u044c\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u0444\u0430\u0439\u043b\u0430 \u043d\u0430\u0447\u0430\u0442\u044c\u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u0444\u0430\u0439\u043b\u0430 \u043d\u0430\u0447\u0430\u0442\u044c\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u0432\u043d\u0435\u0448\u043d\u0435\u0439\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043d\u0430\u0447\u0430\u0442\u044c\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u0440\u0430\u0431\u043e\u0442\u044b\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0435\u0439 \u043d\u0430\u0447\u0430\u0442\u044c\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u0440\u0430\u0431\u043e\u0442\u044b\u0441\u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u043d\u0430\u0447\u0430\u0442\u044c\u043f\u043e\u0438\u0441\u043a\u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430\u0447\u0430\u0442\u044c\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445\u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430\u0447\u0430\u0442\u044c\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430\u0447\u0430\u0442\u044c\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430\u0447\u0430\u0442\u044c\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430\u0447\u0430\u0442\u044c\u043f\u043e\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u0444\u0430\u0439\u043b\u0430 \u043d\u0430\u0447\u0430\u0442\u044c\u043f\u043e\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430\u0447\u0430\u0442\u044c\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445\u0434\u0430\u043d\u043d\u044b\u0445\u0438\u0437\u0444\u0430\u0439\u043b\u0430 \u043d\u0430\u0447\u0430\u0442\u044c\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u043d\u0430\u0447\u0430\u0442\u044c\u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e \u043d\u0430\u0447\u0430\u0442\u044c\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435\u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430\u0447\u0430\u0442\u044c\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443\u0432\u043d\u0435\u0448\u043d\u0435\u0439\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043d\u0430\u0447\u0430\u0442\u044c\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u0440\u0430\u0431\u043e\u0442\u044b\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0435\u0439 \u043d\u0430\u0447\u0430\u0442\u044c\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u0440\u0430\u0431\u043e\u0442\u044b\u0441\u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u043d\u0435\u0434\u0435\u043b\u044f\u0433\u043e\u0434\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043d\u043e\u043c\u0435\u0440\u0441\u0435\u0430\u043d\u0441\u0430\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u043d\u043e\u043c\u0435\u0440\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u043d\u0440\u0435\u0433 \u043d\u0441\u0442\u0440 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044e\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0444\u0430\u0439\u043b\u044b \u043e\u043a\u0440 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043e\u0448\u0438\u0431\u043a\u0438 \u043e\u043f\u043e\u0432\u0435\u0441\u0442\u0438\u0442\u044c \u043e\u043f\u043e\u0432\u0435\u0441\u0442\u0438\u0442\u044c\u043e\u0431\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a\u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044c\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u044c\u0438\u043d\u0434\u0435\u043a\u0441\u0441\u043f\u0440\u0430\u0432\u043a\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044c\u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u0441\u043f\u0440\u0430\u0432\u043a\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044c\u0441\u043f\u0440\u0430\u0432\u043a\u0443 \u043e\u0442\u043a\u0440\u044b\u0442\u044c\u0444\u043e\u0440\u043c\u0443 \u043e\u0442\u043a\u0440\u044b\u0442\u044c\u0444\u043e\u0440\u043c\u0443\u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c\u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c\u0436\u0443\u0440\u043d\u0430\u043b\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b\u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u0435\u0440\u0435\u0439\u0442\u0438\u043f\u043e\u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0441\u0441\u044b\u043b\u043a\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c\u0444\u0430\u0439\u043b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0432\u043d\u0435\u0448\u043d\u044e\u044e\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a\u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u0440\u0430\u0431\u043e\u0442\u044b\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0435\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u0440\u0430\u0431\u043e\u0442\u044b\u0441\u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0432\u0432\u043e\u0434\u0434\u0430\u0442\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0432\u0432\u043e\u0434\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0432\u0432\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0432\u0432\u043e\u0434\u0447\u0438\u0441\u043b\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e\u043e\u0431\u043e\u0448\u0438\u0431\u043a\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u043d\u0430\u043a\u0430\u0440\u0442\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u0435\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0435\u0438\u043c\u044f\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044ccom\u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044cxml\u0442\u0438\u043f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0430\u0434\u0440\u0435\u0441\u043f\u043e\u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443\u0441\u0435\u0430\u043d\u0441\u043e\u0432 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0432\u0440\u0435\u043c\u044f\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f\u0441\u043f\u044f\u0449\u0435\u0433\u043e\u0441\u0435\u0430\u043d\u0441\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0432\u0440\u0435\u043c\u044f\u0437\u0430\u0441\u044b\u043f\u0430\u043d\u0438\u044f\u043f\u0430\u0441\u0441\u0438\u0432\u043d\u043e\u0433\u043e\u0441\u0435\u0430\u043d\u0441\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0432\u0440\u0435\u043c\u044f\u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0434\u0430\u043d\u043d\u044b\u0435\u0432\u044b\u0431\u043e\u0440\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435\u043a\u043e\u0434\u044b\u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435\u0447\u0430\u0441\u043e\u0432\u044b\u0435\u043f\u043e\u044f\u0441\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043e\u0442\u0431\u043e\u0440\u0430\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0438\u0437\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0438\u043c\u044f\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e\u0444\u0430\u0439\u043b\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0438\u043c\u044f\u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e\u044d\u043a\u0440\u0430\u043d\u043e\u0432\u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043a\u0440\u0430\u0442\u043a\u0438\u0439\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043c\u0430\u043a\u0435\u0442\u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043c\u0430\u0441\u043a\u0443\u0432\u0441\u0435\u0444\u0430\u0439\u043b\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043c\u0430\u0441\u043a\u0443\u0432\u0441\u0435\u0444\u0430\u0439\u043b\u044b\u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043c\u0430\u0441\u043a\u0443\u0432\u0441\u0435\u0444\u0430\u0439\u043b\u044b\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043f\u043e\u0430\u0434\u0440\u0435\u0441\u0443 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e\u0434\u043b\u0438\u043d\u0443\u043f\u0430\u0440\u043e\u043b\u0435\u0439\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e\u0441\u0441\u044b\u043b\u043a\u0443 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e\u0441\u0441\u044b\u043b\u043a\u0443\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438\u0431\u0430\u0437\u044b\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445\u0434\u0430\u043d\u043d\u044b\u0445\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043e\u0431\u0449\u0438\u0439\u043c\u0430\u043a\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043e\u0431\u0449\u0443\u044e\u0444\u043e\u0440\u043c\u0443 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043e\u043a\u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e\u043e\u0442\u043c\u0435\u0442\u043a\u0443\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e\u0440\u0435\u0436\u0438\u043c\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445\u043e\u043f\u0446\u0438\u0439\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043f\u043e\u043b\u043d\u043e\u0435\u0438\u043c\u044f\u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445\u0441\u0441\u044b\u043b\u043e\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443\u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438\u043f\u0430\u0440\u043e\u043b\u0435\u0439\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c\u043f\u0443\u0442\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c\u043f\u0443\u0442\u0438\u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c\u043f\u0443\u0442\u0438\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u0435\u0430\u043d\u0441\u044b\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435\u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0438\u0444\u043e\u0440\u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u043e\u0441\u0442\u0430\u0432\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430odata \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f\u0431\u0430\u0437\u044b\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0442\u0435\u043a\u0443\u0449\u0438\u0439\u0441\u0435\u0430\u043d\u0441\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0444\u0430\u0439\u043b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0444\u0430\u0439\u043b\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0444\u043e\u0440\u043c\u0443 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0443\u044e\u043e\u043f\u0446\u0438\u044e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0443\u044e\u043e\u043f\u0446\u0438\u044e\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0447\u0430\u0441\u043e\u0432\u043e\u0439\u043f\u043e\u044f\u0441\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438\u043e\u0441 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c\u0432\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c\u0444\u0430\u0439\u043b \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c\u0444\u0430\u0439\u043b\u044b \u043f\u0440\u0430\u0432 \u043f\u0440\u0430\u0432\u043e\u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043a\u043e\u0434\u0430\u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u0440\u0430\u0432\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u0447\u0430\u0441\u043e\u0432\u043e\u0433\u043e\u043f\u043e\u044f\u0441\u0430 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u0442\u044c\u0440\u0430\u0431\u043e\u0442\u0443\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439\u0440\u0435\u0436\u0438\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c\u0432\u044b\u0437\u043e\u0432 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044cjson \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044cxml \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c\u0434\u0430\u0442\u0443json \u043f\u0443\u0441\u0442\u0430\u044f\u0441\u0442\u0440\u043e\u043a\u0430 \u0440\u0430\u0431\u043e\u0447\u0438\u0439\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0434\u0430\u043d\u043d\u044b\u0445\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0440\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0434\u0430\u043d\u043d\u044b\u0435\u0434\u043b\u044f\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c\u0444\u0430\u0439\u043b \u0440\u0430\u0437\u043e\u0440\u0432\u0430\u0442\u044c\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435\u0441\u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u0442\u0440\u043e\u043a\u0443 \u0440\u043e\u043b\u044c\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0441\u0435\u043a\u0443\u043d\u0434\u0430 \u0441\u0438\u0433\u043d\u0430\u043b \u0441\u0438\u043c\u0432\u043e\u043b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0436\u0443\u0440\u043d\u0430\u043b\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u043b\u0435\u0442\u043d\u0435\u0433\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0431\u0443\u0444\u0435\u0440\u044b\u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0437\u0434\u0430\u0442\u044c\u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441\u043e\u0437\u0434\u0430\u0442\u044c\u0444\u0430\u0431\u0440\u0438\u043a\u0443xdto \u0441\u043e\u043a\u0440\u043b \u0441\u043e\u043a\u0440\u043b\u043f \u0441\u043e\u043a\u0440\u043f \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441\u0440\u0435\u0434 \u0441\u0442\u0440\u0434\u043b\u0438\u043d\u0430 \u0441\u0442\u0440\u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f\u043d\u0430 \u0441\u0442\u0440\u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0442\u0440\u043d\u0430\u0439\u0442\u0438 \u0441\u0442\u0440\u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f\u0441 \u0441\u0442\u0440\u043e\u043a\u0430 \u0441\u0442\u0440\u043e\u043a\u0430\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u0441\u0442\u0440\u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u0442\u0440\u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u0442\u0440\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0441\u0442\u0440\u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0441\u0442\u0440\u0447\u0438\u0441\u043b\u043e\u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0439 \u0441\u0442\u0440\u0447\u0438\u0441\u043b\u043e\u0441\u0442\u0440\u043e\u043a \u0441\u0442\u0440\u0448\u0430\u0431\u043b\u043e\u043d \u0442\u0435\u043a\u0443\u0449\u0430\u044f\u0434\u0430\u0442\u0430 \u0442\u0435\u043a\u0443\u0449\u0430\u044f\u0434\u0430\u0442\u0430\u0441\u0435\u0430\u043d\u0441\u0430 \u0442\u0435\u043a\u0443\u0449\u0430\u044f\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f\u0434\u0430\u0442\u0430 \u0442\u0435\u043a\u0443\u0449\u0430\u044f\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f\u0434\u0430\u0442\u0430\u0432\u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 \u0442\u0435\u043a\u0443\u0449\u0438\u0439\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0443\u0449\u0438\u0439\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e\u0448\u0440\u0438\u0444\u0442\u0430\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0443\u0449\u0438\u0439\u043a\u043e\u0434\u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u0439\u0440\u0435\u0436\u0438\u043c\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439\u044f\u0437\u044b\u043a \u0442\u0435\u043a\u0443\u0449\u0438\u0439\u044f\u0437\u044b\u043a\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0442\u0438\u043f \u0442\u0438\u043f\u0437\u043d\u0447 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u0430\u043a\u0442\u0438\u0432\u043d\u0430 \u0442\u0440\u0435\u0433 \u0443\u0434\u0430\u043b\u0438\u0442\u044c\u0434\u0430\u043d\u043d\u044b\u0435\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u0443\u0434\u0430\u043b\u0438\u0442\u044c\u0438\u0437\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0443\u0434\u0430\u043b\u0438\u0442\u044c\u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0443\u0434\u0430\u043b\u0438\u0442\u044c\u0444\u0430\u0439\u043b\u044b \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0435\u0432\u0440\u0435\u043c\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439\u0440\u0435\u0436\u0438\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439\u0440\u0435\u0436\u0438\u043c\u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u0434\u0430\u043d\u043d\u044b\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443\u0441\u0435\u0430\u043d\u0441\u043e\u0432 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0432\u043d\u0435\u0448\u043d\u044e\u044e\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0443 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0432\u0440\u0435\u043c\u044f\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f\u0441\u043f\u044f\u0449\u0435\u0433\u043e\u0441\u0435\u0430\u043d\u0441\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0432\u0440\u0435\u043c\u044f\u0437\u0430\u0441\u044b\u043f\u0430\u043d\u0438\u044f\u043f\u0430\u0441\u0441\u0438\u0432\u043d\u043e\u0433\u043e\u0441\u0435\u0430\u043d\u0441\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0432\u0440\u0435\u043c\u044f\u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u043a\u0440\u0430\u0442\u043a\u0438\u0439\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e\u0434\u043b\u0438\u043d\u0443\u043f\u0430\u0440\u043e\u043b\u0435\u0439\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u043c\u043e\u043d\u043e\u043f\u043e\u043b\u044c\u043d\u044b\u0439\u0440\u0435\u0436\u0438\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445\u0434\u0430\u043d\u043d\u044b\u0445\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e\u0440\u0435\u0436\u0438\u043c\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445\u043e\u043f\u0446\u0438\u0439\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439\u0440\u0435\u0436\u0438\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443\u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438\u043f\u0430\u0440\u043e\u043b\u0435\u0439\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u0440\u0430\u0431\u043e\u0442\u044b\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u0440\u0430\u0431\u043e\u0442\u044b\u0441\u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435\u0441\u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c\u0434\u0430\u043d\u043d\u044b\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435\u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0438\u0444\u043e\u0440\u043c\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u043e\u0441\u0442\u0430\u0432\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430odata \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0447\u0430\u0441\u043e\u0432\u043e\u0439\u043f\u043e\u044f\u0441\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0447\u0430\u0441\u043e\u0432\u043e\u0439\u043f\u043e\u044f\u0441\u0441\u0435\u0430\u043d\u0441\u0430 \u0444\u043e\u0440\u043c\u0430\u0442 \u0446\u0435\u043b \u0447\u0430\u0441 \u0447\u0430\u0441\u043e\u0432\u043e\u0439\u043f\u043e\u044f\u0441 \u0447\u0430\u0441\u043e\u0432\u043e\u0439\u043f\u043e\u044f\u0441\u0441\u0435\u0430\u043d\u0441\u0430 \u0447\u0438\u0441\u043b\u043e \u0447\u0438\u0441\u043b\u043e\u043f\u0440\u043e\u043f\u0438\u0441\u044c\u044e \u044d\u0442\u043e\u0430\u0434\u0440\u0435\u0441\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 ws\u0441\u0441\u044b\u043b\u043a\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c\u0430\u043a\u0435\u0442\u043e\u0432\u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0441\u0442\u0438\u043b\u0435\u0439 \u0431\u0438\u0437\u043d\u0435\u0441\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0432\u043d\u0435\u0448\u043d\u0438\u0435\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u043d\u0435\u0448\u043d\u0438\u0435\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0435\u043e\u0442\u0447\u0435\u0442\u044b \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435\u043f\u043e\u043a\u0443\u043f\u043a\u0438 \u0433\u043b\u0430\u0432\u043d\u044b\u0439\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0433\u043b\u0430\u0432\u043d\u044b\u0439\u0441\u0442\u0438\u043b\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u0436\u0443\u0440\u043d\u0430\u043b\u044b\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u043e\u0431\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0440\u0430\u0431\u043e\u0447\u0435\u0439\u0434\u0430\u0442\u044b \u0438\u0441\u0442\u043e\u0440\u0438\u044f\u0440\u0430\u0431\u043e\u0442\u044b\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0438\u043e\u0442\u0431\u043e\u0440\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0440\u0435\u043a\u043b\u0430\u043c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 \u043e\u0442\u0447\u0435\u0442\u044b \u043f\u0430\u043d\u0435\u043b\u044c\u0437\u0430\u0434\u0430\u0447\u043e\u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b\u0441\u0435\u0430\u043d\u0441\u0430 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u043d\u044b\u0432\u0438\u0434\u043e\u0432\u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u043f\u043b\u0430\u043d\u044b\u0432\u0438\u0434\u043e\u0432\u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a \u043f\u043b\u0430\u043d\u044b\u043e\u0431\u043c\u0435\u043d\u0430 \u043f\u043b\u0430\u043d\u044b\u0441\u0447\u0435\u0442\u043e\u0432 \u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439\u043f\u043e\u0438\u0441\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439\u0431\u0430\u0437\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445\u043f\u043e\u043a\u0443\u043f\u043e\u043a \u0440\u0430\u0431\u043e\u0447\u0430\u044f\u0434\u0430\u0442\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b\u0431\u0443\u0445\u0433\u0430\u043b\u0442\u0435\u0440\u0438\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b\u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b\u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b\u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442\u043d\u044b\u0435\u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440xdto \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u0433\u0435\u043e\u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0440\u0435\u043a\u043b\u0430\u043c\u044b \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043f\u043e\u0447\u0442\u044b \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0438\u0438 \u0444\u0430\u0431\u0440\u0438\u043a\u0430xdto \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435\u043f\u043e\u0442\u043e\u043a\u0438 \u0444\u043e\u043d\u043e\u0432\u044b\u0435\u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432\u043e\u0442\u0447\u0435\u0442\u043e\u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a\u0434\u0430\u043d\u043d\u044b\u0445\u0444\u043e\u0440\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043e\u0431\u0449\u0438\u0445\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a\u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445\u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a\u043e\u0442\u0447\u0435\u0442\u043e\u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a ",
+class:"web\u0446\u0432\u0435\u0442\u0430 windows\u0446\u0432\u0435\u0442\u0430 windows\u0448\u0440\u0438\u0444\u0442\u044b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0440\u0430\u043c\u043a\u0438\u0441\u0442\u0438\u043b\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0446\u0432\u0435\u0442\u0430\u0441\u0442\u0438\u043b\u044f \u0448\u0440\u0438\u0444\u0442\u044b\u0441\u0442\u0438\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435\u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u0434\u0430\u043d\u043d\u044b\u0445\u0444\u043e\u0440\u043c\u044b\u0432\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0430\u0432\u0442\u043e\u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044f\u0432\u0444\u043e\u0440\u043c\u0435 \u0430\u0432\u0442\u043e\u0440\u0430\u0437\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435\u0441\u0435\u0440\u0438\u0439 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432\u0438\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0432\u044b\u0441\u043e\u0442\u043e\u0439\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0430\u044f\u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0430\u0444\u043e\u0440\u043c\u044b \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432\u0438\u0434\u0433\u0440\u0443\u043f\u043f\u044b\u0444\u043e\u0440\u043c\u044b \u0432\u0438\u0434\u0434\u0435\u043a\u043e\u0440\u0430\u0446\u0438\u0438\u0444\u043e\u0440\u043c\u044b \u0432\u0438\u0434\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0444\u043e\u0440\u043c\u044b \u0432\u0438\u0434\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0438\u0434\u043a\u043d\u043e\u043f\u043a\u0438\u0444\u043e\u0440\u043c\u044b \u0432\u0438\u0434\u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044f \u0432\u0438\u0434\u043f\u043e\u0434\u043f\u0438\u0441\u0435\u0439\u043a\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435 \u0432\u0438\u0434\u043f\u043e\u043b\u044f\u0444\u043e\u0440\u043c\u044b \u0432\u0438\u0434\u0444\u043b\u0430\u0436\u043a\u0430 \u0432\u043b\u0438\u044f\u043d\u0438\u0435\u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043d\u0430\u043f\u0443\u0437\u044b\u0440\u0435\u043a\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0435\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0435\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0430\u043a\u043e\u043b\u043e\u043d\u043e\u043a \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0430\u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u043d\u044b\u0445\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432\u0444\u043e\u0440\u043c\u044b \u0433\u0440\u0443\u043f\u043f\u044b\u0438\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439\u0440\u0435\u0436\u0438\u043c\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u043c\u0435\u0436\u0434\u0443\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438\u0444\u043e\u0440\u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0432\u044b\u0432\u043e\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043f\u043e\u043b\u043e\u0441\u044b\u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0435\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0442\u043e\u0447\u043a\u0438\u0431\u0438\u0440\u0436\u0435\u0432\u043e\u0439\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0438\u0441\u0442\u043e\u0440\u0438\u044f\u0432\u044b\u0431\u043e\u0440\u0430\u043f\u0440\u0438\u0432\u0432\u043e\u0434\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u043e\u0441\u0438\u0442\u043e\u0447\u0435\u043a\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043f\u0443\u0437\u044b\u0440\u044c\u043a\u0430\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f\u0433\u0440\u0443\u043f\u043f\u044b\u043a\u043e\u043c\u0430\u043d\u0434 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0441\u0435\u0440\u0438\u0439 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0434\u0435\u0440\u0435\u0432\u0430 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0441\u043f\u0438\u0441\u043a\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u0442\u0435\u043a\u0441\u0442\u0430\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f\u0434\u0435\u043d\u0434\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f\u043c\u0435\u0442\u043e\u043a\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f\u043c\u0435\u0442\u043e\u043a\u0441\u0432\u043e\u0434\u043d\u043e\u0439\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0444\u043e\u0440\u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0432\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0432\u043b\u0435\u0433\u0435\u043d\u0434\u0435\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0433\u0440\u0443\u043f\u043f\u044b\u043a\u043d\u043e\u043f\u043e\u043a \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0448\u043a\u0430\u043b\u044b\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u0441\u0432\u043e\u0434\u043d\u043e\u0439\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0438\u0437\u043c\u0435\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b\u0433\u0430\u043d\u0442\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043a\u043d\u043e\u043f\u043a\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043a\u043d\u043e\u043f\u043a\u0438\u0432\u044b\u0431\u043e\u0440\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0439\u0444\u043e\u0440\u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043e\u0431\u044b\u0447\u043d\u043e\u0439\u0433\u0440\u0443\u043f\u043f\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u043f\u0443\u0437\u044b\u0440\u044c\u043a\u043e\u0432\u043e\u0439\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043f\u0430\u043d\u0435\u043b\u0438\u043f\u043e\u0438\u0441\u043a\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f\u043f\u0440\u0438\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438\u043f\u043e\u043b\u043e\u0441\u044b\u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0444\u043e\u0440\u043c\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0442\u0435\u043a\u0441\u0442\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b\u0433\u0430\u043d\u0442\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043e\u0431\u044b\u0447\u043d\u043e\u0439\u0433\u0440\u0443\u043f\u043f\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0444\u0438\u0433\u0443\u0440\u044b\u043a\u043d\u043e\u043f\u043a\u0438 \u043f\u0430\u043b\u0438\u0442\u0440\u0430\u0446\u0432\u0435\u0442\u043e\u0432\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043e\u0431\u044b\u0447\u043d\u043e\u0439\u0433\u0440\u0443\u043f\u043f\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430\u0434\u0435\u043d\u0434\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b\u0433\u0430\u043d\u0442\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430\u0441\u0432\u043e\u0434\u043d\u043e\u0439\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e\u0438\u0441\u043a\u0432\u0442\u0430\u0431\u043b\u0438\u0446\u0435\u043f\u0440\u0438\u0432\u0432\u043e\u0434\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0444\u043e\u0440\u043c\u044b \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438\u043a\u043d\u043e\u043f\u043a\u0438\u0444\u043e\u0440\u043c\u044b \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439\u043f\u0430\u043d\u0435\u043b\u0438\u0444\u043e\u0440\u043c\u044b \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439\u043f\u0430\u043d\u0435\u043b\u0438\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0444\u043e\u0440\u043c\u044b \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043e\u043f\u043e\u0440\u043d\u043e\u0439\u0442\u043e\u0447\u043a\u0438\u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0435\u0439\u043a\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0435\u0439\u0448\u043a\u0430\u043b\u044b\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u0438\u0437\u043c\u0435\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0441\u0442\u0440\u043e\u043a\u0438\u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0442\u0435\u043a\u0441\u0442\u0430\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439\u043b\u0438\u043d\u0438\u0438 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043f\u043e\u0438\u0441\u043a\u043e\u043c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0448\u043a\u0430\u043b\u044b\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043e\u0440\u044f\u0434\u043e\u043a\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0442\u043e\u0447\u0435\u043a\u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439\u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e\u0440\u044f\u0434\u043e\u043a\u0441\u0435\u0440\u0438\u0439\u0432\u043b\u0435\u0433\u0435\u043d\u0434\u0435\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0440\u0430\u0437\u043c\u0435\u0440\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0448\u043a\u0430\u043b\u044b\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u043d\u0438\u0435\u043f\u043e\u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b\u0433\u0430\u043d\u0442\u0430 \u0440\u0435\u0436\u0438\u043c\u0430\u0432\u0442\u043e\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0432\u0432\u043e\u0434\u0430\u0441\u0442\u0440\u043e\u043a\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0440\u0435\u0436\u0438\u043c\u0432\u044b\u0431\u043e\u0440\u0430\u043d\u0435\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u0434\u0430\u0442\u044b \u0440\u0435\u0436\u0438\u043c\u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u0441\u0442\u0440\u043e\u043a\u0438\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0440\u0435\u0436\u0438\u043c\u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0440\u0435\u0436\u0438\u043c\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0440\u0435\u0436\u0438\u043c\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0433\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u0434\u0438\u0430\u043b\u043e\u0433\u0430\u043f\u0435\u0447\u0430\u0442\u0438 \u0440\u0435\u0436\u0438\u043c\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0440\u0435\u0436\u0438\u043c\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0440\u0435\u0436\u0438\u043c\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e\u043e\u043a\u043d\u0430\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f\u043e\u043a\u043d\u0430\u0444\u043e\u0440\u043c\u044b \u0440\u0435\u0436\u0438\u043c\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0440\u0435\u0436\u0438\u043c\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u0441\u0435\u0440\u0438\u0438 \u0440\u0435\u0436\u0438\u043c\u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438\u0441\u0435\u0442\u043a\u0438\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0440\u0435\u0436\u0438\u043c\u043f\u043e\u043b\u0443\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0440\u0435\u0436\u0438\u043c\u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0440\u0435\u0436\u0438\u043c\u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f\u043d\u0430\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0440\u0435\u0436\u0438\u043c\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0440\u0435\u0436\u0438\u043c\u0441\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u044f\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0440\u0435\u0436\u0438\u043c\u0441\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u044f\u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0440\u0435\u0436\u0438\u043c\u0441\u043f\u0438\u0441\u043a\u0430\u0437\u0430\u0434\u0430\u0447 \u0441\u043a\u0432\u043e\u0437\u043d\u043e\u0435\u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u0434\u0430\u043d\u043d\u044b\u0445\u0444\u043e\u0440\u043c\u044b\u0432\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u0442\u0435\u043a\u0441\u0442\u0430\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0448\u043a\u0430\u043b\u044b\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u044e\u0449\u0435\u0433\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f\u0433\u0440\u0443\u043f\u043f\u0430\u043a\u043e\u043c\u0430\u043d\u0434 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435\u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u044f\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441\u0442\u0438\u043b\u044c\u0441\u0442\u0440\u0435\u043b\u043a\u0438 \u0442\u0438\u043f\u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u0438\u043b\u0438\u043d\u0438\u0438\u0442\u0440\u0435\u043d\u0434\u0430\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0442\u0438\u043f\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0442\u0438\u043f\u0435\u0434\u0438\u043d\u0438\u0446\u044b\u0448\u043a\u0430\u043b\u044b\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0442\u0438\u043f\u0438\u043c\u043f\u043e\u0440\u0442\u0430\u0441\u0435\u0440\u0438\u0439\u0441\u043b\u043e\u044f\u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0442\u0438\u043f\u043b\u0438\u043d\u0438\u0438\u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0442\u0438\u043f\u043b\u0438\u043d\u0438\u0438\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0442\u0438\u043f\u043c\u0430\u0440\u043a\u0435\u0440\u0430\u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0442\u0438\u043f\u043c\u0430\u0440\u043a\u0435\u0440\u0430\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0442\u0438\u043f\u043e\u0431\u043b\u0430\u0441\u0442\u0438\u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0442\u0438\u043f\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0441\u0435\u0440\u0438\u0438\u0441\u043b\u043e\u044f\u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0442\u0438\u043f\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0442\u043e\u0447\u0435\u0447\u043d\u043e\u0433\u043e\u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0442\u0438\u043f\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0448\u043a\u0430\u043b\u044b\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043b\u0435\u0433\u0435\u043d\u0434\u044b\u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0442\u0438\u043f\u043f\u043e\u0438\u0441\u043a\u0430\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432\u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0442\u0438\u043f\u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438\u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0442\u0438\u043f\u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f\u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439 \u0442\u0438\u043f\u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f\u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u043e\u0432\u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439 \u0442\u0438\u043f\u0440\u0430\u043c\u043a\u0438\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0441\u0432\u043e\u0434\u043d\u043e\u0439\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0442\u0438\u043f\u0441\u0432\u044f\u0437\u0438\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b\u0433\u0430\u043d\u0442\u0430 \u0442\u0438\u043f\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u043f\u043e\u0441\u0435\u0440\u0438\u044f\u043c\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0442\u0438\u043f\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u0442\u043e\u0447\u0435\u043a\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0442\u0438\u043f\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439\u043b\u0438\u043d\u0438\u0438 \u0442\u0438\u043f\u0441\u0442\u043e\u0440\u043e\u043d\u044b\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0442\u0438\u043f\u0444\u043e\u0440\u043c\u044b\u043e\u0442\u0447\u0435\u0442\u0430 \u0442\u0438\u043f\u0448\u043a\u0430\u043b\u044b\u0440\u0430\u0434\u0430\u0440\u043d\u043e\u0439\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0444\u0430\u043a\u0442\u043e\u0440\u043b\u0438\u043d\u0438\u0438\u0442\u0440\u0435\u043d\u0434\u0430\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0444\u0438\u0433\u0443\u0440\u0430\u043a\u043d\u043e\u043f\u043a\u0438 \u0444\u0438\u0433\u0443\u0440\u044b\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439\u0441\u0445\u0435\u043c\u044b \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u044f\u0432\u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0434\u043d\u044f\u0448\u043a\u0430\u043b\u044b\u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0448\u0438\u0440\u0438\u043d\u0430\u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u043d\u044b\u0445\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432\u0444\u043e\u0440\u043c\u044b \u0432\u0438\u0434\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f\u0431\u0443\u0445\u0433\u0430\u043b\u0442\u0435\u0440\u0438\u0438 \u0432\u0438\u0434\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f\u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u043f\u0435\u0440\u0438\u043e\u0434\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u0432\u0438\u0434\u0441\u0447\u0435\u0442\u0430 \u0432\u0438\u0434\u0442\u043e\u0447\u043a\u0438\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u0431\u0438\u0437\u043d\u0435\u0441\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0430\u0433\u0440\u0435\u0433\u0430\u0442\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0433\u0440\u0443\u043f\u043f\u0438\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0440\u0435\u0436\u0438\u043c\u0430\u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0441\u0440\u0435\u0437\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u0430\u0433\u0440\u0435\u0433\u0430\u0442\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0430\u0432\u0442\u043e\u0432\u0440\u0435\u043c\u044f \u0440\u0435\u0436\u0438\u043c\u0437\u0430\u043f\u0438\u0441\u0438\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0440\u0435\u0436\u0438\u043c\u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0430\u0432\u0442\u043e\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439\u043d\u043e\u043c\u0435\u0440\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0438\u0442\u043e\u0433\u043e\u0432\u043a\u043e\u043b\u043e\u043d\u043e\u043a\u0441\u0432\u043e\u0434\u043d\u043e\u0439\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0438\u0442\u043e\u0433\u043e\u0432\u0441\u0442\u0440\u043e\u043a\u0441\u0432\u043e\u0434\u043d\u043e\u0439\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0442\u0435\u043a\u0441\u0442\u0430\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u0447\u0442\u0435\u043d\u0438\u044f\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u0438\u043f\u0434\u0432\u0443\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0439\u043f\u0435\u0447\u0430\u0442\u0438 \u0442\u0438\u043f\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u043e\u0431\u043b\u0430\u0441\u0442\u0438\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u0438\u043f\u043a\u0443\u0440\u0441\u043e\u0440\u043e\u0432\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u0438\u043f\u043b\u0438\u043d\u0438\u0438\u0440\u0438\u0441\u0443\u043d\u043a\u0430\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u0438\u043f\u043b\u0438\u043d\u0438\u0438\u044f\u0447\u0435\u0439\u043a\u0438\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u0438\u043f\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u0438\u043f\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u0438\u043f\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043b\u0438\u043d\u0438\u0439\u0441\u0432\u043e\u0434\u043d\u043e\u0439\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0442\u0438\u043f\u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f\u0442\u0435\u043a\u0441\u0442\u0430\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u0438\u043f\u0440\u0438\u0441\u0443\u043d\u043a\u0430\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u0438\u043f\u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u0438\u043f\u0443\u0437\u043e\u0440\u0430\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u0438\u043f\u0444\u0430\u0439\u043b\u0430\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u043f\u0435\u0447\u0430\u0442\u0438 \u0447\u0435\u0440\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u0438\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0442\u0438\u043f\u0444\u0430\u0439\u043b\u0430\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043e\u0431\u0445\u043e\u0434\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0442\u0438\u043f\u0437\u0430\u043f\u0438\u0441\u0438\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432\u0438\u0434\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438\u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044f\u043e\u0442\u0447\u0435\u0442\u0430 \u0442\u0438\u043f\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0442\u0438\u043f\u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f\u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044f\u043e\u0442\u0447\u0435\u0442\u0430 \u0442\u0438\u043f\u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f\u0438\u0442\u043e\u0433\u043e\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u043a\u0444\u0430\u0439\u043b\u0443 \u0440\u0435\u0436\u0438\u043c\u0434\u0438\u0430\u043b\u043e\u0433\u0430\u0432\u044b\u0431\u043e\u0440\u0430\u0444\u0430\u0439\u043b\u0430 \u0440\u0435\u0436\u0438\u043c\u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f\u0444\u0430\u0439\u043b\u0430 \u0442\u0438\u043f\u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f\u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044f\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432\u0438\u0434\u0434\u0430\u043d\u043d\u044b\u0445\u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043c\u0435\u0442\u043e\u0434\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0438\u043f\u0435\u0434\u0438\u043d\u0438\u0446\u044b\u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430\u0432\u0440\u0435\u043c\u0435\u043d\u0438\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u0442\u0430\u0431\u043b\u0438\u0446\u044b\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0445\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u043f\u043e\u0438\u0441\u043a\u0430\u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0446\u0438\u0439 \u0442\u0438\u043f\u043a\u043e\u043b\u043e\u043d\u043a\u0438\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u0434\u0435\u0440\u0435\u0432\u043e\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0442\u0438\u043f\u043a\u043e\u043b\u043e\u043d\u043a\u0438\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0438\u043f\u043a\u043e\u043b\u043e\u043d\u043a\u0438\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u043e\u0431\u0449\u0430\u044f\u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0442\u0438\u043f\u043a\u043e\u043b\u043e\u043d\u043a\u0438\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u043f\u043e\u0438\u0441\u043a\u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0446\u0438\u0439 \u0442\u0438\u043f\u043a\u043e\u043b\u043e\u043d\u043a\u0438\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u043f\u043e\u0438\u0441\u043a\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439 \u0442\u0438\u043f\u043a\u043e\u043b\u043e\u043d\u043a\u0438\u043c\u043e\u0434\u0435\u043b\u0438\u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430 \u0442\u0438\u043f\u043c\u0435\u0440\u044b\u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0442\u0441\u0435\u0447\u0435\u043d\u0438\u044f\u043f\u0440\u0430\u0432\u0438\u043b\u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0446\u0438\u0438 \u0442\u0438\u043f\u043f\u043e\u043b\u044f\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0430\u0446\u0438\u0438\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u043d\u0438\u044f\u043f\u0440\u0430\u0432\u0438\u043b\u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0446\u0438\u0438\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u043d\u0438\u044f\u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f\u0434\u0435\u0440\u0435\u0432\u0430\u0440\u0435\u0448\u0435\u043d\u0438\u0439 ws\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442xpathxs \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0437\u0430\u043f\u0438\u0441\u0438\u0434\u0430\u0442\u044bjson \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e\u0442\u0438\u043f\u0430xs \u0432\u0438\u0434\u0433\u0440\u0443\u043f\u043f\u044b\u043c\u043e\u0434\u0435\u043b\u0438xs \u0432\u0438\u0434\u0444\u0430\u0441\u0435\u0442\u0430xdto \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044fdom \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e\u0442\u0438\u043f\u0430xs \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u0441\u043e\u0441\u0442\u0430\u0432\u043d\u043e\u0433\u043e\u0442\u0438\u043f\u0430xs \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u0441\u0445\u0435\u043c\u044bxs \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043d\u044b\u0435\u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438xs \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u0433\u0440\u0443\u043f\u043f\u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438xs \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430xs \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438xs \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0438\u043c\u0435\u043dxs \u043c\u0435\u0442\u043e\u0434\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044fxs \u043c\u043e\u0434\u0435\u043b\u044c\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043exs \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0442\u0438\u043f\u0430xml \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435\u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438xs \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u043f\u0440\u043e\u0431\u0435\u043b\u044c\u043d\u044b\u0445\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432xs \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043exs \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044fxs \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b\u043e\u0442\u0431\u043e\u0440\u0430\u0443\u0437\u043b\u043e\u0432dom \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0441\u0442\u0440\u043e\u043ajson \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0432\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435dom \u043f\u0440\u043e\u0431\u0435\u043b\u044c\u043d\u044b\u0435\u0441\u0438\u043c\u0432\u043e\u043b\u044bxml \u0442\u0438\u043f\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430xml \u0442\u0438\u043f\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044fjson \u0442\u0438\u043f\u043a\u0430\u043d\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043exml \u0442\u0438\u043f\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044bxs \u0442\u0438\u043f\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438xml \u0442\u0438\u043f\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430domxpath \u0442\u0438\u043f\u0443\u0437\u043b\u0430dom \u0442\u0438\u043f\u0443\u0437\u043b\u0430xml \u0444\u043e\u0440\u043c\u0430xml \u0444\u043e\u0440\u043c\u0430\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044fxs \u0444\u043e\u0440\u043c\u0430\u0442\u0434\u0430\u0442\u044bjson \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432json \u0432\u0438\u0434\u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438\u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0438\u0442\u043e\u0433\u043e\u0432\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043f\u043e\u043b\u0435\u0439\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043f\u043e\u043b\u044f\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u043e\u0432\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0431\u0443\u0445\u0433\u0430\u043b\u0442\u0435\u0440\u0441\u043a\u043e\u0433\u043e\u043e\u0441\u0442\u0430\u0442\u043a\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0432\u044b\u0432\u043e\u0434\u0430\u0442\u0435\u043a\u0441\u0442\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0433\u0440\u0443\u043f\u043f\u044b\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432\u043e\u0442\u0431\u043e\u0440\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u043f\u0435\u0440\u0438\u043e\u0434\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u043f\u043e\u043b\u0435\u0439\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043c\u0430\u043a\u0435\u0442\u0430\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043c\u0430\u043a\u0435\u0442\u0430\u043e\u0431\u043b\u0430\u0441\u0442\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0441\u0442\u0430\u0442\u043a\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043f\u0435\u0440\u0438\u043e\u0434\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f\u0442\u0435\u043a\u0441\u0442\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0441\u0432\u044f\u0437\u0438\u043d\u0430\u0431\u043e\u0440\u043e\u0432\u0434\u0430\u043d\u043d\u044b\u0445\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043b\u0435\u0433\u0435\u043d\u0434\u044b\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043e\u0442\u0431\u043e\u0440\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u0436\u0438\u043c\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u0436\u0438\u043c\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u0436\u0438\u043c\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0430\u0432\u0442\u043e\u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432\u0432\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0444\u0438\u043a\u0441\u0430\u0446\u0438\u044f\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e\u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u044c\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u0442\u0435\u043a\u0441\u0442\u0430\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e\u0432\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u043d\u0435ascii\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0442\u0435\u043a\u0441\u0442\u0430\u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043f\u043e\u0447\u0442\u044b \u0441\u0442\u0430\u0442\u0443\u0441\u0440\u0430\u0437\u0431\u043e\u0440\u0430\u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438\u0437\u0430\u043f\u0438\u0441\u0438\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438\u0437\u0430\u043f\u0438\u0441\u0438\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0443\u0440\u043e\u0432\u0435\u043d\u044c\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0440\u0435\u0436\u0438\u043c\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0440\u0435\u0436\u0438\u043c\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0442\u0438\u043f\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430\u0438\u043c\u0435\u043d\u0444\u0430\u0439\u043b\u043e\u0432\u0432zip\u0444\u0430\u0439\u043b\u0435 \u043c\u0435\u0442\u043e\u0434\u0441\u0436\u0430\u0442\u0438\u044fzip \u043c\u0435\u0442\u043e\u0434\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044fzip \u0440\u0435\u0436\u0438\u043c\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u043f\u0443\u0442\u0435\u0439\u0444\u0430\u0439\u043b\u043e\u0432zip \u0440\u0435\u0436\u0438\u043c\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438\u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432zip \u0440\u0435\u0436\u0438\u043c\u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f\u043f\u0443\u0442\u0435\u0439zip \u0443\u0440\u043e\u0432\u0435\u043d\u044c\u0441\u0436\u0430\u0442\u0438\u044fzip \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0435\u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430\u043a\u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0432\u043f\u043e\u0442\u043e\u043a\u0435 \u043f\u043e\u0440\u044f\u0434\u043e\u043a\u0431\u0430\u0439\u0442\u043e\u0432 \u0440\u0435\u0436\u0438\u043c\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u0436\u0438\u043c\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u043e\u0439\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445\u043f\u043e\u043a\u0443\u043f\u043e\u043a \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u0444\u043e\u043d\u043e\u0432\u043e\u0433\u043e\u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0442\u0438\u043f\u043f\u043e\u0434\u043f\u0438\u0441\u0447\u0438\u043a\u0430\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u0433\u043e\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044fftp \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u043e\u0440\u044f\u0434\u043a\u0430\u0441\u0445\u0435\u043c\u044b\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0442\u0438\u043f\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u043f\u0435\u0440\u0438\u043e\u0434\u0430\u043c\u0438\u0441\u0445\u0435\u043c\u044b\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0442\u0438\u043f\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439\u0442\u043e\u0447\u043a\u0438\u0441\u0445\u0435\u043c\u044b\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0442\u0438\u043f\u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u0441\u0445\u0435\u043c\u044b\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0442\u0438\u043f\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439\u0442\u0430\u0431\u043b\u0438\u0446\u044b\u0441\u0445\u0435\u043c\u044b\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0442\u0438\u043f\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u0441\u0445\u0435\u043c\u044b\u0437\u0430\u043f\u0440\u043e\u0441\u0430 http\u043c\u0435\u0442\u043e\u0434 \u0430\u0432\u0442\u043e\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043e\u0431\u0449\u0435\u0433\u043e\u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u0430 \u0430\u0432\u0442\u043e\u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043d\u043e\u043c\u0435\u0440\u0430\u0437\u0430\u0434\u0430\u0447\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e\u044f\u0437\u044b\u043a\u0430 \u0432\u0438\u0434\u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0432\u0438\u0434\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0442\u0430\u0431\u043b\u0438\u0446\u044b\u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u044c\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0439\u043f\u0440\u0438\u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0431\u0430\u0437\u044b\u043f\u043b\u0430\u043d\u0430\u0432\u0438\u0434\u043e\u0432\u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e\u0432\u044b\u0431\u043e\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043e\u0431\u0449\u0435\u0433\u043e\u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043f\u043e\u0434\u0447\u0438\u043d\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e\u043f\u043e\u0438\u0441\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0445\u0434\u0430\u043d\u043d\u044b\u0445\u043e\u0431\u0449\u0435\u0433\u043e\u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u0430 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445\u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0435\u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u0432\u0438\u0434\u0430\u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u0432\u0438\u0434\u0430\u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u0437\u0430\u0434\u0430\u0447\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u043b\u0430\u043d\u0430\u043e\u0431\u043c\u0435\u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u0441\u0447\u0435\u0442\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435\u0433\u0440\u0430\u043d\u0438\u0446\u044b\u043f\u0440\u0438\u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u043d\u043e\u043c\u0435\u0440\u0430\u0431\u0438\u0437\u043d\u0435\u0441\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u043d\u043e\u043c\u0435\u0440\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u043d\u043e\u0441\u0442\u044c\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0445\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439\u043f\u043e\u0438\u0441\u043a\u043f\u0440\u0438\u0432\u0432\u043e\u0434\u0435\u043f\u043e\u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u043d\u043e\u0441\u0442\u044c\u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438\u043e\u0431\u0449\u0435\u0433\u043e\u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u0434\u0430\u043d\u043d\u044b\u0445\u043e\u0431\u0449\u0435\u0433\u043e\u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438\u043e\u0431\u0449\u0435\u0433\u043e\u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u0430 \u0440\u0435\u0436\u0438\u043c\u0430\u0432\u0442\u043e\u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0438\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0440\u0435\u0436\u0438\u043c\u0437\u0430\u043f\u0438\u0441\u0438\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0440\u0435\u0436\u0438\u043c\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0436\u0438\u043c\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0445\u0432\u044b\u0437\u043e\u0432\u043e\u0432\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b\u0438\u0432\u043d\u0435\u0448\u043d\u0438\u0445\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0440\u0435\u0436\u0438\u043c\u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0433\u043e\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u0441\u0435\u0430\u043d\u0441\u043e\u0432 \u0440\u0435\u0436\u0438\u043c\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f\u0434\u0430\u043d\u043d\u044b\u0445\u0432\u044b\u0431\u043e\u0440\u0430\u043f\u0440\u0438\u0432\u0432\u043e\u0434\u0435\u043f\u043e\u0441\u0442\u0440\u043e\u043a\u0435 \u0440\u0435\u0436\u0438\u043c\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0440\u0435\u0436\u0438\u043c\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0440\u0435\u0436\u0438\u043c\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u043e\u0439\u0434\u0430\u043d\u043d\u044b\u0445\u043f\u043e\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0435\u0440\u0438\u0438\u043a\u043e\u0434\u043e\u0432\u043f\u043b\u0430\u043d\u0430\u0432\u0438\u0434\u043e\u0432\u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a \u0441\u0435\u0440\u0438\u0438\u043a\u043e\u0434\u043e\u0432\u043f\u043b\u0430\u043d\u0430\u0441\u0447\u0435\u0442\u043e\u0432 \u0441\u0435\u0440\u0438\u0438\u043a\u043e\u0434\u043e\u0432\u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043f\u0440\u0438\u0432\u0432\u043e\u0434\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u043f\u043e\u0438\u0441\u043a\u0430\u0441\u0442\u0440\u043e\u043a\u0438\u043f\u0440\u0438\u0432\u0432\u043e\u0434\u0435\u043f\u043e\u0441\u0442\u0440\u043e\u043a\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0438\u043f\u0434\u0430\u043d\u043d\u044b\u0445\u0442\u0430\u0431\u043b\u0438\u0446\u044b\u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043a\u043e\u0434\u0430\u043f\u043b\u0430\u043d\u0430\u0432\u0438\u0434\u043e\u0432\u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u0442\u0438\u043f\u043a\u043e\u0434\u0430\u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430 \u0442\u0438\u043f\u043c\u0430\u043a\u0435\u0442\u0430 \u0442\u0438\u043f\u043d\u043e\u043c\u0435\u0440\u0430\u0431\u0438\u0437\u043d\u0435\u0441\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0442\u0438\u043f\u043d\u043e\u043c\u0435\u0440\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0442\u0438\u043f\u043d\u043e\u043c\u0435\u0440\u0430\u0437\u0430\u0434\u0430\u0447\u0438 \u0442\u0438\u043f\u0444\u043e\u0440\u043c\u044b \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0439 \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u044c\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b\u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430\u0444\u043e\u0440\u043c\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e\u0448\u0440\u0438\u0444\u0442\u0430\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e\u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439\u0434\u0430\u0442\u044b\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0438\u0434\u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u0438\u0434\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0432\u0438\u0434\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e\u043f\u043e\u0438\u0441\u043a\u0430 \u0432\u0438\u0434\u0440\u0430\u043c\u043a\u0438 \u0432\u0438\u0434\u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0446\u0432\u0435\u0442\u0430 \u0432\u0438\u0434\u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0433\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0448\u0440\u0438\u0444\u0442\u0430 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0430\u044f\u0434\u043b\u0438\u043d\u0430 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439\u0437\u043d\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435byteordermark \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e\u043f\u043e\u0438\u0441\u043a\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0432\u0438\u0448\u0430 \u043a\u043e\u0434\u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430\u0434\u0438\u0430\u043b\u043e\u0433\u0430 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430xbase \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430\u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u043e\u0438\u0441\u043a\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445\u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043f\u0440\u0438\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043f\u0430\u043d\u0435\u043b\u0438\u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0434\u0438\u0430\u043b\u043e\u0433\u0430\u0432\u043e\u043f\u0440\u043e\u0441 \u0440\u0435\u0436\u0438\u043c\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f\u0444\u043e\u0440\u043c\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e\u043f\u043e\u0438\u0441\u043a\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438\u0431\u0430\u0437\u044b\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u0432\u044b\u0431\u043e\u0440\u0430\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430windows \u0441\u043f\u043e\u0441\u043e\u0431\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0432\u043d\u0435\u0448\u043d\u0435\u0439\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0442\u0438\u043f\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0442\u0438\u043f\u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f\u043a\u043b\u0430\u0432\u0438\u0448\u0438enter \u0442\u0438\u043f\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438\u043e\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438\u0431\u0430\u0437\u044b\u0434\u0430\u043d\u043d\u044b\u0445 \u0443\u0440\u043e\u0432\u0435\u043d\u044c\u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438\u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u0445\u0435\u0448\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0447\u0430\u0441\u0442\u0438\u0434\u0430\u0442\u044b",
+type:"com\u043e\u0431\u044a\u0435\u043a\u0442 ftp\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 http\u0437\u0430\u043f\u0440\u043e\u0441 http\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0442\u0432\u0435\u0442 http\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 ws\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f ws\u043f\u0440\u043e\u043a\u0441\u0438 xbase \u0430\u043d\u0430\u043b\u0438\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044fxs \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u0444\u0435\u0440\u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445\u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435xs \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445\u0447\u0438\u0441\u0435\u043b \u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0430\u044f\u0441\u0445\u0435\u043c\u0430 \u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0430\u044f\u0441\u0445\u0435\u043c\u0430 \u0433\u0440\u0443\u043f\u043f\u0430\u043c\u043e\u0434\u0435\u043b\u0438xs \u0434\u0430\u043d\u043d\u044b\u0435\u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0435\u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u0435\u043d\u0434\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430\u0433\u0430\u043d\u0442\u0430 \u0434\u0438\u0430\u043b\u043e\u0433\u0432\u044b\u0431\u043e\u0440\u0430\u0444\u0430\u0439\u043b\u0430 \u0434\u0438\u0430\u043b\u043e\u0433\u0432\u044b\u0431\u043e\u0440\u0430\u0446\u0432\u0435\u0442\u0430 \u0434\u0438\u0430\u043b\u043e\u0433\u0432\u044b\u0431\u043e\u0440\u0430\u0448\u0440\u0438\u0444\u0442\u0430 \u0434\u0438\u0430\u043b\u043e\u0433\u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f\u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442\u043d\u043e\u0433\u043e\u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0434\u0438\u0430\u043b\u043e\u0433\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e\u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442dom \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442html \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044fxs \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0435\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u044cdom \u0437\u0430\u043f\u0438\u0441\u044cfastinfoset \u0437\u0430\u043f\u0438\u0441\u044chtml \u0437\u0430\u043f\u0438\u0441\u044cjson \u0437\u0430\u043f\u0438\u0441\u044cxml \u0437\u0430\u043f\u0438\u0441\u044czip\u0444\u0430\u0439\u043b\u0430 \u0437\u0430\u043f\u0438\u0441\u044c\u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u044c\u0442\u0435\u043a\u0441\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u044c\u0443\u0437\u043b\u043e\u0432dom \u0437\u0430\u043f\u0440\u043e\u0441 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u0435\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435openssl \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043f\u043e\u043b\u0435\u0439\u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435\u0442\u0435\u043a\u0441\u0442\u0430 \u0438\u043c\u043f\u043e\u0440\u0442xs \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043f\u043e\u0447\u0442\u0430 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0435\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439\u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043f\u0440\u043e\u043a\u0441\u0438 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u0434\u043b\u044f\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044fxs \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430xs \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u0443\u0437\u043b\u043e\u0432dom \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u043a\u0432\u0430\u043b\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b\u0434\u0430\u0442\u044b \u043a\u0432\u0430\u043b\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b\u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445\u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u0432\u0430\u043b\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b\u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u0432\u0430\u043b\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b\u0447\u0438\u0441\u043b\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a\u043c\u0430\u043a\u0435\u0442\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043c\u0430\u043a\u0435\u0442\u0430\u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0444\u043e\u0440\u043c\u0430\u0442\u043d\u043e\u0439\u0441\u0442\u0440\u043e\u043a\u0438 \u043b\u0438\u043d\u0438\u044f \u043c\u0430\u043a\u0435\u0442\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0430\u043a\u0435\u0442\u043e\u0431\u043b\u0430\u0441\u0442\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0430\u043a\u0435\u0442\u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0430\u0441\u043a\u0430xs \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u043d\u0430\u0431\u043e\u0440\u0441\u0445\u0435\u043cxml \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438json \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u0445\u043e\u0434\u0434\u0435\u0440\u0435\u0432\u0430dom \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430xs \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u043d\u043e\u0442\u0430\u0446\u0438\u0438xs \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430xs \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0434\u043e\u0441\u0442\u0443\u043f\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043e\u0442\u043a\u0430\u0437\u0432\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u0436\u0443\u0440\u043d\u0430\u043b\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438\u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0438\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0433\u043e\u0444\u0430\u0439\u043b\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u0442\u0438\u043f\u043e\u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u0433\u0440\u0443\u043f\u043f\u044b\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432xs \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u0433\u0440\u0443\u043f\u043f\u044b\u043c\u043e\u0434\u0435\u043b\u0438xs \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438xs \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e\u0442\u0438\u043f\u0430xs \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u0441\u043e\u0441\u0442\u0430\u0432\u043d\u043e\u0433\u043e\u0442\u0438\u043f\u0430xs \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u0442\u0438\u043f\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430dom \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044fxpathxs \u043e\u0442\u0431\u043e\u0440\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0445\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0432\u044b\u0431\u043e\u0440\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b\u0437\u0430\u043f\u0438\u0441\u0438json \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b\u0437\u0430\u043f\u0438\u0441\u0438xml \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b\u0447\u0442\u0435\u043d\u0438\u044fxml \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435xs \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043f\u043e\u043b\u0435\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044cdom \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u043e\u0442\u0447\u0435\u0442\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u043e\u0442\u0447\u0435\u0442\u0430\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u0441\u0445\u0435\u043cxml \u043f\u043e\u0442\u043e\u043a \u043f\u043e\u0442\u043e\u043a\u0432\u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u0447\u0442\u0430 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0435\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435xsl \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043a\u043a\u0430\u043d\u043e\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443xml \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0432\u044b\u0432\u043e\u0434\u0430\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445\u0432\u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0432\u044b\u0432\u043e\u0434\u0430\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445\u0432\u0442\u0430\u0431\u043b\u0438\u0447\u043d\u044b\u0439\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0438\u043c\u0435\u043ddom \u0440\u0430\u043c\u043a\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442\u043d\u043e\u0433\u043e\u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0435\u0438\u043c\u044fxml \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0447\u0442\u0435\u043d\u0438\u044f\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0432\u043e\u0434\u043d\u0430\u044f\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u0441\u0432\u044f\u0437\u044c\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u0432\u044f\u0437\u044c\u043f\u043e\u0442\u0438\u043f\u0443 \u0441\u0432\u044f\u0437\u044c\u043f\u043e\u0442\u0438\u043f\u0443\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440xdto \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043a\u043b\u0438\u0435\u043d\u0442\u0430windows \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043a\u043b\u0438\u0435\u043d\u0442\u0430\u0444\u0430\u0439\u043b \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b\u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u044e\u0449\u0438\u0445\u0446\u0435\u043d\u0442\u0440\u043e\u0432windows \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b\u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u044e\u0449\u0438\u0445\u0446\u0435\u043d\u0442\u0440\u043e\u0432\u0444\u0430\u0439\u043b \u0441\u0436\u0430\u0442\u0438\u0435\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435\u043a\u043b\u0430\u0432\u0438\u0448 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f\u0434\u0430\u0442\u0430\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439\u043f\u0435\u0440\u0438\u043e\u0434 \u0441\u0445\u0435\u043c\u0430xml \u0441\u0445\u0435\u043c\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0447\u043d\u044b\u0439\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0435\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0434\u0430\u043d\u043d\u044b\u0445xml \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439\u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0444\u0430\u0431\u0440\u0438\u043a\u0430xdto \u0444\u0430\u0439\u043b \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0439\u043f\u043e\u0442\u043e\u043a \u0444\u0430\u0441\u0435\u0442\u0434\u043b\u0438\u043d\u044bxs \u0444\u0430\u0441\u0435\u0442\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430\u0440\u0430\u0437\u0440\u044f\u0434\u043e\u0432\u0434\u0440\u043e\u0431\u043d\u043e\u0439\u0447\u0430\u0441\u0442\u0438xs \u0444\u0430\u0441\u0435\u0442\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e\u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0433\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044fxs \u0444\u0430\u0441\u0435\u0442\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e\u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0433\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044fxs \u0444\u0430\u0441\u0435\u0442\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439\u0434\u043b\u0438\u043d\u044bxs \u0444\u0430\u0441\u0435\u0442\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e\u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0433\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044fxs \u0444\u0430\u0441\u0435\u0442\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e\u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0433\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044fxs \u0444\u0430\u0441\u0435\u0442\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439\u0434\u043b\u0438\u043d\u044bxs \u0444\u0430\u0441\u0435\u0442\u043e\u0431\u0440\u0430\u0437\u0446\u0430xs \u0444\u0430\u0441\u0435\u0442\u043e\u0431\u0449\u0435\u0433\u043e\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430\u0440\u0430\u0437\u0440\u044f\u0434\u043e\u0432xs \u0444\u0430\u0441\u0435\u0442\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044fxs \u0444\u0430\u0441\u0435\u0442\u043f\u0440\u043e\u0431\u0435\u043b\u044c\u043d\u044b\u0445\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432xs \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0437\u043b\u043e\u0432dom \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f\u0441\u0442\u0440\u043e\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442xs \u0445\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u0434\u0430\u043d\u043d\u044b\u0445 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0446\u0432\u0435\u0442 \u0447\u0442\u0435\u043d\u0438\u0435fastinfoset \u0447\u0442\u0435\u043d\u0438\u0435html \u0447\u0442\u0435\u043d\u0438\u0435json \u0447\u0442\u0435\u043d\u0438\u0435xml \u0447\u0442\u0435\u043d\u0438\u0435zip\u0444\u0430\u0439\u043b\u0430 \u0447\u0442\u0435\u043d\u0438\u0435\u0434\u0430\u043d\u043d\u044b\u0445 \u0447\u0442\u0435\u043d\u0438\u0435\u0442\u0435\u043a\u0441\u0442\u0430 \u0447\u0442\u0435\u043d\u0438\u0435\u0443\u0437\u043b\u043e\u0432dom \u0448\u0440\u0438\u0444\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0445 comsafearray \u0434\u0435\u0440\u0435\u0432\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u043f\u0438\u0441\u043e\u043a\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439\u043c\u0430\u0441\u0441\u0438\u0432 ",
+literal:e},contains:[{className:"meta",begin:"#|&",end:"$",keywords:{$pattern:x,
+keyword:n+"\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0438\u0437\u0444\u0430\u0439\u043b\u0430 \u0432\u0435\u0431\u043a\u043b\u0438\u0435\u043d\u0442 \u0432\u043c\u0435\u0441\u0442\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u0435\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043a\u043b\u0438\u0435\u043d\u0442 \u043a\u043e\u043d\u0435\u0446\u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0435\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043a\u043b\u0438\u0435\u043d\u0442 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0435\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430\u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u043d\u0430\u043a\u043b\u0438\u0435\u043d\u0442\u0435\u043d\u0430\u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043d\u0430\u043a\u043b\u0438\u0435\u043d\u0442\u0435\u043d\u0430\u0441\u0435\u0440\u0432\u0435\u0440\u0435\u0431\u0435\u0437\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430\u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043d\u0430\u0441\u0435\u0440\u0432\u0435\u0440\u0435\u0431\u0435\u0437\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u043f\u043e\u0441\u043b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 \u0442\u043e\u043b\u0441\u0442\u044b\u0439\u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0431\u044b\u0447\u043d\u043e\u0435\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0442\u043e\u043b\u0441\u0442\u044b\u0439\u043a\u043b\u0438\u0435\u043d\u0442\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0435\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0442\u043e\u043d\u043a\u0438\u0439\u043a\u043b\u0438\u0435\u043d\u0442 "
+},contains:[m]},{className:"function",variants:[{
+begin:"\u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430|\u0444\u0443\u043d\u043a\u0446\u0438\u044f",
+end:"\\)",
+keywords:"\u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f"
+},{
+begin:"\u043a\u043e\u043d\u0435\u0446\u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b|\u043a\u043e\u043d\u0435\u0446\u0444\u0443\u043d\u043a\u0446\u0438\u0438",
+keywords:"\u043a\u043e\u043d\u0435\u0446\u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u043a\u043e\u043d\u0435\u0446\u0444\u0443\u043d\u043a\u0446\u0438\u0438"
+}],contains:[{begin:"\\(",end:"\\)",endsParent:!0,contains:[{className:"params",
+begin:x,end:",",excludeEnd:!0,endsWithParent:!0,keywords:{$pattern:x,
+keyword:"\u0437\u043d\u0430\u0447",literal:e},contains:[o,t,a]},m]
+},s.inherit(s.TITLE_MODE,{begin:x})]},m,{className:"symbol",begin:"~",end:";|:",
+excludeEnd:!0},o,t,a]}}})();hljs.registerLanguage("1c",s)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/abnf.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/abnf.min.js
new file mode 100644
index 0000000..b7a44af
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/abnf.min.js
@@ -0,0 +1,11 @@
+/*! `abnf` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const a=e.regex,s=e.COMMENT(/;/,/$/)
+;return{name:"Augmented Backus-Naur Form",illegal:/[!@#$^&',?+~`|:]/,
+keywords:["ALPHA","BIT","CHAR","CR","CRLF","CTL","DIGIT","DQUOTE","HEXDIG","HTAB","LF","LWSP","OCTET","SP","VCHAR","WSP"],
+contains:[{scope:"operator",match:/=\/?/},{scope:"attribute",
+match:a.concat(/^[a-zA-Z][a-zA-Z0-9-]*/,/(?=\s*=)/)},s,{scope:"symbol",
+match:/%b[0-1]+(-[0-1]+|(\.[0-1]+)+)?/},{scope:"symbol",
+match:/%d[0-9]+(-[0-9]+|(\.[0-9]+)+)?/},{scope:"symbol",
+match:/%x[0-9A-F]+(-[0-9A-F]+|(\.[0-9A-F]+)+)?/},{scope:"symbol",
+match:/%[si](?=".*")/},e.QUOTE_STRING_MODE,e.NUMBER_MODE]}}})()
+;hljs.registerLanguage("abnf",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/accesslog.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/accesslog.min.js
new file mode 100644
index 0000000..5c52937
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/accesslog.min.js
@@ -0,0 +1,13 @@
+/*! `accesslog` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const n=e.regex,a=["GET","POST","HEAD","PUT","DELETE","CONNECT","OPTIONS","PATCH","TRACE"]
+;return{name:"Apache Access Log",contains:[{className:"number",
+begin:/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?\b/,relevance:5},{
+className:"number",begin:/\b\d+\b/,relevance:0},{className:"string",
+begin:n.concat(/"/,n.either(...a)),end:/"/,keywords:a,illegal:/\n/,relevance:5,
+contains:[{begin:/HTTP\/[12]\.\d'/,relevance:5}]},{className:"string",
+begin:/\[\d[^\]\n]{8,}\]/,illegal:/\n/,relevance:1},{className:"string",
+begin:/\[/,end:/\]/,illegal:/\n/,relevance:0},{className:"string",
+begin:/"Mozilla\/\d\.\d \(/,end:/"/,illegal:/\n/,relevance:3},{
+className:"string",begin:/"/,end:/"/,illegal:/\n/,relevance:0}]}}})()
+;hljs.registerLanguage("accesslog",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/actionscript.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/actionscript.min.js
new file mode 100644
index 0000000..1c8efdc
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/actionscript.min.js
@@ -0,0 +1,17 @@
+/*! `actionscript` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const a=e.regex,t=/[a-zA-Z_$][a-zA-Z0-9_$]*/,n=a.concat(t,a.concat("(\\.",t,")*")),s={
+className:"rest_arg",begin:/[.]{3}/,end:t,relevance:10};return{
+name:"ActionScript",aliases:["as"],keywords:{
+keyword:["as","break","case","catch","class","const","continue","default","delete","do","dynamic","each","else","extends","final","finally","for","function","get","if","implements","import","in","include","instanceof","interface","internal","is","namespace","native","new","override","package","private","protected","public","return","set","static","super","switch","this","throw","try","typeof","use","var","void","while","with"],
+literal:["true","false","null","undefined"]},
+contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{
+match:[/\bpackage/,/\s+/,n],className:{1:"keyword",3:"title.class"}},{
+match:[/\b(?:class|interface|extends|implements)/,/\s+/,t],className:{
+1:"keyword",3:"title.class"}},{className:"meta",beginKeywords:"import include",
+end:/;/,keywords:{keyword:"import include"}},{beginKeywords:"function",
+end:/[{;]/,excludeEnd:!0,illegal:/\S/,contains:[e.inherit(e.TITLE_MODE,{
+className:"title.function"}),{className:"params",begin:/\(/,end:/\)/,
+contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s]
+},{begin:a.concat(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},e.METHOD_GUARD],
+illegal:/#/}}})();hljs.registerLanguage("actionscript",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/ada.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/ada.min.js
new file mode 100644
index 0000000..39c6c6c
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/ada.min.js
@@ -0,0 +1,26 @@
+/*! `ada` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const n="[A-Za-z](_?[A-Za-z0-9.])*",s="[]\\{\\}%#'\"",a=e.COMMENT("--","$"),r={
+begin:"\\s+:\\s+",end:"\\s*(:=|;|\\)|=>|$)",illegal:s,contains:[{
+beginKeywords:"loop for declare others",endsParent:!0},{className:"keyword",
+beginKeywords:"not null constant access function procedure in out aliased exception"
+},{className:"type",begin:n,endsParent:!0,relevance:0}]};return{name:"Ada",
+case_insensitive:!0,keywords:{
+keyword:["abort","else","new","return","abs","elsif","not","reverse","abstract","end","accept","entry","select","access","exception","of","separate","aliased","exit","or","some","all","others","subtype","and","for","out","synchronized","array","function","overriding","at","tagged","generic","package","task","begin","goto","pragma","terminate","body","private","then","if","procedure","type","case","in","protected","constant","interface","is","raise","use","declare","range","delay","limited","record","when","delta","loop","rem","while","digits","renames","with","do","mod","requeue","xor"],
+literal:["True","False"]},contains:[a,{className:"string",begin:/"/,end:/"/,
+contains:[{begin:/""/,relevance:0}]},{className:"string",begin:/'.'/},{
+className:"number",
+begin:"\\b(\\d(_|\\d)*#\\w+(\\.\\w+)?#([eE][-+]?\\d(_|\\d)*)?|\\d(_|\\d)*(\\.\\d(_|\\d)*)?([eE][-+]?\\d(_|\\d)*)?)",
+relevance:0},{className:"symbol",begin:"'"+n},{className:"title",
+begin:"(\\bwith\\s+)?(\\bprivate\\s+)?\\bpackage\\s+(\\bbody\\s+)?",
+end:"(is|$)",keywords:"package body",excludeBegin:!0,excludeEnd:!0,illegal:s},{
+begin:"(\\b(with|overriding)\\s+)?\\b(function|procedure)\\s+",
+end:"(\\bis|\\bwith|\\brenames|\\)\\s*;)",
+keywords:"overriding function procedure with is renames return",returnBegin:!0,
+contains:[a,{className:"title",
+begin:"(\\bwith\\s+)?\\b(function|procedure)\\s+",end:"(\\(|\\s+|$)",
+excludeBegin:!0,excludeEnd:!0,illegal:s},r,{className:"type",
+begin:"\\breturn\\s+",end:"(\\s+|;|$)",keywords:"return",excludeBegin:!0,
+excludeEnd:!0,endsParent:!0,illegal:s}]},{className:"type",
+begin:"\\b(sub)?type\\s+",end:"\\s+",keywords:"type",excludeBegin:!0,illegal:s
+},r]}}})();hljs.registerLanguage("ada",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/angelscript.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/angelscript.min.js
new file mode 100644
index 0000000..d86e6dd
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/angelscript.min.js
@@ -0,0 +1,21 @@
+/*! `angelscript` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n={className:"built_in",
+begin:"\\b(void|bool|int|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|string|ref|array|double|float|auto|dictionary)"
+},a={className:"symbol",begin:"[a-zA-Z0-9_]+@"},i={className:"keyword",
+begin:"<",end:">",contains:[n,a]};return n.contains=[i],a.contains=[i],{
+name:"AngelScript",aliases:["asc"],
+keywords:["for","in|0","break","continue","while","do|0","return","if","else","case","switch","namespace","is","cast","or","and","xor","not","get|0","in","inout|10","out","override","set|0","private","public","const","default|0","final","shared","external","mixin|10","enum","typedef","funcdef","this","super","import","from","interface","abstract|0","try","catch","protected","explicit","property"],
+illegal:"(^using\\s+[A-Za-z0-9_\\.]+;$|\\bfunction\\s*[^\\(])",contains:[{
+className:"string",begin:"'",end:"'",illegal:"\\n",
+contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"string",begin:'"""',
+end:'"""'},{className:"string",begin:'"',end:'"',illegal:"\\n",
+contains:[e.BACKSLASH_ESCAPE],relevance:0
+},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",
+begin:"^\\s*\\[",end:"\\]"},{beginKeywords:"interface namespace",end:/\{/,
+illegal:"[;.\\-]",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+"}]},{
+beginKeywords:"class",end:/\{/,illegal:"[;.\\-]",contains:[{className:"symbol",
+begin:"[a-zA-Z0-9_]+",contains:[{begin:"[:,]\\s*",contains:[{className:"symbol",
+begin:"[a-zA-Z0-9_]+"}]}]}]},n,a,{className:"literal",
+begin:"\\b(null|true|false)"},{className:"number",relevance:0,
+begin:"(-?)(\\b0[xXbBoOdD][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?f?|\\.\\d+f?)([eE][-+]?\\d+f?)?)"
+}]}}})();hljs.registerLanguage("angelscript",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/apache.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/apache.min.js
new file mode 100644
index 0000000..a4ba4a4
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/apache.min.js
@@ -0,0 +1,14 @@
+/*! `apache` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n={className:"number",
+begin:/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?/};return{
+name:"Apache config",aliases:["apacheconf"],case_insensitive:!0,
+contains:[e.HASH_COMMENT_MODE,{className:"section",begin:/<\/?/,end:/>/,
+contains:[n,{className:"number",begin:/:\d{1,5}/
+},e.inherit(e.QUOTE_STRING_MODE,{relevance:0})]},{className:"attribute",
+begin:/\w+/,relevance:0,keywords:{
+_:["order","deny","allow","setenv","rewriterule","rewriteengine","rewritecond","documentroot","sethandler","errordocument","loadmodule","options","header","listen","serverroot","servername"]
+},starts:{end:/$/,relevance:0,keywords:{literal:"on off all deny allow"},
+contains:[{className:"meta",begin:/\s\[/,end:/\]$/},{className:"variable",
+begin:/[\$%]\{/,end:/\}/,contains:["self",{className:"number",begin:/[$%]\d+/}]
+},n,{className:"number",begin:/\b\d+/},e.QUOTE_STRING_MODE]}}],illegal:/\S/}}
+})();hljs.registerLanguage("apache",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/applescript.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/applescript.min.js
new file mode 100644
index 0000000..23a9f1f
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/applescript.min.js
@@ -0,0 +1,19 @@
+/*! `applescript` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const t=e.regex,r=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),i={
+className:"params",begin:/\(/,end:/\)/,contains:["self",e.C_NUMBER_MODE,r]
+},n=e.COMMENT(/--/,/$/),a=[n,e.COMMENT(/\(\*/,/\*\)/,{contains:["self",n]
+}),e.HASH_COMMENT_MODE];return{name:"AppleScript",aliases:["osascript"],
+keywords:{
+keyword:"about above after against and around as at back before beginning behind below beneath beside between but by considering contain contains continue copy div does eighth else end equal equals error every exit fifth first for fourth from front get given global if ignoring in into is it its last local me middle mod my ninth not of on onto or over prop property put ref reference repeat returning script second set seventh since sixth some tell tenth that the|0 then third through thru timeout times to transaction try until where while whose with without",
+literal:"AppleScript false linefeed return pi quote result space tab true",
+built_in:"alias application boolean class constant date file integer list number real record string text activate beep count delay launch log offset read round run say summarize write character characters contents day frontmost id item length month name paragraph paragraphs rest reverse running time version weekday word words year"
+},contains:[r,e.C_NUMBER_MODE,{className:"built_in",
+begin:t.concat(/\b/,t.either(/clipboard info/,/the clipboard/,/info for/,/list (disks|folder)/,/mount volume/,/path to/,/(close|open for) access/,/(get|set) eof/,/current date/,/do shell script/,/get volume settings/,/random number/,/set volume/,/system attribute/,/system info/,/time to GMT/,/(load|run|store) script/,/scripting components/,/ASCII (character|number)/,/localized string/,/choose (application|color|file|file name|folder|from list|remote application|URL)/,/display (alert|dialog)/),/\b/)
+},{className:"built_in",begin:/^\s*return\b/},{className:"literal",
+begin:/\b(text item delimiters|current application|missing value)\b/},{
+className:"keyword",
+begin:t.concat(/\b/,t.either(/apart from/,/aside from/,/instead of/,/out of/,/greater than/,/isn't|(doesn't|does not) (equal|come before|come after|contain)/,/(greater|less) than( or equal)?/,/(starts?|ends|begins?) with/,/contained by/,/comes (before|after)/,/a (ref|reference)/,/POSIX (file|path)/,/(date|time) string/,/quoted form/),/\b/)
+},{beginKeywords:"on",illegal:/[${=;\n]/,contains:[e.UNDERSCORE_TITLE_MODE,i]
+},...a],illegal:/\/\/|->|=>|\[\[/}}})();hljs.registerLanguage("applescript",e)
+})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/arcade.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/arcade.min.js
new file mode 100644
index 0000000..c0f319f
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/arcade.min.js
@@ -0,0 +1,27 @@
+/*! `arcade` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n="[A-Za-z_][0-9A-Za-z_]*",a={
+keyword:"if for while var new function do return void else break",
+literal:"BackSlash DoubleQuote false ForwardSlash Infinity NaN NewLine null PI SingleQuote Tab TextFormatting true undefined",
+built_in:"Abs Acos Angle Attachments Area AreaGeodetic Asin Atan Atan2 Average Bearing Boolean Buffer BufferGeodetic Ceil Centroid Clip Console Constrain Contains Cos Count Crosses Cut Date DateAdd DateDiff Day Decode DefaultValue Dictionary Difference Disjoint Distance DistanceGeodetic Distinct DomainCode DomainName Equals Exp Extent Feature FeatureSet FeatureSetByAssociation FeatureSetById FeatureSetByPortalItem FeatureSetByRelationshipName FeatureSetByTitle FeatureSetByUrl Filter First Floor Geometry GroupBy Guid HasKey Hour IIf IndexOf Intersection Intersects IsEmpty IsNan IsSelfIntersecting Length LengthGeodetic Log Max Mean Millisecond Min Minute Month MultiPartToSinglePart Multipoint NextSequenceValue Now Number OrderBy Overlaps Point Polygon Polyline Portal Pow Random Relate Reverse RingIsClockWise Round Second SetGeometry Sin Sort Sqrt Stdev Sum SymmetricDifference Tan Text Timestamp Today ToLocal Top Touches ToUTC TrackCurrentTime TrackGeometryWindow TrackIndex TrackStartTime TrackWindow TypeOf Union UrlEncode Variance Weekday When Within Year "
+},t={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{
+begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},i={
+className:"subst",begin:"\\$\\{",end:"\\}",keywords:a,contains:[]},r={
+className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,i]}
+;i.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,t,e.REGEXP_MODE]
+;const o=i.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE])
+;return{name:"ArcGIS Arcade",keywords:a,
+contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,r,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{
+className:"symbol",
+begin:"\\$[datastore|feature|layer|map|measure|sourcefeature|sourcelayer|targetfeature|targetlayer|value|view]+"
+},t,{begin:/[{,]\s*/,relevance:0,contains:[{begin:n+"\\s*:",returnBegin:!0,
+relevance:0,contains:[{className:"attr",begin:n,relevance:0}]}]},{
+begin:"("+e.RE_STARTERS_RE+"|\\b(return)\\b)\\s*",keywords:"return",
+contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{
+className:"function",begin:"(\\(.*?\\)|"+n+")\\s*=>",returnBegin:!0,
+end:"\\s*=>",contains:[{className:"params",variants:[{begin:n},{begin:/\(\s*\)/
+},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:o}]}]
+}],relevance:0},{beginKeywords:"function",end:/\{/,excludeEnd:!0,
+contains:[e.inherit(e.TITLE_MODE,{className:"title.function",begin:n}),{
+className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:o
+}],illegal:/\[|%/},{begin:/\$[(.]/}],illegal:/#(?!!)/}}})()
+;hljs.registerLanguage("arcade",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/arduino.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/arduino.min.js
new file mode 100644
index 0000000..599dd20
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/arduino.min.js
@@ -0,0 +1,54 @@
+/*! `arduino` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const t={
+type:["boolean","byte","word","String"],
+built_in:["KeyboardController","MouseController","SoftwareSerial","EthernetServer","EthernetClient","LiquidCrystal","RobotControl","GSMVoiceCall","EthernetUDP","EsploraTFT","HttpClient","RobotMotor","WiFiClient","GSMScanner","FileSystem","Scheduler","GSMServer","YunClient","YunServer","IPAddress","GSMClient","GSMModem","Keyboard","Ethernet","Console","GSMBand","Esplora","Stepper","Process","WiFiUDP","GSM_SMS","Mailbox","USBHost","Firmata","PImage","Client","Server","GSMPIN","FileIO","Bridge","Serial","EEPROM","Stream","Mouse","Audio","Servo","File","Task","GPRS","WiFi","Wire","TFT","GSM","SPI","SD"],
+_hints:["setup","loop","runShellCommandAsynchronously","analogWriteResolution","retrieveCallingNumber","printFirmwareVersion","analogReadResolution","sendDigitalPortPair","noListenOnLocalhost","readJoystickButton","setFirmwareVersion","readJoystickSwitch","scrollDisplayRight","getVoiceCallStatus","scrollDisplayLeft","writeMicroseconds","delayMicroseconds","beginTransmission","getSignalStrength","runAsynchronously","getAsynchronously","listenOnLocalhost","getCurrentCarrier","readAccelerometer","messageAvailable","sendDigitalPorts","lineFollowConfig","countryNameWrite","runShellCommand","readStringUntil","rewindDirectory","readTemperature","setClockDivider","readLightSensor","endTransmission","analogReference","detachInterrupt","countryNameRead","attachInterrupt","encryptionType","readBytesUntil","robotNameWrite","readMicrophone","robotNameRead","cityNameWrite","userNameWrite","readJoystickY","readJoystickX","mouseReleased","openNextFile","scanNetworks","noInterrupts","digitalWrite","beginSpeaker","mousePressed","isActionDone","mouseDragged","displayLogos","noAutoscroll","addParameter","remoteNumber","getModifiers","keyboardRead","userNameRead","waitContinue","processInput","parseCommand","printVersion","readNetworks","writeMessage","blinkVersion","cityNameRead","readMessage","setDataMode","parsePacket","isListening","setBitOrder","beginPacket","isDirectory","motorsWrite","drawCompass","digitalRead","clearScreen","serialEvent","rightToLeft","setTextSize","leftToRight","requestFrom","keyReleased","compassRead","analogWrite","interrupts","WiFiServer","disconnect","playMelody","parseFloat","autoscroll","getPINUsed","setPINUsed","setTimeout","sendAnalog","readSlider","analogRead","beginWrite","createChar","motorsStop","keyPressed","tempoWrite","readButton","subnetMask","debugPrint","macAddress","writeGreen","randomSeed","attachGPRS","readString","sendString","remotePort","releaseAll","mouseMoved","background","getXChange","getYChange","answerCall","getResult","voiceCall","endPacket","constrain","getSocket","writeJSON","getButton","available","connected","findUntil","readBytes","exitValue","readGreen","writeBlue","startLoop","IPAddress","isPressed","sendSysex","pauseMode","gatewayIP","setCursor","getOemKey","tuneWrite","noDisplay","loadImage","switchPIN","onRequest","onReceive","changePIN","playFile","noBuffer","parseInt","overflow","checkPIN","knobRead","beginTFT","bitClear","updateIR","bitWrite","position","writeRGB","highByte","writeRed","setSpeed","readBlue","noStroke","remoteIP","transfer","shutdown","hangCall","beginSMS","endWrite","attached","maintain","noCursor","checkReg","checkPUK","shiftOut","isValid","shiftIn","pulseIn","connect","println","localIP","pinMode","getIMEI","display","noBlink","process","getBand","running","beginSD","drawBMP","lowByte","setBand","release","bitRead","prepare","pointTo","readRed","setMode","noFill","remove","listen","stroke","detach","attach","noTone","exists","buffer","height","bitSet","circle","config","cursor","random","IRread","setDNS","endSMS","getKey","micros","millis","begin","print","write","ready","flush","width","isPIN","blink","clear","press","mkdir","rmdir","close","point","yield","image","BSSID","click","delay","read","text","move","peek","beep","rect","line","open","seek","fill","size","turn","stop","home","find","step","tone","sqrt","RSSI","SSID","end","bit","tan","cos","sin","pow","map","abs","max","min","get","run","put"],
+literal:["DIGITAL_MESSAGE","FIRMATA_STRING","ANALOG_MESSAGE","REPORT_DIGITAL","REPORT_ANALOG","INPUT_PULLUP","SET_PIN_MODE","INTERNAL2V56","SYSTEM_RESET","LED_BUILTIN","INTERNAL1V1","SYSEX_START","INTERNAL","EXTERNAL","DEFAULT","OUTPUT","INPUT","HIGH","LOW"]
+},r=(e=>{const t=e.regex,r=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]
+}),n="[a-zA-Z_]\\w*::",a="(?!struct)(decltype\\(auto\\)|"+t.optional(n)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",i={
+className:"type",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string",variants:[{
+begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{
+begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",
+end:"'",illegal:"."},e.END_SAME_AS_BEGIN({
+begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={
+className:"number",variants:[{begin:"\\b(0b[01']+)"},{
+begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"
+},{
+begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"
+}],relevance:0},l={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{
+keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"
+},contains:[{begin:/\\\n/,relevance:0},e.inherit(s,{className:"string"}),{
+className:"string",begin:/<.*?>/},r,e.C_BLOCK_COMMENT_MODE]},c={
+className:"title",begin:t.optional(n)+e.IDENT_RE,relevance:0
+},d=t.optional(n)+e.IDENT_RE+"\\s*\\(",u={
+type:["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],
+keyword:["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],
+literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],
+_type_hints:["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"]
+},p={className:"function.dispatch",relevance:0,keywords:{
+_hint:["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"]
+},
+begin:t.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,t.lookahead(/(<[^<>]+>|)\s*\(/))
+},m=[p,l,i,r,e.C_BLOCK_COMMENT_MODE,o,s],g={variants:[{begin:/=/,end:/;/},{
+begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],
+keywords:u,contains:m.concat([{begin:/\(/,end:/\)/,keywords:u,
+contains:m.concat(["self"]),relevance:0}]),relevance:0},_={className:"function",
+begin:"("+a+"[\\*&\\s]+)+"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,
+keywords:u,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)",
+keywords:u,relevance:0},{begin:d,returnBegin:!0,contains:[c],relevance:0},{
+begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[s,o]},{
+relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:u,
+relevance:0,contains:[r,e.C_BLOCK_COMMENT_MODE,s,o,i,{begin:/\(/,end:/\)/,
+keywords:u,relevance:0,contains:["self",r,e.C_BLOCK_COMMENT_MODE,s,o,i]}]
+},i,r,e.C_BLOCK_COMMENT_MODE,l]};return{name:"C++",
+aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"</",
+classNameAliases:{"function.dispatch":"built_in"},
+contains:[].concat(g,_,p,m,[l,{
+begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function)\\s*<",
+end:">",keywords:u,contains:["self",i]},{begin:e.IDENT_RE+"::",keywords:u},{
+match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],
+className:{1:"keyword",3:"title.class"}}])}})(e),n=r.keywords
+;return n.type=[...n.type,...t.type],
+n.literal=[...n.literal,...t.literal],n.built_in=[...n.built_in,...t.built_in],
+n._hints=t._hints,r.name="Arduino",r.aliases=["ino"],r.supersetOf="cpp",r}})()
+;hljs.registerLanguage("arduino",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/armasm.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/armasm.min.js
new file mode 100644
index 0000000..d8c5e73
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/armasm.min.js
@@ -0,0 +1,17 @@
+/*! `armasm` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var s=(()=>{"use strict";return s=>{const e={
+variants:[s.COMMENT("^[ \\t]*(?=#)","$",{relevance:0,excludeBegin:!0
+}),s.COMMENT("[;@]","$",{relevance:0
+}),s.C_LINE_COMMENT_MODE,s.C_BLOCK_COMMENT_MODE]};return{name:"ARM Assembly",
+case_insensitive:!0,aliases:["arm"],keywords:{$pattern:"\\.?"+s.IDENT_RE,
+meta:".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ",
+built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 pc lr sp ip sl sb fp a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf s0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 {PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @"
+},contains:[{className:"keyword",
+begin:"\\b(adc|(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|wfe|wfi|yield)(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?[sptrx]?(?=\\s)"
+},e,s.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",relevance:0
+},{className:"title",begin:"\\|",end:"\\|",illegal:"\\n",relevance:0},{
+className:"number",variants:[{begin:"[#$=]?0x[0-9a-f]+"},{begin:"[#$=]?0b[01]+"
+},{begin:"[#$=]\\d+"},{begin:"\\b\\d+"}],relevance:0},{className:"symbol",
+variants:[{begin:"^[ \\t]*[a-z_\\.\\$][a-z0-9_\\.\\$]+:"},{
+begin:"^[a-z_\\.\\$][a-z0-9_\\.\\$]+"},{begin:"[=#]\\w+"}],relevance:0}]}}})()
+;hljs.registerLanguage("armasm",s)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/asciidoc.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/asciidoc.min.js
new file mode 100644
index 0000000..a25196d
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/asciidoc.min.js
@@ -0,0 +1,35 @@
+/*! `asciidoc` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n=e.regex,a=[{
+className:"strong",begin:/\*{2}([^\n]+?)\*{2}/},{className:"strong",
+begin:n.concat(/\*\*/,/((\*(?!\*)|\\[^\n]|[^*\n\\])+\n)+/,/(\*(?!\*)|\\[^\n]|[^*\n\\])*/,/\*\*/),
+relevance:0},{className:"strong",begin:/\B\*(\S|\S[^\n]*?\S)\*(?!\w)/},{
+className:"strong",begin:/\*[^\s]([^\n]+\n)+([^\n]+)\*/}],s=[{
+className:"emphasis",begin:/_{2}([^\n]+?)_{2}/},{className:"emphasis",
+begin:n.concat(/__/,/((_(?!_)|\\[^\n]|[^_\n\\])+\n)+/,/(_(?!_)|\\[^\n]|[^_\n\\])*/,/__/),
+relevance:0},{className:"emphasis",begin:/\b_(\S|\S[^\n]*?\S)_(?!\w)/},{
+className:"emphasis",begin:/_[^\s]([^\n]+\n)+([^\n]+)_/},{className:"emphasis",
+begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0
+}],relevance:0}];return{name:"AsciiDoc",aliases:["adoc"],
+contains:[e.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10
+}),e.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{
+begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section",
+relevance:10,variants:[{begin:"^(={1,6})[ \t].+?([ \t]\\1)?$"},{
+begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta",
+begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta",
+begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n",
+end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n",
+end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$",
+contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{
+className:"bullet",begin:"^(\\*+|-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol",
+begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{
+begin:/\\[*_`]/},{begin:/\\\\\*{2}[^\n]*?\*{2}/},{begin:/\\\\_{2}[^\n]*_{2}/},{
+begin:/\\\\`{2}[^\n]*`{2}/},{begin:/[:;}][*_`](?![*_`])/},...a,...s,{
+className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{
+className:"code",begin:/`{2}/,end:/(\n{2}|`{2})/},{className:"code",
+begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]",
+end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{
+begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+?\\[[^[]*?\\]",
+returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{
+className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string",
+begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}]
+}}})();hljs.registerLanguage("asciidoc",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/aspectj.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/aspectj.min.js
new file mode 100644
index 0000000..c55ef65
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/aspectj.min.js
@@ -0,0 +1,31 @@
+/*! `aspectj` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const n=e.regex,t=["false","synchronized","int","abstract","float","private","char","boolean","static","null","if","const","for","true","while","long","throw","strictfp","finally","protected","import","native","final","return","void","enum","else","extends","implements","break","transient","new","catch","instanceof","byte","super","volatile","case","assert","short","package","default","double","public","try","this","switch","continue","throws","privileged","aspectOf","adviceexecution","proceed","cflowbelow","cflow","initialization","preinitialization","staticinitialization","withincode","target","within","execution","getWithinTypeName","handler","thisJoinPoint","thisJoinPointStaticPart","thisEnclosingJoinPointStaticPart","declare","parents","warning","error","soft","precedence","thisAspectInstance"],i=["get","set","args","call"]
+;return{name:"AspectJ",keywords:t,illegal:/<\/|#/,
+contains:[e.COMMENT(/\/\*\*/,/\*\//,{relevance:0,contains:[{begin:/\w+@/,
+relevance:0},{className:"doctag",begin:/@[A-Za-z]+/}]
+}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{
+className:"class",beginKeywords:"aspect",end:/[{;=]/,excludeEnd:!0,
+illegal:/[:;"\[\]]/,contains:[{
+beginKeywords:"extends implements pertypewithin perthis pertarget percflowbelow percflow issingleton"
+},e.UNDERSCORE_TITLE_MODE,{begin:/\([^\)]*/,end:/[)]+/,keywords:t.concat(i),
+excludeEnd:!1}]},{className:"class",beginKeywords:"class interface",end:/[{;=]/,
+excludeEnd:!0,relevance:0,keywords:"class interface",illegal:/[:"\[\]]/,
+contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{
+beginKeywords:"pointcut after before around throwing returning",end:/[)]/,
+excludeEnd:!1,illegal:/["\[\]]/,contains:[{
+begin:n.concat(e.UNDERSCORE_IDENT_RE,/\s*\(/),returnBegin:!0,
+contains:[e.UNDERSCORE_TITLE_MODE]}]},{begin:/[:]/,returnBegin:!0,end:/[{;]/,
+relevance:0,excludeEnd:!1,keywords:t,illegal:/["\[\]]/,contains:[{
+begin:n.concat(e.UNDERSCORE_IDENT_RE,/\s*\(/),keywords:t.concat(i),relevance:0
+},e.QUOTE_STRING_MODE]},{beginKeywords:"new throw",relevance:0},{
+className:"function",
+begin:/\w+ +\w+(\.\w+)?\s*\([^\)]*\)\s*((throws)[\w\s,]+)?[\{;]/,returnBegin:!0,
+end:/[{;=]/,keywords:t,excludeEnd:!0,contains:[{
+begin:n.concat(e.UNDERSCORE_IDENT_RE,/\s*\(/),returnBegin:!0,relevance:0,
+contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,
+relevance:0,keywords:t,
+contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]
+},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_NUMBER_MODE,{
+className:"meta",begin:/@[A-Za-z]+/}]}}})();hljs.registerLanguage("aspectj",e)
+})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/autohotkey.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/autohotkey.min.js
new file mode 100644
index 0000000..c12327e
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/autohotkey.min.js
@@ -0,0 +1,14 @@
+/*! `autohotkey` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const a={begin:"`[\\s\\S]"};return{
+name:"AutoHotkey",case_insensitive:!0,aliases:["ahk"],keywords:{
+keyword:"Break Continue Critical Exit ExitApp Gosub Goto New OnExit Pause return SetBatchLines SetTimer Suspend Thread Throw Until ahk_id ahk_class ahk_pid ahk_exe ahk_group",
+literal:"true false NOT AND OR",
+built_in:"ComSpec Clipboard ClipboardAll ErrorLevel"},
+contains:[a,e.inherit(e.QUOTE_STRING_MODE,{contains:[a]}),e.COMMENT(";","$",{
+relevance:0}),e.C_BLOCK_COMMENT_MODE,{className:"number",begin:e.NUMBER_RE,
+relevance:0},{className:"variable",begin:"%[a-zA-Z0-9#_$@]+%"},{
+className:"built_in",begin:"^\\s*\\w+\\s*(,|%)"},{className:"title",variants:[{
+begin:'^[^\\n";]+::(?!=)'},{begin:'^[^\\n";]+:(?!=)',relevance:0}]},{
+className:"meta",begin:"^\\s*#\\w+",end:"$",relevance:0},{className:"built_in",
+begin:"A_[a-zA-Z0-9]+"},{begin:",\\s*,"}]}}})()
+;hljs.registerLanguage("autohotkey",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/autoit.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/autoit.min.js
new file mode 100644
index 0000000..2c5d971
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/autoit.min.js
@@ -0,0 +1,21 @@
+/*! `autoit` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const t={variants:[e.COMMENT(";","$",{
+relevance:0
+}),e.COMMENT("#cs","#ce"),e.COMMENT("#comments-start","#comments-end")]},r={
+begin:"\\$[A-z0-9_]+"},i={className:"string",variants:[{begin:/"/,end:/"/,
+contains:[{begin:/""/,relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/,
+relevance:0}]}]},n={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{
+name:"AutoIt",case_insensitive:!0,illegal:/\/\*/,keywords:{
+keyword:"ByRef Case Const ContinueCase ContinueLoop Dim Do Else ElseIf EndFunc EndIf EndSelect EndSwitch EndWith Enum Exit ExitLoop For Func Global If In Local Next ReDim Return Select Static Step Switch Then To Until Volatile WEnd While With",
+built_in:"Abs ACos AdlibRegister AdlibUnRegister Asc AscW ASin Assign ATan AutoItSetOption AutoItWinGetTitle AutoItWinSetTitle Beep Binary BinaryLen BinaryMid BinaryToString BitAND BitNOT BitOR BitRotate BitShift BitXOR BlockInput Break Call CDTray Ceiling Chr ChrW ClipGet ClipPut ConsoleRead ConsoleWrite ConsoleWriteError ControlClick ControlCommand ControlDisable ControlEnable ControlFocus ControlGetFocus ControlGetHandle ControlGetPos ControlGetText ControlHide ControlListView ControlMove ControlSend ControlSetText ControlShow ControlTreeView Cos Dec DirCopy DirCreate DirGetSize DirMove DirRemove DllCall DllCallAddress DllCallbackFree DllCallbackGetPtr DllCallbackRegister DllClose DllOpen DllStructCreate DllStructGetData DllStructGetPtr DllStructGetSize DllStructSetData DriveGetDrive DriveGetFileSystem DriveGetLabel DriveGetSerial DriveGetType DriveMapAdd DriveMapDel DriveMapGet DriveSetLabel DriveSpaceFree DriveSpaceTotal DriveStatus EnvGet EnvSet EnvUpdate Eval Execute Exp FileChangeDir FileClose FileCopy FileCreateNTFSLink FileCreateShortcut FileDelete FileExists FileFindFirstFile FileFindNextFile FileFlush FileGetAttrib FileGetEncoding FileGetLongName FileGetPos FileGetShortcut FileGetShortName FileGetSize FileGetTime FileGetVersion FileInstall FileMove FileOpen FileOpenDialog FileRead FileReadLine FileReadToArray FileRecycle FileRecycleEmpty FileSaveDialog FileSelectFolder FileSetAttrib FileSetEnd FileSetPos FileSetTime FileWrite FileWriteLine Floor FtpSetProxy FuncName GUICreate GUICtrlCreateAvi GUICtrlCreateButton GUICtrlCreateCheckbox GUICtrlCreateCombo GUICtrlCreateContextMenu GUICtrlCreateDate GUICtrlCreateDummy GUICtrlCreateEdit GUICtrlCreateGraphic GUICtrlCreateGroup GUICtrlCreateIcon GUICtrlCreateInput GUICtrlCreateLabel GUICtrlCreateList GUICtrlCreateListView GUICtrlCreateListViewItem GUICtrlCreateMenu GUICtrlCreateMenuItem GUICtrlCreateMonthCal GUICtrlCreateObj GUICtrlCreatePic GUICtrlCreateProgress GUICtrlCreateRadio GUICtrlCreateSlider GUICtrlCreateTab GUICtrlCreateTabItem GUICtrlCreateTreeView GUICtrlCreateTreeViewItem GUICtrlCreateUpdown GUICtrlDelete GUICtrlGetHandle GUICtrlGetState GUICtrlRead GUICtrlRecvMsg GUICtrlRegisterListViewSort GUICtrlSendMsg GUICtrlSendToDummy GUICtrlSetBkColor GUICtrlSetColor GUICtrlSetCursor GUICtrlSetData GUICtrlSetDefBkColor GUICtrlSetDefColor GUICtrlSetFont GUICtrlSetGraphic GUICtrlSetImage GUICtrlSetLimit GUICtrlSetOnEvent GUICtrlSetPos GUICtrlSetResizing GUICtrlSetState GUICtrlSetStyle GUICtrlSetTip GUIDelete GUIGetCursorInfo GUIGetMsg GUIGetStyle GUIRegisterMsg GUISetAccelerators GUISetBkColor GUISetCoord GUISetCursor GUISetFont GUISetHelp GUISetIcon GUISetOnEvent GUISetState GUISetStyle GUIStartGroup GUISwitch Hex HotKeySet HttpSetProxy HttpSetUserAgent HWnd InetClose InetGet InetGetInfo InetGetSize InetRead IniDelete IniRead IniReadSection IniReadSectionNames IniRenameSection IniWrite IniWriteSection InputBox Int IsAdmin IsArray IsBinary IsBool IsDeclared IsDllStruct IsFloat IsFunc IsHWnd IsInt IsKeyword IsNumber IsObj IsPtr IsString Log MemGetStats Mod MouseClick MouseClickDrag MouseDown MouseGetCursor MouseGetPos MouseMove MouseUp MouseWheel MsgBox Number ObjCreate ObjCreateInterface ObjEvent ObjGet ObjName OnAutoItExitRegister OnAutoItExitUnRegister Ping PixelChecksum PixelGetColor PixelSearch ProcessClose ProcessExists ProcessGetStats ProcessList ProcessSetPriority ProcessWait ProcessWaitClose ProgressOff ProgressOn ProgressSet Ptr Random RegDelete RegEnumKey RegEnumVal RegRead RegWrite Round Run RunAs RunAsWait RunWait Send SendKeepActive SetError SetExtended ShellExecute ShellExecuteWait Shutdown Sin Sleep SoundPlay SoundSetWaveVolume SplashImageOn SplashOff SplashTextOn Sqrt SRandom StatusbarGetText StderrRead StdinWrite StdioClose StdoutRead String StringAddCR StringCompare StringFormat StringFromASCIIArray StringInStr StringIsAlNum StringIsAlpha StringIsASCII StringIsDigit StringIsFloat StringIsInt StringIsLower StringIsSpace StringIsUpper StringIsXDigit StringLeft StringLen StringLower StringMid StringRegExp StringRegExpReplace StringReplace StringReverse StringRight StringSplit StringStripCR StringStripWS StringToASCIIArray StringToBinary StringTrimLeft StringTrimRight StringUpper Tan TCPAccept TCPCloseSocket TCPConnect TCPListen TCPNameToIP TCPRecv TCPSend TCPShutdown, UDPShutdown TCPStartup, UDPStartup TimerDiff TimerInit ToolTip TrayCreateItem TrayCreateMenu TrayGetMsg TrayItemDelete TrayItemGetHandle TrayItemGetState TrayItemGetText TrayItemSetOnEvent TrayItemSetState TrayItemSetText TraySetClick TraySetIcon TraySetOnEvent TraySetPauseIcon TraySetState TraySetToolTip TrayTip UBound UDPBind UDPCloseSocket UDPOpen UDPRecv UDPSend VarGetType WinActivate WinActive WinClose WinExists WinFlash WinGetCaretPos WinGetClassList WinGetClientSize WinGetHandle WinGetPos WinGetProcess WinGetState WinGetText WinGetTitle WinKill WinList WinMenuSelectItem WinMinimizeAll WinMinimizeAllUndo WinMove WinSetOnTop WinSetState WinSetTitle WinSetTrans WinWait WinWaitActive WinWaitClose WinWaitNotActive",
+literal:"True False And Null Not Or Default"},contains:[t,r,i,n,{
+className:"meta",begin:"#",end:"$",keywords:{
+keyword:["EndRegion","forcedef","forceref","ignorefunc","include","include-once","NoTrayIcon","OnAutoItStartRegister","pragma","Region","RequireAdmin","Tidy_Off","Tidy_On","Tidy_Parameters"]
+},contains:[{begin:/\\\n/,relevance:0},{beginKeywords:"include",keywords:{
+keyword:"include"},end:"$",contains:[i,{className:"string",variants:[{begin:"<",
+end:">"},{begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{begin:/'/,
+end:/'/,contains:[{begin:/''/,relevance:0}]}]}]},i,t]},{className:"symbol",
+begin:"@[A-z0-9_]+"},{beginKeywords:"Func",end:"$",illegal:"\\$|\\[|%",
+contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{className:"title.function"}),{
+className:"params",begin:"\\(",end:"\\)",contains:[r,i,n]}]}]}}})()
+;hljs.registerLanguage("autoit",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/avrasm.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/avrasm.min.js
new file mode 100644
index 0000000..f281863
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/avrasm.min.js
@@ -0,0 +1,12 @@
+/*! `avrasm` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var r=(()=>{"use strict";return r=>({name:"AVR Assembly",
+case_insensitive:!0,keywords:{$pattern:"\\.?"+r.IDENT_RE,
+keyword:"adc add adiw and andi asr bclr bld brbc brbs brcc brcs break breq brge brhc brhs brid brie brlo brlt brmi brne brpl brsh brtc brts brvc brvs bset bst call cbi cbr clc clh cli cln clr cls clt clv clz com cp cpc cpi cpse dec eicall eijmp elpm eor fmul fmuls fmulsu icall ijmp in inc jmp ld ldd ldi lds lpm lsl lsr mov movw mul muls mulsu neg nop or ori out pop push rcall ret reti rjmp rol ror sbc sbr sbrc sbrs sec seh sbi sbci sbic sbis sbiw sei sen ser ses set sev sez sleep spm st std sts sub subi swap tst wdr",
+built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27 r28 r29 r30 r31 x|0 xh xl y|0 yh yl z|0 zh zl ucsr1c udr1 ucsr1a ucsr1b ubrr1l ubrr1h ucsr0c ubrr0h tccr3c tccr3a tccr3b tcnt3h tcnt3l ocr3ah ocr3al ocr3bh ocr3bl ocr3ch ocr3cl icr3h icr3l etimsk etifr tccr1c ocr1ch ocr1cl twcr twdr twar twsr twbr osccal xmcra xmcrb eicra spmcsr spmcr portg ddrg ping portf ddrf sreg sph spl xdiv rampz eicrb eimsk gimsk gicr eifr gifr timsk tifr mcucr mcucsr tccr0 tcnt0 ocr0 assr tccr1a tccr1b tcnt1h tcnt1l ocr1ah ocr1al ocr1bh ocr1bl icr1h icr1l tccr2 tcnt2 ocr2 ocdr wdtcr sfior eearh eearl eedr eecr porta ddra pina portb ddrb pinb portc ddrc pinc portd ddrd pind spdr spsr spcr udr0 ucsr0a ucsr0b ubrr0l acsr admux adcsr adch adcl porte ddre pine pinf",
+meta:".byte .cseg .db .def .device .dseg .dw .endmacro .equ .eseg .exit .include .list .listmac .macro .nolist .org .set"
+},contains:[r.C_BLOCK_COMMENT_MODE,r.COMMENT(";","$",{relevance:0
+}),r.C_NUMBER_MODE,r.BINARY_NUMBER_MODE,{className:"number",
+begin:"\\b(\\$[a-zA-Z0-9]+|0o[0-7]+)"},r.QUOTE_STRING_MODE,{className:"string",
+begin:"'",end:"[^\\\\]'",illegal:"[^\\\\][^']"},{className:"symbol",
+begin:"^[A-Za-z0-9_.$]+:"},{className:"meta",begin:"#",end:"$"},{
+className:"subst",begin:"@[0-9]+"}]})})();hljs.registerLanguage("avrasm",r)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/awk.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/awk.min.js
new file mode 100644
index 0000000..4a538db
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/awk.min.js
@@ -0,0 +1,11 @@
+/*! `awk` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Awk",keywords:{
+keyword:"BEGIN END if else while do for in break continue delete next nextfile function func exit|10"
+},contains:[{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{
+begin:/\$\{(.*?)\}/}]},{className:"string",contains:[e.BACKSLASH_ESCAPE],
+variants:[{begin:/(u|b)?r?'''/,end:/'''/,relevance:10},{begin:/(u|b)?r?"""/,
+end:/"""/,relevance:10},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{
+begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{
+begin:/(b|br)"/,end:/"/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]
+},e.REGEXP_MODE,e.HASH_COMMENT_MODE,e.NUMBER_MODE]})})()
+;hljs.registerLanguage("awk",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/axapta.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/axapta.min.js
new file mode 100644
index 0000000..1ae8ded
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/axapta.min.js
@@ -0,0 +1,10 @@
+/*! `axapta` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"X++",aliases:["x++"],keywords:{
+keyword:["abstract","as","asc","avg","break","breakpoint","by","byref","case","catch","changecompany","class","client","client","common","const","continue","count","crosscompany","delegate","delete_from","desc","display","div","do","edit","else","eventhandler","exists","extends","final","finally","firstfast","firstonly","firstonly1","firstonly10","firstonly100","firstonly1000","flush","for","forceliterals","forcenestedloop","forceplaceholders","forceselectorder","forupdate","from","generateonly","group","hint","if","implements","in","index","insert_recordset","interface","internal","is","join","like","maxof","minof","mod","namespace","new","next","nofetch","notexists","optimisticlock","order","outer","pessimisticlock","print","private","protected","public","readonly","repeatableread","retry","return","reverse","select","server","setting","static","sum","super","switch","this","throw","try","ttsabort","ttsbegin","ttscommit","unchecked","update_recordset","using","validtimestate","void","where","while"],
+built_in:["anytype","boolean","byte","char","container","date","double","enum","guid","int","int64","long","real","short","str","utcdatetime","var"],
+literal:["default","false","null","true"]},
+contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{
+className:"meta",begin:"#",end:"$"},{className:"class",
+beginKeywords:"class interface",end:/\{/,excludeEnd:!0,illegal:":",contains:[{
+beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]}]})})()
+;hljs.registerLanguage("axapta",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/bash.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/bash.min.js
new file mode 100644
index 0000000..6f303be
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/bash.min.js
@@ -0,0 +1,20 @@
+/*! `bash` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const s=e.regex,t={},n={begin:/\$\{/,
+end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{
+className:"variable",variants:[{
+begin:s.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},n]});const a={
+className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},i={
+begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,
+end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/,
+contains:[e.BACKSLASH_ESCAPE,t,a]};a.contains.push(c);const o={begin:/\$\(\(/,
+end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t]
+},r=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10
+}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,
+contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{
+name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z._-]+\b/,
+keyword:["if","then","else","elif","fi","for","while","in","do","done","case","esac","function"],
+literal:["true","false"],
+built_in:["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset","alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"]
+},contains:[r,e.SHEBANG(),l,o,e.HASH_COMMENT_MODE,i,{match:/(\/[a-z._-]+)+/},c,{
+className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},t]}}})()
+;hljs.registerLanguage("bash",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/basic.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/basic.min.js
new file mode 100644
index 0000000..ab651db
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/basic.min.js
@@ -0,0 +1,10 @@
+/*! `basic` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var E=(()=>{"use strict";return E=>({name:"BASIC",case_insensitive:!0,
+illegal:"^.",keywords:{$pattern:"[a-zA-Z][a-zA-Z0-9_$%!#]*",
+keyword:["ABS","ASC","AND","ATN","AUTO|0","BEEP","BLOAD|10","BSAVE|10","CALL","CALLS","CDBL","CHAIN","CHDIR","CHR$|10","CINT","CIRCLE","CLEAR","CLOSE","CLS","COLOR","COM","COMMON","CONT","COS","CSNG","CSRLIN","CVD","CVI","CVS","DATA","DATE$","DEFDBL","DEFINT","DEFSNG","DEFSTR","DEF|0","SEG","USR","DELETE","DIM","DRAW","EDIT","END","ENVIRON","ENVIRON$","EOF","EQV","ERASE","ERDEV","ERDEV$","ERL","ERR","ERROR","EXP","FIELD","FILES","FIX","FOR|0","FRE","GET","GOSUB|10","GOTO","HEX$","IF","THEN","ELSE|0","INKEY$","INP","INPUT","INPUT#","INPUT$","INSTR","IMP","INT","IOCTL","IOCTL$","KEY","ON","OFF","LIST","KILL","LEFT$","LEN","LET","LINE","LLIST","LOAD","LOC","LOCATE","LOF","LOG","LPRINT","USING","LSET","MERGE","MID$","MKDIR","MKD$","MKI$","MKS$","MOD","NAME","NEW","NEXT","NOISE","NOT","OCT$","ON","OR","PEN","PLAY","STRIG","OPEN","OPTION","BASE","OUT","PAINT","PALETTE","PCOPY","PEEK","PMAP","POINT","POKE","POS","PRINT","PRINT]","PSET","PRESET","PUT","RANDOMIZE","READ","REM","RENUM","RESET|0","RESTORE","RESUME","RETURN|0","RIGHT$","RMDIR","RND","RSET","RUN","SAVE","SCREEN","SGN","SHELL","SIN","SOUND","SPACE$","SPC","SQR","STEP","STICK","STOP","STR$","STRING$","SWAP","SYSTEM","TAB","TAN","TIME$","TIMER","TROFF","TRON","TO","USR","VAL","VARPTR","VARPTR$","VIEW","WAIT","WHILE","WEND","WIDTH","WINDOW","WRITE","XOR"]
+},contains:[E.QUOTE_STRING_MODE,E.COMMENT("REM","$",{relevance:10
+}),E.COMMENT("'","$",{relevance:0}),{className:"symbol",begin:"^[0-9]+ ",
+relevance:10},{className:"number",begin:"\\b\\d+(\\.\\d+)?([edED]\\d+)?[#!]?",
+relevance:0},{className:"number",begin:"(&[hH][0-9a-fA-F]{1,4})"},{
+className:"number",begin:"(&[oO][0-7]{1,6})"}]})})()
+;hljs.registerLanguage("basic",E)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/bnf.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/bnf.min.js
new file mode 100644
index 0000000..76f748b
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/bnf.min.js
@@ -0,0 +1,6 @@
+/*! `bnf` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Backus\u2013Naur Form",
+contains:[{className:"attribute",begin:/</,end:/>/},{begin:/::=/,end:/$/,
+contains:[{begin:/</,end:/>/
+},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]
+}]})})();hljs.registerLanguage("bnf",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/brainfuck.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/brainfuck.min.js
new file mode 100644
index 0000000..8756627
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/brainfuck.min.js
@@ -0,0 +1,7 @@
+/*! `brainfuck` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n={className:"literal",
+begin:/[+-]/,relevance:0};return{name:"Brainfuck",aliases:["bf"],
+contains:[e.COMMENT("[^\\[\\]\\.,\\+\\-<> \r\n]","[\\[\\]\\.,\\+\\-<> \r\n]",{
+returnEnd:!0,relevance:0}),{className:"title",begin:"[\\[\\]]",relevance:0},{
+className:"string",begin:"[\\.,]",relevance:0},{begin:/(?:\+\+|--)/,contains:[n]
+},n]}}})();hljs.registerLanguage("brainfuck",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/c.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/c.min.js
new file mode 100644
index 0000000..438ea14
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/c.min.js
@@ -0,0 +1,41 @@
+/*! `c` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n=e.regex,t=e.COMMENT("//","$",{
+contains:[{begin:/\\\n/}]
+}),s="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+n.optional(s)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",r={
+className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{
+match:/\batomic_[a-z]{3,6}\b/}]},i={className:"string",variants:[{
+begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{
+begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",
+end:"'",illegal:"."},e.END_SAME_AS_BEGIN({
+begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},l={
+className:"number",variants:[{begin:"\\b(0b[01']+)"},{
+begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"
+},{
+begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"
+}],relevance:0},o={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{
+keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"
+},contains:[{begin:/\\\n/,relevance:0},e.inherit(i,{className:"string"}),{
+className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},c={
+className:"title",begin:n.optional(s)+e.IDENT_RE,relevance:0
+},d=n.optional(s)+e.IDENT_RE+"\\s*\\(",u={
+keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],
+type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal128","const","static","complex","bool","imaginary"],
+literal:"true false NULL",
+built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"
+},g=[o,r,t,e.C_BLOCK_COMMENT_MODE,l,i],m={variants:[{begin:/=/,end:/;/},{
+begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],
+keywords:u,contains:g.concat([{begin:/\(/,end:/\)/,keywords:u,
+contains:g.concat(["self"]),relevance:0}]),relevance:0},p={
+begin:"("+a+"[\\*&\\s]+)+"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,
+keywords:u,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)",
+keywords:u,relevance:0},{begin:d,returnBegin:!0,contains:[e.inherit(c,{
+className:"title.function"})],relevance:0},{relevance:0,match:/,/},{
+className:"params",begin:/\(/,end:/\)/,keywords:u,relevance:0,
+contains:[t,e.C_BLOCK_COMMENT_MODE,i,l,r,{begin:/\(/,end:/\)/,keywords:u,
+relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,i,l,r]}]
+},r,t,e.C_BLOCK_COMMENT_MODE,o]};return{name:"C",aliases:["h"],keywords:u,
+disableAutodetect:!0,illegal:"</",contains:[].concat(m,p,g,[o,{
+begin:e.IDENT_RE+"::",keywords:u},{className:"class",
+beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{
+beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:o,
+strings:i,keywords:u}}}})();hljs.registerLanguage("c",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/cal.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/cal.min.js
new file mode 100644
index 0000000..45a56fe
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/cal.min.js
@@ -0,0 +1,14 @@
+/*! `cal` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const n="div mod in and or not xor asserterror begin case do downto else end exit for if of repeat then to until while with var",a=[e.C_LINE_COMMENT_MODE,e.COMMENT(/\{/,/\}/,{
+relevance:0}),e.COMMENT(/\(\*/,/\*\)/,{relevance:10})],r={className:"string",
+begin:/'/,end:/'/,contains:[{begin:/''/}]},s={className:"string",begin:/(#\d+)+/
+},i={className:"function",beginKeywords:"procedure",end:/[:;]/,
+keywords:"procedure|10",contains:[e.TITLE_MODE,{className:"params",begin:/\(/,
+end:/\)/,keywords:n,contains:[r,s]}].concat(a)},t={className:"class",
+begin:"OBJECT (Table|Form|Report|Dataport|Codeunit|XMLport|MenuSuite|Page|Query) (\\d+) ([^\\r\\n]+)",
+returnBegin:!0,contains:[e.TITLE_MODE,i]};return{name:"C/AL",
+case_insensitive:!0,keywords:{keyword:n,literal:"false true"},illegal:/\/\*/,
+contains:[r,s,{className:"number",begin:"\\b\\d+(\\.\\d+)?(DT|D|T)",relevance:0
+},{className:"string",begin:'"',end:'"'},e.NUMBER_MODE,t,i]}}})()
+;hljs.registerLanguage("cal",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/capnproto.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/capnproto.min.js
new file mode 100644
index 0000000..9a0e5a4
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/capnproto.min.js
@@ -0,0 +1,13 @@
+/*! `capnproto` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var n=(()=>{"use strict";return n=>({name:"Cap\u2019n Proto",
+aliases:["capnp"],keywords:{
+keyword:["struct","enum","interface","union","group","import","using","const","annotation","extends","in","of","on","as","with","from","fixed"],
+built_in:["Void","Bool","Int8","Int16","Int32","Int64","UInt8","UInt16","UInt32","UInt64","Float32","Float64","Text","Data","AnyPointer","AnyStruct","Capability","List"],
+literal:["true","false"]},
+contains:[n.QUOTE_STRING_MODE,n.NUMBER_MODE,n.HASH_COMMENT_MODE,{
+className:"meta",begin:/@0x[\w\d]{16};/,illegal:/\n/},{className:"symbol",
+begin:/@\d+\b/},{className:"class",beginKeywords:"struct enum",end:/\{/,
+illegal:/\n/,contains:[n.inherit(n.TITLE_MODE,{starts:{endsWithParent:!0,
+excludeEnd:!0}})]},{className:"class",beginKeywords:"interface",end:/\{/,
+illegal:/\n/,contains:[n.inherit(n.TITLE_MODE,{starts:{endsWithParent:!0,
+excludeEnd:!0}})]}]})})();hljs.registerLanguage("capnproto",n)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/ceylon.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/ceylon.min.js
new file mode 100644
index 0000000..a4f2d58
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/ceylon.min.js
@@ -0,0 +1,15 @@
+/*! `ceylon` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const a=["assembly","module","package","import","alias","class","interface","object","given","value","assign","void","function","new","of","extends","satisfies","abstracts","in","out","return","break","continue","throw","assert","dynamic","if","else","switch","case","for","while","try","catch","finally","then","let","this","outer","super","is","exists","nonempty"],s={
+className:"subst",excludeBegin:!0,excludeEnd:!0,begin:/``/,end:/``/,keywords:a,
+relevance:10},n=[{className:"string",begin:'"""',end:'"""',relevance:10},{
+className:"string",begin:'"',end:'"',contains:[s]},{className:"string",
+begin:"'",end:"'"},{className:"number",
+begin:"#[0-9a-fA-F_]+|\\$[01_]+|[0-9_]+(?:\\.[0-9_](?:[eE][+-]?\\d+)?)?[kMGTPmunpf]?",
+relevance:0}];return s.contains=n,{name:"Ceylon",keywords:{
+keyword:a.concat(["shared","abstract","formal","default","actual","variable","late","native","deprecated","final","sealed","annotation","suppressWarnings","small"]),
+meta:["doc","by","license","see","throws","tagged"]},
+illegal:"\\$[^01]|#[^0-9a-fA-F]",
+contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),{
+className:"meta",begin:'@[a-z]\\w*(?::"[^"]*")?'}].concat(n)}}})()
+;hljs.registerLanguage("ceylon",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/clean.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/clean.min.js
new file mode 100644
index 0000000..b37069d
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/clean.min.js
@@ -0,0 +1,8 @@
+/*! `clean` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Clean",aliases:["icl","dcl"],
+keywords:{
+keyword:["if","let","in","with","where","case","of","class","instance","otherwise","implementation","definition","system","module","from","import","qualified","as","special","code","inline","foreign","export","ccall","stdcall","generic","derive","infix","infixl","infixr"],
+built_in:"Int Real Char Bool",literal:"True False"},
+contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{
+begin:"->|<-[|:]?|#!?|>>=|\\{\\||\\|\\}|:==|=:|<>"}]})})()
+;hljs.registerLanguage("clean",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/clojure-repl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/clojure-repl.min.js
new file mode 100644
index 0000000..342d710
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/clojure-repl.min.js
@@ -0,0 +1,4 @@
+/*! `clojure-repl` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Clojure REPL",contains:[{
+className:"meta",begin:/^([\w.-]+|\s*#_)?=>/,starts:{end:/$/,
+subLanguage:"clojure"}}]})})();hljs.registerLanguage("clojure-repl",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/clojure.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/clojure.min.js
new file mode 100644
index 0000000..2b3bf73
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/clojure.min.js
@@ -0,0 +1,19 @@
+/*! `clojure` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const t="a-zA-Z_\\-!.?+*=<>&#'",n="["+t+"]["+t+"0-9/;:]*",r="def defonce defprotocol defstruct defmulti defmethod defn- defn defmacro deftype defrecord",a={
+$pattern:n,
+built_in:r+" cond apply if-not if-let if not not= =|0 <|0 >|0 <=|0 >=|0 ==|0 +|0 /|0 *|0 -|0 rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy first rest cons cast coll last butlast sigs reify second ffirst fnext nfirst nnext meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize"
+},s={begin:n,relevance:0},o={className:"number",begin:"[-+]?\\d+(\\.\\d+)?",
+relevance:0},i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null
+}),c=e.COMMENT(";","$",{relevance:0}),d={className:"literal",
+begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]",relevance:0
+},m={className:"comment",begin:"\\^"+n},p=e.COMMENT("\\^\\{","\\}"),u={
+className:"symbol",begin:"[:]{1,2}"+n},f={begin:"\\(",end:"\\)"},h={
+endsWithParent:!0,relevance:0},y={keywords:a,className:"name",begin:n,
+relevance:0,starts:h},g=[f,i,m,p,c,u,l,o,d,s],b={beginKeywords:r,keywords:{
+$pattern:n,keyword:r},end:'(\\[|#|\\d|"|:|\\{|\\)|\\(|$)',contains:[{
+className:"title",begin:n,relevance:0,excludeEnd:!0,endsParent:!0}].concat(g)}
+;return f.contains=[e.COMMENT("comment",""),b,y,h],
+h.contains=g,l.contains=g,p.contains=[l],{name:"Clojure",aliases:["clj","edn"],
+illegal:/\S/,contains:[f,i,m,p,c,u,l,o,d]}}})()
+;hljs.registerLanguage("clojure",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/cmake.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/cmake.min.js
new file mode 100644
index 0000000..2153090
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/cmake.min.js
@@ -0,0 +1,7 @@
+/*! `cmake` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"CMake",aliases:["cmake.in"],
+case_insensitive:!0,keywords:{
+keyword:"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined"
+},contains:[{className:"variable",begin:/\$\{/,end:/\}/
+},e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE]})})()
+;hljs.registerLanguage("cmake",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/coffeescript.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/coffeescript.min.js
new file mode 100644
index 0000000..d3318c2
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/coffeescript.min.js
@@ -0,0 +1,29 @@
+/*! `coffeescript` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict"
+;const e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],n=["true","false","null","undefined","NaN","Infinity"],r=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"])
+;return a=>{const t={
+keyword:e.concat(["then","unless","until","loop","by","when","and","or","is","isnt","not"]).filter((i=["var","const","let","function","static"],
+e=>!i.includes(e))),literal:n.concat(["yes","no","on","off"]),
+built_in:r.concat(["npm","print"])};var i;const s="[A-Za-z$_][0-9A-Za-z$_]*",o={
+className:"subst",begin:/#\{/,end:/\}/,keywords:t
+},c=[a.BINARY_NUMBER_MODE,a.inherit(a.C_NUMBER_MODE,{starts:{end:"(\\s*/)?",
+relevance:0}}),{className:"string",variants:[{begin:/'''/,end:/'''/,
+contains:[a.BACKSLASH_ESCAPE]},{begin:/'/,end:/'/,contains:[a.BACKSLASH_ESCAPE]
+},{begin:/"""/,end:/"""/,contains:[a.BACKSLASH_ESCAPE,o]},{begin:/"/,end:/"/,
+contains:[a.BACKSLASH_ESCAPE,o]}]},{className:"regexp",variants:[{begin:"///",
+end:"///",contains:[o,a.HASH_COMMENT_MODE]},{begin:"//[gim]{0,3}(?=\\W)",
+relevance:0},{begin:/\/(?![ *]).*?(?![\\]).\/[gim]{0,3}(?=\W)/}]},{begin:"@"+s
+},{subLanguage:"javascript",excludeBegin:!0,excludeEnd:!0,variants:[{
+begin:"```",end:"```"},{begin:"`",end:"`"}]}];o.contains=c
+;const l=a.inherit(a.TITLE_MODE,{begin:s}),d="(\\(.*\\)\\s*)?\\B[-=]>",g={
+className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/,
+end:/\)/,keywords:t,contains:["self"].concat(c)}]};return{name:"CoffeeScript",
+aliases:["coffee","cson","iced"],keywords:t,illegal:/\/\*/,
+contains:[...c,a.COMMENT("###","###"),a.HASH_COMMENT_MODE,{className:"function",
+begin:"^\\s*"+s+"\\s*=\\s*"+d,end:"[-=]>",returnBegin:!0,contains:[l,g]},{
+begin:/[:\(,=]\s*/,relevance:0,contains:[{className:"function",begin:d,
+end:"[-=]>",returnBegin:!0,contains:[g]}]},{className:"class",
+beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{
+beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[l]},l]
+},{begin:s+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}]}}})()
+;hljs.registerLanguage("coffeescript",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/coq.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/coq.min.js
new file mode 100644
index 0000000..2e4d81c
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/coq.min.js
@@ -0,0 +1,7 @@
+/*! `coq` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Coq",keywords:{
+keyword:["_|0","as","at","cofix","else","end","exists","exists2","fix","for","forall","fun","if","IF","in","let","match","mod","Prop","return","Set","then","Type","using","where","with","Abort","About","Add","Admit","Admitted","All","Arguments","Assumptions","Axiom","Back","BackTo","Backtrack","Bind","Blacklist","Canonical","Cd","Check","Class","Classes","Close","Coercion","Coercions","CoFixpoint","CoInductive","Collection","Combined","Compute","Conjecture","Conjectures","Constant","constr","Constraint","Constructors","Context","Corollary","CreateHintDb","Cut","Declare","Defined","Definition","Delimit","Dependencies","Dependent","Derive","Drop","eauto","End","Equality","Eval","Example","Existential","Existentials","Existing","Export","exporting","Extern","Extract","Extraction","Fact","Field","Fields","File","Fixpoint","Focus","for","From","Function","Functional","Generalizable","Global","Goal","Grab","Grammar","Graph","Guarded","Heap","Hint","HintDb","Hints","Hypotheses","Hypothesis","ident","Identity","If","Immediate","Implicit","Import","Include","Inductive","Infix","Info","Initial","Inline","Inspect","Instance","Instances","Intro","Intros","Inversion","Inversion_clear","Language","Left","Lemma","Let","Libraries","Library","Load","LoadPath","Local","Locate","Ltac","ML","Mode","Module","Modules","Monomorphic","Morphism","Next","NoInline","Notation","Obligation","Obligations","Opaque","Open","Optimize","Options","Parameter","Parameters","Parametric","Path","Paths","pattern","Polymorphic","Preterm","Print","Printing","Program","Projections","Proof","Proposition","Pwd","Qed","Quit","Rec","Record","Recursive","Redirect","Relation","Remark","Remove","Require","Reserved","Reset","Resolve","Restart","Rewrite","Right","Ring","Rings","Save","Scheme","Scope","Scopes","Script","Search","SearchAbout","SearchHead","SearchPattern","SearchRewrite","Section","Separate","Set","Setoid","Show","Solve","Sorted","Step","Strategies","Strategy","Structure","SubClass","Table","Tables","Tactic","Term","Test","Theorem","Time","Timeout","Transparent","Type","Typeclasses","Types","Undelimit","Undo","Unfocus","Unfocused","Unfold","Universe","Universes","Unset","Unshelve","using","Variable","Variables","Variant","Verbose","Visibility","where","with"],
+built_in:["abstract","absurd","admit","after","apply","as","assert","assumption","at","auto","autorewrite","autounfold","before","bottom","btauto","by","case","case_eq","cbn","cbv","change","classical_left","classical_right","clear","clearbody","cofix","compare","compute","congruence","constr_eq","constructor","contradict","contradiction","cut","cutrewrite","cycle","decide","decompose","dependent","destruct","destruction","dintuition","discriminate","discrR","do","double","dtauto","eapply","eassumption","eauto","ecase","econstructor","edestruct","ediscriminate","eelim","eexact","eexists","einduction","einjection","eleft","elim","elimtype","enough","equality","erewrite","eright","esimplify_eq","esplit","evar","exact","exactly_once","exfalso","exists","f_equal","fail","field","field_simplify","field_simplify_eq","first","firstorder","fix","fold","fourier","functional","generalize","generalizing","gfail","give_up","has_evar","hnf","idtac","in","induction","injection","instantiate","intro","intro_pattern","intros","intuition","inversion","inversion_clear","is_evar","is_var","lapply","lazy","left","lia","lra","move","native_compute","nia","nsatz","omega","once","pattern","pose","progress","proof","psatz","quote","record","red","refine","reflexivity","remember","rename","repeat","replace","revert","revgoals","rewrite","rewrite_strat","right","ring","ring_simplify","rtauto","set","setoid_reflexivity","setoid_replace","setoid_rewrite","setoid_symmetry","setoid_transitivity","shelve","shelve_unifiable","simpl","simple","simplify_eq","solve","specialize","split","split_Rabs","split_Rmult","stepl","stepr","subst","sum","swap","symmetry","tactic","tauto","time","timeout","top","transitivity","trivial","try","tryif","unfold","unify","until","using","vm_compute","with"]
+},contains:[e.QUOTE_STRING_MODE,e.COMMENT("\\(\\*","\\*\\)"),e.C_NUMBER_MODE,{
+className:"type",excludeBegin:!0,begin:"\\|\\s*",end:"\\w+"},{begin:/[-=]>/}]})
+})();hljs.registerLanguage("coq",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/cos.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/cos.min.js
new file mode 100644
index 0000000..63f518f
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/cos.min.js
@@ -0,0 +1,15 @@
+/*! `cos` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Cach\xe9 Object Script",
+case_insensitive:!0,aliases:["cls"],
+keywords:"property parameter class classmethod clientmethod extends as break catch close continue do d|0 else elseif for goto halt hang h|0 if job j|0 kill k|0 lock l|0 merge new open quit q|0 read r|0 return set s|0 tcommit throw trollback try tstart use view while write w|0 xecute x|0 zkill znspace zn ztrap zwrite zw zzdump zzwrite print zbreak zinsert zload zprint zremove zsave zzprint mv mvcall mvcrt mvdim mvprint zquit zsync ascii",
+contains:[{className:"number",begin:"\\b(\\d+(\\.\\d*)?|\\.\\d+)",relevance:0},{
+className:"string",variants:[{begin:'"',end:'"',contains:[{begin:'""',
+relevance:0}]}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{
+className:"comment",begin:/;/,end:"$",relevance:0},{className:"built_in",
+begin:/(?:\$\$?|\.\.)\^?[a-zA-Z]+/},{className:"built_in",
+begin:/\$\$\$[a-zA-Z]+/},{className:"built_in",begin:/%[a-z]+(?:\.[a-z]+)*/},{
+className:"symbol",begin:/\^%?[a-zA-Z][\w]*/},{className:"keyword",
+begin:/##class|##super|#define|#dim/},{begin:/&sql\(/,end:/\)/,excludeBegin:!0,
+excludeEnd:!0,subLanguage:"sql"},{begin:/&(js|jscript|javascript)</,end:/>/,
+excludeBegin:!0,excludeEnd:!0,subLanguage:"javascript"},{begin:/&html<\s*</,
+end:/>\s*>/,subLanguage:"xml"}]})})();hljs.registerLanguage("cos",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/cpp.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/cpp.min.js
new file mode 100644
index 0000000..f7d6cac
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/cpp.min.js
@@ -0,0 +1,47 @@
+/*! `cpp` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const t=e.regex,a=e.COMMENT("//","$",{
+contains:[{begin:/\\\n/}]
+}),n="[a-zA-Z_]\\w*::",r="(?!struct)(decltype\\(auto\\)|"+t.optional(n)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",i={
+className:"type",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string",variants:[{
+begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{
+begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",
+end:"'",illegal:"."},e.END_SAME_AS_BEGIN({
+begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},c={
+className:"number",variants:[{begin:"\\b(0b[01']+)"},{
+begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"
+},{
+begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"
+}],relevance:0},o={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{
+keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"
+},contains:[{begin:/\\\n/,relevance:0},e.inherit(s,{className:"string"}),{
+className:"string",begin:/<.*?>/},a,e.C_BLOCK_COMMENT_MODE]},l={
+className:"title",begin:t.optional(n)+e.IDENT_RE,relevance:0
+},d=t.optional(n)+e.IDENT_RE+"\\s*\\(",u={
+type:["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],
+keyword:["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],
+literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],
+_type_hints:["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"]
+},p={className:"function.dispatch",relevance:0,keywords:{
+_hint:["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"]
+},
+begin:t.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,t.lookahead(/(<[^<>]+>|)\s*\(/))
+},_=[p,o,i,a,e.C_BLOCK_COMMENT_MODE,c,s],m={variants:[{begin:/=/,end:/;/},{
+begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],
+keywords:u,contains:_.concat([{begin:/\(/,end:/\)/,keywords:u,
+contains:_.concat(["self"]),relevance:0}]),relevance:0},g={className:"function",
+begin:"("+r+"[\\*&\\s]+)+"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,
+keywords:u,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)",
+keywords:u,relevance:0},{begin:d,returnBegin:!0,contains:[l],relevance:0},{
+begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[s,c]},{
+relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:u,
+relevance:0,contains:[a,e.C_BLOCK_COMMENT_MODE,s,c,i,{begin:/\(/,end:/\)/,
+keywords:u,relevance:0,contains:["self",a,e.C_BLOCK_COMMENT_MODE,s,c,i]}]
+},i,a,e.C_BLOCK_COMMENT_MODE,o]};return{name:"C++",
+aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:u,illegal:"</",
+classNameAliases:{"function.dispatch":"built_in"},
+contains:[].concat(m,g,p,_,[o,{
+begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function)\\s*<",
+end:">",keywords:u,contains:["self",i]},{begin:e.IDENT_RE+"::",keywords:u},{
+match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],
+className:{1:"keyword",3:"title.class"}}])}}})();hljs.registerLanguage("cpp",e)
+})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/crmsh.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/crmsh.min.js
new file mode 100644
index 0000000..5c45bdf
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/crmsh.min.js
@@ -0,0 +1,19 @@
+/*! `crmsh` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const t="group clone ms master location colocation order fencing_topology rsc_ticket acl_target acl_group user role tag xml"
+;return{name:"crmsh",aliases:["crm","pcmk"],case_insensitive:!0,keywords:{
+keyword:"params meta operations op rule attributes utilization read write deny defined not_defined in_range date spec in ref reference attribute type xpath version and or lt gt tag lte gte eq ne \\ number string",
+literal:"Master Started Slave Stopped start promote demote stop monitor true false"
+},contains:[e.HASH_COMMENT_MODE,{beginKeywords:"node",starts:{
+end:"\\s*([\\w_-]+:)?",starts:{className:"title",end:"\\s*[\\$\\w_][\\w_-]*"}}
+},{beginKeywords:"primitive rsc_template",starts:{className:"title",
+end:"\\s*[\\$\\w_][\\w_-]*",starts:{end:"\\s*@?[\\w_][\\w_\\.:-]*"}}},{
+begin:"\\b("+t.split(" ").join("|")+")\\s+",keywords:t,starts:{
+className:"title",end:"[\\$\\w_][\\w_-]*"}},{
+beginKeywords:"property rsc_defaults op_defaults",starts:{className:"title",
+end:"\\s*([\\w_-]+:)?"}},e.QUOTE_STRING_MODE,{className:"meta",
+begin:"(ocf|systemd|service|lsb):[\\w_:-]+",relevance:0},{className:"number",
+begin:"\\b\\d+(\\.\\d+)?(ms|s|h|m)?",relevance:0},{className:"literal",
+begin:"[-]?(infinity|inf)",relevance:0},{className:"attr",
+begin:/([A-Za-z$_#][\w_-]+)=/,relevance:0},{className:"tag",begin:"</?",
+end:"/?>",relevance:0}]}}})();hljs.registerLanguage("crmsh",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/crystal.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/crystal.min.js
new file mode 100644
index 0000000..f033c02
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/crystal.min.js
@@ -0,0 +1,48 @@
+/*! `crystal` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const n="(_?[ui](8|16|32|64|128))?",i="[a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|[=!]~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~|]|//|//=|&[-+*]=?|&\\*\\*|\\[\\][=?]?",s="[A-Za-z_]\\w*(::\\w+)*(\\?|!)?",a={
+$pattern:"[a-zA-Z_]\\w*[!?=]?",
+keyword:"abstract alias annotation as as? asm begin break case class def do else elsif end ensure enum extend for fun if include instance_sizeof is_a? lib macro module next nil? of out pointerof private protected rescue responds_to? return require select self sizeof struct super then type typeof union uninitialized unless until verbatim when while with yield __DIR__ __END_LINE__ __FILE__ __LINE__",
+literal:"false nil true"},t={className:"subst",begin:/#\{/,end:/\}/,keywords:a
+},c={className:"template-variable",variants:[{begin:"\\{\\{",end:"\\}\\}"},{
+begin:"\\{%",end:"%\\}"}],keywords:a};function r(e,n){const i=[{begin:e,end:n}]
+;return i[0].contains=i,i}const l={className:"string",
+contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/
+},{begin:/`/,end:/`/},{begin:"%[Qwi]?\\(",end:"\\)",contains:r("\\(","\\)")},{
+begin:"%[Qwi]?\\[",end:"\\]",contains:r("\\[","\\]")},{begin:"%[Qwi]?\\{",
+end:/\}/,contains:r(/\{/,/\}/)},{begin:"%[Qwi]?<",end:">",contains:r("<",">")},{
+begin:"%[Qwi]?\\|",end:"\\|"},{begin:/<<-\w+$/,end:/^\s*\w+$/}],relevance:0},b={
+className:"string",variants:[{begin:"%q\\(",end:"\\)",contains:r("\\(","\\)")},{
+begin:"%q\\[",end:"\\]",contains:r("\\[","\\]")},{begin:"%q\\{",end:/\}/,
+contains:r(/\{/,/\}/)},{begin:"%q<",end:">",contains:r("<",">")},{begin:"%q\\|",
+end:"\\|"},{begin:/<<-'\w+'$/,end:/^\s*\w+$/}],relevance:0},o={
+begin:"(?!%\\})("+e.RE_STARTERS_RE+"|\\n|\\b(case|if|select|unless|until|when|while)\\b)\\s*",
+keywords:"case if select unless until when while",contains:[{className:"regexp",
+contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:"//[a-z]*",relevance:0},{
+begin:"/(?!\\/)",end:"/[a-z]*"}]}],relevance:0},g=[c,l,b,{className:"regexp",
+contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:"%r\\(",end:"\\)",
+contains:r("\\(","\\)")},{begin:"%r\\[",end:"\\]",contains:r("\\[","\\]")},{
+begin:"%r\\{",end:/\}/,contains:r(/\{/,/\}/)},{begin:"%r<",end:">",
+contains:r("<",">")},{begin:"%r\\|",end:"\\|"}],relevance:0},o,{
+className:"meta",begin:"@\\[",end:"\\]",
+contains:[e.inherit(e.QUOTE_STRING_MODE,{className:"string"})]},{
+className:"variable",
+begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"
+},e.HASH_COMMENT_MODE,{className:"class",beginKeywords:"class module struct",
+end:"$|;",illegal:/=/,contains:[e.HASH_COMMENT_MODE,e.inherit(e.TITLE_MODE,{
+begin:s}),{begin:"<"}]},{className:"class",beginKeywords:"lib enum union",
+end:"$|;",illegal:/=/,contains:[e.HASH_COMMENT_MODE,e.inherit(e.TITLE_MODE,{
+begin:s})]},{beginKeywords:"annotation",end:"$|;",illegal:/=/,
+contains:[e.HASH_COMMENT_MODE,e.inherit(e.TITLE_MODE,{begin:s})],relevance:2},{
+className:"function",beginKeywords:"def",end:/\B\b/,
+contains:[e.inherit(e.TITLE_MODE,{begin:i,endsParent:!0})]},{
+className:"function",beginKeywords:"fun macro",end:/\B\b/,
+contains:[e.inherit(e.TITLE_MODE,{begin:i,endsParent:!0})],relevance:2},{
+className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{
+className:"symbol",begin:":",contains:[l,{begin:i}],relevance:0},{
+className:"number",variants:[{begin:"\\b0b([01_]+)"+n},{begin:"\\b0o([0-7_]+)"+n
+},{begin:"\\b0x([A-Fa-f0-9_]+)"+n},{
+begin:"\\b([1-9][0-9_]*[0-9]|[0-9])(\\.[0-9][0-9_]*)?([eE]_?[-+]?[0-9_]*)?(_?f(32|64))?(?!_)"
+},{begin:"\\b([1-9][0-9_]*|0)"+n}],relevance:0}]
+;return t.contains=g,c.contains=g.slice(1),{name:"Crystal",aliases:["cr"],
+keywords:a,contains:g}}})();hljs.registerLanguage("crystal",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/csharp.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/csharp.min.js
new file mode 100644
index 0000000..c06e1b7
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/csharp.min.js
@@ -0,0 +1,47 @@
+/*! `csharp` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n={
+keyword:["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","async","await","by","descending","equals","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","remove","select","set","unmanaged","value|0","var","when","where","with","yield"]),
+built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"],
+literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{
+begin:"[a-zA-Z](\\.?\\w)*"}),i={className:"number",variants:[{
+begin:"\\b(0b[01']+)"},{
+begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{
+begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"
+}],relevance:0},s={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]
+},t=e.inherit(s,{illegal:/\n/}),r={className:"subst",begin:/\{/,end:/\}/,
+keywords:n},l=e.inherit(r,{illegal:/\n/}),c={className:"string",begin:/\$"/,
+end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/
+},e.BACKSLASH_ESCAPE,l]},o={className:"string",begin:/\$@"/,end:'"',contains:[{
+begin:/\{\{/},{begin:/\}\}/},{begin:'""'},r]},d=e.inherit(o,{illegal:/\n/,
+contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]})
+;r.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_BLOCK_COMMENT_MODE],
+l.contains=[d,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.inherit(e.C_BLOCK_COMMENT_MODE,{
+illegal:/\n/})];const g={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]
+},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},a]
+},_=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",b={
+begin:"@"+e.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],
+keywords:n,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,
+contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{
+begin:"\x3c!--|--\x3e"},{begin:"</?",end:">"}]}]
+}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",
+end:"$",keywords:{
+keyword:"if else elif endif define undef warning error line region endregion pragma checksum"
+}},g,i,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,
+illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"
+},a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",
+relevance:0,end:/[{;=]/,illegal:/[^\s:]/,
+contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{
+beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,
+contains:[a,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",
+begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{
+className:"string",begin:/"/,end:/"/}]},{
+beginKeywords:"new return throw await else",relevance:0},{className:"function",
+begin:"("+_+"\\s+)+"+e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,
+end:/\s*[{;=]/,excludeEnd:!0,keywords:n,contains:[{
+beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial",
+relevance:0},{begin:e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,
+contains:[e.TITLE_MODE,E],relevance:0},{match:/\(\)/},{className:"params",
+begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,relevance:0,
+contains:[g,i,e.C_BLOCK_COMMENT_MODE]
+},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}})()
+;hljs.registerLanguage("csharp",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/csp.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/csp.min.js
new file mode 100644
index 0000000..1c2aece
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/csp.min.js
@@ -0,0 +1,7 @@
+/*! `csp` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var s=(()=>{"use strict";return s=>({name:"CSP",case_insensitive:!1,
+keywords:{$pattern:"[a-zA-Z][a-zA-Z0-9_-]*",
+keyword:["base-uri","child-src","connect-src","default-src","font-src","form-action","frame-ancestors","frame-src","img-src","manifest-src","media-src","object-src","plugin-types","report-uri","sandbox","script-src","style-src","trusted-types","unsafe-hashes","worker-src"]
+},contains:[{className:"string",begin:"'",end:"'"},{className:"attribute",
+begin:"^Content",end:":",excludeEnd:!0}]})})();hljs.registerLanguage("csp",s)
+})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/css.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/css.min.js
new file mode 100644
index 0000000..ed15435
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/css.min.js
@@ -0,0 +1,31 @@
+/*! `css` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict"
+;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-height","max-width","min-height","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse()
+;return a=>{const n=a.regex,l=(e=>({IMPORTANT:{scope:"meta",begin:"!important"},
+BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",
+begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{
+className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{
+scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",
+contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{
+scope:"number",
+begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",
+relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/}
+}))(a),s=[a.APOS_STRING_MODE,a.QUOTE_STRING_MODE];return{name:"CSS",
+case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},
+classNameAliases:{keyframePosition:"selector-tag"},contains:[l.BLOCK_COMMENT,{
+begin:/-(webkit|moz|ms|o)-(?=[a-z])/},l.CSS_NUMBER_MODE,{
+className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{
+className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0
+},l.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{
+begin:":("+i.join("|")+")"},{begin:":(:)?("+o.join("|")+")"}]},l.CSS_VARIABLE,{
+className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,
+contains:[l.BLOCK_COMMENT,l.HEXCOLOR,l.IMPORTANT,l.CSS_NUMBER_MODE,...s,{
+begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"
+},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]
+},l.FUNCTION_DISPATCH]},{begin:n.lookahead(/@/),end:"[{;]",relevance:0,
+illegal:/:/,contains:[{className:"keyword",begin:/@-?\w[\w]*(-\w+)*/},{
+begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{
+$pattern:/[a-z-]+/,keyword:"and or not only",attribute:t.join(" ")},contains:[{
+begin:/[a-z-]+(?=:)/,className:"attribute"},...s,l.CSS_NUMBER_MODE]}]},{
+className:"selector-tag",begin:"\\b("+e.join("|")+")\\b"}]}}})()
+;hljs.registerLanguage("css",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/d.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/d.min.js
new file mode 100644
index 0000000..66490b4
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/d.min.js
@@ -0,0 +1,20 @@
+/*! `d` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const a={
+$pattern:e.UNDERSCORE_IDENT_RE,
+keyword:"abstract alias align asm assert auto body break byte case cast catch class const continue debug default delete deprecated do else enum export extern final finally for foreach foreach_reverse|10 goto if immutable import in inout int interface invariant is lazy macro mixin module new nothrow out override package pragma private protected public pure ref return scope shared static struct super switch synchronized template this throw try typedef typeid typeof union unittest version void volatile while with __FILE__ __LINE__ __gshared|10 __thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__",
+built_in:"bool cdouble cent cfloat char creal dchar delegate double dstring float function idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar wstring",
+literal:"false null true"
+},d="((0|[1-9][\\d_]*)|0[bB][01_]+|0[xX]([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))",n="\\\\(['\"\\?\\\\abfnrtv]|u[\\dA-Fa-f]{4}|[0-7]{1,3}|x[\\dA-Fa-f]{2}|U[\\dA-Fa-f]{8})|&[a-zA-Z\\d]{2,};",t={
+className:"number",begin:"\\b"+d+"(L|u|U|Lu|LU|uL|UL)?",relevance:0},_={
+className:"number",
+begin:"\\b(((0[xX](([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)\\.([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)|\\.?([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))[pP][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))|((0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)(\\.\\d*|([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)))|\\d+\\.(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)|\\.(0|[1-9][\\d_]*)([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))?))([fF]|L|i|[fF]i|Li)?|"+d+"(i|[fF]i|Li))",
+relevance:0},r={className:"string",begin:"'("+n+"|.)",end:"'",illegal:"."},i={
+className:"string",begin:'"',contains:[{begin:n,relevance:0}],end:'"[cwd]?'
+},s=e.COMMENT("\\/\\+","\\+\\/",{contains:["self"],relevance:10});return{
+name:"D",keywords:a,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,{
+className:"string",begin:'x"[\\da-fA-F\\s\\n\\r]*"[cwd]?',relevance:10},i,{
+className:"string",begin:'[rq]"',end:'"[cwd]?',relevance:5},{className:"string",
+begin:"`",end:"`[cwd]?"},{className:"string",begin:'q"\\{',end:'\\}"'},_,t,r,{
+className:"meta",begin:"^#!",end:"$",relevance:5},{className:"meta",
+begin:"#(line)",end:"$",relevance:5},{className:"keyword",
+begin:"@[a-zA-Z_][a-zA-Z_\\d]*"}]}}})();hljs.registerLanguage("d",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/dart.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/dart.min.js
new file mode 100644
index 0000000..c6d69ef
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/dart.min.js
@@ -0,0 +1,22 @@
+/*! `dart` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n={className:"subst",variants:[{
+begin:"\\$[A-Za-z0-9_]+"}]},a={className:"subst",variants:[{begin:/\$\{/,
+end:/\}/}],keywords:"true false null this is new super"},t={className:"string",
+variants:[{begin:"r'''",end:"'''"},{begin:'r"""',end:'"""'},{begin:"r'",end:"'",
+illegal:"\\n"},{begin:'r"',end:'"',illegal:"\\n"},{begin:"'''",end:"'''",
+contains:[e.BACKSLASH_ESCAPE,n,a]},{begin:'"""',end:'"""',
+contains:[e.BACKSLASH_ESCAPE,n,a]},{begin:"'",end:"'",illegal:"\\n",
+contains:[e.BACKSLASH_ESCAPE,n,a]},{begin:'"',end:'"',illegal:"\\n",
+contains:[e.BACKSLASH_ESCAPE,n,a]}]};a.contains=[e.C_NUMBER_MODE,t]
+;const i=["Comparable","DateTime","Duration","Function","Iterable","Iterator","List","Map","Match","Object","Pattern","RegExp","Set","Stopwatch","String","StringBuffer","StringSink","Symbol","Type","Uri","bool","double","int","num","Element","ElementList"],r=i.map((e=>e+"?"))
+;return{name:"Dart",keywords:{
+keyword:["abstract","as","assert","async","await","break","case","catch","class","const","continue","covariant","default","deferred","do","dynamic","else","enum","export","extends","extension","external","factory","false","final","finally","for","Function","get","hide","if","implements","import","in","inferface","is","late","library","mixin","new","null","on","operator","part","required","rethrow","return","set","show","static","super","switch","sync","this","throw","true","try","typedef","var","void","while","with","yield"],
+built_in:i.concat(r).concat(["Never","Null","dynamic","print","document","querySelector","querySelectorAll","window"]),
+$pattern:/[A-Za-z][A-Za-z0-9_]*\??/},
+contains:[t,e.COMMENT(/\/\*\*(?!\/)/,/\*\//,{subLanguage:"markdown",relevance:0
+}),e.COMMENT(/\/{3,} ?/,/$/,{contains:[{subLanguage:"markdown",begin:".",
+end:"$",relevance:0}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{
+className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0,
+contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]
+},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"},{begin:"=>"}]}}})()
+;hljs.registerLanguage("dart",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/delphi.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/delphi.min.js
new file mode 100644
index 0000000..2fbed7f
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/delphi.min.js
@@ -0,0 +1,17 @@
+/*! `delphi` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const r=["exports","register","file","shl","array","record","property","for","mod","while","set","ally","label","uses","raise","not","stored","class","safecall","var","interface","or","private","static","exit","index","inherited","to","else","stdcall","override","shr","asm","far","resourcestring","finalization","packed","virtual","out","and","protected","library","do","xorwrite","goto","near","function","end","div","overload","object","unit","begin","string","on","inline","repeat","until","destructor","write","message","program","with","read","initialization","except","default","nil","if","case","cdecl","in","downto","threadvar","of","try","pascal","const","external","constructor","type","public","then","implementation","finally","published","procedure","absolute","reintroduce","operator","as","is","abstract","alias","assembler","bitpacked","break","continue","cppdecl","cvar","enumerator","experimental","platform","deprecated","unimplemented","dynamic","export","far16","forward","generic","helper","implements","interrupt","iochecks","local","name","nodefault","noreturn","nostackframe","oldfpccall","otherwise","saveregisters","softfloat","specialize","strict","unaligned","varargs"],a=[e.C_LINE_COMMENT_MODE,e.COMMENT(/\{/,/\}/,{
+relevance:0}),e.COMMENT(/\(\*/,/\*\)/,{relevance:10})],t={className:"meta",
+variants:[{begin:/\{\$/,end:/\}/},{begin:/\(\*\$/,end:/\*\)/}]},n={
+className:"string",begin:/'/,end:/'/,contains:[{begin:/''/}]},i={
+className:"string",begin:/(#\d+)+/},s={begin:e.IDENT_RE+"\\s*=\\s*class\\s*\\(",
+returnBegin:!0,contains:[e.TITLE_MODE]},c={className:"function",
+beginKeywords:"function constructor destructor procedure",end:/[:;]/,
+keywords:"function constructor|10 destructor|10 procedure|10",
+contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,keywords:r,
+contains:[n,i,t].concat(a)},t].concat(a)};return{name:"Delphi",
+aliases:["dpr","dfm","pas","pascal"],case_insensitive:!0,keywords:r,
+illegal:/"|\$[G-Zg-z]|\/\*|<\/|\|/,contains:[n,i,e.NUMBER_MODE,{
+className:"number",relevance:0,variants:[{begin:"\\$[0-9A-Fa-f]+"},{
+begin:"&[0-7]+"},{begin:"%[01]+"}]},s,c,t].concat(a)}}})()
+;hljs.registerLanguage("delphi",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/diff.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/diff.min.js
new file mode 100644
index 0000000..8912f8a
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/diff.min.js
@@ -0,0 +1,9 @@
+/*! `diff` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const a=e.regex;return{name:"Diff",
+aliases:["patch"],contains:[{className:"meta",relevance:10,
+match:a.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)
+},{className:"comment",variants:[{
+begin:a.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),
+end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{
+className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,
+end:/$/}]}}})();hljs.registerLanguage("diff",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/django.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/django.min.js
new file mode 100644
index 0000000..bb1e609
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/django.min.js
@@ -0,0 +1,13 @@
+/*! `django` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const t={begin:/\|[A-Za-z]+:?/,
+keywords:{
+name:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone"
+},contains:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE]};return{name:"Django",
+aliases:["jinja"],case_insensitive:!0,subLanguage:"xml",
+contains:[e.COMMENT(/\{%\s*comment\s*%\}/,/\{%\s*endcomment\s*%\}/),e.COMMENT(/\{#/,/#\}/),{
+className:"template-tag",begin:/\{%/,end:/%\}/,contains:[{className:"name",
+begin:/\w+/,keywords:{
+name:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim"
+},starts:{endsWithParent:!0,keywords:"in by as",contains:[t],relevance:0}}]},{
+className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[t]}]}}})()
+;hljs.registerLanguage("django",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/dns.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/dns.min.js
new file mode 100644
index 0000000..2b5bd67
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/dns.min.js
@@ -0,0 +1,11 @@
+/*! `dns` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var d=(()=>{"use strict";return d=>({name:"DNS Zone",
+aliases:["bind","zone"],
+keywords:["IN","A","AAAA","AFSDB","APL","CAA","CDNSKEY","CDS","CERT","CNAME","DHCID","DLV","DNAME","DNSKEY","DS","HIP","IPSECKEY","KEY","KX","LOC","MX","NAPTR","NS","NSEC","NSEC3","NSEC3PARAM","PTR","RRSIG","RP","SIG","SOA","SRV","SSHFP","TA","TKEY","TLSA","TSIG","TXT"],
+contains:[d.COMMENT(";","$",{relevance:0}),{className:"meta",
+begin:/^\$(TTL|GENERATE|INCLUDE|ORIGIN)\b/},{className:"number",
+begin:"((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))\\b"
+},{className:"number",
+begin:"((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\b"
+},d.inherit(d.NUMBER_MODE,{begin:/\b\d+[dhwm]?/})]})})()
+;hljs.registerLanguage("dns",d)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/dockerfile.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/dockerfile.min.js
new file mode 100644
index 0000000..62ca9e6
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/dockerfile.min.js
@@ -0,0 +1,8 @@
+/*! `dockerfile` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Dockerfile",aliases:["docker"],
+case_insensitive:!0,
+keywords:["from","maintainer","expose","env","arg","user","onbuild","stopsignal"],
+contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{
+beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell",
+starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"</"})})()
+;hljs.registerLanguage("dockerfile",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/dos.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/dos.min.js
new file mode 100644
index 0000000..2788c7f
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/dos.min.js
@@ -0,0 +1,12 @@
+/*! `dos` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const r=e.COMMENT(/^\s*@?rem\b/,/$/,{
+relevance:10});return{name:"Batch file (DOS)",aliases:["bat","cmd"],
+case_insensitive:!0,illegal:/\/\*/,keywords:{
+keyword:["if","else","goto","for","in","do","call","exit","not","exist","errorlevel","defined","equ","neq","lss","leq","gtr","geq"],
+built_in:["prn","nul","lpt3","lpt2","lpt1","con","com4","com3","com2","com1","aux","shift","cd","dir","echo","setlocal","endlocal","set","pause","copy","append","assoc","at","attrib","break","cacls","cd","chcp","chdir","chkdsk","chkntfs","cls","cmd","color","comp","compact","convert","date","dir","diskcomp","diskcopy","doskey","erase","fs","find","findstr","format","ftype","graftabl","help","keyb","label","md","mkdir","mode","more","move","path","pause","print","popd","pushd","promt","rd","recover","rem","rename","replace","restore","rmdir","shift","sort","start","subst","time","title","tree","type","ver","verify","vol","ping","net","ipconfig","taskkill","xcopy","ren","del"]
+},contains:[{className:"variable",begin:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{
+className:"function",begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)",
+end:"goto:eof",contains:[e.inherit(e.TITLE_MODE,{
+begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),r]},{
+className:"number",begin:"\\b\\d+",relevance:0},r]}}})()
+;hljs.registerLanguage("dos",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/dsconfig.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/dsconfig.min.js
new file mode 100644
index 0000000..b57e141
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/dsconfig.min.js
@@ -0,0 +1,9 @@
+/*! `dsconfig` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({keywords:"dsconfig",contains:[{
+className:"keyword",begin:"^dsconfig",end:/\s/,excludeEnd:!0,relevance:10},{
+className:"built_in",begin:/(list|create|get|set|delete)-(\w+)/,end:/\s/,
+excludeEnd:!0,illegal:"!@#$%^&*()",relevance:10},{className:"built_in",
+begin:/--(\w+)/,end:/\s/,excludeEnd:!0},{className:"string",begin:/"/,end:/"/},{
+className:"string",begin:/'/,end:/'/},{className:"string",begin:/[\w\-?]+:\w+/,
+end:/\W/,relevance:0},{className:"string",begin:/\w+(\-\w+)*/,end:/(?=\W)/,
+relevance:0},e.HASH_COMMENT_MODE]})})();hljs.registerLanguage("dsconfig",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/dts.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/dts.min.js
new file mode 100644
index 0000000..01d408a
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/dts.min.js
@@ -0,0 +1,22 @@
+/*! `dts` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const a={className:"string",
+variants:[e.inherit(e.QUOTE_STRING_MODE,{begin:'((u8?|U)|L)?"'}),{
+begin:'(u8?|U)?R"',end:'"',contains:[e.BACKSLASH_ESCAPE]},{begin:"'\\\\?.",
+end:"'",illegal:"."}]},n={className:"number",variants:[{
+begin:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},{begin:e.C_NUMBER_RE}],
+relevance:0},s={className:"meta",begin:"#",end:"$",keywords:{
+keyword:"if else elif endif define undef ifdef ifndef"},contains:[{begin:/\\\n/,
+relevance:0},{beginKeywords:"include",end:"$",keywords:{keyword:"include"},
+contains:[e.inherit(a,{className:"string"}),{className:"string",begin:"<",
+end:">",illegal:"\\n"}]},a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},i={
+className:"variable",begin:/&[a-z\d_]*\b/};return{name:"Device Tree",contains:[{
+className:"title.class",begin:/^\/(?=\s*\{)/,relevance:10},i,{
+className:"keyword",begin:"/[a-z][a-z\\d-]*/"},{className:"symbol",
+begin:"^\\s*[a-zA-Z_][a-zA-Z\\d_]*:"},{className:"title.class",
+begin:/[a-zA-Z_][a-zA-Z\d_@-]*(?=\s\{)/},{relevance:0,
+match:[/[a-z][a-z-,]+/,/\s*/,/=/],scope:{1:"attr",3:"operator"}},{
+match:/[a-z][a-z-,]+(?=;)/,relevance:0,scope:"attr"},{className:"params",
+relevance:0,begin:"<",end:">",contains:[n,i]
+},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,a,s,{scope:"punctuation",
+relevance:0,match:/\};|[;{}]/},{begin:e.IDENT_RE+"::",keywords:""}]}}})()
+;hljs.registerLanguage("dts",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/dust.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/dust.min.js
new file mode 100644
index 0000000..15917da
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/dust.min.js
@@ -0,0 +1,8 @@
+/*! `dust` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Dust",aliases:["dst"],
+case_insensitive:!0,subLanguage:"xml",contains:[{className:"template-tag",
+begin:/\{[#\/]/,end:/\}/,illegal:/;/,contains:[{className:"name",
+begin:/[a-zA-Z\.-]+/,starts:{endsWithParent:!0,relevance:0,
+contains:[e.QUOTE_STRING_MODE]}}]},{className:"template-variable",begin:/\{/,
+end:/\}/,illegal:/;/,keywords:"if eq ne lt lte gt gte select default math sep"}]
+})})();hljs.registerLanguage("dust",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/ebnf.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/ebnf.min.js
new file mode 100644
index 0000000..a8fc800
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/ebnf.min.js
@@ -0,0 +1,7 @@
+/*! `ebnf` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const a=e.COMMENT(/\(\*/,/\*\)/)
+;return{name:"Extended Backus-Naur Form",illegal:/\S/,contains:[a,{
+className:"attribute",begin:/^[ ]*[a-zA-Z]+([\s_-]+[a-zA-Z]+)*/},{begin:/=/,
+end:/[.;]/,contains:[a,{className:"meta",begin:/\?.*\?/},{className:"string",
+variants:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"`",end:"`"}]}]}]}}})()
+;hljs.registerLanguage("ebnf",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/elixir.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/elixir.min.js
new file mode 100644
index 0000000..99b949a
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/elixir.min.js
@@ -0,0 +1,33 @@
+/*! `elixir` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const n=e.regex,i="[a-zA-Z_][a-zA-Z0-9_.]*(!|\\?)?",a={$pattern:i,
+keyword:["after","alias","and","case","catch","cond","defstruct","do","else","end","fn","for","if","import","in","not","or","quote","raise","receive","require","reraise","rescue","try","unless","unquote","unquote_splicing","use","when","with|0"],
+literal:["false","nil","true"]},s={className:"subst",begin:/#\{/,end:/\}/,
+keywords:a},c={match:/\\[\s\S]/,scope:"char.escape",relevance:0},r=[{begin:/"/,
+end:/"/},{begin:/'/,end:/'/},{begin:/\//,end:/\//},{begin:/\|/,end:/\|/},{
+begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/},{begin:/\{/,end:/\}/},{begin:/</,
+end:/>/}],t=e=>({scope:"char.escape",begin:n.concat(/\\/,e),relevance:0}),d={
+className:"string",begin:"~[a-z](?=[/|([{<\"'])",
+contains:r.map((n=>e.inherit(n,{contains:[t(n.end),c,s]})))},o={
+className:"string",begin:"~[A-Z](?=[/|([{<\"'])",
+contains:r.map((n=>e.inherit(n,{contains:[t(n.end)]})))},b={className:"regex",
+variants:[{begin:"~r(?=[/|([{<\"'])",contains:r.map((i=>e.inherit(i,{
+end:n.concat(i.end,/[uismxfU]{0,7}/),contains:[t(i.end),c,s]})))},{
+begin:"~R(?=[/|([{<\"'])",contains:r.map((i=>e.inherit(i,{
+end:n.concat(i.end,/[uismxfU]{0,7}/),contains:[t(i.end)]})))}]},g={
+className:"string",contains:[e.BACKSLASH_ESCAPE,s],variants:[{begin:/"""/,
+end:/"""/},{begin:/'''/,end:/'''/},{begin:/~S"""/,end:/"""/,contains:[]},{
+begin:/~S"/,end:/"/,contains:[]},{begin:/~S'''/,end:/'''/,contains:[]},{
+begin:/~S'/,end:/'/,contains:[]},{begin:/'/,end:/'/},{begin:/"/,end:/"/}]},l={
+className:"function",beginKeywords:"def defp defmacro defmacrop",end:/\B\b/,
+contains:[e.inherit(e.TITLE_MODE,{begin:i,endsParent:!0})]},m=e.inherit(l,{
+className:"class",beginKeywords:"defimpl defmodule defprotocol defrecord",
+end:/\bdo\b|$|;/}),u=[g,b,o,d,e.HASH_COMMENT_MODE,m,l,{begin:"::"},{
+className:"symbol",begin:":(?![\\s:])",contains:[g,{
+begin:"[a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?"
+}],relevance:0},{className:"symbol",begin:i+":(?!:)",relevance:0},{
+className:"number",
+begin:"(\\b0o[0-7_]+)|(\\b0b[01_]+)|(\\b0x[0-9a-fA-F_]+)|(-?\\b[0-9][0-9_]*(\\.[0-9_]+([eE][-+]?[0-9]+)?)?)",
+relevance:0},{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))"},{
+begin:"->"}];return s.contains=u,{name:"Elixir",aliases:["ex","exs"],keywords:a,
+contains:u}}})();hljs.registerLanguage("elixir",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/elm.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/elm.min.js
new file mode 100644
index 0000000..f82b32b
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/elm.min.js
@@ -0,0 +1,18 @@
+/*! `elm` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n={
+variants:[e.COMMENT("--","$"),e.COMMENT(/\{-/,/-\}/,{contains:["self"]})]},i={
+className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},s={begin:"\\(",end:"\\)",
+illegal:'"',contains:[{className:"type",
+begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},n]};return{name:"Elm",
+keywords:["let","in","if","then","else","case","of","where","module","import","exposing","type","alias","as","infix","infixl","infixr","port","effect","command","subscription"],
+contains:[{beginKeywords:"port effect module",end:"exposing",
+keywords:"port effect module where command subscription exposing",
+contains:[s,n],illegal:"\\W\\.|;"},{begin:"import",end:"$",
+keywords:"import as exposing",contains:[s,n],illegal:"\\W\\.|;"},{begin:"type",
+end:"$",keywords:"type alias",contains:[i,s,{begin:/\{/,end:/\}/,
+contains:s.contains},n]},{beginKeywords:"infix infixl infixr",end:"$",
+contains:[e.C_NUMBER_MODE,n]},{begin:"port",end:"$",keywords:"port",contains:[n]
+},{className:"string",begin:"'\\\\?.",end:"'",illegal:"."
+},e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,i,e.inherit(e.TITLE_MODE,{
+begin:"^[_a-z][\\w']*"}),n,{begin:"->|<-"}],illegal:/;/}}})()
+;hljs.registerLanguage("elm",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/erb.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/erb.min.js
new file mode 100644
index 0000000..59a2841
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/erb.min.js
@@ -0,0 +1,5 @@
+/*! `erb` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"ERB",subLanguage:"xml",
+contains:[e.COMMENT("<%#","%>"),{begin:"<%[%=-]?",end:"[%-]?%>",
+subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()
+;hljs.registerLanguage("erb",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/erlang-repl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/erlang-repl.min.js
new file mode 100644
index 0000000..6bbaacd
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/erlang-repl.min.js
@@ -0,0 +1,13 @@
+/*! `erlang-repl` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n=e.regex;return{
+name:"Erlang REPL",keywords:{built_in:"spawn spawn_link self",
+keyword:"after and andalso|10 band begin bnot bor bsl bsr bxor case catch cond div end fun if let not of or orelse|10 query receive rem try when xor"
+},contains:[{className:"meta",begin:"^[0-9]+> ",relevance:10
+},e.COMMENT("%","$"),{className:"number",
+begin:"\\b(\\d+(_\\d+)*#[a-fA-F0-9]+(_[a-fA-F0-9]+)*|\\d+(_\\d+)*(\\.\\d+(_\\d+)*)?([eE][-+]?\\d+)?)",
+relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{
+begin:n.concat(/\?(::)?/,/([A-Z]\w*)/,/((::)[A-Z]\w*)*/)},{begin:"->"},{
+begin:"ok"},{begin:"!"},{
+begin:"(\\b[a-z'][a-zA-Z0-9_']*:[a-z'][a-zA-Z0-9_']*)|(\\b[a-z'][a-zA-Z0-9_']*)",
+relevance:0},{begin:"[A-Z][a-zA-Z0-9_']*",relevance:0}]}}})()
+;hljs.registerLanguage("erlang-repl",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/erlang.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/erlang.min.js
new file mode 100644
index 0000000..effbd66
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/erlang.min.js
@@ -0,0 +1,27 @@
+/*! `erlang` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const n="[a-z'][a-zA-Z0-9_']*",r="("+n+":"+n+"|"+n+")",a={
+keyword:"after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if let not of orelse|10 query receive rem try when xor",
+literal:"false true"},i=e.COMMENT("%","$"),s={className:"number",
+begin:"\\b(\\d+(_\\d+)*#[a-fA-F0-9]+(_[a-fA-F0-9]+)*|\\d+(_\\d+)*(\\.\\d+(_\\d+)*)?([eE][-+]?\\d+)?)",
+relevance:0},c={begin:"fun\\s+"+n+"/\\d+"},t={begin:r+"\\(",end:"\\)",
+returnBegin:!0,relevance:0,contains:[{begin:r,relevance:0},{begin:"\\(",
+end:"\\)",endsWithParent:!0,returnEnd:!0,relevance:0}]},d={begin:/\{/,end:/\}/,
+relevance:0},o={begin:"\\b_([A-Z][A-Za-z0-9_]*)?",relevance:0},l={
+begin:"[A-Z][a-zA-Z0-9_]*",relevance:0},b={begin:"#"+e.UNDERSCORE_IDENT_RE,
+relevance:0,returnBegin:!0,contains:[{begin:"#"+e.UNDERSCORE_IDENT_RE,
+relevance:0},{begin:/\{/,end:/\}/,relevance:0}]},g={
+beginKeywords:"fun receive if try case",end:"end",keywords:a}
+;g.contains=[i,c,e.inherit(e.APOS_STRING_MODE,{className:""
+}),g,t,e.QUOTE_STRING_MODE,s,d,o,l,b]
+;const E=[i,c,g,t,e.QUOTE_STRING_MODE,s,d,o,l,b]
+;t.contains[1].contains=E,d.contains=E,b.contains[1].contains=E;const u={
+className:"params",begin:"\\(",end:"\\)",contains:E};return{name:"Erlang",
+aliases:["erl"],keywords:a,illegal:"(</|\\*=|\\+=|-=|/\\*|\\*/|\\(\\*|\\*\\))",
+contains:[{className:"function",begin:"^"+n+"\\s*\\(",end:"->",returnBegin:!0,
+illegal:"\\(|#|//|/\\*|\\\\|:|;",contains:[u,e.inherit(e.TITLE_MODE,{begin:n})],
+starts:{end:";|\\.",keywords:a,contains:E}},i,{begin:"^-",end:"\\.",relevance:0,
+excludeEnd:!0,returnBegin:!0,keywords:{$pattern:"-"+e.IDENT_RE,
+keyword:["-module","-record","-undef","-export","-ifdef","-ifndef","-author","-copyright","-doc","-vsn","-import","-include","-include_lib","-compile","-define","-else","-endif","-file","-behaviour","-behavior","-spec"].map((e=>e+"|1.5")).join(" ")
+},contains:[u]},s,e.QUOTE_STRING_MODE,b,o,l,d,{begin:/\.$/}]}}})()
+;hljs.registerLanguage("erlang",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/excel.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/excel.min.js
new file mode 100644
index 0000000..0354c90
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/excel.min.js
@@ -0,0 +1,10 @@
+/*! `excel` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var E=(()=>{"use strict";return E=>({name:"Excel formulae",
+aliases:["xlsx","xls"],case_insensitive:!0,keywords:{$pattern:/[a-zA-Z][\w\.]*/,
+built_in:["ABS","ACCRINT","ACCRINTM","ACOS","ACOSH","ACOT","ACOTH","AGGREGATE","ADDRESS","AMORDEGRC","AMORLINC","AND","ARABIC","AREAS","ASC","ASIN","ASINH","ATAN","ATAN2","ATANH","AVEDEV","AVERAGE","AVERAGEA","AVERAGEIF","AVERAGEIFS","BAHTTEXT","BASE","BESSELI","BESSELJ","BESSELK","BESSELY","BETADIST","BETA.DIST","BETAINV","BETA.INV","BIN2DEC","BIN2HEX","BIN2OCT","BINOMDIST","BINOM.DIST","BINOM.DIST.RANGE","BINOM.INV","BITAND","BITLSHIFT","BITOR","BITRSHIFT","BITXOR","CALL","CEILING","CEILING.MATH","CEILING.PRECISE","CELL","CHAR","CHIDIST","CHIINV","CHITEST","CHISQ.DIST","CHISQ.DIST.RT","CHISQ.INV","CHISQ.INV.RT","CHISQ.TEST","CHOOSE","CLEAN","CODE","COLUMN","COLUMNS","COMBIN","COMBINA","COMPLEX","CONCAT","CONCATENATE","CONFIDENCE","CONFIDENCE.NORM","CONFIDENCE.T","CONVERT","CORREL","COS","COSH","COT","COTH","COUNT","COUNTA","COUNTBLANK","COUNTIF","COUNTIFS","COUPDAYBS","COUPDAYS","COUPDAYSNC","COUPNCD","COUPNUM","COUPPCD","COVAR","COVARIANCE.P","COVARIANCE.S","CRITBINOM","CSC","CSCH","CUBEKPIMEMBER","CUBEMEMBER","CUBEMEMBERPROPERTY","CUBERANKEDMEMBER","CUBESET","CUBESETCOUNT","CUBEVALUE","CUMIPMT","CUMPRINC","DATE","DATEDIF","DATEVALUE","DAVERAGE","DAY","DAYS","DAYS360","DB","DBCS","DCOUNT","DCOUNTA","DDB","DEC2BIN","DEC2HEX","DEC2OCT","DECIMAL","DEGREES","DELTA","DEVSQ","DGET","DISC","DMAX","DMIN","DOLLAR","DOLLARDE","DOLLARFR","DPRODUCT","DSTDEV","DSTDEVP","DSUM","DURATION","DVAR","DVARP","EDATE","EFFECT","ENCODEURL","EOMONTH","ERF","ERF.PRECISE","ERFC","ERFC.PRECISE","ERROR.TYPE","EUROCONVERT","EVEN","EXACT","EXP","EXPON.DIST","EXPONDIST","FACT","FACTDOUBLE","FALSE|0","F.DIST","FDIST","F.DIST.RT","FILTERXML","FIND","FINDB","F.INV","F.INV.RT","FINV","FISHER","FISHERINV","FIXED","FLOOR","FLOOR.MATH","FLOOR.PRECISE","FORECAST","FORECAST.ETS","FORECAST.ETS.CONFINT","FORECAST.ETS.SEASONALITY","FORECAST.ETS.STAT","FORECAST.LINEAR","FORMULATEXT","FREQUENCY","F.TEST","FTEST","FV","FVSCHEDULE","GAMMA","GAMMA.DIST","GAMMADIST","GAMMA.INV","GAMMAINV","GAMMALN","GAMMALN.PRECISE","GAUSS","GCD","GEOMEAN","GESTEP","GETPIVOTDATA","GROWTH","HARMEAN","HEX2BIN","HEX2DEC","HEX2OCT","HLOOKUP","HOUR","HYPERLINK","HYPGEOM.DIST","HYPGEOMDIST","IF","IFERROR","IFNA","IFS","IMABS","IMAGINARY","IMARGUMENT","IMCONJUGATE","IMCOS","IMCOSH","IMCOT","IMCSC","IMCSCH","IMDIV","IMEXP","IMLN","IMLOG10","IMLOG2","IMPOWER","IMPRODUCT","IMREAL","IMSEC","IMSECH","IMSIN","IMSINH","IMSQRT","IMSUB","IMSUM","IMTAN","INDEX","INDIRECT","INFO","INT","INTERCEPT","INTRATE","IPMT","IRR","ISBLANK","ISERR","ISERROR","ISEVEN","ISFORMULA","ISLOGICAL","ISNA","ISNONTEXT","ISNUMBER","ISODD","ISREF","ISTEXT","ISO.CEILING","ISOWEEKNUM","ISPMT","JIS","KURT","LARGE","LCM","LEFT","LEFTB","LEN","LENB","LINEST","LN","LOG","LOG10","LOGEST","LOGINV","LOGNORM.DIST","LOGNORMDIST","LOGNORM.INV","LOOKUP","LOWER","MATCH","MAX","MAXA","MAXIFS","MDETERM","MDURATION","MEDIAN","MID","MIDBs","MIN","MINIFS","MINA","MINUTE","MINVERSE","MIRR","MMULT","MOD","MODE","MODE.MULT","MODE.SNGL","MONTH","MROUND","MULTINOMIAL","MUNIT","N","NA","NEGBINOM.DIST","NEGBINOMDIST","NETWORKDAYS","NETWORKDAYS.INTL","NOMINAL","NORM.DIST","NORMDIST","NORMINV","NORM.INV","NORM.S.DIST","NORMSDIST","NORM.S.INV","NORMSINV","NOT","NOW","NPER","NPV","NUMBERVALUE","OCT2BIN","OCT2DEC","OCT2HEX","ODD","ODDFPRICE","ODDFYIELD","ODDLPRICE","ODDLYIELD","OFFSET","OR","PDURATION","PEARSON","PERCENTILE.EXC","PERCENTILE.INC","PERCENTILE","PERCENTRANK.EXC","PERCENTRANK.INC","PERCENTRANK","PERMUT","PERMUTATIONA","PHI","PHONETIC","PI","PMT","POISSON.DIST","POISSON","POWER","PPMT","PRICE","PRICEDISC","PRICEMAT","PROB","PRODUCT","PROPER","PV","QUARTILE","QUARTILE.EXC","QUARTILE.INC","QUOTIENT","RADIANS","RAND","RANDBETWEEN","RANK.AVG","RANK.EQ","RANK","RATE","RECEIVED","REGISTER.ID","REPLACE","REPLACEB","REPT","RIGHT","RIGHTB","ROMAN","ROUND","ROUNDDOWN","ROUNDUP","ROW","ROWS","RRI","RSQ","RTD","SEARCH","SEARCHB","SEC","SECH","SECOND","SERIESSUM","SHEET","SHEETS","SIGN","SIN","SINH","SKEW","SKEW.P","SLN","SLOPE","SMALL","SQL.REQUEST","SQRT","SQRTPI","STANDARDIZE","STDEV","STDEV.P","STDEV.S","STDEVA","STDEVP","STDEVPA","STEYX","SUBSTITUTE","SUBTOTAL","SUM","SUMIF","SUMIFS","SUMPRODUCT","SUMSQ","SUMX2MY2","SUMX2PY2","SUMXMY2","SWITCH","SYD","T","TAN","TANH","TBILLEQ","TBILLPRICE","TBILLYIELD","T.DIST","T.DIST.2T","T.DIST.RT","TDIST","TEXT","TEXTJOIN","TIME","TIMEVALUE","T.INV","T.INV.2T","TINV","TODAY","TRANSPOSE","TREND","TRIM","TRIMMEAN","TRUE|0","TRUNC","T.TEST","TTEST","TYPE","UNICHAR","UNICODE","UPPER","VALUE","VAR","VAR.P","VAR.S","VARA","VARP","VARPA","VDB","VLOOKUP","WEBSERVICE","WEEKDAY","WEEKNUM","WEIBULL","WEIBULL.DIST","WORKDAY","WORKDAY.INTL","XIRR","XNPV","XOR","YEAR","YEARFRAC","YIELD","YIELDDISC","YIELDMAT","Z.TEST","ZTEST"]
+},contains:[{begin:/^=/,end:/[^=]/,returnEnd:!0,illegal:/=/,relevance:10},{
+className:"symbol",begin:/\b[A-Z]{1,2}\d+\b/,end:/[^\d]/,excludeEnd:!0,
+relevance:0},{className:"symbol",begin:/[A-Z]{0,2}\d*:[A-Z]{0,2}\d*/,relevance:0
+},E.BACKSLASH_ESCAPE,E.QUOTE_STRING_MODE,{className:"number",
+begin:E.NUMBER_RE+"(%)?",relevance:0},E.COMMENT(/\bN\(/,/\)/,{excludeBegin:!0,
+excludeEnd:!0,illegal:/\n/})]})})();hljs.registerLanguage("excel",E)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/fix.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/fix.min.js
new file mode 100644
index 0000000..f2b9f3a
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/fix.min.js
@@ -0,0 +1,7 @@
+/*! `fix` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"FIX",contains:[{
+begin:/[^\u2401\u0001]+/,end:/[\u2401\u0001]/,excludeEnd:!0,returnBegin:!0,
+returnEnd:!1,contains:[{begin:/([^\u2401\u0001=]+)/,end:/=([^\u2401\u0001=]+)/,
+returnEnd:!0,returnBegin:!1,className:"attr"},{begin:/=/,end:/([\u2401\u0001])/,
+excludeEnd:!0,excludeBegin:!0,className:"string"}]}],case_insensitive:!0})})()
+;hljs.registerLanguage("fix",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/flix.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/flix.min.js
new file mode 100644
index 0000000..d6f0f02
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/flix.min.js
@@ -0,0 +1,10 @@
+/*! `flix` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Flix",keywords:{
+keyword:["case","class","def","else","enum","if","impl","import","in","lat","rel","index","let","match","namespace","switch","type","yield","with"],
+literal:["true","false"]},
+contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",
+begin:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},{className:"string",variants:[{begin:'"',
+end:'"'}]},{className:"function",beginKeywords:"def",end:/[:={\[(\n;]/,
+excludeEnd:!0,contains:[{className:"title",relevance:0,
+begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/
+}]},e.C_NUMBER_MODE]})})();hljs.registerLanguage("flix",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/fortran.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/fortran.min.js
new file mode 100644
index 0000000..5c179de
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/fortran.min.js
@@ -0,0 +1,16 @@
+/*! `fortran` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n=e.regex,a={
+variants:[e.COMMENT("!","$",{relevance:0}),e.COMMENT("^C[ ]","$",{relevance:0
+}),e.COMMENT("^C$","$",{relevance:0})]
+},t=/(_[a-z_\d]+)?/,i=/([de][+-]?\d+)?/,c={className:"number",variants:[{
+begin:n.concat(/\b\d+/,/\.(\d*)/,i,t)},{begin:n.concat(/\b\d+/,i,t)},{
+begin:n.concat(/\.\d+/,i,t)}],relevance:0},o={className:"function",
+beginKeywords:"subroutine function program",illegal:"[${=\\n]",
+contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)"}]}
+;return{name:"Fortran",case_insensitive:!0,aliases:["f90","f95"],keywords:{
+keyword:["kind","do","concurrent","local","shared","while","private","call","intrinsic","where","elsewhere","type","endtype","endmodule","endselect","endinterface","end","enddo","endif","if","forall","endforall","only","contains","default","return","stop","then","block","endblock","endassociate","public","subroutine|10","function","program",".and.",".or.",".not.",".le.",".eq.",".ge.",".gt.",".lt.","goto","save","else","use","module","select","case","access","blank","direct","exist","file","fmt","form","formatted","iostat","name","named","nextrec","number","opened","rec","recl","sequential","status","unformatted","unit","continue","format","pause","cycle","exit","c_null_char","c_alert","c_backspace","c_form_feed","flush","wait","decimal","round","iomsg","synchronous","nopass","non_overridable","pass","protected","volatile","abstract","extends","import","non_intrinsic","value","deferred","generic","final","enumerator","class","associate","bind","enum","c_int","c_short","c_long","c_long_long","c_signed_char","c_size_t","c_int8_t","c_int16_t","c_int32_t","c_int64_t","c_int_least8_t","c_int_least16_t","c_int_least32_t","c_int_least64_t","c_int_fast8_t","c_int_fast16_t","c_int_fast32_t","c_int_fast64_t","c_intmax_t","C_intptr_t","c_float","c_double","c_long_double","c_float_complex","c_double_complex","c_long_double_complex","c_bool","c_char","c_null_ptr","c_null_funptr","c_new_line","c_carriage_return","c_horizontal_tab","c_vertical_tab","iso_c_binding","c_loc","c_funloc","c_associated","c_f_pointer","c_ptr","c_funptr","iso_fortran_env","character_storage_size","error_unit","file_storage_size","input_unit","iostat_end","iostat_eor","numeric_storage_size","output_unit","c_f_procpointer","ieee_arithmetic","ieee_support_underflow_control","ieee_get_underflow_mode","ieee_set_underflow_mode","newunit","contiguous","recursive","pad","position","action","delim","readwrite","eor","advance","nml","interface","procedure","namelist","include","sequence","elemental","pure","impure","integer","real","character","complex","logical","codimension","dimension","allocatable|10","parameter","external","implicit|10","none","double","precision","assign","intent","optional","pointer","target","in","out","common","equivalence","data"],
+literal:[".False.",".True."],
+built_in:["alog","alog10","amax0","amax1","amin0","amin1","amod","cabs","ccos","cexp","clog","csin","csqrt","dabs","dacos","dasin","datan","datan2","dcos","dcosh","ddim","dexp","dint","dlog","dlog10","dmax1","dmin1","dmod","dnint","dsign","dsin","dsinh","dsqrt","dtan","dtanh","float","iabs","idim","idint","idnint","ifix","isign","max0","max1","min0","min1","sngl","algama","cdabs","cdcos","cdexp","cdlog","cdsin","cdsqrt","cqabs","cqcos","cqexp","cqlog","cqsin","cqsqrt","dcmplx","dconjg","derf","derfc","dfloat","dgamma","dimag","dlgama","iqint","qabs","qacos","qasin","qatan","qatan2","qcmplx","qconjg","qcos","qcosh","qdim","qerf","qerfc","qexp","qgamma","qimag","qlgama","qlog","qlog10","qmax1","qmin1","qmod","qnint","qsign","qsin","qsinh","qsqrt","qtan","qtanh","abs","acos","aimag","aint","anint","asin","atan","atan2","char","cmplx","conjg","cos","cosh","exp","ichar","index","int","log","log10","max","min","nint","sign","sin","sinh","sqrt","tan","tanh","print","write","dim","lge","lgt","lle","llt","mod","nullify","allocate","deallocate","adjustl","adjustr","all","allocated","any","associated","bit_size","btest","ceiling","count","cshift","date_and_time","digits","dot_product","eoshift","epsilon","exponent","floor","fraction","huge","iand","ibclr","ibits","ibset","ieor","ior","ishft","ishftc","lbound","len_trim","matmul","maxexponent","maxloc","maxval","merge","minexponent","minloc","minval","modulo","mvbits","nearest","pack","present","product","radix","random_number","random_seed","range","repeat","reshape","rrspacing","scale","scan","selected_int_kind","selected_real_kind","set_exponent","shape","size","spacing","spread","sum","system_clock","tiny","transpose","trim","ubound","unpack","verify","achar","iachar","transfer","dble","entry","dprod","cpu_time","command_argument_count","get_command","get_command_argument","get_environment_variable","is_iostat_end","ieee_arithmetic","ieee_support_underflow_control","ieee_get_underflow_mode","ieee_set_underflow_mode","is_iostat_eor","move_alloc","new_line","selected_char_kind","same_type_as","extends_type_of","acosh","asinh","atanh","bessel_j0","bessel_j1","bessel_jn","bessel_y0","bessel_y1","bessel_yn","erf","erfc","erfc_scaled","gamma","log_gamma","hypot","norm2","atomic_define","atomic_ref","execute_command_line","leadz","trailz","storage_size","merge_bits","bge","bgt","ble","blt","dshiftl","dshiftr","findloc","iall","iany","iparity","image_index","lcobound","ucobound","maskl","maskr","num_images","parity","popcnt","poppar","shifta","shiftl","shiftr","this_image","sync","change","team","co_broadcast","co_max","co_min","co_sum","co_reduce"]
+},illegal:/\/\*/,contains:[{className:"string",relevance:0,
+variants:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},o,{begin:/^C\s*=(?!=)/,
+relevance:0},a,c]}}})();hljs.registerLanguage("fortran",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/fsharp.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/fsharp.min.js
new file mode 100644
index 0000000..68c262e
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/fsharp.min.js
@@ -0,0 +1,35 @@
+/*! `fsharp` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";function e(e){
+return e?"string"==typeof e?e:e.source:null}function n(e){return t("(?=",e,")")}
+function t(...n){return n.map((n=>e(n))).join("")}function i(...n){const t=(e=>{
+const n=e[e.length-1]
+;return"object"==typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{}
+})(n);return"("+(t.capture?"":"?:")+n.map((n=>e(n))).join("|")+")"}return e=>{
+const a={scope:"keyword",match:/\b(yield|return|let|do|match|use)!/},s={
+type:["bool","byte","sbyte","int8","int16","int32","uint8","uint16","uint32","int","uint","int64","uint64","nativeint","unativeint","decimal","float","double","float32","single","char","string","unit","bigint","option","voption","list","array","seq","byref","exn","inref","nativeptr","obj","outref","voidptr"],
+keyword:["abstract","and","as","assert","base","begin","class","default","delegate","do","done","downcast","downto","elif","else","end","exception","extern","finally","fixed","for","fun","function","global","if","in","inherit","inline","interface","internal","lazy","let","match","member","module","mutable","namespace","new","of","open","or","override","private","public","rec","return","static","struct","then","to","try","type","upcast","use","val","void","when","while","with","yield"],
+literal:["true","false","null","Some","None","Ok","Error","infinity","infinityf","nan","nanf"],
+built_in:["not","ref","raise","reraise","dict","readOnlyDict","set","enum","sizeof","typeof","typedefof","nameof","nullArg","invalidArg","invalidOp","id","fst","snd","ignore","lock","using","box","unbox","tryUnbox","printf","printfn","sprintf","eprintf","eprintfn","fprintf","fprintfn","failwith","failwithf"],
+"variable.constant":["__LINE__","__SOURCE_DIRECTORY__","__SOURCE_FILE__"]},r={
+variants:[e.COMMENT(/\(\*(?!\))/,/\*\)/,{contains:["self"]
+}),e.C_LINE_COMMENT_MODE]},o={match:t(/('|\^)/,e.UNDERSCORE_IDENT_RE),
+scope:"symbol",relevance:0},c={scope:"computation-expression",
+match:/\b[_a-z]\w*(?=\s*\{)/},l={
+begin:[/^\s*/,t(/#/,i("if","else","endif","line","nowarn","light","r","i","I","load","time","help","quit")),/\b/],
+beginScope:{2:"meta"},end:n(/\s|$/)},f={
+variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},u={scope:"string",begin:/"/,
+end:/"/,contains:[e.BACKSLASH_ESCAPE]},p={scope:"string",begin:/@"/,end:/"/,
+contains:[{match:/""/},e.BACKSLASH_ESCAPE]},d={scope:"subst",begin:/\{/,
+end:/\}/,keywords:s},g={scope:"string",begin:/\$"/,end:/"/,contains:[{
+match:/\{\{/},{match:/\}\}/},e.BACKSLASH_ESCAPE,d]},b={scope:"string",
+begin:/(\$@|@\$)"/,end:/"/,contains:[{match:/\{\{/},{match:/\}\}/},{match:/""/
+},e.BACKSLASH_ESCAPE,d]},m={scope:"string",begin:/\$"""/,end:/"""/,contains:[{
+match:/\{\{/},{match:/\}\}/},d],relevance:2},_={scope:"string",
+match:t(/'/,i(/[^\\']/,/\\(?:.|\d{3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}|U[a-fA-F\d]{8})/),/'/)
+};return d.contains=[b,g,p,u,_,a,r,c,l,f,o],{name:"F#",aliases:["fs","f#"],
+keywords:s,illegal:/\/\*/,classNameAliases:{"computation-expression":"keyword"},
+contains:[a,{variants:[m,b,g,{scope:"string",begin:/"""/,end:/"""/,relevance:2
+},p,u,_]},r,{begin:[/type/,/\s+/,e.UNDERSCORE_IDENT_RE],beginScope:{1:"keyword",
+3:"title.class"},end:n(/\(|=|$/),contains:[o]},{scope:"meta",begin:/^\s*\[</,
+excludeBegin:!0,end:n(/>\]/),relevance:2,contains:[{scope:"string",begin:/"/,
+end:/"/},f]},c,l,f,o]}}})();hljs.registerLanguage("fsharp",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/gams.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/gams.min.js
new file mode 100644
index 0000000..ac0d211
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/gams.min.js
@@ -0,0 +1,28 @@
+/*! `gams` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const a=e.regex,n={
+keyword:"abort acronym acronyms alias all and assign binary card diag display else eq file files for free ge gt if integer le loop lt maximizing minimizing model models ne negative no not option options or ord positive prod put putpage puttl repeat sameas semicont semiint smax smin solve sos1 sos2 sum system table then until using while xor yes",
+literal:"eps inf na",
+built_in:"abs arccos arcsin arctan arctan2 Beta betaReg binomial ceil centropy cos cosh cvPower div div0 eDist entropy errorf execSeed exp fact floor frac gamma gammaReg log logBeta logGamma log10 log2 mapVal max min mod ncpCM ncpF ncpVUpow ncpVUsin normal pi poly power randBinomial randLinear randTriangle round rPower sigmoid sign signPower sin sinh slexp sllog10 slrec sqexp sqlog10 sqr sqrec sqrt tan tanh trunc uniform uniformInt vcPower bool_and bool_eqv bool_imp bool_not bool_or bool_xor ifThen rel_eq rel_ge rel_gt rel_le rel_lt rel_ne gday gdow ghour gleap gmillisec gminute gmonth gsecond gyear jdate jnow jstart jtime errorLevel execError gamsRelease gamsVersion handleCollect handleDelete handleStatus handleSubmit heapFree heapLimit heapSize jobHandle jobKill jobStatus jobTerminate licenseLevel licenseStatus maxExecError sleep timeClose timeComp timeElapsed timeExec timeStart"
+},i={className:"symbol",variants:[{begin:/=[lgenxc]=/},{begin:/\$/}]},s={
+className:"comment",variants:[{begin:"'",end:"'"},{begin:'"',end:'"'}],
+illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},o={begin:"/",end:"/",keywords:n,
+contains:[s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_NUMBER_MODE]
+},t=/[a-z0-9&#*=?@\\><:,()$[\]_.{}!+%^-]+/,r={
+begin:/[a-z][a-z0-9_]*(\([a-z0-9_, ]*\))?[ \t]+/,excludeBegin:!0,end:"$",
+endsWithParent:!0,contains:[s,o,{className:"comment",
+begin:a.concat(t,a.anyNumberOfTimes(a.concat(/[ ]+/,t))),relevance:0}]};return{
+name:"GAMS",aliases:["gms"],case_insensitive:!0,keywords:n,
+contains:[e.COMMENT(/^\$ontext/,/^\$offtext/),{className:"meta",
+begin:"^\\$[a-z0-9]+",end:"$",returnBegin:!0,contains:[{className:"keyword",
+begin:"^\\$[a-z0-9]+"}]
+},e.COMMENT("^\\*","$"),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{
+beginKeywords:"set sets parameter parameters variable variables scalar scalars equation equations",
+end:";",
+contains:[e.COMMENT("^\\*","$"),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,o,r]
+},{beginKeywords:"table",end:";",returnBegin:!0,contains:[{
+beginKeywords:"table",end:"$",contains:[r]
+},e.COMMENT("^\\*","$"),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_NUMBER_MODE]
+},{className:"function",begin:/^[a-z][a-z0-9_,\-+' ()$]+\.{2}/,returnBegin:!0,
+contains:[{className:"title",begin:/^[a-z0-9_]+/},{className:"params",
+begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0},i]},e.C_NUMBER_MODE,i]}}})()
+;hljs.registerLanguage("gams",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/gauss.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/gauss.min.js
new file mode 100644
index 0000000..8a7fdd9
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/gauss.min.js
@@ -0,0 +1,36 @@
+/*! `gauss` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const t={
+keyword:"bool break call callexe checkinterrupt clear clearg closeall cls comlog compile continue create debug declare delete disable dlibrary dllcall do dos ed edit else elseif enable end endfor endif endp endo errorlog errorlogat expr external fn for format goto gosub graph if keyword let lib library line load loadarray loadexe loadf loadk loadm loadp loads loadx local locate loopnextindex lprint lpwidth lshow matrix msym ndpclex new open output outwidth plot plotsym pop prcsn print printdos proc push retp return rndcon rndmod rndmult rndseed run save saveall screen scroll setarray show sparse stop string struct system trace trap threadfor threadendfor threadbegin threadjoin threadstat threadend until use while winprint ne ge le gt lt and xor or not eq eqv",
+built_in:"abs acf aconcat aeye amax amean AmericanBinomCall AmericanBinomCall_Greeks AmericanBinomCall_ImpVol AmericanBinomPut AmericanBinomPut_Greeks AmericanBinomPut_ImpVol AmericanBSCall AmericanBSCall_Greeks AmericanBSCall_ImpVol AmericanBSPut AmericanBSPut_Greeks AmericanBSPut_ImpVol amin amult annotationGetDefaults annotationSetBkd annotationSetFont annotationSetLineColor annotationSetLineStyle annotationSetLineThickness annualTradingDays arccos arcsin areshape arrayalloc arrayindex arrayinit arraytomat asciiload asclabel astd astds asum atan atan2 atranspose axmargin balance band bandchol bandcholsol bandltsol bandrv bandsolpd bar base10 begwind besselj bessely beta box boxcox cdfBeta cdfBetaInv cdfBinomial cdfBinomialInv cdfBvn cdfBvn2 cdfBvn2e cdfCauchy cdfCauchyInv cdfChic cdfChii cdfChinc cdfChincInv cdfExp cdfExpInv cdfFc cdfFnc cdfFncInv cdfGam cdfGenPareto cdfHyperGeo cdfLaplace cdfLaplaceInv cdfLogistic cdfLogisticInv cdfmControlCreate cdfMvn cdfMvn2e cdfMvnce cdfMvne cdfMvt2e cdfMvtce cdfMvte cdfN cdfN2 cdfNc cdfNegBinomial cdfNegBinomialInv cdfNi cdfPoisson cdfPoissonInv cdfRayleigh cdfRayleighInv cdfTc cdfTci cdfTnc cdfTvn cdfWeibull cdfWeibullInv cdir ceil ChangeDir chdir chiBarSquare chol choldn cholsol cholup chrs close code cols colsf combinate combinated complex con cond conj cons ConScore contour conv convertsatostr convertstrtosa corrm corrms corrvc corrx corrxs cos cosh counts countwts crossprd crout croutp csrcol csrlin csvReadM csvReadSA cumprodc cumsumc curve cvtos datacreate datacreatecomplex datalist dataload dataloop dataopen datasave date datestr datestring datestrymd dayinyr dayofweek dbAddDatabase dbClose dbCommit dbCreateQuery dbExecQuery dbGetConnectOptions dbGetDatabaseName dbGetDriverName dbGetDrivers dbGetHostName dbGetLastErrorNum dbGetLastErrorText dbGetNumericalPrecPolicy dbGetPassword dbGetPort dbGetTableHeaders dbGetTables dbGetUserName dbHasFeature dbIsDriverAvailable dbIsOpen dbIsOpenError dbOpen dbQueryBindValue dbQueryClear dbQueryCols dbQueryExecPrepared dbQueryFetchAllM dbQueryFetchAllSA dbQueryFetchOneM dbQueryFetchOneSA dbQueryFinish dbQueryGetBoundValue dbQueryGetBoundValues dbQueryGetField dbQueryGetLastErrorNum dbQueryGetLastErrorText dbQueryGetLastInsertID dbQueryGetLastQuery dbQueryGetPosition dbQueryIsActive dbQueryIsForwardOnly dbQueryIsNull dbQueryIsSelect dbQueryIsValid dbQueryPrepare dbQueryRows dbQuerySeek dbQuerySeekFirst dbQuerySeekLast dbQuerySeekNext dbQuerySeekPrevious dbQuerySetForwardOnly dbRemoveDatabase dbRollback dbSetConnectOptions dbSetDatabaseName dbSetHostName dbSetNumericalPrecPolicy dbSetPort dbSetUserName dbTransaction DeleteFile delif delrows denseToSp denseToSpRE denToZero design det detl dfft dffti diag diagrv digamma doswin DOSWinCloseall DOSWinOpen dotfeq dotfeqmt dotfge dotfgemt dotfgt dotfgtmt dotfle dotflemt dotflt dotfltmt dotfne dotfnemt draw drop dsCreate dstat dstatmt dstatmtControlCreate dtdate dtday dttime dttodtv dttostr dttoutc dtvnormal dtvtodt dtvtoutc dummy dummybr dummydn eig eigh eighv eigv elapsedTradingDays endwind envget eof eqSolve eqSolvemt eqSolvemtControlCreate eqSolvemtOutCreate eqSolveset erf erfc erfccplx erfcplx error etdays ethsec etstr EuropeanBinomCall EuropeanBinomCall_Greeks EuropeanBinomCall_ImpVol EuropeanBinomPut EuropeanBinomPut_Greeks EuropeanBinomPut_ImpVol EuropeanBSCall EuropeanBSCall_Greeks EuropeanBSCall_ImpVol EuropeanBSPut EuropeanBSPut_Greeks EuropeanBSPut_ImpVol exctsmpl exec execbg exp extern eye fcheckerr fclearerr feq feqmt fflush fft ffti fftm fftmi fftn fge fgemt fgets fgetsa fgetsat fgetst fgt fgtmt fileinfo filesa fle flemt floor flt fltmt fmod fne fnemt fonts fopen formatcv formatnv fputs fputst fseek fstrerror ftell ftocv ftos ftostrC gamma gammacplx gammaii gausset gdaAppend gdaCreate gdaDStat gdaDStatMat gdaGetIndex gdaGetName gdaGetNames gdaGetOrders gdaGetType gdaGetTypes gdaGetVarInfo gdaIsCplx gdaLoad gdaPack gdaRead gdaReadByIndex gdaReadSome gdaReadSparse gdaReadStruct gdaReportVarInfo gdaSave gdaUpdate gdaUpdateAndPack gdaVars gdaWrite gdaWrite32 gdaWriteSome getarray getdims getf getGAUSShome getmatrix getmatrix4D getname getnamef getNextTradingDay getNextWeekDay getnr getorders getpath getPreviousTradingDay getPreviousWeekDay getRow getscalar3D getscalar4D getTrRow getwind glm gradcplx gradMT gradMTm gradMTT gradMTTm gradp graphprt graphset hasimag header headermt hess hessMT hessMTg hessMTgw hessMTm hessMTmw hessMTT hessMTTg hessMTTgw hessMTTm hessMTw hessp hist histf histp hsec imag indcv indexcat indices indices2 indicesf indicesfn indnv indsav integrate1d integrateControlCreate intgrat2 intgrat3 inthp1 inthp2 inthp3 inthp4 inthpControlCreate intquad1 intquad2 intquad3 intrleav intrleavsa intrsect intsimp inv invpd invswp iscplx iscplxf isden isinfnanmiss ismiss key keyav keyw lag lag1 lagn lapEighb lapEighi lapEighvb lapEighvi lapgEig lapgEigh lapgEighv lapgEigv lapgSchur lapgSvdcst lapgSvds lapgSvdst lapSvdcusv lapSvds lapSvdusv ldlp ldlsol linSolve listwise ln lncdfbvn lncdfbvn2 lncdfmvn lncdfn lncdfn2 lncdfnc lnfact lngammacplx lnpdfmvn lnpdfmvt lnpdfn lnpdft loadd loadstruct loadwind loess loessmt loessmtControlCreate log loglog logx logy lower lowmat lowmat1 ltrisol lu lusol machEpsilon make makevars makewind margin matalloc matinit mattoarray maxbytes maxc maxindc maxv maxvec mbesselei mbesselei0 mbesselei1 mbesseli mbesseli0 mbesseli1 meanc median mergeby mergevar minc minindc minv miss missex missrv moment momentd movingave movingaveExpwgt movingaveWgt nextindex nextn nextnevn nextwind ntos null null1 numCombinations ols olsmt olsmtControlCreate olsqr olsqr2 olsqrmt ones optn optnevn orth outtyp pacf packedToSp packr parse pause pdfCauchy pdfChi pdfExp pdfGenPareto pdfHyperGeo pdfLaplace pdfLogistic pdfn pdfPoisson pdfRayleigh pdfWeibull pi pinv pinvmt plotAddArrow plotAddBar plotAddBox plotAddHist plotAddHistF plotAddHistP plotAddPolar plotAddScatter plotAddShape plotAddTextbox plotAddTS plotAddXY plotArea plotBar plotBox plotClearLayout plotContour plotCustomLayout plotGetDefaults plotHist plotHistF plotHistP plotLayout plotLogLog plotLogX plotLogY plotOpenWindow plotPolar plotSave plotScatter plotSetAxesPen plotSetBar plotSetBarFill plotSetBarStacked plotSetBkdColor plotSetFill plotSetGrid plotSetLegend plotSetLineColor plotSetLineStyle plotSetLineSymbol plotSetLineThickness plotSetNewWindow plotSetTitle plotSetWhichYAxis plotSetXAxisShow plotSetXLabel plotSetXRange plotSetXTicInterval plotSetXTicLabel plotSetYAxisShow plotSetYLabel plotSetYRange plotSetZAxisShow plotSetZLabel plotSurface plotTS plotXY polar polychar polyeval polygamma polyint polymake polymat polymroot polymult polyroot pqgwin previousindex princomp printfm printfmt prodc psi putarray putf putvals pvCreate pvGetIndex pvGetParNames pvGetParVector pvLength pvList pvPack pvPacki pvPackm pvPackmi pvPacks pvPacksi pvPacksm pvPacksmi pvPutParVector pvTest pvUnpack QNewton QNewtonmt QNewtonmtControlCreate QNewtonmtOutCreate QNewtonSet QProg QProgmt QProgmtInCreate qqr qqre qqrep qr qre qrep qrsol qrtsol qtyr qtyre qtyrep quantile quantiled qyr qyre qyrep qz rank rankindx readr real reclassify reclassifyCuts recode recserar recsercp recserrc rerun rescale reshape rets rev rfft rffti rfftip rfftn rfftnp rfftp rndBernoulli rndBeta rndBinomial rndCauchy rndChiSquare rndCon rndCreateState rndExp rndGamma rndGeo rndGumbel rndHyperGeo rndi rndKMbeta rndKMgam rndKMi rndKMn rndKMnb rndKMp rndKMu rndKMvm rndLaplace rndLCbeta rndLCgam rndLCi rndLCn rndLCnb rndLCp rndLCu rndLCvm rndLogNorm rndMTu rndMVn rndMVt rndn rndnb rndNegBinomial rndp rndPoisson rndRayleigh rndStateSkip rndu rndvm rndWeibull rndWishart rotater round rows rowsf rref sampleData satostrC saved saveStruct savewind scale scale3d scalerr scalinfnanmiss scalmiss schtoc schur searchsourcepath seekr select selif seqa seqm setdif setdifsa setvars setvwrmode setwind shell shiftr sin singleindex sinh sleep solpd sortc sortcc sortd sorthc sorthcc sortind sortindc sortmc sortr sortrc spBiconjGradSol spChol spConjGradSol spCreate spDenseSubmat spDiagRvMat spEigv spEye spLDL spline spLU spNumNZE spOnes spreadSheetReadM spreadSheetReadSA spreadSheetWrite spScale spSubmat spToDense spTrTDense spTScalar spZeros sqpSolve sqpSolveMT sqpSolveMTControlCreate sqpSolveMTlagrangeCreate sqpSolveMToutCreate sqpSolveSet sqrt statements stdc stdsc stocv stof strcombine strindx strlen strput strrindx strsect strsplit strsplitPad strtodt strtof strtofcplx strtriml strtrimr strtrunc strtruncl strtruncpad strtruncr submat subscat substute subvec sumc sumr surface svd svd1 svd2 svdcusv svds svdusv sysstate tab tan tanh tempname time timedt timestr timeutc title tkf2eps tkf2ps tocart todaydt toeplitz token topolar trapchk trigamma trimr trunc type typecv typef union unionsa uniqindx uniqindxsa unique uniquesa upmat upmat1 upper utctodt utctodtv utrisol vals varCovMS varCovXS varget vargetl varmall varmares varput varputl vartypef vcm vcms vcx vcxs vec vech vecr vector vget view viewxyz vlist vnamecv volume vput vread vtypecv wait waitc walkindex where window writer xlabel xlsGetSheetCount xlsGetSheetSize xlsGetSheetTypes xlsMakeRange xlsReadM xlsReadSA xlsWrite xlsWriteM xlsWriteSA xpnd xtics xy xyz ylabel ytics zeros zeta zlabel ztics cdfEmpirical dot h5create h5open h5read h5readAttribute h5write h5writeAttribute ldl plotAddErrorBar plotAddSurface plotCDFEmpirical plotSetColormap plotSetContourLabels plotSetLegendFont plotSetTextInterpreter plotSetXTicCount plotSetYTicCount plotSetZLevels powerm strjoin sylvester strtrim",
+literal:"DB_AFTER_LAST_ROW DB_ALL_TABLES DB_BATCH_OPERATIONS DB_BEFORE_FIRST_ROW DB_BLOB DB_EVENT_NOTIFICATIONS DB_FINISH_QUERY DB_HIGH_PRECISION DB_LAST_INSERT_ID DB_LOW_PRECISION_DOUBLE DB_LOW_PRECISION_INT32 DB_LOW_PRECISION_INT64 DB_LOW_PRECISION_NUMBERS DB_MULTIPLE_RESULT_SETS DB_NAMED_PLACEHOLDERS DB_POSITIONAL_PLACEHOLDERS DB_PREPARED_QUERIES DB_QUERY_SIZE DB_SIMPLE_LOCKING DB_SYSTEM_TABLES DB_TABLES DB_TRANSACTIONS DB_UNICODE DB_VIEWS __STDIN __STDOUT __STDERR __FILE_DIR"
+},a=e.COMMENT("@","@"),r={className:"meta",begin:"#",end:"$",keywords:{
+keyword:"define definecs|10 undef ifdef ifndef iflight ifdllcall ifmac ifos2win ifunix else endif lineson linesoff srcfile srcline"
+},contains:[{begin:/\\\n/,relevance:0},{beginKeywords:"include",end:"$",
+keywords:{keyword:"include"},contains:[{className:"string",begin:'"',end:'"',
+illegal:"\\n"}]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a]},n={
+begin:/\bstruct\s+/,end:/\s/,keywords:"struct",contains:[{className:"type",
+begin:e.UNDERSCORE_IDENT_RE,relevance:0}]},s=[{className:"params",begin:/\(/,
+end:/\)/,excludeBegin:!0,excludeEnd:!0,endsWithParent:!0,relevance:0,contains:[{
+className:"literal",begin:/\.\.\./},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,a,n]
+}],o={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},d=(t,r,n)=>{
+const d=e.inherit({className:"function",beginKeywords:t,end:r,excludeEnd:!0,
+contains:[].concat(s)},n||{})
+;return d.contains.push(o),d.contains.push(e.C_NUMBER_MODE),
+d.contains.push(e.C_BLOCK_COMMENT_MODE),d.contains.push(a),d},l={
+className:"built_in",begin:"\\b("+t.built_in.split(" ").join("|")+")\\b"},i={
+className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE],relevance:0
+},c={begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,keywords:t,
+relevance:0,contains:[{beginKeywords:t.keyword},l,{className:"built_in",
+begin:e.UNDERSCORE_IDENT_RE,relevance:0}]},p={begin:/\(/,end:/\)/,relevance:0,
+keywords:{built_in:t.built_in,literal:t.literal},
+contains:[e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,a,l,c,i,"self"]}
+;return c.contains.push(p),{name:"GAUSS",aliases:["gss"],case_insensitive:!0,
+keywords:t,illegal:/(\{[%#]|[%#]\}| <- )/,
+contains:[e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,i,r,{
+className:"keyword",
+begin:/\bexternal (matrix|string|array|sparse matrix|struct|proc|keyword|fn)/
+},d("proc keyword",";"),d("fn","="),{beginKeywords:"for threadfor",end:/;/,
+relevance:0,contains:[e.C_BLOCK_COMMENT_MODE,a,p]},{variants:[{
+begin:e.UNDERSCORE_IDENT_RE+"\\."+e.UNDERSCORE_IDENT_RE},{
+begin:e.UNDERSCORE_IDENT_RE+"\\s*="}],relevance:0},c,n]}}})()
+;hljs.registerLanguage("gauss",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/gcode.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/gcode.min.js
new file mode 100644
index 0000000..b173436
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/gcode.min.js
@@ -0,0 +1,16 @@
+/*! `gcode` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const a=e.inherit(e.C_NUMBER_MODE,{
+begin:"([-+]?((\\.\\d+)|(\\d+)(\\.\\d*)?))|"+e.C_NUMBER_RE
+}),n=[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT(/\(/,/\)/),a,e.inherit(e.APOS_STRING_MODE,{
+illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"name",
+begin:"([G])([0-9]+\\.?[0-9]?)"},{className:"name",
+begin:"([M])([0-9]+\\.?[0-9]?)"},{className:"attr",begin:"(VC|VS|#)",
+end:"(\\d+)"},{className:"attr",begin:"(VZOFX|VZOFY|VZOFZ)"},{
+className:"built_in",
+begin:"(ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN)(\\[)",contains:[a],
+end:"\\]"},{className:"symbol",variants:[{begin:"N",end:"\\d+",illegal:"\\W"}]}]
+;return{name:"G-code (ISO 6983)",aliases:["nc"],case_insensitive:!0,keywords:{
+$pattern:"[A-Z_][A-Z0-9_.]*",
+keyword:"IF DO WHILE ENDWHILE CALL ENDIF SUB ENDSUB GOTO REPEAT ENDREPEAT EQ LT GT NE GE LE OR XOR"
+},contains:[{className:"meta",begin:"%"},{className:"meta",begin:"([O])([0-9]+)"
+}].concat(n)}}})();hljs.registerLanguage("gcode",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/gherkin.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/gherkin.min.js
new file mode 100644
index 0000000..1ba0dfb
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/gherkin.min.js
@@ -0,0 +1,8 @@
+/*! `gherkin` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Gherkin",aliases:["feature"],
+keywords:"Feature Background Ability Business Need Scenario Scenarios Scenario Outline Scenario Template Examples Given And Then But When",
+contains:[{className:"symbol",begin:"\\*",relevance:0},{className:"meta",
+begin:"@[^@\\s]+"},{begin:"\\|",end:"\\|\\w*$",contains:[{className:"string",
+begin:"[^|]+"}]},{className:"variable",begin:"<",end:">"},e.HASH_COMMENT_MODE,{
+className:"string",begin:'"""',end:'"""'},e.QUOTE_STRING_MODE]})})()
+;hljs.registerLanguage("gherkin",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/glsl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/glsl.min.js
new file mode 100644
index 0000000..8ac2fae
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/glsl.min.js
@@ -0,0 +1,8 @@
+/*! `glsl` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"GLSL",keywords:{
+keyword:"break continue discard do else for if return while switch case default attribute binding buffer ccw centroid centroid varying coherent column_major const cw depth_any depth_greater depth_less depth_unchanged early_fragment_tests equal_spacing flat fractional_even_spacing fractional_odd_spacing highp in index inout invariant invocations isolines layout line_strip lines lines_adjacency local_size_x local_size_y local_size_z location lowp max_vertices mediump noperspective offset origin_upper_left out packed patch pixel_center_integer point_mode points precise precision quads r11f_g11f_b10f r16 r16_snorm r16f r16i r16ui r32f r32i r32ui r8 r8_snorm r8i r8ui readonly restrict rg16 rg16_snorm rg16f rg16i rg16ui rg32f rg32i rg32ui rg8 rg8_snorm rg8i rg8ui rgb10_a2 rgb10_a2ui rgba16 rgba16_snorm rgba16f rgba16i rgba16ui rgba32f rgba32i rgba32ui rgba8 rgba8_snorm rgba8i rgba8ui row_major sample shared smooth std140 std430 stream triangle_strip triangles triangles_adjacency uniform varying vertices volatile writeonly",
+type:"atomic_uint bool bvec2 bvec3 bvec4 dmat2 dmat2x2 dmat2x3 dmat2x4 dmat3 dmat3x2 dmat3x3 dmat3x4 dmat4 dmat4x2 dmat4x3 dmat4x4 double dvec2 dvec3 dvec4 float iimage1D iimage1DArray iimage2D iimage2DArray iimage2DMS iimage2DMSArray iimage2DRect iimage3D iimageBuffer iimageCube iimageCubeArray image1D image1DArray image2D image2DArray image2DMS image2DMSArray image2DRect image3D imageBuffer imageCube imageCubeArray int isampler1D isampler1DArray isampler2D isampler2DArray isampler2DMS isampler2DMSArray isampler2DRect isampler3D isamplerBuffer isamplerCube isamplerCubeArray ivec2 ivec3 ivec4 mat2 mat2x2 mat2x3 mat2x4 mat3 mat3x2 mat3x3 mat3x4 mat4 mat4x2 mat4x3 mat4x4 sampler1D sampler1DArray sampler1DArrayShadow sampler1DShadow sampler2D sampler2DArray sampler2DArrayShadow sampler2DMS sampler2DMSArray sampler2DRect sampler2DRectShadow sampler2DShadow sampler3D samplerBuffer samplerCube samplerCubeArray samplerCubeArrayShadow samplerCubeShadow image1D uimage1DArray uimage2D uimage2DArray uimage2DMS uimage2DMSArray uimage2DRect uimage3D uimageBuffer uimageCube uimageCubeArray uint usampler1D usampler1DArray usampler2D usampler2DArray usampler2DMS usampler2DMSArray usampler2DRect usampler3D samplerBuffer usamplerCube usamplerCubeArray uvec2 uvec3 uvec4 vec2 vec3 vec4 void",
+built_in:"gl_MaxAtomicCounterBindings gl_MaxAtomicCounterBufferSize gl_MaxClipDistances gl_MaxClipPlanes gl_MaxCombinedAtomicCounterBuffers gl_MaxCombinedAtomicCounters gl_MaxCombinedImageUniforms gl_MaxCombinedImageUnitsAndFragmentOutputs gl_MaxCombinedTextureImageUnits gl_MaxComputeAtomicCounterBuffers gl_MaxComputeAtomicCounters gl_MaxComputeImageUniforms gl_MaxComputeTextureImageUnits gl_MaxComputeUniformComponents gl_MaxComputeWorkGroupCount gl_MaxComputeWorkGroupSize gl_MaxDrawBuffers gl_MaxFragmentAtomicCounterBuffers gl_MaxFragmentAtomicCounters gl_MaxFragmentImageUniforms gl_MaxFragmentInputComponents gl_MaxFragmentInputVectors gl_MaxFragmentUniformComponents gl_MaxFragmentUniformVectors gl_MaxGeometryAtomicCounterBuffers gl_MaxGeometryAtomicCounters gl_MaxGeometryImageUniforms gl_MaxGeometryInputComponents gl_MaxGeometryOutputComponents gl_MaxGeometryOutputVertices gl_MaxGeometryTextureImageUnits gl_MaxGeometryTotalOutputComponents gl_MaxGeometryUniformComponents gl_MaxGeometryVaryingComponents gl_MaxImageSamples gl_MaxImageUnits gl_MaxLights gl_MaxPatchVertices gl_MaxProgramTexelOffset gl_MaxTessControlAtomicCounterBuffers gl_MaxTessControlAtomicCounters gl_MaxTessControlImageUniforms gl_MaxTessControlInputComponents gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits gl_MaxTessControlTotalOutputComponents gl_MaxTessControlUniformComponents gl_MaxTessEvaluationAtomicCounterBuffers gl_MaxTessEvaluationAtomicCounters gl_MaxTessEvaluationImageUniforms gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents gl_MaxTessGenLevel gl_MaxTessPatchComponents gl_MaxTextureCoords gl_MaxTextureImageUnits gl_MaxTextureUnits gl_MaxVaryingComponents gl_MaxVaryingFloats gl_MaxVaryingVectors gl_MaxVertexAtomicCounterBuffers gl_MaxVertexAtomicCounters gl_MaxVertexAttribs gl_MaxVertexImageUniforms gl_MaxVertexOutputComponents gl_MaxVertexOutputVectors gl_MaxVertexTextureImageUnits gl_MaxVertexUniformComponents gl_MaxVertexUniformVectors gl_MaxViewports gl_MinProgramTexelOffset gl_BackColor gl_BackLightModelProduct gl_BackLightProduct gl_BackMaterial gl_BackSecondaryColor gl_ClipDistance gl_ClipPlane gl_ClipVertex gl_Color gl_DepthRange gl_EyePlaneQ gl_EyePlaneR gl_EyePlaneS gl_EyePlaneT gl_Fog gl_FogCoord gl_FogFragCoord gl_FragColor gl_FragCoord gl_FragData gl_FragDepth gl_FrontColor gl_FrontFacing gl_FrontLightModelProduct gl_FrontLightProduct gl_FrontMaterial gl_FrontSecondaryColor gl_GlobalInvocationID gl_InstanceID gl_InvocationID gl_Layer gl_LightModel gl_LightSource gl_LocalInvocationID gl_LocalInvocationIndex gl_ModelViewMatrix gl_ModelViewMatrixInverse gl_ModelViewMatrixInverseTranspose gl_ModelViewMatrixTranspose gl_ModelViewProjectionMatrix gl_ModelViewProjectionMatrixInverse gl_ModelViewProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixTranspose gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_Normal gl_NormalMatrix gl_NormalScale gl_NumSamples gl_NumWorkGroups gl_ObjectPlaneQ gl_ObjectPlaneR gl_ObjectPlaneS gl_ObjectPlaneT gl_PatchVerticesIn gl_Point gl_PointCoord gl_PointSize gl_Position gl_PrimitiveID gl_PrimitiveIDIn gl_ProjectionMatrix gl_ProjectionMatrixInverse gl_ProjectionMatrixInverseTranspose gl_ProjectionMatrixTranspose gl_SampleID gl_SampleMask gl_SampleMaskIn gl_SamplePosition gl_SecondaryColor gl_TessCoord gl_TessLevelInner gl_TessLevelOuter gl_TexCoord gl_TextureEnvColor gl_TextureMatrix gl_TextureMatrixInverse gl_TextureMatrixInverseTranspose gl_TextureMatrixTranspose gl_Vertex gl_VertexID gl_ViewportIndex gl_WorkGroupID gl_WorkGroupSize gl_in gl_out EmitStreamVertex EmitVertex EndPrimitive EndStreamPrimitive abs acos acosh all any asin asinh atan atanh atomicAdd atomicAnd atomicCompSwap atomicCounter atomicCounterDecrement atomicCounterIncrement atomicExchange atomicMax atomicMin atomicOr atomicXor barrier bitCount bitfieldExtract bitfieldInsert bitfieldReverse ceil clamp cos cosh cross dFdx dFdy degrees determinant distance dot equal exp exp2 faceforward findLSB findMSB floatBitsToInt floatBitsToUint floor fma fract frexp ftransform fwidth greaterThan greaterThanEqual groupMemoryBarrier imageAtomicAdd imageAtomicAnd imageAtomicCompSwap imageAtomicExchange imageAtomicMax imageAtomicMin imageAtomicOr imageAtomicXor imageLoad imageSize imageStore imulExtended intBitsToFloat interpolateAtCentroid interpolateAtOffset interpolateAtSample inverse inversesqrt isinf isnan ldexp length lessThan lessThanEqual log log2 matrixCompMult max memoryBarrier memoryBarrierAtomicCounter memoryBarrierBuffer memoryBarrierImage memoryBarrierShared min mix mod modf noise1 noise2 noise3 noise4 normalize not notEqual outerProduct packDouble2x32 packHalf2x16 packSnorm2x16 packSnorm4x8 packUnorm2x16 packUnorm4x8 pow radians reflect refract round roundEven shadow1D shadow1DLod shadow1DProj shadow1DProjLod shadow2D shadow2DLod shadow2DProj shadow2DProjLod sign sin sinh smoothstep sqrt step tan tanh texelFetch texelFetchOffset texture texture1D texture1DLod texture1DProj texture1DProjLod texture2D texture2DLod texture2DProj texture2DProjLod texture3D texture3DLod texture3DProj texture3DProjLod textureCube textureCubeLod textureGather textureGatherOffset textureGatherOffsets textureGrad textureGradOffset textureLod textureLodOffset textureOffset textureProj textureProjGrad textureProjGradOffset textureProjLod textureProjLodOffset textureProjOffset textureQueryLevels textureQueryLod textureSize transpose trunc uaddCarry uintBitsToFloat umulExtended unpackDouble2x32 unpackHalf2x16 unpackSnorm2x16 unpackSnorm4x8 unpackUnorm2x16 unpackUnorm4x8 usubBorrow",
+literal:"true false"},illegal:'"',
+contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{
+className:"meta",begin:"#",end:"$"}]})})();hljs.registerLanguage("glsl",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/gml.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/gml.min.js
new file mode 100644
index 0000000..0335007
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/gml.min.js
@@ -0,0 +1,11 @@
+/*! `gml` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"GML",case_insensitive:!1,
+keywords:{
+keyword:["begin","end","if","then","else","while","do","for","break","continue","with","until","repeat","exit","and","or","xor","not","return","mod","div","switch","case","default","var","globalvar","enum","function","constructor","delete","#macro","#region","#endregion"],
+built_in:["is_real","is_string","is_array","is_undefined","is_int32","is_int64","is_ptr","is_vec3","is_vec4","is_matrix","is_bool","is_method","is_struct","is_infinity","is_nan","is_numeric","typeof","variable_global_exists","variable_global_get","variable_global_set","variable_instance_exists","variable_instance_get","variable_instance_set","variable_instance_get_names","variable_struct_exists","variable_struct_get","variable_struct_get_names","variable_struct_names_count","variable_struct_remove","variable_struct_set","array_delete","array_insert","array_length","array_length_1d","array_length_2d","array_height_2d","array_equals","array_create","array_copy","array_pop","array_push","array_resize","array_sort","random","random_range","irandom","irandom_range","random_set_seed","random_get_seed","randomize","randomise","choose","abs","round","floor","ceil","sign","frac","sqrt","sqr","exp","ln","log2","log10","sin","cos","tan","arcsin","arccos","arctan","arctan2","dsin","dcos","dtan","darcsin","darccos","darctan","darctan2","degtorad","radtodeg","power","logn","min","max","mean","median","clamp","lerp","dot_product","dot_product_3d","dot_product_normalised","dot_product_3d_normalised","dot_product_normalized","dot_product_3d_normalized","math_set_epsilon","math_get_epsilon","angle_difference","point_distance_3d","point_distance","point_direction","lengthdir_x","lengthdir_y","real","string","int64","ptr","string_format","chr","ansi_char","ord","string_length","string_byte_length","string_pos","string_copy","string_char_at","string_ord_at","string_byte_at","string_set_byte_at","string_delete","string_insert","string_lower","string_upper","string_repeat","string_letters","string_digits","string_lettersdigits","string_replace","string_replace_all","string_count","string_hash_to_newline","clipboard_has_text","clipboard_set_text","clipboard_get_text","date_current_datetime","date_create_datetime","date_valid_datetime","date_inc_year","date_inc_month","date_inc_week","date_inc_day","date_inc_hour","date_inc_minute","date_inc_second","date_get_year","date_get_month","date_get_week","date_get_day","date_get_hour","date_get_minute","date_get_second","date_get_weekday","date_get_day_of_year","date_get_hour_of_year","date_get_minute_of_year","date_get_second_of_year","date_year_span","date_month_span","date_week_span","date_day_span","date_hour_span","date_minute_span","date_second_span","date_compare_datetime","date_compare_date","date_compare_time","date_date_of","date_time_of","date_datetime_string","date_date_string","date_time_string","date_days_in_month","date_days_in_year","date_leap_year","date_is_today","date_set_timezone","date_get_timezone","game_set_speed","game_get_speed","motion_set","motion_add","place_free","place_empty","place_meeting","place_snapped","move_random","move_snap","move_towards_point","move_contact_solid","move_contact_all","move_outside_solid","move_outside_all","move_bounce_solid","move_bounce_all","move_wrap","distance_to_point","distance_to_object","position_empty","position_meeting","path_start","path_end","mp_linear_step","mp_potential_step","mp_linear_step_object","mp_potential_step_object","mp_potential_settings","mp_linear_path","mp_potential_path","mp_linear_path_object","mp_potential_path_object","mp_grid_create","mp_grid_destroy","mp_grid_clear_all","mp_grid_clear_cell","mp_grid_clear_rectangle","mp_grid_add_cell","mp_grid_get_cell","mp_grid_add_rectangle","mp_grid_add_instances","mp_grid_path","mp_grid_draw","mp_grid_to_ds_grid","collision_point","collision_rectangle","collision_circle","collision_ellipse","collision_line","collision_point_list","collision_rectangle_list","collision_circle_list","collision_ellipse_list","collision_line_list","instance_position_list","instance_place_list","point_in_rectangle","point_in_triangle","point_in_circle","rectangle_in_rectangle","rectangle_in_triangle","rectangle_in_circle","instance_find","instance_exists","instance_number","instance_position","instance_nearest","instance_furthest","instance_place","instance_create_depth","instance_create_layer","instance_copy","instance_change","instance_destroy","position_destroy","position_change","instance_id_get","instance_deactivate_all","instance_deactivate_object","instance_deactivate_region","instance_activate_all","instance_activate_object","instance_activate_region","room_goto","room_goto_previous","room_goto_next","room_previous","room_next","room_restart","game_end","game_restart","game_load","game_save","game_save_buffer","game_load_buffer","event_perform","event_user","event_perform_object","event_inherited","show_debug_message","show_debug_overlay","debug_event","debug_get_callstack","alarm_get","alarm_set","font_texture_page_size","keyboard_set_map","keyboard_get_map","keyboard_unset_map","keyboard_check","keyboard_check_pressed","keyboard_check_released","keyboard_check_direct","keyboard_get_numlock","keyboard_set_numlock","keyboard_key_press","keyboard_key_release","keyboard_clear","io_clear","mouse_check_button","mouse_check_button_pressed","mouse_check_button_released","mouse_wheel_up","mouse_wheel_down","mouse_clear","draw_self","draw_sprite","draw_sprite_pos","draw_sprite_ext","draw_sprite_stretched","draw_sprite_stretched_ext","draw_sprite_tiled","draw_sprite_tiled_ext","draw_sprite_part","draw_sprite_part_ext","draw_sprite_general","draw_clear","draw_clear_alpha","draw_point","draw_line","draw_line_width","draw_rectangle","draw_roundrect","draw_roundrect_ext","draw_triangle","draw_circle","draw_ellipse","draw_set_circle_precision","draw_arrow","draw_button","draw_path","draw_healthbar","draw_getpixel","draw_getpixel_ext","draw_set_colour","draw_set_color","draw_set_alpha","draw_get_colour","draw_get_color","draw_get_alpha","merge_colour","make_colour_rgb","make_colour_hsv","colour_get_red","colour_get_green","colour_get_blue","colour_get_hue","colour_get_saturation","colour_get_value","merge_color","make_color_rgb","make_color_hsv","color_get_red","color_get_green","color_get_blue","color_get_hue","color_get_saturation","color_get_value","merge_color","screen_save","screen_save_part","draw_set_font","draw_set_halign","draw_set_valign","draw_text","draw_text_ext","string_width","string_height","string_width_ext","string_height_ext","draw_text_transformed","draw_text_ext_transformed","draw_text_colour","draw_text_ext_colour","draw_text_transformed_colour","draw_text_ext_transformed_colour","draw_text_color","draw_text_ext_color","draw_text_transformed_color","draw_text_ext_transformed_color","draw_point_colour","draw_line_colour","draw_line_width_colour","draw_rectangle_colour","draw_roundrect_colour","draw_roundrect_colour_ext","draw_triangle_colour","draw_circle_colour","draw_ellipse_colour","draw_point_color","draw_line_color","draw_line_width_color","draw_rectangle_color","draw_roundrect_color","draw_roundrect_color_ext","draw_triangle_color","draw_circle_color","draw_ellipse_color","draw_primitive_begin","draw_vertex","draw_vertex_colour","draw_vertex_color","draw_primitive_end","sprite_get_uvs","font_get_uvs","sprite_get_texture","font_get_texture","texture_get_width","texture_get_height","texture_get_uvs","draw_primitive_begin_texture","draw_vertex_texture","draw_vertex_texture_colour","draw_vertex_texture_color","texture_global_scale","surface_create","surface_create_ext","surface_resize","surface_free","surface_exists","surface_get_width","surface_get_height","surface_get_texture","surface_set_target","surface_set_target_ext","surface_reset_target","surface_depth_disable","surface_get_depth_disable","draw_surface","draw_surface_stretched","draw_surface_tiled","draw_surface_part","draw_surface_ext","draw_surface_stretched_ext","draw_surface_tiled_ext","draw_surface_part_ext","draw_surface_general","surface_getpixel","surface_getpixel_ext","surface_save","surface_save_part","surface_copy","surface_copy_part","application_surface_draw_enable","application_get_position","application_surface_enable","application_surface_is_enabled","display_get_width","display_get_height","display_get_orientation","display_get_gui_width","display_get_gui_height","display_reset","display_mouse_get_x","display_mouse_get_y","display_mouse_set","display_set_ui_visibility","window_set_fullscreen","window_get_fullscreen","window_set_caption","window_set_min_width","window_set_max_width","window_set_min_height","window_set_max_height","window_get_visible_rects","window_get_caption","window_set_cursor","window_get_cursor","window_set_colour","window_get_colour","window_set_color","window_get_color","window_set_position","window_set_size","window_set_rectangle","window_center","window_get_x","window_get_y","window_get_width","window_get_height","window_mouse_get_x","window_mouse_get_y","window_mouse_set","window_view_mouse_get_x","window_view_mouse_get_y","window_views_mouse_get_x","window_views_mouse_get_y","audio_listener_position","audio_listener_velocity","audio_listener_orientation","audio_emitter_position","audio_emitter_create","audio_emitter_free","audio_emitter_exists","audio_emitter_pitch","audio_emitter_velocity","audio_emitter_falloff","audio_emitter_gain","audio_play_sound","audio_play_sound_on","audio_play_sound_at","audio_stop_sound","audio_resume_music","audio_music_is_playing","audio_resume_sound","audio_pause_sound","audio_pause_music","audio_channel_num","audio_sound_length","audio_get_type","audio_falloff_set_model","audio_play_music","audio_stop_music","audio_master_gain","audio_music_gain","audio_sound_gain","audio_sound_pitch","audio_stop_all","audio_resume_all","audio_pause_all","audio_is_playing","audio_is_paused","audio_exists","audio_sound_set_track_position","audio_sound_get_track_position","audio_emitter_get_gain","audio_emitter_get_pitch","audio_emitter_get_x","audio_emitter_get_y","audio_emitter_get_z","audio_emitter_get_vx","audio_emitter_get_vy","audio_emitter_get_vz","audio_listener_set_position","audio_listener_set_velocity","audio_listener_set_orientation","audio_listener_get_data","audio_set_master_gain","audio_get_master_gain","audio_sound_get_gain","audio_sound_get_pitch","audio_get_name","audio_sound_set_track_position","audio_sound_get_track_position","audio_create_stream","audio_destroy_stream","audio_create_sync_group","audio_destroy_sync_group","audio_play_in_sync_group","audio_start_sync_group","audio_stop_sync_group","audio_pause_sync_group","audio_resume_sync_group","audio_sync_group_get_track_pos","audio_sync_group_debug","audio_sync_group_is_playing","audio_debug","audio_group_load","audio_group_unload","audio_group_is_loaded","audio_group_load_progress","audio_group_name","audio_group_stop_all","audio_group_set_gain","audio_create_buffer_sound","audio_free_buffer_sound","audio_create_play_queue","audio_free_play_queue","audio_queue_sound","audio_get_recorder_count","audio_get_recorder_info","audio_start_recording","audio_stop_recording","audio_sound_get_listener_mask","audio_emitter_get_listener_mask","audio_get_listener_mask","audio_sound_set_listener_mask","audio_emitter_set_listener_mask","audio_set_listener_mask","audio_get_listener_count","audio_get_listener_info","audio_system","show_message","show_message_async","clickable_add","clickable_add_ext","clickable_change","clickable_change_ext","clickable_delete","clickable_exists","clickable_set_style","show_question","show_question_async","get_integer","get_string","get_integer_async","get_string_async","get_login_async","get_open_filename","get_save_filename","get_open_filename_ext","get_save_filename_ext","show_error","highscore_clear","highscore_add","highscore_value","highscore_name","draw_highscore","sprite_exists","sprite_get_name","sprite_get_number","sprite_get_width","sprite_get_height","sprite_get_xoffset","sprite_get_yoffset","sprite_get_bbox_left","sprite_get_bbox_right","sprite_get_bbox_top","sprite_get_bbox_bottom","sprite_save","sprite_save_strip","sprite_set_cache_size","sprite_set_cache_size_ext","sprite_get_tpe","sprite_prefetch","sprite_prefetch_multi","sprite_flush","sprite_flush_multi","sprite_set_speed","sprite_get_speed_type","sprite_get_speed","font_exists","font_get_name","font_get_fontname","font_get_bold","font_get_italic","font_get_first","font_get_last","font_get_size","font_set_cache_size","path_exists","path_get_name","path_get_length","path_get_time","path_get_kind","path_get_closed","path_get_precision","path_get_number","path_get_point_x","path_get_point_y","path_get_point_speed","path_get_x","path_get_y","path_get_speed","script_exists","script_get_name","timeline_add","timeline_delete","timeline_clear","timeline_exists","timeline_get_name","timeline_moment_clear","timeline_moment_add_script","timeline_size","timeline_max_moment","object_exists","object_get_name","object_get_sprite","object_get_solid","object_get_visible","object_get_persistent","object_get_mask","object_get_parent","object_get_physics","object_is_ancestor","room_exists","room_get_name","sprite_set_offset","sprite_duplicate","sprite_assign","sprite_merge","sprite_add","sprite_replace","sprite_create_from_surface","sprite_add_from_surface","sprite_delete","sprite_set_alpha_from_sprite","sprite_collision_mask","font_add_enable_aa","font_add_get_enable_aa","font_add","font_add_sprite","font_add_sprite_ext","font_replace","font_replace_sprite","font_replace_sprite_ext","font_delete","path_set_kind","path_set_closed","path_set_precision","path_add","path_assign","path_duplicate","path_append","path_delete","path_add_point","path_insert_point","path_change_point","path_delete_point","path_clear_points","path_reverse","path_mirror","path_flip","path_rotate","path_rescale","path_shift","script_execute","object_set_sprite","object_set_solid","object_set_visible","object_set_persistent","object_set_mask","room_set_width","room_set_height","room_set_persistent","room_set_background_colour","room_set_background_color","room_set_view","room_set_viewport","room_get_viewport","room_set_view_enabled","room_add","room_duplicate","room_assign","room_instance_add","room_instance_clear","room_get_camera","room_set_camera","asset_get_index","asset_get_type","file_text_open_from_string","file_text_open_read","file_text_open_write","file_text_open_append","file_text_close","file_text_write_string","file_text_write_real","file_text_writeln","file_text_read_string","file_text_read_real","file_text_readln","file_text_eof","file_text_eoln","file_exists","file_delete","file_rename","file_copy","directory_exists","directory_create","directory_destroy","file_find_first","file_find_next","file_find_close","file_attributes","filename_name","filename_path","filename_dir","filename_drive","filename_ext","filename_change_ext","file_bin_open","file_bin_rewrite","file_bin_close","file_bin_position","file_bin_size","file_bin_seek","file_bin_write_byte","file_bin_read_byte","parameter_count","parameter_string","environment_get_variable","ini_open_from_string","ini_open","ini_close","ini_read_string","ini_read_real","ini_write_string","ini_write_real","ini_key_exists","ini_section_exists","ini_key_delete","ini_section_delete","ds_set_precision","ds_exists","ds_stack_create","ds_stack_destroy","ds_stack_clear","ds_stack_copy","ds_stack_size","ds_stack_empty","ds_stack_push","ds_stack_pop","ds_stack_top","ds_stack_write","ds_stack_read","ds_queue_create","ds_queue_destroy","ds_queue_clear","ds_queue_copy","ds_queue_size","ds_queue_empty","ds_queue_enqueue","ds_queue_dequeue","ds_queue_head","ds_queue_tail","ds_queue_write","ds_queue_read","ds_list_create","ds_list_destroy","ds_list_clear","ds_list_copy","ds_list_size","ds_list_empty","ds_list_add","ds_list_insert","ds_list_replace","ds_list_delete","ds_list_find_index","ds_list_find_value","ds_list_mark_as_list","ds_list_mark_as_map","ds_list_sort","ds_list_shuffle","ds_list_write","ds_list_read","ds_list_set","ds_map_create","ds_map_destroy","ds_map_clear","ds_map_copy","ds_map_size","ds_map_empty","ds_map_add","ds_map_add_list","ds_map_add_map","ds_map_replace","ds_map_replace_map","ds_map_replace_list","ds_map_delete","ds_map_exists","ds_map_find_value","ds_map_find_previous","ds_map_find_next","ds_map_find_first","ds_map_find_last","ds_map_write","ds_map_read","ds_map_secure_save","ds_map_secure_load","ds_map_secure_load_buffer","ds_map_secure_save_buffer","ds_map_set","ds_priority_create","ds_priority_destroy","ds_priority_clear","ds_priority_copy","ds_priority_size","ds_priority_empty","ds_priority_add","ds_priority_change_priority","ds_priority_find_priority","ds_priority_delete_value","ds_priority_delete_min","ds_priority_find_min","ds_priority_delete_max","ds_priority_find_max","ds_priority_write","ds_priority_read","ds_grid_create","ds_grid_destroy","ds_grid_copy","ds_grid_resize","ds_grid_width","ds_grid_height","ds_grid_clear","ds_grid_set","ds_grid_add","ds_grid_multiply","ds_grid_set_region","ds_grid_add_region","ds_grid_multiply_region","ds_grid_set_disk","ds_grid_add_disk","ds_grid_multiply_disk","ds_grid_set_grid_region","ds_grid_add_grid_region","ds_grid_multiply_grid_region","ds_grid_get","ds_grid_get_sum","ds_grid_get_max","ds_grid_get_min","ds_grid_get_mean","ds_grid_get_disk_sum","ds_grid_get_disk_min","ds_grid_get_disk_max","ds_grid_get_disk_mean","ds_grid_value_exists","ds_grid_value_x","ds_grid_value_y","ds_grid_value_disk_exists","ds_grid_value_disk_x","ds_grid_value_disk_y","ds_grid_shuffle","ds_grid_write","ds_grid_read","ds_grid_sort","ds_grid_set","ds_grid_get","effect_create_below","effect_create_above","effect_clear","part_type_create","part_type_destroy","part_type_exists","part_type_clear","part_type_shape","part_type_sprite","part_type_size","part_type_scale","part_type_orientation","part_type_life","part_type_step","part_type_death","part_type_speed","part_type_direction","part_type_gravity","part_type_colour1","part_type_colour2","part_type_colour3","part_type_colour_mix","part_type_colour_rgb","part_type_colour_hsv","part_type_color1","part_type_color2","part_type_color3","part_type_color_mix","part_type_color_rgb","part_type_color_hsv","part_type_alpha1","part_type_alpha2","part_type_alpha3","part_type_blend","part_system_create","part_system_create_layer","part_system_destroy","part_system_exists","part_system_clear","part_system_draw_order","part_system_depth","part_system_position","part_system_automatic_update","part_system_automatic_draw","part_system_update","part_system_drawit","part_system_get_layer","part_system_layer","part_particles_create","part_particles_create_colour","part_particles_create_color","part_particles_clear","part_particles_count","part_emitter_create","part_emitter_destroy","part_emitter_destroy_all","part_emitter_exists","part_emitter_clear","part_emitter_region","part_emitter_burst","part_emitter_stream","external_call","external_define","external_free","window_handle","window_device","matrix_get","matrix_set","matrix_build_identity","matrix_build","matrix_build_lookat","matrix_build_projection_ortho","matrix_build_projection_perspective","matrix_build_projection_perspective_fov","matrix_multiply","matrix_transform_vertex","matrix_stack_push","matrix_stack_pop","matrix_stack_multiply","matrix_stack_set","matrix_stack_clear","matrix_stack_top","matrix_stack_is_empty","browser_input_capture","os_get_config","os_get_info","os_get_language","os_get_region","os_lock_orientation","display_get_dpi_x","display_get_dpi_y","display_set_gui_size","display_set_gui_maximise","display_set_gui_maximize","device_mouse_dbclick_enable","display_set_timing_method","display_get_timing_method","display_set_sleep_margin","display_get_sleep_margin","virtual_key_add","virtual_key_hide","virtual_key_delete","virtual_key_show","draw_enable_drawevent","draw_enable_swf_aa","draw_set_swf_aa_level","draw_get_swf_aa_level","draw_texture_flush","draw_flush","gpu_set_blendenable","gpu_set_ztestenable","gpu_set_zfunc","gpu_set_zwriteenable","gpu_set_lightingenable","gpu_set_fog","gpu_set_cullmode","gpu_set_blendmode","gpu_set_blendmode_ext","gpu_set_blendmode_ext_sepalpha","gpu_set_colorwriteenable","gpu_set_colourwriteenable","gpu_set_alphatestenable","gpu_set_alphatestref","gpu_set_alphatestfunc","gpu_set_texfilter","gpu_set_texfilter_ext","gpu_set_texrepeat","gpu_set_texrepeat_ext","gpu_set_tex_filter","gpu_set_tex_filter_ext","gpu_set_tex_repeat","gpu_set_tex_repeat_ext","gpu_set_tex_mip_filter","gpu_set_tex_mip_filter_ext","gpu_set_tex_mip_bias","gpu_set_tex_mip_bias_ext","gpu_set_tex_min_mip","gpu_set_tex_min_mip_ext","gpu_set_tex_max_mip","gpu_set_tex_max_mip_ext","gpu_set_tex_max_aniso","gpu_set_tex_max_aniso_ext","gpu_set_tex_mip_enable","gpu_set_tex_mip_enable_ext","gpu_get_blendenable","gpu_get_ztestenable","gpu_get_zfunc","gpu_get_zwriteenable","gpu_get_lightingenable","gpu_get_fog","gpu_get_cullmode","gpu_get_blendmode","gpu_get_blendmode_ext","gpu_get_blendmode_ext_sepalpha","gpu_get_blendmode_src","gpu_get_blendmode_dest","gpu_get_blendmode_srcalpha","gpu_get_blendmode_destalpha","gpu_get_colorwriteenable","gpu_get_colourwriteenable","gpu_get_alphatestenable","gpu_get_alphatestref","gpu_get_alphatestfunc","gpu_get_texfilter","gpu_get_texfilter_ext","gpu_get_texrepeat","gpu_get_texrepeat_ext","gpu_get_tex_filter","gpu_get_tex_filter_ext","gpu_get_tex_repeat","gpu_get_tex_repeat_ext","gpu_get_tex_mip_filter","gpu_get_tex_mip_filter_ext","gpu_get_tex_mip_bias","gpu_get_tex_mip_bias_ext","gpu_get_tex_min_mip","gpu_get_tex_min_mip_ext","gpu_get_tex_max_mip","gpu_get_tex_max_mip_ext","gpu_get_tex_max_aniso","gpu_get_tex_max_aniso_ext","gpu_get_tex_mip_enable","gpu_get_tex_mip_enable_ext","gpu_push_state","gpu_pop_state","gpu_get_state","gpu_set_state","draw_light_define_ambient","draw_light_define_direction","draw_light_define_point","draw_light_enable","draw_set_lighting","draw_light_get_ambient","draw_light_get","draw_get_lighting","shop_leave_rating","url_get_domain","url_open","url_open_ext","url_open_full","get_timer","achievement_login","achievement_logout","achievement_post","achievement_increment","achievement_post_score","achievement_available","achievement_show_achievements","achievement_show_leaderboards","achievement_load_friends","achievement_load_leaderboard","achievement_send_challenge","achievement_load_progress","achievement_reset","achievement_login_status","achievement_get_pic","achievement_show_challenge_notifications","achievement_get_challenges","achievement_event","achievement_show","achievement_get_info","cloud_file_save","cloud_string_save","cloud_synchronise","ads_enable","ads_disable","ads_setup","ads_engagement_launch","ads_engagement_available","ads_engagement_active","ads_event","ads_event_preload","ads_set_reward_callback","ads_get_display_height","ads_get_display_width","ads_move","ads_interstitial_available","ads_interstitial_display","device_get_tilt_x","device_get_tilt_y","device_get_tilt_z","device_is_keypad_open","device_mouse_check_button","device_mouse_check_button_pressed","device_mouse_check_button_released","device_mouse_x","device_mouse_y","device_mouse_raw_x","device_mouse_raw_y","device_mouse_x_to_gui","device_mouse_y_to_gui","iap_activate","iap_status","iap_enumerate_products","iap_restore_all","iap_acquire","iap_consume","iap_product_details","iap_purchase_details","facebook_init","facebook_login","facebook_status","facebook_graph_request","facebook_dialog","facebook_logout","facebook_launch_offerwall","facebook_post_message","facebook_send_invite","facebook_user_id","facebook_accesstoken","facebook_check_permission","facebook_request_read_permissions","facebook_request_publish_permissions","gamepad_is_supported","gamepad_get_device_count","gamepad_is_connected","gamepad_get_description","gamepad_get_button_threshold","gamepad_set_button_threshold","gamepad_get_axis_deadzone","gamepad_set_axis_deadzone","gamepad_button_count","gamepad_button_check","gamepad_button_check_pressed","gamepad_button_check_released","gamepad_button_value","gamepad_axis_count","gamepad_axis_value","gamepad_set_vibration","gamepad_set_colour","gamepad_set_color","os_is_paused","window_has_focus","code_is_compiled","http_get","http_get_file","http_post_string","http_request","json_encode","json_decode","zip_unzip","load_csv","base64_encode","base64_decode","md5_string_unicode","md5_string_utf8","md5_file","os_is_network_connected","sha1_string_unicode","sha1_string_utf8","sha1_file","os_powersave_enable","analytics_event","analytics_event_ext","win8_livetile_tile_notification","win8_livetile_tile_clear","win8_livetile_badge_notification","win8_livetile_badge_clear","win8_livetile_queue_enable","win8_secondarytile_pin","win8_secondarytile_badge_notification","win8_secondarytile_delete","win8_livetile_notification_begin","win8_livetile_notification_secondary_begin","win8_livetile_notification_expiry","win8_livetile_notification_tag","win8_livetile_notification_text_add","win8_livetile_notification_image_add","win8_livetile_notification_end","win8_appbar_enable","win8_appbar_add_element","win8_appbar_remove_element","win8_settingscharm_add_entry","win8_settingscharm_add_html_entry","win8_settingscharm_add_xaml_entry","win8_settingscharm_set_xaml_property","win8_settingscharm_get_xaml_property","win8_settingscharm_remove_entry","win8_share_image","win8_share_screenshot","win8_share_file","win8_share_url","win8_share_text","win8_search_enable","win8_search_disable","win8_search_add_suggestions","win8_device_touchscreen_available","win8_license_initialize_sandbox","win8_license_trial_version","winphone_license_trial_version","winphone_tile_title","winphone_tile_count","winphone_tile_back_title","winphone_tile_back_content","winphone_tile_back_content_wide","winphone_tile_front_image","winphone_tile_front_image_small","winphone_tile_front_image_wide","winphone_tile_back_image","winphone_tile_back_image_wide","winphone_tile_background_colour","winphone_tile_background_color","winphone_tile_icon_image","winphone_tile_small_icon_image","winphone_tile_wide_content","winphone_tile_cycle_images","winphone_tile_small_background_image","physics_world_create","physics_world_gravity","physics_world_update_speed","physics_world_update_iterations","physics_world_draw_debug","physics_pause_enable","physics_fixture_create","physics_fixture_set_kinematic","physics_fixture_set_density","physics_fixture_set_awake","physics_fixture_set_restitution","physics_fixture_set_friction","physics_fixture_set_collision_group","physics_fixture_set_sensor","physics_fixture_set_linear_damping","physics_fixture_set_angular_damping","physics_fixture_set_circle_shape","physics_fixture_set_box_shape","physics_fixture_set_edge_shape","physics_fixture_set_polygon_shape","physics_fixture_set_chain_shape","physics_fixture_add_point","physics_fixture_bind","physics_fixture_bind_ext","physics_fixture_delete","physics_apply_force","physics_apply_impulse","physics_apply_angular_impulse","physics_apply_local_force","physics_apply_local_impulse","physics_apply_torque","physics_mass_properties","physics_draw_debug","physics_test_overlap","physics_remove_fixture","physics_set_friction","physics_set_density","physics_set_restitution","physics_get_friction","physics_get_density","physics_get_restitution","physics_joint_distance_create","physics_joint_rope_create","physics_joint_revolute_create","physics_joint_prismatic_create","physics_joint_pulley_create","physics_joint_wheel_create","physics_joint_weld_create","physics_joint_friction_create","physics_joint_gear_create","physics_joint_enable_motor","physics_joint_get_value","physics_joint_set_value","physics_joint_delete","physics_particle_create","physics_particle_delete","physics_particle_delete_region_circle","physics_particle_delete_region_box","physics_particle_delete_region_poly","physics_particle_set_flags","physics_particle_set_category_flags","physics_particle_draw","physics_particle_draw_ext","physics_particle_count","physics_particle_get_data","physics_particle_get_data_particle","physics_particle_group_begin","physics_particle_group_circle","physics_particle_group_box","physics_particle_group_polygon","physics_particle_group_add_point","physics_particle_group_end","physics_particle_group_join","physics_particle_group_delete","physics_particle_group_count","physics_particle_group_get_data","physics_particle_group_get_mass","physics_particle_group_get_inertia","physics_particle_group_get_centre_x","physics_particle_group_get_centre_y","physics_particle_group_get_vel_x","physics_particle_group_get_vel_y","physics_particle_group_get_ang_vel","physics_particle_group_get_x","physics_particle_group_get_y","physics_particle_group_get_angle","physics_particle_set_group_flags","physics_particle_get_group_flags","physics_particle_get_max_count","physics_particle_get_radius","physics_particle_get_density","physics_particle_get_damping","physics_particle_get_gravity_scale","physics_particle_set_max_count","physics_particle_set_radius","physics_particle_set_density","physics_particle_set_damping","physics_particle_set_gravity_scale","network_create_socket","network_create_socket_ext","network_create_server","network_create_server_raw","network_connect","network_connect_raw","network_send_packet","network_send_raw","network_send_broadcast","network_send_udp","network_send_udp_raw","network_set_timeout","network_set_config","network_resolve","network_destroy","buffer_create","buffer_write","buffer_read","buffer_seek","buffer_get_surface","buffer_set_surface","buffer_delete","buffer_exists","buffer_get_type","buffer_get_alignment","buffer_poke","buffer_peek","buffer_save","buffer_save_ext","buffer_load","buffer_load_ext","buffer_load_partial","buffer_copy","buffer_fill","buffer_get_size","buffer_tell","buffer_resize","buffer_md5","buffer_sha1","buffer_base64_encode","buffer_base64_decode","buffer_base64_decode_ext","buffer_sizeof","buffer_get_address","buffer_create_from_vertex_buffer","buffer_create_from_vertex_buffer_ext","buffer_copy_from_vertex_buffer","buffer_async_group_begin","buffer_async_group_option","buffer_async_group_end","buffer_load_async","buffer_save_async","gml_release_mode","gml_pragma","steam_activate_overlay","steam_is_overlay_enabled","steam_is_overlay_activated","steam_get_persona_name","steam_initialised","steam_is_cloud_enabled_for_app","steam_is_cloud_enabled_for_account","steam_file_persisted","steam_get_quota_total","steam_get_quota_free","steam_file_write","steam_file_write_file","steam_file_read","steam_file_delete","steam_file_exists","steam_file_size","steam_file_share","steam_is_screenshot_requested","steam_send_screenshot","steam_is_user_logged_on","steam_get_user_steam_id","steam_user_owns_dlc","steam_user_installed_dlc","steam_set_achievement","steam_get_achievement","steam_clear_achievement","steam_set_stat_int","steam_set_stat_float","steam_set_stat_avg_rate","steam_get_stat_int","steam_get_stat_float","steam_get_stat_avg_rate","steam_reset_all_stats","steam_reset_all_stats_achievements","steam_stats_ready","steam_create_leaderboard","steam_upload_score","steam_upload_score_ext","steam_download_scores_around_user","steam_download_scores","steam_download_friends_scores","steam_upload_score_buffer","steam_upload_score_buffer_ext","steam_current_game_language","steam_available_languages","steam_activate_overlay_browser","steam_activate_overlay_user","steam_activate_overlay_store","steam_get_user_persona_name","steam_get_app_id","steam_get_user_account_id","steam_ugc_download","steam_ugc_create_item","steam_ugc_start_item_update","steam_ugc_set_item_title","steam_ugc_set_item_description","steam_ugc_set_item_visibility","steam_ugc_set_item_tags","steam_ugc_set_item_content","steam_ugc_set_item_preview","steam_ugc_submit_item_update","steam_ugc_get_item_update_progress","steam_ugc_subscribe_item","steam_ugc_unsubscribe_item","steam_ugc_num_subscribed_items","steam_ugc_get_subscribed_items","steam_ugc_get_item_install_info","steam_ugc_get_item_update_info","steam_ugc_request_item_details","steam_ugc_create_query_user","steam_ugc_create_query_user_ex","steam_ugc_create_query_all","steam_ugc_create_query_all_ex","steam_ugc_query_set_cloud_filename_filter","steam_ugc_query_set_match_any_tag","steam_ugc_query_set_search_text","steam_ugc_query_set_ranked_by_trend_days","steam_ugc_query_add_required_tag","steam_ugc_query_add_excluded_tag","steam_ugc_query_set_return_long_description","steam_ugc_query_set_return_total_only","steam_ugc_query_set_allow_cached_response","steam_ugc_send_query","shader_set","shader_get_name","shader_reset","shader_current","shader_is_compiled","shader_get_sampler_index","shader_get_uniform","shader_set_uniform_i","shader_set_uniform_i_array","shader_set_uniform_f","shader_set_uniform_f_array","shader_set_uniform_matrix","shader_set_uniform_matrix_array","shader_enable_corner_id","texture_set_stage","texture_get_texel_width","texture_get_texel_height","shaders_are_supported","vertex_format_begin","vertex_format_end","vertex_format_delete","vertex_format_add_position","vertex_format_add_position_3d","vertex_format_add_colour","vertex_format_add_color","vertex_format_add_normal","vertex_format_add_texcoord","vertex_format_add_textcoord","vertex_format_add_custom","vertex_create_buffer","vertex_create_buffer_ext","vertex_delete_buffer","vertex_begin","vertex_end","vertex_position","vertex_position_3d","vertex_colour","vertex_color","vertex_argb","vertex_texcoord","vertex_normal","vertex_float1","vertex_float2","vertex_float3","vertex_float4","vertex_ubyte4","vertex_submit","vertex_freeze","vertex_get_number","vertex_get_buffer_size","vertex_create_buffer_from_buffer","vertex_create_buffer_from_buffer_ext","push_local_notification","push_get_first_local_notification","push_get_next_local_notification","push_cancel_local_notification","skeleton_animation_set","skeleton_animation_get","skeleton_animation_mix","skeleton_animation_set_ext","skeleton_animation_get_ext","skeleton_animation_get_duration","skeleton_animation_get_frames","skeleton_animation_clear","skeleton_skin_set","skeleton_skin_get","skeleton_attachment_set","skeleton_attachment_get","skeleton_attachment_create","skeleton_collision_draw_set","skeleton_bone_data_get","skeleton_bone_data_set","skeleton_bone_state_get","skeleton_bone_state_set","skeleton_get_minmax","skeleton_get_num_bounds","skeleton_get_bounds","skeleton_animation_get_frame","skeleton_animation_set_frame","draw_skeleton","draw_skeleton_time","draw_skeleton_instance","draw_skeleton_collision","skeleton_animation_list","skeleton_skin_list","skeleton_slot_data","layer_get_id","layer_get_id_at_depth","layer_get_depth","layer_create","layer_destroy","layer_destroy_instances","layer_add_instance","layer_has_instance","layer_set_visible","layer_get_visible","layer_exists","layer_x","layer_y","layer_get_x","layer_get_y","layer_hspeed","layer_vspeed","layer_get_hspeed","layer_get_vspeed","layer_script_begin","layer_script_end","layer_shader","layer_get_script_begin","layer_get_script_end","layer_get_shader","layer_set_target_room","layer_get_target_room","layer_reset_target_room","layer_get_all","layer_get_all_elements","layer_get_name","layer_depth","layer_get_element_layer","layer_get_element_type","layer_element_move","layer_force_draw_depth","layer_is_draw_depth_forced","layer_get_forced_depth","layer_background_get_id","layer_background_exists","layer_background_create","layer_background_destroy","layer_background_visible","layer_background_change","layer_background_sprite","layer_background_htiled","layer_background_vtiled","layer_background_stretch","layer_background_yscale","layer_background_xscale","layer_background_blend","layer_background_alpha","layer_background_index","layer_background_speed","layer_background_get_visible","layer_background_get_sprite","layer_background_get_htiled","layer_background_get_vtiled","layer_background_get_stretch","layer_background_get_yscale","layer_background_get_xscale","layer_background_get_blend","layer_background_get_alpha","layer_background_get_index","layer_background_get_speed","layer_sprite_get_id","layer_sprite_exists","layer_sprite_create","layer_sprite_destroy","layer_sprite_change","layer_sprite_index","layer_sprite_speed","layer_sprite_xscale","layer_sprite_yscale","layer_sprite_angle","layer_sprite_blend","layer_sprite_alpha","layer_sprite_x","layer_sprite_y","layer_sprite_get_sprite","layer_sprite_get_index","layer_sprite_get_speed","layer_sprite_get_xscale","layer_sprite_get_yscale","layer_sprite_get_angle","layer_sprite_get_blend","layer_sprite_get_alpha","layer_sprite_get_x","layer_sprite_get_y","layer_tilemap_get_id","layer_tilemap_exists","layer_tilemap_create","layer_tilemap_destroy","tilemap_tileset","tilemap_x","tilemap_y","tilemap_set","tilemap_set_at_pixel","tilemap_get_tileset","tilemap_get_tile_width","tilemap_get_tile_height","tilemap_get_width","tilemap_get_height","tilemap_get_x","tilemap_get_y","tilemap_get","tilemap_get_at_pixel","tilemap_get_cell_x_at_pixel","tilemap_get_cell_y_at_pixel","tilemap_clear","draw_tilemap","draw_tile","tilemap_set_global_mask","tilemap_get_global_mask","tilemap_set_mask","tilemap_get_mask","tilemap_get_frame","tile_set_empty","tile_set_index","tile_set_flip","tile_set_mirror","tile_set_rotate","tile_get_empty","tile_get_index","tile_get_flip","tile_get_mirror","tile_get_rotate","layer_tile_exists","layer_tile_create","layer_tile_destroy","layer_tile_change","layer_tile_xscale","layer_tile_yscale","layer_tile_blend","layer_tile_alpha","layer_tile_x","layer_tile_y","layer_tile_region","layer_tile_visible","layer_tile_get_sprite","layer_tile_get_xscale","layer_tile_get_yscale","layer_tile_get_blend","layer_tile_get_alpha","layer_tile_get_x","layer_tile_get_y","layer_tile_get_region","layer_tile_get_visible","layer_instance_get_instance","instance_activate_layer","instance_deactivate_layer","camera_create","camera_create_view","camera_destroy","camera_apply","camera_get_active","camera_get_default","camera_set_default","camera_set_view_mat","camera_set_proj_mat","camera_set_update_script","camera_set_begin_script","camera_set_end_script","camera_set_view_pos","camera_set_view_size","camera_set_view_speed","camera_set_view_border","camera_set_view_angle","camera_set_view_target","camera_get_view_mat","camera_get_proj_mat","camera_get_update_script","camera_get_begin_script","camera_get_end_script","camera_get_view_x","camera_get_view_y","camera_get_view_width","camera_get_view_height","camera_get_view_speed_x","camera_get_view_speed_y","camera_get_view_border_x","camera_get_view_border_y","camera_get_view_angle","camera_get_view_target","view_get_camera","view_get_visible","view_get_xport","view_get_yport","view_get_wport","view_get_hport","view_get_surface_id","view_set_camera","view_set_visible","view_set_xport","view_set_yport","view_set_wport","view_set_hport","view_set_surface_id","gesture_drag_time","gesture_drag_distance","gesture_flick_speed","gesture_double_tap_time","gesture_double_tap_distance","gesture_pinch_distance","gesture_pinch_angle_towards","gesture_pinch_angle_away","gesture_rotate_time","gesture_rotate_angle","gesture_tap_count","gesture_get_drag_time","gesture_get_drag_distance","gesture_get_flick_speed","gesture_get_double_tap_time","gesture_get_double_tap_distance","gesture_get_pinch_distance","gesture_get_pinch_angle_towards","gesture_get_pinch_angle_away","gesture_get_rotate_time","gesture_get_rotate_angle","gesture_get_tap_count","keyboard_virtual_show","keyboard_virtual_hide","keyboard_virtual_status","keyboard_virtual_height"],
+literal:["true","false","all","noone","undefined","pointer_invalid","pointer_null"],
+symbol:["other","global","local","path_action_stop","path_action_restart","path_action_continue","path_action_reverse","pi","GM_build_date","GM_version","GM_runtime_version","timezone_local","timezone_utc","gamespeed_fps","gamespeed_microseconds","ev_create","ev_destroy","ev_step","ev_alarm","ev_keyboard","ev_mouse","ev_collision","ev_other","ev_draw","ev_draw_begin","ev_draw_end","ev_draw_pre","ev_draw_post","ev_keypress","ev_keyrelease","ev_trigger","ev_left_button","ev_right_button","ev_middle_button","ev_no_button","ev_left_press","ev_right_press","ev_middle_press","ev_left_release","ev_right_release","ev_middle_release","ev_mouse_enter","ev_mouse_leave","ev_mouse_wheel_up","ev_mouse_wheel_down","ev_global_left_button","ev_global_right_button","ev_global_middle_button","ev_global_left_press","ev_global_right_press","ev_global_middle_press","ev_global_left_release","ev_global_right_release","ev_global_middle_release","ev_joystick1_left","ev_joystick1_right","ev_joystick1_up","ev_joystick1_down","ev_joystick1_button1","ev_joystick1_button2","ev_joystick1_button3","ev_joystick1_button4","ev_joystick1_button5","ev_joystick1_button6","ev_joystick1_button7","ev_joystick1_button8","ev_joystick2_left","ev_joystick2_right","ev_joystick2_up","ev_joystick2_down","ev_joystick2_button1","ev_joystick2_button2","ev_joystick2_button3","ev_joystick2_button4","ev_joystick2_button5","ev_joystick2_button6","ev_joystick2_button7","ev_joystick2_button8","ev_outside","ev_boundary","ev_game_start","ev_game_end","ev_room_start","ev_room_end","ev_no_more_lives","ev_animation_end","ev_end_of_path","ev_no_more_health","ev_close_button","ev_user0","ev_user1","ev_user2","ev_user3","ev_user4","ev_user5","ev_user6","ev_user7","ev_user8","ev_user9","ev_user10","ev_user11","ev_user12","ev_user13","ev_user14","ev_user15","ev_step_normal","ev_step_begin","ev_step_end","ev_gui","ev_gui_begin","ev_gui_end","ev_cleanup","ev_gesture","ev_gesture_tap","ev_gesture_double_tap","ev_gesture_drag_start","ev_gesture_dragging","ev_gesture_drag_end","ev_gesture_flick","ev_gesture_pinch_start","ev_gesture_pinch_in","ev_gesture_pinch_out","ev_gesture_pinch_end","ev_gesture_rotate_start","ev_gesture_rotating","ev_gesture_rotate_end","ev_global_gesture_tap","ev_global_gesture_double_tap","ev_global_gesture_drag_start","ev_global_gesture_dragging","ev_global_gesture_drag_end","ev_global_gesture_flick","ev_global_gesture_pinch_start","ev_global_gesture_pinch_in","ev_global_gesture_pinch_out","ev_global_gesture_pinch_end","ev_global_gesture_rotate_start","ev_global_gesture_rotating","ev_global_gesture_rotate_end","vk_nokey","vk_anykey","vk_enter","vk_return","vk_shift","vk_control","vk_alt","vk_escape","vk_space","vk_backspace","vk_tab","vk_pause","vk_printscreen","vk_left","vk_right","vk_up","vk_down","vk_home","vk_end","vk_delete","vk_insert","vk_pageup","vk_pagedown","vk_f1","vk_f2","vk_f3","vk_f4","vk_f5","vk_f6","vk_f7","vk_f8","vk_f9","vk_f10","vk_f11","vk_f12","vk_numpad0","vk_numpad1","vk_numpad2","vk_numpad3","vk_numpad4","vk_numpad5","vk_numpad6","vk_numpad7","vk_numpad8","vk_numpad9","vk_divide","vk_multiply","vk_subtract","vk_add","vk_decimal","vk_lshift","vk_lcontrol","vk_lalt","vk_rshift","vk_rcontrol","vk_ralt","mb_any","mb_none","mb_left","mb_right","mb_middle","c_aqua","c_black","c_blue","c_dkgray","c_fuchsia","c_gray","c_green","c_lime","c_ltgray","c_maroon","c_navy","c_olive","c_purple","c_red","c_silver","c_teal","c_white","c_yellow","c_orange","fa_left","fa_center","fa_right","fa_top","fa_middle","fa_bottom","pr_pointlist","pr_linelist","pr_linestrip","pr_trianglelist","pr_trianglestrip","pr_trianglefan","bm_complex","bm_normal","bm_add","bm_max","bm_subtract","bm_zero","bm_one","bm_src_colour","bm_inv_src_colour","bm_src_color","bm_inv_src_color","bm_src_alpha","bm_inv_src_alpha","bm_dest_alpha","bm_inv_dest_alpha","bm_dest_colour","bm_inv_dest_colour","bm_dest_color","bm_inv_dest_color","bm_src_alpha_sat","tf_point","tf_linear","tf_anisotropic","mip_off","mip_on","mip_markedonly","audio_falloff_none","audio_falloff_inverse_distance","audio_falloff_inverse_distance_clamped","audio_falloff_linear_distance","audio_falloff_linear_distance_clamped","audio_falloff_exponent_distance","audio_falloff_exponent_distance_clamped","audio_old_system","audio_new_system","audio_mono","audio_stereo","audio_3d","cr_default","cr_none","cr_arrow","cr_cross","cr_beam","cr_size_nesw","cr_size_ns","cr_size_nwse","cr_size_we","cr_uparrow","cr_hourglass","cr_drag","cr_appstart","cr_handpoint","cr_size_all","spritespeed_framespersecond","spritespeed_framespergameframe","asset_object","asset_unknown","asset_sprite","asset_sound","asset_room","asset_path","asset_script","asset_font","asset_timeline","asset_tiles","asset_shader","fa_readonly","fa_hidden","fa_sysfile","fa_volumeid","fa_directory","fa_archive","ds_type_map","ds_type_list","ds_type_stack","ds_type_queue","ds_type_grid","ds_type_priority","ef_explosion","ef_ring","ef_ellipse","ef_firework","ef_smoke","ef_smokeup","ef_star","ef_spark","ef_flare","ef_cloud","ef_rain","ef_snow","pt_shape_pixel","pt_shape_disk","pt_shape_square","pt_shape_line","pt_shape_star","pt_shape_circle","pt_shape_ring","pt_shape_sphere","pt_shape_flare","pt_shape_spark","pt_shape_explosion","pt_shape_cloud","pt_shape_smoke","pt_shape_snow","ps_distr_linear","ps_distr_gaussian","ps_distr_invgaussian","ps_shape_rectangle","ps_shape_ellipse","ps_shape_diamond","ps_shape_line","ty_real","ty_string","dll_cdecl","dll_stdcall","matrix_view","matrix_projection","matrix_world","os_win32","os_windows","os_macosx","os_ios","os_android","os_symbian","os_linux","os_unknown","os_winphone","os_tizen","os_win8native","os_wiiu","os_3ds","os_psvita","os_bb10","os_ps4","os_xboxone","os_ps3","os_xbox360","os_uwp","os_tvos","os_switch","browser_not_a_browser","browser_unknown","browser_ie","browser_firefox","browser_chrome","browser_safari","browser_safari_mobile","browser_opera","browser_tizen","browser_edge","browser_windows_store","browser_ie_mobile","device_ios_unknown","device_ios_iphone","device_ios_iphone_retina","device_ios_ipad","device_ios_ipad_retina","device_ios_iphone5","device_ios_iphone6","device_ios_iphone6plus","device_emulator","device_tablet","display_landscape","display_landscape_flipped","display_portrait","display_portrait_flipped","tm_sleep","tm_countvsyncs","of_challenge_win","of_challen","ge_lose","of_challenge_tie","leaderboard_type_number","leaderboard_type_time_mins_secs","cmpfunc_never","cmpfunc_less","cmpfunc_equal","cmpfunc_lessequal","cmpfunc_greater","cmpfunc_notequal","cmpfunc_greaterequal","cmpfunc_always","cull_noculling","cull_clockwise","cull_counterclockwise","lighttype_dir","lighttype_point","iap_ev_storeload","iap_ev_product","iap_ev_purchase","iap_ev_consume","iap_ev_restore","iap_storeload_ok","iap_storeload_failed","iap_status_uninitialised","iap_status_unavailable","iap_status_loading","iap_status_available","iap_status_processing","iap_status_restoring","iap_failed","iap_unavailable","iap_available","iap_purchased","iap_canceled","iap_refunded","fb_login_default","fb_login_fallback_to_webview","fb_login_no_fallback_to_webview","fb_login_forcing_webview","fb_login_use_system_account","fb_login_forcing_safari","phy_joint_anchor_1_x","phy_joint_anchor_1_y","phy_joint_anchor_2_x","phy_joint_anchor_2_y","phy_joint_reaction_force_x","phy_joint_reaction_force_y","phy_joint_reaction_torque","phy_joint_motor_speed","phy_joint_angle","phy_joint_motor_torque","phy_joint_max_motor_torque","phy_joint_translation","phy_joint_speed","phy_joint_motor_force","phy_joint_max_motor_force","phy_joint_length_1","phy_joint_length_2","phy_joint_damping_ratio","phy_joint_frequency","phy_joint_lower_angle_limit","phy_joint_upper_angle_limit","phy_joint_angle_limits","phy_joint_max_length","phy_joint_max_torque","phy_joint_max_force","phy_debug_render_aabb","phy_debug_render_collision_pairs","phy_debug_render_coms","phy_debug_render_core_shapes","phy_debug_render_joints","phy_debug_render_obb","phy_debug_render_shapes","phy_particle_flag_water","phy_particle_flag_zombie","phy_particle_flag_wall","phy_particle_flag_spring","phy_particle_flag_elastic","phy_particle_flag_viscous","phy_particle_flag_powder","phy_particle_flag_tensile","phy_particle_flag_colourmixing","phy_particle_flag_colormixing","phy_particle_group_flag_solid","phy_particle_group_flag_rigid","phy_particle_data_flag_typeflags","phy_particle_data_flag_position","phy_particle_data_flag_velocity","phy_particle_data_flag_colour","phy_particle_data_flag_color","phy_particle_data_flag_category","achievement_our_info","achievement_friends_info","achievement_leaderboard_info","achievement_achievement_info","achievement_filter_all_players","achievement_filter_friends_only","achievement_filter_favorites_only","achievement_type_achievement_challenge","achievement_type_score_challenge","achievement_pic_loaded","achievement_show_ui","achievement_show_profile","achievement_show_leaderboard","achievement_show_achievement","achievement_show_bank","achievement_show_friend_picker","achievement_show_purchase_prompt","network_socket_tcp","network_socket_udp","network_socket_bluetooth","network_type_connect","network_type_disconnect","network_type_data","network_type_non_blocking_connect","network_config_connect_timeout","network_config_use_non_blocking_socket","network_config_enable_reliable_udp","network_config_disable_reliable_udp","buffer_fixed","buffer_grow","buffer_wrap","buffer_fast","buffer_vbuffer","buffer_network","buffer_u8","buffer_s8","buffer_u16","buffer_s16","buffer_u32","buffer_s32","buffer_u64","buffer_f16","buffer_f32","buffer_f64","buffer_bool","buffer_text","buffer_string","buffer_surface_copy","buffer_seek_start","buffer_seek_relative","buffer_seek_end","buffer_generalerror","buffer_outofspace","buffer_outofbounds","buffer_invalidtype","text_type","button_type","input_type","ANSI_CHARSET","DEFAULT_CHARSET","EASTEUROPE_CHARSET","RUSSIAN_CHARSET","SYMBOL_CHARSET","SHIFTJIS_CHARSET","HANGEUL_CHARSET","GB2312_CHARSET","CHINESEBIG5_CHARSET","JOHAB_CHARSET","HEBREW_CHARSET","ARABIC_CHARSET","GREEK_CHARSET","TURKISH_CHARSET","VIETNAMESE_CHARSET","THAI_CHARSET","MAC_CHARSET","BALTIC_CHARSET","OEM_CHARSET","gp_face1","gp_face2","gp_face3","gp_face4","gp_shoulderl","gp_shoulderr","gp_shoulderlb","gp_shoulderrb","gp_select","gp_start","gp_stickl","gp_stickr","gp_padu","gp_padd","gp_padl","gp_padr","gp_axislh","gp_axislv","gp_axisrh","gp_axisrv","ov_friends","ov_community","ov_players","ov_settings","ov_gamegroup","ov_achievements","lb_sort_none","lb_sort_ascending","lb_sort_descending","lb_disp_none","lb_disp_numeric","lb_disp_time_sec","lb_disp_time_ms","ugc_result_success","ugc_filetype_community","ugc_filetype_microtrans","ugc_visibility_public","ugc_visibility_friends_only","ugc_visibility_private","ugc_query_RankedByVote","ugc_query_RankedByPublicationDate","ugc_query_AcceptedForGameRankedByAcceptanceDate","ugc_query_RankedByTrend","ugc_query_FavoritedByFriendsRankedByPublicationDate","ugc_query_CreatedByFriendsRankedByPublicationDate","ugc_query_RankedByNumTimesReported","ugc_query_CreatedByFollowedUsersRankedByPublicationDate","ugc_query_NotYetRated","ugc_query_RankedByTotalVotesAsc","ugc_query_RankedByVotesUp","ugc_query_RankedByTextSearch","ugc_sortorder_CreationOrderDesc","ugc_sortorder_CreationOrderAsc","ugc_sortorder_TitleAsc","ugc_sortorder_LastUpdatedDesc","ugc_sortorder_SubscriptionDateDesc","ugc_sortorder_VoteScoreDesc","ugc_sortorder_ForModeration","ugc_list_Published","ugc_list_VotedOn","ugc_list_VotedUp","ugc_list_VotedDown","ugc_list_WillVoteLater","ugc_list_Favorited","ugc_list_Subscribed","ugc_list_UsedOrPlayed","ugc_list_Followed","ugc_match_Items","ugc_match_Items_Mtx","ugc_match_Items_ReadyToUse","ugc_match_Collections","ugc_match_Artwork","ugc_match_Videos","ugc_match_Screenshots","ugc_match_AllGuides","ugc_match_WebGuides","ugc_match_IntegratedGuides","ugc_match_UsableInGame","ugc_match_ControllerBindings","vertex_usage_position","vertex_usage_colour","vertex_usage_color","vertex_usage_normal","vertex_usage_texcoord","vertex_usage_textcoord","vertex_usage_blendweight","vertex_usage_blendindices","vertex_usage_psize","vertex_usage_tangent","vertex_usage_binormal","vertex_usage_fog","vertex_usage_depth","vertex_usage_sample","vertex_type_float1","vertex_type_float2","vertex_type_float3","vertex_type_float4","vertex_type_colour","vertex_type_color","vertex_type_ubyte4","layerelementtype_undefined","layerelementtype_background","layerelementtype_instance","layerelementtype_oldtilemap","layerelementtype_sprite","layerelementtype_tilemap","layerelementtype_particlesystem","layerelementtype_tile","tile_rotate","tile_flip","tile_mirror","tile_index_mask","kbv_type_default","kbv_type_ascii","kbv_type_url","kbv_type_email","kbv_type_numbers","kbv_type_phone","kbv_type_phone_name","kbv_returnkey_default","kbv_returnkey_go","kbv_returnkey_google","kbv_returnkey_join","kbv_returnkey_next","kbv_returnkey_route","kbv_returnkey_search","kbv_returnkey_send","kbv_returnkey_yahoo","kbv_returnkey_done","kbv_returnkey_continue","kbv_returnkey_emergency","kbv_autocapitalize_none","kbv_autocapitalize_words","kbv_autocapitalize_sentences","kbv_autocapitalize_characters"],
+"variable.language":["self","argument_relative","argument","argument0","argument1","argument2","argument3","argument4","argument5","argument6","argument7","argument8","argument9","argument10","argument11","argument12","argument13","argument14","argument15","argument_count","x|0","y|0","xprevious","yprevious","xstart","ystart","hspeed","vspeed","direction","speed","friction","gravity","gravity_direction","path_index","path_position","path_positionprevious","path_speed","path_scale","path_orientation","path_endaction","object_index","id|0","solid","persistent","mask_index","instance_count","instance_id","room_speed","fps","fps_real","current_time","current_year","current_month","current_day","current_weekday","current_hour","current_minute","current_second","alarm","timeline_index","timeline_position","timeline_speed","timeline_running","timeline_loop","room","room_first","room_last","room_width","room_height","room_caption","room_persistent","score","lives","health","show_score","show_lives","show_health","caption_score","caption_lives","caption_health","event_type","event_number","event_object","event_action","application_surface","gamemaker_pro","gamemaker_registered","gamemaker_version","error_occurred","error_last","debug_mode","keyboard_key","keyboard_lastkey","keyboard_lastchar","keyboard_string","mouse_x","mouse_y","mouse_button","mouse_lastbutton","cursor_sprite","visible","sprite_index","sprite_width","sprite_height","sprite_xoffset","sprite_yoffset","image_number","image_index","image_speed","depth","image_xscale","image_yscale","image_angle","image_alpha","image_blend","bbox_left","bbox_right","bbox_top","bbox_bottom","layer","background_colour","background_showcolour","background_color","background_showcolor","view_enabled","view_current","view_visible","view_xview","view_yview","view_wview","view_hview","view_xport","view_yport","view_wport","view_hport","view_angle","view_hborder","view_vborder","view_hspeed","view_vspeed","view_object","view_surface_id","view_camera","game_id","game_display_name","game_project_name","game_save_id","working_directory","temp_directory","program_directory","browser_width","browser_height","os_type","os_device","os_browser","os_version","display_aa","async_load","delta_time","webgl_enabled","event_data","iap_data","phy_rotation","phy_position_x","phy_position_y","phy_angular_velocity","phy_linear_velocity_x","phy_linear_velocity_y","phy_speed_x","phy_speed_y","phy_speed","phy_angular_damping","phy_linear_damping","phy_bullet","phy_fixed_rotation","phy_active","phy_mass","phy_inertia","phy_com_x","phy_com_y","phy_dynamic","phy_kinematic","phy_sleeping","phy_collision_points","phy_collision_x","phy_collision_y","phy_col_normal_x","phy_col_normal_y","phy_position_xprevious","phy_position_yprevious"]
+},
+contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]
+})})();hljs.registerLanguage("gml",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/go.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/go.min.js
new file mode 100644
index 0000000..f973476
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/go.min.js
@@ -0,0 +1,14 @@
+/*! `go` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n={
+keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],
+type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],
+literal:["true","false","iota","nil"],
+built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]
+};return{name:"Go",aliases:["golang"],keywords:n,illegal:"</",
+contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",
+variants:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:"`",end:"`"}]},{
+className:"number",variants:[{begin:e.C_NUMBER_RE+"[i]",relevance:1
+},e.C_NUMBER_MODE]},{begin:/:=/},{className:"function",beginKeywords:"func",
+end:"\\s*(\\{|$)",excludeEnd:!0,contains:[e.TITLE_MODE,{className:"params",
+begin:/\(/,end:/\)/,endsParent:!0,keywords:n,illegal:/["']/}]}]}}})()
+;hljs.registerLanguage("go",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/golo.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/golo.min.js
new file mode 100644
index 0000000..e2b5cbe
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/golo.min.js
@@ -0,0 +1,6 @@
+/*! `golo` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Golo",keywords:{
+keyword:["println","readln","print","import","module","function","local","return","let","var","while","for","foreach","times","in","case","when","match","with","break","continue","augment","augmentation","each","find","filter","reduce","if","then","else","otherwise","try","catch","finally","raise","throw","orIfNull","DynamicObject|10","DynamicVariable","struct","Observable","map","set","vector","list","array"],
+literal:["true","false","null"]},
+contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{
+className:"meta",begin:"@[A-Za-z]+"}]})})();hljs.registerLanguage("golo",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/gradle.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/gradle.min.js
new file mode 100644
index 0000000..11e0043
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/gradle.min.js
@@ -0,0 +1,5 @@
+/*! `gradle` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Gradle",case_insensitive:!0,
+keywords:["task","project","allprojects","subprojects","artifacts","buildscript","configurations","dependencies","repositories","sourceSets","description","delete","from","into","include","exclude","source","classpath","destinationDir","includes","options","sourceCompatibility","targetCompatibility","group","flatDir","doLast","doFirst","flatten","todir","fromdir","ant","def","abstract","break","case","catch","continue","default","do","else","extends","final","finally","for","if","implements","instanceof","native","new","private","protected","public","return","static","switch","synchronized","throw","throws","transient","try","volatile","while","strictfp","package","import","false","null","super","this","true","antlrtask","checkstyle","codenarc","copy","boolean","byte","char","class","double","float","int","interface","long","short","void","compile","runTime","file","fileTree","abs","any","append","asList","asWritable","call","collect","compareTo","count","div","dump","each","eachByte","eachFile","eachLine","every","find","findAll","flatten","getAt","getErr","getIn","getOut","getText","grep","immutable","inject","inspect","intersect","invokeMethods","isCase","join","leftShift","minus","multiply","newInputStream","newOutputStream","newPrintWriter","newReader","newWriter","next","plus","pop","power","previous","print","println","push","putAt","read","readBytes","readLines","reverse","reverseEach","round","size","sort","splitEachLine","step","subMap","times","toInteger","toList","tokenize","upto","waitForOrKill","withPrintWriter","withReader","withStream","withWriter","withWriterAppend","write","writeLine"],
+contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.REGEXP_MODE]
+})})();hljs.registerLanguage("gradle",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/groovy.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/groovy.min.js
new file mode 100644
index 0000000..99133a9
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/groovy.min.js
@@ -0,0 +1,20 @@
+/*! `groovy` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";function e(e,n={}){return n.variants=e,n}
+return n=>{
+const a=n.regex,t="[A-Za-z0-9_$]+",s=e([n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE,n.COMMENT("/\\*\\*","\\*/",{
+relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",
+begin:"@[A-Za-z]+"}]})]),r={className:"regexp",begin:/~?\/[^\/\n]+\//,
+contains:[n.BACKSLASH_ESCAPE]
+},i=e([n.BINARY_NUMBER_MODE,n.C_NUMBER_MODE]),l=e([{begin:/"""/,end:/"""/},{
+begin:/'''/,end:/'''/},{begin:"\\$/",end:"/\\$",relevance:10
+},n.APOS_STRING_MODE,n.QUOTE_STRING_MODE],{className:"string"});return{
+name:"Groovy",keywords:{built_in:"this super",literal:"true false null",
+keyword:"byte short char int long boolean float double void def as in assert trait abstract static volatile transient public private protected synchronized final class interface enum if else for while switch case break default continue throw throws try catch finally implements extends new import package return instanceof"
+},contains:[n.SHEBANG({binary:"groovy",relevance:10}),s,l,r,i,{
+className:"class",beginKeywords:"class interface trait enum",end:/\{/,
+illegal:":",contains:[{beginKeywords:"extends implements"
+},n.UNDERSCORE_TITLE_MODE]},{className:"meta",begin:"@[A-Za-z]+",relevance:0},{
+className:"attr",begin:t+"[ \t]*:",relevance:0},{begin:/\?/,end:/:/,relevance:0,
+contains:[s,l,r,i,"self"]},{className:"symbol",
+begin:"^[ \t]*"+a.lookahead(t+":"),excludeBegin:!0,end:t+":",relevance:0}],
+illegal:/#|<\//}}})();hljs.registerLanguage("groovy",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/haml.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/haml.min.js
new file mode 100644
index 0000000..c8b01ea
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/haml.min.js
@@ -0,0 +1,18 @@
+/*! `haml` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"HAML",case_insensitive:!0,
+contains:[{className:"meta",
+begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$",
+relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",null,{relevance:0}),{
+begin:"^\\s*(-|=|!=)(?!#)",end:/$/,subLanguage:"ruby",excludeBegin:!0,
+excludeEnd:!0},{className:"tag",begin:"^\\s*%",contains:[{
+className:"selector-tag",begin:"\\w+"},{className:"selector-id",begin:"#[\\w-]+"
+},{className:"selector-class",begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,
+contains:[{begin:":\\w+\\s*=>",end:",\\s+",returnBegin:!0,endsWithParent:!0,
+contains:[{className:"attr",begin:":\\w+"
+},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0}]}]},{
+begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=",
+end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr",
+begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",
+relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,end:/\}/,
+subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]})})()
+;hljs.registerLanguage("haml",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/handlebars.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/handlebars.min.js
new file mode 100644
index 0000000..9c0f0f4
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/handlebars.min.js
@@ -0,0 +1,29 @@
+/*! `handlebars` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const a=e.regex,n={
+$pattern:/[\w.\/]+/,
+built_in:["action","bindattr","collection","component","concat","debugger","each","each-in","get","hash","if","in","input","link-to","loc","log","lookup","mut","outlet","partial","query-params","render","template","textarea","unbound","unless","view","with","yield"]
+},t=/\[\]|\[[^\]]+\]/,s=/[^\s!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]+/,i=a.either(/""|"[^"]+"/,/''|'[^']+'/,t,s),r=a.concat(a.optional(/\.|\.\/|\//),i,a.anyNumberOfTimes(a.concat(/(\.|\/)/,i))),l=a.concat("(",t,"|",s,")(?==)"),c={
+begin:r},o=e.inherit(c,{keywords:{$pattern:/[\w.\/]+/,
+literal:["true","false","undefined","null"]}}),m={begin:/\(/,end:/\)/},d={
+className:"attr",begin:l,relevance:0,starts:{begin:/=/,end:/=/,starts:{
+contains:[e.NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,o,m]}}},g={
+contains:[e.NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:/as\s+\|/,
+keywords:{keyword:"as"},end:/\|/,contains:[{begin:/\w+/}]},d,o,m],returnEnd:!0
+},b=e.inherit(c,{className:"name",keywords:n,starts:e.inherit(g,{end:/\)/})})
+;m.contains=[b];const u=e.inherit(c,{keywords:n,className:"name",
+starts:e.inherit(g,{end:/\}\}/})}),h=e.inherit(c,{keywords:n,className:"name"
+}),N=e.inherit(c,{className:"name",keywords:n,starts:e.inherit(g,{end:/\}\}/})})
+;return{name:"Handlebars",
+aliases:["hbs","html.hbs","html.handlebars","htmlbars"],case_insensitive:!0,
+subLanguage:"xml",contains:[{begin:/\\\{\{/,skip:!0},{begin:/\\\\(?=\{\{)/,
+skip:!0},e.COMMENT(/\{\{!--/,/--\}\}/),e.COMMENT(/\{\{!/,/\}\}/),{
+className:"template-tag",begin:/\{\{\{\{(?!\/)/,end:/\}\}\}\}/,contains:[u],
+starts:{end:/\{\{\{\{\//,returnEnd:!0,subLanguage:"xml"}},{
+className:"template-tag",begin:/\{\{\{\{\//,end:/\}\}\}\}/,contains:[h]},{
+className:"template-tag",begin:/\{\{#/,end:/\}\}/,contains:[u]},{
+className:"template-tag",begin:/\{\{(?=else\}\})/,end:/\}\}/,keywords:"else"},{
+className:"template-tag",begin:/\{\{(?=else if)/,end:/\}\}/,keywords:"else if"
+},{className:"template-tag",begin:/\{\{\//,end:/\}\}/,contains:[h]},{
+className:"template-variable",begin:/\{\{\{/,end:/\}\}\}/,contains:[N]},{
+className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[N]}]}}})()
+;hljs.registerLanguage("handlebars",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/haskell.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/haskell.min.js
new file mode 100644
index 0000000..4091d3a
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/haskell.min.js
@@ -0,0 +1,29 @@
+/*! `haskell` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n={
+variants:[e.COMMENT("--","$"),e.COMMENT(/\{-/,/-\}/,{contains:["self"]})]},a={
+className:"meta",begin:/\{-#/,end:/#-\}/},i={className:"meta",begin:"^#",end:"$"
+},s={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},l={begin:"\\(",
+end:"\\)",illegal:'"',contains:[a,i,{className:"type",
+begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},e.inherit(e.TITLE_MODE,{
+begin:"[_a-z][\\w']*"}),n]},t="([0-9a-fA-F]_*)+",c={className:"number",
+relevance:0,variants:[{
+match:"\\b(([0-9]_*)+)(\\.(([0-9]_*)+))?([eE][+-]?(([0-9]_*)+))?\\b"},{
+match:`\\b0[xX]_*(${t})(\\.(${t}))?([pP][+-]?(([0-9]_*)+))?\\b`},{
+match:"\\b0[oO](([0-7]_*)+)\\b"},{match:"\\b0[bB](([01]_*)+)\\b"}]};return{
+name:"Haskell",aliases:["hs"],
+keywords:"let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec",
+contains:[{beginKeywords:"module",end:"where",keywords:"module where",
+contains:[l,n],illegal:"\\W\\.|;"},{begin:"\\bimport\\b",end:"$",
+keywords:"import qualified as hiding",contains:[l,n],illegal:"\\W\\.|;"},{
+className:"class",begin:"^(\\s*)?(class|instance)\\b",end:"where",
+keywords:"class family instance where",contains:[s,l,n]},{className:"class",
+begin:"\\b(data|(new)?type)\\b",end:"$",
+keywords:"data family type newtype deriving",contains:[a,s,l,{begin:/\{/,
+end:/\}/,contains:l.contains},n]},{beginKeywords:"default",end:"$",
+contains:[s,l,n]},{beginKeywords:"infix infixl infixr",end:"$",
+contains:[e.C_NUMBER_MODE,n]},{begin:"\\bforeign\\b",end:"$",
+keywords:"foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe",
+contains:[s,e.QUOTE_STRING_MODE,n]},{className:"meta",
+begin:"#!\\/usr\\/bin\\/env runhaskell",end:"$"
+},a,i,e.QUOTE_STRING_MODE,c,s,e.inherit(e.TITLE_MODE,{begin:"^[_a-z][\\w']*"
+}),n,{begin:"->|<-"}]}}})();hljs.registerLanguage("haskell",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/haxe.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/haxe.min.js
new file mode 100644
index 0000000..18b2a82
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/haxe.min.js
@@ -0,0 +1,26 @@
+/*! `haxe` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Haxe",aliases:["hx"],keywords:{
+keyword:"break case cast catch continue default do dynamic else enum extern for function here if import in inline never new override package private get set public return static super switch this throw trace try typedef untyped using var while Int Float String Bool Dynamic Void Array ",
+built_in:"trace this",literal:"true false null _"},contains:[{
+className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE,{
+className:"subst",begin:"\\$\\{",end:"\\}"},{className:"subst",begin:"\\$",
+end:/\W\}/}]
+},e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{
+className:"meta",begin:"@:",end:"$"},{className:"meta",begin:"#",end:"$",
+keywords:{keyword:"if else elseif end error"}},{className:"type",
+begin:":[ \t]*",end:"[^A-Za-z0-9_ \t\\->]",excludeBegin:!0,excludeEnd:!0,
+relevance:0},{className:"type",begin:":[ \t]*",end:"\\W",excludeBegin:!0,
+excludeEnd:!0},{className:"type",begin:"new *",end:"\\W",excludeBegin:!0,
+excludeEnd:!0},{className:"class",beginKeywords:"enum",end:"\\{",
+contains:[e.TITLE_MODE]},{className:"class",beginKeywords:"abstract",
+end:"[\\{$]",contains:[{className:"type",begin:"\\(",end:"\\)",excludeBegin:!0,
+excludeEnd:!0},{className:"type",begin:"from +",end:"\\W",excludeBegin:!0,
+excludeEnd:!0},{className:"type",begin:"to +",end:"\\W",excludeBegin:!0,
+excludeEnd:!0},e.TITLE_MODE],keywords:{keyword:"abstract from to"}},{
+className:"class",begin:"\\b(class|interface) +",end:"[\\{$]",excludeEnd:!0,
+keywords:"class interface",contains:[{className:"keyword",
+begin:"\\b(extends|implements) +",keywords:"extends implements",contains:[{
+className:"type",begin:e.IDENT_RE,relevance:0}]},e.TITLE_MODE]},{
+className:"function",beginKeywords:"function",end:"\\(",excludeEnd:!0,
+illegal:"\\S",contains:[e.TITLE_MODE]}],illegal:/<\//})})()
+;hljs.registerLanguage("haxe",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/hsp.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/hsp.min.js
new file mode 100644
index 0000000..dc8f845
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/hsp.min.js
@@ -0,0 +1,14 @@
+/*! `hsp` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"HSP",case_insensitive:!0,
+keywords:{$pattern:/[\w._]+/,
+keyword:"goto gosub return break repeat loop continue wait await dim sdim foreach dimtype dup dupptr end stop newmod delmod mref run exgoto on mcall assert logmes newlab resume yield onexit onerror onkey onclick oncmd exist delete mkdir chdir dirlist bload bsave bcopy memfile if else poke wpoke lpoke getstr chdpm memexpand memcpy memset notesel noteadd notedel noteload notesave randomize noteunsel noteget split strrep setease button chgdisp exec dialog mmload mmplay mmstop mci pset pget syscolor mes print title pos circle cls font sysfont objsize picload color palcolor palette redraw width gsel gcopy gzoom gmode bmpsave hsvcolor getkey listbox chkbox combox input mesbox buffer screen bgscr mouse objsel groll line clrobj boxf objprm objmode stick grect grotate gsquare gradf objimage objskip objenable celload celdiv celput newcom querycom delcom cnvstow comres axobj winobj sendmsg comevent comevarg sarrayconv callfunc cnvwtos comevdisp libptr system hspstat hspver stat cnt err strsize looplev sublev iparam wparam lparam refstr refdval int rnd strlen length length2 length3 length4 vartype gettime peek wpeek lpeek varptr varuse noteinfo instr abs limit getease str strmid strf getpath strtrim sin cos tan atan sqrt double absf expf logf limitf powf geteasef mousex mousey mousew hwnd hinstance hdc ginfo objinfo dirinfo sysinfo thismod __hspver__ __hsp30__ __date__ __time__ __line__ __file__ _debug __hspdef__ and or xor not screen_normal screen_palette screen_hide screen_fixedsize screen_tool screen_frame gmode_gdi gmode_mem gmode_rgb0 gmode_alpha gmode_rgb0alpha gmode_add gmode_sub gmode_pixela ginfo_mx ginfo_my ginfo_act ginfo_sel ginfo_wx1 ginfo_wy1 ginfo_wx2 ginfo_wy2 ginfo_vx ginfo_vy ginfo_sizex ginfo_sizey ginfo_winx ginfo_winy ginfo_mesx ginfo_mesy ginfo_r ginfo_g ginfo_b ginfo_paluse ginfo_dispx ginfo_dispy ginfo_cx ginfo_cy ginfo_intid ginfo_newid ginfo_sx ginfo_sy objinfo_mode objinfo_bmscr objinfo_hwnd notemax notesize dir_cur dir_exe dir_win dir_sys dir_cmdline dir_desktop dir_mydoc dir_tv font_normal font_bold font_italic font_underline font_strikeout font_antialias objmode_normal objmode_guifont objmode_usefont gsquare_grad msgothic msmincho do until while wend for next _break _continue switch case default swbreak swend ddim ldim alloc m_pi rad2deg deg2rad ease_linear ease_quad_in ease_quad_out ease_quad_inout ease_cubic_in ease_cubic_out ease_cubic_inout ease_quartic_in ease_quartic_out ease_quartic_inout ease_bounce_in ease_bounce_out ease_bounce_inout ease_shake_in ease_shake_out ease_shake_inout ease_loop"
+},
+contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{
+className:"string",begin:/\{"/,end:/"\}/,contains:[e.BACKSLASH_ESCAPE]
+},e.COMMENT(";","$",{relevance:0}),{className:"meta",begin:"#",end:"$",
+keywords:{
+keyword:"addion cfunc cmd cmpopt comfunc const defcfunc deffunc define else endif enum epack func global if ifdef ifndef include modcfunc modfunc modinit modterm module pack packopt regcmd runtime undef usecom uselib"
+},contains:[e.inherit(e.QUOTE_STRING_MODE,{className:"string"
+}),e.NUMBER_MODE,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]
+},{className:"symbol",begin:"^\\*(\\w+|@)"},e.NUMBER_MODE,e.C_NUMBER_MODE]})})()
+;hljs.registerLanguage("hsp",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/http.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/http.min.js
new file mode 100644
index 0000000..2c929c5
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/http.min.js
@@ -0,0 +1,14 @@
+/*! `http` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n="HTTP/(2|1\\.[01])",a={
+className:"attribute",
+begin:e.regex.concat("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{
+contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",
+relevance:0}}]}},s=[a,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}
+}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{
+begin:"^(?="+n+" \\d{3})",end:/$/,contains:[{className:"meta",begin:n},{
+className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,
+contains:s}},{begin:"(?=^[A-Z]+ (.*?) "+n+"$)",end:/$/,contains:[{
+className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{
+className:"meta",begin:n},{className:"keyword",begin:"[A-Z]+"}],starts:{
+end:/\b\B/,illegal:/\S/,contains:s}},e.inherit(a,{relevance:0})]}}})()
+;hljs.registerLanguage("http",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/hy.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/hy.min.js
new file mode 100644
index 0000000..cba37cc
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/hy.min.js
@@ -0,0 +1,16 @@
+/*! `hy` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const a="a-zA-Z_\\-!.?+*=<>&#'",t="["+a+"]["+a+"0-9/;:]*",i={$pattern:t,
+built_in:"!= % %= & &= * ** **= *= *map + += , --build-class-- --import-- -= . / // //= /= < << <<= <= = > >= >> >>= @ @= ^ ^= abs accumulate all and any ap-compose ap-dotimes ap-each ap-each-while ap-filter ap-first ap-if ap-last ap-map ap-map-when ap-pipe ap-reduce ap-reject apply as-> ascii assert assoc bin break butlast callable calling-module-name car case cdr chain chr coll? combinations compile compress cond cons cons? continue count curry cut cycle dec def default-method defclass defmacro defmacro-alias defmacro/g! defmain defmethod defmulti defn defn-alias defnc defnr defreader defseq del delattr delete-route dict-comp dir disassemble dispatch-reader-macro distinct divmod do doto drop drop-last drop-while empty? end-sequence eval eval-and-compile eval-when-compile even? every? except exec filter first flatten float? fn fnc fnr for for* format fraction genexpr gensym get getattr global globals group-by hasattr hash hex id identity if if* if-not if-python2 import in inc input instance? integer integer-char? integer? interleave interpose is is-coll is-cons is-empty is-even is-every is-float is-instance is-integer is-integer-char is-iterable is-iterator is-keyword is-neg is-none is-not is-numeric is-odd is-pos is-string is-symbol is-zero isinstance islice issubclass iter iterable? iterate iterator? keyword keyword? lambda last len let lif lif-not list* list-comp locals loop macro-error macroexpand macroexpand-1 macroexpand-all map max merge-with method-decorator min multi-decorator multicombinations name neg? next none? nonlocal not not-in not? nth numeric? oct odd? open or ord partition permutations pos? post-route postwalk pow prewalk print product profile/calls profile/cpu put-route quasiquote quote raise range read read-str recursive-replace reduce remove repeat repeatedly repr require rest round route route-with-methods rwm second seq set-comp setattr setv some sorted string string? sum switch symbol? take take-nth take-while tee try unless unquote unquote-splicing vars walk when while with with* with-decorator with-gensyms xi xor yield yield-from zero? zip zip-longest | |= ~"
+},r={begin:t,relevance:0},n={className:"number",begin:"[-+]?\\d+(\\.\\d+)?",
+relevance:0},s=e.inherit(e.QUOTE_STRING_MODE,{illegal:null
+}),o=e.COMMENT(";","$",{relevance:0}),l={className:"literal",
+begin:/\b([Tt]rue|[Ff]alse|nil|None)\b/},c={begin:"[\\[\\{]",end:"[\\]\\}]",
+relevance:0},d={className:"comment",begin:"\\^"+t
+},m=e.COMMENT("\\^\\{","\\}"),p={className:"symbol",begin:"[:]{1,2}"+t},u={
+begin:"\\(",end:"\\)"},f={endsWithParent:!0,relevance:0},g={className:"name",
+relevance:0,keywords:i,begin:t,starts:f},h=[u,s,d,m,o,p,c,n,l,r]
+;return u.contains=[e.COMMENT("comment",""),g,f],f.contains=h,c.contains=h,{
+name:"Hy",aliases:["hylang"],illegal:/\S/,
+contains:[e.SHEBANG(),u,s,d,m,o,p,c,n,l]}}})();hljs.registerLanguage("hy",e)
+})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/inform7.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/inform7.min.js
new file mode 100644
index 0000000..57f7726
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/inform7.min.js
@@ -0,0 +1,11 @@
+/*! `inform7` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Inform 7",aliases:["i7"],
+case_insensitive:!0,keywords:{
+keyword:"thing room person man woman animal container supporter backdrop door scenery open closed locked inside gender is are say understand kind of rule"
+},contains:[{className:"string",begin:'"',end:'"',relevance:0,contains:[{
+className:"subst",begin:"\\[",end:"\\]"}]},{className:"section",
+begin:/^(Volume|Book|Part|Chapter|Section|Table)\b/,end:"$"},{
+begin:/^(Check|Carry out|Report|Instead of|To|Rule|When|Before|After)\b/,
+end:":",contains:[{begin:"\\(This",end:"\\)"}]},{className:"comment",
+begin:"\\[",end:"\\]",contains:["self"]}]})})()
+;hljs.registerLanguage("inform7",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/ini.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/ini.min.js
new file mode 100644
index 0000000..b22f5e4
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/ini.min.js
@@ -0,0 +1,15 @@
+/*! `ini` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n=e.regex,a={className:"number",
+relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:e.NUMBER_RE}]
+},s=e.COMMENT();s.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const i={
+className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/
+}]},t={className:"literal",begin:/\bon|off|true|false|yes|no\b/},r={
+className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",
+end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'
+},{begin:"'",end:"'"}]},l={begin:/\[/,end:/\]/,contains:[s,t,i,r,a,"self"],
+relevance:0},c=n.either(/[A-Za-z0-9_-]+/,/"(\\"|[^"])*"/,/'[^']*'/);return{
+name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,
+contains:[s,{className:"section",begin:/\[+/,end:/\]+/},{
+begin:n.concat(c,"(\\s*\\.\\s*",c,")*",n.lookahead(/\s*=\s*[^#\s]/)),
+className:"attr",starts:{end:/$/,contains:[s,l,t,i,r,a]}}]}}})()
+;hljs.registerLanguage("ini",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/irpf90.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/irpf90.min.js
new file mode 100644
index 0000000..4f66f86
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/irpf90.min.js
@@ -0,0 +1,15 @@
+/*! `irpf90` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const n=e.regex,t=/(_[a-z_\d]+)?/,a=/([de][+-]?\d+)?/,i={className:"number",
+variants:[{begin:n.concat(/\b\d+/,/\.(\d*)/,a,t)},{begin:n.concat(/\b\d+/,a,t)
+},{begin:n.concat(/\.\d+/,a,t)}],relevance:0};return{name:"IRPF90",
+case_insensitive:!0,keywords:{literal:".False. .True.",
+keyword:"kind do while private call intrinsic where elsewhere type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. goto save else use module select case access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit continue format pause cycle exit c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg synchronous nopass non_overridable pass protected volatile abstract extends import non_intrinsic value deferred generic final enumerator class associate bind enum c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated  c_f_pointer c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure integer real character complex logical dimension allocatable|10 parameter external implicit|10 none double precision assign intent optional pointer target in out common equivalence data begin_provider &begin_provider end_provider begin_shell end_shell begin_template end_template subst assert touch soft_touch provide no_dep free irp_if irp_else irp_endif irp_write irp_read",
+built_in:"alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image IRP_ALIGN irp_here"
+},illegal:/\/\*/,contains:[e.inherit(e.APOS_STRING_MODE,{className:"string",
+relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{className:"string",relevance:0}),{
+className:"function",beginKeywords:"subroutine function program",
+illegal:"[${=\\n]",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",
+begin:"\\(",end:"\\)"}]},e.COMMENT("!","$",{relevance:0
+}),e.COMMENT("begin_doc","end_doc",{relevance:10}),i]}}})()
+;hljs.registerLanguage("irpf90",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/isbl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/isbl.min.js
new file mode 100644
index 0000000..a225533
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/isbl.min.js
@@ -0,0 +1,25 @@
+/*! `isbl` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var S=(()=>{"use strict";return S=>{
+const E="[A-Za-z\u0410-\u042f\u0430-\u044f\u0451\u0401_!][A-Za-z\u0410-\u042f\u0430-\u044f\u0451\u0401_0-9]*",_={
+className:"number",begin:S.NUMBER_RE,relevance:0},T={className:"string",
+variants:[{begin:'"',end:'"'},{begin:"'",end:"'"}]},R={className:"doctag",
+begin:"\\b(?:TODO|DONE|BEGIN|END|STUB|CHG|FIXME|NOTE|BUG|XXX)\\b",relevance:0
+},O={variants:[{className:"comment",begin:"//",end:"$",relevance:0,
+contains:[S.PHRASAL_WORDS_MODE,R]},{className:"comment",begin:"/\\*",end:"\\*/",
+relevance:0,contains:[S.PHRASAL_WORDS_MODE,R]}]},C={$pattern:E,
+keyword:"and \u0438 else \u0438\u043d\u0430\u0447\u0435 endexcept endfinally endforeach \u043a\u043e\u043d\u0435\u0446\u0432\u0441\u0435 endif \u043a\u043e\u043d\u0435\u0446\u0435\u0441\u043b\u0438 endwhile \u043a\u043e\u043d\u0435\u0446\u043f\u043e\u043a\u0430 except exitfor finally foreach \u0432\u0441\u0435 if \u0435\u0441\u043b\u0438 in \u0432 not \u043d\u0435 or \u0438\u043b\u0438 try while \u043f\u043e\u043a\u0430 ",
+built_in:"SYSRES_CONST_ACCES_RIGHT_TYPE_EDIT SYSRES_CONST_ACCES_RIGHT_TYPE_FULL SYSRES_CONST_ACCES_RIGHT_TYPE_VIEW SYSRES_CONST_ACCESS_MODE_REQUISITE_CODE SYSRES_CONST_ACCESS_NO_ACCESS_VIEW SYSRES_CONST_ACCESS_NO_ACCESS_VIEW_CODE SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW SYSRES_CONST_ACCESS_RIGHTS_VIEW_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_TYPE_CHANGE SYSRES_CONST_ACCESS_TYPE_CHANGE_CODE SYSRES_CONST_ACCESS_TYPE_EXISTS SYSRES_CONST_ACCESS_TYPE_EXISTS_CODE SYSRES_CONST_ACCESS_TYPE_FULL SYSRES_CONST_ACCESS_TYPE_FULL_CODE SYSRES_CONST_ACCESS_TYPE_VIEW SYSRES_CONST_ACCESS_TYPE_VIEW_CODE SYSRES_CONST_ACTION_TYPE_ABORT SYSRES_CONST_ACTION_TYPE_ACCEPT SYSRES_CONST_ACTION_TYPE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ADD_ATTACHMENT SYSRES_CONST_ACTION_TYPE_CHANGE_CARD SYSRES_CONST_ACTION_TYPE_CHANGE_KIND SYSRES_CONST_ACTION_TYPE_CHANGE_STORAGE SYSRES_CONST_ACTION_TYPE_CONTINUE SYSRES_CONST_ACTION_TYPE_COPY SYSRES_CONST_ACTION_TYPE_CREATE SYSRES_CONST_ACTION_TYPE_CREATE_VERSION SYSRES_CONST_ACTION_TYPE_DELETE SYSRES_CONST_ACTION_TYPE_DELETE_ATTACHMENT SYSRES_CONST_ACTION_TYPE_DELETE_VERSION SYSRES_CONST_ACTION_TYPE_DISABLE_DELEGATE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ENABLE_DELEGATE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE_AND_PASSWORD SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_PASSWORD SYSRES_CONST_ACTION_TYPE_EXPORT_WITH_LOCK SYSRES_CONST_ACTION_TYPE_EXPORT_WITHOUT_LOCK SYSRES_CONST_ACTION_TYPE_IMPORT_WITH_UNLOCK SYSRES_CONST_ACTION_TYPE_IMPORT_WITHOUT_UNLOCK SYSRES_CONST_ACTION_TYPE_LIFE_CYCLE_STAGE SYSRES_CONST_ACTION_TYPE_LOCK SYSRES_CONST_ACTION_TYPE_LOCK_FOR_SERVER SYSRES_CONST_ACTION_TYPE_LOCK_MODIFY SYSRES_CONST_ACTION_TYPE_MARK_AS_READED SYSRES_CONST_ACTION_TYPE_MARK_AS_UNREADED SYSRES_CONST_ACTION_TYPE_MODIFY SYSRES_CONST_ACTION_TYPE_MODIFY_CARD SYSRES_CONST_ACTION_TYPE_MOVE_TO_ARCHIVE SYSRES_CONST_ACTION_TYPE_OFF_ENCRYPTION SYSRES_CONST_ACTION_TYPE_PASSWORD_CHANGE SYSRES_CONST_ACTION_TYPE_PERFORM SYSRES_CONST_ACTION_TYPE_RECOVER_FROM_LOCAL_COPY SYSRES_CONST_ACTION_TYPE_RESTART SYSRES_CONST_ACTION_TYPE_RESTORE_FROM_ARCHIVE SYSRES_CONST_ACTION_TYPE_REVISION SYSRES_CONST_ACTION_TYPE_SEND_BY_MAIL SYSRES_CONST_ACTION_TYPE_SIGN SYSRES_CONST_ACTION_TYPE_START SYSRES_CONST_ACTION_TYPE_UNLOCK SYSRES_CONST_ACTION_TYPE_UNLOCK_FROM_SERVER SYSRES_CONST_ACTION_TYPE_VERSION_STATE SYSRES_CONST_ACTION_TYPE_VERSION_VISIBILITY SYSRES_CONST_ACTION_TYPE_VIEW SYSRES_CONST_ACTION_TYPE_VIEW_SHADOW_COPY SYSRES_CONST_ACTION_TYPE_WORKFLOW_DESCRIPTION_MODIFY SYSRES_CONST_ACTION_TYPE_WRITE_HISTORY SYSRES_CONST_ACTIVE_VERSION_STATE_PICK_VALUE SYSRES_CONST_ADD_REFERENCE_MODE_NAME SYSRES_CONST_ADDITION_REQUISITE_CODE SYSRES_CONST_ADDITIONAL_PARAMS_REQUISITE_CODE SYSRES_CONST_ADITIONAL_JOB_END_DATE_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_READ_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_START_DATE_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_STATE_REQUISITE_NAME SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE_ACTION SYSRES_CONST_ALL_ACCEPT_CONDITION_RUS SYSRES_CONST_ALL_USERS_GROUP SYSRES_CONST_ALL_USERS_GROUP_NAME SYSRES_CONST_ALL_USERS_SERVER_GROUP_NAME SYSRES_CONST_ALLOWED_ACCESS_TYPE_CODE SYSRES_CONST_ALLOWED_ACCESS_TYPE_NAME SYSRES_CONST_APP_VIEWER_TYPE_REQUISITE_CODE SYSRES_CONST_APPROVING_SIGNATURE_NAME SYSRES_CONST_APPROVING_SIGNATURE_REQUISITE_CODE SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE_CODE SYSRES_CONST_ATTACH_TYPE_COMPONENT_TOKEN SYSRES_CONST_ATTACH_TYPE_DOC SYSRES_CONST_ATTACH_TYPE_EDOC SYSRES_CONST_ATTACH_TYPE_FOLDER SYSRES_CONST_ATTACH_TYPE_JOB SYSRES_CONST_ATTACH_TYPE_REFERENCE SYSRES_CONST_ATTACH_TYPE_TASK SYSRES_CONST_AUTH_ENCODED_PASSWORD SYSRES_CONST_AUTH_ENCODED_PASSWORD_CODE SYSRES_CONST_AUTH_NOVELL SYSRES_CONST_AUTH_PASSWORD SYSRES_CONST_AUTH_PASSWORD_CODE SYSRES_CONST_AUTH_WINDOWS SYSRES_CONST_AUTHENTICATING_SIGNATURE_NAME SYSRES_CONST_AUTHENTICATING_SIGNATURE_REQUISITE_CODE SYSRES_CONST_AUTO_ENUM_METHOD_FLAG SYSRES_CONST_AUTO_NUMERATION_CODE SYSRES_CONST_AUTO_STRONG_ENUM_METHOD_FLAG SYSRES_CONST_AUTOTEXT_NAME_REQUISITE_CODE SYSRES_CONST_AUTOTEXT_TEXT_REQUISITE_CODE SYSRES_CONST_AUTOTEXT_USAGE_ALL SYSRES_CONST_AUTOTEXT_USAGE_ALL_CODE SYSRES_CONST_AUTOTEXT_USAGE_SIGN SYSRES_CONST_AUTOTEXT_USAGE_SIGN_CODE SYSRES_CONST_AUTOTEXT_USAGE_WORK SYSRES_CONST_AUTOTEXT_USAGE_WORK_CODE SYSRES_CONST_AUTOTEXT_USE_ANYWHERE_CODE SYSRES_CONST_AUTOTEXT_USE_ON_SIGNING_CODE SYSRES_CONST_AUTOTEXT_USE_ON_WORK_CODE SYSRES_CONST_BEGIN_DATE_REQUISITE_CODE SYSRES_CONST_BLACK_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_BLUE_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_BTN_PART SYSRES_CONST_CALCULATED_ROLE_TYPE_CODE SYSRES_CONST_CALL_TYPE_VARIABLE_BUTTON_VALUE SYSRES_CONST_CALL_TYPE_VARIABLE_PROGRAM_VALUE SYSRES_CONST_CANCEL_MESSAGE_FUNCTION_RESULT SYSRES_CONST_CARD_PART SYSRES_CONST_CARD_REFERENCE_MODE_NAME SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_ENCRYPT_VALUE SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_AND_ENCRYPT_VALUE SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_VALUE SYSRES_CONST_CHECK_PARAM_VALUE_DATE_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_FLOAT_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_INTEGER_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_PICK_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_REEFRENCE_PARAM_TYPE SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_FEMININE SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_CODE_COMPONENT_TYPE_ADMIN SYSRES_CONST_CODE_COMPONENT_TYPE_DEVELOPER SYSRES_CONST_CODE_COMPONENT_TYPE_DOCS SYSRES_CONST_CODE_COMPONENT_TYPE_EDOC_CARDS SYSRES_CONST_CODE_COMPONENT_TYPE_EXTERNAL_EXECUTABLE SYSRES_CONST_CODE_COMPONENT_TYPE_OTHER SYSRES_CONST_CODE_COMPONENT_TYPE_REFERENCE SYSRES_CONST_CODE_COMPONENT_TYPE_REPORT SYSRES_CONST_CODE_COMPONENT_TYPE_SCRIPT SYSRES_CONST_CODE_COMPONENT_TYPE_URL SYSRES_CONST_CODE_REQUISITE_ACCESS SYSRES_CONST_CODE_REQUISITE_CODE SYSRES_CONST_CODE_REQUISITE_COMPONENT SYSRES_CONST_CODE_REQUISITE_DESCRIPTION SYSRES_CONST_CODE_REQUISITE_EXCLUDE_COMPONENT SYSRES_CONST_CODE_REQUISITE_RECORD SYSRES_CONST_COMMENT_REQ_CODE SYSRES_CONST_COMMON_SETTINGS_REQUISITE_CODE SYSRES_CONST_COMP_CODE_GRD SYSRES_CONST_COMPONENT_GROUP_TYPE_REQUISITE_CODE SYSRES_CONST_COMPONENT_TYPE_ADMIN_COMPONENTS SYSRES_CONST_COMPONENT_TYPE_DEVELOPER_COMPONENTS SYSRES_CONST_COMPONENT_TYPE_DOCS SYSRES_CONST_COMPONENT_TYPE_EDOC_CARDS SYSRES_CONST_COMPONENT_TYPE_EDOCS SYSRES_CONST_COMPONENT_TYPE_EXTERNAL_EXECUTABLE SYSRES_CONST_COMPONENT_TYPE_OTHER SYSRES_CONST_COMPONENT_TYPE_REFERENCE_TYPES SYSRES_CONST_COMPONENT_TYPE_REFERENCES SYSRES_CONST_COMPONENT_TYPE_REPORTS SYSRES_CONST_COMPONENT_TYPE_SCRIPTS SYSRES_CONST_COMPONENT_TYPE_URL SYSRES_CONST_COMPONENTS_REMOTE_SERVERS_VIEW_CODE SYSRES_CONST_CONDITION_BLOCK_DESCRIPTION SYSRES_CONST_CONST_FIRM_STATUS_COMMON SYSRES_CONST_CONST_FIRM_STATUS_INDIVIDUAL SYSRES_CONST_CONST_NEGATIVE_VALUE SYSRES_CONST_CONST_POSITIVE_VALUE SYSRES_CONST_CONST_SERVER_STATUS_DONT_REPLICATE SYSRES_CONST_CONST_SERVER_STATUS_REPLICATE SYSRES_CONST_CONTENTS_REQUISITE_CODE SYSRES_CONST_DATA_TYPE_BOOLEAN SYSRES_CONST_DATA_TYPE_DATE SYSRES_CONST_DATA_TYPE_FLOAT SYSRES_CONST_DATA_TYPE_INTEGER SYSRES_CONST_DATA_TYPE_PICK SYSRES_CONST_DATA_TYPE_REFERENCE SYSRES_CONST_DATA_TYPE_STRING SYSRES_CONST_DATA_TYPE_TEXT SYSRES_CONST_DATA_TYPE_VARIANT SYSRES_CONST_DATE_CLOSE_REQ_CODE SYSRES_CONST_DATE_FORMAT_DATE_ONLY_CHAR SYSRES_CONST_DATE_OPEN_REQ_CODE SYSRES_CONST_DATE_REQUISITE SYSRES_CONST_DATE_REQUISITE_CODE SYSRES_CONST_DATE_REQUISITE_NAME SYSRES_CONST_DATE_REQUISITE_TYPE SYSRES_CONST_DATE_TYPE_CHAR SYSRES_CONST_DATETIME_FORMAT_VALUE SYSRES_CONST_DEA_ACCESS_RIGHTS_ACTION_CODE SYSRES_CONST_DESCRIPTION_LOCALIZE_ID_REQUISITE_CODE SYSRES_CONST_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_DET1_PART SYSRES_CONST_DET2_PART SYSRES_CONST_DET3_PART SYSRES_CONST_DET4_PART SYSRES_CONST_DET5_PART SYSRES_CONST_DET6_PART SYSRES_CONST_DETAIL_DATASET_KEY_REQUISITE_CODE SYSRES_CONST_DETAIL_PICK_REQUISITE_CODE SYSRES_CONST_DETAIL_REQ_CODE SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_CODE SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_NAME SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_CODE SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_NAME SYSRES_CONST_DOCUMENT_STORAGES_CODE SYSRES_CONST_DOCUMENT_TEMPLATES_TYPE_NAME SYSRES_CONST_DOUBLE_REQUISITE_CODE SYSRES_CONST_EDITOR_CLOSE_FILE_OBSERV_TYPE_CODE SYSRES_CONST_EDITOR_CLOSE_PROCESS_OBSERV_TYPE_CODE SYSRES_CONST_EDITOR_TYPE_REQUISITE_CODE SYSRES_CONST_EDITORS_APPLICATION_NAME_REQUISITE_CODE SYSRES_CONST_EDITORS_CREATE_SEVERAL_PROCESSES_REQUISITE_CODE SYSRES_CONST_EDITORS_EXTENSION_REQUISITE_CODE SYSRES_CONST_EDITORS_OBSERVER_BY_PROCESS_TYPE SYSRES_CONST_EDITORS_REFERENCE_CODE SYSRES_CONST_EDITORS_REPLACE_SPEC_CHARS_REQUISITE_CODE SYSRES_CONST_EDITORS_USE_PLUGINS_REQUISITE_CODE SYSRES_CONST_EDITORS_VIEW_DOCUMENT_OPENED_TO_EDIT_CODE SYSRES_CONST_EDOC_CARD_TYPE_REQUISITE_CODE SYSRES_CONST_EDOC_CARD_TYPES_LINK_REQUISITE_CODE SYSRES_CONST_EDOC_CERTIFICATE_AND_PASSWORD_ENCODE_CODE SYSRES_CONST_EDOC_CERTIFICATE_ENCODE_CODE SYSRES_CONST_EDOC_DATE_REQUISITE_CODE SYSRES_CONST_EDOC_KIND_REFERENCE_CODE SYSRES_CONST_EDOC_KINDS_BY_TEMPLATE_ACTION_CODE SYSRES_CONST_EDOC_MANAGE_ACCESS_CODE SYSRES_CONST_EDOC_NONE_ENCODE_CODE SYSRES_CONST_EDOC_NUMBER_REQUISITE_CODE SYSRES_CONST_EDOC_PASSWORD_ENCODE_CODE SYSRES_CONST_EDOC_READONLY_ACCESS_CODE SYSRES_CONST_EDOC_SHELL_LIFE_TYPE_VIEW_VALUE SYSRES_CONST_EDOC_SIZE_RESTRICTION_PRIORITY_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_CHECK_ACCESS_RIGHTS_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_COMPUTER_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_DATABASE_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_EDIT_IN_STORAGE_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_LOCAL_PATH_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_SHARED_SOURCE_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_TEMPLATE_REQUISITE_CODE SYSRES_CONST_EDOC_TYPES_REFERENCE_CODE SYSRES_CONST_EDOC_VERSION_ACTIVE_STAGE_CODE SYSRES_CONST_EDOC_VERSION_DESIGN_STAGE_CODE SYSRES_CONST_EDOC_VERSION_OBSOLETE_STAGE_CODE SYSRES_CONST_EDOC_WRITE_ACCES_CODE SYSRES_CONST_EDOCUMENT_CARD_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE SYSRES_CONST_ENCODE_CERTIFICATE_TYPE_CODE SYSRES_CONST_END_DATE_REQUISITE_CODE SYSRES_CONST_ENUMERATION_TYPE_REQUISITE_CODE SYSRES_CONST_EXECUTE_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_EXECUTIVE_FILE_STORAGE_TYPE SYSRES_CONST_EXIST_CONST SYSRES_CONST_EXIST_VALUE SYSRES_CONST_EXPORT_LOCK_TYPE_ASK SYSRES_CONST_EXPORT_LOCK_TYPE_WITH_LOCK SYSRES_CONST_EXPORT_LOCK_TYPE_WITHOUT_LOCK SYSRES_CONST_EXPORT_VERSION_TYPE_ASK SYSRES_CONST_EXPORT_VERSION_TYPE_LAST SYSRES_CONST_EXPORT_VERSION_TYPE_LAST_ACTIVE SYSRES_CONST_EXTENSION_REQUISITE_CODE SYSRES_CONST_FILTER_NAME_REQUISITE_CODE SYSRES_CONST_FILTER_REQUISITE_CODE SYSRES_CONST_FILTER_TYPE_COMMON_CODE SYSRES_CONST_FILTER_TYPE_COMMON_NAME SYSRES_CONST_FILTER_TYPE_USER_CODE SYSRES_CONST_FILTER_TYPE_USER_NAME SYSRES_CONST_FILTER_VALUE_REQUISITE_NAME SYSRES_CONST_FLOAT_NUMBER_FORMAT_CHAR SYSRES_CONST_FLOAT_REQUISITE_TYPE SYSRES_CONST_FOLDER_AUTHOR_VALUE SYSRES_CONST_FOLDER_KIND_ANY_OBJECTS SYSRES_CONST_FOLDER_KIND_COMPONENTS SYSRES_CONST_FOLDER_KIND_EDOCS SYSRES_CONST_FOLDER_KIND_JOBS SYSRES_CONST_FOLDER_KIND_TASKS SYSRES_CONST_FOLDER_TYPE_COMMON SYSRES_CONST_FOLDER_TYPE_COMPONENT SYSRES_CONST_FOLDER_TYPE_FAVORITES SYSRES_CONST_FOLDER_TYPE_INBOX SYSRES_CONST_FOLDER_TYPE_OUTBOX SYSRES_CONST_FOLDER_TYPE_QUICK_LAUNCH SYSRES_CONST_FOLDER_TYPE_SEARCH SYSRES_CONST_FOLDER_TYPE_SHORTCUTS SYSRES_CONST_FOLDER_TYPE_USER SYSRES_CONST_FROM_DICTIONARY_ENUM_METHOD_FLAG SYSRES_CONST_FULL_SUBSTITUTE_TYPE SYSRES_CONST_FULL_SUBSTITUTE_TYPE_CODE SYSRES_CONST_FUNCTION_CANCEL_RESULT SYSRES_CONST_FUNCTION_CATEGORY_SYSTEM SYSRES_CONST_FUNCTION_CATEGORY_USER SYSRES_CONST_FUNCTION_FAILURE_RESULT SYSRES_CONST_FUNCTION_SAVE_RESULT SYSRES_CONST_GENERATED_REQUISITE SYSRES_CONST_GREEN_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_GROUP_ACCOUNT_TYPE_VALUE_CODE SYSRES_CONST_GROUP_CATEGORY_NORMAL_CODE SYSRES_CONST_GROUP_CATEGORY_NORMAL_NAME SYSRES_CONST_GROUP_CATEGORY_SERVICE_CODE SYSRES_CONST_GROUP_CATEGORY_SERVICE_NAME SYSRES_CONST_GROUP_COMMON_CATEGORY_FIELD_VALUE SYSRES_CONST_GROUP_FULL_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_RIGHTS_T_REQUISITE_CODE SYSRES_CONST_GROUP_SERVER_CODES_REQUISITE_CODE SYSRES_CONST_GROUP_SERVER_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_SERVICE_CATEGORY_FIELD_VALUE SYSRES_CONST_GROUP_USER_REQUISITE_CODE SYSRES_CONST_GROUPS_REFERENCE_CODE SYSRES_CONST_GROUPS_REQUISITE_CODE SYSRES_CONST_HIDDEN_MODE_NAME SYSRES_CONST_HIGH_LVL_REQUISITE_CODE SYSRES_CONST_HISTORY_ACTION_CREATE_CODE SYSRES_CONST_HISTORY_ACTION_DELETE_CODE SYSRES_CONST_HISTORY_ACTION_EDIT_CODE SYSRES_CONST_HOUR_CHAR SYSRES_CONST_ID_REQUISITE_CODE SYSRES_CONST_IDSPS_REQUISITE_CODE SYSRES_CONST_IMAGE_MODE_COLOR SYSRES_CONST_IMAGE_MODE_GREYSCALE SYSRES_CONST_IMAGE_MODE_MONOCHROME SYSRES_CONST_IMPORTANCE_HIGH SYSRES_CONST_IMPORTANCE_LOW SYSRES_CONST_IMPORTANCE_NORMAL SYSRES_CONST_IN_DESIGN_VERSION_STATE_PICK_VALUE SYSRES_CONST_INCOMING_WORK_RULE_TYPE_CODE SYSRES_CONST_INT_REQUISITE SYSRES_CONST_INT_REQUISITE_TYPE SYSRES_CONST_INTEGER_NUMBER_FORMAT_CHAR SYSRES_CONST_INTEGER_TYPE_CHAR SYSRES_CONST_IS_GENERATED_REQUISITE_NEGATIVE_VALUE SYSRES_CONST_IS_PUBLIC_ROLE_REQUISITE_CODE SYSRES_CONST_IS_REMOTE_USER_NEGATIVE_VALUE SYSRES_CONST_IS_REMOTE_USER_POSITIVE_VALUE SYSRES_CONST_IS_STORED_REQUISITE_NEGATIVE_VALUE SYSRES_CONST_IS_STORED_REQUISITE_STORED_VALUE SYSRES_CONST_ITALIC_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_JOB_BLOCK_DESCRIPTION SYSRES_CONST_JOB_KIND_CONTROL_JOB SYSRES_CONST_JOB_KIND_JOB SYSRES_CONST_JOB_KIND_NOTICE SYSRES_CONST_JOB_STATE_ABORTED SYSRES_CONST_JOB_STATE_COMPLETE SYSRES_CONST_JOB_STATE_WORKING SYSRES_CONST_KIND_REQUISITE_CODE SYSRES_CONST_KIND_REQUISITE_NAME SYSRES_CONST_KINDS_CREATE_SHADOW_COPIES_REQUISITE_CODE SYSRES_CONST_KINDS_DEFAULT_EDOC_LIFE_STAGE_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALL_TEPLATES_ALLOWED_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALLOW_LIFE_CYCLE_STAGE_CHANGING_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALLOW_MULTIPLE_ACTIVE_VERSIONS_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_SHARE_ACCES_RIGHTS_BY_DEFAULT_CODE SYSRES_CONST_KINDS_EDOC_TEMPLATE_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_TYPE_REQUISITE_CODE SYSRES_CONST_KINDS_SIGNERS_REQUISITES_CODE SYSRES_CONST_KOD_INPUT_TYPE SYSRES_CONST_LAST_UPDATE_DATE_REQUISITE_CODE SYSRES_CONST_LIFE_CYCLE_START_STAGE_REQUISITE_CODE SYSRES_CONST_LILAC_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_LINK_OBJECT_KIND_COMPONENT SYSRES_CONST_LINK_OBJECT_KIND_DOCUMENT SYSRES_CONST_LINK_OBJECT_KIND_EDOC SYSRES_CONST_LINK_OBJECT_KIND_FOLDER SYSRES_CONST_LINK_OBJECT_KIND_JOB SYSRES_CONST_LINK_OBJECT_KIND_REFERENCE SYSRES_CONST_LINK_OBJECT_KIND_TASK SYSRES_CONST_LINK_REF_TYPE_REQUISITE_CODE SYSRES_CONST_LIST_REFERENCE_MODE_NAME SYSRES_CONST_LOCALIZATION_DICTIONARY_MAIN_VIEW_CODE SYSRES_CONST_MAIN_VIEW_CODE SYSRES_CONST_MANUAL_ENUM_METHOD_FLAG SYSRES_CONST_MASTER_COMP_TYPE_REQUISITE_CODE SYSRES_CONST_MASTER_TABLE_REC_ID_REQUISITE_CODE SYSRES_CONST_MAXIMIZED_MODE_NAME SYSRES_CONST_ME_VALUE SYSRES_CONST_MESSAGE_ATTENTION_CAPTION SYSRES_CONST_MESSAGE_CONFIRMATION_CAPTION SYSRES_CONST_MESSAGE_ERROR_CAPTION SYSRES_CONST_MESSAGE_INFORMATION_CAPTION SYSRES_CONST_MINIMIZED_MODE_NAME SYSRES_CONST_MINUTE_CHAR SYSRES_CONST_MODULE_REQUISITE_CODE SYSRES_CONST_MONITORING_BLOCK_DESCRIPTION SYSRES_CONST_MONTH_FORMAT_VALUE SYSRES_CONST_NAME_LOCALIZE_ID_REQUISITE_CODE SYSRES_CONST_NAME_REQUISITE_CODE SYSRES_CONST_NAME_SINGULAR_REQUISITE_CODE SYSRES_CONST_NAMEAN_INPUT_TYPE SYSRES_CONST_NEGATIVE_PICK_VALUE SYSRES_CONST_NEGATIVE_VALUE SYSRES_CONST_NO SYSRES_CONST_NO_PICK_VALUE SYSRES_CONST_NO_SIGNATURE_REQUISITE_CODE SYSRES_CONST_NO_VALUE SYSRES_CONST_NONE_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_NORMAL_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_NORMAL_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_NORMAL_MODE_NAME SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_CODE SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_NAME SYSRES_CONST_NOTE_REQUISITE_CODE SYSRES_CONST_NOTICE_BLOCK_DESCRIPTION SYSRES_CONST_NUM_REQUISITE SYSRES_CONST_NUM_STR_REQUISITE_CODE SYSRES_CONST_NUMERATION_AUTO_NOT_STRONG SYSRES_CONST_NUMERATION_AUTO_STRONG SYSRES_CONST_NUMERATION_FROM_DICTONARY SYSRES_CONST_NUMERATION_MANUAL SYSRES_CONST_NUMERIC_TYPE_CHAR SYSRES_CONST_NUMREQ_REQUISITE_CODE SYSRES_CONST_OBSOLETE_VERSION_STATE_PICK_VALUE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_CODE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_FEMININE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_OPTIONAL_FORM_COMP_REQCODE_PREFIX SYSRES_CONST_ORANGE_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_ORIGINALREF_REQUISITE_CODE SYSRES_CONST_OURFIRM_REF_CODE SYSRES_CONST_OURFIRM_REQUISITE_CODE SYSRES_CONST_OURFIRM_VAR SYSRES_CONST_OUTGOING_WORK_RULE_TYPE_CODE SYSRES_CONST_PICK_NEGATIVE_RESULT SYSRES_CONST_PICK_POSITIVE_RESULT SYSRES_CONST_PICK_REQUISITE SYSRES_CONST_PICK_REQUISITE_TYPE SYSRES_CONST_PICK_TYPE_CHAR SYSRES_CONST_PLAN_STATUS_REQUISITE_CODE SYSRES_CONST_PLATFORM_VERSION_COMMENT SYSRES_CONST_PLUGINS_SETTINGS_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_POSITIVE_PICK_VALUE SYSRES_CONST_POWER_TO_CREATE_ACTION_CODE SYSRES_CONST_POWER_TO_SIGN_ACTION_CODE SYSRES_CONST_PRIORITY_REQUISITE_CODE SYSRES_CONST_QUALIFIED_TASK_TYPE SYSRES_CONST_QUALIFIED_TASK_TYPE_CODE SYSRES_CONST_RECSTAT_REQUISITE_CODE SYSRES_CONST_RED_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_REF_ID_T_REF_TYPE_REQUISITE_CODE SYSRES_CONST_REF_REQUISITE SYSRES_CONST_REF_REQUISITE_TYPE SYSRES_CONST_REF_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE SYSRES_CONST_REFERENCE_RECORD_HISTORY_CREATE_ACTION_CODE SYSRES_CONST_REFERENCE_RECORD_HISTORY_DELETE_ACTION_CODE SYSRES_CONST_REFERENCE_RECORD_HISTORY_MODIFY_ACTION_CODE SYSRES_CONST_REFERENCE_TYPE_CHAR SYSRES_CONST_REFERENCE_TYPE_REQUISITE_NAME SYSRES_CONST_REFERENCES_ADD_PARAMS_REQUISITE_CODE SYSRES_CONST_REFERENCES_DISPLAY_REQUISITE_REQUISITE_CODE SYSRES_CONST_REMOTE_SERVER_STATUS_WORKING SYSRES_CONST_REMOTE_SERVER_TYPE_MAIN SYSRES_CONST_REMOTE_SERVER_TYPE_SECONDARY SYSRES_CONST_REMOTE_USER_FLAG_VALUE_CODE SYSRES_CONST_REPORT_APP_EDITOR_INTERNAL SYSRES_CONST_REPORT_BASE_REPORT_ID_REQUISITE_CODE SYSRES_CONST_REPORT_BASE_REPORT_REQUISITE_CODE SYSRES_CONST_REPORT_SCRIPT_REQUISITE_CODE SYSRES_CONST_REPORT_TEMPLATE_REQUISITE_CODE SYSRES_CONST_REPORT_VIEWER_CODE_REQUISITE_CODE SYSRES_CONST_REQ_ALLOW_COMPONENT_DEFAULT_VALUE SYSRES_CONST_REQ_ALLOW_RECORD_DEFAULT_VALUE SYSRES_CONST_REQ_ALLOW_SERVER_COMPONENT_DEFAULT_VALUE SYSRES_CONST_REQ_MODE_AVAILABLE_CODE SYSRES_CONST_REQ_MODE_EDIT_CODE SYSRES_CONST_REQ_MODE_HIDDEN_CODE SYSRES_CONST_REQ_MODE_NOT_AVAILABLE_CODE SYSRES_CONST_REQ_MODE_VIEW_CODE SYSRES_CONST_REQ_NUMBER_REQUISITE_CODE SYSRES_CONST_REQ_SECTION_VALUE SYSRES_CONST_REQ_TYPE_VALUE SYSRES_CONST_REQUISITE_FORMAT_BY_UNIT SYSRES_CONST_REQUISITE_FORMAT_DATE_FULL SYSRES_CONST_REQUISITE_FORMAT_DATE_TIME SYSRES_CONST_REQUISITE_FORMAT_LEFT SYSRES_CONST_REQUISITE_FORMAT_RIGHT SYSRES_CONST_REQUISITE_FORMAT_WITHOUT_UNIT SYSRES_CONST_REQUISITE_NUMBER_REQUISITE_CODE SYSRES_CONST_REQUISITE_SECTION_ACTIONS SYSRES_CONST_REQUISITE_SECTION_BUTTON SYSRES_CONST_REQUISITE_SECTION_BUTTONS SYSRES_CONST_REQUISITE_SECTION_CARD SYSRES_CONST_REQUISITE_SECTION_TABLE SYSRES_CONST_REQUISITE_SECTION_TABLE10 SYSRES_CONST_REQUISITE_SECTION_TABLE11 SYSRES_CONST_REQUISITE_SECTION_TABLE12 SYSRES_CONST_REQUISITE_SECTION_TABLE13 SYSRES_CONST_REQUISITE_SECTION_TABLE14 SYSRES_CONST_REQUISITE_SECTION_TABLE15 SYSRES_CONST_REQUISITE_SECTION_TABLE16 SYSRES_CONST_REQUISITE_SECTION_TABLE17 SYSRES_CONST_REQUISITE_SECTION_TABLE18 SYSRES_CONST_REQUISITE_SECTION_TABLE19 SYSRES_CONST_REQUISITE_SECTION_TABLE2 SYSRES_CONST_REQUISITE_SECTION_TABLE20 SYSRES_CONST_REQUISITE_SECTION_TABLE21 SYSRES_CONST_REQUISITE_SECTION_TABLE22 SYSRES_CONST_REQUISITE_SECTION_TABLE23 SYSRES_CONST_REQUISITE_SECTION_TABLE24 SYSRES_CONST_REQUISITE_SECTION_TABLE3 SYSRES_CONST_REQUISITE_SECTION_TABLE4 SYSRES_CONST_REQUISITE_SECTION_TABLE5 SYSRES_CONST_REQUISITE_SECTION_TABLE6 SYSRES_CONST_REQUISITE_SECTION_TABLE7 SYSRES_CONST_REQUISITE_SECTION_TABLE8 SYSRES_CONST_REQUISITE_SECTION_TABLE9 SYSRES_CONST_REQUISITES_PSEUDOREFERENCE_REQUISITE_NUMBER_REQUISITE_CODE SYSRES_CONST_RIGHT_ALIGNMENT_CODE SYSRES_CONST_ROLES_REFERENCE_CODE SYSRES_CONST_ROUTE_STEP_AFTER_RUS SYSRES_CONST_ROUTE_STEP_AND_CONDITION_RUS SYSRES_CONST_ROUTE_STEP_OR_CONDITION_RUS SYSRES_CONST_ROUTE_TYPE_COMPLEX SYSRES_CONST_ROUTE_TYPE_PARALLEL SYSRES_CONST_ROUTE_TYPE_SERIAL SYSRES_CONST_SBDATASETDESC_NEGATIVE_VALUE SYSRES_CONST_SBDATASETDESC_POSITIVE_VALUE SYSRES_CONST_SBVIEWSDESC_POSITIVE_VALUE SYSRES_CONST_SCRIPT_BLOCK_DESCRIPTION SYSRES_CONST_SEARCH_BY_TEXT_REQUISITE_CODE SYSRES_CONST_SEARCHES_COMPONENT_CONTENT SYSRES_CONST_SEARCHES_CRITERIA_ACTION_NAME SYSRES_CONST_SEARCHES_EDOC_CONTENT SYSRES_CONST_SEARCHES_FOLDER_CONTENT SYSRES_CONST_SEARCHES_JOB_CONTENT SYSRES_CONST_SEARCHES_REFERENCE_CODE SYSRES_CONST_SEARCHES_TASK_CONTENT SYSRES_CONST_SECOND_CHAR SYSRES_CONST_SECTION_REQUISITE_ACTIONS_VALUE SYSRES_CONST_SECTION_REQUISITE_CARD_VALUE SYSRES_CONST_SECTION_REQUISITE_CODE SYSRES_CONST_SECTION_REQUISITE_DETAIL_1_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_2_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_3_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_4_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_5_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_6_VALUE SYSRES_CONST_SELECT_REFERENCE_MODE_NAME SYSRES_CONST_SELECT_TYPE_SELECTABLE SYSRES_CONST_SELECT_TYPE_SELECTABLE_ONLY_CHILD SYSRES_CONST_SELECT_TYPE_SELECTABLE_WITH_CHILD SYSRES_CONST_SELECT_TYPE_UNSLECTABLE SYSRES_CONST_SERVER_TYPE_MAIN SYSRES_CONST_SERVICE_USER_CATEGORY_FIELD_VALUE SYSRES_CONST_SETTINGS_USER_REQUISITE_CODE SYSRES_CONST_SIGNATURE_AND_ENCODE_CERTIFICATE_TYPE_CODE SYSRES_CONST_SIGNATURE_CERTIFICATE_TYPE_CODE SYSRES_CONST_SINGULAR_TITLE_REQUISITE_CODE SYSRES_CONST_SQL_SERVER_AUTHENTIFICATION_FLAG_VALUE_CODE SYSRES_CONST_SQL_SERVER_ENCODE_AUTHENTIFICATION_FLAG_VALUE_CODE SYSRES_CONST_STANDART_ROUTE_REFERENCE_CODE SYSRES_CONST_STANDART_ROUTE_REFERENCE_COMMENT_REQUISITE_CODE SYSRES_CONST_STANDART_ROUTES_GROUPS_REFERENCE_CODE SYSRES_CONST_STATE_REQ_NAME SYSRES_CONST_STATE_REQUISITE_ACTIVE_VALUE SYSRES_CONST_STATE_REQUISITE_CLOSED_VALUE SYSRES_CONST_STATE_REQUISITE_CODE SYSRES_CONST_STATIC_ROLE_TYPE_CODE SYSRES_CONST_STATUS_PLAN_DEFAULT_VALUE SYSRES_CONST_STATUS_VALUE_AUTOCLEANING SYSRES_CONST_STATUS_VALUE_BLUE_SQUARE SYSRES_CONST_STATUS_VALUE_COMPLETE SYSRES_CONST_STATUS_VALUE_GREEN_SQUARE SYSRES_CONST_STATUS_VALUE_ORANGE_SQUARE SYSRES_CONST_STATUS_VALUE_PURPLE_SQUARE SYSRES_CONST_STATUS_VALUE_RED_SQUARE SYSRES_CONST_STATUS_VALUE_SUSPEND SYSRES_CONST_STATUS_VALUE_YELLOW_SQUARE SYSRES_CONST_STDROUTE_SHOW_TO_USERS_REQUISITE_CODE SYSRES_CONST_STORAGE_TYPE_FILE SYSRES_CONST_STORAGE_TYPE_SQL_SERVER SYSRES_CONST_STR_REQUISITE SYSRES_CONST_STRIKEOUT_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_STRING_FORMAT_LEFT_ALIGN_CHAR SYSRES_CONST_STRING_FORMAT_RIGHT_ALIGN_CHAR SYSRES_CONST_STRING_REQUISITE_CODE SYSRES_CONST_STRING_REQUISITE_TYPE SYSRES_CONST_STRING_TYPE_CHAR SYSRES_CONST_SUBSTITUTES_PSEUDOREFERENCE_CODE SYSRES_CONST_SUBTASK_BLOCK_DESCRIPTION SYSRES_CONST_SYSTEM_SETTING_CURRENT_USER_PARAM_VALUE SYSRES_CONST_SYSTEM_SETTING_EMPTY_VALUE_PARAM_VALUE SYSRES_CONST_SYSTEM_VERSION_COMMENT SYSRES_CONST_TASK_ACCESS_TYPE_ALL SYSRES_CONST_TASK_ACCESS_TYPE_ALL_MEMBERS SYSRES_CONST_TASK_ACCESS_TYPE_MANUAL SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION_AND_PASSWORD SYSRES_CONST_TASK_ENCODE_TYPE_NONE SYSRES_CONST_TASK_ENCODE_TYPE_PASSWORD SYSRES_CONST_TASK_ROUTE_ALL_CONDITION SYSRES_CONST_TASK_ROUTE_AND_CONDITION SYSRES_CONST_TASK_ROUTE_OR_CONDITION SYSRES_CONST_TASK_STATE_ABORTED SYSRES_CONST_TASK_STATE_COMPLETE SYSRES_CONST_TASK_STATE_CONTINUED SYSRES_CONST_TASK_STATE_CONTROL SYSRES_CONST_TASK_STATE_INIT SYSRES_CONST_TASK_STATE_WORKING SYSRES_CONST_TASK_TITLE SYSRES_CONST_TASK_TYPES_GROUPS_REFERENCE_CODE SYSRES_CONST_TASK_TYPES_REFERENCE_CODE SYSRES_CONST_TEMPLATES_REFERENCE_CODE SYSRES_CONST_TEST_DATE_REQUISITE_NAME SYSRES_CONST_TEST_DEV_DATABASE_NAME SYSRES_CONST_TEST_DEV_SYSTEM_CODE SYSRES_CONST_TEST_EDMS_DATABASE_NAME SYSRES_CONST_TEST_EDMS_MAIN_CODE SYSRES_CONST_TEST_EDMS_MAIN_DB_NAME SYSRES_CONST_TEST_EDMS_SECOND_CODE SYSRES_CONST_TEST_EDMS_SECOND_DB_NAME SYSRES_CONST_TEST_EDMS_SYSTEM_CODE SYSRES_CONST_TEST_NUMERIC_REQUISITE_NAME SYSRES_CONST_TEXT_REQUISITE SYSRES_CONST_TEXT_REQUISITE_CODE SYSRES_CONST_TEXT_REQUISITE_TYPE SYSRES_CONST_TEXT_TYPE_CHAR SYSRES_CONST_TYPE_CODE_REQUISITE_CODE SYSRES_CONST_TYPE_REQUISITE_CODE SYSRES_CONST_UNDEFINED_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_UNITS_SECTION_ID_REQUISITE_CODE SYSRES_CONST_UNITS_SECTION_REQUISITE_CODE SYSRES_CONST_UNOPERATING_RECORD_FLAG_VALUE_CODE SYSRES_CONST_UNSTORED_DATA_REQUISITE_CODE SYSRES_CONST_UNSTORED_DATA_REQUISITE_NAME SYSRES_CONST_USE_ACCESS_TYPE_CODE SYSRES_CONST_USE_ACCESS_TYPE_NAME SYSRES_CONST_USER_ACCOUNT_TYPE_VALUE_CODE SYSRES_CONST_USER_ADDITIONAL_INFORMATION_REQUISITE_CODE SYSRES_CONST_USER_AND_GROUP_ID_FROM_PSEUDOREFERENCE_REQUISITE_CODE SYSRES_CONST_USER_CATEGORY_NORMAL SYSRES_CONST_USER_CERTIFICATE_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_STATE_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_SUBJECT_NAME_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_THUMBPRINT_REQUISITE_CODE SYSRES_CONST_USER_COMMON_CATEGORY SYSRES_CONST_USER_COMMON_CATEGORY_CODE SYSRES_CONST_USER_FULL_NAME_REQUISITE_CODE SYSRES_CONST_USER_GROUP_TYPE_REQUISITE_CODE SYSRES_CONST_USER_LOGIN_REQUISITE_CODE SYSRES_CONST_USER_REMOTE_CONTROLLER_REQUISITE_CODE SYSRES_CONST_USER_REMOTE_SYSTEM_REQUISITE_CODE SYSRES_CONST_USER_RIGHTS_T_REQUISITE_CODE SYSRES_CONST_USER_SERVER_NAME_REQUISITE_CODE SYSRES_CONST_USER_SERVICE_CATEGORY SYSRES_CONST_USER_SERVICE_CATEGORY_CODE SYSRES_CONST_USER_STATUS_ADMINISTRATOR_CODE SYSRES_CONST_USER_STATUS_ADMINISTRATOR_NAME SYSRES_CONST_USER_STATUS_DEVELOPER_CODE SYSRES_CONST_USER_STATUS_DEVELOPER_NAME SYSRES_CONST_USER_STATUS_DISABLED_CODE SYSRES_CONST_USER_STATUS_DISABLED_NAME SYSRES_CONST_USER_STATUS_SYSTEM_DEVELOPER_CODE SYSRES_CONST_USER_STATUS_USER_CODE SYSRES_CONST_USER_STATUS_USER_NAME SYSRES_CONST_USER_STATUS_USER_NAME_DEPRECATED SYSRES_CONST_USER_TYPE_FIELD_VALUE_USER SYSRES_CONST_USER_TYPE_REQUISITE_CODE SYSRES_CONST_USERS_CONTROLLER_REQUISITE_CODE SYSRES_CONST_USERS_IS_MAIN_SERVER_REQUISITE_CODE SYSRES_CONST_USERS_REFERENCE_CODE SYSRES_CONST_USERS_REGISTRATION_CERTIFICATES_ACTION_NAME SYSRES_CONST_USERS_REQUISITE_CODE SYSRES_CONST_USERS_SYSTEM_REQUISITE_CODE SYSRES_CONST_USERS_USER_ACCESS_RIGHTS_TYPR_REQUISITE_CODE SYSRES_CONST_USERS_USER_AUTHENTICATION_REQUISITE_CODE SYSRES_CONST_USERS_USER_COMPONENT_REQUISITE_CODE SYSRES_CONST_USERS_USER_GROUP_REQUISITE_CODE SYSRES_CONST_USERS_VIEW_CERTIFICATES_ACTION_NAME SYSRES_CONST_VIEW_DEFAULT_CODE SYSRES_CONST_VIEW_DEFAULT_NAME SYSRES_CONST_VIEWER_REQUISITE_CODE SYSRES_CONST_WAITING_BLOCK_DESCRIPTION SYSRES_CONST_WIZARD_FORM_LABEL_TEST_STRING  SYSRES_CONST_WIZARD_QUERY_PARAM_HEIGHT_ETALON_STRING SYSRES_CONST_WIZARD_REFERENCE_COMMENT_REQUISITE_CODE SYSRES_CONST_WORK_RULES_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_WORK_TIME_CALENDAR_REFERENCE_CODE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE_RUS SYSRES_CONST_WORK_WORKFLOW_SOFT_ROUTE_TYPE_VALUE_CODE_RUS SYSRES_CONST_WORKFLOW_ROUTE_TYPR_HARD SYSRES_CONST_WORKFLOW_ROUTE_TYPR_SOFT SYSRES_CONST_XML_ENCODING SYSRES_CONST_XREC_STAT_REQUISITE_CODE SYSRES_CONST_XRECID_FIELD_NAME SYSRES_CONST_YES SYSRES_CONST_YES_NO_2_REQUISITE_CODE SYSRES_CONST_YES_NO_REQUISITE_CODE SYSRES_CONST_YES_NO_T_REF_TYPE_REQUISITE_CODE SYSRES_CONST_YES_PICK_VALUE SYSRES_CONST_YES_VALUE CR FALSE nil NO_VALUE NULL TAB TRUE YES_VALUE ADMINISTRATORS_GROUP_NAME CUSTOMIZERS_GROUP_NAME DEVELOPERS_GROUP_NAME SERVICE_USERS_GROUP_NAME DECISION_BLOCK_FIRST_OPERAND_PROPERTY DECISION_BLOCK_NAME_PROPERTY DECISION_BLOCK_OPERATION_PROPERTY DECISION_BLOCK_RESULT_TYPE_PROPERTY DECISION_BLOCK_SECOND_OPERAND_PROPERTY ANY_FILE_EXTENTION COMPRESSED_DOCUMENT_EXTENSION EXTENDED_DOCUMENT_EXTENSION SHORT_COMPRESSED_DOCUMENT_EXTENSION SHORT_EXTENDED_DOCUMENT_EXTENSION JOB_BLOCK_ABORT_DEADLINE_PROPERTY JOB_BLOCK_AFTER_FINISH_EVENT JOB_BLOCK_AFTER_QUERY_PARAMETERS_EVENT JOB_BLOCK_ATTACHMENT_PROPERTY JOB_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY JOB_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY JOB_BLOCK_BEFORE_QUERY_PARAMETERS_EVENT JOB_BLOCK_BEFORE_START_EVENT JOB_BLOCK_CREATED_JOBS_PROPERTY JOB_BLOCK_DEADLINE_PROPERTY JOB_BLOCK_EXECUTION_RESULTS_PROPERTY JOB_BLOCK_IS_PARALLEL_PROPERTY JOB_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY JOB_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY JOB_BLOCK_JOB_TEXT_PROPERTY JOB_BLOCK_NAME_PROPERTY JOB_BLOCK_NEED_SIGN_ON_PERFORM_PROPERTY JOB_BLOCK_PERFORMER_PROPERTY JOB_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY JOB_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY JOB_BLOCK_SUBJECT_PROPERTY ENGLISH_LANGUAGE_CODE RUSSIAN_LANGUAGE_CODE smHidden smMaximized smMinimized smNormal wmNo wmYes COMPONENT_TOKEN_LINK_KIND DOCUMENT_LINK_KIND EDOCUMENT_LINK_KIND FOLDER_LINK_KIND JOB_LINK_KIND REFERENCE_LINK_KIND TASK_LINK_KIND COMPONENT_TOKEN_LOCK_TYPE EDOCUMENT_VERSION_LOCK_TYPE MONITOR_BLOCK_AFTER_FINISH_EVENT MONITOR_BLOCK_BEFORE_START_EVENT MONITOR_BLOCK_DEADLINE_PROPERTY MONITOR_BLOCK_INTERVAL_PROPERTY MONITOR_BLOCK_INTERVAL_TYPE_PROPERTY MONITOR_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY MONITOR_BLOCK_NAME_PROPERTY MONITOR_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY MONITOR_BLOCK_SEARCH_SCRIPT_PROPERTY NOTICE_BLOCK_AFTER_FINISH_EVENT NOTICE_BLOCK_ATTACHMENT_PROPERTY NOTICE_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY NOTICE_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY NOTICE_BLOCK_BEFORE_START_EVENT NOTICE_BLOCK_CREATED_NOTICES_PROPERTY NOTICE_BLOCK_DEADLINE_PROPERTY NOTICE_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY NOTICE_BLOCK_NAME_PROPERTY NOTICE_BLOCK_NOTICE_TEXT_PROPERTY NOTICE_BLOCK_PERFORMER_PROPERTY NOTICE_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY NOTICE_BLOCK_SUBJECT_PROPERTY dseAfterCancel dseAfterClose dseAfterDelete dseAfterDeleteOutOfTransaction dseAfterInsert dseAfterOpen dseAfterScroll dseAfterUpdate dseAfterUpdateOutOfTransaction dseBeforeCancel dseBeforeClose dseBeforeDelete dseBeforeDetailUpdate dseBeforeInsert dseBeforeOpen dseBeforeUpdate dseOnAnyRequisiteChange dseOnCloseRecord dseOnDeleteError dseOnOpenRecord dseOnPrepareUpdate dseOnUpdateError dseOnUpdateRatifiedRecord dseOnValidDelete dseOnValidUpdate reOnChange reOnChangeValues SELECTION_BEGIN_ROUTE_EVENT SELECTION_END_ROUTE_EVENT CURRENT_PERIOD_IS_REQUIRED PREVIOUS_CARD_TYPE_NAME SHOW_RECORD_PROPERTIES_FORM ACCESS_RIGHTS_SETTING_DIALOG_CODE ADMINISTRATOR_USER_CODE ANALYTIC_REPORT_TYPE asrtHideLocal asrtHideRemote CALCULATED_ROLE_TYPE_CODE COMPONENTS_REFERENCE_DEVELOPER_VIEW_CODE DCTS_TEST_PROTOCOLS_FOLDER_PATH E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED_BY_USER E_EDOC_VERSION_ALREDY_SIGNED E_EDOC_VERSION_ALREDY_SIGNED_BY_USER EDOC_TYPES_CODE_REQUISITE_FIELD_NAME EDOCUMENTS_ALIAS_NAME FILES_FOLDER_PATH FILTER_OPERANDS_DELIMITER FILTER_OPERATIONS_DELIMITER FORMCARD_NAME FORMLIST_NAME GET_EXTENDED_DOCUMENT_EXTENSION_CREATION_MODE GET_EXTENDED_DOCUMENT_EXTENSION_IMPORT_MODE INTEGRATED_REPORT_TYPE IS_BUILDER_APPLICATION_ROLE IS_BUILDER_APPLICATION_ROLE2 IS_BUILDER_USERS ISBSYSDEV LOG_FOLDER_PATH mbCancel mbNo mbNoToAll mbOK mbYes mbYesToAll MEMORY_DATASET_DESRIPTIONS_FILENAME mrNo mrNoToAll mrYes mrYesToAll MULTIPLE_SELECT_DIALOG_CODE NONOPERATING_RECORD_FLAG_FEMININE NONOPERATING_RECORD_FLAG_MASCULINE OPERATING_RECORD_FLAG_FEMININE OPERATING_RECORD_FLAG_MASCULINE PROFILING_SETTINGS_COMMON_SETTINGS_CODE_VALUE PROGRAM_INITIATED_LOOKUP_ACTION ratDelete ratEdit ratInsert REPORT_TYPE REQUIRED_PICK_VALUES_VARIABLE rmCard rmList SBRTE_PROGID_DEV SBRTE_PROGID_RELEASE STATIC_ROLE_TYPE_CODE SUPPRESS_EMPTY_TEMPLATE_CREATION SYSTEM_USER_CODE UPDATE_DIALOG_DATASET USED_IN_OBJECT_HINT_PARAM USER_INITIATED_LOOKUP_ACTION USER_NAME_FORMAT USER_SELECTION_RESTRICTIONS WORKFLOW_TEST_PROTOCOLS_FOLDER_PATH ELS_SUBTYPE_CONTROL_NAME ELS_FOLDER_KIND_CONTROL_NAME REPEAT_PROCESS_CURRENT_OBJECT_EXCEPTION_NAME PRIVILEGE_COMPONENT_FULL_ACCESS PRIVILEGE_DEVELOPMENT_EXPORT PRIVILEGE_DEVELOPMENT_IMPORT PRIVILEGE_DOCUMENT_DELETE PRIVILEGE_ESD PRIVILEGE_FOLDER_DELETE PRIVILEGE_MANAGE_ACCESS_RIGHTS PRIVILEGE_MANAGE_REPLICATION PRIVILEGE_MANAGE_SESSION_SERVER PRIVILEGE_OBJECT_FULL_ACCESS PRIVILEGE_OBJECT_VIEW PRIVILEGE_RESERVE_LICENSE PRIVILEGE_SYSTEM_CUSTOMIZE PRIVILEGE_SYSTEM_DEVELOP PRIVILEGE_SYSTEM_INSTALL PRIVILEGE_TASK_DELETE PRIVILEGE_USER_PLUGIN_SETTINGS_CUSTOMIZE PRIVILEGES_PSEUDOREFERENCE_CODE ACCESS_TYPES_PSEUDOREFERENCE_CODE ALL_AVAILABLE_COMPONENTS_PSEUDOREFERENCE_CODE ALL_AVAILABLE_PRIVILEGES_PSEUDOREFERENCE_CODE ALL_REPLICATE_COMPONENTS_PSEUDOREFERENCE_CODE AVAILABLE_DEVELOPERS_COMPONENTS_PSEUDOREFERENCE_CODE COMPONENTS_PSEUDOREFERENCE_CODE FILTRATER_SETTINGS_CONFLICTS_PSEUDOREFERENCE_CODE GROUPS_PSEUDOREFERENCE_CODE RECEIVE_PROTOCOL_PSEUDOREFERENCE_CODE REFERENCE_REQUISITE_PSEUDOREFERENCE_CODE REFERENCE_REQUISITES_PSEUDOREFERENCE_CODE REFTYPES_PSEUDOREFERENCE_CODE REPLICATION_SEANCES_DIARY_PSEUDOREFERENCE_CODE SEND_PROTOCOL_PSEUDOREFERENCE_CODE SUBSTITUTES_PSEUDOREFERENCE_CODE SYSTEM_SETTINGS_PSEUDOREFERENCE_CODE UNITS_PSEUDOREFERENCE_CODE USERS_PSEUDOREFERENCE_CODE VIEWERS_PSEUDOREFERENCE_CODE CERTIFICATE_TYPE_ENCRYPT CERTIFICATE_TYPE_SIGN CERTIFICATE_TYPE_SIGN_AND_ENCRYPT STORAGE_TYPE_FILE STORAGE_TYPE_NAS_CIFS STORAGE_TYPE_SAPERION STORAGE_TYPE_SQL_SERVER COMPTYPE2_REQUISITE_DOCUMENTS_VALUE COMPTYPE2_REQUISITE_TASKS_VALUE COMPTYPE2_REQUISITE_FOLDERS_VALUE COMPTYPE2_REQUISITE_REFERENCES_VALUE SYSREQ_CODE SYSREQ_COMPTYPE2 SYSREQ_CONST_AVAILABLE_FOR_WEB SYSREQ_CONST_COMMON_CODE SYSREQ_CONST_COMMON_VALUE SYSREQ_CONST_FIRM_CODE SYSREQ_CONST_FIRM_STATUS SYSREQ_CONST_FIRM_VALUE SYSREQ_CONST_SERVER_STATUS SYSREQ_CONTENTS SYSREQ_DATE_OPEN SYSREQ_DATE_CLOSE SYSREQ_DESCRIPTION SYSREQ_DESCRIPTION_LOCALIZE_ID SYSREQ_DOUBLE SYSREQ_EDOC_ACCESS_TYPE SYSREQ_EDOC_AUTHOR SYSREQ_EDOC_CREATED SYSREQ_EDOC_DELEGATE_RIGHTS_REQUISITE_CODE SYSREQ_EDOC_EDITOR SYSREQ_EDOC_ENCODE_TYPE SYSREQ_EDOC_ENCRYPTION_PLUGIN_NAME SYSREQ_EDOC_ENCRYPTION_PLUGIN_VERSION SYSREQ_EDOC_EXPORT_DATE SYSREQ_EDOC_EXPORTER SYSREQ_EDOC_KIND SYSREQ_EDOC_LIFE_STAGE_NAME SYSREQ_EDOC_LOCKED_FOR_SERVER_CODE SYSREQ_EDOC_MODIFIED SYSREQ_EDOC_NAME SYSREQ_EDOC_NOTE SYSREQ_EDOC_QUALIFIED_ID SYSREQ_EDOC_SESSION_KEY SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_NAME SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_VERSION SYSREQ_EDOC_SIGNATURE_TYPE SYSREQ_EDOC_SIGNED SYSREQ_EDOC_STORAGE SYSREQ_EDOC_STORAGES_ARCHIVE_STORAGE SYSREQ_EDOC_STORAGES_CHECK_RIGHTS SYSREQ_EDOC_STORAGES_COMPUTER_NAME SYSREQ_EDOC_STORAGES_EDIT_IN_STORAGE SYSREQ_EDOC_STORAGES_EXECUTIVE_STORAGE SYSREQ_EDOC_STORAGES_FUNCTION SYSREQ_EDOC_STORAGES_INITIALIZED SYSREQ_EDOC_STORAGES_LOCAL_PATH SYSREQ_EDOC_STORAGES_SAPERION_DATABASE_NAME SYSREQ_EDOC_STORAGES_SEARCH_BY_TEXT SYSREQ_EDOC_STORAGES_SERVER_NAME SYSREQ_EDOC_STORAGES_SHARED_SOURCE_NAME SYSREQ_EDOC_STORAGES_TYPE SYSREQ_EDOC_TEXT_MODIFIED SYSREQ_EDOC_TYPE_ACT_CODE SYSREQ_EDOC_TYPE_ACT_DESCRIPTION SYSREQ_EDOC_TYPE_ACT_DESCRIPTION_LOCALIZE_ID SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE_EXISTS SYSREQ_EDOC_TYPE_ACT_SECTION SYSREQ_EDOC_TYPE_ADD_PARAMS SYSREQ_EDOC_TYPE_COMMENT SYSREQ_EDOC_TYPE_EVENT_TEXT SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID SYSREQ_EDOC_TYPE_NAME_LOCALIZE_ID SYSREQ_EDOC_TYPE_NUMERATION_METHOD SYSREQ_EDOC_TYPE_PSEUDO_REQUISITE_CODE SYSREQ_EDOC_TYPE_REQ_CODE SYSREQ_EDOC_TYPE_REQ_DESCRIPTION SYSREQ_EDOC_TYPE_REQ_DESCRIPTION_LOCALIZE_ID SYSREQ_EDOC_TYPE_REQ_IS_LEADING SYSREQ_EDOC_TYPE_REQ_IS_REQUIRED SYSREQ_EDOC_TYPE_REQ_NUMBER SYSREQ_EDOC_TYPE_REQ_ON_CHANGE SYSREQ_EDOC_TYPE_REQ_ON_CHANGE_EXISTS SYSREQ_EDOC_TYPE_REQ_ON_SELECT SYSREQ_EDOC_TYPE_REQ_ON_SELECT_KIND SYSREQ_EDOC_TYPE_REQ_SECTION SYSREQ_EDOC_TYPE_VIEW_CARD SYSREQ_EDOC_TYPE_VIEW_CODE SYSREQ_EDOC_TYPE_VIEW_COMMENT SYSREQ_EDOC_TYPE_VIEW_IS_MAIN SYSREQ_EDOC_TYPE_VIEW_NAME SYSREQ_EDOC_TYPE_VIEW_NAME_LOCALIZE_ID SYSREQ_EDOC_VERSION_AUTHOR SYSREQ_EDOC_VERSION_CRC SYSREQ_EDOC_VERSION_DATA SYSREQ_EDOC_VERSION_EDITOR SYSREQ_EDOC_VERSION_EXPORT_DATE SYSREQ_EDOC_VERSION_EXPORTER SYSREQ_EDOC_VERSION_HIDDEN SYSREQ_EDOC_VERSION_LIFE_STAGE SYSREQ_EDOC_VERSION_MODIFIED SYSREQ_EDOC_VERSION_NOTE SYSREQ_EDOC_VERSION_SIGNATURE_TYPE SYSREQ_EDOC_VERSION_SIGNED SYSREQ_EDOC_VERSION_SIZE SYSREQ_EDOC_VERSION_SOURCE SYSREQ_EDOC_VERSION_TEXT_MODIFIED SYSREQ_EDOCKIND_DEFAULT_VERSION_STATE_CODE SYSREQ_FOLDER_KIND SYSREQ_FUNC_CATEGORY SYSREQ_FUNC_COMMENT SYSREQ_FUNC_GROUP SYSREQ_FUNC_GROUP_COMMENT SYSREQ_FUNC_GROUP_NUMBER SYSREQ_FUNC_HELP SYSREQ_FUNC_PARAM_DEF_VALUE SYSREQ_FUNC_PARAM_IDENT SYSREQ_FUNC_PARAM_NUMBER SYSREQ_FUNC_PARAM_TYPE SYSREQ_FUNC_TEXT SYSREQ_GROUP_CATEGORY SYSREQ_ID SYSREQ_LAST_UPDATE SYSREQ_LEADER_REFERENCE SYSREQ_LINE_NUMBER SYSREQ_MAIN_RECORD_ID SYSREQ_NAME SYSREQ_NAME_LOCALIZE_ID SYSREQ_NOTE SYSREQ_ORIGINAL_RECORD SYSREQ_OUR_FIRM SYSREQ_PROFILING_SETTINGS_BATCH_LOGING SYSREQ_PROFILING_SETTINGS_BATCH_SIZE SYSREQ_PROFILING_SETTINGS_PROFILING_ENABLED SYSREQ_PROFILING_SETTINGS_SQL_PROFILING_ENABLED SYSREQ_PROFILING_SETTINGS_START_LOGGED SYSREQ_RECORD_STATUS SYSREQ_REF_REQ_FIELD_NAME SYSREQ_REF_REQ_FORMAT SYSREQ_REF_REQ_GENERATED SYSREQ_REF_REQ_LENGTH SYSREQ_REF_REQ_PRECISION SYSREQ_REF_REQ_REFERENCE SYSREQ_REF_REQ_SECTION SYSREQ_REF_REQ_STORED SYSREQ_REF_REQ_TOKENS SYSREQ_REF_REQ_TYPE SYSREQ_REF_REQ_VIEW SYSREQ_REF_TYPE_ACT_CODE SYSREQ_REF_TYPE_ACT_DESCRIPTION SYSREQ_REF_TYPE_ACT_DESCRIPTION_LOCALIZE_ID SYSREQ_REF_TYPE_ACT_ON_EXECUTE SYSREQ_REF_TYPE_ACT_ON_EXECUTE_EXISTS SYSREQ_REF_TYPE_ACT_SECTION SYSREQ_REF_TYPE_ADD_PARAMS SYSREQ_REF_TYPE_COMMENT SYSREQ_REF_TYPE_COMMON_SETTINGS SYSREQ_REF_TYPE_DISPLAY_REQUISITE_NAME SYSREQ_REF_TYPE_EVENT_TEXT SYSREQ_REF_TYPE_MAIN_LEADING_REF SYSREQ_REF_TYPE_NAME_IN_SINGULAR SYSREQ_REF_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID SYSREQ_REF_TYPE_NAME_LOCALIZE_ID SYSREQ_REF_TYPE_NUMERATION_METHOD SYSREQ_REF_TYPE_REQ_CODE SYSREQ_REF_TYPE_REQ_DESCRIPTION SYSREQ_REF_TYPE_REQ_DESCRIPTION_LOCALIZE_ID SYSREQ_REF_TYPE_REQ_IS_CONTROL SYSREQ_REF_TYPE_REQ_IS_FILTER SYSREQ_REF_TYPE_REQ_IS_LEADING SYSREQ_REF_TYPE_REQ_IS_REQUIRED SYSREQ_REF_TYPE_REQ_NUMBER SYSREQ_REF_TYPE_REQ_ON_CHANGE SYSREQ_REF_TYPE_REQ_ON_CHANGE_EXISTS SYSREQ_REF_TYPE_REQ_ON_SELECT SYSREQ_REF_TYPE_REQ_ON_SELECT_KIND SYSREQ_REF_TYPE_REQ_SECTION SYSREQ_REF_TYPE_VIEW_CARD SYSREQ_REF_TYPE_VIEW_CODE SYSREQ_REF_TYPE_VIEW_COMMENT SYSREQ_REF_TYPE_VIEW_IS_MAIN SYSREQ_REF_TYPE_VIEW_NAME SYSREQ_REF_TYPE_VIEW_NAME_LOCALIZE_ID SYSREQ_REFERENCE_TYPE_ID SYSREQ_STATE SYSREQ_STAT\u0415 SYSREQ_SYSTEM_SETTINGS_VALUE SYSREQ_TYPE SYSREQ_UNIT SYSREQ_UNIT_ID SYSREQ_USER_GROUPS_GROUP_FULL_NAME SYSREQ_USER_GROUPS_GROUP_NAME SYSREQ_USER_GROUPS_GROUP_SERVER_NAME SYSREQ_USERS_ACCESS_RIGHTS SYSREQ_USERS_AUTHENTICATION SYSREQ_USERS_CATEGORY SYSREQ_USERS_COMPONENT SYSREQ_USERS_COMPONENT_USER_IS_PUBLIC SYSREQ_USERS_DOMAIN SYSREQ_USERS_FULL_USER_NAME SYSREQ_USERS_GROUP SYSREQ_USERS_IS_MAIN_SERVER SYSREQ_USERS_LOGIN SYSREQ_USERS_REFERENCE_USER_IS_PUBLIC SYSREQ_USERS_STATUS SYSREQ_USERS_USER_CERTIFICATE SYSREQ_USERS_USER_CERTIFICATE_INFO SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_NAME SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_VERSION SYSREQ_USERS_USER_CERTIFICATE_STATE SYSREQ_USERS_USER_CERTIFICATE_SUBJECT_NAME SYSREQ_USERS_USER_CERTIFICATE_THUMBPRINT SYSREQ_USERS_USER_DEFAULT_CERTIFICATE SYSREQ_USERS_USER_DESCRIPTION SYSREQ_USERS_USER_GLOBAL_NAME SYSREQ_USERS_USER_LOGIN SYSREQ_USERS_USER_MAIN_SERVER SYSREQ_USERS_USER_TYPE SYSREQ_WORK_RULES_FOLDER_ID RESULT_VAR_NAME RESULT_VAR_NAME_ENG AUTO_NUMERATION_RULE_ID CANT_CHANGE_ID_REQUISITE_RULE_ID CANT_CHANGE_OURFIRM_REQUISITE_RULE_ID CHECK_CHANGING_REFERENCE_RECORD_USE_RULE_ID CHECK_CODE_REQUISITE_RULE_ID CHECK_DELETING_REFERENCE_RECORD_USE_RULE_ID CHECK_FILTRATER_CHANGES_RULE_ID CHECK_RECORD_INTERVAL_RULE_ID CHECK_REFERENCE_INTERVAL_RULE_ID CHECK_REQUIRED_DATA_FULLNESS_RULE_ID CHECK_REQUIRED_REQUISITES_FULLNESS_RULE_ID MAKE_RECORD_UNRATIFIED_RULE_ID RESTORE_AUTO_NUMERATION_RULE_ID SET_FIRM_CONTEXT_FROM_RECORD_RULE_ID SET_FIRST_RECORD_IN_LIST_FORM_RULE_ID SET_IDSPS_VALUE_RULE_ID SET_NEXT_CODE_VALUE_RULE_ID SET_OURFIRM_BOUNDS_RULE_ID SET_OURFIRM_REQUISITE_RULE_ID SCRIPT_BLOCK_AFTER_FINISH_EVENT SCRIPT_BLOCK_BEFORE_START_EVENT SCRIPT_BLOCK_EXECUTION_RESULTS_PROPERTY SCRIPT_BLOCK_NAME_PROPERTY SCRIPT_BLOCK_SCRIPT_PROPERTY SUBTASK_BLOCK_ABORT_DEADLINE_PROPERTY SUBTASK_BLOCK_AFTER_FINISH_EVENT SUBTASK_BLOCK_ASSIGN_PARAMS_EVENT SUBTASK_BLOCK_ATTACHMENTS_PROPERTY SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY SUBTASK_BLOCK_BEFORE_START_EVENT SUBTASK_BLOCK_CREATED_TASK_PROPERTY SUBTASK_BLOCK_CREATION_EVENT SUBTASK_BLOCK_DEADLINE_PROPERTY SUBTASK_BLOCK_IMPORTANCE_PROPERTY SUBTASK_BLOCK_INITIATOR_PROPERTY SUBTASK_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY SUBTASK_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY SUBTASK_BLOCK_JOBS_TYPE_PROPERTY SUBTASK_BLOCK_NAME_PROPERTY SUBTASK_BLOCK_PARALLEL_ROUTE_PROPERTY SUBTASK_BLOCK_PERFORMERS_PROPERTY SUBTASK_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY SUBTASK_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY SUBTASK_BLOCK_REQUIRE_SIGN_PROPERTY SUBTASK_BLOCK_STANDARD_ROUTE_PROPERTY SUBTASK_BLOCK_START_EVENT SUBTASK_BLOCK_STEP_CONTROL_PROPERTY SUBTASK_BLOCK_SUBJECT_PROPERTY SUBTASK_BLOCK_TASK_CONTROL_PROPERTY SUBTASK_BLOCK_TEXT_PROPERTY SUBTASK_BLOCK_UNLOCK_ATTACHMENTS_ON_STOP_PROPERTY SUBTASK_BLOCK_USE_STANDARD_ROUTE_PROPERTY SUBTASK_BLOCK_WAIT_FOR_TASK_COMPLETE_PROPERTY SYSCOMP_CONTROL_JOBS SYSCOMP_FOLDERS SYSCOMP_JOBS SYSCOMP_NOTICES SYSCOMP_TASKS SYSDLG_CREATE_EDOCUMENT SYSDLG_CREATE_EDOCUMENT_VERSION SYSDLG_CURRENT_PERIOD SYSDLG_EDIT_FUNCTION_HELP SYSDLG_EDOCUMENT_KINDS_FOR_TEMPLATE SYSDLG_EXPORT_MULTIPLE_EDOCUMENTS SYSDLG_EXPORT_SINGLE_EDOCUMENT SYSDLG_IMPORT_EDOCUMENT SYSDLG_MULTIPLE_SELECT SYSDLG_SETUP_ACCESS_RIGHTS SYSDLG_SETUP_DEFAULT_RIGHTS SYSDLG_SETUP_FILTER_CONDITION SYSDLG_SETUP_SIGN_RIGHTS SYSDLG_SETUP_TASK_OBSERVERS SYSDLG_SETUP_TASK_ROUTE SYSDLG_SETUP_USERS_LIST SYSDLG_SIGN_EDOCUMENT SYSDLG_SIGN_MULTIPLE_EDOCUMENTS SYSREF_ACCESS_RIGHTS_TYPES SYSREF_ADMINISTRATION_HISTORY SYSREF_ALL_AVAILABLE_COMPONENTS SYSREF_ALL_AVAILABLE_PRIVILEGES SYSREF_ALL_REPLICATING_COMPONENTS SYSREF_AVAILABLE_DEVELOPERS_COMPONENTS SYSREF_CALENDAR_EVENTS SYSREF_COMPONENT_TOKEN_HISTORY SYSREF_COMPONENT_TOKENS SYSREF_COMPONENTS SYSREF_CONSTANTS SYSREF_DATA_RECEIVE_PROTOCOL SYSREF_DATA_SEND_PROTOCOL SYSREF_DIALOGS SYSREF_DIALOGS_REQUISITES SYSREF_EDITORS SYSREF_EDOC_CARDS SYSREF_EDOC_TYPES SYSREF_EDOCUMENT_CARD_REQUISITES SYSREF_EDOCUMENT_CARD_TYPES SYSREF_EDOCUMENT_CARD_TYPES_REFERENCE SYSREF_EDOCUMENT_CARDS SYSREF_EDOCUMENT_HISTORY SYSREF_EDOCUMENT_KINDS SYSREF_EDOCUMENT_REQUISITES SYSREF_EDOCUMENT_SIGNATURES SYSREF_EDOCUMENT_TEMPLATES SYSREF_EDOCUMENT_TEXT_STORAGES SYSREF_EDOCUMENT_VIEWS SYSREF_FILTERER_SETUP_CONFLICTS SYSREF_FILTRATER_SETTING_CONFLICTS SYSREF_FOLDER_HISTORY SYSREF_FOLDERS SYSREF_FUNCTION_GROUPS SYSREF_FUNCTION_PARAMS SYSREF_FUNCTIONS SYSREF_JOB_HISTORY SYSREF_LINKS SYSREF_LOCALIZATION_DICTIONARY SYSREF_LOCALIZATION_LANGUAGES SYSREF_MODULES SYSREF_PRIVILEGES SYSREF_RECORD_HISTORY SYSREF_REFERENCE_REQUISITES SYSREF_REFERENCE_TYPE_VIEWS SYSREF_REFERENCE_TYPES SYSREF_REFERENCES SYSREF_REFERENCES_REQUISITES SYSREF_REMOTE_SERVERS SYSREF_REPLICATION_SESSIONS_LOG SYSREF_REPLICATION_SESSIONS_PROTOCOL SYSREF_REPORTS SYSREF_ROLES SYSREF_ROUTE_BLOCK_GROUPS SYSREF_ROUTE_BLOCKS SYSREF_SCRIPTS SYSREF_SEARCHES SYSREF_SERVER_EVENTS SYSREF_SERVER_EVENTS_HISTORY SYSREF_STANDARD_ROUTE_GROUPS SYSREF_STANDARD_ROUTES SYSREF_STATUSES SYSREF_SYSTEM_SETTINGS SYSREF_TASK_HISTORY SYSREF_TASK_KIND_GROUPS SYSREF_TASK_KINDS SYSREF_TASK_RIGHTS SYSREF_TASK_SIGNATURES SYSREF_TASKS SYSREF_UNITS SYSREF_USER_GROUPS SYSREF_USER_GROUPS_REFERENCE SYSREF_USER_SUBSTITUTION SYSREF_USERS SYSREF_USERS_REFERENCE SYSREF_VIEWERS SYSREF_WORKING_TIME_CALENDARS ACCESS_RIGHTS_TABLE_NAME EDMS_ACCESS_TABLE_NAME EDOC_TYPES_TABLE_NAME TEST_DEV_DB_NAME TEST_DEV_SYSTEM_CODE TEST_EDMS_DB_NAME TEST_EDMS_MAIN_CODE TEST_EDMS_MAIN_DB_NAME TEST_EDMS_SECOND_CODE TEST_EDMS_SECOND_DB_NAME TEST_EDMS_SYSTEM_CODE TEST_ISB5_MAIN_CODE TEST_ISB5_SECOND_CODE TEST_SQL_SERVER_2005_NAME TEST_SQL_SERVER_NAME ATTENTION_CAPTION cbsCommandLinks cbsDefault CONFIRMATION_CAPTION ERROR_CAPTION INFORMATION_CAPTION mrCancel mrOk EDOC_VERSION_ACTIVE_STAGE_CODE EDOC_VERSION_DESIGN_STAGE_CODE EDOC_VERSION_OBSOLETE_STAGE_CODE cpDataEnciphermentEnabled cpDigitalSignatureEnabled cpID cpIssuer cpPluginVersion cpSerial cpSubjectName cpSubjSimpleName cpValidFromDate cpValidToDate ISBL_SYNTAX NO_SYNTAX XML_SYNTAX WAIT_BLOCK_AFTER_FINISH_EVENT WAIT_BLOCK_BEFORE_START_EVENT WAIT_BLOCK_DEADLINE_PROPERTY WAIT_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY WAIT_BLOCK_NAME_PROPERTY WAIT_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY SYSRES_COMMON SYSRES_CONST SYSRES_MBFUNC SYSRES_SBDATA SYSRES_SBGUI SYSRES_SBINTF SYSRES_SBREFDSC SYSRES_SQLERRORS SYSRES_SYSCOMP atUser atGroup atRole aemEnabledAlways aemDisabledAlways aemEnabledOnBrowse aemEnabledOnEdit aemDisabledOnBrowseEmpty apBegin apEnd alLeft alRight asmNever asmNoButCustomize asmAsLastTime asmYesButCustomize asmAlways cirCommon cirRevoked ctSignature ctEncode ctSignatureEncode clbUnchecked clbChecked clbGrayed ceISB ceAlways ceNever ctDocument ctReference ctScript ctUnknown ctReport ctDialog ctFunction ctFolder ctEDocument ctTask ctJob ctNotice ctControlJob cfInternal cfDisplay ciUnspecified ciWrite ciRead ckFolder ckEDocument ckTask ckJob ckComponentToken ckAny ckReference ckScript ckReport ckDialog ctISBLEditor ctBevel ctButton ctCheckListBox ctComboBox ctComboEdit ctGrid ctDBCheckBox ctDBComboBox ctDBEdit ctDBEllipsis ctDBMemo ctDBNavigator ctDBRadioGroup ctDBStatusLabel ctEdit ctGroupBox ctInplaceHint ctMemo ctPanel ctListBox ctRadioButton ctRichEdit ctTabSheet ctWebBrowser ctImage ctHyperLink ctLabel ctDBMultiEllipsis ctRibbon ctRichView ctInnerPanel ctPanelGroup ctBitButton cctDate cctInteger cctNumeric cctPick cctReference cctString cctText cltInternal cltPrimary cltGUI dseBeforeOpen dseAfterOpen dseBeforeClose dseAfterClose dseOnValidDelete dseBeforeDelete dseAfterDelete dseAfterDeleteOutOfTransaction dseOnDeleteError dseBeforeInsert dseAfterInsert dseOnValidUpdate dseBeforeUpdate dseOnUpdateRatifiedRecord dseAfterUpdate dseAfterUpdateOutOfTransaction dseOnUpdateError dseAfterScroll dseOnOpenRecord dseOnCloseRecord dseBeforeCancel dseAfterCancel dseOnUpdateDeadlockError dseBeforeDetailUpdate dseOnPrepareUpdate dseOnAnyRequisiteChange dssEdit dssInsert dssBrowse dssInActive dftDate dftShortDate dftDateTime dftTimeStamp dotDays dotHours dotMinutes dotSeconds dtkndLocal dtkndUTC arNone arView arEdit arFull ddaView ddaEdit emLock emEdit emSign emExportWithLock emImportWithUnlock emChangeVersionNote emOpenForModify emChangeLifeStage emDelete emCreateVersion emImport emUnlockExportedWithLock emStart emAbort emReInit emMarkAsReaded emMarkAsUnreaded emPerform emAccept emResume emChangeRights emEditRoute emEditObserver emRecoveryFromLocalCopy emChangeWorkAccessType emChangeEncodeTypeToCertificate emChangeEncodeTypeToPassword emChangeEncodeTypeToNone emChangeEncodeTypeToCertificatePassword emChangeStandardRoute emGetText emOpenForView emMoveToStorage emCreateObject emChangeVersionHidden emDeleteVersion emChangeLifeCycleStage emApprovingSign emExport emContinue emLockFromEdit emUnLockForEdit emLockForServer emUnlockFromServer emDelegateAccessRights emReEncode ecotFile ecotProcess eaGet eaCopy eaCreate eaCreateStandardRoute edltAll edltNothing edltQuery essmText essmCard esvtLast esvtLastActive esvtSpecified edsfExecutive edsfArchive edstSQLServer edstFile edvstNone edvstEDocumentVersionCopy edvstFile edvstTemplate edvstScannedFile vsDefault vsDesign vsActive vsObsolete etNone etCertificate etPassword etCertificatePassword ecException ecWarning ecInformation estAll estApprovingOnly evtLast evtLastActive evtQuery fdtString fdtNumeric fdtInteger fdtDate fdtText fdtUnknown fdtWideString fdtLargeInteger ftInbox ftOutbox ftFavorites ftCommonFolder ftUserFolder ftComponents ftQuickLaunch ftShortcuts ftSearch grhAuto grhX1 grhX2 grhX3 hltText hltRTF hltHTML iffBMP iffJPEG iffMultiPageTIFF iffSinglePageTIFF iffTIFF iffPNG im8bGrayscale im24bRGB im1bMonochrome itBMP itJPEG itWMF itPNG ikhInformation ikhWarning ikhError ikhNoIcon icUnknown icScript icFunction icIntegratedReport icAnalyticReport icDataSetEventHandler icActionHandler icFormEventHandler icLookUpEventHandler icRequisiteChangeEventHandler icBeforeSearchEventHandler icRoleCalculation icSelectRouteEventHandler icBlockPropertyCalculation icBlockQueryParamsEventHandler icChangeSearchResultEventHandler icBlockEventHandler icSubTaskInitEventHandler icEDocDataSetEventHandler icEDocLookUpEventHandler icEDocActionHandler icEDocFormEventHandler icEDocRequisiteChangeEventHandler icStructuredConversionRule icStructuredConversionEventBefore icStructuredConversionEventAfter icWizardEventHandler icWizardFinishEventHandler icWizardStepEventHandler icWizardStepFinishEventHandler icWizardActionEnableEventHandler icWizardActionExecuteEventHandler icCreateJobsHandler icCreateNoticesHandler icBeforeLookUpEventHandler icAfterLookUpEventHandler icTaskAbortEventHandler icWorkflowBlockActionHandler icDialogDataSetEventHandler icDialogActionHandler icDialogLookUpEventHandler icDialogRequisiteChangeEventHandler icDialogFormEventHandler icDialogValidCloseEventHandler icBlockFormEventHandler icTaskFormEventHandler icReferenceMethod icEDocMethod icDialogMethod icProcessMessageHandler isShow isHide isByUserSettings jkJob jkNotice jkControlJob jtInner jtLeft jtRight jtFull jtCross lbpAbove lbpBelow lbpLeft lbpRight eltPerConnection eltPerUser sfcUndefined sfcBlack sfcGreen sfcRed sfcBlue sfcOrange sfcLilac sfsItalic sfsStrikeout sfsNormal ldctStandardRoute ldctWizard ldctScript ldctFunction ldctRouteBlock ldctIntegratedReport ldctAnalyticReport ldctReferenceType ldctEDocumentType ldctDialog ldctServerEvents mrcrtNone mrcrtUser mrcrtMaximal mrcrtCustom vtEqual vtGreaterOrEqual vtLessOrEqual vtRange rdYesterday rdToday rdTomorrow rdThisWeek rdThisMonth rdThisYear rdNextMonth rdNextWeek rdLastWeek rdLastMonth rdWindow rdFile rdPrinter rdtString rdtNumeric rdtInteger rdtDate rdtReference rdtAccount rdtText rdtPick rdtUnknown rdtLargeInteger rdtDocument reOnChange reOnChangeValues ttGlobal ttLocal ttUser ttSystem ssmBrowse ssmSelect ssmMultiSelect ssmBrowseModal smSelect smLike smCard stNone stAuthenticating stApproving sctString sctStream sstAnsiSort sstNaturalSort svtEqual svtContain soatString soatNumeric soatInteger soatDatetime soatReferenceRecord soatText soatPick soatBoolean soatEDocument soatAccount soatIntegerCollection soatNumericCollection soatStringCollection soatPickCollection soatDatetimeCollection soatBooleanCollection soatReferenceRecordCollection soatEDocumentCollection soatAccountCollection soatContents soatUnknown tarAbortByUser tarAbortByWorkflowException tvtAllWords tvtExactPhrase tvtAnyWord usNone usCompleted usRedSquare usBlueSquare usYellowSquare usGreenSquare usOrangeSquare usPurpleSquare usFollowUp utUnknown utUser utDeveloper utAdministrator utSystemDeveloper utDisconnected btAnd btDetailAnd btOr btNotOr btOnly vmView vmSelect vmNavigation vsmSingle vsmMultiple vsmMultipleCheck vsmNoSelection wfatPrevious wfatNext wfatCancel wfatFinish wfepUndefined wfepText3 wfepText6 wfepText9 wfepSpinEdit wfepDropDown wfepRadioGroup wfepFlag wfepText12 wfepText15 wfepText18 wfepText21 wfepText24 wfepText27 wfepText30 wfepRadioGroupColumn1 wfepRadioGroupColumn2 wfepRadioGroupColumn3 wfetQueryParameter wfetText wfetDelimiter wfetLabel wptString wptInteger wptNumeric wptBoolean wptDateTime wptPick wptText wptUser wptUserList wptEDocumentInfo wptEDocumentInfoList wptReferenceRecordInfo wptReferenceRecordInfoList wptFolderInfo wptTaskInfo wptContents wptFileName wptDate wsrComplete wsrGoNext wsrGoPrevious wsrCustom wsrCancel wsrGoFinal wstForm wstEDocument wstTaskCard wstReferenceRecordCard wstFinal waAll waPerformers waManual wsbStart wsbFinish wsbNotice wsbStep wsbDecision wsbWait wsbMonitor wsbScript wsbConnector wsbSubTask wsbLifeCycleStage wsbPause wdtInteger wdtFloat wdtString wdtPick wdtDateTime wdtBoolean wdtTask wdtJob wdtFolder wdtEDocument wdtReferenceRecord wdtUser wdtGroup wdtRole wdtIntegerCollection wdtFloatCollection wdtStringCollection wdtPickCollection wdtDateTimeCollection wdtBooleanCollection wdtTaskCollection wdtJobCollection wdtFolderCollection wdtEDocumentCollection wdtReferenceRecordCollection wdtUserCollection wdtGroupCollection wdtRoleCollection wdtContents wdtUserList wdtSearchDescription wdtDeadLine wdtPickSet wdtAccountCollection wiLow wiNormal wiHigh wrtSoft wrtHard wsInit wsRunning wsDone wsControlled wsAborted wsContinued wtmFull wtmFromCurrent wtmOnlyCurrent ",
+class:"AltState Application CallType ComponentTokens CreatedJobs CreatedNotices ControlState DialogResult Dialogs EDocuments EDocumentVersionSource Folders GlobalIDs Job Jobs InputValue LookUpReference LookUpRequisiteNames LookUpSearch Object ParentComponent Processes References Requisite ReportName Reports Result Scripts Searches SelectedAttachments SelectedItems SelectMode Sender ServerEvents ServiceFactory ShiftState SubTask SystemDialogs Tasks Wizard Wizards Work \u0412\u044b\u0437\u043e\u0432\u0421\u043f\u043e\u0441\u043e\u0431 \u0418\u043c\u044f\u041e\u0442\u0447\u0435\u0442\u0430 \u0420\u0435\u043a\u0432\u0417\u043d\u0430\u0447 ",
+literal:"null true false nil "},I={begin:"\\.\\s*"+S.UNDERSCORE_IDENT_RE,
+keywords:C,relevance:0},N={className:"type",
+begin:":[ \\t]*(IApplication|IAccessRights|IAccountRepository|IAccountSelectionRestrictions|IAction|IActionList|IAdministrationHistoryDescription|IAnchors|IApplication|IArchiveInfo|IAttachment|IAttachmentList|ICheckListBox|ICheckPointedList|IColumn|IComponent|IComponentDescription|IComponentToken|IComponentTokenFactory|IComponentTokenInfo|ICompRecordInfo|IConnection|IContents|IControl|IControlJob|IControlJobInfo|IControlList|ICrypto|ICrypto2|ICustomJob|ICustomJobInfo|ICustomListBox|ICustomObjectWizardStep|ICustomWork|ICustomWorkInfo|IDataSet|IDataSetAccessInfo|IDataSigner|IDateCriterion|IDateRequisite|IDateRequisiteDescription|IDateValue|IDeaAccessRights|IDeaObjectInfo|IDevelopmentComponentLock|IDialog|IDialogFactory|IDialogPickRequisiteItems|IDialogsFactory|IDICSFactory|IDocRequisite|IDocumentInfo|IDualListDialog|IECertificate|IECertificateInfo|IECertificates|IEditControl|IEditorForm|IEdmsExplorer|IEdmsObject|IEdmsObjectDescription|IEdmsObjectFactory|IEdmsObjectInfo|IEDocument|IEDocumentAccessRights|IEDocumentDescription|IEDocumentEditor|IEDocumentFactory|IEDocumentInfo|IEDocumentStorage|IEDocumentVersion|IEDocumentVersionListDialog|IEDocumentVersionSource|IEDocumentWizardStep|IEDocVerSignature|IEDocVersionState|IEnabledMode|IEncodeProvider|IEncrypter|IEvent|IEventList|IException|IExternalEvents|IExternalHandler|IFactory|IField|IFileDialog|IFolder|IFolderDescription|IFolderDialog|IFolderFactory|IFolderInfo|IForEach|IForm|IFormTitle|IFormWizardStep|IGlobalIDFactory|IGlobalIDInfo|IGrid|IHasher|IHistoryDescription|IHyperLinkControl|IImageButton|IImageControl|IInnerPanel|IInplaceHint|IIntegerCriterion|IIntegerList|IIntegerRequisite|IIntegerValue|IISBLEditorForm|IJob|IJobDescription|IJobFactory|IJobForm|IJobInfo|ILabelControl|ILargeIntegerCriterion|ILargeIntegerRequisite|ILargeIntegerValue|ILicenseInfo|ILifeCycleStage|IList|IListBox|ILocalIDInfo|ILocalization|ILock|IMemoryDataSet|IMessagingFactory|IMetadataRepository|INotice|INoticeInfo|INumericCriterion|INumericRequisite|INumericValue|IObject|IObjectDescription|IObjectImporter|IObjectInfo|IObserver|IPanelGroup|IPickCriterion|IPickProperty|IPickRequisite|IPickRequisiteDescription|IPickRequisiteItem|IPickRequisiteItems|IPickValue|IPrivilege|IPrivilegeList|IProcess|IProcessFactory|IProcessMessage|IProgress|IProperty|IPropertyChangeEvent|IQuery|IReference|IReferenceCriterion|IReferenceEnabledMode|IReferenceFactory|IReferenceHistoryDescription|IReferenceInfo|IReferenceRecordCardWizardStep|IReferenceRequisiteDescription|IReferencesFactory|IReferenceValue|IRefRequisite|IReport|IReportFactory|IRequisite|IRequisiteDescription|IRequisiteDescriptionList|IRequisiteFactory|IRichEdit|IRouteStep|IRule|IRuleList|ISchemeBlock|IScript|IScriptFactory|ISearchCriteria|ISearchCriterion|ISearchDescription|ISearchFactory|ISearchFolderInfo|ISearchForObjectDescription|ISearchResultRestrictions|ISecuredContext|ISelectDialog|IServerEvent|IServerEventFactory|IServiceDialog|IServiceFactory|ISignature|ISignProvider|ISignProvider2|ISignProvider3|ISimpleCriterion|IStringCriterion|IStringList|IStringRequisite|IStringRequisiteDescription|IStringValue|ISystemDialogsFactory|ISystemInfo|ITabSheet|ITask|ITaskAbortReasonInfo|ITaskCardWizardStep|ITaskDescription|ITaskFactory|ITaskInfo|ITaskRoute|ITextCriterion|ITextRequisite|ITextValue|ITreeListSelectDialog|IUser|IUserList|IValue|IView|IWebBrowserControl|IWizard|IWizardAction|IWizardFactory|IWizardFormElement|IWizardParam|IWizardPickParam|IWizardReferenceParam|IWizardStep|IWorkAccessRights|IWorkDescription|IWorkflowAskableParam|IWorkflowAskableParams|IWorkflowBlock|IWorkflowBlockResult|IWorkflowEnabledMode|IWorkflowParam|IWorkflowPickParam|IWorkflowReferenceParam|IWorkState|IWorkTreeCustomNode|IWorkTreeJobNode|IWorkTreeTaskNode|IXMLEditorForm|SBCrypto)",
+end:"[ \\t]*=",excludeEnd:!0},A={className:"variable",keywords:C,begin:E,
+relevance:0,contains:[N,I]
+},e="[A-Za-z\u0410-\u042f\u0430-\u044f\u0451\u0401_][A-Za-z\u0410-\u042f\u0430-\u044f\u0451\u0401_0-9]*\\("
+;return{name:"ISBL",case_insensitive:!0,keywords:C,
+illegal:"\\$|\\?|%|,|;$|~|#|@|</",contains:[{className:"function",begin:e,
+end:"\\)$",returnBegin:!0,keywords:C,illegal:"[\\[\\]\\|\\$\\?%,~#@]",
+contains:[{className:"title",keywords:{$pattern:E,
+built_in:"AddSubString AdjustLineBreaks AmountInWords Analysis ArrayDimCount ArrayHighBound ArrayLowBound ArrayOf ArrayReDim Assert Assigned BeginOfMonth BeginOfPeriod BuildProfilingOperationAnalysis CallProcedure CanReadFile CArrayElement CDataSetRequisite ChangeDate ChangeReferenceDataset Char CharPos CheckParam CheckParamValue CompareStrings ConstantExists ControlState ConvertDateStr Copy CopyFile CreateArray CreateCachedReference CreateConnection CreateDialog CreateDualListDialog CreateEditor CreateException CreateFile CreateFolderDialog CreateInputDialog CreateLinkFile CreateList CreateLock CreateMemoryDataSet CreateObject CreateOpenDialog CreateProgress CreateQuery CreateReference CreateReport CreateSaveDialog CreateScript CreateSQLPivotFunction CreateStringList CreateTreeListSelectDialog CSelectSQL CSQL CSubString CurrentUserID CurrentUserName CurrentVersion DataSetLocateEx DateDiff DateTimeDiff DateToStr DayOfWeek DeleteFile DirectoryExists DisableCheckAccessRights DisableCheckFullShowingRestriction DisableMassTaskSendingRestrictions DropTable DupeString EditText EnableCheckAccessRights EnableCheckFullShowingRestriction EnableMassTaskSendingRestrictions EndOfMonth EndOfPeriod ExceptionExists ExceptionsOff ExceptionsOn Execute ExecuteProcess Exit ExpandEnvironmentVariables ExtractFileDrive ExtractFileExt ExtractFileName ExtractFilePath ExtractParams FileExists FileSize FindFile FindSubString FirmContext ForceDirectories Format FormatDate FormatNumeric FormatSQLDate FormatString FreeException GetComponent GetComponentLaunchParam GetConstant GetLastException GetReferenceRecord GetRefTypeByRefID GetTableID GetTempFolder IfThen In IndexOf InputDialog InputDialogEx InteractiveMode IsFileLocked IsGraphicFile IsNumeric Length LoadString LoadStringFmt LocalTimeToUTC LowerCase Max MessageBox MessageBoxEx MimeDecodeBinary MimeDecodeString MimeEncodeBinary MimeEncodeString Min MoneyInWords MoveFile NewID Now OpenFile Ord Precision Raise ReadCertificateFromFile ReadFile ReferenceCodeByID ReferenceNumber ReferenceRequisiteMode ReferenceRequisiteValue RegionDateSettings RegionNumberSettings RegionTimeSettings RegRead RegWrite RenameFile Replace Round SelectServerCode SelectSQL ServerDateTime SetConstant SetManagedFolderFieldsState ShowConstantsInputDialog ShowMessage Sleep Split SQL SQL2XLSTAB SQLProfilingSendReport StrToDate SubString SubStringCount SystemSetting Time TimeDiff Today Transliterate Trim UpperCase UserStatus UTCToLocalTime ValidateXML VarIsClear VarIsEmpty VarIsNull WorkTimeDiff WriteFile WriteFileEx WriteObjectHistory \u0410\u043d\u0430\u043b\u0438\u0437 \u0411\u0430\u0437\u0430\u0414\u0430\u043d\u043d\u044b\u0445 \u0411\u043b\u043e\u043a\u0415\u0441\u0442\u044c \u0411\u043b\u043e\u043a\u0415\u0441\u0442\u044c\u0420\u0430\u0441\u0448 \u0411\u043b\u043e\u043a\u0418\u043d\u0444\u043e \u0411\u043b\u043e\u043a\u0421\u043d\u044f\u0442\u044c \u0411\u043b\u043e\u043a\u0421\u043d\u044f\u0442\u044c\u0420\u0430\u0441\u0448 \u0411\u043b\u043e\u043a\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0412\u0432\u043e\u0434 \u0412\u0432\u043e\u0434\u041c\u0435\u043d\u044e \u0412\u0435\u0434\u0421 \u0412\u0435\u0434\u0421\u043f\u0440 \u0412\u0435\u0440\u0445\u043d\u044f\u044f\u0413\u0440\u0430\u043d\u0438\u0446\u0430\u041c\u0430\u0441\u0441\u0438\u0432\u0430 \u0412\u043d\u0435\u0448\u041f\u0440\u043e\u0433\u0440 \u0412\u043e\u0441\u0441\u0442 \u0412\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f\u041f\u0430\u043f\u043a\u0430 \u0412\u0440\u0435\u043c\u044f \u0412\u044b\u0431\u043e\u0440SQL \u0412\u044b\u0431\u0440\u0430\u0442\u044c\u0417\u0430\u043f\u0438\u0441\u044c \u0412\u044b\u0434\u0435\u043b\u0438\u0442\u044c\u0421\u0442\u0440 \u0412\u044b\u0437\u0432\u0430\u0442\u044c \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0412\u044b\u043f\u041f\u0440\u043e\u0433\u0440 \u0413\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439\u0424\u0430\u0439\u043b \u0413\u0440\u0443\u043f\u043f\u0430\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0414\u0430\u0442\u0430\u0412\u0440\u0435\u043c\u044f\u0421\u0435\u0440\u0432 \u0414\u0435\u043d\u044c\u041d\u0435\u0434\u0435\u043b\u0438 \u0414\u0438\u0430\u043b\u043e\u0433\u0414\u0430\u041d\u0435\u0442 \u0414\u043b\u0438\u043d\u0430\u0421\u0442\u0440 \u0414\u043e\u0431\u041f\u043e\u0434\u0441\u0442\u0440 \u0415\u041f\u0443\u0441\u0442\u043e \u0415\u0441\u043b\u0438\u0422\u043e \u0415\u0427\u0438\u0441\u043b\u043e \u0417\u0430\u043c\u041f\u043e\u0434\u0441\u0442\u0440 \u0417\u0430\u043f\u0438\u0441\u044c\u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430 \u0417\u043d\u0430\u0447\u041f\u043e\u043b\u044f\u0421\u043f\u0440 \u0418\u0414\u0422\u0438\u043f\u0421\u043f\u0440 \u0418\u0437\u0432\u043b\u0435\u0447\u044c\u0414\u0438\u0441\u043a \u0418\u0437\u0432\u043b\u0435\u0447\u044c\u0418\u043c\u044f\u0424\u0430\u0439\u043b\u0430 \u0418\u0437\u0432\u043b\u0435\u0447\u044c\u041f\u0443\u0442\u044c \u0418\u0437\u0432\u043b\u0435\u0447\u044c\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0418\u0437\u043c\u0414\u0430\u0442 \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0420\u0430\u0437\u043c\u0435\u0440\u041c\u0430\u0441\u0441\u0438\u0432\u0430 \u0418\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439\u041c\u0430\u0441\u0441\u0438\u0432\u0430 \u0418\u043c\u044f\u041e\u0440\u0433 \u0418\u043c\u044f\u041f\u043e\u043b\u044f\u0421\u043f\u0440 \u0418\u043d\u0434\u0435\u043a\u0441 \u0418\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0417\u0430\u043a\u0440\u044b\u0442\u044c \u0418\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0418\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0428\u0430\u0433 \u0418\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439\u0420\u0435\u0436\u0438\u043c \u0418\u0442\u043e\u0433\u0422\u0431\u043b\u0421\u043f\u0440 \u041a\u043e\u0434\u0412\u0438\u0434\u0412\u0435\u0434\u0421\u043f\u0440 \u041a\u043e\u0434\u0412\u0438\u0434\u0421\u043f\u0440\u041f\u043e\u0418\u0414 \u041a\u043e\u0434\u041f\u043eAnalit \u041a\u043e\u0434\u0421\u0438\u043c\u0432\u043e\u043b\u0430 \u041a\u043e\u0434\u0421\u043f\u0440 \u041a\u043e\u043b\u041f\u043e\u0434\u0441\u0442\u0440 \u041a\u043e\u043b\u041f\u0440\u043e\u043f \u041a\u043e\u043d\u041c\u0435\u0441 \u041a\u043e\u043d\u0441\u0442 \u041a\u043e\u043d\u0441\u0442\u0415\u0441\u0442\u044c \u041a\u043e\u043d\u0441\u0442\u0417\u043d\u0430\u0447 \u041a\u043e\u043d\u0422\u0440\u0430\u043d \u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0424\u0430\u0439\u043b \u041a\u043e\u043f\u0438\u044f\u0421\u0442\u0440 \u041a\u041f\u0435\u0440\u0438\u043e\u0434 \u041a\u0421\u0442\u0440\u0422\u0431\u043b\u0421\u043f\u0440 \u041c\u0430\u043a\u0441 \u041c\u0430\u043a\u0441\u0421\u0442\u0440\u0422\u0431\u043b\u0421\u043f\u0440 \u041c\u0430\u0441\u0441\u0438\u0432 \u041c\u0435\u043d\u044e \u041c\u0435\u043d\u044e\u0420\u0430\u0441\u0448 \u041c\u0438\u043d \u041d\u0430\u0431\u043e\u0440\u0414\u0430\u043d\u043d\u044b\u0445\u041d\u0430\u0439\u0442\u0438\u0420\u0430\u0441\u0448 \u041d\u0430\u0438\u043c\u0412\u0438\u0434\u0421\u043f\u0440 \u041d\u0430\u0438\u043c\u041f\u043eAnalit \u041d\u0430\u0438\u043c\u0421\u043f\u0440 \u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c\u041f\u0435\u0440\u0435\u0432\u043e\u0434\u044b\u0421\u0442\u0440\u043e\u043a \u041d\u0430\u0447\u041c\u0435\u0441 \u041d\u0430\u0447\u0422\u0440\u0430\u043d \u041d\u0438\u0436\u043d\u044f\u044f\u0413\u0440\u0430\u043d\u0438\u0446\u0430\u041c\u0430\u0441\u0441\u0438\u0432\u0430 \u041d\u043e\u043c\u0435\u0440\u0421\u043f\u0440 \u041d\u041f\u0435\u0440\u0438\u043e\u0434 \u041e\u043a\u043d\u043e \u041e\u043a\u0440 \u041e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u041e\u0442\u043b\u0418\u043d\u0444\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u041e\u0442\u043b\u0418\u043d\u0444\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u041e\u0442\u0447\u0435\u0442 \u041e\u0442\u0447\u0435\u0442\u0410\u043d\u0430\u043b \u041e\u0442\u0447\u0435\u0442\u0418\u043d\u0442 \u041f\u0430\u043f\u043a\u0430\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u041f\u0430\u0443\u0437\u0430 \u041f\u0412\u044b\u0431\u043e\u0440SQL \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c\u0424\u0430\u0439\u043b \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u041f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c\u0424\u0430\u0439\u043b \u041f\u043e\u0434\u0441\u0442\u0440 \u041f\u043e\u0438\u0441\u043a\u041f\u043e\u0434\u0441\u0442\u0440 \u041f\u043e\u0438\u0441\u043a\u0421\u0442\u0440 \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0418\u0414\u0422\u0430\u0431\u043b\u0438\u0446\u044b \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0418\u0414 \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0418\u043c\u044f \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0421\u0442\u0430\u0442\u0443\u0441 \u041f\u0440\u0435\u0440\u0432\u0430\u0442\u044c \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0417\u043d\u0430\u0447 \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c\u0423\u0441\u043b\u043e\u0432\u0438\u0435 \u0420\u0430\u0437\u0431\u0421\u0442\u0440 \u0420\u0430\u0437\u043d\u0412\u0440\u0435\u043c\u044f \u0420\u0430\u0437\u043d\u0414\u0430\u0442 \u0420\u0430\u0437\u043d\u0414\u0430\u0442\u0430\u0412\u0440\u0435\u043c\u044f \u0420\u0430\u0437\u043d\u0420\u0430\u0431\u0412\u0440\u0435\u043c\u044f \u0420\u0435\u0433\u0423\u0441\u0442\u0412\u0440\u0435\u043c \u0420\u0435\u0433\u0423\u0441\u0442\u0414\u0430\u0442 \u0420\u0435\u0433\u0423\u0441\u0442\u0427\u0441\u043b \u0420\u0435\u0434\u0422\u0435\u043a\u0441\u0442 \u0420\u0435\u0435\u0441\u0442\u0440\u0417\u0430\u043f\u0438\u0441\u044c \u0420\u0435\u0435\u0441\u0442\u0440\u0421\u043f\u0438\u0441\u043e\u043a\u0418\u043c\u0435\u043d\u041f\u0430\u0440\u0430\u043c \u0420\u0435\u0435\u0441\u0442\u0440\u0427\u0442\u0435\u043d\u0438\u0435 \u0420\u0435\u043a\u0432\u0421\u043f\u0440 \u0420\u0435\u043a\u0432\u0421\u043f\u0440\u041f\u0440 \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0421\u0435\u0439\u0447\u0430\u0441 \u0421\u0435\u0440\u0432\u0435\u0440 \u0421\u0435\u0440\u0432\u0435\u0440\u041f\u0440\u043e\u0446\u0435\u0441\u0441\u0418\u0414 \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0424\u0430\u0439\u043b\u0421\u0447\u0438\u0442\u0430\u0442\u044c \u0421\u0436\u041f\u0440\u043e\u0431 \u0421\u0438\u043c\u0432\u043e\u043b \u0421\u0438\u0441\u0442\u0435\u043c\u0430\u0414\u0438\u0440\u0435\u043a\u0442\u0443\u043c\u041a\u043e\u0434 \u0421\u0438\u0441\u0442\u0435\u043c\u0430\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0421\u0438\u0441\u0442\u0435\u043c\u0430\u041a\u043e\u0434 \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435\u0417\u0430\u043a\u0440\u044b\u0442\u044c \u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0414\u0438\u0430\u043b\u043e\u0433 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0414\u0438\u0430\u043b\u043e\u0433\u0412\u044b\u0431\u043e\u0440\u0430\u0418\u0437\u0414\u0432\u0443\u0445\u0421\u043f\u0438\u0441\u043a\u043e\u0432 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0414\u0438\u0430\u043b\u043e\u0433\u0412\u044b\u0431\u043e\u0440\u0430\u041f\u0430\u043f\u043a\u0438 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0414\u0438\u0430\u043b\u043e\u0433\u041e\u0442\u043a\u0440\u044b\u0442\u0438\u044f\u0424\u0430\u0439\u043b\u0430 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0414\u0438\u0430\u043b\u043e\u0433\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f\u0424\u0430\u0439\u043b\u0430 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0417\u0430\u043f\u0440\u043e\u0441 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0418\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u041a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439\u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u041c\u0430\u0441\u0441\u0438\u0432 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u041d\u0430\u0431\u043e\u0440\u0414\u0430\u043d\u043d\u044b\u0445 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u041e\u0431\u044a\u0435\u043a\u0442 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u041e\u0442\u0447\u0435\u0442 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u041f\u0430\u043f\u043a\u0443 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0421\u043f\u0438\u0441\u043e\u043a \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0421\u043f\u0438\u0441\u043e\u043a\u0421\u0442\u0440\u043e\u043a \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u0421\u043e\u0437\u0434\u0430\u0442\u044c\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0421\u043e\u0437\u0434\u0421\u043f\u0440 \u0421\u043e\u0441\u0442\u0421\u043f\u0440 \u0421\u043e\u0445\u0440 \u0421\u043e\u0445\u0440\u0421\u043f\u0440 \u0421\u043f\u0438\u0441\u043e\u043a\u0421\u0438\u0441\u0442\u0435\u043c \u0421\u043f\u0440 \u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a \u0421\u043f\u0440\u0411\u043b\u043e\u043a\u0415\u0441\u0442\u044c \u0421\u043f\u0440\u0411\u043b\u043e\u043a\u0421\u043d\u044f\u0442\u044c \u0421\u043f\u0440\u0411\u043b\u043e\u043a\u0421\u043d\u044f\u0442\u044c\u0420\u0430\u0441\u0448 \u0421\u043f\u0440\u0411\u043b\u043e\u043a\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0421\u043f\u0440\u0418\u0437\u043c\u041d\u0430\u0431\u0414\u0430\u043d \u0421\u043f\u0440\u041a\u043e\u0434 \u0421\u043f\u0440\u041d\u043e\u043c\u0435\u0440 \u0421\u043f\u0440\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0421\u043f\u0440\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0421\u043f\u0440\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0421\u043f\u0440\u041f\u0430\u0440\u0430\u043c \u0421\u043f\u0440\u041f\u043e\u043b\u0435\u0417\u043d\u0430\u0447 \u0421\u043f\u0440\u041f\u043e\u043b\u0435\u0418\u043c\u044f \u0421\u043f\u0440\u0420\u0435\u043a\u0432 \u0421\u043f\u0440\u0420\u0435\u043a\u0432\u0412\u0432\u0435\u0434\u0417\u043d \u0421\u043f\u0440\u0420\u0435\u043a\u0432\u041d\u043e\u0432\u044b\u0435 \u0421\u043f\u0440\u0420\u0435\u043a\u0432\u041f\u0440 \u0421\u043f\u0440\u0420\u0435\u043a\u0432\u041f\u0440\u0435\u0434\u0417\u043d \u0421\u043f\u0440\u0420\u0435\u043a\u0432\u0420\u0435\u0436\u0438\u043c \u0421\u043f\u0440\u0420\u0435\u043a\u0432\u0422\u0438\u043f\u0422\u0435\u043a\u0441\u0442 \u0421\u043f\u0440\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0421\u043f\u0440\u0421\u043e\u0441\u0442 \u0421\u043f\u0440\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0421\u043f\u0440\u0422\u0431\u043b\u0418\u0442\u043e\u0433 \u0421\u043f\u0440\u0422\u0431\u043b\u0421\u0442\u0440 \u0421\u043f\u0440\u0422\u0431\u043b\u0421\u0442\u0440\u041a\u043e\u043b \u0421\u043f\u0440\u0422\u0431\u043b\u0421\u0442\u0440\u041c\u0430\u043a\u0441 \u0421\u043f\u0440\u0422\u0431\u043b\u0421\u0442\u0440\u041c\u0438\u043d \u0421\u043f\u0440\u0422\u0431\u043b\u0421\u0442\u0440\u041f\u0440\u0435\u0434 \u0421\u043f\u0440\u0422\u0431\u043b\u0421\u0442\u0440\u0421\u043b\u0435\u0434 \u0421\u043f\u0440\u0422\u0431\u043b\u0421\u0442\u0440\u0421\u043e\u0437\u0434 \u0421\u043f\u0440\u0422\u0431\u043b\u0421\u0442\u0440\u0423\u0434 \u0421\u043f\u0440\u0422\u0435\u043a\u041f\u0440\u0435\u0434\u0441\u0442 \u0421\u043f\u0440\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0421\u0440\u0430\u0432\u043d\u0438\u0442\u044c\u0421\u0442\u0440 \u0421\u0442\u0440\u0412\u0435\u0440\u0445\u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u0421\u0442\u0440\u041d\u0438\u0436\u043d\u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u0421\u0442\u0440\u0422\u0431\u043b\u0421\u043f\u0440 \u0421\u0443\u043c\u041f\u0440\u043e\u043f \u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439\u041f\u0430\u0440\u0430\u043c \u0422\u0435\u043a\u0412\u0435\u0440\u0441\u0438\u044f \u0422\u0435\u043a\u041e\u0440\u0433 \u0422\u043e\u0447\u043d \u0422\u0440\u0430\u043d \u0422\u0440\u0430\u043d\u0441\u043b\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u0423\u0434\u0430\u043b\u0438\u0442\u044c\u0422\u0430\u0431\u043b\u0438\u0446\u0443 \u0423\u0434\u0430\u043b\u0438\u0442\u044c\u0424\u0430\u0439\u043b \u0423\u0434\u0421\u043f\u0440 \u0423\u0434\u0421\u0442\u0440\u0422\u0431\u043b\u0421\u043f\u0440 \u0423\u0441\u0442 \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438\u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u0424\u0430\u0439\u043b\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u0421\u0447\u0438\u0442\u0430\u0442\u044c \u0424\u0430\u0439\u043b\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0424\u0430\u0439\u043b\u0412\u0440\u0435\u043c\u044f \u0424\u0430\u0439\u043b\u0412\u0440\u0435\u043c\u044f\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0424\u0430\u0439\u043b\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0424\u0430\u0439\u043b\u0417\u0430\u043d\u044f\u0442 \u0424\u0430\u0439\u043b\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0424\u0430\u0439\u043b\u0418\u0441\u043a\u0430\u0442\u044c \u0424\u0430\u0439\u043b\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0424\u0430\u0439\u043b\u041c\u043e\u0436\u043d\u043e\u0427\u0438\u0442\u0430\u0442\u044c \u0424\u0430\u0439\u043b\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0424\u0430\u0439\u043b\u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u0424\u0430\u0439\u043b\u041f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0424\u0430\u0439\u043b\u041f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0424\u0430\u0439\u043b\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0424\u0430\u0439\u043b\u0420\u0430\u0437\u043c\u0435\u0440 \u0424\u0430\u0439\u043b\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0424\u0430\u0439\u043b\u0421\u0441\u044b\u043b\u043a\u0430\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0424\u0430\u0439\u043b\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0424\u0430\u0439\u043b\u0421\u0447\u0438\u0442\u0430\u0442\u044c \u0424\u0430\u0439\u043b\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0424\u043c\u0442SQL\u0414\u0430\u0442 \u0424\u043c\u0442\u0414\u0430\u0442 \u0424\u043c\u0442\u0421\u0442\u0440 \u0424\u043c\u0442\u0427\u0441\u043b \u0424\u043e\u0440\u043c\u0430\u0442 \u0426\u041c\u0430\u0441\u0441\u0438\u0432\u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u0426\u041d\u0430\u0431\u043e\u0440\u0414\u0430\u043d\u043d\u044b\u0445\u0420\u0435\u043a\u0432\u0438\u0437\u0438\u0442 \u0426\u041f\u043e\u0434\u0441\u0442\u0440 "
+},begin:e,end:"\\(",returnBegin:!0,excludeEnd:!0},I,A,T,_,O]},N,I,A,T,_,O]}}})()
+;hljs.registerLanguage("isbl",S)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/java.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/java.min.js
new file mode 100644
index 0000000..fe4abda
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/java.min.js
@@ -0,0 +1,37 @@
+/*! `java` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict"
+;var e="\\.([0-9](_*[0-9])*)",a="[0-9a-fA-F](_*[0-9a-fA-F])*",n={
+className:"number",variants:[{
+begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b`
+},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{
+begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{
+begin:`\\b0[xX]((${a})\\.?|(${a})?\\.(${a}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b`
+},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${a})[lL]?\\b`},{
+begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],
+relevance:0};function s(e,a,n){return-1===n?"":e.replace(a,(t=>s(e,a,n-1)))}
+return e=>{e.regex
+;const a="[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*",t=a+s("(?:<"+a+"~~~(?:\\s*,\\s*"+a+"~~~)*>)?",/~~~/g,2),i={
+keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do"],
+literal:["false","true","null"],
+type:["char","boolean","long","float","int","byte","short","double"],
+built_in:["super","this"]},r={className:"meta",begin:"@"+a,contains:[{
+begin:/\(/,end:/\)/,contains:["self"]}]},l={className:"params",begin:/\(/,
+end:/\)/,keywords:i,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0}
+;return{name:"Java",aliases:["jsp"],keywords:i,illegal:/<\/|#/,
+contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,
+relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{
+begin:/import java\.[a-z]+\./,keywords:"import",relevance:2
+},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,
+className:"string",contains:[e.BACKSLASH_ESCAPE]
+},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{
+match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,a],className:{
+1:"keyword",3:"title.class"}},{begin:[a,/\s+/,a,/\s+/,/=/],className:{1:"type",
+3:"variable",5:"operator"}},{begin:[/record/,/\s+/,a],className:{1:"keyword",
+3:"title.class"},contains:[l,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{
+beginKeywords:"new throw return else",relevance:0},{
+begin:["(?:"+t+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{
+2:"title.function"},keywords:i,contains:[{className:"params",begin:/\(/,
+end:/\)/,keywords:i,relevance:0,
+contains:[r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,n,e.C_BLOCK_COMMENT_MODE]
+},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,r]}}})()
+;hljs.registerLanguage("java",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/javascript.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/javascript.min.js
new file mode 100644
index 0000000..e2d66b7
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/javascript.min.js
@@ -0,0 +1,76 @@
+/*! `javascript` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict"
+;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],a=["true","false","null","undefined","NaN","Infinity"],t=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],s=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],r=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],c=["arguments","this","super","console","window","document","localStorage","module","global"],i=[].concat(r,t,s)
+;return o=>{const l=o.regex,b=e,d={begin:/<[A-Za-z0-9\\._:-]+/,
+end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{
+const a=e[0].length+e.index,t=e.input[a]
+;if("<"===t||","===t)return void n.ignoreMatch();let s
+;">"===t&&(((e,{after:n})=>{const a="</"+e[0].slice(1)
+;return-1!==e.input.indexOf(a,n)})(e,{after:a
+})||n.ignoreMatch()),(s=e.input.substr(a).match(/^\s+extends\s+/))&&0===s.index&&n.ignoreMatch()
+}},g={$pattern:e,keyword:n,literal:a,built_in:i,"variable.language":c
+},u="\\.([0-9](_?[0-9])*)",m="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",E={
+className:"number",variants:[{
+begin:`(\\b(${m})((${u})|\\.)?|(${u}))[eE][+-]?([0-9](_?[0-9])*)\\b`},{
+begin:`\\b(${m})\\b((${u})\\b|\\.)?|(${u})\\b`},{
+begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{
+begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{
+begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{
+begin:"\\b0[0-7]+n?\\b"}],relevance:0},A={className:"subst",begin:"\\$\\{",
+end:"\\}",keywords:g,contains:[]},y={begin:"html`",end:"",starts:{end:"`",
+returnEnd:!1,contains:[o.BACKSLASH_ESCAPE,A],subLanguage:"xml"}},N={
+begin:"css`",end:"",starts:{end:"`",returnEnd:!1,
+contains:[o.BACKSLASH_ESCAPE,A],subLanguage:"css"}},_={className:"string",
+begin:"`",end:"`",contains:[o.BACKSLASH_ESCAPE,A]},f={className:"comment",
+variants:[o.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{
+begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",
+begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,
+excludeBegin:!0,relevance:0},{className:"variable",begin:b+"(?=\\s*(-)|$)",
+endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]
+}),o.C_BLOCK_COMMENT_MODE,o.C_LINE_COMMENT_MODE]
+},h=[o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,y,N,_,E];A.contains=h.concat({
+begin:/\{/,end:/\}/,keywords:g,contains:["self"].concat(h)})
+;const v=[].concat(f,A.contains),p=v.concat([{begin:/\(/,end:/\)/,keywords:g,
+contains:["self"].concat(v)}]),S={className:"params",begin:/\(/,end:/\)/,
+excludeBegin:!0,excludeEnd:!0,keywords:g,contains:p},w={variants:[{
+match:[/class/,/\s+/,b,/\s+/,/extends/,/\s+/,l.concat(b,"(",l.concat(/\./,b),")*")],
+scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{
+match:[/class/,/\s+/,b],scope:{1:"keyword",3:"title.class"}}]},R={relevance:0,
+match:l.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]+|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+/),
+className:"title.class",keywords:{_:[...t,...s]}},O={variants:[{
+match:[/function/,/\s+/,b,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],
+className:{1:"keyword",3:"title.function"},label:"func.def",contains:[S],
+illegal:/%/},I={
+match:l.concat(/\b/,(k=[...r,"super"],l.concat("(?!",k.join("|"),")")),b,l.lookahead(/\(/)),
+className:"title.function",relevance:0};var k;const x={
+begin:l.concat(/\./,l.lookahead(l.concat(b,/(?![0-9A-Za-z$_(])/))),end:b,
+excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},T={
+match:[/get|set/,/\s+/,b,/(?=\()/],className:{1:"keyword",3:"title.function"},
+contains:[{begin:/\(\)/},S]
+},C="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+o.UNDERSCORE_IDENT_RE+")\\s*=>",M={
+match:[/const|var|let/,/\s+/,b,/\s*/,/=\s*/,l.lookahead(C)],className:{
+1:"keyword",3:"title.function"},contains:[S]};return{name:"Javascript",
+aliases:["js","jsx","mjs","cjs"],keywords:g,exports:{PARAMS_CONTAINS:p,
+CLASS_REFERENCE:R},illegal:/#(?![$_A-z])/,contains:[o.SHEBANG({label:"shebang",
+binary:"node",relevance:5}),{label:"use_strict",className:"meta",relevance:10,
+begin:/^\s*['"]use (strict|asm)['"]/
+},o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,y,N,_,f,E,R,{className:"attr",
+begin:b+l.lookahead(":"),relevance:0},M,{
+begin:"("+o.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",
+keywords:"return throw case",relevance:0,contains:[f,o.REGEXP_MODE,{
+className:"function",begin:C,returnBegin:!0,end:"\\s*=>",contains:[{
+className:"params",variants:[{begin:o.UNDERSCORE_IDENT_RE,relevance:0},{
+className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,
+excludeEnd:!0,keywords:g,contains:p}]}]},{begin:/,/,relevance:0},{match:/\s+/,
+relevance:0},{variants:[{begin:"<>",end:"</>"},{
+match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:d.begin,
+"on:begin":d.isTrulyOpeningTag,end:d.end}],subLanguage:"xml",contains:[{
+begin:d.begin,end:d.end,skip:!0,contains:["self"]}]}]},O,{
+beginKeywords:"while if switch catch for"},{
+begin:"\\b(?!function)"+o.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",
+returnBegin:!0,label:"func.def",contains:[S,o.inherit(o.TITLE_MODE,{begin:b,
+className:"title.function"})]},{match:/\.\.\./,relevance:0},x,{match:"\\$"+b,
+relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},
+contains:[S]},I,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,
+className:"variable.constant"},w,T,{match:/\$[(.]/}]}}})()
+;hljs.registerLanguage("javascript",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/jboss-cli.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/jboss-cli.min.js
new file mode 100644
index 0000000..05527a4
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/jboss-cli.min.js
@@ -0,0 +1,10 @@
+/*! `jboss-cli` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"JBoss CLI",
+aliases:["wildfly-cli"],keywords:{$pattern:"[a-z-]+",
+keyword:"alias batch cd clear command connect connection-factory connection-info data-source deploy deployment-info deployment-overlay echo echo-dmr help history if jdbc-driver-info jms-queue|20 jms-topic|20 ls patch pwd quit read-attribute read-operation reload rollout-plan run-batch set shutdown try unalias undeploy unset version xa-data-source",
+literal:"true false"},contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,{
+className:"params",begin:/--[\w\-=\/]+/},{className:"function",
+begin:/:[\w\-.]+/,relevance:0},{className:"string",begin:/\B([\/.])[\w\-.\/=]+/
+},{className:"params",begin:/\(/,end:/\)/,contains:[{begin:/[\w-]+ *=/,
+returnBegin:!0,relevance:0,contains:[{className:"attr",begin:/[\w-]+/}]}],
+relevance:0}]})})();hljs.registerLanguage("jboss-cli",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/json.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/json.min.js
new file mode 100644
index 0000000..70b209b
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/json.min.js
@@ -0,0 +1,7 @@
+/*! `json` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"JSON",contains:[{
+className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},{
+match:/[{}[\],:]/,className:"punctuation",relevance:0},e.QUOTE_STRING_MODE,{
+beginKeywords:"true false null"
+},e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"})
+})();hljs.registerLanguage("json",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/julia-repl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/julia-repl.min.js
new file mode 100644
index 0000000..8642d61
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/julia-repl.min.js
@@ -0,0 +1,5 @@
+/*! `julia-repl` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var a=(()=>{"use strict";return a=>({name:"Julia REPL",contains:[{
+className:"meta",begin:/^julia>/,relevance:10,starts:{end:/^(?![ ]{6})/,
+subLanguage:"julia"},aliases:["jldoctest"]}]})})()
+;hljs.registerLanguage("julia-repl",a)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/julia.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/julia.min.js
new file mode 100644
index 0000000..ac75e5e
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/julia.min.js
@@ -0,0 +1,18 @@
+/*! `julia` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+var r="[A-Za-z_\\u00A1-\\uFFFF][A-Za-z_0-9\\u00A1-\\uFFFF]*",t={$pattern:r,
+keyword:["baremodule","begin","break","catch","ccall","const","continue","do","else","elseif","end","export","false","finally","for","function","global","if","import","in","isa","let","local","macro","module","quote","return","true","try","using","where","while"],
+literal:["ARGS","C_NULL","DEPOT_PATH","ENDIAN_BOM","ENV","Inf","Inf16","Inf32","Inf64","InsertionSort","LOAD_PATH","MergeSort","NaN","NaN16","NaN32","NaN64","PROGRAM_FILE","QuickSort","RoundDown","RoundFromZero","RoundNearest","RoundNearestTiesAway","RoundNearestTiesUp","RoundToZero","RoundUp","VERSION|0","devnull","false","im","missing","nothing","pi","stderr","stdin","stdout","true","undef","\u03c0","\u212f"],
+built_in:["AbstractArray","AbstractChannel","AbstractChar","AbstractDict","AbstractDisplay","AbstractFloat","AbstractIrrational","AbstractMatrix","AbstractRange","AbstractSet","AbstractString","AbstractUnitRange","AbstractVecOrMat","AbstractVector","Any","ArgumentError","Array","AssertionError","BigFloat","BigInt","BitArray","BitMatrix","BitSet","BitVector","Bool","BoundsError","CapturedException","CartesianIndex","CartesianIndices","Cchar","Cdouble","Cfloat","Channel","Char","Cint","Cintmax_t","Clong","Clonglong","Cmd","Colon","Complex","ComplexF16","ComplexF32","ComplexF64","CompositeException","Condition","Cptrdiff_t","Cshort","Csize_t","Cssize_t","Cstring","Cuchar","Cuint","Cuintmax_t","Culong","Culonglong","Cushort","Cvoid","Cwchar_t","Cwstring","DataType","DenseArray","DenseMatrix","DenseVecOrMat","DenseVector","Dict","DimensionMismatch","Dims","DivideError","DomainError","EOFError","Enum","ErrorException","Exception","ExponentialBackOff","Expr","Float16","Float32","Float64","Function","GlobalRef","HTML","IO","IOBuffer","IOContext","IOStream","IdDict","IndexCartesian","IndexLinear","IndexStyle","InexactError","InitError","Int","Int128","Int16","Int32","Int64","Int8","Integer","InterruptException","InvalidStateException","Irrational","KeyError","LinRange","LineNumberNode","LinearIndices","LoadError","MIME","Matrix","Method","MethodError","Missing","MissingException","Module","NTuple","NamedTuple","Nothing","Number","OrdinalRange","OutOfMemoryError","OverflowError","Pair","PartialQuickSort","PermutedDimsArray","Pipe","ProcessFailedException","Ptr","QuoteNode","Rational","RawFD","ReadOnlyMemoryError","Real","ReentrantLock","Ref","Regex","RegexMatch","RoundingMode","SegmentationFault","Set","Signed","Some","StackOverflowError","StepRange","StepRangeLen","StridedArray","StridedMatrix","StridedVecOrMat","StridedVector","String","StringIndexError","SubArray","SubString","SubstitutionString","Symbol","SystemError","Task","TaskFailedException","Text","TextDisplay","Timer","Tuple","Type","TypeError","TypeVar","UInt","UInt128","UInt16","UInt32","UInt64","UInt8","UndefInitializer","UndefKeywordError","UndefRefError","UndefVarError","Union","UnionAll","UnitRange","Unsigned","Val","Vararg","VecElement","VecOrMat","Vector","VersionNumber","WeakKeyDict","WeakRef"]
+},n={keywords:t,illegal:/<\//},a={className:"subst",begin:/\$\(/,end:/\)/,
+keywords:t},i={className:"variable",begin:"\\$"+r},o={className:"string",
+contains:[e.BACKSLASH_ESCAPE,a,i],variants:[{begin:/\w*"""/,end:/"""\w*/,
+relevance:10},{begin:/\w*"/,end:/"\w*/}]},s={className:"string",
+contains:[e.BACKSLASH_ESCAPE,a,i],begin:"`",end:"`"},l={className:"meta",
+begin:"@"+r};return n.name="Julia",n.contains=[{className:"number",
+begin:/(\b0x[\d_]*(\.[\d_]*)?|0x\.\d[\d_]*)p[-+]?\d+|\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\b\d[\d_]*(\.[\d_]*)?|\.\d[\d_]*)([eEfF][-+]?\d+)?/,
+relevance:0},{className:"string",begin:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},o,s,l,{
+className:"comment",variants:[{begin:"#=",end:"=#",relevance:10},{begin:"#",
+end:"$"}]},e.HASH_COMMENT_MODE,{className:"keyword",
+begin:"\\b(((abstract|primitive)\\s+)type|(mutable\\s+)?struct)\\b"},{begin:/<:/
+}],a.contains=n.contains,n}})();hljs.registerLanguage("julia",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/kotlin.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/kotlin.min.js
new file mode 100644
index 0000000..db1a94e
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/kotlin.min.js
@@ -0,0 +1,45 @@
+/*! `kotlin` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict"
+;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={
+className:"number",variants:[{
+begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b`
+},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{
+begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{
+begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b`
+},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{
+begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],
+relevance:0};return e=>{const n={
+keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",
+built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",
+literal:"true false null"},i={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"
+},s={className:"subst",begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},t={
+className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},r={className:"string",
+variants:[{begin:'"""',end:'"""(?=[^"])',contains:[t,s]},{begin:"'",end:"'",
+illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,
+contains:[e.BACKSLASH_ESCAPE,t,s]}]};s.contains.push(r);const l={
+className:"meta",
+begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"
+},c={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,
+end:/\)/,contains:[e.inherit(r,{className:"string"})]}]
+},o=a,b=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),E={
+variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,
+contains:[]}]},d=E;return d.variants[1].contains=[E],E.variants[1].contains=[d],
+{name:"Kotlin",aliases:["kt","kts"],keywords:n,
+contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",
+begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,b,{className:"keyword",
+begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",
+begin:/@\w+/}]}},i,l,c,{className:"function",beginKeywords:"fun",end:"[(]|$",
+returnBegin:!0,excludeEnd:!0,keywords:n,relevance:5,contains:[{
+begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,
+contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,
+keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,
+endsParent:!0,keywords:n,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,
+endsWithParent:!0,contains:[E,e.C_LINE_COMMENT_MODE,b],relevance:0
+},e.C_LINE_COMMENT_MODE,b,l,c,r,e.C_NUMBER_MODE]},b]},{className:"class",
+beginKeywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,
+illegal:"extends implements",contains:[{
+beginKeywords:"public protected internal private constructor"
+},e.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,
+excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,]|$/,
+excludeBegin:!0,returnEnd:!0},l,c]},r,{className:"meta",begin:"^#!/usr/bin/env",
+end:"$",illegal:"\n"},o]}}})();hljs.registerLanguage("kotlin",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/lasso.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/lasso.min.js
new file mode 100644
index 0000000..58d441a
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/lasso.min.js
@@ -0,0 +1,29 @@
+/*! `lasso` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const a="<\\?(lasso(script)?|=)",n="\\]|\\?>",r={
+$pattern:"[a-zA-Z_][\\w.]*|&[lg]t;",
+literal:"true false none minimal full all void and or not bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft",
+built_in:"array date decimal duration integer map pair string tag xml null boolean bytes keyword list locale queue set stack staticarray local var variable global data self inherited currentcapture givenblock",
+keyword:"cache database_names database_schemanames database_tablenames define_tag define_type email_batch encode_set html_comment handle handle_error header if inline iterate ljax_target link link_currentaction link_currentgroup link_currentrecord link_detail link_firstgroup link_firstrecord link_lastgroup link_lastrecord link_nextgroup link_nextrecord link_prevgroup link_prevrecord log loop namespace_using output_none portal private protect records referer referrer repeating resultset rows search_args search_arguments select sort_args sort_arguments thread_atomic value_list while abort case else fail_if fail_ifnot fail if_empty if_false if_null if_true loop_abort loop_continue loop_count params params_up return return_value run_children soap_definetag soap_lastrequest soap_lastresponse tag_name ascending average by define descending do equals frozen group handle_failure import in into join let match max min on order parent protected provide public require returnhome skip split_thread sum take thread to trait type where with yield yieldhome"
+},t=e.COMMENT("\x3c!--","--\x3e",{relevance:0}),s={className:"meta",
+begin:"\\[noprocess\\]",starts:{end:"\\[/noprocess\\]",returnEnd:!0,contains:[t]
+}},i={className:"meta",begin:"\\[/noprocess|"+a
+},l=[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.inherit(e.C_NUMBER_MODE,{
+begin:e.C_NUMBER_RE+"|(-?infinity|NaN)\\b"}),e.inherit(e.APOS_STRING_MODE,{
+illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{
+className:"string",begin:"`",end:"`"},{variants:[{begin:"[#$][a-zA-Z_][\\w.]*"
+},{begin:"#",end:"\\d+",illegal:"\\W"}]},{className:"type",begin:"::\\s*",
+end:"[a-zA-Z_][\\w.]*",illegal:"\\W"},{className:"params",variants:[{
+begin:"-(?!infinity)[a-zA-Z_][\\w.]*",relevance:0},{begin:"(\\.\\.\\.)"}]},{
+begin:/(->|\.)\s*/,relevance:0,contains:[{className:"symbol",
+begin:"'[a-zA-Z_][\\w.]*'"}]},{className:"class",beginKeywords:"define",
+returnEnd:!0,end:"\\(|=>",contains:[e.inherit(e.TITLE_MODE,{
+begin:"[a-zA-Z_][\\w.]*(=(?!>))?|[-+*/%](?!>)"})]}];return{name:"Lasso",
+aliases:["ls","lassoscript"],case_insensitive:!0,keywords:r,contains:[{
+className:"meta",begin:n,relevance:0,starts:{end:"\\[|"+a,returnEnd:!0,
+relevance:0,contains:[t]}},s,i,{className:"meta",begin:"\\[no_square_brackets",
+starts:{end:"\\[/no_square_brackets\\]",keywords:r,contains:[{className:"meta",
+begin:n,relevance:0,starts:{end:"\\[noprocess\\]|"+a,returnEnd:!0,contains:[t]}
+},s,i].concat(l)}},{className:"meta",begin:"\\[",relevance:0},{className:"meta",
+begin:"^#!",end:"lasso9$",relevance:10}].concat(l)}}})()
+;hljs.registerLanguage("lasso",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/latex.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/latex.min.js
new file mode 100644
index 0000000..a465cd1
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/latex.min.js
@@ -0,0 +1,33 @@
+/*! `latex` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n=[{begin:/\^{6}[0-9a-f]{6}/},{
+begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/},{begin:/\^{3}[0-9a-f]{3}/
+},{begin:/\^{2}[0-9a-f]{2}/},{begin:/\^{2}[\u0000-\u007f]/}],a=[{
+className:"keyword",begin:/\\/,relevance:0,contains:[{endsParent:!0,
+begin:e.regex.either(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"].map((e=>e+"(?![a-zA-Z@:_])")))
+},{endsParent:!0,
+begin:RegExp(["(?:__)?[a-zA-Z]{2,}_[a-zA-Z](?:_?[a-zA-Z])+:[a-zA-Z]*","[lgc]__?[a-zA-Z](?:_?[a-zA-Z])*_[a-zA-Z]{2,}","[qs]__?[a-zA-Z](?:_?[a-zA-Z])+","use(?:_i)?:[a-zA-Z]*","(?:else|fi|or):","(?:if|cs|exp):w","(?:hbox|vbox):n","::[a-zA-Z]_unbraced","::[a-zA-Z:]"].map((e=>e+"(?![a-zA-Z:_])")).join("|"))
+},{endsParent:!0,variants:n},{endsParent:!0,relevance:0,variants:[{
+begin:/[a-zA-Z@]+/},{begin:/[^a-zA-Z@]?/}]}]},{className:"params",relevance:0,
+begin:/#+\d?/},{variants:n},{className:"built_in",relevance:0,begin:/[$&^_]/},{
+className:"meta",begin:/% ?!(T[eE]X|tex|BIB|bib)/,end:"$",relevance:10
+},e.COMMENT("%","$",{relevance:0})],i={begin:/\{/,end:/\}/,relevance:0,
+contains:["self",...a]},t=e.inherit(i,{relevance:0,endsParent:!0,
+contains:[i,...a]}),r={begin:/\[/,end:/\]/,endsParent:!0,relevance:0,
+contains:[i,...a]},s={begin:/\s+/,relevance:0},c=[t],l=[r],o=(e,n)=>({
+contains:[s],starts:{relevance:0,contains:e,starts:n}}),d=(e,n)=>({
+begin:"\\\\"+e+"(?![a-zA-Z@:_])",keywords:{$pattern:/\\[a-zA-Z]+/,keyword:"\\"+e
+},relevance:0,contains:[s],starts:n}),g=(n,a)=>e.inherit({
+begin:"\\\\begin(?=[ \t]*(\\r?\\n[ \t]*)?\\{"+n+"\\})",keywords:{
+$pattern:/\\[a-zA-Z]+/,keyword:"\\begin"},relevance:0
+},o(c,a)),m=(n="string")=>e.END_SAME_AS_BEGIN({className:n,begin:/(.|\r?\n)/,
+end:/(.|\r?\n)/,excludeBegin:!0,excludeEnd:!0,endsParent:!0}),b=e=>({
+className:"string",end:"(?=\\\\end\\{"+e+"\\})"}),p=(e="string")=>({relevance:0,
+begin:/\{/,starts:{endsParent:!0,contains:[{className:e,end:/(?=\})/,
+endsParent:!0,contains:[{begin:/\{/,end:/\}/,relevance:0,contains:["self"]}]}]}
+});return{name:"LaTeX",aliases:["tex"],
+contains:[...["verb","lstinline"].map((e=>d(e,{contains:[m()]}))),d("mint",o(c,{
+contains:[m()]})),d("mintinline",o(c,{contains:[p(),m()]})),d("url",{
+contains:[p("link"),p("link")]}),d("hyperref",{contains:[p("link")]
+}),d("href",o(l,{contains:[p("link")]
+})),...[].concat(...["","\\*"].map((e=>[g("verbatim"+e,b("verbatim"+e)),g("filecontents"+e,o(c,b("filecontents"+e))),...["","B","L"].map((n=>g(n+"Verbatim"+e,o(l,b(n+"Verbatim"+e)))))]))),g("minted",o(l,o(c,b("minted")))),...a]
+}}})();hljs.registerLanguage("latex",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/ldif.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/ldif.min.js
new file mode 100644
index 0000000..aa7a5af
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/ldif.min.js
@@ -0,0 +1,5 @@
+/*! `ldif` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var a=(()=>{"use strict";return a=>({name:"LDIF",contains:[{
+className:"attribute",match:"^dn(?=:)",relevance:10},{className:"attribute",
+match:"^\\w+(?=:)"},{className:"literal",match:"^-"},a.HASH_COMMENT_MODE]})})()
+;hljs.registerLanguage("ldif",a)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/leaf.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/leaf.min.js
new file mode 100644
index 0000000..ada6f7a
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/leaf.min.js
@@ -0,0 +1,8 @@
+/*! `leaf` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Leaf",contains:[{
+className:"function",begin:"#+[A-Za-z_0-9]*\\(",end:/ \{/,returnBegin:!0,
+excludeEnd:!0,contains:[{className:"keyword",begin:"#+"},{className:"title",
+begin:"[A-Za-z_][A-Za-z_0-9]*"},{className:"params",begin:"\\(",end:"\\)",
+endsParent:!0,contains:[{className:"string",begin:'"',end:'"'},{
+className:"variable",begin:"[A-Za-z_][A-Za-z_0-9]*"}]}]}]})})()
+;hljs.registerLanguage("leaf",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/less.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/less.min.js
new file mode 100644
index 0000000..3e457ca
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/less.min.js
@@ -0,0 +1,43 @@
+/*! `less` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict"
+;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],r=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],o=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-height","max-width","min-height","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse(),n=i.concat(r)
+;return a=>{const s=(e=>({IMPORTANT:{scope:"meta",begin:"!important"},
+BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",
+begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{
+className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{
+scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",
+contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{
+scope:"number",
+begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",
+relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/}
+}))(a),l=n,d="([\\w-]+|@\\{[\\w-]+\\})",c=[],g=[],m=e=>({className:"string",
+begin:"~?"+e+".*?"+e}),p=(e,t,i)=>({className:e,begin:t,relevance:i}),b={
+$pattern:/[a-z-]+/,keyword:"and or not only",attribute:t.join(" ")},u={
+begin:"\\(",end:"\\)",contains:g,keywords:b,relevance:0}
+;g.push(a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,m("'"),m('"'),s.CSS_NUMBER_MODE,{
+begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",
+excludeEnd:!0}
+},s.HEXCOLOR,u,p("variable","@@?[\\w-]+",10),p("variable","@\\{[\\w-]+\\}"),p("built_in","~?`[^`]*?`"),{
+className:"attribute",begin:"[\\w-]+\\s*:",end:":",returnBegin:!0,excludeEnd:!0
+},s.IMPORTANT);const h=g.concat({begin:/\{/,end:/\}/,contains:c}),f={
+beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"
+}].concat(g)},v={begin:d+"\\s*:",returnBegin:!0,end:/[;}]/,relevance:0,
+contains:[{begin:/-(webkit|moz|ms|o)-/},s.CSS_VARIABLE,{className:"attribute",
+begin:"\\b("+o.join("|")+")\\b",end:/(?=:)/,starts:{endsWithParent:!0,
+illegal:"[<=$]",relevance:0,contains:g}}]},w={className:"keyword",
+begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",
+starts:{end:"[;{}]",keywords:b,returnEnd:!0,contains:g,relevance:0}},k={
+className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{
+begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:h}},y={variants:[{
+begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:d,end:/\{/}],returnBegin:!0,
+returnEnd:!0,illegal:"[<='$\"]",relevance:0,
+contains:[a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,f,p("keyword","all\\b"),p("variable","@\\{[\\w-]+\\}"),{
+begin:"\\b("+e.join("|")+")\\b",className:"selector-tag"
+},s.CSS_NUMBER_MODE,p("selector-tag",d,0),p("selector-id","#"+d),p("selector-class","\\."+d,0),p("selector-tag","&",0),s.ATTRIBUTE_SELECTOR_MODE,{
+className:"selector-pseudo",begin:":("+i.join("|")+")"},{
+className:"selector-pseudo",begin:":(:)?("+r.join("|")+")"},{begin:/\(/,
+end:/\)/,relevance:0,contains:h},{begin:"!important"},s.FUNCTION_DISPATCH]},x={
+begin:`[\\w-]+:(:)?(${l.join("|")})`,returnBegin:!0,contains:[y]}
+;return c.push(a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,w,k,x,v,y),{
+name:"Less",case_insensitive:!0,illegal:"[=>'/<($\"]",contains:c}}})()
+;hljs.registerLanguage("less",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/lisp.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/lisp.min.js
new file mode 100644
index 0000000..ec971f1
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/lisp.min.js
@@ -0,0 +1,17 @@
+/*! `lisp` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+var n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={
+className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{
+begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{
+begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{
+begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{
+illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={
+className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},v={
+contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c],
+variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{
+name:"quote"}},{begin:"'"+a}]},o={variants:[{begin:"'"+n},{
+begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0,
+relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0
+},{begin:a}]},u],u.contains=[v,o,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/,
+contains:[l,e.SHEBANG(),s,b,g,v,o,m,c]}}})();hljs.registerLanguage("lisp",e)
+})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/livecodeserver.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/livecodeserver.min.js
new file mode 100644
index 0000000..168ba4c
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/livecodeserver.min.js
@@ -0,0 +1,21 @@
+/*! `livecodeserver` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const r={className:"variable",
+variants:[{begin:"\\b([gtps][A-Z]{1}[a-zA-Z0-9]*)(\\[.+\\])?(?:\\s*?)"},{
+begin:"\\$_[A-Z]+"}],relevance:0
+},t=[e.C_BLOCK_COMMENT_MODE,e.HASH_COMMENT_MODE,e.COMMENT("--","$"),e.COMMENT("[^:]//","$")],a=e.inherit(e.TITLE_MODE,{
+variants:[{begin:"\\b_*rig[A-Z][A-Za-z0-9_\\-]*"},{begin:"\\b_[a-z0-9\\-]+"}]
+}),o=e.inherit(e.TITLE_MODE,{begin:"\\b([A-Za-z0-9_\\-]+)\\b"});return{
+name:"LiveCode",case_insensitive:!1,keywords:{
+keyword:"$_COOKIE $_FILES $_GET $_GET_BINARY $_GET_RAW $_POST $_POST_BINARY $_POST_RAW $_SESSION $_SERVER codepoint codepoints segment segments codeunit codeunits sentence sentences trueWord trueWords paragraph after byte bytes english the until http forever descending using line real8 with seventh for stdout finally element word words fourth before black ninth sixth characters chars stderr uInt1 uInt1s uInt2 uInt2s stdin string lines relative rel any fifth items from middle mid at else of catch then third it file milliseconds seconds second secs sec int1 int1s int4 int4s internet int2 int2s normal text item last long detailed effective uInt4 uInt4s repeat end repeat URL in try into switch to words https token binfile each tenth as ticks tick system real4 by dateItems without char character ascending eighth whole dateTime numeric short first ftp integer abbreviated abbr abbrev private case while if div mod wrap and or bitAnd bitNot bitOr bitXor among not in a an within contains ends with begins the keys of keys",
+literal:"SIX TEN FORMFEED NINE ZERO NONE SPACE FOUR FALSE COLON CRLF PI COMMA ENDOFFILE EOF EIGHT FIVE QUOTE EMPTY ONE TRUE RETURN CR LINEFEED RIGHT BACKSLASH NULL SEVEN TAB THREE TWO six ten formfeed nine zero none space four false colon crlf pi comma endoffile eof eight five quote empty one true return cr linefeed right backslash null seven tab three two RIVERSION RISTATE FILE_READ_MODE FILE_WRITE_MODE FILE_WRITE_MODE DIR_WRITE_MODE FILE_READ_UMASK FILE_WRITE_UMASK DIR_READ_UMASK DIR_WRITE_UMASK",
+built_in:"put abs acos aliasReference annuity arrayDecode arrayEncode asin atan atan2 average avg avgDev base64Decode base64Encode baseConvert binaryDecode binaryEncode byteOffset byteToNum cachedURL cachedURLs charToNum cipherNames codepointOffset codepointProperty codepointToNum codeunitOffset commandNames compound compress constantNames cos date dateFormat decompress difference directories diskSpace DNSServers exp exp1 exp2 exp10 extents files flushEvents folders format functionNames geometricMean global globals hasMemory harmonicMean hostAddress hostAddressToName hostName hostNameToAddress isNumber ISOToMac itemOffset keys len length libURLErrorData libUrlFormData libURLftpCommand libURLLastHTTPHeaders libURLLastRHHeaders libUrlMultipartFormAddPart libUrlMultipartFormData libURLVersion lineOffset ln ln1 localNames log log2 log10 longFilePath lower macToISO matchChunk matchText matrixMultiply max md5Digest median merge messageAuthenticationCode messageDigest millisec millisecs millisecond milliseconds min monthNames nativeCharToNum normalizeText num number numToByte numToChar numToCodepoint numToNativeChar offset open openfiles openProcesses openProcessIDs openSockets paragraphOffset paramCount param params peerAddress pendingMessages platform popStdDev populationStandardDeviation populationVariance popVariance processID random randomBytes replaceText result revCreateXMLTree revCreateXMLTreeFromFile revCurrentRecord revCurrentRecordIsFirst revCurrentRecordIsLast revDatabaseColumnCount revDatabaseColumnIsNull revDatabaseColumnLengths revDatabaseColumnNames revDatabaseColumnNamed revDatabaseColumnNumbered revDatabaseColumnTypes revDatabaseConnectResult revDatabaseCursors revDatabaseID revDatabaseTableNames revDatabaseType revDataFromQuery revdb_closeCursor revdb_columnbynumber revdb_columncount revdb_columnisnull revdb_columnlengths revdb_columnnames revdb_columntypes revdb_commit revdb_connect revdb_connections revdb_connectionerr revdb_currentrecord revdb_cursorconnection revdb_cursorerr revdb_cursors revdb_dbtype revdb_disconnect revdb_execute revdb_iseof revdb_isbof revdb_movefirst revdb_movelast revdb_movenext revdb_moveprev revdb_query revdb_querylist revdb_recordcount revdb_rollback revdb_tablenames revGetDatabaseDriverPath revNumberOfRecords revOpenDatabase revOpenDatabases revQueryDatabase revQueryDatabaseBlob revQueryResult revQueryIsAtStart revQueryIsAtEnd revUnixFromMacPath revXMLAttribute revXMLAttributes revXMLAttributeValues revXMLChildContents revXMLChildNames revXMLCreateTreeFromFileWithNamespaces revXMLCreateTreeWithNamespaces revXMLDataFromXPathQuery revXMLEvaluateXPath revXMLFirstChild revXMLMatchingNode revXMLNextSibling revXMLNodeContents revXMLNumberOfChildren revXMLParent revXMLPreviousSibling revXMLRootNode revXMLRPC_CreateRequest revXMLRPC_Documents revXMLRPC_Error revXMLRPC_GetHost revXMLRPC_GetMethod revXMLRPC_GetParam revXMLText revXMLRPC_Execute revXMLRPC_GetParamCount revXMLRPC_GetParamNode revXMLRPC_GetParamType revXMLRPC_GetPath revXMLRPC_GetPort revXMLRPC_GetProtocol revXMLRPC_GetRequest revXMLRPC_GetResponse revXMLRPC_GetSocket revXMLTree revXMLTrees revXMLValidateDTD revZipDescribeItem revZipEnumerateItems revZipOpenArchives round sampVariance sec secs seconds sentenceOffset sha1Digest shell shortFilePath sin specialFolderPath sqrt standardDeviation statRound stdDev sum sysError systemVersion tan tempName textDecode textEncode tick ticks time to tokenOffset toLower toUpper transpose truewordOffset trunc uniDecode uniEncode upper URLDecode URLEncode URLStatus uuid value variableNames variance version waitDepth weekdayNames wordOffset xsltApplyStylesheet xsltApplyStylesheetFromFile xsltLoadStylesheet xsltLoadStylesheetFromFile add breakpoint cancel clear local variable file word line folder directory URL close socket process combine constant convert create new alias folder directory decrypt delete variable word line folder directory URL dispatch divide do encrypt filter get include intersect kill libURLDownloadToFile libURLFollowHttpRedirects libURLftpUpload libURLftpUploadFile libURLresetAll libUrlSetAuthCallback libURLSetDriver libURLSetCustomHTTPHeaders libUrlSetExpect100 libURLSetFTPListCommand libURLSetFTPMode libURLSetFTPStopTime libURLSetStatusCallback load extension loadedExtensions multiply socket prepare process post seek rel relative read from process rename replace require resetAll resolve revAddXMLNode revAppendXML revCloseCursor revCloseDatabase revCommitDatabase revCopyFile revCopyFolder revCopyXMLNode revDeleteFolder revDeleteXMLNode revDeleteAllXMLTrees revDeleteXMLTree revExecuteSQL revGoURL revInsertXMLNode revMoveFolder revMoveToFirstRecord revMoveToLastRecord revMoveToNextRecord revMoveToPreviousRecord revMoveToRecord revMoveXMLNode revPutIntoXMLNode revRollBackDatabase revSetDatabaseDriverPath revSetXMLAttribute revXMLRPC_AddParam revXMLRPC_DeleteAllDocuments revXMLAddDTD revXMLRPC_Free revXMLRPC_FreeAll revXMLRPC_DeleteDocument revXMLRPC_DeleteParam revXMLRPC_SetHost revXMLRPC_SetMethod revXMLRPC_SetPort revXMLRPC_SetProtocol revXMLRPC_SetSocket revZipAddItemWithData revZipAddItemWithFile revZipAddUncompressedItemWithData revZipAddUncompressedItemWithFile revZipCancel revZipCloseArchive revZipDeleteItem revZipExtractItemToFile revZipExtractItemToVariable revZipSetProgressCallback revZipRenameItem revZipReplaceItemWithData revZipReplaceItemWithFile revZipOpenArchive send set sort split start stop subtract symmetric union unload vectorDotProduct wait write"
+},contains:[r,{className:"keyword",begin:"\\bend\\sif\\b"},{
+className:"function",beginKeywords:"function",end:"$",
+contains:[r,o,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE,a]
+},{className:"function",begin:"\\bend\\s+",end:"$",keywords:"end",
+contains:[o,a],relevance:0},{beginKeywords:"command on",end:"$",
+contains:[r,o,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE,a]
+},{className:"meta",variants:[{begin:"<\\?(rev|lc|livecode)",relevance:10},{
+begin:"<\\?"},{begin:"\\?>"}]
+},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE,a].concat(t),
+illegal:";$|^\\[|^=|&|\\{"}}})();hljs.registerLanguage("livecodeserver",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/livescript.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/livescript.min.js
new file mode 100644
index 0000000..e9d2e70
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/livescript.min.js
@@ -0,0 +1,35 @@
+/*! `livescript` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict"
+;const e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],n=["true","false","null","undefined","NaN","Infinity"],a=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"])
+;return r=>{const t={
+keyword:e.concat(["then","unless","until","loop","of","by","when","and","or","is","isnt","not","it","that","otherwise","from","to","til","fallthrough","case","enum","native","list","map","__hasProp","__extends","__slice","__bind","__indexOf"]),
+literal:n.concat(["yes","no","on","off","it","that","void"]),
+built_in:a.concat(["npm","print"])
+},i="[A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*",s=r.inherit(r.TITLE_MODE,{
+begin:i}),o={className:"subst",begin:/#\{/,end:/\}/,keywords:t},c={
+className:"subst",begin:/#[A-Za-z$_]/,end:/(?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*/,
+keywords:t},l=[r.BINARY_NUMBER_MODE,{className:"number",
+begin:"(\\b0[xX][a-fA-F0-9_]+)|(\\b\\d(\\d|_\\d)*(\\.(\\d(\\d|_\\d)*)?)?(_*[eE]([-+]\\d(_\\d|\\d)*)?)?[_a-z]*)",
+relevance:0,starts:{end:"(\\s*/)?",relevance:0}},{className:"string",variants:[{
+begin:/'''/,end:/'''/,contains:[r.BACKSLASH_ESCAPE]},{begin:/'/,end:/'/,
+contains:[r.BACKSLASH_ESCAPE]},{begin:/"""/,end:/"""/,
+contains:[r.BACKSLASH_ESCAPE,o,c]},{begin:/"/,end:/"/,
+contains:[r.BACKSLASH_ESCAPE,o,c]},{begin:/\\/,end:/(\s|$)/,excludeEnd:!0}]},{
+className:"regexp",variants:[{begin:"//",end:"//[gim]*",
+contains:[o,r.HASH_COMMENT_MODE]},{
+begin:/\/(?![ *])(\\.|[^\\\n])*?\/[gim]*(?=\W)/}]},{begin:"@"+i},{begin:"``",
+end:"``",excludeBegin:!0,excludeEnd:!0,subLanguage:"javascript"}];o.contains=l
+;const d={className:"params",begin:"\\(",returnBegin:!0,contains:[{begin:/\(/,
+end:/\)/,keywords:t,contains:["self"].concat(l)}]};return{name:"LiveScript",
+aliases:["ls"],keywords:t,illegal:/\/\*/,
+contains:l.concat([r.COMMENT("\\/\\*","\\*\\/"),r.HASH_COMMENT_MODE,{
+begin:"(#=>|=>|\\|>>|-?->|!->)"},{className:"function",contains:[s,d],
+returnBegin:!0,variants:[{
+begin:"("+i+"\\s*(?:=|:=)\\s*)?(\\(.*\\)\\s*)?\\B->\\*?",end:"->\\*?"},{
+begin:"("+i+"\\s*(?:=|:=)\\s*)?!?(\\(.*\\)\\s*)?\\B[-~]{1,2}>\\*?",
+end:"[-~]{1,2}>\\*?"},{
+begin:"("+i+"\\s*(?:=|:=)\\s*)?(\\(.*\\)\\s*)?\\B!?[-~]{1,2}>\\*?",
+end:"!?[-~]{1,2}>\\*?"}]},{className:"class",beginKeywords:"class",end:"$",
+illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,
+illegal:/[:="\[\]]/,contains:[s]},s]},{begin:i+":",end:":",returnBegin:!0,
+returnEnd:!0,relevance:0}])}}})();hljs.registerLanguage("livescript",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/llvm.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/llvm.min.js
new file mode 100644
index 0000000..b56058a
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/llvm.min.js
@@ -0,0 +1,14 @@
+/*! `llvm` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const a=e.regex,n=/([-a-zA-Z$._][\w$.-]*)/,t={className:"variable",variants:[{
+begin:a.concat(/%/,n)},{begin:/%\d+/},{begin:/#\d+/}]},i={className:"title",
+variants:[{begin:a.concat(/@/,n)},{begin:/@\d+/},{begin:a.concat(/!/,n)},{
+begin:a.concat(/!\d+/,n)},{begin:/!\d+/}]};return{name:"LLVM IR",
+keywords:"begin end true false declare define global constant private linker_private internal available_externally linkonce linkonce_odr weak weak_odr appending dllimport dllexport common default hidden protected extern_weak external thread_local zeroinitializer undef null to tail target triple datalayout volatile nuw nsw nnan ninf nsz arcp fast exact inbounds align addrspace section alias module asm sideeffect gc dbg linker_private_weak attributes blockaddress initialexec localdynamic localexec prefix unnamed_addr ccc fastcc coldcc x86_stdcallcc x86_fastcallcc arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ptx_kernel intel_ocl_bicc msp430_intrcc spir_func spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc cc c signext zeroext inreg sret nounwind noreturn noalias nocapture byval nest readnone readonly inlinehint noinline alwaysinline optsize ssp sspreq noredzone noimplicitfloat naked builtin cold nobuiltin noduplicate nonlazybind optnone returns_twice sanitize_address sanitize_memory sanitize_thread sspstrong uwtable returned type opaque eq ne slt sgt sle sge ult ugt ule uge oeq one olt ogt ole oge ord uno ueq une x acq_rel acquire alignstack atomic catch cleanup filter inteldialect max min monotonic nand personality release seq_cst singlethread umax umin unordered xchg add fadd sub fsub mul fmul udiv sdiv fdiv urem srem frem shl lshr ashr and or xor icmp fcmp phi call trunc zext sext fptrunc fpext uitofp sitofp fptoui fptosi inttoptr ptrtoint bitcast addrspacecast select va_arg ret br switch invoke unwind unreachable indirectbr landingpad resume malloc alloca free load store getelementptr extractelement insertelement shufflevector getresult extractvalue insertvalue atomicrmw cmpxchg fence argmemonly double",
+contains:[{className:"type",begin:/\bi\d+(?=\s|\b)/},e.COMMENT(/;\s*$/,null,{
+relevance:0}),e.COMMENT(/;/,/$/),e.QUOTE_STRING_MODE,{className:"string",
+variants:[{begin:/"/,end:/[^\\]"/}]},i,{className:"punctuation",relevance:0,
+begin:/,/},{className:"operator",relevance:0,begin:/=/},t,{className:"symbol",
+variants:[{begin:/^\s*[a-z]+:/}],relevance:0},{className:"number",variants:[{
+begin:/0[xX][a-fA-F0-9]+/},{begin:/-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?/
+}],relevance:0}]}}})();hljs.registerLanguage("llvm",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/lsl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/lsl.min.js
new file mode 100644
index 0000000..9fa9d9c
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/lsl.min.js
@@ -0,0 +1,19 @@
+/*! `lsl` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var E=(()=>{"use strict";return E=>{var T={className:"number",relevance:0,
+begin:E.C_NUMBER_RE};return{name:"LSL (Linden Scripting Language)",illegal:":",
+contains:[{className:"string",begin:'"',end:'"',contains:[{className:"subst",
+begin:/\\[tn"\\]/}]},{className:"comment",
+variants:[E.COMMENT("//","$"),E.COMMENT("/\\*","\\*/")],relevance:0},T,{
+className:"section",variants:[{begin:"\\b(state|default)\\b"},{
+begin:"\\b(state_(entry|exit)|touch(_(start|end))?|(land_)?collision(_(start|end))?|timer|listen|(no_)?sensor|control|(not_)?at_(rot_)?target|money|email|experience_permissions(_denied)?|run_time_permissions|changed|attach|dataserver|moving_(start|end)|link_message|(on|object)_rez|remote_data|http_re(sponse|quest)|path_update|transaction_result)\\b"
+}]},{className:"built_in",
+begin:"\\b(ll(AgentInExperience|(Create|DataSize|Delete|KeyCount|Keys|Read|Update)KeyValue|GetExperience(Details|ErrorMessage)|ReturnObjectsBy(ID|Owner)|Json(2List|[GS]etValue|ValueType)|Sin|Cos|Tan|Atan2|Sqrt|Pow|Abs|Fabs|Frand|Floor|Ceil|Round|Vec(Mag|Norm|Dist)|Rot(Between|2(Euler|Fwd|Left|Up))|(Euler|Axes)2Rot|Whisper|(Region|Owner)?Say|Shout|Listen(Control|Remove)?|Sensor(Repeat|Remove)?|Detected(Name|Key|Owner|Type|Pos|Vel|Grab|Rot|Group|LinkNumber)|Die|Ground|Wind|([GS]et)(AnimationOverride|MemoryLimit|PrimMediaParams|ParcelMusicURL|Object(Desc|Name)|PhysicsMaterial|Status|Scale|Color|Alpha|Texture|Pos|Rot|Force|Torque)|ResetAnimationOverride|(Scale|Offset|Rotate)Texture|(Rot)?Target(Remove)?|(Stop)?MoveToTarget|Apply(Rotational)?Impulse|Set(KeyframedMotion|ContentType|RegionPos|(Angular)?Velocity|Buoyancy|HoverHeight|ForceAndTorque|TimerEvent|ScriptState|Damage|TextureAnim|Sound(Queueing|Radius)|Vehicle(Type|(Float|Vector|Rotation)Param)|(Touch|Sit)?Text|Camera(Eye|At)Offset|PrimitiveParams|ClickAction|Link(Alpha|Color|PrimitiveParams(Fast)?|Texture(Anim)?|Camera|Media)|RemoteScriptAccessPin|PayPrice|LocalRot)|ScaleByFactor|Get((Max|Min)ScaleFactor|ClosestNavPoint|StaticPath|SimStats|Env|PrimitiveParams|Link(PrimitiveParams|Number(OfSides)?|Key|Name|Media)|HTTPHeader|FreeURLs|Object(Details|PermMask|PrimCount)|Parcel(MaxPrims|Details|Prim(Count|Owners))|Attached(List)?|(SPMax|Free|Used)Memory|Region(Name|TimeDilation|FPS|Corner|AgentCount)|Root(Position|Rotation)|UnixTime|(Parcel|Region)Flags|(Wall|GMT)clock|SimulatorHostname|BoundingBox|GeometricCenter|Creator|NumberOf(Prims|NotecardLines|Sides)|Animation(List)?|(Camera|Local)(Pos|Rot)|Vel|Accel|Omega|Time(stamp|OfDay)|(Object|CenterOf)?Mass|MassMKS|Energy|Owner|(Owner)?Key|SunDirection|Texture(Offset|Scale|Rot)|Inventory(Number|Name|Key|Type|Creator|PermMask)|Permissions(Key)?|StartParameter|List(Length|EntryType)|Date|Agent(Size|Info|Language|List)|LandOwnerAt|NotecardLine|Script(Name|State))|(Get|Reset|GetAndReset)Time|PlaySound(Slave)?|LoopSound(Master|Slave)?|(Trigger|Stop|Preload)Sound|((Get|Delete)Sub|Insert)String|To(Upper|Lower)|Give(InventoryList|Money)|RezObject|(Stop)?LookAt|Sleep|CollisionFilter|(Take|Release)Controls|DetachFromAvatar|AttachToAvatar(Temp)?|InstantMessage|(GetNext)?Email|StopHover|MinEventDelay|RotLookAt|String(Length|Trim)|(Start|Stop)Animation|TargetOmega|Request(Experience)?Permissions|(Create|Break)Link|BreakAllLinks|(Give|Remove)Inventory|Water|PassTouches|Request(Agent|Inventory)Data|TeleportAgent(Home|GlobalCoords)?|ModifyLand|CollisionSound|ResetScript|MessageLinked|PushObject|PassCollisions|AxisAngle2Rot|Rot2(Axis|Angle)|A(cos|sin)|AngleBetween|AllowInventoryDrop|SubStringIndex|List2(CSV|Integer|Json|Float|String|Key|Vector|Rot|List(Strided)?)|DeleteSubList|List(Statistics|Sort|Randomize|(Insert|Find|Replace)List)|EdgeOfWorld|AdjustSoundVolume|Key2Name|TriggerSoundLimited|EjectFromLand|(CSV|ParseString)2List|OverMyLand|SameGroup|UnSit|Ground(Slope|Normal|Contour)|GroundRepel|(Set|Remove)VehicleFlags|SitOnLink|(AvatarOn)?(Link)?SitTarget|Script(Danger|Profiler)|Dialog|VolumeDetect|ResetOtherScript|RemoteLoadScriptPin|(Open|Close)RemoteDataChannel|SendRemoteData|RemoteDataReply|(Integer|String)ToBase64|XorBase64|Log(10)?|Base64To(String|Integer)|ParseStringKeepNulls|RezAtRoot|RequestSimulatorData|ForceMouselook|(Load|Release|(E|Une)scape)URL|ParcelMedia(CommandList|Query)|ModPow|MapDestination|(RemoveFrom|AddTo|Reset)Land(Pass|Ban)List|(Set|Clear)CameraParams|HTTP(Request|Response)|TextBox|DetectedTouch(UV|Face|Pos|(N|Bin)ormal|ST)|(MD5|SHA1|DumpList2)String|Request(Secure)?URL|Clear(Prim|Link)Media|(Link)?ParticleSystem|(Get|Request)(Username|DisplayName)|RegionSayTo|CastRay|GenerateKey|TransferLindenDollars|ManageEstateAccess|(Create|Delete)Character|ExecCharacterCmd|Evade|FleeFrom|NavigateTo|PatrolPoints|Pursue|UpdateCharacter|WanderWithin))\\b"
+},{className:"literal",variants:[{
+begin:"\\b(PI|TWO_PI|PI_BY_TWO|DEG_TO_RAD|RAD_TO_DEG|SQRT2)\\b"},{
+begin:"\\b(XP_ERROR_(EXPERIENCES_DISABLED|EXPERIENCE_(DISABLED|SUSPENDED)|INVALID_(EXPERIENCE|PARAMETERS)|KEY_NOT_FOUND|MATURITY_EXCEEDED|NONE|NOT_(FOUND|PERMITTED(_LAND)?)|NO_EXPERIENCE|QUOTA_EXCEEDED|RETRY_UPDATE|STORAGE_EXCEPTION|STORE_DISABLED|THROTTLED|UNKNOWN_ERROR)|JSON_APPEND|STATUS_(PHYSICS|ROTATE_[XYZ]|PHANTOM|SANDBOX|BLOCK_GRAB(_OBJECT)?|(DIE|RETURN)_AT_EDGE|CAST_SHADOWS|OK|MALFORMED_PARAMS|TYPE_MISMATCH|BOUNDS_ERROR|NOT_(FOUND|SUPPORTED)|INTERNAL_ERROR|WHITELIST_FAILED)|AGENT(_(BY_(LEGACY_|USER)NAME|FLYING|ATTACHMENTS|SCRIPTED|MOUSELOOK|SITTING|ON_OBJECT|AWAY|WALKING|IN_AIR|TYPING|CROUCHING|BUSY|ALWAYS_RUN|AUTOPILOT|LIST_(PARCEL(_OWNER)?|REGION)))?|CAMERA_(PITCH|DISTANCE|BEHINDNESS_(ANGLE|LAG)|(FOCUS|POSITION)(_(THRESHOLD|LOCKED|LAG))?|FOCUS_OFFSET|ACTIVE)|ANIM_ON|LOOP|REVERSE|PING_PONG|SMOOTH|ROTATE|SCALE|ALL_SIDES|LINK_(ROOT|SET|ALL_(OTHERS|CHILDREN)|THIS)|ACTIVE|PASS(IVE|_(ALWAYS|IF_NOT_HANDLED|NEVER))|SCRIPTED|CONTROL_(FWD|BACK|(ROT_)?(LEFT|RIGHT)|UP|DOWN|(ML_)?LBUTTON)|PERMISSION_(RETURN_OBJECTS|DEBIT|OVERRIDE_ANIMATIONS|SILENT_ESTATE_MANAGEMENT|TAKE_CONTROLS|TRIGGER_ANIMATION|ATTACH|CHANGE_LINKS|(CONTROL|TRACK)_CAMERA|TELEPORT)|INVENTORY_(TEXTURE|SOUND|OBJECT|SCRIPT|LANDMARK|CLOTHING|NOTECARD|BODYPART|ANIMATION|GESTURE|ALL|NONE)|CHANGED_(INVENTORY|COLOR|SHAPE|SCALE|TEXTURE|LINK|ALLOWED_DROP|OWNER|REGION(_START)?|TELEPORT|MEDIA)|OBJECT_(CLICK_ACTION|HOVER_HEIGHT|LAST_OWNER_ID|(PHYSICS|SERVER|STREAMING)_COST|UNKNOWN_DETAIL|CHARACTER_TIME|PHANTOM|PHYSICS|TEMP_(ATTACHED|ON_REZ)|NAME|DESC|POS|PRIM_(COUNT|EQUIVALENCE)|RETURN_(PARCEL(_OWNER)?|REGION)|REZZER_KEY|ROO?T|VELOCITY|OMEGA|OWNER|GROUP(_TAG)?|CREATOR|ATTACHED_(POINT|SLOTS_AVAILABLE)|RENDER_WEIGHT|(BODY_SHAPE|PATHFINDING)_TYPE|(RUNNING|TOTAL)_SCRIPT_COUNT|TOTAL_INVENTORY_COUNT|SCRIPT_(MEMORY|TIME))|TYPE_(INTEGER|FLOAT|STRING|KEY|VECTOR|ROTATION|INVALID)|(DEBUG|PUBLIC)_CHANNEL|ATTACH_(AVATAR_CENTER|CHEST|HEAD|BACK|PELVIS|MOUTH|CHIN|NECK|NOSE|BELLY|[LR](SHOULDER|HAND|FOOT|EAR|EYE|[UL](ARM|LEG)|HIP)|(LEFT|RIGHT)_PEC|HUD_(CENTER_[12]|TOP_(RIGHT|CENTER|LEFT)|BOTTOM(_(RIGHT|LEFT))?)|[LR]HAND_RING1|TAIL_(BASE|TIP)|[LR]WING|FACE_(JAW|[LR]EAR|[LR]EYE|TOUNGE)|GROIN|HIND_[LR]FOOT)|LAND_(LEVEL|RAISE|LOWER|SMOOTH|NOISE|REVERT)|DATA_(ONLINE|NAME|BORN|SIM_(POS|STATUS|RATING)|PAYINFO)|PAYMENT_INFO_(ON_FILE|USED)|REMOTE_DATA_(CHANNEL|REQUEST|REPLY)|PSYS_(PART_(BF_(ZERO|ONE(_MINUS_(DEST_COLOR|SOURCE_(ALPHA|COLOR)))?|DEST_COLOR|SOURCE_(ALPHA|COLOR))|BLEND_FUNC_(DEST|SOURCE)|FLAGS|(START|END)_(COLOR|ALPHA|SCALE|GLOW)|MAX_AGE|(RIBBON|WIND|INTERP_(COLOR|SCALE)|BOUNCE|FOLLOW_(SRC|VELOCITY)|TARGET_(POS|LINEAR)|EMISSIVE)_MASK)|SRC_(MAX_AGE|PATTERN|ANGLE_(BEGIN|END)|BURST_(RATE|PART_COUNT|RADIUS|SPEED_(MIN|MAX))|ACCEL|TEXTURE|TARGET_KEY|OMEGA|PATTERN_(DROP|EXPLODE|ANGLE(_CONE(_EMPTY)?)?)))|VEHICLE_(REFERENCE_FRAME|TYPE_(NONE|SLED|CAR|BOAT|AIRPLANE|BALLOON)|(LINEAR|ANGULAR)_(FRICTION_TIMESCALE|MOTOR_DIRECTION)|LINEAR_MOTOR_OFFSET|HOVER_(HEIGHT|EFFICIENCY|TIMESCALE)|BUOYANCY|(LINEAR|ANGULAR)_(DEFLECTION_(EFFICIENCY|TIMESCALE)|MOTOR_(DECAY_)?TIMESCALE)|VERTICAL_ATTRACTION_(EFFICIENCY|TIMESCALE)|BANKING_(EFFICIENCY|MIX|TIMESCALE)|FLAG_(NO_DEFLECTION_UP|LIMIT_(ROLL_ONLY|MOTOR_UP)|HOVER_((WATER|TERRAIN|UP)_ONLY|GLOBAL_HEIGHT)|MOUSELOOK_(STEER|BANK)|CAMERA_DECOUPLED))|PRIM_(ALLOW_UNSIT|ALPHA_MODE(_(BLEND|EMISSIVE|MASK|NONE))?|NORMAL|SPECULAR|TYPE(_(BOX|CYLINDER|PRISM|SPHERE|TORUS|TUBE|RING|SCULPT))?|HOLE_(DEFAULT|CIRCLE|SQUARE|TRIANGLE)|MATERIAL(_(STONE|METAL|GLASS|WOOD|FLESH|PLASTIC|RUBBER))?|SHINY_(NONE|LOW|MEDIUM|HIGH)|BUMP_(NONE|BRIGHT|DARK|WOOD|BARK|BRICKS|CHECKER|CONCRETE|TILE|STONE|DISKS|GRAVEL|BLOBS|SIDING|LARGETILE|STUCCO|SUCTION|WEAVE)|TEXGEN_(DEFAULT|PLANAR)|SCRIPTED_SIT_ONLY|SCULPT_(TYPE_(SPHERE|TORUS|PLANE|CYLINDER|MASK)|FLAG_(MIRROR|INVERT))|PHYSICS(_(SHAPE_(CONVEX|NONE|PRIM|TYPE)))?|(POS|ROT)_LOCAL|SLICE|TEXT|FLEXIBLE|POINT_LIGHT|TEMP_ON_REZ|PHANTOM|POSITION|SIT_TARGET|SIZE|ROTATION|TEXTURE|NAME|OMEGA|DESC|LINK_TARGET|COLOR|BUMP_SHINY|FULLBRIGHT|TEXGEN|GLOW|MEDIA_(ALT_IMAGE_ENABLE|CONTROLS|(CURRENT|HOME)_URL|AUTO_(LOOP|PLAY|SCALE|ZOOM)|FIRST_CLICK_INTERACT|(WIDTH|HEIGHT)_PIXELS|WHITELIST(_ENABLE)?|PERMS_(INTERACT|CONTROL)|PARAM_MAX|CONTROLS_(STANDARD|MINI)|PERM_(NONE|OWNER|GROUP|ANYONE)|MAX_(URL_LENGTH|WHITELIST_(SIZE|COUNT)|(WIDTH|HEIGHT)_PIXELS)))|MASK_(BASE|OWNER|GROUP|EVERYONE|NEXT)|PERM_(TRANSFER|MODIFY|COPY|MOVE|ALL)|PARCEL_(MEDIA_COMMAND_(STOP|PAUSE|PLAY|LOOP|TEXTURE|URL|TIME|AGENT|UNLOAD|AUTO_ALIGN|TYPE|SIZE|DESC|LOOP_SET)|FLAG_(ALLOW_(FLY|(GROUP_)?SCRIPTS|LANDMARK|TERRAFORM|DAMAGE|CREATE_(GROUP_)?OBJECTS)|USE_(ACCESS_(GROUP|LIST)|BAN_LIST|LAND_PASS_LIST)|LOCAL_SOUND_ONLY|RESTRICT_PUSHOBJECT|ALLOW_(GROUP|ALL)_OBJECT_ENTRY)|COUNT_(TOTAL|OWNER|GROUP|OTHER|SELECTED|TEMP)|DETAILS_(NAME|DESC|OWNER|GROUP|AREA|ID|SEE_AVATARS))|LIST_STAT_(MAX|MIN|MEAN|MEDIAN|STD_DEV|SUM(_SQUARES)?|NUM_COUNT|GEOMETRIC_MEAN|RANGE)|PAY_(HIDE|DEFAULT)|REGION_FLAG_(ALLOW_DAMAGE|FIXED_SUN|BLOCK_TERRAFORM|SANDBOX|DISABLE_(COLLISIONS|PHYSICS)|BLOCK_FLY|ALLOW_DIRECT_TELEPORT|RESTRICT_PUSHOBJECT)|HTTP_(METHOD|MIMETYPE|BODY_(MAXLENGTH|TRUNCATED)|CUSTOM_HEADER|PRAGMA_NO_CACHE|VERBOSE_THROTTLE|VERIFY_CERT)|SIT_(INVALID_(AGENT|LINK_OBJECT)|NO(T_EXPERIENCE|_(ACCESS|EXPERIENCE_PERMISSION|SIT_TARGET)))|STRING_(TRIM(_(HEAD|TAIL))?)|CLICK_ACTION_(NONE|TOUCH|SIT|BUY|PAY|OPEN(_MEDIA)?|PLAY|ZOOM)|TOUCH_INVALID_FACE|PROFILE_(NONE|SCRIPT_MEMORY)|RC_(DATA_FLAGS|DETECT_PHANTOM|GET_(LINK_NUM|NORMAL|ROOT_KEY)|MAX_HITS|REJECT_(TYPES|AGENTS|(NON)?PHYSICAL|LAND))|RCERR_(CAST_TIME_EXCEEDED|SIM_PERF_LOW|UNKNOWN)|ESTATE_ACCESS_(ALLOWED_(AGENT|GROUP)_(ADD|REMOVE)|BANNED_AGENT_(ADD|REMOVE))|DENSITY|FRICTION|RESTITUTION|GRAVITY_MULTIPLIER|KFM_(COMMAND|CMD_(PLAY|STOP|PAUSE)|MODE|FORWARD|LOOP|PING_PONG|REVERSE|DATA|ROTATION|TRANSLATION)|ERR_(GENERIC|PARCEL_PERMISSIONS|MALFORMED_PARAMS|RUNTIME_PERMISSIONS|THROTTLED)|CHARACTER_(CMD_((SMOOTH_)?STOP|JUMP)|DESIRED_(TURN_)?SPEED|RADIUS|STAY_WITHIN_PARCEL|LENGTH|ORIENTATION|ACCOUNT_FOR_SKIPPED_FRAMES|AVOIDANCE_MODE|TYPE(_([ABCD]|NONE))?|MAX_(DECEL|TURN_RADIUS|(ACCEL|SPEED)))|PURSUIT_(OFFSET|FUZZ_FACTOR|GOAL_TOLERANCE|INTERCEPT)|REQUIRE_LINE_OF_SIGHT|FORCE_DIRECT_PATH|VERTICAL|HORIZONTAL|AVOID_(CHARACTERS|DYNAMIC_OBSTACLES|NONE)|PU_(EVADE_(HIDDEN|SPOTTED)|FAILURE_(DYNAMIC_PATHFINDING_DISABLED|INVALID_(GOAL|START)|NO_(NAVMESH|VALID_DESTINATION)|OTHER|TARGET_GONE|(PARCEL_)?UNREACHABLE)|(GOAL|SLOWDOWN_DISTANCE)_REACHED)|TRAVERSAL_TYPE(_(FAST|NONE|SLOW))?|CONTENT_TYPE_(ATOM|FORM|HTML|JSON|LLSD|RSS|TEXT|XHTML|XML)|GCNP_(RADIUS|STATIC)|(PATROL|WANDER)_PAUSE_AT_WAYPOINTS|OPT_(AVATAR|CHARACTER|EXCLUSION_VOLUME|LEGACY_LINKSET|MATERIAL_VOLUME|OTHER|STATIC_OBSTACLE|WALKABLE)|SIM_STAT_PCT_CHARS_STEPPED)\\b"
+},{begin:"\\b(FALSE|TRUE)\\b"},{begin:"\\b(ZERO_ROTATION)\\b"},{
+begin:"\\b(EOF|JSON_(ARRAY|DELETE|FALSE|INVALID|NULL|NUMBER|OBJECT|STRING|TRUE)|NULL_KEY|TEXTURE_(BLANK|DEFAULT|MEDIA|PLYWOOD|TRANSPARENT)|URL_REQUEST_(GRANTED|DENIED))\\b"
+},{begin:"\\b(ZERO_VECTOR|TOUCH_INVALID_(TEXCOORD|VECTOR))\\b"}]},{
+className:"type",
+begin:"\\b(integer|float|string|key|vector|quaternion|rotation|list)\\b"}]}}})()
+;hljs.registerLanguage("lsl",E)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/lua.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/lua.min.js
new file mode 100644
index 0000000..4c73a41
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/lua.min.js
@@ -0,0 +1,15 @@
+/*! `lua` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const t="\\[=*\\[",a="\\]=*\\]",n={
+begin:t,end:a,contains:["self"]
+},o=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[",a,{contains:[n],
+relevance:10})];return{name:"Lua",keywords:{$pattern:e.UNDERSCORE_IDENT_RE,
+literal:"true false nil",
+keyword:"and break do else elseif end for goto if in local not or repeat return then until while",
+built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"
+},contains:o.concat([{className:"function",beginKeywords:"function",end:"\\)",
+contains:[e.inherit(e.TITLE_MODE,{
+begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",
+begin:"\\(",endsWithParent:!0,contains:o}].concat(o)
+},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",
+begin:t,end:a,contains:[n],relevance:5}])}}})();hljs.registerLanguage("lua",e)
+})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/makefile.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/makefile.min.js
new file mode 100644
index 0000000..b99e22f
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/makefile.min.js
@@ -0,0 +1,14 @@
+/*! `makefile` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const i={className:"variable",
+variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)",
+contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%<?\^\+\*]/}]},a={className:"string",
+begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,i]},n={className:"variable",
+begin:/\$\([\w-]+\s/,end:/\)/,keywords:{
+built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"
+},contains:[i]},s={begin:"^"+e.UNDERSCORE_IDENT_RE+"\\s*(?=[:+?]?=)"},r={
+className:"section",begin:/^[^\s]+:/,end:/$/,contains:[i]};return{
+name:"Makefile",aliases:["mk","mak","make"],keywords:{$pattern:/[\w-]+/,
+keyword:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath"
+},contains:[e.HASH_COMMENT_MODE,i,a,n,s,{className:"meta",begin:/^\.PHONY:/,
+end:/$/,keywords:{$pattern:/[\.\w]+/,keyword:".PHONY"}},r]}}})()
+;hljs.registerLanguage("makefile",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/markdown.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/markdown.min.js
new file mode 100644
index 0000000..1c7a076
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/markdown.min.js
@@ -0,0 +1,31 @@
+/*! `markdown` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n={begin:/<\/?[A-Za-z_]/,
+end:">",subLanguage:"xml",relevance:0},a={variants:[{begin:/\[.+?\]\[.*?\]/,
+relevance:0},{
+begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,
+relevance:2},{
+begin:e.regex.concat(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/),
+relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{
+begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/
+},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,
+returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",
+excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",
+end:"\\]",excludeBegin:!0,excludeEnd:!0}]},i={className:"strong",contains:[],
+variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},s={
+className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{
+begin:/_(?!_)/,end:/_/,relevance:0}]};i.contains.push(s),s.contains.push(i)
+;let c=[n,a]
+;return i.contains=i.contains.concat(c),s.contains=s.contains.concat(c),
+c=c.concat(i,s),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{
+className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:c},{
+begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",
+contains:c}]}]},n,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",
+end:"\\s+",excludeEnd:!0},i,s,{className:"quote",begin:"^>\\s+",contains:c,
+end:"$"},{className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{
+begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{
+begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",
+contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{
+begin:"^[-\\*]{3,}",end:"$"},a,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{
+className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{
+className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()
+;hljs.registerLanguage("markdown",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/mathematica.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/mathematica.min.js
new file mode 100644
index 0000000..8441420
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/mathematica.min.js
@@ -0,0 +1,21 @@
+/*! `mathematica` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict"
+;const e=["AASTriangle","AbelianGroup","Abort","AbortKernels","AbortProtect","AbortScheduledTask","Above","Abs","AbsArg","AbsArgPlot","Absolute","AbsoluteCorrelation","AbsoluteCorrelationFunction","AbsoluteCurrentValue","AbsoluteDashing","AbsoluteFileName","AbsoluteOptions","AbsolutePointSize","AbsoluteThickness","AbsoluteTime","AbsoluteTiming","AcceptanceThreshold","AccountingForm","Accumulate","Accuracy","AccuracyGoal","ActionDelay","ActionMenu","ActionMenuBox","ActionMenuBoxOptions","Activate","Active","ActiveClassification","ActiveClassificationObject","ActiveItem","ActivePrediction","ActivePredictionObject","ActiveStyle","AcyclicGraphQ","AddOnHelpPath","AddSides","AddTo","AddToSearchIndex","AddUsers","AdjacencyGraph","AdjacencyList","AdjacencyMatrix","AdjacentMeshCells","AdjustmentBox","AdjustmentBoxOptions","AdjustTimeSeriesForecast","AdministrativeDivisionData","AffineHalfSpace","AffineSpace","AffineStateSpaceModel","AffineTransform","After","AggregatedEntityClass","AggregationLayer","AircraftData","AirportData","AirPressureData","AirTemperatureData","AiryAi","AiryAiPrime","AiryAiZero","AiryBi","AiryBiPrime","AiryBiZero","AlgebraicIntegerQ","AlgebraicNumber","AlgebraicNumberDenominator","AlgebraicNumberNorm","AlgebraicNumberPolynomial","AlgebraicNumberTrace","AlgebraicRules","AlgebraicRulesData","Algebraics","AlgebraicUnitQ","Alignment","AlignmentMarker","AlignmentPoint","All","AllowAdultContent","AllowedCloudExtraParameters","AllowedCloudParameterExtensions","AllowedDimensions","AllowedFrequencyRange","AllowedHeads","AllowGroupClose","AllowIncomplete","AllowInlineCells","AllowKernelInitialization","AllowLooseGrammar","AllowReverseGroupClose","AllowScriptLevelChange","AllowVersionUpdate","AllTrue","Alphabet","AlphabeticOrder","AlphabeticSort","AlphaChannel","AlternateImage","AlternatingFactorial","AlternatingGroup","AlternativeHypothesis","Alternatives","AltitudeMethod","AmbientLight","AmbiguityFunction","AmbiguityList","Analytic","AnatomyData","AnatomyForm","AnatomyPlot3D","AnatomySkinStyle","AnatomyStyling","AnchoredSearch","And","AndersonDarlingTest","AngerJ","AngleBisector","AngleBracket","AnglePath","AnglePath3D","AngleVector","AngularGauge","Animate","AnimationCycleOffset","AnimationCycleRepetitions","AnimationDirection","AnimationDisplayTime","AnimationRate","AnimationRepetitions","AnimationRunning","AnimationRunTime","AnimationTimeIndex","Animator","AnimatorBox","AnimatorBoxOptions","AnimatorElements","Annotate","Annotation","AnnotationDelete","AnnotationKeys","AnnotationRules","AnnotationValue","Annuity","AnnuityDue","Annulus","AnomalyDetection","AnomalyDetector","AnomalyDetectorFunction","Anonymous","Antialiasing","AntihermitianMatrixQ","Antisymmetric","AntisymmetricMatrixQ","Antonyms","AnyOrder","AnySubset","AnyTrue","Apart","ApartSquareFree","APIFunction","Appearance","AppearanceElements","AppearanceRules","AppellF1","Append","AppendCheck","AppendLayer","AppendTo","Apply","ApplySides","ArcCos","ArcCosh","ArcCot","ArcCoth","ArcCsc","ArcCsch","ArcCurvature","ARCHProcess","ArcLength","ArcSec","ArcSech","ArcSin","ArcSinDistribution","ArcSinh","ArcTan","ArcTanh","Area","Arg","ArgMax","ArgMin","ArgumentCountQ","ARIMAProcess","ArithmeticGeometricMean","ARMAProcess","Around","AroundReplace","ARProcess","Array","ArrayComponents","ArrayDepth","ArrayFilter","ArrayFlatten","ArrayMesh","ArrayPad","ArrayPlot","ArrayQ","ArrayResample","ArrayReshape","ArrayRules","Arrays","Arrow","Arrow3DBox","ArrowBox","Arrowheads","ASATriangle","Ask","AskAppend","AskConfirm","AskDisplay","AskedQ","AskedValue","AskFunction","AskState","AskTemplateDisplay","AspectRatio","AspectRatioFixed","Assert","AssociateTo","Association","AssociationFormat","AssociationMap","AssociationQ","AssociationThread","AssumeDeterministic","Assuming","Assumptions","AstronomicalData","Asymptotic","AsymptoticDSolveValue","AsymptoticEqual","AsymptoticEquivalent","AsymptoticGreater","AsymptoticGreaterEqual","AsymptoticIntegrate","AsymptoticLess","AsymptoticLessEqual","AsymptoticOutputTracker","AsymptoticProduct","AsymptoticRSolveValue","AsymptoticSolve","AsymptoticSum","Asynchronous","AsynchronousTaskObject","AsynchronousTasks","Atom","AtomCoordinates","AtomCount","AtomDiagramCoordinates","AtomList","AtomQ","AttentionLayer","Attributes","Audio","AudioAmplify","AudioAnnotate","AudioAnnotationLookup","AudioBlockMap","AudioCapture","AudioChannelAssignment","AudioChannelCombine","AudioChannelMix","AudioChannels","AudioChannelSeparate","AudioData","AudioDelay","AudioDelete","AudioDevice","AudioDistance","AudioEncoding","AudioFade","AudioFrequencyShift","AudioGenerator","AudioIdentify","AudioInputDevice","AudioInsert","AudioInstanceQ","AudioIntervals","AudioJoin","AudioLabel","AudioLength","AudioLocalMeasurements","AudioLooping","AudioLoudness","AudioMeasurements","AudioNormalize","AudioOutputDevice","AudioOverlay","AudioPad","AudioPan","AudioPartition","AudioPause","AudioPitchShift","AudioPlay","AudioPlot","AudioQ","AudioRecord","AudioReplace","AudioResample","AudioReverb","AudioReverse","AudioSampleRate","AudioSpectralMap","AudioSpectralTransformation","AudioSplit","AudioStop","AudioStream","AudioStreams","AudioTimeStretch","AudioTracks","AudioTrim","AudioType","AugmentedPolyhedron","AugmentedSymmetricPolynomial","Authenticate","Authentication","AuthenticationDialog","AutoAction","Autocomplete","AutocompletionFunction","AutoCopy","AutocorrelationTest","AutoDelete","AutoEvaluateEvents","AutoGeneratedPackage","AutoIndent","AutoIndentSpacings","AutoItalicWords","AutoloadPath","AutoMatch","Automatic","AutomaticImageSize","AutoMultiplicationSymbol","AutoNumberFormatting","AutoOpenNotebooks","AutoOpenPalettes","AutoQuoteCharacters","AutoRefreshed","AutoRemove","AutorunSequencing","AutoScaling","AutoScroll","AutoSpacing","AutoStyleOptions","AutoStyleWords","AutoSubmitting","Axes","AxesEdge","AxesLabel","AxesOrigin","AxesStyle","AxiomaticTheory","Axis","BabyMonsterGroupB","Back","Background","BackgroundAppearance","BackgroundTasksSettings","Backslash","Backsubstitution","Backward","Ball","Band","BandpassFilter","BandstopFilter","BarabasiAlbertGraphDistribution","BarChart","BarChart3D","BarcodeImage","BarcodeRecognize","BaringhausHenzeTest","BarLegend","BarlowProschanImportance","BarnesG","BarOrigin","BarSpacing","BartlettHannWindow","BartlettWindow","BaseDecode","BaseEncode","BaseForm","Baseline","BaselinePosition","BaseStyle","BasicRecurrentLayer","BatchNormalizationLayer","BatchSize","BatesDistribution","BattleLemarieWavelet","BayesianMaximization","BayesianMaximizationObject","BayesianMinimization","BayesianMinimizationObject","Because","BeckmannDistribution","Beep","Before","Begin","BeginDialogPacket","BeginFrontEndInteractionPacket","BeginPackage","BellB","BellY","Below","BenfordDistribution","BeniniDistribution","BenktanderGibratDistribution","BenktanderWeibullDistribution","BernoulliB","BernoulliDistribution","BernoulliGraphDistribution","BernoulliProcess","BernsteinBasis","BesselFilterModel","BesselI","BesselJ","BesselJZero","BesselK","BesselY","BesselYZero","Beta","BetaBinomialDistribution","BetaDistribution","BetaNegativeBinomialDistribution","BetaPrimeDistribution","BetaRegularized","Between","BetweennessCentrality","BeveledPolyhedron","BezierCurve","BezierCurve3DBox","BezierCurve3DBoxOptions","BezierCurveBox","BezierCurveBoxOptions","BezierFunction","BilateralFilter","Binarize","BinaryDeserialize","BinaryDistance","BinaryFormat","BinaryImageQ","BinaryRead","BinaryReadList","BinarySerialize","BinaryWrite","BinCounts","BinLists","Binomial","BinomialDistribution","BinomialProcess","BinormalDistribution","BiorthogonalSplineWavelet","BipartiteGraphQ","BiquadraticFilterModel","BirnbaumImportance","BirnbaumSaundersDistribution","BitAnd","BitClear","BitGet","BitLength","BitNot","BitOr","BitSet","BitShiftLeft","BitShiftRight","BitXor","BiweightLocation","BiweightMidvariance","Black","BlackmanHarrisWindow","BlackmanNuttallWindow","BlackmanWindow","Blank","BlankForm","BlankNullSequence","BlankSequence","Blend","Block","BlockchainAddressData","BlockchainBase","BlockchainBlockData","BlockchainContractValue","BlockchainData","BlockchainGet","BlockchainKeyEncode","BlockchainPut","BlockchainTokenData","BlockchainTransaction","BlockchainTransactionData","BlockchainTransactionSign","BlockchainTransactionSubmit","BlockMap","BlockRandom","BlomqvistBeta","BlomqvistBetaTest","Blue","Blur","BodePlot","BohmanWindow","Bold","Bond","BondCount","BondList","BondQ","Bookmarks","Boole","BooleanConsecutiveFunction","BooleanConvert","BooleanCountingFunction","BooleanFunction","BooleanGraph","BooleanMaxterms","BooleanMinimize","BooleanMinterms","BooleanQ","BooleanRegion","Booleans","BooleanStrings","BooleanTable","BooleanVariables","BorderDimensions","BorelTannerDistribution","Bottom","BottomHatTransform","BoundaryDiscretizeGraphics","BoundaryDiscretizeRegion","BoundaryMesh","BoundaryMeshRegion","BoundaryMeshRegionQ","BoundaryStyle","BoundedRegionQ","BoundingRegion","Bounds","Box","BoxBaselineShift","BoxData","BoxDimensions","Boxed","Boxes","BoxForm","BoxFormFormatTypes","BoxFrame","BoxID","BoxMargins","BoxMatrix","BoxObject","BoxRatios","BoxRotation","BoxRotationPoint","BoxStyle","BoxWhiskerChart","Bra","BracketingBar","BraKet","BrayCurtisDistance","BreadthFirstScan","Break","BridgeData","BrightnessEqualize","BroadcastStationData","Brown","BrownForsytheTest","BrownianBridgeProcess","BrowserCategory","BSplineBasis","BSplineCurve","BSplineCurve3DBox","BSplineCurve3DBoxOptions","BSplineCurveBox","BSplineCurveBoxOptions","BSplineFunction","BSplineSurface","BSplineSurface3DBox","BSplineSurface3DBoxOptions","BubbleChart","BubbleChart3D","BubbleScale","BubbleSizes","BuildingData","BulletGauge","BusinessDayQ","ButterflyGraph","ButterworthFilterModel","Button","ButtonBar","ButtonBox","ButtonBoxOptions","ButtonCell","ButtonContents","ButtonData","ButtonEvaluator","ButtonExpandable","ButtonFrame","ButtonFunction","ButtonMargins","ButtonMinHeight","ButtonNote","ButtonNotebook","ButtonSource","ButtonStyle","ButtonStyleMenuListing","Byte","ByteArray","ByteArrayFormat","ByteArrayQ","ByteArrayToString","ByteCount","ByteOrdering","C","CachedValue","CacheGraphics","CachePersistence","CalendarConvert","CalendarData","CalendarType","Callout","CalloutMarker","CalloutStyle","CallPacket","CanberraDistance","Cancel","CancelButton","CandlestickChart","CanonicalGraph","CanonicalizePolygon","CanonicalizePolyhedron","CanonicalName","CanonicalWarpingCorrespondence","CanonicalWarpingDistance","CantorMesh","CantorStaircase","Cap","CapForm","CapitalDifferentialD","Capitalize","CapsuleShape","CaptureRunning","CardinalBSplineBasis","CarlemanLinearize","CarmichaelLambda","CaseOrdering","Cases","CaseSensitive","Cashflow","Casoratian","Catalan","CatalanNumber","Catch","CategoricalDistribution","Catenate","CatenateLayer","CauchyDistribution","CauchyWindow","CayleyGraph","CDF","CDFDeploy","CDFInformation","CDFWavelet","Ceiling","CelestialSystem","Cell","CellAutoOverwrite","CellBaseline","CellBoundingBox","CellBracketOptions","CellChangeTimes","CellContents","CellContext","CellDingbat","CellDynamicExpression","CellEditDuplicate","CellElementsBoundingBox","CellElementSpacings","CellEpilog","CellEvaluationDuplicate","CellEvaluationFunction","CellEvaluationLanguage","CellEventActions","CellFrame","CellFrameColor","CellFrameLabelMargins","CellFrameLabels","CellFrameMargins","CellGroup","CellGroupData","CellGrouping","CellGroupingRules","CellHorizontalScrolling","CellID","CellLabel","CellLabelAutoDelete","CellLabelMargins","CellLabelPositioning","CellLabelStyle","CellLabelTemplate","CellMargins","CellObject","CellOpen","CellPrint","CellProlog","Cells","CellSize","CellStyle","CellTags","CellularAutomaton","CensoredDistribution","Censoring","Center","CenterArray","CenterDot","CentralFeature","CentralMoment","CentralMomentGeneratingFunction","Cepstrogram","CepstrogramArray","CepstrumArray","CForm","ChampernowneNumber","ChangeOptions","ChannelBase","ChannelBrokerAction","ChannelDatabin","ChannelHistoryLength","ChannelListen","ChannelListener","ChannelListeners","ChannelListenerWait","ChannelObject","ChannelPreSendFunction","ChannelReceiverFunction","ChannelSend","ChannelSubscribers","ChanVeseBinarize","Character","CharacterCounts","CharacterEncoding","CharacterEncodingsPath","CharacteristicFunction","CharacteristicPolynomial","CharacterName","CharacterNormalize","CharacterRange","Characters","ChartBaseStyle","ChartElementData","ChartElementDataFunction","ChartElementFunction","ChartElements","ChartLabels","ChartLayout","ChartLegends","ChartStyle","Chebyshev1FilterModel","Chebyshev2FilterModel","ChebyshevDistance","ChebyshevT","ChebyshevU","Check","CheckAbort","CheckAll","Checkbox","CheckboxBar","CheckboxBox","CheckboxBoxOptions","ChemicalData","ChessboardDistance","ChiDistribution","ChineseRemainder","ChiSquareDistribution","ChoiceButtons","ChoiceDialog","CholeskyDecomposition","Chop","ChromaticityPlot","ChromaticityPlot3D","ChromaticPolynomial","Circle","CircleBox","CircleDot","CircleMinus","CirclePlus","CirclePoints","CircleThrough","CircleTimes","CirculantGraph","CircularOrthogonalMatrixDistribution","CircularQuaternionMatrixDistribution","CircularRealMatrixDistribution","CircularSymplecticMatrixDistribution","CircularUnitaryMatrixDistribution","Circumsphere","CityData","ClassifierFunction","ClassifierInformation","ClassifierMeasurements","ClassifierMeasurementsObject","Classify","ClassPriors","Clear","ClearAll","ClearAttributes","ClearCookies","ClearPermissions","ClearSystemCache","ClebschGordan","ClickPane","Clip","ClipboardNotebook","ClipFill","ClippingStyle","ClipPlanes","ClipPlanesStyle","ClipRange","Clock","ClockGauge","ClockwiseContourIntegral","Close","Closed","CloseKernels","ClosenessCentrality","Closing","ClosingAutoSave","ClosingEvent","ClosingSaveDialog","CloudAccountData","CloudBase","CloudConnect","CloudConnections","CloudDeploy","CloudDirectory","CloudDisconnect","CloudEvaluate","CloudExport","CloudExpression","CloudExpressions","CloudFunction","CloudGet","CloudImport","CloudLoggingData","CloudObject","CloudObjectInformation","CloudObjectInformationData","CloudObjectNameFormat","CloudObjects","CloudObjectURLType","CloudPublish","CloudPut","CloudRenderingMethod","CloudSave","CloudShare","CloudSubmit","CloudSymbol","CloudUnshare","CloudUserID","ClusterClassify","ClusterDissimilarityFunction","ClusteringComponents","ClusteringTree","CMYKColor","Coarse","CodeAssistOptions","Coefficient","CoefficientArrays","CoefficientDomain","CoefficientList","CoefficientRules","CoifletWavelet","Collect","Colon","ColonForm","ColorBalance","ColorCombine","ColorConvert","ColorCoverage","ColorData","ColorDataFunction","ColorDetect","ColorDistance","ColorFunction","ColorFunctionScaling","Colorize","ColorNegate","ColorOutput","ColorProfileData","ColorQ","ColorQuantize","ColorReplace","ColorRules","ColorSelectorSettings","ColorSeparate","ColorSetter","ColorSetterBox","ColorSetterBoxOptions","ColorSlider","ColorsNear","ColorSpace","ColorToneMapping","Column","ColumnAlignments","ColumnBackgrounds","ColumnForm","ColumnLines","ColumnsEqual","ColumnSpacings","ColumnWidths","CombinedEntityClass","CombinerFunction","CometData","CommonDefaultFormatTypes","Commonest","CommonestFilter","CommonName","CommonUnits","CommunityBoundaryStyle","CommunityGraphPlot","CommunityLabels","CommunityRegionStyle","CompanyData","CompatibleUnitQ","CompilationOptions","CompilationTarget","Compile","Compiled","CompiledCodeFunction","CompiledFunction","CompilerOptions","Complement","ComplementedEntityClass","CompleteGraph","CompleteGraphQ","CompleteKaryTree","CompletionsListPacket","Complex","ComplexContourPlot","Complexes","ComplexExpand","ComplexInfinity","ComplexityFunction","ComplexListPlot","ComplexPlot","ComplexPlot3D","ComplexRegionPlot","ComplexStreamPlot","ComplexVectorPlot","ComponentMeasurements","ComponentwiseContextMenu","Compose","ComposeList","ComposeSeries","CompositeQ","Composition","CompoundElement","CompoundExpression","CompoundPoissonDistribution","CompoundPoissonProcess","CompoundRenewalProcess","Compress","CompressedData","CompressionLevel","ComputeUncertainty","Condition","ConditionalExpression","Conditioned","Cone","ConeBox","ConfidenceLevel","ConfidenceRange","ConfidenceTransform","ConfigurationPath","ConformAudio","ConformImages","Congruent","ConicHullRegion","ConicHullRegion3DBox","ConicHullRegionBox","ConicOptimization","Conjugate","ConjugateTranspose","Conjunction","Connect","ConnectedComponents","ConnectedGraphComponents","ConnectedGraphQ","ConnectedMeshComponents","ConnectedMoleculeComponents","ConnectedMoleculeQ","ConnectionSettings","ConnectLibraryCallbackFunction","ConnectSystemModelComponents","ConnesWindow","ConoverTest","ConsoleMessage","ConsoleMessagePacket","Constant","ConstantArray","ConstantArrayLayer","ConstantImage","ConstantPlusLayer","ConstantRegionQ","Constants","ConstantTimesLayer","ConstellationData","ConstrainedMax","ConstrainedMin","Construct","Containing","ContainsAll","ContainsAny","ContainsExactly","ContainsNone","ContainsOnly","ContentFieldOptions","ContentLocationFunction","ContentObject","ContentPadding","ContentsBoundingBox","ContentSelectable","ContentSize","Context","ContextMenu","Contexts","ContextToFileName","Continuation","Continue","ContinuedFraction","ContinuedFractionK","ContinuousAction","ContinuousMarkovProcess","ContinuousTask","ContinuousTimeModelQ","ContinuousWaveletData","ContinuousWaveletTransform","ContourDetect","ContourGraphics","ContourIntegral","ContourLabels","ContourLines","ContourPlot","ContourPlot3D","Contours","ContourShading","ContourSmoothing","ContourStyle","ContraharmonicMean","ContrastiveLossLayer","Control","ControlActive","ControlAlignment","ControlGroupContentsBox","ControllabilityGramian","ControllabilityMatrix","ControllableDecomposition","ControllableModelQ","ControllerDuration","ControllerInformation","ControllerInformationData","ControllerLinking","ControllerManipulate","ControllerMethod","ControllerPath","ControllerState","ControlPlacement","ControlsRendering","ControlType","Convergents","ConversionOptions","ConversionRules","ConvertToBitmapPacket","ConvertToPostScript","ConvertToPostScriptPacket","ConvexHullMesh","ConvexPolygonQ","ConvexPolyhedronQ","ConvolutionLayer","Convolve","ConwayGroupCo1","ConwayGroupCo2","ConwayGroupCo3","CookieFunction","Cookies","CoordinateBoundingBox","CoordinateBoundingBoxArray","CoordinateBounds","CoordinateBoundsArray","CoordinateChartData","CoordinatesToolOptions","CoordinateTransform","CoordinateTransformData","CoprimeQ","Coproduct","CopulaDistribution","Copyable","CopyDatabin","CopyDirectory","CopyFile","CopyTag","CopyToClipboard","CornerFilter","CornerNeighbors","Correlation","CorrelationDistance","CorrelationFunction","CorrelationTest","Cos","Cosh","CoshIntegral","CosineDistance","CosineWindow","CosIntegral","Cot","Coth","Count","CountDistinct","CountDistinctBy","CounterAssignments","CounterBox","CounterBoxOptions","CounterClockwiseContourIntegral","CounterEvaluator","CounterFunction","CounterIncrements","CounterStyle","CounterStyleMenuListing","CountRoots","CountryData","Counts","CountsBy","Covariance","CovarianceEstimatorFunction","CovarianceFunction","CoxianDistribution","CoxIngersollRossProcess","CoxModel","CoxModelFit","CramerVonMisesTest","CreateArchive","CreateCellID","CreateChannel","CreateCloudExpression","CreateDatabin","CreateDataStructure","CreateDataSystemModel","CreateDialog","CreateDirectory","CreateDocument","CreateFile","CreateIntermediateDirectories","CreateManagedLibraryExpression","CreateNotebook","CreatePacletArchive","CreatePalette","CreatePalettePacket","CreatePermissionsGroup","CreateScheduledTask","CreateSearchIndex","CreateSystemModel","CreateTemporary","CreateUUID","CreateWindow","CriterionFunction","CriticalityFailureImportance","CriticalitySuccessImportance","CriticalSection","Cross","CrossEntropyLossLayer","CrossingCount","CrossingDetect","CrossingPolygon","CrossMatrix","Csc","Csch","CTCLossLayer","Cube","CubeRoot","Cubics","Cuboid","CuboidBox","Cumulant","CumulantGeneratingFunction","Cup","CupCap","Curl","CurlyDoubleQuote","CurlyQuote","CurrencyConvert","CurrentDate","CurrentImage","CurrentlySpeakingPacket","CurrentNotebookImage","CurrentScreenImage","CurrentValue","Curry","CurryApplied","CurvatureFlowFilter","CurveClosed","Cyan","CycleGraph","CycleIndexPolynomial","Cycles","CyclicGroup","Cyclotomic","Cylinder","CylinderBox","CylindricalDecomposition","D","DagumDistribution","DamData","DamerauLevenshteinDistance","DampingFactor","Darker","Dashed","Dashing","DatabaseConnect","DatabaseDisconnect","DatabaseReference","Databin","DatabinAdd","DatabinRemove","Databins","DatabinUpload","DataCompression","DataDistribution","DataRange","DataReversed","Dataset","DatasetDisplayPanel","DataStructure","DataStructureQ","Date","DateBounds","Dated","DateDelimiters","DateDifference","DatedUnit","DateFormat","DateFunction","DateHistogram","DateInterval","DateList","DateListLogPlot","DateListPlot","DateListStepPlot","DateObject","DateObjectQ","DateOverlapsQ","DatePattern","DatePlus","DateRange","DateReduction","DateString","DateTicksFormat","DateValue","DateWithinQ","DaubechiesWavelet","DavisDistribution","DawsonF","DayCount","DayCountConvention","DayHemisphere","DaylightQ","DayMatchQ","DayName","DayNightTerminator","DayPlus","DayRange","DayRound","DeBruijnGraph","DeBruijnSequence","Debug","DebugTag","Decapitalize","Decimal","DecimalForm","DeclareKnownSymbols","DeclarePackage","Decompose","DeconvolutionLayer","Decrement","Decrypt","DecryptFile","DedekindEta","DeepSpaceProbeData","Default","DefaultAxesStyle","DefaultBaseStyle","DefaultBoxStyle","DefaultButton","DefaultColor","DefaultControlPlacement","DefaultDuplicateCellStyle","DefaultDuration","DefaultElement","DefaultFaceGridsStyle","DefaultFieldHintStyle","DefaultFont","DefaultFontProperties","DefaultFormatType","DefaultFormatTypeForStyle","DefaultFrameStyle","DefaultFrameTicksStyle","DefaultGridLinesStyle","DefaultInlineFormatType","DefaultInputFormatType","DefaultLabelStyle","DefaultMenuStyle","DefaultNaturalLanguage","DefaultNewCellStyle","DefaultNewInlineCellStyle","DefaultNotebook","DefaultOptions","DefaultOutputFormatType","DefaultPrintPrecision","DefaultStyle","DefaultStyleDefinitions","DefaultTextFormatType","DefaultTextInlineFormatType","DefaultTicksStyle","DefaultTooltipStyle","DefaultValue","DefaultValues","Defer","DefineExternal","DefineInputStreamMethod","DefineOutputStreamMethod","DefineResourceFunction","Definition","Degree","DegreeCentrality","DegreeGraphDistribution","DegreeLexicographic","DegreeReverseLexicographic","DEigensystem","DEigenvalues","Deinitialization","Del","DelaunayMesh","Delayed","Deletable","Delete","DeleteAnomalies","DeleteBorderComponents","DeleteCases","DeleteChannel","DeleteCloudExpression","DeleteContents","DeleteDirectory","DeleteDuplicates","DeleteDuplicatesBy","DeleteFile","DeleteMissing","DeleteObject","DeletePermissionsKey","DeleteSearchIndex","DeleteSmallComponents","DeleteStopwords","DeleteWithContents","DeletionWarning","DelimitedArray","DelimitedSequence","Delimiter","DelimiterFlashTime","DelimiterMatching","Delimiters","DeliveryFunction","Dendrogram","Denominator","DensityGraphics","DensityHistogram","DensityPlot","DensityPlot3D","DependentVariables","Deploy","Deployed","Depth","DepthFirstScan","Derivative","DerivativeFilter","DerivedKey","DescriptorStateSpace","DesignMatrix","DestroyAfterEvaluation","Det","DeviceClose","DeviceConfigure","DeviceExecute","DeviceExecuteAsynchronous","DeviceObject","DeviceOpen","DeviceOpenQ","DeviceRead","DeviceReadBuffer","DeviceReadLatest","DeviceReadList","DeviceReadTimeSeries","Devices","DeviceStreams","DeviceWrite","DeviceWriteBuffer","DGaussianWavelet","DiacriticalPositioning","Diagonal","DiagonalizableMatrixQ","DiagonalMatrix","DiagonalMatrixQ","Dialog","DialogIndent","DialogInput","DialogLevel","DialogNotebook","DialogProlog","DialogReturn","DialogSymbols","Diamond","DiamondMatrix","DiceDissimilarity","DictionaryLookup","DictionaryWordQ","DifferenceDelta","DifferenceOrder","DifferenceQuotient","DifferenceRoot","DifferenceRootReduce","Differences","DifferentialD","DifferentialRoot","DifferentialRootReduce","DifferentiatorFilter","DigitalSignature","DigitBlock","DigitBlockMinimum","DigitCharacter","DigitCount","DigitQ","DihedralAngle","DihedralGroup","Dilation","DimensionalCombinations","DimensionalMeshComponents","DimensionReduce","DimensionReducerFunction","DimensionReduction","Dimensions","DiracComb","DiracDelta","DirectedEdge","DirectedEdges","DirectedGraph","DirectedGraphQ","DirectedInfinity","Direction","Directive","Directory","DirectoryName","DirectoryQ","DirectoryStack","DirichletBeta","DirichletCharacter","DirichletCondition","DirichletConvolve","DirichletDistribution","DirichletEta","DirichletL","DirichletLambda","DirichletTransform","DirichletWindow","DisableConsolePrintPacket","DisableFormatting","DiscreteAsymptotic","DiscreteChirpZTransform","DiscreteConvolve","DiscreteDelta","DiscreteHadamardTransform","DiscreteIndicator","DiscreteLimit","DiscreteLQEstimatorGains","DiscreteLQRegulatorGains","DiscreteLyapunovSolve","DiscreteMarkovProcess","DiscreteMaxLimit","DiscreteMinLimit","DiscretePlot","DiscretePlot3D","DiscreteRatio","DiscreteRiccatiSolve","DiscreteShift","DiscreteTimeModelQ","DiscreteUniformDistribution","DiscreteVariables","DiscreteWaveletData","DiscreteWaveletPacketTransform","DiscreteWaveletTransform","DiscretizeGraphics","DiscretizeRegion","Discriminant","DisjointQ","Disjunction","Disk","DiskBox","DiskMatrix","DiskSegment","Dispatch","DispatchQ","DispersionEstimatorFunction","Display","DisplayAllSteps","DisplayEndPacket","DisplayFlushImagePacket","DisplayForm","DisplayFunction","DisplayPacket","DisplayRules","DisplaySetSizePacket","DisplayString","DisplayTemporary","DisplayWith","DisplayWithRef","DisplayWithVariable","DistanceFunction","DistanceMatrix","DistanceTransform","Distribute","Distributed","DistributedContexts","DistributeDefinitions","DistributionChart","DistributionDomain","DistributionFitTest","DistributionParameterAssumptions","DistributionParameterQ","Dithering","Div","Divergence","Divide","DivideBy","Dividers","DivideSides","Divisible","Divisors","DivisorSigma","DivisorSum","DMSList","DMSString","Do","DockedCells","DocumentGenerator","DocumentGeneratorInformation","DocumentGeneratorInformationData","DocumentGenerators","DocumentNotebook","DocumentWeightingRules","Dodecahedron","DomainRegistrationInformation","DominantColors","DOSTextFormat","Dot","DotDashed","DotEqual","DotLayer","DotPlusLayer","Dotted","DoubleBracketingBar","DoubleContourIntegral","DoubleDownArrow","DoubleLeftArrow","DoubleLeftRightArrow","DoubleLeftTee","DoubleLongLeftArrow","DoubleLongLeftRightArrow","DoubleLongRightArrow","DoubleRightArrow","DoubleRightTee","DoubleUpArrow","DoubleUpDownArrow","DoubleVerticalBar","DoublyInfinite","Down","DownArrow","DownArrowBar","DownArrowUpArrow","DownLeftRightVector","DownLeftTeeVector","DownLeftVector","DownLeftVectorBar","DownRightTeeVector","DownRightVector","DownRightVectorBar","Downsample","DownTee","DownTeeArrow","DownValues","DragAndDrop","DrawEdges","DrawFrontFaces","DrawHighlighted","Drop","DropoutLayer","DSolve","DSolveValue","Dt","DualLinearProgramming","DualPolyhedron","DualSystemsModel","DumpGet","DumpSave","DuplicateFreeQ","Duration","Dynamic","DynamicBox","DynamicBoxOptions","DynamicEvaluationTimeout","DynamicGeoGraphics","DynamicImage","DynamicLocation","DynamicModule","DynamicModuleBox","DynamicModuleBoxOptions","DynamicModuleParent","DynamicModuleValues","DynamicName","DynamicNamespace","DynamicReference","DynamicSetting","DynamicUpdating","DynamicWrapper","DynamicWrapperBox","DynamicWrapperBoxOptions","E","EarthImpactData","EarthquakeData","EccentricityCentrality","Echo","EchoFunction","EclipseType","EdgeAdd","EdgeBetweennessCentrality","EdgeCapacity","EdgeCapForm","EdgeColor","EdgeConnectivity","EdgeContract","EdgeCost","EdgeCount","EdgeCoverQ","EdgeCycleMatrix","EdgeDashing","EdgeDelete","EdgeDetect","EdgeForm","EdgeIndex","EdgeJoinForm","EdgeLabeling","EdgeLabels","EdgeLabelStyle","EdgeList","EdgeOpacity","EdgeQ","EdgeRenderingFunction","EdgeRules","EdgeShapeFunction","EdgeStyle","EdgeTaggedGraph","EdgeTaggedGraphQ","EdgeTags","EdgeThickness","EdgeWeight","EdgeWeightedGraphQ","Editable","EditButtonSettings","EditCellTagsSettings","EditDistance","EffectiveInterest","Eigensystem","Eigenvalues","EigenvectorCentrality","Eigenvectors","Element","ElementData","ElementwiseLayer","ElidedForms","Eliminate","EliminationOrder","Ellipsoid","EllipticE","EllipticExp","EllipticExpPrime","EllipticF","EllipticFilterModel","EllipticK","EllipticLog","EllipticNomeQ","EllipticPi","EllipticReducedHalfPeriods","EllipticTheta","EllipticThetaPrime","EmbedCode","EmbeddedHTML","EmbeddedService","EmbeddingLayer","EmbeddingObject","EmitSound","EmphasizeSyntaxErrors","EmpiricalDistribution","Empty","EmptyGraphQ","EmptyRegion","EnableConsolePrintPacket","Enabled","Encode","Encrypt","EncryptedObject","EncryptFile","End","EndAdd","EndDialogPacket","EndFrontEndInteractionPacket","EndOfBuffer","EndOfFile","EndOfLine","EndOfString","EndPackage","EngineEnvironment","EngineeringForm","Enter","EnterExpressionPacket","EnterTextPacket","Entity","EntityClass","EntityClassList","EntityCopies","EntityFunction","EntityGroup","EntityInstance","EntityList","EntityPrefetch","EntityProperties","EntityProperty","EntityPropertyClass","EntityRegister","EntityStore","EntityStores","EntityTypeName","EntityUnregister","EntityValue","Entropy","EntropyFilter","Environment","Epilog","EpilogFunction","Equal","EqualColumns","EqualRows","EqualTilde","EqualTo","EquatedTo","Equilibrium","EquirippleFilterKernel","Equivalent","Erf","Erfc","Erfi","ErlangB","ErlangC","ErlangDistribution","Erosion","ErrorBox","ErrorBoxOptions","ErrorNorm","ErrorPacket","ErrorsDialogSettings","EscapeRadius","EstimatedBackground","EstimatedDistribution","EstimatedProcess","EstimatorGains","EstimatorRegulator","EuclideanDistance","EulerAngles","EulerCharacteristic","EulerE","EulerGamma","EulerianGraphQ","EulerMatrix","EulerPhi","Evaluatable","Evaluate","Evaluated","EvaluatePacket","EvaluateScheduledTask","EvaluationBox","EvaluationCell","EvaluationCompletionAction","EvaluationData","EvaluationElements","EvaluationEnvironment","EvaluationMode","EvaluationMonitor","EvaluationNotebook","EvaluationObject","EvaluationOrder","Evaluator","EvaluatorNames","EvenQ","EventData","EventEvaluator","EventHandler","EventHandlerTag","EventLabels","EventSeries","ExactBlackmanWindow","ExactNumberQ","ExactRootIsolation","ExampleData","Except","ExcludedForms","ExcludedLines","ExcludedPhysicalQuantities","ExcludePods","Exclusions","ExclusionsStyle","Exists","Exit","ExitDialog","ExoplanetData","Exp","Expand","ExpandAll","ExpandDenominator","ExpandFileName","ExpandNumerator","Expectation","ExpectationE","ExpectedValue","ExpGammaDistribution","ExpIntegralE","ExpIntegralEi","ExpirationDate","Exponent","ExponentFunction","ExponentialDistribution","ExponentialFamily","ExponentialGeneratingFunction","ExponentialMovingAverage","ExponentialPowerDistribution","ExponentPosition","ExponentStep","Export","ExportAutoReplacements","ExportByteArray","ExportForm","ExportPacket","ExportString","Expression","ExpressionCell","ExpressionGraph","ExpressionPacket","ExpressionUUID","ExpToTrig","ExtendedEntityClass","ExtendedGCD","Extension","ExtentElementFunction","ExtentMarkers","ExtentSize","ExternalBundle","ExternalCall","ExternalDataCharacterEncoding","ExternalEvaluate","ExternalFunction","ExternalFunctionName","ExternalIdentifier","ExternalObject","ExternalOptions","ExternalSessionObject","ExternalSessions","ExternalStorageBase","ExternalStorageDownload","ExternalStorageGet","ExternalStorageObject","ExternalStoragePut","ExternalStorageUpload","ExternalTypeSignature","ExternalValue","Extract","ExtractArchive","ExtractLayer","ExtractPacletArchive","ExtremeValueDistribution","FaceAlign","FaceForm","FaceGrids","FaceGridsStyle","FacialFeatures","Factor","FactorComplete","Factorial","Factorial2","FactorialMoment","FactorialMomentGeneratingFunction","FactorialPower","FactorInteger","FactorList","FactorSquareFree","FactorSquareFreeList","FactorTerms","FactorTermsList","Fail","Failure","FailureAction","FailureDistribution","FailureQ","False","FareySequence","FARIMAProcess","FeatureDistance","FeatureExtract","FeatureExtraction","FeatureExtractor","FeatureExtractorFunction","FeatureNames","FeatureNearest","FeatureSpacePlot","FeatureSpacePlot3D","FeatureTypes","FEDisableConsolePrintPacket","FeedbackLinearize","FeedbackSector","FeedbackSectorStyle","FeedbackType","FEEnableConsolePrintPacket","FetalGrowthData","Fibonacci","Fibonorial","FieldCompletionFunction","FieldHint","FieldHintStyle","FieldMasked","FieldSize","File","FileBaseName","FileByteCount","FileConvert","FileDate","FileExistsQ","FileExtension","FileFormat","FileHandler","FileHash","FileInformation","FileName","FileNameDepth","FileNameDialogSettings","FileNameDrop","FileNameForms","FileNameJoin","FileNames","FileNameSetter","FileNameSplit","FileNameTake","FilePrint","FileSize","FileSystemMap","FileSystemScan","FileTemplate","FileTemplateApply","FileType","FilledCurve","FilledCurveBox","FilledCurveBoxOptions","Filling","FillingStyle","FillingTransform","FilteredEntityClass","FilterRules","FinancialBond","FinancialData","FinancialDerivative","FinancialIndicator","Find","FindAnomalies","FindArgMax","FindArgMin","FindChannels","FindClique","FindClusters","FindCookies","FindCurvePath","FindCycle","FindDevices","FindDistribution","FindDistributionParameters","FindDivisions","FindEdgeCover","FindEdgeCut","FindEdgeIndependentPaths","FindEquationalProof","FindEulerianCycle","FindExternalEvaluators","FindFaces","FindFile","FindFit","FindFormula","FindFundamentalCycles","FindGeneratingFunction","FindGeoLocation","FindGeometricConjectures","FindGeometricTransform","FindGraphCommunities","FindGraphIsomorphism","FindGraphPartition","FindHamiltonianCycle","FindHamiltonianPath","FindHiddenMarkovStates","FindImageText","FindIndependentEdgeSet","FindIndependentVertexSet","FindInstance","FindIntegerNullVector","FindKClan","FindKClique","FindKClub","FindKPlex","FindLibrary","FindLinearRecurrence","FindList","FindMatchingColor","FindMaximum","FindMaximumCut","FindMaximumFlow","FindMaxValue","FindMeshDefects","FindMinimum","FindMinimumCostFlow","FindMinimumCut","FindMinValue","FindMoleculeSubstructure","FindPath","FindPeaks","FindPermutation","FindPostmanTour","FindProcessParameters","FindRepeat","FindRoot","FindSequenceFunction","FindSettings","FindShortestPath","FindShortestTour","FindSpanningTree","FindSystemModelEquilibrium","FindTextualAnswer","FindThreshold","FindTransientRepeat","FindVertexCover","FindVertexCut","FindVertexIndependentPaths","Fine","FinishDynamic","FiniteAbelianGroupCount","FiniteGroupCount","FiniteGroupData","First","FirstCase","FirstPassageTimeDistribution","FirstPosition","FischerGroupFi22","FischerGroupFi23","FischerGroupFi24Prime","FisherHypergeometricDistribution","FisherRatioTest","FisherZDistribution","Fit","FitAll","FitRegularization","FittedModel","FixedOrder","FixedPoint","FixedPointList","FlashSelection","Flat","Flatten","FlattenAt","FlattenLayer","FlatTopWindow","FlipView","Floor","FlowPolynomial","FlushPrintOutputPacket","Fold","FoldList","FoldPair","FoldPairList","FollowRedirects","Font","FontColor","FontFamily","FontForm","FontName","FontOpacity","FontPostScriptName","FontProperties","FontReencoding","FontSize","FontSlant","FontSubstitutions","FontTracking","FontVariations","FontWeight","For","ForAll","ForceVersionInstall","Format","FormatRules","FormatType","FormatTypeAutoConvert","FormatValues","FormBox","FormBoxOptions","FormControl","FormFunction","FormLayoutFunction","FormObject","FormPage","FormTheme","FormulaData","FormulaLookup","FortranForm","Forward","ForwardBackward","Fourier","FourierCoefficient","FourierCosCoefficient","FourierCosSeries","FourierCosTransform","FourierDCT","FourierDCTFilter","FourierDCTMatrix","FourierDST","FourierDSTMatrix","FourierMatrix","FourierParameters","FourierSequenceTransform","FourierSeries","FourierSinCoefficient","FourierSinSeries","FourierSinTransform","FourierTransform","FourierTrigSeries","FractionalBrownianMotionProcess","FractionalGaussianNoiseProcess","FractionalPart","FractionBox","FractionBoxOptions","FractionLine","Frame","FrameBox","FrameBoxOptions","Framed","FrameInset","FrameLabel","Frameless","FrameMargins","FrameRate","FrameStyle","FrameTicks","FrameTicksStyle","FRatioDistribution","FrechetDistribution","FreeQ","FrenetSerretSystem","FrequencySamplingFilterKernel","FresnelC","FresnelF","FresnelG","FresnelS","Friday","FrobeniusNumber","FrobeniusSolve","FromAbsoluteTime","FromCharacterCode","FromCoefficientRules","FromContinuedFraction","FromDate","FromDigits","FromDMS","FromEntity","FromJulianDate","FromLetterNumber","FromPolarCoordinates","FromRomanNumeral","FromSphericalCoordinates","FromUnixTime","Front","FrontEndDynamicExpression","FrontEndEventActions","FrontEndExecute","FrontEndObject","FrontEndResource","FrontEndResourceString","FrontEndStackSize","FrontEndToken","FrontEndTokenExecute","FrontEndValueCache","FrontEndVersion","FrontFaceColor","FrontFaceOpacity","Full","FullAxes","FullDefinition","FullForm","FullGraphics","FullInformationOutputRegulator","FullOptions","FullRegion","FullSimplify","Function","FunctionCompile","FunctionCompileExport","FunctionCompileExportByteArray","FunctionCompileExportLibrary","FunctionCompileExportString","FunctionDomain","FunctionExpand","FunctionInterpolation","FunctionPeriod","FunctionRange","FunctionSpace","FussellVeselyImportance","GaborFilter","GaborMatrix","GaborWavelet","GainMargins","GainPhaseMargins","GalaxyData","GalleryView","Gamma","GammaDistribution","GammaRegularized","GapPenalty","GARCHProcess","GatedRecurrentLayer","Gather","GatherBy","GaugeFaceElementFunction","GaugeFaceStyle","GaugeFrameElementFunction","GaugeFrameSize","GaugeFrameStyle","GaugeLabels","GaugeMarkers","GaugeStyle","GaussianFilter","GaussianIntegers","GaussianMatrix","GaussianOrthogonalMatrixDistribution","GaussianSymplecticMatrixDistribution","GaussianUnitaryMatrixDistribution","GaussianWindow","GCD","GegenbauerC","General","GeneralizedLinearModelFit","GenerateAsymmetricKeyPair","GenerateConditions","GeneratedCell","GeneratedDocumentBinding","GenerateDerivedKey","GenerateDigitalSignature","GenerateDocument","GeneratedParameters","GeneratedQuantityMagnitudes","GenerateFileSignature","GenerateHTTPResponse","GenerateSecuredAuthenticationKey","GenerateSymmetricKey","GeneratingFunction","GeneratorDescription","GeneratorHistoryLength","GeneratorOutputType","Generic","GenericCylindricalDecomposition","GenomeData","GenomeLookup","GeoAntipode","GeoArea","GeoArraySize","GeoBackground","GeoBoundingBox","GeoBounds","GeoBoundsRegion","GeoBubbleChart","GeoCenter","GeoCircle","GeoContourPlot","GeoDensityPlot","GeodesicClosing","GeodesicDilation","GeodesicErosion","GeodesicOpening","GeoDestination","GeodesyData","GeoDirection","GeoDisk","GeoDisplacement","GeoDistance","GeoDistanceList","GeoElevationData","GeoEntities","GeoGraphics","GeogravityModelData","GeoGridDirectionDifference","GeoGridLines","GeoGridLinesStyle","GeoGridPosition","GeoGridRange","GeoGridRangePadding","GeoGridUnitArea","GeoGridUnitDistance","GeoGridVector","GeoGroup","GeoHemisphere","GeoHemisphereBoundary","GeoHistogram","GeoIdentify","GeoImage","GeoLabels","GeoLength","GeoListPlot","GeoLocation","GeologicalPeriodData","GeomagneticModelData","GeoMarker","GeometricAssertion","GeometricBrownianMotionProcess","GeometricDistribution","GeometricMean","GeometricMeanFilter","GeometricOptimization","GeometricScene","GeometricTransformation","GeometricTransformation3DBox","GeometricTransformation3DBoxOptions","GeometricTransformationBox","GeometricTransformationBoxOptions","GeoModel","GeoNearest","GeoPath","GeoPosition","GeoPositionENU","GeoPositionXYZ","GeoProjection","GeoProjectionData","GeoRange","GeoRangePadding","GeoRegionValuePlot","GeoResolution","GeoScaleBar","GeoServer","GeoSmoothHistogram","GeoStreamPlot","GeoStyling","GeoStylingImageFunction","GeoVariant","GeoVector","GeoVectorENU","GeoVectorPlot","GeoVectorXYZ","GeoVisibleRegion","GeoVisibleRegionBoundary","GeoWithinQ","GeoZoomLevel","GestureHandler","GestureHandlerTag","Get","GetBoundingBoxSizePacket","GetContext","GetEnvironment","GetFileName","GetFrontEndOptionsDataPacket","GetLinebreakInformationPacket","GetMenusPacket","GetPageBreakInformationPacket","Glaisher","GlobalClusteringCoefficient","GlobalPreferences","GlobalSession","Glow","GoldenAngle","GoldenRatio","GompertzMakehamDistribution","GoochShading","GoodmanKruskalGamma","GoodmanKruskalGammaTest","Goto","Grad","Gradient","GradientFilter","GradientOrientationFilter","GrammarApply","GrammarRules","GrammarToken","Graph","Graph3D","GraphAssortativity","GraphAutomorphismGroup","GraphCenter","GraphComplement","GraphData","GraphDensity","GraphDiameter","GraphDifference","GraphDisjointUnion","GraphDistance","GraphDistanceMatrix","GraphElementData","GraphEmbedding","GraphHighlight","GraphHighlightStyle","GraphHub","Graphics","Graphics3D","Graphics3DBox","Graphics3DBoxOptions","GraphicsArray","GraphicsBaseline","GraphicsBox","GraphicsBoxOptions","GraphicsColor","GraphicsColumn","GraphicsComplex","GraphicsComplex3DBox","GraphicsComplex3DBoxOptions","GraphicsComplexBox","GraphicsComplexBoxOptions","GraphicsContents","GraphicsData","GraphicsGrid","GraphicsGridBox","GraphicsGroup","GraphicsGroup3DBox","GraphicsGroup3DBoxOptions","GraphicsGroupBox","GraphicsGroupBoxOptions","GraphicsGrouping","GraphicsHighlightColor","GraphicsRow","GraphicsSpacing","GraphicsStyle","GraphIntersection","GraphLayout","GraphLinkEfficiency","GraphPeriphery","GraphPlot","GraphPlot3D","GraphPower","GraphPropertyDistribution","GraphQ","GraphRadius","GraphReciprocity","GraphRoot","GraphStyle","GraphUnion","Gray","GrayLevel","Greater","GreaterEqual","GreaterEqualLess","GreaterEqualThan","GreaterFullEqual","GreaterGreater","GreaterLess","GreaterSlantEqual","GreaterThan","GreaterTilde","Green","GreenFunction","Grid","GridBaseline","GridBox","GridBoxAlignment","GridBoxBackground","GridBoxDividers","GridBoxFrame","GridBoxItemSize","GridBoxItemStyle","GridBoxOptions","GridBoxSpacings","GridCreationSettings","GridDefaultElement","GridElementStyleOptions","GridFrame","GridFrameMargins","GridGraph","GridLines","GridLinesStyle","GroebnerBasis","GroupActionBase","GroupBy","GroupCentralizer","GroupElementFromWord","GroupElementPosition","GroupElementQ","GroupElements","GroupElementToWord","GroupGenerators","Groupings","GroupMultiplicationTable","GroupOrbits","GroupOrder","GroupPageBreakWithin","GroupSetwiseStabilizer","GroupStabilizer","GroupStabilizerChain","GroupTogetherGrouping","GroupTogetherNestedGrouping","GrowCutComponents","Gudermannian","GuidedFilter","GumbelDistribution","HaarWavelet","HadamardMatrix","HalfLine","HalfNormalDistribution","HalfPlane","HalfSpace","HalftoneShading","HamiltonianGraphQ","HammingDistance","HammingWindow","HandlerFunctions","HandlerFunctionsKeys","HankelH1","HankelH2","HankelMatrix","HankelTransform","HannPoissonWindow","HannWindow","HaradaNortonGroupHN","HararyGraph","HarmonicMean","HarmonicMeanFilter","HarmonicNumber","Hash","HatchFilling","HatchShading","Haversine","HazardFunction","Head","HeadCompose","HeaderAlignment","HeaderBackground","HeaderDisplayFunction","HeaderLines","HeaderSize","HeaderStyle","Heads","HeavisideLambda","HeavisidePi","HeavisideTheta","HeldGroupHe","HeldPart","HelpBrowserLookup","HelpBrowserNotebook","HelpBrowserSettings","Here","HermiteDecomposition","HermiteH","HermitianMatrixQ","HessenbergDecomposition","Hessian","HeunB","HeunBPrime","HeunC","HeunCPrime","HeunD","HeunDPrime","HeunG","HeunGPrime","HeunT","HeunTPrime","HexadecimalCharacter","Hexahedron","HexahedronBox","HexahedronBoxOptions","HiddenItems","HiddenMarkovProcess","HiddenSurface","Highlighted","HighlightGraph","HighlightImage","HighlightMesh","HighpassFilter","HigmanSimsGroupHS","HilbertCurve","HilbertFilter","HilbertMatrix","Histogram","Histogram3D","HistogramDistribution","HistogramList","HistogramTransform","HistogramTransformInterpolation","HistoricalPeriodData","HitMissTransform","HITSCentrality","HjorthDistribution","HodgeDual","HoeffdingD","HoeffdingDTest","Hold","HoldAll","HoldAllComplete","HoldComplete","HoldFirst","HoldForm","HoldPattern","HoldRest","HolidayCalendar","HomeDirectory","HomePage","Horizontal","HorizontalForm","HorizontalGauge","HorizontalScrollPosition","HornerForm","HostLookup","HotellingTSquareDistribution","HoytDistribution","HTMLSave","HTTPErrorResponse","HTTPRedirect","HTTPRequest","HTTPRequestData","HTTPResponse","Hue","HumanGrowthData","HumpDownHump","HumpEqual","HurwitzLerchPhi","HurwitzZeta","HyperbolicDistribution","HypercubeGraph","HyperexponentialDistribution","Hyperfactorial","Hypergeometric0F1","Hypergeometric0F1Regularized","Hypergeometric1F1","Hypergeometric1F1Regularized","Hypergeometric2F1","Hypergeometric2F1Regularized","HypergeometricDistribution","HypergeometricPFQ","HypergeometricPFQRegularized","HypergeometricU","Hyperlink","HyperlinkAction","HyperlinkCreationSettings","Hyperplane","Hyphenation","HyphenationOptions","HypoexponentialDistribution","HypothesisTestData","I","IconData","Iconize","IconizedObject","IconRules","Icosahedron","Identity","IdentityMatrix","If","IgnoreCase","IgnoreDiacritics","IgnorePunctuation","IgnoreSpellCheck","IgnoringInactive","Im","Image","Image3D","Image3DProjection","Image3DSlices","ImageAccumulate","ImageAdd","ImageAdjust","ImageAlign","ImageApply","ImageApplyIndexed","ImageAspectRatio","ImageAssemble","ImageAugmentationLayer","ImageBoundingBoxes","ImageCache","ImageCacheValid","ImageCapture","ImageCaptureFunction","ImageCases","ImageChannels","ImageClip","ImageCollage","ImageColorSpace","ImageCompose","ImageContainsQ","ImageContents","ImageConvolve","ImageCooccurrence","ImageCorners","ImageCorrelate","ImageCorrespondingPoints","ImageCrop","ImageData","ImageDeconvolve","ImageDemosaic","ImageDifference","ImageDimensions","ImageDisplacements","ImageDistance","ImageEffect","ImageExposureCombine","ImageFeatureTrack","ImageFileApply","ImageFileFilter","ImageFileScan","ImageFilter","ImageFocusCombine","ImageForestingComponents","ImageFormattingWidth","ImageForwardTransformation","ImageGraphics","ImageHistogram","ImageIdentify","ImageInstanceQ","ImageKeypoints","ImageLabels","ImageLegends","ImageLevels","ImageLines","ImageMargins","ImageMarker","ImageMarkers","ImageMeasurements","ImageMesh","ImageMultiply","ImageOffset","ImagePad","ImagePadding","ImagePartition","ImagePeriodogram","ImagePerspectiveTransformation","ImagePosition","ImagePreviewFunction","ImagePyramid","ImagePyramidApply","ImageQ","ImageRangeCache","ImageRecolor","ImageReflect","ImageRegion","ImageResize","ImageResolution","ImageRestyle","ImageRotate","ImageRotated","ImageSaliencyFilter","ImageScaled","ImageScan","ImageSize","ImageSizeAction","ImageSizeCache","ImageSizeMultipliers","ImageSizeRaw","ImageSubtract","ImageTake","ImageTransformation","ImageTrim","ImageType","ImageValue","ImageValuePositions","ImagingDevice","ImplicitRegion","Implies","Import","ImportAutoReplacements","ImportByteArray","ImportOptions","ImportString","ImprovementImportance","In","Inactivate","Inactive","IncidenceGraph","IncidenceList","IncidenceMatrix","IncludeAromaticBonds","IncludeConstantBasis","IncludeDefinitions","IncludeDirectories","IncludeFileExtension","IncludeGeneratorTasks","IncludeHydrogens","IncludeInflections","IncludeMetaInformation","IncludePods","IncludeQuantities","IncludeRelatedTables","IncludeSingularTerm","IncludeWindowTimes","Increment","IndefiniteMatrixQ","Indent","IndentingNewlineSpacings","IndentMaxFraction","IndependenceTest","IndependentEdgeSetQ","IndependentPhysicalQuantity","IndependentUnit","IndependentUnitDimension","IndependentVertexSetQ","Indeterminate","IndeterminateThreshold","IndexCreationOptions","Indexed","IndexEdgeTaggedGraph","IndexGraph","IndexTag","Inequality","InexactNumberQ","InexactNumbers","InfiniteFuture","InfiniteLine","InfinitePast","InfinitePlane","Infinity","Infix","InflationAdjust","InflationMethod","Information","InformationData","InformationDataGrid","Inherited","InheritScope","InhomogeneousPoissonProcess","InitialEvaluationHistory","Initialization","InitializationCell","InitializationCellEvaluation","InitializationCellWarning","InitializationObjects","InitializationValue","Initialize","InitialSeeding","InlineCounterAssignments","InlineCounterIncrements","InlineRules","Inner","InnerPolygon","InnerPolyhedron","Inpaint","Input","InputAliases","InputAssumptions","InputAutoReplacements","InputField","InputFieldBox","InputFieldBoxOptions","InputForm","InputGrouping","InputNamePacket","InputNotebook","InputPacket","InputSettings","InputStream","InputString","InputStringPacket","InputToBoxFormPacket","Insert","InsertionFunction","InsertionPointObject","InsertLinebreaks","InsertResults","Inset","Inset3DBox","Inset3DBoxOptions","InsetBox","InsetBoxOptions","Insphere","Install","InstallService","InstanceNormalizationLayer","InString","Integer","IntegerDigits","IntegerExponent","IntegerLength","IntegerName","IntegerPart","IntegerPartitions","IntegerQ","IntegerReverse","Integers","IntegerString","Integral","Integrate","Interactive","InteractiveTradingChart","Interlaced","Interleaving","InternallyBalancedDecomposition","InterpolatingFunction","InterpolatingPolynomial","Interpolation","InterpolationOrder","InterpolationPoints","InterpolationPrecision","Interpretation","InterpretationBox","InterpretationBoxOptions","InterpretationFunction","Interpreter","InterpretTemplate","InterquartileRange","Interrupt","InterruptSettings","IntersectedEntityClass","IntersectingQ","Intersection","Interval","IntervalIntersection","IntervalMarkers","IntervalMarkersStyle","IntervalMemberQ","IntervalSlider","IntervalUnion","Into","Inverse","InverseBetaRegularized","InverseCDF","InverseChiSquareDistribution","InverseContinuousWaveletTransform","InverseDistanceTransform","InverseEllipticNomeQ","InverseErf","InverseErfc","InverseFourier","InverseFourierCosTransform","InverseFourierSequenceTransform","InverseFourierSinTransform","InverseFourierTransform","InverseFunction","InverseFunctions","InverseGammaDistribution","InverseGammaRegularized","InverseGaussianDistribution","InverseGudermannian","InverseHankelTransform","InverseHaversine","InverseImagePyramid","InverseJacobiCD","InverseJacobiCN","InverseJacobiCS","InverseJacobiDC","InverseJacobiDN","InverseJacobiDS","InverseJacobiNC","InverseJacobiND","InverseJacobiNS","InverseJacobiSC","InverseJacobiSD","InverseJacobiSN","InverseLaplaceTransform","InverseMellinTransform","InversePermutation","InverseRadon","InverseRadonTransform","InverseSeries","InverseShortTimeFourier","InverseSpectrogram","InverseSurvivalFunction","InverseTransformedRegion","InverseWaveletTransform","InverseWeierstrassP","InverseWishartMatrixDistribution","InverseZTransform","Invisible","InvisibleApplication","InvisibleTimes","IPAddress","IrreduciblePolynomialQ","IslandData","IsolatingInterval","IsomorphicGraphQ","IsotopeData","Italic","Item","ItemAspectRatio","ItemBox","ItemBoxOptions","ItemDisplayFunction","ItemSize","ItemStyle","ItoProcess","JaccardDissimilarity","JacobiAmplitude","Jacobian","JacobiCD","JacobiCN","JacobiCS","JacobiDC","JacobiDN","JacobiDS","JacobiNC","JacobiND","JacobiNS","JacobiP","JacobiSC","JacobiSD","JacobiSN","JacobiSymbol","JacobiZeta","JankoGroupJ1","JankoGroupJ2","JankoGroupJ3","JankoGroupJ4","JarqueBeraALMTest","JohnsonDistribution","Join","JoinAcross","Joined","JoinedCurve","JoinedCurveBox","JoinedCurveBoxOptions","JoinForm","JordanDecomposition","JordanModelDecomposition","JulianDate","JuliaSetBoettcher","JuliaSetIterationCount","JuliaSetPlot","JuliaSetPoints","K","KagiChart","KaiserBesselWindow","KaiserWindow","KalmanEstimator","KalmanFilter","KarhunenLoeveDecomposition","KaryTree","KatzCentrality","KCoreComponents","KDistribution","KEdgeConnectedComponents","KEdgeConnectedGraphQ","KeepExistingVersion","KelvinBei","KelvinBer","KelvinKei","KelvinKer","KendallTau","KendallTauTest","KernelExecute","KernelFunction","KernelMixtureDistribution","KernelObject","Kernels","Ket","Key","KeyCollisionFunction","KeyComplement","KeyDrop","KeyDropFrom","KeyExistsQ","KeyFreeQ","KeyIntersection","KeyMap","KeyMemberQ","KeypointStrength","Keys","KeySelect","KeySort","KeySortBy","KeyTake","KeyUnion","KeyValueMap","KeyValuePattern","Khinchin","KillProcess","KirchhoffGraph","KirchhoffMatrix","KleinInvariantJ","KnapsackSolve","KnightTourGraph","KnotData","KnownUnitQ","KochCurve","KolmogorovSmirnovTest","KroneckerDelta","KroneckerModelDecomposition","KroneckerProduct","KroneckerSymbol","KuiperTest","KumaraswamyDistribution","Kurtosis","KuwaharaFilter","KVertexConnectedComponents","KVertexConnectedGraphQ","LABColor","Label","Labeled","LabeledSlider","LabelingFunction","LabelingSize","LabelStyle","LabelVisibility","LaguerreL","LakeData","LambdaComponents","LambertW","LaminaData","LanczosWindow","LandauDistribution","Language","LanguageCategory","LanguageData","LanguageIdentify","LanguageOptions","LaplaceDistribution","LaplaceTransform","Laplacian","LaplacianFilter","LaplacianGaussianFilter","Large","Larger","Last","Latitude","LatitudeLongitude","LatticeData","LatticeReduce","Launch","LaunchKernels","LayeredGraphPlot","LayerSizeFunction","LayoutInformation","LCHColor","LCM","LeaderSize","LeafCount","LeapYearQ","LearnDistribution","LearnedDistribution","LearningRate","LearningRateMultipliers","LeastSquares","LeastSquaresFilterKernel","Left","LeftArrow","LeftArrowBar","LeftArrowRightArrow","LeftDownTeeVector","LeftDownVector","LeftDownVectorBar","LeftRightArrow","LeftRightVector","LeftTee","LeftTeeArrow","LeftTeeVector","LeftTriangle","LeftTriangleBar","LeftTriangleEqual","LeftUpDownVector","LeftUpTeeVector","LeftUpVector","LeftUpVectorBar","LeftVector","LeftVectorBar","LegendAppearance","Legended","LegendFunction","LegendLabel","LegendLayout","LegendMargins","LegendMarkers","LegendMarkerSize","LegendreP","LegendreQ","LegendreType","Length","LengthWhile","LerchPhi","Less","LessEqual","LessEqualGreater","LessEqualThan","LessFullEqual","LessGreater","LessLess","LessSlantEqual","LessThan","LessTilde","LetterCharacter","LetterCounts","LetterNumber","LetterQ","Level","LeveneTest","LeviCivitaTensor","LevyDistribution","Lexicographic","LibraryDataType","LibraryFunction","LibraryFunctionError","LibraryFunctionInformation","LibraryFunctionLoad","LibraryFunctionUnload","LibraryLoad","LibraryUnload","LicenseID","LiftingFilterData","LiftingWaveletTransform","LightBlue","LightBrown","LightCyan","Lighter","LightGray","LightGreen","Lighting","LightingAngle","LightMagenta","LightOrange","LightPink","LightPurple","LightRed","LightSources","LightYellow","Likelihood","Limit","LimitsPositioning","LimitsPositioningTokens","LindleyDistribution","Line","Line3DBox","Line3DBoxOptions","LinearFilter","LinearFractionalOptimization","LinearFractionalTransform","LinearGradientImage","LinearizingTransformationData","LinearLayer","LinearModelFit","LinearOffsetFunction","LinearOptimization","LinearProgramming","LinearRecurrence","LinearSolve","LinearSolveFunction","LineBox","LineBoxOptions","LineBreak","LinebreakAdjustments","LineBreakChart","LinebreakSemicolonWeighting","LineBreakWithin","LineColor","LineGraph","LineIndent","LineIndentMaxFraction","LineIntegralConvolutionPlot","LineIntegralConvolutionScale","LineLegend","LineOpacity","LineSpacing","LineWrapParts","LinkActivate","LinkClose","LinkConnect","LinkConnectedQ","LinkCreate","LinkError","LinkFlush","LinkFunction","LinkHost","LinkInterrupt","LinkLaunch","LinkMode","LinkObject","LinkOpen","LinkOptions","LinkPatterns","LinkProtocol","LinkRankCentrality","LinkRead","LinkReadHeld","LinkReadyQ","Links","LinkService","LinkWrite","LinkWriteHeld","LiouvilleLambda","List","Listable","ListAnimate","ListContourPlot","ListContourPlot3D","ListConvolve","ListCorrelate","ListCurvePathPlot","ListDeconvolve","ListDensityPlot","ListDensityPlot3D","Listen","ListFormat","ListFourierSequenceTransform","ListInterpolation","ListLineIntegralConvolutionPlot","ListLinePlot","ListLogLinearPlot","ListLogLogPlot","ListLogPlot","ListPicker","ListPickerBox","ListPickerBoxBackground","ListPickerBoxOptions","ListPlay","ListPlot","ListPlot3D","ListPointPlot3D","ListPolarPlot","ListQ","ListSliceContourPlot3D","ListSliceDensityPlot3D","ListSliceVectorPlot3D","ListStepPlot","ListStreamDensityPlot","ListStreamPlot","ListSurfacePlot3D","ListVectorDensityPlot","ListVectorPlot","ListVectorPlot3D","ListZTransform","Literal","LiteralSearch","LocalAdaptiveBinarize","LocalCache","LocalClusteringCoefficient","LocalizeDefinitions","LocalizeVariables","LocalObject","LocalObjects","LocalResponseNormalizationLayer","LocalSubmit","LocalSymbol","LocalTime","LocalTimeZone","LocationEquivalenceTest","LocationTest","Locator","LocatorAutoCreate","LocatorBox","LocatorBoxOptions","LocatorCentering","LocatorPane","LocatorPaneBox","LocatorPaneBoxOptions","LocatorRegion","Locked","Log","Log10","Log2","LogBarnesG","LogGamma","LogGammaDistribution","LogicalExpand","LogIntegral","LogisticDistribution","LogisticSigmoid","LogitModelFit","LogLikelihood","LogLinearPlot","LogLogisticDistribution","LogLogPlot","LogMultinormalDistribution","LogNormalDistribution","LogPlot","LogRankTest","LogSeriesDistribution","LongEqual","Longest","LongestCommonSequence","LongestCommonSequencePositions","LongestCommonSubsequence","LongestCommonSubsequencePositions","LongestMatch","LongestOrderedSequence","LongForm","Longitude","LongLeftArrow","LongLeftRightArrow","LongRightArrow","LongShortTermMemoryLayer","Lookup","Loopback","LoopFreeGraphQ","Looping","LossFunction","LowerCaseQ","LowerLeftArrow","LowerRightArrow","LowerTriangularize","LowerTriangularMatrixQ","LowpassFilter","LQEstimatorGains","LQGRegulator","LQOutputRegulatorGains","LQRegulatorGains","LUBackSubstitution","LucasL","LuccioSamiComponents","LUDecomposition","LunarEclipse","LUVColor","LyapunovSolve","LyonsGroupLy","MachineID","MachineName","MachineNumberQ","MachinePrecision","MacintoshSystemPageSetup","Magenta","Magnification","Magnify","MailAddressValidation","MailExecute","MailFolder","MailItem","MailReceiverFunction","MailResponseFunction","MailSearch","MailServerConnect","MailServerConnection","MailSettings","MainSolve","MaintainDynamicCaches","Majority","MakeBoxes","MakeExpression","MakeRules","ManagedLibraryExpressionID","ManagedLibraryExpressionQ","MandelbrotSetBoettcher","MandelbrotSetDistance","MandelbrotSetIterationCount","MandelbrotSetMemberQ","MandelbrotSetPlot","MangoldtLambda","ManhattanDistance","Manipulate","Manipulator","MannedSpaceMissionData","MannWhitneyTest","MantissaExponent","Manual","Map","MapAll","MapAt","MapIndexed","MAProcess","MapThread","MarchenkoPasturDistribution","MarcumQ","MardiaCombinedTest","MardiaKurtosisTest","MardiaSkewnessTest","MarginalDistribution","MarkovProcessProperties","Masking","MatchingDissimilarity","MatchLocalNameQ","MatchLocalNames","MatchQ","Material","MathematicalFunctionData","MathematicaNotation","MathieuC","MathieuCharacteristicA","MathieuCharacteristicB","MathieuCharacteristicExponent","MathieuCPrime","MathieuGroupM11","MathieuGroupM12","MathieuGroupM22","MathieuGroupM23","MathieuGroupM24","MathieuS","MathieuSPrime","MathMLForm","MathMLText","Matrices","MatrixExp","MatrixForm","MatrixFunction","MatrixLog","MatrixNormalDistribution","MatrixPlot","MatrixPower","MatrixPropertyDistribution","MatrixQ","MatrixRank","MatrixTDistribution","Max","MaxBend","MaxCellMeasure","MaxColorDistance","MaxDate","MaxDetect","MaxDuration","MaxExtraBandwidths","MaxExtraConditions","MaxFeatureDisplacement","MaxFeatures","MaxFilter","MaximalBy","Maximize","MaxItems","MaxIterations","MaxLimit","MaxMemoryUsed","MaxMixtureKernels","MaxOverlapFraction","MaxPlotPoints","MaxPoints","MaxRecursion","MaxStableDistribution","MaxStepFraction","MaxSteps","MaxStepSize","MaxTrainingRounds","MaxValue","MaxwellDistribution","MaxWordGap","McLaughlinGroupMcL","Mean","MeanAbsoluteLossLayer","MeanAround","MeanClusteringCoefficient","MeanDegreeConnectivity","MeanDeviation","MeanFilter","MeanGraphDistance","MeanNeighborDegree","MeanShift","MeanShiftFilter","MeanSquaredLossLayer","Median","MedianDeviation","MedianFilter","MedicalTestData","Medium","MeijerG","MeijerGReduce","MeixnerDistribution","MellinConvolve","MellinTransform","MemberQ","MemoryAvailable","MemoryConstrained","MemoryConstraint","MemoryInUse","MengerMesh","Menu","MenuAppearance","MenuCommandKey","MenuEvaluator","MenuItem","MenuList","MenuPacket","MenuSortingValue","MenuStyle","MenuView","Merge","MergeDifferences","MergingFunction","MersennePrimeExponent","MersennePrimeExponentQ","Mesh","MeshCellCentroid","MeshCellCount","MeshCellHighlight","MeshCellIndex","MeshCellLabel","MeshCellMarker","MeshCellMeasure","MeshCellQuality","MeshCells","MeshCellShapeFunction","MeshCellStyle","MeshConnectivityGraph","MeshCoordinates","MeshFunctions","MeshPrimitives","MeshQualityGoal","MeshRange","MeshRefinementFunction","MeshRegion","MeshRegionQ","MeshShading","MeshStyle","Message","MessageDialog","MessageList","MessageName","MessageObject","MessageOptions","MessagePacket","Messages","MessagesNotebook","MetaCharacters","MetaInformation","MeteorShowerData","Method","MethodOptions","MexicanHatWavelet","MeyerWavelet","Midpoint","Min","MinColorDistance","MinDate","MinDetect","MineralData","MinFilter","MinimalBy","MinimalPolynomial","MinimalStateSpaceModel","Minimize","MinimumTimeIncrement","MinIntervalSize","MinkowskiQuestionMark","MinLimit","MinMax","MinorPlanetData","Minors","MinRecursion","MinSize","MinStableDistribution","Minus","MinusPlus","MinValue","Missing","MissingBehavior","MissingDataMethod","MissingDataRules","MissingQ","MissingString","MissingStyle","MissingValuePattern","MittagLefflerE","MixedFractionParts","MixedGraphQ","MixedMagnitude","MixedRadix","MixedRadixQuantity","MixedUnit","MixtureDistribution","Mod","Modal","Mode","Modular","ModularInverse","ModularLambda","Module","Modulus","MoebiusMu","Molecule","MoleculeContainsQ","MoleculeEquivalentQ","MoleculeGraph","MoleculeModify","MoleculePattern","MoleculePlot","MoleculePlot3D","MoleculeProperty","MoleculeQ","MoleculeRecognize","MoleculeValue","Moment","Momentary","MomentConvert","MomentEvaluate","MomentGeneratingFunction","MomentOfInertia","Monday","Monitor","MonomialList","MonomialOrder","MonsterGroupM","MoonPhase","MoonPosition","MorletWavelet","MorphologicalBinarize","MorphologicalBranchPoints","MorphologicalComponents","MorphologicalEulerNumber","MorphologicalGraph","MorphologicalPerimeter","MorphologicalTransform","MortalityData","Most","MountainData","MouseAnnotation","MouseAppearance","MouseAppearanceTag","MouseButtons","Mouseover","MousePointerNote","MousePosition","MovieData","MovingAverage","MovingMap","MovingMedian","MoyalDistribution","Multicolumn","MultiedgeStyle","MultigraphQ","MultilaunchWarning","MultiLetterItalics","MultiLetterStyle","MultilineFunction","Multinomial","MultinomialDistribution","MultinormalDistribution","MultiplicativeOrder","Multiplicity","MultiplySides","Multiselection","MultivariateHypergeometricDistribution","MultivariatePoissonDistribution","MultivariateTDistribution","N","NakagamiDistribution","NameQ","Names","NamespaceBox","NamespaceBoxOptions","Nand","NArgMax","NArgMin","NBernoulliB","NBodySimulation","NBodySimulationData","NCache","NDEigensystem","NDEigenvalues","NDSolve","NDSolveValue","Nearest","NearestFunction","NearestMeshCells","NearestNeighborGraph","NearestTo","NebulaData","NeedCurrentFrontEndPackagePacket","NeedCurrentFrontEndSymbolsPacket","NeedlemanWunschSimilarity","Needs","Negative","NegativeBinomialDistribution","NegativeDefiniteMatrixQ","NegativeIntegers","NegativeMultinomialDistribution","NegativeRationals","NegativeReals","NegativeSemidefiniteMatrixQ","NeighborhoodData","NeighborhoodGraph","Nest","NestedGreaterGreater","NestedLessLess","NestedScriptRules","NestGraph","NestList","NestWhile","NestWhileList","NetAppend","NetBidirectionalOperator","NetChain","NetDecoder","NetDelete","NetDrop","NetEncoder","NetEvaluationMode","NetExtract","NetFlatten","NetFoldOperator","NetGANOperator","NetGraph","NetInformation","NetInitialize","NetInsert","NetInsertSharedArrays","NetJoin","NetMapOperator","NetMapThreadOperator","NetMeasurements","NetModel","NetNestOperator","NetPairEmbeddingOperator","NetPort","NetPortGradient","NetPrepend","NetRename","NetReplace","NetReplacePart","NetSharedArray","NetStateObject","NetTake","NetTrain","NetTrainResultsObject","NetworkPacketCapture","NetworkPacketRecording","NetworkPacketRecordingDuring","NetworkPacketTrace","NeumannValue","NevilleThetaC","NevilleThetaD","NevilleThetaN","NevilleThetaS","NewPrimitiveStyle","NExpectation","Next","NextCell","NextDate","NextPrime","NextScheduledTaskTime","NHoldAll","NHoldFirst","NHoldRest","NicholsGridLines","NicholsPlot","NightHemisphere","NIntegrate","NMaximize","NMaxValue","NMinimize","NMinValue","NominalVariables","NonAssociative","NoncentralBetaDistribution","NoncentralChiSquareDistribution","NoncentralFRatioDistribution","NoncentralStudentTDistribution","NonCommutativeMultiply","NonConstants","NondimensionalizationTransform","None","NoneTrue","NonlinearModelFit","NonlinearStateSpaceModel","NonlocalMeansFilter","NonNegative","NonNegativeIntegers","NonNegativeRationals","NonNegativeReals","NonPositive","NonPositiveIntegers","NonPositiveRationals","NonPositiveReals","Nor","NorlundB","Norm","Normal","NormalDistribution","NormalGrouping","NormalizationLayer","Normalize","Normalized","NormalizedSquaredEuclideanDistance","NormalMatrixQ","NormalsFunction","NormFunction","Not","NotCongruent","NotCupCap","NotDoubleVerticalBar","Notebook","NotebookApply","NotebookAutoSave","NotebookClose","NotebookConvertSettings","NotebookCreate","NotebookCreateReturnObject","NotebookDefault","NotebookDelete","NotebookDirectory","NotebookDynamicExpression","NotebookEvaluate","NotebookEventActions","NotebookFileName","NotebookFind","NotebookFindReturnObject","NotebookGet","NotebookGetLayoutInformationPacket","NotebookGetMisspellingsPacket","NotebookImport","NotebookInformation","NotebookInterfaceObject","NotebookLocate","NotebookObject","NotebookOpen","NotebookOpenReturnObject","NotebookPath","NotebookPrint","NotebookPut","NotebookPutReturnObject","NotebookRead","NotebookResetGeneratedCells","Notebooks","NotebookSave","NotebookSaveAs","NotebookSelection","NotebookSetupLayoutInformationPacket","NotebooksMenu","NotebookTemplate","NotebookWrite","NotElement","NotEqualTilde","NotExists","NotGreater","NotGreaterEqual","NotGreaterFullEqual","NotGreaterGreater","NotGreaterLess","NotGreaterSlantEqual","NotGreaterTilde","Nothing","NotHumpDownHump","NotHumpEqual","NotificationFunction","NotLeftTriangle","NotLeftTriangleBar","NotLeftTriangleEqual","NotLess","NotLessEqual","NotLessFullEqual","NotLessGreater","NotLessLess","NotLessSlantEqual","NotLessTilde","NotNestedGreaterGreater","NotNestedLessLess","NotPrecedes","NotPrecedesEqual","NotPrecedesSlantEqual","NotPrecedesTilde","NotReverseElement","NotRightTriangle","NotRightTriangleBar","NotRightTriangleEqual","NotSquareSubset","NotSquareSubsetEqual","NotSquareSuperset","NotSquareSupersetEqual","NotSubset","NotSubsetEqual","NotSucceeds","NotSucceedsEqual","NotSucceedsSlantEqual","NotSucceedsTilde","NotSuperset","NotSupersetEqual","NotTilde","NotTildeEqual","NotTildeFullEqual","NotTildeTilde","NotVerticalBar","Now","NoWhitespace","NProbability","NProduct","NProductFactors","NRoots","NSolve","NSum","NSumTerms","NuclearExplosionData","NuclearReactorData","Null","NullRecords","NullSpace","NullWords","Number","NumberCompose","NumberDecompose","NumberExpand","NumberFieldClassNumber","NumberFieldDiscriminant","NumberFieldFundamentalUnits","NumberFieldIntegralBasis","NumberFieldNormRepresentatives","NumberFieldRegulator","NumberFieldRootsOfUnity","NumberFieldSignature","NumberForm","NumberFormat","NumberLinePlot","NumberMarks","NumberMultiplier","NumberPadding","NumberPoint","NumberQ","NumberSeparator","NumberSigns","NumberString","Numerator","NumeratorDenominator","NumericalOrder","NumericalSort","NumericArray","NumericArrayQ","NumericArrayType","NumericFunction","NumericQ","NuttallWindow","NValues","NyquistGridLines","NyquistPlot","O","ObservabilityGramian","ObservabilityMatrix","ObservableDecomposition","ObservableModelQ","OceanData","Octahedron","OddQ","Off","Offset","OLEData","On","ONanGroupON","Once","OneIdentity","Opacity","OpacityFunction","OpacityFunctionScaling","Open","OpenAppend","Opener","OpenerBox","OpenerBoxOptions","OpenerView","OpenFunctionInspectorPacket","Opening","OpenRead","OpenSpecialOptions","OpenTemporary","OpenWrite","Operate","OperatingSystem","OperatorApplied","OptimumFlowData","Optional","OptionalElement","OptionInspectorSettings","OptionQ","Options","OptionsPacket","OptionsPattern","OptionValue","OptionValueBox","OptionValueBoxOptions","Or","Orange","Order","OrderDistribution","OrderedQ","Ordering","OrderingBy","OrderingLayer","Orderless","OrderlessPatternSequence","OrnsteinUhlenbeckProcess","Orthogonalize","OrthogonalMatrixQ","Out","Outer","OuterPolygon","OuterPolyhedron","OutputAutoOverwrite","OutputControllabilityMatrix","OutputControllableModelQ","OutputForm","OutputFormData","OutputGrouping","OutputMathEditExpression","OutputNamePacket","OutputResponse","OutputSizeLimit","OutputStream","Over","OverBar","OverDot","Overflow","OverHat","Overlaps","Overlay","OverlayBox","OverlayBoxOptions","Overscript","OverscriptBox","OverscriptBoxOptions","OverTilde","OverVector","OverwriteTarget","OwenT","OwnValues","Package","PackingMethod","PackPaclet","PacletDataRebuild","PacletDirectoryAdd","PacletDirectoryLoad","PacletDirectoryRemove","PacletDirectoryUnload","PacletDisable","PacletEnable","PacletFind","PacletFindRemote","PacletInformation","PacletInstall","PacletInstallSubmit","PacletNewerQ","PacletObject","PacletObjectQ","PacletSite","PacletSiteObject","PacletSiteRegister","PacletSites","PacletSiteUnregister","PacletSiteUpdate","PacletUninstall","PacletUpdate","PaddedForm","Padding","PaddingLayer","PaddingSize","PadeApproximant","PadLeft","PadRight","PageBreakAbove","PageBreakBelow","PageBreakWithin","PageFooterLines","PageFooters","PageHeaderLines","PageHeaders","PageHeight","PageRankCentrality","PageTheme","PageWidth","Pagination","PairedBarChart","PairedHistogram","PairedSmoothHistogram","PairedTTest","PairedZTest","PaletteNotebook","PalettePath","PalindromeQ","Pane","PaneBox","PaneBoxOptions","Panel","PanelBox","PanelBoxOptions","Paneled","PaneSelector","PaneSelectorBox","PaneSelectorBoxOptions","PaperWidth","ParabolicCylinderD","ParagraphIndent","ParagraphSpacing","ParallelArray","ParallelCombine","ParallelDo","Parallelepiped","ParallelEvaluate","Parallelization","Parallelize","ParallelMap","ParallelNeeds","Parallelogram","ParallelProduct","ParallelSubmit","ParallelSum","ParallelTable","ParallelTry","Parameter","ParameterEstimator","ParameterMixtureDistribution","ParameterVariables","ParametricFunction","ParametricNDSolve","ParametricNDSolveValue","ParametricPlot","ParametricPlot3D","ParametricRampLayer","ParametricRegion","ParentBox","ParentCell","ParentConnect","ParentDirectory","ParentForm","Parenthesize","ParentList","ParentNotebook","ParetoDistribution","ParetoPickandsDistribution","ParkData","Part","PartBehavior","PartialCorrelationFunction","PartialD","ParticleAcceleratorData","ParticleData","Partition","PartitionGranularity","PartitionsP","PartitionsQ","PartLayer","PartOfSpeech","PartProtection","ParzenWindow","PascalDistribution","PassEventsDown","PassEventsUp","Paste","PasteAutoQuoteCharacters","PasteBoxFormInlineCells","PasteButton","Path","PathGraph","PathGraphQ","Pattern","PatternFilling","PatternSequence","PatternTest","PauliMatrix","PaulWavelet","Pause","PausedTime","PDF","PeakDetect","PeanoCurve","PearsonChiSquareTest","PearsonCorrelationTest","PearsonDistribution","PercentForm","PerfectNumber","PerfectNumberQ","PerformanceGoal","Perimeter","PeriodicBoundaryCondition","PeriodicInterpolation","Periodogram","PeriodogramArray","Permanent","Permissions","PermissionsGroup","PermissionsGroupMemberQ","PermissionsGroups","PermissionsKey","PermissionsKeys","PermutationCycles","PermutationCyclesQ","PermutationGroup","PermutationLength","PermutationList","PermutationListQ","PermutationMax","PermutationMin","PermutationOrder","PermutationPower","PermutationProduct","PermutationReplace","Permutations","PermutationSupport","Permute","PeronaMalikFilter","Perpendicular","PerpendicularBisector","PersistenceLocation","PersistenceTime","PersistentObject","PersistentObjects","PersistentValue","PersonData","PERTDistribution","PetersenGraph","PhaseMargins","PhaseRange","PhysicalSystemData","Pi","Pick","PIDData","PIDDerivativeFilter","PIDFeedforward","PIDTune","Piecewise","PiecewiseExpand","PieChart","PieChart3D","PillaiTrace","PillaiTraceTest","PingTime","Pink","PitchRecognize","Pivoting","PixelConstrained","PixelValue","PixelValuePositions","Placed","Placeholder","PlaceholderReplace","Plain","PlanarAngle","PlanarGraph","PlanarGraphQ","PlanckRadiationLaw","PlaneCurveData","PlanetaryMoonData","PlanetData","PlantData","Play","PlayRange","Plot","Plot3D","Plot3Matrix","PlotDivision","PlotJoined","PlotLabel","PlotLabels","PlotLayout","PlotLegends","PlotMarkers","PlotPoints","PlotRange","PlotRangeClipping","PlotRangeClipPlanesStyle","PlotRangePadding","PlotRegion","PlotStyle","PlotTheme","Pluralize","Plus","PlusMinus","Pochhammer","PodStates","PodWidth","Point","Point3DBox","Point3DBoxOptions","PointBox","PointBoxOptions","PointFigureChart","PointLegend","PointSize","PoissonConsulDistribution","PoissonDistribution","PoissonProcess","PoissonWindow","PolarAxes","PolarAxesOrigin","PolarGridLines","PolarPlot","PolarTicks","PoleZeroMarkers","PolyaAeppliDistribution","PolyGamma","Polygon","Polygon3DBox","Polygon3DBoxOptions","PolygonalNumber","PolygonAngle","PolygonBox","PolygonBoxOptions","PolygonCoordinates","PolygonDecomposition","PolygonHoleScale","PolygonIntersections","PolygonScale","Polyhedron","PolyhedronAngle","PolyhedronCoordinates","PolyhedronData","PolyhedronDecomposition","PolyhedronGenus","PolyLog","PolynomialExtendedGCD","PolynomialForm","PolynomialGCD","PolynomialLCM","PolynomialMod","PolynomialQ","PolynomialQuotient","PolynomialQuotientRemainder","PolynomialReduce","PolynomialRemainder","Polynomials","PoolingLayer","PopupMenu","PopupMenuBox","PopupMenuBoxOptions","PopupView","PopupWindow","Position","PositionIndex","Positive","PositiveDefiniteMatrixQ","PositiveIntegers","PositiveRationals","PositiveReals","PositiveSemidefiniteMatrixQ","PossibleZeroQ","Postfix","PostScript","Power","PowerDistribution","PowerExpand","PowerMod","PowerModList","PowerRange","PowerSpectralDensity","PowersRepresentations","PowerSymmetricPolynomial","Precedence","PrecedenceForm","Precedes","PrecedesEqual","PrecedesSlantEqual","PrecedesTilde","Precision","PrecisionGoal","PreDecrement","Predict","PredictionRoot","PredictorFunction","PredictorInformation","PredictorMeasurements","PredictorMeasurementsObject","PreemptProtect","PreferencesPath","Prefix","PreIncrement","Prepend","PrependLayer","PrependTo","PreprocessingRules","PreserveColor","PreserveImageOptions","Previous","PreviousCell","PreviousDate","PriceGraphDistribution","PrimaryPlaceholder","Prime","PrimeNu","PrimeOmega","PrimePi","PrimePowerQ","PrimeQ","Primes","PrimeZetaP","PrimitivePolynomialQ","PrimitiveRoot","PrimitiveRootList","PrincipalComponents","PrincipalValue","Print","PrintableASCIIQ","PrintAction","PrintForm","PrintingCopies","PrintingOptions","PrintingPageRange","PrintingStartingPageNumber","PrintingStyleEnvironment","Printout3D","Printout3DPreviewer","PrintPrecision","PrintTemporary","Prism","PrismBox","PrismBoxOptions","PrivateCellOptions","PrivateEvaluationOptions","PrivateFontOptions","PrivateFrontEndOptions","PrivateKey","PrivateNotebookOptions","PrivatePaths","Probability","ProbabilityDistribution","ProbabilityPlot","ProbabilityPr","ProbabilityScalePlot","ProbitModelFit","ProcessConnection","ProcessDirectory","ProcessEnvironment","Processes","ProcessEstimator","ProcessInformation","ProcessObject","ProcessParameterAssumptions","ProcessParameterQ","ProcessStateDomain","ProcessStatus","ProcessTimeDomain","Product","ProductDistribution","ProductLog","ProgressIndicator","ProgressIndicatorBox","ProgressIndicatorBoxOptions","Projection","Prolog","PromptForm","ProofObject","Properties","Property","PropertyList","PropertyValue","Proportion","Proportional","Protect","Protected","ProteinData","Pruning","PseudoInverse","PsychrometricPropertyData","PublicKey","PublisherID","PulsarData","PunctuationCharacter","Purple","Put","PutAppend","Pyramid","PyramidBox","PyramidBoxOptions","QBinomial","QFactorial","QGamma","QHypergeometricPFQ","QnDispersion","QPochhammer","QPolyGamma","QRDecomposition","QuadraticIrrationalQ","QuadraticOptimization","Quantile","QuantilePlot","Quantity","QuantityArray","QuantityDistribution","QuantityForm","QuantityMagnitude","QuantityQ","QuantityUnit","QuantityVariable","QuantityVariableCanonicalUnit","QuantityVariableDimensions","QuantityVariableIdentifier","QuantityVariablePhysicalQuantity","Quartics","QuartileDeviation","Quartiles","QuartileSkewness","Query","QueueingNetworkProcess","QueueingProcess","QueueProperties","Quiet","Quit","Quotient","QuotientRemainder","RadialGradientImage","RadialityCentrality","RadicalBox","RadicalBoxOptions","RadioButton","RadioButtonBar","RadioButtonBox","RadioButtonBoxOptions","Radon","RadonTransform","RamanujanTau","RamanujanTauL","RamanujanTauTheta","RamanujanTauZ","Ramp","Random","RandomChoice","RandomColor","RandomComplex","RandomEntity","RandomFunction","RandomGeoPosition","RandomGraph","RandomImage","RandomInstance","RandomInteger","RandomPermutation","RandomPoint","RandomPolygon","RandomPolyhedron","RandomPrime","RandomReal","RandomSample","RandomSeed","RandomSeeding","RandomVariate","RandomWalkProcess","RandomWord","Range","RangeFilter","RangeSpecification","RankedMax","RankedMin","RarerProbability","Raster","Raster3D","Raster3DBox","Raster3DBoxOptions","RasterArray","RasterBox","RasterBoxOptions","Rasterize","RasterSize","Rational","RationalFunctions","Rationalize","Rationals","Ratios","RawArray","RawBoxes","RawData","RawMedium","RayleighDistribution","Re","Read","ReadByteArray","ReadLine","ReadList","ReadProtected","ReadString","Real","RealAbs","RealBlockDiagonalForm","RealDigits","RealExponent","Reals","RealSign","Reap","RebuildPacletData","RecognitionPrior","RecognitionThreshold","Record","RecordLists","RecordSeparators","Rectangle","RectangleBox","RectangleBoxOptions","RectangleChart","RectangleChart3D","RectangularRepeatingElement","RecurrenceFilter","RecurrenceTable","RecurringDigitsForm","Red","Reduce","RefBox","ReferenceLineStyle","ReferenceMarkers","ReferenceMarkerStyle","Refine","ReflectionMatrix","ReflectionTransform","Refresh","RefreshRate","Region","RegionBinarize","RegionBoundary","RegionBoundaryStyle","RegionBounds","RegionCentroid","RegionDifference","RegionDimension","RegionDisjoint","RegionDistance","RegionDistanceFunction","RegionEmbeddingDimension","RegionEqual","RegionFillingStyle","RegionFunction","RegionImage","RegionIntersection","RegionMeasure","RegionMember","RegionMemberFunction","RegionMoment","RegionNearest","RegionNearestFunction","RegionPlot","RegionPlot3D","RegionProduct","RegionQ","RegionResize","RegionSize","RegionSymmetricDifference","RegionUnion","RegionWithin","RegisterExternalEvaluator","RegularExpression","Regularization","RegularlySampledQ","RegularPolygon","ReIm","ReImLabels","ReImPlot","ReImStyle","Reinstall","RelationalDatabase","RelationGraph","Release","ReleaseHold","ReliabilityDistribution","ReliefImage","ReliefPlot","RemoteAuthorizationCaching","RemoteConnect","RemoteConnectionObject","RemoteFile","RemoteRun","RemoteRunProcess","Remove","RemoveAlphaChannel","RemoveAsynchronousTask","RemoveAudioStream","RemoveBackground","RemoveChannelListener","RemoveChannelSubscribers","Removed","RemoveDiacritics","RemoveInputStreamMethod","RemoveOutputStreamMethod","RemoveProperty","RemoveScheduledTask","RemoveUsers","RemoveVideoStream","RenameDirectory","RenameFile","RenderAll","RenderingOptions","RenewalProcess","RenkoChart","RepairMesh","Repeated","RepeatedNull","RepeatedString","RepeatedTiming","RepeatingElement","Replace","ReplaceAll","ReplaceHeldPart","ReplaceImageValue","ReplaceList","ReplacePart","ReplacePixelValue","ReplaceRepeated","ReplicateLayer","RequiredPhysicalQuantities","Resampling","ResamplingAlgorithmData","ResamplingMethod","Rescale","RescalingTransform","ResetDirectory","ResetMenusPacket","ResetScheduledTask","ReshapeLayer","Residue","ResizeLayer","Resolve","ResourceAcquire","ResourceData","ResourceFunction","ResourceObject","ResourceRegister","ResourceRemove","ResourceSearch","ResourceSubmissionObject","ResourceSubmit","ResourceSystemBase","ResourceSystemPath","ResourceUpdate","ResourceVersion","ResponseForm","Rest","RestartInterval","Restricted","Resultant","ResumePacket","Return","ReturnEntersInput","ReturnExpressionPacket","ReturnInputFormPacket","ReturnPacket","ReturnReceiptFunction","ReturnTextPacket","Reverse","ReverseApplied","ReverseBiorthogonalSplineWavelet","ReverseElement","ReverseEquilibrium","ReverseGraph","ReverseSort","ReverseSortBy","ReverseUpEquilibrium","RevolutionAxis","RevolutionPlot3D","RGBColor","RiccatiSolve","RiceDistribution","RidgeFilter","RiemannR","RiemannSiegelTheta","RiemannSiegelZ","RiemannXi","Riffle","Right","RightArrow","RightArrowBar","RightArrowLeftArrow","RightComposition","RightCosetRepresentative","RightDownTeeVector","RightDownVector","RightDownVectorBar","RightTee","RightTeeArrow","RightTeeVector","RightTriangle","RightTriangleBar","RightTriangleEqual","RightUpDownVector","RightUpTeeVector","RightUpVector","RightUpVectorBar","RightVector","RightVectorBar","RiskAchievementImportance","RiskReductionImportance","RogersTanimotoDissimilarity","RollPitchYawAngles","RollPitchYawMatrix","RomanNumeral","Root","RootApproximant","RootIntervals","RootLocusPlot","RootMeanSquare","RootOfUnityQ","RootReduce","Roots","RootSum","Rotate","RotateLabel","RotateLeft","RotateRight","RotationAction","RotationBox","RotationBoxOptions","RotationMatrix","RotationTransform","Round","RoundImplies","RoundingRadius","Row","RowAlignments","RowBackgrounds","RowBox","RowHeights","RowLines","RowMinHeight","RowReduce","RowsEqual","RowSpacings","RSolve","RSolveValue","RudinShapiro","RudvalisGroupRu","Rule","RuleCondition","RuleDelayed","RuleForm","RulePlot","RulerUnits","Run","RunProcess","RunScheduledTask","RunThrough","RuntimeAttributes","RuntimeOptions","RussellRaoDissimilarity","SameQ","SameTest","SameTestProperties","SampledEntityClass","SampleDepth","SampledSoundFunction","SampledSoundList","SampleRate","SamplingPeriod","SARIMAProcess","SARMAProcess","SASTriangle","SatelliteData","SatisfiabilityCount","SatisfiabilityInstances","SatisfiableQ","Saturday","Save","Saveable","SaveAutoDelete","SaveConnection","SaveDefinitions","SavitzkyGolayMatrix","SawtoothWave","Scale","Scaled","ScaleDivisions","ScaledMousePosition","ScaleOrigin","ScalePadding","ScaleRanges","ScaleRangeStyle","ScalingFunctions","ScalingMatrix","ScalingTransform","Scan","ScheduledTask","ScheduledTaskActiveQ","ScheduledTaskInformation","ScheduledTaskInformationData","ScheduledTaskObject","ScheduledTasks","SchurDecomposition","ScientificForm","ScientificNotationThreshold","ScorerGi","ScorerGiPrime","ScorerHi","ScorerHiPrime","ScreenRectangle","ScreenStyleEnvironment","ScriptBaselineShifts","ScriptForm","ScriptLevel","ScriptMinSize","ScriptRules","ScriptSizeMultipliers","Scrollbars","ScrollingOptions","ScrollPosition","SearchAdjustment","SearchIndexObject","SearchIndices","SearchQueryString","SearchResultObject","Sec","Sech","SechDistribution","SecondOrderConeOptimization","SectionGrouping","SectorChart","SectorChart3D","SectorOrigin","SectorSpacing","SecuredAuthenticationKey","SecuredAuthenticationKeys","SeedRandom","Select","Selectable","SelectComponents","SelectedCells","SelectedNotebook","SelectFirst","Selection","SelectionAnimate","SelectionCell","SelectionCellCreateCell","SelectionCellDefaultStyle","SelectionCellParentStyle","SelectionCreateCell","SelectionDebuggerTag","SelectionDuplicateCell","SelectionEvaluate","SelectionEvaluateCreateCell","SelectionMove","SelectionPlaceholder","SelectionSetStyle","SelectWithContents","SelfLoops","SelfLoopStyle","SemanticImport","SemanticImportString","SemanticInterpretation","SemialgebraicComponentInstances","SemidefiniteOptimization","SendMail","SendMessage","Sequence","SequenceAlignment","SequenceAttentionLayer","SequenceCases","SequenceCount","SequenceFold","SequenceFoldList","SequenceForm","SequenceHold","SequenceLastLayer","SequenceMostLayer","SequencePosition","SequencePredict","SequencePredictorFunction","SequenceReplace","SequenceRestLayer","SequenceReverseLayer","SequenceSplit","Series","SeriesCoefficient","SeriesData","SeriesTermGoal","ServiceConnect","ServiceDisconnect","ServiceExecute","ServiceObject","ServiceRequest","ServiceResponse","ServiceSubmit","SessionSubmit","SessionTime","Set","SetAccuracy","SetAlphaChannel","SetAttributes","Setbacks","SetBoxFormNamesPacket","SetCloudDirectory","SetCookies","SetDelayed","SetDirectory","SetEnvironment","SetEvaluationNotebook","SetFileDate","SetFileLoadingContext","SetNotebookStatusLine","SetOptions","SetOptionsPacket","SetPermissions","SetPrecision","SetProperty","SetSecuredAuthenticationKey","SetSelectedNotebook","SetSharedFunction","SetSharedVariable","SetSpeechParametersPacket","SetStreamPosition","SetSystemModel","SetSystemOptions","Setter","SetterBar","SetterBox","SetterBoxOptions","Setting","SetUsers","SetValue","Shading","Shallow","ShannonWavelet","ShapiroWilkTest","Share","SharingList","Sharpen","ShearingMatrix","ShearingTransform","ShellRegion","ShenCastanMatrix","ShiftedGompertzDistribution","ShiftRegisterSequence","Short","ShortDownArrow","Shortest","ShortestMatch","ShortestPathFunction","ShortLeftArrow","ShortRightArrow","ShortTimeFourier","ShortTimeFourierData","ShortUpArrow","Show","ShowAutoConvert","ShowAutoSpellCheck","ShowAutoStyles","ShowCellBracket","ShowCellLabel","ShowCellTags","ShowClosedCellArea","ShowCodeAssist","ShowContents","ShowControls","ShowCursorTracker","ShowGroupOpenCloseIcon","ShowGroupOpener","ShowInvisibleCharacters","ShowPageBreaks","ShowPredictiveInterface","ShowSelection","ShowShortBoxForm","ShowSpecialCharacters","ShowStringCharacters","ShowSyntaxStyles","ShrinkingDelay","ShrinkWrapBoundingBox","SiderealTime","SiegelTheta","SiegelTukeyTest","SierpinskiCurve","SierpinskiMesh","Sign","Signature","SignedRankTest","SignedRegionDistance","SignificanceLevel","SignPadding","SignTest","SimilarityRules","SimpleGraph","SimpleGraphQ","SimplePolygonQ","SimplePolyhedronQ","Simplex","Simplify","Sin","Sinc","SinghMaddalaDistribution","SingleEvaluation","SingleLetterItalics","SingleLetterStyle","SingularValueDecomposition","SingularValueList","SingularValuePlot","SingularValues","Sinh","SinhIntegral","SinIntegral","SixJSymbol","Skeleton","SkeletonTransform","SkellamDistribution","Skewness","SkewNormalDistribution","SkinStyle","Skip","SliceContourPlot3D","SliceDensityPlot3D","SliceDistribution","SliceVectorPlot3D","Slider","Slider2D","Slider2DBox","Slider2DBoxOptions","SliderBox","SliderBoxOptions","SlideView","Slot","SlotSequence","Small","SmallCircle","Smaller","SmithDecomposition","SmithDelayCompensator","SmithWatermanSimilarity","SmoothDensityHistogram","SmoothHistogram","SmoothHistogram3D","SmoothKernelDistribution","SnDispersion","Snippet","SnubPolyhedron","SocialMediaData","Socket","SocketConnect","SocketListen","SocketListener","SocketObject","SocketOpen","SocketReadMessage","SocketReadyQ","Sockets","SocketWaitAll","SocketWaitNext","SoftmaxLayer","SokalSneathDissimilarity","SolarEclipse","SolarSystemFeatureData","SolidAngle","SolidData","SolidRegionQ","Solve","SolveAlways","SolveDelayed","Sort","SortBy","SortedBy","SortedEntityClass","Sound","SoundAndGraphics","SoundNote","SoundVolume","SourceLink","Sow","Space","SpaceCurveData","SpaceForm","Spacer","Spacings","Span","SpanAdjustments","SpanCharacterRounding","SpanFromAbove","SpanFromBoth","SpanFromLeft","SpanLineThickness","SpanMaxSize","SpanMinSize","SpanningCharacters","SpanSymmetric","SparseArray","SpatialGraphDistribution","SpatialMedian","SpatialTransformationLayer","Speak","SpeakerMatchQ","SpeakTextPacket","SpearmanRankTest","SpearmanRho","SpeciesData","SpecificityGoal","SpectralLineData","Spectrogram","SpectrogramArray","Specularity","SpeechCases","SpeechInterpreter","SpeechRecognize","SpeechSynthesize","SpellingCorrection","SpellingCorrectionList","SpellingDictionaries","SpellingDictionariesPath","SpellingOptions","SpellingSuggestionsPacket","Sphere","SphereBox","SpherePoints","SphericalBesselJ","SphericalBesselY","SphericalHankelH1","SphericalHankelH2","SphericalHarmonicY","SphericalPlot3D","SphericalRegion","SphericalShell","SpheroidalEigenvalue","SpheroidalJoiningFactor","SpheroidalPS","SpheroidalPSPrime","SpheroidalQS","SpheroidalQSPrime","SpheroidalRadialFactor","SpheroidalS1","SpheroidalS1Prime","SpheroidalS2","SpheroidalS2Prime","Splice","SplicedDistribution","SplineClosed","SplineDegree","SplineKnots","SplineWeights","Split","SplitBy","SpokenString","Sqrt","SqrtBox","SqrtBoxOptions","Square","SquaredEuclideanDistance","SquareFreeQ","SquareIntersection","SquareMatrixQ","SquareRepeatingElement","SquaresR","SquareSubset","SquareSubsetEqual","SquareSuperset","SquareSupersetEqual","SquareUnion","SquareWave","SSSTriangle","StabilityMargins","StabilityMarginsStyle","StableDistribution","Stack","StackBegin","StackComplete","StackedDateListPlot","StackedListPlot","StackInhibit","StadiumShape","StandardAtmosphereData","StandardDeviation","StandardDeviationFilter","StandardForm","Standardize","Standardized","StandardOceanData","StandbyDistribution","Star","StarClusterData","StarData","StarGraph","StartAsynchronousTask","StartExternalSession","StartingStepSize","StartOfLine","StartOfString","StartProcess","StartScheduledTask","StartupSound","StartWebSession","StateDimensions","StateFeedbackGains","StateOutputEstimator","StateResponse","StateSpaceModel","StateSpaceRealization","StateSpaceTransform","StateTransformationLinearize","StationaryDistribution","StationaryWaveletPacketTransform","StationaryWaveletTransform","StatusArea","StatusCentrality","StepMonitor","StereochemistryElements","StieltjesGamma","StippleShading","StirlingS1","StirlingS2","StopAsynchronousTask","StoppingPowerData","StopScheduledTask","StrataVariables","StratonovichProcess","StreamColorFunction","StreamColorFunctionScaling","StreamDensityPlot","StreamMarkers","StreamPlot","StreamPoints","StreamPosition","Streams","StreamScale","StreamStyle","String","StringBreak","StringByteCount","StringCases","StringContainsQ","StringCount","StringDelete","StringDrop","StringEndsQ","StringExpression","StringExtract","StringForm","StringFormat","StringFreeQ","StringInsert","StringJoin","StringLength","StringMatchQ","StringPadLeft","StringPadRight","StringPart","StringPartition","StringPosition","StringQ","StringRepeat","StringReplace","StringReplaceList","StringReplacePart","StringReverse","StringRiffle","StringRotateLeft","StringRotateRight","StringSkeleton","StringSplit","StringStartsQ","StringTake","StringTemplate","StringToByteArray","StringToStream","StringTrim","StripBoxes","StripOnInput","StripWrapperBoxes","StrokeForm","StructuralImportance","StructuredArray","StructuredArrayHeadQ","StructuredSelection","StruveH","StruveL","Stub","StudentTDistribution","Style","StyleBox","StyleBoxAutoDelete","StyleData","StyleDefinitions","StyleForm","StyleHints","StyleKeyMapping","StyleMenuListing","StyleNameDialogSettings","StyleNames","StylePrint","StyleSheetPath","Subdivide","Subfactorial","Subgraph","SubMinus","SubPlus","SubresultantPolynomialRemainders","SubresultantPolynomials","Subresultants","Subscript","SubscriptBox","SubscriptBoxOptions","Subscripted","Subsequences","Subset","SubsetCases","SubsetCount","SubsetEqual","SubsetMap","SubsetPosition","SubsetQ","SubsetReplace","Subsets","SubStar","SubstitutionSystem","Subsuperscript","SubsuperscriptBox","SubsuperscriptBoxOptions","SubtitleEncoding","SubtitleTracks","Subtract","SubtractFrom","SubtractSides","SubValues","Succeeds","SucceedsEqual","SucceedsSlantEqual","SucceedsTilde","Success","SuchThat","Sum","SumConvergence","SummationLayer","Sunday","SunPosition","Sunrise","Sunset","SuperDagger","SuperMinus","SupernovaData","SuperPlus","Superscript","SuperscriptBox","SuperscriptBoxOptions","Superset","SupersetEqual","SuperStar","Surd","SurdForm","SurfaceAppearance","SurfaceArea","SurfaceColor","SurfaceData","SurfaceGraphics","SurvivalDistribution","SurvivalFunction","SurvivalModel","SurvivalModelFit","SuspendPacket","SuzukiDistribution","SuzukiGroupSuz","SwatchLegend","Switch","Symbol","SymbolName","SymletWavelet","Symmetric","SymmetricGroup","SymmetricKey","SymmetricMatrixQ","SymmetricPolynomial","SymmetricReduction","Symmetrize","SymmetrizedArray","SymmetrizedArrayRules","SymmetrizedDependentComponents","SymmetrizedIndependentComponents","SymmetrizedReplacePart","SynchronousInitialization","SynchronousUpdating","Synonyms","Syntax","SyntaxForm","SyntaxInformation","SyntaxLength","SyntaxPacket","SyntaxQ","SynthesizeMissingValues","SystemCredential","SystemCredentialData","SystemCredentialKey","SystemCredentialKeys","SystemCredentialStoreObject","SystemDialogInput","SystemException","SystemGet","SystemHelpPath","SystemInformation","SystemInformationData","SystemInstall","SystemModel","SystemModeler","SystemModelExamples","SystemModelLinearize","SystemModelParametricSimulate","SystemModelPlot","SystemModelProgressReporting","SystemModelReliability","SystemModels","SystemModelSimulate","SystemModelSimulateSensitivity","SystemModelSimulationData","SystemOpen","SystemOptions","SystemProcessData","SystemProcesses","SystemsConnectionsModel","SystemsModelDelay","SystemsModelDelayApproximate","SystemsModelDelete","SystemsModelDimensions","SystemsModelExtract","SystemsModelFeedbackConnect","SystemsModelLabels","SystemsModelLinearity","SystemsModelMerge","SystemsModelOrder","SystemsModelParallelConnect","SystemsModelSeriesConnect","SystemsModelStateFeedbackConnect","SystemsModelVectorRelativeOrders","SystemStub","SystemTest","Tab","TabFilling","Table","TableAlignments","TableDepth","TableDirections","TableForm","TableHeadings","TableSpacing","TableView","TableViewBox","TableViewBoxBackground","TableViewBoxItemSize","TableViewBoxOptions","TabSpacings","TabView","TabViewBox","TabViewBoxOptions","TagBox","TagBoxNote","TagBoxOptions","TaggingRules","TagSet","TagSetDelayed","TagStyle","TagUnset","Take","TakeDrop","TakeLargest","TakeLargestBy","TakeList","TakeSmallest","TakeSmallestBy","TakeWhile","Tally","Tan","Tanh","TargetDevice","TargetFunctions","TargetSystem","TargetUnits","TaskAbort","TaskExecute","TaskObject","TaskRemove","TaskResume","Tasks","TaskSuspend","TaskWait","TautologyQ","TelegraphProcess","TemplateApply","TemplateArgBox","TemplateBox","TemplateBoxOptions","TemplateEvaluate","TemplateExpression","TemplateIf","TemplateObject","TemplateSequence","TemplateSlot","TemplateSlotSequence","TemplateUnevaluated","TemplateVerbatim","TemplateWith","TemporalData","TemporalRegularity","Temporary","TemporaryVariable","TensorContract","TensorDimensions","TensorExpand","TensorProduct","TensorQ","TensorRank","TensorReduce","TensorSymmetry","TensorTranspose","TensorWedge","TestID","TestReport","TestReportObject","TestResultObject","Tetrahedron","TetrahedronBox","TetrahedronBoxOptions","TeXForm","TeXSave","Text","Text3DBox","Text3DBoxOptions","TextAlignment","TextBand","TextBoundingBox","TextBox","TextCases","TextCell","TextClipboardType","TextContents","TextData","TextElement","TextForm","TextGrid","TextJustification","TextLine","TextPacket","TextParagraph","TextPosition","TextRecognize","TextSearch","TextSearchReport","TextSentences","TextString","TextStructure","TextStyle","TextTranslation","Texture","TextureCoordinateFunction","TextureCoordinateScaling","TextWords","Therefore","ThermodynamicData","ThermometerGauge","Thick","Thickness","Thin","Thinning","ThisLink","ThompsonGroupTh","Thread","ThreadingLayer","ThreeJSymbol","Threshold","Through","Throw","ThueMorse","Thumbnail","Thursday","Ticks","TicksStyle","TideData","Tilde","TildeEqual","TildeFullEqual","TildeTilde","TimeConstrained","TimeConstraint","TimeDirection","TimeFormat","TimeGoal","TimelinePlot","TimeObject","TimeObjectQ","TimeRemaining","Times","TimesBy","TimeSeries","TimeSeriesAggregate","TimeSeriesForecast","TimeSeriesInsert","TimeSeriesInvertibility","TimeSeriesMap","TimeSeriesMapThread","TimeSeriesModel","TimeSeriesModelFit","TimeSeriesResample","TimeSeriesRescale","TimeSeriesShift","TimeSeriesThread","TimeSeriesWindow","TimeUsed","TimeValue","TimeWarpingCorrespondence","TimeWarpingDistance","TimeZone","TimeZoneConvert","TimeZoneOffset","Timing","Tiny","TitleGrouping","TitsGroupT","ToBoxes","ToCharacterCode","ToColor","ToContinuousTimeModel","ToDate","Today","ToDiscreteTimeModel","ToEntity","ToeplitzMatrix","ToExpression","ToFileName","Together","Toggle","ToggleFalse","Toggler","TogglerBar","TogglerBox","TogglerBoxOptions","ToHeldExpression","ToInvertibleTimeSeries","TokenWords","Tolerance","ToLowerCase","Tomorrow","ToNumberField","TooBig","Tooltip","TooltipBox","TooltipBoxOptions","TooltipDelay","TooltipStyle","ToonShading","Top","TopHatTransform","ToPolarCoordinates","TopologicalSort","ToRadicals","ToRules","ToSphericalCoordinates","ToString","Total","TotalHeight","TotalLayer","TotalVariationFilter","TotalWidth","TouchPosition","TouchscreenAutoZoom","TouchscreenControlPlacement","ToUpperCase","Tr","Trace","TraceAbove","TraceAction","TraceBackward","TraceDepth","TraceDialog","TraceForward","TraceInternal","TraceLevel","TraceOff","TraceOn","TraceOriginal","TracePrint","TraceScan","TrackedSymbols","TrackingFunction","TracyWidomDistribution","TradingChart","TraditionalForm","TraditionalFunctionNotation","TraditionalNotation","TraditionalOrder","TrainingProgressCheckpointing","TrainingProgressFunction","TrainingProgressMeasurements","TrainingProgressReporting","TrainingStoppingCriterion","TrainingUpdateSchedule","TransferFunctionCancel","TransferFunctionExpand","TransferFunctionFactor","TransferFunctionModel","TransferFunctionPoles","TransferFunctionTransform","TransferFunctionZeros","TransformationClass","TransformationFunction","TransformationFunctions","TransformationMatrix","TransformedDistribution","TransformedField","TransformedProcess","TransformedRegion","TransitionDirection","TransitionDuration","TransitionEffect","TransitiveClosureGraph","TransitiveReductionGraph","Translate","TranslationOptions","TranslationTransform","Transliterate","Transparent","TransparentColor","Transpose","TransposeLayer","TrapSelection","TravelDirections","TravelDirectionsData","TravelDistance","TravelDistanceList","TravelMethod","TravelTime","TreeForm","TreeGraph","TreeGraphQ","TreePlot","TrendStyle","Triangle","TriangleCenter","TriangleConstruct","TriangleMeasurement","TriangleWave","TriangularDistribution","TriangulateMesh","Trig","TrigExpand","TrigFactor","TrigFactorList","Trigger","TrigReduce","TrigToExp","TrimmedMean","TrimmedVariance","TropicalStormData","True","TrueQ","TruncatedDistribution","TruncatedPolyhedron","TsallisQExponentialDistribution","TsallisQGaussianDistribution","TTest","Tube","TubeBezierCurveBox","TubeBezierCurveBoxOptions","TubeBox","TubeBoxOptions","TubeBSplineCurveBox","TubeBSplineCurveBoxOptions","Tuesday","TukeyLambdaDistribution","TukeyWindow","TunnelData","Tuples","TuranGraph","TuringMachine","TuttePolynomial","TwoWayRule","Typed","TypeSpecifier","UnateQ","Uncompress","UnconstrainedParameters","Undefined","UnderBar","Underflow","Underlined","Underoverscript","UnderoverscriptBox","UnderoverscriptBoxOptions","Underscript","UnderscriptBox","UnderscriptBoxOptions","UnderseaFeatureData","UndirectedEdge","UndirectedGraph","UndirectedGraphQ","UndoOptions","UndoTrackedVariables","Unequal","UnequalTo","Unevaluated","UniformDistribution","UniformGraphDistribution","UniformPolyhedron","UniformSumDistribution","Uninstall","Union","UnionedEntityClass","UnionPlus","Unique","UnitaryMatrixQ","UnitBox","UnitConvert","UnitDimensions","Unitize","UnitRootTest","UnitSimplify","UnitStep","UnitSystem","UnitTriangle","UnitVector","UnitVectorLayer","UnityDimensions","UniverseModelData","UniversityData","UnixTime","Unprotect","UnregisterExternalEvaluator","UnsameQ","UnsavedVariables","Unset","UnsetShared","UntrackedVariables","Up","UpArrow","UpArrowBar","UpArrowDownArrow","Update","UpdateDynamicObjects","UpdateDynamicObjectsSynchronous","UpdateInterval","UpdatePacletSites","UpdateSearchIndex","UpDownArrow","UpEquilibrium","UpperCaseQ","UpperLeftArrow","UpperRightArrow","UpperTriangularize","UpperTriangularMatrixQ","Upsample","UpSet","UpSetDelayed","UpTee","UpTeeArrow","UpTo","UpValues","URL","URLBuild","URLDecode","URLDispatcher","URLDownload","URLDownloadSubmit","URLEncode","URLExecute","URLExpand","URLFetch","URLFetchAsynchronous","URLParse","URLQueryDecode","URLQueryEncode","URLRead","URLResponseTime","URLSave","URLSaveAsynchronous","URLShorten","URLSubmit","UseGraphicsRange","UserDefinedWavelet","Using","UsingFrontEnd","UtilityFunction","V2Get","ValenceErrorHandling","ValidationLength","ValidationSet","Value","ValueBox","ValueBoxOptions","ValueDimensions","ValueForm","ValuePreprocessingFunction","ValueQ","Values","ValuesData","Variables","Variance","VarianceEquivalenceTest","VarianceEstimatorFunction","VarianceGammaDistribution","VarianceTest","VectorAngle","VectorAround","VectorAspectRatio","VectorColorFunction","VectorColorFunctionScaling","VectorDensityPlot","VectorGlyphData","VectorGreater","VectorGreaterEqual","VectorLess","VectorLessEqual","VectorMarkers","VectorPlot","VectorPlot3D","VectorPoints","VectorQ","VectorRange","Vectors","VectorScale","VectorScaling","VectorSizes","VectorStyle","Vee","Verbatim","Verbose","VerboseConvertToPostScriptPacket","VerificationTest","VerifyConvergence","VerifyDerivedKey","VerifyDigitalSignature","VerifyFileSignature","VerifyInterpretation","VerifySecurityCertificates","VerifySolutions","VerifyTestAssumptions","Version","VersionedPreferences","VersionNumber","VertexAdd","VertexCapacity","VertexColors","VertexComponent","VertexConnectivity","VertexContract","VertexCoordinateRules","VertexCoordinates","VertexCorrelationSimilarity","VertexCosineSimilarity","VertexCount","VertexCoverQ","VertexDataCoordinates","VertexDegree","VertexDelete","VertexDiceSimilarity","VertexEccentricity","VertexInComponent","VertexInDegree","VertexIndex","VertexJaccardSimilarity","VertexLabeling","VertexLabels","VertexLabelStyle","VertexList","VertexNormals","VertexOutComponent","VertexOutDegree","VertexQ","VertexRenderingFunction","VertexReplace","VertexShape","VertexShapeFunction","VertexSize","VertexStyle","VertexTextureCoordinates","VertexWeight","VertexWeightedGraphQ","Vertical","VerticalBar","VerticalForm","VerticalGauge","VerticalSeparator","VerticalSlider","VerticalTilde","Video","VideoEncoding","VideoExtractFrames","VideoFrameList","VideoFrameMap","VideoPause","VideoPlay","VideoQ","VideoStop","VideoStream","VideoStreams","VideoTimeSeries","VideoTracks","VideoTrim","ViewAngle","ViewCenter","ViewMatrix","ViewPoint","ViewPointSelectorSettings","ViewPort","ViewProjection","ViewRange","ViewVector","ViewVertical","VirtualGroupData","Visible","VisibleCell","VoiceStyleData","VoigtDistribution","VolcanoData","Volume","VonMisesDistribution","VoronoiMesh","WaitAll","WaitAsynchronousTask","WaitNext","WaitUntil","WakebyDistribution","WalleniusHypergeometricDistribution","WaringYuleDistribution","WarpingCorrespondence","WarpingDistance","WatershedComponents","WatsonUSquareTest","WattsStrogatzGraphDistribution","WaveletBestBasis","WaveletFilterCoefficients","WaveletImagePlot","WaveletListPlot","WaveletMapIndexed","WaveletMatrixPlot","WaveletPhi","WaveletPsi","WaveletScale","WaveletScalogram","WaveletThreshold","WeaklyConnectedComponents","WeaklyConnectedGraphComponents","WeaklyConnectedGraphQ","WeakStationarity","WeatherData","WeatherForecastData","WebAudioSearch","WebElementObject","WeberE","WebExecute","WebImage","WebImageSearch","WebSearch","WebSessionObject","WebSessions","WebWindowObject","Wedge","Wednesday","WeibullDistribution","WeierstrassE1","WeierstrassE2","WeierstrassE3","WeierstrassEta1","WeierstrassEta2","WeierstrassEta3","WeierstrassHalfPeriods","WeierstrassHalfPeriodW1","WeierstrassHalfPeriodW2","WeierstrassHalfPeriodW3","WeierstrassInvariantG2","WeierstrassInvariantG3","WeierstrassInvariants","WeierstrassP","WeierstrassPPrime","WeierstrassSigma","WeierstrassZeta","WeightedAdjacencyGraph","WeightedAdjacencyMatrix","WeightedData","WeightedGraphQ","Weights","WelchWindow","WheelGraph","WhenEvent","Which","While","White","WhiteNoiseProcess","WhitePoint","Whitespace","WhitespaceCharacter","WhittakerM","WhittakerW","WienerFilter","WienerProcess","WignerD","WignerSemicircleDistribution","WikidataData","WikidataSearch","WikipediaData","WikipediaSearch","WilksW","WilksWTest","WindDirectionData","WindingCount","WindingPolygon","WindowClickSelect","WindowElements","WindowFloating","WindowFrame","WindowFrameElements","WindowMargins","WindowMovable","WindowOpacity","WindowPersistentStyles","WindowSelected","WindowSize","WindowStatusArea","WindowTitle","WindowToolbars","WindowWidth","WindSpeedData","WindVectorData","WinsorizedMean","WinsorizedVariance","WishartMatrixDistribution","With","WolframAlpha","WolframAlphaDate","WolframAlphaQuantity","WolframAlphaResult","WolframLanguageData","Word","WordBoundary","WordCharacter","WordCloud","WordCount","WordCounts","WordData","WordDefinition","WordFrequency","WordFrequencyData","WordList","WordOrientation","WordSearch","WordSelectionFunction","WordSeparators","WordSpacings","WordStem","WordTranslation","WorkingPrecision","WrapAround","Write","WriteLine","WriteString","Wronskian","XMLElement","XMLObject","XMLTemplate","Xnor","Xor","XYZColor","Yellow","Yesterday","YuleDissimilarity","ZernikeR","ZeroSymmetric","ZeroTest","ZeroWidthTimes","Zeta","ZetaZero","ZIPCodeData","ZipfDistribution","ZoomCenter","ZoomFactor","ZTest","ZTransform","$Aborted","$ActivationGroupID","$ActivationKey","$ActivationUserRegistered","$AddOnsDirectory","$AllowDataUpdates","$AllowExternalChannelFunctions","$AllowInternet","$AssertFunction","$Assumptions","$AsynchronousTask","$AudioDecoders","$AudioEncoders","$AudioInputDevices","$AudioOutputDevices","$BaseDirectory","$BasePacletsDirectory","$BatchInput","$BatchOutput","$BlockchainBase","$BoxForms","$ByteOrdering","$CacheBaseDirectory","$Canceled","$ChannelBase","$CharacterEncoding","$CharacterEncodings","$CloudAccountName","$CloudBase","$CloudConnected","$CloudConnection","$CloudCreditsAvailable","$CloudEvaluation","$CloudExpressionBase","$CloudObjectNameFormat","$CloudObjectURLType","$CloudRootDirectory","$CloudSymbolBase","$CloudUserID","$CloudUserUUID","$CloudVersion","$CloudVersionNumber","$CloudWolframEngineVersionNumber","$CommandLine","$CompilationTarget","$ConditionHold","$ConfiguredKernels","$Context","$ContextPath","$ControlActiveSetting","$Cookies","$CookieStore","$CreationDate","$CurrentLink","$CurrentTask","$CurrentWebSession","$DataStructures","$DateStringFormat","$DefaultAudioInputDevice","$DefaultAudioOutputDevice","$DefaultFont","$DefaultFrontEnd","$DefaultImagingDevice","$DefaultLocalBase","$DefaultMailbox","$DefaultNetworkInterface","$DefaultPath","$DefaultProxyRules","$DefaultSystemCredentialStore","$Display","$DisplayFunction","$DistributedContexts","$DynamicEvaluation","$Echo","$EmbedCodeEnvironments","$EmbeddableServices","$EntityStores","$Epilog","$EvaluationCloudBase","$EvaluationCloudObject","$EvaluationEnvironment","$ExportFormats","$ExternalIdentifierTypes","$ExternalStorageBase","$Failed","$FinancialDataSource","$FontFamilies","$FormatType","$FrontEnd","$FrontEndSession","$GeoEntityTypes","$GeoLocation","$GeoLocationCity","$GeoLocationCountry","$GeoLocationPrecision","$GeoLocationSource","$HistoryLength","$HomeDirectory","$HTMLExportRules","$HTTPCookies","$HTTPRequest","$IgnoreEOF","$ImageFormattingWidth","$ImageResolution","$ImagingDevice","$ImagingDevices","$ImportFormats","$IncomingMailSettings","$InitialDirectory","$Initialization","$InitializationContexts","$Input","$InputFileName","$InputStreamMethods","$Inspector","$InstallationDate","$InstallationDirectory","$InterfaceEnvironment","$InterpreterTypes","$IterationLimit","$KernelCount","$KernelID","$Language","$LaunchDirectory","$LibraryPath","$LicenseExpirationDate","$LicenseID","$LicenseProcesses","$LicenseServer","$LicenseSubprocesses","$LicenseType","$Line","$Linked","$LinkSupported","$LoadedFiles","$LocalBase","$LocalSymbolBase","$MachineAddresses","$MachineDomain","$MachineDomains","$MachineEpsilon","$MachineID","$MachineName","$MachinePrecision","$MachineType","$MaxExtraPrecision","$MaxLicenseProcesses","$MaxLicenseSubprocesses","$MaxMachineNumber","$MaxNumber","$MaxPiecewiseCases","$MaxPrecision","$MaxRootDegree","$MessageGroups","$MessageList","$MessagePrePrint","$Messages","$MinMachineNumber","$MinNumber","$MinorReleaseNumber","$MinPrecision","$MobilePhone","$ModuleNumber","$NetworkConnected","$NetworkInterfaces","$NetworkLicense","$NewMessage","$NewSymbol","$NotebookInlineStorageLimit","$Notebooks","$NoValue","$NumberMarks","$Off","$OperatingSystem","$Output","$OutputForms","$OutputSizeLimit","$OutputStreamMethods","$Packages","$ParentLink","$ParentProcessID","$PasswordFile","$PatchLevelID","$Path","$PathnameSeparator","$PerformanceGoal","$Permissions","$PermissionsGroupBase","$PersistenceBase","$PersistencePath","$PipeSupported","$PlotTheme","$Post","$Pre","$PreferencesDirectory","$PreInitialization","$PrePrint","$PreRead","$PrintForms","$PrintLiteral","$Printout3DPreviewer","$ProcessID","$ProcessorCount","$ProcessorType","$ProductInformation","$ProgramName","$PublisherID","$RandomState","$RecursionLimit","$RegisteredDeviceClasses","$RegisteredUserName","$ReleaseNumber","$RequesterAddress","$RequesterWolframID","$RequesterWolframUUID","$RootDirectory","$ScheduledTask","$ScriptCommandLine","$ScriptInputString","$SecuredAuthenticationKeyTokens","$ServiceCreditsAvailable","$Services","$SessionID","$SetParentLink","$SharedFunctions","$SharedVariables","$SoundDisplay","$SoundDisplayFunction","$SourceLink","$SSHAuthentication","$SubtitleDecoders","$SubtitleEncoders","$SummaryBoxDataSizeLimit","$SuppressInputFormHeads","$SynchronousEvaluation","$SyntaxHandler","$System","$SystemCharacterEncoding","$SystemCredentialStore","$SystemID","$SystemMemory","$SystemShell","$SystemTimeZone","$SystemWordLength","$TemplatePath","$TemporaryDirectory","$TemporaryPrefix","$TestFileName","$TextStyle","$TimedOut","$TimeUnit","$TimeZone","$TimeZoneEntity","$TopDirectory","$TraceOff","$TraceOn","$TracePattern","$TracePostAction","$TracePreAction","$UnitSystem","$Urgent","$UserAddOnsDirectory","$UserAgentLanguages","$UserAgentMachine","$UserAgentName","$UserAgentOperatingSystem","$UserAgentString","$UserAgentVersion","$UserBaseDirectory","$UserBasePacletsDirectory","$UserDocumentsDirectory","$Username","$UserName","$UserURLBase","$Version","$VersionNumber","$VideoDecoders","$VideoEncoders","$VoiceStyles","$WolframDocumentsDirectory","$WolframID","$WolframUUID"]
+;return t=>{
+const i=t.regex,o=i.either(i.concat(/([2-9]|[1-2]\d|[3][0-5])\^\^/,/(\w*\.\w+|\w+\.\w*|\w+)/),/(\d*\.\d+|\d+\.\d*|\d+)/),a=i.either(/``[+-]?(\d*\.\d+|\d+\.\d*|\d+)/,/`([+-]?(\d*\.\d+|\d+\.\d*|\d+))?/),n={
+className:"number",relevance:0,
+begin:i.concat(o,i.optional(a),i.optional(/\*\^[+-]?\d+/))
+},r=/[a-zA-Z$][a-zA-Z0-9$]*/,l=new Set(e),s={variants:[{
+className:"builtin-symbol",begin:r,"on:begin":(e,t)=>{
+l.has(e[0])||t.ignoreMatch()}},{className:"symbol",relevance:0,begin:r}]},c={
+className:"message-name",relevance:0,begin:i.concat("::",r)};return{
+name:"Mathematica",aliases:["mma","wl"],classNameAliases:{brace:"punctuation",
+pattern:"type",slot:"type",symbol:"variable","named-character":"variable",
+"builtin-symbol":"built_in","message-name":"string"},
+contains:[t.COMMENT(/\(\*/,/\*\)/,{contains:["self"]}),{className:"pattern",
+relevance:0,begin:/([a-zA-Z$][a-zA-Z0-9$]*)?_+([a-zA-Z$][a-zA-Z0-9$]*)?/},{
+className:"slot",relevance:0,begin:/#[a-zA-Z$][a-zA-Z0-9$]*|#+[0-9]?/},c,s,{
+className:"named-character",begin:/\\\[[$a-zA-Z][$a-zA-Z0-9]+\]/
+},t.QUOTE_STRING_MODE,n,{className:"operator",relevance:0,
+begin:/[+\-*/,;.:@~=><&|_`'^?!%]+/},{className:"brace",relevance:0,
+begin:/[[\](){}]/}]}}})();hljs.registerLanguage("mathematica",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/matlab.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/matlab.min.js
new file mode 100644
index 0000000..c9161a7
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/matlab.min.js
@@ -0,0 +1,16 @@
+/*! `matlab` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{var a={relevance:0,contains:[{
+begin:"('|\\.')+"}]};return{name:"Matlab",keywords:{
+keyword:"arguments break case catch classdef continue else elseif end enumeration events for function global if methods otherwise parfor persistent properties return spmd switch try while",
+built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i|0 inf nan isnan isinf isfinite j|0 why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell "
+},illegal:'(//|"|#|/\\*|\\s+/\\w+)',contains:[{className:"function",
+beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{
+className:"params",variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}]}]
+},{className:"built_in",begin:/true|false/,relevance:0,starts:a},{
+begin:"[a-zA-Z][a-zA-Z_0-9]*('|\\.')+",relevance:0},{className:"number",
+begin:e.C_NUMBER_RE,relevance:0,starts:a},{className:"string",begin:"'",end:"'",
+contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{begin:/\]|\}|\)/,relevance:0,
+starts:a},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{
+begin:'""'}],starts:a
+},e.COMMENT("^\\s*%\\{\\s*$","^\\s*%\\}\\s*$"),e.COMMENT("%","$")]}}})()
+;hljs.registerLanguage("matlab",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/maxima.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/maxima.min.js
new file mode 100644
index 0000000..bb4f915
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/maxima.min.js
@@ -0,0 +1,12 @@
+/*! `maxima` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Maxima",keywords:{
+$pattern:"[A-Za-z_%][0-9A-Za-z_%]*",
+keyword:"if then else elseif for thru do while unless step in and or not",
+literal:"true false unknown inf minf ind und %e %i %pi %phi %gamma",
+built_in:" abasep abs absint absolute_real_time acos acosh acot acoth acsc acsch activate addcol add_edge add_edges addmatrices addrow add_vertex add_vertices adjacency_matrix adjoin adjoint af agd airy airy_ai airy_bi airy_dai airy_dbi algsys alg_type alias allroots alphacharp alphanumericp amortization %and annuity_fv annuity_pv antid antidiff AntiDifference append appendfile apply apply1 apply2 applyb1 apropos args arit_amortization arithmetic arithsum array arrayapply arrayinfo arraymake arraysetapply ascii asec asech asin asinh askinteger asksign assoc assoc_legendre_p assoc_legendre_q assume assume_external_byte_order asympa at atan atan2 atanh atensimp atom atvalue augcoefmatrix augmented_lagrangian_method av average_degree backtrace bars barsplot barsplot_description base64 base64_decode bashindices batch batchload bc2 bdvac belln benefit_cost bern bernpoly bernstein_approx bernstein_expand bernstein_poly bessel bessel_i bessel_j bessel_k bessel_simplify bessel_y beta beta_incomplete beta_incomplete_generalized beta_incomplete_regularized bezout bfallroots bffac bf_find_root bf_fmin_cobyla bfhzeta bfloat bfloatp bfpsi bfpsi0 bfzeta biconnected_components bimetric binomial bipartition block blockmatrixp bode_gain bode_phase bothcoef box boxplot boxplot_description break bug_report build_info|10 buildq build_sample burn cabs canform canten cardinality carg cartan cartesian_product catch cauchy_matrix cbffac cdf_bernoulli cdf_beta cdf_binomial cdf_cauchy cdf_chi2 cdf_continuous_uniform cdf_discrete_uniform cdf_exp cdf_f cdf_gamma cdf_general_finite_discrete cdf_geometric cdf_gumbel cdf_hypergeometric cdf_laplace cdf_logistic cdf_lognormal cdf_negative_binomial cdf_noncentral_chi2 cdf_noncentral_student_t cdf_normal cdf_pareto cdf_poisson cdf_rank_sum cdf_rayleigh cdf_signed_rank cdf_student_t cdf_weibull cdisplay ceiling central_moment cequal cequalignore cf cfdisrep cfexpand cgeodesic cgreaterp cgreaterpignore changename changevar chaosgame charat charfun charfun2 charlist charp charpoly chdir chebyshev_t chebyshev_u checkdiv check_overlaps chinese cholesky christof chromatic_index chromatic_number cint circulant_graph clear_edge_weight clear_rules clear_vertex_label clebsch_gordan clebsch_graph clessp clesspignore close closefile cmetric coeff coefmatrix cograd col collapse collectterms columnop columnspace columnswap columnvector combination combine comp2pui compare compfile compile compile_file complement_graph complete_bipartite_graph complete_graph complex_number_p components compose_functions concan concat conjugate conmetderiv connected_components connect_vertices cons constant constantp constituent constvalue cont2part content continuous_freq contortion contour_plot contract contract_edge contragrad contrib_ode convert coord copy copy_file copy_graph copylist copymatrix cor cos cosh cot coth cov cov1 covdiff covect covers crc24sum create_graph create_list csc csch csetup cspline ctaylor ct_coordsys ctransform ctranspose cube_graph cuboctahedron_graph cunlisp cv cycle_digraph cycle_graph cylindrical days360 dblint deactivate declare declare_constvalue declare_dimensions declare_fundamental_dimensions declare_fundamental_units declare_qty declare_translated declare_unit_conversion declare_units declare_weights decsym defcon define define_alt_display define_variable defint defmatch defrule defstruct deftaylor degree_sequence del delete deleten delta demo demoivre denom depends derivdegree derivlist describe desolve determinant dfloat dgauss_a dgauss_b dgeev dgemm dgeqrf dgesv dgesvd diag diagmatrix diag_matrix diagmatrixp diameter diff digitcharp dimacs_export dimacs_import dimension dimensionless dimensions dimensions_as_list direct directory discrete_freq disjoin disjointp disolate disp dispcon dispform dispfun dispJordan display disprule dispterms distrib divide divisors divsum dkummer_m dkummer_u dlange dodecahedron_graph dotproduct dotsimp dpart draw draw2d draw3d drawdf draw_file draw_graph dscalar echelon edge_coloring edge_connectivity edges eigens_by_jacobi eigenvalues eigenvectors eighth einstein eivals eivects elapsed_real_time elapsed_run_time ele2comp ele2polynome ele2pui elem elementp elevation_grid elim elim_allbut eliminate eliminate_using ellipse elliptic_e elliptic_ec elliptic_eu elliptic_f elliptic_kc elliptic_pi ematrix empty_graph emptyp endcons entermatrix entertensor entier equal equalp equiv_classes erf erfc erf_generalized erfi errcatch error errormsg errors euler ev eval_string evenp every evolution evolution2d evundiff example exp expand expandwrt expandwrt_factored expint expintegral_chi expintegral_ci expintegral_e expintegral_e1 expintegral_ei expintegral_e_simplify expintegral_li expintegral_shi expintegral_si explicit explose exponentialize express expt exsec extdiff extract_linear_equations extremal_subset ezgcd %f f90 facsum factcomb factor factorfacsum factorial factorout factorsum facts fast_central_elements fast_linsolve fasttimes featurep fernfale fft fib fibtophi fifth filename_merge file_search file_type fillarray findde find_root find_root_abs find_root_error find_root_rel first fix flatten flength float floatnump floor flower_snark flush flush1deriv flushd flushnd flush_output fmin_cobyla forget fortran fourcos fourexpand fourier fourier_elim fourint fourintcos fourintsin foursimp foursin fourth fposition frame_bracket freeof freshline fresnel_c fresnel_s from_adjacency_matrix frucht_graph full_listify fullmap fullmapl fullratsimp fullratsubst fullsetify funcsolve fundamental_dimensions fundamental_units fundef funmake funp fv g0 g1 gamma gamma_greek gamma_incomplete gamma_incomplete_generalized gamma_incomplete_regularized gauss gauss_a gauss_b gaussprob gcd gcdex gcdivide gcfac gcfactor gd generalized_lambert_w genfact gen_laguerre genmatrix gensym geo_amortization geo_annuity_fv geo_annuity_pv geomap geometric geometric_mean geosum get getcurrentdirectory get_edge_weight getenv get_lu_factors get_output_stream_string get_pixel get_plot_option get_tex_environment get_tex_environment_default get_vertex_label gfactor gfactorsum ggf girth global_variances gn gnuplot_close gnuplot_replot gnuplot_reset gnuplot_restart gnuplot_start go Gosper GosperSum gr2d gr3d gradef gramschmidt graph6_decode graph6_encode graph6_export graph6_import graph_center graph_charpoly graph_eigenvalues graph_flow graph_order graph_periphery graph_product graph_size graph_union great_rhombicosidodecahedron_graph great_rhombicuboctahedron_graph grid_graph grind grobner_basis grotzch_graph hamilton_cycle hamilton_path hankel hankel_1 hankel_2 harmonic harmonic_mean hav heawood_graph hermite hessian hgfred hilbertmap hilbert_matrix hipow histogram histogram_description hodge horner hypergeometric i0 i1 %ibes ic1 ic2 ic_convert ichr1 ichr2 icosahedron_graph icosidodecahedron_graph icurvature ident identfor identity idiff idim idummy ieqn %if ifactors iframes ifs igcdex igeodesic_coords ilt image imagpart imetric implicit implicit_derivative implicit_plot indexed_tensor indices induced_subgraph inferencep inference_result infix info_display init_atensor init_ctensor in_neighbors innerproduct inpart inprod inrt integerp integer_partitions integrate intersect intersection intervalp intopois intosum invariant1 invariant2 inverse_fft inverse_jacobi_cd inverse_jacobi_cn inverse_jacobi_cs inverse_jacobi_dc inverse_jacobi_dn inverse_jacobi_ds inverse_jacobi_nc inverse_jacobi_nd inverse_jacobi_ns inverse_jacobi_sc inverse_jacobi_sd inverse_jacobi_sn invert invert_by_adjoint invert_by_lu inv_mod irr is is_biconnected is_bipartite is_connected is_digraph is_edge_in_graph is_graph is_graph_or_digraph ishow is_isomorphic isolate isomorphism is_planar isqrt isreal_p is_sconnected is_tree is_vertex_in_graph items_inference %j j0 j1 jacobi jacobian jacobi_cd jacobi_cn jacobi_cs jacobi_dc jacobi_dn jacobi_ds jacobi_nc jacobi_nd jacobi_ns jacobi_p jacobi_sc jacobi_sd jacobi_sn JF jn join jordan julia julia_set julia_sin %k kdels kdelta kill killcontext kostka kron_delta kronecker_product kummer_m kummer_u kurtosis kurtosis_bernoulli kurtosis_beta kurtosis_binomial kurtosis_chi2 kurtosis_continuous_uniform kurtosis_discrete_uniform kurtosis_exp kurtosis_f kurtosis_gamma kurtosis_general_finite_discrete kurtosis_geometric kurtosis_gumbel kurtosis_hypergeometric kurtosis_laplace kurtosis_logistic kurtosis_lognormal kurtosis_negative_binomial kurtosis_noncentral_chi2 kurtosis_noncentral_student_t kurtosis_normal kurtosis_pareto kurtosis_poisson kurtosis_rayleigh kurtosis_student_t kurtosis_weibull label labels lagrange laguerre lambda lambert_w laplace laplacian_matrix last lbfgs lc2kdt lcharp lc_l lcm lc_u ldefint ldisp ldisplay legendre_p legendre_q leinstein length let letrules letsimp levi_civita lfreeof lgtreillis lhs li liediff limit Lindstedt linear linearinterpol linear_program linear_regression line_graph linsolve listarray list_correlations listify list_matrix_entries list_nc_monomials listoftens listofvars listp lmax lmin load loadfile local locate_matrix_entry log logcontract log_gamma lopow lorentz_gauge lowercasep lpart lratsubst lreduce lriemann lsquares_estimates lsquares_estimates_approximate lsquares_estimates_exact lsquares_mse lsquares_residual_mse lsquares_residuals lsum ltreillis lu_backsub lucas lu_factor %m macroexpand macroexpand1 make_array makebox makefact makegamma make_graph make_level_picture makelist makeOrders make_poly_continent make_poly_country make_polygon make_random_state make_rgb_picture makeset make_string_input_stream make_string_output_stream make_transform mandelbrot mandelbrot_set map mapatom maplist matchdeclare matchfix mat_cond mat_fullunblocker mat_function mathml_display mat_norm matrix matrixmap matrixp matrix_size mattrace mat_trace mat_unblocker max max_clique max_degree max_flow maximize_lp max_independent_set max_matching maybe md5sum mean mean_bernoulli mean_beta mean_binomial mean_chi2 mean_continuous_uniform mean_deviation mean_discrete_uniform mean_exp mean_f mean_gamma mean_general_finite_discrete mean_geometric mean_gumbel mean_hypergeometric mean_laplace mean_logistic mean_lognormal mean_negative_binomial mean_noncentral_chi2 mean_noncentral_student_t mean_normal mean_pareto mean_poisson mean_rayleigh mean_student_t mean_weibull median median_deviation member mesh metricexpandall mgf1_sha1 min min_degree min_edge_cut minfactorial minimalPoly minimize_lp minimum_spanning_tree minor minpack_lsquares minpack_solve min_vertex_cover min_vertex_cut mkdir mnewton mod mode_declare mode_identity ModeMatrix moebius mon2schur mono monomial_dimensions multibernstein_poly multi_display_for_texinfo multi_elem multinomial multinomial_coeff multi_orbit multiplot_mode multi_pui multsym multthru mycielski_graph nary natural_unit nc_degree ncexpt ncharpoly negative_picture neighbors new newcontext newdet new_graph newline newton new_variable next_prime nicedummies niceindices ninth nofix nonarray noncentral_moment nonmetricity nonnegintegerp nonscalarp nonzeroandfreeof notequal nounify nptetrad npv nroots nterms ntermst nthroot nullity nullspace num numbered_boundaries numberp number_to_octets num_distinct_partitions numerval numfactor num_partitions nusum nzeta nzetai nzetar octets_to_number octets_to_oid odd_girth oddp ode2 ode_check odelin oid_to_octets op opena opena_binary openr openr_binary openw openw_binary operatorp opsubst optimize %or orbit orbits ordergreat ordergreatp orderless orderlessp orthogonal_complement orthopoly_recur orthopoly_weight outermap out_neighbors outofpois pade parabolic_cylinder_d parametric parametric_surface parg parGosper parse_string parse_timedate part part2cont partfrac partition partition_set partpol path_digraph path_graph pathname_directory pathname_name pathname_type pdf_bernoulli pdf_beta pdf_binomial pdf_cauchy pdf_chi2 pdf_continuous_uniform pdf_discrete_uniform pdf_exp pdf_f pdf_gamma pdf_general_finite_discrete pdf_geometric pdf_gumbel pdf_hypergeometric pdf_laplace pdf_logistic pdf_lognormal pdf_negative_binomial pdf_noncentral_chi2 pdf_noncentral_student_t pdf_normal pdf_pareto pdf_poisson pdf_rank_sum pdf_rayleigh pdf_signed_rank pdf_student_t pdf_weibull pearson_skewness permanent permut permutation permutations petersen_graph petrov pickapart picture_equalp picturep piechart piechart_description planar_embedding playback plog plot2d plot3d plotdf ploteq plsquares pochhammer points poisdiff poisexpt poisint poismap poisplus poissimp poissubst poistimes poistrim polar polarform polartorect polar_to_xy poly_add poly_buchberger poly_buchberger_criterion poly_colon_ideal poly_content polydecomp poly_depends_p poly_elimination_ideal poly_exact_divide poly_expand poly_expt poly_gcd polygon poly_grobner poly_grobner_equal poly_grobner_member poly_grobner_subsetp poly_ideal_intersection poly_ideal_polysaturation poly_ideal_polysaturation1 poly_ideal_saturation poly_ideal_saturation1 poly_lcm poly_minimization polymod poly_multiply polynome2ele polynomialp poly_normal_form poly_normalize poly_normalize_list poly_polysaturation_extension poly_primitive_part poly_pseudo_divide poly_reduced_grobner poly_reduction poly_saturation_extension poly_s_polynomial poly_subtract polytocompanion pop postfix potential power_mod powerseries powerset prefix prev_prime primep primes principal_components print printf printfile print_graph printpois printprops prodrac product properties propvars psi psubst ptriangularize pui pui2comp pui2ele pui2polynome pui_direct puireduc push put pv qput qrange qty quad_control quad_qag quad_qagi quad_qagp quad_qags quad_qawc quad_qawf quad_qawo quad_qaws quadrilateral quantile quantile_bernoulli quantile_beta quantile_binomial quantile_cauchy quantile_chi2 quantile_continuous_uniform quantile_discrete_uniform quantile_exp quantile_f quantile_gamma quantile_general_finite_discrete quantile_geometric quantile_gumbel quantile_hypergeometric quantile_laplace quantile_logistic quantile_lognormal quantile_negative_binomial quantile_noncentral_chi2 quantile_noncentral_student_t quantile_normal quantile_pareto quantile_poisson quantile_rayleigh quantile_student_t quantile_weibull quartile_skewness quit qunit quotient racah_v racah_w radcan radius random random_bernoulli random_beta random_binomial random_bipartite_graph random_cauchy random_chi2 random_continuous_uniform random_digraph random_discrete_uniform random_exp random_f random_gamma random_general_finite_discrete random_geometric random_graph random_graph1 random_gumbel random_hypergeometric random_laplace random_logistic random_lognormal random_negative_binomial random_network random_noncentral_chi2 random_noncentral_student_t random_normal random_pareto random_permutation random_poisson random_rayleigh random_regular_graph random_student_t random_tournament random_tree random_weibull range rank rat ratcoef ratdenom ratdiff ratdisrep ratexpand ratinterpol rational rationalize ratnumer ratnump ratp ratsimp ratsubst ratvars ratweight read read_array read_binary_array read_binary_list read_binary_matrix readbyte readchar read_hashed_array readline read_list read_matrix read_nested_list readonly read_xpm real_imagpart_to_conjugate realpart realroots rearray rectangle rectform rectform_log_if_constant recttopolar rediff reduce_consts reduce_order region region_boundaries region_boundaries_plus rem remainder remarray rembox remcomps remcon remcoord remfun remfunction remlet remove remove_constvalue remove_dimensions remove_edge remove_fundamental_dimensions remove_fundamental_units remove_plot_option remove_vertex rempart remrule remsym remvalue rename rename_file reset reset_displays residue resolvante resolvante_alternee1 resolvante_bipartite resolvante_diedrale resolvante_klein resolvante_klein3 resolvante_produit_sym resolvante_unitaire resolvante_vierer rest resultant return reveal reverse revert revert2 rgb2level rhs ricci riemann rinvariant risch rk rmdir rncombine romberg room rootscontract round row rowop rowswap rreduce run_testsuite %s save saving scalarp scaled_bessel_i scaled_bessel_i0 scaled_bessel_i1 scalefactors scanmap scatterplot scatterplot_description scene schur2comp sconcat scopy scsimp scurvature sdowncase sec sech second sequal sequalignore set_alt_display setdifference set_draw_defaults set_edge_weight setelmx setequalp setify setp set_partitions set_plot_option set_prompt set_random_state set_tex_environment set_tex_environment_default setunits setup_autoload set_up_dot_simplifications set_vertex_label seventh sexplode sf sha1sum sha256sum shortest_path shortest_weighted_path show showcomps showratvars sierpinskiale sierpinskimap sign signum similaritytransform simp_inequality simplify_sum simplode simpmetderiv simtran sin sinh sinsert sinvertcase sixth skewness skewness_bernoulli skewness_beta skewness_binomial skewness_chi2 skewness_continuous_uniform skewness_discrete_uniform skewness_exp skewness_f skewness_gamma skewness_general_finite_discrete skewness_geometric skewness_gumbel skewness_hypergeometric skewness_laplace skewness_logistic skewness_lognormal skewness_negative_binomial skewness_noncentral_chi2 skewness_noncentral_student_t skewness_normal skewness_pareto skewness_poisson skewness_rayleigh skewness_student_t skewness_weibull slength smake small_rhombicosidodecahedron_graph small_rhombicuboctahedron_graph smax smin smismatch snowmap snub_cube_graph snub_dodecahedron_graph solve solve_rec solve_rec_rat some somrac sort sparse6_decode sparse6_encode sparse6_export sparse6_import specint spherical spherical_bessel_j spherical_bessel_y spherical_hankel1 spherical_hankel2 spherical_harmonic spherical_to_xyz splice split sposition sprint sqfr sqrt sqrtdenest sremove sremovefirst sreverse ssearch ssort sstatus ssubst ssubstfirst staircase standardize standardize_inverse_trig starplot starplot_description status std std1 std_bernoulli std_beta std_binomial std_chi2 std_continuous_uniform std_discrete_uniform std_exp std_f std_gamma std_general_finite_discrete std_geometric std_gumbel std_hypergeometric std_laplace std_logistic std_lognormal std_negative_binomial std_noncentral_chi2 std_noncentral_student_t std_normal std_pareto std_poisson std_rayleigh std_student_t std_weibull stemplot stirling stirling1 stirling2 strim striml strimr string stringout stringp strong_components struve_h struve_l sublis sublist sublist_indices submatrix subsample subset subsetp subst substinpart subst_parallel substpart substring subvar subvarp sum sumcontract summand_to_rec supcase supcontext symbolp symmdifference symmetricp system take_channel take_inference tan tanh taylor taylorinfo taylorp taylor_simplifier taytorat tcl_output tcontract tellrat tellsimp tellsimpafter tentex tenth test_mean test_means_difference test_normality test_proportion test_proportions_difference test_rank_sum test_sign test_signed_rank test_variance test_variance_ratio tex tex1 tex_display texput %th third throw time timedate timer timer_info tldefint tlimit todd_coxeter toeplitz tokens to_lisp topological_sort to_poly to_poly_solve totaldisrep totalfourier totient tpartpol trace tracematrix trace_options transform_sample translate translate_file transpose treefale tree_reduce treillis treinat triangle triangularize trigexpand trigrat trigreduce trigsimp trunc truncate truncated_cube_graph truncated_dodecahedron_graph truncated_icosahedron_graph truncated_tetrahedron_graph tr_warnings_get tube tutte_graph ueivects uforget ultraspherical underlying_graph undiff union unique uniteigenvectors unitp units unit_step unitvector unorder unsum untellrat untimer untrace uppercasep uricci uriemann uvect vandermonde_matrix var var1 var_bernoulli var_beta var_binomial var_chi2 var_continuous_uniform var_discrete_uniform var_exp var_f var_gamma var_general_finite_discrete var_geometric var_gumbel var_hypergeometric var_laplace var_logistic var_lognormal var_negative_binomial var_noncentral_chi2 var_noncentral_student_t var_normal var_pareto var_poisson var_rayleigh var_student_t var_weibull vector vectorpotential vectorsimp verbify vers vertex_coloring vertex_connectivity vertex_degree vertex_distance vertex_eccentricity vertex_in_degree vertex_out_degree vertices vertices_to_cycle vertices_to_path %w weyl wheel_graph wiener_index wigner_3j wigner_6j wigner_9j with_stdout write_binary_data writebyte write_data writefile wronskian xreduce xthru %y Zeilberger zeroequiv zerofor zeromatrix zeromatrixp zeta zgeev zheev zlange zn_add_table zn_carmichael_lambda zn_characteristic_factors zn_determinant zn_factor_generators zn_invert_by_lu zn_log zn_mult_table absboxchar activecontexts adapt_depth additive adim aform algebraic algepsilon algexact aliases allbut all_dotsimp_denoms allocation allsym alphabetic animation antisymmetric arrays askexp assume_pos assume_pos_pred assumescalar asymbol atomgrad atrig1 axes axis_3d axis_bottom axis_left axis_right axis_top azimuth background background_color backsubst berlefact bernstein_explicit besselexpand beta_args_sum_to_integer beta_expand bftorat bftrunc bindtest border boundaries_array box boxchar breakup %c capping cauchysum cbrange cbtics center cflength cframe_flag cnonmet_flag color color_bar color_bar_tics colorbox columns commutative complex cone context contexts contour contour_levels cosnpiflag ctaypov ctaypt ctayswitch ctayvar ct_coords ctorsion_flag ctrgsimp cube current_let_rule_package cylinder data_file_name debugmode decreasing default_let_rule_package delay dependencies derivabbrev derivsubst detout diagmetric diff dim dimensions dispflag display2d|10 display_format_internal distribute_over doallmxops domain domxexpt domxmxops domxnctimes dontfactor doscmxops doscmxplus dot0nscsimp dot0simp dot1simp dotassoc dotconstrules dotdistrib dotexptsimp dotident dotscrules draw_graph_program draw_realpart edge_color edge_coloring edge_partition edge_type edge_width %edispflag elevation %emode endphi endtheta engineering_format_floats enhanced3d %enumer epsilon_lp erfflag erf_representation errormsg error_size error_syms error_type %e_to_numlog eval even evenfun evflag evfun ev_point expandwrt_denom expintexpand expintrep expon expop exptdispflag exptisolate exptsubst facexpand facsum_combine factlim factorflag factorial_expand factors_only fb feature features file_name file_output_append file_search_demo file_search_lisp file_search_maxima|10 file_search_tests file_search_usage file_type_lisp file_type_maxima|10 fill_color fill_density filled_func fixed_vertices flipflag float2bf font font_size fortindent fortspaces fpprec fpprintprec functions gamma_expand gammalim gdet genindex gensumnum GGFCFMAX GGFINFINITY globalsolve gnuplot_command gnuplot_curve_styles gnuplot_curve_titles gnuplot_default_term_command gnuplot_dumb_term_command gnuplot_file_args gnuplot_file_name gnuplot_out_file gnuplot_pdf_term_command gnuplot_pm3d gnuplot_png_term_command gnuplot_postamble gnuplot_preamble gnuplot_ps_term_command gnuplot_svg_term_command gnuplot_term gnuplot_view_args Gosper_in_Zeilberger gradefs grid grid2d grind halfangles head_angle head_both head_length head_type height hypergeometric_representation %iargs ibase icc1 icc2 icounter idummyx ieqnprint ifb ifc1 ifc2 ifg ifgi ifr iframe_bracket_form ifri igeowedge_flag ikt1 ikt2 imaginary inchar increasing infeval infinity inflag infolists inm inmc1 inmc2 intanalysis integer integervalued integrate_use_rootsof integration_constant integration_constant_counter interpolate_color intfaclim ip_grid ip_grid_in irrational isolate_wrt_times iterations itr julia_parameter %k1 %k2 keepfloat key key_pos kinvariant kt label label_alignment label_orientation labels lassociative lbfgs_ncorrections lbfgs_nfeval_max leftjust legend letrat let_rule_packages lfg lg lhospitallim limsubst linear linear_solver linechar linel|10 linenum line_type linewidth line_width linsolve_params linsolvewarn lispdisp listarith listconstvars listdummyvars lmxchar load_pathname loadprint logabs logarc logcb logconcoeffp logexpand lognegint logsimp logx logx_secondary logy logy_secondary logz lriem m1pbranch macroexpansion macros mainvar manual_demo maperror mapprint matrix_element_add matrix_element_mult matrix_element_transpose maxapplydepth maxapplyheight maxima_tempdir|10 maxima_userdir|10 maxnegex MAX_ORD maxposex maxpsifracdenom maxpsifracnum maxpsinegint maxpsiposint maxtayorder mesh_lines_color method mod_big_prime mode_check_errorp mode_checkp mode_check_warnp mod_test mod_threshold modular_linear_solver modulus multiplicative multiplicities myoptions nary negdistrib negsumdispflag newline newtonepsilon newtonmaxiter nextlayerfactor niceindicespref nm nmc noeval nolabels nonegative_lp noninteger nonscalar noun noundisp nouns np npi nticks ntrig numer numer_pbranch obase odd oddfun opacity opproperties opsubst optimprefix optionset orientation origin orthopoly_returns_intervals outative outchar packagefile palette partswitch pdf_file pfeformat phiresolution %piargs piece pivot_count_sx pivot_max_sx plot_format plot_options plot_realpart png_file pochhammer_max_index points pointsize point_size points_joined point_type poislim poisson poly_coefficient_ring poly_elimination_order polyfactor poly_grobner_algorithm poly_grobner_debug poly_monomial_order poly_primary_elimination_order poly_return_term_list poly_secondary_elimination_order poly_top_reduction_only posfun position powerdisp pred prederror primep_number_of_tests product_use_gamma program programmode promote_float_to_bigfloat prompt proportional_axes props psexpand ps_file radexpand radius radsubstflag rassociative ratalgdenom ratchristof ratdenomdivide rateinstein ratepsilon ratfac rational ratmx ratprint ratriemann ratsimpexpons ratvarswitch ratweights ratweyl ratwtlvl real realonly redraw refcheck resolution restart resultant ric riem rmxchar %rnum_list rombergabs rombergit rombergmin rombergtol rootsconmode rootsepsilon run_viewer same_xy same_xyz savedef savefactors scalar scalarmatrixp scale scale_lp setcheck setcheckbreak setval show_edge_color show_edges show_edge_type show_edge_width show_id show_label showtime show_vertex_color show_vertex_size show_vertex_type show_vertices show_weight simp simplified_output simplify_products simpproduct simpsum sinnpiflag solvedecomposes solveexplicit solvefactors solvenullwarn solveradcan solvetrigwarn space sparse sphere spring_embedding_depth sqrtdispflag stardisp startphi starttheta stats_numer stringdisp structures style sublis_apply_lambda subnumsimp sumexpand sumsplitfact surface surface_hide svg_file symmetric tab taylordepth taylor_logexpand taylor_order_coefficients taylor_truncate_polynomials tensorkill terminal testsuite_files thetaresolution timer_devalue title tlimswitch tr track transcompile transform transform_xy translate_fast_arrays transparent transrun tr_array_as_ref tr_bound_function_applyp tr_file_tty_messagesp tr_float_can_branch_complex tr_function_call_default trigexpandplus trigexpandtimes triginverses trigsign trivial_solutions tr_numer tr_optimize_max_loop tr_semicompile tr_state_vars tr_warn_bad_function_calls tr_warn_fexpr tr_warn_meval tr_warn_mode tr_warn_undeclared tr_warn_undefined_variable tstep ttyoff tube_extremes ufg ug %unitexpand unit_vectors uric uriem use_fast_arrays user_preamble usersetunits values vect_cross verbose vertex_color vertex_coloring vertex_partition vertex_size vertex_type view warnings weyl width windowname windowtitle wired_surface wireframe xaxis xaxis_color xaxis_secondary xaxis_type xaxis_width xlabel xlabel_secondary xlength xrange xrange_secondary xtics xtics_axis xtics_rotate xtics_rotate_secondary xtics_secondary xtics_secondary_axis xu_grid x_voxel xy_file xyplane xy_scale yaxis yaxis_color yaxis_secondary yaxis_type yaxis_width ylabel ylabel_secondary ylength yrange yrange_secondary ytics ytics_axis ytics_rotate ytics_rotate_secondary ytics_secondary ytics_secondary_axis yv_grid y_voxel yx_ratio zaxis zaxis_color zaxis_type zaxis_width zeroa zerob zerobern zeta%pi zlabel zlabel_rotate zlength zmin zn_primroot_limit zn_primroot_pretest",
+symbol:"_ __ %|0 %%|0"},contains:[{className:"comment",begin:"/\\*",end:"\\*/",
+contains:["self"]},e.QUOTE_STRING_MODE,{className:"number",relevance:0,
+variants:[{begin:"\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Ee][-+]?\\d+\\b"},{
+begin:"\\b(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)[Bb][-+]?\\d+\\b",relevance:10},{
+begin:"\\b(\\.\\d+|\\d+\\.\\d+)\\b"},{begin:"\\b(\\d+|0[0-9A-Za-z]+)\\.?\\b"}]
+}],illegal:/@/})})();hljs.registerLanguage("maxima",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/mel.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/mel.min.js
new file mode 100644
index 0000000..a4f6f85
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/mel.min.js
@@ -0,0 +1,8 @@
+/*! `mel` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"MEL",
+keywords:"int float string vector matrix if else switch case default while do for in break continue global proc return about abs addAttr addAttributeEditorNodeHelp addDynamic addNewShelfTab addPP addPanelCategory addPrefixToName advanceToNextDrivenKey affectedNet affects aimConstraint air alias aliasAttr align alignCtx alignCurve alignSurface allViewFit ambientLight angle angleBetween animCone animCurveEditor animDisplay animView annotate appendStringArray applicationName applyAttrPreset applyTake arcLenDimContext arcLengthDimension arclen arrayMapper art3dPaintCtx artAttrCtx artAttrPaintVertexCtx artAttrSkinPaintCtx artAttrTool artBuildPaintMenu artFluidAttrCtx artPuttyCtx artSelectCtx artSetPaintCtx artUserPaintCtx assignCommand assignInputDevice assignViewportFactories attachCurve attachDeviceAttr attachSurface attrColorSliderGrp attrCompatibility attrControlGrp attrEnumOptionMenu attrEnumOptionMenuGrp attrFieldGrp attrFieldSliderGrp attrNavigationControlGrp attrPresetEditWin attributeExists attributeInfo attributeMenu attributeQuery autoKeyframe autoPlace bakeClip bakeFluidShading bakePartialHistory bakeResults bakeSimulation basename basenameEx batchRender bessel bevel bevelPlus binMembership bindSkin blend2 blendShape blendShapeEditor blendShapePanel blendTwoAttr blindDataType boneLattice boundary boxDollyCtx boxZoomCtx bufferCurve buildBookmarkMenu buildKeyframeMenu button buttonManip CBG cacheFile cacheFileCombine cacheFileMerge cacheFileTrack camera cameraView canCreateManip canvas capitalizeString catch catchQuiet ceil changeSubdivComponentDisplayLevel changeSubdivRegion channelBox character characterMap characterOutlineEditor characterize chdir checkBox checkBoxGrp checkDefaultRenderGlobals choice circle circularFillet clamp clear clearCache clip clipEditor clipEditorCurrentTimeCtx clipSchedule clipSchedulerOutliner clipTrimBefore closeCurve closeSurface cluster cmdFileOutput cmdScrollFieldExecuter cmdScrollFieldReporter cmdShell coarsenSubdivSelectionList collision color colorAtPoint colorEditor colorIndex colorIndexSliderGrp colorSliderButtonGrp colorSliderGrp columnLayout commandEcho commandLine commandPort compactHairSystem componentEditor compositingInterop computePolysetVolume condition cone confirmDialog connectAttr connectControl connectDynamic connectJoint connectionInfo constrain constrainValue constructionHistory container containsMultibyte contextInfo control convertFromOldLayers convertIffToPsd convertLightmap convertSolidTx convertTessellation convertUnit copyArray copyFlexor copyKey copySkinWeights cos cpButton cpCache cpClothSet cpCollision cpConstraint cpConvClothToMesh cpForces cpGetSolverAttr cpPanel cpProperty cpRigidCollisionFilter cpSeam cpSetEdit cpSetSolverAttr cpSolver cpSolverTypes cpTool cpUpdateClothUVs createDisplayLayer createDrawCtx createEditor createLayeredPsdFile createMotionField createNewShelf createNode createRenderLayer createSubdivRegion cross crossProduct ctxAbort ctxCompletion ctxEditMode ctxTraverse currentCtx currentTime currentTimeCtx currentUnit curve curveAddPtCtx curveCVCtx curveEPCtx curveEditorCtx curveIntersect curveMoveEPCtx curveOnSurface curveSketchCtx cutKey cycleCheck cylinder dagPose date defaultLightListCheckBox defaultNavigation defineDataServer defineVirtualDevice deformer deg_to_rad delete deleteAttr deleteShadingGroupsAndMaterials deleteShelfTab deleteUI deleteUnusedBrushes delrandstr detachCurve detachDeviceAttr detachSurface deviceEditor devicePanel dgInfo dgdirty dgeval dgtimer dimWhen directKeyCtx directionalLight dirmap dirname disable disconnectAttr disconnectJoint diskCache displacementToPoly displayAffected displayColor displayCull displayLevelOfDetail displayPref displayRGBColor displaySmoothness displayStats displayString displaySurface distanceDimContext distanceDimension doBlur dolly dollyCtx dopeSheetEditor dot dotProduct doubleProfileBirailSurface drag dragAttrContext draggerContext dropoffLocator duplicate duplicateCurve duplicateSurface dynCache dynControl dynExport dynExpression dynGlobals dynPaintEditor dynParticleCtx dynPref dynRelEdPanel dynRelEditor dynamicLoad editAttrLimits editDisplayLayerGlobals editDisplayLayerMembers editRenderLayerAdjustment editRenderLayerGlobals editRenderLayerMembers editor editorTemplate effector emit emitter enableDevice encodeString endString endsWith env equivalent equivalentTol erf error eval evalDeferred evalEcho event exactWorldBoundingBox exclusiveLightCheckBox exec executeForEachObject exists exp expression expressionEditorListen extendCurve extendSurface extrude fcheck fclose feof fflush fgetline fgetword file fileBrowserDialog fileDialog fileExtension fileInfo filetest filletCurve filter filterCurve filterExpand filterStudioImport findAllIntersections findAnimCurves findKeyframe findMenuItem findRelatedSkinCluster finder firstParentOf fitBspline flexor floatEq floatField floatFieldGrp floatScrollBar floatSlider floatSlider2 floatSliderButtonGrp floatSliderGrp floor flow fluidCacheInfo fluidEmitter fluidVoxelInfo flushUndo fmod fontDialog fopen formLayout format fprint frameLayout fread freeFormFillet frewind fromNativePath fwrite gamma gauss geometryConstraint getApplicationVersionAsFloat getAttr getClassification getDefaultBrush getFileList getFluidAttr getInputDeviceRange getMayaPanelTypes getModifiers getPanel getParticleAttr getPluginResource getenv getpid glRender glRenderEditor globalStitch gmatch goal gotoBindPose grabColor gradientControl gradientControlNoAttr graphDollyCtx graphSelectContext graphTrackCtx gravity grid gridLayout group groupObjectsByName HfAddAttractorToAS HfAssignAS HfBuildEqualMap HfBuildFurFiles HfBuildFurImages HfCancelAFR HfConnectASToHF HfCreateAttractor HfDeleteAS HfEditAS HfPerformCreateAS HfRemoveAttractorFromAS HfSelectAttached HfSelectAttractors HfUnAssignAS hardenPointCurve hardware hardwareRenderPanel headsUpDisplay headsUpMessage help helpLine hermite hide hilite hitTest hotBox hotkey hotkeyCheck hsv_to_rgb hudButton hudSlider hudSliderButton hwReflectionMap hwRender hwRenderLoad hyperGraph hyperPanel hyperShade hypot iconTextButton iconTextCheckBox iconTextRadioButton iconTextRadioCollection iconTextScrollList iconTextStaticLabel ikHandle ikHandleCtx ikHandleDisplayScale ikSolver ikSplineHandleCtx ikSystem ikSystemInfo ikfkDisplayMethod illustratorCurves image imfPlugins inheritTransform insertJoint insertJointCtx insertKeyCtx insertKnotCurve insertKnotSurface instance instanceable instancer intField intFieldGrp intScrollBar intSlider intSliderGrp interToUI internalVar intersect iprEngine isAnimCurve isConnected isDirty isParentOf isSameObject isTrue isValidObjectName isValidString isValidUiName isolateSelect itemFilter itemFilterAttr itemFilterRender itemFilterType joint jointCluster jointCtx jointDisplayScale jointLattice keyTangent keyframe keyframeOutliner keyframeRegionCurrentTimeCtx keyframeRegionDirectKeyCtx keyframeRegionDollyCtx keyframeRegionInsertKeyCtx keyframeRegionMoveKeyCtx keyframeRegionScaleKeyCtx keyframeRegionSelectKeyCtx keyframeRegionSetKeyCtx keyframeRegionTrackCtx keyframeStats lassoContext lattice latticeDeformKeyCtx launch launchImageEditor layerButton layeredShaderPort layeredTexturePort layout layoutDialog lightList lightListEditor lightListPanel lightlink lineIntersection linearPrecision linstep listAnimatable listAttr listCameras listConnections listDeviceAttachments listHistory listInputDeviceAxes listInputDeviceButtons listInputDevices listMenuAnnotation listNodeTypes listPanelCategories listRelatives listSets listTransforms listUnselected listerEditor loadFluid loadNewShelf loadPlugin loadPluginLanguageResources loadPrefObjects localizedPanelLabel lockNode loft log longNameOf lookThru ls lsThroughFilter lsType lsUI Mayatomr mag makeIdentity makeLive makePaintable makeRoll makeSingleSurface makeTubeOn makebot manipMoveContext manipMoveLimitsCtx manipOptions manipRotateContext manipRotateLimitsCtx manipScaleContext manipScaleLimitsCtx marker match max memory menu menuBarLayout menuEditor menuItem menuItemToShelf menuSet menuSetPref messageLine min minimizeApp mirrorJoint modelCurrentTimeCtx modelEditor modelPanel mouse movIn movOut move moveIKtoFK moveKeyCtx moveVertexAlongDirection multiProfileBirailSurface mute nParticle nameCommand nameField namespace namespaceInfo newPanelItems newton nodeCast nodeIconButton nodeOutliner nodePreset nodeType noise nonLinear normalConstraint normalize nurbsBoolean nurbsCopyUVSet nurbsCube nurbsEditUV nurbsPlane nurbsSelect nurbsSquare nurbsToPoly nurbsToPolygonsPref nurbsToSubdiv nurbsToSubdivPref nurbsUVSet nurbsViewDirectionVector objExists objectCenter objectLayer objectType objectTypeUI obsoleteProc oceanNurbsPreviewPlane offsetCurve offsetCurveOnSurface offsetSurface openGLExtension openMayaPref optionMenu optionMenuGrp optionVar orbit orbitCtx orientConstraint outlinerEditor outlinerPanel overrideModifier paintEffectsDisplay pairBlend palettePort paneLayout panel panelConfiguration panelHistory paramDimContext paramDimension paramLocator parent parentConstraint particle particleExists particleInstancer particleRenderInfo partition pasteKey pathAnimation pause pclose percent performanceOptions pfxstrokes pickWalk picture pixelMove planarSrf plane play playbackOptions playblast plugAttr plugNode pluginInfo pluginResourceUtil pointConstraint pointCurveConstraint pointLight pointMatrixMult pointOnCurve pointOnSurface pointPosition poleVectorConstraint polyAppend polyAppendFacetCtx polyAppendVertex polyAutoProjection polyAverageNormal polyAverageVertex polyBevel polyBlendColor polyBlindData polyBoolOp polyBridgeEdge polyCacheMonitor polyCheck polyChipOff polyClipboard polyCloseBorder polyCollapseEdge polyCollapseFacet polyColorBlindData polyColorDel polyColorPerVertex polyColorSet polyCompare polyCone polyCopyUV polyCrease polyCreaseCtx polyCreateFacet polyCreateFacetCtx polyCube polyCut polyCutCtx polyCylinder polyCylindricalProjection polyDelEdge polyDelFacet polyDelVertex polyDuplicateAndConnect polyDuplicateEdge polyEditUV polyEditUVShell polyEvaluate polyExtrudeEdge polyExtrudeFacet polyExtrudeVertex polyFlipEdge polyFlipUV polyForceUV polyGeoSampler polyHelix polyInfo polyInstallAction polyLayoutUV polyListComponentConversion polyMapCut polyMapDel polyMapSew polyMapSewMove polyMergeEdge polyMergeEdgeCtx polyMergeFacet polyMergeFacetCtx polyMergeUV polyMergeVertex polyMirrorFace polyMoveEdge polyMoveFacet polyMoveFacetUV polyMoveUV polyMoveVertex polyNormal polyNormalPerVertex polyNormalizeUV polyOptUvs polyOptions polyOutput polyPipe polyPlanarProjection polyPlane polyPlatonicSolid polyPoke polyPrimitive polyPrism polyProjection polyPyramid polyQuad polyQueryBlindData polyReduce polySelect polySelectConstraint polySelectConstraintMonitor polySelectCtx polySelectEditCtx polySeparate polySetToFaceNormal polySewEdge polyShortestPathCtx polySmooth polySoftEdge polySphere polySphericalProjection polySplit polySplitCtx polySplitEdge polySplitRing polySplitVertex polyStraightenUVBorder polySubdivideEdge polySubdivideFacet polyToSubdiv polyTorus polyTransfer polyTriangulate polyUVSet polyUnite polyWedgeFace popen popupMenu pose pow preloadRefEd print progressBar progressWindow projFileViewer projectCurve projectTangent projectionContext projectionManip promptDialog propModCtx propMove psdChannelOutliner psdEditTextureFile psdExport psdTextureFile putenv pwd python querySubdiv quit rad_to_deg radial radioButton radioButtonGrp radioCollection radioMenuItemCollection rampColorPort rand randomizeFollicles randstate rangeControl readTake rebuildCurve rebuildSurface recordAttr recordDevice redo reference referenceEdit referenceQuery refineSubdivSelectionList refresh refreshAE registerPluginResource rehash reloadImage removeJoint removeMultiInstance removePanelCategory rename renameAttr renameSelectionList renameUI render renderGlobalsNode renderInfo renderLayerButton renderLayerParent renderLayerPostProcess renderLayerUnparent renderManip renderPartition renderQualityNode renderSettings renderThumbnailUpdate renderWindowEditor renderWindowSelectContext renderer reorder reorderDeformers requires reroot resampleFluid resetAE resetPfxToPolyCamera resetTool resolutionNode retarget reverseCurve reverseSurface revolve rgb_to_hsv rigidBody rigidSolver roll rollCtx rootOf rot rotate rotationInterpolation roundConstantRadius rowColumnLayout rowLayout runTimeCommand runup sampleImage saveAllShelves saveAttrPreset saveFluid saveImage saveInitialState saveMenu savePrefObjects savePrefs saveShelf saveToolSettings scale scaleBrushBrightness scaleComponents scaleConstraint scaleKey scaleKeyCtx sceneEditor sceneUIReplacement scmh scriptCtx scriptEditorInfo scriptJob scriptNode scriptTable scriptToShelf scriptedPanel scriptedPanelType scrollField scrollLayout sculpt searchPathArray seed selLoadSettings select selectContext selectCurveCV selectKey selectKeyCtx selectKeyframeRegionCtx selectMode selectPref selectPriority selectType selectedNodes selectionConnection separator setAttr setAttrEnumResource setAttrMapping setAttrNiceNameResource setConstraintRestPosition setDefaultShadingGroup setDrivenKeyframe setDynamic setEditCtx setEditor setFluidAttr setFocus setInfinity setInputDeviceMapping setKeyCtx setKeyPath setKeyframe setKeyframeBlendshapeTargetWts setMenuMode setNodeNiceNameResource setNodeTypeFlag setParent setParticleAttr setPfxToPolyCamera setPluginResource setProject setStampDensity setStartupMessage setState setToolTo setUITemplate setXformManip sets shadingConnection shadingGeometryRelCtx shadingLightRelCtx shadingNetworkCompare shadingNode shapeCompare shelfButton shelfLayout shelfTabLayout shellField shortNameOf showHelp showHidden showManipCtx showSelectionInTitle showShadingGroupAttrEditor showWindow sign simplify sin singleProfileBirailSurface size sizeBytes skinCluster skinPercent smoothCurve smoothTangentSurface smoothstep snap2to2 snapKey snapMode snapTogetherCtx snapshot soft softMod softModCtx sort sound soundControl source spaceLocator sphere sphrand spotLight spotLightPreviewPort spreadSheetEditor spring sqrt squareSurface srtContext stackTrace startString startsWith stitchAndExplodeShell stitchSurface stitchSurfacePoints strcmp stringArrayCatenate stringArrayContains stringArrayCount stringArrayInsertAtIndex stringArrayIntersector stringArrayRemove stringArrayRemoveAtIndex stringArrayRemoveDuplicates stringArrayRemoveExact stringArrayToString stringToStringArray strip stripPrefixFromName stroke subdAutoProjection subdCleanTopology subdCollapse subdDuplicateAndConnect subdEditUV subdListComponentConversion subdMapCut subdMapSewMove subdMatchTopology subdMirror subdToBlind subdToPoly subdTransferUVsToCache subdiv subdivCrease subdivDisplaySmoothness substitute substituteAllString substituteGeometry substring surface surfaceSampler surfaceShaderList swatchDisplayPort switchTable symbolButton symbolCheckBox sysFile system tabLayout tan tangentConstraint texLatticeDeformContext texManipContext texMoveContext texMoveUVShellContext texRotateContext texScaleContext texSelectContext texSelectShortestPathCtx texSmudgeUVContext texWinToolCtx text textCurves textField textFieldButtonGrp textFieldGrp textManip textScrollList textToShelf textureDisplacePlane textureHairColor texturePlacementContext textureWindow threadCount threePointArcCtx timeControl timePort timerX toNativePath toggle toggleAxis toggleWindowVisibility tokenize tokenizeList tolerance tolower toolButton toolCollection toolDropped toolHasOptions toolPropertyWindow torus toupper trace track trackCtx transferAttributes transformCompare transformLimits translator trim trunc truncateFluidCache truncateHairCache tumble tumbleCtx turbulence twoPointArcCtx uiRes uiTemplate unassignInputDevice undo undoInfo ungroup uniform unit unloadPlugin untangleUV untitledFileName untrim upAxis updateAE userCtx uvLink uvSnapshot validateShelfName vectorize view2dToolCtx viewCamera viewClipPlane viewFit viewHeadOn viewLookAt viewManip viewPlace viewSet visor volumeAxis vortex waitCursor warning webBrowser webBrowserPrefs whatIs window windowPref wire wireContext workspace wrinkle wrinkleContext writeTake xbmLangPathList xform",
+illegal:"</",contains:[e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{
+className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{
+begin:/[$%@](\^\w\b|#\w+|[^\s\w{]|\{\w+\}|\w+)/
+},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]})})()
+;hljs.registerLanguage("mel",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/mercury.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/mercury.min.js
new file mode 100644
index 0000000..97e3d79
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/mercury.min.js
@@ -0,0 +1,16 @@
+/*! `mercury` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const i=e.COMMENT("%","$"),n=e.inherit(e.APOS_STRING_MODE,{relevance:0
+}),r=e.inherit(e.QUOTE_STRING_MODE,{relevance:0})
+;return r.contains=r.contains.slice(),r.contains.push({className:"subst",
+begin:"\\\\[abfnrtv]\\|\\\\x[0-9a-fA-F]*\\\\\\|%[-+# *.0-9]*[dioxXucsfeEgGp]",
+relevance:0}),{name:"Mercury",aliases:["m","moo"],keywords:{
+keyword:"module use_module import_module include_module end_module initialise mutable initialize finalize finalise interface implementation pred mode func type inst solver any_pred any_func is semidet det nondet multi erroneous failure cc_nondet cc_multi typeclass instance where pragma promise external trace atomic or_else require_complete_switch require_det require_semidet require_multi require_nondet require_cc_multi require_cc_nondet require_erroneous require_failure",
+meta:"inline no_inline type_spec source_file fact_table obsolete memo loop_check minimal_model terminates does_not_terminate check_termination promise_equivalent_clauses foreign_proc foreign_decl foreign_code foreign_type foreign_import_module foreign_export_enum foreign_export foreign_enum may_call_mercury will_not_call_mercury thread_safe not_thread_safe maybe_thread_safe promise_pure promise_semipure tabled_for_io local untrailed trailed attach_to_io_state can_pass_as_mercury_type stable will_not_throw_exception may_modify_trail will_not_modify_trail may_duplicate may_not_duplicate affects_liveness does_not_affect_liveness doesnt_affect_liveness no_sharing unknown_sharing sharing",
+built_in:"some all not if then else true fail false try catch catch_any semidet_true semidet_false semidet_fail impure_true impure semipure"
+},contains:[{className:"built_in",variants:[{begin:"<=>"},{begin:"<=",
+relevance:0},{begin:"=>",relevance:0},{begin:"/\\\\"},{begin:"\\\\/"}]},{
+className:"built_in",variants:[{begin:":-\\|--\x3e"},{begin:"=",relevance:0}]
+},i,e.C_BLOCK_COMMENT_MODE,{className:"number",begin:"0'.\\|0[box][0-9a-fA-F]*"
+},e.NUMBER_MODE,n,r,{begin:/:-/},{begin:/\.$/}]}}})()
+;hljs.registerLanguage("mercury",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/mipsasm.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/mipsasm.min.js
new file mode 100644
index 0000000..5fd63c3
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/mipsasm.min.js
@@ -0,0 +1,15 @@
+/*! `mipsasm` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"MIPS Assembly",
+case_insensitive:!0,aliases:["mips"],keywords:{$pattern:"\\.?"+e.IDENT_RE,
+meta:".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .ltorg ",
+built_in:"$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 zero at v0 v1 a0 a1 a2 a3 a4 a5 a6 a7 t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 s0 s1 s2 s3 s4 s5 s6 s7 s8 k0 k1 gp sp fp ra $f0 $f1 $f2 $f2 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15 $f16 $f17 $f18 $f19 $f20 $f21 $f22 $f23 $f24 $f25 $f26 $f27 $f28 $f29 $f30 $f31 Context Random EntryLo0 EntryLo1 Context PageMask Wired EntryHi HWREna BadVAddr Count Compare SR IntCtl SRSCtl SRSMap Cause EPC PRId EBase Config Config1 Config2 Config3 LLAddr Debug DEPC DESAVE CacheErr ECC ErrorEPC TagLo DataLo TagHi DataHi WatchLo WatchHi PerfCtl PerfCnt "
+},contains:[{className:"keyword",
+begin:"\\b(addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(\\.hb)?|jr(\\.hb)?|lbu?|lhu?|ll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|srlv?|subu?|sw[lr]?|xori?|wsbh|abs\\.[sd]|add\\.[sd]|alnv.ps|bc1[ft]l?|c\\.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et])\\.[sd]|(ceil|floor|round|trunc)\\.[lw]\\.[sd]|cfc1|cvt\\.d\\.[lsw]|cvt\\.l\\.[dsw]|cvt\\.ps\\.s|cvt\\.s\\.[dlw]|cvt\\.s\\.p[lu]|cvt\\.w\\.[dls]|div\\.[ds]|ldx?c1|luxc1|lwx?c1|madd\\.[sd]|mfc1|mov[fntz]?\\.[ds]|msub\\.[sd]|mth?c1|mul\\.[ds]|neg\\.[ds]|nmadd\\.[ds]|nmsub\\.[ds]|p[lu][lu]\\.ps|recip\\.fmt|r?sqrt\\.[ds]|sdx?c1|sub\\.[ds]|suxc1|swx?c1|break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|rdpgpr|sdbbp|ssnop|synci?|syscall|teqi?|tgei?u?|tlb(p|r|w[ir])|tlti?u?|tnei?|wait|wrpgpr)",
+end:"\\s"
+},e.COMMENT("[;#](?!\\s*$)","$"),e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,{
+className:"string",begin:"'",end:"[^\\\\]'",relevance:0},{className:"title",
+begin:"\\|",end:"\\|",illegal:"\\n",relevance:0},{className:"number",variants:[{
+begin:"0x[0-9a-f]+"},{begin:"\\b-?\\d+"}],relevance:0},{className:"symbol",
+variants:[{begin:"^\\s*[a-z_\\.\\$][a-z0-9_\\.\\$]+:"},{begin:"^\\s*[0-9]+:"},{
+begin:"[0-9]+[bf]"}],relevance:0}],illegal:/\//})})()
+;hljs.registerLanguage("mipsasm",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/mizar.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/mizar.min.js
new file mode 100644
index 0000000..e012515
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/mizar.min.js
@@ -0,0 +1,4 @@
+/*! `mizar` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Mizar",
+keywords:"environ vocabularies notations constructors definitions registrations theorems schemes requirements begin end definition registration cluster existence pred func defpred deffunc theorem proof let take assume then thus hence ex for st holds consider reconsider such that and in provided of as from be being by means equals implies iff redefine define now not or attr is mode suppose per cases set thesis contradiction scheme reserve struct correctness compatibility coherence symmetry assymetry reflexivity irreflexivity connectedness uniqueness commutativity idempotence involutiveness projectivity",
+contains:[e.COMMENT("::","$")]})})();hljs.registerLanguage("mizar",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/mojolicious.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/mojolicious.min.js
new file mode 100644
index 0000000..a56d8cd
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/mojolicious.min.js
@@ -0,0 +1,6 @@
+/*! `mojolicious` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Mojolicious",subLanguage:"xml",
+contains:[{className:"meta",begin:"^__(END|DATA)__$"},{
+begin:"^\\s*%{1,2}={0,2}",end:"$",subLanguage:"perl"},{begin:"<%{1,2}={0,2}",
+end:"={0,1}%>",subLanguage:"perl",excludeBegin:!0,excludeEnd:!0}]})})()
+;hljs.registerLanguage("mojolicious",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/monkey.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/monkey.min.js
new file mode 100644
index 0000000..5123b77
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/monkey.min.js
@@ -0,0 +1,17 @@
+/*! `monkey` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n={className:"number",
+relevance:0,variants:[{begin:"[$][a-fA-F0-9]+"},e.NUMBER_MODE]};return{
+name:"Monkey",case_insensitive:!0,keywords:{
+keyword:"public private property continue exit extern new try catch eachin not abstract final select case default const local global field end if then else elseif endif while wend repeat until forever for to step next return module inline throw import",
+built_in:"DebugLog DebugStop Error Print ACos ACosr ASin ASinr ATan ATan2 ATan2r ATanr Abs Abs Ceil Clamp Clamp Cos Cosr Exp Floor Log Max Max Min Min Pow Sgn Sgn Sin Sinr Sqrt Tan Tanr Seed PI HALFPI TWOPI",
+literal:"true false null and or shl shr mod"},illegal:/\/\*/,
+contains:[e.COMMENT("#rem","#end"),e.COMMENT("'","$",{relevance:0}),{
+className:"function",beginKeywords:"function method",end:"[(=:]|$",illegal:/\n/,
+contains:[e.UNDERSCORE_TITLE_MODE]},{className:"class",
+beginKeywords:"class interface",end:"$",contains:[{
+beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{
+className:"built_in",begin:"\\b(self|super)\\b"},{className:"meta",
+begin:"\\s*#",end:"$",keywords:{keyword:"if else elseif endif end then"}},{
+className:"meta",begin:"^\\s*strict\\b"},{beginKeywords:"alias",end:"=",
+contains:[e.UNDERSCORE_TITLE_MODE]},e.QUOTE_STRING_MODE,n]}}})()
+;hljs.registerLanguage("monkey",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/moonscript.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/moonscript.min.js
new file mode 100644
index 0000000..f219ca7
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/moonscript.min.js
@@ -0,0 +1,23 @@
+/*! `moonscript` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n={
+keyword:"if then not for in while do return else elseif break continue switch and or unless when class extends super local import export from using",
+literal:"true false nil",
+built_in:"_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug io math os package string table"
+},s="[A-Za-z$_][0-9A-Za-z$_]*",a={className:"subst",begin:/#\{/,end:/\}/,
+keywords:n},t=[e.inherit(e.C_NUMBER_MODE,{starts:{end:"(\\s*/)?",relevance:0}
+}),{className:"string",variants:[{begin:/'/,end:/'/,
+contains:[e.BACKSLASH_ESCAPE]},{begin:/"/,end:/"/,
+contains:[e.BACKSLASH_ESCAPE,a]}]},{className:"built_in",begin:"@__"+e.IDENT_RE
+},{begin:"@"+e.IDENT_RE},{begin:e.IDENT_RE+"\\\\"+e.IDENT_RE}];a.contains=t
+;const i=e.inherit(e.TITLE_MODE,{begin:s}),r="(\\(.*\\)\\s*)?\\B[-=]>",l={
+className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/,
+end:/\)/,keywords:n,contains:["self"].concat(t)}]};return{name:"MoonScript",
+aliases:["moon"],keywords:n,illegal:/\/\*/,
+contains:t.concat([e.COMMENT("--","$"),{className:"function",
+begin:"^\\s*"+s+"\\s*=\\s*"+r,end:"[-=]>",returnBegin:!0,contains:[i,l]},{
+begin:/[\(,:=]\s*/,relevance:0,contains:[{className:"function",begin:r,
+end:"[-=]>",returnBegin:!0,contains:[l]}]},{className:"class",
+beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{
+beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[i]},i]
+},{className:"name",begin:s+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0
+}])}}})();hljs.registerLanguage("moonscript",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/n1ql.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/n1ql.min.js
new file mode 100644
index 0000000..66c47e4
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/n1ql.min.js
@@ -0,0 +1,13 @@
+/*! `n1ql` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"N1QL",case_insensitive:!0,
+contains:[{
+beginKeywords:"build create index delete drop explain infer|10 insert merge prepare select update upsert|10",
+end:/;/,keywords:{
+keyword:["all","alter","analyze","and","any","array","as","asc","begin","between","binary","boolean","break","bucket","build","by","call","case","cast","cluster","collate","collection","commit","connect","continue","correlate","cover","create","database","dataset","datastore","declare","decrement","delete","derived","desc","describe","distinct","do","drop","each","element","else","end","every","except","exclude","execute","exists","explain","fetch","first","flatten","for","force","from","function","grant","group","gsi","having","if","ignore","ilike","in","include","increment","index","infer","inline","inner","insert","intersect","into","is","join","key","keys","keyspace","known","last","left","let","letting","like","limit","lsm","map","mapping","matched","materialized","merge","minus","namespace","nest","not","number","object","offset","on","option","or","order","outer","over","parse","partition","password","path","pool","prepare","primary","private","privilege","procedure","public","raw","realm","reduce","rename","return","returning","revoke","right","role","rollback","satisfies","schema","select","self","semi","set","show","some","start","statistics","string","system","then","to","transaction","trigger","truncate","under","union","unique","unknown","unnest","unset","update","upsert","use","user","using","validate","value","valued","values","via","view","when","where","while","with","within","work","xor"],
+literal:["true","false","null","missing|5"],
+built_in:["array_agg","array_append","array_concat","array_contains","array_count","array_distinct","array_ifnull","array_length","array_max","array_min","array_position","array_prepend","array_put","array_range","array_remove","array_repeat","array_replace","array_reverse","array_sort","array_sum","avg","count","max","min","sum","greatest","least","ifmissing","ifmissingornull","ifnull","missingif","nullif","ifinf","ifnan","ifnanorinf","naninf","neginfif","posinfif","clock_millis","clock_str","date_add_millis","date_add_str","date_diff_millis","date_diff_str","date_part_millis","date_part_str","date_trunc_millis","date_trunc_str","duration_to_str","millis","str_to_millis","millis_to_str","millis_to_utc","millis_to_zone_name","now_millis","now_str","str_to_duration","str_to_utc","str_to_zone_name","decode_json","encode_json","encoded_size","poly_length","base64","base64_encode","base64_decode","meta","uuid","abs","acos","asin","atan","atan2","ceil","cos","degrees","e","exp","ln","log","floor","pi","power","radians","random","round","sign","sin","sqrt","tan","trunc","object_length","object_names","object_pairs","object_inner_pairs","object_values","object_inner_values","object_add","object_put","object_remove","object_unwrap","regexp_contains","regexp_like","regexp_position","regexp_replace","contains","initcap","length","lower","ltrim","position","repeat","replace","rtrim","split","substr","title","trim","upper","isarray","isatom","isboolean","isnumber","isobject","isstring","type","toarray","toatom","toboolean","tonumber","toobject","tostring"]
+},contains:[{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE]
+},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE]},{
+className:"symbol",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]
+},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_BLOCK_COMMENT_MODE]})})()
+;hljs.registerLanguage("n1ql",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/nestedtext.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/nestedtext.min.js
new file mode 100644
index 0000000..0cea608
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/nestedtext.min.js
@@ -0,0 +1,9 @@
+/*! `nestedtext` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var t=(()=>{"use strict";return t=>({name:"Nested Text",aliases:["nt"],
+contains:[t.inherit(t.HASH_COMMENT_MODE,{begin:/^\s*(?=#)/,excludeBegin:!0}),{
+variants:[{match:[/^\s*/,/-/,/[ ]/,/.*$/]},{match:[/^\s*/,/-$/]}],className:{
+2:"bullet",4:"string"}},{match:[/^\s*/,/>/,/[ ]/,/.*$/],className:{
+2:"punctuation",4:"string"}},{match:[/^\s*(?=\S)/,/[^:]+/,/:\s*/,/$/],
+className:{2:"attribute",3:"punctuation"}},{
+match:[/^\s*(?=\S)/,/[^:]*[^: ]/,/[ ]*:/,/[ ]/,/.*$/],className:{2:"attribute",
+3:"punctuation",5:"string"}}]})})();hljs.registerLanguage("nestedtext",t)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/nginx.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/nginx.min.js
new file mode 100644
index 0000000..d715c83
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/nginx.min.js
@@ -0,0 +1,21 @@
+/*! `nginx` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n=e.regex,a={
+className:"variable",variants:[{begin:/\$\d+/},{begin:/\$\{\w+\}/},{
+begin:n.concat(/[$@]/,e.UNDERSCORE_IDENT_RE)}]},s={endsWithParent:!0,keywords:{
+$pattern:/[a-z_]{2,}|\/dev\/poll/,
+literal:["on","off","yes","no","true","false","none","blocked","debug","info","notice","warn","error","crit","select","break","last","permanent","redirect","kqueue","rtsig","epoll","poll","/dev/poll"]
+},relevance:0,illegal:"=>",contains:[e.HASH_COMMENT_MODE,{className:"string",
+contains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:/"/,end:/"/},{begin:/'/,end:/'/
+}]},{begin:"([a-z]+):/",end:"\\s",endsWithParent:!0,excludeEnd:!0,contains:[a]
+},{className:"regexp",contains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:"\\s\\^",
+end:"\\s|\\{|;",returnEnd:!0},{begin:"~\\*?\\s+",end:"\\s|\\{|;",returnEnd:!0},{
+begin:"\\*(\\.[a-z\\-]+)+"},{begin:"([a-z\\-]+\\.)+\\*"}]},{className:"number",
+begin:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{
+className:"number",begin:"\\b\\d+[kKmMgGdshdwy]?\\b",relevance:0},a]};return{
+name:"Nginx config",aliases:["nginxconf"],contains:[e.HASH_COMMENT_MODE,{
+beginKeywords:"upstream location",end:/;|\{/,contains:s.contains,keywords:{
+section:"upstream location"}},{className:"section",
+begin:n.concat(e.UNDERSCORE_IDENT_RE+n.lookahead(/\s+\{/)),relevance:0},{
+begin:n.lookahead(e.UNDERSCORE_IDENT_RE+"\\s"),end:";|\\{",contains:[{
+className:"attribute",begin:e.UNDERSCORE_IDENT_RE,starts:s}],relevance:0}],
+illegal:"[^\\s\\}\\{]"}}})();hljs.registerLanguage("nginx",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/nim.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/nim.min.js
new file mode 100644
index 0000000..2fd54ba
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/nim.min.js
@@ -0,0 +1,15 @@
+/*! `nim` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Nim",keywords:{
+keyword:["addr","and","as","asm","bind","block","break","case","cast","const","continue","converter","discard","distinct","div","do","elif","else","end","enum","except","export","finally","for","from","func","generic","guarded","if","import","in","include","interface","is","isnot","iterator","let","macro","method","mixin","mod","nil","not","notin","object","of","or","out","proc","ptr","raise","ref","return","shared","shl","shr","static","template","try","tuple","type","using","var","when","while","with","without","xor","yield"],
+literal:["true","false"],
+type:["int","int8","int16","int32","int64","uint","uint8","uint16","uint32","uint64","float","float32","float64","bool","char","string","cstring","pointer","expr","stmt","void","auto","any","range","array","openarray","varargs","seq","set","clong","culong","cchar","cschar","cshort","cint","csize","clonglong","cfloat","cdouble","clongdouble","cuchar","cushort","cuint","culonglong","cstringarray","semistatic"],
+built_in:["stdin","stdout","stderr","result"]},contains:[{className:"meta",
+begin:/\{\./,end:/\.\}/,relevance:10},{className:"string",begin:/[a-zA-Z]\w*"/,
+end:/"/,contains:[{begin:/""/}]},{className:"string",begin:/([a-zA-Z]\w*)?"""/,
+end:/"""/},e.QUOTE_STRING_MODE,{className:"type",begin:/\b[A-Z]\w+\b/,
+relevance:0},{className:"number",relevance:0,variants:[{
+begin:/\b(0[xX][0-9a-fA-F][_0-9a-fA-F]*)('?[iIuU](8|16|32|64))?/},{
+begin:/\b(0o[0-7][_0-7]*)('?[iIuUfF](8|16|32|64))?/},{
+begin:/\b(0(b|B)[01][_01]*)('?[iIuUfF](8|16|32|64))?/},{
+begin:/\b(\d[_\d]*)('?[iIuUfF](8|16|32|64))?/}]},e.HASH_COMMENT_MODE]})})()
+;hljs.registerLanguage("nim",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/nix.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/nix.min.js
new file mode 100644
index 0000000..2564044
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/nix.min.js
@@ -0,0 +1,12 @@
+/*! `nix` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n={
+keyword:["rec","with","let","in","inherit","assert","if","else","then"],
+literal:["true","false","or","and","null"],
+built_in:["import","abort","baseNameOf","dirOf","isNull","builtins","map","removeAttrs","throw","toString","derivation"]
+},i={className:"subst",begin:/\$\{/,end:/\}/,keywords:n},s={className:"string",
+contains:[i],variants:[{begin:"''",end:"''"},{begin:'"',end:'"'}]
+},t=[e.NUMBER_MODE,e.HASH_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,{
+begin:/[a-zA-Z0-9-_]+(\s*=)/,returnBegin:!0,relevance:0,contains:[{
+className:"attr",begin:/\S+/}]}];return i.contains=t,{name:"Nix",
+aliases:["nixos"],keywords:n,contains:t}}})();hljs.registerLanguage("nix",e)
+})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/node-repl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/node-repl.min.js
new file mode 100644
index 0000000..ca0ed70
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/node-repl.min.js
@@ -0,0 +1,5 @@
+/*! `node-repl` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var a=(()=>{"use strict";return a=>({name:"Node REPL",contains:[{
+className:"meta",starts:{end:/ |$/,starts:{end:"$",subLanguage:"javascript"}},
+variants:[{begin:/^>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]})})()
+;hljs.registerLanguage("node-repl",a)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/nsis.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/nsis.min.js
new file mode 100644
index 0000000..e0a7ffc
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/nsis.min.js
@@ -0,0 +1,27 @@
+/*! `nsis` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";function e(e){
+return e?"string"==typeof e?e:e.source:null}function t(...t){
+return t.map((t=>e(t))).join("")}function n(...t){const n=(e=>{
+const t=e[e.length-1]
+;return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}
+})(t);return"("+(n.capture?"":"?:")+t.map((t=>e(t))).join("|")+")"}return e=>{
+const i={className:"variable.constant",
+begin:t(/\$/,n("ADMINTOOLS","APPDATA","CDBURN_AREA","CMDLINE","COMMONFILES32","COMMONFILES64","COMMONFILES","COOKIES","DESKTOP","DOCUMENTS","EXEDIR","EXEFILE","EXEPATH","FAVORITES","FONTS","HISTORY","HWNDPARENT","INSTDIR","INTERNET_CACHE","LANGUAGE","LOCALAPPDATA","MUSIC","NETHOOD","OUTDIR","PICTURES","PLUGINSDIR","PRINTHOOD","PROFILE","PROGRAMFILES32","PROGRAMFILES64","PROGRAMFILES","QUICKLAUNCH","RECENT","RESOURCES_LOCALIZED","RESOURCES","SENDTO","SMPROGRAMS","SMSTARTUP","STARTMENU","SYSDIR","TEMP","TEMPLATES","VIDEOS","WINDIR"))
+},r={className:"variable",begin:/\$+\{[\w.:-]+\}/},l={className:"variable",
+begin:/\$+\w+/,illegal:/\(\)\{\}/},o={className:"variable",
+begin:/\$+\([\w^.:-]+\)/},s={className:"params",
+begin:n("ARCHIVE","FILE_ATTRIBUTE_ARCHIVE","FILE_ATTRIBUTE_NORMAL","FILE_ATTRIBUTE_OFFLINE","FILE_ATTRIBUTE_READONLY","FILE_ATTRIBUTE_SYSTEM","FILE_ATTRIBUTE_TEMPORARY","HKCR","HKCU","HKDD","HKEY_CLASSES_ROOT","HKEY_CURRENT_CONFIG","HKEY_CURRENT_USER","HKEY_DYN_DATA","HKEY_LOCAL_MACHINE","HKEY_PERFORMANCE_DATA","HKEY_USERS","HKLM","HKPD","HKU","IDABORT","IDCANCEL","IDIGNORE","IDNO","IDOK","IDRETRY","IDYES","MB_ABORTRETRYIGNORE","MB_DEFBUTTON1","MB_DEFBUTTON2","MB_DEFBUTTON3","MB_DEFBUTTON4","MB_ICONEXCLAMATION","MB_ICONINFORMATION","MB_ICONQUESTION","MB_ICONSTOP","MB_OK","MB_OKCANCEL","MB_RETRYCANCEL","MB_RIGHT","MB_RTLREADING","MB_SETFOREGROUND","MB_TOPMOST","MB_USERICON","MB_YESNO","NORMAL","OFFLINE","READONLY","SHCTX","SHELL_CONTEXT","SYSTEM|TEMPORARY")
+},a={className:"keyword",
+begin:t(/!/,n("addincludedir","addplugindir","appendfile","cd","define","delfile","echo","else","endif","error","execute","finalize","getdllversion","gettlbversion","if","ifdef","ifmacrodef","ifmacrondef","ifndef","include","insertmacro","macro","macroend","makensis","packhdr","searchparse","searchreplace","system","tempfile","undef","uninstfinalize","verbose","warning"))
+},S={className:"string",variants:[{begin:'"',end:'"'},{begin:"'",end:"'"},{
+begin:"`",end:"`"}],illegal:/\n/,contains:[{className:"meta",
+begin:/\$(\\[nrt]|\$)/},i,r,l,o]},E={
+match:[/Function/,/\s+/,t(/(\.)?/,e.IDENT_RE)],scope:{1:"keyword",
+3:"title.function"}};return{name:"NSIS",case_insensitive:!0,keywords:{
+keyword:["Abort","AddBrandingImage","AddSize","AllowRootDirInstall","AllowSkipFiles","AutoCloseWindow","BGFont","BGGradient","BrandingText","BringToFront","Call","CallInstDLL","Caption","ChangeUI","CheckBitmap","ClearErrors","CompletedText","ComponentText","CopyFiles","CRCCheck","CreateDirectory","CreateFont","CreateShortCut","Delete","DeleteINISec","DeleteINIStr","DeleteRegKey","DeleteRegValue","DetailPrint","DetailsButtonText","DirText","DirVar","DirVerify","EnableWindow","EnumRegKey","EnumRegValue","Exch","Exec","ExecShell","ExecShellWait","ExecWait","ExpandEnvStrings","File","FileBufSize","FileClose","FileErrorText","FileOpen","FileRead","FileReadByte","FileReadUTF16LE","FileReadWord","FileWriteUTF16LE","FileSeek","FileWrite","FileWriteByte","FileWriteWord","FindClose","FindFirst","FindNext","FindWindow","FlushINI","GetCurInstType","GetCurrentAddress","GetDlgItem","GetDLLVersion","GetDLLVersionLocal","GetErrorLevel","GetFileTime","GetFileTimeLocal","GetFullPathName","GetFunctionAddress","GetInstDirError","GetKnownFolderPath","GetLabelAddress","GetTempFileName","GetWinVer","Goto","HideWindow","Icon","IfAbort","IfErrors","IfFileExists","IfRebootFlag","IfRtlLanguage","IfShellVarContextAll","IfSilent","InitPluginsDir","InstallButtonText","InstallColors","InstallDir","InstallDirRegKey","InstProgressFlags","InstType","InstTypeGetText","InstTypeSetText","Int64Cmp","Int64CmpU","Int64Fmt","IntCmp","IntCmpU","IntFmt","IntOp","IntPtrCmp","IntPtrCmpU","IntPtrOp","IsWindow","LangString","LicenseBkColor","LicenseData","LicenseForceSelection","LicenseLangString","LicenseText","LoadAndSetImage","LoadLanguageFile","LockWindow","LogSet","LogText","ManifestDPIAware","ManifestLongPathAware","ManifestMaxVersionTested","ManifestSupportedOS","MessageBox","MiscButtonText","Name","Nop","OutFile","Page","PageCallbacks","PEAddResource","PEDllCharacteristics","PERemoveResource","PESubsysVer","Pop","Push","Quit","ReadEnvStr","ReadINIStr","ReadRegDWORD","ReadRegStr","Reboot","RegDLL","Rename","RequestExecutionLevel","ReserveFile","Return","RMDir","SearchPath","SectionGetFlags","SectionGetInstTypes","SectionGetSize","SectionGetText","SectionIn","SectionSetFlags","SectionSetInstTypes","SectionSetSize","SectionSetText","SendMessage","SetAutoClose","SetBrandingImage","SetCompress","SetCompressor","SetCompressorDictSize","SetCtlColors","SetCurInstType","SetDatablockOptimize","SetDateSave","SetDetailsPrint","SetDetailsView","SetErrorLevel","SetErrors","SetFileAttributes","SetFont","SetOutPath","SetOverwrite","SetRebootFlag","SetRegView","SetShellVarContext","SetSilent","ShowInstDetails","ShowUninstDetails","ShowWindow","SilentInstall","SilentUnInstall","Sleep","SpaceTexts","StrCmp","StrCmpS","StrCpy","StrLen","SubCaption","Unicode","UninstallButtonText","UninstallCaption","UninstallIcon","UninstallSubCaption","UninstallText","UninstPage","UnRegDLL","Var","VIAddVersionKey","VIFileVersion","VIProductVersion","WindowIcon","WriteINIStr","WriteRegBin","WriteRegDWORD","WriteRegExpandStr","WriteRegMultiStr","WriteRegNone","WriteRegStr","WriteUninstaller","XPStyle"],
+literal:["admin","all","auto","both","bottom","bzip2","colored","components","current","custom","directory","false","force","hide","highest","ifdiff","ifnewer","instfiles","lastused","leave","left","license","listonly","lzma","nevershow","none","normal","notset","off","on","open","print","right","show","silent","silentlog","smooth","textonly","top","true","try","un.components","un.custom","un.directory","un.instfiles","un.license","uninstConfirm","user","Win10","Win7","Win8","WinVista","zlib"]
+},contains:[e.HASH_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT(";","$",{
+relevance:0}),E,{
+beginKeywords:"Function PageEx Section SectionGroup FunctionEnd SectionEnd"
+},S,a,r,l,o,s,{className:"title.function",begin:/\w+::\w+/},e.NUMBER_MODE]}}})()
+;hljs.registerLanguage("nsis",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/objectivec.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/objectivec.min.js
new file mode 100644
index 0000000..11ba854
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/objectivec.min.js
@@ -0,0 +1,21 @@
+/*! `objectivec` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={
+$pattern:n,keyword:["@interface","@class","@protocol","@implementation"]}
+;return{name:"Objective-C",
+aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:{$pattern:n,
+keyword:["int","float","while","char","export","sizeof","typedef","const","struct","for","union","unsigned","long","volatile","static","bool","mutable","if","do","return","goto","void","enum","else","break","extern","asm","case","short","default","double","register","explicit","signed","typename","this","switch","continue","wchar_t","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","super","unichar","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],
+literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"],
+built_in:["BOOL","dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"]
+},illegal:"</",contains:[{className:"built_in",
+begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"
+},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{
+className:"string",variants:[{begin:'@"',end:'"',illegal:"\\n",
+contains:[e.BACKSLASH_ESCAPE]}]},{className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,
+keywords:{
+keyword:"if else elif endif define undef warning error line pragma ifdef ifndef include"
+},contains:[{begin:/\\\n/,relevance:0},e.inherit(e.QUOTE_STRING_MODE,{
+className:"string"}),{className:"string",begin:/<.*?>/,end:/$/,illegal:"\\n"
+},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class",
+begin:"("+_.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:_,
+contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,
+relevance:0}]}}})();hljs.registerLanguage("objectivec",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/ocaml.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/ocaml.min.js
new file mode 100644
index 0000000..dcd8d16
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/ocaml.min.js
@@ -0,0 +1,14 @@
+/*! `ocaml` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"OCaml",aliases:["ml"],
+keywords:{$pattern:"[a-z_]\\w*!?",
+keyword:"and as assert asr begin class constraint do done downto else end exception external for fun function functor if in include inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method mod module mutable new object of open! open or private rec sig struct then to try type val! val virtual when while with parser value",
+built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit in_channel out_channel ref",
+literal:"true false"},illegal:/\/\/|>>/,contains:[{className:"literal",
+begin:"\\[(\\|\\|)?\\]|\\(\\)",relevance:0},e.COMMENT("\\(\\*","\\*\\)",{
+contains:["self"]}),{className:"symbol",begin:"'[A-Za-z_](?!')[\\w']*"},{
+className:"type",begin:"`[A-Z][\\w']*"},{className:"type",
+begin:"\\b[A-Z][\\w']*",relevance:0},{begin:"[a-z_]\\w*'[\\w']*",relevance:0
+},e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0
+}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number",
+begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",
+relevance:0},{begin:/->/}]})})();hljs.registerLanguage("ocaml",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/openscad.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/openscad.min.js
new file mode 100644
index 0000000..b933cd7
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/openscad.min.js
@@ -0,0 +1,15 @@
+/*! `openscad` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n={className:"keyword",
+begin:"\\$(f[asn]|t|vp[rtd]|children)"},r={className:"number",
+begin:"\\b\\d+(\\.\\d+)?(e-?\\d+)?",relevance:0
+},s=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),a={className:"function",
+beginKeywords:"module function",end:/=|\{/,contains:[{className:"params",
+begin:"\\(",end:"\\)",contains:["self",r,s,n,{className:"literal",
+begin:"false|true|PI|undef"}]},e.UNDERSCORE_TITLE_MODE]};return{name:"OpenSCAD",
+aliases:["scad"],keywords:{
+keyword:"function module include use for intersection_for if else \\%",
+literal:"false true PI undef",
+built_in:"circle square polygon text sphere cube cylinder polyhedron translate rotate scale resize mirror multmatrix color offset hull minkowski union difference intersection abs sign sin cos tan acos asin atan atan2 floor round ceil ln log pow sqrt exp rands min max concat lookup str chr search version version_num norm cross parent_module echo import import_dxf dxf_linear_extrude linear_extrude rotate_extrude surface projection render children dxf_cross dxf_dim let assign"
+},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,{className:"meta",
+keywords:{keyword:"include use"},begin:"include|use <",end:">"},s,n,{
+begin:"[*!#%]",relevance:0},a]}}})();hljs.registerLanguage("openscad",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/oxygene.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/oxygene.min.js
new file mode 100644
index 0000000..72beb84
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/oxygene.min.js
@@ -0,0 +1,15 @@
+/*! `oxygene` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const r={$pattern:/\.?\w+/,
+keyword:"abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained"
+},a=e.COMMENT(/\{/,/\}/,{relevance:0}),n=e.COMMENT("\\(\\*","\\*\\)",{
+relevance:10}),t={className:"string",begin:"'",end:"'",contains:[{begin:"''"}]
+},s={className:"string",begin:"(#\\d+)+"},i={className:"function",
+beginKeywords:"function constructor destructor procedure method",end:"[:;]",
+keywords:"function constructor|10 destructor|10 procedure|10 method|10",
+contains:[e.TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",keywords:r,
+contains:[t,s]},a,n]};return{name:"Oxygene",case_insensitive:!0,keywords:r,
+illegal:'("|\\$[G-Zg-z]|\\/\\*|</|=>|->)',
+contains:[a,n,e.C_LINE_COMMENT_MODE,t,s,e.NUMBER_MODE,i,{className:"class",
+begin:"=\\bclass\\b",end:"end;",keywords:r,
+contains:[t,s,a,n,e.C_LINE_COMMENT_MODE,i]}]}}})()
+;hljs.registerLanguage("oxygene",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/parser3.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/parser3.min.js
new file mode 100644
index 0000000..6c07549
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/parser3.min.js
@@ -0,0 +1,10 @@
+/*! `parser3` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const a=e.COMMENT(/\{/,/\}/,{
+contains:["self"]});return{name:"Parser3",subLanguage:"xml",relevance:0,
+contains:[e.COMMENT("^#","$"),e.COMMENT(/\^rem\{/,/\}/,{relevance:10,
+contains:[a]}),{className:"meta",begin:"^@(?:BASE|USE|CLASS|OPTIONS)$",
+relevance:10},{className:"title",
+begin:"@[\\w\\-]+\\[[\\w^;\\-]*\\](?:\\[[\\w^;\\-]*\\])?(?:.*)$"},{
+className:"variable",begin:/\$\{?[\w\-.:]+\}?/},{className:"keyword",
+begin:/\^[\w\-.:]+/},{className:"number",begin:"\\^#[0-9a-fA-F]+"
+},e.C_NUMBER_MODE]}}})();hljs.registerLanguage("parser3",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/perl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/perl.min.js
new file mode 100644
index 0000000..e03b3ef
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/perl.min.js
@@ -0,0 +1,36 @@
+/*! `perl` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const n=e.regex,t=/[dualxmsipngr]{0,12}/,r={$pattern:/[\w.]+/,
+keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0"
+},s={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:r},i={begin:/->\{/,
+end:/\}/},a={variants:[{begin:/\$\d/},{
+begin:n.concat(/[$%@](\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])")
+},{begin:/[$%@][^\s\w{]/,relevance:0}]
+},c=[e.BACKSLASH_ESCAPE,s,a],o=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],g=(e,r,s="\\1")=>{
+const i="\\1"===s?s:n.concat(s,r)
+;return n.concat(n.concat("(?:",e,")"),r,/(?:\\.|[^\\\/])*?/,i,/(?:\\.|[^\\\/])*?/,s,t)
+},l=(e,r,s)=>n.concat(n.concat("(?:",e,")"),r,/(?:\\.|[^\\\/])*?/,s,t),d=[a,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{
+endsWithParent:!0}),i,{className:"string",contains:c,variants:[{
+begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",
+end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{
+begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">",
+relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",
+contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",
+contains:[e.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{
+begin:"-?\\w+\\s*=>",relevance:0}]},{className:"number",
+begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",
+relevance:0},{
+begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",
+keywords:"split return print reverse grep",relevance:0,
+contains:[e.HASH_COMMENT_MODE,{className:"regexp",variants:[{
+begin:g("s|tr|y",n.either(...o,{capture:!0}))},{begin:g("s|tr|y","\\(","\\)")},{
+begin:g("s|tr|y","\\[","\\]")},{begin:g("s|tr|y","\\{","\\}")}],relevance:2},{
+className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{
+begin:l("(?:m|qr)?",/\//,/\//)},{begin:l("m|qr",n.either(...o,{capture:!0
+}),/\1/)},{begin:l("m|qr",/\(/,/\)/)},{begin:l("m|qr",/\[/,/\]/)},{
+begin:l("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub",
+end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{
+begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",
+subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]
+}];return s.contains=d,i.contains=d,{name:"Perl",aliases:["pl","pm"],keywords:r,
+contains:d}}})();hljs.registerLanguage("perl",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/pf.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/pf.min.js
new file mode 100644
index 0000000..a894fbb
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/pf.min.js
@@ -0,0 +1,9 @@
+/*! `pf` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var t=(()=>{"use strict";return t=>({name:"Packet Filter config",
+aliases:["pf.conf"],keywords:{$pattern:/[a-z0-9_<>-]+/,
+built_in:"block match pass load anchor|5 antispoof|10 set table",
+keyword:"in out log quick on rdomain inet inet6 proto from port os to route allow-opts divert-packet divert-reply divert-to flags group icmp-type icmp6-type label once probability recieved-on rtable prio queue tos tag tagged user keep fragment for os drop af-to|10 binat-to|10 nat-to|10 rdr-to|10 bitmask least-stats random round-robin source-hash static-port dup-to reply-to route-to parent bandwidth default min max qlimit block-policy debug fingerprints hostid limit loginterface optimization reassemble ruleset-optimization basic none profile skip state-defaults state-policy timeout const counters persist no modulate synproxy state|5 floating if-bound no-sync pflow|10 sloppy source-track global rule max-src-nodes max-src-states max-src-conn max-src-conn-rate overload flush scrub|5 max-mss min-ttl no-df|10 random-id",
+literal:"all any no-route self urpf-failed egress|5 unknown"},
+contains:[t.HASH_COMMENT_MODE,t.NUMBER_MODE,t.QUOTE_STRING_MODE,{
+className:"variable",begin:/\$[\w\d#@][\w\d_]*/},{className:"variable",
+begin:/<(?!\/)/,end:/>/}]})})();hljs.registerLanguage("pf",t)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/pgsql.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/pgsql.min.js
new file mode 100644
index 0000000..53544c8
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/pgsql.min.js
@@ -0,0 +1,69 @@
+/*! `pgsql` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var E=(()=>{"use strict";return E=>{
+const T=E.COMMENT("--","$"),N="\\$([a-zA-Z_]?|[a-zA-Z_][a-zA-Z_0-9]*)\\$",A="BIGINT INT8 BIGSERIAL SERIAL8 BIT VARYING VARBIT BOOLEAN BOOL BOX BYTEA CHARACTER CHAR VARCHAR CIDR CIRCLE DATE DOUBLE PRECISION FLOAT8 FLOAT INET INTEGER INT INT4 INTERVAL JSON JSONB LINE LSEG|10 MACADDR MACADDR8 MONEY NUMERIC DEC DECIMAL PATH POINT POLYGON REAL FLOAT4 SMALLINT INT2 SMALLSERIAL|10 SERIAL2|10 SERIAL|10 SERIAL4|10 TEXT TIME ZONE TIMETZ|10 TIMESTAMP TIMESTAMPTZ|10 TSQUERY|10 TSVECTOR|10 TXID_SNAPSHOT|10 UUID XML NATIONAL NCHAR INT4RANGE|10 INT8RANGE|10 NUMRANGE|10 TSRANGE|10 TSTZRANGE|10 DATERANGE|10 ANYELEMENT ANYARRAY ANYNONARRAY ANYENUM ANYRANGE CSTRING INTERNAL RECORD PG_DDL_COMMAND VOID UNKNOWN OPAQUE REFCURSOR NAME OID REGPROC|10 REGPROCEDURE|10 REGOPER|10 REGOPERATOR|10 REGCLASS|10 REGTYPE|10 REGROLE|10 REGNAMESPACE|10 REGCONFIG|10 REGDICTIONARY|10 ",R=A.trim().split(" ").map((E=>E.split("|")[0])).join("|"),I="ARRAY_AGG AVG BIT_AND BIT_OR BOOL_AND BOOL_OR COUNT EVERY JSON_AGG JSONB_AGG JSON_OBJECT_AGG JSONB_OBJECT_AGG MAX MIN MODE STRING_AGG SUM XMLAGG CORR COVAR_POP COVAR_SAMP REGR_AVGX REGR_AVGY REGR_COUNT REGR_INTERCEPT REGR_R2 REGR_SLOPE REGR_SXX REGR_SXY REGR_SYY STDDEV STDDEV_POP STDDEV_SAMP VARIANCE VAR_POP VAR_SAMP PERCENTILE_CONT PERCENTILE_DISC ROW_NUMBER RANK DENSE_RANK PERCENT_RANK CUME_DIST NTILE LAG LEAD FIRST_VALUE LAST_VALUE NTH_VALUE NUM_NONNULLS NUM_NULLS ABS CBRT CEIL CEILING DEGREES DIV EXP FLOOR LN LOG MOD PI POWER RADIANS ROUND SCALE SIGN SQRT TRUNC WIDTH_BUCKET RANDOM SETSEED ACOS ACOSD ASIN ASIND ATAN ATAND ATAN2 ATAN2D COS COSD COT COTD SIN SIND TAN TAND BIT_LENGTH CHAR_LENGTH CHARACTER_LENGTH LOWER OCTET_LENGTH OVERLAY POSITION SUBSTRING TREAT TRIM UPPER ASCII BTRIM CHR CONCAT CONCAT_WS CONVERT CONVERT_FROM CONVERT_TO DECODE ENCODE INITCAP LEFT LENGTH LPAD LTRIM MD5 PARSE_IDENT PG_CLIENT_ENCODING QUOTE_IDENT|10 QUOTE_LITERAL|10 QUOTE_NULLABLE|10 REGEXP_MATCH REGEXP_MATCHES REGEXP_REPLACE REGEXP_SPLIT_TO_ARRAY REGEXP_SPLIT_TO_TABLE REPEAT REPLACE REVERSE RIGHT RPAD RTRIM SPLIT_PART STRPOS SUBSTR TO_ASCII TO_HEX TRANSLATE OCTET_LENGTH GET_BIT GET_BYTE SET_BIT SET_BYTE TO_CHAR TO_DATE TO_NUMBER TO_TIMESTAMP AGE CLOCK_TIMESTAMP|10 DATE_PART DATE_TRUNC ISFINITE JUSTIFY_DAYS JUSTIFY_HOURS JUSTIFY_INTERVAL MAKE_DATE MAKE_INTERVAL|10 MAKE_TIME MAKE_TIMESTAMP|10 MAKE_TIMESTAMPTZ|10 NOW STATEMENT_TIMESTAMP|10 TIMEOFDAY TRANSACTION_TIMESTAMP|10 ENUM_FIRST ENUM_LAST ENUM_RANGE AREA CENTER DIAMETER HEIGHT ISCLOSED ISOPEN NPOINTS PCLOSE POPEN RADIUS WIDTH BOX BOUND_BOX CIRCLE LINE LSEG PATH POLYGON ABBREV BROADCAST HOST HOSTMASK MASKLEN NETMASK NETWORK SET_MASKLEN TEXT INET_SAME_FAMILY INET_MERGE MACADDR8_SET7BIT ARRAY_TO_TSVECTOR GET_CURRENT_TS_CONFIG NUMNODE PLAINTO_TSQUERY PHRASETO_TSQUERY WEBSEARCH_TO_TSQUERY QUERYTREE SETWEIGHT STRIP TO_TSQUERY TO_TSVECTOR JSON_TO_TSVECTOR JSONB_TO_TSVECTOR TS_DELETE TS_FILTER TS_HEADLINE TS_RANK TS_RANK_CD TS_REWRITE TSQUERY_PHRASE TSVECTOR_TO_ARRAY TSVECTOR_UPDATE_TRIGGER TSVECTOR_UPDATE_TRIGGER_COLUMN XMLCOMMENT XMLCONCAT XMLELEMENT XMLFOREST XMLPI XMLROOT XMLEXISTS XML_IS_WELL_FORMED XML_IS_WELL_FORMED_DOCUMENT XML_IS_WELL_FORMED_CONTENT XPATH XPATH_EXISTS XMLTABLE XMLNAMESPACES TABLE_TO_XML TABLE_TO_XMLSCHEMA TABLE_TO_XML_AND_XMLSCHEMA QUERY_TO_XML QUERY_TO_XMLSCHEMA QUERY_TO_XML_AND_XMLSCHEMA CURSOR_TO_XML CURSOR_TO_XMLSCHEMA SCHEMA_TO_XML SCHEMA_TO_XMLSCHEMA SCHEMA_TO_XML_AND_XMLSCHEMA DATABASE_TO_XML DATABASE_TO_XMLSCHEMA DATABASE_TO_XML_AND_XMLSCHEMA XMLATTRIBUTES TO_JSON TO_JSONB ARRAY_TO_JSON ROW_TO_JSON JSON_BUILD_ARRAY JSONB_BUILD_ARRAY JSON_BUILD_OBJECT JSONB_BUILD_OBJECT JSON_OBJECT JSONB_OBJECT JSON_ARRAY_LENGTH JSONB_ARRAY_LENGTH JSON_EACH JSONB_EACH JSON_EACH_TEXT JSONB_EACH_TEXT JSON_EXTRACT_PATH JSONB_EXTRACT_PATH JSON_OBJECT_KEYS JSONB_OBJECT_KEYS JSON_POPULATE_RECORD JSONB_POPULATE_RECORD JSON_POPULATE_RECORDSET JSONB_POPULATE_RECORDSET JSON_ARRAY_ELEMENTS JSONB_ARRAY_ELEMENTS JSON_ARRAY_ELEMENTS_TEXT JSONB_ARRAY_ELEMENTS_TEXT JSON_TYPEOF JSONB_TYPEOF JSON_TO_RECORD JSONB_TO_RECORD JSON_TO_RECORDSET JSONB_TO_RECORDSET JSON_STRIP_NULLS JSONB_STRIP_NULLS JSONB_SET JSONB_INSERT JSONB_PRETTY CURRVAL LASTVAL NEXTVAL SETVAL COALESCE NULLIF GREATEST LEAST ARRAY_APPEND ARRAY_CAT ARRAY_NDIMS ARRAY_DIMS ARRAY_FILL ARRAY_LENGTH ARRAY_LOWER ARRAY_POSITION ARRAY_POSITIONS ARRAY_PREPEND ARRAY_REMOVE ARRAY_REPLACE ARRAY_TO_STRING ARRAY_UPPER CARDINALITY STRING_TO_ARRAY UNNEST ISEMPTY LOWER_INC UPPER_INC LOWER_INF UPPER_INF RANGE_MERGE GENERATE_SERIES GENERATE_SUBSCRIPTS CURRENT_DATABASE CURRENT_QUERY CURRENT_SCHEMA|10 CURRENT_SCHEMAS|10 INET_CLIENT_ADDR INET_CLIENT_PORT INET_SERVER_ADDR INET_SERVER_PORT ROW_SECURITY_ACTIVE FORMAT_TYPE TO_REGCLASS TO_REGPROC TO_REGPROCEDURE TO_REGOPER TO_REGOPERATOR TO_REGTYPE TO_REGNAMESPACE TO_REGROLE COL_DESCRIPTION OBJ_DESCRIPTION SHOBJ_DESCRIPTION TXID_CURRENT TXID_CURRENT_IF_ASSIGNED TXID_CURRENT_SNAPSHOT TXID_SNAPSHOT_XIP TXID_SNAPSHOT_XMAX TXID_SNAPSHOT_XMIN TXID_VISIBLE_IN_SNAPSHOT TXID_STATUS CURRENT_SETTING SET_CONFIG BRIN_SUMMARIZE_NEW_VALUES BRIN_SUMMARIZE_RANGE BRIN_DESUMMARIZE_RANGE GIN_CLEAN_PENDING_LIST SUPPRESS_REDUNDANT_UPDATES_TRIGGER LO_FROM_BYTEA LO_PUT LO_GET LO_CREAT LO_CREATE LO_UNLINK LO_IMPORT LO_EXPORT LOREAD LOWRITE GROUPING CAST".split(" ").map((E=>E.split("|")[0])).join("|")
+;return{name:"PostgreSQL",aliases:["postgres","postgresql"],supersetOf:"sql",
+case_insensitive:!0,keywords:{
+keyword:"ABORT ALTER ANALYZE BEGIN CALL CHECKPOINT|10 CLOSE CLUSTER COMMENT COMMIT COPY CREATE DEALLOCATE DECLARE DELETE DISCARD DO DROP END EXECUTE EXPLAIN FETCH GRANT IMPORT INSERT LISTEN LOAD LOCK MOVE NOTIFY PREPARE REASSIGN|10 REFRESH REINDEX RELEASE RESET REVOKE ROLLBACK SAVEPOINT SECURITY SELECT SET SHOW START TRUNCATE UNLISTEN|10 UPDATE VACUUM|10 VALUES AGGREGATE COLLATION CONVERSION|10 DATABASE DEFAULT PRIVILEGES DOMAIN TRIGGER EXTENSION FOREIGN WRAPPER|10 TABLE FUNCTION GROUP LANGUAGE LARGE OBJECT MATERIALIZED VIEW OPERATOR CLASS FAMILY POLICY PUBLICATION|10 ROLE RULE SCHEMA SEQUENCE SERVER STATISTICS SUBSCRIPTION SYSTEM TABLESPACE CONFIGURATION DICTIONARY PARSER TEMPLATE TYPE USER MAPPING PREPARED ACCESS METHOD CAST AS TRANSFORM TRANSACTION OWNED TO INTO SESSION AUTHORIZATION INDEX PROCEDURE ASSERTION ALL ANALYSE AND ANY ARRAY ASC ASYMMETRIC|10 BOTH CASE CHECK COLLATE COLUMN CONCURRENTLY|10 CONSTRAINT CROSS DEFERRABLE RANGE DESC DISTINCT ELSE EXCEPT FOR FREEZE|10 FROM FULL HAVING ILIKE IN INITIALLY INNER INTERSECT IS ISNULL JOIN LATERAL LEADING LIKE LIMIT NATURAL NOT NOTNULL NULL OFFSET ON ONLY OR ORDER OUTER OVERLAPS PLACING PRIMARY REFERENCES RETURNING SIMILAR SOME SYMMETRIC TABLESAMPLE THEN TRAILING UNION UNIQUE USING VARIADIC|10 VERBOSE WHEN WHERE WINDOW WITH BY RETURNS INOUT OUT SETOF|10 IF STRICT CURRENT CONTINUE OWNER LOCATION OVER PARTITION WITHIN BETWEEN ESCAPE EXTERNAL INVOKER DEFINER WORK RENAME VERSION CONNECTION CONNECT TABLES TEMP TEMPORARY FUNCTIONS SEQUENCES TYPES SCHEMAS OPTION CASCADE RESTRICT ADD ADMIN EXISTS VALID VALIDATE ENABLE DISABLE REPLICA|10 ALWAYS PASSING COLUMNS PATH REF VALUE OVERRIDING IMMUTABLE STABLE VOLATILE BEFORE AFTER EACH ROW PROCEDURAL ROUTINE NO HANDLER VALIDATOR OPTIONS STORAGE OIDS|10 WITHOUT INHERIT DEPENDS CALLED INPUT LEAKPROOF|10 COST ROWS NOWAIT SEARCH UNTIL ENCRYPTED|10 PASSWORD CONFLICT|10 INSTEAD INHERITS CHARACTERISTICS WRITE CURSOR ALSO STATEMENT SHARE EXCLUSIVE INLINE ISOLATION REPEATABLE READ COMMITTED SERIALIZABLE UNCOMMITTED LOCAL GLOBAL SQL PROCEDURES RECURSIVE SNAPSHOT ROLLUP CUBE TRUSTED|10 INCLUDE FOLLOWING PRECEDING UNBOUNDED RANGE GROUPS UNENCRYPTED|10 SYSID FORMAT DELIMITER HEADER QUOTE ENCODING FILTER OFF FORCE_QUOTE FORCE_NOT_NULL FORCE_NULL COSTS BUFFERS TIMING SUMMARY DISABLE_PAGE_SKIPPING RESTART CYCLE GENERATED IDENTITY DEFERRED IMMEDIATE LEVEL LOGGED UNLOGGED OF NOTHING NONE EXCLUDE ATTRIBUTE USAGE ROUTINES TRUE FALSE NAN INFINITY ALIAS BEGIN CONSTANT DECLARE END EXCEPTION RETURN PERFORM|10 RAISE GET DIAGNOSTICS STACKED|10 FOREACH LOOP ELSIF EXIT WHILE REVERSE SLICE DEBUG LOG INFO NOTICE WARNING ASSERT OPEN SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE INHERIT NOINHERIT LOGIN NOLOGIN REPLICATION NOREPLICATION BYPASSRLS NOBYPASSRLS ",
+built_in:"CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURRENT_CATALOG|10 CURRENT_DATE LOCALTIME LOCALTIMESTAMP CURRENT_ROLE|10 CURRENT_SCHEMA|10 SESSION_USER PUBLIC FOUND NEW OLD TG_NAME|10 TG_WHEN|10 TG_LEVEL|10 TG_OP|10 TG_RELID|10 TG_RELNAME|10 TG_TABLE_NAME|10 TG_TABLE_SCHEMA|10 TG_NARGS|10 TG_ARGV|10 TG_EVENT|10 TG_TAG|10 ROW_COUNT RESULT_OID|10 PG_CONTEXT|10 RETURNED_SQLSTATE COLUMN_NAME CONSTRAINT_NAME PG_DATATYPE_NAME|10 MESSAGE_TEXT TABLE_NAME SCHEMA_NAME PG_EXCEPTION_DETAIL|10 PG_EXCEPTION_HINT|10 PG_EXCEPTION_CONTEXT|10 SQLSTATE SQLERRM|10 SUCCESSFUL_COMPLETION WARNING DYNAMIC_RESULT_SETS_RETURNED IMPLICIT_ZERO_BIT_PADDING NULL_VALUE_ELIMINATED_IN_SET_FUNCTION PRIVILEGE_NOT_GRANTED PRIVILEGE_NOT_REVOKED STRING_DATA_RIGHT_TRUNCATION DEPRECATED_FEATURE NO_DATA NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED SQL_STATEMENT_NOT_YET_COMPLETE CONNECTION_EXCEPTION CONNECTION_DOES_NOT_EXIST CONNECTION_FAILURE SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION TRANSACTION_RESOLUTION_UNKNOWN PROTOCOL_VIOLATION TRIGGERED_ACTION_EXCEPTION FEATURE_NOT_SUPPORTED INVALID_TRANSACTION_INITIATION LOCATOR_EXCEPTION INVALID_LOCATOR_SPECIFICATION INVALID_GRANTOR INVALID_GRANT_OPERATION INVALID_ROLE_SPECIFICATION DIAGNOSTICS_EXCEPTION STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER CASE_NOT_FOUND CARDINALITY_VIOLATION DATA_EXCEPTION ARRAY_SUBSCRIPT_ERROR CHARACTER_NOT_IN_REPERTOIRE DATETIME_FIELD_OVERFLOW DIVISION_BY_ZERO ERROR_IN_ASSIGNMENT ESCAPE_CHARACTER_CONFLICT INDICATOR_OVERFLOW INTERVAL_FIELD_OVERFLOW INVALID_ARGUMENT_FOR_LOGARITHM INVALID_ARGUMENT_FOR_NTILE_FUNCTION INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION INVALID_ARGUMENT_FOR_POWER_FUNCTION INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION INVALID_CHARACTER_VALUE_FOR_CAST INVALID_DATETIME_FORMAT INVALID_ESCAPE_CHARACTER INVALID_ESCAPE_OCTET INVALID_ESCAPE_SEQUENCE NONSTANDARD_USE_OF_ESCAPE_CHARACTER INVALID_INDICATOR_PARAMETER_VALUE INVALID_PARAMETER_VALUE INVALID_REGULAR_EXPRESSION INVALID_ROW_COUNT_IN_LIMIT_CLAUSE INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE INVALID_TABLESAMPLE_ARGUMENT INVALID_TABLESAMPLE_REPEAT INVALID_TIME_ZONE_DISPLACEMENT_VALUE INVALID_USE_OF_ESCAPE_CHARACTER MOST_SPECIFIC_TYPE_MISMATCH NULL_VALUE_NOT_ALLOWED NULL_VALUE_NO_INDICATOR_PARAMETER NUMERIC_VALUE_OUT_OF_RANGE SEQUENCE_GENERATOR_LIMIT_EXCEEDED STRING_DATA_LENGTH_MISMATCH STRING_DATA_RIGHT_TRUNCATION SUBSTRING_ERROR TRIM_ERROR UNTERMINATED_C_STRING ZERO_LENGTH_CHARACTER_STRING FLOATING_POINT_EXCEPTION INVALID_TEXT_REPRESENTATION INVALID_BINARY_REPRESENTATION BAD_COPY_FILE_FORMAT UNTRANSLATABLE_CHARACTER NOT_AN_XML_DOCUMENT INVALID_XML_DOCUMENT INVALID_XML_CONTENT INVALID_XML_COMMENT INVALID_XML_PROCESSING_INSTRUCTION INTEGRITY_CONSTRAINT_VIOLATION RESTRICT_VIOLATION NOT_NULL_VIOLATION FOREIGN_KEY_VIOLATION UNIQUE_VIOLATION CHECK_VIOLATION EXCLUSION_VIOLATION INVALID_CURSOR_STATE INVALID_TRANSACTION_STATE ACTIVE_SQL_TRANSACTION BRANCH_TRANSACTION_ALREADY_ACTIVE HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION READ_ONLY_SQL_TRANSACTION SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED NO_ACTIVE_SQL_TRANSACTION IN_FAILED_SQL_TRANSACTION IDLE_IN_TRANSACTION_SESSION_TIMEOUT INVALID_SQL_STATEMENT_NAME TRIGGERED_DATA_CHANGE_VIOLATION INVALID_AUTHORIZATION_SPECIFICATION INVALID_PASSWORD DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST DEPENDENT_OBJECTS_STILL_EXIST INVALID_TRANSACTION_TERMINATION SQL_ROUTINE_EXCEPTION FUNCTION_EXECUTED_NO_RETURN_STATEMENT MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED INVALID_CURSOR_NAME EXTERNAL_ROUTINE_EXCEPTION CONTAINING_SQL_NOT_PERMITTED MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED EXTERNAL_ROUTINE_INVOCATION_EXCEPTION INVALID_SQLSTATE_RETURNED NULL_VALUE_NOT_ALLOWED TRIGGER_PROTOCOL_VIOLATED SRF_PROTOCOL_VIOLATED EVENT_TRIGGER_PROTOCOL_VIOLATED SAVEPOINT_EXCEPTION INVALID_SAVEPOINT_SPECIFICATION INVALID_CATALOG_NAME INVALID_SCHEMA_NAME TRANSACTION_ROLLBACK TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION SERIALIZATION_FAILURE STATEMENT_COMPLETION_UNKNOWN DEADLOCK_DETECTED SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION SYNTAX_ERROR INSUFFICIENT_PRIVILEGE CANNOT_COERCE GROUPING_ERROR WINDOWING_ERROR INVALID_RECURSION INVALID_FOREIGN_KEY INVALID_NAME NAME_TOO_LONG RESERVED_NAME DATATYPE_MISMATCH INDETERMINATE_DATATYPE COLLATION_MISMATCH INDETERMINATE_COLLATION WRONG_OBJECT_TYPE GENERATED_ALWAYS UNDEFINED_COLUMN UNDEFINED_FUNCTION UNDEFINED_TABLE UNDEFINED_PARAMETER UNDEFINED_OBJECT DUPLICATE_COLUMN DUPLICATE_CURSOR DUPLICATE_DATABASE DUPLICATE_FUNCTION DUPLICATE_PREPARED_STATEMENT DUPLICATE_SCHEMA DUPLICATE_TABLE DUPLICATE_ALIAS DUPLICATE_OBJECT AMBIGUOUS_COLUMN AMBIGUOUS_FUNCTION AMBIGUOUS_PARAMETER AMBIGUOUS_ALIAS INVALID_COLUMN_REFERENCE INVALID_COLUMN_DEFINITION INVALID_CURSOR_DEFINITION INVALID_DATABASE_DEFINITION INVALID_FUNCTION_DEFINITION INVALID_PREPARED_STATEMENT_DEFINITION INVALID_SCHEMA_DEFINITION INVALID_TABLE_DEFINITION INVALID_OBJECT_DEFINITION WITH_CHECK_OPTION_VIOLATION INSUFFICIENT_RESOURCES DISK_FULL OUT_OF_MEMORY TOO_MANY_CONNECTIONS CONFIGURATION_LIMIT_EXCEEDED PROGRAM_LIMIT_EXCEEDED STATEMENT_TOO_COMPLEX TOO_MANY_COLUMNS TOO_MANY_ARGUMENTS OBJECT_NOT_IN_PREREQUISITE_STATE OBJECT_IN_USE CANT_CHANGE_RUNTIME_PARAM LOCK_NOT_AVAILABLE OPERATOR_INTERVENTION QUERY_CANCELED ADMIN_SHUTDOWN CRASH_SHUTDOWN CANNOT_CONNECT_NOW DATABASE_DROPPED SYSTEM_ERROR IO_ERROR UNDEFINED_FILE DUPLICATE_FILE SNAPSHOT_TOO_OLD CONFIG_FILE_ERROR LOCK_FILE_EXISTS FDW_ERROR FDW_COLUMN_NAME_NOT_FOUND FDW_DYNAMIC_PARAMETER_VALUE_NEEDED FDW_FUNCTION_SEQUENCE_ERROR FDW_INCONSISTENT_DESCRIPTOR_INFORMATION FDW_INVALID_ATTRIBUTE_VALUE FDW_INVALID_COLUMN_NAME FDW_INVALID_COLUMN_NUMBER FDW_INVALID_DATA_TYPE FDW_INVALID_DATA_TYPE_DESCRIPTORS FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER FDW_INVALID_HANDLE FDW_INVALID_OPTION_INDEX FDW_INVALID_OPTION_NAME FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH FDW_INVALID_STRING_FORMAT FDW_INVALID_USE_OF_NULL_POINTER FDW_TOO_MANY_HANDLES FDW_OUT_OF_MEMORY FDW_NO_SCHEMAS FDW_OPTION_NAME_NOT_FOUND FDW_REPLY_HANDLE FDW_SCHEMA_NOT_FOUND FDW_TABLE_NOT_FOUND FDW_UNABLE_TO_CREATE_EXECUTION FDW_UNABLE_TO_CREATE_REPLY FDW_UNABLE_TO_ESTABLISH_CONNECTION PLPGSQL_ERROR RAISE_EXCEPTION NO_DATA_FOUND TOO_MANY_ROWS ASSERT_FAILURE INTERNAL_ERROR DATA_CORRUPTED INDEX_CORRUPTED "
+},illegal:/:==|\W\s*\(\*|(^|\s)\$[a-z]|\{\{|[a-z]:\s*$|\.\.\.|TO:|DO:/,
+contains:[{className:"keyword",variants:[{begin:/\bTEXT\s*SEARCH\b/},{
+begin:/\b(PRIMARY|FOREIGN|FOR(\s+NO)?)\s+KEY\b/},{
+begin:/\bPARALLEL\s+(UNSAFE|RESTRICTED|SAFE)\b/},{
+begin:/\bSTORAGE\s+(PLAIN|EXTERNAL|EXTENDED|MAIN)\b/},{
+begin:/\bMATCH\s+(FULL|PARTIAL|SIMPLE)\b/},{begin:/\bNULLS\s+(FIRST|LAST)\b/},{
+begin:/\bEVENT\s+TRIGGER\b/},{begin:/\b(MAPPING|OR)\s+REPLACE\b/},{
+begin:/\b(FROM|TO)\s+(PROGRAM|STDIN|STDOUT)\b/},{
+begin:/\b(SHARE|EXCLUSIVE)\s+MODE\b/},{
+begin:/\b(LEFT|RIGHT)\s+(OUTER\s+)?JOIN\b/},{
+begin:/\b(FETCH|MOVE)\s+(NEXT|PRIOR|FIRST|LAST|ABSOLUTE|RELATIVE|FORWARD|BACKWARD)\b/
+},{begin:/\bPRESERVE\s+ROWS\b/},{begin:/\bDISCARD\s+PLANS\b/},{
+begin:/\bREFERENCING\s+(OLD|NEW)\b/},{begin:/\bSKIP\s+LOCKED\b/},{
+begin:/\bGROUPING\s+SETS\b/},{
+begin:/\b(BINARY|INSENSITIVE|SCROLL|NO\s+SCROLL)\s+(CURSOR|FOR)\b/},{
+begin:/\b(WITH|WITHOUT)\s+HOLD\b/},{
+begin:/\bWITH\s+(CASCADED|LOCAL)\s+CHECK\s+OPTION\b/},{
+begin:/\bEXCLUDE\s+(TIES|NO\s+OTHERS)\b/},{
+begin:/\bFORMAT\s+(TEXT|XML|JSON|YAML)\b/},{
+begin:/\bSET\s+((SESSION|LOCAL)\s+)?NAMES\b/},{begin:/\bIS\s+(NOT\s+)?UNKNOWN\b/
+},{begin:/\bSECURITY\s+LABEL\b/},{begin:/\bSTANDALONE\s+(YES|NO|NO\s+VALUE)\b/
+},{begin:/\bWITH\s+(NO\s+)?DATA\b/},{begin:/\b(FOREIGN|SET)\s+DATA\b/},{
+begin:/\bSET\s+(CATALOG|CONSTRAINTS)\b/},{begin:/\b(WITH|FOR)\s+ORDINALITY\b/},{
+begin:/\bIS\s+(NOT\s+)?DOCUMENT\b/},{
+begin:/\bXML\s+OPTION\s+(DOCUMENT|CONTENT)\b/},{
+begin:/\b(STRIP|PRESERVE)\s+WHITESPACE\b/},{
+begin:/\bNO\s+(ACTION|MAXVALUE|MINVALUE)\b/},{
+begin:/\bPARTITION\s+BY\s+(RANGE|LIST|HASH)\b/},{begin:/\bAT\s+TIME\s+ZONE\b/},{
+begin:/\bGRANTED\s+BY\b/},{begin:/\bRETURN\s+(QUERY|NEXT)\b/},{
+begin:/\b(ATTACH|DETACH)\s+PARTITION\b/},{
+begin:/\bFORCE\s+ROW\s+LEVEL\s+SECURITY\b/},{
+begin:/\b(INCLUDING|EXCLUDING)\s+(COMMENTS|CONSTRAINTS|DEFAULTS|IDENTITY|INDEXES|STATISTICS|STORAGE|ALL)\b/
+},{begin:/\bAS\s+(ASSIGNMENT|IMPLICIT|PERMISSIVE|RESTRICTIVE|ENUM|RANGE)\b/}]},{
+begin:/\b(FORMAT|FAMILY|VERSION)\s*\(/},{begin:/\bINCLUDE\s*\(/,
+keywords:"INCLUDE"},{begin:/\bRANGE(?!\s*(BETWEEN|UNBOUNDED|CURRENT|[-0-9]+))/
+},{
+begin:/\b(VERSION|OWNER|TEMPLATE|TABLESPACE|CONNECTION\s+LIMIT|PROCEDURE|RESTRICT|JOIN|PARSER|COPY|START|END|COLLATION|INPUT|ANALYZE|STORAGE|LIKE|DEFAULT|DELIMITER|ENCODING|COLUMN|CONSTRAINT|TABLE|SCHEMA)\s*=/
+},{begin:/\b(PG_\w+?|HAS_[A-Z_]+_PRIVILEGE)\b/,relevance:10},{
+begin:/\bEXTRACT\s*\(/,end:/\bFROM\b/,returnEnd:!0,keywords:{
+type:"CENTURY DAY DECADE DOW DOY EPOCH HOUR ISODOW ISOYEAR MICROSECONDS MILLENNIUM MILLISECONDS MINUTE MONTH QUARTER SECOND TIMEZONE TIMEZONE_HOUR TIMEZONE_MINUTE WEEK YEAR"
+}},{begin:/\b(XMLELEMENT|XMLPI)\s*\(\s*NAME/,keywords:{keyword:"NAME"}},{
+begin:/\b(XMLPARSE|XMLSERIALIZE)\s*\(\s*(DOCUMENT|CONTENT)/,keywords:{
+keyword:"DOCUMENT CONTENT"}},{beginKeywords:"CACHE INCREMENT MAXVALUE MINVALUE",
+end:E.C_NUMBER_RE,returnEnd:!0,keywords:"BY CACHE INCREMENT MAXVALUE MINVALUE"
+},{className:"type",begin:/\b(WITH|WITHOUT)\s+TIME\s+ZONE\b/},{className:"type",
+begin:/\bINTERVAL\s+(YEAR|MONTH|DAY|HOUR|MINUTE|SECOND)(\s+TO\s+(MONTH|HOUR|MINUTE|SECOND))?\b/
+},{
+begin:/\bRETURNS\s+(LANGUAGE_HANDLER|TRIGGER|EVENT_TRIGGER|FDW_HANDLER|INDEX_AM_HANDLER|TSM_HANDLER)\b/,
+keywords:{keyword:"RETURNS",
+type:"LANGUAGE_HANDLER TRIGGER EVENT_TRIGGER FDW_HANDLER INDEX_AM_HANDLER TSM_HANDLER"
+}},{begin:"\\b("+I+")\\s*\\("},{begin:"\\.("+R+")\\b"},{
+begin:"\\b("+R+")\\s+PATH\\b",keywords:{keyword:"PATH",
+type:A.replace("PATH ","")}},{className:"type",begin:"\\b("+R+")\\b"},{
+className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},{
+className:"string",begin:"(e|E|u&|U&)'",end:"'",contains:[{begin:"\\\\."}],
+relevance:10},E.END_SAME_AS_BEGIN({begin:N,end:N,contains:[{
+subLanguage:["pgsql","perl","python","tcl","r","lua","java","php","ruby","bash","scheme","xml","json"],
+endsWithParent:!0}]}),{begin:'"',end:'"',contains:[{begin:'""'}]
+},E.C_NUMBER_MODE,E.C_BLOCK_COMMENT_MODE,T,{className:"meta",variants:[{
+begin:"%(ROW)?TYPE",relevance:10},{begin:"\\$\\d+"},{begin:"^#\\w",end:"$"}]},{
+className:"symbol",begin:"<<\\s*[a-zA-Z_][a-zA-Z_0-9$]*\\s*>>",relevance:10}]}}
+})();hljs.registerLanguage("pgsql",E)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/php-template.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/php-template.min.js
new file mode 100644
index 0000000..8389aa1
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/php-template.min.js
@@ -0,0 +1,8 @@
+/*! `php-template` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var n=(()=>{"use strict";return n=>({name:"PHP template",
+subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php",
+contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{
+begin:"b'",end:"'",skip:!0},n.inherit(n.APOS_STRING_MODE,{illegal:null,
+className:null,contains:null,skip:!0}),n.inherit(n.QUOTE_STRING_MODE,{
+illegal:null,className:null,contains:null,skip:!0})]}]})})()
+;hljs.registerLanguage("php-template",n)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/php.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/php.min.js
new file mode 100644
index 0000000..42e3122
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/php.min.js
@@ -0,0 +1,37 @@
+/*! `php` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const r={className:"variable",
+begin:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?![A-Za-z0-9])(?![$])"},t={
+className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{
+begin:/\?>/}]},a={className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,
+end:/\}/}]},n=e.inherit(e.APOS_STRING_MODE,{illegal:null
+}),i=e.inherit(e.QUOTE_STRING_MODE,{illegal:null,
+contains:e.QUOTE_STRING_MODE.contains.concat(a)}),o=e.END_SAME_AS_BEGIN({
+begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/,
+contains:e.QUOTE_STRING_MODE.contains.concat(a)}),l={className:"string",
+contains:[e.BACKSLASH_ESCAPE,t],variants:[e.inherit(n,{begin:"b'",end:"'"
+}),e.inherit(i,{begin:'b"',end:'"'}),i,n,o]},s={className:"number",variants:[{
+begin:"\\b0b[01]+(?:_[01]+)*\\b"},{begin:"\\b0o[0-7]+(?:_[0-7]+)*\\b"},{
+begin:"\\b0x[\\da-f]+(?:_[\\da-f]+)*\\b"},{
+begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:e[+-]?\\d+)?"
+}],relevance:0},c={
+keyword:"__CLASS__ __DIR__ __FILE__ __FUNCTION__ __LINE__ __METHOD__ __NAMESPACE__ __TRAIT__ die echo exit include include_once print require require_once array abstract and as binary bool boolean break callable case catch class clone const continue declare default do double else elseif empty enddeclare endfor endforeach endif endswitch endwhile enum eval extends final finally float for foreach from global goto if implements instanceof insteadof int integer interface isset iterable list match|0 mixed new object or private protected public real return string switch throw trait try unset use var void while xor yield",
+literal:"false null true",
+built_in:"Error|0 AppendIterator ArgumentCountError ArithmeticError ArrayIterator ArrayObject AssertionError BadFunctionCallException BadMethodCallException CachingIterator CallbackFilterIterator CompileError Countable DirectoryIterator DivisionByZeroError DomainException EmptyIterator ErrorException Exception FilesystemIterator FilterIterator GlobIterator InfiniteIterator InvalidArgumentException IteratorIterator LengthException LimitIterator LogicException MultipleIterator NoRewindIterator OutOfBoundsException OutOfRangeException OuterIterator OverflowException ParentIterator ParseError RangeException RecursiveArrayIterator RecursiveCachingIterator RecursiveCallbackFilterIterator RecursiveDirectoryIterator RecursiveFilterIterator RecursiveIterator RecursiveIteratorIterator RecursiveRegexIterator RecursiveTreeIterator RegexIterator RuntimeException SeekableIterator SplDoublyLinkedList SplFileInfo SplFileObject SplFixedArray SplHeap SplMaxHeap SplMinHeap SplObjectStorage SplObserver SplObserver SplPriorityQueue SplQueue SplStack SplSubject SplSubject SplTempFileObject TypeError UnderflowException UnexpectedValueException UnhandledMatchError ArrayAccess Closure Generator Iterator IteratorAggregate Serializable Stringable Throwable Traversable WeakReference WeakMap Directory __PHP_Incomplete_Class parent php_user_filter self static stdClass"
+};return{case_insensitive:!0,keywords:c,
+contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[t]
+}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]
+}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,
+keywords:"__halt_compiler"}),t,{className:"keyword",begin:/\$this\b/},r,{
+begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",
+relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,
+illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{
+begin:"=>",endsParent:!0},{className:"params",begin:"\\(",end:"\\)",
+excludeBegin:!0,excludeEnd:!0,keywords:c,
+contains:["self",r,e.C_BLOCK_COMMENT_MODE,l,s]}]},{className:"class",variants:[{
+beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",
+illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{
+beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{
+beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,
+contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",relevance:0,end:";",
+contains:[e.UNDERSCORE_TITLE_MODE]},l,s]}}})();hljs.registerLanguage("php",e)
+})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/plaintext.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/plaintext.min.js
new file mode 100644
index 0000000..ea39f37
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/plaintext.min.js
@@ -0,0 +1,4 @@
+/*! `plaintext` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var t=(()=>{"use strict";return t=>({name:"Plain text",
+aliases:["text","txt"],disableAutodetect:!0})})()
+;hljs.registerLanguage("plaintext",t)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/pony.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/pony.min.js
new file mode 100644
index 0000000..02d74f5
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/pony.min.js
@@ -0,0 +1,12 @@
+/*! `pony` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Pony",keywords:{
+keyword:"actor addressof and as be break class compile_error compile_intrinsic consume continue delegate digestof do else elseif embed end error for fun if ifdef in interface is isnt lambda let match new not object or primitive recover repeat return struct then trait try type until use var where while with xor",
+meta:"iso val tag trn box ref",literal:"this false true"},contains:[{
+className:"type",begin:"\\b_?[A-Z][\\w]*",relevance:0},{className:"string",
+begin:'"""',end:'"""',relevance:10},{className:"string",begin:'"',end:'"',
+contains:[e.BACKSLASH_ESCAPE]},{className:"string",begin:"'",end:"'",
+contains:[e.BACKSLASH_ESCAPE],relevance:0},{begin:e.IDENT_RE+"'",relevance:0},{
+className:"number",
+begin:"(-?)(\\b0[xX][a-fA-F0-9]+|\\b0[bB][01]+|(\\b\\d+(_\\d+)?(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",
+relevance:0},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]})})()
+;hljs.registerLanguage("pony",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/powershell.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/powershell.min.js
new file mode 100644
index 0000000..9e588a3
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/powershell.min.js
@@ -0,0 +1,39 @@
+/*! `powershell` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n={$pattern:/-?[A-z\.\-]+\b/,
+keyword:"if else foreach return do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch hidden static parameter",
+built_in:"ac asnp cat cd CFS chdir clc clear clhy cli clp cls clv cnsn compare copy cp cpi cpp curl cvpa dbp del diff dir dnsn ebp echo|0 epal epcsv epsn erase etsn exsn fc fhx fl ft fw gal gbp gc gcb gci gcm gcs gdr gerr ghy gi gin gjb gl gm gmo gp gps gpv group gsn gsnp gsv gtz gu gv gwmi h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi iwr kill lp ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp rujb rv rvpa rwmi sajb sal saps sasv sbp sc scb select set shcm si sl sleep sls sort sp spjb spps spsv start stz sujb sv swmi tee trcm type wget where wjb write"
+},s={begin:"`[\\s\\S]",relevance:0},i={className:"variable",variants:[{
+begin:/\$\B/},{className:"keyword",begin:/\$this/},{begin:/\$[\w\d][\w\d_:]*/}]
+},a={className:"string",variants:[{begin:/"/,end:/"/},{begin:/@"/,end:/^"@/}],
+contains:[s,i,{className:"variable",begin:/\$[A-z]/,end:/[^A-z]/}]},t={
+className:"string",variants:[{begin:/'/,end:/'/},{begin:/@'/,end:/^'@/}]
+},r=e.inherit(e.COMMENT(null,null),{variants:[{begin:/#/,end:/$/},{begin:/<#/,
+end:/#>/}],contains:[{className:"doctag",variants:[{
+begin:/\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/
+},{
+begin:/\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/
+}]}]}),c={className:"class",beginKeywords:"class enum",end:/\s*[{]/,
+excludeEnd:!0,relevance:0,contains:[e.TITLE_MODE]},l={className:"function",
+begin:/function\s+/,end:/\s*\{|$/,excludeEnd:!0,returnBegin:!0,relevance:0,
+contains:[{begin:"function",relevance:0,className:"keyword"},{className:"title",
+begin:/\w[\w\d]*((-)[\w\d]+)*/,relevance:0},{begin:/\(/,end:/\)/,
+className:"params",relevance:0,contains:[i]}]},o={begin:/using\s/,end:/$/,
+returnBegin:!0,contains:[a,t,{className:"keyword",
+begin:/(using|assembly|command|module|namespace|type)/}]},p={
+className:"function",begin:/\[.*\]\s*[\w]+[ ]??\(/,end:/$/,returnBegin:!0,
+relevance:0,contains:[{className:"keyword",
+begin:"(".concat(n.keyword.toString().replace(/\s/g,"|"),")\\b"),endsParent:!0,
+relevance:0},e.inherit(e.TITLE_MODE,{endsParent:!0})]
+},g=[p,r,s,e.NUMBER_MODE,a,t,{className:"built_in",variants:[{
+begin:"(Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|Limit|Merge|Mount|Out|Publish|Restore|Save|Sync|Unpublish|Update|Approve|Assert|Build|Complete|Confirm|Deny|Deploy|Disable|Enable|Install|Invoke|Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|Unprotect|Use|ForEach|Sort|Tee|Where)+(-)[\\w\\d]+"
+}]},i,{className:"literal",begin:/\$(null|true|false)\b/},{
+className:"selector-tag",begin:/@\B/,relevance:0}],m={begin:/\[/,end:/\]/,
+excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[].concat("self",g,{
+begin:"(string|char|byte|int|long|bool|decimal|single|double|DateTime|xml|array|hashtable|void)",
+className:"built_in",relevance:0},{className:"type",begin:/[\.\w\d]+/,
+relevance:0})};return p.contains.unshift(m),{name:"PowerShell",
+aliases:["pwsh","ps","ps1"],case_insensitive:!0,keywords:n,
+contains:g.concat(c,l,o,{variants:[{className:"operator",
+begin:"(-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|-split|-wildcard|-xor)\\b"
+},{className:"literal",begin:/(-){1,2}[\w\d-]+/,relevance:0}]},m)}}})()
+;hljs.registerLanguage("powershell",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/processing.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/processing.min.js
new file mode 100644
index 0000000..ccc5ad6
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/processing.min.js
@@ -0,0 +1,18 @@
+/*! `processing` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const t=e.regex,a=["displayHeight","displayWidth","mouseY","mouseX","mousePressed","pmouseX","pmouseY","key","keyCode","pixels","focused","frameCount","frameRate","height","width","size","createGraphics","beginDraw","createShape","loadShape","PShape","arc","ellipse","line","point","quad","rect","triangle","bezier","bezierDetail","bezierPoint","bezierTangent","curve","curveDetail","curvePoint","curveTangent","curveTightness","shape","shapeMode","beginContour","beginShape","bezierVertex","curveVertex","endContour","endShape","quadraticVertex","vertex","ellipseMode","noSmooth","rectMode","smooth","strokeCap","strokeJoin","strokeWeight","mouseClicked","mouseDragged","mouseMoved","mousePressed","mouseReleased","mouseWheel","keyPressed","keyPressedkeyReleased","keyTyped","print","println","save","saveFrame","day","hour","millis","minute","month","second","year","background","clear","colorMode","fill","noFill","noStroke","stroke","alpha","blue","brightness","color","green","hue","lerpColor","red","saturation","modelX","modelY","modelZ","screenX","screenY","screenZ","ambient","emissive","shininess","specular","add","createImage","beginCamera","camera","endCamera","frustum","ortho","perspective","printCamera","printProjection","cursor","frameRate","noCursor","exit","loop","noLoop","popStyle","pushStyle","redraw","binary","boolean","byte","char","float","hex","int","str","unbinary","unhex","join","match","matchAll","nf","nfc","nfp","nfs","split","splitTokens","trim","append","arrayCopy","concat","expand","reverse","shorten","sort","splice","subset","box","sphere","sphereDetail","createInput","createReader","loadBytes","loadJSONArray","loadJSONObject","loadStrings","loadTable","loadXML","open","parseXML","saveTable","selectFolder","selectInput","beginRaw","beginRecord","createOutput","createWriter","endRaw","endRecord","PrintWritersaveBytes","saveJSONArray","saveJSONObject","saveStream","saveStrings","saveXML","selectOutput","popMatrix","printMatrix","pushMatrix","resetMatrix","rotate","rotateX","rotateY","rotateZ","scale","shearX","shearY","translate","ambientLight","directionalLight","lightFalloff","lights","lightSpecular","noLights","normal","pointLight","spotLight","image","imageMode","loadImage","noTint","requestImage","tint","texture","textureMode","textureWrap","blend","copy","filter","get","loadPixels","set","updatePixels","blendMode","loadShader","PShaderresetShader","shader","createFont","loadFont","text","textFont","textAlign","textLeading","textMode","textSize","textWidth","textAscent","textDescent","abs","ceil","constrain","dist","exp","floor","lerp","log","mag","map","max","min","norm","pow","round","sq","sqrt","acos","asin","atan","atan2","cos","degrees","radians","sin","tan","noise","noiseDetail","noiseSeed","random","randomGaussian","randomSeed"],r=e.IDENT_RE,s={
+variants:[{match:t.concat(t.either(...a),t.lookahead(/\s*\(/)),
+className:"built_in"},{relevance:0,
+match:t.concat(/\b(?!for|if|while)/,r,t.lookahead(/\s*\(/)),
+className:"title.function"}]},o={match:[/new\s+/,r],className:{1:"keyword",
+2:"class.title"}},i={relevance:0,match:[/\./,r],className:{2:"property"}},n={
+variants:[{match:[/class/,/\s+/,r,/\s+/,/extends/,/\s+/,r]},{
+match:[/class/,/\s+/,r]}],className:{1:"keyword",3:"title.class",5:"keyword",
+7:"title.class.inherited"}};return{name:"Processing",aliases:["pde"],keywords:{
+keyword:["abstract","assert","break","case","catch","const","continue","default","else","enum","final","finally","for","if","import","instanceof","long","native","new","package","private","private","protected","protected","public","public","return","static","strictfp","switch","synchronized","throw","throws","transient","try","void","volatile","while"],
+literal:"P2D P3D HALF_PI PI QUARTER_PI TAU TWO_PI null true false",
+title:"setup draw",variable:"super this",
+built_in:[...a,"BufferedReader","PVector","PFont","PImage","PGraphics","HashMap","String","Array","FloatDict","ArrayList","FloatList","IntDict","IntList","JSONArray","JSONObject","Object","StringDict","StringList","Table","TableRow","XML"],
+type:["boolean","byte","char","color","double","float","int","long","short"]},
+contains:[n,o,s,i,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]
+}}})();hljs.registerLanguage("processing",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/profile.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/profile.min.js
new file mode 100644
index 0000000..8063b88
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/profile.min.js
@@ -0,0 +1,9 @@
+/*! `profile` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Python profiler",
+contains:[e.C_NUMBER_MODE,{begin:"[a-zA-Z_][\\da-zA-Z_]+\\.[\\da-zA-Z_]{1,3}",
+end:":",excludeEnd:!0},{begin:"(ncalls|tottime|cumtime)",end:"$",
+keywords:"ncalls tottime|10 cumtime|10 filename",relevance:10},{
+begin:"function calls",end:"$",contains:[e.C_NUMBER_MODE],relevance:10
+},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"\\(",
+end:"\\)$",excludeBegin:!0,excludeEnd:!0,relevance:0}]})})()
+;hljs.registerLanguage("profile",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/prolog.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/prolog.min.js
new file mode 100644
index 0000000..4f6c26f
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/prolog.min.js
@@ -0,0 +1,11 @@
+/*! `prolog` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var n=(()=>{"use strict";return n=>{const e={begin:/\(/,end:/\)/,
+relevance:0},a={begin:/\[/,end:/\]/},s={className:"comment",begin:/%/,end:/$/,
+contains:[n.PHRASAL_WORDS_MODE]},i={className:"string",begin:/`/,end:/`/,
+contains:[n.BACKSLASH_ESCAPE]},g=[{begin:/[a-z][A-Za-z0-9_]*/,relevance:0},{
+className:"symbol",variants:[{begin:/[A-Z][a-zA-Z0-9_]*/},{
+begin:/_[A-Za-z0-9_]*/}],relevance:0},e,{begin:/:-/
+},a,s,n.C_BLOCK_COMMENT_MODE,n.QUOTE_STRING_MODE,n.APOS_STRING_MODE,i,{
+className:"string",begin:/0'(\\'|.)/},{className:"string",begin:/0'\\s/
+},n.C_NUMBER_MODE];return e.contains=g,a.contains=g,{name:"Prolog",
+contains:g.concat([{begin:/\.$/}])}}})();hljs.registerLanguage("prolog",n)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/properties.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/properties.min.js
new file mode 100644
index 0000000..012a786
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/properties.min.js
@@ -0,0 +1,11 @@
+/*! `properties` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const t="[ \\t\\f]*",n="([^\\\\:= \\t\\f\\n]|\\\\.)+";return{name:".properties",
+disableAutodetect:!0,case_insensitive:!0,illegal:/\S/,
+contains:[e.COMMENT("^\\s*[!#]","$"),{returnBegin:!0,variants:[{
+begin:n+"[ \\t\\f]*[:=][ \\t\\f]*"},{begin:n+"[ \\t\\f]+"}],contains:[{
+className:"attr",begin:n,endsParent:!0}],starts:{
+end:"([ \\t\\f]*[:=][ \\t\\f]*|[ \\t\\f]+)",relevance:0,starts:{
+className:"string",end:/$/,relevance:0,contains:[{begin:"\\\\\\\\"},{
+begin:"\\\\\\n"}]}}},{className:"attr",begin:n+t+"$"}]}}})()
+;hljs.registerLanguage("properties",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/protobuf.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/protobuf.min.js
new file mode 100644
index 0000000..e36257f
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/protobuf.min.js
@@ -0,0 +1,11 @@
+/*! `protobuf` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Protocol Buffers",keywords:{
+keyword:"package import option optional required repeated group oneof",
+built_in:"double float int32 int64 uint32 uint64 sint32 sint64 fixed32 fixed64 sfixed32 sfixed64 bool string bytes",
+literal:"true false"},
+contains:[e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{
+className:"class",beginKeywords:"message enum service",end:/\{/,illegal:/\n/,
+contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,excludeEnd:!0}})]},{
+className:"function",beginKeywords:"rpc",end:/[{;]/,excludeEnd:!0,
+keywords:"rpc returns"},{begin:/^\s*[A-Z_]+(?=\s*=[^\n]+;$)/}]})})()
+;hljs.registerLanguage("protobuf",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/puppet.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/puppet.min.js
new file mode 100644
index 0000000..724d639
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/puppet.min.js
@@ -0,0 +1,17 @@
+/*! `puppet` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const s=e.COMMENT("#","$"),r="([A-Za-z_]|::)(\\w|::)*",a=e.inherit(e.TITLE_MODE,{
+begin:r}),n={className:"variable",begin:"\\$"+r},i={className:"string",
+contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/
+}]};return{name:"Puppet",aliases:["pp"],contains:[s,n,i,{beginKeywords:"class",
+end:"\\{|;",illegal:/=/,contains:[a,s]},{beginKeywords:"define",end:/\{/,
+contains:[{className:"section",begin:e.IDENT_RE,endsParent:!0}]},{
+begin:e.IDENT_RE+"\\s+\\{",returnBegin:!0,end:/\S/,contains:[{
+className:"keyword",begin:e.IDENT_RE},{begin:/\{/,end:/\}/,keywords:{
+keyword:"and case default else elsif false if in import enherits node or true undef unless main settings $string ",
+literal:"alias audit before loglevel noop require subscribe tag owner ensure group mode name|0 changes context force incl lens load_path onlyif provider returns root show_diff type_check en_address ip_address realname command environment hour monute month monthday special target weekday creates cwd ogoutput refresh refreshonly tries try_sleep umask backup checksum content ctime force ignore links mtime purge recurse recurselimit replace selinux_ignore_defaults selrange selrole seltype seluser source souirce_permissions sourceselect validate_cmd validate_replacement allowdupe attribute_membership auth_membership forcelocal gid ia_load_module members system host_aliases ip allowed_trunk_vlans description device_url duplex encapsulation etherchannel native_vlan speed principals allow_root auth_class auth_type authenticate_user k_of_n mechanisms rule session_owner shared options device fstype enable hasrestart directory present absent link atboot blockdevice device dump pass remounts poller_tag use message withpath adminfile allow_virtual allowcdrom category configfiles flavor install_options instance package_settings platform responsefile status uninstall_options vendor unless_system_user unless_uid binary control flags hasstatus manifest pattern restart running start stop allowdupe auths expiry gid groups home iterations key_membership keys managehome membership password password_max_age password_min_age profile_membership profiles project purge_ssh_keys role_membership roles salt shell uid baseurl cost descr enabled enablegroups exclude failovermethod gpgcheck gpgkey http_caching include includepkgs keepalive metadata_expire metalink mirrorlist priority protect proxy proxy_password proxy_username repo_gpgcheck s3_enabled skip_if_unavailable sslcacert sslclientcert sslclientkey sslverify mounted",
+built_in:"architecture augeasversion blockdevices boardmanufacturer boardproductname boardserialnumber cfkey dhcp_servers domain ec2_ ec2_userdata facterversion filesystems ldom fqdn gid hardwareisa hardwaremodel hostname id|0 interfaces ipaddress ipaddress_ ipaddress6 ipaddress6_ iphostnumber is_virtual kernel kernelmajversion kernelrelease kernelversion kernelrelease kernelversion lsbdistcodename lsbdistdescription lsbdistid lsbdistrelease lsbmajdistrelease lsbminordistrelease lsbrelease macaddress macaddress_ macosx_buildversion macosx_productname macosx_productversion macosx_productverson_major macosx_productversion_minor manufacturer memoryfree memorysize netmask metmask_ network_ operatingsystem operatingsystemmajrelease operatingsystemrelease osfamily partitions path physicalprocessorcount processor processorcount productname ps puppetversion rubysitedir rubyversion selinux selinux_config_mode selinux_config_policy selinux_current_mode selinux_current_mode selinux_enforced selinux_policyversion serialnumber sp_ sshdsakey sshecdsakey sshrsakey swapencrypted swapfree swapsize timezone type uniqueid uptime uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonenae zones zpool_version"
+},relevance:0,contains:[i,s,{begin:"[a-zA-Z_]+\\s*=>",returnBegin:!0,end:"=>",
+contains:[{className:"attr",begin:e.IDENT_RE}]},{className:"number",
+begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",
+relevance:0},n]}],relevance:0}]}}})();hljs.registerLanguage("puppet",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/purebasic.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/purebasic.min.js
new file mode 100644
index 0000000..d698380
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/purebasic.min.js
@@ -0,0 +1,11 @@
+/*! `purebasic` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"PureBASIC",
+aliases:["pb","pbi"],
+keywords:"Align And Array As Break CallDebugger Case CompilerCase CompilerDefault CompilerElse CompilerElseIf CompilerEndIf CompilerEndSelect CompilerError CompilerIf CompilerSelect CompilerWarning Continue Data DataSection Debug DebugLevel Declare DeclareC DeclareCDLL DeclareDLL DeclareModule Default Define Dim DisableASM DisableDebugger DisableExplicit Else ElseIf EnableASM EnableDebugger EnableExplicit End EndDataSection EndDeclareModule EndEnumeration EndIf EndImport EndInterface EndMacro EndModule EndProcedure EndSelect EndStructure EndStructureUnion EndWith Enumeration EnumerationBinary Extends FakeReturn For ForEach ForEver Global Gosub Goto If Import ImportC IncludeBinary IncludeFile IncludePath Interface List Macro MacroExpandedCount Map Module NewList NewMap Next Not Or Procedure ProcedureC ProcedureCDLL ProcedureDLL ProcedureReturn Protected Prototype PrototypeC ReDim Read Repeat Restore Return Runtime Select Shared Static Step Structure StructureUnion Swap Threaded To UndefineMacro Until Until  UnuseModule UseModule Wend While With XIncludeFile XOr",
+contains:[e.COMMENT(";","$",{relevance:0}),{className:"function",
+begin:"\\b(Procedure|Declare)(C|CDLL|DLL)?\\b",end:"\\(",excludeEnd:!0,
+returnBegin:!0,contains:[{className:"keyword",
+begin:"(Procedure|Declare)(C|CDLL|DLL)?",excludeEnd:!0},{className:"type",
+begin:"\\.\\w*"},e.UNDERSCORE_TITLE_MODE]},{className:"string",begin:'(~)?"',
+end:'"',illegal:"\\n"},{className:"symbol",begin:"#[a-zA-Z_]\\w*\\$?"}]})})()
+;hljs.registerLanguage("purebasic",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/python-repl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/python-repl.min.js
new file mode 100644
index 0000000..7baf61b
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/python-repl.min.js
@@ -0,0 +1,5 @@
+/*! `python-repl` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var a=(()=>{"use strict";return a=>({aliases:["pycon"],contains:[{
+className:"meta",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},
+variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]})})()
+;hljs.registerLanguage("python-repl",a)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/python.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/python.min.js
new file mode 100644
index 0000000..b390b1b
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/python.min.js
@@ -0,0 +1,42 @@
+/*! `python` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const n=e.regex,a=/[\p{XID_Start}_]\p{XID_Continue}*/u,i={
+$pattern:/[A-Za-z]\w+|__\w+__/,
+keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],
+built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],
+literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],
+type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]
+},s={className:"meta",begin:/^(>>>|\.\.\.) /},t={className:"subst",begin:/\{/,
+end:/\}/,keywords:i,illegal:/#/},r={begin:/\{\{/,relevance:0},l={
+className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{
+begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,
+contains:[e.BACKSLASH_ESCAPE,s],relevance:10},{
+begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,
+contains:[e.BACKSLASH_ESCAPE,s],relevance:10},{
+begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,
+contains:[e.BACKSLASH_ESCAPE,s,r,t]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,
+end:/"""/,contains:[e.BACKSLASH_ESCAPE,s,r,t]},{begin:/([uU]|[rR])'/,end:/'/,
+relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{
+begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,
+end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,
+contains:[e.BACKSLASH_ESCAPE,r,t]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,
+contains:[e.BACKSLASH_ESCAPE,r,t]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]
+},b="[0-9](_?[0-9])*",o=`(\\b(${b}))?\\.(${b})|\\b(${b})\\.`,c={
+className:"number",relevance:0,variants:[{
+begin:`(\\b(${b})|(${o}))[eE][+-]?(${b})[jJ]?\\b`},{begin:`(${o})[jJ]?`},{
+begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{
+begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{
+begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${b})[jJ]\\b`}]},d={
+className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:i,contains:[{
+begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},g={
+className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,
+end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:i,
+contains:["self",s,c,l,e.HASH_COMMENT_MODE]}]};return t.contains=[l,c,s],{
+name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:i,
+illegal:/(<\/|->|\?)|=>/,contains:[s,c,{begin:/\bself\b/},{beginKeywords:"if",
+relevance:0},l,d,e.HASH_COMMENT_MODE,{match:[/def/,/\s+/,a],scope:{1:"keyword",
+3:"title.function"},contains:[g]},{variants:[{
+match:[/class/,/\s+/,a,/\s*/,/\(\s*/,a,/\s*\)/]},{match:[/class/,/\s+/,a]}],
+scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{
+className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[c,g,l]}]}}})()
+;hljs.registerLanguage("python",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/q.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/q.min.js
new file mode 100644
index 0000000..c32c922
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/q.min.js
@@ -0,0 +1,8 @@
+/*! `q` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Q",aliases:["k","kdb"],
+keywords:{$pattern:/(`?)[A-Za-z0-9_]+\b/,
+keyword:"do while select delete by update from",literal:"0b 1b",
+built_in:"neg not null string reciprocal floor ceiling signum mod xbar xlog and or each scan over prior mmu lsq inv md5 ltime gtime count first var dev med cov cor all any rand sums prds mins maxs fills deltas ratios avgs differ prev next rank reverse iasc idesc asc desc msum mcount mavg mdev xrank mmin mmax xprev rotate distinct group where flip type key til get value attr cut set upsert raze union inter except cross sv vs sublist enlist read0 read1 hopen hclose hdel hsym hcount peach system ltrim rtrim trim lower upper ssr view tables views cols xcols keys xkey xcol xasc xdesc fkeys meta lj aj aj0 ij pj asof uj ww wj wj1 fby xgroup ungroup ej save load rsave rload show csv parse eval min max avg wavg wsum sin cos tan sum",
+type:"`float `double int `timestamp `timespan `datetime `time `boolean `symbol `char `byte `short `long `real `month `date `minute `second `guid"
+},contains:[e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE]})})()
+;hljs.registerLanguage("q",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/qml.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/qml.min.js
new file mode 100644
index 0000000..4c4fd8c
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/qml.min.js
@@ -0,0 +1,29 @@
+/*! `qml` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const n="[a-zA-Z_][a-zA-Z0-9\\._]*",r={className:"attribute",begin:"\\bid\\s*:",
+starts:{className:"string",end:n,returnEnd:!1}},a={begin:n+"\\s*:",
+returnBegin:!0,contains:[{className:"attribute",begin:n,end:"\\s*:",
+excludeEnd:!0,relevance:0}],relevance:0},t={begin:e.regex.concat(n,/\s*\{/),
+end:/\{/,returnBegin:!0,relevance:0,contains:[e.inherit(e.TITLE_MODE,{begin:n})]
+};return{name:"QML",aliases:["qt"],case_insensitive:!1,keywords:{
+keyword:"in of on if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await import",
+literal:"true false null undefined NaN Infinity",
+built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Behavior bool color coordinate date double enumeration font geocircle georectangle geoshape int list matrix4x4 parent point quaternion real rect size string url variant vector2d vector3d vector4d Promise"
+},contains:[{className:"meta",begin:/^\s*['"]use (strict|asm)['"]/
+},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"`",end:"`",
+contains:[e.BACKSLASH_ESCAPE,{className:"subst",begin:"\\$\\{",end:"\\}"}]
+},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"number",variants:[{
+begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],
+relevance:0},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",
+keywords:"return throw case",
+contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{begin:/</,
+end:/>\s*[);\]]/,relevance:0,subLanguage:"xml"}],relevance:0},{
+className:"keyword",begin:"\\bsignal\\b",starts:{className:"string",
+end:"(\\(|:|=|;|,|//|/\\*|$)",returnEnd:!0}},{className:"keyword",
+begin:"\\bproperty\\b",starts:{className:"string",end:"(:|=|;|,|//|/\\*|$)",
+returnEnd:!0}},{className:"function",beginKeywords:"function",end:/\{/,
+excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/
+}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,
+contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}],illegal:/\[|%/},{
+begin:"\\."+e.IDENT_RE,relevance:0},r,a,t],illegal:/#/}}})()
+;hljs.registerLanguage("qml",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/r.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/r.min.js
new file mode 100644
index 0000000..07ad17c
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/r.min.js
@@ -0,0 +1,26 @@
+/*! `r` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const a=e.regex,n=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,i=a.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,/(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),s=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,t=a.either(/[()]/,/[{}]/,/\[\[/,/[[\]]/,/\\/,/,/)
+;return{name:"R",keywords:{$pattern:n,
+keyword:"function if in break next repeat else for while",
+literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10",
+built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm"
+},contains:[e.COMMENT(/#'/,/$/,{contains:[{scope:"doctag",match:/@examples/,
+starts:{end:a.lookahead(a.either(/\n^#'\s*(?=@[a-zA-Z]+)/,/\n^(?!#')/)),
+endsParent:!0}},{scope:"doctag",begin:"@param",end:/$/,contains:[{
+scope:"variable",variants:[{match:n},{match:/`(?:\\.|[^`\\])+`/}],endsParent:!0
+}]},{scope:"doctag",match:/@[a-zA-Z]+/},{scope:"keyword",match:/\\[a-zA-Z]+/}]
+}),e.HASH_COMMENT_MODE,{scope:"string",contains:[e.BACKSLASH_ESCAPE],
+variants:[e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/
+}),e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/
+}),e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/
+}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/
+}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/
+}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"',
+relevance:0},{begin:"'",end:"'",relevance:0}]},{relevance:0,variants:[{scope:{
+1:"operator",2:"number"},match:[s,i]},{scope:{1:"operator",2:"number"},
+match:[/%[^%]*%/,i]},{scope:{1:"punctuation",2:"number"},match:[t,i]},{scope:{
+2:"number"},match:[/[^a-zA-Z0-9._]|^/,i]}]},{scope:{3:"operator"},
+match:[n,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:s},{
+match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:t},{begin:"`",end:"`",
+contains:[{begin:/\\./}]}]}}})();hljs.registerLanguage("r",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/reasonml.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/reasonml.min.js
new file mode 100644
index 0000000..4c14c15
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/reasonml.min.js
@@ -0,0 +1,43 @@
+/*! `reasonml` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const n="~?[a-z$_][0-9a-zA-Z$_]*",a="`?[A-Z$_][0-9a-zA-Z$_]*",s="("+["||","++","**","+.","*","/","*.","/.","..."].map((e=>e.split("").map((e=>"\\"+e)).join(""))).join("|")+"|\\|>|&&|==|===)",i="\\s+"+s+"\\s+",r={
+keyword:"and as asr assert begin class constraint do done downto else end exception external for fun function functor if in include inherit initializer land lazy let lor lsl lsr lxor match method mod module mutable new nonrec object of open or private rec sig struct then to try type val virtual when while with",
+built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ",
+literal:"true false"
+},l="\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",t={
+className:"number",relevance:0,variants:[{begin:l},{begin:"\\(-"+l+"\\)"}]},c={
+className:"operator",relevance:0,begin:s},o=[{className:"identifier",
+relevance:0,begin:n},c,t],g=[e.QUOTE_STRING_MODE,c,{className:"module",
+begin:"\\b"+a,returnBegin:!0,relevance:0,end:".",contains:[{
+className:"identifier",begin:a,relevance:0}]}],b=[{className:"module",
+begin:"\\b"+a,returnBegin:!0,end:".",relevance:0,contains:[{
+className:"identifier",begin:a,relevance:0}]}],m={className:"function",
+relevance:0,keywords:r,variants:[{begin:"\\s(\\(\\.?.*?\\)|"+n+")\\s*=>",
+end:"\\s*=>",returnBegin:!0,relevance:0,contains:[{className:"params",
+variants:[{begin:n},{
+begin:"~?[a-z$_][0-9a-zA-Z$_]*(\\s*:\\s*[a-z$_][0-9a-z$_]*(\\(\\s*('?[a-z$_][0-9a-z$_]*\\s*(,'?[a-z$_][0-9a-z$_]*\\s*)*)?\\))?){0,2}"
+},{begin:/\(\s*\)/}]}]},{begin:"\\s\\(\\.?[^;\\|]*\\)\\s*=>",end:"\\s=>",
+returnBegin:!0,relevance:0,contains:[{className:"params",relevance:0,variants:[{
+begin:n,end:"(,|\\n|\\))",relevance:0,contains:[c,{className:"typing",begin:":",
+end:"(,|\\n)",returnBegin:!0,relevance:0,contains:b}]}]}]},{
+begin:"\\(\\.\\s"+n+"\\)\\s*=>"}]};g.push(m);const d={className:"constructor",
+begin:a+"\\(",end:"\\)",illegal:"\\n",keywords:r,
+contains:[e.QUOTE_STRING_MODE,c,{className:"params",begin:"\\b"+n}]},u={
+className:"pattern-match",begin:"\\|",returnBegin:!0,keywords:r,end:"=>",
+relevance:0,contains:[d,c,{relevance:0,className:"constructor",begin:a}]},v={
+className:"module-access",keywords:r,returnBegin:!0,variants:[{
+begin:"\\b("+a+"\\.)+"+n},{begin:"\\b("+a+"\\.)+\\(",end:"\\)",returnBegin:!0,
+contains:[m,{begin:"\\(",end:"\\)",relevance:0,skip:!0}].concat(g)},{
+begin:"\\b("+a+"\\.)+\\{",end:/\}/}],contains:g};return b.push(v),{
+name:"ReasonML",aliases:["re"],keywords:r,illegal:"(:-|:=|\\$\\{|\\+=)",
+contains:[e.COMMENT("/\\*","\\*/",{illegal:"^(#,\\/\\/)"}),{
+className:"character",begin:"'(\\\\[^']+|[^'])'",illegal:"\\n",relevance:0
+},e.QUOTE_STRING_MODE,{className:"literal",begin:"\\(\\)",relevance:0},{
+className:"literal",begin:"\\[\\|",end:"\\|\\]",relevance:0,contains:o},{
+className:"literal",begin:"\\[",end:"\\]",relevance:0,contains:o},d,{
+className:"operator",begin:i,illegal:"--\x3e",relevance:0
+},t,e.C_LINE_COMMENT_MODE,u,m,{className:"module-def",
+begin:"\\bmodule\\s+"+n+"\\s+"+a+"\\s+=\\s+\\{",end:/\}/,returnBegin:!0,
+keywords:r,relevance:0,contains:[{className:"module",relevance:0,begin:a},{
+begin:/\{/,end:/\}/,relevance:0,skip:!0}].concat(g)},v]}}})()
+;hljs.registerLanguage("reasonml",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/rib.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/rib.min.js
new file mode 100644
index 0000000..edb2481
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/rib.min.js
@@ -0,0 +1,6 @@
+/*! `rib` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"RenderMan RIB",
+keywords:"ArchiveRecord AreaLightSource Atmosphere Attribute AttributeBegin AttributeEnd Basis Begin Blobby Bound Clipping ClippingPlane Color ColorSamples ConcatTransform Cone CoordinateSystem CoordSysTransform CropWindow Curves Cylinder DepthOfField Detail DetailRange Disk Displacement Display End ErrorHandler Exposure Exterior Format FrameAspectRatio FrameBegin FrameEnd GeneralPolygon GeometricApproximation Geometry Hider Hyperboloid Identity Illuminate Imager Interior LightSource MakeCubeFaceEnvironment MakeLatLongEnvironment MakeShadow MakeTexture Matte MotionBegin MotionEnd NuPatch ObjectBegin ObjectEnd ObjectInstance Opacity Option Orientation Paraboloid Patch PatchMesh Perspective PixelFilter PixelSamples PixelVariance Points PointsGeneralPolygons PointsPolygons Polygon Procedural Projection Quantize ReadArchive RelativeDetail ReverseOrientation Rotate Scale ScreenWindow ShadingInterpolation ShadingRate Shutter Sides Skew SolidBegin SolidEnd Sphere SubdivisionMesh Surface TextureCoordinates Torus Transform TransformBegin TransformEnd TransformPoints Translate TrimCurve WorldBegin WorldEnd",
+illegal:"</",
+contains:[e.HASH_COMMENT_MODE,e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]
+})})();hljs.registerLanguage("rib",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/roboconf.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/roboconf.min.js
new file mode 100644
index 0000000..7137767
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/roboconf.min.js
@@ -0,0 +1,12 @@
+/*! `roboconf` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n="[a-zA-Z-_][^\\n{]+\\{",a={
+className:"attribute",begin:/[a-zA-Z-_]+/,end:/\s*:/,excludeEnd:!0,starts:{
+end:";",relevance:0,contains:[{className:"variable",begin:/\.[a-zA-Z-_]+/},{
+className:"keyword",begin:/\(optional\)/}]}};return{name:"Roboconf",
+aliases:["graph","instances"],case_insensitive:!0,keywords:"import",contains:[{
+begin:"^facet "+n,end:/\}/,keywords:"facet",contains:[a,e.HASH_COMMENT_MODE]},{
+begin:"^\\s*instance of "+n,end:/\}/,
+keywords:"name count channels instance-data instance-state instance of",
+illegal:/\S/,contains:["self",a,e.HASH_COMMENT_MODE]},{begin:"^"+n,end:/\}/,
+contains:[a,e.HASH_COMMENT_MODE]},e.HASH_COMMENT_MODE]}}})()
+;hljs.registerLanguage("roboconf",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/routeros.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/routeros.min.js
new file mode 100644
index 0000000..656970a
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/routeros.min.js
@@ -0,0 +1,22 @@
+/*! `routeros` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const r="foreach do while for if from to step else on-error and or not in",n="true false yes no nothing nil null",i={
+className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)\}/
+}]},s={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,i,{
+className:"variable",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]}]},t={
+className:"string",begin:/'/,end:/'/};return{name:"Microtik RouterOS script",
+aliases:["mikrotik"],case_insensitive:!0,keywords:{$pattern:/:?[\w-]+/,
+literal:n,
+keyword:r+" :"+r.split(" ").join(" :")+" :"+"global local beep delay put len typeof pick log time set find environment terminal error execute parse resolve toarray tobool toid toip toip6 tonum tostr totime".split(" ").join(" :")
+},contains:[{variants:[{begin:/\/\*/,end:/\*\//},{begin:/\/\//,end:/$/},{
+begin:/<\//,end:/>/}],illegal:/./},e.COMMENT("^#","$"),s,t,i,{
+begin:/[\w-]+=([^\s{}[\]()>]+)/,relevance:0,returnBegin:!0,contains:[{
+className:"attribute",begin:/[^=]+/},{begin:/=/,endsWithParent:!0,relevance:0,
+contains:[s,t,i,{className:"literal",begin:"\\b("+n.split(" ").join("|")+")\\b"
+},{begin:/("[^"]*"|[^\s{}[\]]+)/}]}]},{className:"number",begin:/\*[0-9a-fA-F]+/
+},{
+begin:"\\b(add|remove|enable|disable|set|get|print|export|edit|find|run|debug|error|info|warning)([\\s[(\\]|])",
+returnBegin:!0,contains:[{className:"built_in",begin:/\w+/}]},{
+className:"built_in",variants:[{
+begin:"(\\.\\./|/|\\s)((traffic-flow|traffic-generator|firewall|scheduler|aaa|accounting|address-list|address|align|area|bandwidth-server|bfd|bgp|bridge|client|clock|community|config|connection|console|customer|default|dhcp-client|dhcp-server|discovery|dns|e-mail|ethernet|filter|firmware|gps|graphing|group|hardware|health|hotspot|identity|igmp-proxy|incoming|instance|interface|ip|ipsec|ipv6|irq|l2tp-server|lcd|ldp|logging|mac-server|mac-winbox|mangle|manual|mirror|mme|mpls|nat|nd|neighbor|network|note|ntp|ospf|ospf-v3|ovpn-server|page|peer|pim|ping|policy|pool|port|ppp|pppoe-client|pptp-server|prefix|profile|proposal|proxy|queue|radius|resource|rip|ripng|route|routing|screen|script|security-profiles|server|service|service-port|settings|shares|smb|sms|sniffer|snmp|snooper|socks|sstp-server|system|tool|tracking|type|upgrade|upnp|user-manager|users|user|vlan|secret|vrrp|watchdog|web-access|wireless|pptp|pppoe|lan|wan|layer7-protocol|lease|simple|raw);?\\s)+"
+},{begin:/\.\./,relevance:0}]}]}}})();hljs.registerLanguage("routeros",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/rsl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/rsl.min.js
new file mode 100644
index 0000000..3a132d4
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/rsl.min.js
@@ -0,0 +1,10 @@
+/*! `rsl` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"RenderMan RSL",keywords:{
+keyword:"float color point normal vector matrix while for if do return else break extern continue",
+built_in:"abs acos ambient area asin atan atmosphere attribute calculatenormal ceil cellnoise clamp comp concat cos degrees depth Deriv diffuse distance Du Dv environment exp faceforward filterstep floor format fresnel incident length lightsource log match max min mod noise normalize ntransform opposite option phong pnoise pow printf ptlined radians random reflect refract renderinfo round setcomp setxcomp setycomp setzcomp shadow sign sin smoothstep specular specularbrdf spline sqrt step tan texture textureinfo trace transform vtransform xcomp ycomp zcomp"
+},illegal:"</",
+contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_NUMBER_MODE,{
+className:"meta",begin:"#",end:"$"},{className:"class",
+beginKeywords:"surface displacement light volume imager",end:"\\("},{
+beginKeywords:"illuminate illuminance gather",end:"\\("}]})})()
+;hljs.registerLanguage("rsl",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/ruby.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/ruby.min.js
new file mode 100644
index 0000000..06df8b4
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/ruby.min.js
@@ -0,0 +1,48 @@
+/*! `ruby` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const n=e.regex,a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i={
+keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor __FILE__",
+built_in:"proc lambda",literal:"true false nil"},s={className:"doctag",
+begin:"@[A-Za-z]+"},b={begin:"#<",end:">"},r=[e.COMMENT("#","$",{contains:[s]
+}),e.COMMENT("^=begin","^=end",{contains:[s],relevance:10
+}),e.COMMENT("^__END__","\\n$")],c={className:"subst",begin:/#\{/,end:/\}/,
+keywords:i},t={className:"string",contains:[e.BACKSLASH_ESCAPE,c],variants:[{
+begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,
+end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{
+begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,
+end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{
+begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{
+begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{
+begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{
+begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{
+begin:n.concat(/<<[-~]?'?/,n.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),
+contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,
+contains:[e.BACKSLASH_ESCAPE,c]})]}]},d="[0-9](_?[0-9])*",g={className:"number",
+relevance:0,variants:[{
+begin:`\\b([1-9](_?[0-9])*|0)(\\.(${d}))?([eE][+-]?(${d})|r)?i?\\b`},{
+begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"
+},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{
+begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{
+begin:"\\b0(_?[0-7])+r?i?\\b"}]},l={className:"params",begin:"\\(",end:"\\)",
+endsParent:!0,keywords:i},o=[t,{className:"class",beginKeywords:"class module",
+end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{
+begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{
+begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE,relevance:0}]}].concat(r)},{
+className:"function",begin:n.concat(/def\s+/,n.lookahead(a+"\\s*(\\(|;|$)")),
+relevance:0,keywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:a
+}),l].concat(r)},{begin:e.IDENT_RE+"::"},{className:"symbol",
+begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",
+begin:":(?!\\s)",contains:[t,{begin:a}],relevance:0},g,{className:"variable",
+begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{
+className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:i},{
+begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{
+className:"regexp",contains:[e.BACKSLASH_ESCAPE,c],illegal:/\n/,variants:[{
+begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",
+end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]
+}].concat(b,r),relevance:0}].concat(b,r);c.contains=o,l.contains=o;const _=[{
+begin:/^\s*=>/,starts:{end:"$",contains:o}},{className:"meta",
+begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])",
+starts:{end:"$",contains:o}}];return r.unshift(b),{name:"Ruby",
+aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/,
+contains:[e.SHEBANG({binary:"ruby"})].concat(_).concat(r).concat(o)}}})()
+;hljs.registerLanguage("ruby",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/ruleslanguage.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/ruleslanguage.min.js
new file mode 100644
index 0000000..42de3f1
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/ruleslanguage.min.js
@@ -0,0 +1,9 @@
+/*! `ruleslanguage` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var T=(()=>{"use strict";return T=>({name:"Oracle Rules Language",
+keywords:{
+keyword:"BILL_PERIOD BILL_START BILL_STOP RS_EFFECTIVE_START RS_EFFECTIVE_STOP RS_JURIS_CODE RS_OPCO_CODE INTDADDATTRIBUTE|5 INTDADDVMSG|5 INTDBLOCKOP|5 INTDBLOCKOPNA|5 INTDCLOSE|5 INTDCOUNT|5 INTDCOUNTSTATUSCODE|5 INTDCREATEMASK|5 INTDCREATEDAYMASK|5 INTDCREATEFACTORMASK|5 INTDCREATEHANDLE|5 INTDCREATEOVERRIDEDAYMASK|5 INTDCREATEOVERRIDEMASK|5 INTDCREATESTATUSCODEMASK|5 INTDCREATETOUPERIOD|5 INTDDELETE|5 INTDDIPTEST|5 INTDEXPORT|5 INTDGETERRORCODE|5 INTDGETERRORMESSAGE|5 INTDISEQUAL|5 INTDJOIN|5 INTDLOAD|5 INTDLOADACTUALCUT|5 INTDLOADDATES|5 INTDLOADHIST|5 INTDLOADLIST|5 INTDLOADLISTDATES|5 INTDLOADLISTENERGY|5 INTDLOADLISTHIST|5 INTDLOADRELATEDCHANNEL|5 INTDLOADSP|5 INTDLOADSTAGING|5 INTDLOADUOM|5 INTDLOADUOMDATES|5 INTDLOADUOMHIST|5 INTDLOADVERSION|5 INTDOPEN|5 INTDREADFIRST|5 INTDREADNEXT|5 INTDRECCOUNT|5 INTDRELEASE|5 INTDREPLACE|5 INTDROLLAVG|5 INTDROLLPEAK|5 INTDSCALAROP|5 INTDSCALE|5 INTDSETATTRIBUTE|5 INTDSETDSTPARTICIPANT|5 INTDSETSTRING|5 INTDSETVALUE|5 INTDSETVALUESTATUS|5 INTDSHIFTSTARTTIME|5 INTDSMOOTH|5 INTDSORT|5 INTDSPIKETEST|5 INTDSUBSET|5 INTDTOU|5 INTDTOURELEASE|5 INTDTOUVALUE|5 INTDUPDATESTATS|5 INTDVALUE|5 STDEV INTDDELETEEX|5 INTDLOADEXACTUAL|5 INTDLOADEXCUT|5 INTDLOADEXDATES|5 INTDLOADEX|5 INTDLOADEXRELATEDCHANNEL|5 INTDSAVEEX|5 MVLOAD|5 MVLOADACCT|5 MVLOADACCTDATES|5 MVLOADACCTHIST|5 MVLOADDATES|5 MVLOADHIST|5 MVLOADLIST|5 MVLOADLISTDATES|5 MVLOADLISTHIST|5 IF FOR NEXT DONE SELECT END CALL ABORT CLEAR CHANNEL FACTOR LIST NUMBER OVERRIDE SET WEEK DISTRIBUTIONNODE ELSE WHEN THEN OTHERWISE IENUM CSV INCLUDE LEAVE RIDER SAVE DELETE NOVALUE SECTION WARN SAVE_UPDATE DETERMINANT LABEL REPORT REVENUE EACH IN FROM TOTAL CHARGE BLOCK AND OR CSV_FILE RATE_CODE AUXILIARY_DEMAND UIDACCOUNT RS BILL_PERIOD_SELECT HOURS_PER_MONTH INTD_ERROR_STOP SEASON_SCHEDULE_NAME ACCOUNTFACTOR ARRAYUPPERBOUND CALLSTOREDPROC GETADOCONNECTION GETCONNECT GETDATASOURCE GETQUALIFIER GETUSERID HASVALUE LISTCOUNT LISTOP LISTUPDATE LISTVALUE PRORATEFACTOR RSPRORATE SETBINPATH SETDBMONITOR WQ_OPEN BILLINGHOURS DATE DATEFROMFLOAT DATETIMEFROMSTRING DATETIMETOSTRING DATETOFLOAT DAY DAYDIFF DAYNAME DBDATETIME HOUR MINUTE MONTH MONTHDIFF MONTHHOURS MONTHNAME ROUNDDATE SAMEWEEKDAYLASTYEAR SECOND WEEKDAY WEEKDIFF YEAR YEARDAY YEARSTR COMPSUM HISTCOUNT HISTMAX HISTMIN HISTMINNZ HISTVALUE MAXNRANGE MAXRANGE MINRANGE COMPIKVA COMPKVA COMPKVARFROMKQKW COMPLF IDATTR FLAG LF2KW LF2KWH MAXKW POWERFACTOR READING2USAGE AVGSEASON MAXSEASON MONTHLYMERGE SEASONVALUE SUMSEASON ACCTREADDATES ACCTTABLELOAD CONFIGADD CONFIGGET CREATEOBJECT CREATEREPORT EMAILCLIENT EXPBLKMDMUSAGE EXPMDMUSAGE EXPORT_USAGE FACTORINEFFECT GETUSERSPECIFIEDSTOP INEFFECT ISHOLIDAY RUNRATE SAVE_PROFILE SETREPORTTITLE USEREXIT WATFORRUNRATE TO TABLE ACOS ASIN ATAN ATAN2 BITAND CEIL COS COSECANT COSH COTANGENT DIVQUOT DIVREM EXP FABS FLOOR FMOD FREPM FREXPN LOG LOG10 MAX MAXN MIN MINNZ MODF POW ROUND ROUND2VALUE ROUNDINT SECANT SIN SINH SQROOT TAN TANH FLOAT2STRING FLOAT2STRINGNC INSTR LEFT LEN LTRIM MID RIGHT RTRIM STRING STRINGNC TOLOWER TOUPPER TRIM NUMDAYS READ_DATE STAGING",
+built_in:"IDENTIFIER OPTIONS XML_ELEMENT XML_OP XML_ELEMENT_OF DOMDOCCREATE DOMDOCLOADFILE DOMDOCLOADXML DOMDOCSAVEFILE DOMDOCGETROOT DOMDOCADDPI DOMNODEGETNAME DOMNODEGETTYPE DOMNODEGETVALUE DOMNODEGETCHILDCT DOMNODEGETFIRSTCHILD DOMNODEGETSIBLING DOMNODECREATECHILDELEMENT DOMNODESETATTRIBUTE DOMNODEGETCHILDELEMENTCT DOMNODEGETFIRSTCHILDELEMENT DOMNODEGETSIBLINGELEMENT DOMNODEGETATTRIBUTECT DOMNODEGETATTRIBUTEI DOMNODEGETATTRIBUTEBYNAME DOMNODEGETBYNAME"
+},
+contains:[T.C_LINE_COMMENT_MODE,T.C_BLOCK_COMMENT_MODE,T.APOS_STRING_MODE,T.QUOTE_STRING_MODE,T.C_NUMBER_MODE,{
+className:"literal",variants:[{begin:"#\\s+",relevance:0},{begin:"#[a-zA-Z .]+"
+}]}]})})();hljs.registerLanguage("ruleslanguage",T)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/rust.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/rust.min.js
new file mode 100644
index 0000000..83093a9
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/rust.min.js
@@ -0,0 +1,29 @@
+/*! `rust` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const t=e.regex,n={
+className:"title.function.invoke",relevance:0,
+begin:t.concat(/\b/,/(?!let\b)/,e.IDENT_RE,t.lookahead(/\s*\(/))
+},a="([ui](8|16|32|64|128|size)|f(32|64))?",i=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","panic!","file!","format!","format_args!","include_bin!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"]
+;return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?",
+type:["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"],
+keyword:["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","unsafe","unsized","use","virtual","where","while","yield"],
+literal:["true","false","Some","None","Ok","Err"],built_in:i},illegal:"</",
+contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]
+}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{
+className:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{
+begin:/b?'\\?(x\w{2}|u\w{4}|U\w{8}|.)'/}]},{className:"symbol",
+begin:/'[a-zA-Z_][a-zA-Z0-9_]*/},{className:"number",variants:[{
+begin:"\\b0b([01_]+)"+a},{begin:"\\b0o([0-7_]+)"+a},{
+begin:"\\b0x([A-Fa-f0-9_]+)"+a},{
+begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+a}],relevance:0},{
+begin:[/fn/,/\s+/,e.UNDERSCORE_IDENT_RE],className:{1:"keyword",
+3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{
+className:"string",begin:/"/,end:/"/}]},{
+begin:[/let/,/\s+/,/(?:mut\s+)?/,e.UNDERSCORE_IDENT_RE],className:{1:"keyword",
+3:"keyword",4:"variable"}},{
+begin:[/for/,/\s+/,e.UNDERSCORE_IDENT_RE,/\s+/,/in/],className:{1:"keyword",
+3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,e.UNDERSCORE_IDENT_RE],
+className:{1:"keyword",3:"title.class"}},{
+begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,e.UNDERSCORE_IDENT_RE],
+className:{1:"keyword",3:"title.class"}},{begin:e.IDENT_RE+"::",keywords:{
+keyword:"Self",built_in:i}},{className:"punctuation",begin:"->"},n]}}})()
+;hljs.registerLanguage("rust",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/sas.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/sas.min.js
new file mode 100644
index 0000000..68711e4
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/sas.min.js
@@ -0,0 +1,18 @@
+/*! `sas` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const t=e.regex;return{name:"SAS",
+case_insensitive:!0,keywords:{
+literal:["null","missing","_all_","_automatic_","_character_","_infile_","_n_","_name_","_null_","_numeric_","_user_","_webout_"],
+keyword:["do","if","then","else","end","until","while","abort","array","attrib","by","call","cards","cards4","catname","continue","datalines","datalines4","delete","delim","delimiter","display","dm","drop","endsas","error","file","filename","footnote","format","goto","in","infile","informat","input","keep","label","leave","length","libname","link","list","lostcard","merge","missing","modify","options","output","out","page","put","redirect","remove","rename","replace","retain","return","select","set","skip","startsas","stop","title","update","waitsas","where","window","x|0","systask","add","and","alter","as","cascade","check","create","delete","describe","distinct","drop","foreign","from","group","having","index","insert","into","in","key","like","message","modify","msgtype","not","null","on","or","order","primary","references","reset","restrict","select","set","table","unique","update","validate","view","where"]
+},contains:[{className:"keyword",begin:/^\s*(proc [\w\d_]+|data|run|quit)[\s;]/
+},{className:"variable",begin:/&[a-zA-Z_&][a-zA-Z0-9_]*\.?/},{
+begin:[/^\s*/,/datalines;|cards;/,/(?:.*\n)+/,/^\s*;\s*$/],className:{
+2:"keyword",3:"string"}},{
+begin:[/%mend|%macro/,/\s+/,/[a-zA-Z_&][a-zA-Z0-9_]*/],className:{1:"built_in",
+3:"title.function"}},{className:"built_in",
+begin:"%"+t.either("bquote","nrbquote","cmpres","qcmpres","compstor","datatyp","display","do","else","end","eval","global","goto","if","index","input","keydef","label","left","length","let","local","lowcase","macro","mend","nrbquote","nrquote","nrstr","put","qcmpres","qleft","qlowcase","qscan","qsubstr","qsysfunc","qtrim","quote","qupcase","scan","str","substr","superq","syscall","sysevalf","sysexec","sysfunc","sysget","syslput","sysprod","sysrc","sysrput","then","to","trim","unquote","until","upcase","verify","while","window")
+},{className:"title.function",begin:/%[a-zA-Z_][a-zA-Z_0-9]*/},{
+className:"meta",
+begin:t.either("abs","addr","airy","arcos","arsin","atan","attrc","attrn","band","betainv","blshift","bnot","bor","brshift","bxor","byte","cdf","ceil","cexist","cinv","close","cnonct","collate","compbl","compound","compress","cos","cosh","css","curobs","cv","daccdb","daccdbsl","daccsl","daccsyd","dacctab","dairy","date","datejul","datepart","datetime","day","dclose","depdb","depdbsl","depdbsl","depsl","depsl","depsyd","depsyd","deptab","deptab","dequote","dhms","dif","digamma","dim","dinfo","dnum","dopen","doptname","doptnum","dread","dropnote","dsname","erf","erfc","exist","exp","fappend","fclose","fcol","fdelete","fetch","fetchobs","fexist","fget","fileexist","filename","fileref","finfo","finv","fipname","fipnamel","fipstate","floor","fnonct","fnote","fopen","foptname","foptnum","fpoint","fpos","fput","fread","frewind","frlen","fsep","fuzz","fwrite","gaminv","gamma","getoption","getvarc","getvarn","hbound","hms","hosthelp","hour","ibessel","index","indexc","indexw","input","inputc","inputn","int","intck","intnx","intrr","irr","jbessel","juldate","kurtosis","lag","lbound","left","length","lgamma","libname","libref","log","log10","log2","logpdf","logpmf","logsdf","lowcase","max","mdy","mean","min","minute","mod","month","mopen","mort","n","netpv","nmiss","normal","note","npv","open","ordinal","pathname","pdf","peek","peekc","pmf","point","poisson","poke","probbeta","probbnml","probchi","probf","probgam","probhypr","probit","probnegb","probnorm","probt","put","putc","putn","qtr","quote","ranbin","rancau","ranexp","rangam","range","rank","rannor","ranpoi","rantbl","rantri","ranuni","repeat","resolve","reverse","rewind","right","round","saving","scan","sdf","second","sign","sin","sinh","skewness","soundex","spedis","sqrt","std","stderr","stfips","stname","stnamel","substr","sum","symget","sysget","sysmsg","sysprod","sysrc","system","tan","tanh","time","timepart","tinv","tnonct","today","translate","tranwrd","trigamma","trim","trimn","trunc","uniform","upcase","uss","var","varfmt","varinfmt","varlabel","varlen","varname","varnum","varray","varrayx","vartype","verify","vformat","vformatd","vformatdx","vformatn","vformatnx","vformatw","vformatwx","vformatx","vinarray","vinarrayx","vinformat","vinformatd","vinformatdx","vinformatn","vinformatnx","vinformatw","vinformatwx","vinformatx","vlabel","vlabelx","vlength","vlengthx","vname","vnamex","vtype","vtypex","weekday","year","yyq","zipfips","zipname","zipnamel","zipstate")+"(?=\\()"
+},{className:"string",variants:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]
+},e.COMMENT("\\*",";"),e.C_BLOCK_COMMENT_MODE]}}})()
+;hljs.registerLanguage("sas",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/scala.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/scala.min.js
new file mode 100644
index 0000000..7f74187
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/scala.min.js
@@ -0,0 +1,25 @@
+/*! `scala` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n=e.regex,a={className:"subst",
+variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:/\$\{/,end:/\}/}]},s={
+className:"string",variants:[{begin:'"""',end:'"""'},{begin:'"',end:'"',
+illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:'[a-z]+"',end:'"',
+illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,a]},{className:"string",
+begin:'[a-z]+"""',end:'"""',contains:[a],relevance:10}]},i={className:"type",
+begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},t={className:"title",
+begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/,
+relevance:0},l={className:"class",beginKeywords:"class object trait type",
+end:/[:={\[\n;]/,excludeEnd:!0,
+contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{
+beginKeywords:"extends with",relevance:10},{begin:/\[/,end:/\]/,excludeBegin:!0,
+excludeEnd:!0,relevance:0,contains:[i]},{className:"params",begin:/\(/,end:/\)/,
+excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[i]},t]},c={
+className:"function",beginKeywords:"def",end:n.lookahead(/[:={\[(\n;]/),
+contains:[t]};return{name:"Scala",keywords:{literal:"true false null",
+keyword:"type yield lazy override def with val var sealed abstract private trait object if then forSome for while do throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit export enum given"
+},
+contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,i,c,l,e.C_NUMBER_MODE,{
+begin:[/^\s*/,"extension",/\s+(?=[[(])/],beginScope:{2:"keyword"}},[{
+begin:[/^\s*/,/end/,/\s+/,/(extension\b)?/],beginScope:{2:"keyword",4:"keyword"}
+}],{match:/\.inline\b/},{begin:/\binline(?=\s)/,keywords:"inline"},{
+begin:[/\(\s*/,/using/,/\s+(?!\))/],beginScope:{2:"keyword"}},{className:"meta",
+begin:"@[A-Za-z]+"}]}}})();hljs.registerLanguage("scala",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/scheme.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/scheme.min.js
new file mode 100644
index 0000000..c93e7a3
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/scheme.min.js
@@ -0,0 +1,19 @@
+/*! `scheme` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",n={$pattern:t,
+built_in:"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char<? char=? char>=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci<? string-ci=? string-ci>=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string<? string=? string>=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?"
+},r={className:"literal",begin:"(#t|#f|#\\\\"+t+"|#\\\\.)"},a={
+className:"number",variants:[{begin:"(-|\\+)?\\d+([./]\\d+)?",relevance:0},{
+begin:"(-|\\+)?\\d+([./]\\d+)?[+\\-](-|\\+)?\\d+([./]\\d+)?i",relevance:0},{
+begin:"#b[0-1]+(/[0-1]+)?"},{begin:"#o[0-7]+(/[0-7]+)?"},{
+begin:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},i=e.QUOTE_STRING_MODE,c=[e.COMMENT(";","$",{
+relevance:0}),e.COMMENT("#\\|","\\|#")],s={begin:t,relevance:0},l={
+className:"symbol",begin:"'"+t},o={endsWithParent:!0,relevance:0},g={variants:[{
+begin:/'/},{begin:"`"}],contains:[{begin:"\\(",end:"\\)",
+contains:["self",r,i,a,s,l]}]},u={className:"name",relevance:0,begin:t,
+keywords:n},d={variants:[{begin:"\\(",end:"\\)"},{begin:"\\[",end:"\\]"}],
+contains:[{begin:/lambda/,endsWithParent:!0,returnBegin:!0,contains:[u,{
+endsParent:!0,variants:[{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/}],
+contains:[s]}]},u,o]};return o.contains=[r,a,i,s,l,g,d].concat(c),{
+name:"Scheme",illegal:/\S/,contains:[e.SHEBANG(),a,i,l,g,d].concat(c)}}})()
+;hljs.registerLanguage("scheme",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/scilab.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/scilab.min.js
new file mode 100644
index 0000000..3af3d80
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/scilab.min.js
@@ -0,0 +1,13 @@
+/*! `scilab` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n=[e.C_NUMBER_MODE,{
+className:"string",begin:"'|\"",end:"'|\"",contains:[e.BACKSLASH_ESCAPE,{
+begin:"''"}]}];return{name:"Scilab",aliases:["sci"],keywords:{$pattern:/%?\w+/,
+keyword:"abort break case clear catch continue do elseif else endfunction end for function global if pause return resume select try then while",
+literal:"%f %F %t %T %pi %eps %inf %nan %e %i %z %s",
+built_in:"abs and acos asin atan ceil cd chdir clearglobal cosh cos cumprod deff disp error exec execstr exists exp eye gettext floor fprintf fread fsolve imag isdef isempty isinfisnan isvector lasterror length load linspace list listfiles log10 log2 log max min msprintf mclose mopen ones or pathconvert poly printf prod pwd rand real round sinh sin size gsort sprintf sqrt strcat strcmps tring sum system tanh tan type typename warning zeros matrix"
+},illegal:'("|#|/\\*|\\s+/\\w+)',contains:[{className:"function",
+beginKeywords:"function",end:"$",contains:[e.UNDERSCORE_TITLE_MODE,{
+className:"params",begin:"\\(",end:"\\)"}]},{
+begin:"[a-zA-Z_][a-zA-Z_0-9]*[\\.']+",relevance:0},{begin:"\\[",
+end:"\\][\\.']*",relevance:0,contains:n},e.COMMENT("//","$")].concat(n)}}})()
+;hljs.registerLanguage("scilab",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/scss.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/scss.min.js
new file mode 100644
index 0000000..aadca84
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/scss.min.js
@@ -0,0 +1,33 @@
+/*! `scss` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict"
+;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],r=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],o=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-height","max-width","min-height","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse()
+;return a=>{const n=(e=>({IMPORTANT:{scope:"meta",begin:"!important"},
+BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",
+begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{
+className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{
+scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",
+contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{
+scope:"number",
+begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",
+relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/}
+}))(a),l=r,s=i,d="@[a-z-]+",c={className:"variable",
+begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b"};return{name:"SCSS",case_insensitive:!0,
+illegal:"[=/|']",
+contains:[a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,n.CSS_NUMBER_MODE,{
+className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{
+className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0
+},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag",
+begin:"\\b("+e.join("|")+")\\b",relevance:0},{className:"selector-pseudo",
+begin:":("+s.join("|")+")"},{className:"selector-pseudo",
+begin:":(:)?("+l.join("|")+")"},c,{begin:/\(/,end:/\)/,
+contains:[n.CSS_NUMBER_MODE]},n.CSS_VARIABLE,{className:"attribute",
+begin:"\\b("+o.join("|")+")\\b"},{
+begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"
+},{begin:/:/,end:/[;}{]/,
+contains:[n.BLOCK_COMMENT,c,n.HEXCOLOR,n.CSS_NUMBER_MODE,a.QUOTE_STRING_MODE,a.APOS_STRING_MODE,n.IMPORTANT]
+},{begin:"@(page|font-face)",keywords:{$pattern:d,keyword:"@page @font-face"}},{
+begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,
+keyword:"and or not only",attribute:t.join(" ")},contains:[{begin:d,
+className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute"
+},c,a.QUOTE_STRING_MODE,a.APOS_STRING_MODE,n.HEXCOLOR,n.CSS_NUMBER_MODE]
+},n.FUNCTION_DISPATCH]}}})();hljs.registerLanguage("scss",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/shell.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/shell.min.js
new file mode 100644
index 0000000..a5d17ae
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/shell.min.js
@@ -0,0 +1,5 @@
+/*! `shell` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var s=(()=>{"use strict";return s=>({name:"Shell Session",
+aliases:["console","shellsession"],contains:[{className:"meta",
+begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,
+subLanguage:"bash"}}]})})();hljs.registerLanguage("shell",s)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/smali.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/smali.min.js
new file mode 100644
index 0000000..5645e61
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/smali.min.js
@@ -0,0 +1,13 @@
+/*! `smali` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const n=["add","and","cmp","cmpg","cmpl","const","div","double","float","goto","if","int","long","move","mul","neg","new","nop","not","or","rem","return","shl","shr","sput","sub","throw","ushr","xor"]
+;return{name:"Smali",contains:[{className:"string",begin:'"',end:'"',relevance:0
+},e.COMMENT("#","$",{relevance:0}),{className:"keyword",variants:[{
+begin:"\\s*\\.end\\s[a-zA-Z0-9]*"},{begin:"^[ ]*\\.[a-zA-Z]*",relevance:0},{
+begin:"\\s:[a-zA-Z_0-9]*",relevance:0},{
+begin:"\\s(transient|constructor|abstract|final|synthetic|public|private|protected|static|bridge|system)"
+}]},{className:"built_in",variants:[{begin:"\\s("+n.join("|")+")\\s"},{
+begin:"\\s("+n.join("|")+")((-|/)[a-zA-Z0-9]+)+\\s",relevance:10},{
+begin:"\\s(aget|aput|array|check|execute|fill|filled|goto/16|goto/32|iget|instance|invoke|iput|monitor|packed|sget|sparse)((-|/)[a-zA-Z0-9]+)*\\s",
+relevance:10}]},{className:"class",begin:"L[^(;:\n]*;",relevance:0},{
+begin:"[vp][0-9]+"}]}}})();hljs.registerLanguage("smali",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/smalltalk.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/smalltalk.min.js
new file mode 100644
index 0000000..ed495b8
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/smalltalk.min.js
@@ -0,0 +1,11 @@
+/*! `smalltalk` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n="[a-z][a-zA-Z0-9_]*",a={
+className:"string",begin:"\\$.{1}"},s={className:"symbol",
+begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk",aliases:["st"],
+keywords:["self","super","nil","true","false","thisContext"],
+contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type",
+begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:n+":",relevance:0
+},e.C_NUMBER_MODE,s,a,{begin:"\\|[ ]*"+n+"([ ]+"+n+")*[ ]*\\|",returnBegin:!0,
+end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+n}]},{begin:"#\\(",
+end:"\\)",contains:[e.APOS_STRING_MODE,a,e.C_NUMBER_MODE,s]}]}}})()
+;hljs.registerLanguage("smalltalk",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/sml.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/sml.min.js
new file mode 100644
index 0000000..67a32db
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/sml.min.js
@@ -0,0 +1,14 @@
+/*! `sml` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"SML (Standard ML)",
+aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?",
+keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while",
+built_in:"array bool char exn int list option order real ref string substring vector unit word",
+literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/,
+contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0
+},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol",
+begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{
+className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{
+begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string",
+relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number",
+begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",
+relevance:0},{begin:/[-=]>/}]})})();hljs.registerLanguage("sml",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/sqf.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/sqf.min.js
new file mode 100644
index 0000000..81418b7
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/sqf.min.js
@@ -0,0 +1,17 @@
+/*! `sqf` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const t={className:"string",
+variants:[{begin:'"',end:'"',contains:[{begin:'""',relevance:0}]},{begin:"'",
+end:"'",contains:[{begin:"''",relevance:0}]}]},a={className:"meta",
+begin:/#\s*[a-z]+\b/,end:/$/,keywords:{
+keyword:"define undef ifdef ifndef else endif include"},contains:[{begin:/\\\n/,
+relevance:0},e.inherit(t,{className:"string"}),{className:"string",
+begin:/<[^\n>]*>/,end:/$/,illegal:"\\n"
+},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]};return{name:"SQF",
+case_insensitive:!0,keywords:{
+keyword:["case","catch","default","do","else","exit","exitWith","for","forEach","from","if","private","switch","then","throw","to","try","waitUntil","while","with"],
+built_in:["abs","accTime","acos","action","actionIDs","actionKeys","actionKeysImages","actionKeysNames","actionKeysNamesArray","actionName","actionParams","activateAddons","activatedAddons","activateKey","add3DENConnection","add3DENEventHandler","add3DENLayer","addAction","addBackpack","addBackpackCargo","addBackpackCargoGlobal","addBackpackGlobal","addBinocularItem","addCamShake","addCuratorAddons","addCuratorCameraArea","addCuratorEditableObjects","addCuratorEditingArea","addCuratorPoints","addEditorObject","addEventHandler","addForce","addForceGeneratorRTD","addGoggles","addGroupIcon","addHandgunItem","addHeadgear","addItem","addItemCargo","addItemCargoGlobal","addItemPool","addItemToBackpack","addItemToUniform","addItemToVest","addLiveStats","addMagazine","addMagazineAmmoCargo","addMagazineCargo","addMagazineCargoGlobal","addMagazineGlobal","addMagazinePool","addMagazines","addMagazineTurret","addMenu","addMenuItem","addMissionEventHandler","addMPEventHandler","addMusicEventHandler","addonFiles","addOwnedMine","addPlayerScores","addPrimaryWeaponItem","addPublicVariableEventHandler","addRating","addResources","addScore","addScoreSide","addSecondaryWeaponItem","addSwitchableUnit","addTeamMember","addToRemainsCollector","addTorque","addUniform","addVehicle","addVest","addWaypoint","addWeapon","addWeaponCargo","addWeaponCargoGlobal","addWeaponGlobal","addWeaponItem","addWeaponPool","addWeaponTurret","addWeaponWithAttachmentsCargo","addWeaponWithAttachmentsCargoGlobal","admin","agent","agents","AGLToASL","aimedAtTarget","aimPos","airDensityCurveRTD","airDensityRTD","airplaneThrottle","airportSide","AISFinishHeal","alive","all3DENEntities","allActiveTitleEffects","allAddonsInfo","allAirports","allControls","allCurators","allCutLayers","allDead","allDeadMen","allDiarySubjects","allDisplays","allGroups","allMapMarkers","allMines","allMissionObjects","allow3DMode","allowCrewInImmobile","allowCuratorLogicIgnoreAreas","allowDamage","allowDammage","allowFileOperations","allowFleeing","allowGetIn","allowSprint","allPlayers","allSimpleObjects","allSites","allTurrets","allUnits","allUnitsUAV","allVariables","ammo","ammoOnPylon","and","animate","animateBay","animateDoor","animatePylon","animateSource","animationNames","animationPhase","animationSourcePhase","animationState","apertureParams","append","apply","armoryPoints","arrayIntersect","asin","ASLToAGL","ASLToATL","assert","assignAsCargo","assignAsCargoIndex","assignAsCommander","assignAsDriver","assignAsGunner","assignAsTurret","assignCurator","assignedCargo","assignedCommander","assignedDriver","assignedGunner","assignedItems","assignedTarget","assignedTeam","assignedVehicle","assignedVehicleRole","assignItem","assignTeam","assignToAirport","atan","atan2","atg","ATLToASL","attachedObject","attachedObjects","attachedTo","attachObject","attachTo","attackEnabled","backpack","backpackCargo","backpackContainer","backpackItems","backpackMagazines","backpackSpaceFor","batteryChargeRTD","behaviour","benchmark","bezierInterpolation","binocular","binocularItems","binocularMagazine","boundingBox","boundingBoxReal","boundingCenter","break","breakOut","breakTo","breakWith","briefingName","buildingExit","buildingPos","buldozer_EnableRoadDiag","buldozer_IsEnabledRoadDiag","buldozer_LoadNewRoads","buldozer_reloadOperMap","buttonAction","buttonSetAction","cadetMode","calculatePath","calculatePlayerVisibilityByFriendly","call","callExtension","camCommand","camCommit","camCommitPrepared","camCommitted","camConstuctionSetParams","camCreate","camDestroy","cameraEffect","cameraEffectEnableHUD","cameraInterest","cameraOn","cameraView","campaignConfigFile","camPreload","camPreloaded","camPrepareBank","camPrepareDir","camPrepareDive","camPrepareFocus","camPrepareFov","camPrepareFovRange","camPreparePos","camPrepareRelPos","camPrepareTarget","camSetBank","camSetDir","camSetDive","camSetFocus","camSetFov","camSetFovRange","camSetPos","camSetRelPos","camSetTarget","camTarget","camUseNVG","canAdd","canAddItemToBackpack","canAddItemToUniform","canAddItemToVest","cancelSimpleTaskDestination","canFire","canMove","canSlingLoad","canStand","canSuspend","canTriggerDynamicSimulation","canUnloadInCombat","canVehicleCargo","captive","captiveNum","cbChecked","cbSetChecked","ceil","channelEnabled","cheatsEnabled","checkAIFeature","checkVisibility","className","clear3DENAttribute","clear3DENInventory","clearAllItemsFromBackpack","clearBackpackCargo","clearBackpackCargoGlobal","clearForcesRTD","clearGroupIcons","clearItemCargo","clearItemCargoGlobal","clearItemPool","clearMagazineCargo","clearMagazineCargoGlobal","clearMagazinePool","clearOverlay","clearRadio","clearVehicleInit","clearWeaponCargo","clearWeaponCargoGlobal","clearWeaponPool","clientOwner","closeDialog","closeDisplay","closeOverlay","collapseObjectTree","collect3DENHistory","collectiveRTD","combatBehaviour","combatMode","commandArtilleryFire","commandChat","commander","commandFire","commandFollow","commandFSM","commandGetOut","commandingMenu","commandMove","commandRadio","commandStop","commandSuppressiveFire","commandTarget","commandWatch","comment","commitOverlay","compile","compileFinal","compileScript","completedFSM","composeText","configClasses","configFile","configHierarchy","configName","configOf","configProperties","configSourceAddonList","configSourceMod","configSourceModList","confirmSensorTarget","connectTerminalToUAV","connectToServer","continue","continueWith","controlsGroupCtrl","copyFromClipboard","copyToClipboard","copyWaypoints","cos","count","countEnemy","countFriendly","countSide","countType","countUnknown","create3DENComposition","create3DENEntity","createAgent","createCenter","createDialog","createDiaryLink","createDiaryRecord","createDiarySubject","createDisplay","createGearDialog","createGroup","createGuardedPoint","createHashMap","createHashMapFromArray","createLocation","createMarker","createMarkerLocal","createMenu","createMine","createMissionDisplay","createMPCampaignDisplay","createSimpleObject","createSimpleTask","createSite","createSoundSource","createTarget","createTask","createTeam","createTrigger","createUnit","createVehicle","createVehicleCrew","createVehicleLocal","crew","ctAddHeader","ctAddRow","ctClear","ctCurSel","ctData","ctFindHeaderRows","ctFindRowHeader","ctHeaderControls","ctHeaderCount","ctRemoveHeaders","ctRemoveRows","ctrlActivate","ctrlAddEventHandler","ctrlAngle","ctrlAnimateModel","ctrlAnimationPhaseModel","ctrlAutoScrollDelay","ctrlAutoScrollRewind","ctrlAutoScrollSpeed","ctrlChecked","ctrlClassName","ctrlCommit","ctrlCommitted","ctrlCreate","ctrlDelete","ctrlEnable","ctrlEnabled","ctrlFade","ctrlFontHeight","ctrlHTMLLoaded","ctrlIDC","ctrlIDD","ctrlMapAnimAdd","ctrlMapAnimClear","ctrlMapAnimCommit","ctrlMapAnimDone","ctrlMapCursor","ctrlMapMouseOver","ctrlMapScale","ctrlMapScreenToWorld","ctrlMapWorldToScreen","ctrlModel","ctrlModelDirAndUp","ctrlModelScale","ctrlMousePosition","ctrlParent","ctrlParentControlsGroup","ctrlPosition","ctrlRemoveAllEventHandlers","ctrlRemoveEventHandler","ctrlScale","ctrlScrollValues","ctrlSetActiveColor","ctrlSetAngle","ctrlSetAutoScrollDelay","ctrlSetAutoScrollRewind","ctrlSetAutoScrollSpeed","ctrlSetBackgroundColor","ctrlSetChecked","ctrlSetDisabledColor","ctrlSetEventHandler","ctrlSetFade","ctrlSetFocus","ctrlSetFont","ctrlSetFontH1","ctrlSetFontH1B","ctrlSetFontH2","ctrlSetFontH2B","ctrlSetFontH3","ctrlSetFontH3B","ctrlSetFontH4","ctrlSetFontH4B","ctrlSetFontH5","ctrlSetFontH5B","ctrlSetFontH6","ctrlSetFontH6B","ctrlSetFontHeight","ctrlSetFontHeightH1","ctrlSetFontHeightH2","ctrlSetFontHeightH3","ctrlSetFontHeightH4","ctrlSetFontHeightH5","ctrlSetFontHeightH6","ctrlSetFontHeightSecondary","ctrlSetFontP","ctrlSetFontPB","ctrlSetFontSecondary","ctrlSetForegroundColor","ctrlSetModel","ctrlSetModelDirAndUp","ctrlSetModelScale","ctrlSetMousePosition","ctrlSetPixelPrecision","ctrlSetPosition","ctrlSetPositionH","ctrlSetPositionW","ctrlSetPositionX","ctrlSetPositionY","ctrlSetScale","ctrlSetScrollValues","ctrlSetStructuredText","ctrlSetText","ctrlSetTextColor","ctrlSetTextColorSecondary","ctrlSetTextSecondary","ctrlSetTextSelection","ctrlSetTooltip","ctrlSetTooltipColorBox","ctrlSetTooltipColorShade","ctrlSetTooltipColorText","ctrlSetURL","ctrlShow","ctrlShown","ctrlStyle","ctrlText","ctrlTextColor","ctrlTextHeight","ctrlTextSecondary","ctrlTextSelection","ctrlTextWidth","ctrlTooltip","ctrlType","ctrlURL","ctrlVisible","ctRowControls","ctRowCount","ctSetCurSel","ctSetData","ctSetHeaderTemplate","ctSetRowTemplate","ctSetValue","ctValue","curatorAddons","curatorCamera","curatorCameraArea","curatorCameraAreaCeiling","curatorCoef","curatorEditableObjects","curatorEditingArea","curatorEditingAreaType","curatorMouseOver","curatorPoints","curatorRegisteredObjects","curatorSelected","curatorWaypointCost","current3DENOperation","currentChannel","currentCommand","currentMagazine","currentMagazineDetail","currentMagazineDetailTurret","currentMagazineTurret","currentMuzzle","currentNamespace","currentPilot","currentTask","currentTasks","currentThrowable","currentVisionMode","currentWaypoint","currentWeapon","currentWeaponMode","currentWeaponTurret","currentZeroing","cursorObject","cursorTarget","customChat","customRadio","customWaypointPosition","cutFadeOut","cutObj","cutRsc","cutText","damage","date","dateToNumber","daytime","deActivateKey","debriefingText","debugFSM","debugLog","decayGraphValues","deg","delete3DENEntities","deleteAt","deleteCenter","deleteCollection","deleteEditorObject","deleteGroup","deleteGroupWhenEmpty","deleteIdentity","deleteLocation","deleteMarker","deleteMarkerLocal","deleteRange","deleteResources","deleteSite","deleteStatus","deleteTarget","deleteTeam","deleteVehicle","deleteVehicleCrew","deleteWaypoint","detach","detectedMines","diag_activeMissionFSMs","diag_activeScripts","diag_activeSQSScripts","diag_captureFrameToFile","diag_captureSlowFrame","diag_deltaTime","diag_drawMode","diag_enable","diag_enabled","diag_fps","diag_fpsMin","diag_frameNo","diag_list","diag_mergeConfigFile","diag_scope","diag_activeSQFScripts","diag_allMissionEventHandlers","diag_captureFrame","diag_codePerformance","diag_dumpCalltraceToLog","diag_dumpTerrainSynth","diag_dynamicSimulationEnd","diag_exportConfig","diag_exportTerrainSVG","diag_lightNewLoad","diag_localized","diag_log","diag_logSlowFrame","diag_recordTurretLimits","diag_resetShapes","diag_setLightNew","diag_tickTime","diag_toggle","dialog","diaryRecordNull","diarySubjectExists","didJIP","didJIPOwner","difficulty","difficultyEnabled","difficultyEnabledRTD","difficultyOption","direction","directSay","disableAI","disableCollisionWith","disableConversation","disableDebriefingStats","disableMapIndicators","disableNVGEquipment","disableRemoteSensors","disableSerialization","disableTIEquipment","disableUAVConnectability","disableUserInput","displayAddEventHandler","displayCtrl","displayParent","displayRemoveAllEventHandlers","displayRemoveEventHandler","displaySetEventHandler","dissolveTeam","distance","distance2D","distanceSqr","distributionRegion","do3DENAction","doArtilleryFire","doFire","doFollow","doFSM","doGetOut","doMove","doorPhase","doStop","doSuppressiveFire","doTarget","doWatch","drawArrow","drawEllipse","drawIcon","drawIcon3D","drawLine","drawLine3D","drawLink","drawLocation","drawPolygon","drawRectangle","drawTriangle","driver","drop","dynamicSimulationDistance","dynamicSimulationDistanceCoef","dynamicSimulationEnabled","dynamicSimulationSystemEnabled","echo","edit3DENMissionAttributes","editObject","editorSetEventHandler","effectiveCommander","elevatePeriscope","emptyPositions","enableAI","enableAIFeature","enableAimPrecision","enableAttack","enableAudioFeature","enableAutoStartUpRTD","enableAutoTrimRTD","enableCamShake","enableCaustics","enableChannel","enableCollisionWith","enableCopilot","enableDebriefingStats","enableDiagLegend","enableDynamicSimulation","enableDynamicSimulationSystem","enableEndDialog","enableEngineArtillery","enableEnvironment","enableFatigue","enableGunLights","enableInfoPanelComponent","enableIRLasers","enableMimics","enablePersonTurret","enableRadio","enableReload","enableRopeAttach","enableSatNormalOnDetail","enableSaving","enableSentences","enableSimulation","enableSimulationGlobal","enableStamina","enableStressDamage","enableTeamSwitch","enableTraffic","enableUAVConnectability","enableUAVWaypoints","enableVehicleCargo","enableVehicleSensor","enableWeaponDisassembly","endLoadingScreen","endMission","enemy","engineOn","enginesIsOnRTD","enginesPowerRTD","enginesRpmRTD","enginesTorqueRTD","entities","environmentEnabled","environmentVolume","estimatedEndServerTime","estimatedTimeLeft","evalObjectArgument","everyBackpack","everyContainer","exec","execEditorScript","execFSM","execVM","exp","expectedDestination","exportJIPMessages","exportLandscapeXYZ","eyeDirection","eyePos","face","faction","fadeEnvironment","fadeMusic","fadeRadio","fadeSound","fadeSpeech","failMission","fileExists","fillWeaponsFromPool","find","findCover","findDisplay","findEditorObject","findEmptyPosition","findEmptyPositionReady","findIf","findNearestEnemy","finishMissionInit","finite","fire","fireAtTarget","firstBackpack","flag","flagAnimationPhase","flagOwner","flagSide","flagTexture","flatten","fleeing","floor","flyInHeight","flyInHeightASL","focusedCtrl","fog","fogForecast","fogParams","forceAddUniform","forceAtPositionRTD","forceCadetDifficulty","forcedMap","forceEnd","forceFlagTexture","forceFollowRoad","forceGeneratorRTD","forceMap","forceRespawn","forceSpeed","forceUnicode","forceWalk","forceWeaponFire","forceWeatherChange","forEachMember","forEachMemberAgent","forEachMemberTeam","forgetTarget","format","formation","formationDirection","formationLeader","formationMembers","formationPosition","formationTask","formatText","formLeader","freeLook","friendly","fromEditor","fuel","fullCrew","gearIDCAmmoCount","gearSlotAmmoCount","gearSlotData","get","get3DENActionState","get3DENAttribute","get3DENCamera","get3DENConnections","get3DENEntity","get3DENEntityID","get3DENGrid","get3DENIconsVisible","get3DENLayerEntities","get3DENLinesVisible","get3DENMissionAttribute","get3DENMouseOver","get3DENSelected","getAimingCoef","getAllEnvSoundControllers","getAllHitPointsDamage","getAllOwnedMines","getAllPylonsInfo","getAllSoundControllers","getAllUnitTraits","getAmmoCargo","getAnimAimPrecision","getAnimSpeedCoef","getArray","getArtilleryAmmo","getArtilleryComputerSettings","getArtilleryETA","getAssetDLCInfo","getAssignedCuratorLogic","getAssignedCuratorUnit","getAttackTarget","getAudioOptionVolumes","getBackpackCargo","getBleedingRemaining","getBurningValue","getCalculatePlayerVisibilityByFriendly","getCameraViewDirection","getCargoIndex","getCenterOfMass","getClientState","getClientStateNumber","getCompatiblePylonMagazines","getConnectedUAV","getContainerMaxLoad","getCursorObjectParams","getCustomAimCoef","getCustomSoundController","getCustomSoundControllerCount","getDammage","getDescription","getDir","getDirVisual","getDiverState","getDLCAssetsUsage","getDLCAssetsUsageByName","getDLCs","getDLCUsageTime","getEditorCamera","getEditorMode","getEditorObjectScope","getElevationOffset","getEnvSoundController","getFatigue","getFieldManualStartPage","getForcedFlagTexture","getFriend","getFSMVariable","getFuelCargo","getGraphValues","getGroupIcon","getGroupIconParams","getGroupIcons","getHideFrom","getHit","getHitIndex","getHitPointDamage","getItemCargo","getLighting","getLightingAt","getLoadedModsInfo","getMagazineCargo","getMarkerColor","getMarkerPos","getMarkerSize","getMarkerType","getMass","getMissionConfig","getMissionConfigValue","getMissionDLCs","getMissionLayerEntities","getMissionLayers","getMissionPath","getModelInfo","getMousePosition","getMusicPlayedTime","getNumber","getObjectArgument","getObjectChildren","getObjectDLC","getObjectFOV","getObjectMaterials","getObjectProxy","getObjectScale","getObjectTextures","getObjectType","getObjectViewDistance","getOrDefault","getOxygenRemaining","getPersonUsedDLCs","getPilotCameraDirection","getPilotCameraPosition","getPilotCameraRotation","getPilotCameraTarget","getPlateNumber","getPlayerChannel","getPlayerID","getPlayerScores","getPlayerUID","getPlayerUIDOld","getPlayerVoNVolume","getPos","getPosASL","getPosASLVisual","getPosASLW","getPosATL","getPosATLVisual","getPosVisual","getPosWorld","getPosWorldVisual","getPylonMagazines","getRelDir","getRelPos","getRemoteSensorsDisabled","getRepairCargo","getResolution","getRoadInfo","getRotorBrakeRTD","getShadowDistance","getShotParents","getSlingLoad","getSoundController","getSoundControllerResult","getSpeed","getStamina","getStatValue","getSteamFriendsServers","getSubtitleOptions","getSuppression","getTerrainGrid","getTerrainHeightASL","getText","getTextRaw","getTextWidth","getTotalDLCUsageTime","getTrimOffsetRTD","getUnitLoadout","getUnitTrait","getUserMFDText","getUserMFDValue","getVariable","getVehicleCargo","getVehicleTIPars","getWeaponCargo","getWeaponSway","getWingsOrientationRTD","getWingsPositionRTD","getWorld","getWPPos","glanceAt","globalChat","globalRadio","goggles","goto","group","groupChat","groupFromNetId","groupIconSelectable","groupIconsVisible","groupId","groupOwner","groupRadio","groupSelectedUnits","groupSelectUnit","gunner","gusts","halt","handgunItems","handgunMagazine","handgunWeapon","handsHit","hasInterface","hasPilotCamera","hasWeapon","hcAllGroups","hcGroupParams","hcLeader","hcRemoveAllGroups","hcRemoveGroup","hcSelected","hcSelectGroup","hcSetGroup","hcShowBar","hcShownBar","headgear","hideBehindScripted","hideBody","hideObject","hideObjectGlobal","hideSelection","hierarchyObjectsCount","hint","hintC","hintCadet","hintSilent","hmd","hostMission","htmlLoad","HUDMovementLevels","humidity","image","importAllGroups","importance","in","inArea","inAreaArray","incapacitatedState","inflame","inflamed","infoPanel","infoPanelComponentEnabled","infoPanelComponents","infoPanels","inGameUISetEventHandler","inheritsFrom","initAmbientLife","inPolygon","inputAction","inRangeOfArtillery","insert","insertEditorObject","intersect","is3DEN","is3DENMultiplayer","is3DENPreview","isAbleToBreathe","isActionMenuVisible","isAgent","isAimPrecisionEnabled","isArray","isAutoHoverOn","isAutonomous","isAutoStartUpEnabledRTD","isAutotest","isAutoTrimOnRTD","isBleeding","isBurning","isClass","isCollisionLightOn","isCopilotEnabled","isDamageAllowed","isDedicated","isDLCAvailable","isEngineOn","isEqualTo","isEqualType","isEqualTypeAll","isEqualTypeAny","isEqualTypeArray","isEqualTypeParams","isFilePatchingEnabled","isFinal","isFlashlightOn","isFlatEmpty","isForcedWalk","isFormationLeader","isGameFocused","isGamePaused","isGroupDeletedWhenEmpty","isHidden","isHideBehindScripted","isInRemainsCollector","isInstructorFigureEnabled","isIRLaserOn","isKeyActive","isKindOf","isLaserOn","isLightOn","isLocalized","isManualFire","isMarkedForCollection","isMultiplayer","isMultiplayerSolo","isNil","isNotEqualTo","isNull","isNumber","isObjectHidden","isObjectRTD","isOnRoad","isPiPEnabled","isPlayer","isRealTime","isRemoteExecuted","isRemoteExecutedJIP","isSensorTargetConfirmed","isServer","isShowing3DIcons","isSimpleObject","isSprintAllowed","isStaminaEnabled","isSteamMission","isStreamFriendlyUIEnabled","isStressDamageEnabled","isText","isTouchingGround","isTurnedOut","isTutHintsEnabled","isUAVConnectable","isUAVConnected","isUIContext","isUniformAllowed","isVehicleCargo","isVehicleRadarOn","isVehicleSensorEnabled","isWalking","isWeaponDeployed","isWeaponRested","itemCargo","items","itemsWithMagazines","join","joinAs","joinAsSilent","joinSilent","joinString","kbAddDatabase","kbAddDatabaseTargets","kbAddTopic","kbHasTopic","kbReact","kbRemoveTopic","kbTell","kbWasSaid","keyImage","keyName","keys","knowsAbout","land","landAt","landResult","language","laserTarget","lbAdd","lbClear","lbColor","lbColorRight","lbCurSel","lbData","lbDelete","lbIsSelected","lbPicture","lbPictureRight","lbSelection","lbSetColor","lbSetColorRight","lbSetCurSel","lbSetData","lbSetPicture","lbSetPictureColor","lbSetPictureColorDisabled","lbSetPictureColorSelected","lbSetPictureRight","lbSetPictureRightColor","lbSetPictureRightColorDisabled","lbSetPictureRightColorSelected","lbSetSelectColor","lbSetSelectColorRight","lbSetSelected","lbSetText","lbSetTextRight","lbSetTooltip","lbSetValue","lbSize","lbSort","lbSortByValue","lbText","lbTextRight","lbValue","leader","leaderboardDeInit","leaderboardGetRows","leaderboardInit","leaderboardRequestRowsFriends","leaderboardRequestRowsGlobal","leaderboardRequestRowsGlobalAroundUser","leaderboardsRequestUploadScore","leaderboardsRequestUploadScoreKeepBest","leaderboardState","leaveVehicle","libraryCredits","libraryDisclaimers","lifeState","lightAttachObject","lightDetachObject","lightIsOn","lightnings","limitSpeed","linearConversion","lineIntersects","lineIntersectsObjs","lineIntersectsSurfaces","lineIntersectsWith","linkItem","list","listObjects","listRemoteTargets","listVehicleSensors","ln","lnbAddArray","lnbAddColumn","lnbAddRow","lnbClear","lnbColor","lnbColorRight","lnbCurSelRow","lnbData","lnbDeleteColumn","lnbDeleteRow","lnbGetColumnsPosition","lnbPicture","lnbPictureRight","lnbSetColor","lnbSetColorRight","lnbSetColumnsPos","lnbSetCurSelRow","lnbSetData","lnbSetPicture","lnbSetPictureColor","lnbSetPictureColorRight","lnbSetPictureColorSelected","lnbSetPictureColorSelectedRight","lnbSetPictureRight","lnbSetText","lnbSetTextRight","lnbSetTooltip","lnbSetValue","lnbSize","lnbSort","lnbSortByValue","lnbText","lnbTextRight","lnbValue","load","loadAbs","loadBackpack","loadFile","loadGame","loadIdentity","loadMagazine","loadOverlay","loadStatus","loadUniform","loadVest","local","localize","localNamespace","locationPosition","lock","lockCameraTo","lockCargo","lockDriver","locked","lockedCargo","lockedDriver","lockedInventory","lockedTurret","lockIdentity","lockInventory","lockTurret","lockWP","log","logEntities","logNetwork","logNetworkTerminate","lookAt","lookAtPos","magazineCargo","magazines","magazinesAllTurrets","magazinesAmmo","magazinesAmmoCargo","magazinesAmmoFull","magazinesDetail","magazinesDetailBackpack","magazinesDetailUniform","magazinesDetailVest","magazinesTurret","magazineTurretAmmo","mapAnimAdd","mapAnimClear","mapAnimCommit","mapAnimDone","mapCenterOnCamera","mapGridPosition","markAsFinishedOnSteam","markerAlpha","markerBrush","markerChannel","markerColor","markerDir","markerPolyline","markerPos","markerShadow","markerShape","markerSize","markerText","markerType","matrixMultiply","matrixTranspose","max","members","menuAction","menuAdd","menuChecked","menuClear","menuCollapse","menuData","menuDelete","menuEnable","menuEnabled","menuExpand","menuHover","menuPicture","menuSetAction","menuSetCheck","menuSetData","menuSetPicture","menuSetShortcut","menuSetText","menuSetURL","menuSetValue","menuShortcut","menuShortcutText","menuSize","menuSort","menuText","menuURL","menuValue","merge","min","mineActive","mineDetectedBy","missileTarget","missileTargetPos","missionConfigFile","missionDifficulty","missionName","missionNameSource","missionNamespace","missionStart","missionVersion","mod","modelToWorld","modelToWorldVisual","modelToWorldVisualWorld","modelToWorldWorld","modParams","moonIntensity","moonPhase","morale","move","move3DENCamera","moveInAny","moveInCargo","moveInCommander","moveInDriver","moveInGunner","moveInTurret","moveObjectToEnd","moveOut","moveTarget","moveTime","moveTo","moveToCompleted","moveToFailed","musicVolume","name","namedProperties","nameSound","nearEntities","nearestBuilding","nearestLocation","nearestLocations","nearestLocationWithDubbing","nearestObject","nearestObjects","nearestTerrainObjects","nearObjects","nearObjectsReady","nearRoads","nearSupplies","nearTargets","needReload","netId","netObjNull","newOverlay","nextMenuItemIndex","nextWeatherChange","nMenuItems","not","numberOfEnginesRTD","numberToDate","object","objectCurators","objectFromNetId","objectParent","objStatus","onBriefingGear","onBriefingGroup","onBriefingNotes","onBriefingPlan","onBriefingTeamSwitch","onCommandModeChanged","onDoubleClick","onEachFrame","onGroupIconClick","onGroupIconOverEnter","onGroupIconOverLeave","onHCGroupSelectionChanged","onMapSingleClick","onPlayerConnected","onPlayerDisconnected","onPreloadFinished","onPreloadStarted","onShowNewObject","onTeamSwitch","openCuratorInterface","openDLCPage","openDSInterface","openGPS","openMap","openSteamApp","openYoutubeVideo","or","orderGetIn","overcast","overcastForecast","owner","param","params","parseNumber","parseSimpleArray","parseText","parsingNamespace","particlesQuality","periscopeElevation","pickWeaponPool","pitch","pixelGrid","pixelGridBase","pixelGridNoUIScale","pixelH","pixelW","playableSlotsNumber","playableUnits","playAction","playActionNow","player","playerRespawnTime","playerSide","playersNumber","playGesture","playMission","playMove","playMoveNow","playMusic","playScriptedMission","playSound","playSound3D","position","positionCameraToWorld","posScreenToWorld","posWorldToScreen","ppEffectAdjust","ppEffectCommit","ppEffectCommitted","ppEffectCreate","ppEffectDestroy","ppEffectEnable","ppEffectEnabled","ppEffectForceInNVG","precision","preloadCamera","preloadObject","preloadSound","preloadTitleObj","preloadTitleRsc","preprocessFile","preprocessFileLineNumbers","primaryWeapon","primaryWeaponItems","primaryWeaponMagazine","priority","processDiaryLink","processInitCommands","productVersion","profileName","profileNamespace","profileNameSteam","progressLoadingScreen","progressPosition","progressSetPosition","publicVariable","publicVariableClient","publicVariableServer","pushBack","pushBackUnique","putWeaponPool","queryItemsPool","queryMagazinePool","queryWeaponPool","rad","radioChannelAdd","radioChannelCreate","radioChannelInfo","radioChannelRemove","radioChannelSetCallSign","radioChannelSetLabel","radioVolume","rain","rainbow","random","rank","rankId","rating","rectangular","registeredTasks","registerTask","reload","reloadEnabled","remoteControl","remoteExec","remoteExecCall","remoteExecutedOwner","remove3DENConnection","remove3DENEventHandler","remove3DENLayer","removeAction","removeAll3DENEventHandlers","removeAllActions","removeAllAssignedItems","removeAllBinocularItems","removeAllContainers","removeAllCuratorAddons","removeAllCuratorCameraAreas","removeAllCuratorEditingAreas","removeAllEventHandlers","removeAllHandgunItems","removeAllItems","removeAllItemsWithMagazines","removeAllMissionEventHandlers","removeAllMPEventHandlers","removeAllMusicEventHandlers","removeAllOwnedMines","removeAllPrimaryWeaponItems","removeAllSecondaryWeaponItems","removeAllWeapons","removeBackpack","removeBackpackGlobal","removeBinocularItem","removeClothing","removeCuratorAddons","removeCuratorCameraArea","removeCuratorEditableObjects","removeCuratorEditingArea","removeDiaryRecord","removeDiarySubject","removeDrawIcon","removeDrawLinks","removeEventHandler","removeFromRemainsCollector","removeGoggles","removeGroupIcon","removeHandgunItem","removeHeadgear","removeItem","removeItemFromBackpack","removeItemFromUniform","removeItemFromVest","removeItems","removeMagazine","removeMagazineGlobal","removeMagazines","removeMagazinesTurret","removeMagazineTurret","removeMenuItem","removeMissionEventHandler","removeMPEventHandler","removeMusicEventHandler","removeOwnedMine","removePrimaryWeaponItem","removeSecondaryWeaponItem","removeSimpleTask","removeSwitchableUnit","removeTeamMember","removeUniform","removeVest","removeWeapon","removeWeaponAttachmentCargo","removeWeaponCargo","removeWeaponGlobal","removeWeaponTurret","reportRemoteTarget","requiredVersion","resetCamShake","resetSubgroupDirection","resize","resources","respawnVehicle","restartEditorCamera","reveal","revealMine","reverse","reversedMouseY","roadAt","roadsConnectedTo","roleDescription","ropeAttachedObjects","ropeAttachedTo","ropeAttachEnabled","ropeAttachTo","ropeCreate","ropeCut","ropeDestroy","ropeDetach","ropeEndPosition","ropeLength","ropes","ropeSegments","ropeSetCargoMass","ropeUnwind","ropeUnwound","rotorsForcesRTD","rotorsRpmRTD","round","runInitScript","safeZoneH","safeZoneW","safeZoneWAbs","safeZoneX","safeZoneXAbs","safeZoneY","save3DENInventory","saveGame","saveIdentity","saveJoysticks","saveOverlay","saveProfileNamespace","saveStatus","saveVar","savingEnabled","say","say2D","say3D","scopeName","score","scoreSide","screenshot","screenToWorld","scriptDone","scriptName","scudState","secondaryWeapon","secondaryWeaponItems","secondaryWeaponMagazine","select","selectBestPlaces","selectDiarySubject","selectedEditorObjects","selectEditorObject","selectionNames","selectionPosition","selectLeader","selectMax","selectMin","selectNoPlayer","selectPlayer","selectRandom","selectRandomWeighted","selectWeapon","selectWeaponTurret","sendAUMessage","sendSimpleCommand","sendTask","sendTaskResult","sendUDPMessage","serverCommand","serverCommandAvailable","serverCommandExecutable","serverName","serverTime","set","set3DENAttribute","set3DENAttributes","set3DENGrid","set3DENIconsVisible","set3DENLayer","set3DENLinesVisible","set3DENLogicType","set3DENMissionAttribute","set3DENMissionAttributes","set3DENModelsVisible","set3DENObjectType","set3DENSelected","setAccTime","setActualCollectiveRTD","setAirplaneThrottle","setAirportSide","setAmmo","setAmmoCargo","setAmmoOnPylon","setAnimSpeedCoef","setAperture","setApertureNew","setAPURTD","setArmoryPoints","setAttributes","setAutonomous","setBatteryChargeRTD","setBatteryRTD","setBehaviour","setBehaviourStrong","setBleedingRemaining","setBrakesRTD","setCameraEffect","setCameraInterest","setCamShakeDefParams","setCamShakeParams","setCamUseTI","setCaptive","setCenterOfMass","setCollisionLight","setCombatBehaviour","setCombatMode","setCompassOscillation","setConvoySeparation","setCuratorCameraAreaCeiling","setCuratorCoef","setCuratorEditingAreaType","setCuratorWaypointCost","setCurrentChannel","setCurrentTask","setCurrentWaypoint","setCustomAimCoef","setCustomMissionData","setCustomSoundController","setCustomWeightRTD","setDamage","setDammage","setDate","setDebriefingText","setDefaultCamera","setDestination","setDetailMapBlendPars","setDiaryRecordText","setDiarySubjectPicture","setDir","setDirection","setDrawIcon","setDriveOnPath","setDropInterval","setDynamicSimulationDistance","setDynamicSimulationDistanceCoef","setEditorMode","setEditorObjectScope","setEffectCondition","setEffectiveCommander","setEngineRPMRTD","setEngineRpmRTD","setFace","setFaceAnimation","setFatigue","setFeatureType","setFlagAnimationPhase","setFlagOwner","setFlagSide","setFlagTexture","setFog","setForceGeneratorRTD","setFormation","setFormationTask","setFormDir","setFriend","setFromEditor","setFSMVariable","setFuel","setFuelCargo","setGroupIcon","setGroupIconParams","setGroupIconsSelectable","setGroupIconsVisible","setGroupId","setGroupIdGlobal","setGroupOwner","setGusts","setHideBehind","setHit","setHitIndex","setHitPointDamage","setHorizonParallaxCoef","setHUDMovementLevels","setIdentity","setImportance","setInfoPanel","setLeader","setLightAmbient","setLightAttenuation","setLightBrightness","setLightColor","setLightDayLight","setLightFlareMaxDistance","setLightFlareSize","setLightIntensity","setLightnings","setLightUseFlare","setLocalWindParams","setMagazineTurretAmmo","setMarkerAlpha","setMarkerAlphaLocal","setMarkerBrush","setMarkerBrushLocal","setMarkerColor","setMarkerColorLocal","setMarkerDir","setMarkerDirLocal","setMarkerPolyline","setMarkerPolylineLocal","setMarkerPos","setMarkerPosLocal","setMarkerShadow","setMarkerShadowLocal","setMarkerShape","setMarkerShapeLocal","setMarkerSize","setMarkerSizeLocal","setMarkerText","setMarkerTextLocal","setMarkerType","setMarkerTypeLocal","setMass","setMimic","setMissileTarget","setMissileTargetPos","setMousePosition","setMusicEffect","setMusicEventHandler","setName","setNameSound","setObjectArguments","setObjectMaterial","setObjectMaterialGlobal","setObjectProxy","setObjectScale","setObjectTexture","setObjectTextureGlobal","setObjectViewDistance","setOvercast","setOwner","setOxygenRemaining","setParticleCircle","setParticleClass","setParticleFire","setParticleParams","setParticleRandom","setPilotCameraDirection","setPilotCameraRotation","setPilotCameraTarget","setPilotLight","setPiPEffect","setPitch","setPlateNumber","setPlayable","setPlayerRespawnTime","setPlayerVoNVolume","setPos","setPosASL","setPosASL2","setPosASLW","setPosATL","setPosition","setPosWorld","setPylonLoadout","setPylonsPriority","setRadioMsg","setRain","setRainbow","setRandomLip","setRank","setRectangular","setRepairCargo","setRotorBrakeRTD","setShadowDistance","setShotParents","setSide","setSimpleTaskAlwaysVisible","setSimpleTaskCustomData","setSimpleTaskDescription","setSimpleTaskDestination","setSimpleTaskTarget","setSimpleTaskType","setSimulWeatherLayers","setSize","setSkill","setSlingLoad","setSoundEffect","setSpeaker","setSpeech","setSpeedMode","setStamina","setStaminaScheme","setStarterRTD","setStatValue","setSuppression","setSystemOfUnits","setTargetAge","setTaskMarkerOffset","setTaskResult","setTaskState","setTerrainGrid","setText","setThrottleRTD","setTimeMultiplier","setTitleEffect","setToneMapping","setToneMappingParams","setTrafficDensity","setTrafficDistance","setTrafficGap","setTrafficSpeed","setTriggerActivation","setTriggerArea","setTriggerInterval","setTriggerStatements","setTriggerText","setTriggerTimeout","setTriggerType","setType","setUnconscious","setUnitAbility","setUnitCombatMode","setUnitLoadout","setUnitPos","setUnitPosWeak","setUnitRank","setUnitRecoilCoefficient","setUnitTrait","setUnloadInCombat","setUserActionText","setUserMFDText","setUserMFDValue","setVariable","setVectorDir","setVectorDirAndUp","setVectorUp","setVehicleAmmo","setVehicleAmmoDef","setVehicleArmor","setVehicleCargo","setVehicleId","setVehicleInit","setVehicleLock","setVehiclePosition","setVehicleRadar","setVehicleReceiveRemoteTargets","setVehicleReportOwnPosition","setVehicleReportRemoteTargets","setVehicleTIPars","setVehicleVarName","setVelocity","setVelocityModelSpace","setVelocityTransformation","setViewDistance","setVisibleIfTreeCollapsed","setWantedRPMRTD","setWaves","setWaypointBehaviour","setWaypointCombatMode","setWaypointCompletionRadius","setWaypointDescription","setWaypointForceBehaviour","setWaypointFormation","setWaypointHousePosition","setWaypointLoiterAltitude","setWaypointLoiterRadius","setWaypointLoiterType","setWaypointName","setWaypointPosition","setWaypointScript","setWaypointSpeed","setWaypointStatements","setWaypointTimeout","setWaypointType","setWaypointVisible","setWeaponReloadingTime","setWeaponZeroing","setWind","setWindDir","setWindForce","setWindStr","setWingForceScaleRTD","setWPPos","show3DIcons","showChat","showCinemaBorder","showCommandingMenu","showCompass","showCuratorCompass","showGPS","showHUD","showLegend","showMap","shownArtilleryComputer","shownChat","shownCompass","shownCuratorCompass","showNewEditorObject","shownGPS","shownHUD","shownMap","shownPad","shownRadio","shownScoretable","shownUAVFeed","shownWarrant","shownWatch","showPad","showRadio","showScoretable","showSubtitles","showUAVFeed","showWarrant","showWatch","showWaypoint","showWaypoints","side","sideChat","sideEmpty","sideEnemy","sideFriendly","sideRadio","simpleTasks","simulationEnabled","simulCloudDensity","simulCloudOcclusion","simulInClouds","simulSetHumidity","simulWeatherSync","sin","size","sizeOf","skill","skillFinal","skipTime","sleep","sliderPosition","sliderRange","sliderSetPosition","sliderSetRange","sliderSetSpeed","sliderSpeed","slingLoadAssistantShown","soldierMagazines","someAmmo","sort","soundVolume","spawn","speaker","speechVolume","speed","speedMode","splitString","sqrt","squadParams","stance","startLoadingScreen","step","stop","stopEngineRTD","stopped","str","sunOrMoon","supportInfo","suppressFor","surfaceIsWater","surfaceNormal","surfaceTexture","surfaceType","swimInDepth","switchableUnits","switchAction","switchCamera","switchGesture","switchLight","switchMove","synchronizedObjects","synchronizedTriggers","synchronizedWaypoints","synchronizeObjectsAdd","synchronizeObjectsRemove","synchronizeTrigger","synchronizeWaypoint","systemChat","systemOfUnits","systemTime","systemTimeUTC","tan","targetKnowledge","targets","targetsAggregate","targetsQuery","taskAlwaysVisible","taskChildren","taskCompleted","taskCustomData","taskDescription","taskDestination","taskHint","taskMarkerOffset","taskName","taskParent","taskResult","taskState","taskType","teamMember","teamName","teams","teamSwitch","teamSwitchEnabled","teamType","terminate","terrainIntersect","terrainIntersectASL","terrainIntersectAtASL","text","textLog","textLogFormat","tg","throttleRTD","time","timeMultiplier","titleCut","titleFadeOut","titleObj","titleRsc","titleText","toArray","toFixed","toLower","toLowerANSI","toString","toUpper","toUpperANSI","triggerActivated","triggerActivation","triggerAmmo","triggerArea","triggerAttachedVehicle","triggerAttachObject","triggerAttachVehicle","triggerDynamicSimulation","triggerInterval","triggerStatements","triggerText","triggerTimeout","triggerTimeoutCurrent","triggerType","trim","turretLocal","turretOwner","turretUnit","tvAdd","tvClear","tvCollapse","tvCollapseAll","tvCount","tvCurSel","tvData","tvDelete","tvExpand","tvExpandAll","tvIsSelected","tvPicture","tvPictureRight","tvSelection","tvSetColor","tvSetCurSel","tvSetData","tvSetPicture","tvSetPictureColor","tvSetPictureColorDisabled","tvSetPictureColorSelected","tvSetPictureRight","tvSetPictureRightColor","tvSetPictureRightColorDisabled","tvSetPictureRightColorSelected","tvSetSelectColor","tvSetSelected","tvSetText","tvSetTooltip","tvSetValue","tvSort","tvSortAll","tvSortByValue","tvSortByValueAll","tvText","tvTooltip","tvValue","type","typeName","typeOf","UAVControl","uiNamespace","uiSleep","unassignCurator","unassignItem","unassignTeam","unassignVehicle","underwater","uniform","uniformContainer","uniformItems","uniformMagazines","unitAddons","unitAimPosition","unitAimPositionVisual","unitBackpack","unitCombatMode","unitIsUAV","unitPos","unitReady","unitRecoilCoefficient","units","unitsBelowHeight","unitTurret","unlinkItem","unlockAchievement","unregisterTask","updateDrawIcon","updateMenuItem","updateObjectTree","useAIOperMapObstructionTest","useAISteeringComponent","useAudioTimeForMoves","userInputDisabled","vectorAdd","vectorCos","vectorCrossProduct","vectorDiff","vectorDir","vectorDirVisual","vectorDistance","vectorDistanceSqr","vectorDotProduct","vectorFromTo","vectorLinearConversion","vectorMagnitude","vectorMagnitudeSqr","vectorModelToWorld","vectorModelToWorldVisual","vectorMultiply","vectorNormalized","vectorUp","vectorUpVisual","vectorWorldToModel","vectorWorldToModelVisual","vehicle","vehicleCargoEnabled","vehicleChat","vehicleMoveInfo","vehicleRadio","vehicleReceiveRemoteTargets","vehicleReportOwnPosition","vehicleReportRemoteTargets","vehicles","vehicleVarName","velocity","velocityModelSpace","verifySignature","vest","vestContainer","vestItems","vestMagazines","viewDistance","visibleCompass","visibleGPS","visibleMap","visiblePosition","visiblePositionASL","visibleScoretable","visibleWatch","waves","waypointAttachedObject","waypointAttachedVehicle","waypointAttachObject","waypointAttachVehicle","waypointBehaviour","waypointCombatMode","waypointCompletionRadius","waypointDescription","waypointForceBehaviour","waypointFormation","waypointHousePosition","waypointLoiterAltitude","waypointLoiterRadius","waypointLoiterType","waypointName","waypointPosition","waypoints","waypointScript","waypointsEnabledUAV","waypointShow","waypointSpeed","waypointStatements","waypointTimeout","waypointTimeoutCurrent","waypointType","waypointVisible","weaponAccessories","weaponAccessoriesCargo","weaponCargo","weaponDirection","weaponInertia","weaponLowered","weapons","weaponsItems","weaponsItemsCargo","weaponState","weaponsTurret","weightRTD","WFSideText","wind","windDir","windRTD","windStr","wingsForcesRTD","worldName","worldSize","worldToModel","worldToModelVisual","worldToScreen"],
+literal:["blufor","civilian","configNull","controlNull","displayNull","east","endl","false","grpNull","independent","lineBreak","locationNull","nil","objNull","opfor","pi","resistance","scriptNull","sideAmbientLife","sideEmpty","sideLogic","sideUnknown","taskNull","teamMemberNull","true","west"]
+},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.NUMBER_MODE,{
+className:"variable",begin:/\b_+[a-zA-Z]\w*/},{className:"title",
+begin:/[a-zA-Z]\w+_fnc_\w+/},t,a],illegal:/#|^\$ /}}})()
+;hljs.registerLanguage("sqf",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/sql.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/sql.min.js
new file mode 100644
index 0000000..b25057b
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/sql.min.js
@@ -0,0 +1,17 @@
+/*! `sql` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const r=e.regex,t=e.COMMENT("--","$"),n=["true","false","unknown"],a=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],i=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],s=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],o=i,c=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!i.includes(e))),l={
+begin:r.concat(/\b/,r.either(...o),/\s*\(/),relevance:0,keywords:{built_in:o}}
+;return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{
+$pattern:/\b[\w\.]+/,keyword:((e,{exceptions:r,when:t}={})=>{const n=t
+;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e))
+})(c,{when:e=>e.length<3}),literal:n,type:a,
+built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"]
+},contains:[{begin:r.either(...s),relevance:0,keywords:{$pattern:/[\w\.]+/,
+keyword:c.concat(s),literal:n,type:a}},{className:"type",
+begin:r.either("double precision","large object","with timezone","without timezone")
+},l,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{
+begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{
+begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,{className:"operator",
+begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})()
+;hljs.registerLanguage("sql",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/stan.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/stan.min.js
new file mode 100644
index 0000000..72db8c0
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/stan.min.js
@@ -0,0 +1,17 @@
+/*! `stan` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var _=(()=>{"use strict";return _=>{const e=_.COMMENT(/\/\*/,/\*\//,{
+relevance:0,contains:[{className:"doctag",match:/@(return|param)/}]}),l={
+className:"meta",begin:/^#include\b/,end:/$/,relevance:0,keywords:"include",
+contains:[{match:/[a-z][a-z-.]+/,className:"string"},_.C_LINE_COMMENT_MODE]}
+;return{name:"Stan",aliases:["stanfuncs"],keywords:{$pattern:_.IDENT_RE,
+title:["functions","model","data","parameters","quantities","transformed","generated"],
+keyword:["for","in","if","else","while","break","continue","return"].concat(["int","real","vector","ordered","positive_ordered","simplex","unit_vector","row_vector","matrix","cholesky_factor_corr|10","cholesky_factor_cov|10","corr_matrix|10","cov_matrix|10","void"]).concat(["print","reject","increment_log_prob|10","integrate_ode|10","integrate_ode_rk45|10","integrate_ode_bdf|10","algebra_solver"]),
+built_in:["Phi","Phi_approx","abs","acos","acosh","algebra_solver","append_array","append_col","append_row","asin","asinh","atan","atan2","atanh","bernoulli_cdf","bernoulli_lccdf","bernoulli_lcdf","bernoulli_logit_lpmf","bernoulli_logit_rng","bernoulli_lpmf","bernoulli_rng","bessel_first_kind","bessel_second_kind","beta_binomial_cdf","beta_binomial_lccdf","beta_binomial_lcdf","beta_binomial_lpmf","beta_binomial_rng","beta_cdf","beta_lccdf","beta_lcdf","beta_lpdf","beta_rng","binary_log_loss","binomial_cdf","binomial_coefficient_log","binomial_lccdf","binomial_lcdf","binomial_logit_lpmf","binomial_lpmf","binomial_rng","block","categorical_logit_lpmf","categorical_logit_rng","categorical_lpmf","categorical_rng","cauchy_cdf","cauchy_lccdf","cauchy_lcdf","cauchy_lpdf","cauchy_rng","cbrt","ceil","chi_square_cdf","chi_square_lccdf","chi_square_lcdf","chi_square_lpdf","chi_square_rng","cholesky_decompose","choose","col","cols","columns_dot_product","columns_dot_self","cos","cosh","cov_exp_quad","crossprod","csr_extract_u","csr_extract_v","csr_extract_w","csr_matrix_times_vector","csr_to_dense_matrix","cumulative_sum","determinant","diag_matrix","diag_post_multiply","diag_pre_multiply","diagonal","digamma","dims","dirichlet_lpdf","dirichlet_rng","distance","dot_product","dot_self","double_exponential_cdf","double_exponential_lccdf","double_exponential_lcdf","double_exponential_lpdf","double_exponential_rng","e","eigenvalues_sym","eigenvectors_sym","erf","erfc","exp","exp2","exp_mod_normal_cdf","exp_mod_normal_lccdf","exp_mod_normal_lcdf","exp_mod_normal_lpdf","exp_mod_normal_rng","expm1","exponential_cdf","exponential_lccdf","exponential_lcdf","exponential_lpdf","exponential_rng","fabs","falling_factorial","fdim","floor","fma","fmax","fmin","fmod","frechet_cdf","frechet_lccdf","frechet_lcdf","frechet_lpdf","frechet_rng","gamma_cdf","gamma_lccdf","gamma_lcdf","gamma_lpdf","gamma_p","gamma_q","gamma_rng","gaussian_dlm_obs_lpdf","get_lp","gumbel_cdf","gumbel_lccdf","gumbel_lcdf","gumbel_lpdf","gumbel_rng","head","hypergeometric_lpmf","hypergeometric_rng","hypot","inc_beta","int_step","integrate_ode","integrate_ode_bdf","integrate_ode_rk45","inv","inv_Phi","inv_chi_square_cdf","inv_chi_square_lccdf","inv_chi_square_lcdf","inv_chi_square_lpdf","inv_chi_square_rng","inv_cloglog","inv_gamma_cdf","inv_gamma_lccdf","inv_gamma_lcdf","inv_gamma_lpdf","inv_gamma_rng","inv_logit","inv_sqrt","inv_square","inv_wishart_lpdf","inv_wishart_rng","inverse","inverse_spd","is_inf","is_nan","lbeta","lchoose","lgamma","lkj_corr_cholesky_lpdf","lkj_corr_cholesky_rng","lkj_corr_lpdf","lkj_corr_rng","lmgamma","lmultiply","log","log10","log1m","log1m_exp","log1m_inv_logit","log1p","log1p_exp","log2","log_determinant","log_diff_exp","log_falling_factorial","log_inv_logit","log_mix","log_rising_factorial","log_softmax","log_sum_exp","logistic_cdf","logistic_lccdf","logistic_lcdf","logistic_lpdf","logistic_rng","logit","lognormal_cdf","lognormal_lccdf","lognormal_lcdf","lognormal_lpdf","lognormal_rng","machine_precision","matrix_exp","max","mdivide_left_spd","mdivide_left_tri_low","mdivide_right_spd","mdivide_right_tri_low","mean","min","modified_bessel_first_kind","modified_bessel_second_kind","multi_gp_cholesky_lpdf","multi_gp_lpdf","multi_normal_cholesky_lpdf","multi_normal_cholesky_rng","multi_normal_lpdf","multi_normal_prec_lpdf","multi_normal_rng","multi_student_t_lpdf","multi_student_t_rng","multinomial_lpmf","multinomial_rng","multiply_log","multiply_lower_tri_self_transpose","neg_binomial_2_cdf","neg_binomial_2_lccdf","neg_binomial_2_lcdf","neg_binomial_2_log_lpmf","neg_binomial_2_log_rng","neg_binomial_2_lpmf","neg_binomial_2_rng","neg_binomial_cdf","neg_binomial_lccdf","neg_binomial_lcdf","neg_binomial_lpmf","neg_binomial_rng","negative_infinity","normal_cdf","normal_lccdf","normal_lcdf","normal_lpdf","normal_rng","not_a_number","num_elements","ordered_logistic_lpmf","ordered_logistic_rng","owens_t","pareto_cdf","pareto_lccdf","pareto_lcdf","pareto_lpdf","pareto_rng","pareto_type_2_cdf","pareto_type_2_lccdf","pareto_type_2_lcdf","pareto_type_2_lpdf","pareto_type_2_rng","pi","poisson_cdf","poisson_lccdf","poisson_lcdf","poisson_log_lpmf","poisson_log_rng","poisson_lpmf","poisson_rng","positive_infinity","pow","print","prod","qr_Q","qr_R","quad_form","quad_form_diag","quad_form_sym","rank","rayleigh_cdf","rayleigh_lccdf","rayleigh_lcdf","rayleigh_lpdf","rayleigh_rng","reject","rep_array","rep_matrix","rep_row_vector","rep_vector","rising_factorial","round","row","rows","rows_dot_product","rows_dot_self","scaled_inv_chi_square_cdf","scaled_inv_chi_square_lccdf","scaled_inv_chi_square_lcdf","scaled_inv_chi_square_lpdf","scaled_inv_chi_square_rng","sd","segment","sin","singular_values","sinh","size","skew_normal_cdf","skew_normal_lccdf","skew_normal_lcdf","skew_normal_lpdf","skew_normal_rng","softmax","sort_asc","sort_desc","sort_indices_asc","sort_indices_desc","sqrt","sqrt2","square","squared_distance","step","student_t_cdf","student_t_lccdf","student_t_lcdf","student_t_lpdf","student_t_rng","sub_col","sub_row","sum","tail","tan","tanh","target","tcrossprod","tgamma","to_array_1d","to_array_2d","to_matrix","to_row_vector","to_vector","trace","trace_gen_quad_form","trace_quad_form","trigamma","trunc","uniform_cdf","uniform_lccdf","uniform_lcdf","uniform_lpdf","uniform_rng","variance","von_mises_lpdf","von_mises_rng","weibull_cdf","weibull_lccdf","weibull_lcdf","weibull_lpdf","weibull_rng","wiener_lpdf","wishart_lpdf","wishart_rng"]
+},contains:[_.C_LINE_COMMENT_MODE,l,_.HASH_COMMENT_MODE,e,{
+begin:/<\s*lower\s*=/,keywords:"lower"},{begin:/[<,]\s*upper\s*=/,
+keywords:"upper"},{className:"keyword",begin:/\btarget\s*\+=/},{
+begin:"~\\s*("+_.IDENT_RE+")\\s*\\(",
+keywords:["bernoulli","bernoulli_logit","beta","beta_binomial","binomial","binomial_logit","categorical","categorical_logit","cauchy","chi_square","dirichlet","double_exponential","exp_mod_normal","exponential","frechet","gamma","gaussian_dlm_obs","gumbel","hypergeometric","inv_chi_square","inv_gamma","inv_wishart","lkj_corr","lkj_corr_cholesky","logistic","lognormal","multi_gp","multi_gp_cholesky","multi_normal","multi_normal_cholesky","multi_normal_prec","multi_student_t","multinomial","neg_binomial","neg_binomial_2","neg_binomial_2_log","normal","ordered_logistic","pareto","pareto_type_2","poisson","poisson_log","rayleigh","scaled_inv_chi_square","skew_normal","student_t","uniform","von_mises","weibull","wiener","wishart"]
+},{className:"number",variants:[{begin:/\b\d+(?:\.\d*)?(?:[eE][+-]?\d+)?/},{
+begin:/\.\d+(?:[eE][+-]?\d+)?\b/}],relevance:0},{className:"string",begin:'"',
+end:'"',relevance:0}]}}})();hljs.registerLanguage("stan",_)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/stata.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/stata.min.js
new file mode 100644
index 0000000..f1bd759
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/stata.min.js
@@ -0,0 +1,11 @@
+/*! `stata` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Stata",aliases:["do","ado"],
+case_insensitive:!0,
+keywords:"if else in foreach for forv forva forval forvalu forvalue forvalues by bys bysort xi quietly qui capture about ac ac_7 acprplot acprplot_7 adjust ado adopath adoupdate alpha ameans an ano anov anova anova_estat anova_terms anovadef aorder ap app appe appen append arch arch_dr arch_estat arch_p archlm areg areg_p args arima arima_dr arima_estat arima_p as asmprobit asmprobit_estat asmprobit_lf asmprobit_mfx__dlg asmprobit_p ass asse asser assert avplot avplot_7 avplots avplots_7 bcskew0 bgodfrey bias binreg bip0_lf biplot bipp_lf bipr_lf bipr_p biprobit bitest bitesti bitowt blogit bmemsize boot bootsamp bootstrap bootstrap_8 boxco_l boxco_p boxcox boxcox_6 boxcox_p bprobit br break brier bro brow brows browse brr brrstat bs bs_7 bsampl_w bsample bsample_7 bsqreg bstat bstat_7 bstat_8 bstrap bstrap_7 bubble bubbleplot ca ca_estat ca_p cabiplot camat canon canon_8 canon_8_p canon_estat canon_p cap caprojection capt captu captur capture cat cc cchart cchart_7 cci cd censobs_table centile cf char chdir checkdlgfiles checkestimationsample checkhlpfiles checksum chelp ci cii cl class classutil clear cli clis clist clo clog clog_lf clog_p clogi clogi_sw clogit clogit_lf clogit_p clogitp clogl_sw cloglog clonevar clslistarray cluster cluster_measures cluster_stop cluster_tree cluster_tree_8 clustermat cmdlog cnr cnre cnreg cnreg_p cnreg_sw cnsreg codebook collaps4 collapse colormult_nb colormult_nw compare compress conf confi confir confirm conren cons const constr constra constrai constrain constraint continue contract copy copyright copysource cor corc corr corr2data corr_anti corr_kmo corr_smc corre correl correla correlat correlate corrgram cou coun count cox cox_p cox_sw coxbase coxhaz coxvar cprplot cprplot_7 crc cret cretu cretur creturn cross cs cscript cscript_log csi ct ct_is ctset ctst_5 ctst_st cttost cumsp cumsp_7 cumul cusum cusum_7 cutil d|0 datasig datasign datasigna datasignat datasignatu datasignatur datasignature datetof db dbeta de dec deco decod decode deff des desc descr descri describ describe destring dfbeta dfgls dfuller di di_g dir dirstats dis discard disp disp_res disp_s displ displa display distinct do doe doed doedi doedit dotplot dotplot_7 dprobit drawnorm drop ds ds_util dstdize duplicates durbina dwstat dydx e|0 ed edi edit egen eivreg emdef en enc enco encod encode eq erase ereg ereg_lf ereg_p ereg_sw ereghet ereghet_glf ereghet_glf_sh ereghet_gp ereghet_ilf ereghet_ilf_sh ereghet_ip eret eretu eretur ereturn err erro error esize est est_cfexist est_cfname est_clickable est_expand est_hold est_table est_unhold est_unholdok estat estat_default estat_summ estat_vce_only esti estimates etodow etof etomdy ex exi exit expand expandcl fac fact facto factor factor_estat factor_p factor_pca_rotated factor_rotate factormat fcast fcast_compute fcast_graph fdades fdadesc fdadescr fdadescri fdadescrib fdadescribe fdasav fdasave fdause fh_st file open file read file close file filefilter fillin find_hlp_file findfile findit findit_7 fit fl fli flis flist for5_0 forest forestplot form forma format fpredict frac_154 frac_adj frac_chk frac_cox frac_ddp frac_dis frac_dv frac_in frac_mun frac_pp frac_pq frac_pv frac_wgt frac_xo fracgen fracplot fracplot_7 fracpoly fracpred fron_ex fron_hn fron_p fron_tn fron_tn2 frontier ftodate ftoe ftomdy ftowdate funnel funnelplot g|0 gamhet_glf gamhet_gp gamhet_ilf gamhet_ip gamma gamma_d2 gamma_p gamma_sw gammahet gdi_hexagon gdi_spokes ge gen gene gener genera generat generate genrank genstd genvmean gettoken gl gladder gladder_7 glim_l01 glim_l02 glim_l03 glim_l04 glim_l05 glim_l06 glim_l07 glim_l08 glim_l09 glim_l10 glim_l11 glim_l12 glim_lf glim_mu glim_nw1 glim_nw2 glim_nw3 glim_p glim_v1 glim_v2 glim_v3 glim_v4 glim_v5 glim_v6 glim_v7 glm glm_6 glm_p glm_sw glmpred glo glob globa global glogit glogit_8 glogit_p gmeans gnbre_lf gnbreg gnbreg_5 gnbreg_p gomp_lf gompe_sw gomper_p gompertz gompertzhet gomphet_glf gomphet_glf_sh gomphet_gp gomphet_ilf gomphet_ilf_sh gomphet_ip gphdot gphpen gphprint gprefs gprobi_p gprobit gprobit_8 gr gr7 gr_copy gr_current gr_db gr_describe gr_dir gr_draw gr_draw_replay gr_drop gr_edit gr_editviewopts gr_example gr_example2 gr_export gr_print gr_qscheme gr_query gr_read gr_rename gr_replay gr_save gr_set gr_setscheme gr_table gr_undo gr_use graph graph7 grebar greigen greigen_7 greigen_8 grmeanby grmeanby_7 gs_fileinfo gs_filetype gs_graphinfo gs_stat gsort gwood h|0 hadimvo hareg hausman haver he heck_d2 heckma_p heckman heckp_lf heckpr_p heckprob hel help hereg hetpr_lf hetpr_p hetprob hettest hexdump hilite hist hist_7 histogram hlogit hlu hmeans hotel hotelling hprobit hreg hsearch icd9 icd9_ff icd9p iis impute imtest inbase include inf infi infil infile infix inp inpu input ins insheet insp inspe inspec inspect integ inten intreg intreg_7 intreg_p intrg2_ll intrg_ll intrg_ll2 ipolate iqreg ir irf irf_create irfm iri is_svy is_svysum isid istdize ivprob_1_lf ivprob_lf ivprobit ivprobit_p ivreg ivreg_footnote ivtob_1_lf ivtob_lf ivtobit ivtobit_p jackknife jacknife jknife jknife_6 jknife_8 jkstat joinby kalarma1 kap kap_3 kapmeier kappa kapwgt kdensity kdensity_7 keep ksm ksmirnov ktau kwallis l|0 la lab labbe labbeplot labe label labelbook ladder levels levelsof leverage lfit lfit_p li lincom line linktest lis list lloghet_glf lloghet_glf_sh lloghet_gp lloghet_ilf lloghet_ilf_sh lloghet_ip llogi_sw llogis_p llogist llogistic llogistichet lnorm_lf lnorm_sw lnorma_p lnormal lnormalhet lnormhet_glf lnormhet_glf_sh lnormhet_gp lnormhet_ilf lnormhet_ilf_sh lnormhet_ip lnskew0 loadingplot loc loca local log logi logis_lf logistic logistic_p logit logit_estat logit_p loglogs logrank loneway lookfor lookup lowess lowess_7 lpredict lrecomp lroc lroc_7 lrtest ls lsens lsens_7 lsens_x lstat ltable ltable_7 ltriang lv lvr2plot lvr2plot_7 m|0 ma mac macr macro makecns man manova manova_estat manova_p manovatest mantel mark markin markout marksample mat mat_capp mat_order mat_put_rr mat_rapp mata mata_clear mata_describe mata_drop mata_matdescribe mata_matsave mata_matuse mata_memory mata_mlib mata_mosave mata_rename mata_which matalabel matcproc matlist matname matr matri matrix matrix_input__dlg matstrik mcc mcci md0_ md1_ md1debug_ md2_ md2debug_ mds mds_estat mds_p mdsconfig mdslong mdsmat mdsshepard mdytoe mdytof me_derd mean means median memory memsize menl meqparse mer merg merge meta mfp mfx mhelp mhodds minbound mixed_ll mixed_ll_reparm mkassert mkdir mkmat mkspline ml ml_5 ml_adjs ml_bhhhs ml_c_d ml_check ml_clear ml_cnt ml_debug ml_defd ml_e0 ml_e0_bfgs ml_e0_cycle ml_e0_dfp ml_e0i ml_e1 ml_e1_bfgs ml_e1_bhhh ml_e1_cycle ml_e1_dfp ml_e2 ml_e2_cycle ml_ebfg0 ml_ebfr0 ml_ebfr1 ml_ebh0q ml_ebhh0 ml_ebhr0 ml_ebr0i ml_ecr0i ml_edfp0 ml_edfr0 ml_edfr1 ml_edr0i ml_eds ml_eer0i ml_egr0i ml_elf ml_elf_bfgs ml_elf_bhhh ml_elf_cycle ml_elf_dfp ml_elfi ml_elfs ml_enr0i ml_enrr0 ml_erdu0 ml_erdu0_bfgs ml_erdu0_bhhh ml_erdu0_bhhhq ml_erdu0_cycle ml_erdu0_dfp ml_erdu0_nrbfgs ml_exde ml_footnote ml_geqnr ml_grad0 ml_graph ml_hbhhh ml_hd0 ml_hold ml_init ml_inv ml_log ml_max ml_mlout ml_mlout_8 ml_model ml_nb0 ml_opt ml_p ml_plot ml_query ml_rdgrd ml_repor ml_s_e ml_score ml_searc ml_technique ml_unhold mleval mlf_ mlmatbysum mlmatsum mlog mlogi mlogit mlogit_footnote mlogit_p mlopts mlsum mlvecsum mnl0_ mor more mov move mprobit mprobit_lf mprobit_p mrdu0_ mrdu1_ mvdecode mvencode mvreg mvreg_estat n|0 nbreg nbreg_al nbreg_lf nbreg_p nbreg_sw nestreg net newey newey_7 newey_p news nl nl_7 nl_9 nl_9_p nl_p nl_p_7 nlcom nlcom_p nlexp2 nlexp2_7 nlexp2a nlexp2a_7 nlexp3 nlexp3_7 nlgom3 nlgom3_7 nlgom4 nlgom4_7 nlinit nllog3 nllog3_7 nllog4 nllog4_7 nlog_rd nlogit nlogit_p nlogitgen nlogittree nlpred no nobreak noi nois noisi noisil noisily note notes notes_dlg nptrend numlabel numlist odbc old_ver olo olog ologi ologi_sw ologit ologit_p ologitp on one onew onewa oneway op_colnm op_comp op_diff op_inv op_str opr opro oprob oprob_sw oprobi oprobi_p oprobit oprobitp opts_exclusive order orthog orthpoly ou out outf outfi outfil outfile outs outsh outshe outshee outsheet ovtest pac pac_7 palette parse parse_dissim pause pca pca_8 pca_display pca_estat pca_p pca_rotate pcamat pchart pchart_7 pchi pchi_7 pcorr pctile pentium pergram pergram_7 permute permute_8 personal peto_st pkcollapse pkcross pkequiv pkexamine pkexamine_7 pkshape pksumm pksumm_7 pl plo plot plugin pnorm pnorm_7 poisgof poiss_lf poiss_sw poisso_p poisson poisson_estat post postclose postfile postutil pperron pr prais prais_e prais_e2 prais_p predict predictnl preserve print pro prob probi probit probit_estat probit_p proc_time procoverlay procrustes procrustes_estat procrustes_p profiler prog progr progra program prop proportion prtest prtesti pwcorr pwd q\\s qby qbys qchi qchi_7 qladder qladder_7 qnorm qnorm_7 qqplot qqplot_7 qreg qreg_c qreg_p qreg_sw qu quadchk quantile quantile_7 que quer query range ranksum ratio rchart rchart_7 rcof recast reclink recode reg reg3 reg3_p regdw regr regre regre_p2 regres regres_p regress regress_estat regriv_p remap ren rena renam rename renpfix repeat replace report reshape restore ret retu retur return rm rmdir robvar roccomp roccomp_7 roccomp_8 rocf_lf rocfit rocfit_8 rocgold rocplot rocplot_7 roctab roctab_7 rolling rologit rologit_p rot rota rotat rotate rotatemat rreg rreg_p ru run runtest rvfplot rvfplot_7 rvpplot rvpplot_7 sa safesum sample sampsi sav save savedresults saveold sc sca scal scala scalar scatter scm_mine sco scob_lf scob_p scobi_sw scobit scor score scoreplot scoreplot_help scree screeplot screeplot_help sdtest sdtesti se search separate seperate serrbar serrbar_7 serset set set_defaults sfrancia sh she shel shell shewhart shewhart_7 signestimationsample signrank signtest simul simul_7 simulate simulate_8 sktest sleep slogit slogit_d2 slogit_p smooth snapspan so sor sort spearman spikeplot spikeplot_7 spikeplt spline_x split sqreg sqreg_p sret sretu sretur sreturn ssc st st_ct st_hc st_hcd st_hcd_sh st_is st_issys st_note st_promo st_set st_show st_smpl st_subid stack statsby statsby_8 stbase stci stci_7 stcox stcox_estat stcox_fr stcox_fr_ll stcox_p stcox_sw stcoxkm stcoxkm_7 stcstat stcurv stcurve stcurve_7 stdes stem stepwise stereg stfill stgen stir stjoin stmc stmh stphplot stphplot_7 stphtest stphtest_7 stptime strate strate_7 streg streg_sw streset sts sts_7 stset stsplit stsum sttocc sttoct stvary stweib su suest suest_8 sum summ summa summar summari summariz summarize sunflower sureg survcurv survsum svar svar_p svmat svy svy_disp svy_dreg svy_est svy_est_7 svy_estat svy_get svy_gnbreg_p svy_head svy_header svy_heckman_p svy_heckprob_p svy_intreg_p svy_ivreg_p svy_logistic_p svy_logit_p svy_mlogit_p svy_nbreg_p svy_ologit_p svy_oprobit_p svy_poisson_p svy_probit_p svy_regress_p svy_sub svy_sub_7 svy_x svy_x_7 svy_x_p svydes svydes_8 svygen svygnbreg svyheckman svyheckprob svyintreg svyintreg_7 svyintrg svyivreg svylc svylog_p svylogit svymarkout svymarkout_8 svymean svymlog svymlogit svynbreg svyolog svyologit svyoprob svyoprobit svyopts svypois svypois_7 svypoisson svyprobit svyprobt svyprop svyprop_7 svyratio svyreg svyreg_p svyregress svyset svyset_7 svyset_8 svytab svytab_7 svytest svytotal sw sw_8 swcnreg swcox swereg swilk swlogis swlogit swologit swoprbt swpois swprobit swqreg swtobit swweib symmetry symmi symplot symplot_7 syntax sysdescribe sysdir sysuse szroeter ta tab tab1 tab2 tab_or tabd tabdi tabdis tabdisp tabi table tabodds tabodds_7 tabstat tabu tabul tabula tabulat tabulate te tempfile tempname tempvar tes test testnl testparm teststd tetrachoric time_it timer tis tob tobi tobit tobit_p tobit_sw token tokeni tokeniz tokenize tostring total translate translator transmap treat_ll treatr_p treatreg trim trimfill trnb_cons trnb_mean trpoiss_d2 trunc_ll truncr_p truncreg tsappend tset tsfill tsline tsline_ex tsreport tsrevar tsrline tsset tssmooth tsunab ttest ttesti tut_chk tut_wait tutorial tw tware_st two twoway twoway__fpfit_serset twoway__function_gen twoway__histogram_gen twoway__ipoint_serset twoway__ipoints_serset twoway__kdensity_gen twoway__lfit_serset twoway__normgen_gen twoway__pci_serset twoway__qfit_serset twoway__scatteri_serset twoway__sunflower_gen twoway_ksm_serset ty typ type typeof u|0 unab unabbrev unabcmd update us use uselabel var var_mkcompanion var_p varbasic varfcast vargranger varirf varirf_add varirf_cgraph varirf_create varirf_ctable varirf_describe varirf_dir varirf_drop varirf_erase varirf_graph varirf_ograph varirf_rename varirf_set varirf_table varlist varlmar varnorm varsoc varstable varstable_w varstable_w2 varwle vce vec vec_fevd vec_mkphi vec_p vec_p_w vecirf_create veclmar veclmar_w vecnorm vecnorm_w vecrank vecstable verinst vers versi versio version view viewsource vif vwls wdatetof webdescribe webseek webuse weib1_lf weib2_lf weib_lf weib_lf0 weibhet_glf weibhet_glf_sh weibhet_glfa weibhet_glfa_sh weibhet_gp weibhet_ilf weibhet_ilf_sh weibhet_ilfa weibhet_ilfa_sh weibhet_ip weibu_sw weibul_p weibull weibull_c weibull_s weibullhet wh whelp whi which whil while wilc_st wilcoxon win wind windo window winexec wntestb wntestb_7 wntestq xchart xchart_7 xcorr xcorr_7 xi xi_6 xmlsav xmlsave xmluse xpose xsh xshe xshel xshell xt_iis xt_tis xtab_p xtabond xtbin_p xtclog xtcloglog xtcloglog_8 xtcloglog_d2 xtcloglog_pa_p xtcloglog_re_p xtcnt_p xtcorr xtdata xtdes xtfront_p xtfrontier xtgee xtgee_elink xtgee_estat xtgee_makeivar xtgee_p xtgee_plink xtgls xtgls_p xthaus xthausman xtht_p xthtaylor xtile xtint_p xtintreg xtintreg_8 xtintreg_d2 xtintreg_p xtivp_1 xtivp_2 xtivreg xtline xtline_ex xtlogit xtlogit_8 xtlogit_d2 xtlogit_fe_p xtlogit_pa_p xtlogit_re_p xtmixed xtmixed_estat xtmixed_p xtnb_fe xtnb_lf xtnbreg xtnbreg_pa_p xtnbreg_refe_p xtpcse xtpcse_p xtpois xtpoisson xtpoisson_d2 xtpoisson_pa_p xtpoisson_refe_p xtpred xtprobit xtprobit_8 xtprobit_d2 xtprobit_re_p xtps_fe xtps_lf xtps_ren xtps_ren_8 xtrar_p xtrc xtrc_p xtrchh xtrefe_p xtreg xtreg_be xtreg_fe xtreg_ml xtreg_pa_p xtreg_re xtregar xtrere_p xtset xtsf_ll xtsf_llti xtsum xttab xttest0 xttobit xttobit_8 xttobit_p xttrans yx yxview__barlike_draw yxview_area_draw yxview_bar_draw yxview_dot_draw yxview_dropline_draw yxview_function_draw yxview_iarrow_draw yxview_ilabels_draw yxview_normal_draw yxview_pcarrow_draw yxview_pcbarrow_draw yxview_pccapsym_draw yxview_pcscatter_draw yxview_pcspike_draw yxview_rarea_draw yxview_rbar_draw yxview_rbarm_draw yxview_rcap_draw yxview_rcapsym_draw yxview_rconnected_draw yxview_rline_draw yxview_rscatter_draw yxview_rspike_draw yxview_spike_draw yxview_sunflower_draw zap_s zinb zinb_llf zinb_plf zip zip_llf zip_p zip_plf zt_ct_5 zt_hc_5 zt_hcd_5 zt_is_5 zt_iss_5 zt_sho_5 zt_smp_5 ztbase_5 ztcox_5 ztdes_5 ztereg_5 ztfill_5 ztgen_5 ztir_5 ztjoin_5 ztnb ztnb_p ztp ztp_p zts_5 ztset_5 ztspli_5 ztsum_5 zttoct_5 ztvary_5 ztweib_5",
+contains:[{className:"symbol",begin:/`[a-zA-Z0-9_]+'/},{className:"variable",
+begin:/\$\{?[a-zA-Z0-9_]+\}?/},{className:"string",variants:[{
+begin:'`"[^\r\n]*?"\''},{begin:'"[^\r\n"]*"'}]},{className:"built_in",
+variants:[{
+begin:"\\b(abs|acos|asin|atan|atan2|atanh|ceil|cloglog|comb|cos|digamma|exp|floor|invcloglog|invlogit|ln|lnfact|lnfactorial|lngamma|log|log10|max|min|mod|reldif|round|sign|sin|sqrt|sum|tan|tanh|trigamma|trunc|betaden|Binomial|binorm|binormal|chi2|chi2tail|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|F|Fden|Ftail|gammaden|gammap|ibeta|invbinomial|invchi2|invchi2tail|invF|invFtail|invgammap|invibeta|invnchi2|invnFtail|invnibeta|invnorm|invnormal|invttail|nbetaden|nchi2|nFden|nFtail|nibeta|norm|normal|normalden|normd|npnchi2|tden|ttail|uniform|abbrev|char|index|indexnot|length|lower|ltrim|match|plural|proper|real|regexm|regexr|regexs|reverse|rtrim|string|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrtrim|strtrim|strupper|subinstr|subinword|substr|trim|upper|word|wordcount|_caller|autocode|byteorder|chop|clip|cond|e|epsdouble|epsfloat|group|inlist|inrange|irecode|matrix|maxbyte|maxdouble|maxfloat|maxint|maxlong|mi|minbyte|mindouble|minfloat|minint|minlong|missing|r|recode|replay|return|s|scalar|d|date|day|dow|doy|halfyear|mdy|month|quarter|week|year|d|daily|dofd|dofh|dofm|dofq|dofw|dofy|h|halfyearly|hofd|m|mofd|monthly|q|qofd|quarterly|tin|twithin|w|weekly|wofd|y|yearly|yh|ym|yofd|yq|yw|cholesky|colnumb|colsof|corr|det|diag|diag0cnt|el|get|hadamard|I|inv|invsym|issym|issymmetric|J|matmissing|matuniform|mreldif|nullmat|rownumb|rowsof|sweep|syminv|trace|vec|vecdiag)(?=\\()"
+}]},e.COMMENT("^[ \t]*\\*.*$",!1),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]
+})})();hljs.registerLanguage("stata",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/step21.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/step21.min.js
new file mode 100644
index 0000000..b2c85b1
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/step21.min.js
@@ -0,0 +1,10 @@
+/*! `step21` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"STEP Part 21",
+aliases:["p21","step","stp"],case_insensitive:!0,keywords:{
+$pattern:"[A-Z_][A-Z0-9_.]*",keyword:["HEADER","ENDSEC","DATA"]},contains:[{
+className:"meta",begin:"ISO-10303-21;",relevance:10},{className:"meta",
+begin:"END-ISO-10303-21;",relevance:10
+},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT("/\\*\\*!","\\*/"),e.C_NUMBER_MODE,e.inherit(e.APOS_STRING_MODE,{
+illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{
+className:"string",begin:"'",end:"'"},{className:"symbol",variants:[{begin:"#",
+end:"\\d+",illegal:"\\W"}]}]})})();hljs.registerLanguage("step21",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/stylus.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/stylus.min.js
new file mode 100644
index 0000000..9c6d35c
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/stylus.min.js
@@ -0,0 +1,36 @@
+/*! `stylus` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict"
+;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-height","max-width","min-height","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse()
+;return a=>{const n=(e=>({IMPORTANT:{scope:"meta",begin:"!important"},
+BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",
+begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{
+className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{
+scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",
+contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{
+scope:"number",
+begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",
+relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/}
+}))(a),s={className:"variable",begin:"\\$"+a.IDENT_RE},l="(?=[.\\s\\n[:,(])"
+;return{name:"Stylus",aliases:["styl"],case_insensitive:!1,
+keywords:"if else for in",
+illegal:"(\\?|(\\bReturn\\b)|(\\bEnd\\b)|(\\bend\\b)|(\\bdef\\b)|;|#\\s|\\*\\s|===\\s|\\||%)",
+contains:[a.QUOTE_STRING_MODE,a.APOS_STRING_MODE,a.C_LINE_COMMENT_MODE,a.C_BLOCK_COMMENT_MODE,n.HEXCOLOR,{
+begin:"\\.[a-zA-Z][a-zA-Z0-9_-]*(?=[.\\s\\n[:,(])",className:"selector-class"},{
+begin:"#[a-zA-Z][a-zA-Z0-9_-]*(?=[.\\s\\n[:,(])",className:"selector-id"},{
+begin:"\\b("+e.join("|")+")"+l,className:"selector-tag"},{
+className:"selector-pseudo",begin:"&?:("+i.join("|")+")"+l},{
+className:"selector-pseudo",begin:"&?:(:)?("+o.join("|")+")"+l
+},n.ATTRIBUTE_SELECTOR_MODE,{className:"keyword",begin:/@media/,starts:{
+end:/[{;}]/,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only",
+attribute:t.join(" ")},contains:[n.CSS_NUMBER_MODE]}},{className:"keyword",
+begin:"@((-(o|moz|ms|webkit)-)?(charset|css|debug|extend|font-face|for|import|include|keyframes|media|mixin|page|warn|while))\\b"
+},s,n.CSS_NUMBER_MODE,{className:"function",
+begin:"^[a-zA-Z][a-zA-Z0-9_-]*\\(.*\\)",illegal:"[\\n]",returnBegin:!0,
+contains:[{className:"title",begin:"\\b[a-zA-Z][a-zA-Z0-9_-]*"},{
+className:"params",begin:/\(/,end:/\)/,
+contains:[n.HEXCOLOR,s,a.APOS_STRING_MODE,n.CSS_NUMBER_MODE,a.QUOTE_STRING_MODE]
+}]},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+r.join("|")+")\\b",
+starts:{end:/;|$/,
+contains:[n.HEXCOLOR,s,a.APOS_STRING_MODE,a.QUOTE_STRING_MODE,n.CSS_NUMBER_MODE,a.C_BLOCK_COMMENT_MODE,n.IMPORTANT],
+illegal:/\./,relevance:0}},n.FUNCTION_DISPATCH]}}})()
+;hljs.registerLanguage("stylus",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/subunit.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/subunit.min.js
new file mode 100644
index 0000000..ae33522
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/subunit.min.js
@@ -0,0 +1,9 @@
+/*! `subunit` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var s=(()=>{"use strict";return s=>({name:"SubUnit",case_insensitive:!0,
+contains:[{className:"string",begin:"\\[\n(multipart)?",end:"\\]\n"},{
+className:"string",begin:"\\d{4}-\\d{2}-\\d{2}(\\s+)\\d{2}:\\d{2}:\\d{2}.\\d+Z"
+},{className:"string",begin:"(\\+|-)\\d+"},{className:"keyword",relevance:10,
+variants:[{
+begin:"^(test|testing|success|successful|failure|error|skip|xfail|uxsuccess)(:?)\\s+(test)?"
+},{begin:"^progress(:?)(\\s+)?(pop|push)?"},{begin:"^tags:"},{begin:"^time:"}]}]
+})})();hljs.registerLanguage("subunit",s)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/swift.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/swift.min.js
new file mode 100644
index 0000000..52de526
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/swift.min.js
@@ -0,0 +1,60 @@
+/*! `swift` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";function e(e){
+return e?"string"==typeof e?e:e.source:null}function a(e){return t("(?=",e,")")}
+function t(...a){return a.map((a=>e(a))).join("")}function n(...a){const t=(e=>{
+const a=e[e.length-1]
+;return"object"==typeof a&&a.constructor===Object?(e.splice(e.length-1,1),a):{}
+})(a);return"("+(t.capture?"":"?:")+a.map((a=>e(a))).join("|")+")"}
+const i=e=>t(/\b/,e,/\w$/.test(e)?/\b/:/\B/),s=["Protocol","Type"].map(i),u=["init","self"].map(i),c=["Any","Self"],r=["actor","associatedtype","async","await",/as\?/,/as!/,"as","break","case","catch","class","continue","convenience","default","defer","deinit","didSet","do","dynamic","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],o=["false","nil","true"],l=["assignment","associativity","higherThan","left","lowerThan","none","right"],m=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warn_unqualified_access","#warning"],p=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],d=n(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),F=n(d,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),b=t(d,F,"*"),h=n(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),f=n(h,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),w=t(h,f,"*"),y=t(/[A-Z]/,f,"*"),g=["autoclosure",t(/convention\(/,n("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",t(/objc\(/,w,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","testable","UIApplicationMain","unknown","usableFromInline"],E=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"]
+;return e=>{const d={match:/\s+/,relevance:0},h=e.COMMENT("/\\*","\\*/",{
+contains:["self"]}),v=[e.C_LINE_COMMENT_MODE,h],A={match:[/\./,n(...s,...u)],
+className:{2:"keyword"}},N={match:t(/\./,n(...r)),relevance:0
+},C=r.filter((e=>"string"==typeof e)).concat(["_|0"]),D={variants:[{
+className:"keyword",
+match:n(...r.filter((e=>"string"!=typeof e)).concat(c).map(i),...u)}]},k={
+$pattern:n(/\b\w+/,/#\w+/),keyword:C.concat(m),literal:o},B=[A,N,D],_=[{
+match:t(/\./,n(...p)),relevance:0},{className:"built_in",
+match:t(/\b/,n(...p),/(?=\()/)}],S={match:/->/,relevance:0},M=[S,{
+className:"operator",relevance:0,variants:[{match:b},{match:`\\.(\\.|${F})+`}]
+}],x="([0-9a-fA-F]_*)+",I={className:"number",relevance:0,variants:[{
+match:"\\b(([0-9]_*)+)(\\.(([0-9]_*)+))?([eE][+-]?(([0-9]_*)+))?\\b"},{
+match:`\\b0x(${x})(\\.(${x}))?([pP][+-]?(([0-9]_*)+))?\\b`},{
+match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},L=(e="")=>({
+className:"subst",variants:[{match:t(/\\/,e,/[0\\tnr"']/)},{
+match:t(/\\/,e,/u\{[0-9a-fA-F]{1,8}\}/)}]}),O=(e="")=>({className:"subst",
+match:t(/\\/,e,/[\t ]*(?:[\r\n]|\r\n)/)}),T=(e="")=>({className:"subst",
+label:"interpol",begin:t(/\\/,e,/\(/),end:/\)/}),$=(e="")=>({begin:t(e,/"""/),
+end:t(/"""/,e),contains:[L(e),O(e),T(e)]}),j=(e="")=>({begin:t(e,/"/),
+end:t(/"/,e),contains:[L(e),T(e)]}),P={className:"string",
+variants:[$(),$("#"),$("##"),$("###"),j(),j("#"),j("##"),j("###")]},K={
+match:t(/`/,w,/`/)},z=[K,{className:"variable",match:/\$\d+/},{
+className:"variable",match:`\\$${f}+`}],q=[{match:/(@|#)available/,
+className:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:E,
+contains:[...M,I,P]}]}},{className:"keyword",match:t(/@/,n(...g))},{
+className:"meta",match:t(/@/,w)}],U={match:a(/\b[A-Z]/),relevance:0,contains:[{
+className:"type",
+match:t(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,f,"+")
+},{className:"type",match:y,relevance:0},{match:/[?!]+/,relevance:0},{
+match:/\.\.\./,relevance:0},{match:t(/\s+&\s+/,a(y)),relevance:0}]},Z={
+begin:/</,end:/>/,keywords:k,contains:[...v,...B,...q,S,U]};U.contains.push(Z)
+;const V={begin:/\(/,end:/\)/,relevance:0,keywords:k,contains:["self",{
+match:t(w,/\s*:/),keywords:"_|0",relevance:0
+},...v,...B,..._,...M,I,P,...z,...q,U]},W={begin:/</,end:/>/,contains:[...v,U]
+},G={begin:/\(/,end:/\)/,keywords:k,contains:[{
+begin:n(a(t(w,/\s*:/)),a(t(w,/\s+/,w,/\s*:/))),end:/:/,relevance:0,contains:[{
+className:"keyword",match:/\b_\b/},{className:"params",match:w}]
+},...v,...B,...M,I,P,...q,U,V],endsParent:!0,illegal:/["']/},R={
+match:[/func/,/\s+/,n(K.match,w,b)],className:{1:"keyword",3:"title.function"},
+contains:[W,G,d],illegal:[/\[/,/%/]},X={
+match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},
+contains:[W,G,d],illegal:/\[|%/},H={match:[/operator/,/\s+/,b],className:{
+1:"keyword",3:"title"}},J={begin:[/precedencegroup/,/\s+/,y],className:{
+1:"keyword",3:"title"},contains:[U],keywords:[...l,...o],end:/}/}
+;for(const e of P.variants){const a=e.contains.find((e=>"interpol"===e.label))
+;a.keywords=k;const t=[...B,..._,...M,I,P,...z];a.contains=[...t,{begin:/\(/,
+end:/\)/,contains:["self",...t]}]}return{name:"Swift",keywords:k,
+contains:[...v,R,X,{beginKeywords:"struct protocol class extension enum actor",
+end:"\\{",excludeEnd:!0,keywords:k,contains:[e.inherit(e.TITLE_MODE,{
+className:"title.class",begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/}),...B]
+},H,J,{beginKeywords:"import",end:/$/,contains:[...v],relevance:0
+},...B,..._,...M,I,P,...z,...q,U,V]}}})();hljs.registerLanguage("swift",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/taggerscript.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/taggerscript.min.js
new file mode 100644
index 0000000..b61a16d
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/taggerscript.min.js
@@ -0,0 +1,8 @@
+/*! `taggerscript` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Tagger Script",contains:[{
+className:"comment",begin:/\$noop\(/,end:/\)/,contains:[{begin:/\\[()]/},{
+begin:/\(/,end:/\)/,contains:[{begin:/\\[()]/},"self"]}],relevance:10},{
+className:"keyword",begin:/\$[_a-zA-Z0-9]+(?=\()/},{className:"variable",
+begin:/%[_a-zA-Z0-9:]+%/},{className:"symbol",begin:/\\[\\nt$%,()]/},{
+className:"symbol",begin:/\\u[a-fA-F0-9]{4}/}]})})()
+;hljs.registerLanguage("taggerscript",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/tap.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/tap.min.js
new file mode 100644
index 0000000..b2c7571
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/tap.min.js
@@ -0,0 +1,7 @@
+/*! `tap` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Test Anything Protocol",
+case_insensitive:!0,contains:[e.HASH_COMMENT_MODE,{className:"meta",variants:[{
+begin:"^TAP version (\\d+)$"},{begin:"^1\\.\\.(\\d+)$"}]},{begin:/---$/,
+end:"\\.\\.\\.$",subLanguage:"yaml",relevance:0},{className:"number",
+begin:" (\\d+) "},{className:"symbol",variants:[{begin:"^ok"},{begin:"^not ok"}]
+}]})})();hljs.registerLanguage("tap",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/tcl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/tcl.min.js
new file mode 100644
index 0000000..0b2930b
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/tcl.min.js
@@ -0,0 +1,15 @@
+/*! `tcl` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const a=e.regex,t=/[a-zA-Z_][a-zA-Z0-9_]*/,r={className:"number",
+variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{name:"Tcl",
+aliases:["tk"],
+keywords:["after","append","apply","array","auto_execok","auto_import","auto_load","auto_mkindex","auto_mkindex_old","auto_qualify","auto_reset","bgerror","binary","break","catch","cd","chan","clock","close","concat","continue","dde","dict","encoding","eof","error","eval","exec","exit","expr","fblocked","fconfigure","fcopy","file","fileevent","filename","flush","for","foreach","format","gets","glob","global","history","http","if","incr","info","interp","join","lappend|10","lassign|10","lindex|10","linsert|10","list","llength|10","load","lrange|10","lrepeat|10","lreplace|10","lreverse|10","lsearch|10","lset|10","lsort|10","mathfunc","mathop","memory","msgcat","namespace","open","package","parray","pid","pkg::create","pkg_mkIndex","platform","platform::shell","proc","puts","pwd","read","refchan","regexp","registry","regsub|10","rename","return","safe","scan","seek","set","socket","source","split","string","subst","switch","tcl_endOfWord","tcl_findLibrary","tcl_startOfNextWord","tcl_startOfPreviousWord","tcl_wordBreakAfter","tcl_wordBreakBefore","tcltest","tclvars","tell","time","tm","trace","unknown","unload","unset","update","uplevel","upvar","variable","vwait","while"],
+contains:[e.COMMENT(";[ \\t]*#","$"),e.COMMENT("^[ \\t]*#","$"),{
+beginKeywords:"proc",end:"[\\{]",excludeEnd:!0,contains:[{className:"title",
+begin:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"[ \\t\\n\\r]",
+endsWithParent:!0,excludeEnd:!0}]},{className:"variable",variants:[{
+begin:a.concat(/\$/,a.optional(/::/),t,"(::",t,")*")},{
+begin:"\\$\\{(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",end:"\\}",contains:[r]}]},{
+className:"string",contains:[e.BACKSLASH_ESCAPE],
+variants:[e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},r]}}})()
+;hljs.registerLanguage("tcl",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/thrift.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/thrift.min.js
new file mode 100644
index 0000000..25de52e
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/thrift.min.js
@@ -0,0 +1,12 @@
+/*! `thrift` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const t=["bool","byte","i16","i32","i64","double","string","binary"];return{
+name:"Thrift",keywords:{
+keyword:["namespace","const","typedef","struct","enum","service","exception","void","oneway","set","list","map","required","optional"],
+type:t,literal:"true false"},
+contains:[e.QUOTE_STRING_MODE,e.NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{
+className:"class",beginKeywords:"struct enum service exception",end:/\{/,
+illegal:/\n/,contains:[e.inherit(e.TITLE_MODE,{starts:{endsWithParent:!0,
+excludeEnd:!0}})]},{begin:"\\b(set|list|map)\\s*<",keywords:{
+type:[...t,"set","list","map"]},end:">",contains:["self"]}]}}})()
+;hljs.registerLanguage("thrift",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/tp.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/tp.min.js
new file mode 100644
index 0000000..efe9449
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/tp.min.js
@@ -0,0 +1,19 @@
+/*! `tp` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var O=(()=>{"use strict";return O=>{const e={className:"number",
+begin:"[1-9][0-9]*",relevance:0},R={className:"symbol",begin:":[^\\]]+"};return{
+name:"TP",keywords:{
+keyword:["ABORT","ACC","ADJUST","AND","AP_LD","BREAK","CALL","CNT","COL","CONDITION","CONFIG","DA","DB","DIV","DETECT","ELSE","END","ENDFOR","ERR_NUM","ERROR_PROG","FINE","FOR","GP","GUARD","INC","IF","JMP","LINEAR_MAX_SPEED","LOCK","MOD","MONITOR","OFFSET","Offset","OR","OVERRIDE","PAUSE","PREG","PTH","RT_LD","RUN","SELECT","SKIP","Skip","TA","TB","TO","TOOL_OFFSET","Tool_Offset","UF","UT","UFRAME_NUM","UTOOL_NUM","UNLOCK","WAIT","X","Y","Z","W","P","R","STRLEN","SUBSTR","FINDSTR","VOFFSET","PROG","ATTR","MN","POS"],
+literal:["ON","OFF","max_speed","LPOS","JPOS","ENABLE","DISABLE","START","STOP","RESET"]
+},contains:[{className:"built_in",
+begin:"(AR|P|PAYLOAD|PR|R|SR|RSR|LBL|VR|UALM|MESSAGE|UTOOL|UFRAME|TIMER|TIMER_OVERFLOW|JOINT_MAX_SPEED|RESUME_PROG|DIAG_REC)\\[",
+end:"\\]",contains:["self",e,R]},{className:"built_in",
+begin:"(AI|AO|DI|DO|F|RI|RO|UI|UO|GI|GO|SI|SO)\\[",end:"\\]",
+contains:["self",e,O.QUOTE_STRING_MODE,R]},{className:"keyword",
+begin:"/(PROG|ATTR|MN|POS|END)\\b"},{className:"keyword",
+begin:"(CALL|RUN|POINT_LOGIC|LBL)\\b"},{className:"keyword",
+begin:"\\b(ACC|CNT|Skip|Offset|PSPD|RT_LD|AP_LD|Tool_Offset)"},{
+className:"number",
+begin:"\\d+(sec|msec|mm/sec|cm/min|inch/min|deg/sec|mm|in|cm)?\\b",relevance:0
+},O.COMMENT("//","[;$]"),O.COMMENT("!","[;$]"),O.COMMENT("--eg:","$"),O.QUOTE_STRING_MODE,{
+className:"string",begin:"'",end:"'"},O.C_NUMBER_MODE,{className:"variable",
+begin:"\\$[A-Za-z0-9_]+"}]}}})();hljs.registerLanguage("tp",O)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/twig.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/twig.min.js
new file mode 100644
index 0000000..23e2abf
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/twig.min.js
@@ -0,0 +1,15 @@
+/*! `twig` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+var a="attribute block constant cycle date dump include max min parent random range source template_from_string",n={
+beginKeywords:a,keywords:{name:a},relevance:0,contains:[{className:"params",
+begin:"\\(",end:"\\)"}]},t={begin:/\|[A-Za-z_]+:?/,
+keywords:"abs batch capitalize column convert_encoding date date_modify default escape filter first format inky_to_html inline_css join json_encode keys last length lower map markdown merge nl2br number_format raw reduce replace reverse round slice sort spaceless split striptags title trim upper url_encode",
+contains:[n]
+},s="apply autoescape block deprecated do embed extends filter flush for from if import include macro sandbox set use verbatim with"
+;return s=s+" "+s.split(" ").map((e=>"end"+e)).join(" "),{name:"Twig",
+aliases:["craftcms"],case_insensitive:!0,subLanguage:"xml",
+contains:[e.COMMENT(/\{#/,/#\}/),{className:"template-tag",begin:/\{%/,
+end:/%\}/,contains:[{className:"name",begin:/\w+/,keywords:s,starts:{
+endsWithParent:!0,contains:[t,n],relevance:0}}]},{className:"template-variable",
+begin:/\{\{/,end:/\}\}/,contains:["self",t,n]}]}}})()
+;hljs.registerLanguage("twig",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/typescript.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/typescript.min.js
new file mode 100644
index 0000000..34b48be
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/typescript.min.js
@@ -0,0 +1,92 @@
+/*! `typescript` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict"
+;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],a=["true","false","null","undefined","NaN","Infinity"],t=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],s=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],r=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],c=["arguments","this","super","console","window","document","localStorage","module","global"],i=[].concat(r,t,s)
+;function o(o){const l=o.regex,d=e,b={begin:/<[A-Za-z0-9\\._:-]+/,
+end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{
+const a=e[0].length+e.index,t=e.input[a]
+;if("<"===t||","===t)return void n.ignoreMatch();let s
+;">"===t&&(((e,{after:n})=>{const a="</"+e[0].slice(1)
+;return-1!==e.input.indexOf(a,n)})(e,{after:a
+})||n.ignoreMatch()),(s=e.input.substr(a).match(/^\s+extends\s+/))&&0===s.index&&n.ignoreMatch()
+}},g={$pattern:e,keyword:n,literal:a,built_in:i,"variable.language":c
+},u="\\.([0-9](_?[0-9])*)",m="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",E={
+className:"number",variants:[{
+begin:`(\\b(${m})((${u})|\\.)?|(${u}))[eE][+-]?([0-9](_?[0-9])*)\\b`},{
+begin:`\\b(${m})\\b((${u})\\b|\\.)?|(${u})\\b`},{
+begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{
+begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{
+begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{
+begin:"\\b0[0-7]+n?\\b"}],relevance:0},y={className:"subst",begin:"\\$\\{",
+end:"\\}",keywords:g,contains:[]},A={begin:"html`",end:"",starts:{end:"`",
+returnEnd:!1,contains:[o.BACKSLASH_ESCAPE,y],subLanguage:"xml"}},p={
+begin:"css`",end:"",starts:{end:"`",returnEnd:!1,
+contains:[o.BACKSLASH_ESCAPE,y],subLanguage:"css"}},_={className:"string",
+begin:"`",end:"`",contains:[o.BACKSLASH_ESCAPE,y]},f={className:"comment",
+variants:[o.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{
+begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",
+begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,
+excludeBegin:!0,relevance:0},{className:"variable",begin:d+"(?=\\s*(-)|$)",
+endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]
+}),o.C_BLOCK_COMMENT_MODE,o.C_LINE_COMMENT_MODE]
+},N=[o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,A,p,_,E];y.contains=N.concat({
+begin:/\{/,end:/\}/,keywords:g,contains:["self"].concat(N)})
+;const h=[].concat(f,y.contains),v=h.concat([{begin:/\(/,end:/\)/,keywords:g,
+contains:["self"].concat(h)}]),S={className:"params",begin:/\(/,end:/\)/,
+excludeBegin:!0,excludeEnd:!0,keywords:g,contains:v},w={variants:[{
+match:[/class/,/\s+/,d,/\s+/,/extends/,/\s+/,l.concat(d,"(",l.concat(/\./,d),")*")],
+scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{
+match:[/class/,/\s+/,d],scope:{1:"keyword",3:"title.class"}}]},R={relevance:0,
+match:l.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]+|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+/),
+className:"title.class",keywords:{_:[...t,...s]}},x={variants:[{
+match:[/function/,/\s+/,d,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],
+className:{1:"keyword",3:"title.function"},label:"func.def",contains:[S],
+illegal:/%/},O={
+match:l.concat(/\b/,(k=[...r,"super"],l.concat("(?!",k.join("|"),")")),d,l.lookahead(/\(/)),
+className:"title.function",relevance:0};var k;const I={
+begin:l.concat(/\./,l.lookahead(l.concat(d,/(?![0-9A-Za-z$_(])/))),end:d,
+excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},C={
+match:[/get|set/,/\s+/,d,/(?=\()/],className:{1:"keyword",3:"title.function"},
+contains:[{begin:/\(\)/},S]
+},T="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+o.UNDERSCORE_IDENT_RE+")\\s*=>",M={
+match:[/const|var|let/,/\s+/,d,/\s*/,/=\s*/,l.lookahead(T)],className:{
+1:"keyword",3:"title.function"},contains:[S]};return{name:"Javascript",
+aliases:["js","jsx","mjs","cjs"],keywords:g,exports:{PARAMS_CONTAINS:v,
+CLASS_REFERENCE:R},illegal:/#(?![$_A-z])/,contains:[o.SHEBANG({label:"shebang",
+binary:"node",relevance:5}),{label:"use_strict",className:"meta",relevance:10,
+begin:/^\s*['"]use (strict|asm)['"]/
+},o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,A,p,_,f,E,R,{className:"attr",
+begin:d+l.lookahead(":"),relevance:0},M,{
+begin:"("+o.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",
+keywords:"return throw case",relevance:0,contains:[f,o.REGEXP_MODE,{
+className:"function",begin:T,returnBegin:!0,end:"\\s*=>",contains:[{
+className:"params",variants:[{begin:o.UNDERSCORE_IDENT_RE,relevance:0},{
+className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,
+excludeEnd:!0,keywords:g,contains:v}]}]},{begin:/,/,relevance:0},{match:/\s+/,
+relevance:0},{variants:[{begin:"<>",end:"</>"},{
+match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:b.begin,
+"on:begin":b.isTrulyOpeningTag,end:b.end}],subLanguage:"xml",contains:[{
+begin:b.begin,end:b.end,skip:!0,contains:["self"]}]}]},x,{
+beginKeywords:"while if switch catch for"},{
+begin:"\\b(?!function)"+o.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",
+returnBegin:!0,label:"func.def",contains:[S,o.inherit(o.TITLE_MODE,{begin:d,
+className:"title.function"})]},{match:/\.\.\./,relevance:0},I,{match:"\\$"+d,
+relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},
+contains:[S]},O,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,
+className:"variable.constant"},w,C,{match:/\$[(.]/}]}}return t=>{
+const s=o(t),r=["any","void","number","boolean","string","object","never","enum"],l={
+beginKeywords:"namespace",end:/\{/,excludeEnd:!0,
+contains:[s.exports.CLASS_REFERENCE]},d={beginKeywords:"interface",end:/\{/,
+excludeEnd:!0,keywords:{keyword:"interface extends",built_in:r},
+contains:[s.exports.CLASS_REFERENCE]},b={$pattern:e,
+keyword:n.concat(["type","namespace","typedef","interface","public","private","protected","implements","declare","abstract","readonly"]),
+literal:a,built_in:i.concat(r),"variable.language":c},g={className:"meta",
+begin:"@[A-Za-z$_][0-9A-Za-z$_]*"},u=(e,n,a)=>{
+const t=e.contains.findIndex((e=>e.label===n))
+;if(-1===t)throw Error("can not find mode to replace");e.contains.splice(t,1,a)}
+;return Object.assign(s.keywords,b),
+s.exports.PARAMS_CONTAINS.push(g),s.contains=s.contains.concat([g,l,d]),
+u(s,"shebang",t.SHEBANG()),u(s,"use_strict",{className:"meta",relevance:10,
+begin:/^\s*['"]use strict['"]/
+}),s.contains.find((e=>"func.def"===e.label)).relevance=0,Object.assign(s,{
+name:"TypeScript",aliases:["ts","tsx"]}),s}})()
+;hljs.registerLanguage("typescript",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/vala.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/vala.min.js
new file mode 100644
index 0000000..f15aeec
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/vala.min.js
@@ -0,0 +1,9 @@
+/*! `vala` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Vala",keywords:{
+keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var",
+built_in:"DBus GLib CCode Gee Object Gtk Posix",literal:"false true null"},
+contains:[{className:"class",beginKeywords:"class interface namespace",end:/\{/,
+excludeEnd:!0,illegal:"[^,:\\n\\s\\.]",contains:[e.UNDERSCORE_TITLE_MODE]
+},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:'"""',
+end:'"""',relevance:5},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,{
+className:"meta",begin:"^#",end:"$"}]})})();hljs.registerLanguage("vala",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/vbnet.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/vbnet.min.js
new file mode 100644
index 0000000..0231859
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/vbnet.min.js
@@ -0,0 +1,25 @@
+/*! `vbnet` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const n=e.regex,t=/\d{1,2}\/\d{1,2}\/\d{4}/,a=/\d{4}-\d{1,2}-\d{1,2}/,i=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,s=/\d{1,2}(:\d{1,2}){1,2}/,r={
+className:"literal",variants:[{begin:n.concat(/# */,n.either(a,t),/ *#/)},{
+begin:n.concat(/# */,s,/ *#/)},{begin:n.concat(/# */,i,/ *#/)},{
+begin:n.concat(/# */,n.either(a,t),/ +/,n.either(i,s),/ *#/)}]
+},l=e.COMMENT(/'''/,/$/,{contains:[{className:"doctag",begin:/<\/?/,end:/>/}]
+}),o=e.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\t ]|^)REM(?=\s)/}]})
+;return{name:"Visual Basic .NET",aliases:["vb"],case_insensitive:!0,
+classNameAliases:{label:"symbol"},keywords:{
+keyword:"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield",
+built_in:"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort",
+type:"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort",
+literal:"true false nothing"},
+illegal:"//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",contains:[{
+className:"string",begin:/"(""|[^/n])"C\b/},{className:"string",begin:/"/,
+end:/"/,illegal:/\n/,contains:[{begin:/""/}]},r,{className:"number",relevance:0,
+variants:[{begin:/\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/
+},{begin:/\b\d[\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\dA-F_]+((U?[SIL])|[%&])?/},{
+begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},{
+className:"label",begin:/^\w+:/},l,o,{className:"meta",
+begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/,
+end:/$/,keywords:{
+keyword:"const disable else elseif enable end externalsource if region then"},
+contains:[o]}]}}})();hljs.registerLanguage("vbnet",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/vbscript-html.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/vbscript-html.min.js
new file mode 100644
index 0000000..f08bf24
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/vbscript-html.min.js
@@ -0,0 +1,4 @@
+/*! `vbscript-html` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"VBScript in HTML",
+subLanguage:"xml",contains:[{begin:"<%",end:"%>",subLanguage:"vbscript"}]})})()
+;hljs.registerLanguage("vbscript-html",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/vbscript.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/vbscript.min.js
new file mode 100644
index 0000000..f26722d
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/vbscript.min.js
@@ -0,0 +1,10 @@
+/*! `vbscript` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const t=e.regex,r=["lcase","month","vartype","instrrev","ubound","setlocale","getobject","rgb","getref","string","weekdayname","rnd","dateadd","monthname","now","day","minute","isarray","cbool","round","formatcurrency","conversions","csng","timevalue","second","year","space","abs","clng","timeserial","fixs","len","asc","isempty","maths","dateserial","atn","timer","isobject","filter","weekday","datevalue","ccur","isdate","instr","datediff","formatdatetime","replace","isnull","right","sgn","array","snumeric","log","cdbl","hex","chr","lbound","msgbox","ucase","getlocale","cos","cdate","cbyte","rtrim","join","hour","oct","typename","trim","strcomp","int","createobject","loadpicture","tan","formatnumber","mid","split","cint","sin","datepart","ltrim","sqr","time","derived","eval","date","formatpercent","exp","inputbox","left","ascw","chrw","regexp","cstr","err"]
+;return{name:"VBScript",aliases:["vbs"],case_insensitive:!0,keywords:{
+keyword:["call","class","const","dim","do","loop","erase","execute","executeglobal","exit","for","each","next","function","if","then","else","on","error","option","explicit","new","private","property","let","get","public","randomize","redim","rem","select","case","set","stop","sub","while","wend","with","end","to","elseif","is","or","xor","and","not","class_initialize","class_terminate","default","preserve","in","me","byval","byref","step","resume","goto"],
+built_in:["server","response","request","scriptengine","scriptenginebuildversion","scriptengineminorversion","scriptenginemajorversion"],
+literal:["true","false","null","nothing","empty"]},illegal:"//",contains:[{
+begin:t.concat(t.either(...r),"\\s*\\("),relevance:0,keywords:{built_in:r}
+},e.inherit(e.QUOTE_STRING_MODE,{contains:[{begin:'""'}]}),e.COMMENT(/'/,/$/,{
+relevance:0}),e.C_NUMBER_MODE]}}})();hljs.registerLanguage("vbscript",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/verilog.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/verilog.min.js
new file mode 100644
index 0000000..d27bebb
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/verilog.min.js
@@ -0,0 +1,17 @@
+/*! `verilog` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const n=e.regex,t=["begin_keywords","celldefine","default_nettype","default_decay_time","default_trireg_strength","define","delay_mode_distributed","delay_mode_path","delay_mode_unit","delay_mode_zero","else","elsif","end_keywords","endcelldefine","endif","ifdef","ifndef","include","line","nounconnected_drive","pragma","resetall","timescale","unconnected_drive","undef","undefineall"]
+;return{name:"Verilog",aliases:["v","sv","svh"],case_insensitive:!1,keywords:{
+$pattern:/\$?[\w]+(\$[\w]+)*/,
+keyword:["accept_on","alias","always","always_comb","always_ff","always_latch","and","assert","assign","assume","automatic","before","begin","bind","bins","binsof","bit","break","buf|0","bufif0","bufif1","byte","case","casex","casez","cell","chandle","checker","class","clocking","cmos","config","const","constraint","context","continue","cover","covergroup","coverpoint","cross","deassign","default","defparam","design","disable","dist","do","edge","else","end","endcase","endchecker","endclass","endclocking","endconfig","endfunction","endgenerate","endgroup","endinterface","endmodule","endpackage","endprimitive","endprogram","endproperty","endspecify","endsequence","endtable","endtask","enum","event","eventually","expect","export","extends","extern","final","first_match","for","force","foreach","forever","fork","forkjoin","function","generate|5","genvar","global","highz0","highz1","if","iff","ifnone","ignore_bins","illegal_bins","implements","implies","import","incdir","include","initial","inout","input","inside","instance","int","integer","interconnect","interface","intersect","join","join_any","join_none","large","let","liblist","library","local","localparam","logic","longint","macromodule","matches","medium","modport","module","nand","negedge","nettype","new","nexttime","nmos","nor","noshowcancelled","not","notif0","notif1","or","output","package","packed","parameter","pmos","posedge","primitive","priority","program","property","protected","pull0","pull1","pulldown","pullup","pulsestyle_ondetect","pulsestyle_onevent","pure","rand","randc","randcase","randsequence","rcmos","real","realtime","ref","reg","reject_on","release","repeat","restrict","return","rnmos","rpmos","rtran","rtranif0","rtranif1","s_always","s_eventually","s_nexttime","s_until","s_until_with","scalared","sequence","shortint","shortreal","showcancelled","signed","small","soft","solve","specify","specparam","static","string","strong","strong0","strong1","struct","super","supply0","supply1","sync_accept_on","sync_reject_on","table","tagged","task","this","throughout","time","timeprecision","timeunit","tran","tranif0","tranif1","tri","tri0","tri1","triand","trior","trireg","type","typedef","union","unique","unique0","unsigned","until","until_with","untyped","use","uwire","var","vectored","virtual","void","wait","wait_order","wand","weak","weak0","weak1","while","wildcard","wire","with","within","wor","xnor","xor"],
+literal:["null"],
+built_in:["$finish","$stop","$exit","$fatal","$error","$warning","$info","$realtime","$time","$printtimescale","$bitstoreal","$bitstoshortreal","$itor","$signed","$cast","$bits","$stime","$timeformat","$realtobits","$shortrealtobits","$rtoi","$unsigned","$asserton","$assertkill","$assertpasson","$assertfailon","$assertnonvacuouson","$assertoff","$assertcontrol","$assertpassoff","$assertfailoff","$assertvacuousoff","$isunbounded","$sampled","$fell","$changed","$past_gclk","$fell_gclk","$changed_gclk","$rising_gclk","$steady_gclk","$coverage_control","$coverage_get","$coverage_save","$set_coverage_db_name","$rose","$stable","$past","$rose_gclk","$stable_gclk","$future_gclk","$falling_gclk","$changing_gclk","$display","$coverage_get_max","$coverage_merge","$get_coverage","$load_coverage_db","$typename","$unpacked_dimensions","$left","$low","$increment","$clog2","$ln","$log10","$exp","$sqrt","$pow","$floor","$ceil","$sin","$cos","$tan","$countbits","$onehot","$isunknown","$fatal","$warning","$dimensions","$right","$high","$size","$asin","$acos","$atan","$atan2","$hypot","$sinh","$cosh","$tanh","$asinh","$acosh","$atanh","$countones","$onehot0","$error","$info","$random","$dist_chi_square","$dist_erlang","$dist_exponential","$dist_normal","$dist_poisson","$dist_t","$dist_uniform","$q_initialize","$q_remove","$q_exam","$async$and$array","$async$nand$array","$async$or$array","$async$nor$array","$sync$and$array","$sync$nand$array","$sync$or$array","$sync$nor$array","$q_add","$q_full","$psprintf","$async$and$plane","$async$nand$plane","$async$or$plane","$async$nor$plane","$sync$and$plane","$sync$nand$plane","$sync$or$plane","$sync$nor$plane","$system","$display","$displayb","$displayh","$displayo","$strobe","$strobeb","$strobeh","$strobeo","$write","$readmemb","$readmemh","$writememh","$value$plusargs","$dumpvars","$dumpon","$dumplimit","$dumpports","$dumpportson","$dumpportslimit","$writeb","$writeh","$writeo","$monitor","$monitorb","$monitorh","$monitoro","$writememb","$dumpfile","$dumpoff","$dumpall","$dumpflush","$dumpportsoff","$dumpportsall","$dumpportsflush","$fclose","$fdisplay","$fdisplayb","$fdisplayh","$fdisplayo","$fstrobe","$fstrobeb","$fstrobeh","$fstrobeo","$swrite","$swriteb","$swriteh","$swriteo","$fscanf","$fread","$fseek","$fflush","$feof","$fopen","$fwrite","$fwriteb","$fwriteh","$fwriteo","$fmonitor","$fmonitorb","$fmonitorh","$fmonitoro","$sformat","$sformatf","$fgetc","$ungetc","$fgets","$sscanf","$rewind","$ftell","$ferror"]
+},contains:[e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE,e.QUOTE_STRING_MODE,{
+scope:"number",contains:[e.BACKSLASH_ESCAPE],variants:[{
+begin:/\b((\d+'([bhodBHOD]))[0-9xzXZa-fA-F_]+)/},{
+begin:/\B(('([bhodBHOD]))[0-9xzXZa-fA-F_]+)/},{begin:/\b[0-9][0-9_]*/,
+relevance:0}]},{scope:"variable",variants:[{begin:"#\\((?!parameter).+\\)"},{
+begin:"\\.\\w+",relevance:0}]},{scope:"variable.constant",
+match:n.concat(/`/,n.either("__FILE__","__LINE__"))},{scope:"meta",
+begin:n.concat(/`/,n.either(...t)),end:/$|\/\/|\/\*/,returnEnd:!0,keywords:t}]}}
+})();hljs.registerLanguage("verilog",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/vhdl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/vhdl.min.js
new file mode 100644
index 0000000..61c9bc7
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/vhdl.min.js
@@ -0,0 +1,14 @@
+/*! `vhdl` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"VHDL",case_insensitive:!0,
+keywords:{
+keyword:["abs","access","after","alias","all","and","architecture","array","assert","assume","assume_guarantee","attribute","begin","block","body","buffer","bus","case","component","configuration","constant","context","cover","disconnect","downto","default","else","elsif","end","entity","exit","fairness","file","for","force","function","generate","generic","group","guarded","if","impure","in","inertial","inout","is","label","library","linkage","literal","loop","map","mod","nand","new","next","nor","not","null","of","on","open","or","others","out","package","parameter","port","postponed","procedure","process","property","protected","pure","range","record","register","reject","release","rem","report","restrict","restrict_guarantee","return","rol","ror","select","sequence","severity","shared","signal","sla","sll","sra","srl","strong","subtype","then","to","transport","type","unaffected","units","until","use","variable","view","vmode","vprop","vunit","wait","when","while","with","xnor","xor"],
+built_in:["boolean","bit","character","integer","time","delay_length","natural","positive","string","bit_vector","file_open_kind","file_open_status","std_logic","std_logic_vector","unsigned","signed","boolean_vector","integer_vector","std_ulogic","std_ulogic_vector","unresolved_unsigned","u_unsigned","unresolved_signed","u_signed","real_vector","time_vector"],
+literal:["false","true","note","warning","error","failure","line","text","side","width"]
+},illegal:/\{/,
+contains:[e.C_BLOCK_COMMENT_MODE,e.COMMENT("--","$"),e.QUOTE_STRING_MODE,{
+className:"number",
+begin:"\\b(\\d(_|\\d)*#\\w+(\\.\\w+)?#([eE][-+]?\\d(_|\\d)*)?|\\d(_|\\d)*(\\.\\d(_|\\d)*)?([eE][-+]?\\d(_|\\d)*)?)",
+relevance:0},{className:"string",begin:"'(U|X|0|1|Z|W|L|H|-)'",
+contains:[e.BACKSLASH_ESCAPE]},{className:"symbol",
+begin:"'[A-Za-z](_?[A-Za-z0-9])*",contains:[e.BACKSLASH_ESCAPE]}]})})()
+;hljs.registerLanguage("vhdl",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/vim.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/vim.min.js
new file mode 100644
index 0000000..ac9441e
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/vim.min.js
@@ -0,0 +1,12 @@
+/*! `vim` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"Vim Script",keywords:{
+$pattern:/[!#@\w]+/,
+keyword:"N|0 P|0 X|0 a|0 ab abc abo al am an|0 ar arga argd arge argdo argg argl argu as au aug aun b|0 bN ba bad bd be bel bf bl bm bn bo bp br brea breaka breakd breakl bro bufdo buffers bun bw c|0 cN cNf ca cabc caddb cad caddf cal cat cb cc ccl cd ce cex cf cfir cgetb cgete cg changes chd che checkt cl cla clo cm cmapc cme cn cnew cnf cno cnorea cnoreme co col colo com comc comp con conf cope cp cpf cq cr cs cst cu cuna cunme cw delm deb debugg delc delf dif diffg diffo diffp diffpu diffs diffthis dig di dl dell dj dli do doautoa dp dr ds dsp e|0 ea ec echoe echoh echom echon el elsei em en endfo endf endt endw ene ex exe exi exu f|0 files filet fin fina fini fir fix fo foldc foldd folddoc foldo for fu go gr grepa gu gv ha helpf helpg helpt hi hid his ia iabc if ij il im imapc ime ino inorea inoreme int is isp iu iuna iunme j|0 ju k|0 keepa kee keepj lN lNf l|0 lad laddb laddf la lan lat lb lc lch lcl lcs le lefta let lex lf lfir lgetb lgete lg lgr lgrepa lh ll lla lli lmak lm lmapc lne lnew lnf ln loadk lo loc lockv lol lope lp lpf lr ls lt lu lua luad luaf lv lvimgrepa lw m|0 ma mak map mapc marks mat me menut mes mk mks mksp mkv mkvie mod mz mzf nbc nb nbs new nm nmapc nme nn nnoreme noa no noh norea noreme norm nu nun nunme ol o|0 om omapc ome on ono onoreme opt ou ounme ow p|0 profd prof pro promptr pc ped pe perld po popu pp pre prev ps pt ptN ptf ptj ptl ptn ptp ptr pts pu pw py3 python3 py3d py3f py pyd pyf quita qa rec red redi redr redraws reg res ret retu rew ri rightb rub rubyd rubyf rund ru rv sN san sa sal sav sb sbN sba sbf sbl sbm sbn sbp sbr scrip scripte scs se setf setg setl sf sfir sh sim sig sil sl sla sm smap smapc sme sn sni sno snor snoreme sor so spelld spe spelli spellr spellu spellw sp spr sre st sta startg startr star stopi stj sts sun sunm sunme sus sv sw sy synti sync tN tabN tabc tabdo tabe tabf tabfir tabl tabm tabnew tabn tabo tabp tabr tabs tab ta tags tc tcld tclf te tf th tj tl tm tn to tp tr try ts tu u|0 undoj undol una unh unl unlo unm unme uns up ve verb vert vim vimgrepa vi viu vie vm vmapc vme vne vn vnoreme vs vu vunme windo w|0 wN wa wh wi winc winp wn wp wq wqa ws wu wv x|0 xa xmapc xm xme xn xnoreme xu xunme y|0 z|0 ~ Next Print append abbreviate abclear aboveleft all amenu anoremenu args argadd argdelete argedit argglobal arglocal argument ascii autocmd augroup aunmenu buffer bNext ball badd bdelete behave belowright bfirst blast bmodified bnext botright bprevious brewind break breakadd breakdel breaklist browse bunload bwipeout change cNext cNfile cabbrev cabclear caddbuffer caddexpr caddfile call catch cbuffer cclose center cexpr cfile cfirst cgetbuffer cgetexpr cgetfile chdir checkpath checktime clist clast close cmap cmapclear cmenu cnext cnewer cnfile cnoremap cnoreabbrev cnoremenu copy colder colorscheme command comclear compiler continue confirm copen cprevious cpfile cquit crewind cscope cstag cunmap cunabbrev cunmenu cwindow delete delmarks debug debuggreedy delcommand delfunction diffupdate diffget diffoff diffpatch diffput diffsplit digraphs display deletel djump dlist doautocmd doautoall deletep drop dsearch dsplit edit earlier echo echoerr echohl echomsg else elseif emenu endif endfor endfunction endtry endwhile enew execute exit exusage file filetype find finally finish first fixdel fold foldclose folddoopen folddoclosed foldopen function global goto grep grepadd gui gvim hardcopy help helpfind helpgrep helptags highlight hide history insert iabbrev iabclear ijump ilist imap imapclear imenu inoremap inoreabbrev inoremenu intro isearch isplit iunmap iunabbrev iunmenu join jumps keepalt keepmarks keepjumps lNext lNfile list laddexpr laddbuffer laddfile last language later lbuffer lcd lchdir lclose lcscope left leftabove lexpr lfile lfirst lgetbuffer lgetexpr lgetfile lgrep lgrepadd lhelpgrep llast llist lmake lmap lmapclear lnext lnewer lnfile lnoremap loadkeymap loadview lockmarks lockvar lolder lopen lprevious lpfile lrewind ltag lunmap luado luafile lvimgrep lvimgrepadd lwindow move mark make mapclear match menu menutranslate messages mkexrc mksession mkspell mkvimrc mkview mode mzscheme mzfile nbclose nbkey nbsart next nmap nmapclear nmenu nnoremap nnoremenu noautocmd noremap nohlsearch noreabbrev noremenu normal number nunmap nunmenu oldfiles open omap omapclear omenu only onoremap onoremenu options ounmap ounmenu ownsyntax print profdel profile promptfind promptrepl pclose pedit perl perldo pop popup ppop preserve previous psearch ptag ptNext ptfirst ptjump ptlast ptnext ptprevious ptrewind ptselect put pwd py3do py3file python pydo pyfile quit quitall qall read recover redo redir redraw redrawstatus registers resize retab return rewind right rightbelow ruby rubydo rubyfile rundo runtime rviminfo substitute sNext sandbox sargument sall saveas sbuffer sbNext sball sbfirst sblast sbmodified sbnext sbprevious sbrewind scriptnames scriptencoding scscope set setfiletype setglobal setlocal sfind sfirst shell simalt sign silent sleep slast smagic smapclear smenu snext sniff snomagic snoremap snoremenu sort source spelldump spellgood spellinfo spellrepall spellundo spellwrong split sprevious srewind stop stag startgreplace startreplace startinsert stopinsert stjump stselect sunhide sunmap sunmenu suspend sview swapname syntax syntime syncbind tNext tabNext tabclose tabedit tabfind tabfirst tablast tabmove tabnext tabonly tabprevious tabrewind tag tcl tcldo tclfile tearoff tfirst throw tjump tlast tmenu tnext topleft tprevious trewind tselect tunmenu undo undojoin undolist unabbreviate unhide unlet unlockvar unmap unmenu unsilent update vglobal version verbose vertical vimgrep vimgrepadd visual viusage view vmap vmapclear vmenu vnew vnoremap vnoremenu vsplit vunmap vunmenu write wNext wall while winsize wincmd winpos wnext wprevious wqall wsverb wundo wviminfo xit xall xmapclear xmap xmenu xnoremap xnoremenu xunmap xunmenu yank",
+built_in:"synIDtrans atan2 range matcharg did_filetype asin feedkeys xor argv complete_check add getwinposx getqflist getwinposy screencol clearmatches empty extend getcmdpos mzeval garbagecollect setreg ceil sqrt diff_hlID inputsecret get getfperm getpid filewritable shiftwidth max sinh isdirectory synID system inputrestore winline atan visualmode inputlist tabpagewinnr round getregtype mapcheck hasmapto histdel argidx findfile sha256 exists toupper getcmdline taglist string getmatches bufnr strftime winwidth bufexists strtrans tabpagebuflist setcmdpos remote_read printf setloclist getpos getline bufwinnr float2nr len getcmdtype diff_filler luaeval resolve libcallnr foldclosedend reverse filter has_key bufname str2float strlen setline getcharmod setbufvar index searchpos shellescape undofile foldclosed setqflist buflisted strchars str2nr virtcol floor remove undotree remote_expr winheight gettabwinvar reltime cursor tabpagenr finddir localtime acos getloclist search tanh matchend rename gettabvar strdisplaywidth type abs py3eval setwinvar tolower wildmenumode log10 spellsuggest bufloaded synconcealed nextnonblank server2client complete settabwinvar executable input wincol setmatches getftype hlID inputsave searchpair or screenrow line settabvar histadd deepcopy strpart remote_peek and eval getftime submatch screenchar winsaveview matchadd mkdir screenattr getfontname libcall reltimestr getfsize winnr invert pow getbufline byte2line soundfold repeat fnameescape tagfiles sin strwidth spellbadword trunc maparg log lispindent hostname setpos globpath remote_foreground getchar synIDattr fnamemodify cscope_connection stridx winbufnr indent min complete_add nr2char searchpairpos inputdialog values matchlist items hlexists strridx browsedir expand fmod pathshorten line2byte argc count getwinvar glob foldtextresult getreg foreground cosh matchdelete has char2nr simplify histget searchdecl iconv winrestcmd pumvisible writefile foldlevel haslocaldir keys cos matchstr foldtext histnr tan tempname getcwd byteidx getbufvar islocked escape eventhandler remote_send serverlist winrestview synstack pyeval prevnonblank readfile cindent filereadable changenr exp"
+},illegal:/;/,contains:[e.NUMBER_MODE,{className:"string",begin:"'",end:"'",
+illegal:"\\n"},{className:"string",begin:/"(\\"|\n\\|[^"\n])*"/
+},e.COMMENT('"',"$"),{className:"variable",begin:/[bwtglsav]:[\w\d_]+/},{
+begin:[/\b(?:function|function!)/,/\s+/,e.IDENT_RE],className:{1:"keyword",
+3:"title"},end:"$",relevance:0,contains:[{className:"params",begin:"\\(",
+end:"\\)"}]},{className:"symbol",begin:/<[\w-]+>/}]})})()
+;hljs.registerLanguage("vim",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/wasm.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/wasm.min.js
new file mode 100644
index 0000000..8b946ca
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/wasm.min.js
@@ -0,0 +1,14 @@
+/*! `wasm` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{e.regex;const a=e.COMMENT(/\(;/,/;\)/)
+;return a.contains.push("self"),{name:"WebAssembly",keywords:{$pattern:/[\w.]+/,
+keyword:["anyfunc","block","br","br_if","br_table","call","call_indirect","data","drop","elem","else","end","export","func","global.get","global.set","local.get","local.set","local.tee","get_global","get_local","global","if","import","local","loop","memory","memory.grow","memory.size","module","mut","nop","offset","param","result","return","select","set_global","set_local","start","table","tee_local","then","type","unreachable"]
+},contains:[e.COMMENT(/;;/,/$/),a,{match:[/(?:offset|align)/,/\s*/,/=/],
+className:{1:"keyword",3:"operator"}},{className:"variable",begin:/\$[\w_]+/},{
+match:/(\((?!;)|\))+/,className:"punctuation",relevance:0},{
+begin:[/(?:func|call|call_indirect)/,/\s+/,/\$[^\s)]+/],className:{1:"keyword",
+3:"title.function"}},e.QUOTE_STRING_MODE,{match:/(i32|i64|f32|f64)(?!\.)/,
+className:"type"},{className:"keyword",
+match:/\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/
+},{className:"number",relevance:0,
+match:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/
+}]}}})();hljs.registerLanguage("wasm",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/wren.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/wren.min.js
new file mode 100644
index 0000000..bf80d0f
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/wren.min.js
@@ -0,0 +1,30 @@
+/*! `wren` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const a=e.regex,s=/[a-zA-Z]\w*/,t=["as","break","class","construct","continue","else","for","foreign","if","import","in","is","return","static","var","while"],c=["true","false","null"],n=["this","super"],r=["-","~",/\*/,"%",/\.\.\./,/\.\./,/\+/,"<<",">>",">=","<=","<",">",/\^/,/!=/,/!/,/\bis\b/,"==","&&","&",/\|\|/,/\|/,/\?:/,"="],i={
+relevance:0,match:a.concat(/\b(?!(if|while|for|else|super)\b)/,s,/(?=\s*[({])/),
+className:"title.function"},o={
+match:a.concat(a.either(a.concat(/\b(?!(if|while|for|else|super)\b)/,s),a.either(...r)),/(?=\s*\([^)]+\)\s*\{)/),
+className:"title.function",starts:{contains:[{begin:/\(/,end:/\)/,contains:[{
+relevance:0,scope:"params",match:s}]}]}},l={variants:[{
+match:[/class\s+/,s,/\s+is\s+/,s]},{match:[/class\s+/,s]}],scope:{
+2:"title.class",4:"title.class.inherited"},keywords:t},m={relevance:0,
+match:a.either(...r),className:"operator"},b={className:"property",
+begin:a.concat(/\./,a.lookahead(s)),end:s,excludeBegin:!0,relevance:0},h={
+relevance:0,match:a.concat(/\b_/,s),scope:"variable"},p={relevance:0,
+match:/\b[A-Z]+[a-z]+([A-Z]+[a-z]+)*/,scope:"title.class",keywords:{
+_:["Bool","Class","Fiber","Fn","List","Map","Null","Num","Object","Range","Sequence","String","System"]
+}},u=e.C_NUMBER_MODE,g={match:[s,/\s*/,/=/,/\s*/,/\(/,s,/\)\s*\{/],scope:{
+1:"title.function",3:"operator",6:"params"}},d=e.COMMENT(/\/\*\*/,/\*\//,{
+contains:[{match:/@[a-z]+/,scope:"doctag"},"self"]}),v={scope:"subst",
+begin:/%\(/,end:/\)/,contains:[u,p,i,h,m]},f={scope:"string",begin:/"/,end:/"/,
+contains:[v,{scope:"char.escape",variants:[{match:/\\\\|\\["0%abefnrtv]/},{
+match:/\\x[0-9A-F]{2}/},{match:/\\u[0-9A-F]{4}/},{match:/\\U[0-9A-F]{8}/}]}]}
+;v.contains.push(f);const N=[...t,...n,...c],_={relevance:0,
+match:a.concat("\\b(?!",N.join("|"),"\\b)",/[a-zA-Z_]\w*(?:[?!]|\b)/),
+className:"variable"};return{name:"Wren",keywords:{keyword:t,
+"variable.language":n,literal:c},contains:[{scope:"comment",variants:[{
+begin:[/#!?/,/[A-Za-z_]+(?=\()/],beginScope:{},keywords:{literal:c},contains:[],
+end:/\)/},{begin:[/#!?/,/[A-Za-z_]+/],beginScope:{},end:/$/}]},u,f,{
+className:"string",begin:/"""/,end:/"""/
+},d,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,p,l,g,o,i,m,h,b,_]}}})()
+;hljs.registerLanguage("wren",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/x86asm.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/x86asm.min.js
new file mode 100644
index 0000000..ff8945d
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/x86asm.min.js
@@ -0,0 +1,19 @@
+/*! `x86asm` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var s=(()=>{"use strict";return s=>({name:"Intel x86 Assembly",
+case_insensitive:!0,keywords:{$pattern:"[.%]?"+s.IDENT_RE,
+keyword:"lock rep repe repz repne repnz xaquire xrelease bnd nobnd aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63",
+built_in:"ip eip rip al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 cs ds es fs gs ss st st0 st1 st2 st3 st4 st5 st6 st7 mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 xmm0  xmm1  xmm2  xmm3  xmm4  xmm5  xmm6  xmm7  xmm8  xmm9 xmm10  xmm11 xmm12 xmm13 xmm14 xmm15 xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ymm0  ymm1  ymm2  ymm3  ymm4  ymm5  ymm6  ymm7  ymm8  ymm9 ymm10  ymm11 ymm12 ymm13 ymm14 ymm15 ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 zmm0  zmm1  zmm2  zmm3  zmm4  zmm5  zmm6  zmm7  zmm8  zmm9 zmm10  zmm11 zmm12 zmm13 zmm14 zmm15 zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 k0 k1 k2 k3 k4 k5 k6 k7 bnd0 bnd1 bnd2 bnd3 cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d r0h r1h r2h r3h r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l db dw dd dq dt ddq do dy dz resb resw resd resq rest resdq reso resy resz incbin equ times byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr",
+meta:"%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif %if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep %endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment .nolist __FILE__ __LINE__ __SECT__  __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ __UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__  __PASS__ struc endstruc istruc at iend align alignb sectalign daz nodaz up down zero default option assume public bits use16 use32 use64 default section segment absolute extern global common cpu float __utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ __float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ __Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__"
+},contains:[s.COMMENT(";","$",{relevance:0}),{className:"number",variants:[{
+begin:"\\b(?:([0-9][0-9_]*)?\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|(0[Xx])?[0-9][0-9_]*(\\.[0-9_]*)?(?:[pP](?:[+-]?[0-9_]+)?)?)\\b",
+relevance:0},{begin:"\\$[0-9][0-9A-Fa-f]*",relevance:0},{
+begin:"\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\b"
+},{
+begin:"\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\b"
+}]},s.QUOTE_STRING_MODE,{className:"string",variants:[{begin:"'",end:"[^\\\\]'"
+},{begin:"`",end:"[^\\\\]`"}],relevance:0},{className:"symbol",variants:[{
+begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)"},{
+begin:"^\\s*%%[A-Za-z0-9_$#@~.?]*:"}],relevance:0},{className:"subst",
+begin:"%[0-9]+",relevance:0},{className:"subst",begin:"%!S+",relevance:0},{
+className:"meta",begin:/^\s*\.[\w_-]+/}]})})();hljs.registerLanguage("x86asm",s)
+})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/xl.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/xl.min.js
new file mode 100644
index 0000000..ac42b64
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/xl.min.js
@@ -0,0 +1,15 @@
+/*! `xl` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const t={
+$pattern:/[a-zA-Z][a-zA-Z0-9_?]*/,
+keyword:["if","then","else","do","while","until","for","loop","import","with","is","as","where","when","by","data","constant","integer","real","text","name","boolean","symbol","infix","prefix","postfix","block","tree"],
+literal:["true","false","nil"],
+built_in:["in","mod","rem","and","or","xor","not","abs","sign","floor","ceil","sqrt","sin","cos","tan","asin","acos","atan","exp","expm1","log","log2","log10","log1p","pi","at","text_length","text_range","text_find","text_replace","contains","page","slide","basic_slide","title_slide","title","subtitle","fade_in","fade_out","fade_at","clear_color","color","line_color","line_width","texture_wrap","texture_transform","texture","scale_?x","scale_?y","scale_?z?","translate_?x","translate_?y","translate_?z?","rotate_?x","rotate_?y","rotate_?z?","rectangle","circle","ellipse","sphere","path","line_to","move_to","quad_to","curve_to","theme","background","contents","locally","time","mouse_?x","mouse_?y","mouse_buttons"].concat(["ObjectLoader","Animate","MovieCredits","Slides","Filters","Shading","Materials","LensFlare","Mapping","VLCAudioVideo","StereoDecoder","PointCloud","NetworkAccess","RemoteControl","RegExp","ChromaKey","Snowfall","NodeJS","Speech","Charts"])
+},a={className:"string",begin:'"',end:'"',illegal:"\\n"},n={
+beginKeywords:"import",end:"$",keywords:t,contains:[a]},o={className:"function",
+begin:/[a-z][^\n]*->/,returnBegin:!0,end:/->/,contains:[e.inherit(e.TITLE_MODE,{
+starts:{endsWithParent:!0,keywords:t}})]};return{name:"XL",aliases:["tao"],
+keywords:t,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,{
+className:"string",begin:"'",end:"'",illegal:"\\n"},{className:"string",
+begin:"<<",end:">>"},o,n,{className:"number",
+begin:"[0-9]+#[0-9A-Z_]+(\\.[0-9-A-Z_]+)?#?([Ee][+-]?[0-9]+)?"},e.NUMBER_MODE]}}
+})();hljs.registerLanguage("xl",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/xml.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/xml.min.js
new file mode 100644
index 0000000..b0bb61b
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/xml.min.js
@@ -0,0 +1,28 @@
+/*! `xml` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const a=e.regex,n=a.concat(/[A-Z_]/,a.optional(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),s={
+className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},t={begin:/\s/,
+contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]
+},i=e.inherit(t,{begin:/\(/,end:/\)/}),c=e.inherit(e.APOS_STRING_MODE,{
+className:"string"}),l=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),r={
+endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",
+begin:/[A-Za-z0-9._:-]+/,relevance:0},{begin:/=\s*/,relevance:0,contains:[{
+className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[s]},{
+begin:/'/,end:/'/,contains:[s]},{begin:/[^\s"'=<>`]+/}]}]}]};return{
+name:"HTML, XML",
+aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],
+case_insensitive:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,
+relevance:10,contains:[t,l,c,i,{begin:/\[/,end:/\]/,contains:[{className:"meta",
+begin:/<![a-z]/,end:/>/,contains:[t,i,l,c]}]}]},e.COMMENT(/<!--/,/-->/,{
+relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},s,{
+className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",
+begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[r],starts:{
+end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",
+begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[r],starts:{
+end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{
+className:"tag",begin:/<>|<\/>/},{className:"tag",
+begin:a.concat(/</,a.lookahead(a.concat(n,a.either(/\/>/,/>/,/\s/)))),
+end:/\/?>/,contains:[{className:"name",begin:n,relevance:0,starts:r}]},{
+className:"tag",begin:a.concat(/<\//,a.lookahead(a.concat(n,/>/))),contains:[{
+className:"name",begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}
+})();hljs.registerLanguage("xml",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/xquery.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/xquery.min.js
new file mode 100644
index 0000000..a5e87bf
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/xquery.min.js
@@ -0,0 +1,32 @@
+/*! `xquery` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>({name:"XQuery",aliases:["xpath","xq"],
+case_insensitive:!1,illegal:/(proc)|(abstract)|(extends)|(until)|(#)/,keywords:{
+$pattern:/[a-zA-Z$][a-zA-Z0-9_:-]*/,
+keyword:["module","schema","namespace","boundary-space","preserve","no-preserve","strip","default","collation","base-uri","ordering","context","decimal-format","decimal-separator","copy-namespaces","empty-sequence","except","exponent-separator","external","grouping-separator","inherit","no-inherit","lax","minus-sign","per-mille","percent","schema-attribute","schema-element","strict","unordered","zero-digit","declare","import","option","function","validate","variable","for","at","in","let","where","order","group","by","return","if","then","else","tumbling","sliding","window","start","when","only","end","previous","next","stable","ascending","descending","allowing","empty","greatest","least","some","every","satisfies","switch","case","typeswitch","try","catch","and","or","to","union","intersect","instance","of","treat","as","castable","cast","map","array","delete","insert","into","replace","value","rename","copy","modify","update"],
+type:["item","document-node","node","attribute","document","element","comment","namespace","namespace-node","processing-instruction","text","construction","xs:anyAtomicType","xs:untypedAtomic","xs:duration","xs:time","xs:decimal","xs:float","xs:double","xs:gYearMonth","xs:gYear","xs:gMonthDay","xs:gMonth","xs:gDay","xs:boolean","xs:base64Binary","xs:hexBinary","xs:anyURI","xs:QName","xs:NOTATION","xs:dateTime","xs:dateTimeStamp","xs:date","xs:string","xs:normalizedString","xs:token","xs:language","xs:NMTOKEN","xs:Name","xs:NCName","xs:ID","xs:IDREF","xs:ENTITY","xs:integer","xs:nonPositiveInteger","xs:negativeInteger","xs:long","xs:int","xs:short","xs:byte","xs:nonNegativeInteger","xs:unisignedLong","xs:unsignedInt","xs:unsignedShort","xs:unsignedByte","xs:positiveInteger","xs:yearMonthDuration","xs:dayTimeDuration"],
+literal:["eq","ne","lt","le","gt","ge","is","self::","child::","descendant::","descendant-or-self::","attribute::","following::","following-sibling::","parent::","ancestor::","ancestor-or-self::","preceding::","preceding-sibling::","NaN"]
+},contains:[{className:"variable",begin:/[$][\w\-:]+/},{className:"built_in",
+variants:[{begin:/\barray:/,
+end:/(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b/
+},{begin:/\bmap:/,
+end:/(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b/},{
+begin:/\bmath:/,
+end:/(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b/
+},{begin:/\bop:/,end:/\(/,excludeEnd:!0},{begin:/\bfn:/,end:/\(/,excludeEnd:!0
+},{
+begin:/[^</$:'"-]\b(?:abs|accumulator-(?:after|before)|adjust-(?:date(?:Time)?|time)-to-timezone|analyze-string|apply|available-(?:environment-variables|system-properties)|avg|base-uri|boolean|ceiling|codepoints?-(?:equal|to-string)|collation-key|collection|compare|concat|contains(?:-token)?|copy-of|count|current(?:-)?(?:date(?:Time)?|time|group(?:ing-key)?|output-uri|merge-(?:group|key))?data|dateTime|days?-from-(?:date(?:Time)?|duration)|deep-equal|default-(?:collation|language)|distinct-values|document(?:-uri)?|doc(?:-available)?|element-(?:available|with-id)|empty|encode-for-uri|ends-with|environment-variable|error|escape-html-uri|exactly-one|exists|false|filter|floor|fold-(?:left|right)|for-each(?:-pair)?|format-(?:date(?:Time)?|time|integer|number)|function-(?:arity|available|lookup|name)|generate-id|has-children|head|hours-from-(?:dateTime|duration|time)|id(?:ref)?|implicit-timezone|in-scope-prefixes|index-of|innermost|insert-before|iri-to-uri|json-(?:doc|to-xml)|key|lang|last|load-xquery-module|local-name(?:-from-QName)?|(?:lower|upper)-case|matches|max|minutes-from-(?:dateTime|duration|time)|min|months?-from-(?:date(?:Time)?|duration)|name(?:space-uri-?(?:for-prefix|from-QName)?)?|nilled|node-name|normalize-(?:space|unicode)|not|number|one-or-more|outermost|parse-(?:ietf-date|json)|path|position|(?:prefix-from-)?QName|random-number-generator|regex-group|remove|replace|resolve-(?:QName|uri)|reverse|root|round(?:-half-to-even)?|seconds-from-(?:dateTime|duration|time)|snapshot|sort|starts-with|static-base-uri|stream-available|string-?(?:join|length|to-codepoints)?|subsequence|substring-?(?:after|before)?|sum|system-property|tail|timezone-from-(?:date(?:Time)?|time)|tokenize|trace|trans(?:form|late)|true|type-available|unordered|unparsed-(?:entity|text)?-?(?:public-id|uri|available|lines)?|uri-collection|xml-to-json|years?-from-(?:date(?:Time)?|duration)|zero-or-one)\b/
+},{begin:/\blocal:/,end:/\(/,excludeEnd:!0},{begin:/\bzip:/,
+end:/(?:zip-file|(?:xml|html|text|binary)-entry| (?:update-)?entries)\b/},{
+begin:/\b(?:util|db|functx|app|xdmp|xmldb):/,end:/\(/,excludeEnd:!0}]},{
+className:"string",variants:[{begin:/"/,end:/"/,contains:[{begin:/""/,
+relevance:0}]},{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]}]},{
+className:"number",
+begin:/(\b0[0-7_]+)|(\b0x[0-9a-fA-F_]+)|(\b[1-9][0-9_]*(\.[0-9_]+)?)|[0_]\b/,
+relevance:0},{className:"comment",begin:/\(:/,end:/:\)/,relevance:10,contains:[{
+className:"doctag",begin:/@\w+/}]},{className:"meta",begin:/%[\w\-:]+/},{
+className:"title",begin:/\bxquery version "[13]\.[01]"\s?(?:encoding ".+")?/,
+end:/;/},{
+beginKeywords:"element attribute comment document processing-instruction",
+end:/\{/,excludeEnd:!0},{begin:/<([\w._:-]+)(\s+\S*=('|").*('|"))?>/,
+end:/(\/[\w._:-]+>)/,subLanguage:"xml",contains:[{begin:/\{/,end:/\}/,
+subLanguage:"xquery"},"self"]}]})})();hljs.registerLanguage("xquery",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/yaml.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/yaml.min.js
new file mode 100644
index 0000000..cb79aae
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/yaml.min.js
@@ -0,0 +1,25 @@
+/*! `yaml` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{
+const n="true false yes no null",a="[\\w#;/?:@&=+$,.~*'()[\\]]+",s={
+className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/
+},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable",
+variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},i=e.inherit(s,{
+variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),l={
+end:",",endsWithParent:!0,excludeEnd:!0,keywords:n,relevance:0},t={begin:/\{/,
+end:/\}/,contains:[l],illegal:"\\n",relevance:0},g={begin:"\\[",end:"\\]",
+contains:[l],illegal:"\\n",relevance:0},b=[{className:"attr",variants:[{
+begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{
+begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---\\s*$",
+relevance:10},{className:"string",
+begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{
+begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,
+relevance:0},{className:"type",begin:"!\\w+!"+a},{className:"type",
+begin:"!<"+a+">"},{className:"type",begin:"!"+a},{className:"type",begin:"!!"+a
+},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",
+begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",
+relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},{
+className:"number",
+begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"
+},{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},t,g,s],r=[...b]
+;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0,
+aliases:["yml"],contains:b}}})();hljs.registerLanguage("yaml",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/languages/zephir.min.js b/node_modules/mavon-editor/dist/highlightjs/languages/zephir.min.js
new file mode 100644
index 0000000..d678288
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/languages/zephir.min.js
@@ -0,0 +1,18 @@
+/*! `zephir` grammar compiled for Highlight.js 11.3.1 */
+(()=>{var e=(()=>{"use strict";return e=>{const n={className:"string",
+contains:[e.BACKSLASH_ESCAPE],variants:[e.inherit(e.APOS_STRING_MODE,{
+illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]
+},a=e.UNDERSCORE_TITLE_MODE,s={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]
+},i="namespace class interface use extends function return abstract final public protected private static deprecated throw try catch Exception echo empty isset instanceof unset let var new const self require if else elseif switch case default do while loop for continue break likely unlikely __LINE__ __FILE__ __DIR__ __FUNCTION__ __CLASS__ __TRAIT__ __METHOD__ __NAMESPACE__ array boolean float double integer object resource string char long unsigned bool int uint ulong uchar true false null undefined"
+;return{name:"Zephir",aliases:["zep"],keywords:i,
+contains:[e.C_LINE_COMMENT_MODE,e.COMMENT(/\/\*/,/\*\//,{contains:[{
+className:"doctag",begin:/@[A-Za-z]+/}]}),{className:"string",
+begin:/<<<['"]?\w+['"]?$/,end:/^\w+;/,contains:[e.BACKSLASH_ESCAPE]},{
+begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",
+beginKeywords:"function fn",end:/[;{]/,excludeEnd:!0,illegal:/\$|\[|%/,
+contains:[a,{className:"params",begin:/\(/,end:/\)/,keywords:i,
+contains:["self",e.C_BLOCK_COMMENT_MODE,n,s]}]},{className:"class",
+beginKeywords:"class interface",end:/\{/,excludeEnd:!0,illegal:/[:($"]/,
+contains:[{beginKeywords:"extends implements"},a]},{beginKeywords:"namespace",
+end:/;/,illegal:/[.']/,contains:[a]},{beginKeywords:"use",end:/;/,contains:[a]
+},{begin:/=>/},n,s]}}})();hljs.registerLanguage("zephir",e)})();
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/a11y-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/a11y-dark.min.css
new file mode 100644
index 0000000..7820d7d
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/a11y-dark.min.css
@@ -0,0 +1,7 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
+  Theme: a11y-dark
+  Author: @ericwbailey
+  Maintainer: @ericwbailey
+
+  Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css
+*/.hljs{background:#2b2b2b;color:#f8f8f2}.hljs-comment,.hljs-quote{color:#d4d0ab}.hljs-deletion,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#ffa07a}.hljs-built_in,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-type{color:#f5ab35}.hljs-attribute{color:gold}.hljs-addition,.hljs-bullet,.hljs-string,.hljs-symbol{color:#abe338}.hljs-section,.hljs-title{color:#00e0e0}.hljs-keyword,.hljs-selector-tag{color:#dcc6e0}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}@media screen and (-ms-high-contrast:active){.hljs-addition,.hljs-attribute,.hljs-built_in,.hljs-bullet,.hljs-comment,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-quote,.hljs-string,.hljs-symbol,.hljs-type{color:highlight}.hljs-keyword,.hljs-selector-tag{font-weight:700}}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/a11y-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/a11y-light.min.css
new file mode 100644
index 0000000..8b5ab90
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/a11y-light.min.css
@@ -0,0 +1,7 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
+  Theme: a11y-light
+  Author: @ericwbailey
+  Maintainer: @ericwbailey
+
+  Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css
+*/.hljs{background:#fefefe;color:#545454}.hljs-comment,.hljs-quote{color:#696969}.hljs-deletion,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#d91e18}.hljs-attribute,.hljs-built_in,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-type{color:#aa5d00}.hljs-addition,.hljs-bullet,.hljs-string,.hljs-symbol{color:green}.hljs-section,.hljs-title{color:#007faa}.hljs-keyword,.hljs-selector-tag{color:#7928a1}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}@media screen and (-ms-high-contrast:active){.hljs-addition,.hljs-attribute,.hljs-built_in,.hljs-bullet,.hljs-comment,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-quote,.hljs-string,.hljs-symbol,.hljs-type{color:highlight}.hljs-keyword,.hljs-selector-tag{font-weight:700}}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/agate.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/agate.min.css
new file mode 100644
index 0000000..bdbeed4
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/agate.min.css
@@ -0,0 +1,20 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
+   Theme: Agate
+   Author: (c) Taufik Nurrohman <hi@taufik-nurrohman.com>
+   Maintainer: @taufik-nurrohman
+   Updated: 2021-04-24
+
+   #333
+   #62c8f3
+   #7bd694
+   #888
+   #a2fca2
+   #ade5fc
+   #b8d8a2
+   #c6b4f0
+   #d36363
+   #fc9b9b
+   #fcc28c
+   #ffa
+   #fff
+*/.hljs{background:#333;color:#fff}.hljs-doctag,.hljs-meta-keyword,.hljs-name,.hljs-strong{font-weight:700}.hljs-code,.hljs-emphasis{font-style:italic}.hljs-section,.hljs-tag{color:#62c8f3}.hljs-selector-class,.hljs-selector-id,.hljs-template-variable,.hljs-variable{color:#ade5fc}.hljs-meta-string,.hljs-string{color:#a2fca2}.hljs-attr,.hljs-quote,.hljs-selector-attr{color:#7bd694}.hljs-tag .hljs-attr{color:inherit}.hljs-attribute,.hljs-title,.hljs-type{color:#ffa}.hljs-number,.hljs-symbol{color:#d36363}.hljs-bullet,.hljs-template-tag{color:#b8d8a2}.hljs-built_in,.hljs-keyword,.hljs-literal,.hljs-selector-tag{color:#fcc28c}.hljs-code,.hljs-comment,.hljs-formula{color:#888}.hljs-link,.hljs-regexp,.hljs-selector-pseudo{color:#c6b4f0}.hljs-meta{color:#fc9b9b}.hljs-deletion{background:#fc9b9b;color:#333}.hljs-addition{background:#a2fca2;color:#333}.hljs-subst{color:#fff}.hljs a{color:inherit}.hljs a:focus,.hljs a:hover{color:inherit;text-decoration:underline}.hljs mark{background:#555;color:inherit}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/an-old-hope.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/an-old-hope.min.css
new file mode 100644
index 0000000..ffc7f8c
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/an-old-hope.min.css
@@ -0,0 +1,9 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
+  Theme: An Old Hope – Star Wars Syntax
+  Author: (c) Gustavo Costa <gusbemacbe@gmail.com>
+  Maintainer: @gusbemacbe
+
+  Original theme - Ocean Dark Theme – by https://github.com/gavsiu
+  Based on Jesse Leite's Atom syntax theme 'An Old Hope'
+    https://github.com/JesseLeite/an-old-hope-syntax-atom
+*/.hljs{background:#1c1d21;color:#c0c5ce}.hljs-comment,.hljs-quote{color:#b6b18b}.hljs-deletion,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#eb3c54}.hljs-built_in,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-type{color:#e7ce56}.hljs-attribute{color:#ee7c2b}.hljs-addition,.hljs-bullet,.hljs-string,.hljs-symbol{color:#4fb4d7}.hljs-section,.hljs-title{color:#78bb65}.hljs-keyword,.hljs-selector-tag{color:#b45ea4}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/androidstudio.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/androidstudio.min.css
new file mode 100644
index 0000000..7fbe783
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/androidstudio.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a9b7c6;background:#282b2e}.hljs-bullet,.hljs-literal,.hljs-number,.hljs-symbol{color:#6897bb}.hljs-deletion,.hljs-keyword,.hljs-selector-tag{color:#cc7832}.hljs-link,.hljs-template-variable,.hljs-variable{color:#629755}.hljs-comment,.hljs-quote{color:grey}.hljs-meta{color:#bbb529}.hljs-addition,.hljs-attribute,.hljs-string{color:#6a8759}.hljs-section,.hljs-title,.hljs-type{color:#ffc66d}.hljs-name,.hljs-selector-class,.hljs-selector-id{color:#e8bf6a}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/arduino-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/arduino-light.min.css
new file mode 100644
index 0000000..cadb130
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/arduino-light.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#fff;color:#434f54}.hljs-subst{color:#434f54}.hljs-attribute,.hljs-doctag,.hljs-keyword,.hljs-name,.hljs-selector-tag{color:#00979d}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-code,.hljs-literal{color:#d35400}.hljs-link,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#00979d}.hljs-deletion,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-string,.hljs-template-tag,.hljs-type{color:#005c5f}.hljs-comment{color:rgba(149,165,166,.8)}.hljs-meta .hljs-keyword{color:#728e00}.hljs-meta{color:#434f54}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-function{color:#728e00}.hljs-section,.hljs-title{color:#800;font-weight:700}.hljs-number{color:#8a7b52}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/arta.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/arta.min.css
new file mode 100644
index 0000000..8dcdc74
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/arta.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#222;color:#aaa}.hljs-subst{color:#aaa}.hljs-section{color:#fff}.hljs-comment,.hljs-meta,.hljs-quote{color:#444}.hljs-bullet,.hljs-regexp,.hljs-string,.hljs-symbol{color:#fc3}.hljs-addition,.hljs-number{color:#0c6}.hljs-attribute,.hljs-built_in,.hljs-link,.hljs-literal,.hljs-template-variable,.hljs-type{color:#32aaee}.hljs-keyword,.hljs-name,.hljs-selector-class,.hljs-selector-id,.hljs-selector-tag{color:#64a}.hljs-deletion,.hljs-template-tag,.hljs-title,.hljs-variable{color:#b16}.hljs-doctag,.hljs-section,.hljs-strong{font-weight:700}.hljs-emphasis{font-style:italic}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/ascetic.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/ascetic.min.css
new file mode 100644
index 0000000..3c9fe03
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/ascetic.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#fff;color:#000}.hljs-addition,.hljs-attribute,.hljs-bullet,.hljs-link,.hljs-section,.hljs-string,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#888}.hljs-comment,.hljs-deletion,.hljs-meta,.hljs-quote{color:#ccc}.hljs-keyword,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-strong,.hljs-type{font-weight:700}.hljs-emphasis{font-style:italic}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/atom-one-dark-reasonable.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/atom-one-dark-reasonable.min.css
new file mode 100644
index 0000000..9296216
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/atom-one-dark-reasonable.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#abb2bf;background:#282c34}.hljs-keyword,.hljs-operator,.hljs-pattern-match{color:#f92672}.hljs-function,.hljs-pattern-match .hljs-constructor{color:#61aeee}.hljs-function .hljs-params{color:#a6e22e}.hljs-function .hljs-params .hljs-typing{color:#fd971f}.hljs-module-access .hljs-module{color:#7e57c2}.hljs-constructor{color:#e2b93d}.hljs-constructor .hljs-string{color:#9ccc65}.hljs-comment,.hljs-quote{color:#b18eb1;font-style:italic}.hljs-doctag,.hljs-formula{color:#c678dd}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#98c379}.hljs-built_in,.hljs-class .hljs-title,.hljs-title.class_{color:#e6c07b}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#d19a66}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#61aeee}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/atom-one-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/atom-one-dark.min.css
new file mode 100644
index 0000000..5344ee3
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/atom-one-dark.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#abb2bf;background:#282c34}.hljs-comment,.hljs-quote{color:#5c6370;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#c678dd}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#98c379}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#d19a66}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#61aeee}.hljs-built_in,.hljs-class .hljs-title,.hljs-title.class_{color:#e6c07b}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/atom-one-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/atom-one-light.min.css
new file mode 100644
index 0000000..df0268a
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/atom-one-light.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#383a42;background:#fafafa}.hljs-comment,.hljs-quote{color:#a0a1a7;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#a626a4}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e45649}.hljs-literal{color:#0184bb}.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#50a14f}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#986801}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#4078f2}.hljs-built_in,.hljs-class .hljs-title,.hljs-title.class_{color:#c18401}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/3024.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/3024.min.css
new file mode 100644
index 0000000..55cff40
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/3024.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: 3024
+  Author: Jan T. Sott (http://github.com/idleberg)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a5a2a2;background:#090300}.hljs ::selection,.hljs::selection{background-color:#4a4543;color:#a5a2a2}.hljs-comment{color:#5c5855}.hljs-tag{color:#807d7c}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a5a2a2}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#db2d20}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#e8bbd0}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fded02}.hljs-strong{font-weight:700;color:#fded02}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#01a252}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#b5e4f4}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#01a0e4}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a16a94}.hljs-emphasis{color:#a16a94;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#cdab53}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/apathy.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/apathy.min.css
new file mode 100644
index 0000000..44368e6
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/apathy.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Apathy
+  Author: Jannik Siebert (https://github.com/janniks)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#81b5ac;background:#031a16}.hljs ::selection,.hljs::selection{background-color:#184e45;color:#81b5ac}.hljs-comment{color:#2b685e}.hljs-tag{color:#5f9c92}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#81b5ac}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#3e9688}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#3e7996}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#3e4c96}.hljs-strong{font-weight:700;color:#3e4c96}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#883e96}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#963e4c}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#96883e}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#4c963e}.hljs-emphasis{color:#4c963e;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#3e965b}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/apprentice.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/apprentice.min.css
new file mode 100644
index 0000000..00dc982
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/apprentice.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Apprentice
+  Author: romainl
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#bcbcbc;background:#262626}.hljs ::selection,.hljs::selection{background-color:#333;color:#bcbcbc}.hljs-comment{color:#6c6c6c}.hljs-tag{color:#787878}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#bcbcbc}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ff8700}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#5f8787}.hljs-strong{font-weight:700;color:#5f8787}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#87af87}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#5f875f}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#ffffaf}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#87afd7}.hljs-emphasis{color:#87afd7;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#5f87af}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/ashes.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ashes.min.css
new file mode 100644
index 0000000..4403f21
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ashes.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Ashes
+  Author: Jannik Siebert (https://github.com/janniks)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c7ccd1;background:#1c2023}.hljs ::selection,.hljs::selection{background-color:#565e65;color:#c7ccd1}.hljs-comment{color:#747c84}.hljs-tag{color:#adb3ba}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c7ccd1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#c7ae95}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#c7c795}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#aec795}.hljs-strong{font-weight:700;color:#aec795}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#95c7ae}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#95aec7}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#ae95c7}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c795ae}.hljs-emphasis{color:#c795ae;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c79595}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-cave-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-cave-light.min.css
new file mode 100644
index 0000000..25fcdf4
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-cave-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Atelier Cave Light
+  Author: Bram de Haan (http://atelierbramdehaan.nl)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#585260;background:#efecf4}.hljs ::selection,.hljs::selection{background-color:#8b8792;color:#585260}.hljs-comment{color:#7e7887}.hljs-tag{color:#655f6d}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#585260}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#be4678}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aa573c}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a06e3b}.hljs-strong{font-weight:700;color:#a06e3b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#2a9292}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#398bc6}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#576ddb}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#955ae7}.hljs-emphasis{color:#955ae7;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#bf40bf}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-cave.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-cave.min.css
new file mode 100644
index 0000000..e51fe0a
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-cave.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Atelier Cave
+  Author: Bram de Haan (http://atelierbramdehaan.nl)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#8b8792;background:#19171c}.hljs ::selection,.hljs::selection{background-color:#585260;color:#8b8792}.hljs-comment{color:#655f6d}.hljs-tag{color:#7e7887}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#8b8792}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#be4678}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aa573c}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a06e3b}.hljs-strong{font-weight:700;color:#a06e3b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#2a9292}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#398bc6}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#576ddb}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#955ae7}.hljs-emphasis{color:#955ae7;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#bf40bf}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-dune-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-dune-light.min.css
new file mode 100644
index 0000000..f310ce1
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-dune-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Atelier Dune Light
+  Author: Bram de Haan (http://atelierbramdehaan.nl)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#6e6b5e;background:#fefbec}.hljs ::selection,.hljs::selection{background-color:#a6a28c;color:#6e6b5e}.hljs-comment{color:#999580}.hljs-tag{color:#7d7a68}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#6e6b5e}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d73737}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#b65611}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ae9513}.hljs-strong{font-weight:700;color:#ae9513}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#60ac39}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#1fad83}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#6684e1}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b854d4}.hljs-emphasis{color:#b854d4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d43552}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-dune.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-dune.min.css
new file mode 100644
index 0000000..05b260c
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-dune.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Atelier Dune
+  Author: Bram de Haan (http://atelierbramdehaan.nl)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a6a28c;background:#20201d}.hljs ::selection,.hljs::selection{background-color:#6e6b5e;color:#a6a28c}.hljs-comment{color:#7d7a68}.hljs-tag{color:#999580}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a6a28c}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d73737}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#b65611}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ae9513}.hljs-strong{font-weight:700;color:#ae9513}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#60ac39}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#1fad83}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#6684e1}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b854d4}.hljs-emphasis{color:#b854d4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d43552}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-estuary-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-estuary-light.min.css
new file mode 100644
index 0000000..90f8be4
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-estuary-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Atelier Estuary Light
+  Author: Bram de Haan (http://atelierbramdehaan.nl)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#5f5e4e;background:#f4f3ec}.hljs ::selection,.hljs::selection{background-color:#929181;color:#5f5e4e}.hljs-comment{color:#878573}.hljs-tag{color:#6c6b5a}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#5f5e4e}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ba6236}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ae7313}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a5980d}.hljs-strong{font-weight:700;color:#a5980d}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#7d9726}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#5b9d48}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#36a166}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#5f9182}.hljs-emphasis{color:#5f9182;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#9d6c7c}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-estuary.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-estuary.min.css
new file mode 100644
index 0000000..b088f77
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-estuary.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Atelier Estuary
+  Author: Bram de Haan (http://atelierbramdehaan.nl)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#929181;background:#22221b}.hljs ::selection,.hljs::selection{background-color:#5f5e4e;color:#929181}.hljs-comment{color:#6c6b5a}.hljs-tag{color:#878573}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#929181}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ba6236}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ae7313}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a5980d}.hljs-strong{font-weight:700;color:#a5980d}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#7d9726}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#5b9d48}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#36a166}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#5f9182}.hljs-emphasis{color:#5f9182;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#9d6c7c}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-forest-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-forest-light.min.css
new file mode 100644
index 0000000..a54242d
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-forest-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Atelier Forest Light
+  Author: Bram de Haan (http://atelierbramdehaan.nl)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#68615e;background:#f1efee}.hljs ::selection,.hljs::selection{background-color:#a8a19f;color:#68615e}.hljs-comment{color:#9c9491}.hljs-tag{color:#766e6b}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#68615e}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f22c40}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#df5320}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#c38418}.hljs-strong{font-weight:700;color:#c38418}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#7b9726}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#3d97b8}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#407ee7}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6666ea}.hljs-emphasis{color:#6666ea;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c33ff3}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-forest.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-forest.min.css
new file mode 100644
index 0000000..e6ca2d5
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-forest.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Atelier Forest
+  Author: Bram de Haan (http://atelierbramdehaan.nl)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a8a19f;background:#1b1918}.hljs ::selection,.hljs::selection{background-color:#68615e;color:#a8a19f}.hljs-comment{color:#766e6b}.hljs-tag{color:#9c9491}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a8a19f}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f22c40}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#df5320}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#c38418}.hljs-strong{font-weight:700;color:#c38418}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#7b9726}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#3d97b8}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#407ee7}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6666ea}.hljs-emphasis{color:#6666ea;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c33ff3}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-heath-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-heath-light.min.css
new file mode 100644
index 0000000..dc38ca0
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-heath-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Atelier Heath Light
+  Author: Bram de Haan (http://atelierbramdehaan.nl)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#695d69;background:#f7f3f7}.hljs ::selection,.hljs::selection{background-color:#ab9bab;color:#695d69}.hljs-comment{color:#9e8f9e}.hljs-tag{color:#776977}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#695d69}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ca402b}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#a65926}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#bb8a35}.hljs-strong{font-weight:700;color:#bb8a35}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#918b3b}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#159393}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#516aec}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#7b59c0}.hljs-emphasis{color:#7b59c0;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c3c}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-heath.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-heath.min.css
new file mode 100644
index 0000000..4656ef6
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-heath.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Atelier Heath
+  Author: Bram de Haan (http://atelierbramdehaan.nl)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#ab9bab;background:#1b181b}.hljs ::selection,.hljs::selection{background-color:#695d69;color:#ab9bab}.hljs-comment{color:#776977}.hljs-tag{color:#9e8f9e}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#ab9bab}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ca402b}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#a65926}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#bb8a35}.hljs-strong{font-weight:700;color:#bb8a35}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#918b3b}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#159393}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#516aec}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#7b59c0}.hljs-emphasis{color:#7b59c0;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c3c}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-lakeside-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-lakeside-light.min.css
new file mode 100644
index 0000000..c1252e3
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-lakeside-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Atelier Lakeside Light
+  Author: Bram de Haan (http://atelierbramdehaan.nl)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#516d7b;background:#ebf8ff}.hljs ::selection,.hljs::selection{background-color:#7ea2b4;color:#516d7b}.hljs-comment{color:#7195a8}.hljs-tag{color:#5a7b8c}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#516d7b}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d22d72}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#935c25}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#8a8a0f}.hljs-strong{font-weight:700;color:#8a8a0f}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#568c3b}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#2d8f6f}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#257fad}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6b6bb8}.hljs-emphasis{color:#6b6bb8;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b72dd2}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-lakeside.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-lakeside.min.css
new file mode 100644
index 0000000..efcb981
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-lakeside.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Atelier Lakeside
+  Author: Bram de Haan (http://atelierbramdehaan.nl)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#7ea2b4;background:#161b1d}.hljs ::selection,.hljs::selection{background-color:#516d7b;color:#7ea2b4}.hljs-comment{color:#5a7b8c}.hljs-tag{color:#7195a8}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#7ea2b4}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d22d72}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#935c25}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#8a8a0f}.hljs-strong{font-weight:700;color:#8a8a0f}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#568c3b}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#2d8f6f}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#257fad}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6b6bb8}.hljs-emphasis{color:#6b6bb8;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b72dd2}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-plateau-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-plateau-light.min.css
new file mode 100644
index 0000000..44362de
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-plateau-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Atelier Plateau Light
+  Author: Bram de Haan (http://atelierbramdehaan.nl)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#585050;background:#f4ecec}.hljs ::selection,.hljs::selection{background-color:#8a8585;color:#585050}.hljs-comment{color:#7e7777}.hljs-tag{color:#655d5d}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#585050}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ca4949}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#b45a3c}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a06e3b}.hljs-strong{font-weight:700;color:#a06e3b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#4b8b8b}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#5485b6}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#7272ca}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#8464c4}.hljs-emphasis{color:#8464c4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#bd5187}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-plateau.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-plateau.min.css
new file mode 100644
index 0000000..7051d01
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-plateau.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Atelier Plateau
+  Author: Bram de Haan (http://atelierbramdehaan.nl)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#8a8585;background:#1b1818}.hljs ::selection,.hljs::selection{background-color:#585050;color:#8a8585}.hljs-comment{color:#655d5d}.hljs-tag{color:#7e7777}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#8a8585}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ca4949}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#b45a3c}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a06e3b}.hljs-strong{font-weight:700;color:#a06e3b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#4b8b8b}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#5485b6}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#7272ca}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#8464c4}.hljs-emphasis{color:#8464c4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#bd5187}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-savanna-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-savanna-light.min.css
new file mode 100644
index 0000000..4d63650
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-savanna-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Atelier Savanna Light
+  Author: Bram de Haan (http://atelierbramdehaan.nl)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#526057;background:#ecf4ee}.hljs ::selection,.hljs::selection{background-color:#87928a;color:#526057}.hljs-comment{color:#78877d}.hljs-tag{color:#5f6d64}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#526057}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#b16139}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#9f713c}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a07e3b}.hljs-strong{font-weight:700;color:#a07e3b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#489963}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#1c9aa0}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#478c90}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#55859b}.hljs-emphasis{color:#55859b;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#867469}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-savanna.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-savanna.min.css
new file mode 100644
index 0000000..286c1d9
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-savanna.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Atelier Savanna
+  Author: Bram de Haan (http://atelierbramdehaan.nl)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#87928a;background:#171c19}.hljs ::selection,.hljs::selection{background-color:#526057;color:#87928a}.hljs-comment{color:#5f6d64}.hljs-tag{color:#78877d}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#87928a}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#b16139}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#9f713c}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a07e3b}.hljs-strong{font-weight:700;color:#a07e3b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#489963}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#1c9aa0}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#478c90}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#55859b}.hljs-emphasis{color:#55859b;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#867469}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-seaside-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-seaside-light.min.css
new file mode 100644
index 0000000..524a951
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-seaside-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Atelier Seaside Light
+  Author: Bram de Haan (http://atelierbramdehaan.nl)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#5e6e5e;background:#f4fbf4}.hljs ::selection,.hljs::selection{background-color:#8ca68c;color:#5e6e5e}.hljs-comment{color:#809980}.hljs-tag{color:#687d68}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#5e6e5e}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#e6193c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#87711d}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#98981b}.hljs-strong{font-weight:700;color:#98981b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#29a329}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#1999b3}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3d62f5}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ad2bee}.hljs-emphasis{color:#ad2bee;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#e619c3}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-seaside.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-seaside.min.css
new file mode 100644
index 0000000..f1b2fe0
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-seaside.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Atelier Seaside
+  Author: Bram de Haan (http://atelierbramdehaan.nl)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#8ca68c;background:#131513}.hljs ::selection,.hljs::selection{background-color:#5e6e5e;color:#8ca68c}.hljs-comment{color:#687d68}.hljs-tag{color:#809980}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#8ca68c}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#e6193c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#87711d}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#98981b}.hljs-strong{font-weight:700;color:#98981b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#29a329}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#1999b3}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3d62f5}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ad2bee}.hljs-emphasis{color:#ad2bee;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#e619c3}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-sulphurpool-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-sulphurpool-light.min.css
new file mode 100644
index 0000000..8e038f5
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-sulphurpool-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Atelier Sulphurpool Light
+  Author: Bram de Haan (http://atelierbramdehaan.nl)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#5e6687;background:#f5f7ff}.hljs ::selection,.hljs::selection{background-color:#979db4;color:#5e6687}.hljs-comment{color:#898ea4}.hljs-tag{color:#6b7394}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#5e6687}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#c94922}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#c76b29}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#c08b30}.hljs-strong{font-weight:700;color:#c08b30}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#ac9739}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#22a2c9}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3d8fd1}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6679cc}.hljs-emphasis{color:#6679cc;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#9c637a}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-sulphurpool.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-sulphurpool.min.css
new file mode 100644
index 0000000..519aa38
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atelier-sulphurpool.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Atelier Sulphurpool
+  Author: Bram de Haan (http://atelierbramdehaan.nl)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#979db4;background:#202746}.hljs ::selection,.hljs::selection{background-color:#5e6687;color:#979db4}.hljs-comment{color:#6b7394}.hljs-tag{color:#898ea4}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#979db4}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#c94922}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#c76b29}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#c08b30}.hljs-strong{font-weight:700;color:#c08b30}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#ac9739}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#22a2c9}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3d8fd1}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6679cc}.hljs-emphasis{color:#6679cc;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#9c637a}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/atlas.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atlas.min.css
new file mode 100644
index 0000000..62a8848
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/atlas.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Atlas
+  Author: Alex Lende (https://ajlende.com)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a1a19a;background:#002635}.hljs ::selection,.hljs::selection{background-color:#517f8d;color:#a1a19a}.hljs-comment{color:#6c8b91}.hljs-tag{color:#869696}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a1a19a}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ff5a67}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f08e48}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffcc1b}.hljs-strong{font-weight:700;color:#ffcc1b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#7fc06e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#14747e}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#5dd7b9}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#9a70a4}.hljs-emphasis{color:#9a70a4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c43060}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/bespin.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/bespin.min.css
new file mode 100644
index 0000000..234cb64
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/bespin.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Bespin
+  Author: Jan T. Sott
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#8a8986;background:#28211c}.hljs ::selection,.hljs::selection{background-color:#5e5d5c;color:#8a8986}.hljs-comment{color:#666}.hljs-tag{color:#797977}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#8a8986}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#cf6a4c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#cf7d34}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f9ee98}.hljs-strong{font-weight:700;color:#f9ee98}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#54be0d}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#afc4db}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#5ea6ea}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#9b859d}.hljs-emphasis{color:#9b859d;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#937121}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-bathory.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-bathory.min.css
new file mode 100644
index 0000000..b315d96
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-bathory.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Black Metal (Bathory)
+  Author: metalelf0 (https://github.com/metalelf0)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c1c1;background:#000}.hljs ::selection,.hljs::selection{background-color:#222;color:#c1c1c1}.hljs-comment{color:#333}.hljs-tag{color:#999}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c1c1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aaa}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#e78a53}.hljs-strong{font-weight:700;color:#e78a53}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#fbcb97}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#aaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#888}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#999}.hljs-emphasis{color:#999;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#444}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-burzum.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-burzum.min.css
new file mode 100644
index 0000000..7729779
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-burzum.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Black Metal (Burzum)
+  Author: metalelf0 (https://github.com/metalelf0)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c1c1;background:#000}.hljs ::selection,.hljs::selection{background-color:#222;color:#c1c1c1}.hljs-comment{color:#333}.hljs-tag{color:#999}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c1c1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aaa}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#9ba}.hljs-strong{font-weight:700;color:#9ba}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#dec}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#aaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#888}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#999}.hljs-emphasis{color:#999;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#444}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-dark-funeral.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-dark-funeral.min.css
new file mode 100644
index 0000000..7bffc28
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-dark-funeral.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Black Metal (Dark Funeral)
+  Author: metalelf0 (https://github.com/metalelf0)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c1c1;background:#000}.hljs ::selection,.hljs::selection{background-color:#222;color:#c1c1c1}.hljs-comment{color:#333}.hljs-tag{color:#999}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c1c1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aaa}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#5f81a5}.hljs-strong{font-weight:700;color:#5f81a5}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#d0dfee}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#aaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#888}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#999}.hljs-emphasis{color:#999;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#444}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-gorgoroth.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-gorgoroth.min.css
new file mode 100644
index 0000000..0fbfafe
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-gorgoroth.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Black Metal (Gorgoroth)
+  Author: metalelf0 (https://github.com/metalelf0)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c1c1;background:#000}.hljs ::selection,.hljs::selection{background-color:#222;color:#c1c1c1}.hljs-comment{color:#333}.hljs-tag{color:#999}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c1c1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aaa}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#8c7f70}.hljs-strong{font-weight:700;color:#8c7f70}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#9b8d7f}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#aaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#888}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#999}.hljs-emphasis{color:#999;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#444}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-immortal.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-immortal.min.css
new file mode 100644
index 0000000..1cbd00a
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-immortal.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Black Metal (Immortal)
+  Author: metalelf0 (https://github.com/metalelf0)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c1c1;background:#000}.hljs ::selection,.hljs::selection{background-color:#222;color:#c1c1c1}.hljs-comment{color:#333}.hljs-tag{color:#999}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c1c1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aaa}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#567}.hljs-strong{font-weight:700;color:#567}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#79b}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#aaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#888}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#999}.hljs-emphasis{color:#999;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#444}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-khold.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-khold.min.css
new file mode 100644
index 0000000..1ca9ceb
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-khold.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Black Metal (Khold)
+  Author: metalelf0 (https://github.com/metalelf0)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c1c1;background:#000}.hljs ::selection,.hljs::selection{background-color:#222;color:#c1c1c1}.hljs-comment{color:#333}.hljs-tag{color:#999}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c1c1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aaa}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#974b46}.hljs-strong{font-weight:700;color:#974b46}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#eceee3}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#aaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#888}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#999}.hljs-emphasis{color:#999;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#444}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-marduk.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-marduk.min.css
new file mode 100644
index 0000000..1ecf596
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-marduk.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Black Metal (Marduk)
+  Author: metalelf0 (https://github.com/metalelf0)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c1c1;background:#000}.hljs ::selection,.hljs::selection{background-color:#222;color:#c1c1c1}.hljs-comment{color:#333}.hljs-tag{color:#999}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c1c1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aaa}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#626b67}.hljs-strong{font-weight:700;color:#626b67}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a5aaa7}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#aaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#888}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#999}.hljs-emphasis{color:#999;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#444}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-mayhem.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-mayhem.min.css
new file mode 100644
index 0000000..d031b52
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-mayhem.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Black Metal (Mayhem)
+  Author: metalelf0 (https://github.com/metalelf0)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c1c1;background:#000}.hljs ::selection,.hljs::selection{background-color:#222;color:#c1c1c1}.hljs-comment{color:#333}.hljs-tag{color:#999}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c1c1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aaa}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#eecc6c}.hljs-strong{font-weight:700;color:#eecc6c}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#f3ecd4}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#aaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#888}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#999}.hljs-emphasis{color:#999;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#444}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-nile.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-nile.min.css
new file mode 100644
index 0000000..9b991b6
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-nile.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Black Metal (Nile)
+  Author: metalelf0 (https://github.com/metalelf0)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c1c1;background:#000}.hljs ::selection,.hljs::selection{background-color:#222;color:#c1c1c1}.hljs-comment{color:#333}.hljs-tag{color:#999}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c1c1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aaa}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#775}.hljs-strong{font-weight:700;color:#775}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a98}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#aaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#888}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#999}.hljs-emphasis{color:#999;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#444}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-venom.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-venom.min.css
new file mode 100644
index 0000000..17e9ccb
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal-venom.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Black Metal (Venom)
+  Author: metalelf0 (https://github.com/metalelf0)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c1c1;background:#000}.hljs ::selection,.hljs::selection{background-color:#222;color:#c1c1c1}.hljs-comment{color:#333}.hljs-tag{color:#999}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c1c1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aaa}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#79241f}.hljs-strong{font-weight:700;color:#79241f}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#f8f7f2}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#aaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#888}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#999}.hljs-emphasis{color:#999;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#444}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal.min.css
new file mode 100644
index 0000000..b44199d
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/black-metal.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Black Metal
+  Author: metalelf0 (https://github.com/metalelf0)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c1c1;background:#000}.hljs ::selection,.hljs::selection{background-color:#222;color:#c1c1c1}.hljs-comment{color:#333}.hljs-tag{color:#999}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c1c1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aaa}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a06666}.hljs-strong{font-weight:700;color:#a06666}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#d99}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#aaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#888}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#999}.hljs-emphasis{color:#999;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#444}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/brewer.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/brewer.min.css
new file mode 100644
index 0000000..cf2257d
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/brewer.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Brewer
+  Author: Timothée Poisot (http://github.com/tpoisot)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#b7b8b9;background:#0c0d0e}.hljs ::selection,.hljs::selection{background-color:#515253;color:#b7b8b9}.hljs-comment{color:#737475}.hljs-tag{color:#959697}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#b7b8b9}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#e31a1c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#e6550d}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#dca060}.hljs-strong{font-weight:700;color:#dca060}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#31a354}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#80b1d3}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3182bd}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#756bb1}.hljs-emphasis{color:#756bb1;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b15928}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/bright.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/bright.min.css
new file mode 100644
index 0000000..0e104ef
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/bright.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Bright
+  Author: Chris Kempson (http://chriskempson.com)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#e0e0e0;background:#000}.hljs ::selection,.hljs::selection{background-color:#505050;color:#e0e0e0}.hljs-comment{color:#b0b0b0}.hljs-tag{color:#d0d0d0}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#e0e0e0}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fb0120}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fc6d24}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fda331}.hljs-strong{font-weight:700;color:#fda331}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a1c659}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#76c7b7}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#6fb3d2}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#d381c3}.hljs-emphasis{color:#d381c3;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#be643c}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/brogrammer.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/brogrammer.min.css
new file mode 100644
index 0000000..2a1a8e8
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/brogrammer.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Brogrammer
+  Author: Vik Ramanujam (http://github.com/piggyslasher)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#4e5ab7;background:#1f1f1f}.hljs ::selection,.hljs::selection{background-color:#2dc55e;color:#4e5ab7}.hljs-comment{color:#ecba0f}.hljs-tag{color:#2a84d2}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#4e5ab7}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d6dbe5}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#de352e}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#1dd361}.hljs-strong{font-weight:700;color:#1dd361}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#f3bd09}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#1081d6}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#5350b9}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#0f7ddb}.hljs-emphasis{color:#0f7ddb;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#fff}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/brush-trees-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/brush-trees-dark.min.css
new file mode 100644
index 0000000..18e798d
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/brush-trees-dark.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Brush Trees Dark
+  Author: Abraham White <abelincoln.white@gmail.com>
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#b0c5c8;background:#485867}.hljs ::selection,.hljs::selection{background-color:#6d828e;color:#b0c5c8}.hljs-comment{color:#8299a1}.hljs-tag{color:#98afb5}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#b0c5c8}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#b38686}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d8bba2}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#aab386}.hljs-strong{font-weight:700;color:#aab386}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#87b386}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#86b3b3}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#868cb3}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b386b2}.hljs-emphasis{color:#b386b2;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b39f9f}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/brush-trees.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/brush-trees.min.css
new file mode 100644
index 0000000..ebc2b58
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/brush-trees.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Brush Trees
+  Author: Abraham White <abelincoln.white@gmail.com>
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#6d828e;background:#e3efef}.hljs ::selection,.hljs::selection{background-color:#b0c5c8;color:#6d828e}.hljs-comment{color:#98afb5}.hljs-tag{color:#8299a1}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#6d828e}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#b38686}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d8bba2}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#aab386}.hljs-strong{font-weight:700;color:#aab386}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#87b386}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#86b3b3}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#868cb3}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b386b2}.hljs-emphasis{color:#b386b2;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b39f9f}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/chalk.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/chalk.min.css
new file mode 100644
index 0000000..a7bbe07
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/chalk.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Chalk
+  Author: Chris Kempson (http://chriskempson.com)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d0d0d0;background:#151515}.hljs ::selection,.hljs::selection{background-color:#303030;color:#d0d0d0}.hljs-comment{color:#505050}.hljs-tag{color:#b0b0b0}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d0d0d0}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fb9fb1}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#eda987}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ddb26f}.hljs-strong{font-weight:700;color:#ddb26f}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#acc267}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#12cfc0}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#6fc2ef}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#e1a3ee}.hljs-emphasis{color:#e1a3ee;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#deaf8f}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/circus.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/circus.min.css
new file mode 100644
index 0000000..e34e78b
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/circus.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Circus
+  Author: Stephan Boyer (https://github.com/stepchowfun) and Esther Wang (https://github.com/ewang12)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a7a7a7;background:#191919}.hljs ::selection,.hljs::selection{background-color:#303030;color:#a7a7a7}.hljs-comment{color:#5f5a60}.hljs-tag{color:#505050}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a7a7a7}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#dc657d}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#4bb1a7}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#c3ba63}.hljs-strong{font-weight:700;color:#c3ba63}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#84b97c}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#4bb1a7}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#639ee4}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b888e2}.hljs-emphasis{color:#b888e2;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b888e2}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/classic-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/classic-dark.min.css
new file mode 100644
index 0000000..c9b4c40
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/classic-dark.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Classic Dark
+  Author: Jason Heeris (http://heeris.id.au)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d0d0d0;background:#151515}.hljs ::selection,.hljs::selection{background-color:#303030;color:#d0d0d0}.hljs-comment{color:#505050}.hljs-tag{color:#b0b0b0}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d0d0d0}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ac4142}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d28445}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f4bf75}.hljs-strong{font-weight:700;color:#f4bf75}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#90a959}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#75b5aa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#6a9fb5}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#aa759f}.hljs-emphasis{color:#aa759f;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#8f5536}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/classic-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/classic-light.min.css
new file mode 100644
index 0000000..67f392f
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/classic-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Classic Light
+  Author: Jason Heeris (http://heeris.id.au)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#303030;background:#f5f5f5}.hljs ::selection,.hljs::selection{background-color:#d0d0d0;color:#303030}.hljs-comment{color:#b0b0b0}.hljs-tag{color:#505050}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#303030}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ac4142}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d28445}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f4bf75}.hljs-strong{font-weight:700;color:#f4bf75}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#90a959}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#75b5aa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#6a9fb5}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#aa759f}.hljs-emphasis{color:#aa759f;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#8f5536}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/codeschool.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/codeschool.min.css
new file mode 100644
index 0000000..db20ed4
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/codeschool.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Codeschool
+  Author: blockloop
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#9ea7a6;background:#232c31}.hljs ::selection,.hljs::selection{background-color:#2a343a;color:#9ea7a6}.hljs-comment{color:#3f4944}.hljs-tag{color:#84898c}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#9ea7a6}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#2a5491}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#43820d}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a03b1e}.hljs-strong{font-weight:700;color:#a03b1e}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#237986}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#b02f30}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#484d79}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c59820}.hljs-emphasis{color:#c59820;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c98344}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/colors.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/colors.min.css
new file mode 100644
index 0000000..742aeeb
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/colors.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Colors
+  Author: mrmrs (http://clrs.cc)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#bbb;background:#111}.hljs ::selection,.hljs::selection{background-color:#555;color:#bbb}.hljs-comment{color:#777}.hljs-tag{color:#999}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#bbb}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ff4136}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ff851b}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffdc00}.hljs-strong{font-weight:700;color:#ffdc00}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#2ecc40}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#7fdbff}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#0074d9}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b10dc9}.hljs-emphasis{color:#b10dc9;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#85144b}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/cupcake.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/cupcake.min.css
new file mode 100644
index 0000000..b3bffc3
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/cupcake.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Cupcake
+  Author: Chris Kempson (http://chriskempson.com)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#8b8198;background:#fbf1f2}.hljs ::selection,.hljs::selection{background-color:#d8d5dd;color:#8b8198}.hljs-comment{color:#bfb9c6}.hljs-tag{color:#a59daf}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#8b8198}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d57e85}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ebb790}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#dcb16c}.hljs-strong{font-weight:700;color:#dcb16c}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a3b367}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#69a9a7}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#7297b9}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#bb99b4}.hljs-emphasis{color:#bb99b4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#baa58c}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/cupertino.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/cupertino.min.css
new file mode 100644
index 0000000..abec520
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/cupertino.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Cupertino
+  Author: Defman21
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#404040;background:#fff}.hljs ::selection,.hljs::selection{background-color:silver;color:#404040}.hljs-comment,.hljs-tag{color:grey}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#404040}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#c41a15}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#eb8500}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#826b28}.hljs-strong{font-weight:700;color:#826b28}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#007400}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#318495}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#00f}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a90d91}.hljs-emphasis{color:#a90d91;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#826b28}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/danqing.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/danqing.min.css
new file mode 100644
index 0000000..d9bf65d
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/danqing.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: DanQing
+  Author: Wenhan Zhu (Cosmos) (zhuwenhan950913@gmail.com)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#e0f0ef;background:#2d302f}.hljs ::selection,.hljs::selection{background-color:#5a605d;color:#e0f0ef}.hljs-comment{color:#9da8a3}.hljs-tag{color:#cad8d2}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#e0f0ef}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f9906f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#b38a61}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f0c239}.hljs-strong{font-weight:700;color:#f0c239}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#8ab361}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#30dff3}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#b0a4e3}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#cca4e3}.hljs-emphasis{color:#cca4e3;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#ca6924}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/darcula.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/darcula.min.css
new file mode 100644
index 0000000..7824e83
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/darcula.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Darcula
+  Author: jetbrains
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a9b7c6;background:#2b2b2b}.hljs ::selection,.hljs::selection{background-color:#323232;color:#a9b7c6}.hljs-comment{color:#606366}.hljs-tag{color:#a4a3a3}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a9b7c6}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#4eade5}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#689757}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#bbb529}.hljs-strong{font-weight:700;color:#bbb529}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#6a8759}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#629755}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#9876aa}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#cc7832}.hljs-emphasis{color:#cc7832;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:grey}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/dark-violet.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/dark-violet.min.css
new file mode 100644
index 0000000..de19c81
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/dark-violet.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Dark Violet
+  Author: ruler501 (https://github.com/ruler501/base16-darkviolet)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#b08ae6;background:#000}.hljs ::selection,.hljs::selection{background-color:#432d59;color:#b08ae6}.hljs-comment{color:#593380}.hljs-tag{color:#0f0}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#b08ae6}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#a82ee6}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#b6c}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f29df2}.hljs-strong{font-weight:700;color:#f29df2}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#4595e6}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#40dfff}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#4136d9}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#7e5ce6}.hljs-emphasis{color:#7e5ce6;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#a886bf}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/darkmoss.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/darkmoss.min.css
new file mode 100644
index 0000000..86c7f42
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/darkmoss.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: darkmoss
+  Author: Gabriel Avanzi (https://github.com/avanzzzi)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c7c7a5;background:#171e1f}.hljs ::selection,.hljs::selection{background-color:#373c3d;color:#c7c7a5}.hljs-comment{color:#555e5f}.hljs-tag{color:#818f80}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c7c7a5}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ff4658}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#e6db74}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fdb11f}.hljs-strong{font-weight:700;color:#fdb11f}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#499180}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#66d9ef}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#498091}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#9bc0c8}.hljs-emphasis{color:#9bc0c8;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d27b53}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/darktooth.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/darktooth.min.css
new file mode 100644
index 0000000..b95a507
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/darktooth.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Darktooth
+  Author: Jason Milkins (https://github.com/jasonm23)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a89984;background:#1d2021}.hljs ::selection,.hljs::selection{background-color:#504945;color:#a89984}.hljs-comment{color:#665c54}.hljs-tag{color:#928374}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a89984}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fb543f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fe8625}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fac03b}.hljs-strong{font-weight:700;color:#fac03b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#95c085}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#8ba59b}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#0d6678}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#8f4673}.hljs-emphasis{color:#8f4673;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#a87322}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/decaf.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/decaf.min.css
new file mode 100644
index 0000000..82057b6
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/decaf.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Decaf
+  Author: Alex Mirrington (https://github.com/alexmirrington)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#ccc;background:#2d2d2d}.hljs ::selection,.hljs::selection{background-color:#515151;color:#ccc}.hljs-comment{color:#777}.hljs-tag{color:#b4b7b4}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#ccc}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ff7f7b}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ffbf70}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffd67c}.hljs-strong{font-weight:700;color:#ffd67c}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#beda78}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#bed6ff}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#90bee1}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#efb3f7}.hljs-emphasis{color:#efb3f7;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#ff93b3}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/default-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/default-dark.min.css
new file mode 100644
index 0000000..eee7cd6
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/default-dark.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Default Dark
+  Author: Chris Kempson (http://chriskempson.com)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d8d8d8;background:#181818}.hljs ::selection,.hljs::selection{background-color:#383838;color:#d8d8d8}.hljs-comment{color:#585858}.hljs-tag{color:#b8b8b8}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d8d8d8}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ab4642}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#dc9656}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f7ca88}.hljs-strong{font-weight:700;color:#f7ca88}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a1b56c}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#86c1b9}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#7cafc2}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ba8baf}.hljs-emphasis{color:#ba8baf;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#a16946}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/default-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/default-light.min.css
new file mode 100644
index 0000000..2b85d9c
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/default-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Default Light
+  Author: Chris Kempson (http://chriskempson.com)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#383838;background:#f8f8f8}.hljs ::selection,.hljs::selection{background-color:#d8d8d8;color:#383838}.hljs-comment{color:#b8b8b8}.hljs-tag{color:#585858}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#383838}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ab4642}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#dc9656}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f7ca88}.hljs-strong{font-weight:700;color:#f7ca88}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a1b56c}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#86c1b9}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#7cafc2}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ba8baf}.hljs-emphasis{color:#ba8baf;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#a16946}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/dirtysea.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/dirtysea.min.css
new file mode 100644
index 0000000..801a545
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/dirtysea.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: dirtysea
+  Author: Kahlil (Kal) Hodgson
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#000;background:#e0e0e0}.hljs ::selection,.hljs::selection{background-color:#d0d0d0;color:#000}.hljs-comment{color:#707070}.hljs-tag{color:#202020}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#000}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#840000}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#006565}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#755b00}.hljs-strong{font-weight:700;color:#755b00}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#730073}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#755b00}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#007300}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#000090}.hljs-emphasis{color:#000090;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#755b00}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/dracula.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/dracula.min.css
new file mode 100644
index 0000000..729bbbf
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/dracula.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Dracula
+  Author: Mike Barkmin (http://github.com/mikebarkmin) based on Dracula Theme (http://github.com/dracula)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#e9e9f4;background:#282936}.hljs ::selection,.hljs::selection{background-color:#4d4f68;color:#e9e9f4}.hljs-comment{color:#626483}.hljs-tag{color:#62d6e8}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#e9e9f4}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ea51b2}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#b45bcf}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#00f769}.hljs-strong{font-weight:700;color:#00f769}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#ebff87}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#a1efe4}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#62d6e8}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b45bcf}.hljs-emphasis{color:#b45bcf;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#00f769}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/edge-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/edge-dark.min.css
new file mode 100644
index 0000000..9e2ddb2
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/edge-dark.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Edge Dark
+  Author: cjayross (https://github.com/cjayross)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#b7bec9;background:#262729}.hljs ::selection,.hljs::selection{background-color:#b7bec9;color:#b7bec9}.hljs-comment{color:#3e4249}.hljs-tag{color:#73b3e7}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#b7bec9}.hljs-operator{opacity:.7}.hljs-attr,.hljs-bullet,.hljs-deletion,.hljs-link,.hljs-literal,.hljs-name,.hljs-number,.hljs-selector-tag,.hljs-symbol,.hljs-template-variable,.hljs-variable,.hljs-variable.constant_{color:#e77171}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#dbb774}.hljs-strong{font-weight:700;color:#dbb774}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a1bf78}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#5ebaa5}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#73b3e7}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#d390e7}.hljs-emphasis{color:#d390e7;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#5ebaa5}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/edge-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/edge-light.min.css
new file mode 100644
index 0000000..940401f
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/edge-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Edge Light
+  Author: cjayross (https://github.com/cjayross)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#5e646f;background:#fafafa}.hljs ::selection,.hljs::selection{background-color:#d69822;color:#5e646f}.hljs-comment{color:#5e646f}.hljs-tag{color:#6587bf}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#5e646f}.hljs-operator{opacity:.7}.hljs-attr,.hljs-bullet,.hljs-deletion,.hljs-link,.hljs-literal,.hljs-name,.hljs-number,.hljs-selector-tag,.hljs-symbol,.hljs-template-variable,.hljs-variable,.hljs-variable.constant_{color:#db7070}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#d69822}.hljs-strong{font-weight:700;color:#d69822}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#7c9f4b}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#509c93}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#6587bf}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b870ce}.hljs-emphasis{color:#b870ce;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#509c93}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/eighties.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/eighties.min.css
new file mode 100644
index 0000000..0ef9e1e
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/eighties.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Eighties
+  Author: Chris Kempson (http://chriskempson.com)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d3d0c8;background:#2d2d2d}.hljs ::selection,.hljs::selection{background-color:#515151;color:#d3d0c8}.hljs-comment{color:#747369}.hljs-tag{color:#a09f93}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d3d0c8}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f2777a}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f99157}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fc6}.hljs-strong{font-weight:700;color:#fc6}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#9c9}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#6cc}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#69c}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c9c}.hljs-emphasis{color:#c9c;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d27b53}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/embers.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/embers.min.css
new file mode 100644
index 0000000..eb5426c
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/embers.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Embers
+  Author: Jannik Siebert (https://github.com/janniks)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a39a90;background:#16130f}.hljs ::selection,.hljs::selection{background-color:#433b32;color:#a39a90}.hljs-comment{color:#5a5047}.hljs-tag{color:#8a8075}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a39a90}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#826d57}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#828257}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#6d8257}.hljs-strong{font-weight:700;color:#6d8257}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#57826d}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#576d82}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#6d5782}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#82576d}.hljs-emphasis{color:#82576d;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#825757}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-dark.min.css
new file mode 100644
index 0000000..e3fe3ae
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-dark.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Equilibrium Dark
+  Author: Carlo Abelli
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#afaba2;background:#0c1118}.hljs ::selection,.hljs::selection{background-color:#22262d;color:#afaba2}.hljs-comment{color:#7b776e}.hljs-tag{color:#949088}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#afaba2}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f04339}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#df5923}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#bb8801}.hljs-strong{font-weight:700;color:#bb8801}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#7f8b00}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#00948b}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#008dd1}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6a7fd2}.hljs-emphasis{color:#6a7fd2;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#e3488e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-gray-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-gray-dark.min.css
new file mode 100644
index 0000000..d3c2ff1
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-gray-dark.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Equilibrium Gray Dark
+  Author: Carlo Abelli
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#ababab;background:#111}.hljs ::selection,.hljs::selection{background-color:#262626;color:#ababab}.hljs-comment{color:#777}.hljs-tag{color:#919191}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#ababab}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f04339}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#df5923}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#bb8801}.hljs-strong{font-weight:700;color:#bb8801}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#7f8b00}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#00948b}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#008dd1}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6a7fd2}.hljs-emphasis{color:#6a7fd2;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#e3488e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-gray-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-gray-light.min.css
new file mode 100644
index 0000000..817269f
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-gray-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Equilibrium Gray Light
+  Author: Carlo Abelli
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#474747;background:#f1f1f1}.hljs ::selection,.hljs::selection{background-color:#d4d4d4;color:#474747}.hljs-comment{color:#777}.hljs-tag{color:#5e5e5e}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#474747}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d02023}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#bf3e05}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#9d6f00}.hljs-strong{font-weight:700;color:#9d6f00}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#637200}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#007a72}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#0073b5}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#4e66b6}.hljs-emphasis{color:#4e66b6;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c42775}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-light.min.css
new file mode 100644
index 0000000..38564e9
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/equilibrium-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Equilibrium Light
+  Author: Carlo Abelli
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#43474e;background:#f5f0e7}.hljs ::selection,.hljs::selection{background-color:#d8d4cb;color:#43474e}.hljs-comment{color:#73777f}.hljs-tag{color:#5a5f66}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#43474e}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d02023}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#bf3e05}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#9d6f00}.hljs-strong{font-weight:700;color:#9d6f00}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#637200}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#007a72}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#0073b5}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#4e66b6}.hljs-emphasis{color:#4e66b6;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c42775}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/espresso.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/espresso.min.css
new file mode 100644
index 0000000..9d9a0ae
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/espresso.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Espresso
+  Author: Unknown. Maintained by Alex Mirrington (https://github.com/alexmirrington)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#ccc;background:#2d2d2d}.hljs ::selection,.hljs::selection{background-color:#515151;color:#ccc}.hljs-comment{color:#777}.hljs-tag{color:#b4b7b4}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#ccc}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d25252}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f9a959}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffc66d}.hljs-strong{font-weight:700;color:#ffc66d}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a5c261}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#bed6ff}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#6c99bb}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#d197d9}.hljs-emphasis{color:#d197d9;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#f97394}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/eva-dim.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/eva-dim.min.css
new file mode 100644
index 0000000..ab37158
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/eva-dim.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Eva Dim
+  Author: kjakapat (https://github.com/kjakapat)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#9fa2a6;background:#2a3b4d}.hljs ::selection,.hljs::selection{background-color:#4b6988;color:#9fa2a6}.hljs-comment{color:#55799c}.hljs-tag{color:#7e90a3}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#9fa2a6}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#c4676c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f96}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#cfd05d}.hljs-strong{font-weight:700;color:#cfd05d}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#5de561}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#4b8f77}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#1ae1dc}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#9c6cd3}.hljs-emphasis{color:#9c6cd3;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#bb64a9}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/eva.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/eva.min.css
new file mode 100644
index 0000000..c4fb9cc
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/eva.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Eva
+  Author: kjakapat (https://github.com/kjakapat)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#9fa2a6;background:#2a3b4d}.hljs ::selection,.hljs::selection{background-color:#4b6988;color:#9fa2a6}.hljs-comment{color:#55799c}.hljs-tag{color:#7e90a3}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#9fa2a6}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#c4676c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f96}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ff6}.hljs-strong{font-weight:700;color:#ff6}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#6f6}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#4b8f77}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#15f4ee}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#9c6cd3}.hljs-emphasis{color:#9c6cd3;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#bb64a9}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/flat.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/flat.min.css
new file mode 100644
index 0000000..7e6ece5
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/flat.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Flat
+  Author: Chris Kempson (http://chriskempson.com)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#e0e0e0;background:#2c3e50}.hljs ::selection,.hljs::selection{background-color:#7f8c8d;color:#e0e0e0}.hljs-comment{color:#95a5a6}.hljs-tag{color:#bdc3c7}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#e0e0e0}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#e74c3c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#e67e22}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f1c40f}.hljs-strong{font-weight:700;color:#f1c40f}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#2ecc71}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#1abc9c}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3498db}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#9b59b6}.hljs-emphasis{color:#9b59b6;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#be643c}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/framer.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/framer.min.css
new file mode 100644
index 0000000..3024b54
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/framer.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Framer
+  Author: Framer (Maintained by Jesse Hoyos)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d0d0d0;background:#181818}.hljs ::selection,.hljs::selection{background-color:#464646;color:#d0d0d0}.hljs-comment{color:#747474}.hljs-tag{color:#b9b9b9}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d0d0d0}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fd886b}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fc4769}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fecb6e}.hljs-strong{font-weight:700;color:#fecb6e}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#32ccdc}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#acddfd}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#20bcfc}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ba8cfc}.hljs-emphasis{color:#ba8cfc;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b15f4a}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/fruit-soda.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/fruit-soda.min.css
new file mode 100644
index 0000000..6e84fd7
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/fruit-soda.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Fruit Soda
+  Author: jozip
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#515151;background:#f1ecf1}.hljs ::selection,.hljs::selection{background-color:#d8d5d5;color:#515151}.hljs-comment{color:#b5b4b6}.hljs-tag{color:#979598}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#515151}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fe3e31}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fe6d08}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f7e203}.hljs-strong{font-weight:700;color:#f7e203}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#47f74c}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#0f9cfd}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#2931df}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#611fce}.hljs-emphasis{color:#611fce;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b16f40}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/gigavolt.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gigavolt.min.css
new file mode 100644
index 0000000..9115b0c
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gigavolt.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Gigavolt
+  Author: Aidan Swope (http://github.com/Whillikers)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#e9e7e1;background:#202126}.hljs ::selection,.hljs::selection{background-color:#5a576e;color:#e9e7e1}.hljs-comment{color:#a1d2e6}.hljs-tag{color:#cad3ff}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#e9e7e1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ff661a}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#19f988}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffdc2d}.hljs-strong{font-weight:700;color:#ffdc2d}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#f2e6a9}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#fb6acb}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#40bfff}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ae94f9}.hljs-emphasis{color:#ae94f9;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#6187ff}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/github.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/github.min.css
new file mode 100644
index 0000000..188aaaa
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/github.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Github
+  Author: Defman21
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#333;background:#fff}.hljs ::selection,.hljs::selection{background-color:#c8c8fa;color:#333}.hljs-comment{color:#969896}.hljs-tag{color:#e8e8e8}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#333}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ed6a43}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#0086b3}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#795da3}.hljs-strong{font-weight:700;color:#795da3}.hljs-addition,.hljs-built_in,.hljs-code,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp,.hljs-string,.hljs-title.class_.inherited__{color:#183691}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#795da3}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a71d5d}.hljs-emphasis{color:#a71d5d;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#333}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/google-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/google-dark.min.css
new file mode 100644
index 0000000..bd2a2dc
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/google-dark.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Google Dark
+  Author: Seth Wright (http://sethawright.com)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c5c8c6;background:#1d1f21}.hljs ::selection,.hljs::selection{background-color:#373b41;color:#c5c8c6}.hljs-comment{color:#969896}.hljs-tag{color:#b4b7b4}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c5c8c6}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#cc342b}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f96a38}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fba922}.hljs-strong{font-weight:700;color:#fba922}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#198844}.hljs-attribute,.hljs-built_in,.hljs-doctag,.hljs-function .hljs-title,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3971ed}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a36ac7}.hljs-emphasis{color:#a36ac7;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#3971ed}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/google-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/google-light.min.css
new file mode 100644
index 0000000..26e6ffb
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/google-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Google Light
+  Author: Seth Wright (http://sethawright.com)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#373b41;background:#fff}.hljs ::selection,.hljs::selection{background-color:#c5c8c6;color:#373b41}.hljs-comment{color:#b4b7b4}.hljs-tag{color:#969896}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#373b41}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#cc342b}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f96a38}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fba922}.hljs-strong{font-weight:700;color:#fba922}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#198844}.hljs-attribute,.hljs-built_in,.hljs-doctag,.hljs-function .hljs-title,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3971ed}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a36ac7}.hljs-emphasis{color:#a36ac7;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#3971ed}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/grayscale-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/grayscale-dark.min.css
new file mode 100644
index 0000000..54c9a4c
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/grayscale-dark.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Grayscale Dark
+  Author: Alexandre Gavioli (https://github.com/Alexx2/)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#b9b9b9;background:#101010}.hljs ::selection,.hljs::selection{background-color:#464646;color:#b9b9b9}.hljs-comment{color:#525252}.hljs-tag{color:#ababab}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#b9b9b9}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#7c7c7c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#999}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a0a0a0}.hljs-strong{font-weight:700;color:#a0a0a0}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#8e8e8e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#868686}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#686868}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#747474}.hljs-emphasis{color:#747474;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#5e5e5e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/grayscale-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/grayscale-light.min.css
new file mode 100644
index 0000000..3d85f2c
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/grayscale-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Grayscale Light
+  Author: Alexandre Gavioli (https://github.com/Alexx2/)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#464646;background:#f7f7f7}.hljs ::selection,.hljs::selection{background-color:#b9b9b9;color:#464646}.hljs-comment{color:#ababab}.hljs-tag{color:#525252}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#464646}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#7c7c7c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#999}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a0a0a0}.hljs-strong{font-weight:700;color:#a0a0a0}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#8e8e8e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#868686}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#686868}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#747474}.hljs-emphasis{color:#747474;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#5e5e5e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/green-screen.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/green-screen.min.css
new file mode 100644
index 0000000..8f66630
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/green-screen.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Green Screen
+  Author: Chris Kempson (http://chriskempson.com)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#0b0;background:#010}.hljs ::selection,.hljs::selection{background-color:#050;color:#0b0}.hljs-comment{color:#070}.hljs-tag{color:#090}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#0b0}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#070}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#090}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#070}.hljs-strong{font-weight:700;color:#070}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#0b0}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#050}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#090}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#0b0}.hljs-emphasis{color:#0b0;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#050}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-hard.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-hard.min.css
new file mode 100644
index 0000000..d82083e
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-hard.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Gruvbox dark, hard
+  Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d5c4a1;background:#1d2021}.hljs ::selection,.hljs::selection{background-color:#504945;color:#d5c4a1}.hljs-comment{color:#665c54}.hljs-tag{color:#bdae93}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d5c4a1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fb4934}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fe8019}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fabd2f}.hljs-strong{font-weight:700;color:#fabd2f}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#b8bb26}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#8ec07c}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#83a598}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#d3869b}.hljs-emphasis{color:#d3869b;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d65d0e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-medium.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-medium.min.css
new file mode 100644
index 0000000..1fc5e3a
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-medium.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Gruvbox dark, medium
+  Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d5c4a1;background:#282828}.hljs ::selection,.hljs::selection{background-color:#504945;color:#d5c4a1}.hljs-comment{color:#665c54}.hljs-tag{color:#bdae93}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d5c4a1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fb4934}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fe8019}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fabd2f}.hljs-strong{font-weight:700;color:#fabd2f}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#b8bb26}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#8ec07c}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#83a598}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#d3869b}.hljs-emphasis{color:#d3869b;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d65d0e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-pale.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-pale.min.css
new file mode 100644
index 0000000..293b4bc
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-pale.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Gruvbox dark, pale
+  Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#dab997;background:#262626}.hljs ::selection,.hljs::selection{background-color:#4e4e4e;color:#dab997}.hljs-comment{color:#8a8a8a}.hljs-tag{color:#949494}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#dab997}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d75f5f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ff8700}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffaf00}.hljs-strong{font-weight:700;color:#ffaf00}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#afaf00}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#85ad85}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#83adad}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#d485ad}.hljs-emphasis{color:#d485ad;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d65d0e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-soft.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-soft.min.css
new file mode 100644
index 0000000..c327bbc
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-dark-soft.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Gruvbox dark, soft
+  Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d5c4a1;background:#32302f}.hljs ::selection,.hljs::selection{background-color:#504945;color:#d5c4a1}.hljs-comment{color:#665c54}.hljs-tag{color:#bdae93}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d5c4a1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fb4934}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fe8019}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fabd2f}.hljs-strong{font-weight:700;color:#fabd2f}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#b8bb26}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#8ec07c}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#83a598}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#d3869b}.hljs-emphasis{color:#d3869b;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d65d0e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-light-hard.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-light-hard.min.css
new file mode 100644
index 0000000..34d5cb7
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-light-hard.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Gruvbox light, hard
+  Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#504945;background:#f9f5d7}.hljs ::selection,.hljs::selection{background-color:#d5c4a1;color:#504945}.hljs-comment{color:#bdae93}.hljs-tag{color:#665c54}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#504945}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#9d0006}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#af3a03}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#b57614}.hljs-strong{font-weight:700;color:#b57614}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#79740e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#427b58}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#076678}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#8f3f71}.hljs-emphasis{color:#8f3f71;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d65d0e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-light-medium.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-light-medium.min.css
new file mode 100644
index 0000000..e866687
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-light-medium.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Gruvbox light, medium
+  Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#504945;background:#fbf1c7}.hljs ::selection,.hljs::selection{background-color:#d5c4a1;color:#504945}.hljs-comment{color:#bdae93}.hljs-tag{color:#665c54}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#504945}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#9d0006}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#af3a03}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#b57614}.hljs-strong{font-weight:700;color:#b57614}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#79740e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#427b58}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#076678}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#8f3f71}.hljs-emphasis{color:#8f3f71;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d65d0e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-light-soft.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-light-soft.min.css
new file mode 100644
index 0000000..32ad2bd
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/gruvbox-light-soft.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Gruvbox light, soft
+  Author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#504945;background:#f2e5bc}.hljs ::selection,.hljs::selection{background-color:#d5c4a1;color:#504945}.hljs-comment{color:#bdae93}.hljs-tag{color:#665c54}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#504945}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#9d0006}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#af3a03}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#b57614}.hljs-strong{font-weight:700;color:#b57614}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#79740e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#427b58}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#076678}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#8f3f71}.hljs-emphasis{color:#8f3f71;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d65d0e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/hardcore.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/hardcore.min.css
new file mode 100644
index 0000000..ce0a615
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/hardcore.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Hardcore
+  Author: Chris Caller
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#cdcdcd;background:#212121}.hljs ::selection,.hljs::selection{background-color:#353535;color:#cdcdcd}.hljs-comment{color:#4a4a4a}.hljs-tag{color:#707070}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#cdcdcd}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f92672}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fd971f}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#e6db74}.hljs-strong{font-weight:700;color:#e6db74}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a6e22e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#708387}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#66d9ef}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#9e6ffe}.hljs-emphasis{color:#9e6ffe;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#e8b882}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/harmonic16-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/harmonic16-dark.min.css
new file mode 100644
index 0000000..497ad03
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/harmonic16-dark.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Harmonic16 Dark
+  Author: Jannik Siebert (https://github.com/janniks)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#cbd6e2;background:#0b1c2c}.hljs ::selection,.hljs::selection{background-color:#405c79;color:#cbd6e2}.hljs-comment{color:#627e99}.hljs-tag{color:#aabcce}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#cbd6e2}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#bf8b56}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#bfbf56}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#8bbf56}.hljs-strong{font-weight:700;color:#8bbf56}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#56bf8b}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#568bbf}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#8b56bf}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#bf568b}.hljs-emphasis{color:#bf568b;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#bf5656}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/harmonic16-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/harmonic16-light.min.css
new file mode 100644
index 0000000..72ab06a
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/harmonic16-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Harmonic16 Light
+  Author: Jannik Siebert (https://github.com/janniks)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#405c79;background:#f7f9fb}.hljs ::selection,.hljs::selection{background-color:#cbd6e2;color:#405c79}.hljs-comment{color:#aabcce}.hljs-tag{color:#627e99}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#405c79}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#bf8b56}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#bfbf56}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#8bbf56}.hljs-strong{font-weight:700;color:#8bbf56}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#56bf8b}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#568bbf}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#8b56bf}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#bf568b}.hljs-emphasis{color:#bf568b;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#bf5656}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/heetch-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/heetch-dark.min.css
new file mode 100644
index 0000000..66cb473
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/heetch-dark.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Heetch Dark
+  Author: Geoffrey Teale (tealeg@gmail.com)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#bdb6c5;background:#190134}.hljs ::selection,.hljs::selection{background-color:#5a496e;color:#bdb6c5}.hljs-comment{color:#7b6d8b}.hljs-tag{color:#9c92a8}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#bdb6c5}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#27d9d5}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#5ba2b6}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#8f6c97}.hljs-strong{font-weight:700;color:#8f6c97}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#c33678}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#f80059}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#bd0152}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#82034c}.hljs-emphasis{color:#82034c;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#470546}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/heetch-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/heetch-light.min.css
new file mode 100644
index 0000000..576538f
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/heetch-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Heetch Light
+  Author: Geoffrey Teale (tealeg@gmail.com)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#5a496e;background:#feffff}.hljs ::selection,.hljs::selection{background-color:#7b6d8b;color:#5a496e}.hljs-comment{color:#9c92a8}.hljs-tag{color:#ddd6e5}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#5a496e}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#27d9d5}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#bdb6c5}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#5ba2b6}.hljs-strong{font-weight:700;color:#5ba2b6}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#f80059}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#c33678}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#47f9f5}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#bd0152}.hljs-emphasis{color:#bd0152;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#dedae2}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/helios.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/helios.min.css
new file mode 100644
index 0000000..fe2574a
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/helios.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Helios
+  Author: Alex Meyer (https://github.com/reyemxela)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d5d5d5;background:#1d2021}.hljs ::selection,.hljs::selection{background-color:#53585b;color:#d5d5d5}.hljs-comment{color:#6f7579}.hljs-tag{color:#cdcdcd}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d5d5d5}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d72638}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#eb8413}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f19d1a}.hljs-strong{font-weight:700;color:#f19d1a}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#88b92d}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#1ba595}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#1e8bac}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#be4264}.hljs-emphasis{color:#be4264;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c85e0d}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/hopscotch.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/hopscotch.min.css
new file mode 100644
index 0000000..908ae4c
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/hopscotch.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Hopscotch
+  Author: Jan T. Sott
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#b9b5b8;background:#322931}.hljs ::selection,.hljs::selection{background-color:#5c545b;color:#b9b5b8}.hljs-comment{color:#797379}.hljs-tag{color:#989498}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#b9b5b8}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#dd464c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fd8b19}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fdcc59}.hljs-strong{font-weight:700;color:#fdcc59}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#8fc13e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#149b93}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#1290bf}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c85e7c}.hljs-emphasis{color:#c85e7c;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b33508}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/horizon-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/horizon-dark.min.css
new file mode 100644
index 0000000..a6fad3e
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/horizon-dark.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Horizon Dark
+  Author: Michaël Ball (http://github.com/michael-ball/)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#cbced0;background:#1c1e26}.hljs ::selection,.hljs::selection{background-color:#2e303e;color:#cbced0}.hljs-comment{color:#6f6f70}.hljs-tag{color:#9da0a2}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#cbced0}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#e93c58}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#e58d7d}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#efb993}.hljs-strong{font-weight:700;color:#efb993}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#efaf8e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#24a8b4}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#df5273}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b072d1}.hljs-emphasis{color:#b072d1;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#e4a382}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/horizon-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/horizon-light.min.css
new file mode 100644
index 0000000..ae33a6e
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/horizon-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Horizon Light
+  Author: Michaël Ball (http://github.com/michael-ball/)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#403c3d;background:#fdf0ed}.hljs ::selection,.hljs::selection{background-color:#f9cbbe;color:#403c3d}.hljs-comment{color:#bdb3b1}.hljs-tag{color:#948c8a}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#403c3d}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#e95678}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f9cec3}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fadad1}.hljs-strong{font-weight:700;color:#fadad1}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#29d398}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#59e1e3}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#26bbd9}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ee64ac}.hljs-emphasis{color:#ee64ac;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#f9cbbe}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/humanoid-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/humanoid-dark.min.css
new file mode 100644
index 0000000..a87c147
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/humanoid-dark.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Humanoid dark
+  Author: Thomas (tasmo) Friese
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#f8f8f2;background:#232629}.hljs ::selection,.hljs::selection{background-color:#484e54;color:#f8f8f2}.hljs-comment{color:#60615d}.hljs-tag{color:#c0c0bd}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#f8f8f2}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f11235}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ff9505}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffb627}.hljs-strong{font-weight:700;color:#ffb627}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#02d849}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#0dd9d6}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#00a6fb}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#f15ee3}.hljs-emphasis{color:#f15ee3;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b27701}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/humanoid-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/humanoid-light.min.css
new file mode 100644
index 0000000..4e3b7ca
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/humanoid-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Humanoid light
+  Author: Thomas (tasmo) Friese
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#232629;background:#f8f8f2}.hljs ::selection,.hljs::selection{background-color:#deded8;color:#232629}.hljs-comment{color:#c0c0bd}.hljs-tag{color:#60615d}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#232629}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#b0151a}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ff3d00}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffb627}.hljs-strong{font-weight:700;color:#ffb627}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#388e3c}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#008e8e}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#0082c9}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#700f98}.hljs-emphasis{color:#700f98;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b27701}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/ia-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ia-dark.min.css
new file mode 100644
index 0000000..b80fad4
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ia-dark.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: iA Dark
+  Author: iA Inc. (modified by aramisgithub)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#ccc;background:#1a1a1a}.hljs ::selection,.hljs::selection{background-color:#1d414d;color:#ccc}.hljs-comment{color:#767676}.hljs-tag{color:#b8b8b8}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#ccc}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d88568}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d86868}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#b99353}.hljs-strong{font-weight:700;color:#b99353}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#83a471}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#7c9cae}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#8eccdd}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b98eb2}.hljs-emphasis{color:#b98eb2;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#8b6c37}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/ia-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ia-light.min.css
new file mode 100644
index 0000000..8a33ab7
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ia-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: iA Light
+  Author: iA Inc. (modified by aramisgithub)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#181818;background:#f6f6f6}.hljs ::selection,.hljs::selection{background-color:#bde5f2;color:#181818}.hljs-comment{color:#898989}.hljs-tag{color:#767676}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#181818}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#9c5a02}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#c43e18}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#c48218}.hljs-strong{font-weight:700;color:#c48218}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#38781c}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#2d6bb1}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#48bac2}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a94598}.hljs-emphasis{color:#a94598;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#8b6c37}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/icy-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/icy-dark.min.css
new file mode 100644
index 0000000..25cf077
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/icy-dark.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Icy Dark
+  Author: icyphox (https://icyphox.ga)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#095b67;background:#021012}.hljs ::selection,.hljs::selection{background-color:#041f23;color:#095b67}.hljs-comment{color:#052e34}.hljs-tag{color:#064048}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#095b67}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#16c1d9}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#b3ebf2}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#80deea}.hljs-strong{font-weight:700;color:#80deea}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#4dd0e1}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#26c6da}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#00bcd4}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#00acc1}.hljs-emphasis{color:#00acc1;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#0097a7}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/ir-black.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ir-black.min.css
new file mode 100644
index 0000000..54afa45
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ir-black.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: IR Black
+  Author: Timothée Poisot (http://timotheepoisot.fr)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#b5b3aa;background:#000}.hljs ::selection,.hljs::selection{background-color:#484844;color:#b5b3aa}.hljs-comment{color:#6c6c66}.hljs-tag{color:#918f88}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#b5b3aa}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ff6c60}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#e9c062}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffffb6}.hljs-strong{font-weight:700;color:#ffffb6}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a8ff60}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#c6c5fe}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#96cbfe}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ff73fd}.hljs-emphasis{color:#ff73fd;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b18a3d}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/isotope.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/isotope.min.css
new file mode 100644
index 0000000..ef27862
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/isotope.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Isotope
+  Author: Jan T. Sott
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d0d0d0;background:#000}.hljs ::selection,.hljs::selection{background-color:#606060;color:#d0d0d0}.hljs-comment{color:grey}.hljs-tag{color:silver}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d0d0d0}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:red}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f90}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f09}.hljs-strong{font-weight:700;color:#f09}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#3f0}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#0ff}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#06f}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c0f}.hljs-emphasis{color:#c0f;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#30f}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/kimber.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/kimber.min.css
new file mode 100644
index 0000000..f2c29f4
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/kimber.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Kimber
+  Author: Mishka Nguyen (https://github.com/akhsiM)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#dedee7;background:#222}.hljs ::selection,.hljs::selection{background-color:#555d55;color:#dedee7}.hljs-comment{color:#644646}.hljs-tag{color:#5a5a5a}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#dedee7}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#c88c8c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#476c88}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#d8b56d}.hljs-strong{font-weight:700;color:#d8b56d}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#99c899}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#78b4b4}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#537c9c}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#86cacd}.hljs-emphasis{color:#86cacd;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#704f4f}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/london-tube.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/london-tube.min.css
new file mode 100644
index 0000000..613ed64
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/london-tube.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: London Tube
+  Author: Jan T. Sott
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d9d8d8;background:#231f20}.hljs ::selection,.hljs::selection{background-color:#5a5758;color:#d9d8d8}.hljs-comment{color:#737171}.hljs-tag{color:#959ca1}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d9d8d8}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ee2e24}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f386a1}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffd204}.hljs-strong{font-weight:700;color:#ffd204}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#00853e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#85cebc}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#009ddc}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#98005d}.hljs-emphasis{color:#98005d;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b06110}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/macintosh.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/macintosh.min.css
new file mode 100644
index 0000000..a947f9c
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/macintosh.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Macintosh
+  Author: Rebecca Bettencourt (http://www.kreativekorp.com)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:silver;background:#000}.hljs ::selection,.hljs::selection{background-color:#404040;color:silver}.hljs-comment,.hljs-tag{color:grey}.hljs-operator,.hljs-punctuation,.hljs-subst{color:silver}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#dd0907}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ff6403}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fbf305}.hljs-strong{font-weight:700;color:#fbf305}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#1fb714}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#02abea}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#0000d3}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#4700a5}.hljs-emphasis{color:#4700a5;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#90713a}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/marrakesh.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/marrakesh.min.css
new file mode 100644
index 0000000..3940e22
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/marrakesh.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Marrakesh
+  Author: Alexandre Gavioli (http://github.com/Alexx2/)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#948e48;background:#201602}.hljs ::selection,.hljs::selection{background-color:#5f5b17;color:#948e48}.hljs-comment{color:#6c6823}.hljs-tag{color:#86813b}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#948e48}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#c35359}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#b36144}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a88339}.hljs-strong{font-weight:700;color:#a88339}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#18974e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#75a738}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#477ca1}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#8868b3}.hljs-emphasis{color:#8868b3;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b3588e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/materia.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/materia.min.css
new file mode 100644
index 0000000..ceb7c0c
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/materia.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Materia
+  Author: Defman21
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#cdd3de;background:#263238}.hljs ::selection,.hljs::selection{background-color:#37474f;color:#cdd3de}.hljs-comment{color:#707880}.hljs-tag{color:#c9ccd3}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#cdd3de}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ec5f67}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ea9560}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fc0}.hljs-strong{font-weight:700;color:#fc0}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#8bd649}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#80cbc4}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#89ddff}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#82aaff}.hljs-emphasis{color:#82aaff;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#ec5f67}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/material-darker.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/material-darker.min.css
new file mode 100644
index 0000000..8e32102
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/material-darker.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Material Darker
+  Author: Nate Peterson
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#eff;background:#212121}.hljs ::selection,.hljs::selection{background-color:#353535;color:#eff}.hljs-comment{color:#4a4a4a}.hljs-tag{color:#b2ccd6}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#eff}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f07178}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f78c6c}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffcb6b}.hljs-strong{font-weight:700;color:#ffcb6b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#c3e88d}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#89ddff}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#82aaff}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c792ea}.hljs-emphasis{color:#c792ea;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#ff5370}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/material-lighter.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/material-lighter.min.css
new file mode 100644
index 0000000..bf84b5e
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/material-lighter.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Material Lighter
+  Author: Nate Peterson
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#80cbc4;background:#fafafa}.hljs ::selection,.hljs::selection{background-color:#cceae7;color:#80cbc4}.hljs-comment{color:#ccd7da}.hljs-tag{color:#8796b0}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#80cbc4}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ff5370}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f76d47}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffb62c}.hljs-strong{font-weight:700;color:#ffb62c}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#91b859}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#39adb5}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#6182b8}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#7c4dff}.hljs-emphasis{color:#7c4dff;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#e53935}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/material-palenight.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/material-palenight.min.css
new file mode 100644
index 0000000..901eb09
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/material-palenight.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Material Palenight
+  Author: Nate Peterson
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#959dcb;background:#292d3e}.hljs ::selection,.hljs::selection{background-color:#32374d;color:#959dcb}.hljs-comment{color:#676e95}.hljs-tag{color:#8796b0}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#959dcb}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f07178}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f78c6c}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffcb6b}.hljs-strong{font-weight:700;color:#ffcb6b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#c3e88d}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#89ddff}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#82aaff}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c792ea}.hljs-emphasis{color:#c792ea;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#ff5370}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/material-vivid.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/material-vivid.min.css
new file mode 100644
index 0000000..cadaf26
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/material-vivid.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Material Vivid
+  Author: joshyrobot
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#80868b;background:#202124}.hljs ::selection,.hljs::selection{background-color:#323639;color:#80868b}.hljs-comment{color:#44464d}.hljs-tag{color:#676c71}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#80868b}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f44336}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ff9800}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffeb3b}.hljs-strong{font-weight:700;color:#ffeb3b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#00e676}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#00bcd4}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#2196f3}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#673ab7}.hljs-emphasis{color:#673ab7;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#8d6e63}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/material.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/material.min.css
new file mode 100644
index 0000000..90c3de9
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/material.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Material
+  Author: Nate Peterson
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#eff;background:#263238}.hljs ::selection,.hljs::selection{background-color:#314549;color:#eff}.hljs-comment{color:#546e7a}.hljs-tag{color:#b2ccd6}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#eff}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f07178}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f78c6c}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffcb6b}.hljs-strong{font-weight:700;color:#ffcb6b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#c3e88d}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#89ddff}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#82aaff}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c792ea}.hljs-emphasis{color:#c792ea;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#ff5370}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/mellow-purple.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/mellow-purple.min.css
new file mode 100644
index 0000000..be9fd92
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/mellow-purple.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Mellow Purple
+  Author: gidsi
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#fef;background:#1e0528}.hljs ::selection,.hljs::selection{background-color:#331354;color:#fef}.hljs-comment{color:#320f55}.hljs-tag{color:#873582}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#fef}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#00d9e9}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aa00a3}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#955ae7}.hljs-strong{font-weight:700;color:#955ae7}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#05cb0d}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#b900b1}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#550068}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#8991bb}.hljs-emphasis{color:#8991bb;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#4d6fff}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/mexico-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/mexico-light.min.css
new file mode 100644
index 0000000..13747e5
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/mexico-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Mexico Light
+  Author: Sheldon Johnson
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#383838;background:#f8f8f8}.hljs ::selection,.hljs::selection{background-color:#d8d8d8;color:#383838}.hljs-comment{color:#b8b8b8}.hljs-tag{color:#585858}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#383838}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ab4642}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#dc9656}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f79a0e}.hljs-strong{font-weight:700;color:#f79a0e}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#538947}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#4b8093}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#7cafc2}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#96609e}.hljs-emphasis{color:#96609e;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#a16946}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/mocha.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/mocha.min.css
new file mode 100644
index 0000000..bc1f3bf
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/mocha.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Mocha
+  Author: Chris Kempson (http://chriskempson.com)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d0c8c6;background:#3b3228}.hljs ::selection,.hljs::selection{background-color:#645240;color:#d0c8c6}.hljs-comment{color:#7e705a}.hljs-tag{color:#b8afad}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d0c8c6}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#cb6077}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d28b71}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f4bc87}.hljs-strong{font-weight:700;color:#f4bc87}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#beb55b}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#7bbda4}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#8ab3b5}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a89bb9}.hljs-emphasis{color:#a89bb9;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#bb9584}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/monokai.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/monokai.min.css
new file mode 100644
index 0000000..8aacf00
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/monokai.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Monokai
+  Author: Wimer Hazenberg (http://www.monokai.nl)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#f8f8f2;background:#272822}.hljs ::selection,.hljs::selection{background-color:#49483e;color:#f8f8f2}.hljs-comment{color:#75715e}.hljs-tag{color:#a59f85}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#f8f8f2}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f92672}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fd971f}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f4bf75}.hljs-strong{font-weight:700;color:#f4bf75}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a6e22e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#a1efe4}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#66d9ef}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ae81ff}.hljs-emphasis{color:#ae81ff;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c63}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/nebula.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/nebula.min.css
new file mode 100644
index 0000000..17de036
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/nebula.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Nebula
+  Author: Gabriel Fontes (https://github.com/Misterio77)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a4a6a9;background:#22273b}.hljs ::selection,.hljs::selection{background-color:#5a8380;color:#a4a6a9}.hljs-comment{color:#6e6f72}.hljs-tag{color:#87888b}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a4a6a9}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#777abc}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#94929e}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#4f9062}.hljs-strong{font-weight:700;color:#4f9062}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#6562a8}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#226f68}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#4d6bb6}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#716cae}.hljs-emphasis{color:#716cae;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#8c70a7}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/nord.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/nord.min.css
new file mode 100644
index 0000000..508ae85
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/nord.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Nord
+  Author: arcticicestudio
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#e5e9f0;background:#2e3440}.hljs ::selection,.hljs::selection{background-color:#434c5e;color:#e5e9f0}.hljs-comment{color:#4c566a}.hljs-tag{color:#d8dee9}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#e5e9f0}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#bf616a}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d08770}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ebcb8b}.hljs-strong{font-weight:700;color:#ebcb8b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a3be8c}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#88c0d0}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#81a1c1}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b48ead}.hljs-emphasis{color:#b48ead;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#5e81ac}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/nova.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/nova.min.css
new file mode 100644
index 0000000..5b9a408
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/nova.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Nova
+  Author: George Essig (https://github.com/gessig), Trevor D. Miller (https://trevordmiller.com)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c5d4dd;background:#3c4c55}.hljs ::selection,.hljs::selection{background-color:#6a7d89;color:#c5d4dd}.hljs-comment,.hljs-tag{color:#899ba6}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c5d4dd}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#83afe5}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#7fc1ca}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a8ce93}.hljs-strong{font-weight:700;color:#a8ce93}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#7fc1ca}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#f2c38f}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#83afe5}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#9a93e1}.hljs-emphasis{color:#9a93e1;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#f2c38f}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/ocean.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ocean.min.css
new file mode 100644
index 0000000..9127e53
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ocean.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Ocean
+  Author: Chris Kempson (http://chriskempson.com)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c0c5ce;background:#2b303b}.hljs ::selection,.hljs::selection{background-color:#4f5b66;color:#c0c5ce}.hljs-comment{color:#65737e}.hljs-tag{color:#a7adba}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c0c5ce}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#bf616a}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d08770}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ebcb8b}.hljs-strong{font-weight:700;color:#ebcb8b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a3be8c}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#96b5b4}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#8fa1b3}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b48ead}.hljs-emphasis{color:#b48ead;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#ab7967}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/oceanicnext.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/oceanicnext.min.css
new file mode 100644
index 0000000..627c14b
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/oceanicnext.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: OceanicNext
+  Author: https://github.com/voronianski/oceanic-next-color-scheme
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c0c5ce;background:#1b2b34}.hljs ::selection,.hljs::selection{background-color:#4f5b66;color:#c0c5ce}.hljs-comment{color:#65737e}.hljs-tag{color:#a7adba}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c0c5ce}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ec5f67}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f99157}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fac863}.hljs-strong{font-weight:700;color:#fac863}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#99c794}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#5fb3b3}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#69c}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c594c5}.hljs-emphasis{color:#c594c5;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#ab7967}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/one-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/one-light.min.css
new file mode 100644
index 0000000..63f57cb
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/one-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: One Light
+  Author: Daniel Pfeifer (http://github.com/purpleKarrot)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#383a42;background:#fafafa}.hljs ::selection,.hljs::selection{background-color:#e5e5e6;color:#383a42}.hljs-comment{color:#a0a1a7}.hljs-tag{color:#696c77}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#383a42}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ca1243}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d75f00}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#c18401}.hljs-strong{font-weight:700;color:#c18401}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#50a14f}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#0184bc}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#4078f2}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a626a4}.hljs-emphasis{color:#a626a4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#986801}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/onedark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/onedark.min.css
new file mode 100644
index 0000000..1b8c6b7
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/onedark.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: OneDark
+  Author: Lalit Magant (http://github.com/tilal6991)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#abb2bf;background:#282c34}.hljs ::selection,.hljs::selection{background-color:#3e4451;color:#abb2bf}.hljs-comment{color:#545862}.hljs-tag{color:#565c64}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#abb2bf}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#e06c75}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d19a66}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#e5c07b}.hljs-strong{font-weight:700;color:#e5c07b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#98c379}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#56b6c2}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#61afef}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c678dd}.hljs-emphasis{color:#c678dd;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#be5046}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/outrun-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/outrun-dark.min.css
new file mode 100644
index 0000000..22995a1
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/outrun-dark.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Outrun Dark
+  Author: Hugo Delahousse (http://github.com/hugodelahousse/)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d0d0fa;background:#00002a}.hljs ::selection,.hljs::selection{background-color:#30305a;color:#d0d0fa}.hljs-comment{color:#50507a}.hljs-tag{color:#b0b0da}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d0d0fa}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ff4242}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fc8d28}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f3e877}.hljs-strong{font-weight:700;color:#f3e877}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#59f176}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#0ef0f0}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#66b0ff}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#f10596}.hljs-emphasis{color:#f10596;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#f003ef}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/papercolor-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/papercolor-dark.min.css
new file mode 100644
index 0000000..c35d7c7
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/papercolor-dark.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: PaperColor Dark
+  Author: Jon Leopard (http://github.com/jonleopard) based on PaperColor Theme (https://github.com/NLKNguyen/papercolor-theme)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:grey;background:#1c1c1c}.hljs ::selection,.hljs::selection{background-color:#5faf00;color:grey}.hljs-comment{color:#d7af5f}.hljs-tag{color:#5fafd7}.hljs-operator,.hljs-punctuation,.hljs-subst{color:grey}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#585858}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#5faf5f}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#afd700}.hljs-strong{font-weight:700;color:#afd700}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#af87d7}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#ffaf00}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#ff5faf}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#00afaf}.hljs-emphasis{color:#00afaf;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#5f8787}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/papercolor-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/papercolor-light.min.css
new file mode 100644
index 0000000..e23b616
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/papercolor-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: PaperColor Light
+  Author: Jon Leopard (http://github.com/jonleopard) based on PaperColor Theme (https://github.com/NLKNguyen/papercolor-theme)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#444;background:#eee}.hljs ::selection,.hljs::selection{background-color:#008700;color:#444}.hljs-comment{color:#5f8700}.hljs-tag{color:#0087af}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#444}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#bcbcbc}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d70000}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#d70087}.hljs-strong{font-weight:700;color:#d70087}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#8700af}.hljs-attribute,.hljs-built_in,.hljs-doctag,.hljs-function .hljs-title,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#d75f00}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#005faf}.hljs-emphasis{color:#005faf;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#005f87}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/paraiso.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/paraiso.min.css
new file mode 100644
index 0000000..135fcd2
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/paraiso.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Paraiso
+  Author: Jan T. Sott
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a39e9b;background:#2f1e2e}.hljs ::selection,.hljs::selection{background-color:#4f424c;color:#a39e9b}.hljs-comment{color:#776e71}.hljs-tag{color:#8d8687}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a39e9b}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ef6155}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f99b15}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fec418}.hljs-strong{font-weight:700;color:#fec418}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#48b685}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#5bc4bf}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#06b6ef}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#815ba4}.hljs-emphasis{color:#815ba4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#e96ba8}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/pasque.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/pasque.min.css
new file mode 100644
index 0000000..e4c2672
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/pasque.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Pasque
+  Author: Gabriel Fontes (https://github.com/Misterio77)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#dedcdf;background:#271c3a}.hljs ::selection,.hljs::selection{background-color:#3e2d5c;color:#dedcdf}.hljs-comment{color:#5d5766}.hljs-tag{color:#bebcbf}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#dedcdf}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#a92258}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#918889}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#804ead}.hljs-strong{font-weight:700;color:#804ead}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#c6914b}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#7263aa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#8e7dc6}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#953b9d}.hljs-emphasis{color:#953b9d;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#59325c}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/phd.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/phd.min.css
new file mode 100644
index 0000000..b5f9fea
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/phd.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: PhD
+  Author: Hennig Hasemann (http://leetless.de/vim.html)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#b8bbc2;background:#061229}.hljs ::selection,.hljs::selection{background-color:#4d5666;color:#b8bbc2}.hljs-comment{color:#717885}.hljs-tag{color:#9a99a3}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#b8bbc2}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d07346}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f0a000}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fbd461}.hljs-strong{font-weight:700;color:#fbd461}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#99bf52}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#72b9bf}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#5299bf}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#9989cc}.hljs-emphasis{color:#9989cc;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b08060}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/pico.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/pico.min.css
new file mode 100644
index 0000000..3765998
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/pico.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Pico
+  Author: PICO-8 (http://www.lexaloffle.com/pico-8.php)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#5f574f;background:#000}.hljs ::selection,.hljs::selection{background-color:#7e2553;color:#5f574f}.hljs-comment{color:#008751}.hljs-tag{color:#ab5236}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#5f574f}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ff004d}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ffa300}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fff024}.hljs-strong{font-weight:700;color:#fff024}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#00e756}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#29adff}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#83769c}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ff77a8}.hljs-emphasis{color:#ff77a8;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#fca}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/pop.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/pop.min.css
new file mode 100644
index 0000000..22b488a
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/pop.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Pop
+  Author: Chris Kempson (http://chriskempson.com)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d0d0d0;background:#000}.hljs ::selection,.hljs::selection{background-color:#303030;color:#d0d0d0}.hljs-comment{color:#505050}.hljs-tag{color:#b0b0b0}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d0d0d0}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#eb008a}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f29333}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f8ca12}.hljs-strong{font-weight:700;color:#f8ca12}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#37b349}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#0ab}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#0e5a94}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b31e8d}.hljs-emphasis{color:#b31e8d;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#7a2d00}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/porple.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/porple.min.css
new file mode 100644
index 0000000..77aac4c
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/porple.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Porple
+  Author: Niek den Breeje (https://github.com/AuditeMarlow)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d8d8d8;background:#292c36}.hljs ::selection,.hljs::selection{background-color:#474160;color:#d8d8d8}.hljs-comment{color:#65568a}.hljs-tag{color:#b8b8b8}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d8d8d8}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f84547}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d28e5d}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#efa16b}.hljs-strong{font-weight:700;color:#efa16b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#95c76f}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#64878f}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#8485ce}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b74989}.hljs-emphasis{color:#b74989;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#986841}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/qualia.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/qualia.min.css
new file mode 100644
index 0000000..6b333ba
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/qualia.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Qualia
+  Author: isaacwhanson
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:silver;background:#101010}.hljs ::selection,.hljs::selection{background-color:#454545;color:silver}.hljs-comment{color:#454545}.hljs-tag{color:grey}.hljs-operator,.hljs-punctuation,.hljs-subst{color:silver}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#efa6a2}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#a3b8ef}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#e6a3dc}.hljs-strong{font-weight:700;color:#e6a3dc}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#80c990}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#c8c874}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#50cacd}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#e0af85}.hljs-emphasis{color:#e0af85;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:grey}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/railscasts.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/railscasts.min.css
new file mode 100644
index 0000000..835bace
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/railscasts.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Railscasts
+  Author: Ryan Bates (http://railscasts.com)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#e6e1dc;background:#2b2b2b}.hljs ::selection,.hljs::selection{background-color:#3a4055;color:#e6e1dc}.hljs-comment{color:#5a647e}.hljs-tag{color:#d4cfc9}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#e6e1dc}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#da4939}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#cc7833}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffc66d}.hljs-strong{font-weight:700;color:#ffc66d}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a5c261}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#519f50}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#6d9cbe}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b6b3eb}.hljs-emphasis{color:#b6b3eb;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#bc9458}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/rebecca.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/rebecca.min.css
new file mode 100644
index 0000000..c7c3d77
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/rebecca.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Rebecca
+  Author: Victor Borja (http://github.com/vic) based on Rebecca Theme (http://github.com/vic/rebecca-theme)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#f1eff8;background:#292a44}.hljs ::selection,.hljs::selection{background-color:#383a62;color:#f1eff8}.hljs-comment{color:#669}.hljs-tag{color:#a0a0c5}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#f1eff8}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#a0a0c5}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#efe4a1}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ae81ff}.hljs-strong{font-weight:700;color:#ae81ff}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#6dfedf}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#8eaee0}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#2de0a7}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#7aa5ff}.hljs-emphasis{color:#7aa5ff;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#ff79c6}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/ros-pine-dawn.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ros-pine-dawn.min.css
new file mode 100644
index 0000000..a877d23
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ros-pine-dawn.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Rosé Pine Dawn
+  Author: Emilia Dunfelt <sayhi@dunfelt.se>
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#575279;background:#faf4ed}.hljs ::selection,.hljs::selection{background-color:#f2e9de;color:#575279}.hljs-comment{color:#9893a5}.hljs-tag{color:#6e6a86}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#575279}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#1f1d2e}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#b4637a}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ea9d34}.hljs-strong{font-weight:700;color:#ea9d34}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#d7827e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#286983}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#56949f}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#907aa9}.hljs-emphasis{color:#907aa9;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c5c3ce}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/ros-pine-moon.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ros-pine-moon.min.css
new file mode 100644
index 0000000..eab4a50
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ros-pine-moon.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Rosé Pine Moon
+  Author: Emilia Dunfelt <sayhi@dunfelt.se>
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#e0def4;background:#232136}.hljs ::selection,.hljs::selection{background-color:#393552;color:#e0def4}.hljs-comment{color:#59546d}.hljs-tag{color:#817c9c}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#e0def4}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ecebf0}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#eb6f92}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f6c177}.hljs-strong{font-weight:700;color:#f6c177}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#ea9a97}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#3e8fb0}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#9ccfd8}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c4a7e7}.hljs-emphasis{color:#c4a7e7;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b9b9bc}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/ros-pine.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ros-pine.min.css
new file mode 100644
index 0000000..ddc4e69
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/ros-pine.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Rosé Pine
+  Author: Emilia Dunfelt <sayhi@dunfelt.se>
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#e0def4;background:#191724}.hljs ::selection,.hljs::selection{background-color:#26233a;color:#e0def4}.hljs-comment{color:#555169}.hljs-tag{color:#6e6a86}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#e0def4}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#e2e1e7}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#eb6f92}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f6c177}.hljs-strong{font-weight:700;color:#f6c177}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#ebbcba}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#31748f}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#9ccfd8}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c4a7e7}.hljs-emphasis{color:#c4a7e7;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#e5e5e5}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/sagelight.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/sagelight.min.css
new file mode 100644
index 0000000..f0dc927
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/sagelight.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Sagelight
+  Author: Carter Veldhuizen
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#383838;background:#f8f8f8}.hljs ::selection,.hljs::selection{background-color:#d8d8d8;color:#383838}.hljs-comment{color:#b8b8b8}.hljs-tag{color:#585858}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#383838}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fa8480}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ffaa61}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffdc61}.hljs-strong{font-weight:700;color:#ffdc61}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#a0d2c8}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#a2d6f5}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#a0a7d2}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c8a0d2}.hljs-emphasis{color:#c8a0d2;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d2b2a0}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/sandcastle.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/sandcastle.min.css
new file mode 100644
index 0000000..601dc21
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/sandcastle.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Sandcastle
+  Author: George Essig (https://github.com/gessig)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a89984;background:#282c34}.hljs ::selection,.hljs::selection{background-color:#3e4451;color:#a89984}.hljs-comment{color:#665c54}.hljs-tag{color:#928374}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a89984}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#83a598}.hljs-attr,.hljs-class .hljs-title,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-title,.hljs-title.class_,.hljs-variable.constant_{color:#a07e3b}.hljs-strong{font-weight:700;color:#a07e3b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#528b8b}.hljs-attribute,.hljs-built_in,.hljs-doctag,.hljs-function .hljs-title,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#83a598}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#d75f5f}.hljs-emphasis{color:#d75f5f;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#a87322}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/seti-ui.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/seti-ui.min.css
new file mode 100644
index 0000000..fa3347e
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/seti-ui.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Seti UI
+  Author: 
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d6d6d6;background:#151718}.hljs ::selection,.hljs::selection{background-color:#3b758c;color:#d6d6d6}.hljs-comment{color:#41535b}.hljs-tag{color:#43a5d5}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d6d6d6}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#cd3f45}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#db7b55}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#e6cd69}.hljs-strong{font-weight:700;color:#e6cd69}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#9fca56}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#55dbbe}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#55b5db}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a074c4}.hljs-emphasis{color:#a074c4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#8a553f}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/shapeshifter.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/shapeshifter.min.css
new file mode 100644
index 0000000..a3e83b5
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/shapeshifter.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Shapeshifter
+  Author: Tyler Benziger (http://tybenz.com)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#102015;background:#f9f9f9}.hljs ::selection,.hljs::selection{background-color:#ababab;color:#102015}.hljs-comment{color:#555}.hljs-tag{color:#343434}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#102015}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#e92f2f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#e09448}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#dddd13}.hljs-strong{font-weight:700;color:#dddd13}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#0ed839}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#23edda}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3b48e3}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#f996e2}.hljs-emphasis{color:#f996e2;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#69542d}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/silk-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/silk-dark.min.css
new file mode 100644
index 0000000..1315a0b
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/silk-dark.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Silk Dark
+  Author: Gabriel Fontes (https://github.com/Misterio77)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c7dbdd;background:#0e3c46}.hljs ::selection,.hljs::selection{background-color:#2a5054;color:#c7dbdd}.hljs-comment{color:#587073}.hljs-tag{color:#9dc8cd}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c7dbdd}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fb6953}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fcab74}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fce380}.hljs-strong{font-weight:700;color:#fce380}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#73d8ad}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#3fb2b9}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#46bddd}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#756b8a}.hljs-emphasis{color:#756b8a;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#9b647b}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/silk-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/silk-light.min.css
new file mode 100644
index 0000000..54b0058
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/silk-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Silk Light
+  Author: Gabriel Fontes (https://github.com/Misterio77)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#385156;background:#e9f1ef}.hljs ::selection,.hljs::selection{background-color:#90b7b6;color:#385156}.hljs-comment{color:#5c787b}.hljs-tag{color:#4b5b5f}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#385156}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#cf432e}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d27f46}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#cfad25}.hljs-strong{font-weight:700;color:#cfad25}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#6ca38c}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#329ca2}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#39aac9}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6e6582}.hljs-emphasis{color:#6e6582;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#865369}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/snazzy.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/snazzy.min.css
new file mode 100644
index 0000000..2241752
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/snazzy.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Snazzy
+  Author: Chawye Hsu (https://github.com/chawyehsu) based on Hyper Snazzy Theme (https://github.com/sindresorhus/hyper-snazzy)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#e2e4e5;background:#282a36}.hljs ::selection,.hljs::selection{background-color:#43454f;color:#e2e4e5}.hljs-comment{color:#78787e}.hljs-tag{color:#a5a5a9}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#e2e4e5}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ff5c57}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ff9f43}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f3f99d}.hljs-strong{font-weight:700;color:#f3f99d}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#5af78e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#9aedfe}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#57c7ff}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ff6ac1}.hljs-emphasis{color:#ff6ac1;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b2643c}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/solar-flare-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/solar-flare-light.min.css
new file mode 100644
index 0000000..4b6a98f
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/solar-flare-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Solar Flare Light
+  Author: Chuck Harmston (https://chuck.harmston.ch)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#586875;background:#f5f7fa}.hljs ::selection,.hljs::selection{background-color:#a6afb8;color:#586875}.hljs-comment{color:#85939e}.hljs-tag{color:#667581}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#586875}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ef5253}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#e66b2b}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#e4b51c}.hljs-strong{font-weight:700;color:#e4b51c}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#7cc844}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#52cbb0}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#33b5e1}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a363d5}.hljs-emphasis{color:#a363d5;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d73c9a}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/solar-flare.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/solar-flare.min.css
new file mode 100644
index 0000000..115fb97
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/solar-flare.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Solar Flare
+  Author: Chuck Harmston (https://chuck.harmston.ch)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a6afb8;background:#18262f}.hljs ::selection,.hljs::selection{background-color:#586875;color:#a6afb8}.hljs-comment{color:#667581}.hljs-tag{color:#85939e}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a6afb8}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ef5253}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#e66b2b}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#e4b51c}.hljs-strong{font-weight:700;color:#e4b51c}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#7cc844}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#52cbb0}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#33b5e1}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a363d5}.hljs-emphasis{color:#a363d5;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d73c9a}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/solarized-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/solarized-dark.min.css
new file mode 100644
index 0000000..e2b1535
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/solarized-dark.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Solarized Dark
+  Author: Ethan Schoonover (modified by aramisgithub)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#93a1a1;background:#002b36}.hljs ::selection,.hljs::selection{background-color:#586e75;color:#93a1a1}.hljs-comment{color:#657b83}.hljs-tag{color:#839496}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#93a1a1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#dc322f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#cb4b16}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#b58900}.hljs-strong{font-weight:700;color:#b58900}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#859900}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#2aa198}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#268bd2}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6c71c4}.hljs-emphasis{color:#6c71c4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d33682}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/solarized-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/solarized-light.min.css
new file mode 100644
index 0000000..67a590b
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/solarized-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Solarized Light
+  Author: Ethan Schoonover (modified by aramisgithub)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#586e75;background:#fdf6e3}.hljs ::selection,.hljs::selection{background-color:#93a1a1;color:#586e75}.hljs-comment{color:#839496}.hljs-tag{color:#657b83}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#586e75}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#dc322f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#cb4b16}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#b58900}.hljs-strong{font-weight:700;color:#b58900}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#859900}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#2aa198}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#268bd2}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6c71c4}.hljs-emphasis{color:#6c71c4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d33682}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/spacemacs.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/spacemacs.min.css
new file mode 100644
index 0000000..ba8f7d9
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/spacemacs.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Spacemacs
+  Author: Nasser Alshammari (https://github.com/nashamri/spacemacs-theme)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a3a3a3;background:#1f2022}.hljs ::selection,.hljs::selection{background-color:#444155;color:#a3a3a3}.hljs-comment{color:#585858}.hljs-tag{color:#b8b8b8}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a3a3a3}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f2241f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:orange}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#b1951d}.hljs-strong{font-weight:700;color:#b1951d}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#67b11d}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#2d9574}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#4f97d7}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a31db1}.hljs-emphasis{color:#a31db1;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b03060}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/summercamp.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/summercamp.min.css
new file mode 100644
index 0000000..931b035
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/summercamp.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: summercamp
+  Author: zoe firi (zoefiri.github.io)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#736e55;background:#1c1810}.hljs ::selection,.hljs::selection{background-color:#3a3527;color:#736e55}.hljs-comment{color:#504b38}.hljs-tag{color:#5f5b45}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#736e55}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#e35142}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fba11b}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f2ff27}.hljs-strong{font-weight:700;color:#f2ff27}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#5ceb5a}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#5aebbc}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#489bf0}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ff8080}.hljs-emphasis{color:#ff8080;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#f69be7}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/summerfruit-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/summerfruit-dark.min.css
new file mode 100644
index 0000000..8ba6c88
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/summerfruit-dark.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Summerfruit Dark
+  Author: Christopher Corley (http://christop.club/)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d0d0d0;background:#151515}.hljs ::selection,.hljs::selection{background-color:#303030;color:#d0d0d0}.hljs-comment{color:#505050}.hljs-tag{color:#b0b0b0}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d0d0d0}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ff0086}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fd8900}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#aba800}.hljs-strong{font-weight:700;color:#aba800}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#00c918}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#1faaaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3777e6}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ad00a1}.hljs-emphasis{color:#ad00a1;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c63}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/summerfruit-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/summerfruit-light.min.css
new file mode 100644
index 0000000..958eda3
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/summerfruit-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Summerfruit Light
+  Author: Christopher Corley (http://christop.club/)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#101010;background:#fff}.hljs ::selection,.hljs::selection{background-color:#d0d0d0;color:#101010}.hljs-comment{color:#b0b0b0}.hljs-tag{color:#000}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#101010}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ff0086}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fd8900}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#aba800}.hljs-strong{font-weight:700;color:#aba800}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#00c918}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#1faaaa}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3777e6}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ad00a1}.hljs-emphasis{color:#ad00a1;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c63}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/synth-midnight-terminal-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/synth-midnight-terminal-dark.min.css
new file mode 100644
index 0000000..faa5d4d
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/synth-midnight-terminal-dark.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Synth Midnight Terminal Dark
+  Author: Michaël Ball (http://github.com/michael-ball/)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c3c4;background:#050608}.hljs ::selection,.hljs::selection{background-color:#28292a;color:#c1c3c4}.hljs-comment{color:#474849}.hljs-tag{color:#a3a5a6}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c3c4}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#b53b50}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ea770d}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#c9d364}.hljs-strong{font-weight:700;color:#c9d364}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#06ea61}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#42fff9}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#03aeff}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ea5ce2}.hljs-emphasis{color:#ea5ce2;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#cd6320}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/synth-midnight-terminal-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/synth-midnight-terminal-light.min.css
new file mode 100644
index 0000000..579a65f
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/synth-midnight-terminal-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Synth Midnight Terminal Light
+  Author: Michaël Ball (http://github.com/michael-ball/)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#28292a;background:#dddfe0}.hljs ::selection,.hljs::selection{background-color:#c1c3c4;color:#28292a}.hljs-comment{color:#a3a5a6}.hljs-tag{color:#474849}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#28292a}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#b53b50}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ea770d}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#c9d364}.hljs-strong{font-weight:700;color:#c9d364}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#06ea61}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#42fff9}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#03aeff}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ea5ce2}.hljs-emphasis{color:#ea5ce2;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#cd6320}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/tango.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/tango.min.css
new file mode 100644
index 0000000..d37318a
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/tango.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Tango
+  Author: @Schnouki, based on the Tango Desktop Project
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#d3d7cf;background:#2e3436}.hljs ::selection,.hljs::selection{background-color:#fce94f;color:#d3d7cf}.hljs-comment{color:#555753}.hljs-tag{color:#729fcf}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#d3d7cf}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#c00}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ef2929}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#c4a000}.hljs-strong{font-weight:700;color:#c4a000}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#4e9a06}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#06989a}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3465a4}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#75507b}.hljs-emphasis{color:#75507b;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#34e2e2}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/tender.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/tender.min.css
new file mode 100644
index 0000000..c72c7df
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/tender.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: tender
+  Author: Jacobo Tabernero (https://github/com/jacoborus/tender.vim)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#eee;background:#282828}.hljs ::selection,.hljs::selection{background-color:#484848;color:#eee}.hljs-comment{color:#4c4c4c}.hljs-tag{color:#b8b8b8}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#eee}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f43753}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#dc9656}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ffc24b}.hljs-strong{font-weight:700;color:#ffc24b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#c9d05c}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#73cef4}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#b3deef}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#d3b987}.hljs-emphasis{color:#d3b987;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#a16946}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/tomorrow-night.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/tomorrow-night.min.css
new file mode 100644
index 0000000..a0b3f62
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/tomorrow-night.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Tomorrow Night
+  Author: Chris Kempson (http://chriskempson.com)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#ccc;background:#2d2d2d}.hljs ::selection,.hljs::selection{background-color:#515151;color:#ccc}.hljs-comment{color:#999}.hljs-tag{color:#b4b7b4}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#ccc}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#f2777a}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f99157}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fc6}.hljs-strong{font-weight:700;color:#fc6}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#9c9}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#6cc}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#69c}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c9c}.hljs-emphasis{color:#c9c;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#a3685a}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/tomorrow.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/tomorrow.min.css
new file mode 100644
index 0000000..5785f6e
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/tomorrow.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Tomorrow
+  Author: Chris Kempson (http://chriskempson.com)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#4d4d4c;background:#fff}.hljs ::selection,.hljs::selection{background-color:#d6d6d6;color:#4d4d4c}.hljs-comment{color:#8e908c}.hljs-tag{color:#969896}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#4d4d4c}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#c82829}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f5871f}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#eab700}.hljs-strong{font-weight:700;color:#eab700}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#718c00}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#3e999f}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#4271ae}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#8959a8}.hljs-emphasis{color:#8959a8;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#a3685a}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/twilight.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/twilight.min.css
new file mode 100644
index 0000000..0a8f5f9
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/twilight.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Twilight
+  Author: David Hart (https://github.com/hartbit)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a7a7a7;background:#1e1e1e}.hljs ::selection,.hljs::selection{background-color:#464b50;color:#a7a7a7}.hljs-comment{color:#5f5a60}.hljs-tag{color:#838184}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a7a7a7}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#cf6a4c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#cda869}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f9ee98}.hljs-strong{font-weight:700;color:#f9ee98}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#8f9d6a}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#afc4db}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#7587a6}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#9b859d}.hljs-emphasis{color:#9b859d;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#9b703f}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/unikitty-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/unikitty-dark.min.css
new file mode 100644
index 0000000..752d90a
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/unikitty-dark.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Unikitty Dark
+  Author: Josh W Lewis (@joshwlewis)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#bcbabe;background:#2e2a31}.hljs ::selection,.hljs::selection{background-color:#666369;color:#bcbabe}.hljs-comment{color:#838085}.hljs-tag{color:#9f9da2}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#bcbabe}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d8137f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d65407}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#dc8a0e}.hljs-strong{font-weight:700;color:#dc8a0e}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#17ad98}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#149bda}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#796af5}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#bb60ea}.hljs-emphasis{color:#bb60ea;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c720ca}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/unikitty-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/unikitty-light.min.css
new file mode 100644
index 0000000..fe74653
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/unikitty-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Unikitty Light
+  Author: Josh W Lewis (@joshwlewis)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#6c696e;background:#fff}.hljs ::selection,.hljs::selection{background-color:#c4c3c5;color:#6c696e}.hljs-comment{color:#a7a5a8}.hljs-tag{color:#89878b}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#6c696e}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d8137f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#d65407}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#dc8a0e}.hljs-strong{font-weight:700;color:#dc8a0e}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#17ad98}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#149bda}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#775dff}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#aa17e6}.hljs-emphasis{color:#aa17e6;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#e013d0}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/vulcan.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/vulcan.min.css
new file mode 100644
index 0000000..3c88968
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/vulcan.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: vulcan
+  Author: Andrey Varfolomeev
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#5b778c;background:#041523}.hljs ::selection,.hljs::selection{background-color:#003552;color:#5b778c}.hljs-comment{color:#7a5759}.hljs-tag{color:#6b6977}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#5b778c}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#818591}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#9198a3}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#adb4b9}.hljs-strong{font-weight:700;color:#adb4b9}.hljs-addition,.hljs-attribute,.hljs-built_in,.hljs-code,.hljs-doctag,.hljs-function .hljs-title,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp,.hljs-section,.hljs-string,.hljs-title.class_.inherited__,.hljs-title.function_,.ruby .hljs-property{color:#977d7c}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#9198a3}.hljs-emphasis{color:#9198a3;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#977d7c}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-10-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-10-light.min.css
new file mode 100644
index 0000000..b27b99f
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-10-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Windows 10 Light
+  Author: Fergus Collins (https://github.com/C-Fergus)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#767676;background:#f2f2f2}.hljs ::selection,.hljs::selection{background-color:#d9d9d9;color:#767676}.hljs-comment{color:#ccc}.hljs-tag{color:#ababab}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#767676}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#c50f1f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#f9f1a5}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#c19c00}.hljs-strong{font-weight:700;color:#c19c00}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#13a10e}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#3a96dd}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#0037da}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#881798}.hljs-emphasis{color:#881798;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#16c60c}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-10.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-10.min.css
new file mode 100644
index 0000000..296b84c
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-10.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Windows 10
+  Author: Fergus Collins (https://github.com/C-Fergus)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#ccc;background:#0c0c0c}.hljs ::selection,.hljs::selection{background-color:#535353;color:#ccc}.hljs-comment{color:#767676}.hljs-tag{color:#b9b9b9}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#ccc}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#e74856}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#c19c00}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#f9f1a5}.hljs-strong{font-weight:700;color:#f9f1a5}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#16c60c}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#61d6d6}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#3b78ff}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b4009e}.hljs-emphasis{color:#b4009e;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#13a10e}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-95-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-95-light.min.css
new file mode 100644
index 0000000..c30dd24
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-95-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Windows 95 Light
+  Author: Fergus Collins (https://github.com/C-Fergus)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#545454;background:#fcfcfc}.hljs ::selection,.hljs::selection{background-color:#c4c4c4;color:#545454}.hljs-comment{color:#a8a8a8}.hljs-tag{color:#7e7e7e}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#545454}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#a80000}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fcfc54}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a85400}.hljs-strong{font-weight:700;color:#a85400}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#00a800}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#00a8a8}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#0000a8}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a800a8}.hljs-emphasis{color:#a800a8;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#54fc54}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-95.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-95.min.css
new file mode 100644
index 0000000..962d307
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-95.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Windows 95
+  Author: Fergus Collins (https://github.com/C-Fergus)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a8a8a8;background:#000}.hljs ::selection,.hljs::selection{background-color:#383838;color:#a8a8a8}.hljs-comment{color:#545454}.hljs-tag{color:#7e7e7e}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a8a8a8}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fc5454}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#a85400}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fcfc54}.hljs-strong{font-weight:700;color:#fcfc54}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#54fc54}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#54fcfc}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#5454fc}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#fc54fc}.hljs-emphasis{color:#fc54fc;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#00a800}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-high-contrast-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-high-contrast-light.min.css
new file mode 100644
index 0000000..fb24f75
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-high-contrast-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Windows High Contrast Light
+  Author: Fergus Collins (https://github.com/C-Fergus)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#545454;background:#fcfcfc}.hljs ::selection,.hljs::selection{background-color:#d4d4d4;color:#545454}.hljs-comment{color:silver}.hljs-tag{color:#7e7e7e}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#545454}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:maroon}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fcfc54}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:olive}.hljs-strong{font-weight:700;color:olive}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:green}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:teal}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:navy}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:purple}.hljs-emphasis{color:purple;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#54fc54}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-high-contrast.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-high-contrast.min.css
new file mode 100644
index 0000000..363f590
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-high-contrast.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Windows High Contrast
+  Author: Fergus Collins (https://github.com/C-Fergus)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:silver;background:#000}.hljs ::selection,.hljs::selection{background-color:#383838;color:silver}.hljs-comment{color:#545454}.hljs-tag{color:#a2a2a2}.hljs-operator,.hljs-punctuation,.hljs-subst{color:silver}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fc5454}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:olive}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fcfc54}.hljs-strong{font-weight:700;color:#fcfc54}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#54fc54}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#54fcfc}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#5454fc}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#fc54fc}.hljs-emphasis{color:#fc54fc;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:green}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-nt-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-nt-light.min.css
new file mode 100644
index 0000000..4332edf
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-nt-light.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Windows NT Light
+  Author: Fergus Collins (https://github.com/C-Fergus)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:grey;background:#fff}.hljs ::selection,.hljs::selection{background-color:#d5d5d5;color:grey}.hljs-comment{color:silver}.hljs-tag{color:#a0a0a0}.hljs-operator,.hljs-punctuation,.hljs-subst{color:grey}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:maroon}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ff0}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:olive}.hljs-strong{font-weight:700;color:olive}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:green}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:teal}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:navy}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:purple}.hljs-emphasis{color:purple;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#0f0}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-nt.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-nt.min.css
new file mode 100644
index 0000000..b37fdf5
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/windows-nt.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Windows NT
+  Author: Fergus Collins (https://github.com/C-Fergus)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:silver;background:#000}.hljs ::selection,.hljs::selection{background-color:#555;color:silver}.hljs-comment{color:grey}.hljs-tag{color:#a1a1a1}.hljs-operator,.hljs-punctuation,.hljs-subst{color:silver}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:red}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:olive}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ff0}.hljs-strong{font-weight:700;color:#ff0}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#0f0}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#0ff}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#00f}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#f0f}.hljs-emphasis{color:#f0f;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:green}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/woodland.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/woodland.min.css
new file mode 100644
index 0000000..a83a68b
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/woodland.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Woodland
+  Author: Jay Cornwall (https://jcornwall.com)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#cabcb1;background:#231e18}.hljs ::selection,.hljs::selection{background-color:#48413a;color:#cabcb1}.hljs-comment{color:#9d8b70}.hljs-tag{color:#b4a490}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#cabcb1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d35c5c}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ca7f32}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#e0ac16}.hljs-strong{font-weight:700;color:#e0ac16}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#b7ba53}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#6eb958}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#88a4d3}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#bb90e2}.hljs-emphasis{color:#bb90e2;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#b49368}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/xcode-dusk.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/xcode-dusk.min.css
new file mode 100644
index 0000000..7cf105a
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/xcode-dusk.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: XCode Dusk
+  Author: Elsa Gonsiorowski (https://github.com/gonsie)
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#939599;background:#282b35}.hljs ::selection,.hljs::selection{background-color:#53555d;color:#939599}.hljs-comment{color:#686a71}.hljs-tag{color:#7e8086}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#939599}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#b21889}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#786dc5}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#438288}.hljs-strong{font-weight:700;color:#438288}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#df0002}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#00a0be}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#790ead}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b21889}.hljs-emphasis{color:#b21889;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c77c48}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/base16/zenburn.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/base16/zenburn.min.css
new file mode 100644
index 0000000..a075f5f
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/base16/zenburn.min.css
@@ -0,0 +1,7 @@
+/*!
+  Theme: Zenburn
+  Author: elnawe
+  License: ~ MIT (or more permissive) [via base16-schemes-source]
+  Maintainer: @highlightjs/core-team
+  Version: 2021.09.0
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#dcdccc;background:#383838}.hljs ::selection,.hljs::selection{background-color:#606060;color:#dcdccc}.hljs-comment{color:#6f6f6f}.hljs-tag{color:grey}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#dcdccc}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#dca3a3}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#dfaf8f}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#e0cf9f}.hljs-strong{font-weight:700;color:#e0cf9f}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#5f7f5f}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#93e0e3}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#7cb8bb}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#dc8cc3}.hljs-emphasis{color:#dc8cc3;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#000}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/brown-paper.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/brown-paper.min.css
new file mode 100644
index 0000000..6231e8a
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/brown-paper.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#363c69;background:url(./brown-papersq.png) #b7a68e}.hljs-keyword,.hljs-literal,.hljs-selector-tag{color:#059}.hljs-addition,.hljs-attribute,.hljs-built_in,.hljs-bullet,.hljs-link,.hljs-name,.hljs-section,.hljs-string,.hljs-symbol,.hljs-template-tag,.hljs-template-variable,.hljs-title,.hljs-type,.hljs-variable{color:#2c009f}.hljs-comment,.hljs-deletion,.hljs-meta,.hljs-quote{color:#802022}.hljs-doctag,.hljs-keyword,.hljs-literal,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-strong,.hljs-title,.hljs-type{font-weight:700}.hljs-emphasis{font-style:italic}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/brown-papersq.png b/node_modules/mavon-editor/dist/highlightjs/styles/brown-papersq.png
new file mode 100644
index 0000000000000000000000000000000000000000..3813903dbf9fa7b1fb5bd11d9534c06667d9056f
GIT binary patch
literal 18198
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/codepen-embed.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/codepen-embed.min.css
new file mode 100644
index 0000000..0d7dff6
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/codepen-embed.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#222;color:#fff}.hljs-comment,.hljs-quote{color:#777}.hljs-built_in,.hljs-bullet,.hljs-deletion,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-regexp,.hljs-symbol,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#ab875d}.hljs-attribute,.hljs-name,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-title,.hljs-type{color:#9b869b}.hljs-addition,.hljs-keyword,.hljs-selector-tag,.hljs-string{color:#8f9c6c}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/color-brewer.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/color-brewer.min.css
new file mode 100644
index 0000000..1c677e3
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/color-brewer.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#000;background:#fff}.hljs-addition,.hljs-meta,.hljs-string,.hljs-symbol,.hljs-template-tag,.hljs-template-variable{color:#756bb1}.hljs-comment,.hljs-quote{color:#636363}.hljs-bullet,.hljs-link,.hljs-literal,.hljs-number,.hljs-regexp{color:#31a354}.hljs-deletion,.hljs-variable{color:#88f}.hljs-built_in,.hljs-doctag,.hljs-keyword,.hljs-name,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-selector-tag,.hljs-strong,.hljs-tag,.hljs-title,.hljs-type{color:#3182bd}.hljs-emphasis{font-style:italic}.hljs-attribute{color:#e6550d}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/dark.min.css
new file mode 100644
index 0000000..320a627
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/dark.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#ddd;background:#444}.hljs-keyword,.hljs-link,.hljs-literal,.hljs-section,.hljs-selector-tag{color:#fff}.hljs-addition,.hljs-attribute,.hljs-built_in,.hljs-bullet,.hljs-name,.hljs-string,.hljs-symbol,.hljs-template-tag,.hljs-template-variable,.hljs-title,.hljs-type,.hljs-variable{color:#d88}.hljs-comment,.hljs-deletion,.hljs-meta,.hljs-quote{color:#777}.hljs-doctag,.hljs-keyword,.hljs-literal,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-strong,.hljs-title,.hljs-type{font-weight:700}.hljs-emphasis{font-style:italic}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/default.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/default.min.css
new file mode 100644
index 0000000..96e1842
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/default.min.css
@@ -0,0 +1,9 @@
+/*!
+  Theme: Default
+  Description: Original highlight.js style
+  Author: (c) Ivan Sagalaev <maniac@softwaremaniacs.org>
+  Maintainer: @highlightjs/core-team
+  Website: https://highlightjs.org/
+  License: see project LICENSE
+  Touched: 2021
+*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#f0f0f0;color:#444}.hljs-comment{color:#888}.hljs-punctuation,.hljs-tag{color:#444a}.hljs-tag .hljs-attr,.hljs-tag .hljs-name{color:#444}.hljs-attribute,.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-name,.hljs-selector-tag{font-weight:700}.hljs-deletion,.hljs-number,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-string,.hljs-template-tag,.hljs-type{color:#800}.hljs-section,.hljs-title{color:#800;font-weight:700}.hljs-link,.hljs-operator,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#bc6060}.hljs-literal{color:#78a960}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-code{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta .hljs-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/devibeans.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/devibeans.min.css
new file mode 100644
index 0000000..d8c4c0f
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/devibeans.min.css
@@ -0,0 +1,7 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
+    Theme: devibeans (dark)
+    Author: @terminaldweller
+    Maintainer: @terminaldweller
+
+    Inspired by vim's jellybeans theme (https://github.com/nanotech/jellybeans.vim)
+*/.hljs{background:#000;color:#a39e9b}.hljs-attr,.hljs-template-tag{color:#8787d7}.hljs-comment,.hljs-doctag,.hljs-quote{color:#396}.hljs-params{color:#a39e9b}.hljs-regexp{color:#d700ff}.hljs-literal,.hljs-number,.hljs-selector-id,.hljs-tag{color:#ef5350}.hljs-meta,.hljs-meta .hljs-keyword{color:#0087ff}.hljs-code,.hljs-formula,.hljs-keyword,.hljs-link,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-variable{color:#64b5f6}.hljs-built_in,.hljs-deletion,.hljs-title{color:#ff8700}.hljs-attribute,.hljs-function,.hljs-name,.hljs-property,.hljs-section,.hljs-type{color:#ffd75f}.hljs-addition,.hljs-bullet,.hljs-meta .hljs-string,.hljs-string,.hljs-subst,.hljs-symbol{color:#558b2f}.hljs-selector-tag{color:#96f}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/docco.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/docco.min.css
new file mode 100644
index 0000000..382ecbb
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/docco.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#000;background:#f8f8ff}.hljs-comment,.hljs-quote{color:#408080;font-style:italic}.hljs-keyword,.hljs-literal,.hljs-selector-tag,.hljs-subst{color:#954121}.hljs-number{color:#40a070}.hljs-doctag,.hljs-string{color:#219161}.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-type{color:#19469d}.hljs-params{color:#00f}.hljs-title{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-template-variable,.hljs-variable{color:teal}.hljs-link,.hljs-regexp{color:#b68}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/far.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/far.min.css
new file mode 100644
index 0000000..c338ef6
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/far.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#0ff;background:navy}.hljs-addition,.hljs-attribute,.hljs-built_in,.hljs-bullet,.hljs-string,.hljs-symbol,.hljs-template-tag,.hljs-template-variable{color:#ff0}.hljs-keyword,.hljs-name,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-selector-tag,.hljs-type,.hljs-variable{color:#fff}.hljs-comment,.hljs-deletion,.hljs-doctag,.hljs-quote{color:#888}.hljs-link,.hljs-literal,.hljs-number,.hljs-regexp{color:#0f0}.hljs-meta{color:teal}.hljs-keyword,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-strong,.hljs-title{font-weight:700}.hljs-emphasis{font-style:italic}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/foundation.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/foundation.min.css
new file mode 100644
index 0000000..1ddcfa6
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/foundation.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#eee;color:#000}.hljs-addition,.hljs-attribute,.hljs-emphasis,.hljs-link{color:#070}.hljs-emphasis{font-style:italic}.hljs-deletion,.hljs-string,.hljs-strong{color:#d14}.hljs-strong{font-weight:700}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-section,.hljs-title{color:#900}.hljs-class .hljs-title,.hljs-title.class_,.hljs-type{color:#458}.hljs-template-variable,.hljs-variable{color:#369}.hljs-bullet{color:#970}.hljs-meta{color:#34b}.hljs-code,.hljs-keyword,.hljs-literal,.hljs-number,.hljs-selector-tag{color:#099}.hljs-regexp{background-color:#fff0ff;color:#808}.hljs-symbol{color:#990073}.hljs-name,.hljs-selector-class,.hljs-selector-id,.hljs-tag{color:#070}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/github-dark-dimmed.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/github-dark-dimmed.min.css
new file mode 100644
index 0000000..e266dfc
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/github-dark-dimmed.min.css
@@ -0,0 +1,9 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
+  Theme: GitHub Dark Dimmed
+  Description: Dark dimmed theme as seen on github.com
+  Author: github.com
+  Maintainer: @Hirse
+  Updated: 2021-05-15
+
+  Colors taken from GitHub's CSS
+*/.hljs{color:#adbac7;background:#22272e}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#f47067}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#dcbdfb}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#6cb6ff}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#96d0ff}.hljs-built_in,.hljs-symbol{color:#f69d50}.hljs-code,.hljs-comment,.hljs-formula{color:#768390}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#8ddb8c}.hljs-subst{color:#adbac7}.hljs-section{color:#316dca;font-weight:700}.hljs-bullet{color:#eac55f}.hljs-emphasis{color:#adbac7;font-style:italic}.hljs-strong{color:#adbac7;font-weight:700}.hljs-addition{color:#b4f1b4;background-color:#1b4721}.hljs-deletion{color:#ffd8d3;background-color:#78191b}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/github-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/github-dark.min.css
new file mode 100644
index 0000000..03b6da8
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/github-dark.min.css
@@ -0,0 +1,10 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
+  Theme: GitHub Dark
+  Description: Dark theme as seen on github.com
+  Author: github.com
+  Maintainer: @Hirse
+  Updated: 2021-05-15
+
+  Outdated base version: https://github.com/primer/github-syntax-dark
+  Current colors taken from GitHub's CSS
+*/.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#79c0ff}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-code,.hljs-comment,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/github.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/github.min.css
new file mode 100644
index 0000000..275239a
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/github.min.css
@@ -0,0 +1,10 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
+  Theme: GitHub
+  Description: Light theme as seen on github.com
+  Author: github.com
+  Maintainer: @Hirse
+  Updated: 2021-05-15
+
+  Outdated base version: https://github.com/primer/github-syntax-light
+  Current colors taken from GitHub's CSS
+*/.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#005cc5}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-code,.hljs-comment,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/gml.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/gml.min.css
new file mode 100644
index 0000000..89455fe
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/gml.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#222;color:silver}.hljs-keyword{color:#ffb871;font-weight:700}.hljs-built_in{color:#ffb871}.hljs-literal{color:#ff8080}.hljs-symbol{color:#58e55a}.hljs-comment{color:#5b995b}.hljs-string{color:#ff0}.hljs-number{color:#ff8080}.hljs-addition,.hljs-attribute,.hljs-bullet,.hljs-code,.hljs-deletion,.hljs-doctag,.hljs-function,.hljs-link,.hljs-meta,.hljs-meta .hljs-keyword,.hljs-name,.hljs-quote,.hljs-regexp,.hljs-section,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag,.hljs-subst,.hljs-template-tag,.hljs-template-variable,.hljs-title,.hljs-type,.hljs-variable{color:silver}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/googlecode.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/googlecode.min.css
new file mode 100644
index 0000000..0140b89
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/googlecode.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#fff;color:#000}.hljs-comment,.hljs-quote{color:#800}.hljs-keyword,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-title{color:#008}.hljs-template-variable,.hljs-variable{color:#660}.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-string{color:#080}.hljs-bullet,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-symbol{color:#066}.hljs-attr,.hljs-built_in,.hljs-doctag,.hljs-params,.hljs-title,.hljs-type{color:#606}.hljs-attribute,.hljs-subst{color:#000}.hljs-formula{background-color:#eee;font-style:italic}.hljs-selector-class,.hljs-selector-id{color:#9b703f}.hljs-addition{background-color:#baeeba}.hljs-deletion{background-color:#ffc8bd}.hljs-doctag,.hljs-strong{font-weight:700}.hljs-emphasis{font-style:italic}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/gradient-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/gradient-dark.min.css
new file mode 100644
index 0000000..9440d7f
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/gradient-dark.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#501f7a;background:linear-gradient(166deg,#501f7a 0,#2820b3 80%);color:#e7e4eb}.hljs-subtr{color:#e7e4eb}.hljs-comment,.hljs-doctag,.hljs-meta,.hljs-quote{color:#af8dd9}.hljs-attr,.hljs-regexp,.hljs-selector-id,.hljs-selector-tag,.hljs-tag,.hljs-template-tag{color:#aefbff}.hljs-bullet,.hljs-params,.hljs-selector-class{color:#f19fff}.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-section,.hljs-symbol,.hljs-type{color:#17fc95}.hljs-addition,.hljs-link,.hljs-number{color:#c5fe00}.hljs-string{color:#38c0ff}.hljs-addition,.hljs-attribute{color:#e7ff9f}.hljs-template-variable,.hljs-variable{color:#e447ff}.hljs-built_in,.hljs-class,.hljs-formula,.hljs-function,.hljs-name,.hljs-title{color:#ffc800}.hljs-deletion,.hljs-literal,.hljs-selector-pseudo{color:#ff9e44}.hljs-emphasis,.hljs-quote{font-style:italic}.hljs-keyword,.hljs-params,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-selector-tag,.hljs-strong,.hljs-template-tag{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/gradient-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/gradient-light.min.css
new file mode 100644
index 0000000..48af9cc
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/gradient-light.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#fffd8d;background:linear-gradient(142deg,#fffd8d 0,#fcb7ff 35%,#90ecff 100%);color:#250482}.hljs-subtr{color:#01958b}.hljs-comment,.hljs-doctag,.hljs-meta,.hljs-quote{color:#cb7200}.hljs-attr,.hljs-regexp,.hljs-selector-id,.hljs-selector-tag,.hljs-tag,.hljs-template-tag{color:#07bd5f}.hljs-bullet,.hljs-params,.hljs-selector-class{color:#43449f}.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-section,.hljs-symbol,.hljs-type{color:#7d2801}.hljs-addition,.hljs-link,.hljs-number{color:#7f0096}.hljs-string{color:#38c0ff}.hljs-addition,.hljs-attribute{color:#296562}.hljs-template-variable,.hljs-variable{color:#025c8f}.hljs-built_in,.hljs-class,.hljs-formula,.hljs-function,.hljs-name,.hljs-title{color:#529117}.hljs-deletion,.hljs-literal,.hljs-selector-pseudo{color:#ad13ff}.hljs-emphasis,.hljs-quote{font-style:italic}.hljs-keyword,.hljs-params,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-selector-tag,.hljs-strong,.hljs-template-tag{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/grayscale.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/grayscale.min.css
new file mode 100644
index 0000000..5eefdaa
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/grayscale.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#333;background:#fff}.hljs-comment,.hljs-quote{color:#777;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number{color:#777}.hljs-doctag,.hljs-formula,.hljs-string{color:#333;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAJ0lEQVQIW2O8e/fufwYGBgZBQUEQxcCIIfDu3Tuwivfv30NUoAsAALHpFMMLqZlPAAAAAElFTkSuQmCC)}.hljs-section,.hljs-selector-id,.hljs-title{color:#000;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-name,.hljs-title.class_,.hljs-type{color:#333;font-weight:700}.hljs-tag{color:#333}.hljs-regexp{color:#333;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAAPUlEQVQYV2NkQAN37979r6yszIgujiIAU4RNMVwhuiQ6H6wQl3XI4oy4FMHcCJPHcDS6J2A2EqUQpJhohQDexSef15DBCwAAAABJRU5ErkJggg==)}.hljs-bullet,.hljs-link,.hljs-symbol{color:#000;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAKElEQVQIW2NkQAO7d+/+z4gsBhJwdXVlhAvCBECKwIIwAbhKZBUwBQA6hBpm5efZsgAAAABJRU5ErkJggg==)}.hljs-built_in{color:#000;text-decoration:underline}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{color:#fff;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAAE0lEQVQIW2MMDQ39zzhz5kwIAQAyxweWgUHd1AAAAABJRU5ErkJggg==)}.hljs-addition{color:#000;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAALUlEQVQYV2N89+7dfwYk8P79ewZBQUFkIQZGOiu6e/cuiptQHAPl0NtNxAQBAM97Oejj3Dg7AAAAAElFTkSuQmCC)}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/hybrid.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/hybrid.min.css
new file mode 100644
index 0000000..52489b6
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/hybrid.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#1d1f21;color:#c5c8c6}.hljs span::selection,.hljs::selection{background:#373b41}.hljs span::-moz-selection,.hljs::-moz-selection{background:#373b41}.hljs-name,.hljs-title{color:#f0c674}.hljs-comment,.hljs-meta,.hljs-meta .hljs-keyword{color:#707880}.hljs-deletion,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol{color:#c66}.hljs-addition,.hljs-doctag,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-string{color:#b5bd68}.hljs-attribute,.hljs-code,.hljs-selector-id{color:#b294bb}.hljs-bullet,.hljs-keyword,.hljs-selector-tag,.hljs-tag{color:#81a2be}.hljs-subst,.hljs-template-tag,.hljs-template-variable,.hljs-variable{color:#8abeb7}.hljs-built_in,.hljs-quote,.hljs-section,.hljs-selector-class,.hljs-type{color:#de935f}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/idea.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/idea.min.css
new file mode 100644
index 0000000..7cc62ff
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/idea.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#000;background:#fff}.hljs-subst,.hljs-title{font-weight:400;color:#000}.hljs-comment,.hljs-quote{color:grey;font-style:italic}.hljs-meta{color:olive}.hljs-tag{background:#efefef}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-selector-tag,.hljs-type{font-weight:700;color:navy}.hljs-attribute,.hljs-link,.hljs-number,.hljs-regexp{font-weight:700;color:#00f}.hljs-link,.hljs-number,.hljs-regexp{font-weight:400}.hljs-string{color:green;font-weight:700}.hljs-bullet,.hljs-formula,.hljs-symbol{color:#000;background:#d0eded;font-style:italic}.hljs-doctag{text-decoration:underline}.hljs-template-variable,.hljs-variable{color:#660e7a}.hljs-addition{background:#baeeba}.hljs-deletion{background:#ffc8bd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/ir-black.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/ir-black.min.css
new file mode 100644
index 0000000..e78fd08
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/ir-black.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#000;color:#f8f8f8}.hljs-comment,.hljs-meta,.hljs-quote{color:#7c7c7c}.hljs-keyword,.hljs-name,.hljs-selector-tag,.hljs-tag{color:#96cbfe}.hljs-attribute,.hljs-selector-id{color:#ffffb6}.hljs-addition,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-string{color:#a8ff60}.hljs-subst{color:#daefa3}.hljs-link,.hljs-regexp{color:#e9c062}.hljs-doctag,.hljs-section,.hljs-title,.hljs-type{color:#ffffb6}.hljs-bullet,.hljs-literal,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#c6c5fe}.hljs-deletion,.hljs-number{color:#ff73fd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/isbl-editor-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/isbl-editor-dark.min.css
new file mode 100644
index 0000000..535ef87
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/isbl-editor-dark.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#404040}.hljs,.hljs-subst{color:#f0f0f0}.hljs-comment{color:#b5b5b5;font-style:italic}.hljs-attribute,.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-name,.hljs-selector-tag{color:#f0f0f0;font-weight:700}.hljs-string{color:#97bf0d}.hljs-deletion,.hljs-number,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-template-tag,.hljs-type{color:#f0f0f0}.hljs-link,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#e2c696}.hljs-built_in,.hljs-literal{color:#97bf0d;font-weight:700}.hljs-addition,.hljs-bullet,.hljs-code{color:#397300}.hljs-class{color:#ce9d4d;font-weight:700}.hljs-section,.hljs-title{color:#df471e}.hljs-title>.hljs-built_in{color:#81bce9;font-weight:400}.hljs-meta{color:#1f7199}.hljs-meta .hljs-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/isbl-editor-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/isbl-editor-light.min.css
new file mode 100644
index 0000000..f008c74
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/isbl-editor-light.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#fff;color:#000}.hljs-subst{color:#000}.hljs-comment{color:#555;font-style:italic}.hljs-attribute,.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-name,.hljs-selector-tag{color:#000;font-weight:700}.hljs-string{color:navy}.hljs-deletion,.hljs-number,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-template-tag,.hljs-type{color:#000}.hljs-link,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#5e1700}.hljs-built_in,.hljs-literal{color:navy;font-weight:700}.hljs-addition,.hljs-bullet,.hljs-code{color:#397300}.hljs-class{color:#6f1c00;font-weight:700}.hljs-section,.hljs-title{color:#fb2c00}.hljs-title>.hljs-built_in{color:teal;font-weight:400}.hljs-meta{color:#1f7199}.hljs-meta .hljs-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/kimbie-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/kimbie-dark.min.css
new file mode 100644
index 0000000..cf56cea
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/kimbie-dark.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#221a0f;color:#d3af86}.hljs-comment,.hljs-quote{color:#d6baad}.hljs-meta,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#dc3958}.hljs-built_in,.hljs-deletion,.hljs-link,.hljs-literal,.hljs-number,.hljs-params,.hljs-type{color:#f79a32}.hljs-addition,.hljs-bullet,.hljs-string,.hljs-symbol{color:#889b4a}.hljs-function,.hljs-keyword,.hljs-selector-tag{color:#98676a}.hljs-attribute,.hljs-section,.hljs-title{color:#f06431}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/kimbie-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/kimbie-light.min.css
new file mode 100644
index 0000000..b9d0ea4
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/kimbie-light.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#fbebd4;color:#84613d}.hljs-comment,.hljs-quote{color:#a57a4c}.hljs-meta,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#dc3958}.hljs-built_in,.hljs-deletion,.hljs-link,.hljs-literal,.hljs-number,.hljs-params,.hljs-type{color:#f79a32}.hljs-addition,.hljs-bullet,.hljs-string,.hljs-symbol{color:#889b4a}.hljs-function,.hljs-keyword,.hljs-selector-tag{color:#98676a}.hljs-attribute,.hljs-section,.hljs-title{color:#f06431}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/lightfair.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/lightfair.min.css
new file mode 100644
index 0000000..b6c3791
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/lightfair.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#444;background:#fff}.hljs-name{color:#01a3a3}.hljs-meta,.hljs-tag{color:#789}.hljs-comment{color:#888}.hljs-attribute,.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-name,.hljs-selector-tag{font-weight:700}.hljs-deletion,.hljs-number,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-string,.hljs-template-tag,.hljs-type{color:#4286f4}.hljs-section,.hljs-title{color:#4286f4;font-weight:700}.hljs-link,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#bc6060}.hljs-literal{color:#62bcbc}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-code{color:#25c6c6}.hljs-meta .hljs-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/lioshi.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/lioshi.min.css
new file mode 100644
index 0000000..3d6a92f
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/lioshi.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#303030;color:#c5c8c6}.hljs-comment{color:#8d8d8d}.hljs-quote{color:#b3c7d8}.hljs-deletion,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#c66}.hljs-built_in,.hljs-literal,.hljs-number,.hljs-subst .hljs-link,.hljs-type{color:#de935f}.hljs-attribute{color:#f0c674}.hljs-addition,.hljs-bullet,.hljs-params,.hljs-string{color:#b5bd68}.hljs-class,.hljs-function,.hljs-keyword,.hljs-selector-tag{color:#be94bb}.hljs-meta,.hljs-section,.hljs-title{color:#81a2be}.hljs-symbol{color:#dbc4d9}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/magula.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/magula.min.css
new file mode 100644
index 0000000..e024387
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/magula.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background-color:#f4f4f4;color:#000}.hljs-subst{color:#000}.hljs-addition,.hljs-attribute,.hljs-bullet,.hljs-string,.hljs-symbol,.hljs-template-tag,.hljs-template-variable,.hljs-title,.hljs-variable{color:#050}.hljs-comment,.hljs-quote{color:#777}.hljs-link,.hljs-literal,.hljs-number,.hljs-regexp,.hljs-type{color:#800}.hljs-deletion,.hljs-meta{color:#00e}.hljs-built_in,.hljs-doctag,.hljs-keyword,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-tag,.hljs-title{font-weight:700;color:navy}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/mono-blue.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/mono-blue.min.css
new file mode 100644
index 0000000..fb74d40
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/mono-blue.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#eaeef3;color:#00193a}.hljs-doctag,.hljs-keyword,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-strong,.hljs-title{font-weight:700}.hljs-comment{color:#738191}.hljs-addition,.hljs-built_in,.hljs-literal,.hljs-name,.hljs-quote,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-string,.hljs-tag,.hljs-title,.hljs-type{color:#0048ab}.hljs-attribute,.hljs-bullet,.hljs-deletion,.hljs-link,.hljs-meta,.hljs-regexp,.hljs-subst,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#4c81c9}.hljs-emphasis{font-style:italic}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/monokai-sublime.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/monokai-sublime.min.css
new file mode 100644
index 0000000..247e2e9
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/monokai-sublime.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#23241f;color:#f8f8f2}.hljs-subst,.hljs-tag{color:#f8f8f2}.hljs-emphasis,.hljs-strong{color:#a8a8a2}.hljs-bullet,.hljs-link,.hljs-literal,.hljs-number,.hljs-quote,.hljs-regexp{color:#ae81ff}.hljs-code,.hljs-section,.hljs-selector-class,.hljs-title{color:#a6e22e}.hljs-strong{font-weight:700}.hljs-emphasis{font-style:italic}.hljs-attr,.hljs-keyword,.hljs-name,.hljs-selector-tag{color:#f92672}.hljs-attribute,.hljs-symbol{color:#66d9ef}.hljs-class .hljs-title,.hljs-params,.hljs-title.class_{color:#f8f8f2}.hljs-addition,.hljs-built_in,.hljs-selector-attr,.hljs-selector-id,.hljs-selector-pseudo,.hljs-string,.hljs-template-variable,.hljs-type,.hljs-variable{color:#e6db74}.hljs-comment,.hljs-deletion,.hljs-meta{color:#75715e}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/monokai.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/monokai.min.css
new file mode 100644
index 0000000..448d85d
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/monokai.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#272822;color:#ddd}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-selector-tag,.hljs-strong,.hljs-tag{color:#f92672}.hljs-code{color:#66d9ef}.hljs-attribute,.hljs-link,.hljs-regexp,.hljs-symbol{color:#bf79db}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-emphasis,.hljs-section,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-string,.hljs-subst,.hljs-template-tag,.hljs-template-variable,.hljs-title,.hljs-type,.hljs-variable{color:#a6e22e}.hljs-class .hljs-title,.hljs-title.class_{color:#fff}.hljs-comment,.hljs-deletion,.hljs-meta,.hljs-quote{color:#75715e}.hljs-doctag,.hljs-keyword,.hljs-literal,.hljs-section,.hljs-selector-id,.hljs-selector-tag,.hljs-title,.hljs-type{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/night-owl.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/night-owl.min.css
new file mode 100644
index 0000000..ed94590
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/night-owl.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#011627;color:#d6deeb}.hljs-keyword{color:#c792ea;font-style:italic}.hljs-built_in{color:#addb67;font-style:italic}.hljs-type{color:#82aaff}.hljs-literal{color:#ff5874}.hljs-number{color:#f78c6c}.hljs-regexp{color:#5ca7e4}.hljs-string{color:#ecc48d}.hljs-subst{color:#d3423e}.hljs-symbol{color:#82aaff}.hljs-class{color:#ffcb8b}.hljs-function{color:#82aaff}.hljs-title{color:#dcdcaa;font-style:italic}.hljs-params{color:#7fdbca}.hljs-comment{color:#637777;font-style:italic}.hljs-doctag{color:#7fdbca}.hljs-meta,.hljs-meta .hljs-keyword{color:#82aaff}.hljs-meta .hljs-string{color:#ecc48d}.hljs-section{color:#82b1ff}.hljs-attr,.hljs-name,.hljs-tag{color:#7fdbca}.hljs-attribute{color:#80cbc4}.hljs-variable{color:#addb67}.hljs-bullet{color:#d9f5dd}.hljs-code{color:#80cbc4}.hljs-emphasis{color:#c792ea;font-style:italic}.hljs-strong{color:#addb67;font-weight:700}.hljs-formula{color:#c792ea}.hljs-link{color:#ff869a}.hljs-quote{color:#697098;font-style:italic}.hljs-selector-tag{color:#ff6363}.hljs-selector-id{color:#fad430}.hljs-selector-class{color:#addb67;font-style:italic}.hljs-selector-attr,.hljs-selector-pseudo{color:#c792ea;font-style:italic}.hljs-template-tag{color:#c792ea}.hljs-template-variable{color:#addb67}.hljs-addition{color:#addb67ff;font-style:italic}.hljs-deletion{color:#ef535090;font-style:italic}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/nnfx-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/nnfx-dark.min.css
new file mode 100644
index 0000000..4e6403d
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/nnfx-dark.min.css
@@ -0,0 +1,10 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
+  Theme: nnfx dark
+  Description: a theme inspired by Netscape Navigator/Firefox
+  Author: (c) 2020-2021 Jim Mason <jmason@ibinx.com>
+  Maintainer: @RocketMan
+  License: https://creativecommons.org/licenses/by-sa/4.0  CC BY-SA 4.0
+  Updated: 2021-05-17
+
+  @version 1.1.0
+*/.hljs{background:#333;color:#fff}.language-xml .hljs-meta,.language-xml .hljs-meta-string{font-weight:700;font-style:italic;color:#69f}.hljs-comment,.hljs-quote{font-style:italic;color:#9c6}.hljs-built_in,.hljs-keyword,.hljs-name{color:#a7a}.hljs-attr,.hljs-name{font-weight:700}.hljs-string{font-weight:400}.hljs-code,.hljs-link,.hljs-meta .hljs-string,.hljs-number,.hljs-regexp,.hljs-string{color:#bce}.hljs-bullet,.hljs-symbol,.hljs-template-variable,.hljs-title,.hljs-variable{color:#d40}.hljs-class .hljs-title,.hljs-title.class_,.hljs-type{font-weight:700;color:#96c}.hljs-attr,.hljs-function .hljs-title,.hljs-subst,.hljs-tag,.hljs-title.function_{color:#fff}.hljs-formula{background-color:#eee;font-style:italic}.hljs-addition{background-color:#797}.hljs-deletion{background-color:#c99}.hljs-meta{color:#69f}.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{font-weight:700;color:#69f}.hljs-selector-pseudo{font-style:italic}.hljs-doctag,.hljs-strong{font-weight:700}.hljs-emphasis{font-style:italic}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/nnfx-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/nnfx-light.min.css
new file mode 100644
index 0000000..469223a
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/nnfx-light.min.css
@@ -0,0 +1,10 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
+  Theme: nnfx light
+  Description: a theme inspired by Netscape Navigator/Firefox
+  Author: (c) 2020-2021 Jim Mason <jmason@ibinx.com>
+  Maintainer: @RocketMan
+  License: https://creativecommons.org/licenses/by-sa/4.0  CC BY-SA 4.0
+  Updated: 2021-05-17
+
+  @version 1.1.0
+*/.hljs{background:#fff;color:#000}.language-xml .hljs-meta,.language-xml .hljs-meta-string{font-weight:700;font-style:italic;color:#48b}.hljs-comment,.hljs-quote{font-style:italic;color:#070}.hljs-built_in,.hljs-keyword,.hljs-name{color:#808}.hljs-attr,.hljs-name{font-weight:700}.hljs-string{font-weight:400}.hljs-code,.hljs-link,.hljs-meta .hljs-string,.hljs-number,.hljs-regexp,.hljs-string{color:#00f}.hljs-bullet,.hljs-symbol,.hljs-template-variable,.hljs-title,.hljs-variable{color:#f40}.hljs-class .hljs-title,.hljs-title.class_,.hljs-type{font-weight:700;color:#639}.hljs-attr,.hljs-function .hljs-title,.hljs-subst,.hljs-tag,.hljs-title.function_{color:#000}.hljs-formula{background-color:#eee;font-style:italic}.hljs-addition{background-color:#beb}.hljs-deletion{background-color:#fbb}.hljs-meta{color:#269}.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{font-weight:700;color:#48b}.hljs-selector-pseudo{font-style:italic}.hljs-doctag,.hljs-strong{font-weight:700}.hljs-emphasis{font-style:italic}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/nord.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/nord.min.css
new file mode 100644
index 0000000..efbb0c1
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/nord.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#2e3440}.hljs,.hljs-subst{color:#d8dee9}.hljs-selector-tag{color:#81a1c1}.hljs-selector-id{color:#8fbcbb;font-weight:700}.hljs-selector-attr,.hljs-selector-class{color:#8fbcbb}.hljs-property,.hljs-selector-pseudo{color:#88c0d0}.hljs-addition{background-color:rgba(163,190,140,.5)}.hljs-deletion{background-color:rgba(191,97,106,.5)}.hljs-built_in,.hljs-class,.hljs-type{color:#8fbcbb}.hljs-function,.hljs-function>.hljs-title,.hljs-title.hljs-function{color:#88c0d0}.hljs-keyword,.hljs-literal,.hljs-symbol{color:#81a1c1}.hljs-number{color:#b48ead}.hljs-regexp{color:#ebcb8b}.hljs-string{color:#a3be8c}.hljs-title{color:#8fbcbb}.hljs-params{color:#d8dee9}.hljs-bullet{color:#81a1c1}.hljs-code{color:#8fbcbb}.hljs-emphasis{font-style:italic}.hljs-formula{color:#8fbcbb}.hljs-strong{font-weight:700}.hljs-link:hover{text-decoration:underline}.hljs-comment,.hljs-quote{color:#4c566a}.hljs-doctag{color:#8fbcbb}.hljs-meta,.hljs-meta .hljs-keyword{color:#5e81ac}.hljs-meta .hljs-string{color:#a3be8c}.hljs-attr{color:#8fbcbb}.hljs-attribute{color:#d8dee9}.hljs-name{color:#81a1c1}.hljs-section{color:#88c0d0}.hljs-tag{color:#81a1c1}.hljs-template-variable,.hljs-variable{color:#d8dee9}.hljs-template-tag{color:#5e81ac}.language-abnf .hljs-attribute{color:#88c0d0}.language-abnf .hljs-symbol{color:#ebcb8b}.language-apache .hljs-attribute{color:#88c0d0}.language-apache .hljs-section{color:#81a1c1}.language-arduino .hljs-built_in{color:#88c0d0}.language-aspectj .hljs-meta{color:#d08770}.language-aspectj>.hljs-title{color:#88c0d0}.language-bnf .hljs-attribute{color:#8fbcbb}.language-clojure .hljs-name{color:#88c0d0}.language-clojure .hljs-symbol{color:#ebcb8b}.language-coq .hljs-built_in{color:#88c0d0}.language-cpp .hljs-meta .hljs-string{color:#8fbcbb}.language-css .hljs-built_in{color:#88c0d0}.language-css .hljs-keyword{color:#d08770}.language-diff .hljs-meta,.language-ebnf .hljs-attribute{color:#8fbcbb}.language-glsl .hljs-built_in{color:#88c0d0}.language-groovy .hljs-meta:not(:first-child),.language-haxe .hljs-meta,.language-java .hljs-meta{color:#d08770}.language-ldif .hljs-attribute{color:#8fbcbb}.language-lisp .hljs-name,.language-lua .hljs-built_in,.language-moonscript .hljs-built_in,.language-nginx .hljs-attribute{color:#88c0d0}.language-nginx .hljs-section{color:#5e81ac}.language-pf .hljs-built_in,.language-processing .hljs-built_in{color:#88c0d0}.language-scss .hljs-keyword,.language-stylus .hljs-keyword{color:#81a1c1}.language-swift .hljs-meta{color:#d08770}.language-vim .hljs-built_in{color:#88c0d0;font-style:italic}.language-yaml .hljs-meta{color:#d08770}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/obsidian.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/obsidian.min.css
new file mode 100644
index 0000000..c2a0786
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/obsidian.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#e0e2e4;background:#282b2e}.hljs-keyword,.hljs-literal,.hljs-selector-id,.hljs-selector-tag{color:#93c763}.hljs-number{color:#ffcd22}.hljs-attribute{color:#668bb0}.hljs-link,.hljs-regexp{color:#d39745}.hljs-meta{color:#557182}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-emphasis,.hljs-name,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-subst,.hljs-tag,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable{color:#8cbbad}.hljs-string,.hljs-symbol{color:#ec7600}.hljs-comment,.hljs-deletion,.hljs-quote{color:#818e96}.hljs-selector-class{color:#a082bd}.hljs-doctag,.hljs-keyword,.hljs-literal,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-strong,.hljs-title,.hljs-type{font-weight:700}.hljs-class .hljs-title,.hljs-code,.hljs-section,.hljs-title.class_{color:#fff}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/paraiso-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/paraiso-dark.min.css
new file mode 100644
index 0000000..d51dd18
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/paraiso-dark.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#2f1e2e;color:#a39e9b}.hljs-comment,.hljs-quote{color:#8d8687}.hljs-link,.hljs-meta,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#ef6155}.hljs-built_in,.hljs-deletion,.hljs-literal,.hljs-number,.hljs-params,.hljs-type{color:#f99b15}.hljs-attribute,.hljs-section,.hljs-title{color:#fec418}.hljs-addition,.hljs-bullet,.hljs-string,.hljs-symbol{color:#48b685}.hljs-keyword,.hljs-selector-tag{color:#815ba4}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/paraiso-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/paraiso-light.min.css
new file mode 100644
index 0000000..3a17c3f
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/paraiso-light.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#e7e9db;color:#4f424c}.hljs-comment,.hljs-quote{color:#776e71}.hljs-link,.hljs-meta,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#ef6155}.hljs-built_in,.hljs-deletion,.hljs-literal,.hljs-number,.hljs-params,.hljs-type{color:#f99b15}.hljs-attribute,.hljs-section,.hljs-title{color:#fec418}.hljs-addition,.hljs-bullet,.hljs-string,.hljs-symbol{color:#48b685}.hljs-keyword,.hljs-selector-tag{color:#815ba4}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/pojoaque.jpg b/node_modules/mavon-editor/dist/highlightjs/styles/pojoaque.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..9c07d4ab40b6d77e90ff69f0012bcd33b21d31c3
GIT binary patch
literal 1186
zcmZXSe^8Tk9LK-kXFs3)f@f?)Cddzw3v4wdZyXQ;4x3=;Ja*N#%n9ik!UGmt9H3k0
zJST|5jOc(ID$FQt3C?jQZBws#kXolO1lg9Pba9BB=Q+UEBX!nY@6Uhl&+ofe$Q$y5
z@ci`~)&qzDP(lO<O#w_=Ra{yPARq$(#Dp~sI5{Qw_V+=FlW<^Y6zm5ml}e>iQ5p?p
z(`j^e7!yUAVHk%K#^GQXn?s0=VLYCI$HRoe=xCuZ>A6<E5Jc&8l!3As3|1J6!wQRd
z-V(uI9KaVwV1y!skwSq$AdHNO5ej2s5)+pvCcfxj8FB)Q4jMoM2_^spgCq=wu7Iro
zLP#9>A3@sxEP#XqNFpIb=0)KQ#Nss_tD17;m4@$JKL;LR|K|QF3f%!L5+s(9Ft8SQ
zG|~pGp<w4_&QCo@xn1P1M0j6PuuaUUx?w)Q15Ksdv-E1Uyr8jff%m|S;O0KGX4?5u
zcY>EGFW5Z|OA)-O@mNHy-g@7m8JTf?kl@vUKBGmw)Y*9sDRNr3PN!IKefWaydTe1D
zjzpyzPnD3}hBNaS4aFX7=0&~I*<I1gl);;MHu4&K1%I;}H}}pdeV}msD&8ZuzDzH<
zjs%}^eZx9tj&Cj4Rem!m7?W9-;wPH|CTw__Q8b>Hu7#4au@qVBglH#-m;QFOx_`=j
z{EqRY#Eh*yoWP^pa4H>8GH{rO?!_+xwL0(k4yL^D%^nBkJ*UI;Lx;ped8d|f*S_s@
z3~ilcRC(&NT#9Gn#UD;o^EYSMXDMf%XcUi3>;WXXD-QX3P9wMy<Tt*(wEUr;=}T08
zwr4iQLXQt-4U$zHxQBaftQf(Yp<ET%udI>P7eA&RS{)h5{??W3^Rq=goFJ>?lA~J-
zdYe>!xvYLW*fPT0RK7wsJRg^?x#W1*GP9<C`ZfC?$$I3ZovN#F=y~=x<iwqpGc&Fa
z!>_f`6t>QD_X>0d!owyN>nO2?U5}|3?hX_UZYT@^>S!9eB~bZ9U`q;`U)@L670o1g
z`Hd<uZEy9yjY6-c(?%?S4=3`QI_=xfg529VWEEJk$>}h<_WR<Zc1@js5HPhhe{UnV
z+qpwizwrJv_3wqH(KR=Zp2|HqVCv6SNX`wV`OPQRXJj)}%e$t=$MRdar)ZmEr9R!$
z<l(H`+bxXKz73<WvNG=#;y(f(W{xUg<V#f`{pr)>vUc|n*%v4Hbb-4tJD40iyF^<n
zrd(ZUzA$o-V2Gj0TB0p$%WvWRao2gif1>q%g*&!6>hkYDvi-<Lx9G?TP4>{Uc4yTM
zzcthN4Z{ka!+F_KzYV#yWi;c^X^q6g`pD8cp?$Kl?hCz0s^a|mH%P!CF%*<6k^~i`
zT5Mi-t5-frUcHkk^Qh}+N)Kz1&Bi95`oNc|quI>tUi~BY>xcF9(%tv2i{G6kE9*q~
qCoAGl20`)w0rdgp9H%Q=M5|p`hOhFz6$I%Y&ncY8>c?7PXyh+SL&XXJ

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/pojoaque.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/pojoaque.min.css
new file mode 100644
index 0000000..71345a9
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/pojoaque.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#dccf8f;background:url(./pojoaque.jpg) left top #181914}.hljs-comment,.hljs-quote{color:#586e75;font-style:italic}.hljs-addition,.hljs-keyword,.hljs-literal,.hljs-selector-tag{color:#b64926}.hljs-doctag,.hljs-number,.hljs-regexp,.hljs-string{color:#468966}.hljs-built_in,.hljs-name,.hljs-section,.hljs-title{color:#ffb03b}.hljs-class .hljs-title,.hljs-tag,.hljs-template-variable,.hljs-title.class_,.hljs-type,.hljs-variable{color:#b58900}.hljs-attribute{color:#b89859}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-subst,.hljs-symbol{color:#cb4b16}.hljs-deletion{color:#dc322f}.hljs-selector-class,.hljs-selector-id{color:#d3a60c}.hljs-formula{background:#073642}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/purebasic.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/purebasic.min.css
new file mode 100644
index 0000000..e026c45
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/purebasic.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#ffffdf}.hljs,.hljs-attr,.hljs-function,.hljs-name,.hljs-number,.hljs-params,.hljs-subst,.hljs-type{color:#000}.hljs-addition,.hljs-comment,.hljs-regexp,.hljs-section,.hljs-selector-pseudo{color:#0aa}.hljs-built_in,.hljs-class,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-selector-class{color:#066;font-weight:700}.hljs-code,.hljs-tag,.hljs-title,.hljs-variable{color:#066}.hljs-selector-attr,.hljs-string{color:#0080ff}.hljs-attribute,.hljs-deletion,.hljs-link,.hljs-symbol{color:#924b72}.hljs-literal,.hljs-meta,.hljs-selector-id{color:#924b72;font-weight:700}.hljs-name,.hljs-strong{font-weight:700}.hljs-emphasis{font-style:italic}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/qtcreator-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/qtcreator-dark.min.css
new file mode 100644
index 0000000..976e519
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/qtcreator-dark.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#aaa;background:#000}.hljs-emphasis,.hljs-strong{color:#a8a8a2}.hljs-bullet,.hljs-literal,.hljs-number,.hljs-quote,.hljs-regexp{color:#f5f}.hljs-code .hljs-selector-class{color:#aaf}.hljs-emphasis,.hljs-stronge,.hljs-type{font-style:italic}.hljs-function,.hljs-keyword,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-symbol{color:#ff5}.hljs-subst,.hljs-tag,.hljs-title{color:#aaa}.hljs-attribute{color:#f55}.hljs-class .hljs-title,.hljs-params,.hljs-title.class_,.hljs-variable{color:#88f}.hljs-addition,.hljs-built_in,.hljs-link,.hljs-selector-attr,.hljs-selector-id,.hljs-selector-pseudo,.hljs-string,.hljs-template-tag,.hljs-template-variable,.hljs-type{color:#f5f}.hljs-comment,.hljs-deletion,.hljs-meta{color:#5ff}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/qtcreator-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/qtcreator-light.min.css
new file mode 100644
index 0000000..7f1af8c
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/qtcreator-light.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#000;background:#fff}.hljs-emphasis,.hljs-strong{color:#000}.hljs-bullet,.hljs-literal,.hljs-number,.hljs-quote,.hljs-regexp{color:navy}.hljs-code .hljs-selector-class{color:purple}.hljs-emphasis,.hljs-stronge,.hljs-type{font-style:italic}.hljs-function,.hljs-keyword,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-symbol{color:olive}.hljs-subst,.hljs-tag,.hljs-title{color:#000}.hljs-attribute{color:maroon}.hljs-class .hljs-title,.hljs-params,.hljs-title.class_,.hljs-variable{color:#0055af}.hljs-addition,.hljs-built_in,.hljs-comment,.hljs-deletion,.hljs-link,.hljs-meta,.hljs-selector-attr,.hljs-selector-id,.hljs-selector-pseudo,.hljs-string,.hljs-template-tag,.hljs-template-variable,.hljs-type{color:green}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/rainbow.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/rainbow.min.css
new file mode 100644
index 0000000..c8ca25f
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/rainbow.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#474949;color:#d1d9e1}.hljs-comment,.hljs-quote{color:#969896;font-style:italic}.hljs-addition,.hljs-keyword,.hljs-literal,.hljs-selector-tag,.hljs-type{color:#c9c}.hljs-number,.hljs-selector-attr,.hljs-selector-pseudo{color:#f99157}.hljs-doctag,.hljs-regexp,.hljs-string{color:#8abeb7}.hljs-built_in,.hljs-name,.hljs-section,.hljs-title{color:#b5bd68}.hljs-class .hljs-title,.hljs-selector-id,.hljs-template-variable,.hljs-title.class_,.hljs-variable{color:#fc6}.hljs-name,.hljs-section,.hljs-strong{font-weight:700}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-subst,.hljs-symbol{color:#f99157}.hljs-deletion{color:#dc322f}.hljs-formula{background:#eee8d5}.hljs-attr,.hljs-attribute{color:#81a2be}.hljs-emphasis{font-style:italic}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/routeros.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/routeros.min.css
new file mode 100644
index 0000000..0378678
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/routeros.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#444;background:#f0f0f0}.hljs-subst{color:#444}.hljs-comment{color:#888}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-name,.hljs-selector-tag{font-weight:700}.hljs-attribute{color:#0e9a00}.hljs-function{color:#99069a}.hljs-deletion,.hljs-number,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-string,.hljs-template-tag,.hljs-type{color:#800}.hljs-section,.hljs-title{color:#800;font-weight:700}.hljs-link,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#bc6060}.hljs-literal{color:#78a960}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-code{color:#0c9a9a}.hljs-meta{color:#1f7199}.hljs-meta .hljs-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/school-book.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/school-book.min.css
new file mode 100644
index 0000000..843f268
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/school-book.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#3e5915;background:#f6f5b2}.hljs-keyword,.hljs-literal,.hljs-selector-tag{color:#059}.hljs-subst{color:#3e5915}.hljs-addition,.hljs-attribute,.hljs-built_in,.hljs-bullet,.hljs-link,.hljs-section,.hljs-string,.hljs-symbol,.hljs-template-tag,.hljs-template-variable,.hljs-title,.hljs-type,.hljs-variable{color:#2c009f}.hljs-comment,.hljs-deletion,.hljs-meta,.hljs-quote{color:#e60415}.hljs-doctag,.hljs-keyword,.hljs-literal,.hljs-name,.hljs-section,.hljs-selector-id,.hljs-selector-tag,.hljs-strong,.hljs-title,.hljs-type{font-weight:700}.hljs-emphasis{font-style:italic}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/shades-of-purple.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/shades-of-purple.min.css
new file mode 100644
index 0000000..3dd25b4
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/shades-of-purple.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#2d2b57;color:#e3dfff;font-weight:400}.hljs-subst{color:#e3dfff}.hljs-title{color:#fad000;font-weight:400}.hljs-name{color:#a1feff}.hljs-tag{color:#fff}.hljs-attr{color:#f8d000;font-style:italic}.hljs-built_in,.hljs-keyword,.hljs-section,.hljs-selector-tag{color:#fb9e00}.hljs-addition,.hljs-attribute,.hljs-bullet,.hljs-code,.hljs-deletion,.hljs-quote,.hljs-regexp,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-string,.hljs-symbol,.hljs-template-tag{color:#4cd213}.hljs-meta,.hljs-meta .hljs-string{color:#fb9e00}.hljs-comment{color:#ac65ff}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-selector-tag,.hljs-strong{font-weight:400}.hljs-literal,.hljs-number{color:#fa658d}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/srcery.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/srcery.min.css
new file mode 100644
index 0000000..377d61a
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/srcery.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#1c1b19;color:#fce8c3}.hljs-literal,.hljs-quote,.hljs-subst{color:#fce8c3}.hljs-symbol,.hljs-type{color:#68a8e4}.hljs-deletion,.hljs-keyword{color:#ef2f27}.hljs-attribute,.hljs-function,.hljs-name,.hljs-section,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-title{color:#fbb829}.hljs-class,.hljs-code,.hljs-property,.hljs-template-variable,.hljs-variable{color:#0aaeb3}.hljs-addition,.hljs-bullet,.hljs-regexp,.hljs-string{color:#98bc37}.hljs-built_in,.hljs-params{color:#ff5c8f}.hljs-selector-tag,.hljs-template-tag{color:#2c78bf}.hljs-comment,.hljs-link,.hljs-meta,.hljs-number{color:#918175}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/stackoverflow-dark.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/stackoverflow-dark.min.css
new file mode 100644
index 0000000..33cea55
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/stackoverflow-dark.min.css
@@ -0,0 +1,13 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
+  Theme: StackOverflow Dark
+  Description: Dark theme as used on stackoverflow.com
+  Author: stackoverflow.com
+  Maintainer: @Hirse
+  Website: https://github.com/StackExchange/Stacks
+  License: MIT
+  Updated: 2021-05-15
+
+  Updated for @stackoverflow/stacks v0.64.0
+  Code Blocks: /blob/v0.64.0/lib/css/components/_stacks-code-blocks.less
+  Colors: /blob/v0.64.0/lib/css/exports/_stacks-constants-colors.less
+*/.hljs{color:#fff;background:#1c1b1b}.hljs-subst{color:#fff}.hljs-comment{color:#999}.hljs-attr,.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-section,.hljs-selector-tag{color:#88aece}.hljs-attribute{color:#c59bc1}.hljs-name,.hljs-number,.hljs-quote,.hljs-selector-id,.hljs-template-tag,.hljs-type{color:#f08d49}.hljs-selector-class{color:#88aece}.hljs-link,.hljs-regexp,.hljs-selector-attr,.hljs-string,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#b5bd68}.hljs-meta,.hljs-selector-pseudo{color:#88aece}.hljs-built_in,.hljs-literal,.hljs-title{color:#f08d49}.hljs-bullet,.hljs-code{color:#ccc}.hljs-meta .hljs-string{color:#b5bd68}.hljs-deletion{color:#de7176}.hljs-addition{color:#76c490}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/stackoverflow-light.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/stackoverflow-light.min.css
new file mode 100644
index 0000000..c36d63d
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/stackoverflow-light.min.css
@@ -0,0 +1,13 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
+  Theme: StackOverflow Light
+  Description: Light theme as used on stackoverflow.com
+  Author: stackoverflow.com
+  Maintainer: @Hirse
+  Website: https://github.com/StackExchange/Stacks
+  License: MIT
+  Updated: 2021-05-15
+
+  Updated for @stackoverflow/stacks v0.64.0
+  Code Blocks: /blob/v0.64.0/lib/css/components/_stacks-code-blocks.less
+  Colors: /blob/v0.64.0/lib/css/exports/_stacks-constants-colors.less
+*/.hljs{color:#2f3337;background:#f6f6f6}.hljs-subst{color:#2f3337}.hljs-comment{color:#656e77}.hljs-attr,.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-section,.hljs-selector-tag{color:#015692}.hljs-attribute{color:#803378}.hljs-name,.hljs-number,.hljs-quote,.hljs-selector-id,.hljs-template-tag,.hljs-type{color:#b75501}.hljs-selector-class{color:#015692}.hljs-link,.hljs-regexp,.hljs-selector-attr,.hljs-string,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#54790d}.hljs-meta,.hljs-selector-pseudo{color:#015692}.hljs-built_in,.hljs-literal,.hljs-title{color:#b75501}.hljs-bullet,.hljs-code{color:#535a60}.hljs-meta .hljs-string{color:#54790d}.hljs-deletion{color:#c02d2e}.hljs-addition{color:#2f6f44}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/sunburst.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/sunburst.min.css
new file mode 100644
index 0000000..9210ae6
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/sunburst.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#000;color:#f8f8f8}.hljs-comment,.hljs-quote{color:#aeaeae;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-type{color:#e28964}.hljs-string{color:#65b042}.hljs-subst{color:#daefa3}.hljs-link,.hljs-regexp{color:#e9c062}.hljs-name,.hljs-section,.hljs-tag,.hljs-title{color:#89bdff}.hljs-class .hljs-title,.hljs-doctag,.hljs-title.class_{text-decoration:underline}.hljs-bullet,.hljs-number,.hljs-symbol{color:#3387cc}.hljs-params,.hljs-template-variable,.hljs-variable{color:#3e87e3}.hljs-attribute{color:#cda869}.hljs-meta{color:#8996a8}.hljs-formula{background-color:#0e2231;color:#f8f8f8;font-style:italic}.hljs-addition{background-color:#253b22;color:#f8f8f8}.hljs-deletion{background-color:#420e09;color:#f8f8f8}.hljs-selector-class{color:#9b703f}.hljs-selector-id{color:#8b98ab}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/tomorrow-night-blue.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/tomorrow-night-blue.min.css
new file mode 100644
index 0000000..2f71b26
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/tomorrow-night-blue.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs-comment,.hljs-quote{color:#7285b7}.hljs-deletion,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#ff9da4}.hljs-built_in,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-type{color:#ffc58f}.hljs-attribute{color:#ffeead}.hljs-addition,.hljs-bullet,.hljs-string,.hljs-symbol{color:#d1f1a9}.hljs-section,.hljs-title{color:#bbdaff}.hljs-keyword,.hljs-selector-tag{color:#ebbbff}.hljs{background:#002451;color:#fff}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/tomorrow-night-bright.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/tomorrow-night-bright.min.css
new file mode 100644
index 0000000..d335629
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/tomorrow-night-bright.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs-comment,.hljs-quote{color:#969896}.hljs-deletion,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#d54e53}.hljs-built_in,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-type{color:#e78c45}.hljs-attribute{color:#e7c547}.hljs-addition,.hljs-bullet,.hljs-string,.hljs-symbol{color:#b9ca4a}.hljs-section,.hljs-title{color:#7aa6da}.hljs-keyword,.hljs-selector-tag{color:#c397d8}.hljs{background:#000;color:#eaeaea}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/vs.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/vs.min.css
new file mode 100644
index 0000000..fb695c1
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/vs.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#fff;color:#000}.hljs-comment,.hljs-quote,.hljs-variable{color:green}.hljs-built_in,.hljs-keyword,.hljs-name,.hljs-selector-tag,.hljs-tag{color:#00f}.hljs-addition,.hljs-attribute,.hljs-literal,.hljs-section,.hljs-string,.hljs-template-tag,.hljs-template-variable,.hljs-title,.hljs-type{color:#a31515}.hljs-deletion,.hljs-meta,.hljs-selector-attr,.hljs-selector-pseudo{color:#2b91af}.hljs-doctag{color:grey}.hljs-attr{color:red}.hljs-bullet,.hljs-link,.hljs-symbol{color:#00b0e8}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/vs2015.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/vs2015.min.css
new file mode 100644
index 0000000..7f6fe11
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/vs2015.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#1e1e1e;color:#dcdcdc}.hljs-keyword,.hljs-literal,.hljs-name,.hljs-symbol{color:#569cd6}.hljs-link{color:#569cd6;text-decoration:underline}.hljs-built_in,.hljs-type{color:#4ec9b0}.hljs-class,.hljs-number{color:#b8d7a3}.hljs-meta .hljs-string,.hljs-string{color:#d69d85}.hljs-regexp,.hljs-template-tag{color:#9a5334}.hljs-formula,.hljs-function,.hljs-params,.hljs-subst,.hljs-title{color:#dcdcdc}.hljs-comment,.hljs-quote{color:#57a64a;font-style:italic}.hljs-doctag{color:#608b4e}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-tag{color:#9b9b9b}.hljs-template-variable,.hljs-variable{color:#bd63c5}.hljs-attr,.hljs-attribute{color:#9cdcfe}.hljs-section{color:gold}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-bullet,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag{color:#d7ba7d}.hljs-addition{background-color:#144212;display:inline-block;width:100%}.hljs-deletion{background-color:#600;display:inline-block;width:100%}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/xcode.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/xcode.min.css
new file mode 100644
index 0000000..cda4adc
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/xcode.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#fff;color:#000}.xml .hljs-meta{color:silver}.hljs-comment,.hljs-quote{color:#007400}.hljs-attribute,.hljs-keyword,.hljs-literal,.hljs-name,.hljs-selector-tag,.hljs-tag{color:#aa0d91}.hljs-template-variable,.hljs-variable{color:#3f6e74}.hljs-code,.hljs-meta .hljs-string,.hljs-string{color:#c41a16}.hljs-link,.hljs-regexp{color:#0e0eff}.hljs-bullet,.hljs-number,.hljs-symbol,.hljs-title{color:#1c00cf}.hljs-meta,.hljs-section{color:#643820}.hljs-built_in,.hljs-class .hljs-title,.hljs-params,.hljs-title.class_,.hljs-type{color:#5c2699}.hljs-attr{color:#836c28}.hljs-subst{color:#000}.hljs-formula{background-color:#eee;font-style:italic}.hljs-addition{background-color:#baeeba}.hljs-deletion{background-color:#ffc8bd}.hljs-selector-class,.hljs-selector-id{color:#9b703f}.hljs-doctag,.hljs-strong{font-weight:700}.hljs-emphasis{font-style:italic}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/highlightjs/styles/xt256.min.css b/node_modules/mavon-editor/dist/highlightjs/styles/xt256.min.css
new file mode 100644
index 0000000..ef34f0c
--- /dev/null
+++ b/node_modules/mavon-editor/dist/highlightjs/styles/xt256.min.css
@@ -0,0 +1 @@
+pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#eaeaea;background:#000}.hljs-subst{color:#eaeaea}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-type{color:#eaeaea}.hljs-params{color:#da0000}.hljs-literal,.hljs-name,.hljs-number{color:red;font-weight:bolder}.hljs-comment{color:#969896}.hljs-quote,.hljs-selector-id{color:#0ff}.hljs-template-variable,.hljs-title,.hljs-variable{color:#0ff;font-weight:700}.hljs-keyword,.hljs-selector-class,.hljs-symbol{color:#fff000}.hljs-bullet,.hljs-string{color:#0f0}.hljs-section,.hljs-tag{color:#000fff}.hljs-selector-tag{color:#000fff;font-weight:700}.hljs-attribute,.hljs-built_in,.hljs-link,.hljs-regexp{color:#f0f}.hljs-meta{color:#fff;font-weight:bolder}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/katex/contrib/auto-render.min.js b/node_modules/mavon-editor/dist/katex/contrib/auto-render.min.js
new file mode 100644
index 0000000..3a6d663
--- /dev/null
+++ b/node_modules/mavon-editor/dist/katex/contrib/auto-render.min.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("katex")):"function"==typeof define&&define.amd?define(["katex"],t):"object"==typeof exports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)}("undefined"!=typeof self?self:this,function(e){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1)}([function(t,r){t.exports=e},function(e,t,r){"use strict";r.r(t);var n=r(0),o=r.n(n),a=function(e,t,r){for(var n=r,o=0,a=e.length;n<t.length;){var i=t[n];if(o<=0&&t.slice(n,n+a)===e)return n;"\\"===i?n++:"{"===i?o++:"}"===i&&o--,n++}return-1},i=function(e,t,r,n){for(var o=[],i=0;i<e.length;i++)if("text"===e[i].type){var l=e[i].data,d=!0,s=0,f=void 0;for(-1!==(f=l.indexOf(t))&&(s=f,o.push({type:"text",data:l.slice(0,s)}),d=!1);;){if(d){if(-1===(f=l.indexOf(t,s)))break;o.push({type:"text",data:l.slice(s,f)}),s=f}else{if(-1===(f=a(r,l,s+t.length)))break;o.push({type:"math",data:l.slice(s+t.length,f),rawData:l.slice(s,f+r.length),display:n}),s=f+r.length}d=!d}o.push({type:"text",data:l.slice(s)})}else o.push(e[i]);return o},l=function(e,t){for(var r=function(e,t){for(var r=[{type:"text",data:e}],n=0;n<t.length;n++){var o=t[n];r=i(r,o.left,o.right,o.display||!1)}return r}(e,t.delimiters),n=document.createDocumentFragment(),a=0;a<r.length;a++)if("text"===r[a].type)n.appendChild(document.createTextNode(r[a].data));else{var l=document.createElement("span"),d=r[a].data;t.displayMode=r[a].display;try{t.preProcess&&(d=t.preProcess(d)),o.a.render(d,l,t)}catch(e){if(!(e instanceof o.a.ParseError))throw e;t.errorCallback("KaTeX auto-render: Failed to parse `"+r[a].data+"` with ",e),n.appendChild(document.createTextNode(r[a].rawData));continue}n.appendChild(l)}return n};t.default=function(e,t){if(!e)throw new Error("No element provided to render");var r={};for(var n in t)t.hasOwnProperty(n)&&(r[n]=t[n]);r.delimiters=r.delimiters||[{left:"$$",right:"$$",display:!0},{left:"\\(",right:"\\)",display:!1},{left:"\\[",right:"\\]",display:!0}],r.ignoredTags=r.ignoredTags||["script","noscript","style","textarea","pre","code"],r.ignoredClasses=r.ignoredClasses||[],r.errorCallback=r.errorCallback||console.error,r.macros=r.macros||{},function e(t,r){for(var n=0;n<t.childNodes.length;n++){var o=t.childNodes[n];if(3===o.nodeType){var a=l(o.textContent,r);n+=a.childNodes.length-1,t.replaceChild(a,o)}else 1===o.nodeType&&function(){var t=" "+o.className+" ";-1===r.ignoredTags.indexOf(o.nodeName.toLowerCase())&&r.ignoredClasses.every(function(e){return-1===t.indexOf(" "+e+" ")})&&e(o,r)}()}}(e,r)}}]).default});
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/katex/contrib/auto-render.mjs b/node_modules/mavon-editor/dist/katex/contrib/auto-render.mjs
new file mode 100644
index 0000000..58de8b6
--- /dev/null
+++ b/node_modules/mavon-editor/dist/katex/contrib/auto-render.mjs
@@ -0,0 +1,215 @@
+import katex from '../katex.mjs';
+
+/* eslint no-constant-condition:0 */
+const findEndOfMath = function findEndOfMath(delimiter, text, startIndex) {
+  // Adapted from
+  // https://github.com/Khan/perseus/blob/master/src/perseus-markdown.jsx
+  let index = startIndex;
+  let braceLevel = 0;
+  const delimLength = delimiter.length;
+
+  while (index < text.length) {
+    const character = text[index];
+
+    if (braceLevel <= 0 && text.slice(index, index + delimLength) === delimiter) {
+      return index;
+    } else if (character === "\\") {
+      index++;
+    } else if (character === "{") {
+      braceLevel++;
+    } else if (character === "}") {
+      braceLevel--;
+    }
+
+    index++;
+  }
+
+  return -1;
+};
+
+const splitAtDelimiters = function splitAtDelimiters(startData, leftDelim, rightDelim, display) {
+  const finalData = [];
+
+  for (let i = 0; i < startData.length; i++) {
+    if (startData[i].type === "text") {
+      const text = startData[i].data;
+      let lookingForLeft = true;
+      let currIndex = 0;
+      let nextIndex;
+      nextIndex = text.indexOf(leftDelim);
+
+      if (nextIndex !== -1) {
+        currIndex = nextIndex;
+        finalData.push({
+          type: "text",
+          data: text.slice(0, currIndex)
+        });
+        lookingForLeft = false;
+      }
+
+      while (true) {
+        if (lookingForLeft) {
+          nextIndex = text.indexOf(leftDelim, currIndex);
+
+          if (nextIndex === -1) {
+            break;
+          }
+
+          finalData.push({
+            type: "text",
+            data: text.slice(currIndex, nextIndex)
+          });
+          currIndex = nextIndex;
+        } else {
+          nextIndex = findEndOfMath(rightDelim, text, currIndex + leftDelim.length);
+
+          if (nextIndex === -1) {
+            break;
+          }
+
+          finalData.push({
+            type: "math",
+            data: text.slice(currIndex + leftDelim.length, nextIndex),
+            rawData: text.slice(currIndex, nextIndex + rightDelim.length),
+            display: display
+          });
+          currIndex = nextIndex + rightDelim.length;
+        }
+
+        lookingForLeft = !lookingForLeft;
+      }
+
+      finalData.push({
+        type: "text",
+        data: text.slice(currIndex)
+      });
+    } else {
+      finalData.push(startData[i]);
+    }
+  }
+
+  return finalData;
+};
+
+/* eslint no-console:0 */
+
+const splitWithDelimiters = function splitWithDelimiters(text, delimiters) {
+  let data = [{
+    type: "text",
+    data: text
+  }];
+
+  for (let i = 0; i < delimiters.length; i++) {
+    const delimiter = delimiters[i];
+    data = splitAtDelimiters(data, delimiter.left, delimiter.right, delimiter.display || false);
+  }
+
+  return data;
+};
+/* Note: optionsCopy is mutated by this method. If it is ever exposed in the
+ * API, we should copy it before mutating.
+ */
+
+
+const renderMathInText = function renderMathInText(text, optionsCopy) {
+  const data = splitWithDelimiters(text, optionsCopy.delimiters);
+  const fragment = document.createDocumentFragment();
+
+  for (let i = 0; i < data.length; i++) {
+    if (data[i].type === "text") {
+      fragment.appendChild(document.createTextNode(data[i].data));
+    } else {
+      const span = document.createElement("span");
+      let math = data[i].data; // Override any display mode defined in the settings with that
+      // defined by the text itself
+
+      optionsCopy.displayMode = data[i].display;
+
+      try {
+        if (optionsCopy.preProcess) {
+          math = optionsCopy.preProcess(math);
+        }
+
+        katex.render(math, span, optionsCopy);
+      } catch (e) {
+        if (!(e instanceof katex.ParseError)) {
+          throw e;
+        }
+
+        optionsCopy.errorCallback("KaTeX auto-render: Failed to parse `" + data[i].data + "` with ", e);
+        fragment.appendChild(document.createTextNode(data[i].rawData));
+        continue;
+      }
+
+      fragment.appendChild(span);
+    }
+  }
+
+  return fragment;
+};
+
+const renderElem = function renderElem(elem, optionsCopy) {
+  for (let i = 0; i < elem.childNodes.length; i++) {
+    const childNode = elem.childNodes[i];
+
+    if (childNode.nodeType === 3) {
+      // Text node
+      const frag = renderMathInText(childNode.textContent, optionsCopy);
+      i += frag.childNodes.length - 1;
+      elem.replaceChild(frag, childNode);
+    } else if (childNode.nodeType === 1) {
+      // Element node
+      const className = ' ' + childNode.className + ' ';
+      const shouldRender = optionsCopy.ignoredTags.indexOf(childNode.nodeName.toLowerCase()) === -1 && optionsCopy.ignoredClasses.every(x => className.indexOf(' ' + x + ' ') === -1);
+
+      if (shouldRender) {
+        renderElem(childNode, optionsCopy);
+      }
+    } // Otherwise, it's something else, and ignore it.
+
+  }
+};
+
+const renderMathInElement = function renderMathInElement(elem, options) {
+  if (!elem) {
+    throw new Error("No element provided to render");
+  }
+
+  const optionsCopy = {}; // Object.assign(optionsCopy, option)
+
+  for (const option in options) {
+    if (options.hasOwnProperty(option)) {
+      optionsCopy[option] = options[option];
+    }
+  } // default options
+
+
+  optionsCopy.delimiters = optionsCopy.delimiters || [{
+    left: "$$",
+    right: "$$",
+    display: true
+  }, {
+    left: "\\(",
+    right: "\\)",
+    display: false
+  }, // LaTeX uses $…$, but it ruins the display of normal `$` in text:
+  // {left: "$", right: "$", display: false},
+  //  \[…\] must come last in this array. Otherwise, renderMathInElement
+  //  will search for \[ before it searches for $$ or  \(
+  // That makes it susceptible to finding a \\[0.3em] row delimiter and
+  // treating it as if it were the start of a KaTeX math zone.
+  {
+    left: "\\[",
+    right: "\\]",
+    display: true
+  }];
+  optionsCopy.ignoredTags = optionsCopy.ignoredTags || ["script", "noscript", "style", "textarea", "pre", "code"];
+  optionsCopy.ignoredClasses = optionsCopy.ignoredClasses || [];
+  optionsCopy.errorCallback = optionsCopy.errorCallback || console.error; // Enable sharing of global macros defined via `\gdef` between different
+  // math elements within a single call to `renderMathInElement`.
+
+  optionsCopy.macros = optionsCopy.macros || {};
+  renderElem(elem, optionsCopy);
+};
+
+export default renderMathInElement;
diff --git a/node_modules/mavon-editor/dist/katex/contrib/copy-tex.min.css b/node_modules/mavon-editor/dist/katex/contrib/copy-tex.min.css
new file mode 100644
index 0000000..555ed11
--- /dev/null
+++ b/node_modules/mavon-editor/dist/katex/contrib/copy-tex.min.css
@@ -0,0 +1 @@
+.katex,.katex-display{user-select:all;-moz-user-select:all;-webkit-user-select:all;-ms-user-select:all}
diff --git a/node_modules/mavon-editor/dist/katex/contrib/copy-tex.min.js b/node_modules/mavon-editor/dist/katex/contrib/copy-tex.min.js
new file mode 100644
index 0000000..e0354d6
--- /dev/null
+++ b/node_modules/mavon-editor/dist/katex/contrib/copy-tex.min.js
@@ -0,0 +1 @@
+!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var r in n)("object"==typeof exports?exports:e)[r]=n[r]}}("undefined"!=typeof self?self:this,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t,n){},function(e,t,n){"use strict";n.r(t);n(0);var r={inline:["$","$"],display:["$$","$$"]},o=function(e,t){void 0===t&&(t=r);for(var n=e.querySelectorAll(".katex-mathml + .katex-html"),o=0;o<n.length;o++){var l=n[o];l.remove?l.remove(null):l.parentNode.removeChild(l)}for(var i=e.querySelectorAll(".katex-mathml"),a=0;a<i.length;a++){var u=i[a],f=u.querySelector("annotation");f&&(u.replaceWith?u.replaceWith(f):u.parentNode.replaceChild(f,u),f.innerHTML=t.inline[0]+f.innerHTML+t.inline[1])}for(var c=e.querySelectorAll(".katex-display annotation"),d=0;d<c.length;d++){var p=c[d];p.innerHTML=t.display[0]+p.innerHTML.substr(t.inline[0].length,p.innerHTML.length-t.inline[0].length-t.inline[1].length)+t.display[1]}return e};document.addEventListener("copy",function(e){var t=window.getSelection();if(!t.isCollapsed){var n=t.getRangeAt(0).cloneContents();if(n.querySelector(".katex-mathml")){for(var r=[],l=0;l<n.childNodes.length;l++)r.push(n.childNodes[l].outerHTML);e.clipboardData.setData("text/html",r.join("")),e.clipboardData.setData("text/plain",o(n).textContent),e.preventDefault()}}})}]).default});
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/katex/contrib/copy-tex.mjs b/node_modules/mavon-editor/dist/katex/contrib/copy-tex.mjs
new file mode 100644
index 0000000..b6ed1ee
--- /dev/null
+++ b/node_modules/mavon-editor/dist/katex/contrib/copy-tex.mjs
@@ -0,0 +1,85 @@
+// Set these to how you want inline and display math to be delimited.
+const defaultCopyDelimiters = {
+  inline: ['$', '$'],
+  // alternative: ['\(', '\)']
+  display: ['$$', '$$'] // alternative: ['\[', '\]']
+
+}; // Replace .katex elements with their TeX source (<annotation> element).
+// Modifies fragment in-place.  Useful for writing your own 'copy' handler,
+// as in copy-tex.js.
+
+const katexReplaceWithTex = function katexReplaceWithTex(fragment, copyDelimiters) {
+  if (copyDelimiters === void 0) {
+    copyDelimiters = defaultCopyDelimiters;
+  }
+
+  // Remove .katex-html blocks that are preceded by .katex-mathml blocks
+  // (which will get replaced below).
+  const katexHtml = fragment.querySelectorAll('.katex-mathml + .katex-html');
+
+  for (let i = 0; i < katexHtml.length; i++) {
+    const element = katexHtml[i];
+
+    if (element.remove) {
+      element.remove(null);
+    } else {
+      element.parentNode.removeChild(element);
+    }
+  } // Replace .katex-mathml elements with their annotation (TeX source)
+  // descendant, with inline delimiters.
+
+
+  const katexMathml = fragment.querySelectorAll('.katex-mathml');
+
+  for (let i = 0; i < katexMathml.length; i++) {
+    const element = katexMathml[i];
+    const texSource = element.querySelector('annotation');
+
+    if (texSource) {
+      if (element.replaceWith) {
+        element.replaceWith(texSource);
+      } else {
+        element.parentNode.replaceChild(texSource, element);
+      }
+
+      texSource.innerHTML = copyDelimiters.inline[0] + texSource.innerHTML + copyDelimiters.inline[1];
+    }
+  } // Switch display math to display delimiters.
+
+
+  const displays = fragment.querySelectorAll('.katex-display annotation');
+
+  for (let i = 0; i < displays.length; i++) {
+    const element = displays[i];
+    element.innerHTML = copyDelimiters.display[0] + element.innerHTML.substr(copyDelimiters.inline[0].length, element.innerHTML.length - copyDelimiters.inline[0].length - copyDelimiters.inline[1].length) + copyDelimiters.display[1];
+  }
+
+  return fragment;
+};
+
+document.addEventListener('copy', function (event) {
+  const selection = window.getSelection();
+
+  if (selection.isCollapsed) {
+    return; // default action OK if selection is empty
+  }
+
+  const fragment = selection.getRangeAt(0).cloneContents();
+
+  if (!fragment.querySelector('.katex-mathml')) {
+    return; // default action OK if no .katex-mathml elements
+  } // Preserve usual HTML copy/paste behavior.
+
+
+  const html = [];
+
+  for (let i = 0; i < fragment.childNodes.length; i++) {
+    html.push(fragment.childNodes[i].outerHTML);
+  }
+
+  event.clipboardData.setData('text/html', html.join('')); // Rewrite plain-text version.
+
+  event.clipboardData.setData('text/plain', katexReplaceWithTex(fragment).textContent); // Prevent normal copy handling.
+
+  event.preventDefault();
+});
diff --git a/node_modules/mavon-editor/dist/katex/contrib/mathtex-script-type.min.js b/node_modules/mavon-editor/dist/katex/contrib/mathtex-script-type.min.js
new file mode 100644
index 0000000..ae9f528
--- /dev/null
+++ b/node_modules/mavon-editor/dist/katex/contrib/mathtex-script-type.min.js
@@ -0,0 +1 @@
+!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("katex"));else if("function"==typeof define&&define.amd)define(["katex"],t);else{var r="object"==typeof exports?t(require("katex")):t(e.katex);for(var n in r)("object"==typeof exports?exports:e)[n]=r[n]}}("undefined"!=typeof self?self:this,function(e){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1)}([function(t,r){t.exports=e},function(e,t,r){"use strict";r.r(t);var n=r(0),o=r.n(n),u=document.body.getElementsByTagName("script");(u=Array.prototype.slice.call(u)).forEach(function(e){if(!e.type||!e.type.match(/math\/tex/i))return-1;var t=null!=e.type.match(/mode\s*=\s*display(;|\s|\n|$)/),r=document.createElement(t?"div":"span");r.setAttribute("class",t?"equation":"inline-equation");try{o.a.render(e.text,r,{displayMode:t})}catch(t){r.textContent=e.text}e.parentNode.replaceChild(r,e)})}]).default});
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/katex/contrib/mathtex-script-type.mjs b/node_modules/mavon-editor/dist/katex/contrib/mathtex-script-type.mjs
new file mode 100644
index 0000000..7cfb90e
--- /dev/null
+++ b/node_modules/mavon-editor/dist/katex/contrib/mathtex-script-type.mjs
@@ -0,0 +1,24 @@
+import katex from '../katex.mjs';
+
+let scripts = document.body.getElementsByTagName("script");
+scripts = Array.prototype.slice.call(scripts);
+scripts.forEach(function (script) {
+  if (!script.type || !script.type.match(/math\/tex/i)) {
+    return -1;
+  }
+
+  const display = script.type.match(/mode\s*=\s*display(;|\s|\n|$)/) != null;
+  const katexElement = document.createElement(display ? "div" : "span");
+  katexElement.setAttribute("class", display ? "equation" : "inline-equation");
+
+  try {
+    katex.render(script.text, katexElement, {
+      displayMode: display
+    });
+  } catch (err) {
+    //console.error(err); linter doesn't like this
+    katexElement.textContent = script.text;
+  }
+
+  script.parentNode.replaceChild(katexElement, script);
+});
diff --git a/node_modules/mavon-editor/dist/katex/contrib/mhchem.min.js b/node_modules/mavon-editor/dist/katex/contrib/mhchem.min.js
new file mode 100644
index 0000000..8fd9cca
--- /dev/null
+++ b/node_modules/mavon-editor/dist/katex/contrib/mhchem.min.js
@@ -0,0 +1 @@
+!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("katex"));else if("function"==typeof define&&define.amd)define(["katex"],e);else{var n="object"==typeof exports?e(require("katex")):e(t.katex);for(var o in n)("object"==typeof exports?exports:t)[o]=n[o]}}("undefined"!=typeof self?self:this,function(t){return function(t){var e={};function n(o){if(e[o])return e[o].exports;var a=e[o]={i:o,l:!1,exports:{}};return t[o].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var a in t)n.d(o,a,function(e){return t[e]}.bind(null,a));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=1)}([function(e,n){e.exports=t},function(t,e,n){"use strict";n.r(e);var o=n(0),a=n.n(o);a.a.__defineMacro("\\ce",function(t){return r(t.consumeArgs(1)[0],"ce")}),a.a.__defineMacro("\\pu",function(t){return r(t.consumeArgs(1)[0],"pu")}),a.a.__defineMacro("\\tripledash","{\\vphantom{-}\\raisebox{2.56mu}{$\\mkern2mu\\tiny\\text{-}\\mkern1mu\\text{-}\\mkern1mu\\text{-}\\mkern2mu$}}");var r=function(t,e){for(var n="",o=t[t.length-1].loc.start,a=t.length-1;a>=0;a--)t[a].loc.start>o&&(n+=" ",o=t[a].loc.start),n+=t[a].text,o+=t[a].text.length;return c.go(i.go(n,e))},i={go:function(t,e){if(!t)return[];void 0===e&&(e="ce");var n,o="0",a={};a.parenthesisLevel=0,t=(t=(t=t.replace(/\n/g," ")).replace(/[\u2212\u2013\u2014\u2010]/g,"-")).replace(/[\u2026]/g,"...");for(var r=10,c=[];;){n!==t?(r=10,n=t):r--;var u=i.stateMachines[e],p=u.transitions[o]||u.transitions["*"];t:for(var s=0;s<p.length;s++){var _=i.patterns.match_(p[s].pattern,t);if(_){for(var d=p[s].task,m=0;m<d.action_.length;m++){var l;if(u.actions[d.action_[m].type_])l=u.actions[d.action_[m].type_](a,_.match_,d.action_[m].option);else{if(!i.actions[d.action_[m].type_])throw["MhchemBugA","mhchem bug A. Please report. ("+d.action_[m].type_+")"];l=i.actions[d.action_[m].type_](a,_.match_,d.action_[m].option)}i.concatArray(c,l)}if(o=d.nextState||o,!(t.length>0))return c;if(d.revisit||(t=_.remainder),!d.toContinue)break t}}if(r<=0)throw["MhchemBugU","mhchem bug U. Please report."]}},concatArray:function(t,e){if(e)if(Array.isArray(e))for(var n=0;n<e.length;n++)t.push(e[n]);else t.push(e)},patterns:{patterns:{empty:/^$/,else:/^./,else2:/^./,space:/^\s/,"space A":/^\s(?=[A-Z\\$])/,space$:/^\s$/,"a-z":/^[a-z]/,x:/^x/,x$:/^x$/,i$:/^i$/,letters:/^(?:[a-zA-Z\u03B1-\u03C9\u0391-\u03A9?@]|(?:\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))))+/,"\\greek":/^\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))/,"one lowercase latin letter $":/^(?:([a-z])(?:$|[^a-zA-Z]))$/,"$one lowercase latin letter$ $":/^\$(?:([a-z])(?:$|[^a-zA-Z]))\$$/,"one lowercase greek letter $":/^(?:\$?[\u03B1-\u03C9]\$?|\$?\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\s*\$?)(?:\s+|\{\}|(?![a-zA-Z]))$/,digits:/^[0-9]+/,"-9.,9":/^[+\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))/,"-9.,9 no missing 0":/^[+\-]?[0-9]+(?:[.,][0-9]+)?/,"(-)(9.,9)(e)(99)":function(t){var e=t.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))?(\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))\))?(?:([eE]|\s*(\*|x|\\times|\u00D7)\s*10\^)([+\-]?[0-9]+|\{[+\-]?[0-9]+\}))?/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},"(-)(9)^(-9)":function(t){var e=t.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+)?)\^([+\-]?[0-9]+|\{[+\-]?[0-9]+\})/);return e&&e[0]?{match_:e.splice(1),remainder:t.substr(e[0].length)}:null},"state of aggregation $":function(t){var e=i.patterns.findObserveGroups(t,"",/^\([a-z]{1,3}(?=[\),])/,")","");if(e&&e.remainder.match(/^($|[\s,;\)\]\}])/))return e;var n=t.match(/^(?:\((?:\\ca\s?)?\$[amothc]\$\))/);return n?{match_:n[0],remainder:t.substr(n[0].length)}:null},"_{(state of aggregation)}$":/^_\{(\([a-z]{1,3}\))\}/,"{[(":/^(?:\\\{|\[|\()/,")]}":/^(?:\)|\]|\\\})/,", ":/^[,;]\s*/,",":/^[,;]/,".":/^[.]/,". ":/^([.\u22C5\u00B7\u2022])\s*/,"...":/^\.\.\.(?=$|[^.])/,"* ":/^([*])\s*/,"^{(...)}":function(t){return i.patterns.findObserveGroups(t,"^{","","","}")},"^($...$)":function(t){return i.patterns.findObserveGroups(t,"^","$","$","")},"^a":/^\^([0-9]+|[^\\_])/,"^\\x{}{}":function(t){return i.patterns.findObserveGroups(t,"^",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"^\\x{}":function(t){return i.patterns.findObserveGroups(t,"^",/^\\[a-zA-Z]+\{/,"}","")},"^\\x":/^\^(\\[a-zA-Z]+)\s*/,"^(-1)":/^\^(-?\d+)/,"'":/^'/,"_{(...)}":function(t){return i.patterns.findObserveGroups(t,"_{","","","}")},"_($...$)":function(t){return i.patterns.findObserveGroups(t,"_","$","$","")},_9:/^_([+\-]?[0-9]+|[^\\])/,"_\\x{}{}":function(t){return i.patterns.findObserveGroups(t,"_",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"_\\x{}":function(t){return i.patterns.findObserveGroups(t,"_",/^\\[a-zA-Z]+\{/,"}","")},"_\\x":/^_(\\[a-zA-Z]+)\s*/,"^_":/^(?:\^(?=_)|\_(?=\^)|[\^_]$)/,"{}":/^\{\}/,"{...}":function(t){return i.patterns.findObserveGroups(t,"","{","}","")},"{(...)}":function(t){return i.patterns.findObserveGroups(t,"{","","","}")},"$...$":function(t){return i.patterns.findObserveGroups(t,"","$","$","")},"${(...)}$":function(t){return i.patterns.findObserveGroups(t,"${","","","}$")},"$(...)$":function(t){return i.patterns.findObserveGroups(t,"$","","","$")},"=<>":/^[=<>]/,"#":/^[#\u2261]/,"+":/^\+/,"-$":/^-(?=[\s_},;\]\/]|$|\([a-z]+\))/,"-9":/^-(?=[0-9])/,"- orbital overlap":/^-(?=(?:[spd]|sp)(?:$|[\s,;\)\]\}]))/,"-":/^-/,"pm-operator":/^(?:\\pm|\$\\pm\$|\+-|\+\/-)/,operator:/^(?:\+|(?:[\-=<>]|<<|>>|\\approx|\$\\approx\$)(?=\s|$|-?[0-9]))/,arrowUpDown:/^(?:v|\(v\)|\^|\(\^\))(?=$|[\s,;\)\]\}])/,"\\bond{(...)}":function(t){return i.patterns.findObserveGroups(t,"\\bond{","","","}")},"->":/^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\u2192\u27F6\u21CC])/,CMT:/^[CMT](?=\[)/,"[(...)]":function(t){return i.patterns.findObserveGroups(t,"[","","","]")},"1st-level escape":/^(&|\\\\|\\hline)\s*/,"\\,":/^(?:\\[,\ ;:])/,"\\x{}{}":function(t){return i.patterns.findObserveGroups(t,"",/^\\[a-zA-Z]+\{/,"}","","","{","}","",!0)},"\\x{}":function(t){return i.patterns.findObserveGroups(t,"",/^\\[a-zA-Z]+\{/,"}","")},"\\ca":/^\\ca(?:\s+|(?![a-zA-Z]))/,"\\x":/^(?:\\[a-zA-Z]+\s*|\\[_&{}%])/,orbital:/^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/,others:/^[\/~|]/,"\\frac{(...)}":function(t){return i.patterns.findObserveGroups(t,"\\frac{","","","}","{","","","}")},"\\overset{(...)}":function(t){return i.patterns.findObserveGroups(t,"\\overset{","","","}","{","","","}")},"\\underset{(...)}":function(t){return i.patterns.findObserveGroups(t,"\\underset{","","","}","{","","","}")},"\\underbrace{(...)}":function(t){return i.patterns.findObserveGroups(t,"\\underbrace{","","","}_","{","","","}")},"\\color{(...)}0":function(t){return i.patterns.findObserveGroups(t,"\\color{","","","}")},"\\color{(...)}{(...)}1":function(t){return i.patterns.findObserveGroups(t,"\\color{","","","}","{","","","}")},"\\color(...){(...)}2":function(t){return i.patterns.findObserveGroups(t,"\\color","\\","",/^(?=\{)/,"{","","","}")},"\\ce{(...)}":function(t){return i.patterns.findObserveGroups(t,"\\ce{","","","}")},oxidation$:/^(?:[+-][IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/,"d-oxidation$":/^(?:[+-]?\s?[IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/,"roman numeral":/^[IVX]+/,"1/2$":/^[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+(?:\$[a-z]\$|[a-z])?$/,amount:function(t){var e;if(e=t.match(/^(?:(?:(?:\([+\-]?[0-9]+\/[0-9]+\)|[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+|[+\-]?[0-9]+[.,][0-9]+|[+\-]?\.[0-9]+|[+\-]?[0-9]+)(?:[a-z](?=\s*[A-Z]))?)|[+\-]?[a-z](?=\s*[A-Z])|\+(?!\s))/))return{match_:e[0],remainder:t.substr(e[0].length)};var n=i.patterns.findObserveGroups(t,"","$","$","");return n&&(e=n.match_.match(/^\$(?:\(?[+\-]?(?:[0-9]*[a-z]?[+\-])?[0-9]*[a-z](?:[+\-][0-9]*[a-z]?)?\)?|\+|-)\$$/))?{match_:e[0],remainder:t.substr(e[0].length)}:null},amount2:function(t){return this.amount(t)},"(KV letters),":/^(?:[A-Z][a-z]{0,2}|i)(?=,)/,formula$:function(t){if(t.match(/^\([a-z]+\)$/))return null;var e=t.match(/^(?:[a-z]|(?:[0-9\ \+\-\,\.\(\)]+[a-z])+[0-9\ \+\-\,\.\(\)]*|(?:[a-z][0-9\ \+\-\,\.\(\)]+)+[a-z]?)$/);return e?{match_:e[0],remainder:t.substr(e[0].length)}:null},uprightEntities:/^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/,"/":/^\s*(\/)\s*/,"//":/^\s*(\/\/)\s*/,"*":/^\s*[*.]\s*/},findObserveGroups:function(t,e,n,o,a,r,i,c,u,p){var s=function(t,e){if("string"==typeof e)return 0!==t.indexOf(e)?null:e;var n=t.match(e);return n?n[0]:null},_=s(t,e);if(null===_)return null;if(t=t.substr(_.length),null===(_=s(t,n)))return null;var d=function(t,e,n){for(var o=0;e<t.length;){var a=t.charAt(e),r=s(t.substr(e),n);if(null!==r&&0===o)return{endMatchBegin:e,endMatchEnd:e+r.length};if("{"===a)o++;else if("}"===a){if(0===o)throw["ExtraCloseMissingOpen","Extra close brace or missing open brace"];o--}e++}return null}(t,_.length,o||a);if(null===d)return null;var m=t.substring(0,o?d.endMatchEnd:d.endMatchBegin);if(r||i){var l=this.findObserveGroups(t.substr(d.endMatchEnd),r,i,c,u);if(null===l)return null;var f=[m,l.match_];return{match_:p?f.join(""):f,remainder:l.remainder}}return{match_:m,remainder:t.substr(d.endMatchEnd)}},match_:function(t,e){var n=i.patterns.patterns[t];if(void 0===n)throw["MhchemBugP","mhchem bug P. Please report. ("+t+")"];if("function"==typeof n)return i.patterns.patterns[t](e);var o=e.match(n);return o?{match_:o[2]?[o[1],o[2]]:o[1]?o[1]:o[0],remainder:e.substr(o[0].length)}:null}},actions:{"a=":function(t,e){t.a=(t.a||"")+e},"b=":function(t,e){t.b=(t.b||"")+e},"p=":function(t,e){t.p=(t.p||"")+e},"o=":function(t,e){t.o=(t.o||"")+e},"q=":function(t,e){t.q=(t.q||"")+e},"d=":function(t,e){t.d=(t.d||"")+e},"rm=":function(t,e){t.rm=(t.rm||"")+e},"text=":function(t,e){t.text_=(t.text_||"")+e},insert:function(t,e,n){return{type_:n}},"insert+p1":function(t,e,n){return{type_:n,p1:e}},"insert+p1+p2":function(t,e,n){return{type_:n,p1:e[0],p2:e[1]}},copy:function(t,e){return e},rm:function(t,e){return{type_:"rm",p1:e||""}},text:function(t,e){return i.go(e,"text")},"{text}":function(t,e){var n=["{"];return i.concatArray(n,i.go(e,"text")),n.push("}"),n},"tex-math":function(t,e){return i.go(e,"tex-math")},"tex-math tight":function(t,e){return i.go(e,"tex-math tight")},bond:function(t,e,n){return{type_:"bond",kind_:n||e}},"color0-output":function(t,e){return{type_:"color0",color:e[0]}},ce:function(t,e){return i.go(e)},"1/2":function(t,e){var n=[];e.match(/^[+\-]/)&&(n.push(e.substr(0,1)),e=e.substr(1));var o=e.match(/^([0-9]+|\$[a-z]\$|[a-z])\/([0-9]+)(\$[a-z]\$|[a-z])?$/);return o[1]=o[1].replace(/\$/g,""),n.push({type_:"frac",p1:o[1],p2:o[2]}),o[3]&&(o[3]=o[3].replace(/\$/g,""),n.push({type_:"tex-math",p1:o[3]})),n},"9,9":function(t,e){return i.go(e,"9,9")}},createTransitions:function(t){var e,n,o,a,r={};for(e in t)for(n in t[e])for(o=n.split("|"),t[e][n].stateArray=o,a=0;a<o.length;a++)r[o[a]]=[];for(e in t)for(n in t[e])for(o=t[e][n].stateArray||[],a=0;a<o.length;a++){var i=t[e][n];if(i.action_){i.action_=[].concat(i.action_);for(var c=0;c<i.action_.length;c++)"string"==typeof i.action_[c]&&(i.action_[c]={type_:i.action_[c]})}else i.action_=[];for(var u=e.split("|"),p=0;p<u.length;p++)if("*"===o[a])for(var s in r)r[s].push({pattern:u[p],task:i});else r[o[a]].push({pattern:u[p],task:i})}return r},stateMachines:{}};i.stateMachines={ce:{transitions:i.createTransitions({empty:{"*":{action_:"output"}},else:{"0|1|2":{action_:"beginsWithBond=false",revisit:!0,toContinue:!0}},oxidation$:{0:{action_:"oxidation-output"}},CMT:{r:{action_:"rdt=",nextState:"rt"},rd:{action_:"rqt=",nextState:"rdt"}},arrowUpDown:{"0|1|2|as":{action_:["sb=false","output","operator"],nextState:"1"}},uprightEntities:{"0|1|2":{action_:["o=","output"],nextState:"1"}},orbital:{"0|1|2|3":{action_:"o=",nextState:"o"}},"->":{"0|1|2|3":{action_:"r=",nextState:"r"},"a|as":{action_:["output","r="],nextState:"r"},"*":{action_:["output","r="],nextState:"r"}},"+":{o:{action_:"d= kv",nextState:"d"},"d|D":{action_:"d=",nextState:"d"},q:{action_:"d=",nextState:"qd"},"qd|qD":{action_:"d=",nextState:"qd"},dq:{action_:["output","d="],nextState:"d"},3:{action_:["sb=false","output","operator"],nextState:"0"}},amount:{"0|2":{action_:"a=",nextState:"a"}},"pm-operator":{"0|1|2|a|as":{action_:["sb=false","output",{type_:"operator",option:"\\pm"}],nextState:"0"}},operator:{"0|1|2|a|as":{action_:["sb=false","output","operator"],nextState:"0"}},"-$":{"o|q":{action_:["charge or bond","output"],nextState:"qd"},d:{action_:"d=",nextState:"d"},D:{action_:["output",{type_:"bond",option:"-"}],nextState:"3"},q:{action_:"d=",nextState:"qd"},qd:{action_:"d=",nextState:"qd"},"qD|dq":{action_:["output",{type_:"bond",option:"-"}],nextState:"3"}},"-9":{"3|o":{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"3"}},"- orbital overlap":{o:{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"2"},d:{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"2"}},"-":{"0|1|2":{action_:[{type_:"output",option:1},"beginsWithBond=true",{type_:"bond",option:"-"}],nextState:"3"},3:{action_:{type_:"bond",option:"-"}},a:{action_:["output",{type_:"insert",option:"hyphen"}],nextState:"2"},as:{action_:[{type_:"output",option:2},{type_:"bond",option:"-"}],nextState:"3"},b:{action_:"b="},o:{action_:{type_:"- after o/d",option:!1},nextState:"2"},q:{action_:{type_:"- after o/d",option:!1},nextState:"2"},"d|qd|dq":{action_:{type_:"- after o/d",option:!0},nextState:"2"},"D|qD|p":{action_:["output",{type_:"bond",option:"-"}],nextState:"3"}},amount2:{"1|3":{action_:"a=",nextState:"a"}},letters:{"0|1|2|3|a|as|b|p|bp|o":{action_:"o=",nextState:"o"},"q|dq":{action_:["output","o="],nextState:"o"},"d|D|qd|qD":{action_:"o after d",nextState:"o"}},digits:{o:{action_:"q=",nextState:"q"},"d|D":{action_:"q=",nextState:"dq"},q:{action_:["output","o="],nextState:"o"},a:{action_:"o=",nextState:"o"}},"space A":{"b|p|bp":{}},space:{a:{nextState:"as"},0:{action_:"sb=false"},"1|2":{action_:"sb=true"},"r|rt|rd|rdt|rdq":{action_:"output",nextState:"0"},"*":{action_:["output","sb=true"],nextState:"1"}},"1st-level escape":{"1|2":{action_:["output",{type_:"insert+p1",option:"1st-level escape"}]},"*":{action_:["output",{type_:"insert+p1",option:"1st-level escape"}],nextState:"0"}},"[(...)]":{"r|rt":{action_:"rd=",nextState:"rd"},"rd|rdt":{action_:"rq=",nextState:"rdq"}},"...":{"o|d|D|dq|qd|qD":{action_:["output",{type_:"bond",option:"..."}],nextState:"3"},"*":{action_:[{type_:"output",option:1},{type_:"insert",option:"ellipsis"}],nextState:"1"}},". |* ":{"*":{action_:["output",{type_:"insert",option:"addition compound"}],nextState:"1"}},"state of aggregation $":{"*":{action_:["output","state of aggregation"],nextState:"1"}},"{[(":{"a|as|o":{action_:["o=","output","parenthesisLevel++"],nextState:"2"},"0|1|2|3":{action_:["o=","output","parenthesisLevel++"],nextState:"2"},"*":{action_:["output","o=","output","parenthesisLevel++"],nextState:"2"}},")]}":{"0|1|2|3|b|p|bp|o":{action_:["o=","parenthesisLevel--"],nextState:"o"},"a|as|d|D|q|qd|qD|dq":{action_:["output","o=","parenthesisLevel--"],nextState:"o"}},", ":{"*":{action_:["output","comma"],nextState:"0"}},"^_":{"*":{}},"^{(...)}|^($...$)":{"0|1|2|as":{action_:"b=",nextState:"b"},p:{action_:"b=",nextState:"bp"},"3|o":{action_:"d= kv",nextState:"D"},q:{action_:"d=",nextState:"qD"},"d|D|qd|qD|dq":{action_:["output","d="],nextState:"D"}},"^a|^\\x{}{}|^\\x{}|^\\x|'":{"0|1|2|as":{action_:"b=",nextState:"b"},p:{action_:"b=",nextState:"bp"},"3|o":{action_:"d= kv",nextState:"d"},q:{action_:"d=",nextState:"qd"},"d|qd|D|qD":{action_:"d="},dq:{action_:["output","d="],nextState:"d"}},"_{(state of aggregation)}$":{"d|D|q|qd|qD|dq":{action_:["output","q="],nextState:"q"}},"_{(...)}|_($...$)|_9|_\\x{}{}|_\\x{}|_\\x":{"0|1|2|as":{action_:"p=",nextState:"p"},b:{action_:"p=",nextState:"bp"},"3|o":{action_:"q=",nextState:"q"},"d|D":{action_:"q=",nextState:"dq"},"q|qd|qD|dq":{action_:["output","q="],nextState:"q"}},"=<>":{"0|1|2|3|a|as|o|q|d|D|qd|qD|dq":{action_:[{type_:"output",option:2},"bond"],nextState:"3"}},"#":{"0|1|2|3|a|as|o":{action_:[{type_:"output",option:2},{type_:"bond",option:"#"}],nextState:"3"}},"{}":{"*":{action_:{type_:"output",option:1},nextState:"1"}},"{...}":{"0|1|2|3|a|as|b|p|bp":{action_:"o=",nextState:"o"},"o|d|D|q|qd|qD|dq":{action_:["output","o="],nextState:"o"}},"$...$":{a:{action_:"a="},"0|1|2|3|as|b|p|bp|o":{action_:"o=",nextState:"o"},"as|o":{action_:"o="},"q|d|D|qd|qD|dq":{action_:["output","o="],nextState:"o"}},"\\bond{(...)}":{"*":{action_:[{type_:"output",option:2},"bond"],nextState:"3"}},"\\frac{(...)}":{"*":{action_:[{type_:"output",option:1},"frac-output"],nextState:"3"}},"\\overset{(...)}":{"*":{action_:[{type_:"output",option:2},"overset-output"],nextState:"3"}},"\\underset{(...)}":{"*":{action_:[{type_:"output",option:2},"underset-output"],nextState:"3"}},"\\underbrace{(...)}":{"*":{action_:[{type_:"output",option:2},"underbrace-output"],nextState:"3"}},"\\color{(...)}{(...)}1|\\color(...){(...)}2":{"*":{action_:[{type_:"output",option:2},"color-output"],nextState:"3"}},"\\color{(...)}0":{"*":{action_:[{type_:"output",option:2},"color0-output"]}},"\\ce{(...)}":{"*":{action_:[{type_:"output",option:2},"ce"],nextState:"3"}},"\\,":{"*":{action_:[{type_:"output",option:1},"copy"],nextState:"1"}},"\\x{}{}|\\x{}|\\x":{"0|1|2|3|a|as|b|p|bp|o|c0":{action_:["o=","output"],nextState:"3"},"*":{action_:["output","o=","output"],nextState:"3"}},others:{"*":{action_:[{type_:"output",option:1},"copy"],nextState:"3"}},else2:{a:{action_:"a to o",nextState:"o",revisit:!0},as:{action_:["output","sb=true"],nextState:"1",revisit:!0},"r|rt|rd|rdt|rdq":{action_:["output"],nextState:"0",revisit:!0},"*":{action_:["output","copy"],nextState:"3"}}}),actions:{"o after d":function(t,e){var n;if((t.d||"").match(/^[0-9]+$/)){var o=t.d;t.d=void 0,n=this.output(t),t.b=o}else n=this.output(t);return i.actions["o="](t,e),n},"d= kv":function(t,e){t.d=e,t.dType="kv"},"charge or bond":function(t,e){if(t.beginsWithBond){var n=[];return i.concatArray(n,this.output(t)),i.concatArray(n,i.actions.bond(t,e,"-")),n}t.d=e},"- after o/d":function(t,e,n){var o=i.patterns.match_("orbital",t.o||""),a=i.patterns.match_("one lowercase greek letter $",t.o||""),r=i.patterns.match_("one lowercase latin letter $",t.o||""),c=i.patterns.match_("$one lowercase latin letter$ $",t.o||""),u="-"===e&&(o&&""===o.remainder||a||r||c);!u||t.a||t.b||t.p||t.d||t.q||o||!r||(t.o="$"+t.o+"$");var p=[];return u?(i.concatArray(p,this.output(t)),p.push({type_:"hyphen"})):(o=i.patterns.match_("digits",t.d||""),n&&o&&""===o.remainder?(i.concatArray(p,i.actions["d="](t,e)),i.concatArray(p,this.output(t))):(i.concatArray(p,this.output(t)),i.concatArray(p,i.actions.bond(t,e,"-")))),p},"a to o":function(t){t.o=t.a,t.a=void 0},"sb=true":function(t){t.sb=!0},"sb=false":function(t){t.sb=!1},"beginsWithBond=true":function(t){t.beginsWithBond=!0},"beginsWithBond=false":function(t){t.beginsWithBond=!1},"parenthesisLevel++":function(t){t.parenthesisLevel++},"parenthesisLevel--":function(t){t.parenthesisLevel--},"state of aggregation":function(t,e){return{type_:"state of aggregation",p1:i.go(e,"o")}},comma:function(t,e){var n=e.replace(/\s*$/,"");return n!==e&&0===t.parenthesisLevel?{type_:"comma enumeration L",p1:n}:{type_:"comma enumeration M",p1:n}},output:function(t,e,n){var o,a,r;t.r?(a="M"===t.rdt?i.go(t.rd,"tex-math"):"T"===t.rdt?[{type_:"text",p1:t.rd||""}]:i.go(t.rd),r="M"===t.rqt?i.go(t.rq,"tex-math"):"T"===t.rqt?[{type_:"text",p1:t.rq||""}]:i.go(t.rq),o={type_:"arrow",r:t.r,rd:a,rq:r}):(o=[],(t.a||t.b||t.p||t.o||t.q||t.d||n)&&(t.sb&&o.push({type_:"entitySkip"}),t.o||t.q||t.d||t.b||t.p||2===n?t.o||t.q||t.d||!t.b&&!t.p?t.o&&"kv"===t.dType&&i.patterns.match_("d-oxidation$",t.d||"")?t.dType="oxidation":t.o&&"kv"===t.dType&&!t.q&&(t.dType=void 0):(t.o=t.a,t.d=t.b,t.q=t.p,t.a=t.b=t.p=void 0):(t.o=t.a,t.a=void 0),o.push({type_:"chemfive",a:i.go(t.a,"a"),b:i.go(t.b,"bd"),p:i.go(t.p,"pq"),o:i.go(t.o,"o"),q:i.go(t.q,"pq"),d:i.go(t.d,"oxidation"===t.dType?"oxidation":"bd"),dType:t.dType})));for(var c in t)"parenthesisLevel"!==c&&"beginsWithBond"!==c&&delete t[c];return o},"oxidation-output":function(t,e){var n=["{"];return i.concatArray(n,i.go(e,"oxidation")),n.push("}"),n},"frac-output":function(t,e){return{type_:"frac-ce",p1:i.go(e[0]),p2:i.go(e[1])}},"overset-output":function(t,e){return{type_:"overset",p1:i.go(e[0]),p2:i.go(e[1])}},"underset-output":function(t,e){return{type_:"underset",p1:i.go(e[0]),p2:i.go(e[1])}},"underbrace-output":function(t,e){return{type_:"underbrace",p1:i.go(e[0]),p2:i.go(e[1])}},"color-output":function(t,e){return{type_:"color",color1:e[0],color2:i.go(e[1])}},"r=":function(t,e){t.r=e},"rdt=":function(t,e){t.rdt=e},"rd=":function(t,e){t.rd=e},"rqt=":function(t,e){t.rqt=e},"rq=":function(t,e){t.rq=e},operator:function(t,e,n){return{type_:"operator",kind_:n||e}}}},a:{transitions:i.createTransitions({empty:{"*":{}},"1/2$":{0:{action_:"1/2"}},else:{0:{nextState:"1",revisit:!0}},"$(...)$":{"*":{action_:"tex-math tight",nextState:"1"}},",":{"*":{action_:{type_:"insert",option:"commaDecimal"}}},else2:{"*":{action_:"copy"}}}),actions:{}},o:{transitions:i.createTransitions({empty:{"*":{}},"1/2$":{0:{action_:"1/2"}},else:{0:{nextState:"1",revisit:!0}},letters:{"*":{action_:"rm"}},"\\ca":{"*":{action_:{type_:"insert",option:"circa"}}},"\\x{}{}|\\x{}|\\x":{"*":{action_:"copy"}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"{(...)}":{"*":{action_:"{text}"}},else2:{"*":{action_:"copy"}}}),actions:{}},text:{transitions:i.createTransitions({empty:{"*":{action_:"output"}},"{...}":{"*":{action_:"text="}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"\\greek":{"*":{action_:["output","rm"]}},"\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:["output","copy"]}},else:{"*":{action_:"text="}}}),actions:{output:function(t){if(t.text_){var e={type_:"text",p1:t.text_};for(var n in t)delete t[n];return e}}}},pq:{transitions:i.createTransitions({empty:{"*":{}},"state of aggregation $":{"*":{action_:"state of aggregation"}},i$:{0:{nextState:"!f",revisit:!0}},"(KV letters),":{0:{action_:"rm",nextState:"0"}},formula$:{0:{nextState:"f",revisit:!0}},"1/2$":{0:{action_:"1/2"}},else:{0:{nextState:"!f",revisit:!0}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"{(...)}":{"*":{action_:"text"}},"a-z":{f:{action_:"tex-math"}},letters:{"*":{action_:"rm"}},"-9.,9":{"*":{action_:"9,9"}},",":{"*":{action_:{type_:"insert+p1",option:"comma enumeration S"}}},"\\color{(...)}{(...)}1|\\color(...){(...)}2":{"*":{action_:"color-output"}},"\\color{(...)}0":{"*":{action_:"color0-output"}},"\\ce{(...)}":{"*":{action_:"ce"}},"\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"copy"}},else2:{"*":{action_:"copy"}}}),actions:{"state of aggregation":function(t,e){return{type_:"state of aggregation subscript",p1:i.go(e,"o")}},"color-output":function(t,e){return{type_:"color",color1:e[0],color2:i.go(e[1],"pq")}}}},bd:{transitions:i.createTransitions({empty:{"*":{}},x$:{0:{nextState:"!f",revisit:!0}},formula$:{0:{nextState:"f",revisit:!0}},else:{0:{nextState:"!f",revisit:!0}},"-9.,9 no missing 0":{"*":{action_:"9,9"}},".":{"*":{action_:{type_:"insert",option:"electron dot"}}},"a-z":{f:{action_:"tex-math"}},x:{"*":{action_:{type_:"insert",option:"KV x"}}},letters:{"*":{action_:"rm"}},"'":{"*":{action_:{type_:"insert",option:"prime"}}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},"{(...)}":{"*":{action_:"text"}},"\\color{(...)}{(...)}1|\\color(...){(...)}2":{"*":{action_:"color-output"}},"\\color{(...)}0":{"*":{action_:"color0-output"}},"\\ce{(...)}":{"*":{action_:"ce"}},"\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"copy"}},else2:{"*":{action_:"copy"}}}),actions:{"color-output":function(t,e){return{type_:"color",color1:e[0],color2:i.go(e[1],"bd")}}}},oxidation:{transitions:i.createTransitions({empty:{"*":{}},"roman numeral":{"*":{action_:"roman-numeral"}},"${(...)}$|$(...)$":{"*":{action_:"tex-math"}},else:{"*":{action_:"copy"}}}),actions:{"roman-numeral":function(t,e){return{type_:"roman numeral",p1:e||""}}}},"tex-math":{transitions:i.createTransitions({empty:{"*":{action_:"output"}},"\\ce{(...)}":{"*":{action_:["output","ce"]}},"{...}|\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"o="}},else:{"*":{action_:"o="}}}),actions:{output:function(t){if(t.o){var e={type_:"tex-math",p1:t.o};for(var n in t)delete t[n];return e}}}},"tex-math tight":{transitions:i.createTransitions({empty:{"*":{action_:"output"}},"\\ce{(...)}":{"*":{action_:["output","ce"]}},"{...}|\\,|\\x{}{}|\\x{}|\\x":{"*":{action_:"o="}},"-|+":{"*":{action_:"tight operator"}},else:{"*":{action_:"o="}}}),actions:{"tight operator":function(t,e){t.o=(t.o||"")+"{"+e+"}"},output:function(t){if(t.o){var e={type_:"tex-math",p1:t.o};for(var n in t)delete t[n];return e}}}},"9,9":{transitions:i.createTransitions({empty:{"*":{}},",":{"*":{action_:"comma"}},else:{"*":{action_:"copy"}}}),actions:{comma:function(){return{type_:"commaDecimal"}}}},pu:{transitions:i.createTransitions({empty:{"*":{action_:"output"}},space$:{"*":{action_:["output","space"]}},"{[(|)]}":{"0|a":{action_:"copy"}},"(-)(9)^(-9)":{0:{action_:"number^",nextState:"a"}},"(-)(9.,9)(e)(99)":{0:{action_:"enumber",nextState:"a"}},space:{"0|a":{}},"pm-operator":{"0|a":{action_:{type_:"operator",option:"\\pm"},nextState:"0"}},operator:{"0|a":{action_:"copy",nextState:"0"}},"//":{d:{action_:"o=",nextState:"/"}},"/":{d:{action_:"o=",nextState:"/"}},"{...}|else":{"0|d":{action_:"d=",nextState:"d"},a:{action_:["space","d="],nextState:"d"},"/|q":{action_:"q=",nextState:"q"}}}),actions:{enumber:function(t,e){var n=[];return"+-"===e[0]||"+/-"===e[0]?n.push("\\pm "):e[0]&&n.push(e[0]),e[1]&&(i.concatArray(n,i.go(e[1],"pu-9,9")),e[2]&&(e[2].match(/[,.]/)?i.concatArray(n,i.go(e[2],"pu-9,9")):n.push(e[2])),e[3]=e[4]||e[3],e[3]&&(e[3]=e[3].trim(),"e"===e[3]||"*"===e[3].substr(0,1)?n.push({type_:"cdot"}):n.push({type_:"times"}))),e[3]&&n.push("10^{"+e[5]+"}"),n},"number^":function(t,e){var n=[];return"+-"===e[0]||"+/-"===e[0]?n.push("\\pm "):e[0]&&n.push(e[0]),i.concatArray(n,i.go(e[1],"pu-9,9")),n.push("^{"+e[2]+"}"),n},operator:function(t,e,n){return{type_:"operator",kind_:n||e}},space:function(){return{type_:"pu-space-1"}},output:function(t){var e,n=i.patterns.match_("{(...)}",t.d||"");n&&""===n.remainder&&(t.d=n.match_);var o=i.patterns.match_("{(...)}",t.q||"");if(o&&""===o.remainder&&(t.q=o.match_),t.d&&(t.d=t.d.replace(/\u00B0C|\^oC|\^{o}C/g,"{}^{\\circ}C"),t.d=t.d.replace(/\u00B0F|\^oF|\^{o}F/g,"{}^{\\circ}F")),t.q){t.q=t.q.replace(/\u00B0C|\^oC|\^{o}C/g,"{}^{\\circ}C"),t.q=t.q.replace(/\u00B0F|\^oF|\^{o}F/g,"{}^{\\circ}F");var a={d:i.go(t.d,"pu"),q:i.go(t.q,"pu")};"//"===t.o?e={type_:"pu-frac",p1:a.d,p2:a.q}:(e=a.d,a.d.length>1||a.q.length>1?e.push({type_:" / "}):e.push({type_:"/"}),i.concatArray(e,a.q))}else e=i.go(t.d,"pu-2");for(var r in t)delete t[r];return e}}},"pu-2":{transitions:i.createTransitions({empty:{"*":{action_:"output"}},"*":{"*":{action_:["output","cdot"],nextState:"0"}},"\\x":{"*":{action_:"rm="}},space:{"*":{action_:["output","space"],nextState:"0"}},"^{(...)}|^(-1)":{1:{action_:"^(-1)"}},"-9.,9":{0:{action_:"rm=",nextState:"0"},1:{action_:"^(-1)",nextState:"0"}},"{...}|else":{"*":{action_:"rm=",nextState:"1"}}}),actions:{cdot:function(){return{type_:"tight cdot"}},"^(-1)":function(t,e){t.rm+="^{"+e+"}"},space:function(){return{type_:"pu-space-2"}},output:function(t){var e=[];if(t.rm){var n=i.patterns.match_("{(...)}",t.rm||"");e=n&&""===n.remainder?i.go(n.match_,"pu"):{type_:"rm",p1:t.rm}}for(var o in t)delete t[o];return e}}},"pu-9,9":{transitions:i.createTransitions({empty:{0:{action_:"output-0"},o:{action_:"output-o"}},",":{0:{action_:["output-0","comma"],nextState:"o"}},".":{0:{action_:["output-0","copy"],nextState:"o"}},else:{"*":{action_:"text="}}}),actions:{comma:function(){return{type_:"commaDecimal"}},"output-0":function(t){var e=[];if(t.text_=t.text_||"",t.text_.length>4){var n=t.text_.length%3;0===n&&(n=3);for(var o=t.text_.length-3;o>0;o-=3)e.push(t.text_.substr(o,3)),e.push({type_:"1000 separator"});e.push(t.text_.substr(0,n)),e.reverse()}else e.push(t.text_);for(var a in t)delete t[a];return e},"output-o":function(t){var e=[];if(t.text_=t.text_||"",t.text_.length>4){for(var n=t.text_.length-3,o=0;o<n;o+=3)e.push(t.text_.substr(o,3)),e.push({type_:"1000 separator"});e.push(t.text_.substr(o))}else e.push(t.text_);for(var a in t)delete t[a];return e}}}};var c={go:function(t,e){if(!t)return"";for(var n="",o=!1,a=0;a<t.length;a++){var r=t[a];"string"==typeof r?n+=r:(n+=c._go2(r),"1st-level escape"===r.type_&&(o=!0))}return e||o||!n||(n="{"+n+"}"),n},_goInner:function(t){return t?c.go(t,!0):t},_go2:function(t){var e;switch(t.type_){case"chemfive":e="";var n={a:c._goInner(t.a),b:c._goInner(t.b),p:c._goInner(t.p),o:c._goInner(t.o),q:c._goInner(t.q),d:c._goInner(t.d)};n.a&&(n.a.match(/^[+\-]/)&&(n.a="{"+n.a+"}"),e+=n.a+"\\,"),(n.b||n.p)&&(e+="{\\vphantom{X}}",e+="^{\\hphantom{"+(n.b||"")+"}}_{\\hphantom{"+(n.p||"")+"}}",e+="{\\vphantom{X}}",e+="^{\\smash[t]{\\vphantom{2}}\\mathllap{"+(n.b||"")+"}}",e+="_{\\vphantom{2}\\mathllap{\\smash[t]{"+(n.p||"")+"}}}"),n.o&&(n.o.match(/^[+\-]/)&&(n.o="{"+n.o+"}"),e+=n.o),"kv"===t.dType?((n.d||n.q)&&(e+="{\\vphantom{X}}"),n.d&&(e+="^{"+n.d+"}"),n.q&&(e+="_{\\smash[t]{"+n.q+"}}")):"oxidation"===t.dType?(n.d&&(e+="{\\vphantom{X}}",e+="^{"+n.d+"}"),n.q&&(e+="{\\vphantom{X}}",e+="_{\\smash[t]{"+n.q+"}}")):(n.q&&(e+="{\\vphantom{X}}",e+="_{\\smash[t]{"+n.q+"}}"),n.d&&(e+="{\\vphantom{X}}",e+="^{"+n.d+"}"));break;case"rm":e="\\mathrm{"+t.p1+"}";break;case"text":t.p1.match(/[\^_]/)?(t.p1=t.p1.replace(" ","~").replace("-","\\text{-}"),e="\\mathrm{"+t.p1+"}"):e="\\text{"+t.p1+"}";break;case"roman numeral":e="\\mathrm{"+t.p1+"}";break;case"state of aggregation":e="\\mskip2mu "+c._goInner(t.p1);break;case"state of aggregation subscript":e="\\mskip1mu "+c._goInner(t.p1);break;case"bond":if(!(e=c._getBond(t.kind_)))throw["MhchemErrorBond","mhchem Error. Unknown bond type ("+t.kind_+")"];break;case"frac":var o="\\frac{"+t.p1+"}{"+t.p2+"}";e="\\mathchoice{\\textstyle"+o+"}{"+o+"}{"+o+"}{"+o+"}";break;case"pu-frac":var a="\\frac{"+c._goInner(t.p1)+"}{"+c._goInner(t.p2)+"}";e="\\mathchoice{\\textstyle"+a+"}{"+a+"}{"+a+"}{"+a+"}";break;case"tex-math":e=t.p1+" ";break;case"frac-ce":e="\\frac{"+c._goInner(t.p1)+"}{"+c._goInner(t.p2)+"}";break;case"overset":e="\\overset{"+c._goInner(t.p1)+"}{"+c._goInner(t.p2)+"}";break;case"underset":e="\\underset{"+c._goInner(t.p1)+"}{"+c._goInner(t.p2)+"}";break;case"underbrace":e="\\underbrace{"+c._goInner(t.p1)+"}_{"+c._goInner(t.p2)+"}";break;case"color":e="{\\color{"+t.color1+"}{"+c._goInner(t.color2)+"}}";break;case"color0":e="\\color{"+t.color+"}";break;case"arrow":var r={rd:c._goInner(t.rd),rq:c._goInner(t.rq)},i="\\x"+c._getArrow(t.r);r.rq&&(i+="[{"+r.rq+"}]"),e=i+=r.rd?"{"+r.rd+"}":"{}";break;case"operator":e=c._getOperator(t.kind_);break;case"1st-level escape":e=t.p1+" ";break;case"space":e=" ";break;case"entitySkip":case"pu-space-1":e="~";break;case"pu-space-2":e="\\mkern3mu ";break;case"1000 separator":e="\\mkern2mu ";break;case"commaDecimal":e="{,}";break;case"comma enumeration L":e="{"+t.p1+"}\\mkern6mu ";break;case"comma enumeration M":e="{"+t.p1+"}\\mkern3mu ";break;case"comma enumeration S":e="{"+t.p1+"}\\mkern1mu ";break;case"hyphen":e="\\text{-}";break;case"addition compound":e="\\,{\\cdot}\\,";break;case"electron dot":e="\\mkern1mu \\bullet\\mkern1mu ";break;case"KV x":e="{\\times}";break;case"prime":e="\\prime ";break;case"cdot":e="\\cdot ";break;case"tight cdot":e="\\mkern1mu{\\cdot}\\mkern1mu ";break;case"times":e="\\times ";break;case"circa":e="{\\sim}";break;case"^":e="uparrow";break;case"v":e="downarrow";break;case"ellipsis":e="\\ldots ";break;case"/":e="/";break;case" / ":e="\\,/\\,";break;default:throw["MhchemBugT","mhchem bug T. Please report."]}return e},_getArrow:function(t){switch(t){case"->":case"\u2192":case"\u27f6":return"rightarrow";case"<-":return"leftarrow";case"<->":return"leftrightarrow";case"<--\x3e":return"rightleftarrows";case"<=>":case"\u21cc":return"rightleftharpoons";case"<=>>":return"rightequilibrium";case"<<=>":return"leftequilibrium";default:throw["MhchemBugT","mhchem bug T. Please report."]}},_getBond:function(t){switch(t){case"-":case"1":return"{-}";case"=":case"2":return"{=}";case"#":case"3":return"{\\equiv}";case"~":return"{\\tripledash}";case"~-":return"{\\mathrlap{\\raisebox{-.1em}{$-$}}\\raisebox{.1em}{$\\tripledash$}}";case"~=":case"~--":return"{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$\\tripledash$}}-}";case"-~-":return"{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$-$}}\\tripledash}";case"...":return"{{\\cdot}{\\cdot}{\\cdot}}";case"....":return"{{\\cdot}{\\cdot}{\\cdot}{\\cdot}}";case"->":return"{\\rightarrow}";case"<-":return"{\\leftarrow}";case"<":return"{<}";case">":return"{>}";default:throw["MhchemBugT","mhchem bug T. Please report."]}},_getOperator:function(t){switch(t){case"+":return" {}+{} ";case"-":return" {}-{} ";case"=":return" {}={} ";case"<":return" {}<{} ";case">":return" {}>{} ";case"<<":return" {}\\ll{} ";case">>":return" {}\\gg{} ";case"\\pm":return" {}\\pm{} ";case"\\approx":case"$\\approx$":return" {}\\approx{} ";case"v":case"(v)":return" \\downarrow{} ";case"^":case"(^)":return" \\uparrow{} ";default:throw["MhchemBugT","mhchem bug T. Please report."]}}}}]).default});
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/katex/contrib/mhchem.mjs b/node_modules/mavon-editor/dist/katex/contrib/mhchem.mjs
new file mode 100644
index 0000000..46241b5
--- /dev/null
+++ b/node_modules/mavon-editor/dist/katex/contrib/mhchem.mjs
@@ -0,0 +1,3109 @@
+import katex from '../katex.mjs';
+
+/* eslint-disable */
+
+/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
+
+/* vim: set ts=2 et sw=2 tw=80: */
+
+/*************************************************************
+ *
+ *  KaTeX mhchem.js
+ *
+ *  This file implements a KaTeX version of mhchem version 3.3.0.
+ *  It is adapted from MathJax/extensions/TeX/mhchem.js
+ *  It differs from the MathJax version as follows:
+ *    1. The interface is changed so that it can be called from KaTeX, not MathJax.
+ *    2. \rlap and \llap are replaced with \mathrlap and \mathllap.
+ *    3. Four lines of code are edited in order to use \raisebox instead of \raise.
+ *    4. The reaction arrow code is simplified. All reaction arrows are rendered
+ *       using KaTeX extensible arrows instead of building non-extensible arrows.
+ *    5. \tripledash vertical alignment is slightly adjusted.
+ *
+ *    This code, as other KaTeX code, is released under the MIT license.
+ * 
+ * /*************************************************************
+ *
+ *  MathJax/extensions/TeX/mhchem.js
+ *
+ *  Implements the \ce command for handling chemical formulas
+ *  from the mhchem LaTeX package.
+ *
+ *  ---------------------------------------------------------------------
+ *
+ *  Copyright (c) 2011-2015 The MathJax Consortium
+ *  Copyright (c) 2015-2018 Martin Hensel
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+//
+// Coding Style
+//   - use '' for identifiers that can by minified/uglified
+//   - use "" for strings that need to stay untouched
+// version: "3.3.0" for MathJax and KaTeX
+// Add \ce, \pu, and \tripledash to the KaTeX macros.
+katex.__defineMacro("\\ce", function (context) {
+  return chemParse(context.consumeArgs(1)[0], "ce");
+});
+
+katex.__defineMacro("\\pu", function (context) {
+  return chemParse(context.consumeArgs(1)[0], "pu");
+}); //  Needed for \bond for the ~ forms
+//  Raise by 2.56mu, not 2mu. We're raising a hyphen-minus, U+002D, not 
+//  a mathematical minus, U+2212. So we need that extra 0.56.
+
+
+katex.__defineMacro("\\tripledash", "{\\vphantom{-}\\raisebox{2.56mu}{$\\mkern2mu" + "\\tiny\\text{-}\\mkern1mu\\text{-}\\mkern1mu\\text{-}\\mkern2mu$}}");
+//  This is the main function for handing the \ce and \pu commands.
+//  It takes the argument to \ce or \pu and returns the corresponding TeX string.
+//
+
+var chemParse = function chemParse(tokens, stateMachine) {
+  // Recreate the argument string from KaTeX's array of tokens.
+  var str = "";
+  var expectedLoc = tokens[tokens.length - 1].loc.start;
+
+  for (var i = tokens.length - 1; i >= 0; i--) {
+    if (tokens[i].loc.start > expectedLoc) {
+      // context.consumeArgs has eaten a space.
+      str += " ";
+      expectedLoc = tokens[i].loc.start;
+    }
+
+    str += tokens[i].text;
+    expectedLoc += tokens[i].text.length;
+  }
+
+  var tex = texify.go(mhchemParser.go(str, stateMachine));
+  return tex;
+}; //
+// Core parser for mhchem syntax  (recursive)
+//
+
+/** @type {MhchemParser} */
+
+
+var mhchemParser = {
+  //
+  // Parses mchem \ce syntax
+  //
+  // Call like
+  //   go("H2O");
+  //
+  go: function go(input, stateMachine) {
+    if (!input) {
+      return [];
+    }
+
+    if (stateMachine === undefined) {
+      stateMachine = 'ce';
+    }
+
+    var state = '0'; //
+    // String buffers for parsing:
+    //
+    // buffer.a == amount
+    // buffer.o == element
+    // buffer.b == left-side superscript
+    // buffer.p == left-side subscript
+    // buffer.q == right-side subscript
+    // buffer.d == right-side superscript
+    //
+    // buffer.r == arrow
+    // buffer.rdt == arrow, script above, type
+    // buffer.rd == arrow, script above, content
+    // buffer.rqt == arrow, script below, type
+    // buffer.rq == arrow, script below, content
+    //
+    // buffer.text_
+    // buffer.rm
+    // etc.
+    //
+    // buffer.parenthesisLevel == int, starting at 0
+    // buffer.sb == bool, space before
+    // buffer.beginsWithBond == bool
+    //
+    // These letters are also used as state names.
+    //
+    // Other states:
+    // 0 == begin of main part (arrow/operator unlikely)
+    // 1 == next entity
+    // 2 == next entity (arrow/operator unlikely)
+    // 3 == next atom
+    // c == macro
+    //
+
+    /** @type {Buffer} */
+
+    var buffer = {};
+    buffer['parenthesisLevel'] = 0;
+    input = input.replace(/\n/g, " ");
+    input = input.replace(/[\u2212\u2013\u2014\u2010]/g, "-");
+    input = input.replace(/[\u2026]/g, "..."); //
+    // Looks through mhchemParser.transitions, to execute a matching action
+    // (recursive)
+    //
+
+    var lastInput;
+    var watchdog = 10;
+    /** @type {ParserOutput[]} */
+
+    var output = [];
+
+    while (true) {
+      if (lastInput !== input) {
+        watchdog = 10;
+        lastInput = input;
+      } else {
+        watchdog--;
+      } //
+      // Find actions in transition table
+      //
+
+
+      var machine = mhchemParser.stateMachines[stateMachine];
+      var t = machine.transitions[state] || machine.transitions['*'];
+
+      iterateTransitions: for (var i = 0; i < t.length; i++) {
+        var matches = mhchemParser.patterns.match_(t[i].pattern, input);
+
+        if (matches) {
+          //
+          // Execute actions
+          //
+          var task = t[i].task;
+
+          for (var iA = 0; iA < task.action_.length; iA++) {
+            var o; //
+            // Find and execute action
+            //
+
+            if (machine.actions[task.action_[iA].type_]) {
+              o = machine.actions[task.action_[iA].type_](buffer, matches.match_, task.action_[iA].option);
+            } else if (mhchemParser.actions[task.action_[iA].type_]) {
+              o = mhchemParser.actions[task.action_[iA].type_](buffer, matches.match_, task.action_[iA].option);
+            } else {
+              throw ["MhchemBugA", "mhchem bug A. Please report. (" + task.action_[iA].type_ + ")"]; // Trying to use non-existing action
+            } //
+            // Add output
+            //
+
+
+            mhchemParser.concatArray(output, o);
+          } //
+          // Set next state,
+          // Shorten input,
+          // Continue with next character
+          //   (= apply only one transition per position)
+          //
+
+
+          state = task.nextState || state;
+
+          if (input.length > 0) {
+            if (!task.revisit) {
+              input = matches.remainder;
+            }
+
+            if (!task.toContinue) {
+              break iterateTransitions;
+            }
+          } else {
+            return output;
+          }
+        }
+      } //
+      // Prevent infinite loop
+      //
+
+
+      if (watchdog <= 0) {
+        throw ["MhchemBugU", "mhchem bug U. Please report."]; // Unexpected character
+      }
+    }
+  },
+  concatArray: function concatArray(a, b) {
+    if (b) {
+      if (Array.isArray(b)) {
+        for (var iB = 0; iB < b.length; iB++) {
+          a.push(b[iB]);
+        }
+      } else {
+        a.push(b);
+      }
+    }
+  },
+  patterns: {
+    //
+    // Matching patterns
+    // either regexps or function that return null or {match_:"a", remainder:"bc"}
+    //
+    patterns: {
+      // property names must not look like integers ("2") for correct property traversal order, later on
+      'empty': /^$/,
+      'else': /^./,
+      'else2': /^./,
+      'space': /^\s/,
+      'space A': /^\s(?=[A-Z\\$])/,
+      'space$': /^\s$/,
+      'a-z': /^[a-z]/,
+      'x': /^x/,
+      'x$': /^x$/,
+      'i$': /^i$/,
+      'letters': /^(?:[a-zA-Z\u03B1-\u03C9\u0391-\u03A9?@]|(?:\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))))+/,
+      '\\greek': /^\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))/,
+      'one lowercase latin letter $': /^(?:([a-z])(?:$|[^a-zA-Z]))$/,
+      '$one lowercase latin letter$ $': /^\$(?:([a-z])(?:$|[^a-zA-Z]))\$$/,
+      'one lowercase greek letter $': /^(?:\$?[\u03B1-\u03C9]\$?|\$?\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\s*\$?)(?:\s+|\{\}|(?![a-zA-Z]))$/,
+      'digits': /^[0-9]+/,
+      '-9.,9': /^[+\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))/,
+      '-9.,9 no missing 0': /^[+\-]?[0-9]+(?:[.,][0-9]+)?/,
+      '(-)(9.,9)(e)(99)': function e99(input) {
+        var m = input.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))?(\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))\))?(?:([eE]|\s*(\*|x|\\times|\u00D7)\s*10\^)([+\-]?[0-9]+|\{[+\-]?[0-9]+\}))?/);
+
+        if (m && m[0]) {
+          return {
+            match_: m.splice(1),
+            remainder: input.substr(m[0].length)
+          };
+        }
+
+        return null;
+      },
+      '(-)(9)^(-9)': function _(input) {
+        var m = input.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+)?)\^([+\-]?[0-9]+|\{[+\-]?[0-9]+\})/);
+
+        if (m && m[0]) {
+          return {
+            match_: m.splice(1),
+            remainder: input.substr(m[0].length)
+          };
+        }
+
+        return null;
+      },
+      'state of aggregation $': function stateOfAggregation$(input) {
+        // ... or crystal system
+        var a = mhchemParser.patterns.findObserveGroups(input, "", /^\([a-z]{1,3}(?=[\),])/, ")", ""); // (aq), (aq,$\infty$), (aq, sat)
+
+        if (a && a.remainder.match(/^($|[\s,;\)\]\}])/)) {
+          return a;
+        } //  AND end of 'phrase'
+
+
+        var m = input.match(/^(?:\((?:\\ca\s?)?\$[amothc]\$\))/); // OR crystal system ($o$) (\ca$c$)
+
+        if (m) {
+          return {
+            match_: m[0],
+            remainder: input.substr(m[0].length)
+          };
+        }
+
+        return null;
+      },
+      '_{(state of aggregation)}$': /^_\{(\([a-z]{1,3}\))\}/,
+      '{[(': /^(?:\\\{|\[|\()/,
+      ')]}': /^(?:\)|\]|\\\})/,
+      ', ': /^[,;]\s*/,
+      ',': /^[,;]/,
+      '.': /^[.]/,
+      '. ': /^([.\u22C5\u00B7\u2022])\s*/,
+      '...': /^\.\.\.(?=$|[^.])/,
+      '* ': /^([*])\s*/,
+      '^{(...)}': function _(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "^{", "", "", "}");
+      },
+      '^($...$)': function $$(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "^", "$", "$", "");
+      },
+      '^a': /^\^([0-9]+|[^\\_])/,
+      '^\\x{}{}': function x(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "^", /^\\[a-zA-Z]+\{/, "}", "", "", "{", "}", "", true);
+      },
+      '^\\x{}': function x(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "^", /^\\[a-zA-Z]+\{/, "}", "");
+      },
+      '^\\x': /^\^(\\[a-zA-Z]+)\s*/,
+      '^(-1)': /^\^(-?\d+)/,
+      '\'': /^'/,
+      '_{(...)}': function _(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "_{", "", "", "}");
+      },
+      '_($...$)': function _$$(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "_", "$", "$", "");
+      },
+      '_9': /^_([+\-]?[0-9]+|[^\\])/,
+      '_\\x{}{}': function _X(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "_", /^\\[a-zA-Z]+\{/, "}", "", "", "{", "}", "", true);
+      },
+      '_\\x{}': function _X(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "_", /^\\[a-zA-Z]+\{/, "}", "");
+      },
+      '_\\x': /^_(\\[a-zA-Z]+)\s*/,
+      '^_': /^(?:\^(?=_)|\_(?=\^)|[\^_]$)/,
+      '{}': /^\{\}/,
+      '{...}': function _(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "", "{", "}", "");
+      },
+      '{(...)}': function _(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "{", "", "", "}");
+      },
+      '$...$': function $$(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "", "$", "$", "");
+      },
+      '${(...)}$': function $$(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "${", "", "", "}$");
+      },
+      '$(...)$': function $$(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "$", "", "", "$");
+      },
+      '=<>': /^[=<>]/,
+      '#': /^[#\u2261]/,
+      '+': /^\+/,
+      '-$': /^-(?=[\s_},;\]/]|$|\([a-z]+\))/,
+      // -space -, -; -] -/ -$ -state-of-aggregation
+      '-9': /^-(?=[0-9])/,
+      '- orbital overlap': /^-(?=(?:[spd]|sp)(?:$|[\s,;\)\]\}]))/,
+      '-': /^-/,
+      'pm-operator': /^(?:\\pm|\$\\pm\$|\+-|\+\/-)/,
+      'operator': /^(?:\+|(?:[\-=<>]|<<|>>|\\approx|\$\\approx\$)(?=\s|$|-?[0-9]))/,
+      'arrowUpDown': /^(?:v|\(v\)|\^|\(\^\))(?=$|[\s,;\)\]\}])/,
+      '\\bond{(...)}': function bond(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "\\bond{", "", "", "}");
+      },
+      '->': /^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\u2192\u27F6\u21CC])/,
+      'CMT': /^[CMT](?=\[)/,
+      '[(...)]': function _(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "[", "", "", "]");
+      },
+      '1st-level escape': /^(&|\\\\|\\hline)\s*/,
+      '\\,': /^(?:\\[,\ ;:])/,
+      // \\x - but output no space before
+      '\\x{}{}': function x(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "", /^\\[a-zA-Z]+\{/, "}", "", "", "{", "}", "", true);
+      },
+      '\\x{}': function x(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "", /^\\[a-zA-Z]+\{/, "}", "");
+      },
+      '\\ca': /^\\ca(?:\s+|(?![a-zA-Z]))/,
+      '\\x': /^(?:\\[a-zA-Z]+\s*|\\[_&{}%])/,
+      'orbital': /^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/,
+      // only those with numbers in front, because the others will be formatted correctly anyway
+      'others': /^[\/~|]/,
+      '\\frac{(...)}': function frac(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "\\frac{", "", "", "}", "{", "", "", "}");
+      },
+      '\\overset{(...)}': function overset(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "\\overset{", "", "", "}", "{", "", "", "}");
+      },
+      '\\underset{(...)}': function underset(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "\\underset{", "", "", "}", "{", "", "", "}");
+      },
+      '\\underbrace{(...)}': function underbrace(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "\\underbrace{", "", "", "}_", "{", "", "", "}");
+      },
+      '\\color{(...)}0': function color0(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "\\color{", "", "", "}");
+      },
+      '\\color{(...)}{(...)}1': function color1(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "\\color{", "", "", "}", "{", "", "", "}");
+      },
+      '\\color(...){(...)}2': function color2(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "\\color", "\\", "", /^(?=\{)/, "{", "", "", "}");
+      },
+      '\\ce{(...)}': function ce(input) {
+        return mhchemParser.patterns.findObserveGroups(input, "\\ce{", "", "", "}");
+      },
+      'oxidation$': /^(?:[+-][IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/,
+      'd-oxidation$': /^(?:[+-]?\s?[IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/,
+      // 0 could be oxidation or charge
+      'roman numeral': /^[IVX]+/,
+      '1/2$': /^[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+(?:\$[a-z]\$|[a-z])?$/,
+      'amount': function amount(input) {
+        var match; // e.g. 2, 0.5, 1/2, -2, n/2, +;  $a$ could be added later in parsing
+
+        match = input.match(/^(?:(?:(?:\([+\-]?[0-9]+\/[0-9]+\)|[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+|[+\-]?[0-9]+[.,][0-9]+|[+\-]?\.[0-9]+|[+\-]?[0-9]+)(?:[a-z](?=\s*[A-Z]))?)|[+\-]?[a-z](?=\s*[A-Z])|\+(?!\s))/);
+
+        if (match) {
+          return {
+            match_: match[0],
+            remainder: input.substr(match[0].length)
+          };
+        }
+
+        var a = mhchemParser.patterns.findObserveGroups(input, "", "$", "$", "");
+
+        if (a) {
+          // e.g. $2n-1$, $-$
+          match = a.match_.match(/^\$(?:\(?[+\-]?(?:[0-9]*[a-z]?[+\-])?[0-9]*[a-z](?:[+\-][0-9]*[a-z]?)?\)?|\+|-)\$$/);
+
+          if (match) {
+            return {
+              match_: match[0],
+              remainder: input.substr(match[0].length)
+            };
+          }
+        }
+
+        return null;
+      },
+      'amount2': function amount2(input) {
+        return this['amount'](input);
+      },
+      '(KV letters),': /^(?:[A-Z][a-z]{0,2}|i)(?=,)/,
+      'formula$': function formula$(input) {
+        if (input.match(/^\([a-z]+\)$/)) {
+          return null;
+        } // state of aggregation = no formula
+
+
+        var match = input.match(/^(?:[a-z]|(?:[0-9\ \+\-\,\.\(\)]+[a-z])+[0-9\ \+\-\,\.\(\)]*|(?:[a-z][0-9\ \+\-\,\.\(\)]+)+[a-z]?)$/);
+
+        if (match) {
+          return {
+            match_: match[0],
+            remainder: input.substr(match[0].length)
+          };
+        }
+
+        return null;
+      },
+      'uprightEntities': /^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/,
+      '/': /^\s*(\/)\s*/,
+      '//': /^\s*(\/\/)\s*/,
+      '*': /^\s*[*.]\s*/
+    },
+    findObserveGroups: function findObserveGroups(input, begExcl, begIncl, endIncl, endExcl, beg2Excl, beg2Incl, end2Incl, end2Excl, combine) {
+      /** @type {{(input: string, pattern: string | RegExp): string | string[] | null;}} */
+      var _match = function _match(input, pattern) {
+        if (typeof pattern === "string") {
+          if (input.indexOf(pattern) !== 0) {
+            return null;
+          }
+
+          return pattern;
+        } else {
+          var match = input.match(pattern);
+
+          if (!match) {
+            return null;
+          }
+
+          return match[0];
+        }
+      };
+      /** @type {{(input: string, i: number, endChars: string | RegExp): {endMatchBegin: number, endMatchEnd: number} | null;}} */
+
+
+      var _findObserveGroups = function _findObserveGroups(input, i, endChars) {
+        var braces = 0;
+
+        while (i < input.length) {
+          var a = input.charAt(i);
+
+          var match = _match(input.substr(i), endChars);
+
+          if (match !== null && braces === 0) {
+            return {
+              endMatchBegin: i,
+              endMatchEnd: i + match.length
+            };
+          } else if (a === "{") {
+            braces++;
+          } else if (a === "}") {
+            if (braces === 0) {
+              throw ["ExtraCloseMissingOpen", "Extra close brace or missing open brace"];
+            } else {
+              braces--;
+            }
+          }
+
+          i++;
+        }
+
+        if (braces > 0) {
+          return null;
+        }
+
+        return null;
+      };
+
+      var match = _match(input, begExcl);
+
+      if (match === null) {
+        return null;
+      }
+
+      input = input.substr(match.length);
+      match = _match(input, begIncl);
+
+      if (match === null) {
+        return null;
+      }
+
+      var e = _findObserveGroups(input, match.length, endIncl || endExcl);
+
+      if (e === null) {
+        return null;
+      }
+
+      var match1 = input.substring(0, endIncl ? e.endMatchEnd : e.endMatchBegin);
+
+      if (!(beg2Excl || beg2Incl)) {
+        return {
+          match_: match1,
+          remainder: input.substr(e.endMatchEnd)
+        };
+      } else {
+        var group2 = this.findObserveGroups(input.substr(e.endMatchEnd), beg2Excl, beg2Incl, end2Incl, end2Excl);
+
+        if (group2 === null) {
+          return null;
+        }
+        /** @type {string[]} */
+
+
+        var matchRet = [match1, group2.match_];
+        return {
+          match_: combine ? matchRet.join("") : matchRet,
+          remainder: group2.remainder
+        };
+      }
+    },
+    //
+    // Matching function
+    // e.g. match("a", input) will look for the regexp called "a" and see if it matches
+    // returns null or {match_:"a", remainder:"bc"}
+    //
+    match_: function match_(m, input) {
+      var pattern = mhchemParser.patterns.patterns[m];
+
+      if (pattern === undefined) {
+        throw ["MhchemBugP", "mhchem bug P. Please report. (" + m + ")"]; // Trying to use non-existing pattern
+      } else if (typeof pattern === "function") {
+        return mhchemParser.patterns.patterns[m](input); // cannot use cached var pattern here, because some pattern functions need this===mhchemParser
+      } else {
+        // RegExp
+        var match = input.match(pattern);
+
+        if (match) {
+          var mm;
+
+          if (match[2]) {
+            mm = [match[1], match[2]];
+          } else if (match[1]) {
+            mm = match[1];
+          } else {
+            mm = match[0];
+          }
+
+          return {
+            match_: mm,
+            remainder: input.substr(match[0].length)
+          };
+        }
+
+        return null;
+      }
+    }
+  },
+  //
+  // Generic state machine actions
+  //
+  actions: {
+    'a=': function a(buffer, m) {
+      buffer.a = (buffer.a || "") + m;
+    },
+    'b=': function b(buffer, m) {
+      buffer.b = (buffer.b || "") + m;
+    },
+    'p=': function p(buffer, m) {
+      buffer.p = (buffer.p || "") + m;
+    },
+    'o=': function o(buffer, m) {
+      buffer.o = (buffer.o || "") + m;
+    },
+    'q=': function q(buffer, m) {
+      buffer.q = (buffer.q || "") + m;
+    },
+    'd=': function d(buffer, m) {
+      buffer.d = (buffer.d || "") + m;
+    },
+    'rm=': function rm(buffer, m) {
+      buffer.rm = (buffer.rm || "") + m;
+    },
+    'text=': function text(buffer, m) {
+      buffer.text_ = (buffer.text_ || "") + m;
+    },
+    'insert': function insert(buffer, m, a) {
+      return {
+        type_: a
+      };
+    },
+    'insert+p1': function insertP1(buffer, m, a) {
+      return {
+        type_: a,
+        p1: m
+      };
+    },
+    'insert+p1+p2': function insertP1P2(buffer, m, a) {
+      return {
+        type_: a,
+        p1: m[0],
+        p2: m[1]
+      };
+    },
+    'copy': function copy(buffer, m) {
+      return m;
+    },
+    'rm': function rm(buffer, m) {
+      return {
+        type_: 'rm',
+        p1: m || ""
+      };
+    },
+    'text': function text(buffer, m) {
+      return mhchemParser.go(m, 'text');
+    },
+    '{text}': function text(buffer, m) {
+      var ret = ["{"];
+      mhchemParser.concatArray(ret, mhchemParser.go(m, 'text'));
+      ret.push("}");
+      return ret;
+    },
+    'tex-math': function texMath(buffer, m) {
+      return mhchemParser.go(m, 'tex-math');
+    },
+    'tex-math tight': function texMathTight(buffer, m) {
+      return mhchemParser.go(m, 'tex-math tight');
+    },
+    'bond': function bond(buffer, m, k) {
+      return {
+        type_: 'bond',
+        kind_: k || m
+      };
+    },
+    'color0-output': function color0Output(buffer, m) {
+      return {
+        type_: 'color0',
+        color: m[0]
+      };
+    },
+    'ce': function ce(buffer, m) {
+      return mhchemParser.go(m);
+    },
+    '1/2': function _(buffer, m) {
+      /** @type {ParserOutput[]} */
+      var ret = [];
+
+      if (m.match(/^[+\-]/)) {
+        ret.push(m.substr(0, 1));
+        m = m.substr(1);
+      }
+
+      var n = m.match(/^([0-9]+|\$[a-z]\$|[a-z])\/([0-9]+)(\$[a-z]\$|[a-z])?$/);
+      n[1] = n[1].replace(/\$/g, "");
+      ret.push({
+        type_: 'frac',
+        p1: n[1],
+        p2: n[2]
+      });
+
+      if (n[3]) {
+        n[3] = n[3].replace(/\$/g, "");
+        ret.push({
+          type_: 'tex-math',
+          p1: n[3]
+        });
+      }
+
+      return ret;
+    },
+    '9,9': function _(buffer, m) {
+      return mhchemParser.go(m, '9,9');
+    }
+  },
+  //
+  // createTransitions
+  // convert  { 'letter': { 'state': { action_: 'output' } } }  to  { 'state' => [ { pattern: 'letter', task: { action_: [{type_: 'output'}] } } ] }
+  // with expansion of 'a|b' to 'a' and 'b' (at 2 places)
+  //
+  createTransitions: function createTransitions(o) {
+    var pattern, state;
+    /** @type {string[]} */
+
+    var stateArray;
+    var i; //
+    // 1. Collect all states
+    //
+
+    /** @type {Transitions} */
+
+    var transitions = {};
+
+    for (pattern in o) {
+      for (state in o[pattern]) {
+        stateArray = state.split("|");
+        o[pattern][state].stateArray = stateArray;
+
+        for (i = 0; i < stateArray.length; i++) {
+          transitions[stateArray[i]] = [];
+        }
+      }
+    } //
+    // 2. Fill states
+    //
+
+
+    for (pattern in o) {
+      for (state in o[pattern]) {
+        stateArray = o[pattern][state].stateArray || [];
+
+        for (i = 0; i < stateArray.length; i++) {
+          //
+          // 2a. Normalize actions into array:  'text=' ==> [{type_:'text='}]
+          // (Note to myself: Resolving the function here would be problematic. It would need .bind (for *this*) and currying (for *option*).)
+          //
+
+          /** @type {any} */
+          var p = o[pattern][state];
+
+          if (p.action_) {
+            p.action_ = [].concat(p.action_);
+
+            for (var k = 0; k < p.action_.length; k++) {
+              if (typeof p.action_[k] === "string") {
+                p.action_[k] = {
+                  type_: p.action_[k]
+                };
+              }
+            }
+          } else {
+            p.action_ = [];
+          } //
+          // 2.b Multi-insert
+          //
+
+
+          var patternArray = pattern.split("|");
+
+          for (var j = 0; j < patternArray.length; j++) {
+            if (stateArray[i] === '*') {
+              // insert into all
+              for (var t in transitions) {
+                transitions[t].push({
+                  pattern: patternArray[j],
+                  task: p
+                });
+              }
+            } else {
+              transitions[stateArray[i]].push({
+                pattern: patternArray[j],
+                task: p
+              });
+            }
+          }
+        }
+      }
+    }
+
+    return transitions;
+  },
+  stateMachines: {}
+}; //
+// Definition of state machines
+//
+
+mhchemParser.stateMachines = {
+  //
+  // \ce state machines
+  //
+  //#region ce
+  'ce': {
+    // main parser
+    transitions: mhchemParser.createTransitions({
+      'empty': {
+        '*': {
+          action_: 'output'
+        }
+      },
+      'else': {
+        '0|1|2': {
+          action_: 'beginsWithBond=false',
+          revisit: true,
+          toContinue: true
+        }
+      },
+      'oxidation$': {
+        '0': {
+          action_: 'oxidation-output'
+        }
+      },
+      'CMT': {
+        'r': {
+          action_: 'rdt=',
+          nextState: 'rt'
+        },
+        'rd': {
+          action_: 'rqt=',
+          nextState: 'rdt'
+        }
+      },
+      'arrowUpDown': {
+        '0|1|2|as': {
+          action_: ['sb=false', 'output', 'operator'],
+          nextState: '1'
+        }
+      },
+      'uprightEntities': {
+        '0|1|2': {
+          action_: ['o=', 'output'],
+          nextState: '1'
+        }
+      },
+      'orbital': {
+        '0|1|2|3': {
+          action_: 'o=',
+          nextState: 'o'
+        }
+      },
+      '->': {
+        '0|1|2|3': {
+          action_: 'r=',
+          nextState: 'r'
+        },
+        'a|as': {
+          action_: ['output', 'r='],
+          nextState: 'r'
+        },
+        '*': {
+          action_: ['output', 'r='],
+          nextState: 'r'
+        }
+      },
+      '+': {
+        'o': {
+          action_: 'd= kv',
+          nextState: 'd'
+        },
+        'd|D': {
+          action_: 'd=',
+          nextState: 'd'
+        },
+        'q': {
+          action_: 'd=',
+          nextState: 'qd'
+        },
+        'qd|qD': {
+          action_: 'd=',
+          nextState: 'qd'
+        },
+        'dq': {
+          action_: ['output', 'd='],
+          nextState: 'd'
+        },
+        '3': {
+          action_: ['sb=false', 'output', 'operator'],
+          nextState: '0'
+        }
+      },
+      'amount': {
+        '0|2': {
+          action_: 'a=',
+          nextState: 'a'
+        }
+      },
+      'pm-operator': {
+        '0|1|2|a|as': {
+          action_: ['sb=false', 'output', {
+            type_: 'operator',
+            option: '\\pm'
+          }],
+          nextState: '0'
+        }
+      },
+      'operator': {
+        '0|1|2|a|as': {
+          action_: ['sb=false', 'output', 'operator'],
+          nextState: '0'
+        }
+      },
+      '-$': {
+        'o|q': {
+          action_: ['charge or bond', 'output'],
+          nextState: 'qd'
+        },
+        'd': {
+          action_: 'd=',
+          nextState: 'd'
+        },
+        'D': {
+          action_: ['output', {
+            type_: 'bond',
+            option: "-"
+          }],
+          nextState: '3'
+        },
+        'q': {
+          action_: 'd=',
+          nextState: 'qd'
+        },
+        'qd': {
+          action_: 'd=',
+          nextState: 'qd'
+        },
+        'qD|dq': {
+          action_: ['output', {
+            type_: 'bond',
+            option: "-"
+          }],
+          nextState: '3'
+        }
+      },
+      '-9': {
+        '3|o': {
+          action_: ['output', {
+            type_: 'insert',
+            option: 'hyphen'
+          }],
+          nextState: '3'
+        }
+      },
+      '- orbital overlap': {
+        'o': {
+          action_: ['output', {
+            type_: 'insert',
+            option: 'hyphen'
+          }],
+          nextState: '2'
+        },
+        'd': {
+          action_: ['output', {
+            type_: 'insert',
+            option: 'hyphen'
+          }],
+          nextState: '2'
+        }
+      },
+      '-': {
+        '0|1|2': {
+          action_: [{
+            type_: 'output',
+            option: 1
+          }, 'beginsWithBond=true', {
+            type_: 'bond',
+            option: "-"
+          }],
+          nextState: '3'
+        },
+        '3': {
+          action_: {
+            type_: 'bond',
+            option: "-"
+          }
+        },
+        'a': {
+          action_: ['output', {
+            type_: 'insert',
+            option: 'hyphen'
+          }],
+          nextState: '2'
+        },
+        'as': {
+          action_: [{
+            type_: 'output',
+            option: 2
+          }, {
+            type_: 'bond',
+            option: "-"
+          }],
+          nextState: '3'
+        },
+        'b': {
+          action_: 'b='
+        },
+        'o': {
+          action_: {
+            type_: '- after o/d',
+            option: false
+          },
+          nextState: '2'
+        },
+        'q': {
+          action_: {
+            type_: '- after o/d',
+            option: false
+          },
+          nextState: '2'
+        },
+        'd|qd|dq': {
+          action_: {
+            type_: '- after o/d',
+            option: true
+          },
+          nextState: '2'
+        },
+        'D|qD|p': {
+          action_: ['output', {
+            type_: 'bond',
+            option: "-"
+          }],
+          nextState: '3'
+        }
+      },
+      'amount2': {
+        '1|3': {
+          action_: 'a=',
+          nextState: 'a'
+        }
+      },
+      'letters': {
+        '0|1|2|3|a|as|b|p|bp|o': {
+          action_: 'o=',
+          nextState: 'o'
+        },
+        'q|dq': {
+          action_: ['output', 'o='],
+          nextState: 'o'
+        },
+        'd|D|qd|qD': {
+          action_: 'o after d',
+          nextState: 'o'
+        }
+      },
+      'digits': {
+        'o': {
+          action_: 'q=',
+          nextState: 'q'
+        },
+        'd|D': {
+          action_: 'q=',
+          nextState: 'dq'
+        },
+        'q': {
+          action_: ['output', 'o='],
+          nextState: 'o'
+        },
+        'a': {
+          action_: 'o=',
+          nextState: 'o'
+        }
+      },
+      'space A': {
+        'b|p|bp': {}
+      },
+      'space': {
+        'a': {
+          nextState: 'as'
+        },
+        '0': {
+          action_: 'sb=false'
+        },
+        '1|2': {
+          action_: 'sb=true'
+        },
+        'r|rt|rd|rdt|rdq': {
+          action_: 'output',
+          nextState: '0'
+        },
+        '*': {
+          action_: ['output', 'sb=true'],
+          nextState: '1'
+        }
+      },
+      '1st-level escape': {
+        '1|2': {
+          action_: ['output', {
+            type_: 'insert+p1',
+            option: '1st-level escape'
+          }]
+        },
+        '*': {
+          action_: ['output', {
+            type_: 'insert+p1',
+            option: '1st-level escape'
+          }],
+          nextState: '0'
+        }
+      },
+      '[(...)]': {
+        'r|rt': {
+          action_: 'rd=',
+          nextState: 'rd'
+        },
+        'rd|rdt': {
+          action_: 'rq=',
+          nextState: 'rdq'
+        }
+      },
+      '...': {
+        'o|d|D|dq|qd|qD': {
+          action_: ['output', {
+            type_: 'bond',
+            option: "..."
+          }],
+          nextState: '3'
+        },
+        '*': {
+          action_: [{
+            type_: 'output',
+            option: 1
+          }, {
+            type_: 'insert',
+            option: 'ellipsis'
+          }],
+          nextState: '1'
+        }
+      },
+      '. |* ': {
+        '*': {
+          action_: ['output', {
+            type_: 'insert',
+            option: 'addition compound'
+          }],
+          nextState: '1'
+        }
+      },
+      'state of aggregation $': {
+        '*': {
+          action_: ['output', 'state of aggregation'],
+          nextState: '1'
+        }
+      },
+      '{[(': {
+        'a|as|o': {
+          action_: ['o=', 'output', 'parenthesisLevel++'],
+          nextState: '2'
+        },
+        '0|1|2|3': {
+          action_: ['o=', 'output', 'parenthesisLevel++'],
+          nextState: '2'
+        },
+        '*': {
+          action_: ['output', 'o=', 'output', 'parenthesisLevel++'],
+          nextState: '2'
+        }
+      },
+      ')]}': {
+        '0|1|2|3|b|p|bp|o': {
+          action_: ['o=', 'parenthesisLevel--'],
+          nextState: 'o'
+        },
+        'a|as|d|D|q|qd|qD|dq': {
+          action_: ['output', 'o=', 'parenthesisLevel--'],
+          nextState: 'o'
+        }
+      },
+      ', ': {
+        '*': {
+          action_: ['output', 'comma'],
+          nextState: '0'
+        }
+      },
+      '^_': {
+        // ^ and _ without a sensible argument
+        '*': {}
+      },
+      '^{(...)}|^($...$)': {
+        '0|1|2|as': {
+          action_: 'b=',
+          nextState: 'b'
+        },
+        'p': {
+          action_: 'b=',
+          nextState: 'bp'
+        },
+        '3|o': {
+          action_: 'd= kv',
+          nextState: 'D'
+        },
+        'q': {
+          action_: 'd=',
+          nextState: 'qD'
+        },
+        'd|D|qd|qD|dq': {
+          action_: ['output', 'd='],
+          nextState: 'D'
+        }
+      },
+      '^a|^\\x{}{}|^\\x{}|^\\x|\'': {
+        '0|1|2|as': {
+          action_: 'b=',
+          nextState: 'b'
+        },
+        'p': {
+          action_: 'b=',
+          nextState: 'bp'
+        },
+        '3|o': {
+          action_: 'd= kv',
+          nextState: 'd'
+        },
+        'q': {
+          action_: 'd=',
+          nextState: 'qd'
+        },
+        'd|qd|D|qD': {
+          action_: 'd='
+        },
+        'dq': {
+          action_: ['output', 'd='],
+          nextState: 'd'
+        }
+      },
+      '_{(state of aggregation)}$': {
+        'd|D|q|qd|qD|dq': {
+          action_: ['output', 'q='],
+          nextState: 'q'
+        }
+      },
+      '_{(...)}|_($...$)|_9|_\\x{}{}|_\\x{}|_\\x': {
+        '0|1|2|as': {
+          action_: 'p=',
+          nextState: 'p'
+        },
+        'b': {
+          action_: 'p=',
+          nextState: 'bp'
+        },
+        '3|o': {
+          action_: 'q=',
+          nextState: 'q'
+        },
+        'd|D': {
+          action_: 'q=',
+          nextState: 'dq'
+        },
+        'q|qd|qD|dq': {
+          action_: ['output', 'q='],
+          nextState: 'q'
+        }
+      },
+      '=<>': {
+        '0|1|2|3|a|as|o|q|d|D|qd|qD|dq': {
+          action_: [{
+            type_: 'output',
+            option: 2
+          }, 'bond'],
+          nextState: '3'
+        }
+      },
+      '#': {
+        '0|1|2|3|a|as|o': {
+          action_: [{
+            type_: 'output',
+            option: 2
+          }, {
+            type_: 'bond',
+            option: "#"
+          }],
+          nextState: '3'
+        }
+      },
+      '{}': {
+        '*': {
+          action_: {
+            type_: 'output',
+            option: 1
+          },
+          nextState: '1'
+        }
+      },
+      '{...}': {
+        '0|1|2|3|a|as|b|p|bp': {
+          action_: 'o=',
+          nextState: 'o'
+        },
+        'o|d|D|q|qd|qD|dq': {
+          action_: ['output', 'o='],
+          nextState: 'o'
+        }
+      },
+      '$...$': {
+        'a': {
+          action_: 'a='
+        },
+        // 2$n$
+        '0|1|2|3|as|b|p|bp|o': {
+          action_: 'o=',
+          nextState: 'o'
+        },
+        // not 'amount'
+        'as|o': {
+          action_: 'o='
+        },
+        'q|d|D|qd|qD|dq': {
+          action_: ['output', 'o='],
+          nextState: 'o'
+        }
+      },
+      '\\bond{(...)}': {
+        '*': {
+          action_: [{
+            type_: 'output',
+            option: 2
+          }, 'bond'],
+          nextState: "3"
+        }
+      },
+      '\\frac{(...)}': {
+        '*': {
+          action_: [{
+            type_: 'output',
+            option: 1
+          }, 'frac-output'],
+          nextState: '3'
+        }
+      },
+      '\\overset{(...)}': {
+        '*': {
+          action_: [{
+            type_: 'output',
+            option: 2
+          }, 'overset-output'],
+          nextState: '3'
+        }
+      },
+      '\\underset{(...)}': {
+        '*': {
+          action_: [{
+            type_: 'output',
+            option: 2
+          }, 'underset-output'],
+          nextState: '3'
+        }
+      },
+      '\\underbrace{(...)}': {
+        '*': {
+          action_: [{
+            type_: 'output',
+            option: 2
+          }, 'underbrace-output'],
+          nextState: '3'
+        }
+      },
+      '\\color{(...)}{(...)}1|\\color(...){(...)}2': {
+        '*': {
+          action_: [{
+            type_: 'output',
+            option: 2
+          }, 'color-output'],
+          nextState: '3'
+        }
+      },
+      '\\color{(...)}0': {
+        '*': {
+          action_: [{
+            type_: 'output',
+            option: 2
+          }, 'color0-output']
+        }
+      },
+      '\\ce{(...)}': {
+        '*': {
+          action_: [{
+            type_: 'output',
+            option: 2
+          }, 'ce'],
+          nextState: '3'
+        }
+      },
+      '\\,': {
+        '*': {
+          action_: [{
+            type_: 'output',
+            option: 1
+          }, 'copy'],
+          nextState: '1'
+        }
+      },
+      '\\x{}{}|\\x{}|\\x': {
+        '0|1|2|3|a|as|b|p|bp|o|c0': {
+          action_: ['o=', 'output'],
+          nextState: '3'
+        },
+        '*': {
+          action_: ['output', 'o=', 'output'],
+          nextState: '3'
+        }
+      },
+      'others': {
+        '*': {
+          action_: [{
+            type_: 'output',
+            option: 1
+          }, 'copy'],
+          nextState: '3'
+        }
+      },
+      'else2': {
+        'a': {
+          action_: 'a to o',
+          nextState: 'o',
+          revisit: true
+        },
+        'as': {
+          action_: ['output', 'sb=true'],
+          nextState: '1',
+          revisit: true
+        },
+        'r|rt|rd|rdt|rdq': {
+          action_: ['output'],
+          nextState: '0',
+          revisit: true
+        },
+        '*': {
+          action_: ['output', 'copy'],
+          nextState: '3'
+        }
+      }
+    }),
+    actions: {
+      'o after d': function oAfterD(buffer, m) {
+        var ret;
+
+        if ((buffer.d || "").match(/^[0-9]+$/)) {
+          var tmp = buffer.d;
+          buffer.d = undefined;
+          ret = this['output'](buffer);
+          buffer.b = tmp;
+        } else {
+          ret = this['output'](buffer);
+        }
+
+        mhchemParser.actions['o='](buffer, m);
+        return ret;
+      },
+      'd= kv': function dKv(buffer, m) {
+        buffer.d = m;
+        buffer.dType = 'kv';
+      },
+      'charge or bond': function chargeOrBond(buffer, m) {
+        if (buffer['beginsWithBond']) {
+          /** @type {ParserOutput[]} */
+          var ret = [];
+          mhchemParser.concatArray(ret, this['output'](buffer));
+          mhchemParser.concatArray(ret, mhchemParser.actions['bond'](buffer, m, "-"));
+          return ret;
+        } else {
+          buffer.d = m;
+        }
+      },
+      '- after o/d': function afterOD(buffer, m, isAfterD) {
+        var c1 = mhchemParser.patterns.match_('orbital', buffer.o || "");
+        var c2 = mhchemParser.patterns.match_('one lowercase greek letter $', buffer.o || "");
+        var c3 = mhchemParser.patterns.match_('one lowercase latin letter $', buffer.o || "");
+        var c4 = mhchemParser.patterns.match_('$one lowercase latin letter$ $', buffer.o || "");
+        var hyphenFollows = m === "-" && (c1 && c1.remainder === "" || c2 || c3 || c4);
+
+        if (hyphenFollows && !buffer.a && !buffer.b && !buffer.p && !buffer.d && !buffer.q && !c1 && c3) {
+          buffer.o = '$' + buffer.o + '$';
+        }
+        /** @type {ParserOutput[]} */
+
+
+        var ret = [];
+
+        if (hyphenFollows) {
+          mhchemParser.concatArray(ret, this['output'](buffer));
+          ret.push({
+            type_: 'hyphen'
+          });
+        } else {
+          c1 = mhchemParser.patterns.match_('digits', buffer.d || "");
+
+          if (isAfterD && c1 && c1.remainder === '') {
+            mhchemParser.concatArray(ret, mhchemParser.actions['d='](buffer, m));
+            mhchemParser.concatArray(ret, this['output'](buffer));
+          } else {
+            mhchemParser.concatArray(ret, this['output'](buffer));
+            mhchemParser.concatArray(ret, mhchemParser.actions['bond'](buffer, m, "-"));
+          }
+        }
+
+        return ret;
+      },
+      'a to o': function aToO(buffer) {
+        buffer.o = buffer.a;
+        buffer.a = undefined;
+      },
+      'sb=true': function sbTrue(buffer) {
+        buffer.sb = true;
+      },
+      'sb=false': function sbFalse(buffer) {
+        buffer.sb = false;
+      },
+      'beginsWithBond=true': function beginsWithBondTrue(buffer) {
+        buffer['beginsWithBond'] = true;
+      },
+      'beginsWithBond=false': function beginsWithBondFalse(buffer) {
+        buffer['beginsWithBond'] = false;
+      },
+      'parenthesisLevel++': function parenthesisLevel(buffer) {
+        buffer['parenthesisLevel']++;
+      },
+      'parenthesisLevel--': function parenthesisLevel(buffer) {
+        buffer['parenthesisLevel']--;
+      },
+      'state of aggregation': function stateOfAggregation(buffer, m) {
+        return {
+          type_: 'state of aggregation',
+          p1: mhchemParser.go(m, 'o')
+        };
+      },
+      'comma': function comma(buffer, m) {
+        var a = m.replace(/\s*$/, '');
+        var withSpace = a !== m;
+
+        if (withSpace && buffer['parenthesisLevel'] === 0) {
+          return {
+            type_: 'comma enumeration L',
+            p1: a
+          };
+        } else {
+          return {
+            type_: 'comma enumeration M',
+            p1: a
+          };
+        }
+      },
+      'output': function output(buffer, m, entityFollows) {
+        // entityFollows:
+        //   undefined = if we have nothing else to output, also ignore the just read space (buffer.sb)
+        //   1 = an entity follows, never omit the space if there was one just read before (can only apply to state 1)
+        //   2 = 1 + the entity can have an amount, so output a\, instead of converting it to o (can only apply to states a|as)
+
+        /** @type {ParserOutput | ParserOutput[]} */
+        var ret;
+
+        if (!buffer.r) {
+          ret = [];
+
+          if (!buffer.a && !buffer.b && !buffer.p && !buffer.o && !buffer.q && !buffer.d && !entityFollows) ; else {
+            if (buffer.sb) {
+              ret.push({
+                type_: 'entitySkip'
+              });
+            }
+
+            if (!buffer.o && !buffer.q && !buffer.d && !buffer.b && !buffer.p && entityFollows !== 2) {
+              buffer.o = buffer.a;
+              buffer.a = undefined;
+            } else if (!buffer.o && !buffer.q && !buffer.d && (buffer.b || buffer.p)) {
+              buffer.o = buffer.a;
+              buffer.d = buffer.b;
+              buffer.q = buffer.p;
+              buffer.a = buffer.b = buffer.p = undefined;
+            } else {
+              if (buffer.o && buffer.dType === 'kv' && mhchemParser.patterns.match_('d-oxidation$', buffer.d || "")) {
+                buffer.dType = 'oxidation';
+              } else if (buffer.o && buffer.dType === 'kv' && !buffer.q) {
+                buffer.dType = undefined;
+              }
+            }
+
+            ret.push({
+              type_: 'chemfive',
+              a: mhchemParser.go(buffer.a, 'a'),
+              b: mhchemParser.go(buffer.b, 'bd'),
+              p: mhchemParser.go(buffer.p, 'pq'),
+              o: mhchemParser.go(buffer.o, 'o'),
+              q: mhchemParser.go(buffer.q, 'pq'),
+              d: mhchemParser.go(buffer.d, buffer.dType === 'oxidation' ? 'oxidation' : 'bd'),
+              dType: buffer.dType
+            });
+          }
+        } else {
+          // r
+
+          /** @type {ParserOutput[]} */
+          var rd;
+
+          if (buffer.rdt === 'M') {
+            rd = mhchemParser.go(buffer.rd, 'tex-math');
+          } else if (buffer.rdt === 'T') {
+            rd = [{
+              type_: 'text',
+              p1: buffer.rd || ""
+            }];
+          } else {
+            rd = mhchemParser.go(buffer.rd);
+          }
+          /** @type {ParserOutput[]} */
+
+
+          var rq;
+
+          if (buffer.rqt === 'M') {
+            rq = mhchemParser.go(buffer.rq, 'tex-math');
+          } else if (buffer.rqt === 'T') {
+            rq = [{
+              type_: 'text',
+              p1: buffer.rq || ""
+            }];
+          } else {
+            rq = mhchemParser.go(buffer.rq);
+          }
+
+          ret = {
+            type_: 'arrow',
+            r: buffer.r,
+            rd: rd,
+            rq: rq
+          };
+        }
+
+        for (var p in buffer) {
+          if (p !== 'parenthesisLevel' && p !== 'beginsWithBond') {
+            delete buffer[p];
+          }
+        }
+
+        return ret;
+      },
+      'oxidation-output': function oxidationOutput(buffer, m) {
+        var ret = ["{"];
+        mhchemParser.concatArray(ret, mhchemParser.go(m, 'oxidation'));
+        ret.push("}");
+        return ret;
+      },
+      'frac-output': function fracOutput(buffer, m) {
+        return {
+          type_: 'frac-ce',
+          p1: mhchemParser.go(m[0]),
+          p2: mhchemParser.go(m[1])
+        };
+      },
+      'overset-output': function oversetOutput(buffer, m) {
+        return {
+          type_: 'overset',
+          p1: mhchemParser.go(m[0]),
+          p2: mhchemParser.go(m[1])
+        };
+      },
+      'underset-output': function undersetOutput(buffer, m) {
+        return {
+          type_: 'underset',
+          p1: mhchemParser.go(m[0]),
+          p2: mhchemParser.go(m[1])
+        };
+      },
+      'underbrace-output': function underbraceOutput(buffer, m) {
+        return {
+          type_: 'underbrace',
+          p1: mhchemParser.go(m[0]),
+          p2: mhchemParser.go(m[1])
+        };
+      },
+      'color-output': function colorOutput(buffer, m) {
+        return {
+          type_: 'color',
+          color1: m[0],
+          color2: mhchemParser.go(m[1])
+        };
+      },
+      'r=': function r(buffer, m) {
+        buffer.r = m;
+      },
+      'rdt=': function rdt(buffer, m) {
+        buffer.rdt = m;
+      },
+      'rd=': function rd(buffer, m) {
+        buffer.rd = m;
+      },
+      'rqt=': function rqt(buffer, m) {
+        buffer.rqt = m;
+      },
+      'rq=': function rq(buffer, m) {
+        buffer.rq = m;
+      },
+      'operator': function operator(buffer, m, p1) {
+        return {
+          type_: 'operator',
+          kind_: p1 || m
+        };
+      }
+    }
+  },
+  'a': {
+    transitions: mhchemParser.createTransitions({
+      'empty': {
+        '*': {}
+      },
+      '1/2$': {
+        '0': {
+          action_: '1/2'
+        }
+      },
+      'else': {
+        '0': {
+          nextState: '1',
+          revisit: true
+        }
+      },
+      '$(...)$': {
+        '*': {
+          action_: 'tex-math tight',
+          nextState: '1'
+        }
+      },
+      ',': {
+        '*': {
+          action_: {
+            type_: 'insert',
+            option: 'commaDecimal'
+          }
+        }
+      },
+      'else2': {
+        '*': {
+          action_: 'copy'
+        }
+      }
+    }),
+    actions: {}
+  },
+  'o': {
+    transitions: mhchemParser.createTransitions({
+      'empty': {
+        '*': {}
+      },
+      '1/2$': {
+        '0': {
+          action_: '1/2'
+        }
+      },
+      'else': {
+        '0': {
+          nextState: '1',
+          revisit: true
+        }
+      },
+      'letters': {
+        '*': {
+          action_: 'rm'
+        }
+      },
+      '\\ca': {
+        '*': {
+          action_: {
+            type_: 'insert',
+            option: 'circa'
+          }
+        }
+      },
+      '\\x{}{}|\\x{}|\\x': {
+        '*': {
+          action_: 'copy'
+        }
+      },
+      '${(...)}$|$(...)$': {
+        '*': {
+          action_: 'tex-math'
+        }
+      },
+      '{(...)}': {
+        '*': {
+          action_: '{text}'
+        }
+      },
+      'else2': {
+        '*': {
+          action_: 'copy'
+        }
+      }
+    }),
+    actions: {}
+  },
+  'text': {
+    transitions: mhchemParser.createTransitions({
+      'empty': {
+        '*': {
+          action_: 'output'
+        }
+      },
+      '{...}': {
+        '*': {
+          action_: 'text='
+        }
+      },
+      '${(...)}$|$(...)$': {
+        '*': {
+          action_: 'tex-math'
+        }
+      },
+      '\\greek': {
+        '*': {
+          action_: ['output', 'rm']
+        }
+      },
+      '\\,|\\x{}{}|\\x{}|\\x': {
+        '*': {
+          action_: ['output', 'copy']
+        }
+      },
+      'else': {
+        '*': {
+          action_: 'text='
+        }
+      }
+    }),
+    actions: {
+      'output': function output(buffer) {
+        if (buffer.text_) {
+          /** @type {ParserOutput} */
+          var ret = {
+            type_: 'text',
+            p1: buffer.text_
+          };
+
+          for (var p in buffer) {
+            delete buffer[p];
+          }
+
+          return ret;
+        }
+      }
+    }
+  },
+  'pq': {
+    transitions: mhchemParser.createTransitions({
+      'empty': {
+        '*': {}
+      },
+      'state of aggregation $': {
+        '*': {
+          action_: 'state of aggregation'
+        }
+      },
+      'i$': {
+        '0': {
+          nextState: '!f',
+          revisit: true
+        }
+      },
+      '(KV letters),': {
+        '0': {
+          action_: 'rm',
+          nextState: '0'
+        }
+      },
+      'formula$': {
+        '0': {
+          nextState: 'f',
+          revisit: true
+        }
+      },
+      '1/2$': {
+        '0': {
+          action_: '1/2'
+        }
+      },
+      'else': {
+        '0': {
+          nextState: '!f',
+          revisit: true
+        }
+      },
+      '${(...)}$|$(...)$': {
+        '*': {
+          action_: 'tex-math'
+        }
+      },
+      '{(...)}': {
+        '*': {
+          action_: 'text'
+        }
+      },
+      'a-z': {
+        'f': {
+          action_: 'tex-math'
+        }
+      },
+      'letters': {
+        '*': {
+          action_: 'rm'
+        }
+      },
+      '-9.,9': {
+        '*': {
+          action_: '9,9'
+        }
+      },
+      ',': {
+        '*': {
+          action_: {
+            type_: 'insert+p1',
+            option: 'comma enumeration S'
+          }
+        }
+      },
+      '\\color{(...)}{(...)}1|\\color(...){(...)}2': {
+        '*': {
+          action_: 'color-output'
+        }
+      },
+      '\\color{(...)}0': {
+        '*': {
+          action_: 'color0-output'
+        }
+      },
+      '\\ce{(...)}': {
+        '*': {
+          action_: 'ce'
+        }
+      },
+      '\\,|\\x{}{}|\\x{}|\\x': {
+        '*': {
+          action_: 'copy'
+        }
+      },
+      'else2': {
+        '*': {
+          action_: 'copy'
+        }
+      }
+    }),
+    actions: {
+      'state of aggregation': function stateOfAggregation(buffer, m) {
+        return {
+          type_: 'state of aggregation subscript',
+          p1: mhchemParser.go(m, 'o')
+        };
+      },
+      'color-output': function colorOutput(buffer, m) {
+        return {
+          type_: 'color',
+          color1: m[0],
+          color2: mhchemParser.go(m[1], 'pq')
+        };
+      }
+    }
+  },
+  'bd': {
+    transitions: mhchemParser.createTransitions({
+      'empty': {
+        '*': {}
+      },
+      'x$': {
+        '0': {
+          nextState: '!f',
+          revisit: true
+        }
+      },
+      'formula$': {
+        '0': {
+          nextState: 'f',
+          revisit: true
+        }
+      },
+      'else': {
+        '0': {
+          nextState: '!f',
+          revisit: true
+        }
+      },
+      '-9.,9 no missing 0': {
+        '*': {
+          action_: '9,9'
+        }
+      },
+      '.': {
+        '*': {
+          action_: {
+            type_: 'insert',
+            option: 'electron dot'
+          }
+        }
+      },
+      'a-z': {
+        'f': {
+          action_: 'tex-math'
+        }
+      },
+      'x': {
+        '*': {
+          action_: {
+            type_: 'insert',
+            option: 'KV x'
+          }
+        }
+      },
+      'letters': {
+        '*': {
+          action_: 'rm'
+        }
+      },
+      '\'': {
+        '*': {
+          action_: {
+            type_: 'insert',
+            option: 'prime'
+          }
+        }
+      },
+      '${(...)}$|$(...)$': {
+        '*': {
+          action_: 'tex-math'
+        }
+      },
+      '{(...)}': {
+        '*': {
+          action_: 'text'
+        }
+      },
+      '\\color{(...)}{(...)}1|\\color(...){(...)}2': {
+        '*': {
+          action_: 'color-output'
+        }
+      },
+      '\\color{(...)}0': {
+        '*': {
+          action_: 'color0-output'
+        }
+      },
+      '\\ce{(...)}': {
+        '*': {
+          action_: 'ce'
+        }
+      },
+      '\\,|\\x{}{}|\\x{}|\\x': {
+        '*': {
+          action_: 'copy'
+        }
+      },
+      'else2': {
+        '*': {
+          action_: 'copy'
+        }
+      }
+    }),
+    actions: {
+      'color-output': function colorOutput(buffer, m) {
+        return {
+          type_: 'color',
+          color1: m[0],
+          color2: mhchemParser.go(m[1], 'bd')
+        };
+      }
+    }
+  },
+  'oxidation': {
+    transitions: mhchemParser.createTransitions({
+      'empty': {
+        '*': {}
+      },
+      'roman numeral': {
+        '*': {
+          action_: 'roman-numeral'
+        }
+      },
+      '${(...)}$|$(...)$': {
+        '*': {
+          action_: 'tex-math'
+        }
+      },
+      'else': {
+        '*': {
+          action_: 'copy'
+        }
+      }
+    }),
+    actions: {
+      'roman-numeral': function romanNumeral(buffer, m) {
+        return {
+          type_: 'roman numeral',
+          p1: m || ""
+        };
+      }
+    }
+  },
+  'tex-math': {
+    transitions: mhchemParser.createTransitions({
+      'empty': {
+        '*': {
+          action_: 'output'
+        }
+      },
+      '\\ce{(...)}': {
+        '*': {
+          action_: ['output', 'ce']
+        }
+      },
+      '{...}|\\,|\\x{}{}|\\x{}|\\x': {
+        '*': {
+          action_: 'o='
+        }
+      },
+      'else': {
+        '*': {
+          action_: 'o='
+        }
+      }
+    }),
+    actions: {
+      'output': function output(buffer) {
+        if (buffer.o) {
+          /** @type {ParserOutput} */
+          var ret = {
+            type_: 'tex-math',
+            p1: buffer.o
+          };
+
+          for (var p in buffer) {
+            delete buffer[p];
+          }
+
+          return ret;
+        }
+      }
+    }
+  },
+  'tex-math tight': {
+    transitions: mhchemParser.createTransitions({
+      'empty': {
+        '*': {
+          action_: 'output'
+        }
+      },
+      '\\ce{(...)}': {
+        '*': {
+          action_: ['output', 'ce']
+        }
+      },
+      '{...}|\\,|\\x{}{}|\\x{}|\\x': {
+        '*': {
+          action_: 'o='
+        }
+      },
+      '-|+': {
+        '*': {
+          action_: 'tight operator'
+        }
+      },
+      'else': {
+        '*': {
+          action_: 'o='
+        }
+      }
+    }),
+    actions: {
+      'tight operator': function tightOperator(buffer, m) {
+        buffer.o = (buffer.o || "") + "{" + m + "}";
+      },
+      'output': function output(buffer) {
+        if (buffer.o) {
+          /** @type {ParserOutput} */
+          var ret = {
+            type_: 'tex-math',
+            p1: buffer.o
+          };
+
+          for (var p in buffer) {
+            delete buffer[p];
+          }
+
+          return ret;
+        }
+      }
+    }
+  },
+  '9,9': {
+    transitions: mhchemParser.createTransitions({
+      'empty': {
+        '*': {}
+      },
+      ',': {
+        '*': {
+          action_: 'comma'
+        }
+      },
+      'else': {
+        '*': {
+          action_: 'copy'
+        }
+      }
+    }),
+    actions: {
+      'comma': function comma() {
+        return {
+          type_: 'commaDecimal'
+        };
+      }
+    }
+  },
+  //#endregion
+  //
+  // \pu state machines
+  //
+  //#region pu
+  'pu': {
+    transitions: mhchemParser.createTransitions({
+      'empty': {
+        '*': {
+          action_: 'output'
+        }
+      },
+      'space$': {
+        '*': {
+          action_: ['output', 'space']
+        }
+      },
+      '{[(|)]}': {
+        '0|a': {
+          action_: 'copy'
+        }
+      },
+      '(-)(9)^(-9)': {
+        '0': {
+          action_: 'number^',
+          nextState: 'a'
+        }
+      },
+      '(-)(9.,9)(e)(99)': {
+        '0': {
+          action_: 'enumber',
+          nextState: 'a'
+        }
+      },
+      'space': {
+        '0|a': {}
+      },
+      'pm-operator': {
+        '0|a': {
+          action_: {
+            type_: 'operator',
+            option: '\\pm'
+          },
+          nextState: '0'
+        }
+      },
+      'operator': {
+        '0|a': {
+          action_: 'copy',
+          nextState: '0'
+        }
+      },
+      '//': {
+        'd': {
+          action_: 'o=',
+          nextState: '/'
+        }
+      },
+      '/': {
+        'd': {
+          action_: 'o=',
+          nextState: '/'
+        }
+      },
+      '{...}|else': {
+        '0|d': {
+          action_: 'd=',
+          nextState: 'd'
+        },
+        'a': {
+          action_: ['space', 'd='],
+          nextState: 'd'
+        },
+        '/|q': {
+          action_: 'q=',
+          nextState: 'q'
+        }
+      }
+    }),
+    actions: {
+      'enumber': function enumber(buffer, m) {
+        /** @type {ParserOutput[]} */
+        var ret = [];
+
+        if (m[0] === "+-" || m[0] === "+/-") {
+          ret.push("\\pm ");
+        } else if (m[0]) {
+          ret.push(m[0]);
+        }
+
+        if (m[1]) {
+          mhchemParser.concatArray(ret, mhchemParser.go(m[1], 'pu-9,9'));
+
+          if (m[2]) {
+            if (m[2].match(/[,.]/)) {
+              mhchemParser.concatArray(ret, mhchemParser.go(m[2], 'pu-9,9'));
+            } else {
+              ret.push(m[2]);
+            }
+          }
+
+          m[3] = m[4] || m[3];
+
+          if (m[3]) {
+            m[3] = m[3].trim();
+
+            if (m[3] === "e" || m[3].substr(0, 1) === "*") {
+              ret.push({
+                type_: 'cdot'
+              });
+            } else {
+              ret.push({
+                type_: 'times'
+              });
+            }
+          }
+        }
+
+        if (m[3]) {
+          ret.push("10^{" + m[5] + "}");
+        }
+
+        return ret;
+      },
+      'number^': function number(buffer, m) {
+        /** @type {ParserOutput[]} */
+        var ret = [];
+
+        if (m[0] === "+-" || m[0] === "+/-") {
+          ret.push("\\pm ");
+        } else if (m[0]) {
+          ret.push(m[0]);
+        }
+
+        mhchemParser.concatArray(ret, mhchemParser.go(m[1], 'pu-9,9'));
+        ret.push("^{" + m[2] + "}");
+        return ret;
+      },
+      'operator': function operator(buffer, m, p1) {
+        return {
+          type_: 'operator',
+          kind_: p1 || m
+        };
+      },
+      'space': function space() {
+        return {
+          type_: 'pu-space-1'
+        };
+      },
+      'output': function output(buffer) {
+        /** @type {ParserOutput | ParserOutput[]} */
+        var ret;
+        var md = mhchemParser.patterns.match_('{(...)}', buffer.d || "");
+
+        if (md && md.remainder === '') {
+          buffer.d = md.match_;
+        }
+
+        var mq = mhchemParser.patterns.match_('{(...)}', buffer.q || "");
+
+        if (mq && mq.remainder === '') {
+          buffer.q = mq.match_;
+        }
+
+        if (buffer.d) {
+          buffer.d = buffer.d.replace(/\u00B0C|\^oC|\^{o}C/g, "{}^{\\circ}C");
+          buffer.d = buffer.d.replace(/\u00B0F|\^oF|\^{o}F/g, "{}^{\\circ}F");
+        }
+
+        if (buffer.q) {
+          // fraction
+          buffer.q = buffer.q.replace(/\u00B0C|\^oC|\^{o}C/g, "{}^{\\circ}C");
+          buffer.q = buffer.q.replace(/\u00B0F|\^oF|\^{o}F/g, "{}^{\\circ}F");
+          var b5 = {
+            d: mhchemParser.go(buffer.d, 'pu'),
+            q: mhchemParser.go(buffer.q, 'pu')
+          };
+
+          if (buffer.o === '//') {
+            ret = {
+              type_: 'pu-frac',
+              p1: b5.d,
+              p2: b5.q
+            };
+          } else {
+            ret = b5.d;
+
+            if (b5.d.length > 1 || b5.q.length > 1) {
+              ret.push({
+                type_: ' / '
+              });
+            } else {
+              ret.push({
+                type_: '/'
+              });
+            }
+
+            mhchemParser.concatArray(ret, b5.q);
+          }
+        } else {
+          // no fraction
+          ret = mhchemParser.go(buffer.d, 'pu-2');
+        }
+
+        for (var p in buffer) {
+          delete buffer[p];
+        }
+
+        return ret;
+      }
+    }
+  },
+  'pu-2': {
+    transitions: mhchemParser.createTransitions({
+      'empty': {
+        '*': {
+          action_: 'output'
+        }
+      },
+      '*': {
+        '*': {
+          action_: ['output', 'cdot'],
+          nextState: '0'
+        }
+      },
+      '\\x': {
+        '*': {
+          action_: 'rm='
+        }
+      },
+      'space': {
+        '*': {
+          action_: ['output', 'space'],
+          nextState: '0'
+        }
+      },
+      '^{(...)}|^(-1)': {
+        '1': {
+          action_: '^(-1)'
+        }
+      },
+      '-9.,9': {
+        '0': {
+          action_: 'rm=',
+          nextState: '0'
+        },
+        '1': {
+          action_: '^(-1)',
+          nextState: '0'
+        }
+      },
+      '{...}|else': {
+        '*': {
+          action_: 'rm=',
+          nextState: '1'
+        }
+      }
+    }),
+    actions: {
+      'cdot': function cdot() {
+        return {
+          type_: 'tight cdot'
+        };
+      },
+      '^(-1)': function _(buffer, m) {
+        buffer.rm += "^{" + m + "}";
+      },
+      'space': function space() {
+        return {
+          type_: 'pu-space-2'
+        };
+      },
+      'output': function output(buffer) {
+        /** @type {ParserOutput | ParserOutput[]} */
+        var ret = [];
+
+        if (buffer.rm) {
+          var mrm = mhchemParser.patterns.match_('{(...)}', buffer.rm || "");
+
+          if (mrm && mrm.remainder === '') {
+            ret = mhchemParser.go(mrm.match_, 'pu');
+          } else {
+            ret = {
+              type_: 'rm',
+              p1: buffer.rm
+            };
+          }
+        }
+
+        for (var p in buffer) {
+          delete buffer[p];
+        }
+
+        return ret;
+      }
+    }
+  },
+  'pu-9,9': {
+    transitions: mhchemParser.createTransitions({
+      'empty': {
+        '0': {
+          action_: 'output-0'
+        },
+        'o': {
+          action_: 'output-o'
+        }
+      },
+      ',': {
+        '0': {
+          action_: ['output-0', 'comma'],
+          nextState: 'o'
+        }
+      },
+      '.': {
+        '0': {
+          action_: ['output-0', 'copy'],
+          nextState: 'o'
+        }
+      },
+      'else': {
+        '*': {
+          action_: 'text='
+        }
+      }
+    }),
+    actions: {
+      'comma': function comma() {
+        return {
+          type_: 'commaDecimal'
+        };
+      },
+      'output-0': function output0(buffer) {
+        /** @type {ParserOutput[]} */
+        var ret = [];
+        buffer.text_ = buffer.text_ || "";
+
+        if (buffer.text_.length > 4) {
+          var a = buffer.text_.length % 3;
+
+          if (a === 0) {
+            a = 3;
+          }
+
+          for (var i = buffer.text_.length - 3; i > 0; i -= 3) {
+            ret.push(buffer.text_.substr(i, 3));
+            ret.push({
+              type_: '1000 separator'
+            });
+          }
+
+          ret.push(buffer.text_.substr(0, a));
+          ret.reverse();
+        } else {
+          ret.push(buffer.text_);
+        }
+
+        for (var p in buffer) {
+          delete buffer[p];
+        }
+
+        return ret;
+      },
+      'output-o': function outputO(buffer) {
+        /** @type {ParserOutput[]} */
+        var ret = [];
+        buffer.text_ = buffer.text_ || "";
+
+        if (buffer.text_.length > 4) {
+          var a = buffer.text_.length - 3;
+
+          for (var i = 0; i < a; i += 3) {
+            ret.push(buffer.text_.substr(i, 3));
+            ret.push({
+              type_: '1000 separator'
+            });
+          }
+
+          ret.push(buffer.text_.substr(i));
+        } else {
+          ret.push(buffer.text_);
+        }
+
+        for (var p in buffer) {
+          delete buffer[p];
+        }
+
+        return ret;
+      }
+    } //#endregion
+
+  }
+}; //
+// texify: Take MhchemParser output and convert it to TeX
+//
+
+/** @type {Texify} */
+
+var texify = {
+  go: function go(input, isInner) {
+    // (recursive, max 4 levels)
+    if (!input) {
+      return "";
+    }
+
+    var res = "";
+    var cee = false;
+
+    for (var i = 0; i < input.length; i++) {
+      var inputi = input[i];
+
+      if (typeof inputi === "string") {
+        res += inputi;
+      } else {
+        res += texify._go2(inputi);
+
+        if (inputi.type_ === '1st-level escape') {
+          cee = true;
+        }
+      }
+    }
+
+    if (!isInner && !cee && res) {
+      res = "{" + res + "}";
+    }
+
+    return res;
+  },
+  _goInner: function _goInner(input) {
+    if (!input) {
+      return input;
+    }
+
+    return texify.go(input, true);
+  },
+  _go2: function _go2(buf) {
+    /** @type {undefined | string} */
+    var res;
+
+    switch (buf.type_) {
+      case 'chemfive':
+        res = "";
+        var b5 = {
+          a: texify._goInner(buf.a),
+          b: texify._goInner(buf.b),
+          p: texify._goInner(buf.p),
+          o: texify._goInner(buf.o),
+          q: texify._goInner(buf.q),
+          d: texify._goInner(buf.d)
+        }; //
+        // a
+        //
+
+        if (b5.a) {
+          if (b5.a.match(/^[+\-]/)) {
+            b5.a = "{" + b5.a + "}";
+          }
+
+          res += b5.a + "\\,";
+        } //
+        // b and p
+        //
+
+
+        if (b5.b || b5.p) {
+          res += "{\\vphantom{X}}";
+          res += "^{\\hphantom{" + (b5.b || "") + "}}_{\\hphantom{" + (b5.p || "") + "}}";
+          res += "{\\vphantom{X}}";
+          res += "^{\\smash[t]{\\vphantom{2}}\\mathllap{" + (b5.b || "") + "}}";
+          res += "_{\\vphantom{2}\\mathllap{\\smash[t]{" + (b5.p || "") + "}}}";
+        } //
+        // o
+        //
+
+
+        if (b5.o) {
+          if (b5.o.match(/^[+\-]/)) {
+            b5.o = "{" + b5.o + "}";
+          }
+
+          res += b5.o;
+        } //
+        // q and d
+        //
+
+
+        if (buf.dType === 'kv') {
+          if (b5.d || b5.q) {
+            res += "{\\vphantom{X}}";
+          }
+
+          if (b5.d) {
+            res += "^{" + b5.d + "}";
+          }
+
+          if (b5.q) {
+            res += "_{\\smash[t]{" + b5.q + "}}";
+          }
+        } else if (buf.dType === 'oxidation') {
+          if (b5.d) {
+            res += "{\\vphantom{X}}";
+            res += "^{" + b5.d + "}";
+          }
+
+          if (b5.q) {
+            res += "{\\vphantom{X}}";
+            res += "_{\\smash[t]{" + b5.q + "}}";
+          }
+        } else {
+          if (b5.q) {
+            res += "{\\vphantom{X}}";
+            res += "_{\\smash[t]{" + b5.q + "}}";
+          }
+
+          if (b5.d) {
+            res += "{\\vphantom{X}}";
+            res += "^{" + b5.d + "}";
+          }
+        }
+
+        break;
+
+      case 'rm':
+        res = "\\mathrm{" + buf.p1 + "}";
+        break;
+
+      case 'text':
+        if (buf.p1.match(/[\^_]/)) {
+          buf.p1 = buf.p1.replace(" ", "~").replace("-", "\\text{-}");
+          res = "\\mathrm{" + buf.p1 + "}";
+        } else {
+          res = "\\text{" + buf.p1 + "}";
+        }
+
+        break;
+
+      case 'roman numeral':
+        res = "\\mathrm{" + buf.p1 + "}";
+        break;
+
+      case 'state of aggregation':
+        res = "\\mskip2mu " + texify._goInner(buf.p1);
+        break;
+
+      case 'state of aggregation subscript':
+        res = "\\mskip1mu " + texify._goInner(buf.p1);
+        break;
+
+      case 'bond':
+        res = texify._getBond(buf.kind_);
+
+        if (!res) {
+          throw ["MhchemErrorBond", "mhchem Error. Unknown bond type (" + buf.kind_ + ")"];
+        }
+
+        break;
+
+      case 'frac':
+        var c = "\\frac{" + buf.p1 + "}{" + buf.p2 + "}";
+        res = "\\mathchoice{\\textstyle" + c + "}{" + c + "}{" + c + "}{" + c + "}";
+        break;
+
+      case 'pu-frac':
+        var d = "\\frac{" + texify._goInner(buf.p1) + "}{" + texify._goInner(buf.p2) + "}";
+        res = "\\mathchoice{\\textstyle" + d + "}{" + d + "}{" + d + "}{" + d + "}";
+        break;
+
+      case 'tex-math':
+        res = buf.p1 + " ";
+        break;
+
+      case 'frac-ce':
+        res = "\\frac{" + texify._goInner(buf.p1) + "}{" + texify._goInner(buf.p2) + "}";
+        break;
+
+      case 'overset':
+        res = "\\overset{" + texify._goInner(buf.p1) + "}{" + texify._goInner(buf.p2) + "}";
+        break;
+
+      case 'underset':
+        res = "\\underset{" + texify._goInner(buf.p1) + "}{" + texify._goInner(buf.p2) + "}";
+        break;
+
+      case 'underbrace':
+        res = "\\underbrace{" + texify._goInner(buf.p1) + "}_{" + texify._goInner(buf.p2) + "}";
+        break;
+
+      case 'color':
+        res = "{\\color{" + buf.color1 + "}{" + texify._goInner(buf.color2) + "}}";
+        break;
+
+      case 'color0':
+        res = "\\color{" + buf.color + "}";
+        break;
+
+      case 'arrow':
+        var b6 = {
+          rd: texify._goInner(buf.rd),
+          rq: texify._goInner(buf.rq)
+        };
+
+        var arrow = "\\x" + texify._getArrow(buf.r);
+
+        if (b6.rq) {
+          arrow += "[{" + b6.rq + "}]";
+        }
+
+        if (b6.rd) {
+          arrow += "{" + b6.rd + "}";
+        } else {
+          arrow += "{}";
+        }
+
+        res = arrow;
+        break;
+
+      case 'operator':
+        res = texify._getOperator(buf.kind_);
+        break;
+
+      case '1st-level escape':
+        res = buf.p1 + " "; // &, \\\\, \\hlin
+
+        break;
+
+      case 'space':
+        res = " ";
+        break;
+
+      case 'entitySkip':
+        res = "~";
+        break;
+
+      case 'pu-space-1':
+        res = "~";
+        break;
+
+      case 'pu-space-2':
+        res = "\\mkern3mu ";
+        break;
+
+      case '1000 separator':
+        res = "\\mkern2mu ";
+        break;
+
+      case 'commaDecimal':
+        res = "{,}";
+        break;
+
+      case 'comma enumeration L':
+        res = "{" + buf.p1 + "}\\mkern6mu ";
+        break;
+
+      case 'comma enumeration M':
+        res = "{" + buf.p1 + "}\\mkern3mu ";
+        break;
+
+      case 'comma enumeration S':
+        res = "{" + buf.p1 + "}\\mkern1mu ";
+        break;
+
+      case 'hyphen':
+        res = "\\text{-}";
+        break;
+
+      case 'addition compound':
+        res = "\\,{\\cdot}\\,";
+        break;
+
+      case 'electron dot':
+        res = "\\mkern1mu \\bullet\\mkern1mu ";
+        break;
+
+      case 'KV x':
+        res = "{\\times}";
+        break;
+
+      case 'prime':
+        res = "\\prime ";
+        break;
+
+      case 'cdot':
+        res = "\\cdot ";
+        break;
+
+      case 'tight cdot':
+        res = "\\mkern1mu{\\cdot}\\mkern1mu ";
+        break;
+
+      case 'times':
+        res = "\\times ";
+        break;
+
+      case 'circa':
+        res = "{\\sim}";
+        break;
+
+      case '^':
+        res = "uparrow";
+        break;
+
+      case 'v':
+        res = "downarrow";
+        break;
+
+      case 'ellipsis':
+        res = "\\ldots ";
+        break;
+
+      case '/':
+        res = "/";
+        break;
+
+      case ' / ':
+        res = "\\,/\\,";
+        break;
+
+      default:
+        throw ["MhchemBugT", "mhchem bug T. Please report."];
+      // Missing texify rule or unknown MhchemParser output
+    }
+    return res;
+  },
+  _getArrow: function _getArrow(a) {
+    switch (a) {
+      case "->":
+        return "rightarrow";
+
+      case "\u2192":
+        return "rightarrow";
+
+      case "\u27F6":
+        return "rightarrow";
+
+      case "<-":
+        return "leftarrow";
+
+      case "<->":
+        return "leftrightarrow";
+
+      case "<-->":
+        return "rightleftarrows";
+
+      case "<=>":
+        return "rightleftharpoons";
+
+      case "\u21CC":
+        return "rightleftharpoons";
+
+      case "<=>>":
+        return "rightequilibrium";
+
+      case "<<=>":
+        return "leftequilibrium";
+
+      default:
+        throw ["MhchemBugT", "mhchem bug T. Please report."];
+    }
+  },
+  _getBond: function _getBond(a) {
+    switch (a) {
+      case "-":
+        return "{-}";
+
+      case "1":
+        return "{-}";
+
+      case "=":
+        return "{=}";
+
+      case "2":
+        return "{=}";
+
+      case "#":
+        return "{\\equiv}";
+
+      case "3":
+        return "{\\equiv}";
+
+      case "~":
+        return "{\\tripledash}";
+
+      case "~-":
+        return "{\\mathrlap{\\raisebox{-.1em}{$-$}}\\raisebox{.1em}{$\\tripledash$}}";
+
+      case "~=":
+        return "{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$\\tripledash$}}-}";
+
+      case "~--":
+        return "{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$\\tripledash$}}-}";
+
+      case "-~-":
+        return "{\\mathrlap{\\raisebox{-.2em}{$-$}}\\mathrlap{\\raisebox{.2em}{$-$}}\\tripledash}";
+
+      case "...":
+        return "{{\\cdot}{\\cdot}{\\cdot}}";
+
+      case "....":
+        return "{{\\cdot}{\\cdot}{\\cdot}{\\cdot}}";
+
+      case "->":
+        return "{\\rightarrow}";
+
+      case "<-":
+        return "{\\leftarrow}";
+
+      case "<":
+        return "{<}";
+
+      case ">":
+        return "{>}";
+
+      default:
+        throw ["MhchemBugT", "mhchem bug T. Please report."];
+    }
+  },
+  _getOperator: function _getOperator(a) {
+    switch (a) {
+      case "+":
+        return " {}+{} ";
+
+      case "-":
+        return " {}-{} ";
+
+      case "=":
+        return " {}={} ";
+
+      case "<":
+        return " {}<{} ";
+
+      case ">":
+        return " {}>{} ";
+
+      case "<<":
+        return " {}\\ll{} ";
+
+      case ">>":
+        return " {}\\gg{} ";
+
+      case "\\pm":
+        return " {}\\pm{} ";
+
+      case "\\approx":
+        return " {}\\approx{} ";
+
+      case "$\\approx$":
+        return " {}\\approx{} ";
+
+      case "v":
+        return " \\downarrow{} ";
+
+      case "(v)":
+        return " \\downarrow{} ";
+
+      case "^":
+        return " \\uparrow{} ";
+
+      case "(^)":
+        return " \\uparrow{} ";
+
+      default:
+        throw ["MhchemBugT", "mhchem bug T. Please report."];
+    }
+  }
+}; //
diff --git a/node_modules/mavon-editor/dist/katex/contrib/render-a11y-string.min.js b/node_modules/mavon-editor/dist/katex/contrib/render-a11y-string.min.js
new file mode 100644
index 0000000..0dcac27
--- /dev/null
+++ b/node_modules/mavon-editor/dist/katex/contrib/render-a11y-string.min.js
@@ -0,0 +1 @@
+!function(e,r){if("object"==typeof exports&&"object"==typeof module)module.exports=r(require("katex"));else if("function"==typeof define&&define.amd)define(["katex"],r);else{var t="object"==typeof exports?r(require("katex")):r(e.katex);for(var a in t)("object"==typeof exports?exports:e)[a]=t[a]}}("undefined"!=typeof self?self:this,function(e){return function(e){var r={};function t(a){if(r[a])return r[a].exports;var o=r[a]={i:a,l:!1,exports:{}};return e[a].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=e,t.c=r,t.d=function(e,r,a){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:a})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(t.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)t.d(a,o,function(r){return e[r]}.bind(null,o));return a},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=1)}([function(r,t){r.exports=e},function(e,r,t){"use strict";t.r(r);var a=t(0),o=t.n(a),n={"(":"left parenthesis",")":"right parenthesis","[":"open bracket","]":"close bracket","\\{":"left brace","\\}":"right brace","\\lvert":"open vertical bar","\\rvert":"close vertical bar","|":"vertical bar","\\uparrow":"up arrow","\\Uparrow":"up arrow","\\downarrow":"down arrow","\\Downarrow":"down arrow","\\updownarrow":"up down arrow","\\leftarrow":"left arrow","\\Leftarrow":"left arrow","\\rightarrow":"right arrow","\\Rightarrow":"right arrow","\\langle":"open angle","\\rangle":"close angle","\\lfloor":"open floor","\\rfloor":"close floor","\\int":"integral","\\intop":"integral","\\lim":"limit","\\ln":"natural log","\\log":"log","\\sin":"sine","\\cos":"cosine","\\tan":"tangent","\\cot":"cotangent","\\sum":"sum","/":"slash",",":"comma",".":"point","-":"negative","+":"plus","~":"tilde",":":"colon","?":"question mark","'":"apostrophe","\\%":"percent"," ":"space","\\ ":"space","\\$":"dollar sign","\\angle":"angle","\\degree":"degree","\\circ":"circle","\\vec":"vector","\\triangle":"triangle","\\pi":"pi","\\prime":"prime","\\infty":"infinity","\\alpha":"alpha","\\beta":"beta","\\gamma":"gamma","\\omega":"omega","\\theta":"theta","\\sigma":"sigma","\\lambda":"lambda","\\tau":"tau","\\Delta":"delta","\\delta":"delta","\\mu":"mu","\\rho":"rho","\\nabla":"del","\\ell":"ell","\\ldots":"dots","\\hat":"hat","\\acute":"acute"},s={prime:"prime",degree:"degrees",circle:"degrees",2:"squared",3:"cubed"},i={"|":"open vertical bar",".":""},l={"|":"close vertical bar",".":""},c={"+":"plus","-":"minus","\\pm":"plus minus","\\cdot":"dot","*":"times","/":"divided by","\\times":"times","\\div":"divided by","\\circ":"circle","\\bullet":"bullet"},u={"=":"equals","\\approx":"approximately equals","\u2260":"does not equal","\\geq":"is greater than or equal to","\\ge":"is greater than or equal to","\\leq":"is less than or equal to","\\le":"is less than or equal to",">":"is greater than","<":"is less than","\\leftarrow":"left arrow","\\Leftarrow":"left arrow","\\rightarrow":"right arrow","\\Rightarrow":"right arrow",":":"colon"},p={"\\underleftarrow":"left arrow","\\underrightarrow":"right arrow","\\underleftrightarrow":"left-right arrow","\\undergroup":"group","\\underlinesegment":"line segment","\\utilde":"tilde"},d=function(e,r,t){var a;e&&(/^\d+$/.test(a="open"===r?e in i?i[e]:n[e]||e:"close"===r?e in l?l[e]:n[e]||e:"bin"===r?c[e]||e:"rel"===r?u[e]||e:n[e]||e)&&t.length>0&&/^\d+$/.test(t[t.length-1])?t[t.length-1]+=a:a&&t.push(a))},b=function(e,r){var t=[];e.push(t),r(t)},h=function(e,r,t){switch(e.type){case"accent":b(r,function(r){f(e.base,r,t),r.push("with"),d(e.label,"normal",r),r.push("on top")});break;case"accentUnder":b(r,function(r){f(e.base,r,t),r.push("with"),d(p[e.label],"normal",r),r.push("underneath")});break;case"accent-token":break;case"atom":var a=e.text;switch(e.family){case"bin":d(a,"bin",r);break;case"close":d(a,"close",r);break;case"inner":d(e.text,"inner",r);break;case"open":d(a,"open",r);break;case"punct":d(a,"punct",r);break;case"rel":d(a,"rel",r);break;default:throw e.family,new Error('"'+e.family+'" is not a valid atom type')}break;case"color":var o=e.color.replace(/katex-/,"");b(r,function(r){r.push("start color "+o),f(e.body,r,t),r.push("end color "+o)});break;case"color-token":break;case"delimsizing":e.delim&&"."!==e.delim&&d(e.delim,"normal",r);break;case"genfrac":b(r,function(r){var a=e.leftDelim,o=e.rightDelim;e.hasBarLine?(r.push("start fraction"),a&&d(a,"open",r),f(e.numer,r,t),r.push("divided by"),f(e.denom,r,t),o&&d(o,"close",r),r.push("end fraction")):(r.push("start binomial"),a&&d(a,"open",r),f(e.numer,r,t),r.push("over"),f(e.denom,r,t),o&&d(o,"close",r),r.push("end binomial"))});break;case"kern":break;case"leftright":b(r,function(r){d(e.left,"open",r),f(e.body,r,t),d(e.right,"close",r)});break;case"leftright-right":break;case"lap":f(e.body,r,t);break;case"mathord":d(e.text,"normal",r);break;case"op":var n=e.body,i=e.name;n?f(n,r,t):i&&d(i,"normal",r);break;case"op-token":d(e.text,t,r);break;case"ordgroup":f(e.body,r,t);break;case"overline":b(r,function(r){r.push("start overline"),f(e.body,r,t),r.push("end overline")});break;case"phantom":r.push("empty space");break;case"raisebox":f(e.body,r,t);break;case"rule":r.push("rectangle");break;case"sizing":f(e.body,r,t);break;case"spacing":r.push("space");break;case"styling":f(e.body,r,t);break;case"sqrt":b(r,function(r){var a=e.body,o=e.index;if(o)return"3"===m(f(o,[],t)).join(",")?(r.push("cube root of"),f(a,r,t),void r.push("end cube root")):(r.push("root"),r.push("start index"),f(o,r,t),void r.push("end index"));r.push("square root of"),f(a,r,t),r.push("end square root")});break;case"supsub":var l=e.base,c=e.sub,u=e.sup,h=!1;if(l&&(f(l,r,t),h="op"===l.type&&"\\log"===l.name),c){var y=h?"base":"subscript";b(r,function(e){e.push("start "+y),f(c,e,t),e.push("end "+y)})}u&&b(r,function(e){var r=m(f(u,[],t)).join(",");r in s?e.push(s[r]):(e.push("start superscript"),f(u,e,t),e.push("end superscript"))});break;case"text":if("\\textbf"===e.font){b(r,function(r){r.push("start bold text"),f(e.body,r,t),r.push("end bold text")});break}b(r,function(r){r.push("start text"),f(e.body,r,t),r.push("end text")});break;case"textord":d(e.text,t,r);break;case"smash":f(e.body,r,t);break;case"enclose":if(/cancel/.test(e.label)){b(r,function(r){r.push("start cancel"),f(e.body,r,t),r.push("end cancel")});break}if(/box/.test(e.label)){b(r,function(r){r.push("start box"),f(e.body,r,t),r.push("end box")});break}if(/sout/.test(e.label)){b(r,function(r){r.push("start strikeout"),f(e.body,r,t),r.push("end strikeout")});break}throw new Error("KaTeX-a11y: enclose node with "+e.label+" not supported yet");case"vphantom":throw new Error("KaTeX-a11y: vphantom not implemented yet");case"hphantom":throw new Error("KaTeX-a11y: hphantom not implemented yet");case"operatorname":f(e.body,r,t);break;case"array":throw new Error("KaTeX-a11y: array not implemented yet");case"raw":throw new Error("KaTeX-a11y: raw not implemented yet");case"size":break;case"url":throw new Error("KaTeX-a11y: url not implemented yet");case"tag":throw new Error("KaTeX-a11y: tag not implemented yet");case"verb":d("start verbatim","normal",r),d(e.body,"normal",r),d("end verbatim","normal",r);break;case"environment":throw new Error("KaTeX-a11y: environment not implemented yet");case"horizBrace":d("start "+e.label.slice(1),"normal",r),f(e.base,r,t),d("end "+e.label.slice(1),"normal",r);break;case"infix":break;case"includegraphics":throw new Error("KaTeX-a11y: includegraphics not implemented yet");case"font":f(e.body,r,t);break;case"href":throw new Error("KaTeX-a11y: href not implemented yet");case"cr":throw new Error("KaTeX-a11y: cr not implemented yet");case"underline":b(r,function(r){r.push("start underline"),f(e.body,r,t),r.push("end underline")});break;case"xArrow":throw new Error("KaTeX-a11y: xArrow not implemented yet");case"mclass":var g=e.mclass.slice(1);f(e.body,r,g);break;case"mathchoice":f(e.text,r,t);break;case"htmlmathml":f(e.mathml,r,t);break;case"middle":d(e.delim,t,r);break;default:throw e.type,new Error("KaTeX a11y un-recognized type: "+e.type)}},f=function e(r,t,a){if(void 0===t&&(t=[]),r instanceof Array)for(var o=0;o<r.length;o++)e(r[o],t,a);else h(r,t,a);return t},m=function e(r){var t=[];return r.forEach(function(r){r instanceof Array?t=t.concat(e(r)):t.push(r)}),t};r.default=function(e,r){var t=o.a.__parse(e,r),a=f(t,[],"normal");return m(a).join(", ")}}]).default});
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/katex/contrib/render-a11y-string.mjs b/node_modules/mavon-editor/dist/katex/contrib/render-a11y-string.mjs
new file mode 100644
index 0000000..fc63bfc
--- /dev/null
+++ b/node_modules/mavon-editor/dist/katex/contrib/render-a11y-string.mjs
@@ -0,0 +1,741 @@
+import katex from '../katex.mjs';
+
+/**
+ * renderA11yString returns a readable string.
+ *
+ * In some cases the string will have the proper semantic math
+ * meaning,:
+ *   renderA11yString("\\frac{1}{2}"")
+ *   -> "start fraction, 1, divided by, 2, end fraction"
+ *
+ * However, other cases do not:
+ *   renderA11yString("f(x) = x^2")
+ *   -> "f, left parenthesis, x, right parenthesis, equals, x, squared"
+ *
+ * The commas in the string aim to increase ease of understanding
+ * when read by a screenreader.
+ */
+const stringMap = {
+  "(": "left parenthesis",
+  ")": "right parenthesis",
+  "[": "open bracket",
+  "]": "close bracket",
+  "\\{": "left brace",
+  "\\}": "right brace",
+  "\\lvert": "open vertical bar",
+  "\\rvert": "close vertical bar",
+  "|": "vertical bar",
+  "\\uparrow": "up arrow",
+  "\\Uparrow": "up arrow",
+  "\\downarrow": "down arrow",
+  "\\Downarrow": "down arrow",
+  "\\updownarrow": "up down arrow",
+  "\\leftarrow": "left arrow",
+  "\\Leftarrow": "left arrow",
+  "\\rightarrow": "right arrow",
+  "\\Rightarrow": "right arrow",
+  "\\langle": "open angle",
+  "\\rangle": "close angle",
+  "\\lfloor": "open floor",
+  "\\rfloor": "close floor",
+  "\\int": "integral",
+  "\\intop": "integral",
+  "\\lim": "limit",
+  "\\ln": "natural log",
+  "\\log": "log",
+  "\\sin": "sine",
+  "\\cos": "cosine",
+  "\\tan": "tangent",
+  "\\cot": "cotangent",
+  "\\sum": "sum",
+  "/": "slash",
+  ",": "comma",
+  ".": "point",
+  "-": "negative",
+  "+": "plus",
+  "~": "tilde",
+  ":": "colon",
+  "?": "question mark",
+  "'": "apostrophe",
+  "\\%": "percent",
+  " ": "space",
+  "\\ ": "space",
+  "\\$": "dollar sign",
+  "\\angle": "angle",
+  "\\degree": "degree",
+  "\\circ": "circle",
+  "\\vec": "vector",
+  "\\triangle": "triangle",
+  "\\pi": "pi",
+  "\\prime": "prime",
+  "\\infty": "infinity",
+  "\\alpha": "alpha",
+  "\\beta": "beta",
+  "\\gamma": "gamma",
+  "\\omega": "omega",
+  "\\theta": "theta",
+  "\\sigma": "sigma",
+  "\\lambda": "lambda",
+  "\\tau": "tau",
+  "\\Delta": "delta",
+  "\\delta": "delta",
+  "\\mu": "mu",
+  "\\rho": "rho",
+  "\\nabla": "del",
+  "\\ell": "ell",
+  "\\ldots": "dots",
+  // TODO: add entries for all accents
+  "\\hat": "hat",
+  "\\acute": "acute"
+};
+const powerMap = {
+  "prime": "prime",
+  "degree": "degrees",
+  "circle": "degrees",
+  "2": "squared",
+  "3": "cubed"
+};
+const openMap = {
+  "|": "open vertical bar",
+  ".": ""
+};
+const closeMap = {
+  "|": "close vertical bar",
+  ".": ""
+};
+const binMap = {
+  "+": "plus",
+  "-": "minus",
+  "\\pm": "plus minus",
+  "\\cdot": "dot",
+  "*": "times",
+  "/": "divided by",
+  "\\times": "times",
+  "\\div": "divided by",
+  "\\circ": "circle",
+  "\\bullet": "bullet"
+};
+const relMap = {
+  "=": "equals",
+  "\\approx": "approximately equals",
+  "≠": "does not equal",
+  "\\geq": "is greater than or equal to",
+  "\\ge": "is greater than or equal to",
+  "\\leq": "is less than or equal to",
+  "\\le": "is less than or equal to",
+  ">": "is greater than",
+  "<": "is less than",
+  "\\leftarrow": "left arrow",
+  "\\Leftarrow": "left arrow",
+  "\\rightarrow": "right arrow",
+  "\\Rightarrow": "right arrow",
+  ":": "colon"
+};
+const accentUnderMap = {
+  "\\underleftarrow": "left arrow",
+  "\\underrightarrow": "right arrow",
+  "\\underleftrightarrow": "left-right arrow",
+  "\\undergroup": "group",
+  "\\underlinesegment": "line segment",
+  "\\utilde": "tilde"
+};
+
+const buildString = (str, type, a11yStrings) => {
+  if (!str) {
+    return;
+  }
+
+  let ret;
+
+  if (type === "open") {
+    ret = str in openMap ? openMap[str] : stringMap[str] || str;
+  } else if (type === "close") {
+    ret = str in closeMap ? closeMap[str] : stringMap[str] || str;
+  } else if (type === "bin") {
+    ret = binMap[str] || str;
+  } else if (type === "rel") {
+    ret = relMap[str] || str;
+  } else {
+    ret = stringMap[str] || str;
+  } // If the text to add is a number and there is already a string
+  // in the list and the last string is a number then we should
+  // combine them into a single number
+
+
+  if (/^\d+$/.test(ret) && a11yStrings.length > 0 && // TODO(kevinb): check that the last item in a11yStrings is a string
+  // I think we might be able to drop the nested arrays, which would make
+  // this easier to type - $FlowFixMe
+  /^\d+$/.test(a11yStrings[a11yStrings.length - 1])) {
+    a11yStrings[a11yStrings.length - 1] += ret;
+  } else if (ret) {
+    a11yStrings.push(ret);
+  }
+};
+
+const buildRegion = (a11yStrings, callback) => {
+  const regionStrings = [];
+  a11yStrings.push(regionStrings);
+  callback(regionStrings);
+};
+
+const handleObject = (tree, a11yStrings, atomType) => {
+  // Everything else is assumed to be an object...
+  switch (tree.type) {
+    case "accent":
+      {
+        buildRegion(a11yStrings, a11yStrings => {
+          buildA11yStrings(tree.base, a11yStrings, atomType);
+          a11yStrings.push("with");
+          buildString(tree.label, "normal", a11yStrings);
+          a11yStrings.push("on top");
+        });
+        break;
+      }
+
+    case "accentUnder":
+      {
+        buildRegion(a11yStrings, a11yStrings => {
+          buildA11yStrings(tree.base, a11yStrings, atomType);
+          a11yStrings.push("with");
+          buildString(accentUnderMap[tree.label], "normal", a11yStrings);
+          a11yStrings.push("underneath");
+        });
+        break;
+      }
+
+    case "accent-token":
+      {
+        // Used internally by accent symbols.
+        break;
+      }
+
+    case "atom":
+      {
+        const text = tree.text;
+
+        switch (tree.family) {
+          case "bin":
+            {
+              buildString(text, "bin", a11yStrings);
+              break;
+            }
+
+          case "close":
+            {
+              buildString(text, "close", a11yStrings);
+              break;
+            }
+          // TODO(kevinb): figure out what should be done for inner
+
+          case "inner":
+            {
+              buildString(tree.text, "inner", a11yStrings);
+              break;
+            }
+
+          case "open":
+            {
+              buildString(text, "open", a11yStrings);
+              break;
+            }
+
+          case "punct":
+            {
+              buildString(text, "punct", a11yStrings);
+              break;
+            }
+
+          case "rel":
+            {
+              buildString(text, "rel", a11yStrings);
+              break;
+            }
+
+          default:
+            {
+              tree.family;
+              throw new Error(`"${tree.family}" is not a valid atom type`);
+            }
+        }
+
+        break;
+      }
+
+    case "color":
+      {
+        const color = tree.color.replace(/katex-/, "");
+        buildRegion(a11yStrings, regionStrings => {
+          regionStrings.push("start color " + color);
+          buildA11yStrings(tree.body, regionStrings, atomType);
+          regionStrings.push("end color " + color);
+        });
+        break;
+      }
+
+    case "color-token":
+      {
+        // Used by \color, \colorbox, and \fcolorbox but not directly rendered.
+        // It's a leaf node and has no children so just break.
+        break;
+      }
+
+    case "delimsizing":
+      {
+        if (tree.delim && tree.delim !== ".") {
+          buildString(tree.delim, "normal", a11yStrings);
+        }
+
+        break;
+      }
+
+    case "genfrac":
+      {
+        buildRegion(a11yStrings, regionStrings => {
+          // genfrac can have unbalanced delimiters
+          const leftDelim = tree.leftDelim,
+                rightDelim = tree.rightDelim; // NOTE: Not sure if this is a safe assumption
+          // hasBarLine true -> fraction, false -> binomial
+
+          if (tree.hasBarLine) {
+            regionStrings.push("start fraction");
+            leftDelim && buildString(leftDelim, "open", regionStrings);
+            buildA11yStrings(tree.numer, regionStrings, atomType);
+            regionStrings.push("divided by");
+            buildA11yStrings(tree.denom, regionStrings, atomType);
+            rightDelim && buildString(rightDelim, "close", regionStrings);
+            regionStrings.push("end fraction");
+          } else {
+            regionStrings.push("start binomial");
+            leftDelim && buildString(leftDelim, "open", regionStrings);
+            buildA11yStrings(tree.numer, regionStrings, atomType);
+            regionStrings.push("over");
+            buildA11yStrings(tree.denom, regionStrings, atomType);
+            rightDelim && buildString(rightDelim, "close", regionStrings);
+            regionStrings.push("end binomial");
+          }
+        });
+        break;
+      }
+
+    case "kern":
+      {
+        // No op: we don't attempt to present kerning information
+        // to the screen reader.
+        break;
+      }
+
+    case "leftright":
+      {
+        buildRegion(a11yStrings, regionStrings => {
+          buildString(tree.left, "open", regionStrings);
+          buildA11yStrings(tree.body, regionStrings, atomType);
+          buildString(tree.right, "close", regionStrings);
+        });
+        break;
+      }
+
+    case "leftright-right":
+      {
+        // TODO: double check that this is a no-op
+        break;
+      }
+
+    case "lap":
+      {
+        buildA11yStrings(tree.body, a11yStrings, atomType);
+        break;
+      }
+
+    case "mathord":
+      {
+        buildString(tree.text, "normal", a11yStrings);
+        break;
+      }
+
+    case "op":
+      {
+        const body = tree.body,
+              name = tree.name;
+
+        if (body) {
+          buildA11yStrings(body, a11yStrings, atomType);
+        } else if (name) {
+          buildString(name, "normal", a11yStrings);
+        }
+
+        break;
+      }
+
+    case "op-token":
+      {
+        // Used internally by operator symbols.
+        buildString(tree.text, atomType, a11yStrings);
+        break;
+      }
+
+    case "ordgroup":
+      {
+        buildA11yStrings(tree.body, a11yStrings, atomType);
+        break;
+      }
+
+    case "overline":
+      {
+        buildRegion(a11yStrings, function (a11yStrings) {
+          a11yStrings.push("start overline");
+          buildA11yStrings(tree.body, a11yStrings, atomType);
+          a11yStrings.push("end overline");
+        });
+        break;
+      }
+
+    case "phantom":
+      {
+        a11yStrings.push("empty space");
+        break;
+      }
+
+    case "raisebox":
+      {
+        buildA11yStrings(tree.body, a11yStrings, atomType);
+        break;
+      }
+
+    case "rule":
+      {
+        a11yStrings.push("rectangle");
+        break;
+      }
+
+    case "sizing":
+      {
+        buildA11yStrings(tree.body, a11yStrings, atomType);
+        break;
+      }
+
+    case "spacing":
+      {
+        a11yStrings.push("space");
+        break;
+      }
+
+    case "styling":
+      {
+        // We ignore the styling and just pass through the contents
+        buildA11yStrings(tree.body, a11yStrings, atomType);
+        break;
+      }
+
+    case "sqrt":
+      {
+        buildRegion(a11yStrings, regionStrings => {
+          const body = tree.body,
+                index = tree.index;
+
+          if (index) {
+            const indexString = flatten(buildA11yStrings(index, [], atomType)).join(",");
+
+            if (indexString === "3") {
+              regionStrings.push("cube root of");
+              buildA11yStrings(body, regionStrings, atomType);
+              regionStrings.push("end cube root");
+              return;
+            }
+
+            regionStrings.push("root");
+            regionStrings.push("start index");
+            buildA11yStrings(index, regionStrings, atomType);
+            regionStrings.push("end index");
+            return;
+          }
+
+          regionStrings.push("square root of");
+          buildA11yStrings(body, regionStrings, atomType);
+          regionStrings.push("end square root");
+        });
+        break;
+      }
+
+    case "supsub":
+      {
+        const base = tree.base,
+              sub = tree.sub,
+              sup = tree.sup;
+        let isLog = false;
+
+        if (base) {
+          buildA11yStrings(base, a11yStrings, atomType);
+          isLog = base.type === "op" && base.name === "\\log";
+        }
+
+        if (sub) {
+          const regionName = isLog ? "base" : "subscript";
+          buildRegion(a11yStrings, function (regionStrings) {
+            regionStrings.push(`start ${regionName}`);
+            buildA11yStrings(sub, regionStrings, atomType);
+            regionStrings.push(`end ${regionName}`);
+          });
+        }
+
+        if (sup) {
+          buildRegion(a11yStrings, function (regionStrings) {
+            const supString = flatten(buildA11yStrings(sup, [], atomType)).join(",");
+
+            if (supString in powerMap) {
+              regionStrings.push(powerMap[supString]);
+              return;
+            }
+
+            regionStrings.push("start superscript");
+            buildA11yStrings(sup, regionStrings, atomType);
+            regionStrings.push("end superscript");
+          });
+        }
+
+        break;
+      }
+
+    case "text":
+      {
+        // TODO: handle other fonts
+        if (tree.font === "\\textbf") {
+          buildRegion(a11yStrings, function (regionStrings) {
+            regionStrings.push("start bold text");
+            buildA11yStrings(tree.body, regionStrings, atomType);
+            regionStrings.push("end bold text");
+          });
+          break;
+        }
+
+        buildRegion(a11yStrings, function (regionStrings) {
+          regionStrings.push("start text");
+          buildA11yStrings(tree.body, regionStrings, atomType);
+          regionStrings.push("end text");
+        });
+        break;
+      }
+
+    case "textord":
+      {
+        buildString(tree.text, atomType, a11yStrings);
+        break;
+      }
+
+    case "smash":
+      {
+        buildA11yStrings(tree.body, a11yStrings, atomType);
+        break;
+      }
+
+    case "enclose":
+      {
+        // TODO: create a map for these.
+        // TODO: differentiate between a body with a single atom, e.g.
+        // "cancel a" instead of "start cancel, a, end cancel"
+        if (/cancel/.test(tree.label)) {
+          buildRegion(a11yStrings, function (regionStrings) {
+            regionStrings.push("start cancel");
+            buildA11yStrings(tree.body, regionStrings, atomType);
+            regionStrings.push("end cancel");
+          });
+          break;
+        } else if (/box/.test(tree.label)) {
+          buildRegion(a11yStrings, function (regionStrings) {
+            regionStrings.push("start box");
+            buildA11yStrings(tree.body, regionStrings, atomType);
+            regionStrings.push("end box");
+          });
+          break;
+        } else if (/sout/.test(tree.label)) {
+          buildRegion(a11yStrings, function (regionStrings) {
+            regionStrings.push("start strikeout");
+            buildA11yStrings(tree.body, regionStrings, atomType);
+            regionStrings.push("end strikeout");
+          });
+          break;
+        }
+
+        throw new Error(`KaTeX-a11y: enclose node with ${tree.label} not supported yet`);
+      }
+
+    case "vphantom":
+      {
+        throw new Error("KaTeX-a11y: vphantom not implemented yet");
+      }
+
+    case "hphantom":
+      {
+        throw new Error("KaTeX-a11y: hphantom not implemented yet");
+      }
+
+    case "operatorname":
+      {
+        buildA11yStrings(tree.body, a11yStrings, atomType);
+        break;
+      }
+
+    case "array":
+      {
+        throw new Error("KaTeX-a11y: array not implemented yet");
+      }
+
+    case "raw":
+      {
+        throw new Error("KaTeX-a11y: raw not implemented yet");
+      }
+
+    case "size":
+      {
+        // Although there are nodes of type "size" in the parse tree, they have
+        // no semantic meaning and should be ignored.
+        break;
+      }
+
+    case "url":
+      {
+        throw new Error("KaTeX-a11y: url not implemented yet");
+      }
+
+    case "tag":
+      {
+        throw new Error("KaTeX-a11y: tag not implemented yet");
+      }
+
+    case "verb":
+      {
+        buildString(`start verbatim`, "normal", a11yStrings);
+        buildString(tree.body, "normal", a11yStrings);
+        buildString(`end verbatim`, "normal", a11yStrings);
+        break;
+      }
+
+    case "environment":
+      {
+        throw new Error("KaTeX-a11y: environment not implemented yet");
+      }
+
+    case "horizBrace":
+      {
+        buildString(`start ${tree.label.slice(1)}`, "normal", a11yStrings);
+        buildA11yStrings(tree.base, a11yStrings, atomType);
+        buildString(`end ${tree.label.slice(1)}`, "normal", a11yStrings);
+        break;
+      }
+
+    case "infix":
+      {
+        // All infix nodes are replace with other nodes.
+        break;
+      }
+
+    case "includegraphics":
+      {
+        throw new Error("KaTeX-a11y: includegraphics not implemented yet");
+      }
+
+    case "font":
+      {
+        // TODO: callout the start/end of specific fonts
+        // TODO: map \BBb{N} to "the naturals" or something like that
+        buildA11yStrings(tree.body, a11yStrings, atomType);
+        break;
+      }
+
+    case "href":
+      {
+        throw new Error("KaTeX-a11y: href not implemented yet");
+      }
+
+    case "cr":
+      {
+        // This is used by environments.
+        throw new Error("KaTeX-a11y: cr not implemented yet");
+      }
+
+    case "underline":
+      {
+        buildRegion(a11yStrings, function (a11yStrings) {
+          a11yStrings.push("start underline");
+          buildA11yStrings(tree.body, a11yStrings, atomType);
+          a11yStrings.push("end underline");
+        });
+        break;
+      }
+
+    case "xArrow":
+      {
+        throw new Error("KaTeX-a11y: xArrow not implemented yet");
+      }
+
+    case "mclass":
+      {
+        // \neq and \ne are macros so we let "htmlmathml" render the mathmal
+        // side of things and extract the text from that.
+        const atomType = tree.mclass.slice(1); // $FlowFixMe: drop the leading "m" from the values in mclass
+
+        buildA11yStrings(tree.body, a11yStrings, atomType);
+        break;
+      }
+
+    case "mathchoice":
+      {
+        // TODO: track which which style we're using, e.g. dispaly, text, etc.
+        // default to text style if even that may not be the correct style
+        buildA11yStrings(tree.text, a11yStrings, atomType);
+        break;
+      }
+
+    case "htmlmathml":
+      {
+        buildA11yStrings(tree.mathml, a11yStrings, atomType);
+        break;
+      }
+
+    case "middle":
+      {
+        buildString(tree.delim, atomType, a11yStrings);
+        break;
+      }
+
+    default:
+      tree.type;
+      throw new Error("KaTeX a11y un-recognized type: " + tree.type);
+  }
+};
+
+const buildA11yStrings = function buildA11yStrings(tree, a11yStrings, atomType) {
+  if (a11yStrings === void 0) {
+    a11yStrings = [];
+  }
+
+  if (tree instanceof Array) {
+    for (let i = 0; i < tree.length; i++) {
+      buildA11yStrings(tree[i], a11yStrings, atomType);
+    }
+  } else {
+    handleObject(tree, a11yStrings, atomType);
+  }
+
+  return a11yStrings;
+};
+
+const flatten = function flatten(array) {
+  let result = [];
+  array.forEach(function (item) {
+    if (item instanceof Array) {
+      result = result.concat(flatten(item));
+    } else {
+      result.push(item);
+    }
+  });
+  return result;
+};
+
+const renderA11yString = function renderA11yString(text, settings) {
+  const tree = katex.__parse(text, settings);
+
+  const a11yStrings = buildA11yStrings(tree, [], "normal");
+  return flatten(a11yStrings).join(", ");
+};
+
+export default renderA11yString;
diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_AMS-Regular.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_AMS-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..afcd2eb4d1488b6eb04b00302eaa6e223812b012
GIT binary patch
literal 70972
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
LMxXrG{U84UTIJEb

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_AMS-Regular.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_AMS-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..4f575152f2d92dfe48ed316b668e5558c6102c93
GIT binary patch
literal 38868
zcmV)!K#;$8Pew)n0RR910GHGN4gdfE0Tny|0RR91000000000000000000000000_
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_AMS-Regular.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_AMS-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..b982d6eaf85fcd6eaa94a0302bdf1db9c08e8231
GIT binary patch
literal 32944
zcmV(;K-<4}Pew8T0RR910D!On4gdfE0Twg>0Dx8i0RR9100000000000000000000
z00006U;v0}2rdbi7ZC^wgW70<`al6T0we>791DaH00bZfjZX)XKMa8i8wBGQ@TMEe
z?I1jjdcRK-Zj3WH4@Gg~hr>o91m^)sQ1g$C{{KHE>5#E8bilc)zKSUliIS;AU<hG4
z<}6!TCWY)d2128C$dT;i7Z;bSv-<9&a^2=3n$T;-0^(v5Vv{JB>#-jzzR1@E;vh#x
zW|G+I*BWJ0g|OvcDx$V>7OU@voX}>c-2Dc5jY_x<Q-ylWAG1kdFhNW-Hb{>ayH>B;
z)-H$R+$8oi_)8`2<P2;Z`IDTy!}GT7zkhfC|C@tj-DK?Jj$^DlZo+ZEEvB*#jv*jJ
zMI3+(#Wm2Kpc_$hOw`g`;VG%5l~USJD>F?SmgT%{)+bC$A&4aeZGjq)nvZ-|wCi^I
zW_I<%ao_96@VfQ71-SDE9$XV7LV^a9A4C1uZ0<1Guyrc@KOFwfz3-3Nq@uAfqBvU<
zFu+Iy&(na$q&_v~9r~85uL|7VdsXaxm5js|#*&!`77`|kYE>67%L`;4FS}US$Da7i
zoloEW^>j~2))U7hh<FQ-wVa4fz0+RloIF_BNkI^3Iq-n+uVvW^Okb`*ygTntYI(u7
z5;j4|N$fcBT@C|ytKHtEj9-OfY>0?iy6H~d@KFrKjXoCgSXrpaREB<hO|4h(>yx@$
zV3r*KG|(h0g{ZB79XWubSs*-J_i&u!?o@pWNub}MVQZWlBR7@Nh~5K|W#K(|b1VTx
z#Rsr>=XUPn;rV-axyOyAxWofFT>4*g_@+d+|Nr~7A8F@8dxB+#P%H(Ls;g6HGi`5Z
zR}hhJmc+X0ux)2=qFSw*Zjat{+I`v?l_ldDbgAP(s4fvw2VooN0JHP_UR}8k)dXrr
znV>B@KnJL$gclApL20Q@d9M$uDAQD5zT*T4IQaifwYPmk3WwYb=_hIbw=L~CbPT<g
zatNVxnaekK-e6|l8xVs5Kn-Rn2^f$P0wsX}r3FC+01O7>rkJRqB9uYtpOv_gTI~;6
za*Ck}skMu0?P~4n7v-;A{o_)lT!vJa?%I$#AGf99`+h&QXZOF*b5Sl{-vH3~Ok4`=
z$kxdUO~Uklm(Jd``@;_NtAZnp`8-x0x$8_=$#tfz6t-%rPBK(A)5+nGJdgA6JasW`
z=Kjk*9vC#;T1(AN6eekwSn4ffR&6jL_QCZWM2RGDrT!1LSxs7~jPH5{h+|2JXc=yw
zx2;^0VC~2uTf|(94A;vSR*x~wZ%cmf3=>eCK?FU<F`7MqV878S2te?;&jCTp{@gLR
zfrf&i&yU&-^cw?u{www)@6b>MX%LNWT$BWg>o;IR1VJk|rE_KY0tgZjSYXfmZl*)H
zeFlzhe3}18Gjt339E2Q16f=z>c5{fAFxXe&hd3N=68Ca0PD~fCietqIVlAuq89tLt
zGe?C5R#~UTMJ9N_B#-z`AZbd5k|_yC!jt$*f+TU0R7r+L&1RXa!vd#RXM=6FyFkyM
z=sRP<sx{YaddX{k?gJnD>nfF94@Ev9=g0-})(mGUE7{1ojBkYC>0nXlFD-3nmzB2B
z%k^II5%baV+x<QOiO|mH)UZoko80*<Mdn$d!6sW=<?E-p8y{38QAtuH+BrGe%;!A2
z)8s7YIpB{?I$_R|iyyU(ul!T*`HfFj$()u9WwEj5?#yq0No&2-8<#zzJmUTKr~hXl
z?(<2Gr7LsOme~Jy|CRocf2wzuUmsNS$M_B5r@wpIj(1z;sjjjl3VgWRtjoo8k|d&t
zqsYPvE+~1D#0BOXD@OETx9|^tdg(X6&vPByU?Hgg1NiI0_}THX@e|{lPis%hPfJhz
zr~LG@Kker?pPzOARJqtHQewTBE#e~jmVcN3v;40hMuG5&0hx=AA#RKjeT-zWI`iq@
zQwVtePteA|$Jvg#jfxu;)iezVY(QW3diU9sEklZgkUZi8dC#ku3j|;0*Neyo9ymtu
zjqb5)3(?ynl$*D(?I(wG3WvncC_Z*z4aWf;T*f?7S_3t3nOijo^tJ>UcKKNeHkuH=
z??K(C`cQ^0x5w?lXQx@K_>6F`=QP$u5#~Yrya*+zXqezoPQ1b8np5-?BKkg!W)%Oi
zbw)|?0^QX`(?!h%bV2hHA_|nR1_P2jjhihYMs0#>m=GK%yhcI`!*r#!fR2iY8tXZe
zCdr*GbrA0Gi!b9>6q0FqA4qXm{2%4%)Y&G~^_}mjFc8O546hGePt~MI&pfW`44y>|
z77a4ly9g7&@c=&0NVyCKTsD~AXpkK<$482@hF{EeFCgGs`%ML_eIIPwTnih;V&SWa
zNtkk$BT)6XrEzbdiKKLNrHNDg_N~hYdsz)?i^p&>z90LVIP_Sd225z|I``zN(~7m^
z8gmLuT)T>GQ?x{BgGNL;-{A8ntTzS44flX6@S;_gu%<|I=tyyidqdl7dWxHJsX#nd
z)4bhqNv|!rUE{v-j@%Mj`|j=V>{oiI?Y!@{NvOCfS4SS`WKrcZp(LwKjc2aN0j-!I
zI@2UP4Vts!KX&mAXPWCgm#XSU%<sZ$x}d=>3gAUsuc+!h3j8wxm$(HYuv(MQ%l94A
zNN~B~P=%J-$VVem2s&Ew|3B?F&u3tS!p6<iKF9FmLfw)QV<w?flo)3d6J{nYOj((>
zW5!0;o>>Rx94`+Wsz5s`j&LuI^7zs_OasGwjM}Lk+7&x?o7rPwua$jv?6+~io`Vh?
za_k)gmN;_!nn%-9a|l3aQypMG^q9G6CrnW;202gUld4NXU0Mj6!yNmu-Xj=F%j7$y
zp7CjglX-G7-gb{<g6y<pde<I1W9a#Km9w_9QOU&w<=lI2wlT4X&mTUm6`o6HGLn}#
zXK0DK<28WGjQjX`Q(aqnkLUs{cDTUnb1$02Slyw@o4{Vfj=zroxXxQLkQ*t#m>b&q
zLI%e#=Utb1157~mQ-B#8k;OEgV4|fs|2)@1kSZ4VtcMl}&vet>bJzQBm%Y=GT9fXy
zCpHA80x9lAHn`(?P}&mpVTgG9F_?bB5QYi!7k^MleF!Q^Vgx2mSI3<&r`8UE9k9NI
zUe4B2rE;*7bp_dnorb+6lnHe+Vmb)^P<uhHpf6cgv{;V`Od;oFVDQphzIG{!5ZaR5
z0pJFUMVFg}35XKS#UoeI5^E($XWUliMD91e4S1b=iK2QmU~yq6>oHyV0BL((sgKVk
zr|40owrUbuNzLdCoRBV6I+5WbU$=Iu-XQD9J)_+GHwN<sRryjOvQWfb0%*(G#d#F`
z5M_lETHj>@b2-p1+#oM;i09}<u9y@IqiuEZMbR}r7(RrT8!qvj(#svvGDdn;7@qmp
zTnlNg#d%0m=B}&b)~VNUL-~?ie=h&%+=$;a33Tz}Jjy+ba`8?3Qd_glR8c4H4RX?N
z8GXc${MorHw@nSSyzZE|n+dvS8Qe!v+YbWpFcb91GI$KM?k53wnhAPl8Pq^cZv<eF
z33_fBya4L>WdL4ff;KIKEg<XH0T^b2wk@YO28&`IyuF%ZwJ+XjjrR*o0Il<3x`fQf
zw8W>hH2l1acfM4X`I?sbHZ3zs%Y0W^;Rk7jAEp(4lveKj*zCpzXHPvl-w!uP)Z0lZ
zFUv*-sVb^9%b<OjpBnAVtF5#i8o<vj{eQ?gpFs=l56N)U9rP$*D@Jg*yWM~m4D`^=
z8lOjV_~T{#nHYml9KbEEp;Q`?v5&h23JH-9A|)6;&k+@y#7A{YiIf<%TrM(v;#ZPL
ztXn9+MUtBYSsV{(Tx|G=Ng^Yvh_F~os(3DqiFMSZI&YwSTrNAdwmyyynWlA1@hRP{
zEZ%FQ_I<fJA)hkLCvt924SBOMUb&HHLNA_c9jh03Azmp>tUhh*)mMD7>yyH&g$7MS
z-kw3RH(5C+H{xJcDgTmo)-RFA*30oKUa?!`od=KO#q9K8uzP$w&azB9rr*0)(VjV*
z%gZRG)iA6s7t5(lUAk7EH`P1UO0hc-LI|hk$K|+6=v+t>=D_k|alah)i}?f!F{OCC
zb6q&}LY8$pdXz*;%0&vf$U3r5C<>>H%Ea{zIxD6rG0klI+c%9uT+wfcck*oC>AQ~a
zXEvi*pY<<YE8bngdD>14BQzap&b$+vhN^-85-*(P7~^pYHPJlg1T9y><^EAyY$_zD
z?zu|4O|L4XIc<DOYNeh0!MuZxkNQcko>#MQ&oy1k_x;cvVbHXTW=UqTN0q_!S?_Fm
zwtbc<;k+8J=f<_l_QU}`=MtNkSS__>pr%^Jb`34&w`wTO1-7GmN#rL{5PPxv%gZls
zLYQ-;qHFp_*xl}K_ZUkV>%E`8-xtCOAsn2y=FyVf@=`y2U)spe;;7i{y!h<xcaN$^
zhu;?2WzAigriD=2I}4%p0N*$eCjEJUU_?eCEUZ!Pr%o-Ml8x8>Wvo_Non_4*@E0#2
zZJ^}3BpP+yz<pe3o}i_wuSE2I&1^?pbHag40KR#lYxOrJ!bM5|3c(pZ8|40X0(2na
zGAb=V6W{jf8Z+Cad<wBFgBZfSAVxE&F!JvLt=^p78XqDsyAipIGAM(T_{%^7qb62T
zYDjZWA_D;>lwfrY`3;@3XYt%J;cCfjP<qNch2JgR#^NmKV^KrVF{3OQ5LyFSuCZwY
zGQgT6Rq_9P^l`<#vp<k^92tYHr&WwRGMcAjmZm%5U{YE!Ctg(9OMbE}&c4H_SvzGV
zLYASVXobw}c@K?qrrcN?C1Ecr)f7aj&@vmL@RAb3ZQfi)O%nwgq+N)>qBa|h_F}30
zC0JV6MDOT_Jw4F6YCpNvnWqXYAewBlxe#gGSOj$3E0lEQZhQ)v(dE-Nf#~#YqH88I
z+xZ98fyL>Ns^bB>ZKUZi3ii4r7t;H`P9*cbAp-P5WXEriZG%FouHG&4A+V@EtP`TS
zpaBKaME~sU#S%R{IB%41h7O|(r;b6IuarJFl20o|sI;Yoo#U384NNX_8Rb@F1U%}A
z_&}BkE?lPMvgwM``VpQHRu6kJ3=HBYAiTj-+*04~39>KDM1Hi}MJtp{LI-Mc&|!6Q
z!z2|9gs(@(;}?XI)NJYOJ_gLl7(=!-Z+toJceWuHB6uFSqu1vCa4lIz3!Bv9L81H#
zDMf<lA~vJC9*Y~f9<(5v2kL|((KWsk4mNPz9hUX<i)sX8aj979)mP96BEdif$>(9o
zxZeed(>o=LZE7)HSAuRG?ZvEputtx@eFt<L8T27WA{jK*DaH^vo9_5$G>?`4{P6eT
zr3Rp|n<^F?-4H_t$pJ7AWEn)Usa=}1PcESOOTFZ-S5}`ra6E%lwR%@ZUggYs4ZRIv
z7$jG(YjLD?2d#E40)(Ku5yz1*>Pik)=r8)nrw^e#JS^;|p85e(3uQz6EyADKs?+2c
z-85p?AQ=RV&KO7%8;AYigKQ&YlU>P#*qN_0oU$1IiVI-DhHNVg@@$Yzs<T4Gh2SGe
zyX>?@Risr%G{&nfUp<SPYCL5)HV=p2wJt$Z*G+y!Ed-ZVv1H)LiA*tH!x1&1B_V=R
zNtt18<B^Elz%H!K&n8&WZ2X#<%9e_Cg)NG7cZ^`8j}RJH<QiZVTrExeiWCuqQ7#Dp
zAGZ_w;M4eSTtXPsCq7TFHMDMee#zQ`6fyuyX1b}a^dbP3S=E!Elj?Hz0wPHf3_|nx
z73D)HT4x4w3aSi<=FE=l>`0ZDvuEkBBJa$j0wskdR}r<%YI8uWb9iCK?2)Qe#UMBf
zVS(cyjBJ?%9N?v3AHvqjo_z8OkcFw~SVAjv%Up4*dlDM$uDfv22W2ojO}8AFS`65X
z<iLUiY^1q$(G5U+&XucbphRD$X^#7_z?En>;SB<jxC9(<sx)@e1#QHENCq9J;3hMm
z=eLpbbRR33wZQIyNmmmt#LPH1`|<2FK9deYx3-7^wS%?nOdXx+<xL3r?*g7N&G?Yz
z#+pz5rVXSegNf>1yj3-BrE*i-nJcQ35F4Zg20^n1ZjH3FxC28XiDC(BEHc9xC6(te
zPMut=$LB~K7=OgE0N~`d5GeX)%+F7@tAM8I*GXqaZTua<eL5{0-u&j&q=tfy#qmdl
zoFuy#tWIOlbn@gCM0VEPwgAweDIX>$aAXxtrdxwA9^1-aNBf*Dr1wXWNK7B%0p<Zk
z4c1$TW*~!h5P5ary)kiwdP*w417)qO#Q`ll{Z{XN;D(k=6HxE<xdn1x>0iK0g;Kuw
z2R5ATx(J8uS|1X4CFvz4-oz7U%3(GR;l2a88tLd7(v=yRIMR(>3SuV;1{&%aX9uCp
zrV%G2(?kw2W4HQ-SCAsFn|AlIx5G4p)7H!L5=}H0W<z9`2fGi@0Dt2?`&dM#&oj<h
zYoatovr|>3GLRA+K0vthDB>DESamoTtf0T5f@?rU@VqSmV!H!Ob06D!F;ApTT?p{X
zt3rkvyG_e}K_cH?9Lrr2w(_P4tRL%DkSR4*aj&qXIe$!KJQ{&U$i_^Mvk=MZD(AB*
zpzy!}rz)zvi0&K=Sk(lh>0XfOrpCh*!c(KbUBX4&$T7!%y9cJIMC~Q+2C?Ssdei(_
z$TsESDYJtBV57z6ER7a~{xX2?VQRS7hkZHH*Z*aR9*H%A^A0^P7>vZrxnVM8*TXJE
zCu%P!pWDmWci7~Ns5ap|szje<(bni}#QSD`ODM$HdM2L_4l)iDj6;Es9T-h9<`Ume
z0^+OZSuN(qZZm?a1PHCuL?i&>n;D9d3pHi{#;MwHpBu;og&SRPfMJ$F`pgs9>0ATu
zv&Bpm89qRte_3;+1u+mQs{K_OPhdNvyZpRi2v8DAx-<ziK2Z*QzEEB}IxvC|K|SH`
zmfl*U0oe;LCqQ8IBqO1guTe*e%of~cOn}BnDWVl?c7<8AfKcnN(g{IeX|Z_7FT?fL
z!!@TO50LnySvsNl121cjS;j0;r|%D8!~xc<QFqR-ql<tNCHe5k!lUTIJ>}+5hT}}e
zm1s6z++p9Vyh*KpjL`k6Rms8OB83=fxYd&oWm8^q9m}a898F!UrXwbC`^Jck{VgnR
zhxXy>ft^K}S{jx8gV`3Ec6$%{NTU%qmg^OYsxsEYvZ>@KGEv#l$(r-1nvEE^{Pv_P
zX-I-Ts?=zl1nw;W{1D5DFJUncN{M)}tXDI_P!Tro1gL)p^Qjz4o%3N4w|faDDa4Vl
zK;cW=-7S9Xa`pBn;-4s%(ySF_JlpjjtX<z`SPL(O{f;t?*V1fo$^rRZ0_#)4oLokX
zi1?AIWzgyt+?U%wTJb%Ol3DeKcG@2|-%9KB^nN|R*%T6NBIJ=mA0L<QX7y7yb^PTz
za7_T)hI@@dp`T}Wm1=Qs0jEjE>@iug5le-fF*mc93oZ_M0L;<V&Uzy0F@)aI1$)q{
z9x#8TT}N#kq{E-^Y&#P)@|?hwbo0eh<;-D8lmhN8R7bLz`o*gdEH8q&1M1Vt-;#71
zJQbCC_sFgvXlE=1(w_u&#U)Rc3O+EGxuvrxngh&P6EY|flJP{zUZA(=vR(-kd}waG
zG7A`e264;Bkp!_os8C>cCa~kGdm9OxSss~$QXlhqj3h=|oQSuHGZVOx#V$aUMFcrd
z32H=xa5Vi!oA<Pa8s8%;IU!Z6(`_J@Bd!7JPzK;toI@;~oz#NHrvTf?d`AmS?JQGD
zp^U?MYE0o;1!>L0eFOl~O?4&)yc1K;VlAnugGdCCm4X%-2Isty&*brm^yWxU6*+<?
z1u3$QHKT_ri#5Bp(xUff?HV%k<Ny-^GsLxgidopkQuD2t=#dwvChkKiYX14@n;PIp
zj4YRSIM_6hWTS%NF8DB)=CcUT1{_}~ezwC3Gb#}Oflye)_ZLc_O3DcvdB+b8)Z0^G
zn>6jir!~EyqubPu=~0iPh4~KUGs2E)4&s_}?)+jg3vK{e*!jy%`3jODYq4gctIsuI
z^5TqJyfQ$HDyg)qL-Bm0uJP0l6W)ych|UqyI;XVJjp=1j5}FBIWCB1;zp^Uq0#UZq
zVgUkvRMQ2*KMZM@*7;I9+niB>&XI=ZB9jo93wx>S^eL?8*-_WwQyI>)lSV9Jr&tbP
zi)8`M7&#W20^D8bN&Hdyc)9XQc=2Ki8JEck5D{7{9dR1g?Al)SaFN0yD!SnYS+$J|
zTwYki4!Wg_i)59l^EJBG(#oE*E<dig{o4A!Gi3D6;?t{D<))`KcA}Y@Be?*UTyLpA
z+5F5?O*@AUy1CzQ2g23&()3swAYzJ6w1j=vm$G&_Vd&S-dWXVe*ReRKqUGAADOP1F
z*^WSBvesHE)|aRWz^&Ng78_KKbmMbbtgzPHuR34i!9&Dee08-QM6qWJ%o#5x+1amx
zRN}p5R#r0+Z+sf8>{l(g6_j2lqZ6$=RS9a>`JrN1Cx_PTgo4;R@Oa+dkZ!o$bn%oe
zI4~{<XjQG3zsX{S4QscB;r?d5Zfvi8#wMI@k|WlMbpnD*kGgtw<A`F<N~cnMV>F3T
zE=hn2HQ9hER+;A5ql9iW7*-Z5gR&ecmFs=jAUX<8)mRiV#2*=ja)o+d?KHc~CI{Po
zB-05-MBu<<$K{sUNQJbQo(_BOwz{2WQ?85JElm-Qq`71n5mpD2hwZudUKG`MYxyb`
zh*bSvtqvxA>pn%oq>;_G$n5PV!%5Bs?g|xDk{xvW;<`6e(=){$0OJV&eWM+*lo?5_
zLM6Ev{Sw=@tkuJ7AFRPvo4!KJI4?<92C|R0a&SBw&QB*tC^+iQHMf?GfY2fgBh5HW
z=3`?5C9;5RPT7he5iT<GCIeaeNJu|gl45=V+gW$dxS2H35fM%y{@TI}dX%{~HG;6=
z4`c)<U)egwm*U}$5stH^B{{MzF6WOsx1HfYZ{pXM3m?j2;qA3XD8(hSwLB|coeP12
zQe{1YSh?_7k6MDsgIo&sQajM;B7tW^>_ynov~^}fQNda7QN@~M6?g8plLMXKlm&ks
zGtN&>tn7lQuoG%YW-YCsLf`xvJrM+eTo6`)h)_^gRF7T010m}ZeT3E<jEMTWtvTkF
zM%QjS^p{=WfRJH>iFM>laW>im8wmG2h@Q8DOVCsZT1Zl;#Tieiplun1x9U;Nk6~0q
z+s{)hw?Zeh-gLXBoQSBr1Nd<5TcX;Xt>kHzM+TZ<Yv$IBq%0XWdy^7Fyt?kn%^j?&
zX2C<9&ED>T1xQ5GVY+lb)WZ?7U1oTCRq^%YAZ3lOVA4TJo|dZ?GD!bTlW`Fx^-OIk
z@c?2HrL$Co=u%|l@SMym#5-{$#ekcKE7gntXK+%nIuqHM)fyJcpbG(y3xzvqWZY(s
z#ca%|CLkN}kb$PKUd~$H&FIq`@=!e+Eu@InuVqGbBFiJ?Q1~Z*2J>!5v#Sj0q7n|)
z-Jqp$^sy=wNT%(aJJq9yr@X~Vs<X-m5l0MASd~l)@s@9_013_YEGN;mPPC2aHc*@n
zzv&UYrxrU?-rHBg7Z}1zvO2}w7BbQ7UfaisGW?o+mch&3-0h)rLwIG&g3OHal~hWs
zGoM;3P#vt67J_NAt*PSB*UJQ<tu?YZ>X!J&59Pjh=B|Vs==KX3D+?0MD=eM(Q=lO~
zJB=0f^)1pJ$kJ1T7T=v2uc0WkEKL>cvcTvPoZF{itr*0}>a<y;#GSqajq1ahA?F|Y
zsh~q8b#|tMlp+2U>Oxz8w^dWA<M)hqK}5H@P-@P{)*X548r2nunxz6JyDDE|EXAvj
z26l+AIZ7PIraM{#6}N8VEwy%IA;G$|pz|-*f2yTyTYTh$_D(uZ{D&p~bO7Bow0s6>
zA+vGNgjTW>Q4Q@HPvHNl9<=g5s4RwV8{*b8B862$B-w;Cn)@U(fmJ3`Os8|oA7eN-
zl<51f5%5c;#vFN18%BjW5_-=badY>;`u9VF&e2GR9^xbrmFzZ8h1zhl%JoGcwAyU}
zoeHgK4x!%~19P?W@hC;c`OLZ8g=eq$rt1?ou+Ep-RF>Y!bLXI3h?#z{HHTUM73A?k
zg4NQR=5wzbEVdc!vL+tXMe5=}VXwCaAUVEz^_D{wTXR&uX3-OTH2N-`aQbD%)z^~i
zl;y>^T&8u-bQqWzi~IX&y_y~8yYpb1h{u`>fU9LtW~;9*TtW;Cu*Rh0So!hsEbq*d
z*|7`4faJ<LF}J~4pnP0LblKtv>W?3rANsVZ$=sT9AuxtJUYS1K&+o1B00u@iWxfs=
zfV}`CMoeBC)kb2_Zv6m>^Z<XwbTDy=Jo4Bs=MT_TLRM{YJcT^`*jX9e#%d`BeO!82
zfJ?*G4u&kmSvZyp7Ao=!aCN4|toTjnC9t@3uC@<{9xN<il_86rUY}~Vsfk6U1~8yy
z2B*C4SZF8NhPt?TOwIk<;l^e$xP`SxnRqmLrj4c$*WRB>ftR&4Nn~bVHWJ(=kt>c9
zV1n`n^ZuEoX{?%Jna@=&1D+g1E0h}g%0TPP2iWG^Vg4d}5q|;BA#V9yfHWlv)J@1A
zC&E}Ajx1>ZE_VTr;n->5A7fbo>W|J&Q=qfdWYpqK-3j5z1(}%MBGxgi`_Bs5xCP9K
z>|8LGY0!4SM~Ib~qYzJZ$JR$72K*WoV}O5_(vE^ZMVL|8bLx*!EapDT{0P22h<!ns
z#C|IRsrmE}AmB%p|1x;r5c)P#Qno)G8xMhriRI4Pau$?%Gim2@bn~w6QT7*dDN>(h
zApUt36oE(PU&9h%H9i$RdhMX_=uzx54KKsfNOQ}x6M%YFFbF66Q|0uJo8gc7VWIJS
zeql0GgfeJ-rD3&X7Irprv7Cn`IRU#f1;CvQN-FXdjmW5MG@E);{lM~LtVfFrEcF%9
zzHATtrkKTOWoB;XOX$5#O{PP&7+J2;<CYe4rJJ(9oocGei3uaTOqqnT4c6JH?7K09
zU9uD8w9^nk_YUmMe2{*UaR#AH2KbjFn&3A6v{aGE7=oicxF6B?EB79xd226u2vx<m
z3KWenPNCqlpJX0yNR<*|JN1yWUWX6wL}i7(<R5naZMibgi1$s;3=9mI%o28FHd2Ac
z>I&gOTSPmZ+3z?vZ?0{oRH6i7j%|AQHe*A5X^;ox=9ld;<XMR-Pl1NWSf_w+58F6+
z@P*j6e9?t^ZZAaBw}&hC!*#6as#i9JrErsT3#$$y%KaKG+vRbQ?oT?jt7FvPA4~NQ
zLX`QLV8WqfH+%LwqW*TwMm{fo?0V&6IT*H9d;BM#m_Jd@Xx6{z^-6MQG?>7RJJ$U%
zu*E>TjJhSFL!cP9tg0qko#x{c5Yx78FCerwJCNlP8zP!atUGbFU4;-UJKxwe|4dV`
z^-^T{s%gkv6HtnYvt*f6hl;Y5I-yN&&cJU<DsK><XcFF*Iuh9EVyn$Iqi_K{z;4mj
zG-gfOt91+qv(xi=nAp>Q-o05z^uO^a7^4~Ur4n@+UPu-S@GZ;jGV})DVBD7e1#xF~
z-UnUR#NB|dvL2M@aZid=;35$j)Qh?7*hU6_K^qAq?;a3Z#zk{-d>;``w9)`O=WR`q
zvI!R@dw*qG%1OMTu63KRq%yc{0hdMK1sx6c9NnIPMvoWFi$VSN_19GPlsW)n6?%P8
zy&ga>jWcf_2FdF`p<}3cbuKFSw8=1cAjDZtVz-Qc##w4OV@U|hYqJdtP3~Y<f6yJ9
zQp?EfS|+7dpdr!BCQ}ZhSVXm(xs_IirA#R7<sB&-0r7`Uux>=e@uFq<SIsxQzQMhK
zuIMGf#Rl9?#3L<ibdW<?2-vHS0Uy?=uuLod<h4-eh1bJDExq{2g}BV7!lcj~olGxK
zj1Oa|^)@!<Ipi+_^Y0`oTb$IQC29s6Ic=eB#?qVWob=fp>rN9vdYFJ1wC;EaK`px3
ztdD8QN<py3t_V`u&aCjbgk;G0qggn|R-Tl)Hl{>RkVyIQJep4#hBu*6sxJDb$<jCZ
zQP09*nBs!%>$<b}P|E3WH)W2Eh58<@-=2(gNFXaesJ!Ei6D4oNeYpX~dc0t-9Y-P=
z>1WSI2OnwNvGgk+GDCJkEd-AvwXrm^P>S`|?6V`Ga1q|U8$L>GO?*7mQS`biUi*vX
zV^Vb(*RwxoZTz$CcJAEJ5Ye%`OH`U%L?aG^<sWYEnEVs>0B1~>wR?JWC4vMf;debK
z3fB8R@C7Wn;w`-^0<KN_8LTAs9ojj;L6hNYyB@ZM5;@cxF`p`Ok?4!2H$-^!r}2Yp
z6ruq>Fo8ptVs<n%WDDOpcobujcP9Yai`Rt3EMT$AM6~F|Lxd>A{#Cr#HlMSpnqi_l
za+zuty=t_TFM-$*yBk^YB7c?!saGAZeME@Wr9`L=6P$PcI8dJaEGEln4S?qQfBCK4
zC!iBJG)h@J^kQJ1{9*X<9XB%IeiJ88Iil+@?`Pm3HVoTg;Cpp9`ei_G(o0U@&bDV^
z<k^_dRQ$$-mJ(HZ*(*RFrYFANCv|iyHjKQ$NC;?|Y%~Et%XhOCvcY1v0=+J!s&<Sg
z^8->fg1^c{$y(YOA78rpn&sUtHgQoZL?N7JoH)p+MwzM@x5i@(6Z_M@o5M5_AInFq
zEI`DWC^2<fMjd(S9fCCNVHpeq;}4@cHXiUQlzz3E7}>~3Nnzc2jAx1l6z+(<=$vSy
zsK}Y=8Rh^hliNbg6}G9^QKw|vpD0|wW4P$&%*5$T3#Ni?44KaNQ0HGd$}~Vxs<0mk
z*{wT<Mbkb91`sij+#s{dUKTvWkAB&mqjUTdO&eHzbqPe*2a)X=R8YC(NNgjJq?;NZ
z#5Ae0(UJuCAtL{fAj>n8W;GZUkvWJgi$g$x8dKB!Xqm_gQAjhx1<XuS$lC7dgStNB
z*ftO03xrprGtSalIDKM@lFU)M>&x1a6&GT4G0J8s|HbkO|K;$?@^g=b{KGYI79b98
zMR&a%B&S(-*-9jHQj1Ygcw;(lcn$l2Ju9_L(JRIDE0KHZOgswHTg<(hmdk3il}kv_
z6I(+s;BIxrMHJ0q45Fa<HlOk-2)n?~<XfzgOC*ueud50QvUAL3qG`Fe&a0GCZ&qB1
z8i5n@RI7}^s+HT(Amg?{I<F4CNy~Z-dmC1z%T#5}wMgZ8GsQo7nwHn~Jbs66`4T0!
zOuAa6?xCV<^<3z-QaE-JvC`@DsTv+3zH*ecBa5wo#5SUfQ2-b86R~e$jo%3xfL%e6
z1Ua$mulqg!qZ6B$EYZJL1QN?3W<D{umn@;E^<A}rd4TO*v9z$lMzP)nx8A)*zHB1T
z&;p{)=<o1w-%fF-0v4O$ck~As{c-@0{qTyKs)l?ELhJ;@Cl2-QqUjDCXFix(71~dJ
zGO?7y8n~uRZM3C!(}(B+|3e#20tOzfU~MoJgtVRWXiK;QY#cQE293u%E7|+8&hlHW
zPsh)U)|SdN4w-<cqCr{V<P9c}r9Eyv1pDQ$D_6Z^TwkuQMLi8-mIsmdg4ryPmfAvt
z7a;awaKb=bAbKBP_)3>YM(q&5BcZ?I8r`Oc74$0d7eZ2Opg*`(r}8?YYf7_HbKnkW
zWkaM#M;B1STV^NX#pBq-OCkHk3Rr3gz)30NeGVuEn`jF)V?FO20$GdL-u?t9f*F4Y
zlnp~|4!!<jc%!`7F1LfPzcEAO@C7a++FRB$DYILi5uOpUg^l+Y3I+}nn^5i(@TRie
za~$bao+(QE4;OF~wIHVrsH9TFlGS5qXia*O?UocMFE4^$CY`W8Bx8D9a4`Cb%-3jx
zr>@IKc`uHfu%S2S$pvOztKpsugm^@b&VvYO7&snwSBNi3{INiGYH2(g(!+)xcE*@4
z>kjRIFn1>^?E2DK@`ap(XMi1fP#w=sf{h9`pad(HvbskE8YU|YlpU9=rA}u{!yq&y
ziwhQ;g+mBtgB|?krlrC<R7{tUP>C4fR(B+u)1b=(wz$KD1aH=Nw^`68`w%4)aGby7
z)NbT0wuxJsj63IQUD3sbw~ccTSV|UNx?NSqq^)K%m;a-ySph~4C^$WZI2fUeF0&PP
z0tp1*w%RNG8E<{-ZO%I99}#T;HRXTvn?;%e@}xLy^X$qSMABsJ6L7Lq=>O02@)`So
z|434wQY7u+<86O(mXE9W`Ome2E7F5w(pgf7apj<^%5yCJOX?Z)g4vmVB>}Vg8~q-5
z_Ke#SKj>I;<<<P9BLO)5bdB3&*}06Gd+ju1p-2_}`19-w^c|2<uM>@PgbV8%4R^+?
z+%a$*34jyBd@z<o1{sWJ@v>L2dyEUdAx`kvii&NOqD8Fkwg8vR;-~52Y)<l(aex4;
zs+_14p~e}bfn;&4U|^;skk~Q}FK+<euqvj4+yW!YCJR|w1Emf4UTKX&LtmQc`-*Yy
z17GOo;S``bkC@fxCSl-)2Hbn?8?^T@9OiX+EZEd51n`2dd;T@nU)Xk_G0>f}b}=qT
zH;-<oWjoqI&MuD=9GG*mu$B_JAO5&f5a~q)a8mkKX|L&xKk)SZ9CfWzh8_(zsG`#b
z#3Sol4T~8=<Sqx+Tyrk>XBkR93rq+%I9QEf^1d+V&g&28_r_*=C+hWAxrJH;T8bPC
zj}M;3-yqJMVT~Qu!J_Lp^yg_!9t-hZjV2ZntSIyVwj_6_#ngnpaG)j_3L84%?JX`9
zTajCU<5(AXVmy(V<!i@h&tl7Om+e0@zQkwfE8aY|K#&Pfd{e}my?+hAc<qleVSIYG
zjHOm36$PDYdm~xb-i0uAXb~ck0I7GU&`;~2-Zf0MA{n_QmL)yE^ht6i-FxL^97w4|
zm&^3$YS=#vJqDH^3KS{;S0OQtWRa^K4w-J<L<3K!uf%@9#4(L)WTgW70I*XM3j!hw
ze8B02*j-K<*;5UH?nshHiW7EYjq%1k0N1**Ua`?QI7b?LJ%nqo5|NDeR1s^4(Mz4y
zPDBDXn_fLxE(BuNn!1ZxzEr$AcE3TF>JPM4H12s#>S%s3c?jsTR&55hrlJ)FBwu_R
zEAPi1FkeAl2pP*~qMq61saldEWfWJKChY$Gr4>n&%g`DO)l!<m)y#KLU1J`kAq}@`
zoB^?^U;5}z;~Vv3DPPB@hJI?WZ)%2q^lS|F;lYI%e<6{Ghj4qW_3vlOfyfDup-bXi
zOdVO6=D&DP)e0hFea8Dwhc8lxJeL;b+2TN1Yu=-np;lwgkkwYk-#?lxgQuYSX0)lf
zJs6%aV~?FFY{yhC@L{D$LVYP4@6UJg$<rEo8EEG|WYEvZAPgoAV}XOin}`SxcS=-!
zH2y_HRfid#2X`Nf^=6-T8n&I=&_NLropD%<pEm@Co(|4g)MD6aX%{|B?(-95<HBJd
z??qPwf|gIg=L){pgFXtrmo94{0&4viY@TmZljsb>PPd^f9jysjo)_sK>j^yHN0sL|
zFvZKkyVun9U08+8E_ID5q{V2~N{7s;Y8_OJ<)Dbf?h6&n1>?PiGA_t%d~u$~+}@-+
z>{6rSy<M<<@9nM}BoVWQoFsC%eqYI-bO)%0^;kR$N%$;~GeByDB*QK^<^5`>(ANd+
zGYDFORkSZI|33)v+Hv&Rt{u;mEI86|q(nU8DLhAFZsd?*)uyGdgEha}(+^7$cR@Vu
z;R78OxeY#dPK4Xgp+m5Si$=Y;dRc{Dk_2uAmu_GZ#t5Xx+R(kGY4>aEL!MeQ{;6s#
z%G^M<mFAuSl|_A3Dh78+rx$+?sRtXARg4P;$VranGsBuH)YM+d9gpDgfNm5x^t3n}
zuARr`Y#D#bu3Vt?oC$IQXJQ|m<;l9>Y>6ILwvk;JY0U&H)?@5eiKUpfa-n-cE-Q^k
z5hs}qz+5@PWad_-0y|n37A^s+7-)OZpTFgPz@YTQ_dl>O<CY&z?L3Nmdf(xGbkB*I
zqw+9nhW<W==Ig3F%4!T9L1~ZYjW>vA$F<Xx(87?epySg6(9J03Qf}PDoI%1yYDDbw
zO9~G6h0NvyATGwCk5(BOj_|_GP()+gyza!%X@a84%D+#kMgF%CsCI#X`vGYqI`Yv)
z(ALQI&pj0A+Z$vE83e6CywVC8#oxDWzyGc?;LHeyC>Q!3;bdw9w3$Ie{vPEdzhRnL
z5u-3oYe<PzzcV9arkV#Bi<h!T?3r_##3l|e3%wX&(Gk;AGOh%$oi`E>CYiIAa{vT9
zlX<0SdC!~h0A{p0Ll;^4is`skYR~}aNiyEsEtvm)$EG#teuOyLRhYC*%kBIl-+y`^
zz0@$nz@4#qbvq5$LT=?$`%~OMuq1TMslKhgdfXK``!9vwBw8CvjBpJ`Y;YHF3?b`!
zd7i1vyew$L<ZWCA&FNYnZuQ+bCq+s2<ZIHHE5bU%So3xfQWW^LRQk<0_84c6d-s3=
zep<urTfi!3sB?Y`EZZ<+8u{YEy>25yFfQaj`mR4HBqk*B51WriPkHDA$0dNAa6UIO
zr?DYL2sjaNAz4x%6Zg^Gke^#ZnYXx%w8MfWbz%8egU{J&>4&<U#|)BUm-&ohXC*LJ
zXHVU7{4$fnpZs(RB3K9(@dfV`2HKoZ|NLMkI*KxV54e;X-d%lqtftt^DXqT!zfKz6
zQLVwwEE5%*lO7~ip^T)wq^eCaP&0?A+D`vl$lh_OPPuiHs`|4_^$Dp7sqyt(UUsa-
z5EvN;?>YXWBQkID+`ao%y?%XrWgs&V$ogMAd;ESPWkl9~z}<0jH<NR%X%<>sB)+I0
z;PS!zIgejYfAoGgpGC^#53c7Hl9-$rrdNw_77Xx2b$K%N$U#TmFoSm_{r?IVr^Gjb
z?E8RYNezrt@9AaEjm#O?^po)K9LY`RS%tnuT-G~-!B&x``gKT=vN}s!`Q2Pv{{DlG
z6t@w<_G41U?ra@%ewE0?(!t7C9n|fsxij^}H@@&Y6Rw}DNx&^jFZ_f>7(EfN=)e0$
zn3vR^??}qFfc<3K6AeFmxaOl5BYQ}wF5kDcf$Q(bX>1jG^eAahn)~3$LctoVrL+H!
z{vMOH$7kV^<?ghJ<Lo52ZSwfu(H-*xO<jL<@c>ob0~~jRp8W^iSHcq-q_TyEc%E@k
zVuS|CiLH(1bp=yne9$M=eY<x|iECBI%U0KKWRqKkp{j*Gt7Y*;KElE&JA6G#6jQlB
z4>va^SW+zUjV7M4YieMJnDJzx)ZcXHj#!{PR3D`jq=kz72kNqXb!{!NFag(xttr>q
z@f72fq>@#p#&}~)O2af5hD=OemH_6{f6b=aXv}l@R3Ap{zCMt&o%wO`dm3^5!hT&o
ziv2|XP#;9hudQf(ce4dl_#BV@P8j4}0_2sv{5p?qH?TdRzur?l_0DH}Rx%t*M?A`|
zu2V#G1Pjm0uy0xoV4vLgn`r13YK@HI?)1ER(7M0$aq$ezn#IH5|8pk^00LEQRdai2
zNaro(4#pmLTptq<*a(R{E>AdpcY+x_&bQ`la3h?#xuZB>a=f)Z^dr>v^A5`8rNCTa
z5b!OrA^CV9nWb>4u35K0EZ)^m>tkO1KFzNf5KxzLR+|no?<xOIm;nQP`S<0|^xB!T
z+$#ox=+~|%034nd>Ny^xjPYTU_Qbna=5hT#72}Qid>9I_%#)RU1KKEJ=KRokq2N8>
zCFWao4Ow#kSMYUrym6KLmx3kIxdH9`-J^N#4YTjUN~NZ0nvxBtr4=6vh<F8v*13|S
z`2;+UhzCPm<a;cef>9VOMBv}rj|&)tgVS4?P`{%gZ~JF^MuoEG$Gqw#%iSNjRTxpV
z7K?U-DWlX?6uo#-c#jMJ@N;l*`D4Co<e=laTdz8`^Y-aKX1@j>Cqe$C@b%fJm8{C_
zU~OQ21KqTH$!`AC@pAXjaJf4(lRZnUP>MM-&F0MPr>q}_GWNPyy-~W1NLIhgP5oXJ
zi2L8}WG#$uPGt2t_XT)q(-UmC>oXN+Xu8ep()QrbhjXvOFzZX-Jd!@roVno>#RvAQ
zFaQAh`8R>7Cy$G20-Rq$008(ZX}_yvRZ&33Z)w$>J?_0r&G7wpr!BfF^4*DT;t^F^
z(i|>CmaT;{z7s4QIp~fL(`{eK8XBu_8q-Xv0>3Mcrb8-jn`^ps$&!%B3M)lhA45;9
z6H~vp)tf!zMm!)cu!rWQ7SdK{pKc4R$PQkl6|LF5WEX$xjc@Ex?U&KcW!bVYL4Rz<
zwXwWosdF3-=G=64CT}1!lie<=l1)4-=Lu&$u35n9iRz1F_SICJ%bySrOI@eFq)AWi
z0Z#b`zB`=v77u~FStX)R?^B9?x~jbo0Q~M7fw8yFWLFH5MqI_GL*r%C*A+<$91P=2
zCvB7ug+9$kZl~(hjNu22jp)e5i=b^TKf>bGieqm`jI~@2*0jaZoFJnSPo45qZmd`z
z)CC%RUAJdXwp96m-!R<?j~-J6e&5cUpUcI`f+N<;nies_|DcfAH`PhEZpVj)B&*&i
z2>{^Fl=+ucbWc%b0z}NbBbaPIJvsGO)_atGp>#uill0h6XC*WL9l%hXx}{ZFcWDPN
zh*Mwtl{;Js65cKJ<yC!RP09?c3NI;5PZ<g`wJ=~Y<-7T{^0s%2F+!F4qWb!mi2$d2
zQRcvIqtP056v1b@HNhb=2jr&>PqEGQhqVgQI`S>1s#YsZhnc6dV%rDo(n6U__umYu
zq%{>8S)U&MLNe%aO773p21nSqfqrk9Dk*@IZ~)qk5O1<@@2y~aaI3yG_@sI*9yx#s
z|7j|EdR;dxm)C{LF8WI9pC9Hq4vu*IE~+w9#qweH-%pF0p7{|EU`UlZcir_w<%=Z&
zjIfe0KVy8ON%4TMOuC-FWcc*RDaHsUk6jc8EeEG!898wo$#cka2&tOIV_NXtgVbqK
z!Av6oF}f4o2S;4KpCqeD`%eI4BRxa+CP=CMbF7zNNgdiwZi*FR2T<%3E!<oOa)h_<
z`;rW}u}xJZSY5l5qzioUQwQniu;ri=$L*C^{ZC8j@=YH&YI1j&01iEX@s$5{C-@nR
zdjhRc6#<ng`h%CN54(KP5n8o!(?*8@W%+zDxsXb=&L*wZnsAEV*!j$2eO3}i<N+gC
z_EEu1LQg>NKJttOLSMJ5M%^in7#&$wED+3yl?<R;5W<!*M*%_?JMVYgFV-t*%0ky;
z+m`_Bk7=4+@i>D?X?xOfN-w5k2KR#M-%S9IZbs>oy=1O<MuiAk5CY>v+$Hh8=w^(#
zCtw7{k0PA(J@o0WU&_Ho7$>mkt`zB(2?)BGT`S$b9v=`?2;+q&$4gGm9}E5H^U^gq
zCi{yfc@2drF2(&rpOKPj$MJj`@n%FY5Py61ho=|^FyV{?7aq%%nTtOwkaN+^G?#9}
z2FJnu`5dVS463&4nhDmb)Ky$|IGw>FYn5+w3NnkyCH)bn8Op80nGd|X|9lgT$tJDe
zx<!|dlJ0Y5M3Q~k5(vgOr5Svd@i=oB*cJ>Q@5Z`_nhybfevI~MQAAi47Xg}d7%*!u
z8D~B;XD62>bH~$?csZ0CkYbJnR>0J~?P<8t<0E^BOvO=oY;E>z>%3X;Y?djWS+#Ae
z+vwi9t%?;_1K{e)vXQ!&0t^g&N+X`d2u3&AVMJIwVGzREWn7T66bJX+gF_h1koWj)
z(7r=%W+ZvmGT>SsWE52#u7&H9vRkwBn%eR==5I@C=)=EKfFWMPn(|FJa@w@cn-|nk
zHPWe4Mpmqubr5s1ii3ez$^7@<(<rQOn|8>vZ|cV7a9-WKwK=Y@vgqgt0rR`T@-TV(
z<_pyfH~`=QSoq%%1CCK~*bRAwuu^$8`et;h6;_J>5kBri&N6xK@_dqarfb>p^L->y
z?*2pf%7GxJs96I52nudkB9_>7Nhv{g4pu}}?%VD}JUW7M?0g#E(KIpAuDp2ROc8Vs
zzSp`b@Kbpd4)bFh%{P{dBjv^75IGJ2n9awf2BhHl901^ma2Nu(oRrt)Obw3A!9hNN
z4DXEV!k0AXHvx@eG^^ynV-6C19{2nFxxbU6#6xqWmh4LuCXHAwVn6`MQncdE`GH?3
z3-9$wj&QEuk*pQ~Hyo3+-`OGML=kTnB<UBBqFCh}5`3&Fa&~>lBTb|=%94zueIzDE
zVJvt4Q8bF4gWn~cvJu`W)}|D_%!Kj}#1#e3@5G}I82}JNR8FKZDVMS=?BF}!Mf0L8
zgCHsr9NjT|G|c?(vJ3rTitd@T<GnHE54L6baigaCY<zup_h@J9^eVx+sZm^C3%k`+
z;J?&<joTf`bRe3*g3y^;>7^!Lw$z`o_{yavj3W~9kygr-%xfQJ7Sme&rEFglqe_!k
zy@0T2$AukO2#uWw4Hm65Dvy1b$EJn!u5etjhNOgv7~IY^)?S_ahtA{FjKfDbqHJQd
zU<T1=Nx~Cfyhv0^W@ZFKQ-%9)+B9(`P*LJ8fd9WYyJsnaPREES0<`&PD40^5@KV(e
zN#6f8+0akroaO|z7Y|%7`7~5R(dtrkQos9aBRMj~&mZTy=(}Sg_MA<$8l2IgCUIer
zgf*1-CO_jJNXpW;j<^`VysDHmt&Gi^CguLE;#J0CtA>CIC}{b1`N)*?_AHb^6iBq`
zMb|dwhz8drE`tw326=tnsnp<Gl{0T`n)?@im2Z&lG!0W1{cbyoXD}D==)EYik1frH
z4G4`zhFRIcgdA)Cmo)N{{tsyxX+2ti-zQ6p)JP9{*h<B+>1-N}8!Y*`pU0+Pr2Ro<
zncSn~fZUDoJ{&l9u~HG@_g;5%Pkvz6JVr(zyv<JMF=xCNtdY#ZD6q((#p$N>a-w2Z
z^8vh)r&4rtbW>oPBb@eyyIHd{vWDhn!sa@L0=J-9qO;$h>hF-3g|-Cb;a@TF->z9x
zeGH&@**p${)SOcDvhE6EjfNdYtkT~mn;P00V1xT!Z9a#{3OXBaC>+Mm<o?nrzx(vx
zjHOh8cop>ye2jtXJ=W0T(-8MnUyq*}0}h+h%9N3S-^b0F(xc!p0j*dMF3Gk9Z-$Yh
zN0{4al;<jAq&}>-0xMgi1F)}-q~!RM(G{%XsF>hKD|qDamVa(pV@gwxH@CbOGP=n0
zwx`C36^9p1_!moI*_~^8E?cEXI^mKSrR;eRTd26veHI39B`15|A!(7T@$zpon=YdG
zjc-t#a`Z6bLy!gzGB@EG&I9~K98pTbf%!lld7&yL(1{Vhhbs`qT2uMC=aoyJFrFO@
z%H?rBCezl(PM0-_fnPIh*PF``7GaC_6;3OTX66X<Lk92}zDiE%RF*`t4<q~YSh&``
zDC5JJ<{<X&_$iv^TVmg!ywd$Q8g=6t;b9rSG-x00FU^w*;ty(D;-~Cp2Q|lh$UyhD
z;#fR?GL4x<v3WRCOI1vNf;D))Z!yCXRg7HUH;G{9w|R#qu!(;0@9J@H;Y*|sIHhtN
zf&HyUb8CE@Goa}I@(v8|JlC!yvLo`VX|o$Xn6dM7aI5LfG?teFbfZLqZ1TOu|9T#y
zYdtR8*9(47iQH|k2uw65ggwt^TRpHmilQ^}E(&k}KK<e;hrjON9%<6O2dc{cICC^D
z1xbD5K`84ptJ_XIe7LKSX66O3jE7gDR2&bFnCYdAIwU(I>1Wnv4A*uY%ghFU{PENa
zaBI9CwGa~dBY%ns7e3faXEK8kJKPI?%7q=vvIX@ESVdO3%*yuk4U|xHel}A8NI<v0
z(BF8}i_+EK>j=7l$SnzfO|$v0idQM)Lr<<T+b3iF9_5wiX(^NSi1*AG;vH)2XVUn#
z-DIM9T6e9CS(e-4tYy_YTXM^ovfA!xW+HjF$j@KgmL2AHMBNwMcSIpKjzN9`yZhDs
zjQ30qOEtGbH5?I>uiJ-u0g-_uJ%%Wg!*RAF4}X9%2-poG8fA<!22K<yTrs2`!Gh=c
zCO>WX49W~q(UccHf?iTgtkX2H1#A=JJX=J16dPehW<=<(fXhhSTWsv^9S~<#=15w8
zvowO0M(}N+!XYB{3Vd(X2mklRp?$H;BcJ9S7W9y4(KhvYxjudX&-&FX;1m-7wmLba
zp2r99@4F7y%wK3p66Qsrl3n!!LE%cs#d1N)@SuVET@o}3@Z-;J7tXIayz6%u@OdHi
zNYcxHUQ3hK@UdlnRVmJM-zg7yFTca@1nr}~zVyuH=i$C|#V%QvdrE#@ktHM7L=MV^
zl%P@A2=3QU^S{rHw+xz&CIwX?FDu|$vM|ZIks)WUj%01fl|rWRfwl0LUv{`4wBMmX
zBbA=}Uis2SF-b*+;nSM!+Qd!5GevR*<oTKZyctV)>q!l+jY<?|%&(bO<5A35Cwl1`
z=<qC_9n;#w$j-K8cMP~*iq_3gc*^UaFU&}c3U91Ts7?x*hPA7DgF?%a=vCR)*meCe
z>o&rJ8%6!=Vz1p)dI?LbFz7)ZzuXdDiu_DBoPO1i{x;BTL=!VLF~}o^*tNpVOCR_7
zT|7(29?#^?o1_SmLJ)HqtP(*93y=Trz}y}Jh|2cUZx47Ai$vU(*VLrNW(=-9`bTyY
zAoR>V@E;zJ>dfFOA!Tzrv=rK0cugtKBJ$t3jjjCA!pKsFZeA3<O3%!nyy*@^=5$`F
zl)KUzrl#)A>OhTnhG;#S6<s@yDD?s#@t&Q<p;5Uj6#zA>rxeHudZw>HRk1U}H!KiU
z`iKumYW6Kg7L2b7NN{G5w9>D09Zg?x&1@p_z$e3RXN6wiE7lWMXBn2%5?}>xSyXOu
zXfe}ApmG4}^KY^hezf|n+nU(DBKOYPnDX$7sZ>usE#E_*7V8%4Jq0$TIUvN3{QCA<
z*fRoey;Xg!cc!S!)5r6twdL4n-Zx2YvHx2IXG*L4{Si_@*+QfAYQ+yUf{Y!O<CC7}
znPqd@3%loz?3)|;N<O_V?hp!xm=7MR!-+&YH2GmHXNvMOWdFQTr)$IQwYOiB{Xzmh
zQ-1XG$*_FQ4v`2~cj%xw1V#_l#mT3?Q?{+&(LgR2GMg${?^oHC!X&ngK>MNMYDQpb
z7bQE+9LH)q^+BhfdpdK|2h=ts2^nN%(ahd!dyz44oHH#nD@$&1nZg8!gQo{NyVw??
zg^gU_KaF$z_+>^{=fLSfqWh#hE!=~g-!Gx8xx45;uwu(lCm3D{NqY4r1f=)(i%$qn
zh~I^78Br~$`<f9GW98m$oBR41cj=TtMgPLZ%ddZC<5#M~;$H^^Y=|h13y))2pBLC=
z1(R8)l~(cj@YGiJ)%wK?7czHI>310~_vUTAWApjJwOEq)#8+g}dPQm7i(mR`*da2&
z8T8e>wEl6VSWlwf>xcT^e<p2kl-S_dzk9GaKBS7>6I|p}4({G>aEPN=?xN4$n?0yL
zD7l8C3eU_9o1jhPhDBs%CVT3G`Fue5c67r=%3LCj(g^kTZ;bgWQ){o(eigHkxQ&D(
z&ZTTzc<?<Q@DcTP$}<wLFQOzdxN`ZQ`=BS(;eN0|4v>Ygf9pVg+&4;U9wlvz`AS=9
z*Jgedv#}rQYoH7*qiozT`Yi$Q`Srocp3I0*P6Yq{;KGf_rN2V?d>A)mS~}3xB~6Fp
zCpagkD5v}^KJk|sE2)HdHQ1RycNeG>?DzNP^TR-&OqOj8KgrPvip=Tm8dz!?8gt*-
zaXMI?7?_*C6Zj)?C|zgWizR)w0rA!bSPy+gLcJtEbAWN;{H1@_5Rgg|4qU7+KYcNI
zp$lD~e<``_bOTk1C#+c&d4BVHAhP&pw&!EWIEsiYWgj;K`~wV`T)Yg10<!|M-~$J|
zIlJM#yP~rrf4l$W<nrs(fGn&C7qPCi7#>|4Xb|ez0do8UvAJh<mOm##zt-ZvV7A!&
z6(J~qqZ6Ja0mB~{+||pqrad5|UIK9J)ihAf947p*I!-_k?uNv?U`|k&XF(ReeXG3*
z%LCYYVW45{XgAyo6x)<K%D?W*@QRgr_Kbd&mf2&QH52eHn>1mfyyr{PlV2_eD{VbY
zQoNHkRvTayTU~mD@QwidvIC5_4*v1w8Um3814c^4>5Iv-Q|S8qkCQ7;C%pnNi%3{A
zFHU<fMr;+DHi^KUbGtm^rFoa&+p*rq(1i6s@aTcf*mbffE5Hix*?oP={ae@nypJVA
zYSO((08H#^ek?4JB;`+jGJ8*k<8r&}n<R+@j^$SaIg15>$a^HpTXRQJPIltLmKMcs
zDrJ`<Zew9iN`j@s{1%CSOFHwzer=gdd_{0Y%;Pcr_|mYG!lW?(@pz~~ne5{#TU(%$
zS;w#Q>CIwi=Ao@Utu{xtD;vO$Su^$n8;sq+V6N=vh`zp_Pm6M<<!1Nv&0yR=RT}hv
z2Dl-6uJB&WQ^C`iHOOBVO>#WHH`+I|#D6#;4b;!l_=E=CUnAG11#kA{M(7R5uA20%
zHEDx9bsTSwA*qAIrUf_maoDAZLHD1)cXN<N3yPQ@X9xee0a5QH?(6RdOv|Z}HVB8_
zKnXM>T@NS3Rp)P0yZgXGhLx2Qt0%Hq0V@D5UhQR!q#O|~t)QFw0M1pg1w~x7$NdH>
z80J2JhbC4>21G@|Pzxio!G9Tq-)t7!?Kn7{ho3<@n}v-tJWf&HA{fM(+0mIUVLYQK
zO`|tVVSJeVVF^q5_1mbgQ4R+kJH8hO;tJWgz2s~%qiCX}WVX+4C-KaUr_T|<cpI&b
zV=;A<+ET7|cbw!=Sv4N+$i_{6cWJ|m>_m3HlnrpRtuVHE_^djL!L*Uv+ex-4(k4h0
z&*uE|Mbu{(AH{s!kmbtP#jHSB{{2M-z#8JiMOcRHkkpN&k4V^0uM&fI)dcu?vO~hO
zEPY#rg?S8Fu6;o4UXC~9*N{mz_o2_H!h2y`pe<X8)TX$wVmvIaQP`Ml5i8z=dQpUX
zQ*ejnLC}XZ{TBcB<ZnlF1d5`FBOe?KtqLA4i-^g+lT(r#6I*to+Mrh!N8E0aj~Je)
zLcn2NG~<Ch)9QAc@fXKHj;G!tyWpFd@-)vsD?M;oney5PM=;ahWSIK_FV)|C42O*n
z5gBC29oVMHq^gJz`8t{U1OZ*@;y<w4V00Ycfpz+B6|~h_#+XO_>Z#!AeI1>Vj>qi$
zsua`r9V_k*Kubv2ra<g0Mvde>;mR->_jvw+Po};gpl301f3Fq>!8l35IY|L77{E}E
zrhh5T7T_#}8;^Y+5&(aOtHp|kyfp8Dci1~*=A%*KC!Qg&P1B5GV;CTe^oh=vm%T%d
zsezwg^Y$2Q3_}@j+Yt58ByH^Q2u66vY2A&(>MG=(2kUv{rFn%$gR@}X>A814c&9-o
z31o{Y%c}8WS6xD9fzdGU9Uk@CAKVZVkcSAmB{0j1Fg6RtLV+Z9>#$(Him3vu|K5Jq
zgg(O=NWAv>uLUo`op;|5_*P=>Wrak~c=xL9rx>cpdA7px%IABQvQ=qM86+3@;w>e0
znaq}OqskcfNQb4=6^4=e5qVQiQ47xIlP@QAQzAF6FpFRO|MYKBg-r6>$pm-0?;4%c
zkk2`9Op6U0I6`_BBSLzqXq`mU?P*PTrbL^aRnp6F!hIoT7G^mJAZMbL5foRUw5O~`
zJR&MhWE^Mft4njH=HeBrNAwta8YOCS^Q9I$ayVMkNG0D~Q5J@hW+LiiG;il5WwLYN
zQ)^kH&S&4vBZef#f&ldfWs!*Vos@x6bcZQvQlofi*dUfBSh5S4WP(bK89M2b7^TH6
z3Y8oEeoEbc5Zd;Ex=g7@v2m2BDvT|{N&Mn1X_hDf51?>jhO6n4z|Z+Za?K|j!G<x~
zq)Aa!IstBvF&>-@H3gfh@);v2UapsGa;(5@M2KU@L$e~RaPPti1RYts5@=fl$%;X9
z#N0Omr6WBe08txsQwnmldch8@ba$|>eWoy*2mwF~GL<@w!CJmXy1IROcxd#GtVKNX
z0)!E8>sNYEQbx}C%Yk+K;j=>{JszfMpCL>Yh{GOposkN;Mxd44jXS&@eWDz|&ZfO)
z_<NATgtGK1)bPQkY-~A!5~z;1UK$PcF%;R<6=_xEFmvSHMtTH=8sIm&Tbr2n&Qw0t
zh{?1jdwgl?dSZCy^YInrE$q=I?A^%|$%`Cn_q*3mZ~CaawafqtZPolyl&EqWjLh{U
z)T4AjuPwfqdhc*ejy^R$$Lu)#gi2XwuXJBwmQCXe<FAEC7*{X9IYxhTxnYKH-2I;=
zxGU|0Wa^W{B&$JmQ*4dU5VeQzVU&I|ng>-$g7DNQ^Y3Ar|I(Zy4U!tD3=~ClQt!=w
zLM7i%h0@^4?p7%(4Hql<c8&=B=-LM_pU3bKGK9W#UmxlMNMi|oqyiuQ=rwc<J?<N*
z5~-SW33U=|{@A<D?x>xYGq1K|_MZw!GS#t{4P9Qod1pbnH`lxWvW2~JM|~459Zoso
z7yVzcCVg#7&Nm_IkvySlBY_u;KI(B-s2@GX(+Kk7b0($|4=VubVxD)QSWck)IrC`l
z0NBQa(?IIAU+Zf+r=_{(qt0Czeu<q&v1-3X|IC`MTBHeFr0NY86Ny!e2bfh9(uuZk
zM5{1=N`9vMQ~1Pik9xhNF?4T9)te>RA0pcjOg7*@09A3Sm=ze_7s6x_<f^;-*G&HZ
z9_S#^e;Vt$U!`H;P%lj>C(k2ww<oSK66YD>2&k8UYFK(DiX0_O%=r$683b&Mh{P$a
zAZG+4Onmh60_+-r_wOSj6SKeFbZ(NNz+t0ARIbXg!fq9cc`q4r&6WfEz#gpdSv~>L
zu$)SoQm<j51TRX6Gm_>KyW101o5=Ixln8c-%aqrA#b#sfe<N><XzOqUYz!m6ee<n<
zYNf2v8B3@q@ni-GPdznb$tX)&`%mwiw>TOs`<}3F>@55%i3#bmPvJ=nvg_m#B|U*i
zWJk7c{OCyK8pBqozIZlmh$&v2*phS)JI*Fd5U?TZa2A}q%{n++i80V6C}m)3;&gS>
zwAlJ+lM=zlyUrAyacR0!=5A8pu!ktF_A?l)d9MRBFHIR&7Eu;aQh2yTyVe%mvehb9
zHlM<&>rd_hf<F9#9L$CiCJ4wb>yB)&JxNc#f3)1q!FjT5fNgR|4Jc{tCks#K!xHU+
zn6i8n&p!vLzY9!Kv#61<PgF!{x=&RcI$(SD2E#AP8{ayEVMtco`PJmE_y*gF2X!YL
zm~Ad$Vt)F@)J@E-I??R75haSK{Li|sm4jJAP0Y+{CC!UsVP(N(_<4!2xqKrSu!wVm
zQ&*?1``;>GmR@KiAWISY;*2ZWIp@$nMKK^{Rr1Om69m$pufW$LOMqGJpgcrD{9=%x
z-IM!Q^gK9W5Uy9&MFSk>iK8q<P}RcD)b7;Om42C1BZ@-y<m!3m6H?X(YKM)x#8*FU
zA&c~%1eb<y!z23k6}rG2nGG;fS0^v$^D8fjFfm`%ty%!mEwU?X_9vS~I3UlL<^#t4
zY8b+XA6VN#l=ps26=J!LhEG?M*+&PbzWus%eodHwuq@sZz@pGZ*1V>%JXY+;?|#kS
zjn!F_K+Jv}S%zBUdHww^rUzv5IC>7lEq>u%M<LJnqW4!kb`B-)F8pR|QbOy3XlVBl
zH9FcI+0EPSej7M!bgUb69K`I)7-Pf=zgglrqdKxf0Ufdq0+UHSAtE#_Q1_^3DORPR
zO%mfAE}L8>p-=Y4_r~KIaeK%tCL-+!=zu&JWtT|tYbygg!Dyz@<GCkzksf9*J7Xu6
zv?rF6YevWdTgM(}Fq_3jiV{jnQfuT7Dw=B=HpD1vLo*vc;Bm+ufh4m*e>!;v?31yc
z#0f|<k?%+xa{*>opyMbjY(-babRYV$D7MWbC&_DKF2PNHch%f2taY&jMmp<xKv}i=
z^>iN7DLa@D+I_wIB%6&E>2x#NUXt<6gl3Zx#m2k;A=cFyNald0*onh@uDdp`$?5rx
zpN(Wd!HV^~^@`vOC>zP(?60Dm<^?RJu()W>Q|pv5xrQbznBJZo*ih3nqM#qA;ak{Q
z5_yjz*oQDDt1OXL6WBrK@L5;b7|@<1YHXqNSa|z7)|kGRe#y^5bPy@8_$a@rTyXvB
z@&UL7MjoO#_vMO<c$^ihBgp){G_QYp0lL~r0kCJh=B605*zB9R?9`MqxLw0e|Dq{W
zgLF9w^`e63!3~QOGx&6PJD!+9yS+fq=wY(!DVR$wX3XwS8p-04kUpu@v_Fr^=1@>^
z)qM^lJkF=g@}I!_ZTqV#vB!B7R%CH})3n6qPG~%bG_oaDq}fHDw>FV6Uli;jqF-Wx
zob~&S8GI@sA&Y3?_iWesEr}r!Z(yh{Hj`?cI<>%GjCke{F4UciY8ktn<?Ei#$dXBA
z5>8&$q=o&Z!~}|g*ecFd_=4ZULF<osetI}wJ%OMq_bYA9-yNz2+W?99vN_IY?+C-Y
zzZke|{yJHScQ}9r=Lc^QOwI%o%TvuTi1ec0TxEa$=zfLSs*s7TyM|Tsu9{(ap~zkx
zc7DM#w(s-HRs<GZZMY`THM@<>&8Z=>sRviwLJ?KfXJDc>rcGd;FYZ=Z8E~smWMZP?
zw~Alzgpx}mV2|*|d+t=(X5n!#q4e9S-wx9&RyK3<qoooNBNIEGL-TI!ytCKLYIX~B
zU&O2L`&t*)IY~fahk}NrJ@)1uJ2HuF`2x)sis*X>PVfy2Z?w(YFOdndebFqMgo>aS
zFoXr|3!D|z0cMXdy#8(4R3hr7jgCi6Zvt)=X7k`DwszgQZe(&9^IF4IKkK5peA13x
zTUCTTH)H12=$Nb1X4HEpC+0tYj!R6yZqPntw}F-shL_m+A)JitqwIO}C_C9n$;b3h
zgij*ggy$I*wM!rtlKxhBud%WttfR8A%sN>1H%`Py^>KVib2ZJXb!Bm8#F^t5l?JmV
zr=I1IMJ7z;En3YeySu}>Gy0AL2Rb|&+nbYl8qb`|-ObiS4owQ#w+9X^_7(ar8QYf^
zl(%ne$;Xf7RKsLx_y+stknmH%;d80H-iX%u3?&V*&veP<aWYmRXvTdgA`znqS_1d@
z<q=T^N;S}^o0z+Q%q)r)y<l#l(v>u#SakOIaf~)nv|sdT6HWF?1xA-JXam*xK0q4b
z?~qYy@rKzVor~qtiDs`?9HUW4ren!jP-d;WYeUdl&b~B=)8NPQv-mOng7y9^e~UlU
zpALhh*!#2ej}r0k0`n_7Hgr^`&fGNA)WX(34To`Ly<B2~<voj3Bfl;7)PUXrw6WE7
zws%S2!aj)93o$)SaD}BJ{mp9Exs=v8MA^Q6J7uWx{`n&GfzNF|_m)DscOL1Oe{sX#
zcbriFMEIm0`*58gKtkhc4xbuQ{Ju%bWa8Sz!%K(pr?ymMh|ycwK5q$OcDcmF#Sx7T
zVM(>wx!@gvRL>79*%VihZ^IGCi3GgQv2`PGT!J<QCS-SFbbjl;|FojHyqUltU?Ui!
z0)=<Ew$fZ+KZu~-%Z0_Bx;<d;LDIzZ<gN57-+8^{^47E+4U0EHfJF5lIW)E@qK&-=
z?>2fW20Z66WOB;~czE6N3#aio^cGFUm}$%XZ{6~BV6gDrl6_=fh?nN=>cWXPSj^MT
zwr+0?ahvBZFZosJbs*HH;C^FudE>P9_ZWH;!?D5QYL}<90#uGLyw5Z8a%0)7TK{oQ
zYrm$tfk;V)mWG}1X&lOdW|F9vGd9y^!%>@pp@;CB=U{Hqwg>;rVqjGvLyhv4WW18t
z_XU+y-sDg=nip#(zk!u9Lj&MePLIP*7^&%@f0zN)9WDu}DxU2p_-679+kJ2*_k*y<
zo|(kGJuTCo>ND$WP2#C?ZmPqy&If|6IbY3wBg?VE(1y|&O@=b;Y#5gtc3_8%8)Y5H
z!%|Pgt2ci_^g9R<$=O-ZmnnO-A6*#iA0qocut3>J{Ap|iBda&1r*zGHW7(bvc`)QF
z1Z{Xa<5j|R3f^wZ3TgYT@yYM21y8^DoA>t@nEDLq-o25n_w%=}d&CS%acu3d9rx|l
zNTMc5k<dq9a5HVO1d@?C<4xOZ%ycX{56YE#6iYV*ZRhOMLr7yl3&y{<_H34d>|f-P
z$P95}QS3KYQ;<o7K+npmuWzWYt;bL=O1PlcmzC4=U9kuBvI@Qa0>S&S+A<E<rqc;9
z=vHoN1>H;Y(o4(Hy!D`pwR_#!%=a5mR4tae)Y11BtH05jTB8Y=o;ng8e_cJ!s;jFf
zYQ!2DCu$wb?_m4r=;F3EZ1sJV<if<!aY*<83c%)BInz_pPIKhvyD;@Ic7rhjB|22u
zTmS>&I71I42`uN@?OO-23q!|=Vw|^rc*9P>M>Y?@h=a?xD{~ug(?vrgL>ORVqnJy4
zn#zqUx8N)`BS3Bo#dJ~>vj5nl4T;>Aw>qUI;Z|=ruVpm5!VpL&`v;hs-|sVnDl_3l
z+hKJeyL@9X{Y}T8RLawN_b_`THbw+TPWft{!%Yzp04Cm6dsj!-R2~7uF^qL|79+ho
zr5pE5&Z^_pvDqpa?RQs0qA{Ox6sh4N;4{AB+$3nPBoQdeVd|JR9Hp2g$NiMjnYN&v
zag@dW5U8wK9j*4>Cc+>hq6yYKKjnJ_alCCG+SW=2>_@?|f-O&|r0X9*dm$Jq&to?>
zP;yaUA^L%(d>ZYFDrPaXeZ%#I-?Xi~iny_hHN{wwM|t|cMLu6;h|cUgey4nB`%?<}
z+0bys{C{vvdG}ux!$Z$7JBoukw{9{TSyMJGaHGvzH$9<}uW#oy=3oEq$g0>D$YKX>
z%lbGr>cqr9fUd71UtcG)@S7t;2Q#D9h6Z`o|4)SX=%37|%2)l7^#m*62pcB?6;OXF
z01Lk_nyoO~dz0aP351)UHc?5-41jI;;L+o{prkHiCTA-C#`QH+VdKFi)a)Jqg~#X;
z3it;PHVPXLEG1{nYnYcsUU~q_agkRr#QE1g#+cKe!W^_BUg-KV5_#DKbkm2Lu`t^O
zs%Y9QY&v+5U#pLwqED#h9fn3V<K;y+nuU9R!<>Rn`JCKgNNhxL%^HBKfGV~UDV-N#
z0O9c(_;Ov?$D8-)&K+$OHXd0?w?3Snnu#aB@Dq7Kj{Pv-pJVWWPM%tZxbUtFrYjsW
z5V4bX@;tecMkb>|(97oAUNL`T;VzEYW0y&t|K~F?8;0E6E}<a_nlg?&5C5<=akY^&
z*Qm6kLSbzSk$?5<^CX_!<_YBO`V;F6W}L+cy?vbZU^!b#lggxF+87b;a~kH7Kmu3@
z=?Oc$(Meeu*ja`P;s~3Q$EVfD+rmDATo~<h4DYipV53OS(ksN9xNGnM)l67~Ll#Rm
z-8;oQbx*$SeIJINC87r&k{fO8)zvDAD-K1s5DDu5e~r%|TSZaH6T>kUhv;Oo1bd5k
zYaHQBCu#T`b^s%We$LcI$FVDqW7oJg7(0iO`k8-zoH}P?;wHrv>rL{rXt{h|75AVM
zw4Jd?OwjF&K{BaI68SmIX43lpzUYTm-OPphNY(qW0~q;=_|=6q`TZnpjHn5{8*6_r
z3H@Anh*2tG2)lt*^0a$m-?OtYZ6A%v!bg6=tRj&IA&Q4n*UBK-$B5%TR^$(xxfBVf
z6R)&BnX-nTBui|wZ*K{ynaT{di6hvh>s<cXei+GYsH^*j=yRRI4oEkU?@AnV=T9$n
zd$)$!@@QWF6}>)Ba<AC0IIxl(SdOPjoY4TjH#jwp<#F(~723QZar5*p<VXqHXQD5-
z+;N<Q>Zwd<um%$0-0&vU_OYGRgDo>PwrjQvWH2lL(NrwaKbndU4iW$vW}id2FhBQ`
zi10cs=aUU<+`M{m(Ed>B*-S>y0=-sZr7zrh``akhy1)HUFG^Z2b@3)q<bRM~>G0Zb
zEL76GH0R~$(CQ4p<m6yxtMv!FvYN^)d7N|d4!AvrkxucGeI9XLtV&}obuAfO%A^6Q
zYstXS)ggWcH%t#im}qW^Tbq%osjkj|fnHG>SD_H$v9B>$q*0c;rlf0>@u~q+mzY8o
zAxzAnxn09yYBDu>aD0W_U_-HUwD@Xu4SeK!duT{T1h!tn!V2zq@D*4YjErg9`8<Lu
zW#swO{@o&FK1auZj*V4)0P;>Elm3?mLJR$;PNkU4k{Jl<Mg9I(t$h?dbJxXhqvF<f
z@@(=vDaC|M*!Zq^$^R?T#@c+uV<!-=-{nQ21wrLJF-udg`zCVM&Jjf)^IS0FvZRnJ
zcvt+y&)c~F?5J-jgqXVCS1)%eXD%l((vijSaPvX?UL`_^-*Cu&#F5Yw-#MVCoI%J@
z^)U^w?SxAXkjZeh?z?ZY<P{N#-P3c=j#&WHx9`VkFrL&2cINIX{FqcN1Vy2Htl9uL
zW21hfUX3Bw5qid2pHN3X01c|Ds88bvNE~#c=!i{8Ol%LWG?EzU#F)CW4?tz5BM3vc
zhEE=vvs{k@xL;nvEk8O!6T1_;!RMYsj%BV8d+-z(rgV~QbBH6ECZJv)KZs9Ur12=)
zQA8E@QOSjZC7GeE{w15#7;*+7OWg8WkSR*nAd}%G7;TA0oDo<CfJcD8epPP2mVO2%
zd@WgDlIXdZK*QI=8V#sYB|ZPf8TwGQ;*ej?B_RH*?aEvjAG!k2+v+UxR(ix7lC5Eq
zvMl3DN20=;JoSBn17iko5_cvKf1foa{Irs$^s(MjX0-qhm&C9(9179hQ9Wp#s!>TL
zmfSzOLVGRY<qH@zDx2d(N_j(Y1GrGK+Kg%rGwxTDvO9?5M3fq0+U7FWVBIXWXl0Cb
zeWUkvw=!(aZwE?CJ7fYqV@8F{yc$tgtB-_33r3k075&xrq~}4J%=pt7lZD(5GxV2c
z(>|BVKDW_VH%d)vWbb8$UBj*t4Xz1v^YxkefjJUqcb8La^>?}~{w{HMm&6&ElmE?;
zzB!rvW0R+wo6elBX+UD|%Sd00Q&;)YM_xSJz54T`0i7S|w<qP;7r`InjaQwVrJEoW
zagDlYG#AS6Zwg5bQliJV-I&`m7NspLH@N<o$(Iy(<GS<&1%pO)A?f*gQ?N2rI9hUb
zw7%_pO3riLG4ZjZiW7npioJXG_903aMs(?kLZV)b>{XCgSoiF;R`?~*#{B*LxDZPt
zrAatMKH3~oh}XBTEnPvzZvD)*3HIB!y?YSWCBh^DWj_4JXdEXX4{23(VX8GdZqSjP
zT^yrBP4n+q`az^UL<r-`4C{uydLt9D*M~;j_n&^SO7=4{p<AF?oW5il8LNU8@Ou0R
z<Y&nG@A?FI@?paC-<w`B;m6;(iV?&i;??qu?YQM;pel?!ZH@o6Uvm;{vYIy0>Wy3a
zgpkzB9u%87|LP6hG&V5f3FiFn8*?v-6*PtTjnD5G`DzqVU;cgGKSS`dM)1tVC$t`$
zc>-WfOF*dv!s8VH@0uEj-#oh;2iO2+E9aNA=L1fLPj1u-6eHmj+S!F28$Qys3LFVT
z#Xr$UtpT$O<`pa1FkrJEF}jck7nx+dytpkd#ZoXjkw|77xVe^2F-eSb4ILOxYAHSD
zhkW4^W&tn=!L=qb?*3HOf?T?YcO7=&ad0fNjd8jGyT!zb61IyAHt!sW{cxWis*kbt
zRaQ{$@^H+!9@+AhPDY<thC8IISm0u|PYui7_H@Ay$9CRuy)}-0>7gYEuFcne^_~2Z
z$3BRBg^<4g+HH-KVr`k+Ng)Ym#5{KKr6mo|4Wz`=ZnwaBxd&qPXfqfNn1kQpS`aaN
zP3%(3IcD}z);|f#6-5lO4cq)T15YjPye^?nLg?4p-BcD7rkGKUQGXLjTWl(wVvGo$
z&_*7sbtK2Y`TJY>R6|9HF)WxdFMFpd%oOr+CG78q6}vh=3Qc@|*GNV8JVZ7(eDVb$
z7IpVaXhuz?yEylyCSbGKBnIeBN}QD3N$PG-SYwP-=4K$IYNrZCR66WC%<C_jAQ6<O
zBcRQo=F#uTEL)HHjCB^n0W^yJhZnO|Be(X5$039`XGamo;}jXClh}pf(n*yMSY)~0
zS0lgUjIVKnh)rlyd+f?&VzcZ_Mhb_K>&#yV|NV|DR{UJ%PbS0}_?j1Zt*<yzz^GK%
zMG64aeK<fkbK-u8IOdnq017_N$kV*I@NG+^2HcKWstNB)83ddFc_A|cWLucT)sof^
z5fbi5WYBom)#frv%1x1i-9G~0tM$vkr#YDfnMgB^YMwd%0nE%9r@SJI^HEFGoWIDu
z5&M81#lFT+tl-r`7@zUGD}#|?2%IhHAenC=Vsj(@veXo$qtn@YYrmgi(qD+9D0w$z
z5?(g_Gqn;a|7QxbpNx%TF-do{;lS-wCf+p-2=5u52%i|JXFu&FZc7U+O1f=dOC?rA
zk_J&7fytumqB2WFsr<VN5`|jhhmB+8ekF1N`G~oT;y6`GyDO<CQrFrOZ}SgP?-{Zc
zW{4q)OMi!kd)6WB?0!#$#UzO8Bn?m%iLwqbtNrUfXHbXdVrPkD_r#saq+Yez3>$n=
zo-e8IqJPyzkxpp#V7CiBq`g|?2KVs*PyU;}?&_}>iiq<a=#xL>UG^pEIRTlZbN1cT
zTeuVgj3ZDi+_J#I)C`i7?m0i{!4u->c~*6Mo-Z-Mi(uY_&t7$(qkY=Iu22u>BK+a<
z@f(OY;nm~vbF}dWc10Wk@9}y)bdobQW3VjH!lmMIFrI4R-qdsU(I*kYb5b1BZc(<|
ze6a*?WxmB>XM2NsvwtGgh0coMv;ZF*PaLbk-Sbc}ZOUJ__d1#VyKWaUYtH+oU|Ooj
z`!&<WX_*yM8~QVnJwB&LKc&<t%MAE3H)fnImV9sbC1i^F6Xzso^Goka?VmJdMH!<y
zaT4+ChA(0xNL22hx{@-3Jga7AR+Jwn_QSl-rPHSZCsFGv{ao6%gOV5X?{~M+JRxeK
zXOl-d{swzs`5CDVovmOs&w{@8=2IIrzUMdOGiU9*=wMvG{g<ZEmvb4KRm6sO`}LvE
z2$o6y>Y53C_a%5jXb77X{qpKUcKt0P%9u6&rNl5T`e_OXx}s9EwEFN@20bj&$aIhh
zkN$$<0(2q`zUw|I-~t40N_wfF_Y?4(Rf?oMgz(h<CeH`8toB-0TyDsy(9UAxL>h|_
zBObsg!T=4vtJO5C4an%A%b)T_e5bzven-XBM1I>usaJehAAhL!Xm*Q-`Q`X)nl!{)
zpCO;MepXCF*pt6F=5ksPa@_KVe(DC64|-M=UM?j2L+tacp-0q0$G?x%)-bL64fn_l
zGKdl4sMc^M>DpUP&~UxWXG_z=yY!4P497-pbvl9Fb-li`pn5mhJAyv0*P1kdVuw-a
z<QluvvFh$|gDiWzanGL6?ey0)?~H3k*2}LpTyqV(hL4Ylt|tv&j?i63sU*SHaYp;M
z;|S^{5Hn}}p94G9cemWULAyafjpu6WkockV*kz9gRD05kVk3R$k}!RpAERkGirhj7
zlJ-l=v<TV1ECOo=HS#ViC@vbqK34;4&dO~l@)3e(E4fPKWZgby$4wHNLmOjlWqD~{
zR&<m~Nq`}MF02iYpif{E^sT{{d%0wsv2Q9X3+^(3*h`sBxcmUJ6hW2k+p-3Yuq5e2
zrX$!LbHceHH=@!pPt*?76~Y4`ZYXiD$54EJtN8}SV4xe;eQ%Wy=n=eeVOR1DHJt2Y
ziRv2x`^Sig(R~;k@o*Ay;s<U0y|~NWmbui|`G|}>B;YbGSK!mG@=bamwD?#n%EaT>
zYNV06Y7p8no2T0f&RHZ2HIPVh<1G;fa6BDP19H2ZL^)@eX3@E#s%ZQWI6yb6KAjph
zBc`<g5By~W4k`^Q12BH8Bb5AxfsfmiC9%qai`$e7v%TWgdqG+FcD(^*)T|V@sh};<
z^k!fntYYMd<A{?Ther>fFmcp2l8XlcMu|(i)xh6(xL-$@8tjf$(!3d;=DLM!;vTDd
zY3X5jwYfX7NlA%Q-t~Ou1|e;->Fvr>X1c>-x9j}?sEZkUzjl)uMS78XSZMWizzzC<
z*-0)vf-XgAGZQ)z;oz3w)&ZQdtxg=?u@n3`6C4#}Z96Ei9KnvACtOg9a;28pUKBsE
zB)IJKGw>9Tt>P7Una8_~F%<~G+@B4>{((VdBQL<bb<yK9v%EC#-nz_e9B!78)tJFz
zHhtl%q5jAv56_-{>$So|yp#i<9fA2gmxt!nHvBP?(CMpz@GDlIpABG-uv`S2h;4-{
z?w8(goL-<OE@=3(=`ChMkcm8%J;GF4IzvZSm8m6FnK4A+hEe<kJ!ekhoN27wXk+v*
zIa5ym|L2AhR{QrT_5j0Q=!b)Xyfm-pqxiyV;2AQ1e66kC1$H%RH;#a#a55RYf#Lud
z*bm?-CB}|-iRm@OEnD1l#P+$<uHoHU>CgDDZ!L1Q;^#=%c++R)5c->#moGC)IeA&5
zvtrX&UH0a%Jf9$7BVFB~KUBM}i@fmh+|7TMzJSMe!qg)!()@Z>u1F${zJ}Sa;V)$G
z52@K?(&rXsZrva3*+0EuSf3Gj->jJ+20ex$&k^G5#6=bW;iP}*s5Q<hmy>zWF#qGB
zJ)N7WmYhVcjsL2rlr8i1%W5LFLGZ;(UJUULDnqM(0Y5Dd>-sKc1r5DH`#f=j1%7k$
zKaU*mKqeaR?Qo0m#0vth0L?aoDiwm>I+f|HDGE7)nd!|{0{wlLpT&PME5Z=HEPeTO
zmFKU<UYEail1}DKA4YIW%uE>R&OhTJLuc;c*ZcGj5uDPx8-xQ_oW1_InJ{6pTK4Qw
zY^>4iZDnlZci9aDK%hO@1B+%AbKpSltSM!1t@k|1)_otrM<WPS^*9j2_Lm<4P){JY
zn@5l^2Lv->TnI7)a$(Qt`m6W-$5@|ty9qPz>rgkLc_!<Sd5H6%E=Te93FLY3Fw`%g
z1^vDQrsIgmC#}z?ZCiBiQ#k&A@Ow222atSNd~>2ZCQ|~RVugMY2Hkj4JOrJG4C(d%
zORwBPK0p8=&=yqNYtcJN4&Z?ibIG^5>!%E9u?GDCY!9IK5UBNfsjJ8<#PdNu8(59{
zc~(yXk60DMMR-xNF}8k+?ma^u0SS8ZT$GZMf11rndtFYdm99)d=3xxy8aJ#qX0J%(
zIuL%lXaG^XL_cbfM`EA0f~kNT1I#Y^*|ALNQlb{THH=&v2ofd4Q7u$;Uon34c$C|H
zeH^5HCTXNn>aZE)W4ZkF<IN(MB?;eYdfLY#(@DRVr%}yw62-<@q3wf?pHPs;`#A*D
z@#{ptSqrcc1OXC;aE>_5YOgC~#szgmBl2m`dCf|2!fuFJjC{_E4&-7Yd-`@TjqcV}
z<QZa6(^OzN>c>&wIT%H(!8K%KtProP>`Y5RXwcsQ1qi|tcoY>-=WEO1FvP~HK0y%?
zKl{kz_UiH_6!EXO*L32xIzwbLtO!TY{BSFK80-_J@GVjLNJ2l|JYdC;la-*C6DSEO
znR8-P5%@Fw73n(3L|a9UV&-djU-X-5!zr`YP%YJvzUo+Tt^UJrtb)l;8T|I!`}onX
zSKo<3vr#VL7#f*P2mL%tV&An)wc!nq>2YhZI@%l|ynKFa@WUI~mI`eXi>mH@n}86L
zjG3bsAk+;CfxI|uqq#=Ls;-7}rCY?_V14weenZz=<>@`AGJwrj<zhCocL#SSZQLZS
zUQe-ER@gce3@Os<7H9EiKdkF3J(C$5283u7hp?R3bZT0TX~zR5puGmFVSo@i!bGUH
z<z|H-LqZ82?57WiZ6WAWbX~)4_n}u_9(_OlzSq$;F-`YyQph&P3dGGz17+}#e_iT9
zhEmq8rrJos0kLi?9AnXMY2Jw=;yP{gmSA30|3H&;@&YOVe)xm&i07J(y$x(UDbiFT
zjzp-93Bkl67C*-h^&G=Fe&rWl8E|zV=Zd};rs%_POCdB?^{$l+2R(pRYvA~{qtqr&
zQ?zMz=+-&%{PW%b;0azSV>oiJOqp4h=^{mM+flV|HF9<J^5eqBZ8s6D%L@I<IqR0Q
zpZzdm>SoUZO&TaUdUej~KxRe1Y$Rnzgn<xHVxpzd=2i6t2DKpUKErQ+bH}|d$2J><
ze42u6YU3(NG@E4y$UcYMCZ$VtOWuSCHMnvNPD0gi7;K|eACXAlsRo))uU-l5Oi#^E
zQQIXMHYDNg8UEz;ekUDHDen@9dVhwXn<IU?pK?|q;(-uz(J!KR3Rs;2o0axa3^%W;
z4+wgTA6-)V-rLiW>>Mkl4{R~KJ*9?fc@<3^65qSw^CSm411;i`{mVorwW@mxPcjgd
z*tt5T;2N(0+!A2HehBoI0Gx07Jt(tVnALp~xzc;{K2F#z0UQ`0P@R=XnpYm>8?k_g
z=Q9+}Ya5X~eW4P;clLiL%;S<xv7<&RaTpzTOgV@kjx-F$?1|NqWdutBJwrBD^$7*F
zVAg35?rAA;iMlBo%{i+-CY6eu{+EoFfeW{$0_4o-Jq&ET>9@V8+Fb1^{g86QgQ}=3
z)AOKPSi&T@yh(>>1ESu$fB<pEQ<(8{T>D<P$Y8IXBOBF_-~A>7efe{l%Rvp=_Ml%4
zh!qPq&el(RSMDHpfDFTD*kQ7YI7zR2kIQO3lkKWOYGh_fycIp0Ek~pXPQntZm9nQ^
zLC>rDSm?1<S=a^S#3}RWH6p5n%yzTyzO$Imrc92eqG)h?KJyM~yPgETLlYI$o4d~X
zqirq~F2_(2=*%g32H?F8j8;V$?BE878ZC%1_w)5*HSww=i*Xujkt_gAl0(n9#TeqA
zx10t(s2>uF@Qqd<D<iITHbnzbk;g@XR|GVO6tdaP{`sfVq{zT>HXZl-bu0NmQ?Cs!
zgAKivC9h=MJBm5;stHAz$gV*isf+mkL4zCj2C=cKZ&0Emr{C&B1os=Cdea2U55#?k
zRBVXB?1lsAJCHn!6n!`s#Ck$Gb@fmS7dVikS4W1(10`WDN$g$2wONLjz_PwuTYB`6
zCcR@`2J&*L;InAph-k^Z9dVTIbXD+Zi}9@FhdYL8J8nEn#Gr|twi=e$=MIe~6#R*-
zxq2q;6-aW0iq9y9>`lE0YR9aSqWSj(;i};MYDnmZfC@lw8NdC_blhr|WszG+EaAJ2
z26<Ym5_v7T@iUP4Uw`tw{2LD%PD-IROiR4Lz(u$8sz}j0&_^0HB@Uqsr4i>@^$m)o
zxc&P8_-`fna^4m9h8VtRq-Z5;;2v%|btCw%Exmird<Mvn%T)1>f;kn@I(t?v`f=iC
zq<ZC88mh6X*WIW^))W<nuPbGm+PjIHSK}%&s!ho@!wx+f6DT7`6anezP^8cL>WzV{
zbljq!V-OKnCwfpBZWp@I>IJQlmkSs6aO)AxB=H#Ho`SRBG+8W2OSWlNs8`8{|NbL3
z$YX*6x26TDhzv>?X7YYDVio;r88}0=lxz0}ex6m|5ydQAlYbrLmMW5OX5&_)T4C~W
zG`KyRc>N@{GD8njn<u{xKDN|NLeWSp($lpZgc}<|tGKkxHc9lAQiT@OHWXGFmW?Dm
zn?>YFeFr*_8TAB)63Y7<n``w0Sz{H<c52N(`~mQnI<3JE`~pQb<6%!^+l^Yen9n7N
z$nMVe)po0q--wOaG3KhsU+II=wkel?yM5r|f3F@SeH`V`k6UyvW|yNIp+t^l-hzOH
zUX^)qh0HuTc;8&h<eUz&aY$Au*(r6998MpPQDZIG`w*b`nrl>g+oIV^HXN%9-%|j4
z@bJAiujjJZp>Wp&l7uw;P)i$Z`}O|+Uu$3Gk&kza`D9cn74sw>kC}VjSTo8h>Gk!A
zI18liszRWb7de4)xOiL>@PK#>p)idsFhb<*whSA<tet0+dW{)?L8p3!U4(Nkive;Q
zQGEKs;@56*>8mdbJdd5rByl9Xm^JH^#48%_qV9w&fw1|~!%Myk#2j)AqxkJ7K=*BU
z<mmHo>sbMg8>ofsn;WFUk>%KRRijlcyM`+I0|vbT=c*WyDM7m^q*vsOv(9Ru7oV?J
zvuPp$r}iYa8|}K{e4A95a2>#h9U=V6d&x^#d8;PLOivNBG%$JZe&y`{1YH7e9jWfK
zQrR9!n^NCWDL{1m7Qn*xSJ}K3RZk6hn>gb5=EH!ejuy@8!4HKB5Pkrn4+mqe5Xwqv
zk^oK!-T=J7xB|Qxs5rQT;1sJK!Ci!HFI@+A=4;Hej!pvA#!@C7C4|HQKmcwi{tho9
zp!@O1z9*)2;E7$1m0R2Cz#j7_LU<OqydHi~9ctK<)NF~i@sXqTwAZZaw*<pv92EkP
zN}zPIJ}z<;Ud=`gPLerbsL8wnd{|T_9gBX56j!4nRiI!XF2>`pI<GdD7WxJh!WoRV
z9tc9TG1cnu<DlXaeTQ64DTOSQ)YN6qttV_4EI<z86yv4ef)F4s9<|2fcH2H`Rxon|
zhG+bV=J<qOe^sEvjT$v&&nkPhbbk~Q9T`8=;RFUxS~j=zWIG8gC9ONlT9HR3*hg?P
zscIOWrH-qf!rTy%o18%vi2h)sXp~3-RU(c6gtcN)hQ+MUMP;A?KOKdM%9lgfzeR6O
zA#pH|STk?d&O$|RKuQ1H^6dd%qF=g9C1+Omh&e27JlxaO=1NOiXG{~?aOY-d&<u4b
zhoK7ws=fjEypX#dwJlRC4elWTKG<@&<vKReilnq)00Vb&>*&SaRm2Ed(@1Qvh(u&J
zg@^z{ouX`0(T}D&Oe4i5pvh0afsIDW!#Bo4>0%VKxm6O<Ktwc<d}H<$Jx3+VPUVG1
zMGeCc)QDQwOePrvar7K6Z;C&d;IPf3kA|ii6K*D_zObbNRDO?yz%@9n4W$|8FfR*r
zb}{eIBOTm1^F~c;%Gv6XuQ64Q+qy_hL^f=TxL^u-E6EtGFl*8r(h3Bo>Gx4DRCw88
z9#4_+z^oxs4Tiu2bV0R5ktRuRE)W2G<^CnugUah<`pp98Y=dIhBp+Sx<-T8i|H}=W
z1#@A95G};7rISolYhVVPriw8$t92@%pOcsoT(W`-ohOh!uNdLUh<{8zjL-Rh5&xRQ
zmrq@>QX=tq)HCknNljPL<+@K-n_HsU2fyHw#MxzxV<(jZGj$nGp`UQ&O&k$cxCtRG
zF~8ZNHa1}pa?}kHMU0C*)Q;Xm)5imSXvIB8sc<*d+{sQydYLL>QY1FFM9sp<Kh~r9
z*S;iwvl-2I^Hx$d0KGEkHX~2zIRK^r{sR(EGEOREwKr-}$3hL28Wj;wh;S2ZsCwoO
zjfe^@r^9yTF1VNsv{55&GPzOAs25Wk=wLBwGN%wZS{P;qioak+-eDUd*I>u1si)3*
zUXex0DdozR*=`+sPk5W(yF}Wk^;rgw{L0Pi*i)UD{)14|^4P%U?Ev)cPq9$o*4+4p
zk#WzmDLFp6@vVyd`NcmH!|E3p#ef43@9v4GP;s}Un8|tOxHq#v8~O*>Aq&=>e<JWT
zWOxhYSZ?oSJ#A3zhS?%P!BLv};phz~P~nxG)rT-`WejBraE4}n%?SL;Tx`;JAb@*;
z%6ZDNzvE24?pH{vV~FmYVuaampV{@#?;zj*rvr(f6$y&BC*@*8DUbLL)UkpqlAm>M
z=SyL=yUO7=Aa0Joo<R%mOuOfe0v^1%cCy}VB+(4$4JsZ`3^=7%Bq(8)hB?<1s)0hn
z3u$p+A$VhOT}UjNYBWHdJRldsi0UAoyHe<sL<pA@Dxo``rN%eX`x47@^<x{3QEx%e
zQNFJz&l`_kwN{mG2|4;;G?&)_HFjHnC8<k+D}jrc+u=%Z**!GnPMgz|C*rB%gLa3e
zSBDwMr#S77=r4i4p)BqQ5{ch@@o2njlq>#}1pf^~r0}WI(?XOaH`<&{0t_0@<0&sG
zRdSa^b0OG$rD%C_bpT0Wy6-?Yh?HUz<Rm^sQQG^AHew(&2}^U6IQCZZV2R5C&T^e^
z?myUh9yj3XJBqidtppGp1648b3^8LbNEZku1`X{=>-zo%W{Y^DJ*Oa>Xf^<d*cxC^
ziW_i<sc68%q^E%Zm9^!FyMZbNLk%>9x?RqouVp51fCiBl?9eZ&0l@O|1{j*RH{i(d
zfd)Jh|JFc2Sj=)nHBeny@dg^I=JIles$mvfemDKq@NoLNkR+CB&45zOMT%Tzg_4zz
zwK?NnK=oKJX0x?A#TLX$8%;5dj{|9s<K0+vMf-BI75G89*VHb(L(EK0wsz;l?36dO
zv5hTSa2w!Ev6=&RmkQUp55q?-?x_rOD%&D^>&A;D$2_@8!pT5Zc#>$-d|{c9lOoTB
z7V)ICRgmkg$&hrjXOhZdlSg_^ShJZoIGE(?1I;5Wv%QAqjs+|KMeb_i*?gCmCOG12
zXvtu7$v*7GOwD|?(AU+o0_gDI7`C%+mXFC$Y@7|miI#PhiAN0YI8osb#V9ZmFP+&1
z@vCf{oL8YNj3wpJFiYUX*jH4_6~Yzm!kiRFeooigD6xQ<HnEjf7BUm*nOUsj-+S;M
z#MJF;4W;DRBJA3!Wo2HDrZaw{W$Xft6||iv%*I$3?ioa7cPF8~lZ3&MF2(2_)*8Te
zikZVk7e>~X#X!W^GEU0oP=wiY%e;RejWzBm)^J}@kaXjozNMGKBwUAWZv*fqHIz|g
ze9XK{CS?sw;ATJ!6TQPE+L;-%y2Zo;X#!*{eG4NSEQzq5c@qF@1FU}^QMdzK1@T}k
zqlL<uxU>8&ZX3+XtWzwTwZz|M%FN@Anc01#2;cWDGBC7H;K1yQON&^|I=Q+D3sKY1
z(t+t27@3$^?kj&oYv<tP;^yJy;};MVlFm#^{H*effha09r5mPYJFe$5m@F7!qZ}@e
zFA%D#iNq3h4NWa=sZ5UP=<4Yk7#bOyn3|beSjNbrZ98`Dc}4*h6%&_$!4XKw$kNeL
z(lWAg@)!k0C1n*=HFXV5Ep1=0I6Q%<qpPQHU}$7)Vrph?VQFP;V{7NDZ+z=J-}}Lj
zej+KpKqwMRq%yfesZwjSI=#VYGFz-RyTj>nd%QkB*izCmvU2hYib~2Vs^%?Nv=nvA
zYF4aTQ`fMrX~U+La{vgz2#VnZNzn|;@q#GHimK^`Y1xkJ`TT{7^`viwfM1Ve7gz3x
zfxcCLbm8-YW6lxm*2gYDI(s$G%Mtc?(zD7$Xzc6Y$1WDrZ6lvuyVqCZqi}gBnP~vR
zQt3<+AfZB<Y>Ti%DC0sZZL;l<=?-kP6X5;4N#H$~;%djOp?H4epKad9F+1sw#G(rg
zMA&g3@}-1#j7~iA*c<k^)^$)JB22ay5hgTM5z4qS*(yMU302x;YXBJ+GFt~BwaGRB
zGA@)hW4e+6J1!IQU8lly^_Ka-Rf=3lrA@XC5MhT<#)UN54nRT~7gB9K`4NJ1qo?d;
zFe^e}TPaRa?D%ze?|sg>;>%t!$4z%9L<f|gb4=3iu4j{KvKHbV5+;cjbwDC;+lq{W
zaMzE%9e2>6+QVLUfl$VUOilOaGx3}}ynI1tff{$3#4BM1(UfteO|}S-P{zfUJBGz2
z{$WdQP)GQ`=@Q9*1eEL5wEZK&vVGE#0Ym`1|82GJ<|c*qaqZJFU!2I-1$>Ia@mL>Q
wuul83@B0qxf1feB)*MJX3C{*Ka^`TuRZ%2tX}4%n<H!+JKj=Sko9V7C0K0+03jhEB

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Bold.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Bold.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..f84148db5806b752524c18c6173fa19e8675c976
GIT binary patch
literal 19316
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
BW7Plv

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Bold.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Bold.woff
new file mode 100644
index 0000000000000000000000000000000000000000..ab56ab7fa707dda6bf71209cf0275ef6be2bab03
GIT binary patch
literal 11696
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
H0YLpfq!Ad2

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Bold.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Bold.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..710c26179c5f1c9998065035a82a578cf45d60e9
GIT binary patch
literal 10448
zcmV;>C@<G{Pew8T0RR9104UG^4gdfE085wv04R3=0RR9100000000000000000000
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
G0002%wf^z|

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Regular.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..97814db7e2c7bb3039692551a4fbbb7f33baa46a
GIT binary patch
literal 18684
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
OTGv@~T#9_E>wg3J&>da?

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Regular.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..aec8a33389cb27a7e2e603ece720eb000fb9a0a9
GIT binary patch
literal 11460
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Regular.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Caligraphic-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..ee5193d7c888fe2e82fb54342f2bb5d4c34b83a5
GIT binary patch
literal 10240
zcmV+bDF4@YPew8T0RR9104M+e4gdfE07)1C04Jva0RR9100000000000000000000
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
G0000_1BZzK

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Bold.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Bold.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..483a7cdd4eb2e0aedd07727ead59f50818497a0b
GIT binary patch
literal 35660
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Bold.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Bold.woff
new file mode 100644
index 0000000000000000000000000000000000000000..189fea5e4ff5d5d66f2793d6753f702590add053
GIT binary patch
literal 22632
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%0APg>lfK9+NEbfec22@_xp#;D&6-v*%$^l@Z
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
M000310ssF14|n8Ps{jB1

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Bold.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Bold.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..dc3bd4c040abd23afb59d2fe385f80e23b0cff41
GIT binary patch
literal 20360
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Regular.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..9aa5f674daddca531e771b400501317fe476a722
GIT binary patch
literal 34352
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Regular.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..d01450e91806b0c316af1228ce35f7a31788e77e
GIT binary patch
literal 22088
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Regular.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Fraktur-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..7eeba377932c6914b32e8e3da14520c231559e77
GIT binary patch
literal 19784
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Bold.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Bold.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..dc0185a12290672e819e1d62ac9a955311c60341
GIT binary patch
literal 60784
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
DvjTj6

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Bold.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Bold.woff
new file mode 100644
index 0000000000000000000000000000000000000000..acf48e66893be130a57bb66b9506becef9b72f81
GIT binary patch
literal 35464
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%0DBe5}C#ke#N-e*jJ!67~X2qoJ9|WECVv5YL
zo|OF3Xxps&ht5W)UgH5X)SVqL4&f0-Ft#QkjA3F;GniX52f8rZ+R;y9oZb4Cm|=Gd
zr#U{~HBR$68E0zWlLxD-_aqe)8+znQQ>Qr-OKJ!Gq)0C>lGXfLT#%sl>Qb4i(GAnn
z3q03{0SvcHX_8#swM;iCMljwEvLAY>dEYTHW8FoNZFxQn)}p`giV4=$D}=q=@=lXf
zRE<y0On1F56mPj;(mr=^puej6?jj9!8kO7{I2-zH_&pQURTwo)U}`-kFr6k!Qkjz?
zy}u>nh4fa^S<oYTNYJy-M};+Zp$C0<SXW$Df(Bs}O5xs?S|c<c#1qO9jID_WeR$Xn
zBnRqhUKzn8s(30pEb3nWJ%}uX=obYnt))BZI}waw0#mE!L4PtxZ^kgUW~dkCObx82
zDGNgvdM_$rPDpZCz;g0fL@>6N0Sw_0Mlgm6%qA1Rv?efhMhnNYmSqkLSpES49Ny;u
M000310ssF14<m4J82|tP

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Bold.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Bold.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..cf5ababf46d8d4d15ba26b1c72fdeb39500b3d1b
GIT binary patch
literal 30244
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-BoldItalic.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-BoldItalic.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..4346f173ce347459e433f45d1fb06cfc74bc8eca
GIT binary patch
literal 44496
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-BoldItalic.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-BoldItalic.woff
new file mode 100644
index 0000000000000000000000000000000000000000..d2cfe4e319168499f33686f3b1524addca1a596d
GIT binary patch
literal 25352
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-BoldItalic.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-BoldItalic.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..d0178f421501dbac3424821b480c7e58b1dd9b48
GIT binary patch
literal 21944
zcmV)4K+3;&Pew8T0RR9109CjE4gdfE0IpO3099T90RR9100000000000000000000
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
PQtWEZ=5h_SOlTAUVvCDK

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Italic.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Italic.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..f2c3ebaec0e7306f4ea36c98f43e301c0a3308b3
GIT binary patch
literal 47640
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
XQglzIQbW0WGIxjiEcVqP&vyPh#XzB!

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Italic.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Italic.woff
new file mode 100644
index 0000000000000000000000000000000000000000..1184295def56183abcff437cd382b3b295a8bac0
GIT binary patch
literal 26228
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
X(ymb24FE{wN(KM`00962|Nj6Ffm3-<

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Italic.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Italic.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..aa05e142c4293315104e02adac9ed65dff454deb
GIT binary patch
literal 22748
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Regular.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..8acb365453b7590425ad0fe65c41a5488d3d64e9
GIT binary patch
literal 69520
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%0ARlyh{tY7?GU*2VZ9W&j)?g>A@b9!9`J|#t?B!
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%0Dd|4rLbv|Lm^2UjLSuRddForu%~Gk{yjR?}w?
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Regular.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..9f8228fc38b5d404b5573cad5b33f28dbfb47cf7
GIT binary patch
literal 38112
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
I0ssF14_>G65dZ)H

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Regular.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Main-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..e3f71eb7e9c0568f6144e45c59b3000ed3dda7d4
GIT binary patch
literal 32464
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-BoldItalic.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-BoldItalic.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..a645df64e5114034e6596c79103b380dfcbc8061
GIT binary patch
literal 39308
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
KZW7Lh*Zl{xmaf16

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-BoldItalic.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-BoldItalic.woff
new file mode 100644
index 0000000000000000000000000000000000000000..87d4f223eaad873324b3e0d42a9a0cf211929ed6
GIT binary patch
literal 22324
zcmY(Kbxd7NwDu3~4#nNwtvDQ<;#S<fP~07gySr;~cXxMpcRRS=zWKi7=C0(I*=yx_
zW+(fPnPkmuR|N?P02tt3Xm9|K{~OaH|6l&!^ZyM66=pU7KsNSYRrwzV5;Z?djDH#a
z{#QHrmu~_9U}N){`3lA^P9*;%8~<to|F9sAhoUq4ZT<@YkQ)F1pdtYPgp_s6^&4|T
z$A4Z8hJPB^{|~CUjl0>ud4K?b<R}2(1CF)IuVrCsXaWF8zyH&4{RbAi(}~5u;=lL)
z^8<+gK>@P`!C~>s$qfLI;rQq0{YN5{BQm><o$)`NG|NBD#D8efy2<=9bo=L%M*WwQ
z{0CSFqP(r)FH-<Og#Z8mp8)`1uwTa0G=AGTIspJ`7ysrG{>OS}2u0*?2h)FEWyOEK
zuzw`^KRKqmtp#a8X=?wR$x8csJt#n7K_E&)5u{k4>c^z`grwHS^lSOh^?xJp%bQ!G
zee)xtJ1ynf^LS!Hz)_i`6rx8#5gdnRW}A)|d{P}hPNHxl^x!<lrCqON;Oo<wuzU7k
z39y3q!9x&&@Y``8-%MU#j|dD2y>SCN{}hQ5M=XfT6*d<(<0l6759Wt>qEHP((AXVn
zUn@JzWAo8*`C+ZxccNMJ=zS%P!M{;Dj$Ms4Go{Vnv>q%L-Wrt@D2;1X$<q{-j~t7<
z<c~TT5)wIjkG#q@G8Ngf+1$fg;>$0Jb`Uu;c#D)D%uauA?0!$26o>kJR$#-D<FSXa
zW?wANaU=}WqyJ_*s2p9ua)|#Jd?Sbn^6Xo)4@wWMHjmz!cF@>)K~NB=EQl*5lSj{J
zNwK^#<`e1w^`BtxwuoVdi4y{ED{?y-r$XCrOASJUsw0UeNquHu$gdy_pdk#fPtJ3}
zLUtK8v|TvCmtuJ;U2n1gaN)AfDkOj=u-ckD!oAEj#ISG^79t1^rLdY!*{vic%0LJB
zodIL(VdN`q9Y5#^HER09#*V-7i%X&$-*f0w#-POljo4NP8L8C-%@r>`8IvZCJ*9c{
znU0Z0qM)u7xa_XDe9PSm7PVNgyI?gmm=FeARNobRZCp;o#2TB^%qTb$N+L!_o<sPr
z-Y0WjTCj5p5@2jM@d){Rx0acnkDelqbFxx<))k(QW7=$_jqnP96NkGL<iI%hCKeCN
z$XFI0J~p)pVqVI)x9_vvnvpyBcBz^NV*^t;6$5BO_hNCe;P??}fS{$1Zu69rH$%cM
z-+lZs=+#`fJ~}ca@_ictYvz&OVEU{EGB+ENZUmy33vrTwCZOLbl7U=<NND=Xgv(00
z7td-j+9;RQPmi5Hl84DeaoT7Z8dVJK5ecJ#i^`g1HdyCjJnj$rbV;(6!NsIK^p2E_
z3Sljzlh)9(L!#co22+Kr(N>)NMvU$u3F8BqKv4|RNwbp733J;YrsVwu^}Qz6<7rh)
zO=6-7tb@wLzK(6~Z|o5-r-R!c3(pN}<x>kdvrjP3Q{Ggt(!Z(k_!lR5+`P}EPPY=n
ziN-0x2Q94rVxbRkx=wX$$NC=5Y=KhNs=Yb_^IkR}$pEWN&lK}elsteGJ^_~K0S|%L
zqrf%nc$@+*Cs`plivUDJPt+PLV(8NAGPOL&V2H|&(~l6@O<@)q+cFn5*HL;4340XL
zw_8P}ucK?;=`MW$>w7{DThsBIZ?ncIad&P0bdH{GhA&&|RyY-YTJE%WOV9&5ch+st
zYsWSY`bzc2w1CS*NDBy?&sXH&=p!sxo4wLqIAToi72XZL%Z2xwJ?w8}=?n4G4Pgxs
z6Az3Cz(2QLc*Cm;HadPR&Q-*U@*$!}gjeSmJ4zq@H&J4%OF`r+Z6~CFx38SHI8xX^
zyX)XrR}EbV$NRGN<*IC<^;CwWvxuU5v~IkzrlW$&7q2OLE|hjSh&sk@`C2U}(>{3=
z(CLpW)y$5T(I<2popPdg*$qWgeNk!7S>v+XLE^A^&ZGGOjx6NjRJmeEYOc=QD&18L
z8=x|7N_%bScnnKiBy_6W+gU<a`E~8MvH3Bb8kJP5t#VywfB(Vz^|7mTCSQQ6Fxf5!
zd89pP-!-_v)QG0GMUwne9af3gbpB7@A>Y?fgHsVRK9Lf^UwswIs|hvRFaSm=WjTs~
zQz(dOSeJ_$DT8}gCB-{=a(H&O6J6ge6{?K?`P!p&9Ol$f$+`q7TEz*`8+7er9Mil-
ze{c8qyPoGphs&W&y)x}LDkST!ub4(;db%oA^ON<*T9wiiL-adSka;Lx`?Ma052o?B
z_t1&k+1gJ6{K@H{67r2G$ri`d7UT>Z6?@-Kj$+Zw{Vwl`V^~h^*Rh59+fX-!x`5UZ
z4@DAlyAFRgH~xGnx>nG(Xx!4S4aZ-|t~3DxWL9+B3P*+z4+h4qFBq5EOmvOi{gh2y
z)s9Hz2dQ#@)m(}VXEXvJQVWvIZIkfSWh%3+-%<rq<YMaXQRm%dY4szBej+wroX62>
zzqUUlJ!;L#$A|_Co(H{Z&on1|y{!6zm*5&1gnRbmp;uAiX9WyQP|<vRLc&-!vh=z}
zCGz}Hb7E^v&mC=uefIQpfuciqKP8;ceW2jkUx?7tx9#LidwFhP<&YHe6oLyA`^&qz
z1|6FH(@}68^MSq=dbWId%ywA=tL*`r`GC)#ff_2qIqdD05)>Z&FFvsQ<yPK9``^E%
zn3Ufq<G<Ec=Uu}`Bg~(IzMVr%LS|j<PGq9m^@cEnVAI)8g6X@TZO|=yyU6tPs7-Xz
z^0ERrSUfM$5uXXF5^dj<&hxn%Fy(s2YlkJSi(%%<*J|Rx{F-;7QgXVzL9a{uDO;r}
zLS!1u`lBHWBmL%KFnPT?F3(D4F1U;fQOs$7ZuX)?zzf{$iaQHrwQAi#@E5umF2umv
zq0TsM_H>@G*4DT<g_p!QH2l4ZTgq(46x(6t&7H9|r>J(l^B<<!^xIdis6?NM3cdX?
zkpfOmXyQLo><cyY#Xy$KFpVerO~V@1SZ{=;-~+BMTWB?z(cm*8{g#9t$NWfB?zAHZ
z`e0KL9gb5NT7A&|bleP3V7bWkDGo);NH=2MW*3;&_kP#=f~h}vi`t}fOi4P2bT#hW
z_LFAK=j|m?b8_^5wws;1e}B^!8;qqFFMtVKxZ*)mTEVoq9`#%dr_tSpr4~+Y`+B<n
zb@cMs8)Y|68H(nT<A?~0gW5ihCfq;?uXJ;t?R}58R#}!|XhanTY4fy)bs_j5Xi=5O
zepvUkpxGRAh?S#S$Jgvh;>KFm7S)aVD;<0t3dOtZo^=<$ijXI0cNk^iTk(*B_-{Jq
zK;xI%0~-T2A<X<{WCBDyFLVUENZo>J$D|wTh3<FkC5=EI>Lz_4J<^Zhi<^q^g%ib}
zyE*7|!vPEDdXLM{VJLp><Ga+v)HBY&6-_eHr9qPgXG{o|k7M#mq_0d?pjE_HJo^Qd
z4Z76|QBb=FGn|3m=cR_e&+QBS%MrfyA@`#OxK&}G91NQ2nv}z0(r{TJyhFPvooVjb
z#N@XG()hE@b&$ZD9#zc(FS4icLvx`5eBx}Y5)tXf3rdGmSZ4Zkb+E96=;+B|--DbI
z94KboLfU6%Mv6UYNYeGZz0s%3kC<6fEMAt$iMKvYz=Ag%Mu{eBJ8JtLX`~^%7LWoA
zm7{UIfcqm)q153+xV@TnJ@-odWgpZ(kyKl=#hG$Cj8y-&`*Nr#ieZ3+YnN{zU^MIx
z0Wo!TWo1hl#%d20L<28&X~8_m#Vff&M4=i?$_)v4GrU%;)$^gMRy$GxJ?*}%CDCRN
zrOe3;OUlnIOX`mma^~%XAXipksTUB}7iPI>BJ`b`B<>PFKexw-No-yzc<YL?QbKMU
zqF4%k_Csf3?=~JvEw+0i#4SBy1p4g8z)~3fijKtnRZ{dINpNVa3qfg3Mg@iYO9-d&
zaWoX{{HO?lnp+)(kqh53X-<(1a{*m%!2CmkW8v2>6VB{6(5sK1X8#WQ54T{vU(SX7
z<O<aD#3<^%?8t<ZtkbC!GEOQ<4Q14lP}p6yFDGN+Wjn|N*IzzNbs47%tpeK<z?-OM
z8iUy?l&QksdtndfvwCskD4VUL?_pB0->`2^c8#S+c{TiRPQ8n{_QN5ESjS$0QbV6l
z-R?|JN2~{O7AC!5%$t4c3ykL!gSem9DQw+$<jM8{m+x;=zVNh^!)`#KTz1<Ygz?=$
zSTsI=sgzLYAX7@}7*<2v`4iUsSD)orVKa0F{Xos_^Y6Zo&$VJO>FkGniexAA=(an_
zZ^-%3{J3tCWlB#Y^v7eZpSgAY9g@m=bPCsMqZ^Wk4mx84ffyB%a^y{O%pXs!{6sw{
zuOueREGN+=A9Crwav{@^*^y=fX;m8sXt%f&qE*|~&na1gj&7%#4eZHOdnFP?lhB{D
z#Jg|SD8zYtv}B?eaU?gs-KmyE_V)!sf3Ci`Qvz!tgl9NDCx{9<_F3R!oMYv|<Fas;
zto*sS!#E-CNEGoP>2{FdAr-ja2tti@aCCw<>0k<a==@jS`yE!ib`E3S84xq|Uq6@i
z-ws-2n7#HKx4n*@FCI4h!@?4VHBzP&%s=Sv42e+_h@Fq$FR9lC;|i?xy>Dqgmxo@;
z`tnk?`MvgJoVQ`JS2E9Da7!*!`N5`L-Xq-)B45dsz*xoC9a2inO@FkPxJrQiP$ac^
za)5zTe*%I<6A3y29{anNGZsfXKz@(4e;ZHjL9^awNl#Ax;X)l*4-T{IZSCv2=2_<x
z(kYHit9D<~K?`HSr{u)nZx5m>5bXs8=nMPXVN~a+CU<>H*{RF>shNt;%YYQ9(GP#9
zTz|4$ppuF?amNsB`O-4pOwD{6#6r4~DUG7i_I>CfPm=iz3SfTj-p{Jj5r%`YH`bb1
z8{;kIA?0*k2sNcN&_Tkz37%#K>J%KgVHZZo$TlL0Dz2~1<vL4hJC8vDsD9vfE(;WW
z3MBOkG=*?;_wX#?Urs*W^|lJIAkEJwDG!#+E#_kx3fwMo2oWoJ{Xy4unE2Z(4_B<5
z9Ps&RCdgu5l`+7CHHrS==kj6e^>vy+8hy2p9rJvl+vss`Zpw2Nll3q@ar&@My+mz{
zG`JutA`$OkrdjqdR!Hpn$svG0(^_kfJxlD|I2I+>z+7m>JBOnFz?|bek31f7gDtPS
zrulV;F*&X>M_6rHC`?a-r(m-^&!^9u32PC}WIlrXcQu{+!*hD!ozac3%Z>MR(d%0<
zU$k7NXuNi*lv8Ut1cow;JGKt$1lIagE{a!rq3SQi@{?a9O*__lk`s@1q6t@IHcwYX
z8_Jj4%C{aA2*0lf&9j5Fe;0WBfS$+Vyd&y8#|G86zF?2}7Ku@0oPDl;z+g08+^<}|
zsV<?rqcnzsij<Suyq{pnZ%cdxyVaQMM$&X9nZ0joEyyr-;*<s{BB+9;qL%vxuTg?!
zK2N&HTN-3B1$Eb=ou_5B%DJpwideCBy`053sT`EH`>P6WroWjdd_J_A#5&?;m5!h&
z7m!mRNT(#IlIdjLN`LB@eEIk207)HQpCm&?-`8vHUwjJ2cVS7(O{`4eQIXRKk4xmt
zZTlq|N~*}hNx+GOr;4dVdGxDEDxH@dgO?JFT>b4$-o=G4E(D8(c$;-K*hRkt&}Bac
z;Bh@LV6`vVOCFodo+6Rk@tSUnA0y*4ANaqsZ#5~|!9Qxvvl;ntLN;k-i){(PdUULz
zthejxQ?8aXb9myh=aiUxBmb&m%DhvO^{U`=m7?70BEacx5sD?$P$C^E!MwYm$-&A5
zQOje8%Ni2choDrxaIsf~PgV*NW;tk#XYLv*k3yl#!}`j+m}n93Hu2Dlfeh1gZ;HIr
z;t-gjEH#JN*m`&!;$8KXm4oK4cD;9R_sKLzX{d3IP9N@16g?_y_wuVrYW#6_x_dcE
zD8O(^nEyE5q>W!;qT7*?+gZuuDN{kRi5j_S7&SXaes8W5H<p}r(pd5#`<*bx^Ghi8
zF&kI?Gu1T@HJXsOW&7U1kO$+@<cybp_kR17U25Gm*2vv*on^$+r7-MAq^qZ#$FhgK
zgWz<<VJd-*<DJ_On!_(7LTX~Y)p~A~aT7`D*t=F~=|fE&DgN-`7Cw2L5qlVEYWA|m
zvLr<jzGp*aCv|p7Q=tmMCm%Fx)FT99Z^!}~Z{q@NU?{>u=BS1i<DoO$NBBPc9x@bu
ze=D5i_4`M!!o(piMrTxnP0l-nXRq8aW6SL&b-l<RZ+4Obpn1{*4via@Ey+1tRs*ok
zUcO}$<!4#K-N3<6ZPCZkP0q-GH(t~4@l)As%Jk{(^MD0jSN@ii!bS)gD()w#U#oG+
zN8J3MYt$HAXJ+sZ8Z*1=qpBK{)6F=ZU&K0?{5TO3fyn5zNBEPYA!<dLJY?C$wF+K+
zaN8Y3;cY^1#@8EVKDSSMaWhfO5fa!-OEK5<?4lG!#K{R>$Fx3&dH^uP(cHIm5m$(&
zWN*q4*kqeHSJT4yOf(VgTr)s$RJIU)Gqz14*smv>70i$%W3zHOX9i7LgFrjC5hIjz
zRr6gXUP=+^MX<F<q-0_q1)?^+pKE!>LlFXp8AU`B_e#4D6ILvwnEQQUOBez5S=x~>
z?6}3WJV*Masul1t%h~+;=_lVIRf-(=|LxhQJPFC7QdKACu(RMe^WpVh9|S{K@KMxV
zudq!XiVqq-CcbXRgM6+&#FfOT=HRHvTVI}^mrFl8n=ZD*cW8kpBHRZSv~qYiP19-<
z8OTApF?6QYP8hNMT!zb8;o8Udi+s$PzTVqo^QTrt7aHUcF*0<crPT>59q}JRGLf8~
zQ}_K>Szxo6MYzz14vsr|C=NDHp1k%6DrdCX89m(-9y+J)#BaUV2`4mm@HO7VAF}}s
z81gK{%B?yy4#RP5{EY%m<Vh|#$A?ZPG<@yXxU>jRZ;xW6?u@<#plyiwuF<@U5CYz_
ztI6L?PJ%C*F22*a<by6gF2~0dG7^#dD0SOk0wVFG8t@q_2TKfzz=hk9u&+Jl`pL@b
z%<Q~gKJ-T+)Y#Wm{p9Yu4M(!RK#1ug$eylwmPf;zIfsT!io#`Z$mfY~tVrHMznaC=
zSKNAZ>zSTw;8qAoHhf5Q7IlR#`*$F=J@%&%hy`137F73wWmZA+czWKh9c(e-%B>rR
zMqy9Kk-uUx$M7#0u@AwtJ7<mH9^4vVT~oGeJn1bNSJ-t1RUU?_D#ba)lyl{pjPHmE
zMaE&QIIq|^h%;+PE>zM==Fp~s?TBxc(G)c3+6d;d6SQUYd9X)ehi3)1jYg?gnQd)d
zfLJJlwu#~Ew;ab^we}s+_rT6BNsB|*7N!#B>?o<6hk5Y(Yg<3xix5=TqMTM877DU<
zg#A`WH#3L$%g2DrYArVT?tuFu{jDeRe4Hpa;CoTYG5$a-6dxZdxG0pLfZfWkevI+m
z`ViOw4zhy;AOuVw{?Ba33yZr7<Ljwj?LDzAwG4morZ?8}cnLr*5;k>)0(SazMY1ku
zM?0gdXU-YgRgB@C(&VWUZVcDNpvZQb%D_ra481iYG2F1w9XmU2#SetQRLtH1jEwc#
zQqH9_$GE;S<3A#o4|<oY7xkx*7`Ey$-J!c9d(Zg2aSac?@=Of#%e-sn%=grS598VH
z(0mc5;kDVl^^f-3w?&bBSx4~J)MXaO-DGirFDQG4*0(F4ywE-2(7S4G&a0Iq<bU#o
zZo_+ELwj|@NMHvdW|qZCf^?O`x9-Qg$zuYs1Uf6qx#5gq-=3zXFhTve8vS%tG+5Up
z^4XNUdbY{@?)3u<Zn~S~rq?*E#JZaav7xl>5e#A9y?;=+`H!r=9A|Y?7AuuaxN)*R
zB#ff`6v(qGVi&)X*cT<DtmcQ3SqP6@e7Fvoiq^4-A(fm;3{(@Fn(Aho;$;(%&_X#j
zk7w^rd*uP*R&BsZ^%A~%GsVSP<B4>EhWUIWH#%33e5zu>L{2|_XPn>BEN~dM?N)z~
z?>j@DJ4R|Tw3^I;oWsWONs6G%rvHcz8OU1HDO0uUfQg3P`*wChW#UWDac?Yc&I=Tx
zA%&(j(pwfSvW<)znDNPH4#-cD4(}eMo*J6{i|@~=x29%CPttckVkETEm|TgW7@ebh
z{+{i<YB095=lkN6VLuRP=UlsLB^iCkg|mb|6H$0JlLQLv^LzL#Jl;SMc3XO<SZMrQ
zQ0V0aVRWv(bi3^S!RxBsJR_i2ny6?=m`bJrR;0p{j2e!T>CpZ<?{H&i_zdVQ3~8^;
zwLF@?%s(?ZL@>WA`oP}L>j<)Bv7{${_K1L*uS6&RHmq8FdJMs1>Ad5uOUtjq<Ksh_
zv&ZGxExgp43HhE;8V1b-KM@Krz=bvOm&cs*{_z+9thV0x#zs3MB}hI@krWc^hThsR
zlg)$`ADve~#qpBruBXwWOp8gU=W8(_H(!M6i-SE4IsbmPTI%+wF~$F9bORBJH}{O~
zgsu3o)|*_E?Wd{7>w5x+*M+EKy+9>M5xn1k&MugvKan}RhAi*vavJQ9sdgAD9tH6;
zi6ZEZcG%174P57EwdHOvsF+}LO8a5s9nO$+`vc{M>m4^;0wK@`g60oIo(JSSUjfxm
zXB<h{emf*78Uv1s-yBHuHu(%E1%5pEi&o*1NxkG6PzOi&S+YXt<uzJ4DsmaYnq2h8
z%GEZhNvOUT#(}w+OHYTgDKW%dxBxwQoZffUwW{?<Y?X0^qJ)yAfPtmft`M)v*3+#A
zy6;h4zYK-}7!UyKo;+ApEij;DQap4#&mlS%-hpn3=Tqie8)@KkwA}6DiO=4cSXif4
zgD_qTR@|u;WeyiPyyV}Sa{1Euae|UJgESJc%2&L^vCl2@BS%D|+c(n#Z4v^R(u=<;
z)x$#H3b<`IC|T{kz9SVQtPXgdYW62&2uUI}gnkb^&5cC!hoB%0pm6ACW`q?Bo++Jg
zQ!C3ZJxn{{i8?d{m!?)NKBts>#L4Xa>8`qlukP)0HH%{Bad*2P(^Ua(cK7H@9mFZD
zF7Lmk_mKy$1jbp%{*eA7&!wpDbJvmFlGi;mxWI+#mYvj3PqGBGN;hlv_1BFpZHogy
zasuni<>pGX-RtXDmCKA63Dv`a=*LPTu8F*ul+Trqo_xYcab`2dNFkl=CP(OiLz%tR
zoLo)%GdoU__iN&Y)k~5e2EGlng(CQ#HYS#h<_xxfHz?sus$RBmTtKJ5O_;zZfbtgn
z)<u8ci)Ne~F@DWzH1R{XmAFH*Q)x`C!OQ$C#V{D`O<82APlUGbt}F>FAF18P8kJMN
z+QL%Zx)F41lPN2g#PAc`0I@3?2~^duTT}1hQoEv<e<`xQ_ys!Th*duDUfq82xsf%+
zG4}ab!A16>(>N(MYURPU%0lFl2}Va1g6Y4>)3@{;s1(^N)5@dA`#9O;&2%_)z|9iB
zM!es|G3($ArmSwNY{zB|rimZ;aIXNVtvQzZe2A~OIUu32?H4zSZSyf^i>S7N76mD6
zI|5mL_q<P?>^^y2{q-p1eHlqIBt7}<Tf;SPyAbZajtD)&#^4#88;AY0I9BV~b<WE2
zR1f@OV?2VFcBP?!nkx4JQ{cZSFhsg*X5Jv#we$Le8o*hn825)rK%M5qqoE!2n&Doc
z7HKY}`tvl20T&$aWPUl~RFfAiv9V1iOOG}qW;d2W|GTL~&T9pDY+R6eimlJ%{N<8d
zn-V+~e3l$pvY+w-S(ari8FL|9o`F==7ch%6^H~u8zysF*cvt93>tp;xEKmv-z)lhi
zA^%;t2radqi)|O9E89`Q-z$ad?%^pxok-NfG<Wg*qio1WfTI1ji&2vxN^oV~v*>Kp
zsQDQ7IxKr=c?WBEsAs>q*rDC?N&6{)Ai1>ecLzbIf1`S+a1R%|NLWa!xEn>A?oyIN
zF|iKozT;%R^imBOH3Q*XZ0q<4Na3iN+>ngB%$X8h%cB!Ft_6Blj&Fb^sXzD(y}uX8
zt@Y~v0<6enl={kEg)K<62I)Js5(&36)jf+M(7<_y3IgG%7qGOaV9lEkm0<Q@-8R30
zM-nUb&~w8e2@fxQJ1WL2@?x{SfOf@-21ivK#yVCSksgXGJ!yFZ>oiEs!FFe8xI&U0
z%<wZlb<i=ry|@^>`u2xfcrFQZ98a*B1EkvB9<e*>xz#kaXS*cN$s<4PaM|2FlNPV`
z&INQLA5bRj%~i~AKJR=>F(~gHbw%@e+V0?k(RXk!%=>ZQx~=syn^X>b`@SKT=9;DY
zo5JY46sA*%u(R}?7E^Y`t~HwhKY88s;{XJDUi0=ooYD}=34&v#Sy5uBc>k-JLA|PC
z%O+&rVOQFd=J&lU6k|O2ZAi~INpHMyY-ygQslocoj)b?6$w76}<OnHEWKPCANKyxb
zVxl=-6t)Bh0y`TD^lELl;)uX$JBgc0Ich?MX_L>p>&3BEy)k)Sxh8BLFMdqKAg4KY
zV^TO3PDMhB2C;AOpMxodt-4Xq9$mW*Al`dNNslckI$f9{Ne{u8(n2X!`%Q`zOdouE
zs#ay5yoauJn>TgUhro^}kGi`WY5}Lyc?AKFhl{lRH<07}q!q92DV+y$_WXP5^{#p^
zTc_r5xBs5vhIz~%<O`)YIjKgJPTp{Ms7@5o2fAtQiuXW7aq~Zg9{9l?jhf%Zj8@C|
z$*tJ3w%E>l4m=8tGh|X}9A*oR2t=3}Ld5Rgr7cG}dYnuo<<p<Ekxpa2QVl{IH1Z$i
z9*Q%=vCbmV2sqU9p#V&{wC$)Tw3g_Cq*p5Hb;rhDRg(@KXvx!h@CQMM@@-s&M_VV6
zJwY6P`2+^(lc?ZsI={qH!3TevXS%d#z_J89QV|O)rjei~;R=gFh=Qf%;aWscKuOp?
z2F5STbo+k&5>W-t$5{YX-YwEo54}3ui}qqR`+vV@*ltWjs!o+7?wgr*$6I4+@`RpJ
zAfUnG%Y3Hc=X8)USS;PIJ%{cF)*c@t>Yy!PGIYfPZ#AD)e^UEEKfc$;2)Ug0?S2lu
z-Whqek>Lr8=!#eO(EG<dPfnuzDBj*bZ9lwI()OxYn=)Zun!cn?V}Fz@h`HNL(r?VX
z*Vr~W9GitjPBGf@LNF*vqy1ruVE8lLYJG6s9WHT5uImO41|&SF8m}uBFA(@Q729LH
z$gKubHT}|qGFYQ@vC*Lwe5V$>{ve3b_xiJoKwduv7CRV@+<dI|cj-uB_>{VubXiCP
zLVA|m#CB>F&c`1~iG<DmfP|PtVr@p=O}RSpuc$R?%`s{r*+r?bC!4I@${l?NyF>8r
zoIHYUSa8IV*0lK&beqW{I`F~vlz#Lp-SHS9!#Xo7a_u_z%=_RvirwMkH*bgf4_J`5
z8V8RTnOVNw4@vHsvLKsB`rAYW>v$)RkqMt?(g~;Zvk<`(HWWiu=T`3Dt>$^(({URH
z2CxZ8WOmUI^)6&aOkQ$PUBS!A$PpO0_F{*jndKh>^UJHt6Ci$GZ@4|&)n?q5R@4k{
zD_1B8#`}WK9FZhpY#QA6YH(xz9R5wwYhekM`TZhF<@>n^`*y#YqOMS*sA@-3qb^t<
zrbGOJvaQ>1zLDd)>|DGIvux#Oi3%%-0DlUhq7LTo<Oi$HqI3nj{5_NH_qC2vhksrA
z_L5pJL>-{*_tkUn+@4MIPuC<?TL}}m%Rbg!gcglH-JyJjQy5lB`6c3P2emqGFjvEg
zj*>qpVn2+jj*UaHSh0$OjmKp;O3}{DKls@uUb&r%IAANU^;<+H=}T-Gl5;cV-2Flf
zPFT?N1DTKK=S>$!%_@ovX8t0)TT&1xeY(F4DF5q%n85AuiX{S=vf)hhwsn8>x)Oka
z)g}=wK?u$y^=)p1IqC_RA!+Drxy&ZdP$B^X|LqkddOr+gPQZ+8XmEa^8NdBl5rgv*
zR?ljC*U?VP$g)*uizZ}K#dXf(Q%b()FdyLo5qTZru&^B?A^ooQV=L4ASnb~XHbb_4
zte<@jX{C~Bx!!I(l_^E}6qyTnqO^(&W&0QfdQuZdr=F)Rvgjs><6e4alpuhqsi<M2
zzdT(90Mos`0Htu%$xraq@|a8Y#rJlY+k5@p_PligO)&VpfVo|qKyz)1o;gAa(%6|_
zTuqFNVuEu?KGjO}SZvbl6=fDs>Ib#rxcEVD!P4)pWJSco-vS=-D|PZjNhaLL&SYg<
z8t5#Geu<q{HE9&n)!L95;Cu9N?Vmb8@j3J<3%zBL79WS&?}Pzs9MnPz2hU|y7GG2=
zaOQbU<BQe0_W7i>pP$8_@V~H{i(A6<2udk?OvG?hx_y*^sZu7-opJZ~z&JEgk4Z87
zu-bSyx;=+ue-qnU<C>;_Ek2X^rZn>nt0{yB)M#nMdrbPRr>BVvG$AjS=Yp)goh#t8
zCwheA>Zubc<2oKkTiPkM^}CyDRY_$c<?zpUU}|~qm6-<<`_~WRQj1Duelcut!*(<m
zOgNg^Bl^iDqLU~^p7ls=Y1tt}t#CX=XYrVCDOxJn$@wm28PW?-)fKK^<X+&u;FtM<
zy;aD5+%%8MbOEE|p@E^$S5kV7A>c#%qJGRI=k$&rr^P3glKt>v?KOPLiJ$Lo;FI)E
zk)rZK%vqr{Nc=$;a%RPH1Ru9^hIuPiDr#=st$Gw>tBlkbdGJHa0~|2LokUESfN_Z;
zf{5qcZdDt`?;Y#NKA#}J)0+9_?rN@traF8E+Oe7#YT(zokXWL@0LdVbl?L6<&6<_r
zZR<HhC#p5F%LnxWZK5y%zykvrx{X*yN@W-pCL$2avLWa&q=o{Nt5UiN94zyc!a@ZW
zyq9@%w`z<DczW2GJC8c^AIgm(p3}7<rYtJ`4YU88VX6DhR1Vt;@_yVr`aD5@zELsT
z+(6({ufh!5`7Im+Nln)*<0Ak(xJ$(QQVkfD(IrQfasu}$E>HJ#*3DjJZ>!k;b*F37
zdri&ondRADC5w_OD~YucB<&{Ai`|FIm`*R0!$DcR+uD|LF)w$FGn^$+dbf-9%UZ%L
zHdYc%3H}qDP)x(O06sC&VFfWC5-t4CCK#Mo5&_s~JPL`00=f<^&7x2K64A2%@sPYv
zVc>q<NPjDjOUjqc-#R5k#ry-~%*mq&&cW}Unl>M7H&r|8ZACHjAE3>xWP0DT@%HxP
zHn6nX-xLNX{(To-0=n&=zueCqlQ-Ujh6(C4A5;71vpRivm0PuJNrYUm`P~UV_Nrk-
z0zOD(l|$Xs&yWkU0S>VgEk_VM8%DXi4;iotIB^}cl+3x^IZXE3=8e~R?$<GBP`xv)
z>{S5f>6VciBLOl;^VCni1hk>hguQF4Lmy@~+}NpY`c{liy05((81s4#w(1G~1SX+H
z*(RB3*E`KKOGuTY1{)#7C=P|QSC3KFJ*|5nxh&0<G1_@ae5&msdR(rtQvQ)qW^Y6q
zl+ksuwXgZq38gW6D-`G4v+5k8QgJGu9*<QbQ?UK$=pVZC;NY=d8={58SD`Umx9YBY
zxsk{#D$&(41d%}TJ}@z?dDtqTzC-1h%E@f+Vmj=0$66A^2>@rym6qo28*J&7P;=Z^
z+?g8WhOezG2}P<Kv?j#Rfi?Vy!w*59k6DCcc>?t;k4l}YRd<whb~@F~NrmCJ?LvK`
z5`_fBEX4P}`!P87TP`0NIay|&D%ys0O7moyL(H5AriVcVTxRk`iRz=yd+AsRrwn$n
zKjl0ZMFkG#@oF;y9SK`obz+<s+|~;Qq!*dS0?@OW8JCd4#RYS7EP*7Ns`%D%z(#6<
z&U{ot82tC{f6H@`W;rJXB1K!qk0NY&=E8|nQe2hs=v+LjNdiHq7azC}6bLm4#1NKD
zcC`;OUZ`1{1F7T}Mo1O{XiJpws&H(AHpvS-Bbz@_ba(6t)1*w>?$<CdA8*-lh2{D@
zZqJSy{5ikxp06GaDz`JN4%pNwatmaCOFww#pfo9Ca1sqo&LT}qymQ|IPnW6jcMIOG
zzy_lANxhD2@xL8Zis_zSLAIk$VAU1-07SiQmEX!l%+Jaq*>odK>pl9+qM~XTq<Oo#
z&=8h{d{TZGbAEJ0do~(el1FIv;>*)ODh_6~;JO`)JD(aYq#~sSr!^!np;r*ODEmoE
zZ5a11<`jCy#I)gKs)EyL!Bj=hz#&M9iyB^$^s!QF%H>Go0N*8Qfp+60qTb@5$n+3!
z!<`Th>wQU6`4)!otUV0dZ4lfEDe+F!FWt7^M+a9^N40w9<)<$D7{x95lDp}G4(mQ|
z;V2)Ikci%1NRpORIULb~u>(01#Psz7;eZ`xa{t6MyG?$LIOo-|Q^$u^T3i|=YMPQE
zL+Z3hI+rr^0tW_M4)BFgX<$U-8uxUvsr%zAIKFau*c$(0L7Q$ycv+p1wA>$|lJbio
ziTM&}@if#O04cr-nRM^tZEOG~wFGH-IvopKy+PUh_g1|FJZKpjlmlfoEZ7KY6W#)4
zUt3jsSE`D3rKGD%IZX?rqrt=I<2;slR2N-@-cOI9*kkRENbU)VUzHP~$o{zlezqIp
z4_I&n3ONm*<{s`P=<BgR&pNSnFeAV@t>sPJQ8t5O@$E!&E3w=ip#)*7Jz8}s9z8$;
zu7s(Krd8tpee1qZS6MD%IE>^#!HDiqn?w=5ZZwDhiPC*ofGC>MQI7_V0l_!>nNGX!
zWRGwpiSlIlKVQ-ZF3c1fSYua479IxajM8+%)dyFAc8@sykR@RRfS=~LX-1Dw4_VY*
z)*sJ}Ij^3+Ijl0bF=%N4azF1c*HhX3BECM1tKVIP(L@}tAV=-rLq<eYP9oRGmr&Go
z!-FlmF|@vADMC@mlsX~U11aTm2#^ATkxdO4&K7@l;7NKR>gGJ=kh*r2hje}On6Lc%
zW{vOC%)O+M{3^g|5HE8A@6a>5va%Kp11I5_%mNK37nydm`m$H*$ECC1!(jI}{`yZR
zyW1<i4`Kr-aM^e3^wf8bi)gd!afrXLDifcfTJ8a~Yi&M#&1g4VASA7m>5mQ<C!8?k
zaKFU(rA8=Q7l+_`Mvi+phr%dW5ct73pH<@PdJB{b@%8$wmGf|aQ(6CTjBz@%+v54`
z=P3>5QM^o9WPt;eZXrA-Bw|2Xz>|`--#Kp#B3qC9NlW*hz`91kh7oKbbs-}l3!U_c
zh#fpkE$!*FCr>|*obTVa>^ZRN-?VTJ)K4SL3vwWq3&3TnHjesV=`|~uby|ow(CCoG
zJjBh2c(EIJ%vdw(MM@?1gw*D*iu@R?X+I_xtxn1&h%w_f&T}y;x>W*{p*`g-3*M|9
zq{7$R<70yBP}%uH{CSIA#_>V?ceMNA3V?i@u?EiIi5@_IvZlmf&r0rs0)c3#(JDXy
zV{<KV8jzyj70s!3r;;WPt~cQ-Yp<Zn{X8SG$njuFaX~D>9UElAG^)S`p>hUaUJO;0
zCrm<s1N9(_@(TF5XzQz%L!$aS&5zi{=aP8W`e3Y+IB)9(PjLUMcVAxE1YZMsb?IK)
zuEXuE3}2(VMQLuyz}w!(#q8DS+~}82E4m45ocH~k_^ciQI2?QhOWjjK0nMI(w1L5-
zVQs!OpJ>m9D?O;b4=$3RaXDwV>#0d@+&<WTD`mgnwAO2C8VfG2=*0IGA384_ejw1=
zLB+_Mf%QZ*r5q~PibgKUmG0+VzmO;mHP(<^M9m+d|L0ANpQtp4sEJO$>Zdr~w@-1f
z*O)JrNC!qTdpvvMY-*s-@%Xh@n$;{xU^neFY8qg-mjKxyO-hxt8yJGY)GcfpUgVbg
zH&>jd`1Qpxkrgk=&jF*IqVB$*>2$lF4W$98N7xUriKz4>mE@BWUYA;|BWU@Cv9$7V
z8j~A?f;e50v;7O3hLXHG+vIs9gI<R$f9x!n+KEEg9x_0x0-`l#$Iu-4Ayy(r$H&pJ
z{_E&S$41N)MbqQJ%`oM<o4Bh`oc~b|h@qD~An{hT<M?##f<xHySCh!WBj)J|8!@uu
z^Mg-A=B7pr4a@G|LU6g4(>(Kp9H}PUfS_q5pI9y<$yWpjQ^peA>Pwp80l~(QiUoUG
z(u$&sb5qf7CybElMK-$IxR<F{Ua~1bNEWya=CgNvyLyHzsg}f`BNsh*`9`Fhe+@T+
zcrr93a`Hkwoz)xpHK5Rak8%02<P<<(^?Z&))LRAqe#_?z<b<AI{@X2TyLpg*^%w>i
z5D6FOe8xylEKUff@SpZhE<^X-hv;c6J2DG3ES~ojfgOyes(+V%HJ+RP3`!qHk5heJ
z4jV$tB@iv#nUc^G+2)0%!ob0RqR~U29qg@ficjc;sM^{i5rqc?iH49#->B;c6`>`7
z1PMDqihWP{_7uHFn^nt9mulrv(R(t!PO277SMvMoEkfK=42Zs?{Re9V-A!}a{UD>l
zGPZIeL{_FR2n3$pztU0IYbn{hS<9T#QCf+Bqw}<r(bm-Ph`~WlJ1;LP(6usBpyJrb
zf6eAxKs~Y+qlB83cBX{wju51kp!P3laQx2mK+UFHR>Yukx+tlsOT8>_kom4fD1o14
zJk`+1Dz^_`wyn7_OnRjfVtn3YmMCNqTA%NH(#P<O?8$r;RQQ4lPOlLPMgSABk&G8%
z>WcUQ+bnTs4u?nrLKu|-vC|HI4vpvutJCG&X=i1cOC@SE4|@igG3w`D>D3&_LlA{{
z%Xq_y%}w<Z-pK4WWHtB1B$Bqq=?W%nn$ZCQ;dp<U^~+R;YpNU7XfdH1Ef2>yl$r6B
zd~E4m@{XC(Xe&Rh@gWxdRDWyNK+_Rh$Qly7rh%hD{c-|dg?SxqTC4I4XGgdq1(uCE
zXVL)tuh6ctLGmKvY#fozDNbbLFjmi)GP_Ar33CR{4lUx-WyUHkz^rUAypWPjWl$Wc
ztzP&lNA}ZY$G@<wSu3q#Y-bzL1Ct?(?AOuCv~H*+_K8_>x%HNDg=wR>0OLVrb^^C!
z<FpF}FKDyI=~(b!*o1uxq7MbJ5bJs)qkY#IxnpU2BC&5l4cTG8ZufcESS=gVrvIqv
zL!UgU&^H4uPPTJ&Q<7~FjrU36M`XU?eigokpMNvDO<GVN;3~L#a8OkbG;tR%ckI;3
zI%Q&fl_jnSjybv-KnkNpf4iBGb7(IN!4yzW)<~udo(-~<R1x}3or~Ya*3ACJphir~
z&ZR2)Td7k~4r&KMJgNlNg_%DqRaW5%T>l+CGDUPJ@73Wwn7KSH;r1nSUa8iz9ENx4
zB5GJ~*1+XYAB2<6`7#(z?dxLFNL9<BBpO+D`?n|WlMG+bkugq`HsB|+-hj6?M-~R(
z07;v}MO6#gahx>draR82XDlL?z}>+<_Vm>?(*)OfQ3uxK_=GiRGDZvfW3|0{B4qqc
zdS{?*9Io&M?{Su1l#ao1Z>I6v=O4InC!dA%N(-xeGLVNirLy~d<@NXGG}s|!ZP{8)
z7gm~O3OpAa%aw0~bCdJ-()o|Jj4IT>J@(0oRh-5`uEC4r(UED<J4F1=(LWNzhvBXe
z)x$kn+LqcEaz+pTefuzu<PrA(Ea*Ao`FYW!vH|;pn?OE<W^Flbz1LN{NN-;+cP`OE
z=~#-Ad~-~hB&+lnnn>o>hgQMw{_-gDCg7=3n|NlB#0P%8pDo)L)jl}2{Jb`_%F&$!
z1T#mqgD*>}jV5XElHModHV%=!j`ofTr5tvHVs@#d(K5?=?2$jxCk&07g8wd#`F4G3
z)!s5HWciR5(<bM;qjE5I<{C<y)51wUV2;Q}(P&RAdS8v6yI6K&AwmZ3{#~{!PgMq}
zb$QwUwz=+`vRcZQnWpn_W6$n(L*+n;peV&hmp<r8HFu~5<kV=#Y1%royW46EDVNQ%
zMCt++$HeKpM#Nt=X5F0#b@6q0Ct1yxg^wU&P39rc$#JDslLt6JH5>%!sZiC4SXd86
zG5*D+l3FW=8xNAit!{VEk4IkJKNSZ1MO1^s$D(Co16=nxBpP%h#HKNE$IAD)?{7_T
z`?2n=dK0G6n3n7Z;Bp=^F<eh~x&<9|;VVo1@1HvGYL`8<bf$y-|F%ive3H_BUeqe@
zO)MRG2uX9XY^4fihJW`bVF~zYOsPTteRo2uGGAG(KAXOd2Kije9`CF7(U!r<D>-el
zF{O*uuil{pl*c&1x{K*c((t7<;b!Pw=Bnd!EL1Mj(!CV=*e2WRBt;6{SZNV%$reUE
z^~nZCR~|FhKL3o1jZqW5#s7X7U`^D3sCbghBJxaf+S&K{mtHI&2r?8se1wo#<{*rY
z)Di{U%_;Quna&HG7`&xnXG>HRJNS(A$Oj4RHe+Lz!M1<<+y3%t;7awwD~3+OPJxm1
zu}=OhcN2QD$IR3pn&K&3Ch?X$dTe#I*!Vny9uCnz82e3_r9$3C`S$406tCiIYXxk`
zS!cFEENbSyq3F_aqT9DwaK_hZ{#ed^M|(-X=6RaY;U<s%od$}kfqmw5y7w&QmI1&}
zbJ5<}z`>c{+S9$VbW`aM;^A1ksbALCo`THDF!A7X=<Pl=94<ypiO46u4t(ano>%@l
z&79e>a4kk3IFoEMQl6>cD(5C=vB9EDjH@k`4)y;%T;rZ-+B4(WgqE|8)8U{LauCt;
z=F~^9d_5d|i6`CXS7!^8$uzMf844J6Z|xfk8Ru)?tasT1MV)G1ggt)Z8c8^SxKSmF
zT)%kVe>_)jUi-j*l;ZykkV8^Dpp3;d1%Kn?##2}Emj&;jm!LKY9^;M;pr~>y=d(PD
z)lYrz2IYqR0X>(<6I~S$Hq>jDVUJga55*Tai~BgS`fBV?-)|B5%eQTYNtDlg?y4sl
z8s~pMk2-3n`yj7F(|j2sju4TI!>l+`@G)v94iQ~|<z2m?hSvcnYt%TO4`-cpJ+LX4
zTdZ6xd#qsU#zp?IC`*iJQSN>kU1;Z|%88CbpS0&gi`j^vrFdDs8yZv)=R~tZLk2#w
z#Bqf~fxe_agf4>Pypf%?w?w9pOMh~)qYBPqLay1TBD@0D8#)unVX&(bJ5V!D{|D9x
zc#w;R(s>|$mh9)C+vW7SaKs8`9KL!2nTfguJo8AKIxtH8l#&?Sh<h@R5ewc8NF$Aj
z2JjiX3S6`CXx%1DVg^U}XGsB^c$*rAg}|rG+vtHxzc?XDWFa{O>={pN4%rNyj{<Oc
zd%L9NC7q&0@EaUcOz_lNalcv(B!+`TC*ZtOh}fKdhG{w-Y1fS@co%ESGprR?)rls9
zQ8CgJkb7uWb+oQ!v?i0Q@E8Q!aH1bpB55bI;DJ}|GP{pIp4MP|k78~odIkJKTte_O
zoXtp*z(F-|I)(*HzIU^LPn6NR<G=Ij)|)J@46VwC;KA`cc!MFQg0f>{V!J6c%^0|P
zO=Tf?IC7vS4VpK8ui~>4B}s*wV09dlW@g-lv#CNsollzmH{cQYJC->Q!o@W%n|-CP
z$*s-_y|k}UJSK<2sc!t{!(vqxakOw@Atymil;R%B3YdkAwmUcDoAhW+m50W}48#!%
zmj{xYvN`4G$Peq31=OlsMg(BI<xC6CRoG^?Ng%eZt@W(!zJET<_$J7IOU^e-{qsff
zG}SFt?6^9i8Y%P%S$L>H)cMeR{5Wl;nD*soD)`}PeJqB<tkyoBv{v2~F7!Ut%zadU
zdai+v^L!3FU_<A%(Rod0g=`h-#ygRfC*F&ri;sUTw}v(kp;juBpnpWvGuRn68gu_h
zHke5^TrQuicK(OWb@j&cz0G;0d@So!`1n;)#^0z<eSaGyH^r5V-?m)4Y`i$=cQmaL
znsY<<`eL|OtR|D%0~ecmoHR(!@8xVNH6xZd5;SI1)JegPCLdqxn0$CkObMq80{kp)
zCb$Aqa1YHrxgmABX8#Nrb`0@^aII+KRv9TmPY<Z-Q%m~cS1w6VH(@CG#B{R%+ZM@@
z_5CPDh2JYZU+V#WLP4w5ay^-zmCqbUD^*)1W3kMNY?EnF*>B!OOyLjhP^Op2j;+e<
z?laJymB6K>Zbi;R(*HYblA;f2j*=a#83LgmvV{%`-g{ntus*ASTr#S|2%3hb8C;k0
zuSD~QeVC)Y;P$S#R%9tA%{z}%EO*{V_3iThHjwZ>`AL?;rvMpthvf7#2N3B~FJZ#b
zfc~8VQ=#eNq5uOJ>MmvI=JD0r0*4K$I>x6iEJ=9s%yt@XQpSBusr#82L>*}nnaAK^
z4t;phrdC6P30BR>!Y*bq^AHOH3ki_mB(tBpK7|Y0IuqdB480L1nYTaL?$3Ek)f-HO
zN+MyDvirhm4r72n1TG!;e)s&liKr|HB$eCGai(+`&LU<-MWq5Gg9hLw5jlh!2BfXP
zMA^^vV-;9;@j^)j!Z4X8DyBff!2>Pteb`t}H8TFHo-bPIHI$7Lk(BJ92)mK1JniQV
z?L>!EN&D$*ZfDS)qc)}SV#q?g6du57e@AjMFE?cEK#*S_Biu5MYIbgIK(m;nHMv&K
zO|wU|!8fBbq_6Irnmn=PEjN^kb?Jle0yP^wF-S}O%x3g}5xTmo475d3#YY|RC-d4t
zh|$m_#eo2#T$fG2*&PrXr}A`u8K|bcRR))(Y5g?1J?i+afJMwx`=_0}dg_?k`N6_a
zsc05lxsGCXl}d&u5#a)AvP}IZ?nCk}kq?PaO!>GQv@Pq8qY-d`?UR9?mSHFZ3!N)+
zy6hX6<jUNQz7#>LJ-hAt$yeeZUNhkCO7w~LnZJS`Dd@k2)1l?c0*#OPPBt>ehWZjk
zqTZN5Qg#8bhm$5~jrYgIrRR=~giRV0=9^P37w}ho(oC}T@Q+4@b#KibjD~nU3EB1l
zJ^cGW=Csv3r^~&jxv`dK`%-oMglhxYjWkBz|7omkA67{-hjSIh8<N~(ztgRMW|(b|
zk4%ObI!;_D>#^V|3~i2dh}nuy7p({5U-uke^8gC@tyuK)?})r+{Kfnq9WHG<qv~2<
z*+8ir&=1H9Sh8Nei%yv4HRRRX8*P>21xa)Vmz}7U1W=d^+-&y{#(Gi?Zs{wN;l(UH
zw$A!XvAED$jJ5_)I1Y8u7fQKl(^f!Q@6w;AD`)*(Bq|G`#81dAlx9n!G0-*L#VaW^
zJ;qV%leyEWESE{<g$0v}Q`McXjLqwluKA``R#&=15f$9x|Ahb_*#T0ZgoEwzl+U4v
zDOQ+xD^^(f`kJTqBX~OgP<r-mI3N6uiK^%n0!R8tWm*v8rW5v4`)WFLg!js#uE)i*
zwmxUzRY1wb&V<_RS)59{g&G7}UeYRl0`JPCv+(e9G4sQhb5y-3R~wsBvAGxyeA8ks
zTjkn4YjwQweHYblO5oaD?`0{N9Lri9>l;Jv$5ckB9XkBZ9^f)Ihe`A`QHu_hz5t;3
z$#z8p;E1h}B@ouQn<n}rmPXZ=4fXFf4Wx;p!hkqgvtQt>*2=-AS`vq#UiGrIyP<qf
z!gT?-j6eR$*H+bL(hykX^PkU4u&wV(DoxXR1U8v^bgTfIq0&`*Hia5^j`6Zf4+^<*
ziF{{8jsmpjE2`3C*J<x6)o7I-?CR0ULdO0Q^5%fB3kNHa7qE%Q0khi;d65m{&&}%q
z=Jsu4xQ{tln2RrDIx53(SjuIzp?<qy$yoosP-vwTskTYsT<_~5xsKx!Z%$&TLAwNo
zyuntVlB6HQnNpz$Xm}7+AL^GlsoxVH+mRv-Zb#bgN%G3>!;D*2h#EEo_Dk5%_(t-J
z2m9%nfhOWHvHHn))Mf>Q!68mnc=GyOPU2R_HLdHZ?P+JUP2bq|JQRlzqNF&`!>kU_
z<sZzZ&NJ6Y`+$c9Csrd0EqL)_zw&0K?dXxfga~hRCW9mtIL8K43FDQJ9Wd}N{ma`#
zOC;HelE0{hXm2_nH@4fJBMII%=20gX&HpE`7EkHpAFs=H#aQc80;kW`8Z-TcQ1Z<A
zs+yM1oJ^%3|M*a*8xf9KoY}9RJ`0&*wB9+<-9K&J9%}c$#!tFGdlT)B+Us5+7vCY^
zPj5$sWXHuNKIF`F@9wvXyVYt($bEF8nOL-h%#W1a>zfyjbp4C)yT8No6)kn<23R&>
z^@NiKxJG;SOvm!|8Ga8i&rgRXjN$9Ph1uDprBDe13f8QV;`&&3e9gtWA4lth6=Ucu
zFg_STXvc8d<UPsR#$cx98Z0{;bYC6!q)jZipG3*tldRs0H=ne;g5s{qKI}d6Yyhy-
z)gH9_pp=^pHe`HVo@#A6IG{K&&bq~@SyDsR{N<`VHxO;EP<4oiy?^0Bu=adC6gkz}
zd|aggT@3^bHJDil#Fpaiy~fMambY2GhX2UhFLDySZ(yWBq5xQ00)mMjO(i{!0C>0Q
zufR6PmCGzbXtH2=FNGU@@9z!V<p}NRav>b@Bzk^WESYR|jH3X@f6w-Yc04O@i8EhH
zU}8PHpZxyzoJ2RT>zHTe4T>#+VreAfO8SL>o=#kP1xL5Gft%lZBT<cmqDzgmlY%ew
zo0UVStjmF7Z1+Vw@O?joA#`#{vD3*{g~Mi=(l|JlHA8I!=gxM2DggA-VLEa46Hx{P
zb`BtsPuMd2c%|9Oww5~_urfE55Pki3=kYJN{5*$#`?pT^i-ckD1NrJb!?$Q$9r0&x
zWsHy|(j2c`+`N~Z(x?xyxc`ws`zuq+;L?qUge>ka+&$Ra7_2N!Pi0b$<qG&YIH!09
z$J^fFUD4QpGG4rE`mATp`S;}aOzaVgSkO$skgJ|{EG3NpgfYXhLeYw70Y_pi8dHOn
z6K^%s2@|q&nb!z6RD;rwek@gMCpk+8BucEfOqEVn&3>#_N=s)hX0m}l&1lBI0a;1#
z>x*+%#0mxpV9jtAx+Qm04~EQa<|SYd&{Qse;KLu^I*ihaPOz?}n=)RSe?EHZVlu1x
zIR3xl=Aln`aSM23i+4sH-r;nb$7b_z7!hAMck;y6Mx$DtEpg_EY{0KnO{o5);)|Ag
z#H+<Sj)w)ByW0*-7C-#8yW{ybudVyW?mZ*V>jlS{rg$U4@DGC|2V)ZXK~U<|6P>*7
z*@n91L?e}id39xPU3Ow1#Z1C22S}>(sc$X+emF2O`s|IGyqXH}V>So;0U}FGdRxFH
zqLq`avf)_^J<v!8_1N-Yd+B}o>Z8{|<n?gz3dLH{x2eD8+SEhA!CldRMKvH|6ck~=
z2<}K857~Gk%_PU;Q{{TL7UC?~L|%Bx$Kj379Kiu`!bUPw_5OEvZ*;_DyF2fdTH#V7
zli_Bjkjy%kts1}@>E2Ey9Y~$)#8Rj0EE?%A%x&u|5L*nXvXT$3M&-H7HJPX?w6k`4
z5Fn~y=%(YOBAld>;Y_|iU$4HJJ$5A|FUV1?xH=On2XoVpoQy~`7Y?3YjG2vgjHc!i
z4#FNUzS-@*J?&;?hXc3DgE5B#!~p{r&?XAr@84ryOdOh2WJ*WH_*Y(j_SR$94)&H8
zXIiyNA|{VpZHDAQ40*@n$*3&<@N%i&)*KsEze+fkyvfR&Rh{)q`Mv_<=M9^HmrxN5
zkpN)xbgO<a^UPERJ2AMsuu9Bwt}(N%VkZtb7|fTm$*L8Twe9Adt}m7{&d&6_4)D}`
zyW)Vd*U+$`!^^5H>6jCWF~&sR|9q{Gt!3uoI=%h`o-DkM7EgqNkKN>&Squarn>xLB
z4G49LQ+wHbcFs^6OSjugl#@Tb(8)G6X|ZIk4-i2;SHFM5)$c{Lhc2Njzqz-H8H^zA
zDI|KI68P<qp}L2K%d&)1d*HF-AG?*5ix=W{Js!(*mhj_v%Ns*I+I+x^+@MDdl;TKy
z=hpEWCB(G`M-pEgmiGL{Ne})TVwsc^8f0nZ`sx;F=dXV^jS+=1O1yfg?I?eg!BYHp
zKTI=JV@y)7^495CEkxp(rIQ3Fo@lh<!NoM-U&ms=Ik=pBi8ni!g3{wVr{qTi<*2EG
zIKfx11V5w1jG%e*O$M(<n(<iRoxl3d4`Eu%bS?+ujd+FuH8*!JH{xQS92VIg`4cxD
zoOOA+H`q3Si8Xl&CRh=ZE({ZPo2wG>7o$c!V2c+$2nqLoJI4OTU~%64fS${hMqLxB
zkZnz_;2$l0_IWoM5{`GC7Nv=${QdmhP<cP1AWvg%J~K$Cw<=+c0qk6H64SY<Ey<d0
zN5}afJPWs2zL9_Dm#3zuW^#6%y!{_>FG}k9VyS&#5X}lpvP9v8nhH72nU7g&KR$yw
z;72SLuO421QVv9qQba5l(v??c*YkFHdfw3q-r3NNTp?^-?CBDb><Gf>@ZB{pV_ZdN
z(I<!AUflu49RMuK)T0+<+&eBJuiP&7kaO-aHhDNQCSHNh0`HdwdrS6j3I9dD60H#7
zYPmX9c)C{eW>(CR`i~o^zALI!JaqHjYYoR+_WZe)G2cfuYVzH3C|J?Ao=)2)r?QY{
zAXuU@Nu;y2&2t8eIl;=g-idHc**SCR!bh%lwR5%NQYBiI;h4x`ae(o@G^ZwHnPQMx
zEEdR#*j67_$4I<n6qa6iVd_@5pn!H^@AXR;y4rfN(u;j+mRs9yb}P@M>S7APok#yu
zS6&xTdoWc5g5khlMt5VPX78i<OgLV4%2!%p#{6Mk;j|rl6wZv5c+{5}0&(~RoT^~4
zUwoaYI6oJaC7qIHq|$rz{b8wFdH+7tf<0NLcBiMhQ;pXi!_kEF$I90~0W7Oav?fuT
z89Q5M$T+((vmybLjhF&}1A8U|;E|*ZI4*S1{fm4O-SmGeyEOc*>@)qIm3RNWiGTm5
z_-jZ9QxBr+3A*85E{ULXsRSMSH9#<=5oiAw&~hak000000RR91WdMf&0{{R300062
z9sn)?cK`qYi3^ti00000000&M7629i7688ibOJ&G%>%RqhXqpxJqE1@G6)|Ct_g<<
zL<*`4QVb*w9}Vyhvkzhr01(*`$P#%I9uvb9SroYybrs<j!56d`Zy5m@s2Y(Q5gXhb
zdmPgpfgTDTgC7|mqabA<?;*}2iX(0$P9#nw?j=Pg9wxphI4Jokttxjbb1Y^pJ}uTR
zjV~rIr7&bM4>6iD2QpYQDl@S(O*G0ix;7Fvk~a1?qc{OLWjOIUnL2Je4?C4SUOfpt
zt3F{q%Rb*e^FILq0RR910RR9$Im$*~4?Oh%3j^o?0002kvY7(_0002kvY7+_>HjDM
z!vfU+0{{pB0ssI20001Z+8vJr%oR`^#eetwU!1b-y6<J%u6fxU8#2ab#VOmy+>q^>
z)ez?V`Rv<vbnype3<OAXz@At`DOQqW0K?*<wGUZ0tXmi!pUA124%$MWcuv+Ya$&RY
z?iy1VqW9J{42kt*-C>+|(IPro&oZ_!g)wo99y&#@sKaD!vu{92iC$W1--kXL&UkeO
z9j25H(kgwf{-wqCi)mY^Pb)n&X3$d$s=uj&|1@@P%7}D~=DJ`%j8-wux}U7M)=U@5
zKzqq?k5RFTq0xh4%wTMIm)OJ<9ix+~X|HFVbpuQE-}MjB&j0JEp?zbzr3(6MzUvL7
zS2|1&c|QN^r3ZA;1bX<sW$j!St*hyh&eK^}>8b|KTm0__L-dMH`eXmfxNSUPP`t+P
znU%hHrrnT=z-p)gcA!Oe0001Z+GAj3U|_oXUxOivrR@L9{{}3Ffg-3N6#%Fh2N(c&
z+GAj1VrJUIz{<eD)CHs&7<wQy;{ygmMkWR%(7?d(UV!1vTNpne%{7HVkwM}8e`baM
z77S5LR~c?7FfjDTF#~lUW?BJMqQJli01p`v=l}qC+Dyu|5duII1kh!cp$Rmi585E3
z4Qe35-8G~D5}XWgfE*`V=5RUr`T+3#9kARZ&<CHD16DNe*$dCTvfZN}K@=Hfk{RY%
zWQBFMIN^+I9(dUqV}QH!A#it*KUZUu?Ymn&-SrMPre``Psk$mEsi3^F$|$XfLb|Q<
zPyU}AfmEO?hy;vmKn!Cu0SP8_1t2dH04%I*>>Qk2+&sK|`~reP!Xlz#;u4Zl(lW9T
zc{zCnMI~hwRW)@DO)YI5T|IpRLnC7oQ!{f0ia;<BJ0lBNkYx-2C7(hq0001Z+N@RO
zn&Ze0Er*(67<@sVn)L0Pls(LB$I0+CexGa6Zu-5v`wV^>Im`d{(e}tmbN6yXRHaf$
zM@LeHl_6HENo<K;{iLQBUvXpky@YSNJa5x2%2yMvG_#*a)u>uu*K4llv9hcp-RUbw
zMQP}>W0=w{pDTtoh<{n&+T45nd1pL|*W;!46Hj|?o)9lABpyGtF7aJi-L;mAfl;=>
z^H2?U#8>6~DlFkFA%Ms;;_-zfg@)v8TvoSbbvt!aYpu&p+gi<PA=$Ln=c*z2sWmeI
zsz(b6*LBDZ9Rj{(C-u2zG;q;IQC|y5P6ol{lPhVw&efI&eMC9s@LgQ3H<8w2k}kN}
zl1;S5>C@!|M=p}uj_h;Y@JQ6|tIB|y2DUoX#7c)5SJt-JSx0=Xw|pKkBp@fE^`B~L
zjl=^#O|6)uof71z>5ojPC=OfR4%uU7Kl$UO7vRv)Bjc3fTxYZ~WJ<ZhCX)-0+bFr(
z)LCZ`V&a(Vd>OYCZXI=L(v%7HC&sIB;<?(hEzjpEQ&cK3Z)6>xrwt5=crtn^*Rjx{
z<tf=MVK;@H&ogi{TT((`U>$LJI!Y-|iKjuD&$H&$N>bD|I`%S8ZR&4)K4D%hCa;zU
zO4oz_RH;8{3N;h0CdJH5#7-9SOk0{1ts54T@-c-EcFt--9t%k!<RRNI&#4UC@-(h(
zuie2puHe7aSY*-z{vNdZOLa^E3#CqJuoba-+;<$Otko%_3RQ_$5}wf^#XO-y9@pr%
zkWz&Ies<PT(<%(}v^d#l^OtS+5@<S&+)lN9K4S_;<XP}6@|-EEBF~$mCh~$Q>LM?i
zq9M{X#fZp%nPODrzfCbF^8bbcc0TmERW3gDxm_+k^Z7qU@l^XSVEivI{s+DZ7)5%(
zDDo08iqya;@-i@rYyzXmIbam|KVTF&4~!y>p@(Iw`37NUQ;IaUk(2|Hjr3b!*l)9s
zNxEW)dUQ-Bbaq$EGxnPnXeFPo?v%$l%U4=O-8mB{S8bW#wUU`*kFOiLRpPw?J10II
z1QUkfN9)zu@09#>9_zcsb>|E+x{3U$cMM)uQFhnoTP8U7(C6E~XUa~r4)Z%Gi8|Y)
zfO@R7boPrp@9Cb-C|N`P>|mmAJI<NYh=11r6$S)<r3sHk?ae&UL=SWLy0?2w!N3RC
zbSPHDsm%M+#pK%xRmuIfGFQE5LwN&7Bg%DYt-F{$RPz8@0vm(Jz7nMynyXQ^v5;Vs
zxmc(21|7VUX+r2Z-9-&GB6N`#L>VQeqk?FOqH&T!avcp-Kjal2C8K5u0-p<mS8g{J
zN`7BBAZY4yLk{#qQ1d|4$W@0p>*}5alWIK_eVM?JQMHl;^iX>)G}}rz+oinG#O}r3
zZ{I<oj_TlHWwf;MqalK5yELhMJs(VQyOfWOra)Nh;$ePhgCcNFV*sD*s2BFCpYFFl
z(&m}ryX_;LhKBF8a|D)V0oubhC`-TrOrxC+1G_sdsL|?yzB_c+!J~mU{4ca(@1N>E
zfuG$4ER82*PrW@m#25=1+xd4Te@_ny(0BKz+(XJ|2E*A`GKZ%EzKL0UevJNwDU@^i
z6yL)7rQtgeuY|Q2yizv@ieG!I2jmC>Ab_GV?vY|T7l`e(%~{*W8eDMukBYCW{+Rw|
z|ApJp{8L86*7uAesyGBOu@4VGTyY2zG#`p24M@>|G!4kmyeP6XAV&l8G@wB9rYO>Y
z5)CNRfC|m0qDlj5G@woc8Z@tpCJkuOfHn;<#JmkpbBDovRCQfFsd}6lhG!l6V%~-I
zfWfVY$gM}nO~+#1hv|gDO{d6BXUI+GVm^fFg27Ff$W2$sP1oXFo*V@~Pp{YJg<&3F
z#dpCs<z^2>c1>n@+GFtE!EhodVk0ACU*rbHog54t49Nu>8Q7dQ>q|2+Xn|N;l{ok~
zm^dJ89X1IzFq^|^H^%|y0}M<IoIoCz({2U_AO!Q68C*81Fm?n+Y;fp^*vOpXvQZ7h
z+r`nqz{ujzksJ~MQW6OSTU9s&IGA{}b};^L-N4ejkqM}iHN^!026-oF0001Z+GD^4
znt{-S!Gvia0|V1>#y$Uk{5N9~1+w@5e-Gpz0rGW$e1y7nK)Icahk@dDFm*uw5tu#z
zP|6(10001Z+DyzL2*OYlh2j6+yEkyMvB4a;ZZV3z*lf#U6MOH?-bFClG1`MY*?Y1X
zJmH=6al#J_)?oZMfoxPvvNPu(2P@8U!GepNsJY5z_Sd%IAvcWnk=v}_QQ4QkiWzY8
zkd5B&vNQNo4)*?*3)Zoe6JzY;GW%;k#Zhk9rkC7i{f<8UTBWM()?pyH&;E*iyW}Wv
zxy%?Sw{JbFt;P!2K9)ise&6p{E;Aj|YBD>skblcbI>~f9viv#t!nI1}Z>d(PR(M4j
z-Hv%b&?*j;&zo@|yu0M;kDUC6w<8(zVjx4+pKQwmb#mH}Hd;!0A#YmQ)4^I2+qEQX
zE3SzOPw_RWl(P!bgW!?Mj80;%h>G~}NU{Ed)$-?=(P$+4(Cf&tfcxB+7j<xv*aajD
zq)7I?k+u=<DWkHX3OR3zo3gKNv?Dz4AkwDzZ9h4;Bbg}%fL2s&kTr-ym9dQ!?{C(*
zm8!TP*9(HrmmOC{RY2@Im*r6Eo;>R*c7;e@Tij)7r@YA8bgEo7L8en{gwegc;&N-P
z{`fD~Bc^3aD5VKyq^V62Sz`K30e!)@MipFtspO(69;OviWE?lfX&+1tB*s^f4`kED
zg1l#ytMuba`46ydaHLaR1WQr~#Xj=45g#Bvp;Kxgw%{#6y9WmRaF&QQa@K&xWZgG|
zr*clh)jdW0pi=2d>!#AnnMYt{`9z#I!%Mj5$15l6zhbtz&J2y*C8&Q<UkBeY&PDHY
z@cFnM+;;3<u;eYyO=q7xFtw|TX)o`~&1pyqe7@QgQ<EgJ)g#*x(D8sq&@#93_7R;U
z8iAR){DM(zMS*25yatFv=gv-3x$I4<<J+P%=iXAT-%`Nb@9nrs!ac6C2Yne;4e@B;
zlFsl3c4H#aIWE#}9s`>q54gpZA}-@HP{Y=6wupsu?_JHfOfBTs-;(ptzxY2mTVvsP
z+HAqq0fAuv0KoHGMYm7ao9=FpCNVe*xDx^2kKms-Vj^(~NhxU=Svh$HMI~hwRY6T%
zLsLszM^{hZz|hFp#MI2(!qUpx#@5c>!O_Xt#nsK-!_(_W5L_ET2mk>9yS%%*E4DBN
z1ubKe=;%hHr*B|rWNcy@wVAnvrIodft)0C?l#Wi$QMtIfxqEnedHeYK`AeiSxuUIk
z8j>xDp=eb{%lV#v+nz?%xovCpFM7c>&S7H(hldx3<c^mmC*MX7oIdkXD4zU7@($z+
z(vq{EriY@g(7OTj-UH!9V>lMJnxwu{>0;nahcdj`1ais24a87eGv`giX%S{uW3m9N
zOOTzN+L@a6ZqE_%3JrW@V_ezTmC}CelDgC>r+(-WwuvL^BS)Ub$?aaBIel|`dmZ&n
S)VDhlcw(sl0RRF2{{RnpDA*?e

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-BoldItalic.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-BoldItalic.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..83b49962aa8353a7eb7cdea57fe843af4dc06f88
GIT binary patch
literal 19720
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
bXssLhNj(c?!93G5;NEIzo9EzaliuzI?ubzb

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-Italic.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-Italic.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..9c38359cca652bf7fc7e7f9581df11e3267a375a
GIT binary patch
literal 40992
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
AJpcdz

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-Italic.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-Italic.woff
new file mode 100644
index 0000000000000000000000000000000000000000..959746ef56fb302f4f8381cd199acb54ab7db0ed
GIT binary patch
literal 22844
zcmY(KQ;;T2u!g@ecWm3XZQJ(j*tTukJGO1l?AW$#o&DpSo0AbwbY;eyS#{IZ9o<=O
z@?v5DAizJ<<N?6_cg-jGU;n@H|2KJMdL{rsw(eh4`5y+N5t?+yHiq^9fE?&Qe+vKr
znpns#ls9&DCIA3bKL5o8{$YU+0R3%dZ*KEXcL)H0MFRjZX&WdTx8{aU|8g~1{%Iip
z4+L{-53_%DL;wKEa{wTCz2Qa@+QQV(1OSl1`KMv~4-`-5U5kIge`|^V=i~o_1Og8@
z+rq}#{hv<dUq0tQlJ_NGt*q^g|LLR^{%NNE<17uT)W*>L-@MWc|9pb~0CIx0u{E?Y
z1prie007_?004YmjvA@d-p<Jx08oGYS4-d@8{J_f(e{p}|8iCS0f_iVO2CU#ru%xd
z7MKRMWh>wP_>@VZhyxLFwh%!%P&tf?G38c+Zp+1Wr`yZ-?7Q8{*8iFA#P*vR67c8N
z_KzjZnfHz0jMuiYzP|xDz&DYpFTektjTFIRMT1sTTFq*FeyVJTomn_T+mAVD=g?Rh
z@ObgqXb&kj_*BXqLGVHVlB4rJGT+{r*=-O2D!mODx+5hG2Xa>>b_$VydL6acTd<j0
zK49c)o_7|fJ5kz($yKj++0mHJs%FP(_AG*n@$6QcH0w}mx3(e6nl5fuDk)T_I!`=d
z6;f#~PEpHnwl$k%oKafxt8!v4(n<=)#Z_q&o0lV1wWA;ZLeyrOlsGrq^USM^2a9mt
za`@@d5Mx{$uF5_fuQ9g#JOX|uDXrnV^>68j@Q|8g+OR$td9m@v7gvyQJjj$77fH_8
z&+BpPZE_amn2*&Ip&-&2s?T-GivZxf-s+!O8Ng?Uc<m`?G73O}{5hm**iR*g5C}9X
zUj_r-r6Nd8i!QQ24X1LhFh9fY-WceDvz`iL{Q!UkifGsgx8~MXu_Rf!>9@Pz4;6&0
zogv<g$x54#+Pfx3iPoNS*Z=<1uKjh~(Ej&ED-6_PXIRzFmW`ukI$fTU^WvaVRF#S{
zh(-Qu)H?Uwq}XS}navz;p8(2`QoNJs2B9A170dBb!ljMc%Xo&<{d@N;>}mF!1SU~Q
zL}gY%<{sj%Kq;>$8!t}GIPm1|)5GmhgiAS(s&Zl0m@;DmUvmz^cD`{;BAkRXmxyHa
z;de>F9tdKKJX<V%Zc~EB?=8_WYZxkg%IgM5#FSTc*$%a5w(sBGwIaoF{GKWVg+2HH
z!{e>q(w}1dz@%H_9amsfgQ!wy3Ic^k5(MDA0|0><DKujbXm}U&6teXgRxk4E1}Hql
zt|h+CCX|@LVRP)S*F(4)z#9ZW>Q#rBnXa{m>V6G1&!UWrQ|n1AO6%nn7F$e3nrRJ9
z`ALfc&*l(0(P}m4Zv2KEzfmAY404=86}m|rpUc7Bc5m)Y3|9V%>s<D-lbqCqMfgp=
zON)y4c8{)`<?guMXTh}DFIWegvlbaDvU1fRLxqPh0rKZ`U(4{m9@|bMqs%;V{PO^!
zaDd3_=z#h8q0;9FJ&)_&-VHj(P^xW<DxtUy&CUmsR9db$zyQ);x+k;L5GvP#iw<}o
zH9C2t5WiiQzi1=2d$+A9OC}#%Oe1aM$q1gGrK{Fg`RtmO%W|9~Yr1&}k^JXO=X8+v
zp21#~<vm}93mb<90nU1&U~Ek3Z=BDt{rja$tJ~4BRXx715m-dX(o$kSdM>Bbo01=8
zoT4Ot9=H9rCbvQ^jx9vbu?9L}p-i{0vDu393f>fg6pDncP$=O~1bMB6NYfClzG3(s
z$dMNxJ_0!4)bEUX59)R5uiJwF0#GCm6yoC#ADmR3!Y4@`3XQA?bcoTG7{DA1r>x7Q
zAlVbOsm5X_<l`IPYqXUFVtGT~V!>19V~ODDwdiH1>*W15LC3U>Vf{}>$E=&X58W7<
z;9-T#@+^<bfskg_*-5sC#h+V2zS2XGPj6$uaV`EZ=8yNE)2n<_+m=JsK_RBYq_QR`
zn|IqKbxhB@hQHAd?SVc9@<MCj5=zwNpiFST7~L8ZxpKJJE76?7YG+?$@o#ZbjGy8U
zWB5O&4{+B{g$FV*7*NIL{#=VmwPX3MuGz)NuVW>!{tz2B;9#0;C<KN!u<sC=%{aR~
zX{sITB8AUOW@}GFBY6rVMZ%RQhK86aF{K*O9@@pL{WW^L@fO1morT1-@h211;(-!M
zP>2gMEwb55%I|AQ?zVj#qwdqub3{N?BZgF9%rLv|rqLv_EPZ-TJ6(+lm^I4tf5Kj=
z(c^HtU;XZGWY%l%rO%5I+cmt)uUs&WF{+H-%z(pJsGS9CYH3^PFbiiNnxXp}Z3#b*
zBEWvOGGW4|pTyU3=%aokwSKgLG`~OwI&5P0lHxQ#go9;$sV;mcGvzKqb#^X#&lnj@
zR}9An4w2$jg^*4z4tbQ5jzEIDw&K<`i56aU`?P|f%A;yN`6?&niyoZHwVZXma_&>x
zRxE>GU}3f8f%ZK$yEC>Am0Xdt5gHJJR+R^8Q;?`t9fZ&(WsylAkE9mELQe39-)+PT
z_miPXTH%QJZeCnM<6;$xpKWBFLkP5=V!0IqFn093l8S&*2s|)xpJ5D<<#mp1d}Jg~
zXf)XPT6HiQMB}TXYEDO^Uwxhelj!fU8kwcF?1z*-RNQX~5~E2r-*sL!j^lp&Hv8>I
zom6i9(j8y;xJX^$%R2s+J1!;hcI&e>dcY_ogqA90PJ@P{UKMOYMrPCkQH&rQXU2cE
z#En+hrT-!3cL-8Gl{=@(tJ$(#OsWuJqJpS(*)WZiuofxyVzPB@LWMM!sF8|ef_JNh
zb%Or&{z7`oD|<rK;SQa#j;I8NPSWnkix#sw0J#u>?4S21#h_5m%C=+tCD?0Y*SIvP
zHa!U82)L&8%5~Sfh8i;O=`8P=65sRZL(lVgF3T!yh8|Zh+isC;bb<`t;uY!hGkBJJ
z#$-XPbhwTq^r$}d-yN^b<S`%*ESPdd5~+j%;5OV)<n~%);BZ{K+M&0wS!mW8Y<;#F
zOHZdi5{?1lM^GdoO=!SjG>0<d50HVAK!&@Uh#5F?POMv~!uu?i$D(T3ZvNG$ow;`P
zRU40juQ{oI9f@?;ax-6sEaW{;z9&FWeYNhOsfHu1i-*-Ep--zrJsuue-1S6VmBA7g
z5QGT#p&b!<m(yA@FfE+5IlaxkZJCmEoU-qJ0TYSdk#)zx*!vnS8i<e+O&b9yzy|y*
z#I+9IPP8Hdw{Y(TiVSuMDD$W&fI4gN$W%7t?%DuFzX29P>qUf0pQ_2p{FxxV+~i}u
zQtkx^Pb@g1qtp~QxLCrbt%#4(T<E9ZLrtBOCR@l-2nw6F5vh$skzAL&aTGg@Yq+Fl
zytNVx`s)wKv1K>rrUDm0gcXNJqeQP{V8Nrws9sRjw0jmMigp<0Vmy$@&O{Fa!<&v?
z^D>%OUmxK8#)L*ve`3sDUNyf+cfwp=E9|fZDcAWfA%KvAy%V`)sU^l&*ha(WHVV6B
z7jKX2<~GEDkOBoXb|Nj|wvN*^=~@L6XRATGZQIw~Z7D8Yq&E_+YFI<VdRS{^&e<SJ
zO(2*<67awKw!lOOlE=e5XGn-7Xq-3k)QxV4%=9?9{XB~~2*WyPw|K8|B*M{8Db>&2
zRcz3fG#+bzkWX$h^XQgFK0-<BueqBhhj(m__zp(l2Txdyk?DZ=?Da8&w=cgTP?538
zB?U(^7}*E3v?~=y%_b`}3Z&ikyKvhW@mDU{#ermqt8PHkC8m2HmPh%17LhO5)oN>K
z%*nbBkMM5ZvK+SDvN#KL^ODsB-}f*f*U^#=v?$9I?OgZ`-zGBFh+Y?<47T8&F?X7<
z%G8)((-~pn<E(4y>`saik8?<*2|X`TcOSy#!!-yC5{x5Cym@h3Ssjfmw@dQGHlC5B
z6FJnzL7Bo~+4Uqip<^VnGkm<@@n?=?mX)={5+{8Vr9?a?Pa8}{Bs0)cn-(O<cC0@c
z;3Cs;%OFuDkO;L4{gvdjUf<HE^>Dw*L=S_pjMSL+py|fo{p@Y8udM`K8z~W!f*mii
zK_G(wkFofK=zB4CASnJ>7pOq6fvr@sgpE32l+;WV;jJMaxU1<b7b$3kMMc#oX6M_w
z^wDZP2WA{DJ3VM`k4+M)T3~)I=JuB9gH6yPY;8^lfj->ml$Xo$LuOmA8nHn!sgJR3
zTrK>HEmw<E^M&j@IV(aPimXiIGF^fjX*Aj^<htR};ZpB4qS7)yg8}lCX<&s((>b=K
zv@OF6H%=(?&mqwHYxWU%I~VkW<bI>d^3IG(8#g}MmBGf8Y~$O@h}SBSHUxGM6o1fo
zbAH!9EV_5e_czM(-`}opx#ehc&FNT7rGR%n+);E@>9G-yD%4@BsM05ERVGoq3yY6M
zD(cf^O%$W63?lr6bjq3dqh{==o!~-}nyH*QjUlBv(R2bIlCYYPdoa#J9h1zLi(<!6
z$gE`#DOvv12sU!?meAhqbt0yNPFmr0ZCEg*z-z(E#_D2ezw7NCReJh5*NOMd*qQg1
z?kSGzEK`9xa4Vh(T`Z!hxQH6CnA0RcX#0g_c+@xCdDG)euoXgN5a(mED)vcrL2I-x
zLP2^t$m4rj$?iL_oM>id`<22>QmqkaFa6^I#8;m2$IFzAFIeI@TD$m#LNHVTv(7dI
zY`YZhXoFA>VxFjrAmLXZL(dmYHd!n_Z(W<;&8A3s`s@%<Y9NgJI#gCL+o-OMCpJ(o
zSym|23J;9<ScXFMRq<q~IxNMdGi;K>6+c&Ys@;N)A85?3#g%jH@iE@;yAHGPkc0>c
zhihTkhr(jt!l+W7m@cC)x}F_laUn?Ag81KKTNRy_a`f`%8j-j2O6>a;U(#h-R`E5Y
z!0>U#_IT>n9!+H3?k9YsKdOX46zK>*$-W4VbufBxUpYWT8esl+qy}*F%b+dqfinfI
z9vsnE5%gfNV{I)Fj9GO&00fX~5aN5s$;i1W#~nUCRwfE(U)UHaSDMi2JOk3MHR5z1
z8MZ~JZ<%?gYad^a*|#t}-@{c(nXL`(SI}78jJQ&!h!8Pb`-b+i<(#aY7onm!Uj*a4
z*H><O-9NZ|-uEeq4*}-jUbSD#<zBjI2@xu$J8rtXzWVd`Gu{ta!PtWDVfn({*xT>V
zIPu$w&#VYm9R)3RV8c|9iim<N+i1rw2F66271Xd?0c_5b?GY1Wb1CQADPP;N(l6Ij
zAHM7CcPsa)P_)(8I&IvQF3i<K5@j13akQ0#YIJV_H*we87ewui;&=-$HBT=)1q26Q
z2gL6p4cV-fLrRFV`VDX?UP^M6&`pitoKdVPbQ)g2!<576d9c0W0y}4^F+B=P_`Yq7
zuibgY#r?l9bRmtL(PsL8B~PCYGk0og`vm%LRIjttfluES#~{(rR=X%r-G03$25CXu
zanyr~1f+?JApCV>dE^Qm<c5{4llKWOfQLY)%c-rKuHu|)0f3S!R_}~71hM~e{vLRH
z-<-IA!$!Bo;bL&B@tvWTjqyO##Yp<5a<c7I!=n8~S<P&TOkfCq#cwk{ae$fBaxQqh
z-T_qp=0V54@CRHA2A;|C6Es%d6TY?iNh!aT-j7N$-1Wx4)qvV236E2YLMGLGQkluq
zlQuT2va!>wrUzrxQx9(;>3||sXBs*r=b9hA+>($87fLLeX6L(7Q@U_b=PC~?dX4Hu
ziLwDcs<HF3{l;ew)6=%Jm*HEwR{R}5dr|{=8r~#ZEI3}3QkzA~=f&<+-@BR*+Kzw)
zR{&yJVIeg?UaG+p2`Bz?%%!tP8zu$XZ90oYHW<36s9=Q=XM+Xj8g#gn@SQ9c(fxwD
zD@@brlb6<CAYS7F<D7uZv9{}V3K@RW&1X$N5^rZAJr@hNW;=TGd40O+<Ej{|$3h<~
zedzCa%hDPcT+l$JFA6u}nMcVCtw_3*w-wInn#}x)uZ^`!1(9QIG_{Y!ga#j3SFnmL
z*ABn6DIQK8VgyZO-0;GKICvNrcHF(z_r!Ay1l}Z$o^xj>1J&Jb0`nGxRK#WMBv<k2
z<84!to+U|%+h)!dtHOEFtF=sf`MG;A8uFV2i=hj*7ZS6F?CX10v0d+KxJgksn%yTn
zVZ~U@rqT}pFi@pWy>s7MuD;8jbsb_{Y*-vNWCndN020K8jxz9Lb$xPJAw)TvrUf%A
zN7xOrev!|e(%ghh3#quPH9En<Ma-@64dkC%2M4T3)7o3pXAqak<@dZeKR2k1tY=!+
z8&9ppg{*fO;=-nVv50|8s#>j;fZ)o4nWWFw7;*A*MYHPoYXQ1M8@$m4i_<aR!70Db
z&XA{dC-E+Xee2S5@a#&Jt0PTGF@j|HJ`p)f%h5uud;Gx3E7WQ<B$kJx10GfM<&Onc
zM%5sBEgfvMwhB^2{p8jcZ#Vvebj(<vf88s6%AtF~hd>gM`ERwFj6o#PG&6I&Gwe8n
z#)x`;<rXAINCYOpW6+~%9eAAg1rIb2A`=H_U;-FlJ7;i88Ve#(mBv+8bO0N;2?PF}
zCj{cQ<{=7=K3_KruPW_}%c$`jWL5cvD+8Bv=(U1W^YXD}OC!Xcelzp?Um3C_>8xP9
z#V5&%&`Hr6G<FCmX6skij&S|I55Lcvm3USeUan_JXhqJF6BCMjK*E@e*K!4`iEvcE
z*4pM@EA5P-z(iBX0<1gle&6hx2=0d!)xQ}f$A^%>?Ih%5kUE|ThmF=rOPad9=uc`z
zE-n!h>uM1pRqTk62_^qocoM4NH$-e0(C#IgQYXiZzVNTxS()whZRr8e+j0IdrX!Xm
zG|=V;qs>6HR3%jOfC99bnA(x|ZGghsE#GGgK{E)n^*pt$b$*FJYS`ukK@K6b|Af^4
zJ_=eZv~0sV%XcolUfqT8W3%f(AM?LyBaTf_%j4|*7^n>KYIS|TOXA%MlP#Oo9aU<w
z8oK`Z#6H1~BT%&QoXuJ3)UZSFX=D7kMd~@&tT{^C`B43$#_w`fB6XttIPu+_cg`}U
z{Tje8F|Pg`Iel;f-d>4DPap`2JUwh9;=of%Zf-I$?C=Wc7X?tT7OY>(XN3_80cFrx
zXn;-E5Ise65(ggj#j6Qp#NT|H0R!av>aRbK0%RI~e`Lkh5Ts$SvuU}Ex%1?#U+P6x
zAG3+1(=4s~ScE5?MevY0MYPIu<6!D~^BsU1O`BBnZAX#Ic{7bi-2UQ{E+?j}wuxPW
z7=LEO&ii9RH5@pJR}lf(T@jLEerymUIA0J$!S}Mc10#NHa`B5xtJrAD=P)0swI}pf
zeU&{uojoYR@0;)Du@5~T+@Ac5F5gluM9^BAOYGCM8MC5!WEYzSP>fkEt$c=_nEV47
zjsPb+_&eaSI(W;}FZDwnWIPP^R)VH=HW=M45J2sq75>A#aoncc&DM%qZMI$o55L}9
zv9pXDgr41|ZJ7yA9`yR)Z!55jje-yzt`tj}v0E%!iFX(#ld=%TvlvQib_+U{pto6?
zjP-hT@vXV;8FvybN#&@Do*Ir{dndW1%N3j0bY-4V4?gC|k|D`?E*KCIml~y=$sV#Q
zjf_GfNPJ$><3YN7^i}9lSiR@eiY5DjVVjqOAkwBPXLMNNQm`0ijdL@hQdH&aVyvb7
z8knX5nMG&zh(w+;Kt_AEmrfZ6?e~X5Z}K{FB)G28+ptuH_e08vo3GO`J0i50KSE_x
zJ6rBfh`7^_Nb5+1U0=J>zBFCnc^fjkp1<3O;`K<FIPLizrA@xLbj&Cu&Grx-stm-B
zY&AVDMLcj9kC%&9vQL-Si<~w!y}O<#U}m@coUUr3PT=v^Tg_Yb6LTxokQ8(9D?{#~
z-#e&O-8Q3Ij!GNb5ey3pF@UuktwUnoih>kL*dGu-=#05fT2Y7XAsPFP7ziy`3~eQA
zWVm}H<0Lz`u~nKi95}rwuP9_4=*5tOoRoPrAvlR?H;{zd+p#BWN^In^b6aHByBfOO
z6*!s`<xM{q1%5*8-BoR=a)!n!Kk=I0{|csQw(FkEn-dMhKpk41)FL!81@5tOHB4Ah
z>Ue+7_pA%h84jar>YByikcApzXAG_LzJlpfSvL`3MwmUIriHH;p5*?3HDuF;#72q?
zVw^%0|J)hxa(PQJd#+TO1REoZWSQ2jw3zgzsKI6N5d6J`)wb1gGwOmPYty@e!-K#8
z*4gp2aP;>-q85jzr<=MdmxcEd=FO-H|FtsQ9KKW3$EFG425d7DrN;qn{Y?97)}oaa
z$69uII9hVataLTC>a0Z9i&!yc(Zzef_n`SYcTjReM_li>9wduy1saJPx)|N6Zb?JA
z=XK3nT4%Pum)nca7}4C-5&qn>L86A3(PPSGI&OM)9sdV2p0|jYhPibF1_fFQF~0k5
zdv6mM*I_9}28d9R<AHp<sQQlkPNm$UT%8}*ihmutzwhvgDG=Y;#`#!Q>u)n+TEK7;
z!Rn6{mWx(MzVKSlZ7;|&^XklUZyT~0K%x$AL+!`a)a_|iV{0>)^^*(>YspCC&?p<q
zvCNVy(0Ah&<d~M$W^NfatlGL$T`@9yY+v<aF@*<-@Vz_=qPlo`$nOqaY3p75FopGE
z=t$2-dmSwUCh_O{CcL^W%6Scg16{5m5m=Hd&h_S6JcK0UzO^S7V~)?8Xindr$mpOq
zBRr`5bLX!2t}`FVeAhTj4ooml2#Tz)bNWMw29%a{j9f7M9LWL~)Z9g~AUUVMj1xAH
z73RwX!cY5;W&1Re+s}6SxM8ghO*%UyYn`Fi^@NP;1?+)o*UZHXx9C9ea<1t#bA~NE
zd$q2l0vPIdNHwTAM3JtV(Ogx^Pi<SPf80gKbI8lOySo`2EOQbIv1M@rjWpgyBB``l
zBrbOhu3Z0;>={{YbXxi2`sh?`_fDr|dtAmpdmH{X%i}cXDJ8+@``B*bYJB<he%A8p
z_xoBw8u`L=i*>mtX!!^ei<-9Bc7AEBxNgrjI+{U;dD9uUQ0yum)t-*AnDMU#Dj8~1
zVL|OO05*s|VZm^1E%bgYINucF`<?Fg-LVBe%zFg<Sg}<+uX>uN80~Ie>GjMMK@^?o
z_QU*X_6dGoh-~4}^yf{~K*T%o1W1TtjBw7qx9aMhYjvnB7EkheiP@A+33pWfFIh9u
z+X#>|O7^6IPRAehQZR9Ig6Zd>%pLi+E^vMrF--@IqobAtHt?+8b1^!fP<pz(bm~9k
zOQG>U^#Q6FQ^rD6>EuP@N}Q_UYp-sn&nJ_eEyC_<gR5;UT(7)lN8*l}ugZQCNWq+F
zWNtmaaF4%aC_kIjB%YGyjP_q==zvx5^7?K9Zwgr#ah4Fsk_|i&h~|I2y(90!<(xNJ
zRmzenDWUVc81BjIb>gYW2{&=NPXnyKp<SS}<VTHfEV<>bnY}iv4%II>$*;vwg<Q(A
zXWj3d87s<=V<aAR!<N)>E6mhsy_?zCcXs?Vfp|G7Sa`_QP-IS1vE*;?ZcI;*C9Q3&
zlCXoG>Urb~u}{(U_~Fxom&@Y9BUJ<8$?OY<h*5ozJS(YsV>$56rwD*Z!3Ap`+Gw9f
ztrJ+d1=L3ic4waFh^d2YE7RjTLuVklpgJ3l!LnA_DZGzE#~|Xm)%(Zk;^N#9LgAT8
zN%mx+{VB$ee2JCZ`d*20^{~!)?n7;Ca_=_{WBZxxc~2Y&WPr*VaP@OHD}{XD;tSR8
z*aHkiyWXNQ(Y6Ug`1U(^UA~eBH*gku$6(KsN^zoZyq_))W9NRmsn>q<2w|`S%U%@z
zTEw58Caw2d!x#uQlnj7Tjg410LRu2Ds+|$#TIBSgDVP~A>I|z&9_Ce{TjZTh;Sce2
z+xr^y+@z!2Hn$ZBZdy_8+g=KpWbO0p^s!f(ewdcBAuR7KxqK%Sf30ZEVq}UEKW}Dk
zW&ML%ZW@)-289tFB4p>T`C$&i-kL$~ugQch2>JK+8mT5Op*rcbS2CBt6f&Obs(H^i
zGuco~UkC|QRbMFjO{}exo<L><n+a3hmOxZ9zBnA<{nWY#(hjfUd@ILB*R?eAZp<Eg
zjJGZvZvw?n{oo5g9c*O2FdeYVS&dwQX#QQ4Kw(L=lCkMxZrVl@f+|o<SctkhQV$42
z#*AQ~+E1Afc>sBzcwGx)=0Id-YxsMCNZ4JvcDXTR#m>DH^1D=9(T2E;s)aMV5iEA9
zmhAU$kLs3<w7f6RZMy!uTHyZ0SO7>Ldvlo;=_bul=9O0To#*$PF@_VSS<kaqmcA|}
zoAlfAD{^`H`WES{m$58vzV4&GK7GJ0LU>&zU;uDh5;1zT$v>OR0*5Ttc}ZZvj$jPK
zlzO-InB5CO%;9dH1?(gWMV^c=!`{2q<JMHd+&K)<4`hR{uZ?S*wq(S&X9<nfC&2YN
zBtpZ4^~(u%hi0o$>f2B5v?rilE5HMXqiy&8m-_Q%F?C&wMjUx2^vcxl6^6L$ljGW{
z)?;l9ZOsLr5Dxsc5C72$d%*}4WQ`D4!mLP}8d~b5oVFYXP{zmh;)OG64_y5nKF3ot
z^6gO)L{=g<xcZcw8Z1fnJ@bV%P>ZW|X6@ld@}@i?|M!2J%=PQ`E__TAihTpP5Y$4D
zN3lOZ6o&wx3a%nl)k7e_=7p9|&0%c#iqBR3tG-ig>kK>+vP@*Y7q69vq6nY6qn;0(
z*J{a;58Lh6ubki{=3<=;=&?@Ze&hhyY|Rw}2InmSjvkUg;M6MPSNL6ZcC_YPNi^%D
z*F*~R3{3_k{cJ7}%t)0BBOi13=syo^6rQgAM4Qh3V$`P9>QQF;TahHo^)CIN17$HX
zBoXo<rTXemdGAR5MzBw$MAG>B;o9pXiE>aNR^8iz7#_y-3~{~D&P_pl^*_^XO;Lv4
zk)Y&(J7RzykhV08$HVIW71a2-v?e9^YXL}%Ky&<VUl~1?n7QM1`x<5HGUSoic4gX1
zqHTxb0;mDBef(>Ih7AyewPyQvo$|$_1bKMozg8ZZ3utY2E6T1F8BIwMV)#1-jM>rX
z#25@koBJf)>69!Gu*b(5Q}dma12n1%`<J_w5uWq0>`8XMPCbYR2k+X8vSd=&eE_E#
zeM+x~U(BKUKCCq*ZEoZF0+^~RbcDe--({U3uZ4b*ou}NyQ6Twf2;LZ=<N@WG!k|tx
z7l!xxUjtJG6XB#&7-mzkD8rvqWK+XetsAW8d~HC4`ASG}T6BAR?#*6C%}P&uhPSi)
zdwIPWpe`!cjvnW}&P^PYb6&ZN>wiB%8*W`Zv$5&n^Ht?Xk=iorleDzhnWP!>v!SH-
z-hA7E(WE=h76*_ba<5AgV|<y9NFuE-sc3ZRQ4U^}I`)Q{e%;6){_*@Hi_#a_u06{D
zVAY}&{W--~<{FjNqcgp5C_C>f_}%$1$>%GLXklcy+Z#(e1#@aeObegB7*tWt#y6!}
zEcF5p0f{VlD=oo5v}&`HH^1?s$nVMY_t-e(SN?YMM{8t|TbJ8qyxq1%@x_u}(K@Yk
z*riO&09kH@qkVD#_AwEKL+Ckf;dMV(MyDjk>Hy*3Vh?}gn}a0_8hTD~3TL*p+Cz$C
zzhnyX0K>$C9P!HO@Vlbw>}o=Clnsnis%2T?gYeAs@9`lsp)wj=MkKGLb?YAH8Ecd~
z^6zj4BeQpVk_8&olYQ3;p*qD_7Dv(?Zqf~Ac<O11^Qu70OV2sHnM#*o7Nyi4d*f|}
zobUp{mlHp}sUU>>cMY?34Kr#B%f&oudm+Fxf<a&aPB2Cg=&?@{kDmT?u{BI}A9RxM
zTr2X7ln;aa<ig5}JO<3ltV?M^w~CENC_i5-a2}`(R2kKRL}K8OfnO>{uYZ4`VrI<8
zUdJ!Rgsb20^V$6jsWZUBtKy~9?^*m!b&`(I;5gm;zzkHOb46HUkj1K`E4!Vi#HZ({
zj+N1jRlw-(@NZ2PJ8}c7a_3aw1c|!R;daDxF0zagw}m%;JJW8u?M<y-&d#q2e$fCF
zM+YbiA5cCcIX!QN$LWJAmuyL;k<5c1c>F2vu7?EiXGr#C$V&dkxE-tZCveGfPbSQD
z<w;pGCvhdNQ|uGl_WVUO=;5$070*ezC1%M=D+zKpBf(^;sVQ>QK2y@tS)K*rvszzW
zk?0D0+t<*v^k(6R!|Wm>ALjrIUG+To2H*W$a<7USvPQ77=Yn5nV8m(BvwmWeZNWxg
zjl)-PxgHo};C3;lPH<Oot`D%r07`T?4J}#l>@78bfl$+>ESA3r0)otLddcv1_T_AS
zQD)#wKPN3h7;bKX^|(hejSyy=5@=kSfc;__0||0$jRQ_2$D|$Axu+I{&%@)ZcQYrq
znjS;_SNdQI1e9*lT1@7OYk-rGF@DSKA<hw0jZa&i#LaW^XfFN$AKG2(F87$QtO~v=
zG+FAKS2{dfF+6mH<8=EWh&Mam0+qCo>qs|9V4$i>>?PW7{%>V<7J~D=<7MUU4x7BH
z5!yEUV*PuaSGZI8>#EutJ#M#T@rAh(?V}@Zzoy2aBz3i!hsA2)X=QT6o{yCq+ksyE
z$p@m2n3=el?7wxpU<zQ{+F%_;0lSHFPWk>_dH~2L5<P~1*wRN<Ng1KjBlKDwJipmD
zv4i`JmX*Ijk-7xKUiOK*g#E>Yn4%sH82ZWGu6G&WpLNnZc-wxWR*mUNeuSo>$9b}`
zS#n$%8!t`mJ#n0z<>qk13wIi1Bl*9A8A|PAq#ph4X+7up_9z<sc4(RJ31KOPp>9ZV
zWD+P5_bmGlV)i3#xY>p{6|utR#}n3<8QJJ!JqL|v*R!#qz<ZHzhlb|<5HdVxy$hb)
zqSKVN1j4MrI8;vUy>?nE*~QomWau6m^Jd+ajW}`y%M~3I&DB$-dSLB)J0^XO8GD{H
z#VP^{(6~hB#&f0zrMuONl%zaEL*eFBGw$jDDf)2ZzJvY52r~tC=TNCBsg%S^9-ugb
zTUQpr3W!%$JlBDLSj=yyo28T}vDcsFG+#%l%l{mM0H$t0z^q6nz<l<30Mj%6SwSSy
zROdN<E+_bkq!t$apMpcftvt7#qvTBi+b{3H4E_WRl!V|ItJ09feWz@B^?bmAT_rr4
zLGXCJV|LJ3G&3$(OV;ZVR5&($p-Ahcqwf**V*Ci9uw@#1LkKz27ZZ#7^3F{Ok<!1)
zpW3yvY7es)e{bGrE9osb9!1=(HDL!#fMT5tS;I+52e~${Mr^<!Dn~sR9l?JmXA1hK
zj;_AjVdPC)J{BY_g9^og5E&k-2?i5M>FxUi{=$SS=_hzDT(*y!JZzbua>Y+l1a8FX
zxY-;^Q1j_rw^*h836UGLB;=fnGSr5W2Q|^*AImgHcF6)$5$0KnqYLb<flRuF=Y}Hx
z4NN9L)V^IVR9xJWPA*e$uV(c<K#P8&tjJyqC>U=akrJ_**6yYVT^&H*PC{+g$8I$i
z4FLiu6Twi{VjMv;#5<VTdbrru4OdwY$EFe`4|k$&D5=W2!)(&7=&eS#g|Go1Mn74@
z_XfrmZP;0-GMd(*%V_~XYYD^-TX89XrIllW3PwoGer5bh`B*j-aHJGIY|l_d_8fFz
z`OR{0o!N;rk4<KpN!fw&3_tOs*$x2=htH^HsHt}+r3KlSFw<~=SY*uww*;l9gLLdw
z!RjAv5JfB7ziD6I6JOC>DNR+QVgSWQ8eSaQ*Z#l*qqx9<X=RC(nsS@>(=gD)_J><B
z4jIg9xJa%gRUPM}%oocZ0iI<f(+%uvbBv%*lT#MTpo?Absw13vimZ_YBXr~Zuq`n4
zbK4h#8uXV5FDuPCPu&e8w|DT~<M$k~74<`o5M4@mdZd8*ZX}!K&!YsS90ZiD0f+}=
z4|ss^*PY}&EVpA|&$s3zC)k>ZN}PfAvd?{`)T2h^!?0lM<~$%uEW4a$57l^~YRyLd
z_mya8i9o|DT_>#iLnu;^ok$h8pZ}SSk|d7O=lg6JZr8+XSB?&nPvgV9=fHgTKE+r;
zYu2#d^wpN08qt&466<N2Z&Qf~@Z>A{p4aK0s&@id6q6+ogZVdvWM21lARMin3zP@R
z*}rp&98{&6eG>|~LkBa0xgrX0@sppOT)YK-{OhB?c_(lS=t|1$a&)Ftu%bwq<kQ>J
z@7T1Z2CGODEmy{I=i>0{i@wZ1Tv<dfwUf|UX4txHSxY0=M^l;W<(i&Ks<x^z5=3lj
z6gb^Huapfx-~6I?o;)6>6W$k7T%!k2W~(Lv$qpRpzcG90NT@#jGbNY2KhMLG8%lr&
zV5Li7U3tuG{M~hXU9T@A4lWM9=gnwy8ekuJc<|4QxaZ2k;2kMBCdOUh=I2MLPNF@*
z`8++mKYX4(zfwD6>+$N5xvzqOmn?XJP+D<U^xDRz+i9u!)OmgJ9>SVcl&!+ttCm_j
zoAj=dF+!~qGL@vK{g4)t+OuuDT-_5aqdXQQRRs8zy4)*X<|t4a+CNVv#B6%JdwY(r
zz96qvx3<I3r;ay6GshTTZ%2b4)l=$Gn(LR`^&G$Fxke7B2xU_K8q*TXI0x!837Ctd
z2?PkGJ7QBNQ_))pNMJ-(2vGJC3gsJetd-&ObR|$cJ{!B~VGkn;%@*C6#7CW2EqOL?
z{aMB;9h1z$$#vZaV&`wGrNB52iGpAM_k*(4-qbUI&4Iy2;JOB9pJidAUc_{ZMY4KF
ztKu;Gu&{=ctaii1Uy^NZo5_SK+<3CPKjOEoTnw(%?<MQ9Ku$0u#;V_1vyRdLY4YRP
zjC4(ev_C_!v6UGZHZKz)uA8}WKqnj>e?B#tktEIBxUdujHnMARGop6YXcFvNtr!U~
zAkCeg1&vtcnZ%endCQP~j%oXQu_rIV9$&<lId`idpl1R7B=PG2hf;<b90Hkf4Nv%W
z&teMX^Ah;yO#uLmGTFoZzt7p@{oEToS~*<N5WTzAt>EfUBT43R<CR=1l>eHWY6{VJ
zLv|}Br21s~cv1?wI+a5kdv~w4!i&%4noS%Pk5s>yQ$M1^uOHPs%a}3`NIQ@nkhrl_
zjeh$~E>l)d)8cwHDc`Lh)hqWS+-*q}9*MGwSAU?h`J4>S3=Ere*p*DiB15LY#6CGy
zlEMX>ygS9&Gmv8qzoiCwTz!F@86`rYW0_OwL)p=MmefDy38;&qw+2u%U5P^v93ZQ6
zD81T<AP%Usv=hi4tv3dMKtr>gy9kd~tgFZqlJp+Vhb(w4Iht3l|4HV)FD1Qpsj5<$
zAZ#z>kyYDQE^0@y*9IojG*a}vwHIM&&rLx)nfv|mwtyLgSzVK4#T4Z+#G}KiL1Lp7
z(l%j)DHv|+xHLVp#g)cPbT^T>z*DGX+s5JOnsHHYJ+XjNscp!ZgIsaU{e?~5ps4Fc
z6lu+2Tjgkds)k4H#APp2G(3Ng%q<F{(wLxL4nDEl1*bM(d|9{u!VdiX@Y-64?ARlQ
z`)6kjL#vmk5QE{@$nM{d5%eJiNL%zl)rC8*xi5$n)$RV)?xVoqs{PlDxpn&<ZA#Pm
z+#)DvU@_=C+_c+QLhk!A`wk@udH9Ba__tOAd2TK<^3%SpaZp^iKIojOW?U-BPZV~!
zVg_`7<Ll|)M-i4mBhF&6I8IC%34`ucNvG_n=W#-w5A;T{Z^c0=0Xs*l;^A$t@`UiH
zb0>Q8fKZ0Sa3X*gzl8=Y+yZp2IKI1{$JG0^@GSDd$vtAIx*47>_K!z*cZY;~p)#^g
za^yjlzX?anDZa`knTY)*S{n8fmqWllw|>_HX(Xeu1|p9b=I1fK^``fG*zHcRk{Sa@
zB-A$@Se`@l&SprXKi^w9w;LlJnlBO|)4~>~Kx;k^Q_Yoee;mEB*r2D8IG7leDLr8T
z1@dFYEk4c@cTP5?Uf#W|`_<0`8oE%+Z}wFoxa~DOk78ahj?|@$pw?BMPMbxa&sYd9
z<)YQJk+BY!MlK7Ll}>Xl(U_C%2Kc2Den&bp5bhsgMvPeG1}TjBaav>;Qsj<tc*0;!
zO8yQ9m+wP1HdN#r-<E||gOBh;iHa<KrV-WKGRC(lb4b!57L15tNXD&?JO&xmmjv3H
zpWFLRR>0BGWGi1WDm{<6L6t7=_kG+(@2?9i4Mdqb1o2jeIWu288^vfc-q%<4IJ+sf
z_wO+cT`2^aSl|Ida*|lc`WLV=5j+Zz5E**;Tg%6UJhg2{yBEg1i3<|`zQYs<{`7E0
z!MW2hqh95dsgm$<%=OX@DmQNFB-asuQ3{gqB%he!q+!0`?B$d<LAywz7Pcu1^RLGp
zP3?$Z#AFPRg)xyBHBj^;{VoCiN|I0uG&+xT?TT<5Eoc!60gRg|{*l6v4<8HuA~f6N
zubK!r*PpjDZj{CZjkY|7mFqu-U(G^yGx3U~v?sn|phOm!goUx4$y%pG?;Ks9?@syU
z1zTFAfOI2_9YImmA!)8ZnWa7c2m=IO^kgw5v-bHcjd3i~ZH9q{L(vK%R&lGff7Y+u
z9>K=%&~c!9{P8|_-oVQtF5ta`Ja7H>sK0M+<S>wPB=tI+&koY~o(tf+UWT#dJDw))
zKkL>gwY{^UVMnUfq3A_SKaqyhA+%~`{yp4f{QFVGTTH-68_#U=J`vL6_UcG#c@rvw
zOa+k;^>s$0sF^Z4TZM1ucMxwk^uQP*0_(FW!@$Bf@!!#Pn*9Ol!GxI=JB>%4!Re(2
zk5>BT(HDwypg7E?)Mq*T(@_08XdbtFmH@$Q$G1s(z7>*zzwMUcoM&P;pVXh!^#*`o
z8&R!HDo}J`DJXSM5i~B$?|~e607IK&za5t&j)Z$4<EIs=Hu;$++lkwESpH$9a~CQ~
zP^wX|fhIYn`l<VtIwu)N`t5Ck1Lz~pd(J|HJkzTraUtjyR7HB-T6?HDNM03_rNeFY
zIPtQ|_OUkJhatkH34qt*X&__kYI@H|Kd|3->;Z?Tx>t5gIoowfZQ{myHJuh0bQIoo
z`Pn!QE}X7!c&(l4l{PHo%64$}r|bRgV>E=9OD7Yvd0_j~>QRxom*bECsO|BXpNx5{
z9@&?tJnrpo<5Zg129cq%AM{K5eaJ18!RTeSR5V$vtjN-s1V!_$zZr#)Y#|~e#jcY=
z&^yxG$JVQDXI}>{9r{B7JEiT)V>3%<d)SNNys5rG3CrBt!o#0j^;U^87cx-g6TbX+
zi*|e7JIe=8+x6P{O2L93v2PLAAEz3`8|Yn`GyI*m(ZK!!{UdS<(1v(Y77!LAid*sK
zSS5M0{pdi~6MW?8{uVbWekctS?G>AXL4HD%-~oX+#Z~jgIw&%oPnW6m#}3Wl+m}(E
zDeO~X;%eCN8Hg^ApUv<{L{pS{5U>F>Loa=RG2bdqQs3AHt<)`4^83(H&J}T`G)%Qv
zdA!sg;4S|PEH`escD|qk`L;bnFp_Jz`zCwe!t|lnm$R>_#R$W{DtLwXPSE6MPi3i0
zVT|BaWa4R3sN&SkV2!+|Xlf^}=O4_*jQsIllm$+36|JV!LW)R|5HP&;n*4=`s-sW@
zQ#qX(*?!Grh5)QQZVF5d-OhZN@(&j6^o{rZoZf1Osj?WJTq(v;sRH}2Gbgpm=4>r1
zG?q|EDWYKhtCzzrcps7d4G)CVT_1BORCoHR0nkE;zaYSnvazbAhRN?!)fic3hI?GF
z0%Xj5*V<31Fi3oB6!)9e-CM>N)InO8j*@%hYkQXS`8*t#lFxD>te`Ma4ZC)vsi<pX
z=xo(+N8UDGno`WCA8u`s1aR)xTJ!kq$ea&DBeAY_I4H`DAkmDYCwfuEd|nY5P$_}z
z#GUx#eEh`Rm!h4+FB%w?@_x=J58F=AmxpUo-I;kG!#et%bGoa25XUBDzu?M5Gf<}w
za0I$}CQj1mM*+(DC(&Uc<8(&0O*2>(X0SDMRId@-Cjc}P^85ArlH^gt+x3^a`Uc+?
z{<y%I8+|P4_k+{Cm?ocH3CCF>Ot<)5X!Hr7Cyx<OhFG~%GFXJj8>@VZbC==@MphIz
z>P;bl^6f?xes96^3_HmPwpdKq%7m#7!T05*6o0nImAJmgEX*vg%fbC{x5HA+PL`eO
zq;8H^P63JwKtR4!(c`)}m+uid{SG2dl^zjewyt(Z7Su^)Qu#Ob$+mXIhW<x2*Q~Z@
zqpWtOoZ5m&cyv3Cr3&y7mz$-N`a;=+scUNgDeE$m&^T>_>l^_<07Kq0LgIeO3N>c;
z)tHs`ZfS7^3kIrFydG;#aP6=1lkbD$GSS-Q2e{uj!J#j!are$!+8<SYKgNUHWkCSA
zRQSk3Ml&{k9Q7--NAOcyARtFLeD$E~o%i&Dn08+}R4^SIm6G5(shTtcSrV6s0H!js
zuQ9dou=W5F4zKgJdL{UIKp3(cqWj~$S=nneuDZGjOTJhI?}lax8>sX+2qqT?jUhEj
z1@y;mb)PfoUaC3XMCT{SpeVhNn~=GLj}^V2P0vHf%rqS_jtPKF#Ay?7FC+&vwJ7{F
zxBY$|MXuGoG;~&^IqDDt&B3*xtn%)lSBd0!g#}SjX8dL5dA51?g)GlafPyJH;s&*J
zRxXSNPLR`f;kJP_zW%0c!>TVct2+&kBuDO4(CgLi=~A0f0!Xh&K<(`h$>WAer%X6j
z`g*(@&N7e9(c`)kE#mC;DL7xs!UAD2yxG0D)oqHTlhm7f&ZnZt&yFe)`DI|QBx4GQ
z2I-99cnQji7O5sT8yGGF<Zw6EZ(k%wWfUU|SJqJ_FsCO&1?$t~;U?-QY}S8>AAL+W
zAB5!UfG<eW4jLLO=;xXXR(T8*wI^}KL++_1jw8{pY*^N(5KMa8`JF)hk~lo6NrL2k
z7D*ly%52~+dQ<CY>!6X50s;i@rR;A6sZ537tB1dRYpdONh145E7djH_t)imN=h{c)
zero=b!<$}m@?xiPJ=t+hMX4NjmQrm-s%&MKIvN{aKP4HUaBxGmizZHES{Kd3(%cZY
zqB}Av@n2i)SRO2`IxWr+020FS2u22&>jOq|izQc%M2GO*FOGaS^qT|!F4sF8?C6-b
zc0^75+1yI2peHorR#?q9&44MdUQi@My^WA+Op3p4>R|T8h~^r<(-&s`a`v`G6+caA
ztn_g@Gq<(OuyWxVV1vC-?ZN3cu<=ajUt-|~uj_d|gsGap&L&;PkB9newOlfIB%vGd
zH3%b*I$h#K|1AS*_rTtcqq5#sLT1w<QvISIz5Rwy6;*@xwU+i;5UGklMBSa@+Zq9L
zi|Y(o9i8e7XlltMLAl*-3Q)<FTs6&1c+!u{)zZPBR_z)hnc}z&s+GFs>W}^-;@y%!
z-Su&AS9cAm7l7T{<;NGv*rJ2xcO0Lv_ch%HCbO8z)0aAa^)QJ;?K)9H1O7V=gvZUT
zotAsnNIXwPpx5!qKJt97Oy2@v5B#M6(45}h{gEiufVK09Il7D>w#1lq1i#N8qxKi>
z{c4A6yBs-ED7eVqp8)t2@TS|)>Z3zZT+y})!GzaM^WN8R&HcufK?CezI&dn0(#`Zx
z@L0S4-lpwIte9E`og_A1cfZ^I!Z2tc(dO6kL@)#G*DP#bQUX@Ze)#(}2vfc+Ro$^X
zF^*zZEiz}MKu4@;@(GXO#M23cx_G2OU74sJ9rk19=G={0uLF-!=SpmNSl<CUeN7WQ
zx5iEX>KZPuy-B~$`ef0F?dj9EzlhPnEaR-YAe2xph5bj%Zb`bgOJ{qk)$-0*TWOHV
z?FZ~r?p64d;vI(gO9Gf$Cj)c5fu>)X3>&RYA-JkNAP~hP5}1-8*?e%hD!Mk99bu$=
zckIW`<{7O1wdJFDZG^pS!-w3$&K4Fz8YV}rNR4XoDv>L7;qS>`8I;X5jXqzC#T#94
z$_Y$HDYx`dN8xtD*X0vEO2n<gyR4!Vt$Ixs<;=v}d3JT;jfaTh^30{-NtlxKiKT(U
zD-ss^=b8pKE)I|MgK&io>6+&CQ)lB`1?3ROj(PJC3AP$DDck;t@^p<pS>BrR(o+dd
z=Nq`)+SsB<>C?A_0tMJV>CoUHO+j1;gWpr8!IZn^J{uUhf#i+Ho5Io<MA1C7>Qehz
zjMsCVU0sVDO8ZJNWxDJRcBYm{zh3QbRt}0ILnZs0^c@Pfp9m~8GM&YDE^Kg?3nCWS
z7+^7^N%$zU-PeaIy0s)Q&d(nlyyU+$_@#)>dW_8X6QB)sPNT_TEU8tEFT{=IwIlLY
zl{vqs#FCSeM`?iX;lZbfI!cE8vAez>%9g?9Q#3a;84Az#g+QqnO(Sa(!(*LnhskVp
za{e8qyDh(Q)10ccVBhN<aGO(X;?$xS5HJ<<pX=uhG#DX=?6?=<b(KOJcz<Y~2qvO{
zVuAL96}@GAJj%!V_aZeBX9|TU8RBi);ToPP`mf!)4CiR{FX)Y8a+2SNex%G4%B}ph
zu|2X1ruGUy^Yggnq7d~T)(YZ43gXA*CTOM$xr=Q_ucA|7$_78uWOswbz*d>yuB$fv
zRfNHbZazy6U^MM<_PTbho^4tZ5%$)qCB3!RSI6=O4F~l1)^y9KHT+;9rPi!1yl<br
zjthE|!n}{&na%?>!>6>Tw4YV-Sikd-nFM&;IiS_?BtKR%zK;47wpd&F4z+KXY%J+|
z;x&0nfpmbNd)&lNNWu<iLIy1)P(><IZcRR16Q<js+2$I$XZ#mxJR6$f^x^n^o#Mf?
zj1sjQi}i6)?0U_a%)tc=Wz4_ba4=F^dx~S+nKQHdeS?a|Si9>UJC}B-=v|4eRsnxO
z6Js>Z=9R7^dL~v5^&x$?BLb}7D;$a{{btZd{9x?7{l{(=RD=$U_)v;$WsP~`0FgFm
z*qUn(Dwb~0lvQOUo}Xf0x!6ofCnI^9{BQ{(^k<wG{(1bB*@I5&y7P|-%1B{6`#ns~
zrjAQZrh}5kByCi|c-;qP97BzG;aswCTe)Low^k_^|E}2c8%3x{=quF+qAC;Y)0{(i
zq<bTlEUR)%uq-NC#sMy>wzk&#bf?3p)YSwTBlP;3mYJ!Z4Mlx8Kjh;Xdhkxf-_DOb
zd-UD_EQ_xvBtSqP!3Y9j0G=_Vls{r{aTfV3xO`3boMp*mGC64lee*h8w5BK)tq0G-
zUki@DdBo4-^am59Z&;CE6Rk?;opAVkU52ZwAzzQr%T9~5L$|f;DD%X2--Mg&qz1Ob
z*ZWsjSIA;>Oha+_+~5c+CkVjFZ5xl=6t1Rvf&gM@{|kY9_-KXk3PAAJ6kTI2Kxn2X
z9jnO8%%Z8CC;eub>a7Y_6?8pBHzh22bdBLUKoUJDJ`-iVKtZ{5bDr3}3;w(0C^yin
z`{iZ2^{<*(P^ztGBvLaide14dEIT6~UgODRl~#$_m^G~SmARR=g^ISMa~iz~3bom9
z_cU`tBdj0FLh{*%)yUViyt}t4C$}2|FK;oQChmD20tq0VoIj^Tfeb{i06;->Rn4f0
z|LyGoC?1R_JtsLBuMG||avGZ6-7QIRKU`*CV3n&pTfp=S6j>n8i`9eK)}zJ)z7K0j
z0>!PI+x!}9h7$bFU)1kzd|(8N&t0Fd^pdu`FBnxpiqW0dQc{kXakFZF;iv9;dOu7b
zYm_XAz&Lz8yqn(C!R!QoGab=BL<nbuRnxO-P6oP8grXki`*;(~u*t(De2+z~UUe0t
z4)YOWK9gRGqEl0M%{{?~t07<+2v#|pojS!D2*e7|hye?NJ=(WxnrM($pMr#tpea?p
zY&fD&jlIZ2S9YDH#yhuNjcEV%85b2`mEHFwa@fS?0HE2`4Xy+rK|Z|dT1%AxL#k8>
z%=pT~lZ9hfxnZ-YPriAolyB!{*KlblY;0)M8zI95iF9kz>V%W~zKcn0`qFg6YcWnq
zcdn8lV<9off&U4_7(3^5-qkO7LIVwROOM%9A&vc{Z7F3JPJ`F)R7&V=`*t$Zz8yE{
z+u{Ek`gVMlI^KY9prf+yuL~4%S&S&&L)545A8>*JeDv7a$KX4R<$Ar@Y?TGibZWjY
zm^MyT{AL;)kQ<hz4phqFB*WQ2X1pSB?eLA97ty%`BFUZsD#$U@C?r&D?w6Hfvk*_(
zj2n)&eN6m~UrXI0KQbalLDXV-#poWd8r#pfm_j6H+_{^`#+a^WfAt5FJQ_(WM5ED{
zH4MTl=s339yS8g1gr(JlJ7bGbKz*6@w$hkRq!PNuFfZF@lN$m^{u-#HXX>Z`1@1e>
zMv(qb#xRByr7)&N0V7k0_(X7rO89vaZJfA<4H`F=N3UIVExl5YXHtq1g&XBk<%DM?
zV@kJJuhzZ4me=4*d^osb0Wq!|z4qG@ESWjDl~yeH&wKOh^Mz-(Dy?c|SK5KX-7mwJ
z$8U33_WD#b%<u|OBs&}lBbXid0lI8ckvS)Qdit8g=Wh=d3%PX4wb5ZXEaZzVhIja(
z2{wK%%7ZK>k;n4s)W6F`e=iod@lW7&14#7a=e=aV6t@ha7fZVz(4d2VIR(Zbu~ZQ;
zuV)Ib#CH;Q+=4Su-lkT{+<(cUG2PN5AQDdusW!;t%NQ8NsZw*KV#`zvqDc7_#`=1A
ztgl%#hdQGs0gT}q0&pfl4TB)2X*G&@H)d)m3t7&m-1J#cqEZQ?P$!H#!<+W)?Mtcj
zl|eEOKlu}Gfv+EC_T|-+iC=Shqt)<~PGe=R71#AAx0csdFS!~4!!Br8tM?8ruSOY^
z&UIQhYsvOPuXC-30NHo{BWCaoG>2A4%NP(Y`jI6IBTEW_De!qpt`ttQmd|>Qsi8TT
z<9^|6dE5gUBC5gZm%X6#czJmeVFb8&!vl56t>pQy|Fz6@O#VwyC}Nh0los`j;PVS?
zSZ5rv8UQ#)V;PDui<@bJG5q@9$|812`}NhUt_Ps3D1o>6FIb1~p<Of>Ei3`SF<>&n
zB$#2sWMDjL49?63{O$Vc`dT@todzy)HadQLqH7=xf1y-K_*M0IGVMgX&1*5+`eGD_
zQhkWcni^zEtv-fGuh;Rs&M8mHTa>~l6V-09w!hx_M4rDw&4e*`^M20irK&sMl$_O1
z%y;`r?7b&5b|-5nV)9!I>iFIMG^kT(Z?tn9I86X>X(SnEl>0bY(4smy2F?T25&57a
zpc7l0hZp+QvK=!tv<7QFcsrZQO@QzTgwUvmSi*D+lItV9AxNH>T9~P4fd8_37{^ZS
zUCR~IMds<26&uQ!;`mjTJ8F7LKcxbT9k1G$i%g=oGXIHwbKy$XvQ&#-J(aS128QpR
z*>s}MpV@Ue{w+yWHoTg@9RR?+x$9;>aZI7w>QmWxDl*K*z=>ZOzNcINjh+6vo$~%1
z?%Q^6&F}tC-5ubo<I~zlzkd|<Kwu0=jF!@bBC;0_R6v3X<WHy*l-zzWJ>lG&PPy>d
zbZq*AyEtKlvx5hA&u$#eKW+~}jIgKg-zxlB47ujeZD*@dg=gip3#!$Lut78siI_f+
zWsGSeD|=CACc*^8Q2$zPxk`3)s;rx-3<vUeIVU#8uf3|48s)f^=0x#`LRi^}M)V7X
zTuY^Yhfywc0<XO)>eW<CSR!r!JgrfCy&Wm6yes`*2#yKDKKI$;N6#Kl+8PF`yLCnB
z&Hs3b|9e7o&KUjNXLCQXv!FAgmBl1-#INBu&@J@F>jFT8O=+??30%l31m!?)qiJ!H
z$UM<^jA7Owx%Q9R!YKQ|Blk^y4<knSl}BxPc=coi&-JV4P9HwBGU&8i$28C_xTQ)<
zIJq^UL>xQpJ$3Ih7RwJ9ooO?;WLmwY{rPpx1$!Py(u><BK7R>_>7Kv9J$v+iS4dk@
z_fl!a5}Bjdp4JjcY@2*uh+hMu_9$Bf-|1J}-p3m4q|FuBAOFQd9W(U4jhXY2<LPKy
z+88xinJXrmNA0smpLptBz&U2WM8NyFC92OqWTg<G$k+$o7~A7>=+J0bLztqYOD#fZ
z1b~pe>F<1!=gB~}Dg@c;iLLdu-dw#|<~%X6%Cjk5_}}-i3#r$$Zc*~dW^O<L%uLPm
zzpcj?u$EnY(oUSq1D{`Zqh7ohrMfq;G{dj}q9=4{Hx1seDxhf@p%#edaXq!rs4T`s
zDGDGB^;z9Mb?)mqaT<%E!Ib#1WWL*b_Dq}!rbLwZtus8bbQqMb;xyV_lT<aM+l{hl
zz0f_I@Ot^EN+uI^@X{Eax{6*zCq~C_0^`pch)^P}HbI1<gV0JxrzXRPibGib#*^cW
zXaD%owP7Y%72NAMJV<SW+~(d<-3!~7mhxQs=5lBUCJP>e>BT25dy?xUmR9~bUOJx3
zCX(4y0%MLh^6S0kBGqGhziawLGfmMb1wl1Wci+F-Z2vUHiPS@gU!gnvr%S19s(_6b
zEy%*v#P2KY<`Q$um#zVZRI0zdvo<dadACm=S~GOO^1BHU4lwf6FV!+1G_tYF&p!wW
zE`Q^tM0~3xj1z78K}1kzY)OufEy*f6fv%xfMo|L@I(y_W0a5`BVH)a%MC#1`j7JPi
zh=*h;Zgz!_v&c;Zz2bj3^IX<R21|upGO<9%@_?0f9I`0GR57^g!O4%0SBhyioE;8j
z?K81790nutYkpHfMe-|$ixa#9zD5<r<arUHlq<)tTkOm4&c<jmiHSMht6+<5Tr^oK
z^Ze#=fkD1-=kISWi{3m|UR<#w5qNE_X91b-0|2x$2Wf`C$vGAu%x*@a0NU=VoxJw7
zIDh&k#)3V00|@9lgIIcDVQ|5V(bqom=095*vG4x?M=xX>^Vb(Q75u&LV_??ePiGKD
z&fWh)hVTuvik?IlMrR2K0(&`7;3QHo!3sG*L|`IrbB2R?L(aYma-tS!A>?=U%BlTv
zX>+~Xu9hV;QCDS2Sr1eC`Yc0TCUN)WZ~;S6MlDkyR|e6I(!JK=ka_A^*b5$EWo1a{
z)-!4%#!gt?BKMk!N-9k6;APOM8`qOI09DFYOKs(Mi94%o!x2a7wfU1#LM)2|fO+QF
z>LG1sT><fa2ZQ&_{POOWs>dobDPPKzZpO{z3qQ7-)-Ws<^WyaBZ0bTh``)7hb9pd=
ztT*0!@+`vW_}xuECtO8)=-rbDrGkh6X((hF>0Veeu?;~XG&8CqiV%JAt=0zM$<Fr1
zdVjuAOL~@pR$-uoDap#iiKHwTO^YM(FkznXgr&pcb{PImE%To~vDJ;vWSF17$-VOp
z3K%ossxiOzqmGUVw@eO-rrEoH)XzD!ShP{B)$88xZm-V$)x~Mb`L1t9U{BSwtY~=|
z%~V|7GYo@rrZNV9Qs$t^^`q71qD(@;pBDS^u|6)!?4|-Toem+T07bfmDD^vwoLT$o
zx`VZPwI*SNq5rB6j#vtU;2>cO$GnRPss1OlUZNB+iw%t^lo8%&ck0!p&0gu{P28+U
zu#GEqdb31-(RAPV>!sFiE=qV>L?T3sIhJ$n$koH$bp|40GXVXjp=yqTFhY_ciJn75
z76V^r6cFxr7M7R1()j<Mga7oL{4-ex-AAoklItda5CXYwyh^U)zXuRZ*2vHPPb!(6
zJ^%m!0RR91WdNiA0{{R300062AOJ7`cK`qYa|@RM00000000&M7629i767;bk^)}?
z1Ox2^&IR8G7YDfrT?uXqDGMJ9-wbFCF%CWtbr4z+6%pkUkQ0^^m=$Ce2^P8+I~SrD
za2Vnl#Tuy_a~u{N+8wkW9v<u;fgjW$m?0@4w<294^dq(;EF}*m=_cqWk0*~PQYg+T
z>ng1*5G?d9rY>SHS1@`pU@`+Tt}`Ap-!!E)QZ>ysH8zkpF*l7kA2^FST{*BiC_0Zj
z2s>gs!aPDe**&N}ia#7b%|MAkGC|QoH$qE7UqWpF0RR910RRAsRYQ?q4?Oh%3j^o?
z0002kvY7+`0002kvY7<`+5aX48v@M$0ssgA0ssI20001Z+8vJrters+g}<4tt!LZ5
zzO`*Ps?C^HScP?C)wU7Uwr$&Q@-GMHWWVJXl>pKUEJojvrQdCzrqZ<}Lm!c*^GS2f
zEN?@a>?Ki)2)lk(Uq`w-MV8C5_&1e0j|>-Q_jmJ+#iw0~(G9fJF8JJ5s$5I+b|Tek
z5p7C_Y$9K_k*ReozC@n9A}DvMr)?>hVZ_Lq|6jDO#f9X$X~gJIt34%CzW=`|hs|@s
z@~ik|BF(j>*Nf3Jwp)@VuPnbvmiMRe#@~)|k8w9y`V7BoW3>iEj4fGL6R%^4aW&|x
zbBrfIoYtbg93<Pgl4Li<^3i)MOGZ&{d==&^(-FkUJ4&qYacRUjYFceFX&NO>cF|0e
zjb{m!I*SBdXz?@}YahD@Qsi2C`VO*;d_4$K42*$l&rw8Q0001Z+GAj3U|>4?UyUJ(
z`PBcL|J_)mfg-3N6#$~<2EPD!+GAj1+`~A5ft7)Qsf%e30|P@3gl2reV93bCfCL&C
z7~Tsoym<@b2c)^CFfcMGy#LRv@ZW+Vis>xFEd>UK{y1i!?ww4lfl3q@7y&&A5=H=c
z+Dyu|5duII1kh!cp$Rmi585E34Qe35-8G~D5}XWgfE*`V=5RUr`T+3#9kARZ&<CHD
z16DNe*$dCTvfZN}K@=Hfk{RY%WQBFMIN^+I9(dUqV}QH!A#it*KUZUu?Ymn&-SrMP
zre``Psk$mEsi3^F$|$XfLb|Q<PyU}AfmEO?hy;vmKn!Cu0SP8_1t2dH04%I*>>Qk2
z+&sK|`~reP!Xlz#;u4Zl(lW9Tc{zCnMI~hwRW)@DO)YI5T|IpRLnC7oQ!{f0ia;<B
zJ0lBNkYx-2C7(hq0001Z+N@ROn&Ze0Er*(67<@sVn)L0Pls(LB$I0+CexGa6Zu-5v
z`wV^>Im`d{(e}tmbN6yXRHaf$M@LeHl_6HENo<K;{iLQBUvXpky@YSNJa5x2%2yMv
zG_#*a)u>uu*K4llv9hcp-RUbwMQP}>W0=w{pDTtoh<{n&+T45nd1pL|*W;!46Hj|?
zo)9lABpyGtF7aJi-L;mAfl;=>^H2?U#8>6~DlFkFA%Ms;;_-zfg@)v8TvoSbbvt!a
zYpu&p+gi<PA=$Ln=c*z2sWmeIsz(b6*LBDZ9Rj{(C-u2zG;q;IQC|y5P6ol{lPhVw
z&efI&eMC9s@LgQ3H<8w2k}kN}l1;S5>C@!|M=p}uj_h;Y@JQ6|tIB|y2DUoX#7c)5
zSJt-JSx0=Xw|pKkBp@fE^`B~Ljl=^#O|6)uof71z>5ojPC=OfR4%uU7Kl$UO7vRv)
zBjc3fTxYZ~WJ<ZhCX)-0+bFr()LCZ`V&a(Vd>OYCZXI=L(v%7HC&sIB;<?(hEzjpE
zQ&cK3Z)6>xrwt5=crtn^*Rjx{<tf=MVK;@H&ogi{TT((`U>$LJI!Y-|iKjuD&$H&$
zN>bD|I`%S8ZR&4)K4D%hCa;zUO4oz_RH;8{3N;h0CdJH5#7-9SOk0{1ts54T@-c-E
zcFt--9t%k!<RRNI&#4UC@-(h(uie2puHe7aSY*-z{vNdZOLa^E3#CqJuoba-+;<$O
ztko%_3RQ_$5}wf^#XO-y9@pr%kWz&Ies<PT(<%(}v^d#l^OtS+5@<S&+)lN9K4S_;
z<XP}6@|-EEBF~$mCh~$Q>LM?iq9M{X#fZp%nPODrzfCbF^8bbcc0TmERW3gDxm_+k
z^Z7qU@l^XSVEivI{s+DZ7)5%(DDo08iqya;@-i@rYyzXmIbam|KVTF&4~!y>p@(Iw
z`37NUQ;IaUk(2|Hjr3b!*l)9sNxEW)dUQ-Bbaq$EGxnPnXeFPo?v%$l%U4=O-8mB{
zS8bW#wUU`*kFOiLRpPw?J10II1QUkfN9)zu@09#>9_zcsb>|E+x{3U$cMM)uQFhno
zTP8U7(C6E~XUa~r4)Z%Gi8|Y)fO@R7boPrp@9Cb-C|N`P>|mmAJI<NYh=11r6$S)<
zr3sHk?ae&UL=SWLy0?2w!N3RCbSPHDsm%M+#pK%xRmuIfGFQE5LwN&7Bg%DYt-F{$
zRPz8@0vm(Jz7nMynyXQ^v5;Vsxmc(21|7VUX+r2Z-9-&GB6N`#L>VQeqk?FOqH&T!
zavcp-Kjal2C8K5u0-p<mS8g{JN`7BBAZY4yLk{#qQ1d|4$W@0p>*}5alWIK_eVM?J
zQMHl;^iX>)G}}rz+oinG#O}r3Z{I<oj_TlHWwf;MqalK5yELhMJs(VQyOfWOra)Nh
z;$ePhgCcNFV*sD*s2BFCpYFFl(&m}ryX_;LhKBF8a|D)V0oubhC`-TrOrxC+1G_sd
zsL|?yzB_c+!J~mU{4ca(@1N>EfuG$4ER82*PrW@m#25=1+xd4Te@_ny(0BKz+(XJ|
z2E*A`GKZ%EzKL0UevJNwDU@^i6yL)7rQtgeuY|Q2yizv@ieG!I2jmC>Ab_GV?vY|T
z7l`e(%~{*W8eDMukBYCW{+Rw||ApJp{8L86*7uAesyGBOu@4VGTyY2zG#`p24M@>|
zG!4kmyeP6XAV&l8G@wB9rYO>Y5)CNRfC|m0qDlj5G@woc8Z@tpCJkuOfHn;<#Jmkp
zbBDovRCQfFsd}6lhG!l6V%~-IfWfVY$gM}nO~+#1hv|gDO{d6BXUI+GVm^fFg27Ff
z$W2$sP1oXFo*V@~Pp{YJg<&3F#dpCs<z^2>c1>n@+GFtE!EhodVk0ACU*rbHog54t
z49Nu>8Q7dQ>q|2+Xn|N;l{ok~m^dJ89X1IzFq^|^H^%|y0}M<IoIoCz({2U_AO!Q6
z8C*81Fm?n+Y;fp^*vOpXvQZ7h+r`nqz{ujzksJ~MQW6OSTU9s&IGA{}b};^L-N4ej
zkqM}iHN^!026-oF0001Z+GD^4B7jhZL51l60|V1R#`XWd{?}j<1+owPe+A_4hVl{W
zRs-d>G42G4+kw>`{QnBb-v#6wgZKap6dQMV+Dy!~fr4QWgyHwobN9<2CP6BogFhz0
zDj~-UKnkE3+CV!%2ifRZ8{peKV>ng<vf-XYwnR#@BSl5_ywQ*YPxR$@HGeWWhVnE2
zW-7m4<-Z;B9md}QV>6cxpSC4i9_?6m6zxRzr0rS`{JVEKUd^9u-DTuw3ZWyvUgf{-
z^S7;0)pqMJ5S(X!#lBr~6u8U`DRcYQqdMDI0o%t?=<n}#U1mBKj8`*@Kl5T%x^5ci
zY4VI(jmG<0tI=%GFZQmR(R$)IOE{)>mYC=~x%ujV{Ep^Ro6+~gc6d0Ow;Q~(yJ$n&
z4tC&@KY14Z<YkwsWg7H>PTp%3;eug{OYicG8m3`hU6EgWX@d0h(_}I+L-EzKQzKEo
zJiArWhr+&?Y-Op$aWruur8V|kj=4hz#n6%+@~JXR6m6u=S8wb2ewf&jNeog7XI@mJ
ztivURlxe-aK+6SZ6?vf|#B@|~(=?4ZJJFIITQ{(K113$x(x30EWW$Fj4Wal@uluBQ
zMexSE!9m9L<v$Bozu+fw6quoeLl-Fm2v3pVncOWj<a>{rqNZ%ZFEG4vGx=LbBA5jy
za>in5D>jI3^xVX&W6$rzHZL5jUcVy|)B$5C`gy?{f_JcsMZrOMZ3ICBIAQ)lE~=n+
zDUn$H8_o6u=u&;{w1-<Tw&b<cx^vC20i*lX9s3vGzJu!L6DIl@3=i|_$vuTRtn~|?
zJz}TNM(iK5>>1AK$T1>eI?ao)rggErj={pG<H-<~U`5SWOv50OZ$prSKcib0v@d8P
z%u@BrsHUP_^M|oUf;$?W)F-RDjRm=vQ7HGc=Y=yKV$g*dH(_*ZW|zh#Sd3*mv0LoP
zDYjD`u^RC^Ruu<)KqU4cUm>_IpGTroD-Z-5jXpT;aUIK|U$~FvKgWDi761Tv+HAqq
z0fAuv0KoHGMYm7ao9=FpCNVe*xDx^2kKms-Vj^(~NhxU=Svh$HMI~hwRY6T%LsLsz
zM^{hZz|hFp#MI2(!qUpx#@5c>!O_Xt#nsK-!_(_W5L_ET2mk>9yS%%*E4DBN1ubKe
z=;%hHr*B|rWNcy@wVAnvrIodft)0C?l#Wi$QMtIfxqEnedHeYK`AeiSxuUIk8j>xD
zp=eb{%lV#v+nz?%xovCpFM7c>&S7H(hldx3<c^mmC*MX7oIdkXD4zU7@($z+(vq{E
zriY@g(7OTj-UH!9V>lMJnxwu{>0;nahcdj`1ais24a87eGv`giX%S{uW3m9NOOTzN
z+L@a6ZqE_%3JrW@V_ezTmC}CelDgC>r+(-WwuvL^BS)Ub$?aaBIel|`dmZ&n)VDhl
Ocw(sl0RRF2{{RmnPtGy`

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-Italic.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Math-Italic.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..e3ea522a6a2da7b5bfcde8aa4cc4825593e3f857
GIT binary patch
literal 20096
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Bold.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Bold.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..ff108512453a58cdbfa2549249ee5f2562640f08
GIT binary patch
literal 33688
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Bold.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Bold.woff
new file mode 100644
index 0000000000000000000000000000000000000000..f0d6ea739b8405ce37eab96c71feb4b0091503f4
GIT binary patch
literal 18516
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Bold.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Bold.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..4cf8f146967e1243ebfd1eab7ff9c596be939f2a
GIT binary patch
literal 15732
zcmV-)J&VG3Pew8T0RR9106la74gdfE0E83(06iH10RR9100000000000000000000
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Italic.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Italic.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..3dd767131a57981bb2e065f4a34010ff3f3ad45f
GIT binary patch
literal 30960
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
W^w{Xw*!uc)w0<2USaW!<9se6ZpCuvy

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Italic.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Italic.woff
new file mode 100644
index 0000000000000000000000000000000000000000..9da0dfe39632bb169458e6ed72c84803a6c058c1
GIT binary patch
literal 17572
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
Z)y>TXO1na7HvshXLi7Lu00IC101r~0ithjb

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Italic.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Italic.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..ce19ae03d50fade531801d77634f35ed06f90681
GIT binary patch
literal 15024
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
G0000sx++@$

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Regular.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..f117cd619e99bf1d030446c40c725a1e79c57b71
GIT binary patch
literal 29812
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
X9Hqzl2L}4G*Z%BvfN;&>#diKLsZO8M

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Regular.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..6ed98780a7a46c0c459d2f455fff7ee01954d3f4
GIT binary patch
literal 16228
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%0AmJ9j#Q5RPd_e^lGxNtoUKL<R4&P{=H(Q<2H
zi#&|%>~XB5B#oqTlN5~XRAg~f#0gY{39KB<JnV5i4Y?f56nrt9gd_=^xg03}CKo3s
Y!6e!R&Da4C4}uRrdnusrZvevo2MbI9v;Y7A

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Regular.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_SansSerif-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..27611491a1fcae82b54021dcddf3de913573b065
GIT binary patch
literal 13708
zcmV;7HFL^$Pew8T0RR9105yyN4gdfE0CeC005viI0RR9100000000000000000000
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Script-Regular.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Script-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..e6f34542e296e006bd7f5b313ec59b1e42f12d8c
GIT binary patch
literal 24620
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Script-Regular.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Script-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..4a48e65f0de679fce0ca17c32f8b52bd3de33fca
GIT binary patch
literal 13428
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Script-Regular.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Script-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..b0aed195ca3be06a66c66919dfd66564882bdd81
GIT binary patch
literal 12064
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
KZqM2T0002O@mFpD

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size1-Regular.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size1-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..37faa0f9fe41ddb1c9a15725f8ad4856599193a1
GIT binary patch
literal 12916
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size1-Regular.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size1-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..0832f7a468852ced3080993f4a826e8ef608befe
GIT binary patch
literal 6696
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size1-Regular.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size1-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..483e7b66e0f49b65dcc2110d44886220bb2c3e51
GIT binary patch
literal 5592
zcmV;}6({O<Pew8T0RR9102SB(4gdfE05YHe02P4%0RR9100000000000000000000
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size2-Regular.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size2-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..cf326236c0e940c533606031140a116d7ab707ec
GIT binary patch
literal 12172
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
ND0_ALP~7f1{s)AlT$TU;

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size2-Regular.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size2-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..14f6485abb4e1483c0adf14e93c7d838efdcebfc
GIT binary patch
literal 6436
zcmY*cWmFtNvt4v?2=1N$!QB%ecp$h0T|!`S2<}eM;1HZ3!QC~uZ*X^C+}-wVzVE#s
zujkyUzIUpt>dfgm)8(cjD+@pXzy}#40Oz0OjQTJCH~;@bMT3(E0KiFvtDoQi$$Zgo
zF|{>ufNR@uJ_G<DEJn<c1e>}#(*giQ`EU&b4lFnT<_=(6006fN06>WX05E^f5H6j8
zO`PCs$tdBE(f${BU>gr}cpPc?GDHA?II5z3D%irz<SPJx-3j**_y<A_=Y0#f2+!*b
z=QMCIqI)9*TG%?f!~O2y+yjm>pCLq48+%i@AGQUY>;8k~guR!oi90+mwmh8E{s)6t
z=5{8wX7HNf^&xfu0H{#K;q3+odnb5&Qn)Xm7+#Z9i-X>42S+nFClZ5e|6=-Wj?0U<
zFYf4~fR=ReXP!8#%tjh)Bs;6I!jBxje0H@=C?K>LhPbQlawPvu-AGBDqU7b}z2v#H
zD_fQSw0M<r>MFQ7vDc9*m~ih0!Fw~t1tAF^R+R;L_lRL)?OQZ_{Wz-U_{Q&W*E_3d
z$LsRU2sI^P$4P<7D<z!wNi|kNj+a@gpRcySkXhzqa=}|f&a*@vBJmRI{Dhc}yPJL~
zlXJJtwnX_qygQev9Y2TVSUQdt^xt2M7<*%tnPk=EXr53*(}aOIqu+?%5q-g9(s)N=
z6eNV+8)uNAn`7}gt)LZ6dN5zPRrhUwge%?08no<lg-PakLVVgguPNxqcHUI98ZV!+
z$m`N<Kgj(e*J04O##x0h5El~QbIbQeybOJBiXrSZ9r0L`?jE+r+m=->#P>Q3bE<Ex
zcYG3a3y9bKBxG{KRiH&-#xQ*LXGCB2^|^H)c6}?<7~@qB`~`gE!+jUxgCtossUj#a
zrddhEn&)$^#g5Alx|qFJ$n!uv9App03KnCX*ELTu%@Vr#DuSD6aTm>yggkjd14as@
zV7cv4QI(q7^1`f!ySd!e=CDM`c8{XDbvim@4h3^j?sn@O-R|;qLIeC2q|AC}t&NrS
zknr5iK5=BpIp;ocO{%db%eO;k@r0B-x&YdY*j4(PvZmMU4#@r}E-sf}jcI!|vMsN^
zt4T|)nV)|-+d*$b!9U?wqG6}mTsV1loD!r)*9`fot66lRX06a9a^~>d`!kdolB!$&
z>K)@ZzA~s+Uub$uB{l+Ewze|MnhPGSv#s0Ihk(^K>Vgcu(Jh3lCSNxF3!+FZGss1R
z*Iuf6bBluJ9{q3n7MknP-|7ugsyoxNV>{jP(=!dU{Q)4sC11top)@mu^)Hx<EsQL^
zwKlQr5Rw3is`BP)@%6PO^2^p~f1wWlQ(af<lr6rz=}K|uMy|YRgFZ*eaMK>eF~yCO
z(7KoSoNwNPr-f`2B)XD!afzqg_}t0IM?aW$3M${z>tZ^0tH1B*ECz=wpXRaU<z&Aj
ze$MycOP?Wnx3!qAj49U7X6ty?114YR=8(YJ8tfg|&m)K-MMaO*@`?Q22>5&FvwwEA
zzfm`qEqOy)6TYfI4O;xBY3O>{H*8G})?QV{&X<{Tp<EoHU*-whqNB?%1yDKKnKziZ
z$c<-+!ZL7%38aLLpKC^T>)iT}>yN>aP?deUTVUV@p~}JZTR~Ru7x}toE&MOwNXLlb
zPWh;LEYVf)-Q~NO-WP<zZ_96M_NR;e`VJk}{6?+K1E>0YqyJ=EN*u;#&83+YvryQw
z4zUOeoD4bJj?A+VVSk;f{wTvlPhFDp3GitRSW@~oe$a>^YdnLKorM_qd;}b}XYQzW
zY-Pzp3y$pTg9t6NZOXDX`B8@t7r&SBbzLLlb4Qy1P}AIQe~AG~6RdXnI#7BJ?Qb?P
zJbaZN^B}57QQSw*H7#P*|DXtVRtEGbCP%EAn@Bh13nDa2n%1E3Vb+AOB$hF<GARsk
z{YAGhvAfj~&9oPOf88aBCUKv0+NnRKgSA{IujS}GoPUu%V&AQ5Hu>|$A8pDmWls#@
zim@3&s^pX-E1gNFhL*^=g|6>QfJdj-QQeT_*E14;7f`jZO!Yke3Difj+Z|m+(P6j~
z<c!R!emtLn=&_Qi#6#vB=&7)soUV(VOyk+8G~5x5;TY?1W8E{6|6VV%l+)X(`f`zW
zj5@kT1veS_(>=3gc*$pDzKI3C-^-|o{2Q8j&YvkfsC;k*v-hRg^uK-9Ko<PLACqlS
z7MUE8vecqp?5?}@3CwF398J_?)1~EAt30p!gRthv{c`vtfBRn^_3tw>hnt?01)BLA
z%yRL?njC8FFBa<77M7Wdi^}-*o;3zbl)0J+L!P^L8jOl1B%Ezu1GM?eYdMn2tZ=HQ
z<)qIl_3o1>jE!Ct7KC|xZu3vbsLnOx=_+uSnZ#*uHpsui==JGfxirhL@5uP~r<Xd{
zV;7$cS3_c=FJ9DSpE}2XaNJ%QLtjD&g-AW@dY_EPh$=_fKt>SCUW0{tv#rTLy)-+D
zWs{ho*A0qlI%hh$a;zgBStLA&!mLr_GKv+%!^=DASpx_Z7@v*MUUhW?DX*3Cmqd2?
z>gr#+DUm#XOxG(flkxFOevFo^E&n?oZiT6@U(P#miO$d6J=0isjqG8RT8fY}Gw#}J
zd_24Wnz`b~CnG7e|IjMz@sNvBD^hsD?r?RXUqJM9R)}l_eOk`ov+l~>&lLBLbUGZd
zPgSFf|I;JX5;0YG@8MJO2NExJ(f9Y~&5ZF+p+6B@44fyCn!A#-zfNz>aeq&md5qwJ
zg4L)am5L_?_Q<V!lcd938bp_h5>*fUyTS6~VWDW=(f+lp$wfO0hgmCqv$HIShfuzT
zmWX$kq5(X9IF`;kSgUtN&Uj9BYAiD)-+Oz0I8X#1CJNz!dEz!*Og1w<1Q=2BS_O_#
zf3<(ZAD$u+0``?FwPG%exZ)e-n))teV*jqJY-~lGxJ$xxTUj`8pPStEzHWSkesc<=
zi^3Jx2JIU_VryTISmNoJ;sJczHVo{XE!ZLilvKP|45h2dzbYYeiOk3wmDZl+PYsFb
zX6mK*qmv-otnciZK~`3_&-{$&&3%^Y)TrsccjLY%v?57p2s__G(-TT_bVTONij8u?
zGi^uwp+sA+CTvt~1)7aM*G8$SwO@3#i>$s%N|-IRc;C*kskZ}h@a!)OROys6ETzxj
zok+#g6?Ql5=tCiKv2QQ4dqo+-$(5J6%VMD602cX6=$h7ny!A&hd!bviMcTrxe$+Xf
zMVLXZv#O0c4t8QpI^yW1JwkD?PkcBQ9W27))$8c1<x2rGv=Lm1b2U9Bk|-yiR`-~G
zyHIU0WU8WC+-elvr};N8;>352)ykuT6st?sF0%j|TT&MbXk~n^i?)jW2u6J}QFGX}
zeX_0IgM8b?45;EExMAp5uj@U|bm>L&oGnle4ktn*v(0`L^hMP*@)aq$=NevsDlL5{
z@O$WcfYkkR7;~o=2yLCpK^@NwJ;Mm>I!NZ=DfxvoqIA{n#4sh(1wv>JU|oWo2z)?|
z_$*TKqb!(mrKnP~Nj*-~aA^6BlL1t<4%32ky(50k)qGj(O{ILDGET<)!xR<L?sU5G
zec!`MDjoDh(z|JAriu+zZ++T+l{*yf;S<v?qW3fGWch4Uhrhn<{H%F2)3su?rl#1H
zrt1PT=jo%b_a(*c>C0INla)}#0Y#%WHAgB+*&nwh3hhe2YkrdUchX_=i!TM`tvBst
z+g+;{4x{w<HXPaIm^@g5qieF}^iv~jCfyoALC*<H_4VZFWKA7A?n<M-f}4B`J0V|p
zG$$LB3EZy8X*7wRZ_-$p^VJ<g2$x^Tfw*zRmp%-rK<*~G;S0PT?EFXpDyI|Y6Sot$
zQ$gbk9LMs<PJ8{JBTZm)hphbln|QNlVQ8@mW1z$VdZHh4@ZDYx&0nM2qmS~gM<%sO
z<jZbfF!5(s(uE?kT?^7v$822hKeskDLNmM*&fU&}!qtYbh@chf#p~K9HZs55smxy~
zeN_cHbDG#_{z|hvu$0wmlVtU{YE*wieARv*-*2|`?s;EDklM|6M`+;QK;1T#X;!m(
zz;YRPq|ujru&Bxt2n*qKT&H|1J=(!8^4jw-<kev%ltBJ)>&TJvnb*eK<^Dq_b-H?$
z>#^4ifAs@|+mSh}G9!-r^W`At9j8y68wcW-2q!L>l#_IV$zaoP3z^Q1Q<<mKOZWjs
z9!*inNb5(DKeEYMW=azcyq2e<9PaPI3n6~L=zG8mRw`~IuH+NeuRl~xvv-DUxzOP>
z6eWY?>pg?*)-F^M?V$W8On2<#dJD10^DTTQmBr@+KkZN?dA9W;ingGeo7oUaN2@4G
z{!ev6Bdif6xm(4kyw)moyMzt8%<}}YKEJN_3I!!GP@(gmxHm+_p^24j#xgjuK^9eS
zSQSsxE^$^I_OU}p^`}aizx(%2XR$jog!zqk+fYCIq?A6rTej3M2^rWOUR$dKR#02z
ztj;fQ9W<T300u7oli;1ezaEMe&<;R>TX+)z2Ohu;ey7F!`A>ik;{UxA0seq&KrLVz
zu!mrRFoQ6I2tZUp^g<j)LPe56DnVLDmO_3(B}5%UeF5?S1A)^(DDVLd3ylU%4J`oe
z9z7g`6QdUs50ep72=l+a8$7q4^yRfNuGlpI6KU^XviX`+^#8L@1W&oZHWXDjNBd7@
z@QM4P)-X2?f+S)8ISg`C!Zfj$)G*n`VjvlgG(II9HT#NEwmDNADezQ5Hur7^c5(3y
zjDwf_E4^uxeu^(In6=%?Dw-*JRM67>{UqRwawOkF&A_YwYHa|=ns~klwB~imY3@1H
zVJAG;(ymt0f=wmldWI16iJs#>xlKV|K_KkA+Az9^znd{<9ppFS60bCWVFThRQBmNv
znS#DFfHOKfhdVo``|3gi0&;*-yzf9<U%!5lK*YwvIz=H}Z3{U^nl#WLr6eU>g@Lv2
z?7Q&#$U7+uJ3Gf|2C(LGJ3G+;5A6Rs&VTVhpzmMEP-Ri^nh>|S1Mk_eME&cCgAil;
zP#F2iuE@TSm5^DH5pz+Qw)8;C7>gKx=NCHbrs_ZcCQcxZBwl)i!C<^xfEg>mj4VU3
znffNMWJX)$7bNFJDiWdWhEw%?3+DD>4C~nSgTem5g#A`v<j*_p1J1W|D>`lrrxB}F
zZ3W)S`)RrU0^>4_09gUr@71aP$OJ8ju|MhjLx_~B<3M7fKqey(4pci-$ABu@Am%7`
z#2k0|@zD{WDFWccfp_jd@2*U1Cv9sGhdngSgw$IyEA8qyJy9HDGca_<=bLRkVfWD9
z_K4+6E<6IenYbBLaJqH;p!r)}K~7FRB#BPDRKX_P=sCZD#Q2-(eS5Hdi<tcs`>+l{
z1z&Bp+)R<4@tk!9w7RB@er2CkPR4St)-+|3J)8BrK$zd>^~GhcXAiJg#N5{JTLKj?
zyDU6THb(0A^&IDhpI7RWBLdVKx-M0*-FkI)p5C%;u+jMs@@}4oFot~JwlUCdG;<Mk
z(XcKb`Lv|>*NSeTZWdZXcUR2M3n-DpM4xjR#HK?0W5#sdY|iH}A**JLsqhK4YbQaA
zywa(DN0LVEldw05&Y^OCeM&y2UBg!b+iwrf!d-EZ`3($@27+Sv^^YYyzX}4%armnz
zP5P7S*<EK}WgoI<%VD7phFd%rrs*-9cdBTxzOgJs7Pfj|Ab1<mlic{>CS^h8#eE+|
zi0^7p=(o@unJreTdPUXHHsZE`VugUqELm`h(5{GaKYNJ2oM9TDnbdRmxmAXH#f{C#
zrN=N~k|KoS^8nNm=>vUMl+myYo3n+7qU*<bWfSNn)-ohH5sy??&LAsVeOP1DGIsZ}
z%%eV@u>MDMJ47S>fg)QaMJIBobSGf)`qz7{1C=zXztW`&+`I(U2_a%r$!}y1zxU;P
zD{Ta2)~3Y{NU5WF3<^M;-u5(z{jgrLc5{ekz2oF3PQCK)03N@nQ)zTc6>E^&$dpmv
zQVp<Jy9^geX>BG2gPrBMRrX>By6nl-BhJ>wMn$ajLQJxVnJ8>uYL1N%l?&sRiW|nj
zN*iHfm{~GeyfRwb9vaiqMqDz6+cFw_(k%s~ukJZDq9UFeS^A}4)>J!3L*F$H_Z7Zt
z9O(nUgAFieS;0`EU?}~tPC<k`d0bK%BShIaa=1a2jZ+2@3In6)VQ@eL)bhEns%-ez
zXpd|Z<N5{S9VKewd@->eZEv_0bg<N7qKkt^PpmxpeWwu1w=ZWhFNDDNils%O;LYt4
zc7ir-9;c&omk*7KZGs?ZZ)gyx8}G@YUF0z{K6}*Er?KfILsC{S?)`Oi*T~!9lLzk+
zWGMB6_v5Y7LintSFYvV*IGs>6CMkK;Hx4SkGDY^<dN7+x>B@FM*opl7l>Aq>|9U0g
zMs-npDll!&1jqQ+HHL-sZaodBFG48E!>=X9TR-P*^P2W<35hMU{kny8Ge@}#$yBHn
zwZun|>DjzauJZ>c{$T-Pd>bB;L(SD+L2f+CXyS#fMLDv;92bGidHK$oc<gF?pVZ|m
z@^TJB+q(0<PP0j_JDHpfANNZQoniu!m3{061ANh}sKdyc5AeW-D+wU=^3YsP0#cq5
z?RbA`tFaJseRObZqF~y5`~2gvDD$)$l~`F+vVbq2G@k9xH%XPyAQroy7u6GlXx4^e
z5L{bT<WWnk^#rQxZlmj|=UKT$F<$RRpZuxuvv$|$&Pg^2uX$86bRmDsx+xQoTOkU+
zp7^+1=!u9s-`RIqi1yL5#tPF}ZL9z9^WdZ6MsO&pDV?b(tYZ6gpAO;S<R#Hd{vHAn
zdQ{v!)9e)FjvR}b=->)*{FJ?^uiL@r4cttsA`a3y*p)c9j=A=ylmsBF^7V_WD?t&f
z+Z%+fA9aH;?O<x>E;BS!YeyXpqG^7^Ve=1JYSKiZv~O-U5W-k-Bm;Lp#N{KfkjEAv
zkfo8xB%^LyNMxZBTC5VvkgMh*n31dI+-quDO8h{bwv-6k)tbmhU?(3hK=_{0xM6w1
zl@e1@QOcwh!`pLK_Q4p^T1Cy(bdA@1jn=%c3wh+q<Z9X{Y~IIe-Zy}Rav8!Ie)B#?
z^S)ljNJ8E^bpLv>jSI3>ddG2BuzZB@%0?Lk|F4{_b~(^9e_>!SHQq+;&!ohn#2P}O
zAe+w+;Nh~6w7?<sWI{qhV&aKR?J~>5FqH%KqJ~C?{eZA=P|QfQ8B$_nMX}*f4bi=#
zeH|xJ6&E094cvmwVzaeVr24n$Y8U`g<QXa8c_iQm3ao!;4EIGPNPU2m2_EwL{V|Rk
zZZ#@xKb@cOD{Ty-Uvzdvsu(V@TR}Eg<=FmVXA<jL#1fc7CKLEDi%ATYI?Erl4|M?)
z8V{%76Jp^qOI-X-=||s-=P_@ToMXW5rV^&~c5L$5AX52wtehSLYh|6Jl-XWKcC-GC
zX50;}y>{Ix(;95Ba#b%cVrMXb^kMV`V<lP4Ru_ktcTJrthUcVL(-qhE`7Kq!4o`bL
zO<jHs`D{Ugo@aVno)A_?<0cn|WdOw#i^Y3x1ID8%t2pLU7U2hHnHSl^Vh#&|3ER=o
z!v}wrPq%-=w!}}Ic?~&}LJZ#?;%Jmfk>>%UX0dldCST3{V8O)DDtg!Ms0iybom>j{
z?WlCLox&7XjTgH<X^i$|XiJR$Q(+M4Q)zFb=(X&yvL#^1FRd>E4J~IL6O~tXdUom%
zYxFVXRiNWVC;2hhB9m@i!!q@9fNHB_V2~hKf&Ol#fwEXWe4#zrStVU5+f3<%F)i8L
zO<{?fv%Y~GGw@BZvKhrp%F)4K*Ue=Ap&wTaKGF9glW|E5%x--~ccwMc9D}t9N9Op@
zDuC=(6AId+JaX;2^y(i?Z7S_E-+juBsmx2k;&Mzm(Yeozfs3H+Tw@Y%+B@XJcrX_}
zr7133h2hun_$tQFC}oec>foO_%i#kOmF{)atxs<b(b()$14bB!R8Q`&LTj)5{L)6j
zh(2yC+v8Q6espUH)5>ES?zc3BFGA-R-+$9MQonvY3$|Qt9#k&-=5!DcqT)tDZzCC*
zX1o%C&!lotteGY^>>~*ce6Yjabm$q}PH$@F7qm3&vi+%YB7HPnIv;x~@OHpwukC!W
z3n;$ih`dAXRzu>1PA={dHO)V|&0Y`Wo#6OJ+=`<g)s@haREkeII79o*s}zL7`ZH@q
zS-7)dPw++d5@|X|cLTnEZMp;zg5W2aF4)y-YlzK40w{PBg`kc|<rgZJ!vGqfB@y?-
zs(%z|t$9y4jUOUCz8qg&bf&7%>%s!Z-Q|#vIu$ETF3{B=IhCw-_v_u2P!;3LKd+kw
zBmmz70eZE6N$Mg`16q5YCQ4U_VBg-<Ol!ptoq8`FH;z3Pu+uAjIOpmVx<V$yn68+_
oulN;G(Hizq$oC^$$msUqEg%F17X$jKBt793!oN2J7z}{>KOUR<{{R30

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size2-Regular.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size2-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..5ff7060676d81f040dafd77ac0ac9e68eef20767
GIT binary patch
literal 5392
zcmV+r74PbIPew8T0RR9102L4b4gdfE057Nj02H_Y0RR9100000000000000000000
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size3-Regular.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size3-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..ff7e2b90106baf6920ef84d26890d21617a4730a
GIT binary patch
literal 8120
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
Vqdh&{L<fu(V2^1R#}`xg{{euBHq-zB

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size3-Regular.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size3-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..d3626cef39b774137c67500ed0bdf3fc93391fdc
GIT binary patch
literal 4568
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size3-Regular.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size3-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..e45ca49db8c66ca43ce41bd15a219db59b0c9350
GIT binary patch
literal 3728
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size4-Regular.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size4-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..3034091cdb7b1c98799073e1770eb57c24747d70
GIT binary patch
literal 11016
zcmb_i4RjpUb$;*7?9Bd3`=iybZOv-*V{2DyX(g>>BW&y6vMgJ+WGvYjb}g+fVObKA
zj1Abu!9W}Zh@FOTfTV5O5IE#-WH%=!NfVl;4J4E#4IvO9gyb9-N+=B&W3YGC@6F80
zk}<(2C%c-t_r1Au?|t9B@4h#qC6o}7K@Jmv#5VRUkF=fMArX>=P7)i~8y~0VzxX}0
zV}#J34BRxO@C$?#wczC3HNJcAud-hJKSHuYggEZs9iJRWznhRC7qadixp`O9i}(Bu
z_&*Zj=^jeN2i-@e-Xz5PH2R`L=#V4q?+Ed|gm&@J-l+qh-|60gwutugBVz;cTgvx+
z0Qqat9^D&1Fiw8r1nX_UNg0jrO>B7jkEh^IHzCr0kB?1GIiA@093ji<;qQ~<6N&NP
z|9tIALIOX6{B4Ah2<Vf{kI~A+`YlPMgjEKsJ=LDFYL6QE{9q)){K+>WbcRs!=J`T)
zR(g&U5b0zFqm@CDC96ecrDeq9rqQ}+b#-=@ED6lx_IYz4>Go2oEY(F%=J}Y%BW0Y5
zPfo^9oexS96~gpQ;a`OB(*IrJqmtx1o%(TVI{8BK`P6jk$ERT{09)m-wV2zYu;r_%
zu8!nn=MXoQWK~ktqS~6esL$(h3#_a(;Iq15jGjz&l}VCpkvyJ9cieHujz>Mxf7)Oz
z<vVvY<qZqeF8F^zbLdgFj&;zZH0Kw707L4}7mEK5Ygw@7;MQm~lI_ou{1TBRwWzeV
zCR!UM;=T5KAEoEN!EA1)mr`-F^b@DYNkuB3IU+i}4$e6a5lUU~z7hIl=%a+|^91~=
zr`k_lwC0UB&KEkq-Ero{j(L{-kaTfOeKk=&PLh+w9pLbivYN7bkJBeJaWkb}r`yKP
ze}hu#l+)`J&m56q)d9|NNTv)LE$0jA3e&crBUc;n1Zt~27Fv^f`VHxxjx!w{juJ>7
zgO~R~@*3E#)JH9=h$g-sfuBpu!eUKr1B=$IVs%jjxUSCU##!g8bNqfpTaxkhxcOPm
zMtJb`xDA?<?e{}}z<aQ*3PWRp)wjKoA@*RI$Qrl%tOB}acln;c^6Y?Quj<KNB2ntt
z*17SjrMZRM5DELb{6J2={d|dJyLxEdwN833J?>tzsOxY!Gzb>SB3dj0V@#ywhr1Rn
z@zCS+9%t3E(T#a|4$0%Ri3QtgR<E_C4yF#-4)5tMD_)XSwCAwVKCnHIpOqonFn=y$
zu^Cu|%{W}e(gX2$F)scW$zH^yA`F)Q3C6G`8MA<=hyjf!4G|F3v2>RK$<oqeg3aO1
z3YC5$fGI+$C1dAWhKMmL32S#|SSV1D^7`vKvogJsAXS%b$M9`i{bjYwtE$WVTWyre
zH*A!d^aHnS&t4q+R93z-HJSR_y2V@Xt6&z{;szS5;=Zkm*QLImnsDZ4?b#A7wM!nC
zEG`ZW+-ajn=pD9Ohx3bqIk~~2{NY<|^bUH&Ht_e$MHDzX`!=hRM};nu3k2+XHWXJ!
z#GD9^vRYJ9Vi9>V@<~U3MxS*uL6ap>vawV!Re__N+GL~~dv)YF!OpS+J7TdNg;{V3
z`A-;Ymv;ztq#n8#8}mz_%z(5yQWq_WR&#V=$;c?ZsBqBKB3ZIXDrf6p7znfLi*we7
z*WGY<Q|YqO%ExI=qev}OrmFkfZ7<%}5Lq|Wc}=9ad}-+M)af-M^1>k&yB}|RNT_8t
zXRz8PioPvbkS|<fp*Ei_>ZwQf;yfwcztU#+qPHA~oIB2{i0g_F`CxPo5sUrLBI1*E
zM9zJQwa;Got03}0syL^8`9~pgb=8$3qAdPcM9A3rCBg+%j75l}L*R9dpzKGobF%b0
zSzA-agc{6;vbwr#pO?Nslhopp9W?n%LGU}>>yIdIcmDb=I+VC@wf)nA!!FBbMg$vU
z+vq8Fj;&Dw`48MrlMg2!0seXwy&2Xlur^mk10K}Sk<`mZ4gD;iyS(DvXv)o1JQekB
zq(iTEj?s_MR*kAmT^&^A%FcY2*W(ZAqF4(9wRCAm>T~CZ9HXe6@JvnKD0GUq>nov4
zukSp08D=nQHlHq-@3ql7uf8e@t&;tx|CY&XUa*;2sNnCWcga@j6>paWF(dU#(w&mN
z5Kx>H)5lx=)~|(J`hv}h5mR;cEd3JON%DX|Ca+4CBB{uj9ksRYI*xq=Gbr2d$)aDR
z-U3%tKy{@eYjOBpSQk(<s9?Y4>ohEglostuedVa`{XuwtkM6y$m8REmp;X{yjL%IB
zD97u~$rd^#kB?gA)aR~KM6NlAad--U^fi0(PC=qp8~qOZ`Mb2f+KZw_oywX2N)08a
z&tw40!sLyt9VqcNJX2qZ(rdUc+jkKsBn?*ZveH72BLjx$2sdP5&AOpQj~p*l1aZFu
zmQroWs`pY)r7gYlES+L&->3;%Fs7$w&$9L_Ly9$DDN-20L5#pa3M0bmtnWJNqF!H=
zS3(0QNk$QurTRQcDLnqjB9DdD*BNn6-GVqL584EKu;vYHIHrE_ZaFWKJjxedOO+W>
zUY)#^JqVmG&GXfCd+Pn<t+L$veizT+)j0hv+lIZGIUfSZO}e_5ZA*SdzYcF76pzf;
zqi6W)UMeRK%JTbNy@(1)-b%Nd*7Vup!Tvz?(CxiqxcA)q(n(m7p>F$!EXiq0&~Xqt
z3`@EWbC$@xsfUw4mrkC0AC~B0#N-*_2vOm$U!Ns8d@+%+cyf~E#}^GVp8+Snb?iwA
zV0I<kNMB0b<u#0FwDZ15i%U4dQ&AFYA4yPQ(J|4nqU3EPBTw;H-?V-A*z!^t<9jSQ
zLeGguNe!$nn!nZ<w&nCTh3~FZ2{V;1YGug4+R_?xkwIwboovlA-LxaNdRvBMy}dOm
zW6MX`klyP)h3V?-AL4zV)MwetuiL(OTTi`Bv~(XC9Jjr$U8Q%w^gm82f6B&a5oNaK
zXKr);&mRPi&4okk8DiJxhD-M{z4tQbHD3>L7+*hoMp7MLSRcgpNEB+y-B3-f?y5tw
zL@ykXq}~Uw*<n9L7h}BxAb)z-*;sl1HKIg)Mil5d8YTJ;b0HplBW(g;4wz%EkC8L9
z7Kc6a&YPC<2ABu<{_-)@q;rU>GB>NS@i*PnA;o5hgUNw4!2Kq6|BkyhUTxsF(0k!_
zDs>zlAF{o9vVr^l_L;QrULVit!^si$j2X=ZI|p8#I7I0^!-8-csg!oWJujN`<Cc!)
z!U!ADMA%aAF9_Q=jd(5$v;A8%m%&f+*o8y%9O7A=Mg@BsR8f6XgN!$~h}^FzPqMn2
zT707yvrN8v!zUeXAJ6>_iA){?qjn>)$A&)9fkz|{&-_ORDO-H6<XBnqClOZ1E_|Au
z79Jt_u$p7x>v4vtVh=9}a%mYBVXx2U@o`7kX(}=J;arsW>u0w}va73W;J|OF-R87j
zcmS6K*1LgyiXC~(Vs$<Ah19Q7pHJ>#Z?m^unXq#Ad4>G|>nq<G`mC^0SL^d)3=zI<
z^ZTjSCmT;H!rf=zV^$P#mXVdpedjFoxwD+?y|=yWx9k<cg`D!aZ69n-mL<z=Zl6bB
zuR!~5Xnz3Ov!UH#)Y#HmJZ;rc0K_r$`TPQtrD?Zs6K&m`%JpStx!8MWVaj=4fx>r$
zr{1xA!{*NN3dumS$cs}z@DR$rk3H>ab|bMtGuDX8pjcF9z~N!9<jeZ#Gcss|MqHUm
zJap@Kh&5~nao`S2S^gYY7eI;yJeVi!`=XO>&CE>wtDG;hE~f~R{AmW(h1u6;gY;=~
zKwnX9+>%^YtLGpf!U$01_)eDR0m_|MvaUb8>yY3TJ*ZvG?X~Uu&I+$Xlrw)NsTp^6
ztg;~>LwHb<d)8)WNtko9XQBT$(9ib)P7(UcYHO;E1k3UBrw?PQ@k(m9h>p8%I=tR0
zc`{|Ouzt(IRV&?$HY{1h)^^;Pp&||HgRQwPUGHlc^wYFU_Zv^Pl|iA7@8-<!oa?&w
zvRqxG%bgc6byAkO_4>+O*rM%Fo8t}S>5Acdu|E^WxaY9&8(82wMyt67a2SkDlD>rM
zK=EBiw3<H4vB|Bxek=AR92)zneSti;OJvMTyL5Ci{lx}4j_dLQ-W&|WwDKVEnOhmv
z+JN6qzkJ{TArOE_hz#N?f5%}l-f>jbR{N`Q3>u#+m*ek;2()p1<~q!EK@H5{N|bCh
zZ0ct>*^j<_$Nl^!e6r2&dUAw(l{`USCn<Udv*26J?q%N-a)b@SPGO&LRCq}Enec%a
z76--8h(8pc6HklpTO5`GOV~1O`JUxZQl8W;eOY=%_R5X&sQgL!pX6W4v(`%MfOW!p
zm-RvGqp-&P!LcuPL+ACG4et_%fQaKo(uoJ`X?pJX`6cow<{#cqnSK-Uf&N~IAa0x|
zLN0j|M?g%Gde%-|1|=4ulpNy+myzSMZ_9D6;oNZ?UxKAEb{loE+lVDig*{Zgc#uNy
zPYHWSA$y3fzIY%M4^f#t1iLrW!@|wvF@w(M$z!5I#$fwy9J@sYa}x*s;p}TT&d$+e
z;6r-!dBk)qr032rA=~8mx#P31$)h?#9E$WOO7L2N9>X4ruxW-jedKO~(%+FPykD93
zIZVh~Zt_RGy)!=DyIKdy8lt>4D=4$|WSjJy_<Mzr&s-;@C5WQi<86K{GOhmzEgq>w
zL?k?FrH~Veg!3}8oa`XCl0)Pl*nhB>1feKjb*Nugzg_nF@93+&Z_UomLS7+DA-8>=
z9D|%yeF$=|{f@la{Z<l!f0%t~_SdstoBhn}y|W|9_GBdKdilMV?JwQ>(!}#kN@&S%
z-BHsYsQkDO<*y7(Asv+k$lwAlriU#8OMGz06@O%_?a#{EQKA1DACIAgzd^myk1OM%
zq((xDMz-{|_A5%~DUz|NQ<HkO^=UN)+S2~mE@gU4pT<h!k6SUd1_sof1%ZG@`Zdz5
zwwwS$&9SBmjfONOwyQ#8A!Sg}p6J%Z(rqV}QhRgjK<no1eE~I4Fx{tU-Q9fwZB2iH
zqSbS*zQ13YF@)lS+ER3xEk&#3*DJZ?6Wx6ZoS2R)n!UR(h8~4qvvV%WxoE5)*5BV>
zpwVD|zp9b$zC?e2g(ifQRz(v_;&8~)+})>H)Fw?*o8W%GMq?G47*gSvGB{(|*`)9*
zhH-w@NUU{06UqbVZ&s$2Y3QD*w3J|2oBCqi1@X=OeQH0huIcH+r2;-E({hDo32Ab3
z@C1s84vmDS+N1(vwJEN#ox3zT0Q;Jyyh4*h3U|`cJa9@RJ0Su$*Tnj{NUTM7(i%D;
zJ4kbDQ+Z$xY+Gm{_;y1J4Z?+Hj5wyWPOEVq2puU>z|qu{0yvrWQWHwlc#C1e@e#Lc
z#kdPM&kb$<O-`OOYSRgaU1;qK6sUpz@<4^=3e7Oqstv|lDzuCc2B0XKvw0mK7Z|mv
zUvu%+X0%*rRcM(|<JKWjfWQFU)-sx7%5+T8G5}hI<_>lC_RWZcE&ausE1@2!&^)2e
zO?{m`MrT0){XV_l8=4`R&0G3rGBcYs8gJ4vgFH!*x=k}qesbZY(QHIQDCzE-;h77t
znx+w6Zniw2;<hwjU|i?7AouyzevG6Y{<p^v#08=Hhyc#uA08?oMmDWFfkzKL8+;)$
zLs)BXpO&dMDXp3VNohyiVogd6=D+23Q~ckiscAYk<CTKizF<KSV9LVSe8CFMADW?@
zW&>wVb3!u$r@5gSk<+};jD^$u(2T@sL1;$ibWv!=%IV_JjE&P}AtkKQ9Ti%+&fHj`
z1$AbkLR%6dnk)Dh_*e)Zmq51yA2|)cM^202Bd02S<g^$*a#{i(IW2{coR+~yPM5+*
zPD3H3L7xH@Awc7fDb0vajK?z$s)cyIg+p3JP^-X9T8<=cN48ydDyi{$m6x$UD}hw1
z&?@J`L$kHz<uexQZ|y@F;z6jIkIaWJM?y-i?r$~ZXzPb(Gz!IK-Q)cv`=9lK+_Flo
zpNUXEMpT3G!{N)`5<_Cg>npU{P&lWdLW_Q!D3Wjh;&liK$u3dCN;{vtfU;wHx?OEY
zvFJltM_I&-j#BE+g8h0_nQTlD{OKZ^tvQ&O4y%gNFb!QRE?!o`h7L`HPDm+QjL-Kq
zoBB>NMNkS(vQi<xzlqmCE2=5%!J^uR*@tK@oJyGYG-woi)*KsDHK92^h%&^Q;|1Vj
z{g}I#-V=vQD9mbGyuLt%g*J=}M7IKcmoWlIc(D{w0D!#(35C*ri6_t)$IT_W6F6g~
z;Z^RUEo8(>j)4N}mQoV~wE@svrFUyqOmIbMQ`@;Q9<2r)GClwkQPSHNRvNH2a*xeU
zD7y%`RDxCqF3qjJMxZ{NTrt&*41BE6t~NbrPKPGOm*-1|m=5Ktkg9|^YHcXY4gKMn
zFwMdQTs_x~XkP4IGuN$4r*B;#(-_j~gXt>^ls1L56~Srb5KoqAOv?`$Mp(jH81|cW
zxOf7l(dEgdVpfDPNemxbP&81(=Q1@t-j7ek_RA&4Uy^+sH(p;F)cS(Jym$xtO&?o1
z7->-3`1k`HdG4Y)j=3SXW5|AEa$>c|JoJUN8qCGDAJN}|noF~MS}kPOg|s@5PL5hD
za8=r{tfg^UAL8k#bpqC|&<R3Xz-$0RIkPczg6cipVDz3%T&5M5Hgg%y^l%x@^l}-_
zY~eDEV6NdZoY~4{IMc^vIMdH%n!#-2GMw4YWjJ#!m*LC~F4G3)IxfSR>$wbPVqAtZ
zaW2yYW+#{7%mA0+%pjNHOd_PMoP&86Z)mH~y<6v2gB#NG3EgYZ7!GMy%}L+D8@lu!
zo#WCYI>$x#hO~w`(NW&eMaOiGi;n9Y7rim0T|Fl{!5g~hq|R~CDV^h@`$8ve_~);=
zd1?x3)`TV$cOOVEITeIpGyddeY*gsIsLaOpdwhmSP1snJ8`QdhK8_{CruUefKw4&s
z>CsKtR37b{5e8dkN_p!$*29E~YmN?JX9W@Lo%?5qv-}jDy;BqK!4lCjV;OAG*Q0r-
zY>GD_W_uH;!BafLY%+O<Hxt*Iyg*bkVDcjIk-JRZLR{nllb7c8yJ$7}irJq*^63jE
z@1CdMqwB|0rpTYG{*k`JpE$u&lFjZjc}6nWS500ZZR~NA7fC6bHF*ok7fMWCn%D1Q
zyM)zde+H?sJZ$prdHOwEfAiS*%@f1Bho+RJ1Iv_1W#x*BNM%)}(vp}Q-aV@H3=Ahm
z2NEHrV{{;Fzf`!Yh6~p#okQ_arEwrWnAm%BXS_GjcYV+BEs2`ViQW4~;uCFSqf>2T
z6T1^iBwVSiROU%km?D?yx+XC(IXpJ1RE8_VHJ2JTy$oH}O=W4r{{8#Id*f3>H^dKw
zVR_ZED{|euaSuilHwI(e9J22po*Gg%CnggUHzfuYJ|JZSe%dpCC}F$3cW8LhxY#qc
zYifUdBB7vTWOyJkI*Hr%jSeOzl&PVF($leC**KmUHH6n20wE<m<f?F0*idHPtHf`L
z50AumjwBS_lep5>xJijmt+WqKO^vTyzI<|EVt9ONGCVmv!d+gzv2FcFUm?w8jEs|;
z$pjfDyU7rlBK(EL0A6k=c+FIa?+Q|(b5-CK(n1nsQkNY?s|S+9=otk~kPv!0bUuui
z?H{MP3jYL3Yp%zgov<Fq-3n=hwm4o1CCFZQ)(O5Bd>^?U_J+wV;A_ZcoOhFbWCT|y
zNE=2m3g0=MKz{;SA|$MPyi(VFIUN<3Xt}(lOQo)X_6Z#WZc~8`ZYK<%K5oPdvE*o7
zDVjVc4R~3}zhR&f$5@BR4WI|mHpaXPG5hPGzR=<xGdA%Bk(qBf1l#)&9qyN+<2tG1
zbQ8{l=t)ONAsgWJUOhsW$D8Ml9T6Xbw#fx|_F$yDU}3)=a~@+uVg!`u-zek_Yx}_S
z{F#6Z_lV2(AUD^8ZbZIw+4(-LU!Z|U=F%uv0cU>9_iUkE1zz2RV_470oj7x=7cq(J
z78|jwaLFmM61w<&n}R<p@rrOcydQwa!)Q-|598pv(kL&7=WQ6lUvdv#+UTFzBbXMK
z`$W-+Ujkuea1bZ)l2v3iSwpTPF}y!~p1gpcg^A>0{FX<;uXC*U<$|3$s1v{S$e@|j
zO+D00eKd>uX*PbomrL_#J}sb&=wiBr7E*-<Xc1LuF)g8`w2Us5_l*u$RyJ1Zw7N24
zn;IS&Obm?e-N}0*)s^)oU18EjlQtQ2MVdC7?G}@^nzYTJhJ{FVW0l#Cn6%oYH72b!
zY1E{3CN=$NH2r8a{b)4pH=6bvP5Vv8eRZwIeRZw+eXW(1`ba@_KU%A5jdoRSx~=<#
be%&un-LKZRHeD~MJ}%HU#E9apa_0X72#Z!Y

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size4-Regular.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size4-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..93c57a6f97f529f7cbf7ff49678c423a54aa34c0
GIT binary patch
literal 6184
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
A?f?J)

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size4-Regular.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Size4-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..53b65afcff022dc8512e61cb25f7075715de8f7c
GIT binary patch
literal 5028
zcmV;V6I<+ePew8T0RR91028DD4gdfE04qQM0259C0RR9100000000000000000000
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Typewriter-Regular.ttf b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Typewriter-Regular.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..2fd85294ab68105c5ae44fd65332fce36c49f8cd
GIT binary patch
literal 35924
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%0AnSGBJ}5nw;K}{-J%^|HlSG_
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
E1ndY_VgLXD

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Typewriter-Regular.woff b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Typewriter-Regular.woff
new file mode 100644
index 0000000000000000000000000000000000000000..e90fa2bc7ff9e2f81e57a567be2a8620ef9c8d27
GIT binary patch
literal 20260
zcmY(JQ<Nr6u&%$hZQHhOOxw0?+qP{?+jjS~ZClf}_x$JVn;mOCl@+nxjHs)ul)JpR
zH~<Ln&*Vt~@c*?jD*xaA@BROpyfOnb03c%VFRJ_x12I|6Tw_~9hkvnd004;YANQ8L
zSck@LE`$Jp^y@zj!#}uz`QUZU9L#M20MWky09Z5t0F%Ckx_N7E==`s*JnlaY<o|+b
zZsTe8FOMhyAkYQ?IIu(i<)5-JH8cSLgem`N*#84L(`CZqU+`aD$$vh<KS;qSfwC-Y
zT|EBj4F372001y5lm`K<jlJ<dozTA;K(PN2olyR4Yv}Q>uHffC9pQffCBsVC8QPix
z05bn-01p8G5G1j3NNEoC&MpAJuYcbR#Q2ZKm5FX72Pe~ieWm}^0r>qRDk<i3!eb-H
z3(N;cV&jE3crr;1#z;E}tkq@=eH2lfh^GO~!V8Ro>S*Dz6v8rUSNF!$%*@QMZj6ED
zKNH!uH!E$?^{V_H+0OMH?RxM(`{8AQEM^xzlW2&CM3(dxC=a+*s!qNr!Om4_`QnOi
z-dywFXV|#4qxx8c96;O^hf0xn7}C@p3NU~GDzJtm@=pgQdc_`G8!9$o&Xhkn4T3&2
zq}jf559&t=dXVm!uP6`hfAMHhx^evw(47fYj(J!zN^)*Z%gmZFEuUyl&kd`5Ht(67
z7d_C;@9-C(H+5cAUjJkrJmYEy<OdQ+&{q|n8#<DwBdhpA0X<P+BHkM=O|j}uuv~20
zzOfH<B-q<5UB<rerHag^o|J)7WSx|<#X8(wr*9wrs!MpeTGgL~{)Mt`&5@J7O%gH>
zD|~DIO74a0%lMvR=+qm*BveqW{bDRa!P9j^t=H?%X&z)p_=OK1vepHqjR@!-qZ;Mx
zxU|3|I?MtK+s7*Ytgjp;!3x<=EN0Os@8qE6bv^Aczwx<MCipxfLEv||xun0&s|{_L
zyUD91^K4){vr7;vU%h$hTn-EIox5>)2YFkB7m5GaIjUWRA8or*03xm8kH=37396>H
z7YotsnNRgUKYl@;&|<APsYstT5TacRTKe>1KN^cuv@-D3E0463(8cb(+86EZXX&s4
zQ>yVq%s`1E8j7bgVnUL1>kMBV^Mq8+r7v0PBRB~o#74Zo3mAZQ0+wHH)!?=z+nI>d
zGoriXLSc%+I*D2Q9md4(D;|0KGqz8*dQe`Etk#DpRL#(f;)m}K&=o=`9GkQ7@N=11
zq9o?<h978d(#e}(rs@htECikBi7*l_O*bIKv?B=$*b0XXw7v(X=X>1is0mf8B>Wn*
z9~g!LhdW2}!vsgV(21F^WyR)uE1(A(tx7Bw!W=aY?p4w(k!G7s?>k1gQ6tHH)x&fd
zwCgEM;W`_d#c&cDD6BMvA6-_P%NLMxnPz}u+<r6&zLa91BpZZhY6>m=<{KVeR2F3@
zVapA97XiDvAv#vEokxhN)3OS<UD*r2FEu(V6<r@j(4qK#d;fGZUkURWnF|sILP_j(
zA90m6r<QyN0TKw$#M9Gh??M2^Rhx3gU@gumC+((rS*auOqPC~Na9Tk~-+UfI$R-<B
zcp9+}6G(3FvcPtoNAJX`fs1E2VJdiF!Bp-R0T2~H+7VOV+=!$cT*g#Oq|+R;l&`3r
zo=$8_w<)6VDi|8f;gcNy+VWGVTNx9CE4fRO4xx%lJdwN|z<e!s?u?DvbBY3P*~kD&
zKKjzCDbXbBdnN>n$qo5Tckuy0*6))YjeO^$eBofTh|;`HXIdJfb)VoQ5BF=BU%V_d
zz;N#sH2D6_5gI&M#3nzV2rBeT*Yo(}j#>5!p`oQ)kHOylF+a(}{rZ$U;*9=$!82{5
zXMge59S2F>{VIQZy725ar|JTui?h=QLwG%H2#b&-vxZ!t?VK^kW)N~k$up9&B_u3+
zz%i(yNk!_Os@!0WiwU!K78}3g>iIA{aW`{+;Nxpnr7_=8cdODb`<D$em5$m0JF%ro
zLa|=~0Zjwh0IXWLVLpO53|YmQSQaPMicBdKTDWAVVi<i3pSPReA=s$&Ks|Y-5mIIt
zP@v%)_tJ5BZ$rO617lleq{X5a^pyN<+`6u5|C=YQZWdMYHB(dAVPG_^w?e2kZ-l79
zdCg{NuY6XIB`4R--m^0+i_0F4J{lQdUfE0*!AUQ9d6-7$+nSK$)D!JlW1ZPk`sU<V
zxvvJZ@_ej{gZ{W>q^_S;_;I79IkRB!EDDT{1pLS=I{?Cra5TSEj|d!>L>g9(IEu8u
zj^EOVMvPMIjVh)WyWOdt2>G?-G9!Id&f~{th$-gp6&KJ?B-c`&*)iW~U5t6Az^KdP
zS#=Bmeq>{o>(PIg!AcE#V<l9u7lXXcCbbYumo}x<4fI@=#uXt~6!7wYJgg)HzNw?A
z$nE(EtbQu(mO^orRi?PC6m3}ZBAur(I<fVc)$YB$nq<Kr5}SZ?{x)fKytba<<6>R%
zzE0M^ulP(No`Ch`B9uTBo@hqYu}XD3inH1dr>R>?t)>!C(Rb4)5t<s@UX_?UU69&c
zzKW;3UD+xH`0GI_>-T;r=W({#bOcuFeoUONO!s)l@m%zn&#AsD{w}1L;}eM{f;}4s
zpv0J-)J#s{C@Fx?2x@W?lP-v5{b9WvhY9*4A^}=2TRAh0gCSu}Gwrq4p|kGOS9f20
z%X|GsUHgo1z<j#E>S!)&jUC;tl?bf2_qK2{_U1Tu_1wjm$x5T-hWuPCz^HI=FQ*yw
ziDFB&SmW;fv^zTB5&#64Wl#>LV1e=iNvp8|MmAJh{e4WWh%h92U#hfcGEH_5E%b^)
zk?R&EMrWEGBB(};)!7^Aop2au=V>SD$pjFV<tasrj%<FBHk>};y0<!j{^IV0`35bY
zN7cfdd83Mf62k=ADGa~@3_2(e_`o40i5J_IZq%f4&9+z_%9h(O7m@W)9=$^lftqcn
z*bf~~^1{9yPa1qssqdID-=9o(Y^Bm@xPbLKk)?l7|87B}0e+mp$PdIhOICnS4JQjh
z@}qVFPG#a{1x~346XE)!c-=CQ%Jdp8q!(7=_Xy(Ep-40B*5<{{fr35&zh)ZG)pD=$
zZ_?wjOcrNc0&8FvCWiT25ZDjtTIitv{zfsaFB~us+FVV$dj&t?WO$rP%&S9v<&S03
z**PEgdGdkSFX`73xiEAzY}_9>FDv#7cbI_6_VnZ8?Yv`j$;GyM>9@T6vNa^B{M$)H
zd5P*$15_R;zyldXI39@EH6@HSkp^C$Y?&|PkueO<5Hv2{@CPKzv+YJ9cK?O5_XaVx
z$AM{|B<4i#)BM%<Qw_=(Z#fK2>`gz74;b^USO3L2dfG|!JC*yeyLwL5A)GhvCMs#7
z;eum^{^)h$^J%Q^mWyAbyZ6a4c#*}qnp>NzW8KllM;&O&7{PC3b2mBU>|pft{A5hW
z@8}b)p5OmwP=YIQ$DTOgCjG50%xlQaDFz4x6ce#G7@!gx#MBW5>G%h7PK7C3svMcU
zN+?#wWMM&h%tq#0c{ewUasPgpoy6_wu677-wh+g4y4hL0Z*1G(2SYgh<z4WM)+g7H
z#}D~%xHKfwcV9n(@<>+KEam1yPc{lt0R!l>>T`naaromS08>^v7>nK>QiPcTC1$)h
zq5*OqQrinn@j?Ns#!6xYbD&LM)y_TxeCcw@4Eim`9I_eQ+NgW*4j64YU$i!&c5*&g
zR)zm4U7ClP1E#chjCrIfHxnF-?-++g@8y+e=eDA&1SY1V>F2IB?tC`nQt0C1TnH-L
z^L0z9weNDHc-rVqv~Nk*CnNB@v(ur>JYzcZkR0pBtZg@|sy0X0go;C10Xruh_Qd@t
ziJs=UQG^j$%3up*FiQ|>dmaEqkC<+4o`NLR)&Uyalr0&72`XJo&Du{QXf9t@=bEnF
z#DZ1{8c086>Ki1C+D#Fo0Lt_dS2;e+mJ%ul+q}RD9fcj?@x0b3z)73*c0Qt+<LNfu
z#XOcy*Z;h!@BXvMO%MLv%<nwAjP*6e#I9{>nag#Y*Oo<X0~-~<1jr4#$(vE-QNv!l
zetcYRfwjgzwG-!YzIt?w4o|Yc*_m?VcDBg{LKl-i1ywF49iZ<5079(N>JD^}fIefJ
zA5B>W&BM#N#bh0T1NQJRAahp1$WZ}E9-xMQZ<qxmZY=vdh9s`og>5sFj*gC<YC6^J
zu$j3LjIs#nO0c<Z3U0&$i%AM)@I);I+??hmD@|T8TH`uqE~n!^|Bwz5`h{<x!^fBj
zPt8&tuygGGo;)Re-MW`Z(?>|;I*ZYPuxqlJ3Bj2HO<emCE_z~f%4M|V0Q({+*nK;v
zCp;EmhX11OjTCQOa6<>ufM&D-L9Uu%FJYM`fd#Hl_(Ufn`ZtR;t5Pd4L8t`QQjYG6
z<3wn8sR|`IAe_7U(eks$1m^a=AJ#JWEM&vuPNScL6rX4Yzgp7+#W=J<23pe``Ev7C
zl8&z0#m7|=s68@DKFk}w%a7ab(rHR6F00o`&qNKN!2I<dx*&T2BV-T;C3s6j04r|Y
zqIhl_cqg<faFU@4{YeE!q4{)lo@z|t+GxW_3;Rx{FN+7>&q$VIsWSNSYf9e3p7Z#2
zTY`X=J{3C9S}CW5dXPbuw?4RaK6F10D1fCOQVloFKtWLgWE83k>rN9$@%A)FFIfZ3
zW$6-lL*vHorB%BrREL@f^FmNU2qgKj6ftuc4b3-1AdFZJSrI*Ma>peUCX=!V+vp(D
zbxj8cjTt?6UyN^`E=~t;Y9EY)%fgLTCqoPKs7&eLM1&`sB6x-@iHi1eVRy)i`qujO
z*-Ahe&^3dc<7B4ycb2hg+NgM)>li#5M;Qhl;?!E;U_jok<=NlW)X}cN-k9U}QyF$(
ze$2t5z|f5}_q-C;C>So8W`TEvl6L5B#BK~9je;ym{$v=G_NoGm7Vkt4%8IUPRooQ`
zaDh*|pBR(xcd|3@i;MDyvF@bTk_l#XmCAM~>HsZQ?l&>~pv5eM&kaTk+u}0Y6fJw7
z;8#g06pJBg8O!dS`__U1Hc~TT-@CiXN}hzT3wkbQ?F@hfUxB<u8nL*6xma{2aDg+K
zfB=>Q+&n)2$~8Ui*cr{S<UU$J)z1}|hvtb>T>KZ?TlGqfdixF76~Co~qB1q##Ao%a
zUe5dsUpH4g6wqM2?M1+qdEd1rPOxKVuxh0FH2q*^&1yc*wt&~>1elo}o_0rt`aVTC
zM}K!GyFWJ&AfUm!aeP~W$NA|3i!LSbScMxK<9zyFwoTW*b@M~t&1znHIc<jaeTRL}
z!qI5|;SAO5at^Uy6OU5SRam&xP&8$AR~VOQaDJNPT(t$WXsT$T9$DlN_Ho0>Tg13k
zt$KPo6>PSRP?`a{bZ90hg6`W?(_HW(xrj4j+Mf_8BwpLs_tK-#R;bM5K9OdOVQ;C_
zcr1D`9VgT%gUX?4r8dWX^Vp29t@`rU?Cfl=oJ9Z~;pDo{NAn;0e9AoSo>w4&*Mxat
zCAIdNdJX895Y4k~a7vyh8RcG%>hsv7LyAYDL1R7WSrU}cDD6?WT@#y|D4FT0DU~9(
zOQf_cFSb$a9|C+F<<<9Z|504@;!`sFJ{m7&G_){HE@4K`v%OHps%8DRtVbdT=+X8h
zUY}zF1sZm2n%Hit^G;<sD6iLhdnWaA?8`BFcx*Xh^9Yr7B19%n)&Tus7|Qt0n^|Ds
zk$GTCT(hakMad1p`(w1{osSceG<}@0j?9X(%*e>rU@(|H3=nO|-k;bdR;sOO)@dl(
z&&d2q!<o*kTgW#wt2Ehrnh-CjvB4Js*}hF-$YSnypjVVvrxGFr+pFGcY60?CMzEl9
z5J<pPEYgI`8X|Da9{6C$o_9*pGjRiqw}{NDtNhEmB}dUovQ`PcoYvq4$)(t9hLYV+
zrA|Xep}?m|2eOZ(oEl~4H<}lHwaDNkw#4nYln*oD43Mv(X{qqq{rf%sE;1N0b`1oN
z0|1WWp-^2{g7?dzJzNWY`$wEU<SH9F_e-C>AyJmb<9Cple<)&|iTGItbS_-TUiqD|
z1^m;TcGw9lA}%SDsGMzVE;b0c0|d~BpgqB(QA$&zbp%s<?0p^82?5$B&PDGj1Fah8
z><A6lS%K`uS9=>XdDMLaY@9SJroP=)@8$Tn&5)$NwDDY$;oiUBHGQEmF0U6m>d44J
zc&f7#Ly2}!pB4dqN_zT4*1Fbexir)-&eE!v{xY*B((2H-EBVxCf@wJk9@0ff!_4Au
zJU@9ON8GD|{aaCR&@jAVP)Kw-Sy32~AVWu%>);Tpz)$Q0-bsmdvr?*GZN+!OG`^%t
zBS)Or84kGqNx8;_!H;|>O@vg$WF`HdV?BwRg+C3K)5kM$#wzHu=sFT6Fhc_?D>f1j
zA8a%PbIsd)`H*<eqw*n}%e*YObR4SFi?DQpA9y#+f$I7`Zatn2>UMe-H<<X&-lzC|
zzO|NnQGuc6+PcvJZ!=vt+suqDvs0}{KMj$LN{*NIcZX-7*o6c2JX`%)lpuuN!K|VQ
z;(GBR3G4AjMN_FlD&F~<R!bL!>Nn)BP~x`8rd7$T90^o4im8ORa$PJ^!4Qc$YM8am
zfe{<+LT5<p1hIho4ZcXYPY3qn1sM#Gsc9GC2zeA>NcKhYvF}ourC+9tj2c8!$77ii
z;}d{hD8l?gcMEa>X>d=tXr-VmV8HF;(h}<^p==hVmBu8^=8t@VmaqXW^2WFSH-*6~
zJW$as)NCel{OQt+ICS9eWBVeo=BSzC<RLf=z$`%hcR*!l)NTO)5l#8I77+3$4_vWb
z;%uri8E5<Xo{7tQ-=m}Q;nt!iAu2Pr6K1d!N@7n~7PAhqq_!&TyB#PY&4;Krog~)r
zX)nBR7B0*chyN~_PLV55vgLGY#*@U+YhWshrJS8z)U>xZEPdkd=lT^4x!K5t5FL<!
zP=-))ZBZ}iB}}Q4soSLKXiu<FZA+Q)-~AWh6`tdTgYR@Ub*xWPh5k`w;H4DUeFQQQ
z%mU}3CVqvHdrn2y6TFf?NMV%IC{7OJ86|^E=gO)=HCj{Nwe)iU@GMe4TKaAh=ZF<N
zo+;9|v2Rqe4=L$G+(!GiGlbr}C3fyAH{%6@9KoRs@}A#i<>lZ#p$`;k>=-NEgog{|
z(*zzLJUiz5+y=xhtCCICs~Kc2h9{R4=&b^0ku|Bx(Y3jd;`ZX0WJvu4QeWwFxK?o4
z5-!ukx(^zw(_S^irP9GpzeK&RU5&}cuo2)n>K3*o(<|e2jQAv@nom2lkUfC;A4MJ)
z$68y{<*@DXYHnwg+S>f^MX8Lbbu+Ojs+1gz9^NT@K6@_V!`^!0nGE_MW}G1vuz^0C
zJ~z4wcwKDzE5JkS0_F~)>;nMGux$yWA#-*_L7XI?VNjS7<MV1-QB^5NwLrpW>WQ^H
z@00>Fh-2}x=2`6zeVO^m59*^2=ea*$1eox8*7QXYmMPo3_Z)FETbr9Wo$2&3ZZkRX
zN_w?f_f7eRcSW!pjy;vA&X~#GeCI}oY7dEb9<PKNvEG78*MgJh0nU92_Vl3w$;6l}
z$<hxfukLw{Ec6_jyhQ>J^7m1*q9R-C0t61p;hD03lwU=q0_fH@Ge+vk|5i?XBo)dW
zZBvMmcx8M>cBFNaTKzrDm~JszIGJEZ-GxN#&zHH%mmuI_HM$xb_hnMsMp_CHo#qt%
z1wquzS7I4Qe#eh~_$83jz#(gw&*w}X!^Hj*kC|Q{6}X%(h(l=+{dD4Vf)OYD0b%ct
z)oj1Z%(;4%uascs)G<{p^v=f+{^-s1YmFJW7j&{S#?Bw-3fb@ax{Eog*;FZGP*afk
z{uJTb#j}kA-GZnP$XposX=7hLelTD7r7wBK)t(ou5(`=P^t1KG-7Hw#x7J3|#yVWq
z7?*kIdGgTokg_YI`Me6*ujK<%lrlaOv%A#M=`wS!F^B^;d1HbJKFg3GOaTssqVIRZ
z6O8qw-rNM(NKuXT3<v0VGa0TxGfZqb{@L$Zm+Ow=L+oFqhZ$8+Z8};&56L$jkNcX%
zO&Z_^ZrjLiD>4VCc+;YgMUWr)3s!Z-4?{IvfRQ0eW+XOyNbyk$0YNaG$vH^j_dMgn
zKMhDp&b58l6T0aPx}4r+yxCOcW@Lv_w+E9=e@W5PZ$rGO4tZpIB}SFQZC@|u%kum=
zYZvGjLpQdNsp5OC?Sh?=;e7gV=T(Wn--8P+LjELrEWC`7AV;`F#j(_<<sxff83s)T
zzVxcklv+hU8CdjDgnI~YSnys__%q`R1<Viy5Trn|&;PBL6C^@6rG$oLg2Fe3SGHhN
zY~o#|Sp}PwL-fMppL#JuEo$L6!J!vu=<p2c;{V#H8{jq!I7I3Izb?7gY7X*|0-R(x
z2Tvw`<>5Ng6<QTk#5<t0%-=gSaK%z3UXTd}&hfyKlV$og6X;e;<vn0k**F}YAyvy!
z&m7k6_+L-1&A;9SAk&;fcz#gn-lm|N1eD@$t!=P45<SW^Z*5UBTD09QbpmEk%BHFW
z9-jET9iP^4<;|i;6x?$(eb24^xU1~9E0leleX5LJKF^;~quFI3)kp)x#VZ|S64qE;
zXhTRyCzRf=js0qv^e<Db%Nj@2f$@f;@7NuGhkJwygDQIrCM`Ev+%(Pa4d%B$+hi!Y
z5YZ_S#kl#7;2GTXrX1ea*tS?%nwqy&Ib&?I%777=UAlD+I`>jOJ~+uO2n>=%VQX-C
zJ{*N&c^tqy^Hz33QG0u5WAH-(vNMC|ZD-^YT%9}Y=<HSV;>d{wHAD8~Nv8Gu{Q(*M
zr1L3=Kr!QV@POp|#Bm@mJjIL3o=hq-0O+nK9Mn2IHOK6-35)dYr-`+VQ98q9pD=dN
zMFHM8sw)-KEWUT~MZUUqUm><1%TyHe)hvJS#(^v%@#DFTn-&Hrj1LG(O&zUU?MNzS
zQ~N|UAOqS~3kBFu_z#R3k>EXnxYNi>LGJ#u6ofNc6(@N{GEZ5cDi$nasTf*2WKWq;
z^K{6+y~5ec>)v|j=c#wCay|hb<(ia-^}JH8P!tdg`8C6}xXFVxnB&f1DN`;ejU)((
z&_~W;=Ux8}!74mbz7>IeN3DD?PJBkQEF8XT@?cS7$<D_m%c@$T6zeUmHjf(Gy)zKp
zgAjexwZ`Faza)vklRn!`cF=UcD~ek`dH!i@ObPeCp9iDsJA_phtgj)0d=!D74~hH%
zc|t*a;oG`-{^3yvTW~-=tpTX+UIZ?;vJU^9b!QmYOM8%Qh<FoAQ|5Zsh6Po(l?DOF
z$Tp*FkC*5vv0UgvblmXEip=5briQ`ZCy(qwIa{vb^jnc5;_5=L*{x2bnF~I@dF5Cg
zeqTe%+V;<ZG5Kdd%^`=Jlu+8Q{1BYUlkaz-zoTdEf4P5%{b-yNWuD;TAC({@ai(g_
zT4g=W4xky%Nt)h|2<PU}E2xw4YkKzWtXtaKGuFQ&uBM1xes`>|=rG$y`7kA)x4I@X
z@lpr>q5oXgXLwCJX83&4PhCJ?Nmky?@v<va*=wHD@wl$M=N(kkz3Wm6p0p5odQ21q
zg>niWTUN-iZsuJ5U4wfgmTf}8-=(wa$sQHNpr}*6ece{N+{WXmI6Q_OeW;^C%tn5E
z^Or~po|R63?-E_U#bC+Oz<L1Yfz9t(g&ehVFE?1z&&c-+G#{^@D1R~yG=Os%uPjH|
zIWN=T7EDx({k5vYRb<5-FzQtjZBC-AG6&h?nX#5R7Lx-!Q3gbrDcZ(t6r$t?LnJ6)
zIIg)<@c_0uwlRS~BOS)*b=neY;%!5wpH<yKJ<Ei4v3xgr_ClO?Hk=g~00p8{2MIC8
zeJ#oZ(V$Wgu?wyyoqmPvO$kbmx=F!u*=u_^5{dOHSFGYycI$G+iK)y%OQ#?UdqH;V
z5*cKlk)e_1b^p84I8a?ZFw?mMqILFjd2mgfS-){Zx~677o=L=<b*nvN^KS;aaqrF%
z6f|g-WjvWX$BIN~EWDEIL-bDwoF!BGyvUh(_zbIqF$yICAgbVzG^HuRDdddKgisF7
zPeforf(VnyZF|YVrITLZI@|3h8)`!pg>^d8y!dX*Q2W;*>b7T#Ct>+jY&ntefmEZ(
z6p_m=UtJe5hQr&|%DS>O&Gw9s%!15i>aQG<s)*ULiOKPJZXh&@n(<LRl7nLjDN}Ct
z$MNrN8RNz5-87!o;|RedI)enJqQ5C7sEjPHu<{4TqaakU!(5~2Cq_Z*%O~13o;8eh
z(K9sTW&Z|T=;&o7EdXN<U8(%<i#L_D%oN0Zy1eevCvdIBfSXtmG&$o}{Qlp6DHd3+
z?ym0z#3)#=CAx;3<HDde&J3w<<(BBdGIHD_=?}N%!BfDyBqPSj@O0O<`Mrhn_$$I=
zqtNZOBsB)5fMb9~w%#M-dBp{gHtz0Rzz#6ChIES~FeWTxnIt?8<$hhN$!?-+RT#!(
zuB^BucI;qca#oh3q_?)5WZ5QNmWy7TQ2#RE!?MV5;LA>Q%I8hbv?aHF-*+(u74W%$
zGXOQpN@o4Q9<8i}8IselmA5n_caR<Wg=F5MS79qqA(Cs9G~|_~Yq^4=v&!}|?{c1)
zB;^Q|<Be2+3;gPRPDOJDC*rI%D4P^OM88>1X&@M2&jiT$+vu#2f+7~eB9N0OS-?|A
z)X2dqqM6{YN0+KLec>mHSjA*?cnDpmSym2z@o%`fYHDl9_}dh8;((8O*)*A{&#RTR
zi?6=dXIy@nb|jZdr7hZ3OTn)6SnB%fXRqYW60$dfVbU!rjoPYc-hKomQqOYDoXq#j
zpoMf;BL@*F$!T-CL%eRq;>>FHww@m`XN>Q4XMTaf4<An)YIOSf&px@*J@hx<!K@+p
ztDC>o`)4w6Q3%ND^8o~E^9XVN$%t62@M8)T)(QFVH=KNo?7ElVo9@x4eU3S<<On;d
z+1|{7g^j;G=AFnizqj1SPg{qUHx%DT{Db|Itp!T0N>l~c08#ZN;(~}#)%v2AX>shU
zAKN2u;x!2fpLcRi6zZyj6UJU&diqxgsx&CbqNA|^)B_MEiHL8Hh$;FqAy78uYtTT1
zG)pax#F7>>7?9+QCvF?tTf>8fI8#U-&Lp|5T=08?l2w@bkSI3w$=~H^LQt6>67KGy
zWP{CQl*@E{LUav32j4JLhM1H3f`AY)6lkO@1?yJ5&$bAe-S9XB?-yW+#Zuq_+#A9;
z#sdxPrVYaafWZxNKWDT=7Z1*5@U@New0sphjfxR)g%#PLr%wi{mO(0k4UT#-qF@z-
z<A!<xl?ddQ5N-|$=<+WFe$I5Kw{VBH5>*&%d4pZ^H1S7nL0yWh5g!7IcC~*Q^5IR%
zawgu~Hp~PUpv-JFX%or&k09Yu4E0DvC)LNlVfvO(xDCvrJKUF9=Pqt?P}qkGqIVbq
zRiZ=0p~IlOp0#(otvj+2{%-Wz-|*L;YjxRwuQZ_oQOjP;^EEU7)#vp08TIkx!{+I&
z9XYN*-MO5YeyY^#!B;%X2(L8dz?R?@)sz{DCcY`amckPx3*iVoq?R2=AkBkYR)-$V
zb}g!T)kLg)27P=ltQ-IBx*yb7RFvk9yEuNa*y(IItjj^rn$8h!NXT$L5-lVZ?!|r8
zsXC!6(MC~nh39VLbh*N*E(Wej)=u%^Il^CAW<v*ju|oI01rb=aQ%|W1)n6L+d4mj)
z^P&ouaD@={V^i|T&8f?NM6B&8cCbV&CWC?RFmBwr0SnG7n_-bq?h(BO)CFfKVG-C_
z(<pQ<zjG!GA8VvKJCaWJjjcGUD1xd7_v5sEFzC&J<*!f)gtyUdw`4N*{$W-cL@1e~
ziHfb$fA2l^KoJa0g9aP=WX@06gK@IjrY?e{AS0Q%f1&gJ63Pq&&=CdfCTrLfF%WPQ
z5&i`#KqF+`!K#oZirPaj3Yn8Y5>6&hG7?j#;4AUzmiHlyqU`v>ZXDXsh}n5#I3`_o
zLQL9i!9wM)OXFL}77iY;HmyX)BN#`M-~qOhwBg|f&oExGC-|irQ`(ejHTk1vV+4=+
z?4POW@7xT7z`RC=6?}7YEu)N%F3Q68X7PjSetLSi^RZ56<{Wy-FzNj1A0QA=Hg`}T
z8fdVViA&dxg-6$Z^JgA7q-0IS)30C#E#yg@nv03lvE=3?vQHX%%I5j?@D7VTUBCCT
zc5(}@RsmrL*1ixb3IV<f4b*dAxfBEQjO;X98Cq3Po;YAEE0tsnN&%CAQ6%==iu*hp
z*p2ZSxwrDlAHeu6>zeTv8ZBFVPaL>A#2Nyao^X9W)`wT{_Mn9e;3Krs#w;GMbQLaQ
zft}Y<Y+eC?_1sT+)YP2?gi_Im8Fn+v*FOKWy`TZ?wzfLC7a+}K5AOojt@X?pf-!=!
z*|$C|-yyO}1k(SzFJpWs<emBdtZ<XUlD9RP)px25&V#kF$(a=Iv)6d6;M^G+I3}OC
zTjOA@Ss%xFiK~~sI_^jBdK>({6CPafHbxq|P`Nl+6}hPVs~{$v`m#kWx8WVp#paxi
zc$ldx7if}|Zh$hFLhw6@Aq1O<Al}}<0&*7EOxrCB+XSaILTK?mYTuYU`OWmUsqSYW
zdw=Dt%i$6swBA*)ZqT+pN?({v<tEOAO@$oF;nU7UmPvmI>9}TFo!1w(@!wKkbgsr+
zxnb~+ACrBA2Q^ZI-o@?68+5F#e79>K=1_vP7T=DH>WJ~b)GTpB90jW9Twm6!dEiki
zN|-Y4eDIKRAwX)IprmBPmWrs3vTwhJGoCvdA%Ici#v!Y7LlL9-HnQdNKWAt2lO9fY
zUHn3l7Z_Z@7|R<&o9yq&m;4csiM^t$UXBG<c1$&x1h^FIPC&-cVQU7f&<3-@huBO9
z!W?jF+~VCELzmfO6{?`;@m-ek^Kecy_}3V`Q=_YmzLEl%)K1EbS;-}A2M0EIdtPpb
zBO%DglwGRqRxZF<B=0we!)v@`YASV6hI~dCI?(Fl=oct<M1(XlgZhcZK<h_KW4+1`
zFhfqnxdLWk2<8c=O*(nC7?@k)!iH-;D|um(E#Q3j2dY)6)Hq-=Py?`Y#ilAknT$rq
z2YZGH!x_TuE5(y=QnZ_>g+<f@j6<9xD{nY*KoVdnoaP?r-T4HoC!JZAqfSW=bBd%g
zV6ES-Bwdr64;JCc*oyv|xfrcC0(V}tYf52cc}I&{-*ARXlR+9->z-RS?aZX1n|;0l
zYos2$6-%gDTT2b)Vd?Wull#&$E|N0r9VY=wOY3xv`ORBgydI?I&*Iw3{cXRLn)(F{
z8lClW+jOZW^TX^#S<Wi`z<Fw}aL7{(S`J}@`N_o)uQ-MT;~67BSy^Kh4(~Yf%DKRe
zZ6j-DJLR@SSr~^}Jc<r$l>3lYyB2GoXxw0io_H$+KACb;Wx&T~q*tF%Bi4h0ut+gF
z<J~ZD)9#tYN3+Zbe7>e;>|hD=?xg)n|0)7-y&Y^nwu~l*w_-cuD|A&7Hw6FaE(z0|
zeTbZ-7pHK8#F+)&Mx7v`USr|z2z}v7i^fgiQ!<KTuG1ikzjmO!<VPIweklcyI!%~k
zdKa%(2w*XxPp6jivQs0e)S5&?9j{qEpu2>%X?YbQuwOh1Zye|8r1L1+Hs2qW)_AgP
zn5C^ff7RFyF{Qh0ESGM>NT5IChzfeK<i*Xe=jwNVCX)O$E~ZQ4ACA<SA0}peYtQw5
zxoeRb(+umr=@t>pIX~BZmFgH1pYNXVV*!9u6azy-gat6R2U5o7xfXnkj*gy;op5Z}
z_3%-kM%i%<%2!TE6vRo-zF?7?{z)uAGratnZ(JL}!TtSu>W?qQ*WGY!l|L5gsjddU
zBapwPTlwSNv~IHA;l>ZXOSlM|?!lXTWH4=0J4{JLZ0vdHZ2n?ptbIdOrk|C;UYM&~
zTl5L1PjTmbdB)R~hJe`^z<B+Z)Dm%8f(aCclr-@d1U{v4Qj&>^SiMnz#iJ>+@@H`N
zli`ii6#rm3P2W~}%5hYM5bU_2ns1S%MJuVWF&@)Rgl+x;FLV)#5hcE9X}N|<K=(ce
zxs_XLZBuc%Jh$hGO_hxAGp^*kzUAqd?4+Nf#JFh7ja*HV9mPXzm;J0=k=~N|YM&rf
zRXNQ;MU{;Z+DYB32T(V_QLO6%&llEPg2RYN383vnlYQmR82wc*yHRXUUp3V|F#d})
zM6NrOhuW)BuFMlG)9f0cnI_JBlDc*hzKec6B$@EyojkmxlT3$-&*}PC(qSe);m=71
z^-5^C0$$&r$=@tg<2z#7)h(q4dd$YeM%FcBq&h37t$26}zkCzyO*1L4I8?UQ+FgyR
zQW?uBE?B_Y5{NNjufgN-W7vKTNjXASMtSq@@@?}vd6a;WMwnM5&eZQ6{5@0Bqm4lh
zq%p3Gps;>Z=`Y)DaoHYjg_!wXhBbdnOwyik1}Nt5^w=rOl)wZ4#k_ux+F0A$yVy0J
ztc6jsH61prczC<9AI8l9XY+sh?Nt_-jHG3YiGxt!gb8TPUem<nzy+)VL8TJ0g$NBN
zgP3BxF=*=Yh(_?)gvJ#2Y}ZVmR9voVN2^MtC!3xh(R){EwD!QPJ_zS>ptgp^0M96K
zcAA4~i<qHNxF?(4sR;^I_1YsShSnmKXlUAzbE*{!pfy7?y(R{l_Bhsr-W^YMD4l$z
z{yX*wk>{6*UZ<k4*6pbZ;}X^=M)AYl6=q_sa`FZv94#P{E=cV%3R~+0$IVsh>ri;Y
zW>W>=hczTKy004#Sm_%%(EGQiJzcgCs((4K+(C8m^dfN7mO|}p&6VGJ63l`gN1duu
zhii?1^>eVYo^_lKI**C?>V~|Gv?YYDpy8V$!**sZfm*_^5rUIjErUB4cws44RW8hr
zCy>5|-dR=dtu;Kob~4L-gPxf~5(x1}V}w+7L1<gJh8Ze>6nSg6zyehfOwKO%(o#lR
z<v~!JLQ}}U@)I?fj82d4maWlWA3R3Bv1N-W3Y@-59=FI>yuvcR@KUrqrV2n8p$ZrJ
z{n&RKKVd(^RGQd{z6n8r-ZD6)>j|27BIJM@<|R{!r(e9vLHa(UK&%ZyK4}p+M5RiZ
z6&6CcTnyW}dpno1aIh$igP*4uoB``ZP;o2Ua`p_X3J)U$-B#_~*cBv685WTiQEb8G
zE|CGrmz5C~Cpp`DhfmOXE?d1<G#R?CJ}vjX*pgu7#~!E9{f?^uT{O05!3~d9Sw=%=
zGIos|fd$6Nc2F)qaj~l;CG1J(Pi|l9QUXB1*603)Qp8(d!6K*qfefUl%2L=%&A7X$
z#<7<6f`QyiFMX`4*tR9@7liIJd32!jWtCGx*Y*{7I8Qmg799zNdPbC9+uVW)PIZl$
zW#xK65SS?6dWY>e!=5$U2-hg}k1C_AOo`{s1Rl8bj|Q0UTh9-jQHVGvP@OW7r?+N-
z9)bHAAc5pio+&!6o*m!9rDpU`T$Y2A5A#b7|1zVDi7PD%B8>v>a8zZyoE5fzkF(SM
z1>Z9$H0*XGdpu`~lqB#ugfUAX(Avea|Mn!_bm1*k`sCBsXPlBSSg&Uf)57(B#96ry
ze!&2}oATEF6B`e0bAuAh>bhVVUKZS-m{tI@oQjLHY4Z*QAvp<klgt>6%fg~-i}M1X
zGbp8hl}#821l)gDfJj2Cn^|VuVX*TWfiVAKxloyGZWm9cR9*bHCVkfeR*YSw)(E2q
zkv?i9un4Ok+GDMc@os!43r$vGhr~i&f-$%v1f`GU)~;v()+FmCd#gr*EzO1#ZktEu
z^s<#hcQsv&YO_j{XhPX~-$00A$iD&WBBV?<lccg3h`p6UCV9LUt7xUiOcICwm6J+u
zfBsH%u44!kYo&+0LMK89pw-48t^bKp%5Ysg%D6(jIi_{Ar(*2$iT_)yBDq<uXoBvX
z0w{0W+rjS94gB<E$C6?dW444TZs_{%c;>E{rnJ-qYR7(4+rxfSGrKo&pk-w2Z<z1J
z^F;^DWVU+sKuO%m<!$+`tA(^y_AE>~%V=P6DLi|Jj-4ynVD-0GJc*H!vN!^@HD7bp
zM)Ds##xpE3iPhfXamfe^Q&%0=ACB=SU2RJhU5;d|E@xjh2v-eqE1{k)_2eC-$#83H
z`kQ!s4{Dp;c1_AfOJ@%@0c*;*RhdcMiHj>G%x3*&hvNy7uhLJRy?idn1E#7Ty)jj)
z0Y|EVmg`1aBPu?FDp))z3LZ$Dp%w6WLSbAdY2xSXSTE-~3_kkVaG(<AWsnuOzQa+Y
zU*=)N5UQR<c&a1jzn}9KIW2L|At^3PHU8Z)=4$5A_<fb{Cl5T6e_k>yz8*3ma<VY4
z-+u2$9@CI<s8PA<=VhQ@t80pK<Ee1eHgh;^)`>c`vxh((n;-`8C(L&Q@^zIb(FjmP
zf~=q`qHph<<0&Dwj}M_WiR@SA(Q&|i|K6C#hM%rR(ti6!=|UNDexK(VHJl&D&#O@h
zrlX)O2(7wov7Uxf?yxt#n5Zc>!5LAbW?G7`72f1<u<{2E*Sz_{+0;~fWcCCh?|$YD
zy=Hgr9wLAZk~lpH0_XvOr!d+voBI=Ey-fIp&1syxqHeAe7Zofy^1}mF^r4EY<$V#P
zng7so@A4(Pvw37wLr@6ohiegfjeD+bP?b|%^{hUk7C^v1zp($?JZwqS*(06T<gC`%
zoc1i;DKc?h6Q#i{@($%O&wyQ#czFyWZCMN(XE5+FVB_>#^0qGZg~FJA3WC~d^iKHO
z5A?_6gge!Tn8&%thd$QwV&l%3CCUReKgGE{^8xg5VE%~^FMed?Ph{joMK=z~*2LT!
z7xw90424l;dp4u3UG}kUB6=E6k3vC;CsyaWV~GizxBOLKPRh3Xfn#$Re+5pR2@_Kq
z-BjtV@Se9aU=Ww2)<XcRhv$!J3xf^Wm}EnhPo_{z`A6~%i+mfLhE`5)?P`?g?xL>6
ziUD1U6ROH{^ar;K!lH>*!Pg3q-5gKpEf?3v$&OajjDcMkmjSsQpiNg>jKA)=3$*)~
zu77pK*dVG--h(GS`-$#(sVkDQ)Y!<6$gnEG+|I6@tDk3A#9fX@$0GXcz0UxsuE6v$
zaDPC08iR=(jgfKHqg>cOB%CCXepWH}*-Q&k$D9`6<)`fWs#nsSOnrhGL4CrJWvjWf
zj8$KTlh*gK7rRf%bekd=1`;P}#E(wBpIUITb=?IL^^sU8Bxr+oG?-WeM^<m!r^?DC
zv-o+Za;ZyzJsLcL^&K?JFgqfhz6&NTMPteLq9bfsyZVFnttMSo{EioE2~B%d$ju3p
zD*;dk;pVO&At-HGQmCYd<e|BE=c`-3xI)Bt=g1=Yt@^T$(|7&x_IZHJt~)8Mm1ccV
zI^sj`aQ^my4WD;cR@VJD<<x2kyt^m{n)ju9UjcA|IV%966DHXnzWy2_zvi`v5~hIN
z>XYW5I_m^-<?cR{k8j(NV$Ikko%iR;#$Zv9@*=mi**H!n^zK$$4)@Y-e8%A+Rf(F2
zvJ;3S>=IFN?(lqB<HA)H`_W5*H8XC;`w_S}5C53{GWo!@CW1vimXVB>ZBFancDCIi
z%~Hl>4jOO=#vT+ibU0|B>8X3Pq0?~6#@wzkNK4Pm|B!J`!$;Y!{)d}3mD;I2^O;pt
zXhi5O(f*loSbXLvQWBYDrUwQtkclLjAwJ0=4j8%|D9?L7f+@(8`^6&7*(e2Hh7>HL
zAsT_NoSi#lTO&n<#O}B>`YEeW%SaWlC;F#NIWQ`YJ6x+lr_1YkYGAx4w<UG_E;X&X
zBb7TSsVE8fEI1Hi4V)nX&5Mgw$0=2~`V9@Y!;9$Ju(udQsgHm;1+&R5om<GTmwn+-
zD^H-@Xogrn<JdGjmyf^_ne1|%i}E!6SY^5E*i;}f@)x;hsjw&cc~1_bc4W$cTuy+K
zahrVa-#}age*(!K!aok4?&c8jD{;ZVBor#cryH1Vy4G&!sN&iRx@XgUdP@{nM4?1g
z0EzNu6j3PhD#^;DiWbR~Qj2Dap4f&F@v~1#lOaA@tZOj8ki^6!nBY4}C$^dTyyY9%
z6Dh;6oM{2wwI-N1!hi@|k_GtDGRF`kXSQq8kgGn<1a)?V$HTibN384VG@rV^20?E|
zGk<`59;;Cbqs~bxfiPiy+gHu6J^I@O1K(*46%9V`i#)o?(KZJu4UnW5cNRtn2UtPw
zsh9Y;&8x%SBH-|Sid^)*LVVbL27CK|2K)Md4t<@9$t}`v=%$u`JL7or!!pKt6>LQZ
z6y#+u(G)Nt4$V(Q0UKivSbxiBi5T!@jjQ7%@3c`PBY*?KrsMrzhHo;=Rw5Y@S<ksr
z>i1@S>M)<BGjmlDA-P74wi+QRP9(N+C{^fe5ixl9V28U!@jj!5!EK5Wt~Y2NVzttY
zI#Xkk>xmglOQWfZkc%tkfKXAqk^}9$`wMno1Y7UnLJ6kD_LsC@<d(%+Ix-#CWjT`3
zQEi7>>8qY9PL<SHIR64we@BQ`wx3<Zzx6I0>kPTJoB<Pj8xM@nCC)E&>A;e@8qgZb
z?61;xo8Xo}w&&OBP#I<wy?Q`9*r-IzV}^xDe>lO0`3`q}Vb){_252lvDa-T%ng;Cz
z+(Lsb<Fd?-pMSCEmeTT&;rFlw0lsR7Rb!;qGpk_orQk}sSa-LP2jOspFYK%*ls|Qs
z_huO>4qss&-d4#q$jes@Yun(*R3w6@*`jd-(*Z-WrIN7Qz8H#vk7YSgaQz%D&8qSm
zsYy(K&U3GxJ^X%8XwZkKR4mrzEWh#Bb48|>UpV#LfcwIuj_E_Or?{EVLH><Uv`t@W
zl?`~sQkpOhmoz+)IT|1Zxb3Rq(vi0#pLQvWMlLdz@Jd~5i%}Ve^`QqF%Ehkmm#wfe
zfvYukl+p&SCy1;dX$LyX&Z3zG?s%!lnqrZ!Te>~8Dl&#%X2Mb-@x$mtpt8-|xKo1#
zSY;ta_Y*omfh<rcPk{VEt5Umq^eJZ3SEj=dF%0L!S%Q%la6B4XT?V19{!~V<!9WqW
zT9Lz4V+I<S5hdT}^dhwzUiw3h$eWf~pNtHF@fVT)etv{|@a!sM$oUmLsu&r%^SXe~
zUAPg)Dc6rA9WqM&Qmo1_9oBQ(%bUr;vgzpIm;lN~7U*F89{NS5{m`69&G}*RJm-Dw
zw}7tTkM{RSU2tFGf**!-!CzfmjDY%8vYaZ8Z1=B8>0u&zL38b1JHL|L)L31K;KvUz
zDxQ4#GAEBtjp?#nBerz614|zJO~^TnZhk2J*pqosE7wc3vo;S=$k4oy;M6{@z|rVX
z#b8gA0apC$qt!g};1XvrgnK-FTSv2d6XWUyo0FOh13{ZCDJUGm)&r=&0*X3cn$pTp
z>JG5|VjF4}cKCHGQc*@mZ%jj(_0E=#q_w;w^~}V!N{Xg&%0v%n1?D6w$IQ^bRoO^I
z(3r2MF9^nV+yBmY$~S-vYK4Ekn5(u`QyVb<Vx-(-B80^pNXG68^Rnx#l|NSP^!I5#
z;9)PfKsR&ktNocs8m;*m6dq0e8GIl4!FsKi*zeji?GA3FTz#s%wtx+&57{&PjI&|+
zRm7h^;Go{6H~(!pd8CblgTp%zD?0HBd1`Dy9hY8Xg9sXwLYI%NycqIsh6Th8<PWnO
z?5?2X%7iambS|O(r;AkDP4W+&4T4YSr6Y{a`=>McA^#`cud-@bXREO&=)&jiTkqSB
zSF;G*kb0b|i_j>D!YC!+uQap1?1_@8c#vdHzb#UV_@NuNzp&=U0ZneQ^c4gZsh(<n
z7gBGP^o_kh<Fh%SC)?|0yudaBm!v`ovt{?jHHQ>ZIoKX-$2g2ao}+f4{Do4rOis7)
zw^#QlG81|iqjwH)I2sHb1^wxl0}4>mDlZGlTG_w$@)Cx?aeHi`^EZJhHn-)-+uEGv
zM(G%n9Qb#o5UrSen$S&nC-0fLD5R9Y*^lZtiGFk``+t_bZjnD(eR5M&Q25qbz*`wY
zuEG8=dTIRx2s3<bUp~NYpz7gFF{0{T`G=Vfb6i_v-8`9nPiIGBt~N#Z{sJ;k<6G?s
z$?bLi2%9>~e;+q&ovCBJr2h2(TL|12j^T@;DIxKcu_G2Gj=B8A;l&%+SP?qBx*Wwm
za8IF~vFhl)$0NN&A{`JXO8)Dx6a6dbbN@SG0hPfp+L4f9?e&(rRiDrdf-&rkWK>|#
z0z&}4AI=Q3?n`3=889fl4@U9?E0sa|bfKU5isBDM<OC7^+`Pof3~)OXG}}#J#9^XR
z#c>3?Uvj0wH}pRtp>M@-#jO%so9n`A>EO?H@@n8qMG@`!<j!)`T^ug^;{`R4tfv-&
zQR%(jdJ-UgK8BN={04#Mc^?`Ar8J1?Ouy?-LsbM*c=*{kkuGU@GtRe1m=Oz!SCyJ}
zcs8ZjPK7Ihv=>y^Sn1Q6z){6xLq+r``%pw|UxKHhNj6xxbYeQ&Z%wneMttROX>hMY
zevOG25Vt?f!e#f)mjw<ENT`-18jl_F=i&wZ?b%|+WDM0`??L~?U<>}+GlRbkQiDX7
zuEhwN@0G%dBEC5JtW~E$0-jqLic}qTV)#jy<05$bTqX7O#uiCNc;Yv{qFh2ZMs7$a
zH`rEs@iNaln?xGEUle5M=26s-`<gwjv`3I)-JH!d=va{2M*o^*TTncK*PBg3m{wor
z!!#*Lzl{$Hi!2;^wC4RIjNyjxn&B<2vb7X&xPESAB&To4s2Hut`R$0h;6ikz-|R)m
zzlWomH6|3(7MfU%vv|$Jmv+`xpKD}RR<HeK((dciPc1*$&@ZVXs$ixk*kZ^%ceGPc
z{vl%Z_ls{{5p^Dm9EL}?2Z!j=`Y%muRPU6I5ijqJpKn95X9S+gERYz#TYUrmKW4c6
z$Ht%Q`QdkNLR(V2!}gPO=?=u-(Jf9%m$IWDGW*$i1+V&*cL=gC=Mb;H<F?x=0-m}*
zM@nQNwr*kd2Zrv}*P+!4H$<G=bYOJLZ5n@uKelFKz`)_<XmNin%F>56TxCT)g2+H`
z-QhuR&JPp~;9el*WVLaW-FiQBz@=|<w`8z65@S{-ETz8F=rh5-zecIYyrddM%)X6>
z2)L_MIG64<^^uVIVe5+Bq@7-@JW0&VFniYKL^u!tId+E%2Hw7J1z{gXC2m2SR6ta&
z9<zw6IA1kY4!F&oliWAs5FQs0S!kvD1<7Y-*Ob{=O3HP_FqL^6YXKh)FRRKPABXim
zko0D1q^pDLEpyb>7>Vem$y{<aS!MC|7-7Apea7apg_paIr9sv>qY2u?Wl?Fz*g^+X
z`)<i`k1zMcIvSQwHNd$d`1#YBj~t|>w*6T&vE@4@KeBG&$*!uRHg#34y;H1f8@2lb
zr@G6?l!FK-BTeL>QF{1M5+k%3)a5Qz(KM*j?K1=tOFgtUUIs^b<V#SiuPUQY32<zL
zAN{=n88Qw#1~`bzVW-01!CvC!JD|4BjypvCl<o+FSy}3~^}VME7gB7e+e;Q$Z#*rl
z0j^CI%BURzlj+c|@lDqu*x_7_?AqO!K$5dvl_3%&f!vcnw(BD%V+t~So?)mxf9WN_
zt_la_2u<+<EUTQi@)uWDRKO|~eO(?!YLB2P>~M^V3^eV^64^WW$0_7Uv06(JtTVSe
zJc^vRh|5%6Y`WZ6%>t%%wx>1J4C8=(PL2_ZE6r!jf=49UCX|{R#Mjsa<d|Y{&L<kq
z$4RclJ>U9=H=80|I_CMA*&6hJRYOhLwN`9KNL8k{<!v0D`3s1g`fqX^e8TcVRxjk=
zsw`a$;_0hFl;00cHQXYJNJxLbXC~=4z>P|tp;VDF?cB<cB}VA?CBfyU{Y{1GBzW~6
zurKl#Rh}?c{D`)4-n#yu0Hh9E@oeBF$wrS9z63}ro4tY6*m6YbgWnX1!}m!s0Kf#y
zM9egRKo<zcX4Yf?@0~Vy^5siT&Wp#W0T@iv$c!|8|M#7&8xs`dJd>HJqsmv6|G^}>
z)%zwt8h(@CTxY>skiTz*|NWQG12qrbQuE}K0fKOjy7!*|+-~0*00031004ymegFjk
z000000stTYFaUP|0040dmjD0&000007629i7629iS^%a2kpfKu=L4z(<pe4OW(6e$
zYXzqT#s%dD7zSqsx(7%H=LlR02?>}9^9p(k5(`HQj0@Ea91LU(>J4=b{tk-{{ts0U
zR1o?RuM$uao)Y{MixdPDpcO6^ffe)?niq>0FBq~JFd3>EL>k;1VjK<}RUCpGz#Rh}
zAsu2KMjq@RX&@dTiXlEC9U`A1_9Jj44<uA2HznjIEhf$<KqulTfGH3uohkz=t}9Y2
z;w+FYE-h3o-7YRJXD(+hpf1-hEH7*?&@dA)NHB6RoiN5R1~DWtTQR#bL^6*u&@)Ce
zsWdt?oHY40RW<82a5nNcGdFHGpf}|=`8W+Y8vp?S000310Fpn=o?j0<^#BV4=l}o!
z0NApb3IG5A0NApb3jg%~8v-E$wg3PC2mk^A000000C?JB_{Ctv00fM_3=B-XV0;dU
zs{l>Sr9rk~6adiomxjB$ySqCi;umolfNkhB90q_9un8D}h@Ehea2~lzJ)_i7&M8Nv
zn5U5wMz~>=R<`J;oeKKtpgr!+s6S<d#<(YGr<@#`$tI6N8sopr2)UGyPCmn^b*rPF
z(!UuWZxK(YJZignVw4uv8R3j>{xeHe{OhQQ_;SQD=rjK%;{9>gQp_?X5i2H}3QD7<
zmuGrNu}>2BHHW`;t+UArw;Zs_2-l?Op@ceysicN%nrWnk2C6yZlzZC$v?mEkvYjNK
zO>iuN0C?JCU}Rum+V)?XA&QCj|Cj%7m=u8`sGt=9oWusi0C?JCU}EBBoWQ`!z`)eS
zw1<I#p$9@UK436pWMV)94GawL1sLAEh4BN@TvHev7!=<BXIA)c!4So?jp3;R14Dlt
zGf?+>revTJ1qMa{0*?`S0C?I|OG84%aS;CgGaaB^cKck%>kiqr?NzR4+smg5%<tLb
z`2c{+-3bkaNPvr1Cz@aeFpS>()r@Iu;RsiF(ne^Cen>}N3h*2+@hWfd7Vq)_ANRKP
zjt&l_v)L?w-Ui1v{gIpeJX`13=cC@%qC@2^vFu0oEqkB6$WCTP)UMi53u<1%5)hww
z#4S#7h&`NJ+5^8kaRRMCH<An(*?<_vW&#pS=n8;A!NSVM&cVsW&BM#bFCZu+EFvl<
zE+Hu;Eh8%@ub`-;tfH!>uA!-=t)r`_Z(wL-Y+`C=ZeeL<ZDVU^@8Ia<?BeR??&0a>
z?c?j`9}pN691<E99uXN89TOWDpOBbD(2=PKW(vAoEixw=&Z?^?U}kz|Awyn%L0S<*
z763(sVO0PC0C?K0RppxNMhqQ?mf<qEAm6#!ZsV~pGuv^}%ZuM<7wx6r<@Oo;G;+%S
z`e;3JvP`9gXhx%vj*g@WD?_Z7<0v6|`Ma8&f60x-k7K@R^K6oCP`(^<rJ4OPtcKO<
zs$Q`jhgHHV)a{<KRG0=HTZSp!@VH`Vjrh+wuFZVho3%#6Xf;~+BzCl8=P~izT<q}E
z#3sHgtGh`;Mc*h}<5{Q%JL0QyeifE*785|^8S&^`oI*o#HY%&zvbvqxX_6#1TW*qQ
zR&()sl6YJ-1V6QA20-<2F6O!pxS<2UPuNO5t{Dwnv{uwt0+N${aQVb}w93_%1ARz2
z<?vlxtv8X@e4NhN*+LTQ1gB3IV;tF%)F86Qb;CoU+f$W3H4SWaph2+?GOny_u(b;R
zTyJ?iWJo}cg{!~U)C!3Qewrp?lD12b!=^Vhrot#_Ia_3pnBC-$_PtoHh8`KG6y-Xj
zwE<Jg7B-n|fZRmM)uztc{Sae^T<6QUrEu$@OXH?Ys5drRjbg{vPSSEbo-jqF67gEr
z_IT33kch{_7jhj79V9#<y9Mkfu=98dZl+602n?(uE>DIj<tgzbNb`8wyj+Tl+FCog
z%oFSSM~_dKm-F$<#lF&Zpg&dWPntqah0Ad<HHG?R0Z+Noq-fos7?+O;e6V#^6Y`jg
z3n35L26;|p*p{PlZF6n+&v6C+r6xfpUEuFRySr3}6tGb0lm=TNtH(XdvdUVWGOAFO
zXes6?9Z<w$I^a<RP6J92{+H=#OHHaE$kXCv!{zT>`x0n6joePT9-lFVCGsqI7J1GT
zRgvdSQ4@K=6m^joP0<i(n_@`hJEj;G`K~EOM1E+<XX`VMTjk;_kKJ<dwa4!n#S`wo
z!1z8ez6aj~j3OOi6nP04MQUIac^Mc*Hi1#(3^0oP02oEi0;5P{=waDvo<Z2@ltO_J
zN;x3eNWb}pJ(oR9(iKD0r9&#Av%6ZJu_G<eN*-U`Dvx!Rue6G~bta0hCS`)xN@fl{
zzHaDNiT4KVtZ07_Oc;V6tXF4$R`Sz+tnU`rtux5zCh`a1gYmKov%4POGXA-T9^XFB
z6iv7a^E)VsI@=_lx-z_=@_C+jbr;hfuONT6FwwUy>&$7yziWUB1A@QOghxVmJ@+-y
z!yLZuZ6A~0_rWzCh!t@v^Zs-`{;5J$vVW?~R4*ohyn(|Z2CTH!9ZVmpxd$zQjs9a_
z3DY&r)i7I|i?PXUtW$Y|_TI@fA@q#ypoSU|I>-y6jFQqpL9|5CI7uP7j)to5^9qlW
zQL_Yr&$<39w;c;5zb_mRH1(MQ2l^qXc_3=!sso&LbXS5&wH}JTOklvMT8e#os2v-c
zO(mRdQ{HG|_k8EKZ@*9nb?~4vTH5&0071A}npD1?_old6%Ev~NFRXR&Fh5NE!naOi
z0H18B=XR=}?zTSA=9%HU?txAN!}r`Afu&i1cE1hE;<FFaaI3?>?p6zGw7ReF4&1fz
zXy6V17p>U+zq(K0XLkWh;|bYOZzmaGjD(EM{5z7rqXz`&ySr2FBIPsv;p{1y!&5%r
z#4LVvi2k`Lly&+P-@^KZ;X4p7g|!I0QYQzBLD*MD+L2#k`P%gG&S3Ed3riMnP0uPd
zfAv_`W)1^D6oikVkBbBi9CIu)vt?#3OVFTqR*=o}_a_!R68cL9^CywT5IGEy#}Ea~
zmqZamlrTgYLsT$75>*UQ!w_{0(ZKvmG%-XAL$onO2lFk_#SlFV(Z>+3<vpi|dBE`A
zrG{D`QX{>dWPHjPTi#2mCk)k7O7)CVI=8&nlr9)bmz2^KrF3n1Zz<g{ly0@4J1ywm
z3LkH-l8>iv(|d5e>nG=wyi@EmD{)O@0C?JC@ZQ02A}C@bBV%9W2F9Hn3>*x}1sfUI
zoHj`?GH8Jqo4Gj{IUp=iHZY6bX%{mC10w?`kj>$=i@^cHW@d2NsKVG07_q^jBVr?S
zipxed5N{Vp0|O(ALq~E*1V~9F5Nzh<VC2!-!T7&*1558lCZImn6c+$@StQE<0C?JC
zzyu*c=)>T{l+3`$l+3uEf$_gGlPCiNQ{MltOeu^z{{Q+f1L6Y!v6~8{0C?I=%pD9u
zQ5c8u=Y8M%vEZDYE3IA13WFeb=u(`8<?cB~<;yvTIA5-9?GML(d*A`)mN5We0@)}`
zveR>vgEc3)VZl{yN!;bG>dAII<;-Ybxm5q*{|~I00XOeuW9bjs$^Mdqy}#v#O|0aW
zF%EK9_2lQc$eC^XkxTU-eyveaPwGq%J<t6W^C(GK3gJPCF(Dcf0+A@h_-58J($!L$
z?n33?f8)TX7uBdYH=AZoPS2b<I}7nYUzOX+EwVsIX@fdRa?<Q1?SwAayG23M)Nzq=
zOv55I(R*>b`yxK3QDzJ3r*_WE?a0pf_HMQ<xvpH`>Y5kp+*X5C5eBPj!PGGc_2|8<
zxz~Ng-*DyKs-VOqru#+c_|w#MbXwQ7S=x|2+Gisf&Kf_u$-ePPD7#~J&2dz_kkK`J
zt~NZUm#fjGUGj%ZnJAiN&hHe{)kCOl#Uw=TQZBsou8TQW6f&mia7>eui=BA96U6lY
zz1ya3#O$q??8ds>-semj$I_sGMK<)JEQGSxYWcKsW$?zk{3Um5G8ljT2j^I!#1<7C
z7RV4lI6{hs)D99kCuk~a%SX5X!>hIcVTx2Rqmasog&8U~h`x1hqx<T7EZj&mR$co@
z1<k=&O8-dkOz<u4q;63PuGKYwrCx)@e~nyp6$Uc3K+swV&pOR$_8#b4x8|YWuk|;|
zdN|ENGS}$W{pF_PpYK|IPEqSISi&NR|D)7rnEf8k(D;XMayap6ud;t?4kpKlMCmja
z>BhY7X#*BLy}laZ5>~qT2QOt1$(bP&#vgc01w9C=^+g!8SL9Mt-JsvkT??M88)-Jy
z?jgofCpxh>a2_8x#GnuF-G<RmlYKguV6l<U32$+aT)DUHSe@9%mEwRNBH@FaQgBO-
zN2+@$5d<5Zp1<z9g^Bc!|EA|Zn*?jA0C?JL!Gi$;0RRBN>$7d!=6qr9TA(`t@O?S?
z=Yx<ySVUAzTtZSxT1Hk*UO`bwSw&S%T|-k#TSr$<-@wqw*u>P#+``hz+Q!z--oeqy
z*~Qh(-NTO{csM`+0KhQ%{n>7qY}?i>-CLn+6VxV|oAh3UC^6zBNRlE=hAcVq6ev=n
zOob{n>NIH5qD_Y`J^Bn7GGfexDKq9QSh8ZxMg|$#vE|K0Ca(NsmPJ+`Jb7{BBO3?V
z<&aY@x#f{pKK2|r$*+Kd3Mu?=S)LIX2m$~A#(7SxF1Fns*4F#OtEQT2kfdJk&Hs+-
zKbx)I-^n0zlsPUhA|ayk6$2ktwvmX_sPH6(BPm}95>fT09pOqAkC+sXj#LDZ!GrH^
cwwtZ5v-y0QIm?{C0ql!OFaQAn0ssF157FeRS^xk5

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Typewriter-Regular.woff2 b/node_modules/mavon-editor/dist/katex/fonts/KaTeX_Typewriter-Regular.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..e40ab151617cb25fce5b4e739aab4f44ff3a652d
GIT binary patch
literal 17272
zcmV({K+?Z=Pew8T0RR9107G~H4gdfE0F2-O07D)C0RR9100000000000000000000
z00006U;u-12s#Ou7ZC^wf#F1fx)}jB0we>36bph300bZfjw1(yG7NzV8!&ejjN31`
z9cZzdtp|)m2pb0w6yp`6BDVuYRK8u1|34omhc#LN{#c6A$!^^|FtLo@sKc2X9>y@X
z*c-_wI#9Gm7GIS<+~jr6Yg<82LHyxDY!-_pnrPUu>f9e)oMhE`fympEs=T5l7S7B_
zal&<9KWO~0BEgZMLRI+UGq7#sPjd1?L~CVr_v{|fJ_L9^0N`Sya<76Y0Tm)BA{HvS
z|J9k6LTrKgoG<Ci5H{p;MHhIOx~}DE$?Ls3`>bS-<lWA2z*GUZfzLUDrt!S%W?E?!
z+u7tp>}0d}As+}W`+(s8nXNZclwvfOyok+2?90ShiwZ<x<rj5|nyxxbJOHqiOCHz<
zYP;0WNY#I3W_M48VJxbq)Z*69mr{ijndIx!FlYb}4tDc{LvV+G@ICx{+Nd3o3Eeu#
zc~ZU}bfr_;I}sWr14>4SfwPtZ$n_HzO}=Yz`V7!?c6ZT6Pb}Ja#gbG!O}t`B%~DIv
z=vusZu|1;O@WO_e4pvMarvGDNOdK|P|2nhzDd)E&Fa%`FAz(o^&N~O8Xyw+vQm~Nl
zE{6aF$8eCRc;+{u+s%P1@uJec<*y~Dj%g-)lGk)^eviuT0n<a>0srRt$KhPXCp3_l
zKVCJtYoTiC|CwsGGYcqW@Eju?Lw_OFwu{c4E0>Eu8)tVxU;w5CL_!Nv;(^i=v@5~l
zl9B)rya$lFka-R{QUK$Ux&U6}<;-))xp!`3>GF!wU7afXineecA%mOlE*l^|&PpUO
zXgb@VS`<cC2=yHcIM!5a2nUWWEKXymLMkM-hUn=4lG>!2%JXb9Gu1|PD^YwbXk0*Y
z?nT);hGE-X-TPHhAqiAPHqhYaKquBF+0Ou~8CgsKI#<sF^K-9X-l3H!^Ak^oztOMX
zTsirncORoO{x4Hui=KLt&z?nn4RS~a0iJaWB&~Y60e)$6YH-|BTQV<xN5mvHvzx=5
zmR8z9uj-~==(U&IYFlR;ZL@8&owmmZzIEL?e@#TC=Xv^9bY0K%%F7<G!*+XLO@HqD
z(M9K-a8UdIt=iW1IQ{>7?WO0QdE&804ej6$n<1nQ31KAo4XGr#U@iz_Yg%cYEB*EL
zyP&e#b?VxzH-v<Sg-1k2MaLLT=GeISgv6xel+?6zONP~EcQ{>cPi9tjPHtX)L7~@I
zR9sS8R$ftARb5kC=dW)7=CbB#f1Apum(~D{CuGJ<sh_KswmzV{r#H|Kv?sNAq1+VI
z2!LKExE}x~v=9LRQ1`^|djn5Qyd<yrDE024x`6XIOVZPSpkF_Qzx@>H9Z`PHd#dM8
zP%r;Q5#@DdOXods4fr-4fry_&2Lai<*FmAR_&S13pT@FIIa|%%e2(6{t5@e7T}2N*
zJ2A>{96cvBvUO!m85GMrgKN_^E&9sRp6VwCNLDjOv#nIla|1Mp<TO(b5_gsXM{%Q<
zdItl|1nXrjIKGN-7T_&7?-L|<urP04>&9(^+649RZ-~Kv*1>Firj@Ge^!<Gqt=&Y}
z^g8BOuDnUnQoapu<3U}wMBTjf=YYUVBT#S<uLwP50=&CGw|lC7ovm=2(-a^xT?$wK
zSb32Q3(ScqmZxbl5u?x-e-<u!xRF!{zb?yZBVm~otmk-B%@wV&VvxX-k2;P(gm~+8
zD^n%AqX>wSufs6l9;wi!(MP3MucCM6(?u`SXlS%n@m8iCI;asz8J`FUZTSK-p_TCo
z*7&Q(fG|PXPXAbWt+`TpUuM-OMW-Me&BW7pv9aINbh;?;V?UGt*7-U<eS3*IfBHfX
z8AJnv?-k?Q1t|d|QkOE+LsPF<+a9uOg7H^GfG+|ICh8|BZrgY(luEjzKs59u_w0nq
z1zHQ?MVwWN3ukNqhinQVuo#KzZ2^R^uZdRgB8COcP%I!DBnM?k`E5@2JGywGKK%z<
zJAMpzDs_a>Aatq2LL)h3a}-5521Pj*#W)VdIUXfA0VO#Rr8p_O0`-u0^;OZYuZI5K
zs?*p<S6GQNIE}NAki${ratz9GEXs2nDsVh1asn!GA}Vu|Qg3KL88vJfGizc5c$Ag}
zh}I+S>!t}BL1WX=g0zq?EGt{KA}gJy)%i3U+YYKtc4=)Ir#rKFHFeSGU{eY~x(nU1
zSY2Tr2bCHV66yzTvB3TX^ViSxo^7?Rii;gRXwbsqR={`ucn|f_9~(Lb#1Tj?RIvRJ
zjf#Cny_rBRw!0tK&$z8jQCzwe<LR+54wUR1zSuDWV8i+#M580|(xx^|8tRC!uW?+x
z6bse@ohhD{cu%~JKk50wt@}yS!7zojV2?=E9Q_+<^9;*{iRLwtu(}_GGOrDWW$mFb
zTAa|l7AnfsT1-A2n`~aToFQ@!^$pQ;oLPI_)^`ef1NyI=^8zQ=giU?Y+>B+O$$BnN
zo04ucSqe6<O<Y2u)rPHvZ~7RB79`C<9r%mRT1Xc}Oecf0*lRHFpw%M;2YQtExZ?5q
zui&ZyV_5VJwLmuJHiYRMn%|&{c2aU?>jK6E+*;>vB9@){)>M8ev1D~WuZBSSfvH~g
z5{yEu+XLgM+4CV>j;oH+7O?DTk{kUP!$}IllxdI~TLM#SXyWV04#9YvSi~Q60M;-s
zKiHP@9&hr=O1ch*gaEhE<n18#MD8@+)UCynjj$vthcZihn*+1ey^RJWjM5inhoufT
zXm=v8XQp2Bnkz`LJp^Qw-C&D-i~v)M;y{wa65&YQF%>gUZpvwiaHj5j;-MEe<+4P$
zQg=Nu@dkQ}?;Z4>xeqtxu|#-M_dF4NxhbzD!khZPg9*_4D85j)98U`wY5f3l!s^1I
zw#HO?)b3A39sX3UGhr+0YD{~gZhso;@u#6)e;Vprl8*ZQ>1e>8jwboja|R<12Qi^P
zpA`E$m)jiiu<Pb0ysK1ch9Cv3n3v5UAW6nJ4b{d%%_H;Xy5PV6mq*jv({2P9Qm#3y
zhH;Rx%uS{NAL8$Ul}44dNaWMtc1eX(>9$ilifI_r{ukM~ND~2u^@@swJWPb6!W>v6
z*C_i{GOhq8P(zy6%+8C$BcpiYC{iF0(DERGEP|hmTEx*paZ<3rmz`4+7F!%!nukfu
zLT$KLT#=ILD6h=3s&GorRi=odM8*&_jF;wsahE{BH<f6rY?LTk6oJI~Qj-!I8p<42
zUZz2a2oVuKQeo0d#5kekiui_1lSG6`bj}Es%xSe0ibZwRN;w(LoKHKS#b<7W(Q+Bt
zfjczo^Q?yIY=oj!R)l*7dJ+2x+^NApQ$M#>vCdP7g4><4tWu5U1(L2X83BAVCtw=t
zro~F8P1TQLASEgF9cmEI0ONJ(WV4~?5E@meZmYn%i2VX27OP1&M7|>dFDNzkm|Kq?
ztSkwf@U6WJtUGLZ4mNsd_lh7dUra%Wq@l)J%Fe}pEk3Ba_Z~;40GZN^YtVOH){f)4
z9J2k20+wgA36G~3eW{q2YLHE(h-Sl&0I{JEM;vt-nRNlKWlCU+B?)Q%?<*Lf{F7DP
zGG6vW-5^j=k`+_ZO_jjgw52Qo=8b3FJ#U+dmAvm_f=vdf2rAd!{lz%XKSHU40HrqQ
zPhl(Yt|PuL^a+ej=ROydE|ddA%qd_<c&unPoit;wd9ISCH21&yqP%)90qe%o6mmZS
zbCeYY`iR>iU$PM;B<87%MWn#~JsX8J&J|wMmgpLkTY9)nd><(uif4a4l9ihhaLUrW
zY6g63QzFmz04;XsjT8bxpO}5Fy8^1CDkb>!?G^!1QIOt{y?%X29qLh?2orC<bQ-`|
zo1z|hNPfZHAu=&OTfe&H5)o_^Mw1=2POT+m6nVHkqiCm;hC7Ho#2nry@F4ODKH9QK
z-Lpufk^4p({jd5{b2K*Fra<>1cac4u?YdsILzMWL*;cM#OEtvVIVFM2KK&5DwtSN3
zG7!=wj2kf&0wUAUb7dx?q|U^*F>9L*P_g}06{&3HJ}PE1K6ZEf<Ejw0!9bJiK&!=O
zIkaPs*~nXC7YU?@qdYS0<#rFAn1`sLwq)V64)7~OcpOE{!*nP>B(jww1AJnpQy3W#
zcHd~~IrCCv#ERN0iYX}W3EkC1rF|*cVi7moXTDES7j-#}H5dU<!ZVK1s((GSHrtfR
zPs~#cRY6k3rK$9I;gURFL&B7YC{4bQ*xKYI$No%t0Y7knlAxHwUIGz;ZbV~GJg&!_
zaSi#_8+PpOi<QHRhKQm(&3kQCfpIPxy>qdqbZ6u-0_R6euG>hUSh=StDO<7&T*>&{
zLR}M|jVpx}c|NSgZ5g+zc#>jkqvi*aJeIs*CnX2j%3lyVQ{v#`9o^L^fTUS%>ba%$
zQ><~TcF%Plz8-Otqvn;76{YnSKq)L+o99gYv6SiVnU%ZYs8NIQ%Z%@pGD?|lbP(IC
z(N{jGRM29!oCQzxk$L0{HrBr$$wOle;T=>`f5S#d^E=acUHi4JqPr=#Wf-8ScL=2X
zdWMMFFBAiur8DXqcF9buj{vijQH)cHlRhFkqF09{O<h0-K*JYlEs28s60JhsqExbr
z0}!G<T_|L&iI{Y{jwAF)l;U#@8Pe>!rNZd`d{$XzL^kwnzmjgs(GKd8eF3nunV|sf
zUU_#Hk`m3}C&0Px9!kVy-&4jkO`dW6Z9+twL7*hP9Xx6hcFII#hwD&)-#sh=eELpZ
z2I6VnnRwZH@g#2xW4zWmYTpwA_gngpr~GA%iZXKaU>l}no37QGYieZ5ZNgL7OK4=q
z>_VKiSLK9h+4?eF(4DvuX#wyHd17|HaHfwJdmA;wEo<(l=bqGo$sF#6mIX(^FE3p}
zIwpGgXT$@H%C8${a{?Pa@^hPnuRK&KZP6WZUFvNAtPHC%kD)Z%Cuw}pp!GG%1o0u0
z<r$@kt0q3lI0e`xeM6$DSX4w{!o0#tU~PHPDmbOr7EIPxAX#P38LmCFX<V))h?qfF
z{Xge$J@WaC!%4OzqDu-(+0;JPoFGDe63k-80nB9NCQr88`Q)-eXQOeVr1?aq{$$BD
zBJ%^jd|td-jJgLdHX3yuvKCE8Lw;Tlg$pGJ;n1kfRGqrGwk-fB0xnF!nBeL}&CM18
zONDtet^m<1n%>!l#!jhJpf1DJ;{v>T^QhYXL*dsWB9wfQT+@+%YJ&K%&N0b`66e0N
z#&M(cB(N>HJ_WC`F(}H%ebQ%tQydT|^!-{mF?Hk8N+~%_TXI5+Gqc9VaFU<JM7q^R
z_&kM|aMkn6wung<JmFPY8qSVM5<__I{PR*Yt~c$KonPgRii%G<sM{`;GU^80E>^Y+
zOHQ3r@1g#tXJ-Ux+b@H&J}OO<d<={lS3IWzzM#fKwiRnl9UTE<YLw1;m^>QvMI+x8
zQJw<y-zP^8bVJ~CzOl|s_tWWhm3naS-6|2^7MLEYE@|5m(@*&rx^*(Wh5=V6G$zi1
zCr`LWBM;SQu;5gjO`pVu)#ap8%6s-6OC|doYcxMPAAo;`ZH<==-=UX`^87a^T-R_O
zDfOl&MRUUK$iLcTC*q8vPbI3&`@)c9PMVzwC89=Xq1LqS_g&vr@a7GnjXY260M03d
znWsjJ&FYh^P*zQyfYpOu2<$rTY>*Lx5m}umof|9dxE=0ghN8o}s_zk1dzsk881Uri
zPHS&M>xbSY^`2CJP4h&Hz+W6m{DeW1hMbOh@%g0~ie`Ev>CniPbb`nmu5lX_w*W`2
z`v7x)KoebRtSLbSH}~xQE$@qDSiACMf3Umt0{-|gtjSvax1!fiqyQDuzNzYe2SBy_
zK>km#U4EOUnS7?JOFi1wx4LW#G~WtSR541uP?Z`<ZDIZx-87(F)~LJaLXOTF#yMw3
zqTMTW*~mrU+Y+?~P2nhrk9xgX!n=&QHS;8UlDMz>rT5Fp8JO&{t}WyucL=<zlDf9x
znyy#Ut-Ac=dPVP5Q+R0Vh|=r@^#+Q2MlHoI5X$tNlZ{F8rfv&)^RwYsv+G5G-5D!n
zhQX4e)B{gPF89Se>(!c@RUT9<+M04PEgNWeO@|b_Ry_CJ6IVl`_EAYZ(+z3O8(t|5
z$t=w2SN(}Yc7LOpS>xQs^g1~Q^g%|aYjX-APs<euUXip_Ih)^zp6~`$wQ(z`5md`G
zmO+ucrUVM;qlQzni&}k|bE(cM8m*(l24hn*3?>A|1}koKkJ8wbz<Wd=hj&{Tv6GDf
z?mAGdH$s~f!E}8NS9CNxwz6Y80y!t23@H#vziyh<RlLUOWL|@HqMPyCo8(Gwp^sc<
z%Ug`)2fC7D`YqH4@?Dank*RLZ5K&Y{5;u&6fPGe09mcaCNLj$Z9;Eh8ugh^<vAp>g
zp{U$hh9B^G5xoDli@}?+UxiM>R^OoS#I2&voJNh>q|y>MqPf{r&?9gb%SD6Rh<eEa
zqr+nlF??Z&ww-X$ASv693r2hx>(WkX8!dHb;O;el?vxG;@wh?4MyntppwvgD6MI?8
zby;nrhyeZe5Blmn%M`|w;XKL|h-JPwFKV=M8@(bfJb>!4)qc&iHsCXUl@3!tgEDtW
z9Ue`do0t;uV2Sdy2s+j61)$2}qcs6?v|x|1KfVWVi<8q&ewyN2A}}L&N<&Ft<gsS;
z&@=jKH2<)=wWNIcSaS&QY_cuc@fvFU0OAZy)j@nWI>MZ`J1C$``<$agGasR4%VS1j
zie1PuIQMx;n<J4SiOf4+0W=*aq9Nml#u5<jI3e3(*`AHD$7N0S*)=?DV32F<v}7^o
zZf-VryX_=vZp8K;GH%_lRSPmQU5scygjrAlDcBqk7%b(~tXA}*I991>3pK>lg=Kf*
zleuV>663L`ego|aoQ!E*Fv+<x4bcWH6i+j*MgjciMmOJBheQZob|F$qgXf>u5Pu~u
zq^WYNWKq>0cU-q|n|H>*eQ4!`426^QAXDEkv09Vy7@m(O>8XI8i#6HO^>DJqY$WZk
zcqn>`r{Yika|f$PE2D?;HS?TwZ@F}Wmar3tpDP+w%?nxSp=eiSA*CXPcqxsD^`?3L
zfxL!@Yl0J<nO>uG44szFyi?4357VYD20)tW>g>cq-t%(J&?jLZr~}hOogp$awA_OQ
zCL&0H1ga)zbWEF})ZUPlViJmc1SK&`p<Tj^ycO6PpMK(1aYH64(g8D9@ja;L=mP{E
z^foeLGA8av?DV=Q_1GMSdJ)>U_I8<X37uxCzJFoCk^$N6wnINsZ7)7}@BzHZTK@T$
zmujQ6i5)x(dhO*qsvK&ID7F!ie%z%-)7GKa>$-v3Z<(`*PC3lp2MAVW{1m0c=OZQr
zda9P;S<^I)matA~9d;zt#_CUDW}w<Ym|pS=!*z4UCikxu%QyOCsr2itl%Ev_T0_A^
zb!|Z2mQSAg+@f^j!ii$am6Dd}89lvO-S&VxN{HTAg1m^x8+01(dr}YhZhi|?g{7Db
zjv@l5Jzf&|hIWe-fujCvi0JY>fGowuYzflpl-D?2mmw2;X50+qPBfvTprCa^HZr_&
zPG1!>89riugVY`>>Q9bmCskXzBRhW7XGzv@`=n5?;RRIGQNj)-LrjOP=uU8WR;VTI
z+E|y>vz!@iNZb(-<%*_o)*RgRNmhF{^*`n;IqUw9OUHZ)=ovxN)r%LQ&!o&tKH;^W
zlpNyO$4ar&T1pYUUG>SPkntr`0AEn<ESC{+pU0a40b)|6TluIB4xcWguorgA2HU>o
z=t>bf$l%UU!Z0M1vK564E!zWH;5g38&_o1zNYX73Z26i_Yfb6N;(jVoKxp^I3olj0
zf$B~XGQi5(uzW1Zn`sZ~zTlDG0|W}mgmNg;m6G>FL;@x5bS3;oc(VHLJVGsg@`Jym
z@wGMEJkZ>IIKq;sz2Qf=jtRFU_uGQkXU=<Bqse^G%)J#S5lj6q%*>Un{WYBEKWbU~
znJZG>?fXF@orp_bNMz#3$rk*>@NWqryPj1U`o<8B4ZRV{s$}~Q2wN^YmG&xI63`q6
z+zbdF1)<0Ti%Ds~8xv!R3v%JJBWI_IMV%}tF1Ds;1tB!c4*g|v?~nxFpwcj&!H7tp
z5h+&3<1D6R$Qu(4A#8h)gX4{7i{D^_v2m4IN#20+CX^yF#N3D5oA<8B&PvHM6n-}W
z;CX9+sudM@cxFkY$9KXiP{}k4hX`deU%mx3G^Cd#qcw~E#mP@d_<6vfy0>NSnLpz5
zqKb;+RoCEupPOX*S#s6TLbZ(1IJ=gV6;A%S^F0vyuj+$NII5zGx9zGLIwyWV$Vu6o
ztBHv*<R*ce8CzU#PmIp<v|pecRcZzjK?J?8iTdX3r4(-#IYlgxL0rOD;Nrq1!z3>1
zXYHJ8GGryGxN_%UcC^;>s$L+E9SmfJPA~}_N-tuKf2WaJcgvMpnTS^0QfHat;R4N1
zhmDyX0Y!mf0|<ceID$=moRr`rlSrRL`qH#ubH{L!hJP9k*5UudnR%6e60Nc0yL4$G
z=RaJgFuG@%Pe+jM6$L3vR18Rdla@vw9{qHHAt@*yfm*d!!_qgx{E)n=o3MEzE_lA{
z-w1D1ZpqiYW#fD_cOuLdE&}}!6?`O4VGx_H%<-jHpX+?PVz}_vZDS^}LBS-FdDaNM
zmHVaKvqSC)?`zEXMp?R686sA1JK{^PI@kGTPOs79F-E`yLN0oLR;6rfT|{Ged026N
zVh#QAmkOWCr%(vEh=9*vfFN{2Xj;jJ-$03PP5w9_=;+d~!S8T100#{m73dit$YAgV
z2v?v`Hi+RO);AmYWXblwHK(adLfa(>aRc!B3Jbk~xPZ6!@&Vo(1R@!O8ive6H=n2=
zb(1>Stqe<vvbrj4v)TL~&W6EHfh)X3=SS)!D(<@fsrjj&zTi@p$yBRV!Og)cCsyNw
z<3vmf&pOz(iWE6T42l_??ipjjy9yUaNedU9tE$;Lx%;43To_*1{)zu%RPS25fZJ}L
zSJ<S@4D+T0Sr=Q^RpeRbMBNkWN8d%CR*Q&FP4}3e=<{dn5=z$vCB*wkxwJB>HHq}a
zCtSP$s?AH{Ti4LHBni%Jby^4`w?8NU9d&wqdhGNmbu6$sz(*0|Xh5OT;nk0Zt}I1i
zJpT5c`lFR1ZE}Uvk@zvb8KrmkO*>27k!lXTx=+FMATuUALsjWbSzF9G&O&KQ;25qf
zE+4Qjkg=&-B=HZ$n-g17sddk$V;rf^tzlZ5L4l9D?t_lx4QV8Bz>;_ofMF0~BnpTh
zs=fvE{@+jeT%RGddd_U%_W_p#wSVG|`#=B{@<PAtZjKE1Q3;eUJhD2};G0`+5XsBe
z{E`68zQw2qT)$b9O6<uoMr-CFIJdX$2#VTvBr`T{VAMQkF=66>Qir?^G$9UD&*U(r
zmD7Rgd%#s=DIrRStH~~61!YfduAU!VbH?~FNqk45Q!r@4VZ3SSO3g`5pik2RW14|g
z%Vu5;630Eu$s^`4neYCUhyL6)q~Y5TGWzU`n_a7e5r2cQcE{}6tR>%C!-<gC{G_Px
z=|=^#FpW2$iw|a(I1BQ|gTl>`)spiAZ}$y-$wx<rB)DlT2ak-xnzYjWdHfKPFV1>B
z5%Tsa)=zAe1NOuxk6Q=*`MO>YudX6B(qcact5ks6`#+0y0Sl!lfn%`Zy}=5BgQ8H@
zdb>>n14g*-*z8XnDxE8~!DBLn=9tQJOha|axwdG5b<7nLlbq*>Cgy0|=?kD`4H3hq
z5Wbx)F-^N^^)&e==jI(F2zYva&i6B~s|s6BM^HB@`Yg$--K96nGUJdg699x7He~Ay
zg6GZ|PRx{r+YLWVXNu|bT^Cy8{OB%b%vT1t-I^0J+f#zwija<&{P_VH|Km@j>mLI^
z7sDujP$4c7avFTak7IW!cbR>U?E_p<kyvyZSyZ;Bt|;v6={Ws#>Gk<f&Fhw~lW(~$
zl?)rNUEPRFp1PBQV2y~&oH{K(9lOc(HE@Iu<*w^>wJR?D`?RhMZ-4cO$>?7jo*y1T
zi<C3|q{zohm0AZ`J=yZr5*)^h1Fk@qkhmRvYvy{1So%hI3+;W{8DW~bV1IyDD5PBT
zH4{JG88XFY<vm;$nukPXx#W@uO|#_ICYPtD+vQmh)<-1RPRdA=0T+(PX7c|}iL3$M
zqP<<dQjKe;jVBs-N9hQQh(5?owCR-fYK}xq$|zGoeyLK7RqjxI20}gE%es3YkOA>k
zJ1Q};!c$OSqGY64f<ZvSt0YE9KIu)eC0Ig|7zwWcy89Fd06B8$LTYjf)C;9hlcl4H
z{$=WR6G4qrgl|<A2BS-_0E?FZhk$x|+7Eyx%;Z`=7M59(s9684J>~iq8mo8O4_ofm
z(}&c`nv^=~Zzg8BZhCToZLsY|jE&}X&b>5w>a@dE{GYiCJ*+l^?#$&+MPxr-S%s(m
zflG$x^JV()6XS1Yx~KJ}x&F$CO0h+wX(X*A894*(nT4fF`eg%#kK<_nOIpOJc@E5+
z4$QKPUbw0jEp(T>vI>`XMpWd?TUZ!t9FMb}&72&8rYTF=Y(icbYNYN64EQjfGiJgi
zLjifP=F=mCFon>lZ!8C2($Z^`f(OTczZd~9pYC?XM)B%L$IBFO^>!ackJFSdXhKJb
zMT#e7q8~ij&(BXDYw`v6>Y`d9y7bB|ardRA<5K#^x}ZZAu(>Dolhub(k`EEZO+A18
z9LCR!z!{rvfO9bqy@9Ace$T|Up2}TPQjjvjO(r8&)Tlwlg)2)8Qy=fDmf#bPV1L&W
zg8E>sAFT&Nu*|s)I5AG(4ID{uf~~m7fS6eSXghrAut(=+@<uMcw)3WqA777Nj4r*h
zQ_P5)mu}vEyjiut)eVS@@}*~tXQcZmnbK{1cLy?0?P5vT={iRjUkkgTOe<wF1hAEq
z2?ypi*YaszKS|%&$;=hjBwO6&(K`uPa)u&4qJq+ep_UVw;vKimuxTWqq<NmMg*EVK
zMGKIdlOy&0to?a9puD%VhxsusqkL|U)XTmBC!FQ3^60SKyv4A}#-rusBUhGS#BGhN
za+#~+K)h?qBphpaNh>_55q?`+%ez5Js~`XH=W&UgBQ~AwNDgs&?f^Y0o4t-eh$<v7
zUnLorsOCqPEZ$LVBE7E(MS?9MJ+&%9KO=N8&ICZFEb#>4&du7f-4gGkWW;N)cwEff
zN=BLN4pY_W|G&>}Q+4Y`%8#cVFW>ON3vFZH|3BHY8qePBvzdl%MQdqk_LPQw;g<=l
z-(Pp0`uLqlKUVD7yUHh38YhkVNb6+(f$%GYf}egBEzLRB=Ar{@u7C8yi;pI``Lo^p
zNguuV!K^s+_N<6?6Z`feQ}%T2zB)k1$rkLHGGNUK9*J^Aa?GF0mHiZkDr`Umn8P;P
z8m)+eZ@UrOzRy|cvcE-B4M<;Ed$)ymEG)c`_C?x-!i632R|ommt@Q!q<PEbGm~<-Z
zhM*dBJAe4dn%|7{#;j-lXU`_hJ2ffru`nmtk}t8K?H@)laowt<M7H>ISfw-ro)z05
z-FbetA}v>zj&^_m{Y%m@y!ty=`m;uPv`@J84G?gG!y9~pAUXwR8M%1&N}ta62NrF#
zhSb0<R6IN6$v4)h@C!KpI}nTZ9f&v|aiH(Wfw|q7PJK7_sy)z@t?x}HcHFtzz@_@}
z9XR0_HV@C|2^*+_>X7D*6rcWmY4|t!h#T&ozVqsCJ>;&cv2p!K<LX$5@eMKxll{0a
z)DT@VDxrrLpzP+Q;r&aSroX%_jVO#ub4qeXP{ZPDuJLY7uso2xKYQuI-Un<psVEFH
z(GSI>xqDnSHhp@f`R@j}pBakYy`Np{t}psdmDSh9_ObWxj#&p#RncpX2c+RZp9KW_
z?!NC;dEdX=mjM844s`vCBg|`F75m>b>IEgnufbXNq~F4Wm=Gf@=~okyeH|B*FDPv4
z<F^_et+F67R&@<SEr12WyB^vswufD~1xg1n>{=BjR+a*JxvPt6P18uJh>}sh89qv;
zz0cJ^vWJsOzlI6Ic4V4ip?<%f3j$n&e(yrVv?DfxfWI!CBzvfVxc9Y6x6!H>mk1@2
z5=?;;JuYZxW(&Y*v|5y%d&GStSCoxbM}q=pwxB)T>0~CsNS%qKlBdM=bV6}0@hue5
z4~tk{-m2@+UgAPyPoKW~(Y&Bvw8)YtdAU<~C}otX#n{5MOwO3<CpF-_ney{XmD>9w
zfIi<~AW2O=Xk;Uw;>gmg$p-<{5uWAltgE<CNa8t%<>z_1KFzN|B)QVFiC{ns(zX61
z7=+xxT|3G<$2K4|uYn*7>yB2plagPhWH<0=2?pcLu(Pg%pFm)5EEXn#wGqS#WCvQt
z<M!+LF)}g_MO|*4e9QOVUmH6*vHZ)no*qt+^qk2_U!k|pTj-+_Dx#BDh;%S9)|GV-
zr<kHRae!vzGASg(+nQu~Ba(7Of~}{A&Uj*Dng8*txxH@fpG{%FYMA$*kyQh1mJjT<
zfIxRT=wq=5R*n3J2d`EybQ4J>l;qo+u|XP5i^q1oj;L`sPQPX19(Zw!N9As{D(!R=
z`3b3TyeLWT-C61yVD@y)W#4UCh{-6EE^_F#rUh7ixxi6Tnx-AgROTXwSBP0G$@_*8
zjn>GHH#|EtTgM%N=H?;FGDDP2vzYit$8x0Vd(Go$9x#!97Emf$08483{PC!(o2L&9
zDq{avcp$P$&e-(LF<+GHqf}>UvS!t@gsHEd({cH}cQmZZ`P2P{an?jzDbL7((WF;q
zr-J;1Bz_=R%fQV+)V=VGyp)W3uQe8{{hGi`2Asb#s;W=<q@rg|nI(AMXt@h!RqyMJ
zYKgqul3}8#p!pTH5OKM!qsWuuERA()J^FrV7`%80;amT-7F_%D&oUmn81%QWOW6Ws
z!?E?i`mh%jX=$m6*#mr?Qy6b7tJ0X1Gr3S=zZYh)bxu|7es57;W+80~tlMe{Uj!_A
zzgrpN{kA62a;XfWh;ahF8qDN5pE8sRhmEFhv^l8Ml)(EhqV3TVR7UwyQmMoQA9W!W
zaW>XuMftAHdm5qrQGxHlW#1Sefay<ch_=_)<%AW?P39s}vEK%YKf^u1%2)Z0G^5LD
zf9<rF0TJ~FV;qSBJsnorTpSiMQBK&@kB7#DGJ2semhMaL?bWP#5m4|dA9p0w=@t_#
z>SxcUcv-t;e2nH$Uk8b7`g^nFO=P(p@G7t={TDt5GiSuf-bu`e<H3o!7h5DiP3`l`
z>s}!9Ml_|M$!LO9QWDXuUy-HP7E^XBP?}Z>)Yl0N`1bATY0d7eERAKFUsB=0q(r%S
z5_Owo_o}7!0sNsYpEY(fI}<2VC`%a(zDR}Bf|mL-@a3;l%x%7xg{*$rEtH(kLK_@e
ztfkG9>_y=L)PTzlrxv`EQJi{{?m?loO?MBx-aD(TOck7=Ryh+h&|*Rrrb<12>)R?5
z<I}bolM{T~QnUwv{ikmfn$rrm=#1B^+(<@VKDA8YHrUGX`dzjmb93tdB^90}0VTz^
z!3c%GHa;b54-55OwMMIxmKKku>&pZ63}E(5#1`oG*PHebXP}v`eiKo*CbDWO9(@<y
zWsJ(&EonZAV1g$zB5xjhI22D2mbFS%7T;i0@MnQ{2ZrsIeAA>RGddWIrYtr3+t8my
zQ&T}K+#IY6=I7X&l0DwUcu!Gcx~nEhQTTW~xa2WNoHeh(8Jca#U8SFHYH_3NsqK>>
zu&TNk{QI%3TDf@7<a+hvs?OnjE_9da${ggQ2u*xb8{PNDvtwb_)k1@BISV>F1$i8w
z#8Tjk7x$g{XhcDYmHyJ8(yY9c+xy^V*oo>nTsG=()Mreo5fEnyY_%C0%Wg1va#=Qu
zHN!{A6rQAjQrgi#nSg)I^AN)|EtLW~JUkcQQyrWY@uH=a104w3x@$HVSReJ7*@V&;
zBqf8GA>pR@7jNUj>odQs6aUw%5K#!1=lG%4oay;?5~$N3iR{PI<B`CqgcvO9A?-zL
zj!OO^Yz^g(6sM+!)z@i?@lgt3(fjpgsPiuzUOgjCrUUZB9Lj+5_AVydnv%-P2j>q>
z=jh$gq*twTgY2E8C!gpTS$i-6tGx}ZpKi$+$(C1iJb}T0Z0*~(XH-x7cwg5~y-XTA
z7QY>v6}OBh;w_7tg@rt{qjV&oP$t-lig0@hBO({AZS$zy$VCK>BF2o0Zy<jnlx}0O
z*Eb566PR3}JV~$sUJOw%8BOfM(1ycP6N;%K9T$Wk79&EovxNZ;9rNu#%{T2&<Y%C4
zO#Uubd9)uRz3#$MqMqikA*O(8p4R1&_0pB1Vo`}~4D>s%3Tum2+v79iGQqBGCYwgZ
zOXEep(Ek-3;(%sHj05D{*UBiLw<t<pXDW4!)o6vlC(9E&u*x^LJVYoj-&Ll-@2L4;
zgzZ7wk3U*D>Q4xTXV;abw(kJYJkP%WrEFPmwiFiu@97a3B#8OR&J$i%_|l}k$3T09
zm$ba%z2dHXS_&2{+=+)Yd1w!*{l!4tB#CDP1H}ypCvI^Ponz{KIGsRoO?=>=@2htS
zxtMdg7{$F0*epy6=pu<T$Xtz!;Bk0CP$@dPaCS$-uFqxag`@0pLB_@7)sMFAWy_S5
z!eCSNUTzm-P6^Ny(7nj!8h!AJEF4AftQD}&n9Y5mZw8vN%JuBc0<LO!G<0-W-u(h-
zY9#g!O&T29Lp1=6cV>M4wm|tY_9%XK<O#L&uu1K|yzZj~-~#YS0he)cIZP;EL)Hp-
z`9($^_W`&7lwi(w@!?+i#lR?mFBq10eyeM0p!N(6n#@CciN<E_x1I9g1voKUV!aD3
zXK7DdVv1i*2xoX7-xBcxR_j*m8YQ`V2f+;gXR!~AEpg;=3b$r!@Eas2@q;L&^%n?1
zK+yYyj85W^A5bQ}k3`8~Rmc#4Zhi|M+6oLK0>2pEB;6zu|0nq1gH=tnLVQ8sp7HLN
z9t5^8U$*s)Dzz4h{>_Go`~POi+xoI+N)U>0cJmJ>8$9}u^IQ&TtPC?pRyyR$?n_u7
z#CdXT{?XzHTg<n3<nuYRBhmR$_UB~KSxMcmM>YWJc-xNc^NV}<@(ShW&&668`*PlB
zC^*7E%3%J{*_tfELm~r7V&VbV%UB)m{1St;VxEW0A~Z+x5_oGH3>r2%>F*4YDC3*C
zs059|x7KPeVsBv=wK*$%YRp%1$DRmx{o{KZ%AZ!REW&TQcb7AzKOEO<-OCFPlx}Gv
z@~55sRTqo(8Ak!HDQaeDcbLVzKjE$LpFAV@KB0Xxt{;-qAVX~0@BAt0FR-*Y<1v>;
zAA{!dSNEg1knuTFBP983_1kx3M{X!?Tri&lK@eyD5KUa0-qiJkpoi{tewD{Fl9+iR
zC<G(|Nle`goW=Tylg>-Pl9`Dh2%>O5yPo&vRynq?Wdwu3!-&@y_cDYHfNXu-zedD+
z7=*A9Kz-IL*moP$gK8&J&*$^x^1zUJXcXp3xv)$5X;Z88U6<G_LS{9@Q0_de-M~r3
ztMOEhp&er_V%>2LZ1oEXzDClA9u2k6;f9A*dX0`z{U?u!pRi9q(T|Qke(A|qi5+5*
zdRS~+t_q1JuZ`c{|Aa8`H7N(HbEZG}QKM7@oSiyFu804W6I>iw{ffn|`-5Pw?Tn9h
zyu*kk$i}Q#S56$wwPBL)$>7&`knc73#tiJ+mVmMR=dXbHZQwp8XUOP7Z8<992lGFq
zDb@8pdyz7&l*Pt-)#4_EciQhNYatl2LPND_@6%$Kx?YpE0J6dmgork$alBNCEWMUm
z3qi0ET2PyMgM!8M^&L+P7$Nv{DKDgakpf|(3l|A^Z9$V)Frmi2d&`tm2wjH>!FqVP
z&vZgBB<0DGnL$kO%{OJsyhal6*VZ|*S=N8*K!#){tl&u@uTbY78pYAlM8d*|iVt?=
zW3yS1zj-M?#G0Mr)0bI%6b-SN=W+Z6J7i_WjFBqISf;3{-%BS9gxBxgu#64i7+<GD
zwrim4FR!euhgBF7EOrZJGUu8(%EXLp?m=O^$FeCBQO;Q-bIM<eeHbzR0r`6!(}2&B
zXmxxXgV@V9>^1i0ve|5KFx!6bZ}(Hln`H1mi9!LZj#U}r4)m$|0`3r2C96pC>0s~W
zg<sYHJIhcB!RN6sPz{U<`J=I*My31G`Xx%^JgyEzkWqTHge!8h0~nl{D_gd+AWVny
zETDshu?%27H40Ataqz@td?g5d-gXtOiC`}hO9A_d#nw{Nq8NJ3b+nF3sRre+?Na%0
zGYWcEa)=h_f@5f+x!W&CZD-aKDuW$1-)P;rPk$%xuCS`G+d}u3#om3?(^XAsbVkxV
z=|RBOvXiZ?MLk3;w-BlqfcTiV81e0mjLGl6`R%7~{`~&WkGF^Wi?f4WzYsxBH17)L
z@RhdP-t&|Y@Oodj;;U^)g8}7Ua2PQu<j{pgix)EJQ`uaK<}cqLwl*5Ihgc2De%p<j
z5hWfjP=)#ufB~)*Qk*J6E9<1tuXE0OZ#vnR(5NQEQ8{S4t6f6<dz^~@JQ-aP+N@H?
zWzyLzWQ8Zy3cm@G36}!rNyN^jBlExx|38k8R_9N*`f}V`lO}3nS2`IXa-KtcE=h=e
zS3?_9J%?oyAp#O~0X+4vjre8Cp_VZVD$yy0%1-c?w&kv>g*>kwQcHdM+rGQP2us75
z<&Xed)u+E#4iUou82*pMyBIR+zkeR=O~<*F+#TB5yJ~Hy9FVI$oh2Pi*Zgx{%HGqk
z=jukou$;7A8U#Hz8Nfcpg$DG(ZcUtUV#>mJ?k{e<!%qW2!*s=V9Gr1ja9dYWv)tgx
zX9d7hwB2Ekz0wwS;a<%7H4hkuEMWy6a{zw4Yg)lJBpFR2iE;%<K9fE3fL@yne70Hb
z;vL>`WzpWRAW4C_<ar{U@FYuqqRhF-te;7oDPk5w#6rgxoz_LGD`SY@n_V<<<nw98
zWiI>8T<KRkOo2Kl%L3>7grg6jmWndT8R?i*kS@7at+rzkbVmnMp}V)UX>-{XM#bT5
z-2GSHRoA|^lA_iNq}BHm^I_%XAYne1w4XSDG6qVSm0_pr;LF46>U^OuW>J54%G0=3
z*Ee9kh<G1Walq61>L6CCPO3nCq6C%HvcjWSPlN5qN`ekXMr;gt30QH_=9)1=aQk{b
ztuKe&)?4m$6$7s})oVwFIwHj;%A(tyjai&)GQ~Wo2$T}%CE~yg`#pkdXU(VnW~~y3
zn^jGG#aHHfx<Mj}Xf#GT-3=H)w%{9j0O9H{jR)Rpw`=%_kKC|Roa9M*L8N*a8B<do
z>v<yJ=y^2k7Q+vt^?vVsib6GFlw0;J`7U9S;+2^PyP@w!1#rO{JaUMAD*zdEq<})n
z&!?DCURgveOBj`x+Af(LjQQ3G>Xn75Dc#>C27=}P`gJla7SCqx0U!^s3@iM6Blk2!
zG=(XV|KIbNr(^97fr6I*>7tKz&4@80NcMBd)?e$<#*W=TWmK!FEYv(;E^Rm8eTccG
z#i2d8Ehc@^ZH-P@z&hxqbgX|qxhQiILyQZZh1-YBr7{<`w2u4U551hy(4aURmCV(i
zM@bcXWo6BwzM6xYs%x30hbB<D>`OUz!&q76CbRXpyxev@T+mkEfKaanqxt`;bwBY&
z2ILr&u-el`sbD>BoAqR%YY`;W+Z5c<)B{I3H;^I_*nQ-C;4u*5I)pnn%SErcoSaYe
z$r0oeIb64Hkq}eGQo<%76&3K@V*kQ2IV6G~2)G66B;u~${X4!3<>iTecCoAa{t_zZ
zRlRx$IGS`~y^F#-IIdBfcAS?XP$6#AvevedQPSnS0|_y7cNv7ev(1xCt=*ZrZq^Mk
zwB;iMFSTrSYB=<dPvn>yEWU)%Z%2V_k!vf3|LV)v*BCt9-`iR9?Enw;Mg%|RwN6-e
zkpx_$xxWI_xbCaQ)kJMnYqK^)Y%S{W7_(DGb8~&oi!21s%x{1DY@2knj|T6eR3CrG
zm7cq}YET<X)>%qJkH3PY4W@sx>lTBk4yZn=K0jJkUC7LqF!hhMQ6=Qs7=dlX_PMvN
zKq=s>)mb+K-PqkFFV`(#rPZgC<D<j<^);vB!=`8<Up=xS16tpR4bHn}&N8Gay+2!0
z6?>y&&t`c`!|Y`S9TOQvH|8f?$6~?S?1vmUN4wj8H!~<RSSe;OL-PnuKppE!wa)5H
zRsYZ*n-*q!YysWQ?oxTgz?*4sS;97MM&DAkkS$h<SkxFa)8)mWH8qg_ho5ae7Xo;;
zZ7%hqi0*D##ZyNuX^R0Mz?D6YWuP#bhk(EI*Qe9{o%OZZw66Ar(F&rVooB4C#xzf;
zn-diLngZ{W`mCK=RzZ#yRRs(hR`P{kVDW%nE>9|Ivz-~!Z8?Ax6zD?Dp!(cJXy41l
zA$|Gy)>b5$m%m|Y5~aNvFKaY?3zM(Iun+g*Ksq8f0`Xi|LPW>oT+M4nbbGyc&X^jA
z{lgu{hZ5bI`V3|3I#Ip@b7B6F6^H`F+ucHmt#V%JaNklut~!FMe?6wLBhnj^+s-;@
zZ8l!l9mDRx7g+*RQ)&LOUH09)@-@Z*r=QPG;8*?nw6X3@$4$N8wUEyhx%QSGWL(>)
zQPt<FCMcod7rAnZT9ogrYV|V1>)p-u`LwxMFH_^-O`yySP<oCiUQ07<hM+dI5z9K}
z;DM&QwGp#@jt{0*E2A>fCxU<2$C9P99VQ9(sSy$!^BU8xOe}c_xUc(7HES`;CfMJ5
zb3&jk2GrY<1{4FrJlnAuE@#)~xX&<-q$tUj_Al;=*Qes@MZF4yqREnqvEfUBn=>32
zL)ux)9-AV6F4o!YjUMc8kMc9_i#uwm!c+ICaj!7bX=^PjUe91zFV14*enu8JL^4&o
z^A@vfD<4fhar(si2+#uJ2ORkn<r)y^7j`@mAan#5#@SOi7DaOB&^i3Y9jP@jF-z?U
zU_*LeT-WvC_#ckxr&jY4B{zDo=Ueal)GgpOy*9gl`~(^FBc6$T+HgKsD@3RTMn+8n
z(Tv%Uk7VM*!yV{gA50)f8Rc{MA$Kt}b?BAIGGo~&sC}W`@BxOkCgO_DhS|*~N&MI&
zRrQ^K50~(qN)l1BV53A;*0oBRgVs?JLDtN0LQmtwC?`09Ii2`$(7LJ`xj;cC^0OPU
zovaa#cC~f@3i(YDBe-)jpElKgry=y*^|;^%eyGc${q{G!yTWjk$S;xc%^oeeC80zg
zA7JYFE$oz+2b}1UA8})e7jUdeHLz8ZoSDWvM|~MBf*%eqCrE|6+^LC=`51J{!4hxm
zd63g;d2U2Lk^O=18?bT|DjR~+AO7O2K+3y6ST-sayF2gj8K1oh@(B&j$i9UYpX2%(
zF&{eKF6au`K})(2-x*J=^;<pWyqh&sRYEQZ`Jl%Oa@dN!0SD<q@e3@<zDl!X4R5q^
zp!c2fWRbu_Z%+YTcz#Ja<xMJOWh#~0Uu0ZomvQ(TM;=Bz0+O={yGjet^>~EJ<DMsh
z%rZ(tkbI47d!P@Gj8(3K&JgBzHFb7L0v3pD0{hNvglEGcYB#2->t(uFQ+KJ2(H{6f
zVXf6#^b`9-x_~jO(Jj?=#|gH!m>fERuw0PP&_SwK(wBNN1|RP)&i3~<*CQu(%@{Qc
zRgbxD66!K&yU5YPZ5nHN<!VQ8%>k6NnwEOpdW$*cTx#2ZJ3C&kogfY!SUa2@c+}<)
zQR*V+aG?fa)DP!Iokaf7trRN02f|S{WdYn5k3=(++TqdJ@y%`tN#w3)mpd;{F?3LK
z|B!_4_l<hS2j;U{>ws-{9~HF#L9|t{QXFIzWTD~N!^`{DUQXN8_cp6m@F$--$R*2b
z`Yh^=fZZ~3A8)2%)|TwYpd7DHcPJfF`ShX?q5Jf&dz5?_@9$sJa}q0~G&v$~Yh=%p
z*4dRHG1iU>&jf!=tGG(G+kHsGuw*W*aLMrwXbX#Tu2BHaboTjlYtviSEU68G6iWhz
ztxNVye1;DB5_Mwz&4k2tt1<U2(S-wRrH>>>D}c?j1zl&}j5!FU9~lm(0|I=l%X7{p
z=G?c6kjZd<$q_of!$P$bDq2PHtoU}HcC{f$G1|5C)m;U5>Z}Rt<ky!>{jTH0GySwn
zAXqYQS8H{Kbi1bmh~$nZM+P`&tf;wrXiik|Ed};U#g-lUPC*jJD|E@#6cLTacP>;M
zn#ZXryo?E#TqUnK)w4RJxpDMQGI%)<vJ4CSe%R3~OEf(?)~uw?h6@21R?O{TjAk$a
z_)1^Ra*-+A0pP?@JWSk|TFA_M@sZet!uEuAEV_zUOYM;QDXsafW|66F;JHiu#`_P|
z)ag;`_^wt(EWo~6sLiMfRYy|y{z;fS*wT3c(%gVBydfOV%uBH(dT)(y_s&PH;!uh$
zgAG6OV-<?qjGc+np4SLfCe|45`KvU&Sd1%U#nNd)u)vVTTJAiR=MkD6Eutp<l;H);
z8pHs)v|2$hEdN;M9hxV|1@&nAM&Hl__G-{cpXKRcxyT1qK7cT>bDf+~7r+J#4B`bk
z_5(Wmw!Mjq@vW}XWVPE8=lrbQLgY)Ge$Kgdccc1g{oyOPGvZ3~<@%YvKO7(J?)b~e
zXkXqee|I!9q+*!r%$D_L9J3%TmR$Lk3#GkyQ8Yj0FO!NzR}S22f9D619~|@jony1c
zE!{dE*3~~V&a}ohN0m|jKzXfu$8ZE6P_B0(g~{Muk8|zNhg%$HGGe(ElC`em03H)4
z=<&s7nOS6;apF4HUmRUp%D~oXQS~`C=zQ>+&!0_eFuz6oY&s66K!NU>L^=rtwXO#2
zH$s4@7XIaWwN!=$3|W(-VUT!J1MDk?d0K#e3f0d-FD<5j*~!~VZL*bxw{X$!-FIWH
zD&;|;0uvw|u=kSl1vKc$WymI5QovMWmx}qF^^rcDh;km<zkl8!wNxB7AArS<$VV0p
zHfYQC#3AyhrAWSafGBX{f6~ecKuz%k1^mm0O)A~>DDgR;yRzVN4V%j)>vMO6XOf<d
z7B<Iqg5(8B`Ds1F?3=R2EuH;B{{uz+zXLSZ$iq^4yLiL@3Zt@q6OA23A~25)C_n{k
zi}JLtyyA^x$O2~+z+?_c;J3pK6c`pB4C_^$O_3=)C8K=VS@r2*83-C9j%wsE12RS&
zw?+r!0+3<M*eGBSS9MN&ln}^agTry0ztNhktI1#OHL~+=!d5}2apzOFv~Niq{LczQ
zFjva@8;8;DDhfwg%qo;KxB~*dGXM3f_OzoX>cnZka}~zd00030J+z*edpPkM8Kj1e
z0RX@SAOPSoh`~odB_zyS-|ruDYBLXbiHbPO(~|I&+e|@63R>jsX9s0CF|dzhU7QG~
zkvJlyC=sQ|oT53jpIe3`3l(w@LV>{`WvEdm2PhH*;3Nsl3D#^$+Y|q`Ads9IqaIsL
znEX<8pcN)|1=paJqD7gt2#c}UMoDowG@>byh*_gVA}Oj$MQc9Mif#-SIZj-!(?)-5
zphFifFov$`M6GU;s6rh&Qj;<w8d9G|)Whqr7kDV2X(~<Obs2*-iH(Md1hazTX~}qC
zWNH<2M@7j-6D}7@K_Q|%sKgi$G#WBI=%~!%U_gf5<zY)OBON&r%u-c;mq!|WMdKOb
z62MlC0ZRk4{H37abx%;q>h++J*QY^8OKT7esA}EH!xYTu2pbv9(l&Ts9wqL#jO2aG
zrA(!^5`}U@#R?-0i$nei-)2xz^5v3c8waFExY%YyTN*2Rqd&Tz_;G#2P5p+AjN+f4
z#m!I$nHRwYga&sgsYM(WI3n_EcPwTP&mK}hdX5u5rLj4|(=e1L+(-3AWL2l2j(dTf
zvBUs_(q_U!=U_zUqUI-f0>@+|G}3pSC5<YZH{POIPG+_|mXM2|I#TL+MB*2Slert=
z6UvW+5DOLocP?W1Sn&%r;ZHiV{KXXVu}s@#bP-;z&YSUYv;$J5Ko&(OmscfsLPXzE
zs|&+rzGGcgzf~5~lIc0)3E6j%EZCu@SsKd4!8X*q_xzm3O7z%`e&xK<j!E6Uc~eWa
z<#0d4*cn?cc1hi2G+m#@TmPK7K;97C>G0*yYW0ATZ<!GJ*CW${^^wJ%KvKeU{5_1H
zW8ZN!!4r?fpNWt1N->?rl&%7gg}PPNwIS3JBRFbXq}0QAhX#IoNXX%Qu)cyQQ+YXc
zgjH^(sO3F2=+P%2O{7t0J59yV*lJeyP1EFQV4bG(JChm6>#SVJuFS~5Y*CM62}`nV
z#Wf!Wcxc)<W*U@PIpCwA&P1?S%IsW(uR=>*byaAIt%`)Ya&_D2R+^0XTfdNxWw>Hj
z^HVjg3g5WM(g4Z-1agCTe1T9ThOcjK@9rNSpPpY{-%Rfx@cH%q^ZWNtQZ&PIydX-l
z*<!WX9Zr|q<MsIi!B997jl~nmR63K*<qO49xl*mw8_ia`)9v*K2vt;!g-qiOPsQ<!
z_Yz1bF<$bD*F5K~#MvzgNlHr6l98<BBw`aMQTI5AfGCK8I7n~?yW5P$M0ak5&3H$1
zY~m_M@*>+*c9y5UtE-+>+}b>;o}C+=vxcU6sJsm-Y-1I*wRF{UN_q#{I(xbqg{^Ij
zLebe{0Rz8fjx)#R?&Wg3or_$vxq+M$z;$2wK@fbi;s7`bS(V;{0NZ|u27&O~#>0Fr
z$UUqe*u6RSQw#tAfgnfRm4J102H-rX14q5(2dtyzj+!__)+z1?05U<dvACQ_t(emt
X7IHyB_z7@g-T~&)gHWZ(YH|VqvZ`!^

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/dist/katex/katex.min.css b/node_modules/mavon-editor/dist/katex/katex.min.css
new file mode 100644
index 0000000..c0cd145
--- /dev/null
+++ b/node_modules/mavon-editor/dist/katex/katex.min.css
@@ -0,0 +1 @@
+@font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype");font-weight:400;font-style:normal}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-version:after{content:"0.11.1"}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathdefault{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-weight:700;font-style:italic}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;vertical-align:bottom;position:relative}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;vertical-align:bottom;font-size:1px;width:2px;min-width:2px}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline{display:inline-block;width:100%;border-bottom-style:dashed}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .op-limits>.vlist-t{text-align:center}.katex .accent>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{display:block;position:absolute;width:100%;height:inherit;fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex svg path{stroke:none}.katex img{border-style:none;min-width:0;min-height:0;max-width:none;max-height:none}.katex .stretchy{width:100%;display:block;position:relative;overflow:hidden}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .halfarrow-left{position:absolute;left:0;width:50.2%;overflow:hidden}.katex .halfarrow-right{position:absolute;right:0;width:50.2%;overflow:hidden}.katex .brace-left{position:absolute;left:0;width:25.1%;overflow:hidden}.katex .brace-center{position:absolute;left:25%;width:50%;overflow:hidden}.katex .brace-right{position:absolute;right:0;width:25.1%;overflow:hidden}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{text-align:left}
diff --git a/node_modules/mavon-editor/dist/katex/katex.min.js b/node_modules/mavon-editor/dist/katex/katex.min.js
new file mode 100644
index 0000000..906ce12
--- /dev/null
+++ b/node_modules/mavon-editor/dist/katex/katex.min.js
@@ -0,0 +1 @@
+!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.katex=e():t.katex=e()}("undefined"!=typeof self?self:this,function(){return 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.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=t,r.c=e,r.d=function(t,e,a){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:a})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)r.d(a,n,function(e){return t[e]}.bind(null,n));return a},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=1)}([function(t,e,r){},function(t,e,r){"use strict";r.r(e);r(0);var a=function(){function t(t,e,r){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=t,this.start=e,this.end=r}return t.range=function(e,r){return r?e&&e.loc&&r.loc&&e.loc.lexer===r.loc.lexer?new t(e.loc.lexer,e.loc.start,r.loc.end):null:e&&e.loc},t}(),n=function(){function t(t,e){this.text=void 0,this.loc=void 0,this.text=t,this.loc=e}return t.prototype.range=function(e,r){return new t(r,a.range(this,e))},t}(),i=function t(e,r){this.position=void 0;var a,n="KaTeX parse error: "+e,i=r&&r.loc;if(i&&i.start<=i.end){var o=i.lexer.input;a=i.start;var s=i.end;a===o.length?n+=" at end of input: ":n+=" at position "+(a+1)+": ";var h=o.slice(a,s).replace(/[^]/g,"$&\u0332");n+=(a>15?"\u2026"+o.slice(a-15,a):o.slice(0,a))+h+(s+15<o.length?o.slice(s,s+15)+"\u2026":o.slice(s))}var l=new Error(n);return l.name="ParseError",l.__proto__=t.prototype,l.position=a,l};i.prototype.__proto__=Error.prototype;var o=i,s=/([A-Z])/g,h={"&":"&amp;",">":"&gt;","<":"&lt;",'"':"&quot;","'":"&#x27;"},l=/[&><"']/g;var m=function t(e){return"ordgroup"===e.type?1===e.body.length?t(e.body[0]):e:"color"===e.type?1===e.body.length?t(e.body[0]):e:"font"===e.type?t(e.body):e},c={contains:function(t,e){return-1!==t.indexOf(e)},deflt:function(t,e){return void 0===t?e:t},escape:function(t){return String(t).replace(l,function(t){return h[t]})},hyphenate:function(t){return t.replace(s,"-$1").toLowerCase()},getBaseElem:m,isCharacterBox:function(t){var e=m(t);return"mathord"===e.type||"textord"===e.type||"atom"===e.type},protocolFromUrl:function(t){var e=/^\s*([^\\\/#]*?)(?::|&#0*58|&#x0*3a)/i.exec(t);return null!=e?e[1]:"_relative"}},u=function(){function t(t){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,t=t||{},this.displayMode=c.deflt(t.displayMode,!1),this.output=c.deflt(t.output,"htmlAndMathml"),this.leqno=c.deflt(t.leqno,!1),this.fleqn=c.deflt(t.fleqn,!1),this.throwOnError=c.deflt(t.throwOnError,!0),this.errorColor=c.deflt(t.errorColor,"#cc0000"),this.macros=t.macros||{},this.minRuleThickness=Math.max(0,c.deflt(t.minRuleThickness,0)),this.colorIsTextColor=c.deflt(t.colorIsTextColor,!1),this.strict=c.deflt(t.strict,"warn"),this.trust=c.deflt(t.trust,!1),this.maxSize=Math.max(0,c.deflt(t.maxSize,1/0)),this.maxExpand=Math.max(0,c.deflt(t.maxExpand,1e3))}var e=t.prototype;return e.reportNonstrict=function(t,e,r){var a=this.strict;if("function"==typeof a&&(a=a(t,e,r)),a&&"ignore"!==a){if(!0===a||"error"===a)throw new o("LaTeX-incompatible input and strict mode is set to 'error': "+e+" ["+t+"]",r);"warn"===a?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+e+" ["+t+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+e+" ["+t+"]")}},e.useStrictBehavior=function(t,e,r){var a=this.strict;if("function"==typeof a)try{a=a(t,e,r)}catch(t){a="error"}return!(!a||"ignore"===a)&&(!0===a||"error"===a||("warn"===a?("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+e+" ["+t+"]"),!1):("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+e+" ["+t+"]"),!1)))},e.isTrusted=function(t){t.url&&!t.protocol&&(t.protocol=c.protocolFromUrl(t.url));var e="function"==typeof this.trust?this.trust(t):this.trust;return Boolean(e)},t}(),p=function(){function t(t,e,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=t,this.size=e,this.cramped=r}var e=t.prototype;return e.sup=function(){return d[f[this.id]]},e.sub=function(){return d[g[this.id]]},e.fracNum=function(){return d[x[this.id]]},e.fracDen=function(){return d[v[this.id]]},e.cramp=function(){return d[b[this.id]]},e.text=function(){return d[y[this.id]]},e.isTight=function(){return this.size>=2},t}(),d=[new p(0,0,!1),new p(1,0,!0),new p(2,1,!1),new p(3,1,!0),new p(4,2,!1),new p(5,2,!0),new p(6,3,!1),new p(7,3,!0)],f=[4,5,4,5,6,7,6,7],g=[5,5,5,5,7,7,7,7],x=[2,3,4,5,6,7,6,7],v=[3,3,5,5,7,7,7,7],b=[1,1,3,3,5,5,7,7],y=[0,1,2,3,2,3,2,3],w={DISPLAY:d[0],TEXT:d[2],SCRIPT:d[4],SCRIPTSCRIPT:d[6]},k=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];var S=[];function M(t){for(var e=0;e<S.length;e+=2)if(t>=S[e]&&t<=S[e+1])return!0;return!1}k.forEach(function(t){return t.blocks.forEach(function(t){return S.push.apply(S,t)})});var z={doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"},A=function(){function t(t){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=t,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}var e=t.prototype;return e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){for(var t=document.createDocumentFragment(),e=0;e<this.children.length;e++)t.appendChild(this.children[e].toNode());return t},e.toMarkup=function(){for(var t="",e=0;e<this.children.length;e++)t+=this.children[e].toMarkup();return t},e.toText=function(){var t=function(t){return t.toText()};return this.children.map(t).join("")},t}(),T=function(t){return t.filter(function(t){return t}).join(" ")},B=function(t,e,r){if(this.classes=t||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},e){e.style.isTight()&&this.classes.push("mtight");var a=e.getColor();a&&(this.style.color=a)}},C=function(t){var e=document.createElement(t);for(var r in e.className=T(this.classes),this.style)this.style.hasOwnProperty(r)&&(e.style[r]=this.style[r]);for(var a in this.attributes)this.attributes.hasOwnProperty(a)&&e.setAttribute(a,this.attributes[a]);for(var n=0;n<this.children.length;n++)e.appendChild(this.children[n].toNode());return e},q=function(t){var e="<"+t;this.classes.length&&(e+=' class="'+c.escape(T(this.classes))+'"');var r="";for(var a in this.style)this.style.hasOwnProperty(a)&&(r+=c.hyphenate(a)+":"+this.style[a]+";");for(var n in r&&(e+=' style="'+c.escape(r)+'"'),this.attributes)this.attributes.hasOwnProperty(n)&&(e+=" "+n+'="'+c.escape(this.attributes[n])+'"');e+=">";for(var i=0;i<this.children.length;i++)e+=this.children[i].toMarkup();return e+="</"+t+">"},N=function(){function t(t,e,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,B.call(this,t,r,a),this.children=e||[]}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){return C.call(this,"span")},e.toMarkup=function(){return q.call(this,"span")},t}(),I=function(){function t(t,e,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,B.call(this,e,a),this.children=r||[],this.setAttribute("href",t)}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){return C.call(this,"a")},e.toMarkup=function(){return q.call(this,"a")},t}(),R=function(){function t(t,e,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=e,this.src=t,this.classes=["mord"],this.style=r}var e=t.prototype;return e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){var t=document.createElement("img");for(var e in t.src=this.src,t.alt=this.alt,t.className="mord",this.style)this.style.hasOwnProperty(e)&&(t.style[e]=this.style[e]);return t},e.toMarkup=function(){var t="<img  src='"+this.src+" 'alt='"+this.alt+"' ",e="";for(var r in this.style)this.style.hasOwnProperty(r)&&(e+=c.hyphenate(r)+":"+this.style[r]+";");return e&&(t+=' style="'+c.escape(e)+'"'),t+="'/>"},t}(),O={"\xee":"\u0131\u0302","\xef":"\u0131\u0308","\xed":"\u0131\u0301","\xec":"\u0131\u0300"},E=function(){function t(t,e,r,a,n,i,o,s){this.text=void 0,this.height=void 0,this.depth=void 0,this.italic=void 0,this.skew=void 0,this.width=void 0,this.maxFontSize=void 0,this.classes=void 0,this.style=void 0,this.text=t,this.height=e||0,this.depth=r||0,this.italic=a||0,this.skew=n||0,this.width=i||0,this.classes=o||[],this.style=s||{},this.maxFontSize=0;var h=function(t){for(var e=0;e<k.length;e++)for(var r=k[e],a=0;a<r.blocks.length;a++){var n=r.blocks[a];if(t>=n[0]&&t<=n[1])return r.name}return null}(this.text.charCodeAt(0));h&&this.classes.push(h+"_fallback"),/[\xee\xef\xed\xec]/.test(this.text)&&(this.text=O[this.text])}var e=t.prototype;return e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){var t=document.createTextNode(this.text),e=null;for(var r in this.italic>0&&((e=document.createElement("span")).style.marginRight=this.italic+"em"),this.classes.length>0&&((e=e||document.createElement("span")).className=T(this.classes)),this.style)this.style.hasOwnProperty(r)&&((e=e||document.createElement("span")).style[r]=this.style[r]);return e?(e.appendChild(t),e):t},e.toMarkup=function(){var t=!1,e="<span";this.classes.length&&(t=!0,e+=' class="',e+=c.escape(T(this.classes)),e+='"');var r="";for(var a in this.italic>0&&(r+="margin-right:"+this.italic+"em;"),this.style)this.style.hasOwnProperty(a)&&(r+=c.hyphenate(a)+":"+this.style[a]+";");r&&(t=!0,e+=' style="'+c.escape(r)+'"');var n=c.escape(this.text);return t?(e+=">",e+=n,e+="</span>"):n},t}(),L=function(){function t(t,e){this.children=void 0,this.attributes=void 0,this.children=t||[],this.attributes=e||{}}var e=t.prototype;return e.toNode=function(){var t=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(var r=0;r<this.children.length;r++)t.appendChild(this.children[r].toNode());return t},e.toMarkup=function(){var t="<svg";for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&(t+=" "+e+"='"+this.attributes[e]+"'");t+=">";for(var r=0;r<this.children.length;r++)t+=this.children[r].toMarkup();return t+="</svg>"},t}(),H=function(){function t(t,e){this.pathName=void 0,this.alternate=void 0,this.pathName=t,this.alternate=e}var e=t.prototype;return e.toNode=function(){var t=document.createElementNS("http://www.w3.org/2000/svg","path");return this.alternate?t.setAttribute("d",this.alternate):t.setAttribute("d",z[this.pathName]),t},e.toMarkup=function(){return this.alternate?"<path d='"+this.alternate+"'/>":"<path d='"+z[this.pathName]+"'/>"},t}(),P=function(){function t(t){this.attributes=void 0,this.attributes=t||{}}var e=t.prototype;return e.toNode=function(){var t=document.createElementNS("http://www.w3.org/2000/svg","line");for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);return t},e.toMarkup=function(){var t="<line";for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&(t+=" "+e+"='"+this.attributes[e]+"'");return t+="/>"},t}();function D(t){if(t instanceof E)return t;throw new Error("Expected symbolNode but got "+String(t)+".")}var F={"AMS-Regular":{65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473]},"Fraktur-Regular":{33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],163:[0,.69444,0,0,.86853],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],163:[0,.69444,0,0,.76909],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],305:[0,.43056,0,.02778,.32246],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],567:[.19444,.43056,0,.08334,.38403],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.12,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,1],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.67,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.9,0,0,.278],8943:[-.19,.31,0,0,1.172],8945:[-.1,.82,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.744,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.744,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333]},"Math-Italic":{65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059]},"Math-Regular":{65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059]},"SansSerif-Bold":{33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212]},"Size1-Regular":{40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},V={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},U={"\xc5":"A","\xc7":"C","\xd0":"D","\xde":"o","\xe5":"a","\xe7":"c","\xf0":"d","\xfe":"o","\u0410":"A","\u0411":"B","\u0412":"B","\u0413":"F","\u0414":"A","\u0415":"E","\u0416":"K","\u0417":"3","\u0418":"N","\u0419":"N","\u041a":"K","\u041b":"N","\u041c":"M","\u041d":"H","\u041e":"O","\u041f":"N","\u0420":"P","\u0421":"C","\u0422":"T","\u0423":"y","\u0424":"O","\u0425":"X","\u0426":"U","\u0427":"h","\u0428":"W","\u0429":"W","\u042a":"B","\u042b":"X","\u042c":"B","\u042d":"3","\u042e":"X","\u042f":"R","\u0430":"a","\u0431":"b","\u0432":"a","\u0433":"r","\u0434":"y","\u0435":"e","\u0436":"m","\u0437":"e","\u0438":"n","\u0439":"n","\u043a":"n","\u043b":"n","\u043c":"m","\u043d":"n","\u043e":"o","\u043f":"n","\u0440":"p","\u0441":"c","\u0442":"o","\u0443":"y","\u0444":"b","\u0445":"x","\u0446":"n","\u0447":"n","\u0448":"w","\u0449":"w","\u044a":"a","\u044b":"m","\u044c":"a","\u044d":"e","\u044e":"m","\u044f":"r"};function G(t,e,r){if(!F[e])throw new Error("Font metrics not found for font: "+e+".");var a=t.charCodeAt(0),n=F[e][a];if(!n&&t[0]in U&&(a=U[t[0]].charCodeAt(0),n=F[e][a]),n||"text"!==r||M(a)&&(n=F[e][77]),n)return{depth:n[0],height:n[1],italic:n[2],skew:n[3],width:n[4]}}var Y={};var W={bin:1,close:1,inner:1,open:1,punct:1,rel:1},X={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},_={math:{},text:{}},j=_;function $(t,e,r,a,n,i){_[t][n]={font:e,group:r,replace:a},i&&a&&(_[t][a]=_[t][n])}var Z="main",K="ams",J="bin",Q="mathord",tt="op-token",et="rel";$("math",Z,et,"\u2261","\\equiv",!0),$("math",Z,et,"\u227a","\\prec",!0),$("math",Z,et,"\u227b","\\succ",!0),$("math",Z,et,"\u223c","\\sim",!0),$("math",Z,et,"\u22a5","\\perp"),$("math",Z,et,"\u2aaf","\\preceq",!0),$("math",Z,et,"\u2ab0","\\succeq",!0),$("math",Z,et,"\u2243","\\simeq",!0),$("math",Z,et,"\u2223","\\mid",!0),$("math",Z,et,"\u226a","\\ll",!0),$("math",Z,et,"\u226b","\\gg",!0),$("math",Z,et,"\u224d","\\asymp",!0),$("math",Z,et,"\u2225","\\parallel"),$("math",Z,et,"\u22c8","\\bowtie",!0),$("math",Z,et,"\u2323","\\smile",!0),$("math",Z,et,"\u2291","\\sqsubseteq",!0),$("math",Z,et,"\u2292","\\sqsupseteq",!0),$("math",Z,et,"\u2250","\\doteq",!0),$("math",Z,et,"\u2322","\\frown",!0),$("math",Z,et,"\u220b","\\ni",!0),$("math",Z,et,"\u221d","\\propto",!0),$("math",Z,et,"\u22a2","\\vdash",!0),$("math",Z,et,"\u22a3","\\dashv",!0),$("math",Z,et,"\u220b","\\owns"),$("math",Z,"punct",".","\\ldotp"),$("math",Z,"punct","\u22c5","\\cdotp"),$("math",Z,"textord","#","\\#"),$("text",Z,"textord","#","\\#"),$("math",Z,"textord","&","\\&"),$("text",Z,"textord","&","\\&"),$("math",Z,"textord","\u2135","\\aleph",!0),$("math",Z,"textord","\u2200","\\forall",!0),$("math",Z,"textord","\u210f","\\hbar",!0),$("math",Z,"textord","\u2203","\\exists",!0),$("math",Z,"textord","\u2207","\\nabla",!0),$("math",Z,"textord","\u266d","\\flat",!0),$("math",Z,"textord","\u2113","\\ell",!0),$("math",Z,"textord","\u266e","\\natural",!0),$("math",Z,"textord","\u2663","\\clubsuit",!0),$("math",Z,"textord","\u2118","\\wp",!0),$("math",Z,"textord","\u266f","\\sharp",!0),$("math",Z,"textord","\u2662","\\diamondsuit",!0),$("math",Z,"textord","\u211c","\\Re",!0),$("math",Z,"textord","\u2661","\\heartsuit",!0),$("math",Z,"textord","\u2111","\\Im",!0),$("math",Z,"textord","\u2660","\\spadesuit",!0),$("text",Z,"textord","\xa7","\\S",!0),$("text",Z,"textord","\xb6","\\P",!0),$("math",Z,"textord","\u2020","\\dag"),$("text",Z,"textord","\u2020","\\dag"),$("text",Z,"textord","\u2020","\\textdagger"),$("math",Z,"textord","\u2021","\\ddag"),$("text",Z,"textord","\u2021","\\ddag"),$("text",Z,"textord","\u2021","\\textdaggerdbl"),$("math",Z,"close","\u23b1","\\rmoustache",!0),$("math",Z,"open","\u23b0","\\lmoustache",!0),$("math",Z,"close","\u27ef","\\rgroup",!0),$("math",Z,"open","\u27ee","\\lgroup",!0),$("math",Z,J,"\u2213","\\mp",!0),$("math",Z,J,"\u2296","\\ominus",!0),$("math",Z,J,"\u228e","\\uplus",!0),$("math",Z,J,"\u2293","\\sqcap",!0),$("math",Z,J,"\u2217","\\ast"),$("math",Z,J,"\u2294","\\sqcup",!0),$("math",Z,J,"\u25ef","\\bigcirc"),$("math",Z,J,"\u2219","\\bullet"),$("math",Z,J,"\u2021","\\ddagger"),$("math",Z,J,"\u2240","\\wr",!0),$("math",Z,J,"\u2a3f","\\amalg"),$("math",Z,J,"&","\\And"),$("math",Z,et,"\u27f5","\\longleftarrow",!0),$("math",Z,et,"\u21d0","\\Leftarrow",!0),$("math",Z,et,"\u27f8","\\Longleftarrow",!0),$("math",Z,et,"\u27f6","\\longrightarrow",!0),$("math",Z,et,"\u21d2","\\Rightarrow",!0),$("math",Z,et,"\u27f9","\\Longrightarrow",!0),$("math",Z,et,"\u2194","\\leftrightarrow",!0),$("math",Z,et,"\u27f7","\\longleftrightarrow",!0),$("math",Z,et,"\u21d4","\\Leftrightarrow",!0),$("math",Z,et,"\u27fa","\\Longleftrightarrow",!0),$("math",Z,et,"\u21a6","\\mapsto",!0),$("math",Z,et,"\u27fc","\\longmapsto",!0),$("math",Z,et,"\u2197","\\nearrow",!0),$("math",Z,et,"\u21a9","\\hookleftarrow",!0),$("math",Z,et,"\u21aa","\\hookrightarrow",!0),$("math",Z,et,"\u2198","\\searrow",!0),$("math",Z,et,"\u21bc","\\leftharpoonup",!0),$("math",Z,et,"\u21c0","\\rightharpoonup",!0),$("math",Z,et,"\u2199","\\swarrow",!0),$("math",Z,et,"\u21bd","\\leftharpoondown",!0),$("math",Z,et,"\u21c1","\\rightharpoondown",!0),$("math",Z,et,"\u2196","\\nwarrow",!0),$("math",Z,et,"\u21cc","\\rightleftharpoons",!0),$("math",K,et,"\u226e","\\nless",!0),$("math",K,et,"\ue010","\\@nleqslant"),$("math",K,et,"\ue011","\\@nleqq"),$("math",K,et,"\u2a87","\\lneq",!0),$("math",K,et,"\u2268","\\lneqq",!0),$("math",K,et,"\ue00c","\\@lvertneqq"),$("math",K,et,"\u22e6","\\lnsim",!0),$("math",K,et,"\u2a89","\\lnapprox",!0),$("math",K,et,"\u2280","\\nprec",!0),$("math",K,et,"\u22e0","\\npreceq",!0),$("math",K,et,"\u22e8","\\precnsim",!0),$("math",K,et,"\u2ab9","\\precnapprox",!0),$("math",K,et,"\u2241","\\nsim",!0),$("math",K,et,"\ue006","\\@nshortmid"),$("math",K,et,"\u2224","\\nmid",!0),$("math",K,et,"\u22ac","\\nvdash",!0),$("math",K,et,"\u22ad","\\nvDash",!0),$("math",K,et,"\u22ea","\\ntriangleleft"),$("math",K,et,"\u22ec","\\ntrianglelefteq",!0),$("math",K,et,"\u228a","\\subsetneq",!0),$("math",K,et,"\ue01a","\\@varsubsetneq"),$("math",K,et,"\u2acb","\\subsetneqq",!0),$("math",K,et,"\ue017","\\@varsubsetneqq"),$("math",K,et,"\u226f","\\ngtr",!0),$("math",K,et,"\ue00f","\\@ngeqslant"),$("math",K,et,"\ue00e","\\@ngeqq"),$("math",K,et,"\u2a88","\\gneq",!0),$("math",K,et,"\u2269","\\gneqq",!0),$("math",K,et,"\ue00d","\\@gvertneqq"),$("math",K,et,"\u22e7","\\gnsim",!0),$("math",K,et,"\u2a8a","\\gnapprox",!0),$("math",K,et,"\u2281","\\nsucc",!0),$("math",K,et,"\u22e1","\\nsucceq",!0),$("math",K,et,"\u22e9","\\succnsim",!0),$("math",K,et,"\u2aba","\\succnapprox",!0),$("math",K,et,"\u2246","\\ncong",!0),$("math",K,et,"\ue007","\\@nshortparallel"),$("math",K,et,"\u2226","\\nparallel",!0),$("math",K,et,"\u22af","\\nVDash",!0),$("math",K,et,"\u22eb","\\ntriangleright"),$("math",K,et,"\u22ed","\\ntrianglerighteq",!0),$("math",K,et,"\ue018","\\@nsupseteqq"),$("math",K,et,"\u228b","\\supsetneq",!0),$("math",K,et,"\ue01b","\\@varsupsetneq"),$("math",K,et,"\u2acc","\\supsetneqq",!0),$("math",K,et,"\ue019","\\@varsupsetneqq"),$("math",K,et,"\u22ae","\\nVdash",!0),$("math",K,et,"\u2ab5","\\precneqq",!0),$("math",K,et,"\u2ab6","\\succneqq",!0),$("math",K,et,"\ue016","\\@nsubseteqq"),$("math",K,J,"\u22b4","\\unlhd"),$("math",K,J,"\u22b5","\\unrhd"),$("math",K,et,"\u219a","\\nleftarrow",!0),$("math",K,et,"\u219b","\\nrightarrow",!0),$("math",K,et,"\u21cd","\\nLeftarrow",!0),$("math",K,et,"\u21cf","\\nRightarrow",!0),$("math",K,et,"\u21ae","\\nleftrightarrow",!0),$("math",K,et,"\u21ce","\\nLeftrightarrow",!0),$("math",K,et,"\u25b3","\\vartriangle"),$("math",K,"textord","\u210f","\\hslash"),$("math",K,"textord","\u25bd","\\triangledown"),$("math",K,"textord","\u25ca","\\lozenge"),$("math",K,"textord","\u24c8","\\circledS"),$("math",K,"textord","\xae","\\circledR"),$("text",K,"textord","\xae","\\circledR"),$("math",K,"textord","\u2221","\\measuredangle",!0),$("math",K,"textord","\u2204","\\nexists"),$("math",K,"textord","\u2127","\\mho"),$("math",K,"textord","\u2132","\\Finv",!0),$("math",K,"textord","\u2141","\\Game",!0),$("math",K,"textord","\u2035","\\backprime"),$("math",K,"textord","\u25b2","\\blacktriangle"),$("math",K,"textord","\u25bc","\\blacktriangledown"),$("math",K,"textord","\u25a0","\\blacksquare"),$("math",K,"textord","\u29eb","\\blacklozenge"),$("math",K,"textord","\u2605","\\bigstar"),$("math",K,"textord","\u2222","\\sphericalangle",!0),$("math",K,"textord","\u2201","\\complement",!0),$("math",K,"textord","\xf0","\\eth",!0),$("math",K,"textord","\u2571","\\diagup"),$("math",K,"textord","\u2572","\\diagdown"),$("math",K,"textord","\u25a1","\\square"),$("math",K,"textord","\u25a1","\\Box"),$("math",K,"textord","\u25ca","\\Diamond"),$("math",K,"textord","\xa5","\\yen",!0),$("text",K,"textord","\xa5","\\yen",!0),$("math",K,"textord","\u2713","\\checkmark",!0),$("text",K,"textord","\u2713","\\checkmark"),$("math",K,"textord","\u2136","\\beth",!0),$("math",K,"textord","\u2138","\\daleth",!0),$("math",K,"textord","\u2137","\\gimel",!0),$("math",K,"textord","\u03dd","\\digamma",!0),$("math",K,"textord","\u03f0","\\varkappa"),$("math",K,"open","\u250c","\\ulcorner",!0),$("math",K,"close","\u2510","\\urcorner",!0),$("math",K,"open","\u2514","\\llcorner",!0),$("math",K,"close","\u2518","\\lrcorner",!0),$("math",K,et,"\u2266","\\leqq",!0),$("math",K,et,"\u2a7d","\\leqslant",!0),$("math",K,et,"\u2a95","\\eqslantless",!0),$("math",K,et,"\u2272","\\lesssim",!0),$("math",K,et,"\u2a85","\\lessapprox",!0),$("math",K,et,"\u224a","\\approxeq",!0),$("math",K,J,"\u22d6","\\lessdot"),$("math",K,et,"\u22d8","\\lll",!0),$("math",K,et,"\u2276","\\lessgtr",!0),$("math",K,et,"\u22da","\\lesseqgtr",!0),$("math",K,et,"\u2a8b","\\lesseqqgtr",!0),$("math",K,et,"\u2251","\\doteqdot"),$("math",K,et,"\u2253","\\risingdotseq",!0),$("math",K,et,"\u2252","\\fallingdotseq",!0),$("math",K,et,"\u223d","\\backsim",!0),$("math",K,et,"\u22cd","\\backsimeq",!0),$("math",K,et,"\u2ac5","\\subseteqq",!0),$("math",K,et,"\u22d0","\\Subset",!0),$("math",K,et,"\u228f","\\sqsubset",!0),$("math",K,et,"\u227c","\\preccurlyeq",!0),$("math",K,et,"\u22de","\\curlyeqprec",!0),$("math",K,et,"\u227e","\\precsim",!0),$("math",K,et,"\u2ab7","\\precapprox",!0),$("math",K,et,"\u22b2","\\vartriangleleft"),$("math",K,et,"\u22b4","\\trianglelefteq"),$("math",K,et,"\u22a8","\\vDash",!0),$("math",K,et,"\u22aa","\\Vvdash",!0),$("math",K,et,"\u2323","\\smallsmile"),$("math",K,et,"\u2322","\\smallfrown"),$("math",K,et,"\u224f","\\bumpeq",!0),$("math",K,et,"\u224e","\\Bumpeq",!0),$("math",K,et,"\u2267","\\geqq",!0),$("math",K,et,"\u2a7e","\\geqslant",!0),$("math",K,et,"\u2a96","\\eqslantgtr",!0),$("math",K,et,"\u2273","\\gtrsim",!0),$("math",K,et,"\u2a86","\\gtrapprox",!0),$("math",K,J,"\u22d7","\\gtrdot"),$("math",K,et,"\u22d9","\\ggg",!0),$("math",K,et,"\u2277","\\gtrless",!0),$("math",K,et,"\u22db","\\gtreqless",!0),$("math",K,et,"\u2a8c","\\gtreqqless",!0),$("math",K,et,"\u2256","\\eqcirc",!0),$("math",K,et,"\u2257","\\circeq",!0),$("math",K,et,"\u225c","\\triangleq",!0),$("math",K,et,"\u223c","\\thicksim"),$("math",K,et,"\u2248","\\thickapprox"),$("math",K,et,"\u2ac6","\\supseteqq",!0),$("math",K,et,"\u22d1","\\Supset",!0),$("math",K,et,"\u2290","\\sqsupset",!0),$("math",K,et,"\u227d","\\succcurlyeq",!0),$("math",K,et,"\u22df","\\curlyeqsucc",!0),$("math",K,et,"\u227f","\\succsim",!0),$("math",K,et,"\u2ab8","\\succapprox",!0),$("math",K,et,"\u22b3","\\vartriangleright"),$("math",K,et,"\u22b5","\\trianglerighteq"),$("math",K,et,"\u22a9","\\Vdash",!0),$("math",K,et,"\u2223","\\shortmid"),$("math",K,et,"\u2225","\\shortparallel"),$("math",K,et,"\u226c","\\between",!0),$("math",K,et,"\u22d4","\\pitchfork",!0),$("math",K,et,"\u221d","\\varpropto"),$("math",K,et,"\u25c0","\\blacktriangleleft"),$("math",K,et,"\u2234","\\therefore",!0),$("math",K,et,"\u220d","\\backepsilon"),$("math",K,et,"\u25b6","\\blacktriangleright"),$("math",K,et,"\u2235","\\because",!0),$("math",K,et,"\u22d8","\\llless"),$("math",K,et,"\u22d9","\\gggtr"),$("math",K,J,"\u22b2","\\lhd"),$("math",K,J,"\u22b3","\\rhd"),$("math",K,et,"\u2242","\\eqsim",!0),$("math",Z,et,"\u22c8","\\Join"),$("math",K,et,"\u2251","\\Doteq",!0),$("math",K,J,"\u2214","\\dotplus",!0),$("math",K,J,"\u2216","\\smallsetminus"),$("math",K,J,"\u22d2","\\Cap",!0),$("math",K,J,"\u22d3","\\Cup",!0),$("math",K,J,"\u2a5e","\\doublebarwedge",!0),$("math",K,J,"\u229f","\\boxminus",!0),$("math",K,J,"\u229e","\\boxplus",!0),$("math",K,J,"\u22c7","\\divideontimes",!0),$("math",K,J,"\u22c9","\\ltimes",!0),$("math",K,J,"\u22ca","\\rtimes",!0),$("math",K,J,"\u22cb","\\leftthreetimes",!0),$("math",K,J,"\u22cc","\\rightthreetimes",!0),$("math",K,J,"\u22cf","\\curlywedge",!0),$("math",K,J,"\u22ce","\\curlyvee",!0),$("math",K,J,"\u229d","\\circleddash",!0),$("math",K,J,"\u229b","\\circledast",!0),$("math",K,J,"\u22c5","\\centerdot"),$("math",K,J,"\u22ba","\\intercal",!0),$("math",K,J,"\u22d2","\\doublecap"),$("math",K,J,"\u22d3","\\doublecup"),$("math",K,J,"\u22a0","\\boxtimes",!0),$("math",K,et,"\u21e2","\\dashrightarrow",!0),$("math",K,et,"\u21e0","\\dashleftarrow",!0),$("math",K,et,"\u21c7","\\leftleftarrows",!0),$("math",K,et,"\u21c6","\\leftrightarrows",!0),$("math",K,et,"\u21da","\\Lleftarrow",!0),$("math",K,et,"\u219e","\\twoheadleftarrow",!0),$("math",K,et,"\u21a2","\\leftarrowtail",!0),$("math",K,et,"\u21ab","\\looparrowleft",!0),$("math",K,et,"\u21cb","\\leftrightharpoons",!0),$("math",K,et,"\u21b6","\\curvearrowleft",!0),$("math",K,et,"\u21ba","\\circlearrowleft",!0),$("math",K,et,"\u21b0","\\Lsh",!0),$("math",K,et,"\u21c8","\\upuparrows",!0),$("math",K,et,"\u21bf","\\upharpoonleft",!0),$("math",K,et,"\u21c3","\\downharpoonleft",!0),$("math",K,et,"\u22b8","\\multimap",!0),$("math",K,et,"\u21ad","\\leftrightsquigarrow",!0),$("math",K,et,"\u21c9","\\rightrightarrows",!0),$("math",K,et,"\u21c4","\\rightleftarrows",!0),$("math",K,et,"\u21a0","\\twoheadrightarrow",!0),$("math",K,et,"\u21a3","\\rightarrowtail",!0),$("math",K,et,"\u21ac","\\looparrowright",!0),$("math",K,et,"\u21b7","\\curvearrowright",!0),$("math",K,et,"\u21bb","\\circlearrowright",!0),$("math",K,et,"\u21b1","\\Rsh",!0),$("math",K,et,"\u21ca","\\downdownarrows",!0),$("math",K,et,"\u21be","\\upharpoonright",!0),$("math",K,et,"\u21c2","\\downharpoonright",!0),$("math",K,et,"\u21dd","\\rightsquigarrow",!0),$("math",K,et,"\u21dd","\\leadsto"),$("math",K,et,"\u21db","\\Rrightarrow",!0),$("math",K,et,"\u21be","\\restriction"),$("math",Z,"textord","\u2018","`"),$("math",Z,"textord","$","\\$"),$("text",Z,"textord","$","\\$"),$("text",Z,"textord","$","\\textdollar"),$("math",Z,"textord","%","\\%"),$("text",Z,"textord","%","\\%"),$("math",Z,"textord","_","\\_"),$("text",Z,"textord","_","\\_"),$("text",Z,"textord","_","\\textunderscore"),$("math",Z,"textord","\u2220","\\angle",!0),$("math",Z,"textord","\u221e","\\infty",!0),$("math",Z,"textord","\u2032","\\prime"),$("math",Z,"textord","\u25b3","\\triangle"),$("math",Z,"textord","\u0393","\\Gamma",!0),$("math",Z,"textord","\u0394","\\Delta",!0),$("math",Z,"textord","\u0398","\\Theta",!0),$("math",Z,"textord","\u039b","\\Lambda",!0),$("math",Z,"textord","\u039e","\\Xi",!0),$("math",Z,"textord","\u03a0","\\Pi",!0),$("math",Z,"textord","\u03a3","\\Sigma",!0),$("math",Z,"textord","\u03a5","\\Upsilon",!0),$("math",Z,"textord","\u03a6","\\Phi",!0),$("math",Z,"textord","\u03a8","\\Psi",!0),$("math",Z,"textord","\u03a9","\\Omega",!0),$("math",Z,"textord","A","\u0391"),$("math",Z,"textord","B","\u0392"),$("math",Z,"textord","E","\u0395"),$("math",Z,"textord","Z","\u0396"),$("math",Z,"textord","H","\u0397"),$("math",Z,"textord","I","\u0399"),$("math",Z,"textord","K","\u039a"),$("math",Z,"textord","M","\u039c"),$("math",Z,"textord","N","\u039d"),$("math",Z,"textord","O","\u039f"),$("math",Z,"textord","P","\u03a1"),$("math",Z,"textord","T","\u03a4"),$("math",Z,"textord","X","\u03a7"),$("math",Z,"textord","\xac","\\neg",!0),$("math",Z,"textord","\xac","\\lnot"),$("math",Z,"textord","\u22a4","\\top"),$("math",Z,"textord","\u22a5","\\bot"),$("math",Z,"textord","\u2205","\\emptyset"),$("math",K,"textord","\u2205","\\varnothing"),$("math",Z,Q,"\u03b1","\\alpha",!0),$("math",Z,Q,"\u03b2","\\beta",!0),$("math",Z,Q,"\u03b3","\\gamma",!0),$("math",Z,Q,"\u03b4","\\delta",!0),$("math",Z,Q,"\u03f5","\\epsilon",!0),$("math",Z,Q,"\u03b6","\\zeta",!0),$("math",Z,Q,"\u03b7","\\eta",!0),$("math",Z,Q,"\u03b8","\\theta",!0),$("math",Z,Q,"\u03b9","\\iota",!0),$("math",Z,Q,"\u03ba","\\kappa",!0),$("math",Z,Q,"\u03bb","\\lambda",!0),$("math",Z,Q,"\u03bc","\\mu",!0),$("math",Z,Q,"\u03bd","\\nu",!0),$("math",Z,Q,"\u03be","\\xi",!0),$("math",Z,Q,"\u03bf","\\omicron",!0),$("math",Z,Q,"\u03c0","\\pi",!0),$("math",Z,Q,"\u03c1","\\rho",!0),$("math",Z,Q,"\u03c3","\\sigma",!0),$("math",Z,Q,"\u03c4","\\tau",!0),$("math",Z,Q,"\u03c5","\\upsilon",!0),$("math",Z,Q,"\u03d5","\\phi",!0),$("math",Z,Q,"\u03c7","\\chi",!0),$("math",Z,Q,"\u03c8","\\psi",!0),$("math",Z,Q,"\u03c9","\\omega",!0),$("math",Z,Q,"\u03b5","\\varepsilon",!0),$("math",Z,Q,"\u03d1","\\vartheta",!0),$("math",Z,Q,"\u03d6","\\varpi",!0),$("math",Z,Q,"\u03f1","\\varrho",!0),$("math",Z,Q,"\u03c2","\\varsigma",!0),$("math",Z,Q,"\u03c6","\\varphi",!0),$("math",Z,J,"\u2217","*"),$("math",Z,J,"+","+"),$("math",Z,J,"\u2212","-"),$("math",Z,J,"\u22c5","\\cdot",!0),$("math",Z,J,"\u2218","\\circ"),$("math",Z,J,"\xf7","\\div",!0),$("math",Z,J,"\xb1","\\pm",!0),$("math",Z,J,"\xd7","\\times",!0),$("math",Z,J,"\u2229","\\cap",!0),$("math",Z,J,"\u222a","\\cup",!0),$("math",Z,J,"\u2216","\\setminus"),$("math",Z,J,"\u2227","\\land"),$("math",Z,J,"\u2228","\\lor"),$("math",Z,J,"\u2227","\\wedge",!0),$("math",Z,J,"\u2228","\\vee",!0),$("math",Z,"textord","\u221a","\\surd"),$("math",Z,"open","(","("),$("math",Z,"open","[","["),$("math",Z,"open","\u27e8","\\langle",!0),$("math",Z,"open","\u2223","\\lvert"),$("math",Z,"open","\u2225","\\lVert"),$("math",Z,"close",")",")"),$("math",Z,"close","]","]"),$("math",Z,"close","?","?"),$("math",Z,"close","!","!"),$("math",Z,"close","\u27e9","\\rangle",!0),$("math",Z,"close","\u2223","\\rvert"),$("math",Z,"close","\u2225","\\rVert"),$("math",Z,et,"=","="),$("math",Z,et,"<","<"),$("math",Z,et,">",">"),$("math",Z,et,":",":"),$("math",Z,et,"\u2248","\\approx",!0),$("math",Z,et,"\u2245","\\cong",!0),$("math",Z,et,"\u2265","\\ge"),$("math",Z,et,"\u2265","\\geq",!0),$("math",Z,et,"\u2190","\\gets"),$("math",Z,et,">","\\gt"),$("math",Z,et,"\u2208","\\in",!0),$("math",Z,et,"\ue020","\\@not"),$("math",Z,et,"\u2282","\\subset",!0),$("math",Z,et,"\u2283","\\supset",!0),$("math",Z,et,"\u2286","\\subseteq",!0),$("math",Z,et,"\u2287","\\supseteq",!0),$("math",K,et,"\u2288","\\nsubseteq",!0),$("math",K,et,"\u2289","\\nsupseteq",!0),$("math",Z,et,"\u22a8","\\models"),$("math",Z,et,"\u2190","\\leftarrow",!0),$("math",Z,et,"\u2264","\\le"),$("math",Z,et,"\u2264","\\leq",!0),$("math",Z,et,"<","\\lt"),$("math",Z,et,"\u2192","\\rightarrow",!0),$("math",Z,et,"\u2192","\\to"),$("math",K,et,"\u2271","\\ngeq",!0),$("math",K,et,"\u2270","\\nleq",!0),$("math",Z,"spacing","\xa0","\\ "),$("math",Z,"spacing","\xa0","~"),$("math",Z,"spacing","\xa0","\\space"),$("math",Z,"spacing","\xa0","\\nobreakspace"),$("text",Z,"spacing","\xa0","\\ "),$("text",Z,"spacing","\xa0","~"),$("text",Z,"spacing","\xa0","\\space"),$("text",Z,"spacing","\xa0","\\nobreakspace"),$("math",Z,"spacing",null,"\\nobreak"),$("math",Z,"spacing",null,"\\allowbreak"),$("math",Z,"punct",",",","),$("math",Z,"punct",";",";"),$("math",K,J,"\u22bc","\\barwedge",!0),$("math",K,J,"\u22bb","\\veebar",!0),$("math",Z,J,"\u2299","\\odot",!0),$("math",Z,J,"\u2295","\\oplus",!0),$("math",Z,J,"\u2297","\\otimes",!0),$("math",Z,"textord","\u2202","\\partial",!0),$("math",Z,J,"\u2298","\\oslash",!0),$("math",K,J,"\u229a","\\circledcirc",!0),$("math",K,J,"\u22a1","\\boxdot",!0),$("math",Z,J,"\u25b3","\\bigtriangleup"),$("math",Z,J,"\u25bd","\\bigtriangledown"),$("math",Z,J,"\u2020","\\dagger"),$("math",Z,J,"\u22c4","\\diamond"),$("math",Z,J,"\u22c6","\\star"),$("math",Z,J,"\u25c3","\\triangleleft"),$("math",Z,J,"\u25b9","\\triangleright"),$("math",Z,"open","{","\\{"),$("text",Z,"textord","{","\\{"),$("text",Z,"textord","{","\\textbraceleft"),$("math",Z,"close","}","\\}"),$("text",Z,"textord","}","\\}"),$("text",Z,"textord","}","\\textbraceright"),$("math",Z,"open","{","\\lbrace"),$("math",Z,"close","}","\\rbrace"),$("math",Z,"open","[","\\lbrack"),$("text",Z,"textord","[","\\lbrack"),$("math",Z,"close","]","\\rbrack"),$("text",Z,"textord","]","\\rbrack"),$("math",Z,"open","(","\\lparen"),$("math",Z,"close",")","\\rparen"),$("text",Z,"textord","<","\\textless"),$("text",Z,"textord",">","\\textgreater"),$("math",Z,"open","\u230a","\\lfloor",!0),$("math",Z,"close","\u230b","\\rfloor",!0),$("math",Z,"open","\u2308","\\lceil",!0),$("math",Z,"close","\u2309","\\rceil",!0),$("math",Z,"textord","\\","\\backslash"),$("math",Z,"textord","\u2223","|"),$("math",Z,"textord","\u2223","\\vert"),$("text",Z,"textord","|","\\textbar"),$("math",Z,"textord","\u2225","\\|"),$("math",Z,"textord","\u2225","\\Vert"),$("text",Z,"textord","\u2225","\\textbardbl"),$("text",Z,"textord","~","\\textasciitilde"),$("text",Z,"textord","\\","\\textbackslash"),$("text",Z,"textord","^","\\textasciicircum"),$("math",Z,et,"\u2191","\\uparrow",!0),$("math",Z,et,"\u21d1","\\Uparrow",!0),$("math",Z,et,"\u2193","\\downarrow",!0),$("math",Z,et,"\u21d3","\\Downarrow",!0),$("math",Z,et,"\u2195","\\updownarrow",!0),$("math",Z,et,"\u21d5","\\Updownarrow",!0),$("math",Z,tt,"\u2210","\\coprod"),$("math",Z,tt,"\u22c1","\\bigvee"),$("math",Z,tt,"\u22c0","\\bigwedge"),$("math",Z,tt,"\u2a04","\\biguplus"),$("math",Z,tt,"\u22c2","\\bigcap"),$("math",Z,tt,"\u22c3","\\bigcup"),$("math",Z,tt,"\u222b","\\int"),$("math",Z,tt,"\u222b","\\intop"),$("math",Z,tt,"\u222c","\\iint"),$("math",Z,tt,"\u222d","\\iiint"),$("math",Z,tt,"\u220f","\\prod"),$("math",Z,tt,"\u2211","\\sum"),$("math",Z,tt,"\u2a02","\\bigotimes"),$("math",Z,tt,"\u2a01","\\bigoplus"),$("math",Z,tt,"\u2a00","\\bigodot"),$("math",Z,tt,"\u222e","\\oint"),$("math",Z,tt,"\u222f","\\oiint"),$("math",Z,tt,"\u2230","\\oiiint"),$("math",Z,tt,"\u2a06","\\bigsqcup"),$("math",Z,tt,"\u222b","\\smallint"),$("text",Z,"inner","\u2026","\\textellipsis"),$("math",Z,"inner","\u2026","\\mathellipsis"),$("text",Z,"inner","\u2026","\\ldots",!0),$("math",Z,"inner","\u2026","\\ldots",!0),$("math",Z,"inner","\u22ef","\\@cdots",!0),$("math",Z,"inner","\u22f1","\\ddots",!0),$("math",Z,"textord","\u22ee","\\varvdots"),$("math",Z,"accent-token","\u02ca","\\acute"),$("math",Z,"accent-token","\u02cb","\\grave"),$("math",Z,"accent-token","\xa8","\\ddot"),$("math",Z,"accent-token","~","\\tilde"),$("math",Z,"accent-token","\u02c9","\\bar"),$("math",Z,"accent-token","\u02d8","\\breve"),$("math",Z,"accent-token","\u02c7","\\check"),$("math",Z,"accent-token","^","\\hat"),$("math",Z,"accent-token","\u20d7","\\vec"),$("math",Z,"accent-token","\u02d9","\\dot"),$("math",Z,"accent-token","\u02da","\\mathring"),$("math",Z,Q,"\u0131","\\imath",!0),$("math",Z,Q,"\u0237","\\jmath",!0),$("text",Z,"textord","\u0131","\\i",!0),$("text",Z,"textord","\u0237","\\j",!0),$("text",Z,"textord","\xdf","\\ss",!0),$("text",Z,"textord","\xe6","\\ae",!0),$("text",Z,"textord","\xe6","\\ae",!0),$("text",Z,"textord","\u0153","\\oe",!0),$("text",Z,"textord","\xf8","\\o",!0),$("text",Z,"textord","\xc6","\\AE",!0),$("text",Z,"textord","\u0152","\\OE",!0),$("text",Z,"textord","\xd8","\\O",!0),$("text",Z,"accent-token","\u02ca","\\'"),$("text",Z,"accent-token","\u02cb","\\`"),$("text",Z,"accent-token","\u02c6","\\^"),$("text",Z,"accent-token","\u02dc","\\~"),$("text",Z,"accent-token","\u02c9","\\="),$("text",Z,"accent-token","\u02d8","\\u"),$("text",Z,"accent-token","\u02d9","\\."),$("text",Z,"accent-token","\u02da","\\r"),$("text",Z,"accent-token","\u02c7","\\v"),$("text",Z,"accent-token","\xa8",'\\"'),$("text",Z,"accent-token","\u02dd","\\H"),$("text",Z,"accent-token","\u25ef","\\textcircled");var rt={"--":!0,"---":!0,"``":!0,"''":!0};$("text",Z,"textord","\u2013","--"),$("text",Z,"textord","\u2013","\\textendash"),$("text",Z,"textord","\u2014","---"),$("text",Z,"textord","\u2014","\\textemdash"),$("text",Z,"textord","\u2018","`"),$("text",Z,"textord","\u2018","\\textquoteleft"),$("text",Z,"textord","\u2019","'"),$("text",Z,"textord","\u2019","\\textquoteright"),$("text",Z,"textord","\u201c","``"),$("text",Z,"textord","\u201c","\\textquotedblleft"),$("text",Z,"textord","\u201d","''"),$("text",Z,"textord","\u201d","\\textquotedblright"),$("math",Z,"textord","\xb0","\\degree",!0),$("text",Z,"textord","\xb0","\\degree"),$("text",Z,"textord","\xb0","\\textdegree",!0),$("math",Z,Q,"\xa3","\\pounds"),$("math",Z,Q,"\xa3","\\mathsterling",!0),$("text",Z,Q,"\xa3","\\pounds"),$("text",Z,Q,"\xa3","\\textsterling",!0),$("math",K,"textord","\u2720","\\maltese"),$("text",K,"textord","\u2720","\\maltese"),$("text",Z,"spacing","\xa0","\\ "),$("text",Z,"spacing","\xa0"," "),$("text",Z,"spacing","\xa0","~");for(var at=0;at<'0123456789/@."'.length;at++){var nt='0123456789/@."'.charAt(at);$("math",Z,"textord",nt,nt)}for(var it=0;it<'0123456789!@*()-=+[]<>|";:?/.,'.length;it++){var ot='0123456789!@*()-=+[]<>|";:?/.,'.charAt(it);$("text",Z,"textord",ot,ot)}for(var st="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",ht=0;ht<st.length;ht++){var lt=st.charAt(ht);$("math",Z,Q,lt,lt),$("text",Z,"textord",lt,lt)}$("math",K,"textord","C","\u2102"),$("text",K,"textord","C","\u2102"),$("math",K,"textord","H","\u210d"),$("text",K,"textord","H","\u210d"),$("math",K,"textord","N","\u2115"),$("text",K,"textord","N","\u2115"),$("math",K,"textord","P","\u2119"),$("text",K,"textord","P","\u2119"),$("math",K,"textord","Q","\u211a"),$("text",K,"textord","Q","\u211a"),$("math",K,"textord","R","\u211d"),$("text",K,"textord","R","\u211d"),$("math",K,"textord","Z","\u2124"),$("text",K,"textord","Z","\u2124"),$("math",Z,Q,"h","\u210e"),$("text",Z,Q,"h","\u210e");for(var mt="",ct=0;ct<st.length;ct++){var ut=st.charAt(ct);$("math",Z,Q,ut,mt=String.fromCharCode(55349,56320+ct)),$("text",Z,"textord",ut,mt),$("math",Z,Q,ut,mt=String.fromCharCode(55349,56372+ct)),$("text",Z,"textord",ut,mt),$("math",Z,Q,ut,mt=String.fromCharCode(55349,56424+ct)),$("text",Z,"textord",ut,mt),$("math",Z,Q,ut,mt=String.fromCharCode(55349,56580+ct)),$("text",Z,"textord",ut,mt),$("math",Z,Q,ut,mt=String.fromCharCode(55349,56736+ct)),$("text",Z,"textord",ut,mt),$("math",Z,Q,ut,mt=String.fromCharCode(55349,56788+ct)),$("text",Z,"textord",ut,mt),$("math",Z,Q,ut,mt=String.fromCharCode(55349,56840+ct)),$("text",Z,"textord",ut,mt),$("math",Z,Q,ut,mt=String.fromCharCode(55349,56944+ct)),$("text",Z,"textord",ut,mt),ct<26&&($("math",Z,Q,ut,mt=String.fromCharCode(55349,56632+ct)),$("text",Z,"textord",ut,mt),$("math",Z,Q,ut,mt=String.fromCharCode(55349,56476+ct)),$("text",Z,"textord",ut,mt))}$("math",Z,Q,"k",mt=String.fromCharCode(55349,56668)),$("text",Z,"textord","k",mt);for(var pt=0;pt<10;pt++){var dt=pt.toString();$("math",Z,Q,dt,mt=String.fromCharCode(55349,57294+pt)),$("text",Z,"textord",dt,mt),$("math",Z,Q,dt,mt=String.fromCharCode(55349,57314+pt)),$("text",Z,"textord",dt,mt),$("math",Z,Q,dt,mt=String.fromCharCode(55349,57324+pt)),$("text",Z,"textord",dt,mt),$("math",Z,Q,dt,mt=String.fromCharCode(55349,57334+pt)),$("text",Z,"textord",dt,mt)}for(var ft=0;ft<"\xc7\xd0\xde\xe7\xfe".length;ft++){var gt="\xc7\xd0\xde\xe7\xfe".charAt(ft);$("math",Z,Q,gt,gt),$("text",Z,"textord",gt,gt)}$("text",Z,"textord","\xf0","\xf0"),$("text",Z,"textord","\u2013","\u2013"),$("text",Z,"textord","\u2014","\u2014"),$("text",Z,"textord","\u2018","\u2018"),$("text",Z,"textord","\u2019","\u2019"),$("text",Z,"textord","\u201c","\u201c"),$("text",Z,"textord","\u201d","\u201d");var xt=[["mathbf","textbf","Main-Bold"],["mathbf","textbf","Main-Bold"],["mathdefault","textit","Math-Italic"],["mathdefault","textit","Math-Italic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["mathscr","textscr","Script-Regular"],["","",""],["","",""],["","",""],["mathfrak","textfrak","Fraktur-Regular"],["mathfrak","textfrak","Fraktur-Regular"],["mathbb","textbb","AMS-Regular"],["mathbb","textbb","AMS-Regular"],["","",""],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathitsf","textitsf","SansSerif-Italic"],["mathitsf","textitsf","SansSerif-Italic"],["","",""],["","",""],["mathtt","texttt","Typewriter-Regular"],["mathtt","texttt","Typewriter-Regular"]],vt=[["mathbf","textbf","Main-Bold"],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathtt","texttt","Typewriter-Regular"]],bt=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],yt=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],wt=function(t,e){return e.size<2?t:bt[t-1][e.size-1]},kt=function(){function t(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||t.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=yt[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}var e=t.prototype;return e.extend=function(e){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var a in e)e.hasOwnProperty(a)&&(r[a]=e[a]);return new t(r)},e.havingStyle=function(t){return this.style===t?this:this.extend({style:t,size:wt(this.textSize,t)})},e.havingCrampedStyle=function(){return this.havingStyle(this.style.cramp())},e.havingSize=function(t){return this.size===t&&this.textSize===t?this:this.extend({style:this.style.text(),size:t,textSize:t,sizeMultiplier:yt[t-1]})},e.havingBaseStyle=function(e){e=e||this.style.text();var r=wt(t.BASESIZE,e);return this.size===r&&this.textSize===t.BASESIZE&&this.style===e?this:this.extend({style:e,size:r})},e.havingBaseSizing=function(){var t;switch(this.style.id){case 4:case 5:t=3;break;case 6:case 7:t=1;break;default:t=6}return this.extend({style:this.style.text(),size:t})},e.withColor=function(t){return this.extend({color:t})},e.withPhantom=function(){return this.extend({phantom:!0})},e.withFont=function(t){return this.extend({font:t})},e.withTextFontFamily=function(t){return this.extend({fontFamily:t,font:""})},e.withTextFontWeight=function(t){return this.extend({fontWeight:t,font:""})},e.withTextFontShape=function(t){return this.extend({fontShape:t,font:""})},e.sizingClasses=function(t){return t.size!==this.size?["sizing","reset-size"+t.size,"size"+this.size]:[]},e.baseSizingClasses=function(){return this.size!==t.BASESIZE?["sizing","reset-size"+this.size,"size"+t.BASESIZE]:[]},e.fontMetrics=function(){return this._fontMetrics||(this._fontMetrics=function(t){var e;if(!Y[e=t>=5?0:t>=3?1:2]){var r=Y[e]={cssEmPerMu:V.quad[e]/18};for(var a in V)V.hasOwnProperty(a)&&(r[a]=V[a][e])}return Y[e]}(this.size)),this._fontMetrics},e.getColor=function(){return this.phantom?"transparent":this.color},t}();kt.BASESIZE=6;var St=kt,Mt={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},zt={ex:!0,em:!0,mu:!0},At=function(t){return"string"!=typeof t&&(t=t.unit),t in Mt||t in zt||"ex"===t},Tt=function(t,e){var r;if(t.unit in Mt)r=Mt[t.unit]/e.fontMetrics().ptPerEm/e.sizeMultiplier;else if("mu"===t.unit)r=e.fontMetrics().cssEmPerMu;else{var a;if(a=e.style.isTight()?e.havingStyle(e.style.text()):e,"ex"===t.unit)r=a.fontMetrics().xHeight;else{if("em"!==t.unit)throw new o("Invalid unit: '"+t.unit+"'");r=a.fontMetrics().quad}a!==e&&(r*=a.sizeMultiplier/e.sizeMultiplier)}return Math.min(t.number*r,e.maxSize)},Bt=["\\imath","\u0131","\\jmath","\u0237","\\pounds","\\mathsterling","\\textsterling","\xa3"],Ct=function(t,e,r){return j[r][t]&&j[r][t].replace&&(t=j[r][t].replace),{value:t,metrics:G(t,e,r)}},qt=function(t,e,r,a,n){var i,o=Ct(t,e,r),s=o.metrics;if(t=o.value,s){var h=s.italic;("text"===r||a&&"mathit"===a.font)&&(h=0),i=new E(t,s.height,s.depth,h,s.skew,s.width,n)}else"undefined"!=typeof console&&console.warn("No character metrics for '"+t+"' in style '"+e+"' and mode '"+r+"'"),i=new E(t,0,0,0,0,0,n);if(a){i.maxFontSize=a.sizeMultiplier,a.style.isTight()&&i.classes.push("mtight");var l=a.getColor();l&&(i.style.color=l)}return i},Nt=function(t,e){if(T(t.classes)!==T(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;for(var r in t.style)if(t.style.hasOwnProperty(r)&&t.style[r]!==e.style[r])return!1;for(var a in e.style)if(e.style.hasOwnProperty(a)&&t.style[a]!==e.style[a])return!1;return!0},It=function(t){for(var e=0,r=0,a=0,n=0;n<t.children.length;n++){var i=t.children[n];i.height>e&&(e=i.height),i.depth>r&&(r=i.depth),i.maxFontSize>a&&(a=i.maxFontSize)}t.height=e,t.depth=r,t.maxFontSize=a},Rt=function(t,e,r,a){var n=new N(t,e,r,a);return It(n),n},Ot=function(t,e,r,a){return new N(t,e,r,a)},Et=function(t){var e=new A(t);return It(e),e},Lt=function(t,e,r){var a="";switch(t){case"amsrm":a="AMS";break;case"textrm":a="Main";break;case"textsf":a="SansSerif";break;case"texttt":a="Typewriter";break;default:a=t}return a+"-"+("textbf"===e&&"textit"===r?"BoldItalic":"textbf"===e?"Bold":"textit"===e?"Italic":"Regular")},Ht={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Pt={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Dt={fontMap:Ht,makeSymbol:qt,mathsym:function(t,e,r,a){return void 0===a&&(a=[]),"boldsymbol"===r.font&&Ct(t,"Main-Bold",e).metrics?qt(t,"Main-Bold",e,r,a.concat(["mathbf"])):"\\"===t||"main"===j[e][t].font?qt(t,"Main-Regular",e,r,a):qt(t,"AMS-Regular",e,r,a.concat(["amsrm"]))},makeSpan:Rt,makeSvgSpan:Ot,makeLineSpan:function(t,e,r){var a=Rt([t],[],e);return a.height=Math.max(r||e.fontMetrics().defaultRuleThickness,e.minRuleThickness),a.style.borderBottomWidth=a.height+"em",a.maxFontSize=1,a},makeAnchor:function(t,e,r,a){var n=new I(t,e,r,a);return It(n),n},makeFragment:Et,wrapFragment:function(t,e){return t instanceof A?Rt([],[t],e):t},makeVList:function(t,e){for(var r=function(t){if("individualShift"===t.positionType){for(var e=t.children,r=[e[0]],a=-e[0].shift-e[0].elem.depth,n=a,i=1;i<e.length;i++){var o=-e[i].shift-n-e[i].elem.depth,s=o-(e[i-1].elem.height+e[i-1].elem.depth);n+=o,r.push({type:"kern",size:s}),r.push(e[i])}return{children:r,depth:a}}var h;if("top"===t.positionType){for(var l=t.positionData,m=0;m<t.children.length;m++){var c=t.children[m];l-="kern"===c.type?c.size:c.elem.height+c.elem.depth}h=l}else if("bottom"===t.positionType)h=-t.positionData;else{var u=t.children[0];if("elem"!==u.type)throw new Error('First child must have type "elem".');if("shift"===t.positionType)h=-u.elem.depth-t.positionData;else{if("firstBaseline"!==t.positionType)throw new Error("Invalid positionType "+t.positionType+".");h=-u.elem.depth}}return{children:t.children,depth:h}}(t),a=r.children,n=r.depth,i=0,o=0;o<a.length;o++){var s=a[o];if("elem"===s.type){var h=s.elem;i=Math.max(i,h.maxFontSize,h.height)}}i+=2;var l=Rt(["pstrut"],[]);l.style.height=i+"em";for(var m=[],c=n,u=n,p=n,d=0;d<a.length;d++){var f=a[d];if("kern"===f.type)p+=f.size;else{var g=f.elem,x=f.wrapperClasses||[],v=f.wrapperStyle||{},b=Rt(x,[l,g],void 0,v);b.style.top=-i-p-g.depth+"em",f.marginLeft&&(b.style.marginLeft=f.marginLeft),f.marginRight&&(b.style.marginRight=f.marginRight),m.push(b),p+=g.height+g.depth}c=Math.min(c,p),u=Math.max(u,p)}var y,w=Rt(["vlist"],m);if(w.style.height=u+"em",c<0){var k=Rt([],[]),S=Rt(["vlist"],[k]);S.style.height=-c+"em";var M=Rt(["vlist-s"],[new E("\u200b")]);y=[Rt(["vlist-r"],[w,M]),Rt(["vlist-r"],[S])]}else y=[Rt(["vlist-r"],[w])];var z=Rt(["vlist-t"],y);return 2===y.length&&z.classes.push("vlist-t2"),z.height=u,z.depth=-c,z},makeOrd:function(t,e,r){var a,n=t.mode,i=t.text,s=["mord"],h="math"===n||"text"===n&&e.font,l=h?e.font:e.fontFamily;if(55349===i.charCodeAt(0)){var m=function(t,e){var r=1024*(t.charCodeAt(0)-55296)+(t.charCodeAt(1)-56320)+65536,a="math"===e?0:1;if(119808<=r&&r<120484){var n=Math.floor((r-119808)/26);return[xt[n][2],xt[n][a]]}if(120782<=r&&r<=120831){var i=Math.floor((r-120782)/10);return[vt[i][2],vt[i][a]]}if(120485===r||120486===r)return[xt[0][2],xt[0][a]];if(120486<r&&r<120782)return["",""];throw new o("Unsupported character: "+t)}(i,n),u=m[0],p=m[1];return qt(i,u,n,e,s.concat(p))}if(l){var d,f;if("boldsymbol"===l||"mathnormal"===l){var g="boldsymbol"===l?function(t,e,r,a){return Ct(t,"Math-BoldItalic",e).metrics?{fontName:"Math-BoldItalic",fontClass:"boldsymbol"}:{fontName:"Main-Bold",fontClass:"mathbf"}}(i,n):(a=i,c.contains(Bt,a)?{fontName:"Main-Italic",fontClass:"mathit"}:/[0-9]/.test(a.charAt(0))?{fontName:"Caligraphic-Regular",fontClass:"mathcal"}:{fontName:"Math-Italic",fontClass:"mathdefault"});d=g.fontName,f=[g.fontClass]}else c.contains(Bt,i)?(d="Main-Italic",f=["mathit"]):h?(d=Ht[l].fontName,f=[l]):(d=Lt(l,e.fontWeight,e.fontShape),f=[l,e.fontWeight,e.fontShape]);if(Ct(i,d,n).metrics)return qt(i,d,n,e,s.concat(f));if(rt.hasOwnProperty(i)&&"Typewriter"===d.substr(0,10)){for(var x=[],v=0;v<i.length;v++)x.push(qt(i[v],d,n,e,s.concat(f)));return Et(x)}}if("mathord"===r){var b=function(t,e,r,a){return/[0-9]/.test(t.charAt(0))||c.contains(Bt,t)?{fontName:"Main-Italic",fontClass:"mathit"}:{fontName:"Math-Italic",fontClass:"mathdefault"}}(i);return qt(i,b.fontName,n,e,s.concat([b.fontClass]))}if("textord"===r){var y=j[n][i]&&j[n][i].font;if("ams"===y){var w=Lt("amsrm",e.fontWeight,e.fontShape);return qt(i,w,n,e,s.concat("amsrm",e.fontWeight,e.fontShape))}if("main"!==y&&y){var k=Lt(y,e.fontWeight,e.fontShape);return qt(i,k,n,e,s.concat(k,e.fontWeight,e.fontShape))}var S=Lt("textrm",e.fontWeight,e.fontShape);return qt(i,S,n,e,s.concat(e.fontWeight,e.fontShape))}throw new Error("unexpected type: "+r+" in makeOrd")},makeGlue:function(t,e){var r=Rt(["mspace"],[],e),a=Tt(t,e);return r.style.marginRight=a+"em",r},staticSvg:function(t,e){var r=Pt[t],a=r[0],n=r[1],i=r[2],o=new H(a),s=new L([o],{width:n+"em",height:i+"em",style:"width:"+n+"em",viewBox:"0 0 "+1e3*n+" "+1e3*i,preserveAspectRatio:"xMinYMin"}),h=Ot(["overlay"],[s],e);return h.height=i,h.style.height=i+"em",h.style.width=n+"em",h},svgData:Pt,tryCombineChars:function(t){for(var e=0;e<t.length-1;e++){var r=t[e],a=t[e+1];r instanceof E&&a instanceof E&&Nt(r,a)&&(r.text+=a.text,r.height=Math.max(r.height,a.height),r.depth=Math.max(r.depth,a.depth),r.italic=a.italic,t.splice(e+1,1),e--)}return t}};function Ft(t,e){var r=Vt(t,e);if(!r)throw new Error("Expected node of type "+e+", but got "+(t?"node of type "+t.type:String(t)));return r}function Vt(t,e){return t&&t.type===e?t:null}function Ut(t,e){var r=function(t,e){return t&&"atom"===t.type&&t.family===e?t:null}(t,e);if(!r)throw new Error('Expected node of type "atom" and family "'+e+'", but got '+(t?"atom"===t.type?"atom of family "+t.family:"node of type "+t.type:String(t)));return r}function Gt(t){var e=Yt(t);if(!e)throw new Error("Expected node of symbol group type, but got "+(t?"node of type "+t.type:String(t)));return e}function Yt(t){return t&&("atom"===t.type||X.hasOwnProperty(t.type))?t:null}var Wt={number:3,unit:"mu"},Xt={number:4,unit:"mu"},_t={number:5,unit:"mu"},jt={mord:{mop:Wt,mbin:Xt,mrel:_t,minner:Wt},mop:{mord:Wt,mop:Wt,mrel:_t,minner:Wt},mbin:{mord:Xt,mop:Xt,mopen:Xt,minner:Xt},mrel:{mord:_t,mop:_t,mopen:_t,minner:_t},mopen:{},mclose:{mop:Wt,mbin:Xt,mrel:_t,minner:Wt},mpunct:{mord:Wt,mop:Wt,mrel:_t,mopen:Wt,mclose:Wt,mpunct:Wt,minner:Wt},minner:{mord:Wt,mop:Wt,mbin:Xt,mrel:_t,mopen:Wt,mpunct:Wt,minner:Wt}},$t={mord:{mop:Wt},mop:{mord:Wt,mop:Wt},mbin:{},mrel:{},mopen:{},mclose:{mop:Wt},mpunct:{},minner:{mop:Wt}},Zt={},Kt={},Jt={};function Qt(t){for(var e=t.type,r=t.names,a=t.props,n=t.handler,i=t.htmlBuilder,o=t.mathmlBuilder,s={type:e,numArgs:a.numArgs,argTypes:a.argTypes,greediness:void 0===a.greediness?1:a.greediness,allowedInText:!!a.allowedInText,allowedInMath:void 0===a.allowedInMath||a.allowedInMath,numOptionalArgs:a.numOptionalArgs||0,infix:!!a.infix,handler:n},h=0;h<r.length;++h)Zt[r[h]]=s;e&&(i&&(Kt[e]=i),o&&(Jt[e]=o))}function te(t){Qt({type:t.type,names:[],props:{numArgs:0},handler:function(){throw new Error("Should never be called.")},htmlBuilder:t.htmlBuilder,mathmlBuilder:t.mathmlBuilder})}var ee=function(t){var e=Vt(t,"ordgroup");return e?e.body:[t]},re=Dt.makeSpan,ae=["leftmost","mbin","mopen","mrel","mop","mpunct"],ne=["rightmost","mrel","mclose","mpunct"],ie={display:w.DISPLAY,text:w.TEXT,script:w.SCRIPT,scriptscript:w.SCRIPTSCRIPT},oe={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},se=function(t,e,r,a){void 0===a&&(a=[null,null]);for(var n=[],i=0;i<t.length;i++){var o=ue(t[i],e);if(o instanceof A){var s=o.children;n.push.apply(n,s)}else n.push(o)}if(!r)return n;var h=e;if(1===t.length){var l=Vt(t[0],"sizing")||Vt(t[0],"styling");l&&("sizing"===l.type?h=e.havingSize(l.size):"styling"===l.type&&(h=e.havingStyle(ie[l.style])))}var m=re([a[0]||"leftmost"],[],e),u=re([a[1]||"rightmost"],[],e);return he(n,function(t,e){var r=e.classes[0],a=t.classes[0];"mbin"===r&&c.contains(ne,a)?e.classes[0]="mord":"mbin"===a&&c.contains(ae,r)&&(t.classes[0]="mord")},{node:m},u),he(n,function(t,e){var r=me(e),a=me(t),n=r&&a?t.hasClass("mtight")?$t[r][a]:jt[r][a]:null;if(n)return Dt.makeGlue(n,h)},{node:m},u),n},he=function t(e,r,a,n){n&&e.push(n);for(var i=0;i<e.length;i++){var o=e[i],s=le(o);if(s)t(s.children,r,a);else if("mspace"!==o.classes[0]){var h=r(o,a.node);h&&(a.insertAfter?a.insertAfter(h):(e.unshift(h),i++)),a.node=o,a.insertAfter=function(t){return function(r){e.splice(t+1,0,r),i++}}(i)}}n&&e.pop()},le=function(t){return t instanceof A||t instanceof I?t:null},me=function(t,e){return t?(e&&(t=function t(e,r){var a=le(e);if(a){var n=a.children;if(n.length){if("right"===r)return t(n[n.length-1],"right");if("left"===r)return t(n[0],"left")}}return e}(t,e)),oe[t.classes[0]]||null):null},ce=function(t,e){var r=["nulldelimiter"].concat(t.baseSizingClasses());return re(e.concat(r))},ue=function(t,e,r){if(!t)return re();if(Kt[t.type]){var a=Kt[t.type](t,e);if(r&&e.size!==r.size){a=re(e.sizingClasses(r),[a],e);var n=e.sizeMultiplier/r.sizeMultiplier;a.height*=n,a.depth*=n}return a}throw new o("Got group of unknown type: '"+t.type+"'")};function pe(t,e){var r=re(["base"],t,e),a=re(["strut"]);return a.style.height=r.height+r.depth+"em",a.style.verticalAlign=-r.depth+"em",r.children.unshift(a),r}function de(t,e){var r=null;1===t.length&&"tag"===t[0].type&&(r=t[0].tag,t=t[0].body);for(var a,n=se(t,e,!0),i=[],o=[],s=0;s<n.length;s++)if(o.push(n[s]),n[s].hasClass("mbin")||n[s].hasClass("mrel")||n[s].hasClass("allowbreak")){for(var h=!1;s<n.length-1&&n[s+1].hasClass("mspace")&&!n[s+1].hasClass("newline");)s++,o.push(n[s]),n[s].hasClass("nobreak")&&(h=!0);h||(i.push(pe(o,e)),o=[])}else n[s].hasClass("newline")&&(o.pop(),o.length>0&&(i.push(pe(o,e)),o=[]),i.push(n[s]));o.length>0&&i.push(pe(o,e)),r&&((a=pe(se(r,e,!0))).classes=["tag"],i.push(a));var l=re(["katex-html"],i);if(l.setAttribute("aria-hidden","true"),a){var m=a.children[0];m.style.height=l.height+l.depth+"em",m.style.verticalAlign=-l.depth+"em"}return l}function fe(t){return new A(t)}var ge=function(){function t(t,e){this.type=void 0,this.attributes=void 0,this.children=void 0,this.type=t,this.attributes={},this.children=e||[]}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.getAttribute=function(t){return this.attributes[t]},e.toNode=function(){var t=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(var r=0;r<this.children.length;r++)t.appendChild(this.children[r].toNode());return t},e.toMarkup=function(){var t="<"+this.type;for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&(t+=" "+e+'="',t+=c.escape(this.attributes[e]),t+='"');t+=">";for(var r=0;r<this.children.length;r++)t+=this.children[r].toMarkup();return t+="</"+this.type+">"},e.toText=function(){return this.children.map(function(t){return t.toText()}).join("")},t}(),xe=function(){function t(t){this.text=void 0,this.text=t}var e=t.prototype;return e.toNode=function(){return document.createTextNode(this.text)},e.toMarkup=function(){return c.escape(this.toText())},e.toText=function(){return this.text},t}(),ve={MathNode:ge,TextNode:xe,SpaceNode:function(){function t(t){this.width=void 0,this.character=void 0,this.width=t,this.character=t>=.05555&&t<=.05556?"\u200a":t>=.1666&&t<=.1667?"\u2009":t>=.2222&&t<=.2223?"\u2005":t>=.2777&&t<=.2778?"\u2005\u200a":t>=-.05556&&t<=-.05555?"\u200a\u2063":t>=-.1667&&t<=-.1666?"\u2009\u2063":t>=-.2223&&t<=-.2222?"\u205f\u2063":t>=-.2778&&t<=-.2777?"\u2005\u2063":null}var e=t.prototype;return e.toNode=function(){if(this.character)return document.createTextNode(this.character);var t=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return t.setAttribute("width",this.width+"em"),t},e.toMarkup=function(){return this.character?"<mtext>"+this.character+"</mtext>":'<mspace width="'+this.width+'em"/>'},e.toText=function(){return this.character?this.character:" "},t}(),newDocumentFragment:fe},be=function(t,e,r){return!j[e][t]||!j[e][t].replace||55349===t.charCodeAt(0)||rt.hasOwnProperty(t)&&r&&(r.fontFamily&&"tt"===r.fontFamily.substr(4,2)||r.font&&"tt"===r.font.substr(4,2))||(t=j[e][t].replace),new ve.TextNode(t)},ye=function(t){return 1===t.length?t[0]:new ve.MathNode("mrow",t)},we=function(t,e){if("texttt"===e.fontFamily)return"monospace";if("textsf"===e.fontFamily)return"textit"===e.fontShape&&"textbf"===e.fontWeight?"sans-serif-bold-italic":"textit"===e.fontShape?"sans-serif-italic":"textbf"===e.fontWeight?"bold-sans-serif":"sans-serif";if("textit"===e.fontShape&&"textbf"===e.fontWeight)return"bold-italic";if("textit"===e.fontShape)return"italic";if("textbf"===e.fontWeight)return"bold";var r=e.font;if(!r||"mathnormal"===r)return null;var a=t.mode;if("mathit"===r)return"italic";if("boldsymbol"===r)return"bold-italic";if("mathbf"===r)return"bold";if("mathbb"===r)return"double-struck";if("mathfrak"===r)return"fraktur";if("mathscr"===r||"mathcal"===r)return"script";if("mathsf"===r)return"sans-serif";if("mathtt"===r)return"monospace";var n=t.text;return c.contains(["\\imath","\\jmath"],n)?null:(j[a][n]&&j[a][n].replace&&(n=j[a][n].replace),G(n,Dt.fontMap[r].fontName,a)?Dt.fontMap[r].variant:null)},ke=function(t,e,r){if(1===t.length){var a=Me(t[0],e);return r&&a instanceof ge&&"mo"===a.type&&(a.setAttribute("lspace","0em"),a.setAttribute("rspace","0em")),[a]}for(var n,i=[],o=0;o<t.length;o++){var s=Me(t[o],e);if(s instanceof ge&&n instanceof ge){if("mtext"===s.type&&"mtext"===n.type&&s.getAttribute("mathvariant")===n.getAttribute("mathvariant")){var h;(h=n.children).push.apply(h,s.children);continue}if("mn"===s.type&&"mn"===n.type){var l;(l=n.children).push.apply(l,s.children);continue}if("mi"===s.type&&1===s.children.length&&"mn"===n.type){var m=s.children[0];if(m instanceof xe&&"."===m.text){var c;(c=n.children).push.apply(c,s.children);continue}}else if("mi"===n.type&&1===n.children.length){var u=n.children[0];if(u instanceof xe&&"\u0338"===u.text&&("mo"===s.type||"mi"===s.type||"mn"===s.type)){var p=s.children[0];p instanceof xe&&p.text.length>0&&(p.text=p.text.slice(0,1)+"\u0338"+p.text.slice(1),i.pop())}}}i.push(s),n=s}return i},Se=function(t,e,r){return ye(ke(t,e,r))},Me=function(t,e){if(!t)return new ve.MathNode("mrow");if(Jt[t.type])return Jt[t.type](t,e);throw new o("Got group of unknown type: '"+t.type+"'")};function ze(t,e,r,a){var n,i=ke(t,r);n=1===i.length&&i[0]instanceof ge&&c.contains(["mrow","mtable"],i[0].type)?i[0]:new ve.MathNode("mrow",i);var o=new ve.MathNode("annotation",[new ve.TextNode(e)]);o.setAttribute("encoding","application/x-tex");var s=new ve.MathNode("semantics",[n,o]),h=new ve.MathNode("math",[s]);h.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML");var l=a?"katex":"katex-mathml";return Dt.makeSpan([l],[h])}var Ae=function(t){return new St({style:t.displayMode?w.DISPLAY:w.TEXT,maxSize:t.maxSize,minRuleThickness:t.minRuleThickness})},Te=function(t,e){if(e.displayMode){var r=["katex-display"];e.leqno&&r.push("leqno"),e.fleqn&&r.push("fleqn"),t=Dt.makeSpan(r,[t])}return t},Be=function(t,e,r){var a,n=Ae(r);if("mathml"===r.output)return ze(t,e,n,!0);if("html"===r.output){var i=de(t,n);a=Dt.makeSpan(["katex"],[i])}else{var o=ze(t,e,n,!1),s=de(t,n);a=Dt.makeSpan(["katex"],[o,s])}return Te(a,r)},Ce={widehat:"^",widecheck:"\u02c7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23df",overbrace:"\u23de",overgroup:"\u23e0",undergroup:"\u23e1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21d2",xRightarrow:"\u21d2",overleftharpoon:"\u21bc",xleftharpoonup:"\u21bc",overrightharpoon:"\u21c0",xrightharpoonup:"\u21c0",xLeftarrow:"\u21d0",xLeftrightarrow:"\u21d4",xhookleftarrow:"\u21a9",xhookrightarrow:"\u21aa",xmapsto:"\u21a6",xrightharpoondown:"\u21c1",xleftharpoondown:"\u21bd",xrightleftharpoons:"\u21cc",xleftrightharpoons:"\u21cb",xtwoheadleftarrow:"\u219e",xtwoheadrightarrow:"\u21a0",xlongequal:"=",xtofrom:"\u21c4",xrightleftarrows:"\u21c4",xrightequilibrium:"\u21cc",xleftequilibrium:"\u21cb"},qe={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Ne=function(t){return"ordgroup"===t.type?t.body.length:1},Ie=function(t,e,r,a){var n,i=t.height+t.depth+2*r;if(/fbox|color/.test(e)){if(n=Dt.makeSpan(["stretchy",e],[],a),"fbox"===e){var o=a.color&&a.getColor();o&&(n.style.borderColor=o)}}else{var s=[];/^[bx]cancel$/.test(e)&&s.push(new P({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(e)&&s.push(new P({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new L(s,{width:"100%",height:i+"em"});n=Dt.makeSvgSpan([],[h],a)}return n.height=i,n.style.height=i+"em",n},Re=function(t){var e=new ve.MathNode("mo",[new ve.TextNode(Ce[t.substr(1)])]);return e.setAttribute("stretchy","true"),e},Oe=function(t,e){var r=function(){var r=4e5,a=t.label.substr(1);if(c.contains(["widehat","widecheck","widetilde","utilde"],a)){var n,i,o,s=Ne(t.base);if(s>5)"widehat"===a||"widecheck"===a?(n=420,r=2364,o=.42,i=a+"4"):(n=312,r=2340,o=.34,i="tilde4");else{var h=[1,1,2,2,3,3][s];"widehat"===a||"widecheck"===a?(r=[0,1062,2364,2364,2364][h],n=[0,239,300,360,420][h],o=[0,.24,.3,.3,.36,.42][h],i=a+h):(r=[0,600,1033,2339,2340][h],n=[0,260,286,306,312][h],o=[0,.26,.286,.3,.306,.34][h],i="tilde"+h)}var l=new H(i),m=new L([l],{width:"100%",height:o+"em",viewBox:"0 0 "+r+" "+n,preserveAspectRatio:"none"});return{span:Dt.makeSvgSpan([],[m],e),minWidth:0,height:o}}var u,p,d=[],f=qe[a],g=f[0],x=f[1],v=f[2],b=v/1e3,y=g.length;if(1===y)u=["hide-tail"],p=[f[3]];else if(2===y)u=["halfarrow-left","halfarrow-right"],p=["xMinYMin","xMaxYMin"];else{if(3!==y)throw new Error("Correct katexImagesData or update code here to support\n                    "+y+" children.");u=["brace-left","brace-center","brace-right"],p=["xMinYMin","xMidYMin","xMaxYMin"]}for(var w=0;w<y;w++){var k=new H(g[w]),S=new L([k],{width:"400em",height:b+"em",viewBox:"0 0 "+r+" "+v,preserveAspectRatio:p[w]+" slice"}),M=Dt.makeSvgSpan([u[w]],[S],e);if(1===y)return{span:M,minWidth:x,height:b};M.style.height=b+"em",d.push(M)}return{span:Dt.makeSpan(["stretchy"],d,e),minWidth:x,height:b}}(),a=r.span,n=r.minWidth,i=r.height;return a.height=i,a.style.height=i+"em",n>0&&(a.style.minWidth=n+"em"),a},Ee=function(t,e){var r,a,n,i=Vt(t,"supsub");i?(r=(a=Ft(i.base,"accent")).base,i.base=r,n=function(t){if(t instanceof N)return t;throw new Error("Expected span<HtmlDomNode> but got "+String(t)+".")}(ue(i,e)),i.base=a):r=(a=Ft(t,"accent")).base;var o=ue(r,e.havingCrampedStyle()),s=0;if(a.isShifty&&c.isCharacterBox(r)){var h=c.getBaseElem(r);s=D(ue(h,e.havingCrampedStyle())).skew}var l,m=Math.min(o.height,e.fontMetrics().xHeight);if(a.isStretchy)l=Oe(a,e),l=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"elem",elem:l,wrapperClasses:["svg-align"],wrapperStyle:s>0?{width:"calc(100% - "+2*s+"em)",marginLeft:2*s+"em"}:void 0}]},e);else{var u,p;"\\vec"===a.label?(u=Dt.staticSvg("vec",e),p=Dt.svgData.vec[1]):((u=D(u=Dt.makeOrd({mode:a.mode,text:a.label},e,"textord"))).italic=0,p=u.width),l=Dt.makeSpan(["accent-body"],[u]);var d="\\textcircled"===a.label;d&&(l.classes.push("accent-full"),m=o.height);var f=s;d||(f-=p/2),l.style.left=f+"em","\\textcircled"===a.label&&(l.style.top=".2em"),l=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"kern",size:-m},{type:"elem",elem:l}]},e)}var g=Dt.makeSpan(["mord","accent"],[l],e);return n?(n.children[0]=g,n.height=Math.max(g.height,n.height),n.classes[0]="mord",n):g},Le=function(t,e){var r=t.isStretchy?Re(t.label):new ve.MathNode("mo",[be(t.label,t.mode)]),a=new ve.MathNode("mover",[Me(t.base,e),r]);return a.setAttribute("accent","true"),a},He=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(function(t){return"\\"+t}).join("|"));Qt({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:function(t,e){var r=e[0],a=!He.test(t.funcName),n=!a||"\\widehat"===t.funcName||"\\widetilde"===t.funcName||"\\widecheck"===t.funcName;return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:a,isShifty:n,base:r}},htmlBuilder:Ee,mathmlBuilder:Le}),Qt({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!1},handler:function(t,e){var r=e[0];return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:Ee,mathmlBuilder:Le}),Qt({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"accentUnder",mode:r.mode,label:a,base:n}},htmlBuilder:function(t,e){var r=ue(t.base,e),a=Oe(t,e),n="\\utilde"===t.label?.12:0,i=Dt.makeVList({positionType:"bottom",positionData:a.height+n,children:[{type:"elem",elem:a,wrapperClasses:["svg-align"]},{type:"kern",size:n},{type:"elem",elem:r}]},e);return Dt.makeSpan(["mord","accentunder"],[i],e)},mathmlBuilder:function(t,e){var r=Re(t.label),a=new ve.MathNode("munder",[Me(t.base,e),r]);return a.setAttribute("accentunder","true"),a}});var Pe=function(t){var e=new ve.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e};Qt({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium"],props:{numArgs:1,numOptionalArgs:1},handler:function(t,e,r){var a=t.parser,n=t.funcName;return{type:"xArrow",mode:a.mode,label:n,body:e[0],below:r[0]}},htmlBuilder:function(t,e){var r,a=e.style,n=e.havingStyle(a.sup()),i=Dt.wrapFragment(ue(t.body,n,e),e);i.classes.push("x-arrow-pad"),t.below&&(n=e.havingStyle(a.sub()),(r=Dt.wrapFragment(ue(t.below,n,e),e)).classes.push("x-arrow-pad"));var o,s=Oe(t,e),h=-e.fontMetrics().axisHeight+.5*s.height,l=-e.fontMetrics().axisHeight-.5*s.height-.111;if((i.depth>.25||"\\xleftequilibrium"===t.label)&&(l-=i.depth),r){var m=-e.fontMetrics().axisHeight+r.height+.5*s.height+.111;o=Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:l},{type:"elem",elem:s,shift:h},{type:"elem",elem:r,shift:m}]},e)}else o=Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:l},{type:"elem",elem:s,shift:h}]},e);return o.children[0].children[0].children[1].classes.push("svg-align"),Dt.makeSpan(["mrel","x-arrow"],[o],e)},mathmlBuilder:function(t,e){var r,a=Re(t.label);if(t.body){var n=Pe(Me(t.body,e));if(t.below){var i=Pe(Me(t.below,e));r=new ve.MathNode("munderover",[a,i,n])}else r=new ve.MathNode("mover",[a,n])}else if(t.below){var o=Pe(Me(t.below,e));r=new ve.MathNode("munder",[a,o])}else r=Pe(),r=new ve.MathNode("mover",[a,r]);return r}}),Qt({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){for(var r=t.parser,a=Ft(e[0],"ordgroup").body,n="",i=0;i<a.length;i++){n+=Ft(a[i],"textord").text}var s=parseInt(n);if(isNaN(s))throw new o("\\@char has non-numeric argument "+n);return{type:"textord",mode:r.mode,text:String.fromCharCode(s)}}});var De=function(t,e){var r=se(t.body,e.withColor(t.color),!1);return Dt.makeFragment(r)},Fe=function(t,e){var r=ke(t.body,e.withColor(t.color)),a=new ve.MathNode("mstyle",r);return a.setAttribute("mathcolor",t.color),a};Qt({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:["color","original"]},handler:function(t,e){var r=t.parser,a=Ft(e[0],"color-token").color,n=e[1];return{type:"color",mode:r.mode,color:a,body:ee(n)}},htmlBuilder:De,mathmlBuilder:Fe}),Qt({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,greediness:3,argTypes:["color"]},handler:function(t,e){var r=t.parser,a=t.breakOnTokenText,n=Ft(e[0],"color-token").color;r.gullet.macros.set("\\current@color",n);var i=r.parseExpression(!0,a);return{type:"color",mode:r.mode,color:n,body:i}},htmlBuilder:De,mathmlBuilder:Fe}),Qt({type:"cr",names:["\\cr","\\newline"],props:{numArgs:0,numOptionalArgs:1,argTypes:["size"],allowedInText:!0},handler:function(t,e,r){var a=t.parser,n=t.funcName,i=r[0],o="\\cr"===n,s=!1;return o||(s=!a.settings.displayMode||!a.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode")),{type:"cr",mode:a.mode,newLine:s,newRow:o,size:i&&Ft(i,"size").value}},htmlBuilder:function(t,e){if(t.newRow)throw new o("\\cr valid only within a tabular/array environment");var r=Dt.makeSpan(["mspace"],[],e);return t.newLine&&(r.classes.push("newline"),t.size&&(r.style.marginTop=Tt(t.size,e)+"em")),r},mathmlBuilder:function(t,e){var r=new ve.MathNode("mspace");return t.newLine&&(r.setAttribute("linebreak","newline"),t.size&&r.setAttribute("height",Tt(t.size,e)+"em")),r}});var Ve=function(t,e,r){var a=G(j.math[t]&&j.math[t].replace||t,e,r);if(!a)throw new Error("Unsupported symbol "+t+" and font size "+e+".");return a},Ue=function(t,e,r,a){var n=r.havingBaseStyle(e),i=Dt.makeSpan(a.concat(n.sizingClasses(r)),[t],r),o=n.sizeMultiplier/r.sizeMultiplier;return i.height*=o,i.depth*=o,i.maxFontSize=n.sizeMultiplier,i},Ge=function(t,e,r){var a=e.havingBaseStyle(r),n=(1-e.sizeMultiplier/a.sizeMultiplier)*e.fontMetrics().axisHeight;t.classes.push("delimcenter"),t.style.top=n+"em",t.height-=n,t.depth+=n},Ye=function(t,e,r,a,n,i){var o=function(t,e,r,a){return Dt.makeSymbol(t,"Size"+e+"-Regular",r,a)}(t,e,n,a),s=Ue(Dt.makeSpan(["delimsizing","size"+e],[o],a),w.TEXT,a,i);return r&&Ge(s,a,w.TEXT),s},We=function(t,e,r){var a;return a="Size1-Regular"===e?"delim-size1":"delim-size4",{type:"elem",elem:Dt.makeSpan(["delimsizinginner",a],[Dt.makeSpan([],[Dt.makeSymbol(t,e,r)])])}},Xe={type:"kern",size:-.005},_e=function(t,e,r,a,n,i){var o,s,h,l;o=h=l=t,s=null;var m="Size1-Regular";"\\uparrow"===t?h=l="\u23d0":"\\Uparrow"===t?h=l="\u2016":"\\downarrow"===t?o=h="\u23d0":"\\Downarrow"===t?o=h="\u2016":"\\updownarrow"===t?(o="\\uparrow",h="\u23d0",l="\\downarrow"):"\\Updownarrow"===t?(o="\\Uparrow",h="\u2016",l="\\Downarrow"):"["===t||"\\lbrack"===t?(o="\u23a1",h="\u23a2",l="\u23a3",m="Size4-Regular"):"]"===t||"\\rbrack"===t?(o="\u23a4",h="\u23a5",l="\u23a6",m="Size4-Regular"):"\\lfloor"===t||"\u230a"===t?(h=o="\u23a2",l="\u23a3",m="Size4-Regular"):"\\lceil"===t||"\u2308"===t?(o="\u23a1",h=l="\u23a2",m="Size4-Regular"):"\\rfloor"===t||"\u230b"===t?(h=o="\u23a5",l="\u23a6",m="Size4-Regular"):"\\rceil"===t||"\u2309"===t?(o="\u23a4",h=l="\u23a5",m="Size4-Regular"):"("===t||"\\lparen"===t?(o="\u239b",h="\u239c",l="\u239d",m="Size4-Regular"):")"===t||"\\rparen"===t?(o="\u239e",h="\u239f",l="\u23a0",m="Size4-Regular"):"\\{"===t||"\\lbrace"===t?(o="\u23a7",s="\u23a8",l="\u23a9",h="\u23aa",m="Size4-Regular"):"\\}"===t||"\\rbrace"===t?(o="\u23ab",s="\u23ac",l="\u23ad",h="\u23aa",m="Size4-Regular"):"\\lgroup"===t||"\u27ee"===t?(o="\u23a7",l="\u23a9",h="\u23aa",m="Size4-Regular"):"\\rgroup"===t||"\u27ef"===t?(o="\u23ab",l="\u23ad",h="\u23aa",m="Size4-Regular"):"\\lmoustache"===t||"\u23b0"===t?(o="\u23a7",l="\u23ad",h="\u23aa",m="Size4-Regular"):"\\rmoustache"!==t&&"\u23b1"!==t||(o="\u23ab",l="\u23a9",h="\u23aa",m="Size4-Regular");var c=Ve(o,m,n),u=c.height+c.depth,p=Ve(h,m,n),d=p.height+p.depth,f=Ve(l,m,n),g=f.height+f.depth,x=0,v=1;if(null!==s){var b=Ve(s,m,n);x=b.height+b.depth,v=2}var y=u+g+x,k=Math.max(0,Math.ceil((e-y)/(v*d))),S=y+k*v*d,M=a.fontMetrics().axisHeight;r&&(M*=a.sizeMultiplier);var z=S/2-M,A=.005*(k+1)-d,T=[];if(T.push(We(l,m,n)),null===s)for(var B=0;B<k;B++)T.push(Xe),T.push(We(h,m,n));else{for(var C=0;C<k;C++)T.push(Xe),T.push(We(h,m,n));T.push({type:"kern",size:A}),T.push(We(h,m,n)),T.push(Xe),T.push(We(s,m,n));for(var q=0;q<k;q++)T.push(Xe),T.push(We(h,m,n))}T.push({type:"kern",size:A}),T.push(We(h,m,n)),T.push(Xe),T.push(We(o,m,n));var N=a.havingBaseStyle(w.TEXT),I=Dt.makeVList({positionType:"bottom",positionData:z,children:T},N);return Ue(Dt.makeSpan(["delimsizing","mult"],[I],N),w.TEXT,a,i)},je=function(t,e,r,a,n){var i=function(t,e,r){e*=1e3;var a="";switch(t){case"sqrtMain":a=function(t,e){return"M95,"+(622+t+e)+"\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl"+t/2.075+" -"+t+"\nc5.3,-9.3,12,-14,20,-14\nH400000v"+(40+t)+"H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM"+(834+t)+" "+e+"h400000v"+(40+t)+"h-400000z"}(e,80);break;case"sqrtSize1":a=function(t,e){return"M263,"+(601+t+e)+"c0.7,0,18,39.7,52,119\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\nc340,-704.7,510.7,-1060.3,512,-1067\nl"+t/2.084+" -"+t+"\nc4.7,-7.3,11,-11,19,-11\nH40000v"+(40+t)+"H1012.3\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\nM"+(1001+t)+" "+e+"h400000v"+(40+t)+"h-400000z"}(e,80);break;case"sqrtSize2":a=function(t,e){return"M983 "+(10+t+e)+"\nl"+t/3.13+" -"+t+"\nc4,-6.7,10,-10,18,-10 H400000v"+(40+t)+"\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\nM"+(1001+t)+" "+e+"h400000v"+(40+t)+"h-400000z"}(e,80);break;case"sqrtSize3":a=function(t,e){return"M424,"+(2398+t+e)+"\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\nc0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\nl"+t/4.223+" -"+t+"c4,-6.7,10,-10,18,-10 H400000\nv"+(40+t)+"H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\nc-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M"+(1001+t)+" "+e+"\nh400000v"+(40+t)+"h-400000z"}(e,80);break;case"sqrtSize4":a=function(t,e){return"M473,"+(2713+t+e)+"\nc339.3,-1799.3,509.3,-2700,510,-2702 l"+t/5.298+" -"+t+"\nc3.3,-7.3,9.3,-11,18,-11 H400000v"+(40+t)+"H1017.7\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\n606zM"+(1001+t)+" "+e+"h400000v"+(40+t)+"H1017.7z"}(e,80);break;case"sqrtTall":a=function(t,e,r){return"M702 "+(t+e)+"H400000"+(40+t)+"\nH742v"+(r-54-e-t)+"l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\n219 661 l218 661zM702 "+e+"H400000v"+(40+t)+"H742z"}(e,80,r)}return a}(t,a,r),o=new H(t,i),s=new L([o],{width:"400em",height:e+"em",viewBox:"0 0 400000 "+r,preserveAspectRatio:"xMinYMin slice"});return Dt.makeSvgSpan(["hide-tail"],[s],n)},$e=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","\\surd"],Ze=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1"],Ke=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],Je=[0,1.2,1.8,2.4,3],Qe=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],tr=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"stack"}],er=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],rr=function(t){if("small"===t.type)return"Main-Regular";if("large"===t.type)return"Size"+t.size+"-Regular";if("stack"===t.type)return"Size4-Regular";throw new Error("Add support for delim type '"+t.type+"' here.")},ar=function(t,e,r,a){for(var n=Math.min(2,3-a.style.size);n<r.length&&"stack"!==r[n].type;n++){var i=Ve(t,rr(r[n]),"math"),o=i.height+i.depth;if("small"===r[n].type&&(o*=a.havingBaseStyle(r[n].style).sizeMultiplier),o>e)return r[n]}return r[r.length-1]},nr=function(t,e,r,a,n,i){var o;"<"===t||"\\lt"===t||"\u27e8"===t?t="\\langle":">"!==t&&"\\gt"!==t&&"\u27e9"!==t||(t="\\rangle"),o=c.contains(Ke,t)?Qe:c.contains($e,t)?er:tr;var s=ar(t,e,o,a);return"small"===s.type?function(t,e,r,a,n,i){var o=Dt.makeSymbol(t,"Main-Regular",n,a),s=Ue(o,e,a,i);return r&&Ge(s,a,e),s}(t,s.style,r,a,n,i):"large"===s.type?Ye(t,s.size,r,a,n,i):_e(t,e,r,a,n,i)},ir=function(t,e){var r,a,n=e.havingBaseSizing(),i=ar("\\surd",t*n.sizeMultiplier,er,n),o=n.sizeMultiplier,s=Math.max(0,e.minRuleThickness-e.fontMetrics().sqrtRuleThickness),h=0,l=0,m=0;return"small"===i.type?(t<1?o=1:t<1.4&&(o=.7),l=(1+s)/o,(r=je("sqrtMain",h=(1+s+.08)/o,m=1e3+1e3*s+80,s,e)).style.minWidth="0.853em",a=.833/o):"large"===i.type?(m=1080*Je[i.size],l=(Je[i.size]+s)/o,h=(Je[i.size]+s+.08)/o,(r=je("sqrtSize"+i.size,h,m,s,e)).style.minWidth="1.02em",a=1/o):(h=t+s+.08,l=t+s,m=Math.floor(1e3*t+s)+80,(r=je("sqrtTall",h,m,s,e)).style.minWidth="0.742em",a=1.056),r.height=l,r.style.height=h+"em",{span:r,advanceWidth:a,ruleWidth:(e.fontMetrics().sqrtRuleThickness+s)*o}},or=function(t,e,r,a,n){if("<"===t||"\\lt"===t||"\u27e8"===t?t="\\langle":">"!==t&&"\\gt"!==t&&"\u27e9"!==t||(t="\\rangle"),c.contains($e,t)||c.contains(Ke,t))return Ye(t,e,!1,r,a,n);if(c.contains(Ze,t))return _e(t,Je[e],!1,r,a,n);throw new o("Illegal delimiter: '"+t+"'")},sr=nr,hr=function(t,e,r,a,n,i){var o=a.fontMetrics().axisHeight*a.sizeMultiplier,s=5/a.fontMetrics().ptPerEm,h=Math.max(e-o,r+o),l=Math.max(h/500*901,2*h-s);return nr(t,l,!0,a,n,i)},lr={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},mr=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27e8","\\rangle","\u27e9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function cr(t,e){var r=Yt(t);if(r&&c.contains(mr,r.text))return r;throw new o("Invalid delimiter: '"+(r?r.text:JSON.stringify(t))+"' after '"+e.funcName+"'",t)}function ur(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}Qt({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1},handler:function(t,e){var r=cr(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:lr[t.funcName].size,mclass:lr[t.funcName].mclass,delim:r.text}},htmlBuilder:function(t,e){return"."===t.delim?Dt.makeSpan([t.mclass]):or(t.delim,t.size,e,t.mode,[t.mclass])},mathmlBuilder:function(t){var e=[];"."!==t.delim&&e.push(be(t.delim,t.mode));var r=new ve.MathNode("mo",e);return"mopen"===t.mclass||"mclose"===t.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r}}),Qt({type:"leftright-right",names:["\\right"],props:{numArgs:1},handler:function(t,e){var r=t.parser.gullet.macros.get("\\current@color");if(r&&"string"!=typeof r)throw new o("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:cr(e[0],t).text,color:r}}}),Qt({type:"leftright",names:["\\left"],props:{numArgs:1},handler:function(t,e){var r=cr(e[0],t),a=t.parser;++a.leftrightDepth;var n=a.parseExpression(!1);--a.leftrightDepth,a.expect("\\right",!1);var i=Ft(a.parseFunction(),"leftright-right");return{type:"leftright",mode:a.mode,body:n,left:r.text,right:i.delim,rightColor:i.color}},htmlBuilder:function(t,e){ur(t);for(var r,a,n=se(t.body,e,!0,["mopen","mclose"]),i=0,o=0,s=!1,h=0;h<n.length;h++)n[h].isMiddle?s=!0:(i=Math.max(n[h].height,i),o=Math.max(n[h].depth,o));if(i*=e.sizeMultiplier,o*=e.sizeMultiplier,r="."===t.left?ce(e,["mopen"]):hr(t.left,i,o,e,t.mode,["mopen"]),n.unshift(r),s)for(var l=1;l<n.length;l++){var m=n[l].isMiddle;m&&(n[l]=hr(m.delim,i,o,m.options,t.mode,[]))}if("."===t.right)a=ce(e,["mclose"]);else{var c=t.rightColor?e.withColor(t.rightColor):e;a=hr(t.right,i,o,c,t.mode,["mclose"])}return n.push(a),Dt.makeSpan(["minner"],n,e)},mathmlBuilder:function(t,e){ur(t);var r=ke(t.body,e);if("."!==t.left){var a=new ve.MathNode("mo",[be(t.left,t.mode)]);a.setAttribute("fence","true"),r.unshift(a)}if("."!==t.right){var n=new ve.MathNode("mo",[be(t.right,t.mode)]);n.setAttribute("fence","true"),t.rightColor&&n.setAttribute("mathcolor",t.rightColor),r.push(n)}return ye(r)}}),Qt({type:"middle",names:["\\middle"],props:{numArgs:1},handler:function(t,e){var r=cr(e[0],t);if(!t.parser.leftrightDepth)throw new o("\\middle without preceding \\left",r);return{type:"middle",mode:t.parser.mode,delim:r.text}},htmlBuilder:function(t,e){var r;if("."===t.delim)r=ce(e,[]);else{r=or(t.delim,1,e,t.mode,[]);var a={delim:t.delim,options:e};r.isMiddle=a}return r},mathmlBuilder:function(t,e){var r="\\vert"===t.delim||"|"===t.delim?be("|","text"):be(t.delim,t.mode),a=new ve.MathNode("mo",[r]);return a.setAttribute("fence","true"),a.setAttribute("lspace","0.05em"),a.setAttribute("rspace","0.05em"),a}});var pr=function(t,e){var r,a,n=Dt.wrapFragment(ue(t.body,e),e),i=t.label.substr(1),o=e.sizeMultiplier,s=0,h=c.isCharacterBox(t.body);if("sout"===i)(r=Dt.makeSpan(["stretchy","sout"])).height=e.fontMetrics().defaultRuleThickness/o,s=-.5*e.fontMetrics().xHeight;else{/cancel/.test(i)?h||n.classes.push("cancel-pad"):n.classes.push("boxpad");var l=0,m=0;/box/.test(i)?(m=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),l=e.fontMetrics().fboxsep+("colorbox"===i?0:m)):l=h?.2:0,r=Ie(n,i,l,e),/fbox|boxed|fcolorbox/.test(i)&&(r.style.borderStyle="solid",r.style.borderWidth=m+"em"),s=n.depth+l,t.backgroundColor&&(r.style.backgroundColor=t.backgroundColor,t.borderColor&&(r.style.borderColor=t.borderColor))}return a=t.backgroundColor?Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:s},{type:"elem",elem:n,shift:0}]},e):Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:0},{type:"elem",elem:r,shift:s,wrapperClasses:/cancel/.test(i)?["svg-align"]:[]}]},e),/cancel/.test(i)&&(a.height=n.height,a.depth=n.depth),/cancel/.test(i)&&!h?Dt.makeSpan(["mord","cancel-lap"],[a],e):Dt.makeSpan(["mord"],[a],e)},dr=function(t,e){var r=0,a=new ve.MathNode(t.label.indexOf("colorbox")>-1?"mpadded":"menclose",[Me(t.body,e)]);switch(t.label){case"\\cancel":a.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":a.setAttribute("notation","downdiagonalstrike");break;case"\\sout":a.setAttribute("notation","horizontalstrike");break;case"\\fbox":a.setAttribute("notation","box");break;case"\\fcolorbox":case"\\colorbox":if(r=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,a.setAttribute("width","+"+2*r+"pt"),a.setAttribute("height","+"+2*r+"pt"),a.setAttribute("lspace",r+"pt"),a.setAttribute("voffset",r+"pt"),"\\fcolorbox"===t.label){var n=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);a.setAttribute("style","border: "+n+"em solid "+String(t.borderColor))}break;case"\\xcancel":a.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return t.backgroundColor&&a.setAttribute("mathbackground",t.backgroundColor),a};Qt({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:["color","text"]},handler:function(t,e,r){var a=t.parser,n=t.funcName,i=Ft(e[0],"color-token").color,o=e[1];return{type:"enclose",mode:a.mode,label:n,backgroundColor:i,body:o}},htmlBuilder:pr,mathmlBuilder:dr}),Qt({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,greediness:3,argTypes:["color","color","text"]},handler:function(t,e,r){var a=t.parser,n=t.funcName,i=Ft(e[0],"color-token").color,o=Ft(e[1],"color-token").color,s=e[2];return{type:"enclose",mode:a.mode,label:n,backgroundColor:o,borderColor:i,body:s}},htmlBuilder:pr,mathmlBuilder:dr}),Qt({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler:function(t,e){return{type:"enclose",mode:t.parser.mode,label:"\\fbox",body:e[0]}}}),Qt({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout"],props:{numArgs:1},handler:function(t,e,r){var a=t.parser,n=t.funcName,i=e[0];return{type:"enclose",mode:a.mode,label:n,body:i}},htmlBuilder:pr,mathmlBuilder:dr});var fr={};function gr(t){for(var e=t.type,r=t.names,a=t.props,n=t.handler,i=t.htmlBuilder,o=t.mathmlBuilder,s={type:e,numArgs:a.numArgs||0,greediness:1,allowedInText:!1,numOptionalArgs:0,handler:n},h=0;h<r.length;++h)fr[r[h]]=s;i&&(Kt[e]=i),o&&(Jt[e]=o)}function xr(t){var e=[];t.consumeSpaces();for(var r=t.fetch().text;"\\hline"===r||"\\hdashline"===r;)t.consume(),e.push("\\hdashline"===r),t.consumeSpaces(),r=t.fetch().text;return e}function vr(t,e,r){var a=e.hskipBeforeAndAfter,n=e.addJot,i=e.cols,s=e.arraystretch,h=e.colSeparationType;if(t.gullet.beginGroup(),t.gullet.macros.set("\\\\","\\cr"),!s){var l=t.gullet.expandMacroAsText("\\arraystretch");if(null==l)s=1;else if(!(s=parseFloat(l))||s<0)throw new o("Invalid \\arraystretch: "+l)}t.gullet.beginGroup();var m=[],c=[m],u=[],p=[];for(p.push(xr(t));;){var d=t.parseExpression(!1,"\\cr");t.gullet.endGroup(),t.gullet.beginGroup(),d={type:"ordgroup",mode:t.mode,body:d},r&&(d={type:"styling",mode:t.mode,style:r,body:[d]}),m.push(d);var f=t.fetch().text;if("&"===f)t.consume();else{if("\\end"===f){1===m.length&&"styling"===d.type&&0===d.body[0].body.length&&c.pop(),p.length<c.length+1&&p.push([]);break}if("\\cr"!==f)throw new o("Expected & or \\\\ or \\cr or \\end",t.nextToken);var g=Ft(t.parseFunction(),"cr");u.push(g.size),p.push(xr(t)),m=[],c.push(m)}}return t.gullet.endGroup(),t.gullet.endGroup(),{type:"array",mode:t.mode,addJot:n,arraystretch:s,body:c,cols:i,rowGaps:u,hskipBeforeAndAfter:a,hLinesBeforeRow:p,colSeparationType:h}}function br(t){return"d"===t.substr(0,1)?"display":"text"}var yr=function(t,e){var r,a,n=t.body.length,i=t.hLinesBeforeRow,s=0,h=new Array(n),l=[],m=Math.max(e.fontMetrics().arrayRuleWidth,e.minRuleThickness),u=1/e.fontMetrics().ptPerEm,p=5*u;t.colSeparationType&&"small"===t.colSeparationType&&(p=e.havingStyle(w.SCRIPT).sizeMultiplier/e.sizeMultiplier*.2778);var d=12*u,f=3*u,g=t.arraystretch*d,x=.7*g,v=.3*g,b=0;function y(t){for(var e=0;e<t.length;++e)e>0&&(b+=.25),l.push({pos:b,isDashed:t[e]})}for(y(i[0]),r=0;r<t.body.length;++r){var k=t.body[r],S=x,M=v;s<k.length&&(s=k.length);var z=new Array(k.length);for(a=0;a<k.length;++a){var A=ue(k[a],e);M<A.depth&&(M=A.depth),S<A.height&&(S=A.height),z[a]=A}var T=t.rowGaps[r],B=0;T&&(B=Tt(T,e))>0&&(M<(B+=v)&&(M=B),B=0),t.addJot&&(M+=f),z.height=S,z.depth=M,b+=S,z.pos=b,b+=M+B,h[r]=z,y(i[r+1])}var C,q,N=b/2+e.fontMetrics().axisHeight,I=t.cols||[],R=[];for(a=0,q=0;a<s||q<I.length;++a,++q){for(var O=I[q]||{},E=!0;"separator"===O.type;){if(E||((C=Dt.makeSpan(["arraycolsep"],[])).style.width=e.fontMetrics().doubleRuleSep+"em",R.push(C)),"|"!==O.separator&&":"!==O.separator)throw new o("Invalid separator type: "+O.separator);var L="|"===O.separator?"solid":"dashed",H=Dt.makeSpan(["vertical-separator"],[],e);H.style.height=b+"em",H.style.borderRightWidth=m+"em",H.style.borderRightStyle=L,H.style.margin="0 -"+m/2+"em",H.style.verticalAlign=-(b-N)+"em",R.push(H),O=I[++q]||{},E=!1}if(!(a>=s)){var P=void 0;(a>0||t.hskipBeforeAndAfter)&&0!==(P=c.deflt(O.pregap,p))&&((C=Dt.makeSpan(["arraycolsep"],[])).style.width=P+"em",R.push(C));var D=[];for(r=0;r<n;++r){var F=h[r],V=F[a];if(V){var U=F.pos-N;V.depth=F.depth,V.height=F.height,D.push({type:"elem",elem:V,shift:U})}}D=Dt.makeVList({positionType:"individualShift",children:D},e),D=Dt.makeSpan(["col-align-"+(O.align||"c")],[D]),R.push(D),(a<s-1||t.hskipBeforeAndAfter)&&0!==(P=c.deflt(O.postgap,p))&&((C=Dt.makeSpan(["arraycolsep"],[])).style.width=P+"em",R.push(C))}}if(h=Dt.makeSpan(["mtable"],R),l.length>0){for(var G=Dt.makeLineSpan("hline",e,m),Y=Dt.makeLineSpan("hdashline",e,m),W=[{type:"elem",elem:h,shift:0}];l.length>0;){var X=l.pop(),_=X.pos-N;X.isDashed?W.push({type:"elem",elem:Y,shift:_}):W.push({type:"elem",elem:G,shift:_})}h=Dt.makeVList({positionType:"individualShift",children:W},e)}return Dt.makeSpan(["mord"],[h],e)},wr={c:"center ",l:"left ",r:"right "},kr=function(t,e){var r=new ve.MathNode("mtable",t.body.map(function(t){return new ve.MathNode("mtr",t.map(function(t){return new ve.MathNode("mtd",[Me(t,e)])}))})),a=.5===t.arraystretch?.1:.16+t.arraystretch-1+(t.addJot?.09:0);r.setAttribute("rowspacing",a+"em");var n="",i="";if(t.cols){var o=t.cols,s="",h=!1,l=0,m=o.length;"separator"===o[0].type&&(n+="top ",l=1),"separator"===o[o.length-1].type&&(n+="bottom ",m-=1);for(var c=l;c<m;c++)"align"===o[c].type?(i+=wr[o[c].align],h&&(s+="none "),h=!0):"separator"===o[c].type&&h&&(s+="|"===o[c].separator?"solid ":"dashed ",h=!1);r.setAttribute("columnalign",i.trim()),/[sd]/.test(s)&&r.setAttribute("columnlines",s.trim())}if("align"===t.colSeparationType){for(var u=t.cols||[],p="",d=1;d<u.length;d++)p+=d%2?"0em ":"1em ";r.setAttribute("columnspacing",p.trim())}else"alignat"===t.colSeparationType?r.setAttribute("columnspacing","0em"):"small"===t.colSeparationType?r.setAttribute("columnspacing","0.2778em"):r.setAttribute("columnspacing","1em");var f="",g=t.hLinesBeforeRow;n+=g[0].length>0?"left ":"",n+=g[g.length-1].length>0?"right ":"";for(var x=1;x<g.length-1;x++)f+=0===g[x].length?"none ":g[x][0]?"dashed ":"solid ";return/[sd]/.test(f)&&r.setAttribute("rowlines",f.trim()),""!==n&&(r=new ve.MathNode("menclose",[r])).setAttribute("notation",n.trim()),t.arraystretch&&t.arraystretch<1&&(r=new ve.MathNode("mstyle",[r])).setAttribute("scriptlevel","1"),r},Sr=function(t,e){var r,a=[],n=vr(t.parser,{cols:a,addJot:!0},"display"),i=0,s={type:"ordgroup",mode:t.mode,body:[]},h=Vt(e[0],"ordgroup");if(h){for(var l="",m=0;m<h.body.length;m++){l+=Ft(h.body[m],"textord").text}r=Number(l),i=2*r}var c=!i;n.body.forEach(function(t){for(var e=1;e<t.length;e+=2){var a=Ft(t[e],"styling");Ft(a.body[0],"ordgroup").body.unshift(s)}if(c)i<t.length&&(i=t.length);else{var n=t.length/2;if(r<n)throw new o("Too many math in a row: expected "+r+", but got "+n,t[0])}});for(var u=0;u<i;++u){var p="r",d=0;u%2==1?p="l":u>0&&c&&(d=1),a[u]={type:"align",align:p,pregap:d,postgap:0}}return n.colSeparationType=c?"align":"alignat",n};gr({type:"array",names:["array","darray"],props:{numArgs:1},handler:function(t,e){var r={cols:(Yt(e[0])?[e[0]]:Ft(e[0],"ordgroup").body).map(function(t){var e=Gt(t).text;if(-1!=="lcr".indexOf(e))return{type:"align",align:e};if("|"===e)return{type:"separator",separator:"|"};if(":"===e)return{type:"separator",separator:":"};throw new o("Unknown column alignment: "+e,t)}),hskipBeforeAndAfter:!0};return vr(t.parser,r,br(t.envName))},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix"],props:{numArgs:0},handler:function(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName],r=vr(t.parser,{hskipBeforeAndAfter:!1},br(t.envName));return e?{type:"leftright",mode:t.mode,body:[r],left:e[0],right:e[1],rightColor:void 0}:r},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["smallmatrix"],props:{numArgs:0},handler:function(t){var e=vr(t.parser,{arraystretch:.5},"script");return e.colSeparationType="small",e},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["subarray"],props:{numArgs:1},handler:function(t,e){var r=(Yt(e[0])?[e[0]]:Ft(e[0],"ordgroup").body).map(function(t){var e=Gt(t).text;if(-1!=="lc".indexOf(e))return{type:"align",align:e};throw new o("Unknown column alignment: "+e,t)});if(r.length>1)throw new o("{subarray} can contain only one column");var a={cols:r,hskipBeforeAndAfter:!1,arraystretch:.5};if((a=vr(t.parser,a,"script")).body[0].length>1)throw new o("{subarray} can contain only one column");return a},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["cases","dcases"],props:{numArgs:0},handler:function(t){var e=vr(t.parser,{arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},br(t.envName));return{type:"leftright",mode:t.mode,body:[e],left:"\\{",right:".",rightColor:void 0}},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["aligned"],props:{numArgs:0},handler:Sr,htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["gathered"],props:{numArgs:0},handler:function(t){return vr(t.parser,{cols:[{type:"align",align:"c"}],addJot:!0},"display")},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["alignedat"],props:{numArgs:1},handler:Sr,htmlBuilder:yr,mathmlBuilder:kr}),Qt({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler:function(t,e){throw new o(t.funcName+" valid only within array environment")}});var Mr=fr;Qt({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];if("ordgroup"!==n.type)throw new o("Invalid environment name",n);for(var i="",s=0;s<n.body.length;++s)i+=Ft(n.body[s],"textord").text;if("\\begin"===a){if(!Mr.hasOwnProperty(i))throw new o("No such environment: "+i,n);var h=Mr[i],l=r.parseArguments("\\begin{"+i+"}",h),m=l.args,c=l.optArgs,u={mode:r.mode,envName:i,parser:r},p=h.handler(u,m,c);r.expect("\\end",!1);var d=r.nextToken,f=Ft(r.parseFunction(),"environment");if(f.name!==i)throw new o("Mismatch: \\begin{"+i+"} matched by \\end{"+f.name+"}",d);return p}return{type:"environment",mode:r.mode,name:i,nameGroup:n}}});var zr=Dt.makeSpan;function Ar(t,e){var r=se(t.body,e,!0);return zr([t.mclass],r,e)}function Tr(t,e){var r,a=ke(t.body,e);return"minner"===t.mclass?ve.newDocumentFragment(a):("mord"===t.mclass?t.isCharacterBox?(r=a[0]).type="mi":r=new ve.MathNode("mi",a):(t.isCharacterBox?(r=a[0]).type="mo":r=new ve.MathNode("mo",a),"mbin"===t.mclass?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):"mpunct"===t.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):"mopen"!==t.mclass&&"mclose"!==t.mclass||(r.attributes.lspace="0em",r.attributes.rspace="0em")),r)}Qt({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"mclass",mode:r.mode,mclass:"m"+a.substr(5),body:ee(n),isCharacterBox:c.isCharacterBox(n)}},htmlBuilder:Ar,mathmlBuilder:Tr});var Br=function(t){var e="ordgroup"===t.type&&t.body.length?t.body[0]:t;return"atom"!==e.type||"bin"!==e.family&&"rel"!==e.family?"mord":"m"+e.family};Qt({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler:function(t,e){return{type:"mclass",mode:t.parser.mode,mclass:Br(e[0]),body:[e[1]],isCharacterBox:c.isCharacterBox(e[1])}}}),Qt({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler:function(t,e){var r,a=t.parser,n=t.funcName,i=e[1],o=e[0];r="\\stackrel"!==n?Br(i):"mrel";var s={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:"\\stackrel"!==n,body:ee(i)},h={type:"supsub",mode:o.mode,base:s,sup:"\\underset"===n?null:o,sub:"\\underset"===n?o:null};return{type:"mclass",mode:a.mode,mclass:r,body:[h],isCharacterBox:c.isCharacterBox(h)}},htmlBuilder:Ar,mathmlBuilder:Tr});var Cr=function(t,e){var r=t.font,a=e.withFont(r);return ue(t.body,a)},qr=function(t,e){var r=t.font,a=e.withFont(r);return Me(t.body,a)},Nr={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};Qt({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,greediness:2},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0],i=a;return i in Nr&&(i=Nr[i]),{type:"font",mode:r.mode,font:i.slice(1),body:n}},htmlBuilder:Cr,mathmlBuilder:qr}),Qt({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1,greediness:2},handler:function(t,e){var r=t.parser,a=e[0],n=c.isCharacterBox(a);return{type:"mclass",mode:r.mode,mclass:Br(a),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:a}],isCharacterBox:n}}}),Qt({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it"],props:{numArgs:0,allowedInText:!0},handler:function(t,e){var r=t.parser,a=t.funcName,n=t.breakOnTokenText,i=r.mode,o=r.parseExpression(!0,n);return{type:"font",mode:i,font:"math"+a.slice(1),body:{type:"ordgroup",mode:r.mode,body:o}}},htmlBuilder:Cr,mathmlBuilder:qr});var Ir=function(t,e){var r=e;return"display"===t?r=r.id>=w.SCRIPT.id?r.text():w.DISPLAY:"text"===t&&r.size===w.DISPLAY.size?r=w.TEXT:"script"===t?r=w.SCRIPT:"scriptscript"===t&&(r=w.SCRIPTSCRIPT),r},Rr=function(t,e){var r,a=Ir(t.size,e.style),n=a.fracNum(),i=a.fracDen();r=e.havingStyle(n);var o=ue(t.numer,r,e);if(t.continued){var s=8.5/e.fontMetrics().ptPerEm,h=3.5/e.fontMetrics().ptPerEm;o.height=o.height<s?s:o.height,o.depth=o.depth<h?h:o.depth}r=e.havingStyle(i);var l,m,c,u,p,d,f,g,x,v,b=ue(t.denom,r,e);if(t.hasBarLine?(t.barSize?(m=Tt(t.barSize,e),l=Dt.makeLineSpan("frac-line",e,m)):l=Dt.makeLineSpan("frac-line",e),m=l.height,c=l.height):(l=null,m=0,c=e.fontMetrics().defaultRuleThickness),a.size===w.DISPLAY.size||"display"===t.size?(u=e.fontMetrics().num1,p=m>0?3*c:7*c,d=e.fontMetrics().denom1):(m>0?(u=e.fontMetrics().num2,p=c):(u=e.fontMetrics().num3,p=3*c),d=e.fontMetrics().denom2),l){var y=e.fontMetrics().axisHeight;u-o.depth-(y+.5*m)<p&&(u+=p-(u-o.depth-(y+.5*m))),y-.5*m-(b.height-d)<p&&(d+=p-(y-.5*m-(b.height-d)));var k=-(y-.5*m);f=Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:b,shift:d},{type:"elem",elem:l,shift:k},{type:"elem",elem:o,shift:-u}]},e)}else{var S=u-o.depth-(b.height-d);S<p&&(u+=.5*(p-S),d+=.5*(p-S)),f=Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:b,shift:d},{type:"elem",elem:o,shift:-u}]},e)}return r=e.havingStyle(a),f.height*=r.sizeMultiplier/e.sizeMultiplier,f.depth*=r.sizeMultiplier/e.sizeMultiplier,g=a.size===w.DISPLAY.size?e.fontMetrics().delim1:e.fontMetrics().delim2,x=null==t.leftDelim?ce(e,["mopen"]):sr(t.leftDelim,g,!0,e.havingStyle(a),t.mode,["mopen"]),v=t.continued?Dt.makeSpan([]):null==t.rightDelim?ce(e,["mclose"]):sr(t.rightDelim,g,!0,e.havingStyle(a),t.mode,["mclose"]),Dt.makeSpan(["mord"].concat(r.sizingClasses(e)),[x,Dt.makeSpan(["mfrac"],[f]),v],e)},Or=function(t,e){var r=new ve.MathNode("mfrac",[Me(t.numer,e),Me(t.denom,e)]);if(t.hasBarLine){if(t.barSize){var a=Tt(t.barSize,e);r.setAttribute("linethickness",a+"em")}}else r.setAttribute("linethickness","0px");var n=Ir(t.size,e.style);if(n.size!==e.style.size){r=new ve.MathNode("mstyle",[r]);var i=n.size===w.DISPLAY.size?"true":"false";r.setAttribute("displaystyle",i),r.setAttribute("scriptlevel","0")}if(null!=t.leftDelim||null!=t.rightDelim){var o=[];if(null!=t.leftDelim){var s=new ve.MathNode("mo",[new ve.TextNode(t.leftDelim.replace("\\",""))]);s.setAttribute("fence","true"),o.push(s)}if(o.push(r),null!=t.rightDelim){var h=new ve.MathNode("mo",[new ve.TextNode(t.rightDelim.replace("\\",""))]);h.setAttribute("fence","true"),o.push(h)}return ye(o)}return r};Qt({type:"genfrac",names:["\\cfrac","\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,greediness:2},handler:function(t,e){var r,a=t.parser,n=t.funcName,i=e[0],o=e[1],s=null,h=null,l="auto";switch(n){case"\\cfrac":case"\\dfrac":case"\\frac":case"\\tfrac":r=!0;break;case"\\\\atopfrac":r=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":r=!1,s="(",h=")";break;case"\\\\bracefrac":r=!1,s="\\{",h="\\}";break;case"\\\\brackfrac":r=!1,s="[",h="]";break;default:throw new Error("Unrecognized genfrac command")}switch(n){case"\\cfrac":case"\\dfrac":case"\\dbinom":l="display";break;case"\\tfrac":case"\\tbinom":l="text"}return{type:"genfrac",mode:a.mode,continued:"\\cfrac"===n,numer:i,denom:o,hasBarLine:r,leftDelim:s,rightDelim:h,size:l,barSize:null}},htmlBuilder:Rr,mathmlBuilder:Or}),Qt({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler:function(t){var e,r=t.parser,a=t.funcName,n=t.token;switch(a){case"\\over":e="\\frac";break;case"\\choose":e="\\binom";break;case"\\atop":e="\\\\atopfrac";break;case"\\brace":e="\\\\bracefrac";break;case"\\brack":e="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:r.mode,replaceWith:e,token:n}}});var Er=["display","text","script","scriptscript"],Lr=function(t){var e=null;return t.length>0&&(e="."===(e=t)?null:e),e};Qt({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,greediness:6,argTypes:["math","math","size","text","math","math"]},handler:function(t,e){var r=t.parser,a=e[4],n=e[5],i=Vt(e[0],"atom");i&&(i=Ut(e[0],"open"));var o=i?Lr(i.text):null,s=Vt(e[1],"atom");s&&(s=Ut(e[1],"close"));var h,l=s?Lr(s.text):null,m=Ft(e[2],"size"),c=null;h=!!m.isBlank||(c=m.value).number>0;var u="auto",p=Vt(e[3],"ordgroup");if(p){if(p.body.length>0){var d=Ft(p.body[0],"textord");u=Er[Number(d.text)]}}else p=Ft(e[3],"textord"),u=Er[Number(p.text)];return{type:"genfrac",mode:r.mode,numer:a,denom:n,continued:!1,hasBarLine:h,barSize:c,leftDelim:o,rightDelim:l,size:u}},htmlBuilder:Rr,mathmlBuilder:Or}),Qt({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler:function(t,e){var r=t.parser,a=(t.funcName,t.token);return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Ft(e[0],"size").value,token:a}}}),Qt({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:function(t,e){var r=t.parser,a=(t.funcName,e[0]),n=function(t){if(!t)throw new Error("Expected non-null, but got "+String(t));return t}(Ft(e[1],"infix").size),i=e[2],o=n.number>0;return{type:"genfrac",mode:r.mode,numer:a,denom:i,continued:!1,hasBarLine:o,barSize:n,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:Rr,mathmlBuilder:Or});var Hr=function(t,e){var r,a,n=e.style,i=Vt(t,"supsub");i?(r=i.sup?ue(i.sup,e.havingStyle(n.sup()),e):ue(i.sub,e.havingStyle(n.sub()),e),a=Ft(i.base,"horizBrace")):a=Ft(t,"horizBrace");var o,s=ue(a.base,e.havingBaseStyle(w.DISPLAY)),h=Oe(a,e);if(a.isOver?(o=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:h}]},e)).children[0].children[0].children[1].classes.push("svg-align"):(o=Dt.makeVList({positionType:"bottom",positionData:s.depth+.1+h.height,children:[{type:"elem",elem:h},{type:"kern",size:.1},{type:"elem",elem:s}]},e)).children[0].children[0].children[0].classes.push("svg-align"),r){var l=Dt.makeSpan(["mord",a.isOver?"mover":"munder"],[o],e);o=a.isOver?Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:r}]},e):Dt.makeVList({positionType:"bottom",positionData:l.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:l}]},e)}return Dt.makeSpan(["mord",a.isOver?"mover":"munder"],[o],e)};Qt({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName;return{type:"horizBrace",mode:r.mode,label:a,isOver:/^\\over/.test(a),base:e[0]}},htmlBuilder:Hr,mathmlBuilder:function(t,e){var r=Re(t.label);return new ve.MathNode(t.isOver?"mover":"munder",[Me(t.base,e),r])}}),Qt({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=e[1],n=Ft(e[0],"url").url;return r.settings.isTrusted({command:"\\href",url:n})?{type:"href",mode:r.mode,href:n,body:ee(a)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:function(t,e){var r=se(t.body,e,!1);return Dt.makeAnchor(t.href,[],r,e)},mathmlBuilder:function(t,e){var r=Se(t.body,e);return r instanceof ge||(r=new ge("mrow",[r])),r.setAttribute("href",t.href),r}}),Qt({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=Ft(e[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:a}))return r.formatUnsupportedCmd("\\url");for(var n=[],i=0;i<a.length;i++){var o=a[i];"~"===o&&(o="\\textasciitilde"),n.push({type:"textord",mode:"text",text:o})}var s={type:"text",mode:r.mode,font:"\\texttt",body:n};return{type:"href",mode:r.mode,href:a,body:ee(s)}}}),Qt({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:function(t,e){return{type:"htmlmathml",mode:t.parser.mode,html:ee(e[0]),mathml:ee(e[1])}},htmlBuilder:function(t,e){var r=se(t.html,e,!1);return Dt.makeFragment(r)},mathmlBuilder:function(t,e){return Se(t.mathml,e)}});var Pr=function(t){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(t))return{number:+t,unit:"bp"};var e=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t);if(!e)throw new o("Invalid size: '"+t+"' in \\includegraphics");var r={number:+(e[1]+e[2]),unit:e[3]};if(!At(r))throw new o("Invalid unit: '"+r.unit+"' in \\includegraphics.");return r};Qt({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:function(t,e,r){var a=t.parser,n={number:0,unit:"em"},i={number:.9,unit:"em"},s={number:0,unit:"em"},h="";if(r[0])for(var l=Ft(r[0],"raw").string.split(","),m=0;m<l.length;m++){var c=l[m].split("=");if(2===c.length){var u=c[1].trim();switch(c[0].trim()){case"alt":h=u;break;case"width":n=Pr(u);break;case"height":i=Pr(u);break;case"totalheight":s=Pr(u);break;default:throw new o("Invalid key: '"+c[0]+"' in \\includegraphics.")}}}var p=Ft(e[0],"url").url;return""===h&&(h=(h=(h=p).replace(/^.*[\\\/]/,"")).substring(0,h.lastIndexOf("."))),a.settings.isTrusted({command:"\\includegraphics",url:p})?{type:"includegraphics",mode:a.mode,alt:h,width:n,height:i,totalheight:s,src:p}:a.formatUnsupportedCmd("\\includegraphics")},htmlBuilder:function(t,e){var r=Tt(t.height,e),a=0;t.totalheight.number>0&&(a=Tt(t.totalheight,e)-r,a=Number(a.toFixed(2)));var n=0;t.width.number>0&&(n=Tt(t.width,e));var i={height:r+a+"em"};n>0&&(i.width=n+"em"),a>0&&(i.verticalAlign=-a+"em");var o=new R(t.src,t.alt,i);return o.height=r,o.depth=a,o},mathmlBuilder:function(t,e){var r=new ve.MathNode("mglyph",[]);r.setAttribute("alt",t.alt);var a=Tt(t.height,e),n=0;if(t.totalheight.number>0&&(n=(n=Tt(t.totalheight,e)-a).toFixed(2),r.setAttribute("valign","-"+n+"em")),r.setAttribute("height",a+n+"em"),t.width.number>0){var i=Tt(t.width,e);r.setAttribute("width",i+"em")}return r.setAttribute("src",t.src),r}}),Qt({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=t.funcName,n=Ft(e[0],"size");if(r.settings.strict){var i="m"===a[1],o="mu"===n.value.unit;i?(o||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" supports only mu units, not "+n.value.unit+" units"),"math"!==r.mode&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" works only in math mode")):o&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:n.value}},htmlBuilder:function(t,e){return Dt.makeGlue(t.dimension,e)},mathmlBuilder:function(t,e){var r=Tt(t.dimension,e);return new ve.SpaceNode(r)}}),Qt({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"lap",mode:r.mode,alignment:a.slice(5),body:n}},htmlBuilder:function(t,e){var r;"clap"===t.alignment?(r=Dt.makeSpan([],[ue(t.body,e)]),r=Dt.makeSpan(["inner"],[r],e)):r=Dt.makeSpan(["inner"],[ue(t.body,e)]);var a=Dt.makeSpan(["fix"],[]),n=Dt.makeSpan([t.alignment],[r,a],e),i=Dt.makeSpan(["strut"]);return i.style.height=n.height+n.depth+"em",i.style.verticalAlign=-n.depth+"em",n.children.unshift(i),n=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n}]},e),Dt.makeSpan(["mord"],[n],e)},mathmlBuilder:function(t,e){var r=new ve.MathNode("mpadded",[Me(t.body,e)]);if("rlap"!==t.alignment){var a="llap"===t.alignment?"-1":"-0.5";r.setAttribute("lspace",a+"width")}return r.setAttribute("width","0px"),r}}),Qt({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(t,e){var r=t.funcName,a=t.parser,n=a.mode;a.switchMode("math");var i="\\("===r?"\\)":"$",o=a.parseExpression(!1,i);return a.expect(i),a.switchMode(n),{type:"styling",mode:a.mode,style:"text",body:o}}}),Qt({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(t,e){throw new o("Mismatched "+t.funcName)}});var Dr=function(t,e){switch(e.style.size){case w.DISPLAY.size:return t.display;case w.TEXT.size:return t.text;case w.SCRIPT.size:return t.script;case w.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}};Qt({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4},handler:function(t,e){return{type:"mathchoice",mode:t.parser.mode,display:ee(e[0]),text:ee(e[1]),script:ee(e[2]),scriptscript:ee(e[3])}},htmlBuilder:function(t,e){var r=Dr(t,e),a=se(r,e,!1);return Dt.makeFragment(a)},mathmlBuilder:function(t,e){var r=Dr(t,e);return Se(r,e)}});var Fr=function(t,e,r,a,n,i,o){var s,h,l;if(t=Dt.makeSpan([],[t]),e){var m=ue(e,a.havingStyle(n.sup()),a);h={elem:m,kern:Math.max(a.fontMetrics().bigOpSpacing1,a.fontMetrics().bigOpSpacing3-m.depth)}}if(r){var c=ue(r,a.havingStyle(n.sub()),a);s={elem:c,kern:Math.max(a.fontMetrics().bigOpSpacing2,a.fontMetrics().bigOpSpacing4-c.height)}}if(h&&s){var u=a.fontMetrics().bigOpSpacing5+s.elem.height+s.elem.depth+s.kern+t.depth+o;l=Dt.makeVList({positionType:"bottom",positionData:u,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:-i+"em"},{type:"kern",size:s.kern},{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:i+"em"},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}else if(s){var p=t.height-o;l=Dt.makeVList({positionType:"top",positionData:p,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:-i+"em"},{type:"kern",size:s.kern},{type:"elem",elem:t}]},a)}else{if(!h)return t;var d=t.depth+o;l=Dt.makeVList({positionType:"bottom",positionData:d,children:[{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:i+"em"},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}return Dt.makeSpan(["mop","op-limits"],[l],a)},Vr=["\\smallint"],Ur=function(t,e){var r,a,n,i=!1,o=Vt(t,"supsub");o?(r=o.sup,a=o.sub,n=Ft(o.base,"op"),i=!0):n=Ft(t,"op");var s,h=e.style,l=!1;if(h.size===w.DISPLAY.size&&n.symbol&&!c.contains(Vr,n.name)&&(l=!0),n.symbol){var m=l?"Size2-Regular":"Size1-Regular",u="";if("\\oiint"!==n.name&&"\\oiiint"!==n.name||(u=n.name.substr(1),n.name="oiint"===u?"\\iint":"\\iiint"),s=Dt.makeSymbol(n.name,m,"math",e,["mop","op-symbol",l?"large-op":"small-op"]),u.length>0){var p=s.italic,d=Dt.staticSvg(u+"Size"+(l?"2":"1"),e);s=Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:0},{type:"elem",elem:d,shift:l?.08:0}]},e),n.name="\\"+u,s.classes.unshift("mop"),s.italic=p}}else if(n.body){var f=se(n.body,e,!0);1===f.length&&f[0]instanceof E?(s=f[0]).classes[0]="mop":s=Dt.makeSpan(["mop"],Dt.tryCombineChars(f),e)}else{for(var g=[],x=1;x<n.name.length;x++)g.push(Dt.mathsym(n.name[x],n.mode,e));s=Dt.makeSpan(["mop"],g,e)}var v=0,b=0;return(s instanceof E||"\\oiint"===n.name||"\\oiiint"===n.name)&&!n.suppressBaseShift&&(v=(s.height-s.depth)/2-e.fontMetrics().axisHeight,b=s.italic),i?Fr(s,r,a,e,h,b,v):(v&&(s.style.position="relative",s.style.top=v+"em"),s)},Gr=function(t,e){var r;if(t.symbol)r=new ge("mo",[be(t.name,t.mode)]),c.contains(Vr,t.name)&&r.setAttribute("largeop","false");else if(t.body)r=new ge("mo",ke(t.body,e));else{r=new ge("mi",[new xe(t.name.slice(1))]);var a=new ge("mo",[be("\u2061","text")]);r=t.parentIsSupSub?new ge("mo",[r,a]):fe([r,a])}return r},Yr={"\u220f":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22c0":"\\bigwedge","\u22c1":"\\bigvee","\u22c2":"\\bigcap","\u22c3":"\\bigcup","\u2a00":"\\bigodot","\u2a01":"\\bigoplus","\u2a02":"\\bigotimes","\u2a04":"\\biguplus","\u2a06":"\\bigsqcup"};Qt({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","\u220f","\u2210","\u2211","\u22c0","\u22c1","\u22c2","\u22c3","\u2a00","\u2a01","\u2a02","\u2a04","\u2a06"],props:{numArgs:0},handler:function(t,e){var r=t.parser,a=t.funcName;return 1===a.length&&(a=Yr[a]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:a}},htmlBuilder:Ur,mathmlBuilder:Gr}),Qt({type:"op",names:["\\mathop"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=e[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:ee(a)}},htmlBuilder:Ur,mathmlBuilder:Gr});var Wr={"\u222b":"\\int","\u222c":"\\iint","\u222d":"\\iiint","\u222e":"\\oint","\u222f":"\\oiint","\u2230":"\\oiiint"};Qt({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler:function(t){var e=t.parser,r=t.funcName;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:Ur,mathmlBuilder:Gr}),Qt({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler:function(t){var e=t.parser,r=t.funcName;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:Ur,mathmlBuilder:Gr}),Qt({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222b","\u222c","\u222d","\u222e","\u222f","\u2230"],props:{numArgs:0},handler:function(t){var e=t.parser,r=t.funcName;return 1===r.length&&(r=Wr[r]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:r}},htmlBuilder:Ur,mathmlBuilder:Gr});var Xr=function(t,e){var r,a,n,i,o=!1,s=Vt(t,"supsub");if(s?(r=s.sup,a=s.sub,n=Ft(s.base,"operatorname"),o=!0):n=Ft(t,"operatorname"),n.body.length>0){for(var h=n.body.map(function(t){var e=t.text;return"string"==typeof e?{type:"textord",mode:t.mode,text:e}:t}),l=se(h,e.withFont("mathrm"),!0),m=0;m<l.length;m++){var c=l[m];c instanceof E&&(c.text=c.text.replace(/\u2212/,"-").replace(/\u2217/,"*"))}i=Dt.makeSpan(["mop"],l,e)}else i=Dt.makeSpan(["mop"],[],e);return o?Fr(i,r,a,e,e.style,0,0):i};function _r(t,e,r){for(var a=se(t,e,!1),n=e.sizeMultiplier/r.sizeMultiplier,i=0;i<a.length;i++){var o=a[i].classes.indexOf("sizing");o<0?Array.prototype.push.apply(a[i].classes,e.sizingClasses(r)):a[i].classes[o+1]==="reset-size"+e.size&&(a[i].classes[o+1]="reset-size"+r.size),a[i].height*=n,a[i].depth*=n}return Dt.makeFragment(a)}Qt({type:"operatorname",names:["\\operatorname","\\operatorname*"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"operatorname",mode:r.mode,body:ee(n),alwaysHandleSupSub:"\\operatorname*"===a,limits:!1,parentIsSupSub:!1}},htmlBuilder:Xr,mathmlBuilder:function(t,e){for(var r=ke(t.body,e.withFont("mathrm")),a=!0,n=0;n<r.length;n++){var i=r[n];if(i instanceof ve.SpaceNode);else if(i instanceof ve.MathNode)switch(i.type){case"mi":case"mn":case"ms":case"mspace":case"mtext":break;case"mo":var o=i.children[0];1===i.children.length&&o instanceof ve.TextNode?o.text=o.text.replace(/\u2212/,"-").replace(/\u2217/,"*"):a=!1;break;default:a=!1}else a=!1}if(a){var s=r.map(function(t){return t.toText()}).join("");r=[new ve.TextNode(s)]}var h=new ve.MathNode("mi",r);h.setAttribute("mathvariant","normal");var l=new ve.MathNode("mo",[be("\u2061","text")]);return t.parentIsSupSub?new ve.MathNode("mo",[h,l]):ve.newDocumentFragment([h,l])}}),te({type:"ordgroup",htmlBuilder:function(t,e){return t.semisimple?Dt.makeFragment(se(t.body,e,!1)):Dt.makeSpan(["mord"],se(t.body,e,!0),e)},mathmlBuilder:function(t,e){return Se(t.body,e,!0)}}),Qt({type:"overline",names:["\\overline"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=e[0];return{type:"overline",mode:r.mode,body:a}},htmlBuilder:function(t,e){var r=ue(t.body,e.havingCrampedStyle()),a=Dt.makeLineSpan("overline-line",e),n=e.fontMetrics().defaultRuleThickness,i=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*n},{type:"elem",elem:a},{type:"kern",size:n}]},e);return Dt.makeSpan(["mord","overline"],[i],e)},mathmlBuilder:function(t,e){var r=new ve.MathNode("mo",[new ve.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new ve.MathNode("mover",[Me(t.body,e),r]);return a.setAttribute("accent","true"),a}}),Qt({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){var r=t.parser,a=e[0];return{type:"phantom",mode:r.mode,body:ee(a)}},htmlBuilder:function(t,e){var r=se(t.body,e.withPhantom(),!1);return Dt.makeFragment(r)},mathmlBuilder:function(t,e){var r=ke(t.body,e);return new ve.MathNode("mphantom",r)}}),Qt({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){var r=t.parser,a=e[0];return{type:"hphantom",mode:r.mode,body:a}},htmlBuilder:function(t,e){var r=Dt.makeSpan([],[ue(t.body,e.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var a=0;a<r.children.length;a++)r.children[a].height=0,r.children[a].depth=0;return r=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r}]},e),Dt.makeSpan(["mord"],[r],e)},mathmlBuilder:function(t,e){var r=ke(ee(t.body),e),a=new ve.MathNode("mphantom",r),n=new ve.MathNode("mpadded",[a]);return n.setAttribute("height","0px"),n.setAttribute("depth","0px"),n}}),Qt({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){var r=t.parser,a=e[0];return{type:"vphantom",mode:r.mode,body:a}},htmlBuilder:function(t,e){var r=Dt.makeSpan(["inner"],[ue(t.body,e.withPhantom())]),a=Dt.makeSpan(["fix"],[]);return Dt.makeSpan(["mord","rlap"],[r,a],e)},mathmlBuilder:function(t,e){var r=ke(ee(t.body),e),a=new ve.MathNode("mphantom",r),n=new ve.MathNode("mpadded",[a]);return n.setAttribute("width","0px"),n}}),Qt({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=Ft(e[0],"size").value,n=e[1];return{type:"raisebox",mode:r.mode,dy:a,body:n}},htmlBuilder:function(t,e){var r=ue(t.body,e),a=Tt(t.dy,e);return Dt.makeVList({positionType:"shift",positionData:-a,children:[{type:"elem",elem:r}]},e)},mathmlBuilder:function(t,e){var r=new ve.MathNode("mpadded",[Me(t.body,e)]),a=t.dy.number+t.dy.unit;return r.setAttribute("voffset",a),r}}),Qt({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},handler:function(t,e,r){var a=t.parser,n=r[0],i=Ft(e[0],"size"),o=Ft(e[1],"size");return{type:"rule",mode:a.mode,shift:n&&Ft(n,"size").value,width:i.value,height:o.value}},htmlBuilder:function(t,e){var r=Dt.makeSpan(["mord","rule"],[],e),a=Tt(t.width,e),n=Tt(t.height,e),i=t.shift?Tt(t.shift,e):0;return r.style.borderRightWidth=a+"em",r.style.borderTopWidth=n+"em",r.style.bottom=i+"em",r.width=a,r.height=n+i,r.depth=-i,r.maxFontSize=1.125*n*e.sizeMultiplier,r},mathmlBuilder:function(t,e){var r=Tt(t.width,e),a=Tt(t.height,e),n=t.shift?Tt(t.shift,e):0,i=e.color&&e.getColor()||"black",o=new ve.MathNode("mspace");o.setAttribute("mathbackground",i),o.setAttribute("width",r+"em"),o.setAttribute("height",a+"em");var s=new ve.MathNode("mpadded",[o]);return n>=0?s.setAttribute("height","+"+n+"em"):(s.setAttribute("height",n+"em"),s.setAttribute("depth","+"+-n+"em")),s.setAttribute("voffset",n+"em"),s}});var jr=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];Qt({type:"sizing",names:jr,props:{numArgs:0,allowedInText:!0},handler:function(t,e){var r=t.breakOnTokenText,a=t.funcName,n=t.parser,i=n.parseExpression(!1,r);return{type:"sizing",mode:n.mode,size:jr.indexOf(a)+1,body:i}},htmlBuilder:function(t,e){var r=e.havingSize(t.size);return _r(t.body,r,e)},mathmlBuilder:function(t,e){var r=e.havingSize(t.size),a=ke(t.body,r),n=new ve.MathNode("mstyle",a);return n.setAttribute("mathsize",r.sizeMultiplier+"em"),n}}),Qt({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:function(t,e,r){var a=t.parser,n=!1,i=!1,o=r[0]&&Ft(r[0],"ordgroup");if(o)for(var s="",h=0;h<o.body.length;++h){if("t"===(s=o.body[h].text))n=!0;else{if("b"!==s){n=!1,i=!1;break}i=!0}}else n=!0,i=!0;var l=e[0];return{type:"smash",mode:a.mode,body:l,smashHeight:n,smashDepth:i}},htmlBuilder:function(t,e){var r=Dt.makeSpan([],[ue(t.body,e)]);if(!t.smashHeight&&!t.smashDepth)return r;if(t.smashHeight&&(r.height=0,r.children))for(var a=0;a<r.children.length;a++)r.children[a].height=0;if(t.smashDepth&&(r.depth=0,r.children))for(var n=0;n<r.children.length;n++)r.children[n].depth=0;var i=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r}]},e);return Dt.makeSpan(["mord"],[i],e)},mathmlBuilder:function(t,e){var r=new ve.MathNode("mpadded",[Me(t.body,e)]);return t.smashHeight&&r.setAttribute("height","0px"),t.smashDepth&&r.setAttribute("depth","0px"),r}}),Qt({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler:function(t,e,r){var a=t.parser,n=r[0],i=e[0];return{type:"sqrt",mode:a.mode,body:i,index:n}},htmlBuilder:function(t,e){var r=ue(t.body,e.havingCrampedStyle());0===r.height&&(r.height=e.fontMetrics().xHeight),r=Dt.wrapFragment(r,e);var a=e.fontMetrics().defaultRuleThickness,n=a;e.style.id<w.TEXT.id&&(n=e.fontMetrics().xHeight);var i=a+n/4,o=r.height+r.depth+i+a,s=ir(o,e),h=s.span,l=s.ruleWidth,m=s.advanceWidth,c=h.height-l;c>r.height+r.depth+i&&(i=(i+c-r.height-r.depth)/2);var u=h.height-r.height-i-l;r.style.paddingLeft=m+"em";var p=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+u)},{type:"elem",elem:h},{type:"kern",size:l}]},e);if(t.index){var d=e.havingStyle(w.SCRIPTSCRIPT),f=ue(t.index,d,e),g=.6*(p.height-p.depth),x=Dt.makeVList({positionType:"shift",positionData:-g,children:[{type:"elem",elem:f}]},e),v=Dt.makeSpan(["root"],[x]);return Dt.makeSpan(["mord","sqrt"],[v,p],e)}return Dt.makeSpan(["mord","sqrt"],[p],e)},mathmlBuilder:function(t,e){var r=t.body,a=t.index;return a?new ve.MathNode("mroot",[Me(r,e),Me(a,e)]):new ve.MathNode("msqrt",[Me(r,e)])}});var $r={display:w.DISPLAY,text:w.TEXT,script:w.SCRIPT,scriptscript:w.SCRIPTSCRIPT};Qt({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0},handler:function(t,e){var r=t.breakOnTokenText,a=t.funcName,n=t.parser,i=n.parseExpression(!0,r),o=a.slice(1,a.length-5);return{type:"styling",mode:n.mode,style:o,body:i}},htmlBuilder:function(t,e){var r=$r[t.style],a=e.havingStyle(r).withFont("");return _r(t.body,a,e)},mathmlBuilder:function(t,e){var r=$r[t.style],a=e.havingStyle(r),n=ke(t.body,a),i=new ve.MathNode("mstyle",n),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[t.style];return i.setAttribute("scriptlevel",o[0]),i.setAttribute("displaystyle",o[1]),i}});te({type:"supsub",htmlBuilder:function(t,e){var r=function(t,e){var r=t.base;return r?"op"===r.type?r.limits&&(e.style.size===w.DISPLAY.size||r.alwaysHandleSupSub)?Ur:null:"operatorname"===r.type?r.alwaysHandleSupSub&&(e.style.size===w.DISPLAY.size||r.limits)?Xr:null:"accent"===r.type?c.isCharacterBox(r.base)?Ee:null:"horizBrace"===r.type&&!t.sub===r.isOver?Hr:null:null}(t,e);if(r)return r(t,e);var a,n,i,o=t.base,s=t.sup,h=t.sub,l=ue(o,e),m=e.fontMetrics(),u=0,p=0,d=o&&c.isCharacterBox(o);if(s){var f=e.havingStyle(e.style.sup());a=ue(s,f,e),d||(u=l.height-f.fontMetrics().supDrop*f.sizeMultiplier/e.sizeMultiplier)}if(h){var g=e.havingStyle(e.style.sub());n=ue(h,g,e),d||(p=l.depth+g.fontMetrics().subDrop*g.sizeMultiplier/e.sizeMultiplier)}i=e.style===w.DISPLAY?m.sup1:e.style.cramped?m.sup3:m.sup2;var x,v=e.sizeMultiplier,b=.5/m.ptPerEm/v+"em",y=null;if(n){var k=t.base&&"op"===t.base.type&&t.base.name&&("\\oiint"===t.base.name||"\\oiiint"===t.base.name);(l instanceof E||k)&&(y=-l.italic+"em")}if(a&&n){u=Math.max(u,i,a.depth+.25*m.xHeight),p=Math.max(p,m.sub2);var S=4*m.defaultRuleThickness;if(u-a.depth-(n.height-p)<S){p=S-(u-a.depth)+n.height;var M=.8*m.xHeight-(u-a.depth);M>0&&(u+=M,p-=M)}var z=[{type:"elem",elem:n,shift:p,marginRight:b,marginLeft:y},{type:"elem",elem:a,shift:-u,marginRight:b}];x=Dt.makeVList({positionType:"individualShift",children:z},e)}else if(n){p=Math.max(p,m.sub1,n.height-.8*m.xHeight);var A=[{type:"elem",elem:n,marginLeft:y,marginRight:b}];x=Dt.makeVList({positionType:"shift",positionData:p,children:A},e)}else{if(!a)throw new Error("supsub must have either sup or sub.");u=Math.max(u,i,a.depth+.25*m.xHeight),x=Dt.makeVList({positionType:"shift",positionData:-u,children:[{type:"elem",elem:a,marginRight:b}]},e)}var T=me(l,"right")||"mord";return Dt.makeSpan([T],[l,Dt.makeSpan(["msupsub"],[x])],e)},mathmlBuilder:function(t,e){var r,a=!1,n=Vt(t.base,"horizBrace");n&&!!t.sup===n.isOver&&(a=!0,r=n.isOver),!t.base||"op"!==t.base.type&&"operatorname"!==t.base.type||(t.base.parentIsSupSub=!0);var i,o=[Me(t.base,e)];if(t.sub&&o.push(Me(t.sub,e)),t.sup&&o.push(Me(t.sup,e)),a)i=r?"mover":"munder";else if(t.sub)if(t.sup){var s=t.base;i=s&&"op"===s.type&&s.limits&&e.style===w.DISPLAY?"munderover":s&&"operatorname"===s.type&&s.alwaysHandleSupSub&&(e.style===w.DISPLAY||s.limits)?"munderover":"msubsup"}else{var h=t.base;i=h&&"op"===h.type&&h.limits&&(e.style===w.DISPLAY||h.alwaysHandleSupSub)?"munder":h&&"operatorname"===h.type&&h.alwaysHandleSupSub&&(h.limits||e.style===w.DISPLAY)?"munder":"msub"}else{var l=t.base;i=l&&"op"===l.type&&l.limits&&(e.style===w.DISPLAY||l.alwaysHandleSupSub)?"mover":l&&"operatorname"===l.type&&l.alwaysHandleSupSub&&(l.limits||e.style===w.DISPLAY)?"mover":"msup"}return new ve.MathNode(i,o)}}),te({type:"atom",htmlBuilder:function(t,e){return Dt.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder:function(t,e){var r=new ve.MathNode("mo",[be(t.text,t.mode)]);if("bin"===t.family){var a=we(t,e);"bold-italic"===a&&r.setAttribute("mathvariant",a)}else"punct"===t.family?r.setAttribute("separator","true"):"open"!==t.family&&"close"!==t.family||r.setAttribute("stretchy","false");return r}});var Zr={mi:"italic",mn:"normal",mtext:"normal"};te({type:"mathord",htmlBuilder:function(t,e){return Dt.makeOrd(t,e,"mathord")},mathmlBuilder:function(t,e){var r=new ve.MathNode("mi",[be(t.text,t.mode,e)]),a=we(t,e)||"italic";return a!==Zr[r.type]&&r.setAttribute("mathvariant",a),r}}),te({type:"textord",htmlBuilder:function(t,e){return Dt.makeOrd(t,e,"textord")},mathmlBuilder:function(t,e){var r,a=be(t.text,t.mode,e),n=we(t,e)||"normal";return r="text"===t.mode?new ve.MathNode("mtext",[a]):/[0-9]/.test(t.text)?new ve.MathNode("mn",[a]):"\\prime"===t.text?new ve.MathNode("mo",[a]):new ve.MathNode("mi",[a]),n!==Zr[r.type]&&r.setAttribute("mathvariant",n),r}});var Kr={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Jr={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};te({type:"spacing",htmlBuilder:function(t,e){if(Jr.hasOwnProperty(t.text)){var r=Jr[t.text].className||"";if("text"===t.mode){var a=Dt.makeOrd(t,e,"textord");return a.classes.push(r),a}return Dt.makeSpan(["mspace",r],[Dt.mathsym(t.text,t.mode,e)],e)}if(Kr.hasOwnProperty(t.text))return Dt.makeSpan(["mspace",Kr[t.text]],[],e);throw new o('Unknown type of space "'+t.text+'"')},mathmlBuilder:function(t,e){if(!Jr.hasOwnProperty(t.text)){if(Kr.hasOwnProperty(t.text))return new ve.MathNode("mspace");throw new o('Unknown type of space "'+t.text+'"')}return new ve.MathNode("mtext",[new ve.TextNode("\xa0")])}});var Qr=function(){var t=new ve.MathNode("mtd",[]);return t.setAttribute("width","50%"),t};te({type:"tag",mathmlBuilder:function(t,e){var r=new ve.MathNode("mtable",[new ve.MathNode("mtr",[Qr(),new ve.MathNode("mtd",[Se(t.body,e)]),Qr(),new ve.MathNode("mtd",[Se(t.tag,e)])])]);return r.setAttribute("width","100%"),r}});var ta={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},ea={"\\textbf":"textbf","\\textmd":"textmd"},ra={"\\textit":"textit","\\textup":"textup"},aa=function(t,e){var r=t.font;return r?ta[r]?e.withTextFontFamily(ta[r]):ea[r]?e.withTextFontWeight(ea[r]):e.withTextFontShape(ra[r]):e};Qt({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup"],props:{numArgs:1,argTypes:["text"],greediness:2,allowedInText:!0},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"text",mode:r.mode,body:ee(n),font:a}},htmlBuilder:function(t,e){var r=aa(t,e),a=se(t.body,r,!0);return Dt.makeSpan(["mord","text"],Dt.tryCombineChars(a),r)},mathmlBuilder:function(t,e){var r=aa(t,e);return Se(t.body,r)}}),Qt({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){return{type:"underline",mode:t.parser.mode,body:e[0]}},htmlBuilder:function(t,e){var r=ue(t.body,e),a=Dt.makeLineSpan("underline-line",e),n=e.fontMetrics().defaultRuleThickness,i=Dt.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:n},{type:"elem",elem:a},{type:"kern",size:3*n},{type:"elem",elem:r}]},e);return Dt.makeSpan(["mord","underline"],[i],e)},mathmlBuilder:function(t,e){var r=new ve.MathNode("mo",[new ve.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new ve.MathNode("munder",[Me(t.body,e),r]);return a.setAttribute("accentunder","true"),a}}),Qt({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler:function(t,e,r){throw new o("\\verb ended by end of line instead of matching delimiter")},htmlBuilder:function(t,e){for(var r=na(t),a=[],n=e.havingStyle(e.style.text()),i=0;i<r.length;i++){var o=r[i];"~"===o&&(o="\\textasciitilde"),a.push(Dt.makeSymbol(o,"Typewriter-Regular",t.mode,n,["mord","texttt"]))}return Dt.makeSpan(["mord","text"].concat(n.sizingClasses(e)),Dt.tryCombineChars(a),n)},mathmlBuilder:function(t,e){var r=new ve.TextNode(na(t)),a=new ve.MathNode("mtext",[r]);return a.setAttribute("mathvariant","monospace"),a}});var na=function(t){return t.body.replace(/ /g,t.star?"\u2423":"\xa0")},ia=Zt,oa=new RegExp("^(\\\\[a-zA-Z@]+)[ \r\n\t]*$"),sa=new RegExp("[\u0300-\u036f]+$"),ha="([ \r\n\t]+)|([!-\\[\\]-\u2027\u202a-\ud7ff\uf900-\uffff][\u0300-\u036f]*|[\ud800-\udbff][\udc00-\udfff][\u0300-\u036f]*|\\\\verb\\*([^]).*?\\3|\\\\verb([^*a-zA-Z]).*?\\4|\\\\operatorname\\*|\\\\[a-zA-Z@]+[ \r\n\t]*|\\\\[^\ud800-\udfff])",la=function(){function t(t,e){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=t,this.settings=e,this.tokenRegex=new RegExp(ha,"g"),this.catcodes={"%":14}}var e=t.prototype;return e.setCatcode=function(t,e){this.catcodes[t]=e},e.lex=function(){var t=this.input,e=this.tokenRegex.lastIndex;if(e===t.length)return new n("EOF",new a(this,e,e));var r=this.tokenRegex.exec(t);if(null===r||r.index!==e)throw new o("Unexpected character: '"+t[e]+"'",new n(t[e],new a(this,e,e+1)));var i=r[2]||" ";if(14===this.catcodes[i]){var s=t.indexOf("\n",this.tokenRegex.lastIndex);return-1===s?(this.tokenRegex.lastIndex=t.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=s+1,this.lex()}var h=i.match(oa);return h&&(i=h[1]),new n(i,new a(this,e,this.tokenRegex.lastIndex))},t}(),ma=function(){function t(t,e){void 0===t&&(t={}),void 0===e&&(e={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=e,this.builtins=t,this.undefStack=[]}var e=t.prototype;return e.beginGroup=function(){this.undefStack.push({})},e.endGroup=function(){if(0===this.undefStack.length)throw new o("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var t=this.undefStack.pop();for(var e in t)t.hasOwnProperty(e)&&(void 0===t[e]?delete this.current[e]:this.current[e]=t[e])},e.has=function(t){return this.current.hasOwnProperty(t)||this.builtins.hasOwnProperty(t)},e.get=function(t){return this.current.hasOwnProperty(t)?this.current[t]:this.builtins[t]},e.set=function(t,e,r){if(void 0===r&&(r=!1),r){for(var a=0;a<this.undefStack.length;a++)delete this.undefStack[a][t];this.undefStack.length>0&&(this.undefStack[this.undefStack.length-1][t]=e)}else{var n=this.undefStack[this.undefStack.length-1];n&&!n.hasOwnProperty(t)&&(n[t]=this.current[t])}this.current[t]=e},t}(),ca={},ua=ca;function pa(t,e){ca[t]=e}pa("\\@firstoftwo",function(t){return{tokens:t.consumeArgs(2)[0],numArgs:0}}),pa("\\@secondoftwo",function(t){return{tokens:t.consumeArgs(2)[1],numArgs:0}}),pa("\\@ifnextchar",function(t){var e=t.consumeArgs(3),r=t.future();return 1===e[0].length&&e[0][0].text===r.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}}),pa("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),pa("\\TextOrMath",function(t){var e=t.consumeArgs(2);return"text"===t.mode?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});var da={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};pa("\\char",function(t){var e,r=t.popToken(),a="";if("'"===r.text)e=8,r=t.popToken();else if('"'===r.text)e=16,r=t.popToken();else if("`"===r.text)if("\\"===(r=t.popToken()).text[0])a=r.text.charCodeAt(1);else{if("EOF"===r.text)throw new o("\\char` missing argument");a=r.text.charCodeAt(0)}else e=10;if(e){if(null==(a=da[r.text])||a>=e)throw new o("Invalid base-"+e+" digit "+r.text);for(var n;null!=(n=da[t.future().text])&&n<e;)a*=e,a+=n,t.popToken()}return"\\@char{"+a+"}"});var fa=function(t,e){var r=t.consumeArgs(1)[0];if(1!==r.length)throw new o("\\gdef's first argument must be a macro name");var a=r[0].text,n=0;for(r=t.consumeArgs(1)[0];1===r.length&&"#"===r[0].text;){if(1!==(r=t.consumeArgs(1)[0]).length)throw new o('Invalid argument number length "'+r.length+'"');if(!/^[1-9]$/.test(r[0].text))throw new o('Invalid argument number "'+r[0].text+'"');if(n++,parseInt(r[0].text)!==n)throw new o('Argument number "'+r[0].text+'" out of order');r=t.consumeArgs(1)[0]}return t.macros.set(a,{tokens:r,numArgs:n},e),""};pa("\\gdef",function(t){return fa(t,!0)}),pa("\\def",function(t){return fa(t,!1)}),pa("\\global",function(t){var e=t.consumeArgs(1)[0];if(1!==e.length)throw new o("Invalid command after \\global");var r=e[0].text;if("\\def"===r)return fa(t,!0);throw new o("Invalid command '"+r+"' after \\global")});var ga=function(t,e,r){var a=t.consumeArgs(1)[0];if(1!==a.length)throw new o("\\newcommand's first argument must be a macro name");var n=a[0].text,i=t.isDefined(n);if(i&&!e)throw new o("\\newcommand{"+n+"} attempting to redefine "+n+"; use \\renewcommand");if(!i&&!r)throw new o("\\renewcommand{"+n+"} when command "+n+" does not yet exist; use \\newcommand");var s=0;if(1===(a=t.consumeArgs(1)[0]).length&&"["===a[0].text){for(var h="",l=t.expandNextToken();"]"!==l.text&&"EOF"!==l.text;)h+=l.text,l=t.expandNextToken();if(!h.match(/^\s*[0-9]+\s*$/))throw new o("Invalid number of arguments: "+h);s=parseInt(h),a=t.consumeArgs(1)[0]}return t.macros.set(n,{tokens:a,numArgs:s}),""};pa("\\newcommand",function(t){return ga(t,!1,!0)}),pa("\\renewcommand",function(t){return ga(t,!0,!1)}),pa("\\providecommand",function(t){return ga(t,!0,!0)}),pa("\\bgroup","{"),pa("\\egroup","}"),pa("\\lq","`"),pa("\\rq","'"),pa("\\aa","\\r a"),pa("\\AA","\\r A"),pa("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xa9}"),pa("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"),pa("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xae}"),pa("\u212c","\\mathscr{B}"),pa("\u2130","\\mathscr{E}"),pa("\u2131","\\mathscr{F}"),pa("\u210b","\\mathscr{H}"),pa("\u2110","\\mathscr{I}"),pa("\u2112","\\mathscr{L}"),pa("\u2133","\\mathscr{M}"),pa("\u211b","\\mathscr{R}"),pa("\u212d","\\mathfrak{C}"),pa("\u210c","\\mathfrak{H}"),pa("\u2128","\\mathfrak{Z}"),pa("\\Bbbk","\\Bbb{k}"),pa("\xb7","\\cdotp"),pa("\\llap","\\mathllap{\\textrm{#1}}"),pa("\\rlap","\\mathrlap{\\textrm{#1}}"),pa("\\clap","\\mathclap{\\textrm{#1}}"),pa("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'),pa("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}"),pa("\\ne","\\neq"),pa("\u2260","\\neq"),pa("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}"),pa("\u2209","\\notin"),pa("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}"),pa("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}"),pa("\u225a","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225a}}"),pa("\u225b","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225b}}"),pa("\u225d","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225d}}"),pa("\u225e","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225e}}"),pa("\u225f","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225f}}"),pa("\u27c2","\\perp"),pa("\u203c","\\mathclose{!\\mkern-0.8mu!}"),pa("\u220c","\\notni"),pa("\u231c","\\ulcorner"),pa("\u231d","\\urcorner"),pa("\u231e","\\llcorner"),pa("\u231f","\\lrcorner"),pa("\xa9","\\copyright"),pa("\xae","\\textregistered"),pa("\ufe0f","\\textregistered"),pa("\\vdots","\\mathord{\\varvdots\\rule{0pt}{15pt}}"),pa("\u22ee","\\vdots"),pa("\\varGamma","\\mathit{\\Gamma}"),pa("\\varDelta","\\mathit{\\Delta}"),pa("\\varTheta","\\mathit{\\Theta}"),pa("\\varLambda","\\mathit{\\Lambda}"),pa("\\varXi","\\mathit{\\Xi}"),pa("\\varPi","\\mathit{\\Pi}"),pa("\\varSigma","\\mathit{\\Sigma}"),pa("\\varUpsilon","\\mathit{\\Upsilon}"),pa("\\varPhi","\\mathit{\\Phi}"),pa("\\varPsi","\\mathit{\\Psi}"),pa("\\varOmega","\\mathit{\\Omega}"),pa("\\substack","\\begin{subarray}{c}#1\\end{subarray}"),pa("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu"),pa("\\boxed","\\fbox{$\\displaystyle{#1}$}"),pa("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;"),pa("\\implies","\\DOTSB\\;\\Longrightarrow\\;"),pa("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");var xa={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};pa("\\dots",function(t){var e="\\dotso",r=t.expandAfterFuture().text;return r in xa?e=xa[r]:"\\not"===r.substr(0,4)?e="\\dotsb":r in j.math&&c.contains(["bin","rel"],j.math[r].group)&&(e="\\dotsb"),e});var va={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};pa("\\dotso",function(t){return t.future().text in va?"\\ldots\\,":"\\ldots"}),pa("\\dotsc",function(t){var e=t.future().text;return e in va&&","!==e?"\\ldots\\,":"\\ldots"}),pa("\\cdots",function(t){return t.future().text in va?"\\@cdots\\,":"\\@cdots"}),pa("\\dotsb","\\cdots"),pa("\\dotsm","\\cdots"),pa("\\dotsi","\\!\\cdots"),pa("\\dotsx","\\ldots\\,"),pa("\\DOTSI","\\relax"),pa("\\DOTSB","\\relax"),pa("\\DOTSX","\\relax"),pa("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),pa("\\,","\\tmspace+{3mu}{.1667em}"),pa("\\thinspace","\\,"),pa("\\>","\\mskip{4mu}"),pa("\\:","\\tmspace+{4mu}{.2222em}"),pa("\\medspace","\\:"),pa("\\;","\\tmspace+{5mu}{.2777em}"),pa("\\thickspace","\\;"),pa("\\!","\\tmspace-{3mu}{.1667em}"),pa("\\negthinspace","\\!"),pa("\\negmedspace","\\tmspace-{4mu}{.2222em}"),pa("\\negthickspace","\\tmspace-{5mu}{.277em}"),pa("\\enspace","\\kern.5em "),pa("\\enskip","\\hskip.5em\\relax"),pa("\\quad","\\hskip1em\\relax"),pa("\\qquad","\\hskip2em\\relax"),pa("\\tag","\\@ifstar\\tag@literal\\tag@paren"),pa("\\tag@paren","\\tag@literal{({#1})}"),pa("\\tag@literal",function(t){if(t.macros.get("\\df@tag"))throw new o("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"}),pa("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),pa("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),pa("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),pa("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),pa("\\pmb","\\html@mathml{\\@binrel{#1}{\\mathrlap{#1}\\kern0.5px#1}}{\\mathbf{#1}}"),pa("\\\\","\\newline"),pa("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var ba=F["Main-Regular"]["T".charCodeAt(0)][1]-.7*F["Main-Regular"]["A".charCodeAt(0)][1]+"em";pa("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+ba+"}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),pa("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+ba+"}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),pa("\\hspace","\\@ifstar\\@hspacer\\@hspace"),pa("\\@hspace","\\hskip #1\\relax"),pa("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),pa("\\ordinarycolon",":"),pa("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),pa("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),pa("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),pa("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),pa("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),pa("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),pa("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),pa("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),pa("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),pa("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),pa("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),pa("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),pa("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),pa("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),pa("\u2237","\\dblcolon"),pa("\u2239","\\eqcolon"),pa("\u2254","\\coloneqq"),pa("\u2255","\\eqqcolon"),pa("\u2a74","\\Coloneqq"),pa("\\ratio","\\vcentcolon"),pa("\\coloncolon","\\dblcolon"),pa("\\colonequals","\\coloneqq"),pa("\\coloncolonequals","\\Coloneqq"),pa("\\equalscolon","\\eqqcolon"),pa("\\equalscoloncolon","\\Eqqcolon"),pa("\\colonminus","\\coloneq"),pa("\\coloncolonminus","\\Coloneq"),pa("\\minuscolon","\\eqcolon"),pa("\\minuscoloncolon","\\Eqcolon"),pa("\\coloncolonapprox","\\Colonapprox"),pa("\\coloncolonsim","\\Colonsim"),pa("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),pa("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),pa("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),pa("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),pa("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220c}}"),pa("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),pa("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),pa("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}"),pa("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}"),pa("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}"),pa("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}"),pa("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}"),pa("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}"),pa("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}"),pa("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}"),pa("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}"),pa("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}"),pa("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228a}"),pa("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2acb}"),pa("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228b}"),pa("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2acc}"),pa("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27e6}}"),pa("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27e7}}"),pa("\u27e6","\\llbracket"),pa("\u27e7","\\rrbracket"),pa("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}"),pa("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}"),pa("\u2983","\\lBrace"),pa("\u2984","\\rBrace"),pa("\\darr","\\downarrow"),pa("\\dArr","\\Downarrow"),pa("\\Darr","\\Downarrow"),pa("\\lang","\\langle"),pa("\\rang","\\rangle"),pa("\\uarr","\\uparrow"),pa("\\uArr","\\Uparrow"),pa("\\Uarr","\\Uparrow"),pa("\\N","\\mathbb{N}"),pa("\\R","\\mathbb{R}"),pa("\\Z","\\mathbb{Z}"),pa("\\alef","\\aleph"),pa("\\alefsym","\\aleph"),pa("\\Alpha","\\mathrm{A}"),pa("\\Beta","\\mathrm{B}"),pa("\\bull","\\bullet"),pa("\\Chi","\\mathrm{X}"),pa("\\clubs","\\clubsuit"),pa("\\cnums","\\mathbb{C}"),pa("\\Complex","\\mathbb{C}"),pa("\\Dagger","\\ddagger"),pa("\\diamonds","\\diamondsuit"),pa("\\empty","\\emptyset"),pa("\\Epsilon","\\mathrm{E}"),pa("\\Eta","\\mathrm{H}"),pa("\\exist","\\exists"),pa("\\harr","\\leftrightarrow"),pa("\\hArr","\\Leftrightarrow"),pa("\\Harr","\\Leftrightarrow"),pa("\\hearts","\\heartsuit"),pa("\\image","\\Im"),pa("\\infin","\\infty"),pa("\\Iota","\\mathrm{I}"),pa("\\isin","\\in"),pa("\\Kappa","\\mathrm{K}"),pa("\\larr","\\leftarrow"),pa("\\lArr","\\Leftarrow"),pa("\\Larr","\\Leftarrow"),pa("\\lrarr","\\leftrightarrow"),pa("\\lrArr","\\Leftrightarrow"),pa("\\Lrarr","\\Leftrightarrow"),pa("\\Mu","\\mathrm{M}"),pa("\\natnums","\\mathbb{N}"),pa("\\Nu","\\mathrm{N}"),pa("\\Omicron","\\mathrm{O}"),pa("\\plusmn","\\pm"),pa("\\rarr","\\rightarrow"),pa("\\rArr","\\Rightarrow"),pa("\\Rarr","\\Rightarrow"),pa("\\real","\\Re"),pa("\\reals","\\mathbb{R}"),pa("\\Reals","\\mathbb{R}"),pa("\\Rho","\\mathrm{P}"),pa("\\sdot","\\cdot"),pa("\\sect","\\S"),pa("\\spades","\\spadesuit"),pa("\\sub","\\subset"),pa("\\sube","\\subseteq"),pa("\\supe","\\supseteq"),pa("\\Tau","\\mathrm{T}"),pa("\\thetasym","\\vartheta"),pa("\\weierp","\\wp"),pa("\\Zeta","\\mathrm{Z}"),pa("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),pa("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),pa("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),pa("\\blue","\\textcolor{##6495ed}{#1}"),pa("\\orange","\\textcolor{##ffa500}{#1}"),pa("\\pink","\\textcolor{##ff00af}{#1}"),pa("\\red","\\textcolor{##df0030}{#1}"),pa("\\green","\\textcolor{##28ae7b}{#1}"),pa("\\gray","\\textcolor{gray}{#1}"),pa("\\purple","\\textcolor{##9d38bd}{#1}"),pa("\\blueA","\\textcolor{##ccfaff}{#1}"),pa("\\blueB","\\textcolor{##80f6ff}{#1}"),pa("\\blueC","\\textcolor{##63d9ea}{#1}"),pa("\\blueD","\\textcolor{##11accd}{#1}"),pa("\\blueE","\\textcolor{##0c7f99}{#1}"),pa("\\tealA","\\textcolor{##94fff5}{#1}"),pa("\\tealB","\\textcolor{##26edd5}{#1}"),pa("\\tealC","\\textcolor{##01d1c1}{#1}"),pa("\\tealD","\\textcolor{##01a995}{#1}"),pa("\\tealE","\\textcolor{##208170}{#1}"),pa("\\greenA","\\textcolor{##b6ffb0}{#1}"),pa("\\greenB","\\textcolor{##8af281}{#1}"),pa("\\greenC","\\textcolor{##74cf70}{#1}"),pa("\\greenD","\\textcolor{##1fab54}{#1}"),pa("\\greenE","\\textcolor{##0d923f}{#1}"),pa("\\goldA","\\textcolor{##ffd0a9}{#1}"),pa("\\goldB","\\textcolor{##ffbb71}{#1}"),pa("\\goldC","\\textcolor{##ff9c39}{#1}"),pa("\\goldD","\\textcolor{##e07d10}{#1}"),pa("\\goldE","\\textcolor{##a75a05}{#1}"),pa("\\redA","\\textcolor{##fca9a9}{#1}"),pa("\\redB","\\textcolor{##ff8482}{#1}"),pa("\\redC","\\textcolor{##f9685d}{#1}"),pa("\\redD","\\textcolor{##e84d39}{#1}"),pa("\\redE","\\textcolor{##bc2612}{#1}"),pa("\\maroonA","\\textcolor{##ffbde0}{#1}"),pa("\\maroonB","\\textcolor{##ff92c6}{#1}"),pa("\\maroonC","\\textcolor{##ed5fa6}{#1}"),pa("\\maroonD","\\textcolor{##ca337c}{#1}"),pa("\\maroonE","\\textcolor{##9e034e}{#1}"),pa("\\purpleA","\\textcolor{##ddd7ff}{#1}"),pa("\\purpleB","\\textcolor{##c6b9fc}{#1}"),pa("\\purpleC","\\textcolor{##aa87ff}{#1}"),pa("\\purpleD","\\textcolor{##7854ab}{#1}"),pa("\\purpleE","\\textcolor{##543b78}{#1}"),pa("\\mintA","\\textcolor{##f5f9e8}{#1}"),pa("\\mintB","\\textcolor{##edf2df}{#1}"),pa("\\mintC","\\textcolor{##e0e5cc}{#1}"),pa("\\grayA","\\textcolor{##f6f7f7}{#1}"),pa("\\grayB","\\textcolor{##f0f1f2}{#1}"),pa("\\grayC","\\textcolor{##e3e5e6}{#1}"),pa("\\grayD","\\textcolor{##d6d8da}{#1}"),pa("\\grayE","\\textcolor{##babec2}{#1}"),pa("\\grayF","\\textcolor{##888d93}{#1}"),pa("\\grayG","\\textcolor{##626569}{#1}"),pa("\\grayH","\\textcolor{##3b3e40}{#1}"),pa("\\grayI","\\textcolor{##21242c}{#1}"),pa("\\kaBlue","\\textcolor{##314453}{#1}"),pa("\\kaGreen","\\textcolor{##71B307}{#1}");var ya={"\\relax":!0,"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},wa=function(){function t(t,e,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=e,this.expansionCount=0,this.feed(t),this.macros=new ma(ua,e.macros),this.mode=r,this.stack=[]}var e=t.prototype;return e.feed=function(t){this.lexer=new la(t,this.settings)},e.switchMode=function(t){this.mode=t},e.beginGroup=function(){this.macros.beginGroup()},e.endGroup=function(){this.macros.endGroup()},e.future=function(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]},e.popToken=function(){return this.future(),this.stack.pop()},e.pushToken=function(t){this.stack.push(t)},e.pushTokens=function(t){var e;(e=this.stack).push.apply(e,t)},e.consumeSpaces=function(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}},e.consumeArgs=function(t){for(var e=[],r=0;r<t;++r){this.consumeSpaces();var a=this.popToken();if("{"===a.text){for(var n=[],i=1;0!==i;){var s=this.popToken();if(n.push(s),"{"===s.text)++i;else if("}"===s.text)--i;else if("EOF"===s.text)throw new o("End of input in macro argument",a)}n.pop(),n.reverse(),e[r]=n}else{if("EOF"===a.text)throw new o("End of input expecting macro argument");e[r]=[a]}}return e},e.expandOnce=function(){var t=this.popToken(),e=t.text,r=this._getExpansion(e);if(null==r)return this.pushToken(t),t;if(this.expansionCount++,this.expansionCount>this.settings.maxExpand)throw new o("Too many expansions: infinite loop or need to increase maxExpand setting");var a=r.tokens;if(r.numArgs)for(var n=this.consumeArgs(r.numArgs),i=(a=a.slice()).length-1;i>=0;--i){var s=a[i];if("#"===s.text){if(0===i)throw new o("Incomplete placeholder at end of macro body",s);if("#"===(s=a[--i]).text)a.splice(i+1,1);else{if(!/^[1-9]$/.test(s.text))throw new o("Not a valid argument number",s);var h;(h=a).splice.apply(h,[i,2].concat(n[+s.text-1]))}}}return this.pushTokens(a),a},e.expandAfterFuture=function(){return this.expandOnce(),this.future()},e.expandNextToken=function(){for(;;){var t=this.expandOnce();if(t instanceof n){if("\\relax"!==t.text)return this.stack.pop();this.stack.pop()}}throw new Error},e.expandMacro=function(t){if(this.macros.get(t)){var e=[],r=this.stack.length;for(this.pushToken(new n(t));this.stack.length>r;){this.expandOnce()instanceof n&&e.push(this.stack.pop())}return e}},e.expandMacroAsText=function(t){var e=this.expandMacro(t);return e?e.map(function(t){return t.text}).join(""):e},e._getExpansion=function(t){var e=this.macros.get(t);if(null==e)return e;var r="function"==typeof e?e(this):e;if("string"==typeof r){var a=0;if(-1!==r.indexOf("#"))for(var n=r.replace(/##/g,"");-1!==n.indexOf("#"+(a+1));)++a;for(var i=new la(r,this.settings),o=[],s=i.lex();"EOF"!==s.text;)o.push(s),s=i.lex();return o.reverse(),{tokens:o,numArgs:a}}return r},e.isDefined=function(t){return this.macros.has(t)||ia.hasOwnProperty(t)||j.math.hasOwnProperty(t)||j.text.hasOwnProperty(t)||ya.hasOwnProperty(t)},t}(),ka={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030c":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030a":{text:"\\r",math:"\\mathring"},"\u030b":{text:"\\H"}},Sa={"\xe1":"a\u0301","\xe0":"a\u0300","\xe4":"a\u0308","\u01df":"a\u0308\u0304","\xe3":"a\u0303","\u0101":"a\u0304","\u0103":"a\u0306","\u1eaf":"a\u0306\u0301","\u1eb1":"a\u0306\u0300","\u1eb5":"a\u0306\u0303","\u01ce":"a\u030c","\xe2":"a\u0302","\u1ea5":"a\u0302\u0301","\u1ea7":"a\u0302\u0300","\u1eab":"a\u0302\u0303","\u0227":"a\u0307","\u01e1":"a\u0307\u0304","\xe5":"a\u030a","\u01fb":"a\u030a\u0301","\u1e03":"b\u0307","\u0107":"c\u0301","\u010d":"c\u030c","\u0109":"c\u0302","\u010b":"c\u0307","\u010f":"d\u030c","\u1e0b":"d\u0307","\xe9":"e\u0301","\xe8":"e\u0300","\xeb":"e\u0308","\u1ebd":"e\u0303","\u0113":"e\u0304","\u1e17":"e\u0304\u0301","\u1e15":"e\u0304\u0300","\u0115":"e\u0306","\u011b":"e\u030c","\xea":"e\u0302","\u1ebf":"e\u0302\u0301","\u1ec1":"e\u0302\u0300","\u1ec5":"e\u0302\u0303","\u0117":"e\u0307","\u1e1f":"f\u0307","\u01f5":"g\u0301","\u1e21":"g\u0304","\u011f":"g\u0306","\u01e7":"g\u030c","\u011d":"g\u0302","\u0121":"g\u0307","\u1e27":"h\u0308","\u021f":"h\u030c","\u0125":"h\u0302","\u1e23":"h\u0307","\xed":"i\u0301","\xec":"i\u0300","\xef":"i\u0308","\u1e2f":"i\u0308\u0301","\u0129":"i\u0303","\u012b":"i\u0304","\u012d":"i\u0306","\u01d0":"i\u030c","\xee":"i\u0302","\u01f0":"j\u030c","\u0135":"j\u0302","\u1e31":"k\u0301","\u01e9":"k\u030c","\u013a":"l\u0301","\u013e":"l\u030c","\u1e3f":"m\u0301","\u1e41":"m\u0307","\u0144":"n\u0301","\u01f9":"n\u0300","\xf1":"n\u0303","\u0148":"n\u030c","\u1e45":"n\u0307","\xf3":"o\u0301","\xf2":"o\u0300","\xf6":"o\u0308","\u022b":"o\u0308\u0304","\xf5":"o\u0303","\u1e4d":"o\u0303\u0301","\u1e4f":"o\u0303\u0308","\u022d":"o\u0303\u0304","\u014d":"o\u0304","\u1e53":"o\u0304\u0301","\u1e51":"o\u0304\u0300","\u014f":"o\u0306","\u01d2":"o\u030c","\xf4":"o\u0302","\u1ed1":"o\u0302\u0301","\u1ed3":"o\u0302\u0300","\u1ed7":"o\u0302\u0303","\u022f":"o\u0307","\u0231":"o\u0307\u0304","\u0151":"o\u030b","\u1e55":"p\u0301","\u1e57":"p\u0307","\u0155":"r\u0301","\u0159":"r\u030c","\u1e59":"r\u0307","\u015b":"s\u0301","\u1e65":"s\u0301\u0307","\u0161":"s\u030c","\u1e67":"s\u030c\u0307","\u015d":"s\u0302","\u1e61":"s\u0307","\u1e97":"t\u0308","\u0165":"t\u030c","\u1e6b":"t\u0307","\xfa":"u\u0301","\xf9":"u\u0300","\xfc":"u\u0308","\u01d8":"u\u0308\u0301","\u01dc":"u\u0308\u0300","\u01d6":"u\u0308\u0304","\u01da":"u\u0308\u030c","\u0169":"u\u0303","\u1e79":"u\u0303\u0301","\u016b":"u\u0304","\u1e7b":"u\u0304\u0308","\u016d":"u\u0306","\u01d4":"u\u030c","\xfb":"u\u0302","\u016f":"u\u030a","\u0171":"u\u030b","\u1e7d":"v\u0303","\u1e83":"w\u0301","\u1e81":"w\u0300","\u1e85":"w\u0308","\u0175":"w\u0302","\u1e87":"w\u0307","\u1e98":"w\u030a","\u1e8d":"x\u0308","\u1e8b":"x\u0307","\xfd":"y\u0301","\u1ef3":"y\u0300","\xff":"y\u0308","\u1ef9":"y\u0303","\u0233":"y\u0304","\u0177":"y\u0302","\u1e8f":"y\u0307","\u1e99":"y\u030a","\u017a":"z\u0301","\u017e":"z\u030c","\u1e91":"z\u0302","\u017c":"z\u0307","\xc1":"A\u0301","\xc0":"A\u0300","\xc4":"A\u0308","\u01de":"A\u0308\u0304","\xc3":"A\u0303","\u0100":"A\u0304","\u0102":"A\u0306","\u1eae":"A\u0306\u0301","\u1eb0":"A\u0306\u0300","\u1eb4":"A\u0306\u0303","\u01cd":"A\u030c","\xc2":"A\u0302","\u1ea4":"A\u0302\u0301","\u1ea6":"A\u0302\u0300","\u1eaa":"A\u0302\u0303","\u0226":"A\u0307","\u01e0":"A\u0307\u0304","\xc5":"A\u030a","\u01fa":"A\u030a\u0301","\u1e02":"B\u0307","\u0106":"C\u0301","\u010c":"C\u030c","\u0108":"C\u0302","\u010a":"C\u0307","\u010e":"D\u030c","\u1e0a":"D\u0307","\xc9":"E\u0301","\xc8":"E\u0300","\xcb":"E\u0308","\u1ebc":"E\u0303","\u0112":"E\u0304","\u1e16":"E\u0304\u0301","\u1e14":"E\u0304\u0300","\u0114":"E\u0306","\u011a":"E\u030c","\xca":"E\u0302","\u1ebe":"E\u0302\u0301","\u1ec0":"E\u0302\u0300","\u1ec4":"E\u0302\u0303","\u0116":"E\u0307","\u1e1e":"F\u0307","\u01f4":"G\u0301","\u1e20":"G\u0304","\u011e":"G\u0306","\u01e6":"G\u030c","\u011c":"G\u0302","\u0120":"G\u0307","\u1e26":"H\u0308","\u021e":"H\u030c","\u0124":"H\u0302","\u1e22":"H\u0307","\xcd":"I\u0301","\xcc":"I\u0300","\xcf":"I\u0308","\u1e2e":"I\u0308\u0301","\u0128":"I\u0303","\u012a":"I\u0304","\u012c":"I\u0306","\u01cf":"I\u030c","\xce":"I\u0302","\u0130":"I\u0307","\u0134":"J\u0302","\u1e30":"K\u0301","\u01e8":"K\u030c","\u0139":"L\u0301","\u013d":"L\u030c","\u1e3e":"M\u0301","\u1e40":"M\u0307","\u0143":"N\u0301","\u01f8":"N\u0300","\xd1":"N\u0303","\u0147":"N\u030c","\u1e44":"N\u0307","\xd3":"O\u0301","\xd2":"O\u0300","\xd6":"O\u0308","\u022a":"O\u0308\u0304","\xd5":"O\u0303","\u1e4c":"O\u0303\u0301","\u1e4e":"O\u0303\u0308","\u022c":"O\u0303\u0304","\u014c":"O\u0304","\u1e52":"O\u0304\u0301","\u1e50":"O\u0304\u0300","\u014e":"O\u0306","\u01d1":"O\u030c","\xd4":"O\u0302","\u1ed0":"O\u0302\u0301","\u1ed2":"O\u0302\u0300","\u1ed6":"O\u0302\u0303","\u022e":"O\u0307","\u0230":"O\u0307\u0304","\u0150":"O\u030b","\u1e54":"P\u0301","\u1e56":"P\u0307","\u0154":"R\u0301","\u0158":"R\u030c","\u1e58":"R\u0307","\u015a":"S\u0301","\u1e64":"S\u0301\u0307","\u0160":"S\u030c","\u1e66":"S\u030c\u0307","\u015c":"S\u0302","\u1e60":"S\u0307","\u0164":"T\u030c","\u1e6a":"T\u0307","\xda":"U\u0301","\xd9":"U\u0300","\xdc":"U\u0308","\u01d7":"U\u0308\u0301","\u01db":"U\u0308\u0300","\u01d5":"U\u0308\u0304","\u01d9":"U\u0308\u030c","\u0168":"U\u0303","\u1e78":"U\u0303\u0301","\u016a":"U\u0304","\u1e7a":"U\u0304\u0308","\u016c":"U\u0306","\u01d3":"U\u030c","\xdb":"U\u0302","\u016e":"U\u030a","\u0170":"U\u030b","\u1e7c":"V\u0303","\u1e82":"W\u0301","\u1e80":"W\u0300","\u1e84":"W\u0308","\u0174":"W\u0302","\u1e86":"W\u0307","\u1e8c":"X\u0308","\u1e8a":"X\u0307","\xdd":"Y\u0301","\u1ef2":"Y\u0300","\u0178":"Y\u0308","\u1ef8":"Y\u0303","\u0232":"Y\u0304","\u0176":"Y\u0302","\u1e8e":"Y\u0307","\u0179":"Z\u0301","\u017d":"Z\u030c","\u1e90":"Z\u0302","\u017b":"Z\u0307","\u03ac":"\u03b1\u0301","\u1f70":"\u03b1\u0300","\u1fb1":"\u03b1\u0304","\u1fb0":"\u03b1\u0306","\u03ad":"\u03b5\u0301","\u1f72":"\u03b5\u0300","\u03ae":"\u03b7\u0301","\u1f74":"\u03b7\u0300","\u03af":"\u03b9\u0301","\u1f76":"\u03b9\u0300","\u03ca":"\u03b9\u0308","\u0390":"\u03b9\u0308\u0301","\u1fd2":"\u03b9\u0308\u0300","\u1fd1":"\u03b9\u0304","\u1fd0":"\u03b9\u0306","\u03cc":"\u03bf\u0301","\u1f78":"\u03bf\u0300","\u03cd":"\u03c5\u0301","\u1f7a":"\u03c5\u0300","\u03cb":"\u03c5\u0308","\u03b0":"\u03c5\u0308\u0301","\u1fe2":"\u03c5\u0308\u0300","\u1fe1":"\u03c5\u0304","\u1fe0":"\u03c5\u0306","\u03ce":"\u03c9\u0301","\u1f7c":"\u03c9\u0300","\u038e":"\u03a5\u0301","\u1fea":"\u03a5\u0300","\u03ab":"\u03a5\u0308","\u1fe9":"\u03a5\u0304","\u1fe8":"\u03a5\u0306","\u038f":"\u03a9\u0301","\u1ffa":"\u03a9\u0300"},Ma=function(){function t(t,e){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new wa(t,e,this.mode),this.settings=e,this.leftrightDepth=0}var e=t.prototype;return e.expect=function(t,e){if(void 0===e&&(e=!0),this.fetch().text!==t)throw new o("Expected '"+t+"', got '"+this.fetch().text+"'",this.fetch());e&&this.consume()},e.consume=function(){this.nextToken=null},e.fetch=function(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken},e.switchMode=function(t){this.mode=t,this.gullet.switchMode(t)},e.parse=function(){this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");var t=this.parseExpression(!1);return this.expect("EOF"),this.gullet.endGroup(),t},e.parseExpression=function(e,r){for(var a=[];;){"math"===this.mode&&this.consumeSpaces();var n=this.fetch();if(-1!==t.endOfExpression.indexOf(n.text))break;if(r&&n.text===r)break;if(e&&ia[n.text]&&ia[n.text].infix)break;var i=this.parseAtom(r);if(!i)break;a.push(i)}return"text"===this.mode&&this.formLigatures(a),this.handleInfixNodes(a)},e.handleInfixNodes=function(t){for(var e,r=-1,a=0;a<t.length;a++){var n=Vt(t[a],"infix");if(n){if(-1!==r)throw new o("only one infix operator per group",n.token);r=a,e=n.replaceWith}}if(-1!==r&&e){var i,s,h=t.slice(0,r),l=t.slice(r+1);return i=1===h.length&&"ordgroup"===h[0].type?h[0]:{type:"ordgroup",mode:this.mode,body:h},s=1===l.length&&"ordgroup"===l[0].type?l[0]:{type:"ordgroup",mode:this.mode,body:l},["\\\\abovefrac"===e?this.callFunction(e,[i,t[r],s],[]):this.callFunction(e,[i,s],[])]}return t},e.handleSupSubscript=function(e){var r=this.fetch(),a=r.text;this.consume();var n=this.parseGroup(e,!1,t.SUPSUB_GREEDINESS,void 0,void 0,!0);if(!n)throw new o("Expected group after '"+a+"'",r);return n},e.formatUnsupportedCmd=function(t){for(var e=[],r=0;r<t.length;r++)e.push({type:"textord",mode:"text",text:t[r]});var a={type:"text",mode:this.mode,body:e};return{type:"color",mode:this.mode,color:this.settings.errorColor,body:[a]}},e.parseAtom=function(t){var e,r,a=this.parseGroup("atom",!1,null,t);if("text"===this.mode)return a;for(;;){this.consumeSpaces();var n=this.fetch();if("\\limits"===n.text||"\\nolimits"===n.text){var i=Vt(a,"op");if(i){var s="\\limits"===n.text;i.limits=s,i.alwaysHandleSupSub=!0}else{if(!(i=Vt(a,"operatorname"))||!i.alwaysHandleSupSub)throw new o("Limit controls must follow a math operator",n);var h="\\limits"===n.text;i.limits=h}this.consume()}else if("^"===n.text){if(e)throw new o("Double superscript",n);e=this.handleSupSubscript("superscript")}else if("_"===n.text){if(r)throw new o("Double subscript",n);r=this.handleSupSubscript("subscript")}else{if("'"!==n.text)break;if(e)throw new o("Double superscript",n);var l={type:"textord",mode:this.mode,text:"\\prime"},m=[l];for(this.consume();"'"===this.fetch().text;)m.push(l),this.consume();"^"===this.fetch().text&&m.push(this.handleSupSubscript("superscript")),e={type:"ordgroup",mode:this.mode,body:m}}}return e||r?{type:"supsub",mode:this.mode,base:a,sup:e,sub:r}:a},e.parseFunction=function(t,e,r){var a=this.fetch(),n=a.text,i=ia[n];if(!i)return null;if(this.consume(),null!=r&&i.greediness<=r)throw new o("Got function '"+n+"' with no arguments"+(e?" as "+e:""),a);if("text"===this.mode&&!i.allowedInText)throw new o("Can't use function '"+n+"' in text mode",a);if("math"===this.mode&&!1===i.allowedInMath)throw new o("Can't use function '"+n+"' in math mode",a);var s=this.parseArguments(n,i),h=s.args,l=s.optArgs;return this.callFunction(n,h,l,a,t)},e.callFunction=function(t,e,r,a,n){var i={funcName:t,parser:this,token:a,breakOnTokenText:n},s=ia[t];if(s&&s.handler)return s.handler(i,e,r);throw new o("No function handler for "+t)},e.parseArguments=function(t,e){var r=e.numArgs+e.numOptionalArgs;if(0===r)return{args:[],optArgs:[]};for(var a=e.greediness,n=[],i=[],s=0;s<r;s++){var h=e.argTypes&&e.argTypes[s],l=s<e.numOptionalArgs,m=s>0&&!l||0===s&&!l&&"math"===this.mode,c=this.parseGroupOfType("argument to '"+t+"'",h,l,a,m);if(!c){if(l){i.push(null);continue}throw new o("Expected group after '"+t+"'",this.fetch())}(l?i:n).push(c)}return{args:n,optArgs:i}},e.parseGroupOfType=function(t,e,r,a,n){switch(e){case"color":return n&&this.consumeSpaces(),this.parseColorGroup(r);case"size":return n&&this.consumeSpaces(),this.parseSizeGroup(r);case"url":return this.parseUrlGroup(r,n);case"math":case"text":return this.parseGroup(t,r,a,void 0,e,n);case"hbox":var i=this.parseGroup(t,r,a,void 0,"text",n);return i?{type:"styling",mode:i.mode,body:[i],style:"text"}:i;case"raw":if(n&&this.consumeSpaces(),r&&"{"===this.fetch().text)return null;var s=this.parseStringGroup("raw",r,!0);if(s)return{type:"raw",mode:"text",string:s.text};throw new o("Expected raw group",this.fetch());case"original":case null:case void 0:return this.parseGroup(t,r,a,void 0,void 0,n);default:throw new o("Unknown group type as "+t,this.fetch())}},e.consumeSpaces=function(){for(;" "===this.fetch().text;)this.consume()},e.parseStringGroup=function(t,e,r){var a=e?"[":"{",n=e?"]":"}",i=this.fetch();if(i.text!==a){if(e)return null;if(r&&"EOF"!==i.text&&/[^{}[\]]/.test(i.text))return this.consume(),i}var s=this.mode;this.mode="text",this.expect(a);for(var h,l="",m=this.fetch(),c=0,u=m;(h=this.fetch()).text!==n||r&&c>0;){switch(h.text){case"EOF":throw new o("Unexpected end of input in "+t,m.range(u,l));case a:c++;break;case n:c--}l+=(u=h).text,this.consume()}return this.expect(n),this.mode=s,m.range(u,l)},e.parseRegexGroup=function(t,e){var r=this.mode;this.mode="text";for(var a,n=this.fetch(),i=n,s="";"EOF"!==(a=this.fetch()).text&&t.test(s+a.text);)s+=(i=a).text,this.consume();if(""===s)throw new o("Invalid "+e+": '"+n.text+"'",n);return this.mode=r,n.range(i,s)},e.parseColorGroup=function(t){var e=this.parseStringGroup("color",t);if(!e)return null;var r=/^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(e.text);if(!r)throw new o("Invalid color: '"+e.text+"'",e);var a=r[0];return/^[0-9a-f]{6}$/i.test(a)&&(a="#"+a),{type:"color-token",mode:this.mode,color:a}},e.parseSizeGroup=function(t){var e,r=!1;if(!(e=t||"{"===this.fetch().text?this.parseStringGroup("size",t):this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size")))return null;t||0!==e.text.length||(e.text="0pt",r=!0);var a=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e.text);if(!a)throw new o("Invalid size: '"+e.text+"'",e);var n={number:+(a[1]+a[2]),unit:a[3]};if(!At(n))throw new o("Invalid unit: '"+n.unit+"'",e);return{type:"size",mode:this.mode,value:n,isBlank:r}},e.parseUrlGroup=function(t,e){this.gullet.lexer.setCatcode("%",13);var r=this.parseStringGroup("url",t,!0);if(this.gullet.lexer.setCatcode("%",14),!r)return null;var a=r.text.replace(/\\([#$%&~_^{}])/g,"$1");return{type:"url",mode:this.mode,url:a}},e.parseGroup=function(e,r,n,i,s,h){var l=this.mode;s&&this.switchMode(s),h&&this.consumeSpaces();var m,c=this.fetch(),u=c.text;if(r?"["===u:"{"===u||"\\begingroup"===u){this.consume();var p=t.endOfGroup[u];this.gullet.beginGroup();var d=this.parseExpression(!1,p),f=this.fetch();this.expect(p),this.gullet.endGroup(),m={type:"ordgroup",mode:this.mode,loc:a.range(c,f),body:d,semisimple:"\\begingroup"===u||void 0}}else if(r)m=null;else if(null==(m=this.parseFunction(i,e,n)||this.parseSymbol())&&"\\"===u[0]&&!ya.hasOwnProperty(u)){if(this.settings.throwOnError)throw new o("Undefined control sequence: "+u,c);m=this.formatUnsupportedCmd(u),this.consume()}return s&&this.switchMode(l),m},e.formLigatures=function(t){for(var e=t.length-1,r=0;r<e;++r){var n=t[r],i=n.text;"-"===i&&"-"===t[r+1].text&&(r+1<e&&"-"===t[r+2].text?(t.splice(r,3,{type:"textord",mode:"text",loc:a.range(n,t[r+2]),text:"---"}),e-=2):(t.splice(r,2,{type:"textord",mode:"text",loc:a.range(n,t[r+1]),text:"--"}),e-=1)),"'"!==i&&"`"!==i||t[r+1].text!==i||(t.splice(r,2,{type:"textord",mode:"text",loc:a.range(n,t[r+1]),text:i+i}),e-=1)}},e.parseSymbol=function(){var t=this.fetch(),e=t.text;if(/^\\verb[^a-zA-Z]/.test(e)){this.consume();var r=e.slice(5),n="*"===r.charAt(0);if(n&&(r=r.slice(1)),r.length<2||r.charAt(0)!==r.slice(-1))throw new o("\\verb assertion failed --\n                    please report what input caused this bug");return{type:"verb",mode:"text",body:r=r.slice(1,-1),star:n}}Sa.hasOwnProperty(e[0])&&!j[this.mode][e[0]]&&(this.settings.strict&&"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Accented Unicode text character "'+e[0]+'" used in math mode',t),e=Sa[e[0]]+e.substr(1));var i,s=sa.exec(e);if(s&&("i"===(e=e.substring(0,s.index))?e="\u0131":"j"===e&&(e="\u0237")),j[this.mode][e]){this.settings.strict&&"math"===this.mode&&"\xc7\xd0\xde\xe7\xfe".indexOf(e)>=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+e[0]+'" used in math mode',t);var h,l=j[this.mode][e].group,m=a.range(t);if(W.hasOwnProperty(l)){var c=l;h={type:"atom",mode:this.mode,family:c,loc:m,text:e}}else h={type:l,mode:this.mode,loc:m,text:e};i=h}else{if(!(e.charCodeAt(0)>=128))return null;this.settings.strict&&(M(e.charCodeAt(0))?"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+e[0]+'" used in math mode',t):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+e[0]+'" ('+e.charCodeAt(0)+")",t)),i={type:"textord",mode:"text",loc:a.range(t),text:e}}if(this.consume(),s)for(var u=0;u<s[0].length;u++){var p=s[0][u];if(!ka[p])throw new o("Unknown accent ' "+p+"'",t);var d=ka[p][this.mode];if(!d)throw new o("Accent "+p+" unsupported in "+this.mode+" mode",t);i={type:"accent",mode:this.mode,loc:a.range(t),label:d,isStretchy:!1,isShifty:!0,base:i}}return i},t}();Ma.endOfExpression=["}","\\endgroup","\\end","\\right","&"],Ma.endOfGroup={"[":"]","{":"}","\\begingroup":"\\endgroup"},Ma.SUPSUB_GREEDINESS=1;var za=function(t,e){if(!("string"==typeof t||t instanceof String))throw new TypeError("KaTeX can only parse string typed expression");var r=new Ma(t,e);delete r.gullet.macros.current["\\df@tag"];var a=r.parse();if(r.gullet.macros.get("\\df@tag")){if(!e.displayMode)throw new o("\\tag works only in display equations");r.gullet.feed("\\df@tag"),a=[{type:"tag",mode:"text",body:a,tag:r.parse()}]}return a},Aa=function(t,e,r){e.textContent="";var a=Ba(t,r).toNode();e.appendChild(a)};"undefined"!=typeof document&&"CSS1Compat"!==document.compatMode&&("undefined"!=typeof console&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."),Aa=function(){throw new o("KaTeX doesn't work in quirks mode.")});var Ta=function(t,e,r){if(r.throwOnError||!(t instanceof o))throw t;var a=Dt.makeSpan(["katex-error"],[new E(e)]);return a.setAttribute("title",t.toString()),a.setAttribute("style","color:"+r.errorColor),a},Ba=function(t,e){var r=new u(e);try{var a=za(t,r);return Be(a,t,r)}catch(e){return Ta(e,t,r)}},Ca={version:"0.11.1",render:Aa,renderToString:function(t,e){return Ba(t,e).toMarkup()},ParseError:o,__parse:function(t,e){var r=new u(e);return za(t,r)},__renderToDomTree:Ba,__renderToHTMLTree:function(t,e){var r=new u(e);try{return function(t,e,r){var a=de(t,Ae(r)),n=Dt.makeSpan(["katex"],[a]);return Te(n,r)}(za(t,r),0,r)}catch(e){return Ta(e,t,r)}},__setFontMetrics:function(t,e){F[t]=e},__defineSymbol:$,__defineMacro:pa,__domTree:{Span:N,Anchor:I,SymbolNode:E,SvgNode:L,PathNode:H,LineNode:P}};e.default=Ca}]).default});
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/katex/katex.mjs b/node_modules/mavon-editor/dist/katex/katex.mjs
new file mode 100644
index 0000000..dc7eebb
--- /dev/null
+++ b/node_modules/mavon-editor/dist/katex/katex.mjs
@@ -0,0 +1,17021 @@
+/**
+ * Lexing or parsing positional information for error reporting.
+ * This object is immutable.
+ */
+class SourceLocation {
+  // The + prefix indicates that these fields aren't writeable
+  // Lexer holding the input string.
+  // Start offset, zero-based inclusive.
+  // End offset, zero-based exclusive.
+  constructor(lexer, start, end) {
+    this.lexer = void 0;
+    this.start = void 0;
+    this.end = void 0;
+    this.lexer = lexer;
+    this.start = start;
+    this.end = end;
+  }
+  /**
+   * Merges two `SourceLocation`s from location providers, given they are
+   * provided in order of appearance.
+   * - Returns the first one's location if only the first is provided.
+   * - Returns a merged range of the first and the last if both are provided
+   *   and their lexers match.
+   * - Otherwise, returns null.
+   */
+
+
+  static range(first, second) {
+    if (!second) {
+      return first && first.loc;
+    } else if (!first || !first.loc || !second.loc || first.loc.lexer !== second.loc.lexer) {
+      return null;
+    } else {
+      return new SourceLocation(first.loc.lexer, first.loc.start, second.loc.end);
+    }
+  }
+
+}
+
+/**
+ * Interface required to break circular dependency between Token, Lexer, and
+ * ParseError.
+ */
+
+/**
+ * The resulting token returned from `lex`.
+ *
+ * It consists of the token text plus some position information.
+ * The position information is essentially a range in an input string,
+ * but instead of referencing the bare input string, we refer to the lexer.
+ * That way it is possible to attach extra metadata to the input string,
+ * like for example a file name or similar.
+ *
+ * The position information is optional, so it is OK to construct synthetic
+ * tokens if appropriate. Not providing available position information may
+ * lead to degraded error reporting, though.
+ */
+class Token {
+  constructor(text, // the text of this token
+  loc) {
+    this.text = void 0;
+    this.loc = void 0;
+    this.text = text;
+    this.loc = loc;
+  }
+  /**
+   * Given a pair of tokens (this and endToken), compute a `Token` encompassing
+   * the whole input range enclosed by these two.
+   */
+
+
+  range(endToken, // last token of the range, inclusive
+  text) // the text of the newly constructed token
+  {
+    return new Token(text, SourceLocation.range(this, endToken));
+  }
+
+}
+
+/**
+ * This is the ParseError class, which is the main error thrown by KaTeX
+ * functions when something has gone wrong. This is used to distinguish internal
+ * errors from errors in the expression that the user provided.
+ *
+ * If possible, a caller should provide a Token or ParseNode with information
+ * about where in the source string the problem occurred.
+ */
+class ParseError {
+  // Error position based on passed-in Token or ParseNode.
+  constructor(message, // The error message
+  token) // An object providing position information
+  {
+    this.position = void 0;
+    let error = "KaTeX parse error: " + message;
+    let start;
+    const loc = token && token.loc;
+
+    if (loc && loc.start <= loc.end) {
+      // If we have the input and a position, make the error a bit fancier
+      // Get the input
+      const input = loc.lexer.input; // Prepend some information
+
+      start = loc.start;
+      const end = loc.end;
+
+      if (start === input.length) {
+        error += " at end of input: ";
+      } else {
+        error += " at position " + (start + 1) + ": ";
+      } // Underline token in question using combining underscores
+
+
+      const underlined = input.slice(start, end).replace(/[^]/g, "$&\u0332"); // Extract some context from the input and add it to the error
+
+      let left;
+
+      if (start > 15) {
+        left = "…" + input.slice(start - 15, start);
+      } else {
+        left = input.slice(0, start);
+      }
+
+      let right;
+
+      if (end + 15 < input.length) {
+        right = input.slice(end, end + 15) + "…";
+      } else {
+        right = input.slice(end);
+      }
+
+      error += left + underlined + right;
+    } // Some hackery to make ParseError a prototype of Error
+    // See http://stackoverflow.com/a/8460753
+
+
+    const self = new Error(error);
+    self.name = "ParseError"; // $FlowFixMe
+
+    self.__proto__ = ParseError.prototype; // $FlowFixMe
+
+    self.position = start;
+    return self;
+  }
+
+} // $FlowFixMe More hackery
+
+
+ParseError.prototype.__proto__ = Error.prototype;
+
+/**
+ * This file contains a list of utility functions which are useful in other
+ * files.
+ */
+
+/**
+ * Return whether an element is contained in a list
+ */
+const contains = function contains(list, elem) {
+  return list.indexOf(elem) !== -1;
+};
+/**
+ * Provide a default value if a setting is undefined
+ * NOTE: Couldn't use `T` as the output type due to facebook/flow#5022.
+ */
+
+
+const deflt = function deflt(setting, defaultIfUndefined) {
+  return setting === undefined ? defaultIfUndefined : setting;
+}; // hyphenate and escape adapted from Facebook's React under Apache 2 license
+
+
+const uppercase = /([A-Z])/g;
+
+const hyphenate = function hyphenate(str) {
+  return str.replace(uppercase, "-$1").toLowerCase();
+};
+
+const ESCAPE_LOOKUP = {
+  "&": "&amp;",
+  ">": "&gt;",
+  "<": "&lt;",
+  "\"": "&quot;",
+  "'": "&#x27;"
+};
+const ESCAPE_REGEX = /[&><"']/g;
+/**
+ * Escapes text to prevent scripting attacks.
+ */
+
+function escape(text) {
+  return String(text).replace(ESCAPE_REGEX, match => ESCAPE_LOOKUP[match]);
+}
+/**
+ * Sometimes we want to pull out the innermost element of a group. In most
+ * cases, this will just be the group itself, but when ordgroups and colors have
+ * a single element, we want to pull that out.
+ */
+
+
+const getBaseElem = function getBaseElem(group) {
+  if (group.type === "ordgroup") {
+    if (group.body.length === 1) {
+      return getBaseElem(group.body[0]);
+    } else {
+      return group;
+    }
+  } else if (group.type === "color") {
+    if (group.body.length === 1) {
+      return getBaseElem(group.body[0]);
+    } else {
+      return group;
+    }
+  } else if (group.type === "font") {
+    return getBaseElem(group.body);
+  } else {
+    return group;
+  }
+};
+/**
+ * TeXbook algorithms often reference "character boxes", which are simply groups
+ * with a single character in them. To decide if something is a character box,
+ * we find its innermost group, and see if it is a single character.
+ */
+
+
+const isCharacterBox = function isCharacterBox(group) {
+  const baseElem = getBaseElem(group); // These are all they types of groups which hold single characters
+
+  return baseElem.type === "mathord" || baseElem.type === "textord" || baseElem.type === "atom";
+};
+
+const assert = function assert(value) {
+  if (!value) {
+    throw new Error('Expected non-null, but got ' + String(value));
+  }
+
+  return value;
+};
+/**
+ * Return the protocol of a URL, or "_relative" if the URL does not specify a
+ * protocol (and thus is relative).
+ */
+
+const protocolFromUrl = function protocolFromUrl(url) {
+  const protocol = /^\s*([^\\/#]*?)(?::|&#0*58|&#x0*3a)/i.exec(url);
+  return protocol != null ? protocol[1] : "_relative";
+};
+var utils = {
+  contains,
+  deflt,
+  escape,
+  hyphenate,
+  getBaseElem,
+  isCharacterBox,
+  protocolFromUrl
+};
+
+/* eslint no-console:0 */
+
+/**
+ * The main Settings object
+ *
+ * The current options stored are:
+ *  - displayMode: Whether the expression should be typeset as inline math
+ *                 (false, the default), meaning that the math starts in
+ *                 \textstyle and is placed in an inline-block); or as display
+ *                 math (true), meaning that the math starts in \displaystyle
+ *                 and is placed in a block with vertical margin.
+ */
+class Settings {
+  constructor(options) {
+    this.displayMode = void 0;
+    this.output = void 0;
+    this.leqno = void 0;
+    this.fleqn = void 0;
+    this.throwOnError = void 0;
+    this.errorColor = void 0;
+    this.macros = void 0;
+    this.minRuleThickness = void 0;
+    this.colorIsTextColor = void 0;
+    this.strict = void 0;
+    this.trust = void 0;
+    this.maxSize = void 0;
+    this.maxExpand = void 0;
+    // allow null options
+    options = options || {};
+    this.displayMode = utils.deflt(options.displayMode, false);
+    this.output = utils.deflt(options.output, "htmlAndMathml");
+    this.leqno = utils.deflt(options.leqno, false);
+    this.fleqn = utils.deflt(options.fleqn, false);
+    this.throwOnError = utils.deflt(options.throwOnError, true);
+    this.errorColor = utils.deflt(options.errorColor, "#cc0000");
+    this.macros = options.macros || {};
+    this.minRuleThickness = Math.max(0, utils.deflt(options.minRuleThickness, 0));
+    this.colorIsTextColor = utils.deflt(options.colorIsTextColor, false);
+    this.strict = utils.deflt(options.strict, "warn");
+    this.trust = utils.deflt(options.trust, false);
+    this.maxSize = Math.max(0, utils.deflt(options.maxSize, Infinity));
+    this.maxExpand = Math.max(0, utils.deflt(options.maxExpand, 1000));
+  }
+  /**
+   * Report nonstrict (non-LaTeX-compatible) input.
+   * Can safely not be called if `this.strict` is false in JavaScript.
+   */
+
+
+  reportNonstrict(errorCode, errorMsg, token) {
+    let strict = this.strict;
+
+    if (typeof strict === "function") {
+      // Allow return value of strict function to be boolean or string
+      // (or null/undefined, meaning no further processing).
+      strict = strict(errorCode, errorMsg, token);
+    }
+
+    if (!strict || strict === "ignore") {
+      return;
+    } else if (strict === true || strict === "error") {
+      throw new ParseError("LaTeX-incompatible input and strict mode is set to 'error': " + `${errorMsg} [${errorCode}]`, token);
+    } else if (strict === "warn") {
+      typeof console !== "undefined" && console.warn("LaTeX-incompatible input and strict mode is set to 'warn': " + `${errorMsg} [${errorCode}]`);
+    } else {
+      // won't happen in type-safe code
+      typeof console !== "undefined" && console.warn("LaTeX-incompatible input and strict mode is set to " + `unrecognized '${strict}': ${errorMsg} [${errorCode}]`);
+    }
+  }
+  /**
+   * Check whether to apply strict (LaTeX-adhering) behavior for unusual
+   * input (like `\\`).  Unlike `nonstrict`, will not throw an error;
+   * instead, "error" translates to a return value of `true`, while "ignore"
+   * translates to a return value of `false`.  May still print a warning:
+   * "warn" prints a warning and returns `false`.
+   * This is for the second category of `errorCode`s listed in the README.
+   */
+
+
+  useStrictBehavior(errorCode, errorMsg, token) {
+    let strict = this.strict;
+
+    if (typeof strict === "function") {
+      // Allow return value of strict function to be boolean or string
+      // (or null/undefined, meaning no further processing).
+      // But catch any exceptions thrown by function, treating them
+      // like "error".
+      try {
+        strict = strict(errorCode, errorMsg, token);
+      } catch (error) {
+        strict = "error";
+      }
+    }
+
+    if (!strict || strict === "ignore") {
+      return false;
+    } else if (strict === true || strict === "error") {
+      return true;
+    } else if (strict === "warn") {
+      typeof console !== "undefined" && console.warn("LaTeX-incompatible input and strict mode is set to 'warn': " + `${errorMsg} [${errorCode}]`);
+      return false;
+    } else {
+      // won't happen in type-safe code
+      typeof console !== "undefined" && console.warn("LaTeX-incompatible input and strict mode is set to " + `unrecognized '${strict}': ${errorMsg} [${errorCode}]`);
+      return false;
+    }
+  }
+  /**
+   * Check whether to test potentially dangerous input, and return
+   * `true` (trusted) or `false` (untrusted).  The sole argument `context`
+   * should be an object with `command` field specifying the relevant LaTeX
+   * command (as a string starting with `\`), and any other arguments, etc.
+   * If `context` has a `url` field, a `protocol` field will automatically
+   * get added by this function (changing the specified object).
+   */
+
+
+  isTrusted(context) {
+    if (context.url && !context.protocol) {
+      context.protocol = utils.protocolFromUrl(context.url);
+    }
+
+    const trust = typeof this.trust === "function" ? this.trust(context) : this.trust;
+    return Boolean(trust);
+  }
+
+}
+
+/**
+ * This file contains information and classes for the various kinds of styles
+ * used in TeX. It provides a generic `Style` class, which holds information
+ * about a specific style. It then provides instances of all the different kinds
+ * of styles possible, and provides functions to move between them and get
+ * information about them.
+ */
+
+/**
+ * The main style class. Contains a unique id for the style, a size (which is
+ * the same for cramped and uncramped version of a style), and a cramped flag.
+ */
+class Style {
+  constructor(id, size, cramped) {
+    this.id = void 0;
+    this.size = void 0;
+    this.cramped = void 0;
+    this.id = id;
+    this.size = size;
+    this.cramped = cramped;
+  }
+  /**
+   * Get the style of a superscript given a base in the current style.
+   */
+
+
+  sup() {
+    return styles[sup[this.id]];
+  }
+  /**
+   * Get the style of a subscript given a base in the current style.
+   */
+
+
+  sub() {
+    return styles[sub[this.id]];
+  }
+  /**
+   * Get the style of a fraction numerator given the fraction in the current
+   * style.
+   */
+
+
+  fracNum() {
+    return styles[fracNum[this.id]];
+  }
+  /**
+   * Get the style of a fraction denominator given the fraction in the current
+   * style.
+   */
+
+
+  fracDen() {
+    return styles[fracDen[this.id]];
+  }
+  /**
+   * Get the cramped version of a style (in particular, cramping a cramped style
+   * doesn't change the style).
+   */
+
+
+  cramp() {
+    return styles[cramp[this.id]];
+  }
+  /**
+   * Get a text or display version of this style.
+   */
+
+
+  text() {
+    return styles[text[this.id]];
+  }
+  /**
+   * Return true if this style is tightly spaced (scriptstyle/scriptscriptstyle)
+   */
+
+
+  isTight() {
+    return this.size >= 2;
+  }
+
+} // Export an interface for type checking, but don't expose the implementation.
+// This way, no more styles can be generated.
+
+
+// IDs of the different styles
+const D = 0;
+const Dc = 1;
+const T = 2;
+const Tc = 3;
+const S = 4;
+const Sc = 5;
+const SS = 6;
+const SSc = 7; // Instances of the different styles
+
+const styles = [new Style(D, 0, false), new Style(Dc, 0, true), new Style(T, 1, false), new Style(Tc, 1, true), new Style(S, 2, false), new Style(Sc, 2, true), new Style(SS, 3, false), new Style(SSc, 3, true)]; // Lookup tables for switching from one style to another
+
+const sup = [S, Sc, S, Sc, SS, SSc, SS, SSc];
+const sub = [Sc, Sc, Sc, Sc, SSc, SSc, SSc, SSc];
+const fracNum = [T, Tc, S, Sc, SS, SSc, SS, SSc];
+const fracDen = [Tc, Tc, Sc, Sc, SSc, SSc, SSc, SSc];
+const cramp = [Dc, Dc, Tc, Tc, Sc, Sc, SSc, SSc];
+const text = [D, Dc, T, Tc, T, Tc, T, Tc]; // We only export some of the styles.
+
+var Style$1 = {
+  DISPLAY: styles[D],
+  TEXT: styles[T],
+  SCRIPT: styles[S],
+  SCRIPTSCRIPT: styles[SS]
+};
+
+/*
+ * This file defines the Unicode scripts and script families that we
+ * support. To add new scripts or families, just add a new entry to the
+ * scriptData array below. Adding scripts to the scriptData array allows
+ * characters from that script to appear in \text{} environments.
+ */
+
+/**
+ * Each script or script family has a name and an array of blocks.
+ * Each block is an array of two numbers which specify the start and
+ * end points (inclusive) of a block of Unicode codepoints.
+ */
+
+/**
+ * Unicode block data for the families of scripts we support in \text{}.
+ * Scripts only need to appear here if they do not have font metrics.
+ */
+const scriptData = [{
+  // Latin characters beyond the Latin-1 characters we have metrics for.
+  // Needed for Czech, Hungarian and Turkish text, for example.
+  name: 'latin',
+  blocks: [[0x0100, 0x024f], // Latin Extended-A and Latin Extended-B
+  [0x0300, 0x036f]]
+}, {
+  // The Cyrillic script used by Russian and related languages.
+  // A Cyrillic subset used to be supported as explicitly defined
+  // symbols in symbols.js
+  name: 'cyrillic',
+  blocks: [[0x0400, 0x04ff]]
+}, {
+  // The Brahmic scripts of South and Southeast Asia
+  // Devanagari (0900–097F)
+  // Bengali (0980–09FF)
+  // Gurmukhi (0A00–0A7F)
+  // Gujarati (0A80–0AFF)
+  // Oriya (0B00–0B7F)
+  // Tamil (0B80–0BFF)
+  // Telugu (0C00–0C7F)
+  // Kannada (0C80–0CFF)
+  // Malayalam (0D00–0D7F)
+  // Sinhala (0D80–0DFF)
+  // Thai (0E00–0E7F)
+  // Lao (0E80–0EFF)
+  // Tibetan (0F00–0FFF)
+  // Myanmar (1000–109F)
+  name: 'brahmic',
+  blocks: [[0x0900, 0x109F]]
+}, {
+  name: 'georgian',
+  blocks: [[0x10A0, 0x10ff]]
+}, {
+  // Chinese and Japanese.
+  // The "k" in cjk is for Korean, but we've separated Korean out
+  name: "cjk",
+  blocks: [[0x3000, 0x30FF], // CJK symbols and punctuation, Hiragana, Katakana
+  [0x4E00, 0x9FAF], // CJK ideograms
+  [0xFF00, 0xFF60]]
+}, {
+  // Korean
+  name: 'hangul',
+  blocks: [[0xAC00, 0xD7AF]]
+}];
+/**
+ * Given a codepoint, return the name of the script or script family
+ * it is from, or null if it is not part of a known block
+ */
+
+function scriptFromCodepoint(codepoint) {
+  for (let i = 0; i < scriptData.length; i++) {
+    const script = scriptData[i];
+
+    for (let i = 0; i < script.blocks.length; i++) {
+      const block = script.blocks[i];
+
+      if (codepoint >= block[0] && codepoint <= block[1]) {
+        return script.name;
+      }
+    }
+  }
+
+  return null;
+}
+/**
+ * A flattened version of all the supported blocks in a single array.
+ * This is an optimization to make supportedCodepoint() fast.
+ */
+
+const allBlocks = [];
+scriptData.forEach(s => s.blocks.forEach(b => allBlocks.push(...b)));
+/**
+ * Given a codepoint, return true if it falls within one of the
+ * scripts or script families defined above and false otherwise.
+ *
+ * Micro benchmarks shows that this is faster than
+ * /[\u3000-\u30FF\u4E00-\u9FAF\uFF00-\uFF60\uAC00-\uD7AF\u0900-\u109F]/.test()
+ * in Firefox, Chrome and Node.
+ */
+
+function supportedCodepoint(codepoint) {
+  for (let i = 0; i < allBlocks.length; i += 2) {
+    if (codepoint >= allBlocks[i] && codepoint <= allBlocks[i + 1]) {
+      return true;
+    }
+  }
+
+  return false;
+}
+
+/**
+ * This file provides support to domTree.js and delimiter.js.
+ * It's a storehouse of path geometry for SVG images.
+ */
+// In all paths below, the viewBox-to-em scale is 1000:1.
+const hLinePad = 80; // padding above a sqrt viniculum. Prevents image cropping.
+// The viniculum of a \sqrt can be made thicker by a KaTeX rendering option.
+// Think of variable extraViniculum as two detours in the SVG path.
+// The detour begins at the lower left of the area labeled extraViniculum below.
+// The detour proceeds one extraViniculum distance up and slightly to the right,
+// displacing the radiused corner between surd and viniculum. The radius is
+// traversed as usual, then the detour resumes. It goes right, to the end of
+// the very long viniculumn, then down one extraViniculum distance,
+// after which it resumes regular path geometry for the radical.
+
+/*                                                  viniculum
+                                                   /
+         /▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒←extraViniculum
+        / █████████████████████←0.04em (40 unit) std viniculum thickness
+       / /
+      / /
+     / /\
+    / / surd
+*/
+
+const sqrtMain = function sqrtMain(extraViniculum, hLinePad) {
+  // sqrtMain path geometry is from glyph U221A in the font KaTeX Main
+  return `M95,${622 + extraViniculum + hLinePad}
+c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14
+c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54
+c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10
+s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429
+c69,-144,104.5,-217.7,106.5,-221
+l${extraViniculum / 2.075} -${extraViniculum}
+c5.3,-9.3,12,-14,20,-14
+H400000v${40 + extraViniculum}H845.2724
+s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7
+c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z
+M${834 + extraViniculum} ${hLinePad}h400000v${40 + extraViniculum}h-400000z`;
+};
+
+const sqrtSize1 = function sqrtSize1(extraViniculum, hLinePad) {
+  // size1 is from glyph U221A in the font KaTeX_Size1-Regular
+  return `M263,${601 + extraViniculum + hLinePad}c0.7,0,18,39.7,52,119
+c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120
+c340,-704.7,510.7,-1060.3,512,-1067
+l${extraViniculum / 2.084} -${extraViniculum}
+c4.7,-7.3,11,-11,19,-11
+H40000v${40 + extraViniculum}H1012.3
+s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232
+c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1
+s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26
+c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z
+M${1001 + extraViniculum} ${hLinePad}h400000v${40 + extraViniculum}h-400000z`;
+};
+
+const sqrtSize2 = function sqrtSize2(extraViniculum, hLinePad) {
+  // size2 is from glyph U221A in the font KaTeX_Size2-Regular
+  return `M983 ${10 + extraViniculum + hLinePad}
+l${extraViniculum / 3.13} -${extraViniculum}
+c4,-6.7,10,-10,18,-10 H400000v${40 + extraViniculum}
+H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7
+s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744
+c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30
+c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722
+c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5
+c53.7,-170.3,84.5,-266.8,92.5,-289.5z
+M${1001 + extraViniculum} ${hLinePad}h400000v${40 + extraViniculum}h-400000z`;
+};
+
+const sqrtSize3 = function sqrtSize3(extraViniculum, hLinePad) {
+  // size3 is from glyph U221A in the font KaTeX_Size3-Regular
+  return `M424,${2398 + extraViniculum + hLinePad}
+c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514
+c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20
+s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121
+s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081
+l${extraViniculum / 4.223} -${extraViniculum}c4,-6.7,10,-10,18,-10 H400000
+v${40 + extraViniculum}H1014.6
+s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185
+c-2,6,-10,9,-24,9
+c-8,0,-12,-0.7,-12,-2z M${1001 + extraViniculum} ${hLinePad}
+h400000v${40 + extraViniculum}h-400000z`;
+};
+
+const sqrtSize4 = function sqrtSize4(extraViniculum, hLinePad) {
+  // size4 is from glyph U221A in the font KaTeX_Size4-Regular
+  return `M473,${2713 + extraViniculum + hLinePad}
+c339.3,-1799.3,509.3,-2700,510,-2702 l${extraViniculum / 5.298} -${extraViniculum}
+c3.3,-7.3,9.3,-11,18,-11 H400000v${40 + extraViniculum}H1017.7
+s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9
+c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200
+c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26
+s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,
+606zM${1001 + extraViniculum} ${hLinePad}h400000v${40 + extraViniculum}H1017.7z`;
+};
+
+const sqrtTall = function sqrtTall(extraViniculum, hLinePad, viewBoxHeight) {
+  // sqrtTall is from glyph U23B7 in the font KaTeX_Size4-Regular
+  // One path edge has a variable length. It runs vertically from the viniculumn
+  // to a point near (14 units) the bottom of the surd. The viniculum
+  // is normally 40 units thick. So the length of the line in question is:
+  const vertSegment = viewBoxHeight - 54 - hLinePad - extraViniculum;
+  return `M702 ${extraViniculum + hLinePad}H400000${40 + extraViniculum}
+H742v${vertSegment}l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1
+h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170
+c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667
+219 661 l218 661zM702 ${hLinePad}H400000v${40 + extraViniculum}H742z`;
+};
+
+const sqrtPath = function sqrtPath(size, extraViniculum, viewBoxHeight) {
+  extraViniculum = 1000 * extraViniculum; // Convert from document ems to viewBox.
+
+  let path = "";
+
+  switch (size) {
+    case "sqrtMain":
+      path = sqrtMain(extraViniculum, hLinePad);
+      break;
+
+    case "sqrtSize1":
+      path = sqrtSize1(extraViniculum, hLinePad);
+      break;
+
+    case "sqrtSize2":
+      path = sqrtSize2(extraViniculum, hLinePad);
+      break;
+
+    case "sqrtSize3":
+      path = sqrtSize3(extraViniculum, hLinePad);
+      break;
+
+    case "sqrtSize4":
+      path = sqrtSize4(extraViniculum, hLinePad);
+      break;
+
+    case "sqrtTall":
+      path = sqrtTall(extraViniculum, hLinePad, viewBoxHeight);
+  }
+
+  return path;
+};
+const path = {
+  // The doubleleftarrow geometry is from glyph U+21D0 in the font KaTeX Main
+  doubleleftarrow: `M262 157
+l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3
+ 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28
+ 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5
+c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5
+ 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87
+-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7
+-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z
+m8 0v40h399730v-40zm0 194v40h399730v-40z`,
+  // doublerightarrow is from glyph U+21D2 in font KaTeX Main
+  doublerightarrow: `M399738 392l
+-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5
+ 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88
+-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68
+-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18
+-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782
+c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3
+-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`,
+  // leftarrow is from glyph U+2190 in font KaTeX Main
+  leftarrow: `M400000 241H110l3-3c68.7-52.7 113.7-120
+ 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8
+-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247
+c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208
+ 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3
+ 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202
+ l-3-3h399890zM100 241v40h399900v-40z`,
+  // overbrace is from glyphs U+23A9/23A8/23A7 in font KaTeX_Size4-Regular
+  leftbrace: `M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117
+-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7
+ 5-6 9-10 13-.7 1-7.3 1-20 1H6z`,
+  leftbraceunder: `M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13
+ 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688
+ 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7
+-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`,
+  // overgroup is from the MnSymbol package (public domain)
+  leftgroup: `M400000 80
+H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0
+ 435 0h399565z`,
+  leftgroupunder: `M400000 262
+H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219
+ 435 219h399565z`,
+  // Harpoons are from glyph U+21BD in font KaTeX Main
+  leftharpoon: `M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3
+-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5
+-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7
+-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`,
+  leftharpoonplus: `M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5
+ 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3
+-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7
+-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z
+m0 0v40h400000v-40z`,
+  leftharpoondown: `M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333
+ 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5
+ 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667
+-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`,
+  leftharpoondownplus: `M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12
+ 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7
+-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0
+v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,
+  // hook is from glyph U+21A9 in font KaTeX Main
+  lefthook: `M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5
+-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3
+-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21
+ 71.5 23h399859zM103 281v-40h399897v40z`,
+  leftlinesegment: `M40 281 V428 H0 V94 H40 V241 H400000 v40z
+M40 281 V428 H0 V94 H40 V241 H400000 v40z`,
+  leftmapsto: `M40 281 V448H0V74H40V241H400000v40z
+M40 281 V448H0V74H40V241H400000v40z`,
+  // tofrom is from glyph U+21C4 in font KaTeX AMS Regular
+  leftToFrom: `M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23
+-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8
+c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3
+ 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,
+  longequal: `M0 50 h400000 v40H0z m0 194h40000v40H0z
+M0 50 h400000 v40H0z m0 194h40000v40H0z`,
+  midbrace: `M200428 334
+c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14
+-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7
+ 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11
+ 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`,
+  midbraceunder: `M199572 214
+c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14
+ 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3
+ 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0
+-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`,
+  oiintSize1: `M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6
+-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z
+m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8
+60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`,
+  oiintSize2: `M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8
+-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z
+m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2
+c0 110 84 276 504 276s502.4-166 502.4-276z`,
+  oiiintSize1: `M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6
+-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z
+m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0
+85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`,
+  oiiintSize2: `M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8
+-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z
+m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1
+c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`,
+  rightarrow: `M0 241v40h399891c-47.3 35.3-84 78-110 128
+-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20
+ 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7
+ 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85
+-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5
+-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67
+ 151.7 139 205zm0 0v40h399900v-40z`,
+  rightbrace: `M400000 542l
+-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5
+s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1
+c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`,
+  rightbraceunder: `M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3
+ 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237
+-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`,
+  rightgroup: `M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0
+ 3-1 3-3v-38c-76-158-257-219-435-219H0z`,
+  rightgroupunder: `M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18
+ 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`,
+  rightharpoon: `M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3
+-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2
+-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58
+ 69.2 92 94.5zm0 0v40h399900v-40z`,
+  rightharpoonplus: `M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11
+-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7
+ 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z
+m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`,
+  rightharpoondown: `M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8
+ 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5
+-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95
+-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`,
+  rightharpoondownplus: `M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8
+ 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3
+ 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3
+-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z
+m0-194v40h400000v-40zm0 0v40h400000v-40z`,
+  righthook: `M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3
+ 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0
+-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21
+ 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,
+  rightlinesegment: `M399960 241 V94 h40 V428 h-40 V281 H0 v-40z
+M399960 241 V94 h40 V428 h-40 V281 H0 v-40z`,
+  rightToFrom: `M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23
+ 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32
+-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142
+-167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,
+  // twoheadleftarrow is from glyph U+219E in font KaTeX AMS Regular
+  twoheadleftarrow: `M0 167c68 40
+ 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69
+-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3
+-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19
+-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101
+ 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`,
+  twoheadrightarrow: `M400000 167
+c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3
+ 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42
+ 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333
+-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70
+ 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`,
+  // tilde1 is a modified version of a glyph from the MnSymbol package
+  tilde1: `M200 55.538c-77 0-168 73.953-177 73.953-3 0-7
+-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0
+ 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0
+ 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128
+-68.267.847-113-73.952-191-73.952z`,
+  // ditto tilde2, tilde3, & tilde4
+  tilde2: `M344 55.266c-142 0-300.638 81.316-311.5 86.418
+-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9
+ 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114
+c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751
+ 181.476 676 181.476c-149 0-189-126.21-332-126.21z`,
+  tilde3: `M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457
+-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0
+ 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697
+ 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696
+ -338 0-409-156.573-744-156.573z`,
+  tilde4: `M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345
+-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409
+ 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9
+ 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409
+ -175.236-744-175.236z`,
+  // vec is from glyph U+20D7 in font KaTeX Main
+  vec: `M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5
+3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11
+10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63
+-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1
+-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59
+H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359
+c-16-25.333-24-45-24-59z`,
+  // widehat1 is a modified version of a glyph from the MnSymbol package
+  widehat1: `M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22
+c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`,
+  // ditto widehat2, widehat3, & widehat4
+  widehat2: `M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10
+-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,
+  widehat3: `M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10
+-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,
+  widehat4: `M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10
+-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,
+  // widecheck paths are all inverted versions of widehat
+  widecheck1: `M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,
+-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`,
+  widecheck2: `M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,
+-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,
+  widecheck3: `M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,
+-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,
+  widecheck4: `M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,
+-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,
+  // The next ten paths support reaction arrows from the mhchem package.
+  // Arrows for \ce{<-->} are offset from xAxis by 0.22ex, per mhchem in LaTeX
+  // baraboveleftarrow is mostly from from glyph U+2190 in font KaTeX Main
+  baraboveleftarrow: `M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202
+c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5
+c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130
+s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47
+121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6
+s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11
+c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z
+M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,
+  // rightarrowabovebar is mostly from glyph U+2192, KaTeX Main
+  rightarrowabovebar: `M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32
+-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0
+13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39
+-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5
+-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5
+-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67
+151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`,
+  // The short left harpoon has 0.5em (i.e. 500 units) kern on the left end.
+  // Ref from mhchem.sty: \rlap{\raisebox{-.22ex}{$\kern0.5em
+  baraboveshortleftharpoon: `M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11
+c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17
+c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21
+c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40
+c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z
+M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`,
+  rightharpoonaboveshortbar: `M0,241 l0,40c399126,0,399993,0,399993,0
+c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,
+-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6
+c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z
+M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`,
+  shortbaraboveleftharpoon: `M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11
+c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,
+1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,
+-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z
+M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`,
+  shortrightharpoonabovebar: `M53,241l0,40c398570,0,399437,0,399437,0
+c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,
+-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6
+c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z
+M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`
+};
+
+/**
+ * This node represents a document fragment, which contains elements, but when
+ * placed into the DOM doesn't have any representation itself. It only contains
+ * children and doesn't have any DOM node properties.
+ */
+class DocumentFragment {
+  // HtmlDomNode
+  // Never used; needed for satisfying interface.
+  constructor(children) {
+    this.children = void 0;
+    this.classes = void 0;
+    this.height = void 0;
+    this.depth = void 0;
+    this.maxFontSize = void 0;
+    this.style = void 0;
+    this.children = children;
+    this.classes = [];
+    this.height = 0;
+    this.depth = 0;
+    this.maxFontSize = 0;
+    this.style = {};
+  }
+
+  hasClass(className) {
+    return utils.contains(this.classes, className);
+  }
+  /** Convert the fragment into a node. */
+
+
+  toNode() {
+    const frag = document.createDocumentFragment();
+
+    for (let i = 0; i < this.children.length; i++) {
+      frag.appendChild(this.children[i].toNode());
+    }
+
+    return frag;
+  }
+  /** Convert the fragment into HTML markup. */
+
+
+  toMarkup() {
+    let markup = ""; // Simply concatenate the markup for the children together.
+
+    for (let i = 0; i < this.children.length; i++) {
+      markup += this.children[i].toMarkup();
+    }
+
+    return markup;
+  }
+  /**
+   * Converts the math node into a string, similar to innerText. Applies to
+   * MathDomNode's only.
+   */
+
+
+  toText() {
+    // To avoid this, we would subclass documentFragment separately for
+    // MathML, but polyfills for subclassing is expensive per PR 1469.
+    // $FlowFixMe: Only works for ChildType = MathDomNode.
+    const toText = child => child.toText();
+
+    return this.children.map(toText).join("");
+  }
+
+}
+
+/**
+ * These objects store the data about the DOM nodes we create, as well as some
+ * extra data. They can then be transformed into real DOM nodes with the
+ * `toNode` function or HTML markup using `toMarkup`. They are useful for both
+ * storing extra properties on the nodes, as well as providing a way to easily
+ * work with the DOM.
+ *
+ * Similar functions for working with MathML nodes exist in mathMLTree.js.
+ *
+ * TODO: refactor `span` and `anchor` into common superclass when
+ * target environments support class inheritance
+ */
+
+/**
+ * Create an HTML className based on a list of classes. In addition to joining
+ * with spaces, we also remove empty classes.
+ */
+const createClass = function createClass(classes) {
+  return classes.filter(cls => cls).join(" ");
+};
+
+const initNode = function initNode(classes, options, style) {
+  this.classes = classes || [];
+  this.attributes = {};
+  this.height = 0;
+  this.depth = 0;
+  this.maxFontSize = 0;
+  this.style = style || {};
+
+  if (options) {
+    if (options.style.isTight()) {
+      this.classes.push("mtight");
+    }
+
+    const color = options.getColor();
+
+    if (color) {
+      this.style.color = color;
+    }
+  }
+};
+/**
+ * Convert into an HTML node
+ */
+
+
+const toNode = function toNode(tagName) {
+  const node = document.createElement(tagName); // Apply the class
+
+  node.className = createClass(this.classes); // Apply inline styles
+
+  for (const style in this.style) {
+    if (this.style.hasOwnProperty(style)) {
+      // $FlowFixMe Flow doesn't seem to understand span.style's type.
+      node.style[style] = this.style[style];
+    }
+  } // Apply attributes
+
+
+  for (const attr in this.attributes) {
+    if (this.attributes.hasOwnProperty(attr)) {
+      node.setAttribute(attr, this.attributes[attr]);
+    }
+  } // Append the children, also as HTML nodes
+
+
+  for (let i = 0; i < this.children.length; i++) {
+    node.appendChild(this.children[i].toNode());
+  }
+
+  return node;
+};
+/**
+ * Convert into an HTML markup string
+ */
+
+
+const toMarkup = function toMarkup(tagName) {
+  let markup = `<${tagName}`; // Add the class
+
+  if (this.classes.length) {
+    markup += ` class="${utils.escape(createClass(this.classes))}"`;
+  }
+
+  let styles = ""; // Add the styles, after hyphenation
+
+  for (const style in this.style) {
+    if (this.style.hasOwnProperty(style)) {
+      styles += `${utils.hyphenate(style)}:${this.style[style]};`;
+    }
+  }
+
+  if (styles) {
+    markup += ` style="${utils.escape(styles)}"`;
+  } // Add the attributes
+
+
+  for (const attr in this.attributes) {
+    if (this.attributes.hasOwnProperty(attr)) {
+      markup += ` ${attr}="${utils.escape(this.attributes[attr])}"`;
+    }
+  }
+
+  markup += ">"; // Add the markup of the children, also as markup
+
+  for (let i = 0; i < this.children.length; i++) {
+    markup += this.children[i].toMarkup();
+  }
+
+  markup += `</${tagName}>`;
+  return markup;
+}; // Making the type below exact with all optional fields doesn't work due to
+// - https://github.com/facebook/flow/issues/4582
+// - https://github.com/facebook/flow/issues/5688
+// However, since *all* fields are optional, $Shape<> works as suggested in 5688
+// above.
+// This type does not include all CSS properties. Additional properties should
+// be added as needed.
+
+
+/**
+ * This node represents a span node, with a className, a list of children, and
+ * an inline style. It also contains information about its height, depth, and
+ * maxFontSize.
+ *
+ * Represents two types with different uses: SvgSpan to wrap an SVG and DomSpan
+ * otherwise. This typesafety is important when HTML builders access a span's
+ * children.
+ */
+class Span {
+  constructor(classes, children, options, style) {
+    this.children = void 0;
+    this.attributes = void 0;
+    this.classes = void 0;
+    this.height = void 0;
+    this.depth = void 0;
+    this.width = void 0;
+    this.maxFontSize = void 0;
+    this.style = void 0;
+    initNode.call(this, classes, options, style);
+    this.children = children || [];
+  }
+  /**
+   * Sets an arbitrary attribute on the span. Warning: use this wisely. Not
+   * all browsers support attributes the same, and having too many custom
+   * attributes is probably bad.
+   */
+
+
+  setAttribute(attribute, value) {
+    this.attributes[attribute] = value;
+  }
+
+  hasClass(className) {
+    return utils.contains(this.classes, className);
+  }
+
+  toNode() {
+    return toNode.call(this, "span");
+  }
+
+  toMarkup() {
+    return toMarkup.call(this, "span");
+  }
+
+}
+/**
+ * This node represents an anchor (<a>) element with a hyperlink.  See `span`
+ * for further details.
+ */
+
+class Anchor {
+  constructor(href, classes, children, options) {
+    this.children = void 0;
+    this.attributes = void 0;
+    this.classes = void 0;
+    this.height = void 0;
+    this.depth = void 0;
+    this.maxFontSize = void 0;
+    this.style = void 0;
+    initNode.call(this, classes, options);
+    this.children = children || [];
+    this.setAttribute('href', href);
+  }
+
+  setAttribute(attribute, value) {
+    this.attributes[attribute] = value;
+  }
+
+  hasClass(className) {
+    return utils.contains(this.classes, className);
+  }
+
+  toNode() {
+    return toNode.call(this, "a");
+  }
+
+  toMarkup() {
+    return toMarkup.call(this, "a");
+  }
+
+}
+/**
+ * This node represents an image embed (<img>) element.
+ */
+
+class Img {
+  constructor(src, alt, style) {
+    this.src = void 0;
+    this.alt = void 0;
+    this.classes = void 0;
+    this.height = void 0;
+    this.depth = void 0;
+    this.maxFontSize = void 0;
+    this.style = void 0;
+    this.alt = alt;
+    this.src = src;
+    this.classes = ["mord"];
+    this.style = style;
+  }
+
+  hasClass(className) {
+    return utils.contains(this.classes, className);
+  }
+
+  toNode() {
+    const node = document.createElement("img");
+    node.src = this.src;
+    node.alt = this.alt;
+    node.className = "mord"; // Apply inline styles
+
+    for (const style in this.style) {
+      if (this.style.hasOwnProperty(style)) {
+        // $FlowFixMe
+        node.style[style] = this.style[style];
+      }
+    }
+
+    return node;
+  }
+
+  toMarkup() {
+    let markup = `<img  src='${this.src} 'alt='${this.alt}' `; // Add the styles, after hyphenation
+
+    let styles = "";
+
+    for (const style in this.style) {
+      if (this.style.hasOwnProperty(style)) {
+        styles += `${utils.hyphenate(style)}:${this.style[style]};`;
+      }
+    }
+
+    if (styles) {
+      markup += ` style="${utils.escape(styles)}"`;
+    }
+
+    markup += "'/>";
+    return markup;
+  }
+
+}
+const iCombinations = {
+  'î': '\u0131\u0302',
+  'ï': '\u0131\u0308',
+  'í': '\u0131\u0301',
+  // 'ī': '\u0131\u0304', // enable when we add Extended Latin
+  'ì': '\u0131\u0300'
+};
+/**
+ * A symbol node contains information about a single symbol. It either renders
+ * to a single text node, or a span with a single text node in it, depending on
+ * whether it has CSS classes, styles, or needs italic correction.
+ */
+
+class SymbolNode {
+  constructor(text, height, depth, italic, skew, width, classes, style) {
+    this.text = void 0;
+    this.height = void 0;
+    this.depth = void 0;
+    this.italic = void 0;
+    this.skew = void 0;
+    this.width = void 0;
+    this.maxFontSize = void 0;
+    this.classes = void 0;
+    this.style = void 0;
+    this.text = text;
+    this.height = height || 0;
+    this.depth = depth || 0;
+    this.italic = italic || 0;
+    this.skew = skew || 0;
+    this.width = width || 0;
+    this.classes = classes || [];
+    this.style = style || {};
+    this.maxFontSize = 0; // Mark text from non-Latin scripts with specific classes so that we
+    // can specify which fonts to use.  This allows us to render these
+    // characters with a serif font in situations where the browser would
+    // either default to a sans serif or render a placeholder character.
+    // We use CSS class names like cjk_fallback, hangul_fallback and
+    // brahmic_fallback. See ./unicodeScripts.js for the set of possible
+    // script names
+
+    const script = scriptFromCodepoint(this.text.charCodeAt(0));
+
+    if (script) {
+      this.classes.push(script + "_fallback");
+    }
+
+    if (/[îïíì]/.test(this.text)) {
+      // add ī when we add Extended Latin
+      this.text = iCombinations[this.text];
+    }
+  }
+
+  hasClass(className) {
+    return utils.contains(this.classes, className);
+  }
+  /**
+   * Creates a text node or span from a symbol node. Note that a span is only
+   * created if it is needed.
+   */
+
+
+  toNode() {
+    const node = document.createTextNode(this.text);
+    let span = null;
+
+    if (this.italic > 0) {
+      span = document.createElement("span");
+      span.style.marginRight = this.italic + "em";
+    }
+
+    if (this.classes.length > 0) {
+      span = span || document.createElement("span");
+      span.className = createClass(this.classes);
+    }
+
+    for (const style in this.style) {
+      if (this.style.hasOwnProperty(style)) {
+        span = span || document.createElement("span"); // $FlowFixMe Flow doesn't seem to understand span.style's type.
+
+        span.style[style] = this.style[style];
+      }
+    }
+
+    if (span) {
+      span.appendChild(node);
+      return span;
+    } else {
+      return node;
+    }
+  }
+  /**
+   * Creates markup for a symbol node.
+   */
+
+
+  toMarkup() {
+    // TODO(alpert): More duplication than I'd like from
+    // span.prototype.toMarkup and symbolNode.prototype.toNode...
+    let needsSpan = false;
+    let markup = "<span";
+
+    if (this.classes.length) {
+      needsSpan = true;
+      markup += " class=\"";
+      markup += utils.escape(createClass(this.classes));
+      markup += "\"";
+    }
+
+    let styles = "";
+
+    if (this.italic > 0) {
+      styles += "margin-right:" + this.italic + "em;";
+    }
+
+    for (const style in this.style) {
+      if (this.style.hasOwnProperty(style)) {
+        styles += utils.hyphenate(style) + ":" + this.style[style] + ";";
+      }
+    }
+
+    if (styles) {
+      needsSpan = true;
+      markup += " style=\"" + utils.escape(styles) + "\"";
+    }
+
+    const escaped = utils.escape(this.text);
+
+    if (needsSpan) {
+      markup += ">";
+      markup += escaped;
+      markup += "</span>";
+      return markup;
+    } else {
+      return escaped;
+    }
+  }
+
+}
+/**
+ * SVG nodes are used to render stretchy wide elements.
+ */
+
+class SvgNode {
+  constructor(children, attributes) {
+    this.children = void 0;
+    this.attributes = void 0;
+    this.children = children || [];
+    this.attributes = attributes || {};
+  }
+
+  toNode() {
+    const svgNS = "http://www.w3.org/2000/svg";
+    const node = document.createElementNS(svgNS, "svg"); // Apply attributes
+
+    for (const attr in this.attributes) {
+      if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {
+        node.setAttribute(attr, this.attributes[attr]);
+      }
+    }
+
+    for (let i = 0; i < this.children.length; i++) {
+      node.appendChild(this.children[i].toNode());
+    }
+
+    return node;
+  }
+
+  toMarkup() {
+    let markup = "<svg"; // Apply attributes
+
+    for (const attr in this.attributes) {
+      if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {
+        markup += ` ${attr}='${this.attributes[attr]}'`;
+      }
+    }
+
+    markup += ">";
+
+    for (let i = 0; i < this.children.length; i++) {
+      markup += this.children[i].toMarkup();
+    }
+
+    markup += "</svg>";
+    return markup;
+  }
+
+}
+class PathNode {
+  constructor(pathName, alternate) {
+    this.pathName = void 0;
+    this.alternate = void 0;
+    this.pathName = pathName;
+    this.alternate = alternate; // Used only for \sqrt
+  }
+
+  toNode() {
+    const svgNS = "http://www.w3.org/2000/svg";
+    const node = document.createElementNS(svgNS, "path");
+
+    if (this.alternate) {
+      node.setAttribute("d", this.alternate);
+    } else {
+      node.setAttribute("d", path[this.pathName]);
+    }
+
+    return node;
+  }
+
+  toMarkup() {
+    if (this.alternate) {
+      return `<path d='${this.alternate}'/>`;
+    } else {
+      return `<path d='${path[this.pathName]}'/>`;
+    }
+  }
+
+}
+class LineNode {
+  constructor(attributes) {
+    this.attributes = void 0;
+    this.attributes = attributes || {};
+  }
+
+  toNode() {
+    const svgNS = "http://www.w3.org/2000/svg";
+    const node = document.createElementNS(svgNS, "line"); // Apply attributes
+
+    for (const attr in this.attributes) {
+      if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {
+        node.setAttribute(attr, this.attributes[attr]);
+      }
+    }
+
+    return node;
+  }
+
+  toMarkup() {
+    let markup = "<line";
+
+    for (const attr in this.attributes) {
+      if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {
+        markup += ` ${attr}='${this.attributes[attr]}'`;
+      }
+    }
+
+    markup += "/>";
+    return markup;
+  }
+
+}
+function assertSymbolDomNode(group) {
+  if (group instanceof SymbolNode) {
+    return group;
+  } else {
+    throw new Error(`Expected symbolNode but got ${String(group)}.`);
+  }
+}
+function assertSpan(group) {
+  if (group instanceof Span) {
+    return group;
+  } else {
+    throw new Error(`Expected span<HtmlDomNode> but got ${String(group)}.`);
+  }
+}
+
+// This file is GENERATED by buildMetrics.sh. DO NOT MODIFY.
+var metricMap = {
+  "AMS-Regular": {
+    "65": [0, 0.68889, 0, 0, 0.72222],
+    "66": [0, 0.68889, 0, 0, 0.66667],
+    "67": [0, 0.68889, 0, 0, 0.72222],
+    "68": [0, 0.68889, 0, 0, 0.72222],
+    "69": [0, 0.68889, 0, 0, 0.66667],
+    "70": [0, 0.68889, 0, 0, 0.61111],
+    "71": [0, 0.68889, 0, 0, 0.77778],
+    "72": [0, 0.68889, 0, 0, 0.77778],
+    "73": [0, 0.68889, 0, 0, 0.38889],
+    "74": [0.16667, 0.68889, 0, 0, 0.5],
+    "75": [0, 0.68889, 0, 0, 0.77778],
+    "76": [0, 0.68889, 0, 0, 0.66667],
+    "77": [0, 0.68889, 0, 0, 0.94445],
+    "78": [0, 0.68889, 0, 0, 0.72222],
+    "79": [0.16667, 0.68889, 0, 0, 0.77778],
+    "80": [0, 0.68889, 0, 0, 0.61111],
+    "81": [0.16667, 0.68889, 0, 0, 0.77778],
+    "82": [0, 0.68889, 0, 0, 0.72222],
+    "83": [0, 0.68889, 0, 0, 0.55556],
+    "84": [0, 0.68889, 0, 0, 0.66667],
+    "85": [0, 0.68889, 0, 0, 0.72222],
+    "86": [0, 0.68889, 0, 0, 0.72222],
+    "87": [0, 0.68889, 0, 0, 1.0],
+    "88": [0, 0.68889, 0, 0, 0.72222],
+    "89": [0, 0.68889, 0, 0, 0.72222],
+    "90": [0, 0.68889, 0, 0, 0.66667],
+    "107": [0, 0.68889, 0, 0, 0.55556],
+    "165": [0, 0.675, 0.025, 0, 0.75],
+    "174": [0.15559, 0.69224, 0, 0, 0.94666],
+    "240": [0, 0.68889, 0, 0, 0.55556],
+    "295": [0, 0.68889, 0, 0, 0.54028],
+    "710": [0, 0.825, 0, 0, 2.33334],
+    "732": [0, 0.9, 0, 0, 2.33334],
+    "770": [0, 0.825, 0, 0, 2.33334],
+    "771": [0, 0.9, 0, 0, 2.33334],
+    "989": [0.08167, 0.58167, 0, 0, 0.77778],
+    "1008": [0, 0.43056, 0.04028, 0, 0.66667],
+    "8245": [0, 0.54986, 0, 0, 0.275],
+    "8463": [0, 0.68889, 0, 0, 0.54028],
+    "8487": [0, 0.68889, 0, 0, 0.72222],
+    "8498": [0, 0.68889, 0, 0, 0.55556],
+    "8502": [0, 0.68889, 0, 0, 0.66667],
+    "8503": [0, 0.68889, 0, 0, 0.44445],
+    "8504": [0, 0.68889, 0, 0, 0.66667],
+    "8513": [0, 0.68889, 0, 0, 0.63889],
+    "8592": [-0.03598, 0.46402, 0, 0, 0.5],
+    "8594": [-0.03598, 0.46402, 0, 0, 0.5],
+    "8602": [-0.13313, 0.36687, 0, 0, 1.0],
+    "8603": [-0.13313, 0.36687, 0, 0, 1.0],
+    "8606": [0.01354, 0.52239, 0, 0, 1.0],
+    "8608": [0.01354, 0.52239, 0, 0, 1.0],
+    "8610": [0.01354, 0.52239, 0, 0, 1.11111],
+    "8611": [0.01354, 0.52239, 0, 0, 1.11111],
+    "8619": [0, 0.54986, 0, 0, 1.0],
+    "8620": [0, 0.54986, 0, 0, 1.0],
+    "8621": [-0.13313, 0.37788, 0, 0, 1.38889],
+    "8622": [-0.13313, 0.36687, 0, 0, 1.0],
+    "8624": [0, 0.69224, 0, 0, 0.5],
+    "8625": [0, 0.69224, 0, 0, 0.5],
+    "8630": [0, 0.43056, 0, 0, 1.0],
+    "8631": [0, 0.43056, 0, 0, 1.0],
+    "8634": [0.08198, 0.58198, 0, 0, 0.77778],
+    "8635": [0.08198, 0.58198, 0, 0, 0.77778],
+    "8638": [0.19444, 0.69224, 0, 0, 0.41667],
+    "8639": [0.19444, 0.69224, 0, 0, 0.41667],
+    "8642": [0.19444, 0.69224, 0, 0, 0.41667],
+    "8643": [0.19444, 0.69224, 0, 0, 0.41667],
+    "8644": [0.1808, 0.675, 0, 0, 1.0],
+    "8646": [0.1808, 0.675, 0, 0, 1.0],
+    "8647": [0.1808, 0.675, 0, 0, 1.0],
+    "8648": [0.19444, 0.69224, 0, 0, 0.83334],
+    "8649": [0.1808, 0.675, 0, 0, 1.0],
+    "8650": [0.19444, 0.69224, 0, 0, 0.83334],
+    "8651": [0.01354, 0.52239, 0, 0, 1.0],
+    "8652": [0.01354, 0.52239, 0, 0, 1.0],
+    "8653": [-0.13313, 0.36687, 0, 0, 1.0],
+    "8654": [-0.13313, 0.36687, 0, 0, 1.0],
+    "8655": [-0.13313, 0.36687, 0, 0, 1.0],
+    "8666": [0.13667, 0.63667, 0, 0, 1.0],
+    "8667": [0.13667, 0.63667, 0, 0, 1.0],
+    "8669": [-0.13313, 0.37788, 0, 0, 1.0],
+    "8672": [-0.064, 0.437, 0, 0, 1.334],
+    "8674": [-0.064, 0.437, 0, 0, 1.334],
+    "8705": [0, 0.825, 0, 0, 0.5],
+    "8708": [0, 0.68889, 0, 0, 0.55556],
+    "8709": [0.08167, 0.58167, 0, 0, 0.77778],
+    "8717": [0, 0.43056, 0, 0, 0.42917],
+    "8722": [-0.03598, 0.46402, 0, 0, 0.5],
+    "8724": [0.08198, 0.69224, 0, 0, 0.77778],
+    "8726": [0.08167, 0.58167, 0, 0, 0.77778],
+    "8733": [0, 0.69224, 0, 0, 0.77778],
+    "8736": [0, 0.69224, 0, 0, 0.72222],
+    "8737": [0, 0.69224, 0, 0, 0.72222],
+    "8738": [0.03517, 0.52239, 0, 0, 0.72222],
+    "8739": [0.08167, 0.58167, 0, 0, 0.22222],
+    "8740": [0.25142, 0.74111, 0, 0, 0.27778],
+    "8741": [0.08167, 0.58167, 0, 0, 0.38889],
+    "8742": [0.25142, 0.74111, 0, 0, 0.5],
+    "8756": [0, 0.69224, 0, 0, 0.66667],
+    "8757": [0, 0.69224, 0, 0, 0.66667],
+    "8764": [-0.13313, 0.36687, 0, 0, 0.77778],
+    "8765": [-0.13313, 0.37788, 0, 0, 0.77778],
+    "8769": [-0.13313, 0.36687, 0, 0, 0.77778],
+    "8770": [-0.03625, 0.46375, 0, 0, 0.77778],
+    "8774": [0.30274, 0.79383, 0, 0, 0.77778],
+    "8776": [-0.01688, 0.48312, 0, 0, 0.77778],
+    "8778": [0.08167, 0.58167, 0, 0, 0.77778],
+    "8782": [0.06062, 0.54986, 0, 0, 0.77778],
+    "8783": [0.06062, 0.54986, 0, 0, 0.77778],
+    "8785": [0.08198, 0.58198, 0, 0, 0.77778],
+    "8786": [0.08198, 0.58198, 0, 0, 0.77778],
+    "8787": [0.08198, 0.58198, 0, 0, 0.77778],
+    "8790": [0, 0.69224, 0, 0, 0.77778],
+    "8791": [0.22958, 0.72958, 0, 0, 0.77778],
+    "8796": [0.08198, 0.91667, 0, 0, 0.77778],
+    "8806": [0.25583, 0.75583, 0, 0, 0.77778],
+    "8807": [0.25583, 0.75583, 0, 0, 0.77778],
+    "8808": [0.25142, 0.75726, 0, 0, 0.77778],
+    "8809": [0.25142, 0.75726, 0, 0, 0.77778],
+    "8812": [0.25583, 0.75583, 0, 0, 0.5],
+    "8814": [0.20576, 0.70576, 0, 0, 0.77778],
+    "8815": [0.20576, 0.70576, 0, 0, 0.77778],
+    "8816": [0.30274, 0.79383, 0, 0, 0.77778],
+    "8817": [0.30274, 0.79383, 0, 0, 0.77778],
+    "8818": [0.22958, 0.72958, 0, 0, 0.77778],
+    "8819": [0.22958, 0.72958, 0, 0, 0.77778],
+    "8822": [0.1808, 0.675, 0, 0, 0.77778],
+    "8823": [0.1808, 0.675, 0, 0, 0.77778],
+    "8828": [0.13667, 0.63667, 0, 0, 0.77778],
+    "8829": [0.13667, 0.63667, 0, 0, 0.77778],
+    "8830": [0.22958, 0.72958, 0, 0, 0.77778],
+    "8831": [0.22958, 0.72958, 0, 0, 0.77778],
+    "8832": [0.20576, 0.70576, 0, 0, 0.77778],
+    "8833": [0.20576, 0.70576, 0, 0, 0.77778],
+    "8840": [0.30274, 0.79383, 0, 0, 0.77778],
+    "8841": [0.30274, 0.79383, 0, 0, 0.77778],
+    "8842": [0.13597, 0.63597, 0, 0, 0.77778],
+    "8843": [0.13597, 0.63597, 0, 0, 0.77778],
+    "8847": [0.03517, 0.54986, 0, 0, 0.77778],
+    "8848": [0.03517, 0.54986, 0, 0, 0.77778],
+    "8858": [0.08198, 0.58198, 0, 0, 0.77778],
+    "8859": [0.08198, 0.58198, 0, 0, 0.77778],
+    "8861": [0.08198, 0.58198, 0, 0, 0.77778],
+    "8862": [0, 0.675, 0, 0, 0.77778],
+    "8863": [0, 0.675, 0, 0, 0.77778],
+    "8864": [0, 0.675, 0, 0, 0.77778],
+    "8865": [0, 0.675, 0, 0, 0.77778],
+    "8872": [0, 0.69224, 0, 0, 0.61111],
+    "8873": [0, 0.69224, 0, 0, 0.72222],
+    "8874": [0, 0.69224, 0, 0, 0.88889],
+    "8876": [0, 0.68889, 0, 0, 0.61111],
+    "8877": [0, 0.68889, 0, 0, 0.61111],
+    "8878": [0, 0.68889, 0, 0, 0.72222],
+    "8879": [0, 0.68889, 0, 0, 0.72222],
+    "8882": [0.03517, 0.54986, 0, 0, 0.77778],
+    "8883": [0.03517, 0.54986, 0, 0, 0.77778],
+    "8884": [0.13667, 0.63667, 0, 0, 0.77778],
+    "8885": [0.13667, 0.63667, 0, 0, 0.77778],
+    "8888": [0, 0.54986, 0, 0, 1.11111],
+    "8890": [0.19444, 0.43056, 0, 0, 0.55556],
+    "8891": [0.19444, 0.69224, 0, 0, 0.61111],
+    "8892": [0.19444, 0.69224, 0, 0, 0.61111],
+    "8901": [0, 0.54986, 0, 0, 0.27778],
+    "8903": [0.08167, 0.58167, 0, 0, 0.77778],
+    "8905": [0.08167, 0.58167, 0, 0, 0.77778],
+    "8906": [0.08167, 0.58167, 0, 0, 0.77778],
+    "8907": [0, 0.69224, 0, 0, 0.77778],
+    "8908": [0, 0.69224, 0, 0, 0.77778],
+    "8909": [-0.03598, 0.46402, 0, 0, 0.77778],
+    "8910": [0, 0.54986, 0, 0, 0.76042],
+    "8911": [0, 0.54986, 0, 0, 0.76042],
+    "8912": [0.03517, 0.54986, 0, 0, 0.77778],
+    "8913": [0.03517, 0.54986, 0, 0, 0.77778],
+    "8914": [0, 0.54986, 0, 0, 0.66667],
+    "8915": [0, 0.54986, 0, 0, 0.66667],
+    "8916": [0, 0.69224, 0, 0, 0.66667],
+    "8918": [0.0391, 0.5391, 0, 0, 0.77778],
+    "8919": [0.0391, 0.5391, 0, 0, 0.77778],
+    "8920": [0.03517, 0.54986, 0, 0, 1.33334],
+    "8921": [0.03517, 0.54986, 0, 0, 1.33334],
+    "8922": [0.38569, 0.88569, 0, 0, 0.77778],
+    "8923": [0.38569, 0.88569, 0, 0, 0.77778],
+    "8926": [0.13667, 0.63667, 0, 0, 0.77778],
+    "8927": [0.13667, 0.63667, 0, 0, 0.77778],
+    "8928": [0.30274, 0.79383, 0, 0, 0.77778],
+    "8929": [0.30274, 0.79383, 0, 0, 0.77778],
+    "8934": [0.23222, 0.74111, 0, 0, 0.77778],
+    "8935": [0.23222, 0.74111, 0, 0, 0.77778],
+    "8936": [0.23222, 0.74111, 0, 0, 0.77778],
+    "8937": [0.23222, 0.74111, 0, 0, 0.77778],
+    "8938": [0.20576, 0.70576, 0, 0, 0.77778],
+    "8939": [0.20576, 0.70576, 0, 0, 0.77778],
+    "8940": [0.30274, 0.79383, 0, 0, 0.77778],
+    "8941": [0.30274, 0.79383, 0, 0, 0.77778],
+    "8994": [0.19444, 0.69224, 0, 0, 0.77778],
+    "8995": [0.19444, 0.69224, 0, 0, 0.77778],
+    "9416": [0.15559, 0.69224, 0, 0, 0.90222],
+    "9484": [0, 0.69224, 0, 0, 0.5],
+    "9488": [0, 0.69224, 0, 0, 0.5],
+    "9492": [0, 0.37788, 0, 0, 0.5],
+    "9496": [0, 0.37788, 0, 0, 0.5],
+    "9585": [0.19444, 0.68889, 0, 0, 0.88889],
+    "9586": [0.19444, 0.74111, 0, 0, 0.88889],
+    "9632": [0, 0.675, 0, 0, 0.77778],
+    "9633": [0, 0.675, 0, 0, 0.77778],
+    "9650": [0, 0.54986, 0, 0, 0.72222],
+    "9651": [0, 0.54986, 0, 0, 0.72222],
+    "9654": [0.03517, 0.54986, 0, 0, 0.77778],
+    "9660": [0, 0.54986, 0, 0, 0.72222],
+    "9661": [0, 0.54986, 0, 0, 0.72222],
+    "9664": [0.03517, 0.54986, 0, 0, 0.77778],
+    "9674": [0.11111, 0.69224, 0, 0, 0.66667],
+    "9733": [0.19444, 0.69224, 0, 0, 0.94445],
+    "10003": [0, 0.69224, 0, 0, 0.83334],
+    "10016": [0, 0.69224, 0, 0, 0.83334],
+    "10731": [0.11111, 0.69224, 0, 0, 0.66667],
+    "10846": [0.19444, 0.75583, 0, 0, 0.61111],
+    "10877": [0.13667, 0.63667, 0, 0, 0.77778],
+    "10878": [0.13667, 0.63667, 0, 0, 0.77778],
+    "10885": [0.25583, 0.75583, 0, 0, 0.77778],
+    "10886": [0.25583, 0.75583, 0, 0, 0.77778],
+    "10887": [0.13597, 0.63597, 0, 0, 0.77778],
+    "10888": [0.13597, 0.63597, 0, 0, 0.77778],
+    "10889": [0.26167, 0.75726, 0, 0, 0.77778],
+    "10890": [0.26167, 0.75726, 0, 0, 0.77778],
+    "10891": [0.48256, 0.98256, 0, 0, 0.77778],
+    "10892": [0.48256, 0.98256, 0, 0, 0.77778],
+    "10901": [0.13667, 0.63667, 0, 0, 0.77778],
+    "10902": [0.13667, 0.63667, 0, 0, 0.77778],
+    "10933": [0.25142, 0.75726, 0, 0, 0.77778],
+    "10934": [0.25142, 0.75726, 0, 0, 0.77778],
+    "10935": [0.26167, 0.75726, 0, 0, 0.77778],
+    "10936": [0.26167, 0.75726, 0, 0, 0.77778],
+    "10937": [0.26167, 0.75726, 0, 0, 0.77778],
+    "10938": [0.26167, 0.75726, 0, 0, 0.77778],
+    "10949": [0.25583, 0.75583, 0, 0, 0.77778],
+    "10950": [0.25583, 0.75583, 0, 0, 0.77778],
+    "10955": [0.28481, 0.79383, 0, 0, 0.77778],
+    "10956": [0.28481, 0.79383, 0, 0, 0.77778],
+    "57350": [0.08167, 0.58167, 0, 0, 0.22222],
+    "57351": [0.08167, 0.58167, 0, 0, 0.38889],
+    "57352": [0.08167, 0.58167, 0, 0, 0.77778],
+    "57353": [0, 0.43056, 0.04028, 0, 0.66667],
+    "57356": [0.25142, 0.75726, 0, 0, 0.77778],
+    "57357": [0.25142, 0.75726, 0, 0, 0.77778],
+    "57358": [0.41951, 0.91951, 0, 0, 0.77778],
+    "57359": [0.30274, 0.79383, 0, 0, 0.77778],
+    "57360": [0.30274, 0.79383, 0, 0, 0.77778],
+    "57361": [0.41951, 0.91951, 0, 0, 0.77778],
+    "57366": [0.25142, 0.75726, 0, 0, 0.77778],
+    "57367": [0.25142, 0.75726, 0, 0, 0.77778],
+    "57368": [0.25142, 0.75726, 0, 0, 0.77778],
+    "57369": [0.25142, 0.75726, 0, 0, 0.77778],
+    "57370": [0.13597, 0.63597, 0, 0, 0.77778],
+    "57371": [0.13597, 0.63597, 0, 0, 0.77778]
+  },
+  "Caligraphic-Regular": {
+    "48": [0, 0.43056, 0, 0, 0.5],
+    "49": [0, 0.43056, 0, 0, 0.5],
+    "50": [0, 0.43056, 0, 0, 0.5],
+    "51": [0.19444, 0.43056, 0, 0, 0.5],
+    "52": [0.19444, 0.43056, 0, 0, 0.5],
+    "53": [0.19444, 0.43056, 0, 0, 0.5],
+    "54": [0, 0.64444, 0, 0, 0.5],
+    "55": [0.19444, 0.43056, 0, 0, 0.5],
+    "56": [0, 0.64444, 0, 0, 0.5],
+    "57": [0.19444, 0.43056, 0, 0, 0.5],
+    "65": [0, 0.68333, 0, 0.19445, 0.79847],
+    "66": [0, 0.68333, 0.03041, 0.13889, 0.65681],
+    "67": [0, 0.68333, 0.05834, 0.13889, 0.52653],
+    "68": [0, 0.68333, 0.02778, 0.08334, 0.77139],
+    "69": [0, 0.68333, 0.08944, 0.11111, 0.52778],
+    "70": [0, 0.68333, 0.09931, 0.11111, 0.71875],
+    "71": [0.09722, 0.68333, 0.0593, 0.11111, 0.59487],
+    "72": [0, 0.68333, 0.00965, 0.11111, 0.84452],
+    "73": [0, 0.68333, 0.07382, 0, 0.54452],
+    "74": [0.09722, 0.68333, 0.18472, 0.16667, 0.67778],
+    "75": [0, 0.68333, 0.01445, 0.05556, 0.76195],
+    "76": [0, 0.68333, 0, 0.13889, 0.68972],
+    "77": [0, 0.68333, 0, 0.13889, 1.2009],
+    "78": [0, 0.68333, 0.14736, 0.08334, 0.82049],
+    "79": [0, 0.68333, 0.02778, 0.11111, 0.79611],
+    "80": [0, 0.68333, 0.08222, 0.08334, 0.69556],
+    "81": [0.09722, 0.68333, 0, 0.11111, 0.81667],
+    "82": [0, 0.68333, 0, 0.08334, 0.8475],
+    "83": [0, 0.68333, 0.075, 0.13889, 0.60556],
+    "84": [0, 0.68333, 0.25417, 0, 0.54464],
+    "85": [0, 0.68333, 0.09931, 0.08334, 0.62583],
+    "86": [0, 0.68333, 0.08222, 0, 0.61278],
+    "87": [0, 0.68333, 0.08222, 0.08334, 0.98778],
+    "88": [0, 0.68333, 0.14643, 0.13889, 0.7133],
+    "89": [0.09722, 0.68333, 0.08222, 0.08334, 0.66834],
+    "90": [0, 0.68333, 0.07944, 0.13889, 0.72473]
+  },
+  "Fraktur-Regular": {
+    "33": [0, 0.69141, 0, 0, 0.29574],
+    "34": [0, 0.69141, 0, 0, 0.21471],
+    "38": [0, 0.69141, 0, 0, 0.73786],
+    "39": [0, 0.69141, 0, 0, 0.21201],
+    "40": [0.24982, 0.74947, 0, 0, 0.38865],
+    "41": [0.24982, 0.74947, 0, 0, 0.38865],
+    "42": [0, 0.62119, 0, 0, 0.27764],
+    "43": [0.08319, 0.58283, 0, 0, 0.75623],
+    "44": [0, 0.10803, 0, 0, 0.27764],
+    "45": [0.08319, 0.58283, 0, 0, 0.75623],
+    "46": [0, 0.10803, 0, 0, 0.27764],
+    "47": [0.24982, 0.74947, 0, 0, 0.50181],
+    "48": [0, 0.47534, 0, 0, 0.50181],
+    "49": [0, 0.47534, 0, 0, 0.50181],
+    "50": [0, 0.47534, 0, 0, 0.50181],
+    "51": [0.18906, 0.47534, 0, 0, 0.50181],
+    "52": [0.18906, 0.47534, 0, 0, 0.50181],
+    "53": [0.18906, 0.47534, 0, 0, 0.50181],
+    "54": [0, 0.69141, 0, 0, 0.50181],
+    "55": [0.18906, 0.47534, 0, 0, 0.50181],
+    "56": [0, 0.69141, 0, 0, 0.50181],
+    "57": [0.18906, 0.47534, 0, 0, 0.50181],
+    "58": [0, 0.47534, 0, 0, 0.21606],
+    "59": [0.12604, 0.47534, 0, 0, 0.21606],
+    "61": [-0.13099, 0.36866, 0, 0, 0.75623],
+    "63": [0, 0.69141, 0, 0, 0.36245],
+    "65": [0, 0.69141, 0, 0, 0.7176],
+    "66": [0, 0.69141, 0, 0, 0.88397],
+    "67": [0, 0.69141, 0, 0, 0.61254],
+    "68": [0, 0.69141, 0, 0, 0.83158],
+    "69": [0, 0.69141, 0, 0, 0.66278],
+    "70": [0.12604, 0.69141, 0, 0, 0.61119],
+    "71": [0, 0.69141, 0, 0, 0.78539],
+    "72": [0.06302, 0.69141, 0, 0, 0.7203],
+    "73": [0, 0.69141, 0, 0, 0.55448],
+    "74": [0.12604, 0.69141, 0, 0, 0.55231],
+    "75": [0, 0.69141, 0, 0, 0.66845],
+    "76": [0, 0.69141, 0, 0, 0.66602],
+    "77": [0, 0.69141, 0, 0, 1.04953],
+    "78": [0, 0.69141, 0, 0, 0.83212],
+    "79": [0, 0.69141, 0, 0, 0.82699],
+    "80": [0.18906, 0.69141, 0, 0, 0.82753],
+    "81": [0.03781, 0.69141, 0, 0, 0.82699],
+    "82": [0, 0.69141, 0, 0, 0.82807],
+    "83": [0, 0.69141, 0, 0, 0.82861],
+    "84": [0, 0.69141, 0, 0, 0.66899],
+    "85": [0, 0.69141, 0, 0, 0.64576],
+    "86": [0, 0.69141, 0, 0, 0.83131],
+    "87": [0, 0.69141, 0, 0, 1.04602],
+    "88": [0, 0.69141, 0, 0, 0.71922],
+    "89": [0.18906, 0.69141, 0, 0, 0.83293],
+    "90": [0.12604, 0.69141, 0, 0, 0.60201],
+    "91": [0.24982, 0.74947, 0, 0, 0.27764],
+    "93": [0.24982, 0.74947, 0, 0, 0.27764],
+    "94": [0, 0.69141, 0, 0, 0.49965],
+    "97": [0, 0.47534, 0, 0, 0.50046],
+    "98": [0, 0.69141, 0, 0, 0.51315],
+    "99": [0, 0.47534, 0, 0, 0.38946],
+    "100": [0, 0.62119, 0, 0, 0.49857],
+    "101": [0, 0.47534, 0, 0, 0.40053],
+    "102": [0.18906, 0.69141, 0, 0, 0.32626],
+    "103": [0.18906, 0.47534, 0, 0, 0.5037],
+    "104": [0.18906, 0.69141, 0, 0, 0.52126],
+    "105": [0, 0.69141, 0, 0, 0.27899],
+    "106": [0, 0.69141, 0, 0, 0.28088],
+    "107": [0, 0.69141, 0, 0, 0.38946],
+    "108": [0, 0.69141, 0, 0, 0.27953],
+    "109": [0, 0.47534, 0, 0, 0.76676],
+    "110": [0, 0.47534, 0, 0, 0.52666],
+    "111": [0, 0.47534, 0, 0, 0.48885],
+    "112": [0.18906, 0.52396, 0, 0, 0.50046],
+    "113": [0.18906, 0.47534, 0, 0, 0.48912],
+    "114": [0, 0.47534, 0, 0, 0.38919],
+    "115": [0, 0.47534, 0, 0, 0.44266],
+    "116": [0, 0.62119, 0, 0, 0.33301],
+    "117": [0, 0.47534, 0, 0, 0.5172],
+    "118": [0, 0.52396, 0, 0, 0.5118],
+    "119": [0, 0.52396, 0, 0, 0.77351],
+    "120": [0.18906, 0.47534, 0, 0, 0.38865],
+    "121": [0.18906, 0.47534, 0, 0, 0.49884],
+    "122": [0.18906, 0.47534, 0, 0, 0.39054],
+    "8216": [0, 0.69141, 0, 0, 0.21471],
+    "8217": [0, 0.69141, 0, 0, 0.21471],
+    "58112": [0, 0.62119, 0, 0, 0.49749],
+    "58113": [0, 0.62119, 0, 0, 0.4983],
+    "58114": [0.18906, 0.69141, 0, 0, 0.33328],
+    "58115": [0.18906, 0.69141, 0, 0, 0.32923],
+    "58116": [0.18906, 0.47534, 0, 0, 0.50343],
+    "58117": [0, 0.69141, 0, 0, 0.33301],
+    "58118": [0, 0.62119, 0, 0, 0.33409],
+    "58119": [0, 0.47534, 0, 0, 0.50073]
+  },
+  "Main-Bold": {
+    "33": [0, 0.69444, 0, 0, 0.35],
+    "34": [0, 0.69444, 0, 0, 0.60278],
+    "35": [0.19444, 0.69444, 0, 0, 0.95833],
+    "36": [0.05556, 0.75, 0, 0, 0.575],
+    "37": [0.05556, 0.75, 0, 0, 0.95833],
+    "38": [0, 0.69444, 0, 0, 0.89444],
+    "39": [0, 0.69444, 0, 0, 0.31944],
+    "40": [0.25, 0.75, 0, 0, 0.44722],
+    "41": [0.25, 0.75, 0, 0, 0.44722],
+    "42": [0, 0.75, 0, 0, 0.575],
+    "43": [0.13333, 0.63333, 0, 0, 0.89444],
+    "44": [0.19444, 0.15556, 0, 0, 0.31944],
+    "45": [0, 0.44444, 0, 0, 0.38333],
+    "46": [0, 0.15556, 0, 0, 0.31944],
+    "47": [0.25, 0.75, 0, 0, 0.575],
+    "48": [0, 0.64444, 0, 0, 0.575],
+    "49": [0, 0.64444, 0, 0, 0.575],
+    "50": [0, 0.64444, 0, 0, 0.575],
+    "51": [0, 0.64444, 0, 0, 0.575],
+    "52": [0, 0.64444, 0, 0, 0.575],
+    "53": [0, 0.64444, 0, 0, 0.575],
+    "54": [0, 0.64444, 0, 0, 0.575],
+    "55": [0, 0.64444, 0, 0, 0.575],
+    "56": [0, 0.64444, 0, 0, 0.575],
+    "57": [0, 0.64444, 0, 0, 0.575],
+    "58": [0, 0.44444, 0, 0, 0.31944],
+    "59": [0.19444, 0.44444, 0, 0, 0.31944],
+    "60": [0.08556, 0.58556, 0, 0, 0.89444],
+    "61": [-0.10889, 0.39111, 0, 0, 0.89444],
+    "62": [0.08556, 0.58556, 0, 0, 0.89444],
+    "63": [0, 0.69444, 0, 0, 0.54305],
+    "64": [0, 0.69444, 0, 0, 0.89444],
+    "65": [0, 0.68611, 0, 0, 0.86944],
+    "66": [0, 0.68611, 0, 0, 0.81805],
+    "67": [0, 0.68611, 0, 0, 0.83055],
+    "68": [0, 0.68611, 0, 0, 0.88194],
+    "69": [0, 0.68611, 0, 0, 0.75555],
+    "70": [0, 0.68611, 0, 0, 0.72361],
+    "71": [0, 0.68611, 0, 0, 0.90416],
+    "72": [0, 0.68611, 0, 0, 0.9],
+    "73": [0, 0.68611, 0, 0, 0.43611],
+    "74": [0, 0.68611, 0, 0, 0.59444],
+    "75": [0, 0.68611, 0, 0, 0.90138],
+    "76": [0, 0.68611, 0, 0, 0.69166],
+    "77": [0, 0.68611, 0, 0, 1.09166],
+    "78": [0, 0.68611, 0, 0, 0.9],
+    "79": [0, 0.68611, 0, 0, 0.86388],
+    "80": [0, 0.68611, 0, 0, 0.78611],
+    "81": [0.19444, 0.68611, 0, 0, 0.86388],
+    "82": [0, 0.68611, 0, 0, 0.8625],
+    "83": [0, 0.68611, 0, 0, 0.63889],
+    "84": [0, 0.68611, 0, 0, 0.8],
+    "85": [0, 0.68611, 0, 0, 0.88472],
+    "86": [0, 0.68611, 0.01597, 0, 0.86944],
+    "87": [0, 0.68611, 0.01597, 0, 1.18888],
+    "88": [0, 0.68611, 0, 0, 0.86944],
+    "89": [0, 0.68611, 0.02875, 0, 0.86944],
+    "90": [0, 0.68611, 0, 0, 0.70277],
+    "91": [0.25, 0.75, 0, 0, 0.31944],
+    "92": [0.25, 0.75, 0, 0, 0.575],
+    "93": [0.25, 0.75, 0, 0, 0.31944],
+    "94": [0, 0.69444, 0, 0, 0.575],
+    "95": [0.31, 0.13444, 0.03194, 0, 0.575],
+    "97": [0, 0.44444, 0, 0, 0.55902],
+    "98": [0, 0.69444, 0, 0, 0.63889],
+    "99": [0, 0.44444, 0, 0, 0.51111],
+    "100": [0, 0.69444, 0, 0, 0.63889],
+    "101": [0, 0.44444, 0, 0, 0.52708],
+    "102": [0, 0.69444, 0.10903, 0, 0.35139],
+    "103": [0.19444, 0.44444, 0.01597, 0, 0.575],
+    "104": [0, 0.69444, 0, 0, 0.63889],
+    "105": [0, 0.69444, 0, 0, 0.31944],
+    "106": [0.19444, 0.69444, 0, 0, 0.35139],
+    "107": [0, 0.69444, 0, 0, 0.60694],
+    "108": [0, 0.69444, 0, 0, 0.31944],
+    "109": [0, 0.44444, 0, 0, 0.95833],
+    "110": [0, 0.44444, 0, 0, 0.63889],
+    "111": [0, 0.44444, 0, 0, 0.575],
+    "112": [0.19444, 0.44444, 0, 0, 0.63889],
+    "113": [0.19444, 0.44444, 0, 0, 0.60694],
+    "114": [0, 0.44444, 0, 0, 0.47361],
+    "115": [0, 0.44444, 0, 0, 0.45361],
+    "116": [0, 0.63492, 0, 0, 0.44722],
+    "117": [0, 0.44444, 0, 0, 0.63889],
+    "118": [0, 0.44444, 0.01597, 0, 0.60694],
+    "119": [0, 0.44444, 0.01597, 0, 0.83055],
+    "120": [0, 0.44444, 0, 0, 0.60694],
+    "121": [0.19444, 0.44444, 0.01597, 0, 0.60694],
+    "122": [0, 0.44444, 0, 0, 0.51111],
+    "123": [0.25, 0.75, 0, 0, 0.575],
+    "124": [0.25, 0.75, 0, 0, 0.31944],
+    "125": [0.25, 0.75, 0, 0, 0.575],
+    "126": [0.35, 0.34444, 0, 0, 0.575],
+    "168": [0, 0.69444, 0, 0, 0.575],
+    "172": [0, 0.44444, 0, 0, 0.76666],
+    "176": [0, 0.69444, 0, 0, 0.86944],
+    "177": [0.13333, 0.63333, 0, 0, 0.89444],
+    "184": [0.17014, 0, 0, 0, 0.51111],
+    "198": [0, 0.68611, 0, 0, 1.04166],
+    "215": [0.13333, 0.63333, 0, 0, 0.89444],
+    "216": [0.04861, 0.73472, 0, 0, 0.89444],
+    "223": [0, 0.69444, 0, 0, 0.59722],
+    "230": [0, 0.44444, 0, 0, 0.83055],
+    "247": [0.13333, 0.63333, 0, 0, 0.89444],
+    "248": [0.09722, 0.54167, 0, 0, 0.575],
+    "305": [0, 0.44444, 0, 0, 0.31944],
+    "338": [0, 0.68611, 0, 0, 1.16944],
+    "339": [0, 0.44444, 0, 0, 0.89444],
+    "567": [0.19444, 0.44444, 0, 0, 0.35139],
+    "710": [0, 0.69444, 0, 0, 0.575],
+    "711": [0, 0.63194, 0, 0, 0.575],
+    "713": [0, 0.59611, 0, 0, 0.575],
+    "714": [0, 0.69444, 0, 0, 0.575],
+    "715": [0, 0.69444, 0, 0, 0.575],
+    "728": [0, 0.69444, 0, 0, 0.575],
+    "729": [0, 0.69444, 0, 0, 0.31944],
+    "730": [0, 0.69444, 0, 0, 0.86944],
+    "732": [0, 0.69444, 0, 0, 0.575],
+    "733": [0, 0.69444, 0, 0, 0.575],
+    "915": [0, 0.68611, 0, 0, 0.69166],
+    "916": [0, 0.68611, 0, 0, 0.95833],
+    "920": [0, 0.68611, 0, 0, 0.89444],
+    "923": [0, 0.68611, 0, 0, 0.80555],
+    "926": [0, 0.68611, 0, 0, 0.76666],
+    "928": [0, 0.68611, 0, 0, 0.9],
+    "931": [0, 0.68611, 0, 0, 0.83055],
+    "933": [0, 0.68611, 0, 0, 0.89444],
+    "934": [0, 0.68611, 0, 0, 0.83055],
+    "936": [0, 0.68611, 0, 0, 0.89444],
+    "937": [0, 0.68611, 0, 0, 0.83055],
+    "8211": [0, 0.44444, 0.03194, 0, 0.575],
+    "8212": [0, 0.44444, 0.03194, 0, 1.14999],
+    "8216": [0, 0.69444, 0, 0, 0.31944],
+    "8217": [0, 0.69444, 0, 0, 0.31944],
+    "8220": [0, 0.69444, 0, 0, 0.60278],
+    "8221": [0, 0.69444, 0, 0, 0.60278],
+    "8224": [0.19444, 0.69444, 0, 0, 0.51111],
+    "8225": [0.19444, 0.69444, 0, 0, 0.51111],
+    "8242": [0, 0.55556, 0, 0, 0.34444],
+    "8407": [0, 0.72444, 0.15486, 0, 0.575],
+    "8463": [0, 0.69444, 0, 0, 0.66759],
+    "8465": [0, 0.69444, 0, 0, 0.83055],
+    "8467": [0, 0.69444, 0, 0, 0.47361],
+    "8472": [0.19444, 0.44444, 0, 0, 0.74027],
+    "8476": [0, 0.69444, 0, 0, 0.83055],
+    "8501": [0, 0.69444, 0, 0, 0.70277],
+    "8592": [-0.10889, 0.39111, 0, 0, 1.14999],
+    "8593": [0.19444, 0.69444, 0, 0, 0.575],
+    "8594": [-0.10889, 0.39111, 0, 0, 1.14999],
+    "8595": [0.19444, 0.69444, 0, 0, 0.575],
+    "8596": [-0.10889, 0.39111, 0, 0, 1.14999],
+    "8597": [0.25, 0.75, 0, 0, 0.575],
+    "8598": [0.19444, 0.69444, 0, 0, 1.14999],
+    "8599": [0.19444, 0.69444, 0, 0, 1.14999],
+    "8600": [0.19444, 0.69444, 0, 0, 1.14999],
+    "8601": [0.19444, 0.69444, 0, 0, 1.14999],
+    "8636": [-0.10889, 0.39111, 0, 0, 1.14999],
+    "8637": [-0.10889, 0.39111, 0, 0, 1.14999],
+    "8640": [-0.10889, 0.39111, 0, 0, 1.14999],
+    "8641": [-0.10889, 0.39111, 0, 0, 1.14999],
+    "8656": [-0.10889, 0.39111, 0, 0, 1.14999],
+    "8657": [0.19444, 0.69444, 0, 0, 0.70277],
+    "8658": [-0.10889, 0.39111, 0, 0, 1.14999],
+    "8659": [0.19444, 0.69444, 0, 0, 0.70277],
+    "8660": [-0.10889, 0.39111, 0, 0, 1.14999],
+    "8661": [0.25, 0.75, 0, 0, 0.70277],
+    "8704": [0, 0.69444, 0, 0, 0.63889],
+    "8706": [0, 0.69444, 0.06389, 0, 0.62847],
+    "8707": [0, 0.69444, 0, 0, 0.63889],
+    "8709": [0.05556, 0.75, 0, 0, 0.575],
+    "8711": [0, 0.68611, 0, 0, 0.95833],
+    "8712": [0.08556, 0.58556, 0, 0, 0.76666],
+    "8715": [0.08556, 0.58556, 0, 0, 0.76666],
+    "8722": [0.13333, 0.63333, 0, 0, 0.89444],
+    "8723": [0.13333, 0.63333, 0, 0, 0.89444],
+    "8725": [0.25, 0.75, 0, 0, 0.575],
+    "8726": [0.25, 0.75, 0, 0, 0.575],
+    "8727": [-0.02778, 0.47222, 0, 0, 0.575],
+    "8728": [-0.02639, 0.47361, 0, 0, 0.575],
+    "8729": [-0.02639, 0.47361, 0, 0, 0.575],
+    "8730": [0.18, 0.82, 0, 0, 0.95833],
+    "8733": [0, 0.44444, 0, 0, 0.89444],
+    "8734": [0, 0.44444, 0, 0, 1.14999],
+    "8736": [0, 0.69224, 0, 0, 0.72222],
+    "8739": [0.25, 0.75, 0, 0, 0.31944],
+    "8741": [0.25, 0.75, 0, 0, 0.575],
+    "8743": [0, 0.55556, 0, 0, 0.76666],
+    "8744": [0, 0.55556, 0, 0, 0.76666],
+    "8745": [0, 0.55556, 0, 0, 0.76666],
+    "8746": [0, 0.55556, 0, 0, 0.76666],
+    "8747": [0.19444, 0.69444, 0.12778, 0, 0.56875],
+    "8764": [-0.10889, 0.39111, 0, 0, 0.89444],
+    "8768": [0.19444, 0.69444, 0, 0, 0.31944],
+    "8771": [0.00222, 0.50222, 0, 0, 0.89444],
+    "8776": [0.02444, 0.52444, 0, 0, 0.89444],
+    "8781": [0.00222, 0.50222, 0, 0, 0.89444],
+    "8801": [0.00222, 0.50222, 0, 0, 0.89444],
+    "8804": [0.19667, 0.69667, 0, 0, 0.89444],
+    "8805": [0.19667, 0.69667, 0, 0, 0.89444],
+    "8810": [0.08556, 0.58556, 0, 0, 1.14999],
+    "8811": [0.08556, 0.58556, 0, 0, 1.14999],
+    "8826": [0.08556, 0.58556, 0, 0, 0.89444],
+    "8827": [0.08556, 0.58556, 0, 0, 0.89444],
+    "8834": [0.08556, 0.58556, 0, 0, 0.89444],
+    "8835": [0.08556, 0.58556, 0, 0, 0.89444],
+    "8838": [0.19667, 0.69667, 0, 0, 0.89444],
+    "8839": [0.19667, 0.69667, 0, 0, 0.89444],
+    "8846": [0, 0.55556, 0, 0, 0.76666],
+    "8849": [0.19667, 0.69667, 0, 0, 0.89444],
+    "8850": [0.19667, 0.69667, 0, 0, 0.89444],
+    "8851": [0, 0.55556, 0, 0, 0.76666],
+    "8852": [0, 0.55556, 0, 0, 0.76666],
+    "8853": [0.13333, 0.63333, 0, 0, 0.89444],
+    "8854": [0.13333, 0.63333, 0, 0, 0.89444],
+    "8855": [0.13333, 0.63333, 0, 0, 0.89444],
+    "8856": [0.13333, 0.63333, 0, 0, 0.89444],
+    "8857": [0.13333, 0.63333, 0, 0, 0.89444],
+    "8866": [0, 0.69444, 0, 0, 0.70277],
+    "8867": [0, 0.69444, 0, 0, 0.70277],
+    "8868": [0, 0.69444, 0, 0, 0.89444],
+    "8869": [0, 0.69444, 0, 0, 0.89444],
+    "8900": [-0.02639, 0.47361, 0, 0, 0.575],
+    "8901": [-0.02639, 0.47361, 0, 0, 0.31944],
+    "8902": [-0.02778, 0.47222, 0, 0, 0.575],
+    "8968": [0.25, 0.75, 0, 0, 0.51111],
+    "8969": [0.25, 0.75, 0, 0, 0.51111],
+    "8970": [0.25, 0.75, 0, 0, 0.51111],
+    "8971": [0.25, 0.75, 0, 0, 0.51111],
+    "8994": [-0.13889, 0.36111, 0, 0, 1.14999],
+    "8995": [-0.13889, 0.36111, 0, 0, 1.14999],
+    "9651": [0.19444, 0.69444, 0, 0, 1.02222],
+    "9657": [-0.02778, 0.47222, 0, 0, 0.575],
+    "9661": [0.19444, 0.69444, 0, 0, 1.02222],
+    "9667": [-0.02778, 0.47222, 0, 0, 0.575],
+    "9711": [0.19444, 0.69444, 0, 0, 1.14999],
+    "9824": [0.12963, 0.69444, 0, 0, 0.89444],
+    "9825": [0.12963, 0.69444, 0, 0, 0.89444],
+    "9826": [0.12963, 0.69444, 0, 0, 0.89444],
+    "9827": [0.12963, 0.69444, 0, 0, 0.89444],
+    "9837": [0, 0.75, 0, 0, 0.44722],
+    "9838": [0.19444, 0.69444, 0, 0, 0.44722],
+    "9839": [0.19444, 0.69444, 0, 0, 0.44722],
+    "10216": [0.25, 0.75, 0, 0, 0.44722],
+    "10217": [0.25, 0.75, 0, 0, 0.44722],
+    "10815": [0, 0.68611, 0, 0, 0.9],
+    "10927": [0.19667, 0.69667, 0, 0, 0.89444],
+    "10928": [0.19667, 0.69667, 0, 0, 0.89444],
+    "57376": [0.19444, 0.69444, 0, 0, 0]
+  },
+  "Main-BoldItalic": {
+    "33": [0, 0.69444, 0.11417, 0, 0.38611],
+    "34": [0, 0.69444, 0.07939, 0, 0.62055],
+    "35": [0.19444, 0.69444, 0.06833, 0, 0.94444],
+    "37": [0.05556, 0.75, 0.12861, 0, 0.94444],
+    "38": [0, 0.69444, 0.08528, 0, 0.88555],
+    "39": [0, 0.69444, 0.12945, 0, 0.35555],
+    "40": [0.25, 0.75, 0.15806, 0, 0.47333],
+    "41": [0.25, 0.75, 0.03306, 0, 0.47333],
+    "42": [0, 0.75, 0.14333, 0, 0.59111],
+    "43": [0.10333, 0.60333, 0.03306, 0, 0.88555],
+    "44": [0.19444, 0.14722, 0, 0, 0.35555],
+    "45": [0, 0.44444, 0.02611, 0, 0.41444],
+    "46": [0, 0.14722, 0, 0, 0.35555],
+    "47": [0.25, 0.75, 0.15806, 0, 0.59111],
+    "48": [0, 0.64444, 0.13167, 0, 0.59111],
+    "49": [0, 0.64444, 0.13167, 0, 0.59111],
+    "50": [0, 0.64444, 0.13167, 0, 0.59111],
+    "51": [0, 0.64444, 0.13167, 0, 0.59111],
+    "52": [0.19444, 0.64444, 0.13167, 0, 0.59111],
+    "53": [0, 0.64444, 0.13167, 0, 0.59111],
+    "54": [0, 0.64444, 0.13167, 0, 0.59111],
+    "55": [0.19444, 0.64444, 0.13167, 0, 0.59111],
+    "56": [0, 0.64444, 0.13167, 0, 0.59111],
+    "57": [0, 0.64444, 0.13167, 0, 0.59111],
+    "58": [0, 0.44444, 0.06695, 0, 0.35555],
+    "59": [0.19444, 0.44444, 0.06695, 0, 0.35555],
+    "61": [-0.10889, 0.39111, 0.06833, 0, 0.88555],
+    "63": [0, 0.69444, 0.11472, 0, 0.59111],
+    "64": [0, 0.69444, 0.09208, 0, 0.88555],
+    "65": [0, 0.68611, 0, 0, 0.86555],
+    "66": [0, 0.68611, 0.0992, 0, 0.81666],
+    "67": [0, 0.68611, 0.14208, 0, 0.82666],
+    "68": [0, 0.68611, 0.09062, 0, 0.87555],
+    "69": [0, 0.68611, 0.11431, 0, 0.75666],
+    "70": [0, 0.68611, 0.12903, 0, 0.72722],
+    "71": [0, 0.68611, 0.07347, 0, 0.89527],
+    "72": [0, 0.68611, 0.17208, 0, 0.8961],
+    "73": [0, 0.68611, 0.15681, 0, 0.47166],
+    "74": [0, 0.68611, 0.145, 0, 0.61055],
+    "75": [0, 0.68611, 0.14208, 0, 0.89499],
+    "76": [0, 0.68611, 0, 0, 0.69777],
+    "77": [0, 0.68611, 0.17208, 0, 1.07277],
+    "78": [0, 0.68611, 0.17208, 0, 0.8961],
+    "79": [0, 0.68611, 0.09062, 0, 0.85499],
+    "80": [0, 0.68611, 0.0992, 0, 0.78721],
+    "81": [0.19444, 0.68611, 0.09062, 0, 0.85499],
+    "82": [0, 0.68611, 0.02559, 0, 0.85944],
+    "83": [0, 0.68611, 0.11264, 0, 0.64999],
+    "84": [0, 0.68611, 0.12903, 0, 0.7961],
+    "85": [0, 0.68611, 0.17208, 0, 0.88083],
+    "86": [0, 0.68611, 0.18625, 0, 0.86555],
+    "87": [0, 0.68611, 0.18625, 0, 1.15999],
+    "88": [0, 0.68611, 0.15681, 0, 0.86555],
+    "89": [0, 0.68611, 0.19803, 0, 0.86555],
+    "90": [0, 0.68611, 0.14208, 0, 0.70888],
+    "91": [0.25, 0.75, 0.1875, 0, 0.35611],
+    "93": [0.25, 0.75, 0.09972, 0, 0.35611],
+    "94": [0, 0.69444, 0.06709, 0, 0.59111],
+    "95": [0.31, 0.13444, 0.09811, 0, 0.59111],
+    "97": [0, 0.44444, 0.09426, 0, 0.59111],
+    "98": [0, 0.69444, 0.07861, 0, 0.53222],
+    "99": [0, 0.44444, 0.05222, 0, 0.53222],
+    "100": [0, 0.69444, 0.10861, 0, 0.59111],
+    "101": [0, 0.44444, 0.085, 0, 0.53222],
+    "102": [0.19444, 0.69444, 0.21778, 0, 0.4],
+    "103": [0.19444, 0.44444, 0.105, 0, 0.53222],
+    "104": [0, 0.69444, 0.09426, 0, 0.59111],
+    "105": [0, 0.69326, 0.11387, 0, 0.35555],
+    "106": [0.19444, 0.69326, 0.1672, 0, 0.35555],
+    "107": [0, 0.69444, 0.11111, 0, 0.53222],
+    "108": [0, 0.69444, 0.10861, 0, 0.29666],
+    "109": [0, 0.44444, 0.09426, 0, 0.94444],
+    "110": [0, 0.44444, 0.09426, 0, 0.64999],
+    "111": [0, 0.44444, 0.07861, 0, 0.59111],
+    "112": [0.19444, 0.44444, 0.07861, 0, 0.59111],
+    "113": [0.19444, 0.44444, 0.105, 0, 0.53222],
+    "114": [0, 0.44444, 0.11111, 0, 0.50167],
+    "115": [0, 0.44444, 0.08167, 0, 0.48694],
+    "116": [0, 0.63492, 0.09639, 0, 0.385],
+    "117": [0, 0.44444, 0.09426, 0, 0.62055],
+    "118": [0, 0.44444, 0.11111, 0, 0.53222],
+    "119": [0, 0.44444, 0.11111, 0, 0.76777],
+    "120": [0, 0.44444, 0.12583, 0, 0.56055],
+    "121": [0.19444, 0.44444, 0.105, 0, 0.56166],
+    "122": [0, 0.44444, 0.13889, 0, 0.49055],
+    "126": [0.35, 0.34444, 0.11472, 0, 0.59111],
+    "163": [0, 0.69444, 0, 0, 0.86853],
+    "168": [0, 0.69444, 0.11473, 0, 0.59111],
+    "176": [0, 0.69444, 0, 0, 0.94888],
+    "184": [0.17014, 0, 0, 0, 0.53222],
+    "198": [0, 0.68611, 0.11431, 0, 1.02277],
+    "216": [0.04861, 0.73472, 0.09062, 0, 0.88555],
+    "223": [0.19444, 0.69444, 0.09736, 0, 0.665],
+    "230": [0, 0.44444, 0.085, 0, 0.82666],
+    "248": [0.09722, 0.54167, 0.09458, 0, 0.59111],
+    "305": [0, 0.44444, 0.09426, 0, 0.35555],
+    "338": [0, 0.68611, 0.11431, 0, 1.14054],
+    "339": [0, 0.44444, 0.085, 0, 0.82666],
+    "567": [0.19444, 0.44444, 0.04611, 0, 0.385],
+    "710": [0, 0.69444, 0.06709, 0, 0.59111],
+    "711": [0, 0.63194, 0.08271, 0, 0.59111],
+    "713": [0, 0.59444, 0.10444, 0, 0.59111],
+    "714": [0, 0.69444, 0.08528, 0, 0.59111],
+    "715": [0, 0.69444, 0, 0, 0.59111],
+    "728": [0, 0.69444, 0.10333, 0, 0.59111],
+    "729": [0, 0.69444, 0.12945, 0, 0.35555],
+    "730": [0, 0.69444, 0, 0, 0.94888],
+    "732": [0, 0.69444, 0.11472, 0, 0.59111],
+    "733": [0, 0.69444, 0.11472, 0, 0.59111],
+    "915": [0, 0.68611, 0.12903, 0, 0.69777],
+    "916": [0, 0.68611, 0, 0, 0.94444],
+    "920": [0, 0.68611, 0.09062, 0, 0.88555],
+    "923": [0, 0.68611, 0, 0, 0.80666],
+    "926": [0, 0.68611, 0.15092, 0, 0.76777],
+    "928": [0, 0.68611, 0.17208, 0, 0.8961],
+    "931": [0, 0.68611, 0.11431, 0, 0.82666],
+    "933": [0, 0.68611, 0.10778, 0, 0.88555],
+    "934": [0, 0.68611, 0.05632, 0, 0.82666],
+    "936": [0, 0.68611, 0.10778, 0, 0.88555],
+    "937": [0, 0.68611, 0.0992, 0, 0.82666],
+    "8211": [0, 0.44444, 0.09811, 0, 0.59111],
+    "8212": [0, 0.44444, 0.09811, 0, 1.18221],
+    "8216": [0, 0.69444, 0.12945, 0, 0.35555],
+    "8217": [0, 0.69444, 0.12945, 0, 0.35555],
+    "8220": [0, 0.69444, 0.16772, 0, 0.62055],
+    "8221": [0, 0.69444, 0.07939, 0, 0.62055]
+  },
+  "Main-Italic": {
+    "33": [0, 0.69444, 0.12417, 0, 0.30667],
+    "34": [0, 0.69444, 0.06961, 0, 0.51444],
+    "35": [0.19444, 0.69444, 0.06616, 0, 0.81777],
+    "37": [0.05556, 0.75, 0.13639, 0, 0.81777],
+    "38": [0, 0.69444, 0.09694, 0, 0.76666],
+    "39": [0, 0.69444, 0.12417, 0, 0.30667],
+    "40": [0.25, 0.75, 0.16194, 0, 0.40889],
+    "41": [0.25, 0.75, 0.03694, 0, 0.40889],
+    "42": [0, 0.75, 0.14917, 0, 0.51111],
+    "43": [0.05667, 0.56167, 0.03694, 0, 0.76666],
+    "44": [0.19444, 0.10556, 0, 0, 0.30667],
+    "45": [0, 0.43056, 0.02826, 0, 0.35778],
+    "46": [0, 0.10556, 0, 0, 0.30667],
+    "47": [0.25, 0.75, 0.16194, 0, 0.51111],
+    "48": [0, 0.64444, 0.13556, 0, 0.51111],
+    "49": [0, 0.64444, 0.13556, 0, 0.51111],
+    "50": [0, 0.64444, 0.13556, 0, 0.51111],
+    "51": [0, 0.64444, 0.13556, 0, 0.51111],
+    "52": [0.19444, 0.64444, 0.13556, 0, 0.51111],
+    "53": [0, 0.64444, 0.13556, 0, 0.51111],
+    "54": [0, 0.64444, 0.13556, 0, 0.51111],
+    "55": [0.19444, 0.64444, 0.13556, 0, 0.51111],
+    "56": [0, 0.64444, 0.13556, 0, 0.51111],
+    "57": [0, 0.64444, 0.13556, 0, 0.51111],
+    "58": [0, 0.43056, 0.0582, 0, 0.30667],
+    "59": [0.19444, 0.43056, 0.0582, 0, 0.30667],
+    "61": [-0.13313, 0.36687, 0.06616, 0, 0.76666],
+    "63": [0, 0.69444, 0.1225, 0, 0.51111],
+    "64": [0, 0.69444, 0.09597, 0, 0.76666],
+    "65": [0, 0.68333, 0, 0, 0.74333],
+    "66": [0, 0.68333, 0.10257, 0, 0.70389],
+    "67": [0, 0.68333, 0.14528, 0, 0.71555],
+    "68": [0, 0.68333, 0.09403, 0, 0.755],
+    "69": [0, 0.68333, 0.12028, 0, 0.67833],
+    "70": [0, 0.68333, 0.13305, 0, 0.65277],
+    "71": [0, 0.68333, 0.08722, 0, 0.77361],
+    "72": [0, 0.68333, 0.16389, 0, 0.74333],
+    "73": [0, 0.68333, 0.15806, 0, 0.38555],
+    "74": [0, 0.68333, 0.14028, 0, 0.525],
+    "75": [0, 0.68333, 0.14528, 0, 0.76888],
+    "76": [0, 0.68333, 0, 0, 0.62722],
+    "77": [0, 0.68333, 0.16389, 0, 0.89666],
+    "78": [0, 0.68333, 0.16389, 0, 0.74333],
+    "79": [0, 0.68333, 0.09403, 0, 0.76666],
+    "80": [0, 0.68333, 0.10257, 0, 0.67833],
+    "81": [0.19444, 0.68333, 0.09403, 0, 0.76666],
+    "82": [0, 0.68333, 0.03868, 0, 0.72944],
+    "83": [0, 0.68333, 0.11972, 0, 0.56222],
+    "84": [0, 0.68333, 0.13305, 0, 0.71555],
+    "85": [0, 0.68333, 0.16389, 0, 0.74333],
+    "86": [0, 0.68333, 0.18361, 0, 0.74333],
+    "87": [0, 0.68333, 0.18361, 0, 0.99888],
+    "88": [0, 0.68333, 0.15806, 0, 0.74333],
+    "89": [0, 0.68333, 0.19383, 0, 0.74333],
+    "90": [0, 0.68333, 0.14528, 0, 0.61333],
+    "91": [0.25, 0.75, 0.1875, 0, 0.30667],
+    "93": [0.25, 0.75, 0.10528, 0, 0.30667],
+    "94": [0, 0.69444, 0.06646, 0, 0.51111],
+    "95": [0.31, 0.12056, 0.09208, 0, 0.51111],
+    "97": [0, 0.43056, 0.07671, 0, 0.51111],
+    "98": [0, 0.69444, 0.06312, 0, 0.46],
+    "99": [0, 0.43056, 0.05653, 0, 0.46],
+    "100": [0, 0.69444, 0.10333, 0, 0.51111],
+    "101": [0, 0.43056, 0.07514, 0, 0.46],
+    "102": [0.19444, 0.69444, 0.21194, 0, 0.30667],
+    "103": [0.19444, 0.43056, 0.08847, 0, 0.46],
+    "104": [0, 0.69444, 0.07671, 0, 0.51111],
+    "105": [0, 0.65536, 0.1019, 0, 0.30667],
+    "106": [0.19444, 0.65536, 0.14467, 0, 0.30667],
+    "107": [0, 0.69444, 0.10764, 0, 0.46],
+    "108": [0, 0.69444, 0.10333, 0, 0.25555],
+    "109": [0, 0.43056, 0.07671, 0, 0.81777],
+    "110": [0, 0.43056, 0.07671, 0, 0.56222],
+    "111": [0, 0.43056, 0.06312, 0, 0.51111],
+    "112": [0.19444, 0.43056, 0.06312, 0, 0.51111],
+    "113": [0.19444, 0.43056, 0.08847, 0, 0.46],
+    "114": [0, 0.43056, 0.10764, 0, 0.42166],
+    "115": [0, 0.43056, 0.08208, 0, 0.40889],
+    "116": [0, 0.61508, 0.09486, 0, 0.33222],
+    "117": [0, 0.43056, 0.07671, 0, 0.53666],
+    "118": [0, 0.43056, 0.10764, 0, 0.46],
+    "119": [0, 0.43056, 0.10764, 0, 0.66444],
+    "120": [0, 0.43056, 0.12042, 0, 0.46389],
+    "121": [0.19444, 0.43056, 0.08847, 0, 0.48555],
+    "122": [0, 0.43056, 0.12292, 0, 0.40889],
+    "126": [0.35, 0.31786, 0.11585, 0, 0.51111],
+    "163": [0, 0.69444, 0, 0, 0.76909],
+    "168": [0, 0.66786, 0.10474, 0, 0.51111],
+    "176": [0, 0.69444, 0, 0, 0.83129],
+    "184": [0.17014, 0, 0, 0, 0.46],
+    "198": [0, 0.68333, 0.12028, 0, 0.88277],
+    "216": [0.04861, 0.73194, 0.09403, 0, 0.76666],
+    "223": [0.19444, 0.69444, 0.10514, 0, 0.53666],
+    "230": [0, 0.43056, 0.07514, 0, 0.71555],
+    "248": [0.09722, 0.52778, 0.09194, 0, 0.51111],
+    "305": [0, 0.43056, 0, 0.02778, 0.32246],
+    "338": [0, 0.68333, 0.12028, 0, 0.98499],
+    "339": [0, 0.43056, 0.07514, 0, 0.71555],
+    "567": [0.19444, 0.43056, 0, 0.08334, 0.38403],
+    "710": [0, 0.69444, 0.06646, 0, 0.51111],
+    "711": [0, 0.62847, 0.08295, 0, 0.51111],
+    "713": [0, 0.56167, 0.10333, 0, 0.51111],
+    "714": [0, 0.69444, 0.09694, 0, 0.51111],
+    "715": [0, 0.69444, 0, 0, 0.51111],
+    "728": [0, 0.69444, 0.10806, 0, 0.51111],
+    "729": [0, 0.66786, 0.11752, 0, 0.30667],
+    "730": [0, 0.69444, 0, 0, 0.83129],
+    "732": [0, 0.66786, 0.11585, 0, 0.51111],
+    "733": [0, 0.69444, 0.1225, 0, 0.51111],
+    "915": [0, 0.68333, 0.13305, 0, 0.62722],
+    "916": [0, 0.68333, 0, 0, 0.81777],
+    "920": [0, 0.68333, 0.09403, 0, 0.76666],
+    "923": [0, 0.68333, 0, 0, 0.69222],
+    "926": [0, 0.68333, 0.15294, 0, 0.66444],
+    "928": [0, 0.68333, 0.16389, 0, 0.74333],
+    "931": [0, 0.68333, 0.12028, 0, 0.71555],
+    "933": [0, 0.68333, 0.11111, 0, 0.76666],
+    "934": [0, 0.68333, 0.05986, 0, 0.71555],
+    "936": [0, 0.68333, 0.11111, 0, 0.76666],
+    "937": [0, 0.68333, 0.10257, 0, 0.71555],
+    "8211": [0, 0.43056, 0.09208, 0, 0.51111],
+    "8212": [0, 0.43056, 0.09208, 0, 1.02222],
+    "8216": [0, 0.69444, 0.12417, 0, 0.30667],
+    "8217": [0, 0.69444, 0.12417, 0, 0.30667],
+    "8220": [0, 0.69444, 0.1685, 0, 0.51444],
+    "8221": [0, 0.69444, 0.06961, 0, 0.51444],
+    "8463": [0, 0.68889, 0, 0, 0.54028]
+  },
+  "Main-Regular": {
+    "32": [0, 0, 0, 0, 0.25],
+    "33": [0, 0.69444, 0, 0, 0.27778],
+    "34": [0, 0.69444, 0, 0, 0.5],
+    "35": [0.19444, 0.69444, 0, 0, 0.83334],
+    "36": [0.05556, 0.75, 0, 0, 0.5],
+    "37": [0.05556, 0.75, 0, 0, 0.83334],
+    "38": [0, 0.69444, 0, 0, 0.77778],
+    "39": [0, 0.69444, 0, 0, 0.27778],
+    "40": [0.25, 0.75, 0, 0, 0.38889],
+    "41": [0.25, 0.75, 0, 0, 0.38889],
+    "42": [0, 0.75, 0, 0, 0.5],
+    "43": [0.08333, 0.58333, 0, 0, 0.77778],
+    "44": [0.19444, 0.10556, 0, 0, 0.27778],
+    "45": [0, 0.43056, 0, 0, 0.33333],
+    "46": [0, 0.10556, 0, 0, 0.27778],
+    "47": [0.25, 0.75, 0, 0, 0.5],
+    "48": [0, 0.64444, 0, 0, 0.5],
+    "49": [0, 0.64444, 0, 0, 0.5],
+    "50": [0, 0.64444, 0, 0, 0.5],
+    "51": [0, 0.64444, 0, 0, 0.5],
+    "52": [0, 0.64444, 0, 0, 0.5],
+    "53": [0, 0.64444, 0, 0, 0.5],
+    "54": [0, 0.64444, 0, 0, 0.5],
+    "55": [0, 0.64444, 0, 0, 0.5],
+    "56": [0, 0.64444, 0, 0, 0.5],
+    "57": [0, 0.64444, 0, 0, 0.5],
+    "58": [0, 0.43056, 0, 0, 0.27778],
+    "59": [0.19444, 0.43056, 0, 0, 0.27778],
+    "60": [0.0391, 0.5391, 0, 0, 0.77778],
+    "61": [-0.13313, 0.36687, 0, 0, 0.77778],
+    "62": [0.0391, 0.5391, 0, 0, 0.77778],
+    "63": [0, 0.69444, 0, 0, 0.47222],
+    "64": [0, 0.69444, 0, 0, 0.77778],
+    "65": [0, 0.68333, 0, 0, 0.75],
+    "66": [0, 0.68333, 0, 0, 0.70834],
+    "67": [0, 0.68333, 0, 0, 0.72222],
+    "68": [0, 0.68333, 0, 0, 0.76389],
+    "69": [0, 0.68333, 0, 0, 0.68056],
+    "70": [0, 0.68333, 0, 0, 0.65278],
+    "71": [0, 0.68333, 0, 0, 0.78472],
+    "72": [0, 0.68333, 0, 0, 0.75],
+    "73": [0, 0.68333, 0, 0, 0.36111],
+    "74": [0, 0.68333, 0, 0, 0.51389],
+    "75": [0, 0.68333, 0, 0, 0.77778],
+    "76": [0, 0.68333, 0, 0, 0.625],
+    "77": [0, 0.68333, 0, 0, 0.91667],
+    "78": [0, 0.68333, 0, 0, 0.75],
+    "79": [0, 0.68333, 0, 0, 0.77778],
+    "80": [0, 0.68333, 0, 0, 0.68056],
+    "81": [0.19444, 0.68333, 0, 0, 0.77778],
+    "82": [0, 0.68333, 0, 0, 0.73611],
+    "83": [0, 0.68333, 0, 0, 0.55556],
+    "84": [0, 0.68333, 0, 0, 0.72222],
+    "85": [0, 0.68333, 0, 0, 0.75],
+    "86": [0, 0.68333, 0.01389, 0, 0.75],
+    "87": [0, 0.68333, 0.01389, 0, 1.02778],
+    "88": [0, 0.68333, 0, 0, 0.75],
+    "89": [0, 0.68333, 0.025, 0, 0.75],
+    "90": [0, 0.68333, 0, 0, 0.61111],
+    "91": [0.25, 0.75, 0, 0, 0.27778],
+    "92": [0.25, 0.75, 0, 0, 0.5],
+    "93": [0.25, 0.75, 0, 0, 0.27778],
+    "94": [0, 0.69444, 0, 0, 0.5],
+    "95": [0.31, 0.12056, 0.02778, 0, 0.5],
+    "97": [0, 0.43056, 0, 0, 0.5],
+    "98": [0, 0.69444, 0, 0, 0.55556],
+    "99": [0, 0.43056, 0, 0, 0.44445],
+    "100": [0, 0.69444, 0, 0, 0.55556],
+    "101": [0, 0.43056, 0, 0, 0.44445],
+    "102": [0, 0.69444, 0.07778, 0, 0.30556],
+    "103": [0.19444, 0.43056, 0.01389, 0, 0.5],
+    "104": [0, 0.69444, 0, 0, 0.55556],
+    "105": [0, 0.66786, 0, 0, 0.27778],
+    "106": [0.19444, 0.66786, 0, 0, 0.30556],
+    "107": [0, 0.69444, 0, 0, 0.52778],
+    "108": [0, 0.69444, 0, 0, 0.27778],
+    "109": [0, 0.43056, 0, 0, 0.83334],
+    "110": [0, 0.43056, 0, 0, 0.55556],
+    "111": [0, 0.43056, 0, 0, 0.5],
+    "112": [0.19444, 0.43056, 0, 0, 0.55556],
+    "113": [0.19444, 0.43056, 0, 0, 0.52778],
+    "114": [0, 0.43056, 0, 0, 0.39167],
+    "115": [0, 0.43056, 0, 0, 0.39445],
+    "116": [0, 0.61508, 0, 0, 0.38889],
+    "117": [0, 0.43056, 0, 0, 0.55556],
+    "118": [0, 0.43056, 0.01389, 0, 0.52778],
+    "119": [0, 0.43056, 0.01389, 0, 0.72222],
+    "120": [0, 0.43056, 0, 0, 0.52778],
+    "121": [0.19444, 0.43056, 0.01389, 0, 0.52778],
+    "122": [0, 0.43056, 0, 0, 0.44445],
+    "123": [0.25, 0.75, 0, 0, 0.5],
+    "124": [0.25, 0.75, 0, 0, 0.27778],
+    "125": [0.25, 0.75, 0, 0, 0.5],
+    "126": [0.35, 0.31786, 0, 0, 0.5],
+    "160": [0, 0, 0, 0, 0.25],
+    "167": [0.19444, 0.69444, 0, 0, 0.44445],
+    "168": [0, 0.66786, 0, 0, 0.5],
+    "172": [0, 0.43056, 0, 0, 0.66667],
+    "176": [0, 0.69444, 0, 0, 0.75],
+    "177": [0.08333, 0.58333, 0, 0, 0.77778],
+    "182": [0.19444, 0.69444, 0, 0, 0.61111],
+    "184": [0.17014, 0, 0, 0, 0.44445],
+    "198": [0, 0.68333, 0, 0, 0.90278],
+    "215": [0.08333, 0.58333, 0, 0, 0.77778],
+    "216": [0.04861, 0.73194, 0, 0, 0.77778],
+    "223": [0, 0.69444, 0, 0, 0.5],
+    "230": [0, 0.43056, 0, 0, 0.72222],
+    "247": [0.08333, 0.58333, 0, 0, 0.77778],
+    "248": [0.09722, 0.52778, 0, 0, 0.5],
+    "305": [0, 0.43056, 0, 0, 0.27778],
+    "338": [0, 0.68333, 0, 0, 1.01389],
+    "339": [0, 0.43056, 0, 0, 0.77778],
+    "567": [0.19444, 0.43056, 0, 0, 0.30556],
+    "710": [0, 0.69444, 0, 0, 0.5],
+    "711": [0, 0.62847, 0, 0, 0.5],
+    "713": [0, 0.56778, 0, 0, 0.5],
+    "714": [0, 0.69444, 0, 0, 0.5],
+    "715": [0, 0.69444, 0, 0, 0.5],
+    "728": [0, 0.69444, 0, 0, 0.5],
+    "729": [0, 0.66786, 0, 0, 0.27778],
+    "730": [0, 0.69444, 0, 0, 0.75],
+    "732": [0, 0.66786, 0, 0, 0.5],
+    "733": [0, 0.69444, 0, 0, 0.5],
+    "915": [0, 0.68333, 0, 0, 0.625],
+    "916": [0, 0.68333, 0, 0, 0.83334],
+    "920": [0, 0.68333, 0, 0, 0.77778],
+    "923": [0, 0.68333, 0, 0, 0.69445],
+    "926": [0, 0.68333, 0, 0, 0.66667],
+    "928": [0, 0.68333, 0, 0, 0.75],
+    "931": [0, 0.68333, 0, 0, 0.72222],
+    "933": [0, 0.68333, 0, 0, 0.77778],
+    "934": [0, 0.68333, 0, 0, 0.72222],
+    "936": [0, 0.68333, 0, 0, 0.77778],
+    "937": [0, 0.68333, 0, 0, 0.72222],
+    "8211": [0, 0.43056, 0.02778, 0, 0.5],
+    "8212": [0, 0.43056, 0.02778, 0, 1.0],
+    "8216": [0, 0.69444, 0, 0, 0.27778],
+    "8217": [0, 0.69444, 0, 0, 0.27778],
+    "8220": [0, 0.69444, 0, 0, 0.5],
+    "8221": [0, 0.69444, 0, 0, 0.5],
+    "8224": [0.19444, 0.69444, 0, 0, 0.44445],
+    "8225": [0.19444, 0.69444, 0, 0, 0.44445],
+    "8230": [0, 0.12, 0, 0, 1.172],
+    "8242": [0, 0.55556, 0, 0, 0.275],
+    "8407": [0, 0.71444, 0.15382, 0, 0.5],
+    "8463": [0, 0.68889, 0, 0, 0.54028],
+    "8465": [0, 0.69444, 0, 0, 0.72222],
+    "8467": [0, 0.69444, 0, 0.11111, 0.41667],
+    "8472": [0.19444, 0.43056, 0, 0.11111, 0.63646],
+    "8476": [0, 0.69444, 0, 0, 0.72222],
+    "8501": [0, 0.69444, 0, 0, 0.61111],
+    "8592": [-0.13313, 0.36687, 0, 0, 1.0],
+    "8593": [0.19444, 0.69444, 0, 0, 0.5],
+    "8594": [-0.13313, 0.36687, 0, 0, 1.0],
+    "8595": [0.19444, 0.69444, 0, 0, 0.5],
+    "8596": [-0.13313, 0.36687, 0, 0, 1.0],
+    "8597": [0.25, 0.75, 0, 0, 0.5],
+    "8598": [0.19444, 0.69444, 0, 0, 1.0],
+    "8599": [0.19444, 0.69444, 0, 0, 1.0],
+    "8600": [0.19444, 0.69444, 0, 0, 1.0],
+    "8601": [0.19444, 0.69444, 0, 0, 1.0],
+    "8614": [0.011, 0.511, 0, 0, 1.0],
+    "8617": [0.011, 0.511, 0, 0, 1.126],
+    "8618": [0.011, 0.511, 0, 0, 1.126],
+    "8636": [-0.13313, 0.36687, 0, 0, 1.0],
+    "8637": [-0.13313, 0.36687, 0, 0, 1.0],
+    "8640": [-0.13313, 0.36687, 0, 0, 1.0],
+    "8641": [-0.13313, 0.36687, 0, 0, 1.0],
+    "8652": [0.011, 0.671, 0, 0, 1.0],
+    "8656": [-0.13313, 0.36687, 0, 0, 1.0],
+    "8657": [0.19444, 0.69444, 0, 0, 0.61111],
+    "8658": [-0.13313, 0.36687, 0, 0, 1.0],
+    "8659": [0.19444, 0.69444, 0, 0, 0.61111],
+    "8660": [-0.13313, 0.36687, 0, 0, 1.0],
+    "8661": [0.25, 0.75, 0, 0, 0.61111],
+    "8704": [0, 0.69444, 0, 0, 0.55556],
+    "8706": [0, 0.69444, 0.05556, 0.08334, 0.5309],
+    "8707": [0, 0.69444, 0, 0, 0.55556],
+    "8709": [0.05556, 0.75, 0, 0, 0.5],
+    "8711": [0, 0.68333, 0, 0, 0.83334],
+    "8712": [0.0391, 0.5391, 0, 0, 0.66667],
+    "8715": [0.0391, 0.5391, 0, 0, 0.66667],
+    "8722": [0.08333, 0.58333, 0, 0, 0.77778],
+    "8723": [0.08333, 0.58333, 0, 0, 0.77778],
+    "8725": [0.25, 0.75, 0, 0, 0.5],
+    "8726": [0.25, 0.75, 0, 0, 0.5],
+    "8727": [-0.03472, 0.46528, 0, 0, 0.5],
+    "8728": [-0.05555, 0.44445, 0, 0, 0.5],
+    "8729": [-0.05555, 0.44445, 0, 0, 0.5],
+    "8730": [0.2, 0.8, 0, 0, 0.83334],
+    "8733": [0, 0.43056, 0, 0, 0.77778],
+    "8734": [0, 0.43056, 0, 0, 1.0],
+    "8736": [0, 0.69224, 0, 0, 0.72222],
+    "8739": [0.25, 0.75, 0, 0, 0.27778],
+    "8741": [0.25, 0.75, 0, 0, 0.5],
+    "8743": [0, 0.55556, 0, 0, 0.66667],
+    "8744": [0, 0.55556, 0, 0, 0.66667],
+    "8745": [0, 0.55556, 0, 0, 0.66667],
+    "8746": [0, 0.55556, 0, 0, 0.66667],
+    "8747": [0.19444, 0.69444, 0.11111, 0, 0.41667],
+    "8764": [-0.13313, 0.36687, 0, 0, 0.77778],
+    "8768": [0.19444, 0.69444, 0, 0, 0.27778],
+    "8771": [-0.03625, 0.46375, 0, 0, 0.77778],
+    "8773": [-0.022, 0.589, 0, 0, 1.0],
+    "8776": [-0.01688, 0.48312, 0, 0, 0.77778],
+    "8781": [-0.03625, 0.46375, 0, 0, 0.77778],
+    "8784": [-0.133, 0.67, 0, 0, 0.778],
+    "8801": [-0.03625, 0.46375, 0, 0, 0.77778],
+    "8804": [0.13597, 0.63597, 0, 0, 0.77778],
+    "8805": [0.13597, 0.63597, 0, 0, 0.77778],
+    "8810": [0.0391, 0.5391, 0, 0, 1.0],
+    "8811": [0.0391, 0.5391, 0, 0, 1.0],
+    "8826": [0.0391, 0.5391, 0, 0, 0.77778],
+    "8827": [0.0391, 0.5391, 0, 0, 0.77778],
+    "8834": [0.0391, 0.5391, 0, 0, 0.77778],
+    "8835": [0.0391, 0.5391, 0, 0, 0.77778],
+    "8838": [0.13597, 0.63597, 0, 0, 0.77778],
+    "8839": [0.13597, 0.63597, 0, 0, 0.77778],
+    "8846": [0, 0.55556, 0, 0, 0.66667],
+    "8849": [0.13597, 0.63597, 0, 0, 0.77778],
+    "8850": [0.13597, 0.63597, 0, 0, 0.77778],
+    "8851": [0, 0.55556, 0, 0, 0.66667],
+    "8852": [0, 0.55556, 0, 0, 0.66667],
+    "8853": [0.08333, 0.58333, 0, 0, 0.77778],
+    "8854": [0.08333, 0.58333, 0, 0, 0.77778],
+    "8855": [0.08333, 0.58333, 0, 0, 0.77778],
+    "8856": [0.08333, 0.58333, 0, 0, 0.77778],
+    "8857": [0.08333, 0.58333, 0, 0, 0.77778],
+    "8866": [0, 0.69444, 0, 0, 0.61111],
+    "8867": [0, 0.69444, 0, 0, 0.61111],
+    "8868": [0, 0.69444, 0, 0, 0.77778],
+    "8869": [0, 0.69444, 0, 0, 0.77778],
+    "8872": [0.249, 0.75, 0, 0, 0.867],
+    "8900": [-0.05555, 0.44445, 0, 0, 0.5],
+    "8901": [-0.05555, 0.44445, 0, 0, 0.27778],
+    "8902": [-0.03472, 0.46528, 0, 0, 0.5],
+    "8904": [0.005, 0.505, 0, 0, 0.9],
+    "8942": [0.03, 0.9, 0, 0, 0.278],
+    "8943": [-0.19, 0.31, 0, 0, 1.172],
+    "8945": [-0.1, 0.82, 0, 0, 1.282],
+    "8968": [0.25, 0.75, 0, 0, 0.44445],
+    "8969": [0.25, 0.75, 0, 0, 0.44445],
+    "8970": [0.25, 0.75, 0, 0, 0.44445],
+    "8971": [0.25, 0.75, 0, 0, 0.44445],
+    "8994": [-0.14236, 0.35764, 0, 0, 1.0],
+    "8995": [-0.14236, 0.35764, 0, 0, 1.0],
+    "9136": [0.244, 0.744, 0, 0, 0.412],
+    "9137": [0.244, 0.744, 0, 0, 0.412],
+    "9651": [0.19444, 0.69444, 0, 0, 0.88889],
+    "9657": [-0.03472, 0.46528, 0, 0, 0.5],
+    "9661": [0.19444, 0.69444, 0, 0, 0.88889],
+    "9667": [-0.03472, 0.46528, 0, 0, 0.5],
+    "9711": [0.19444, 0.69444, 0, 0, 1.0],
+    "9824": [0.12963, 0.69444, 0, 0, 0.77778],
+    "9825": [0.12963, 0.69444, 0, 0, 0.77778],
+    "9826": [0.12963, 0.69444, 0, 0, 0.77778],
+    "9827": [0.12963, 0.69444, 0, 0, 0.77778],
+    "9837": [0, 0.75, 0, 0, 0.38889],
+    "9838": [0.19444, 0.69444, 0, 0, 0.38889],
+    "9839": [0.19444, 0.69444, 0, 0, 0.38889],
+    "10216": [0.25, 0.75, 0, 0, 0.38889],
+    "10217": [0.25, 0.75, 0, 0, 0.38889],
+    "10222": [0.244, 0.744, 0, 0, 0.412],
+    "10223": [0.244, 0.744, 0, 0, 0.412],
+    "10229": [0.011, 0.511, 0, 0, 1.609],
+    "10230": [0.011, 0.511, 0, 0, 1.638],
+    "10231": [0.011, 0.511, 0, 0, 1.859],
+    "10232": [0.024, 0.525, 0, 0, 1.609],
+    "10233": [0.024, 0.525, 0, 0, 1.638],
+    "10234": [0.024, 0.525, 0, 0, 1.858],
+    "10236": [0.011, 0.511, 0, 0, 1.638],
+    "10815": [0, 0.68333, 0, 0, 0.75],
+    "10927": [0.13597, 0.63597, 0, 0, 0.77778],
+    "10928": [0.13597, 0.63597, 0, 0, 0.77778],
+    "57376": [0.19444, 0.69444, 0, 0, 0]
+  },
+  "Math-BoldItalic": {
+    "65": [0, 0.68611, 0, 0, 0.86944],
+    "66": [0, 0.68611, 0.04835, 0, 0.8664],
+    "67": [0, 0.68611, 0.06979, 0, 0.81694],
+    "68": [0, 0.68611, 0.03194, 0, 0.93812],
+    "69": [0, 0.68611, 0.05451, 0, 0.81007],
+    "70": [0, 0.68611, 0.15972, 0, 0.68889],
+    "71": [0, 0.68611, 0, 0, 0.88673],
+    "72": [0, 0.68611, 0.08229, 0, 0.98229],
+    "73": [0, 0.68611, 0.07778, 0, 0.51111],
+    "74": [0, 0.68611, 0.10069, 0, 0.63125],
+    "75": [0, 0.68611, 0.06979, 0, 0.97118],
+    "76": [0, 0.68611, 0, 0, 0.75555],
+    "77": [0, 0.68611, 0.11424, 0, 1.14201],
+    "78": [0, 0.68611, 0.11424, 0, 0.95034],
+    "79": [0, 0.68611, 0.03194, 0, 0.83666],
+    "80": [0, 0.68611, 0.15972, 0, 0.72309],
+    "81": [0.19444, 0.68611, 0, 0, 0.86861],
+    "82": [0, 0.68611, 0.00421, 0, 0.87235],
+    "83": [0, 0.68611, 0.05382, 0, 0.69271],
+    "84": [0, 0.68611, 0.15972, 0, 0.63663],
+    "85": [0, 0.68611, 0.11424, 0, 0.80027],
+    "86": [0, 0.68611, 0.25555, 0, 0.67778],
+    "87": [0, 0.68611, 0.15972, 0, 1.09305],
+    "88": [0, 0.68611, 0.07778, 0, 0.94722],
+    "89": [0, 0.68611, 0.25555, 0, 0.67458],
+    "90": [0, 0.68611, 0.06979, 0, 0.77257],
+    "97": [0, 0.44444, 0, 0, 0.63287],
+    "98": [0, 0.69444, 0, 0, 0.52083],
+    "99": [0, 0.44444, 0, 0, 0.51342],
+    "100": [0, 0.69444, 0, 0, 0.60972],
+    "101": [0, 0.44444, 0, 0, 0.55361],
+    "102": [0.19444, 0.69444, 0.11042, 0, 0.56806],
+    "103": [0.19444, 0.44444, 0.03704, 0, 0.5449],
+    "104": [0, 0.69444, 0, 0, 0.66759],
+    "105": [0, 0.69326, 0, 0, 0.4048],
+    "106": [0.19444, 0.69326, 0.0622, 0, 0.47083],
+    "107": [0, 0.69444, 0.01852, 0, 0.6037],
+    "108": [0, 0.69444, 0.0088, 0, 0.34815],
+    "109": [0, 0.44444, 0, 0, 1.0324],
+    "110": [0, 0.44444, 0, 0, 0.71296],
+    "111": [0, 0.44444, 0, 0, 0.58472],
+    "112": [0.19444, 0.44444, 0, 0, 0.60092],
+    "113": [0.19444, 0.44444, 0.03704, 0, 0.54213],
+    "114": [0, 0.44444, 0.03194, 0, 0.5287],
+    "115": [0, 0.44444, 0, 0, 0.53125],
+    "116": [0, 0.63492, 0, 0, 0.41528],
+    "117": [0, 0.44444, 0, 0, 0.68102],
+    "118": [0, 0.44444, 0.03704, 0, 0.56666],
+    "119": [0, 0.44444, 0.02778, 0, 0.83148],
+    "120": [0, 0.44444, 0, 0, 0.65903],
+    "121": [0.19444, 0.44444, 0.03704, 0, 0.59028],
+    "122": [0, 0.44444, 0.04213, 0, 0.55509],
+    "915": [0, 0.68611, 0.15972, 0, 0.65694],
+    "916": [0, 0.68611, 0, 0, 0.95833],
+    "920": [0, 0.68611, 0.03194, 0, 0.86722],
+    "923": [0, 0.68611, 0, 0, 0.80555],
+    "926": [0, 0.68611, 0.07458, 0, 0.84125],
+    "928": [0, 0.68611, 0.08229, 0, 0.98229],
+    "931": [0, 0.68611, 0.05451, 0, 0.88507],
+    "933": [0, 0.68611, 0.15972, 0, 0.67083],
+    "934": [0, 0.68611, 0, 0, 0.76666],
+    "936": [0, 0.68611, 0.11653, 0, 0.71402],
+    "937": [0, 0.68611, 0.04835, 0, 0.8789],
+    "945": [0, 0.44444, 0, 0, 0.76064],
+    "946": [0.19444, 0.69444, 0.03403, 0, 0.65972],
+    "947": [0.19444, 0.44444, 0.06389, 0, 0.59003],
+    "948": [0, 0.69444, 0.03819, 0, 0.52222],
+    "949": [0, 0.44444, 0, 0, 0.52882],
+    "950": [0.19444, 0.69444, 0.06215, 0, 0.50833],
+    "951": [0.19444, 0.44444, 0.03704, 0, 0.6],
+    "952": [0, 0.69444, 0.03194, 0, 0.5618],
+    "953": [0, 0.44444, 0, 0, 0.41204],
+    "954": [0, 0.44444, 0, 0, 0.66759],
+    "955": [0, 0.69444, 0, 0, 0.67083],
+    "956": [0.19444, 0.44444, 0, 0, 0.70787],
+    "957": [0, 0.44444, 0.06898, 0, 0.57685],
+    "958": [0.19444, 0.69444, 0.03021, 0, 0.50833],
+    "959": [0, 0.44444, 0, 0, 0.58472],
+    "960": [0, 0.44444, 0.03704, 0, 0.68241],
+    "961": [0.19444, 0.44444, 0, 0, 0.6118],
+    "962": [0.09722, 0.44444, 0.07917, 0, 0.42361],
+    "963": [0, 0.44444, 0.03704, 0, 0.68588],
+    "964": [0, 0.44444, 0.13472, 0, 0.52083],
+    "965": [0, 0.44444, 0.03704, 0, 0.63055],
+    "966": [0.19444, 0.44444, 0, 0, 0.74722],
+    "967": [0.19444, 0.44444, 0, 0, 0.71805],
+    "968": [0.19444, 0.69444, 0.03704, 0, 0.75833],
+    "969": [0, 0.44444, 0.03704, 0, 0.71782],
+    "977": [0, 0.69444, 0, 0, 0.69155],
+    "981": [0.19444, 0.69444, 0, 0, 0.7125],
+    "982": [0, 0.44444, 0.03194, 0, 0.975],
+    "1009": [0.19444, 0.44444, 0, 0, 0.6118],
+    "1013": [0, 0.44444, 0, 0, 0.48333]
+  },
+  "Math-Italic": {
+    "65": [0, 0.68333, 0, 0.13889, 0.75],
+    "66": [0, 0.68333, 0.05017, 0.08334, 0.75851],
+    "67": [0, 0.68333, 0.07153, 0.08334, 0.71472],
+    "68": [0, 0.68333, 0.02778, 0.05556, 0.82792],
+    "69": [0, 0.68333, 0.05764, 0.08334, 0.7382],
+    "70": [0, 0.68333, 0.13889, 0.08334, 0.64306],
+    "71": [0, 0.68333, 0, 0.08334, 0.78625],
+    "72": [0, 0.68333, 0.08125, 0.05556, 0.83125],
+    "73": [0, 0.68333, 0.07847, 0.11111, 0.43958],
+    "74": [0, 0.68333, 0.09618, 0.16667, 0.55451],
+    "75": [0, 0.68333, 0.07153, 0.05556, 0.84931],
+    "76": [0, 0.68333, 0, 0.02778, 0.68056],
+    "77": [0, 0.68333, 0.10903, 0.08334, 0.97014],
+    "78": [0, 0.68333, 0.10903, 0.08334, 0.80347],
+    "79": [0, 0.68333, 0.02778, 0.08334, 0.76278],
+    "80": [0, 0.68333, 0.13889, 0.08334, 0.64201],
+    "81": [0.19444, 0.68333, 0, 0.08334, 0.79056],
+    "82": [0, 0.68333, 0.00773, 0.08334, 0.75929],
+    "83": [0, 0.68333, 0.05764, 0.08334, 0.6132],
+    "84": [0, 0.68333, 0.13889, 0.08334, 0.58438],
+    "85": [0, 0.68333, 0.10903, 0.02778, 0.68278],
+    "86": [0, 0.68333, 0.22222, 0, 0.58333],
+    "87": [0, 0.68333, 0.13889, 0, 0.94445],
+    "88": [0, 0.68333, 0.07847, 0.08334, 0.82847],
+    "89": [0, 0.68333, 0.22222, 0, 0.58056],
+    "90": [0, 0.68333, 0.07153, 0.08334, 0.68264],
+    "97": [0, 0.43056, 0, 0, 0.52859],
+    "98": [0, 0.69444, 0, 0, 0.42917],
+    "99": [0, 0.43056, 0, 0.05556, 0.43276],
+    "100": [0, 0.69444, 0, 0.16667, 0.52049],
+    "101": [0, 0.43056, 0, 0.05556, 0.46563],
+    "102": [0.19444, 0.69444, 0.10764, 0.16667, 0.48959],
+    "103": [0.19444, 0.43056, 0.03588, 0.02778, 0.47697],
+    "104": [0, 0.69444, 0, 0, 0.57616],
+    "105": [0, 0.65952, 0, 0, 0.34451],
+    "106": [0.19444, 0.65952, 0.05724, 0, 0.41181],
+    "107": [0, 0.69444, 0.03148, 0, 0.5206],
+    "108": [0, 0.69444, 0.01968, 0.08334, 0.29838],
+    "109": [0, 0.43056, 0, 0, 0.87801],
+    "110": [0, 0.43056, 0, 0, 0.60023],
+    "111": [0, 0.43056, 0, 0.05556, 0.48472],
+    "112": [0.19444, 0.43056, 0, 0.08334, 0.50313],
+    "113": [0.19444, 0.43056, 0.03588, 0.08334, 0.44641],
+    "114": [0, 0.43056, 0.02778, 0.05556, 0.45116],
+    "115": [0, 0.43056, 0, 0.05556, 0.46875],
+    "116": [0, 0.61508, 0, 0.08334, 0.36111],
+    "117": [0, 0.43056, 0, 0.02778, 0.57246],
+    "118": [0, 0.43056, 0.03588, 0.02778, 0.48472],
+    "119": [0, 0.43056, 0.02691, 0.08334, 0.71592],
+    "120": [0, 0.43056, 0, 0.02778, 0.57153],
+    "121": [0.19444, 0.43056, 0.03588, 0.05556, 0.49028],
+    "122": [0, 0.43056, 0.04398, 0.05556, 0.46505],
+    "915": [0, 0.68333, 0.13889, 0.08334, 0.61528],
+    "916": [0, 0.68333, 0, 0.16667, 0.83334],
+    "920": [0, 0.68333, 0.02778, 0.08334, 0.76278],
+    "923": [0, 0.68333, 0, 0.16667, 0.69445],
+    "926": [0, 0.68333, 0.07569, 0.08334, 0.74236],
+    "928": [0, 0.68333, 0.08125, 0.05556, 0.83125],
+    "931": [0, 0.68333, 0.05764, 0.08334, 0.77986],
+    "933": [0, 0.68333, 0.13889, 0.05556, 0.58333],
+    "934": [0, 0.68333, 0, 0.08334, 0.66667],
+    "936": [0, 0.68333, 0.11, 0.05556, 0.61222],
+    "937": [0, 0.68333, 0.05017, 0.08334, 0.7724],
+    "945": [0, 0.43056, 0.0037, 0.02778, 0.6397],
+    "946": [0.19444, 0.69444, 0.05278, 0.08334, 0.56563],
+    "947": [0.19444, 0.43056, 0.05556, 0, 0.51773],
+    "948": [0, 0.69444, 0.03785, 0.05556, 0.44444],
+    "949": [0, 0.43056, 0, 0.08334, 0.46632],
+    "950": [0.19444, 0.69444, 0.07378, 0.08334, 0.4375],
+    "951": [0.19444, 0.43056, 0.03588, 0.05556, 0.49653],
+    "952": [0, 0.69444, 0.02778, 0.08334, 0.46944],
+    "953": [0, 0.43056, 0, 0.05556, 0.35394],
+    "954": [0, 0.43056, 0, 0, 0.57616],
+    "955": [0, 0.69444, 0, 0, 0.58334],
+    "956": [0.19444, 0.43056, 0, 0.02778, 0.60255],
+    "957": [0, 0.43056, 0.06366, 0.02778, 0.49398],
+    "958": [0.19444, 0.69444, 0.04601, 0.11111, 0.4375],
+    "959": [0, 0.43056, 0, 0.05556, 0.48472],
+    "960": [0, 0.43056, 0.03588, 0, 0.57003],
+    "961": [0.19444, 0.43056, 0, 0.08334, 0.51702],
+    "962": [0.09722, 0.43056, 0.07986, 0.08334, 0.36285],
+    "963": [0, 0.43056, 0.03588, 0, 0.57141],
+    "964": [0, 0.43056, 0.1132, 0.02778, 0.43715],
+    "965": [0, 0.43056, 0.03588, 0.02778, 0.54028],
+    "966": [0.19444, 0.43056, 0, 0.08334, 0.65417],
+    "967": [0.19444, 0.43056, 0, 0.05556, 0.62569],
+    "968": [0.19444, 0.69444, 0.03588, 0.11111, 0.65139],
+    "969": [0, 0.43056, 0.03588, 0, 0.62245],
+    "977": [0, 0.69444, 0, 0.08334, 0.59144],
+    "981": [0.19444, 0.69444, 0, 0.08334, 0.59583],
+    "982": [0, 0.43056, 0.02778, 0, 0.82813],
+    "1009": [0.19444, 0.43056, 0, 0.08334, 0.51702],
+    "1013": [0, 0.43056, 0, 0.05556, 0.4059]
+  },
+  "Math-Regular": {
+    "65": [0, 0.68333, 0, 0.13889, 0.75],
+    "66": [0, 0.68333, 0.05017, 0.08334, 0.75851],
+    "67": [0, 0.68333, 0.07153, 0.08334, 0.71472],
+    "68": [0, 0.68333, 0.02778, 0.05556, 0.82792],
+    "69": [0, 0.68333, 0.05764, 0.08334, 0.7382],
+    "70": [0, 0.68333, 0.13889, 0.08334, 0.64306],
+    "71": [0, 0.68333, 0, 0.08334, 0.78625],
+    "72": [0, 0.68333, 0.08125, 0.05556, 0.83125],
+    "73": [0, 0.68333, 0.07847, 0.11111, 0.43958],
+    "74": [0, 0.68333, 0.09618, 0.16667, 0.55451],
+    "75": [0, 0.68333, 0.07153, 0.05556, 0.84931],
+    "76": [0, 0.68333, 0, 0.02778, 0.68056],
+    "77": [0, 0.68333, 0.10903, 0.08334, 0.97014],
+    "78": [0, 0.68333, 0.10903, 0.08334, 0.80347],
+    "79": [0, 0.68333, 0.02778, 0.08334, 0.76278],
+    "80": [0, 0.68333, 0.13889, 0.08334, 0.64201],
+    "81": [0.19444, 0.68333, 0, 0.08334, 0.79056],
+    "82": [0, 0.68333, 0.00773, 0.08334, 0.75929],
+    "83": [0, 0.68333, 0.05764, 0.08334, 0.6132],
+    "84": [0, 0.68333, 0.13889, 0.08334, 0.58438],
+    "85": [0, 0.68333, 0.10903, 0.02778, 0.68278],
+    "86": [0, 0.68333, 0.22222, 0, 0.58333],
+    "87": [0, 0.68333, 0.13889, 0, 0.94445],
+    "88": [0, 0.68333, 0.07847, 0.08334, 0.82847],
+    "89": [0, 0.68333, 0.22222, 0, 0.58056],
+    "90": [0, 0.68333, 0.07153, 0.08334, 0.68264],
+    "97": [0, 0.43056, 0, 0, 0.52859],
+    "98": [0, 0.69444, 0, 0, 0.42917],
+    "99": [0, 0.43056, 0, 0.05556, 0.43276],
+    "100": [0, 0.69444, 0, 0.16667, 0.52049],
+    "101": [0, 0.43056, 0, 0.05556, 0.46563],
+    "102": [0.19444, 0.69444, 0.10764, 0.16667, 0.48959],
+    "103": [0.19444, 0.43056, 0.03588, 0.02778, 0.47697],
+    "104": [0, 0.69444, 0, 0, 0.57616],
+    "105": [0, 0.65952, 0, 0, 0.34451],
+    "106": [0.19444, 0.65952, 0.05724, 0, 0.41181],
+    "107": [0, 0.69444, 0.03148, 0, 0.5206],
+    "108": [0, 0.69444, 0.01968, 0.08334, 0.29838],
+    "109": [0, 0.43056, 0, 0, 0.87801],
+    "110": [0, 0.43056, 0, 0, 0.60023],
+    "111": [0, 0.43056, 0, 0.05556, 0.48472],
+    "112": [0.19444, 0.43056, 0, 0.08334, 0.50313],
+    "113": [0.19444, 0.43056, 0.03588, 0.08334, 0.44641],
+    "114": [0, 0.43056, 0.02778, 0.05556, 0.45116],
+    "115": [0, 0.43056, 0, 0.05556, 0.46875],
+    "116": [0, 0.61508, 0, 0.08334, 0.36111],
+    "117": [0, 0.43056, 0, 0.02778, 0.57246],
+    "118": [0, 0.43056, 0.03588, 0.02778, 0.48472],
+    "119": [0, 0.43056, 0.02691, 0.08334, 0.71592],
+    "120": [0, 0.43056, 0, 0.02778, 0.57153],
+    "121": [0.19444, 0.43056, 0.03588, 0.05556, 0.49028],
+    "122": [0, 0.43056, 0.04398, 0.05556, 0.46505],
+    "915": [0, 0.68333, 0.13889, 0.08334, 0.61528],
+    "916": [0, 0.68333, 0, 0.16667, 0.83334],
+    "920": [0, 0.68333, 0.02778, 0.08334, 0.76278],
+    "923": [0, 0.68333, 0, 0.16667, 0.69445],
+    "926": [0, 0.68333, 0.07569, 0.08334, 0.74236],
+    "928": [0, 0.68333, 0.08125, 0.05556, 0.83125],
+    "931": [0, 0.68333, 0.05764, 0.08334, 0.77986],
+    "933": [0, 0.68333, 0.13889, 0.05556, 0.58333],
+    "934": [0, 0.68333, 0, 0.08334, 0.66667],
+    "936": [0, 0.68333, 0.11, 0.05556, 0.61222],
+    "937": [0, 0.68333, 0.05017, 0.08334, 0.7724],
+    "945": [0, 0.43056, 0.0037, 0.02778, 0.6397],
+    "946": [0.19444, 0.69444, 0.05278, 0.08334, 0.56563],
+    "947": [0.19444, 0.43056, 0.05556, 0, 0.51773],
+    "948": [0, 0.69444, 0.03785, 0.05556, 0.44444],
+    "949": [0, 0.43056, 0, 0.08334, 0.46632],
+    "950": [0.19444, 0.69444, 0.07378, 0.08334, 0.4375],
+    "951": [0.19444, 0.43056, 0.03588, 0.05556, 0.49653],
+    "952": [0, 0.69444, 0.02778, 0.08334, 0.46944],
+    "953": [0, 0.43056, 0, 0.05556, 0.35394],
+    "954": [0, 0.43056, 0, 0, 0.57616],
+    "955": [0, 0.69444, 0, 0, 0.58334],
+    "956": [0.19444, 0.43056, 0, 0.02778, 0.60255],
+    "957": [0, 0.43056, 0.06366, 0.02778, 0.49398],
+    "958": [0.19444, 0.69444, 0.04601, 0.11111, 0.4375],
+    "959": [0, 0.43056, 0, 0.05556, 0.48472],
+    "960": [0, 0.43056, 0.03588, 0, 0.57003],
+    "961": [0.19444, 0.43056, 0, 0.08334, 0.51702],
+    "962": [0.09722, 0.43056, 0.07986, 0.08334, 0.36285],
+    "963": [0, 0.43056, 0.03588, 0, 0.57141],
+    "964": [0, 0.43056, 0.1132, 0.02778, 0.43715],
+    "965": [0, 0.43056, 0.03588, 0.02778, 0.54028],
+    "966": [0.19444, 0.43056, 0, 0.08334, 0.65417],
+    "967": [0.19444, 0.43056, 0, 0.05556, 0.62569],
+    "968": [0.19444, 0.69444, 0.03588, 0.11111, 0.65139],
+    "969": [0, 0.43056, 0.03588, 0, 0.62245],
+    "977": [0, 0.69444, 0, 0.08334, 0.59144],
+    "981": [0.19444, 0.69444, 0, 0.08334, 0.59583],
+    "982": [0, 0.43056, 0.02778, 0, 0.82813],
+    "1009": [0.19444, 0.43056, 0, 0.08334, 0.51702],
+    "1013": [0, 0.43056, 0, 0.05556, 0.4059]
+  },
+  "SansSerif-Bold": {
+    "33": [0, 0.69444, 0, 0, 0.36667],
+    "34": [0, 0.69444, 0, 0, 0.55834],
+    "35": [0.19444, 0.69444, 0, 0, 0.91667],
+    "36": [0.05556, 0.75, 0, 0, 0.55],
+    "37": [0.05556, 0.75, 0, 0, 1.02912],
+    "38": [0, 0.69444, 0, 0, 0.83056],
+    "39": [0, 0.69444, 0, 0, 0.30556],
+    "40": [0.25, 0.75, 0, 0, 0.42778],
+    "41": [0.25, 0.75, 0, 0, 0.42778],
+    "42": [0, 0.75, 0, 0, 0.55],
+    "43": [0.11667, 0.61667, 0, 0, 0.85556],
+    "44": [0.10556, 0.13056, 0, 0, 0.30556],
+    "45": [0, 0.45833, 0, 0, 0.36667],
+    "46": [0, 0.13056, 0, 0, 0.30556],
+    "47": [0.25, 0.75, 0, 0, 0.55],
+    "48": [0, 0.69444, 0, 0, 0.55],
+    "49": [0, 0.69444, 0, 0, 0.55],
+    "50": [0, 0.69444, 0, 0, 0.55],
+    "51": [0, 0.69444, 0, 0, 0.55],
+    "52": [0, 0.69444, 0, 0, 0.55],
+    "53": [0, 0.69444, 0, 0, 0.55],
+    "54": [0, 0.69444, 0, 0, 0.55],
+    "55": [0, 0.69444, 0, 0, 0.55],
+    "56": [0, 0.69444, 0, 0, 0.55],
+    "57": [0, 0.69444, 0, 0, 0.55],
+    "58": [0, 0.45833, 0, 0, 0.30556],
+    "59": [0.10556, 0.45833, 0, 0, 0.30556],
+    "61": [-0.09375, 0.40625, 0, 0, 0.85556],
+    "63": [0, 0.69444, 0, 0, 0.51945],
+    "64": [0, 0.69444, 0, 0, 0.73334],
+    "65": [0, 0.69444, 0, 0, 0.73334],
+    "66": [0, 0.69444, 0, 0, 0.73334],
+    "67": [0, 0.69444, 0, 0, 0.70278],
+    "68": [0, 0.69444, 0, 0, 0.79445],
+    "69": [0, 0.69444, 0, 0, 0.64167],
+    "70": [0, 0.69444, 0, 0, 0.61111],
+    "71": [0, 0.69444, 0, 0, 0.73334],
+    "72": [0, 0.69444, 0, 0, 0.79445],
+    "73": [0, 0.69444, 0, 0, 0.33056],
+    "74": [0, 0.69444, 0, 0, 0.51945],
+    "75": [0, 0.69444, 0, 0, 0.76389],
+    "76": [0, 0.69444, 0, 0, 0.58056],
+    "77": [0, 0.69444, 0, 0, 0.97778],
+    "78": [0, 0.69444, 0, 0, 0.79445],
+    "79": [0, 0.69444, 0, 0, 0.79445],
+    "80": [0, 0.69444, 0, 0, 0.70278],
+    "81": [0.10556, 0.69444, 0, 0, 0.79445],
+    "82": [0, 0.69444, 0, 0, 0.70278],
+    "83": [0, 0.69444, 0, 0, 0.61111],
+    "84": [0, 0.69444, 0, 0, 0.73334],
+    "85": [0, 0.69444, 0, 0, 0.76389],
+    "86": [0, 0.69444, 0.01528, 0, 0.73334],
+    "87": [0, 0.69444, 0.01528, 0, 1.03889],
+    "88": [0, 0.69444, 0, 0, 0.73334],
+    "89": [0, 0.69444, 0.0275, 0, 0.73334],
+    "90": [0, 0.69444, 0, 0, 0.67223],
+    "91": [0.25, 0.75, 0, 0, 0.34306],
+    "93": [0.25, 0.75, 0, 0, 0.34306],
+    "94": [0, 0.69444, 0, 0, 0.55],
+    "95": [0.35, 0.10833, 0.03056, 0, 0.55],
+    "97": [0, 0.45833, 0, 0, 0.525],
+    "98": [0, 0.69444, 0, 0, 0.56111],
+    "99": [0, 0.45833, 0, 0, 0.48889],
+    "100": [0, 0.69444, 0, 0, 0.56111],
+    "101": [0, 0.45833, 0, 0, 0.51111],
+    "102": [0, 0.69444, 0.07639, 0, 0.33611],
+    "103": [0.19444, 0.45833, 0.01528, 0, 0.55],
+    "104": [0, 0.69444, 0, 0, 0.56111],
+    "105": [0, 0.69444, 0, 0, 0.25556],
+    "106": [0.19444, 0.69444, 0, 0, 0.28611],
+    "107": [0, 0.69444, 0, 0, 0.53056],
+    "108": [0, 0.69444, 0, 0, 0.25556],
+    "109": [0, 0.45833, 0, 0, 0.86667],
+    "110": [0, 0.45833, 0, 0, 0.56111],
+    "111": [0, 0.45833, 0, 0, 0.55],
+    "112": [0.19444, 0.45833, 0, 0, 0.56111],
+    "113": [0.19444, 0.45833, 0, 0, 0.56111],
+    "114": [0, 0.45833, 0.01528, 0, 0.37222],
+    "115": [0, 0.45833, 0, 0, 0.42167],
+    "116": [0, 0.58929, 0, 0, 0.40417],
+    "117": [0, 0.45833, 0, 0, 0.56111],
+    "118": [0, 0.45833, 0.01528, 0, 0.5],
+    "119": [0, 0.45833, 0.01528, 0, 0.74445],
+    "120": [0, 0.45833, 0, 0, 0.5],
+    "121": [0.19444, 0.45833, 0.01528, 0, 0.5],
+    "122": [0, 0.45833, 0, 0, 0.47639],
+    "126": [0.35, 0.34444, 0, 0, 0.55],
+    "168": [0, 0.69444, 0, 0, 0.55],
+    "176": [0, 0.69444, 0, 0, 0.73334],
+    "180": [0, 0.69444, 0, 0, 0.55],
+    "184": [0.17014, 0, 0, 0, 0.48889],
+    "305": [0, 0.45833, 0, 0, 0.25556],
+    "567": [0.19444, 0.45833, 0, 0, 0.28611],
+    "710": [0, 0.69444, 0, 0, 0.55],
+    "711": [0, 0.63542, 0, 0, 0.55],
+    "713": [0, 0.63778, 0, 0, 0.55],
+    "728": [0, 0.69444, 0, 0, 0.55],
+    "729": [0, 0.69444, 0, 0, 0.30556],
+    "730": [0, 0.69444, 0, 0, 0.73334],
+    "732": [0, 0.69444, 0, 0, 0.55],
+    "733": [0, 0.69444, 0, 0, 0.55],
+    "915": [0, 0.69444, 0, 0, 0.58056],
+    "916": [0, 0.69444, 0, 0, 0.91667],
+    "920": [0, 0.69444, 0, 0, 0.85556],
+    "923": [0, 0.69444, 0, 0, 0.67223],
+    "926": [0, 0.69444, 0, 0, 0.73334],
+    "928": [0, 0.69444, 0, 0, 0.79445],
+    "931": [0, 0.69444, 0, 0, 0.79445],
+    "933": [0, 0.69444, 0, 0, 0.85556],
+    "934": [0, 0.69444, 0, 0, 0.79445],
+    "936": [0, 0.69444, 0, 0, 0.85556],
+    "937": [0, 0.69444, 0, 0, 0.79445],
+    "8211": [0, 0.45833, 0.03056, 0, 0.55],
+    "8212": [0, 0.45833, 0.03056, 0, 1.10001],
+    "8216": [0, 0.69444, 0, 0, 0.30556],
+    "8217": [0, 0.69444, 0, 0, 0.30556],
+    "8220": [0, 0.69444, 0, 0, 0.55834],
+    "8221": [0, 0.69444, 0, 0, 0.55834]
+  },
+  "SansSerif-Italic": {
+    "33": [0, 0.69444, 0.05733, 0, 0.31945],
+    "34": [0, 0.69444, 0.00316, 0, 0.5],
+    "35": [0.19444, 0.69444, 0.05087, 0, 0.83334],
+    "36": [0.05556, 0.75, 0.11156, 0, 0.5],
+    "37": [0.05556, 0.75, 0.03126, 0, 0.83334],
+    "38": [0, 0.69444, 0.03058, 0, 0.75834],
+    "39": [0, 0.69444, 0.07816, 0, 0.27778],
+    "40": [0.25, 0.75, 0.13164, 0, 0.38889],
+    "41": [0.25, 0.75, 0.02536, 0, 0.38889],
+    "42": [0, 0.75, 0.11775, 0, 0.5],
+    "43": [0.08333, 0.58333, 0.02536, 0, 0.77778],
+    "44": [0.125, 0.08333, 0, 0, 0.27778],
+    "45": [0, 0.44444, 0.01946, 0, 0.33333],
+    "46": [0, 0.08333, 0, 0, 0.27778],
+    "47": [0.25, 0.75, 0.13164, 0, 0.5],
+    "48": [0, 0.65556, 0.11156, 0, 0.5],
+    "49": [0, 0.65556, 0.11156, 0, 0.5],
+    "50": [0, 0.65556, 0.11156, 0, 0.5],
+    "51": [0, 0.65556, 0.11156, 0, 0.5],
+    "52": [0, 0.65556, 0.11156, 0, 0.5],
+    "53": [0, 0.65556, 0.11156, 0, 0.5],
+    "54": [0, 0.65556, 0.11156, 0, 0.5],
+    "55": [0, 0.65556, 0.11156, 0, 0.5],
+    "56": [0, 0.65556, 0.11156, 0, 0.5],
+    "57": [0, 0.65556, 0.11156, 0, 0.5],
+    "58": [0, 0.44444, 0.02502, 0, 0.27778],
+    "59": [0.125, 0.44444, 0.02502, 0, 0.27778],
+    "61": [-0.13, 0.37, 0.05087, 0, 0.77778],
+    "63": [0, 0.69444, 0.11809, 0, 0.47222],
+    "64": [0, 0.69444, 0.07555, 0, 0.66667],
+    "65": [0, 0.69444, 0, 0, 0.66667],
+    "66": [0, 0.69444, 0.08293, 0, 0.66667],
+    "67": [0, 0.69444, 0.11983, 0, 0.63889],
+    "68": [0, 0.69444, 0.07555, 0, 0.72223],
+    "69": [0, 0.69444, 0.11983, 0, 0.59722],
+    "70": [0, 0.69444, 0.13372, 0, 0.56945],
+    "71": [0, 0.69444, 0.11983, 0, 0.66667],
+    "72": [0, 0.69444, 0.08094, 0, 0.70834],
+    "73": [0, 0.69444, 0.13372, 0, 0.27778],
+    "74": [0, 0.69444, 0.08094, 0, 0.47222],
+    "75": [0, 0.69444, 0.11983, 0, 0.69445],
+    "76": [0, 0.69444, 0, 0, 0.54167],
+    "77": [0, 0.69444, 0.08094, 0, 0.875],
+    "78": [0, 0.69444, 0.08094, 0, 0.70834],
+    "79": [0, 0.69444, 0.07555, 0, 0.73611],
+    "80": [0, 0.69444, 0.08293, 0, 0.63889],
+    "81": [0.125, 0.69444, 0.07555, 0, 0.73611],
+    "82": [0, 0.69444, 0.08293, 0, 0.64584],
+    "83": [0, 0.69444, 0.09205, 0, 0.55556],
+    "84": [0, 0.69444, 0.13372, 0, 0.68056],
+    "85": [0, 0.69444, 0.08094, 0, 0.6875],
+    "86": [0, 0.69444, 0.1615, 0, 0.66667],
+    "87": [0, 0.69444, 0.1615, 0, 0.94445],
+    "88": [0, 0.69444, 0.13372, 0, 0.66667],
+    "89": [0, 0.69444, 0.17261, 0, 0.66667],
+    "90": [0, 0.69444, 0.11983, 0, 0.61111],
+    "91": [0.25, 0.75, 0.15942, 0, 0.28889],
+    "93": [0.25, 0.75, 0.08719, 0, 0.28889],
+    "94": [0, 0.69444, 0.0799, 0, 0.5],
+    "95": [0.35, 0.09444, 0.08616, 0, 0.5],
+    "97": [0, 0.44444, 0.00981, 0, 0.48056],
+    "98": [0, 0.69444, 0.03057, 0, 0.51667],
+    "99": [0, 0.44444, 0.08336, 0, 0.44445],
+    "100": [0, 0.69444, 0.09483, 0, 0.51667],
+    "101": [0, 0.44444, 0.06778, 0, 0.44445],
+    "102": [0, 0.69444, 0.21705, 0, 0.30556],
+    "103": [0.19444, 0.44444, 0.10836, 0, 0.5],
+    "104": [0, 0.69444, 0.01778, 0, 0.51667],
+    "105": [0, 0.67937, 0.09718, 0, 0.23889],
+    "106": [0.19444, 0.67937, 0.09162, 0, 0.26667],
+    "107": [0, 0.69444, 0.08336, 0, 0.48889],
+    "108": [0, 0.69444, 0.09483, 0, 0.23889],
+    "109": [0, 0.44444, 0.01778, 0, 0.79445],
+    "110": [0, 0.44444, 0.01778, 0, 0.51667],
+    "111": [0, 0.44444, 0.06613, 0, 0.5],
+    "112": [0.19444, 0.44444, 0.0389, 0, 0.51667],
+    "113": [0.19444, 0.44444, 0.04169, 0, 0.51667],
+    "114": [0, 0.44444, 0.10836, 0, 0.34167],
+    "115": [0, 0.44444, 0.0778, 0, 0.38333],
+    "116": [0, 0.57143, 0.07225, 0, 0.36111],
+    "117": [0, 0.44444, 0.04169, 0, 0.51667],
+    "118": [0, 0.44444, 0.10836, 0, 0.46111],
+    "119": [0, 0.44444, 0.10836, 0, 0.68334],
+    "120": [0, 0.44444, 0.09169, 0, 0.46111],
+    "121": [0.19444, 0.44444, 0.10836, 0, 0.46111],
+    "122": [0, 0.44444, 0.08752, 0, 0.43472],
+    "126": [0.35, 0.32659, 0.08826, 0, 0.5],
+    "168": [0, 0.67937, 0.06385, 0, 0.5],
+    "176": [0, 0.69444, 0, 0, 0.73752],
+    "184": [0.17014, 0, 0, 0, 0.44445],
+    "305": [0, 0.44444, 0.04169, 0, 0.23889],
+    "567": [0.19444, 0.44444, 0.04169, 0, 0.26667],
+    "710": [0, 0.69444, 0.0799, 0, 0.5],
+    "711": [0, 0.63194, 0.08432, 0, 0.5],
+    "713": [0, 0.60889, 0.08776, 0, 0.5],
+    "714": [0, 0.69444, 0.09205, 0, 0.5],
+    "715": [0, 0.69444, 0, 0, 0.5],
+    "728": [0, 0.69444, 0.09483, 0, 0.5],
+    "729": [0, 0.67937, 0.07774, 0, 0.27778],
+    "730": [0, 0.69444, 0, 0, 0.73752],
+    "732": [0, 0.67659, 0.08826, 0, 0.5],
+    "733": [0, 0.69444, 0.09205, 0, 0.5],
+    "915": [0, 0.69444, 0.13372, 0, 0.54167],
+    "916": [0, 0.69444, 0, 0, 0.83334],
+    "920": [0, 0.69444, 0.07555, 0, 0.77778],
+    "923": [0, 0.69444, 0, 0, 0.61111],
+    "926": [0, 0.69444, 0.12816, 0, 0.66667],
+    "928": [0, 0.69444, 0.08094, 0, 0.70834],
+    "931": [0, 0.69444, 0.11983, 0, 0.72222],
+    "933": [0, 0.69444, 0.09031, 0, 0.77778],
+    "934": [0, 0.69444, 0.04603, 0, 0.72222],
+    "936": [0, 0.69444, 0.09031, 0, 0.77778],
+    "937": [0, 0.69444, 0.08293, 0, 0.72222],
+    "8211": [0, 0.44444, 0.08616, 0, 0.5],
+    "8212": [0, 0.44444, 0.08616, 0, 1.0],
+    "8216": [0, 0.69444, 0.07816, 0, 0.27778],
+    "8217": [0, 0.69444, 0.07816, 0, 0.27778],
+    "8220": [0, 0.69444, 0.14205, 0, 0.5],
+    "8221": [0, 0.69444, 0.00316, 0, 0.5]
+  },
+  "SansSerif-Regular": {
+    "33": [0, 0.69444, 0, 0, 0.31945],
+    "34": [0, 0.69444, 0, 0, 0.5],
+    "35": [0.19444, 0.69444, 0, 0, 0.83334],
+    "36": [0.05556, 0.75, 0, 0, 0.5],
+    "37": [0.05556, 0.75, 0, 0, 0.83334],
+    "38": [0, 0.69444, 0, 0, 0.75834],
+    "39": [0, 0.69444, 0, 0, 0.27778],
+    "40": [0.25, 0.75, 0, 0, 0.38889],
+    "41": [0.25, 0.75, 0, 0, 0.38889],
+    "42": [0, 0.75, 0, 0, 0.5],
+    "43": [0.08333, 0.58333, 0, 0, 0.77778],
+    "44": [0.125, 0.08333, 0, 0, 0.27778],
+    "45": [0, 0.44444, 0, 0, 0.33333],
+    "46": [0, 0.08333, 0, 0, 0.27778],
+    "47": [0.25, 0.75, 0, 0, 0.5],
+    "48": [0, 0.65556, 0, 0, 0.5],
+    "49": [0, 0.65556, 0, 0, 0.5],
+    "50": [0, 0.65556, 0, 0, 0.5],
+    "51": [0, 0.65556, 0, 0, 0.5],
+    "52": [0, 0.65556, 0, 0, 0.5],
+    "53": [0, 0.65556, 0, 0, 0.5],
+    "54": [0, 0.65556, 0, 0, 0.5],
+    "55": [0, 0.65556, 0, 0, 0.5],
+    "56": [0, 0.65556, 0, 0, 0.5],
+    "57": [0, 0.65556, 0, 0, 0.5],
+    "58": [0, 0.44444, 0, 0, 0.27778],
+    "59": [0.125, 0.44444, 0, 0, 0.27778],
+    "61": [-0.13, 0.37, 0, 0, 0.77778],
+    "63": [0, 0.69444, 0, 0, 0.47222],
+    "64": [0, 0.69444, 0, 0, 0.66667],
+    "65": [0, 0.69444, 0, 0, 0.66667],
+    "66": [0, 0.69444, 0, 0, 0.66667],
+    "67": [0, 0.69444, 0, 0, 0.63889],
+    "68": [0, 0.69444, 0, 0, 0.72223],
+    "69": [0, 0.69444, 0, 0, 0.59722],
+    "70": [0, 0.69444, 0, 0, 0.56945],
+    "71": [0, 0.69444, 0, 0, 0.66667],
+    "72": [0, 0.69444, 0, 0, 0.70834],
+    "73": [0, 0.69444, 0, 0, 0.27778],
+    "74": [0, 0.69444, 0, 0, 0.47222],
+    "75": [0, 0.69444, 0, 0, 0.69445],
+    "76": [0, 0.69444, 0, 0, 0.54167],
+    "77": [0, 0.69444, 0, 0, 0.875],
+    "78": [0, 0.69444, 0, 0, 0.70834],
+    "79": [0, 0.69444, 0, 0, 0.73611],
+    "80": [0, 0.69444, 0, 0, 0.63889],
+    "81": [0.125, 0.69444, 0, 0, 0.73611],
+    "82": [0, 0.69444, 0, 0, 0.64584],
+    "83": [0, 0.69444, 0, 0, 0.55556],
+    "84": [0, 0.69444, 0, 0, 0.68056],
+    "85": [0, 0.69444, 0, 0, 0.6875],
+    "86": [0, 0.69444, 0.01389, 0, 0.66667],
+    "87": [0, 0.69444, 0.01389, 0, 0.94445],
+    "88": [0, 0.69444, 0, 0, 0.66667],
+    "89": [0, 0.69444, 0.025, 0, 0.66667],
+    "90": [0, 0.69444, 0, 0, 0.61111],
+    "91": [0.25, 0.75, 0, 0, 0.28889],
+    "93": [0.25, 0.75, 0, 0, 0.28889],
+    "94": [0, 0.69444, 0, 0, 0.5],
+    "95": [0.35, 0.09444, 0.02778, 0, 0.5],
+    "97": [0, 0.44444, 0, 0, 0.48056],
+    "98": [0, 0.69444, 0, 0, 0.51667],
+    "99": [0, 0.44444, 0, 0, 0.44445],
+    "100": [0, 0.69444, 0, 0, 0.51667],
+    "101": [0, 0.44444, 0, 0, 0.44445],
+    "102": [0, 0.69444, 0.06944, 0, 0.30556],
+    "103": [0.19444, 0.44444, 0.01389, 0, 0.5],
+    "104": [0, 0.69444, 0, 0, 0.51667],
+    "105": [0, 0.67937, 0, 0, 0.23889],
+    "106": [0.19444, 0.67937, 0, 0, 0.26667],
+    "107": [0, 0.69444, 0, 0, 0.48889],
+    "108": [0, 0.69444, 0, 0, 0.23889],
+    "109": [0, 0.44444, 0, 0, 0.79445],
+    "110": [0, 0.44444, 0, 0, 0.51667],
+    "111": [0, 0.44444, 0, 0, 0.5],
+    "112": [0.19444, 0.44444, 0, 0, 0.51667],
+    "113": [0.19444, 0.44444, 0, 0, 0.51667],
+    "114": [0, 0.44444, 0.01389, 0, 0.34167],
+    "115": [0, 0.44444, 0, 0, 0.38333],
+    "116": [0, 0.57143, 0, 0, 0.36111],
+    "117": [0, 0.44444, 0, 0, 0.51667],
+    "118": [0, 0.44444, 0.01389, 0, 0.46111],
+    "119": [0, 0.44444, 0.01389, 0, 0.68334],
+    "120": [0, 0.44444, 0, 0, 0.46111],
+    "121": [0.19444, 0.44444, 0.01389, 0, 0.46111],
+    "122": [0, 0.44444, 0, 0, 0.43472],
+    "126": [0.35, 0.32659, 0, 0, 0.5],
+    "168": [0, 0.67937, 0, 0, 0.5],
+    "176": [0, 0.69444, 0, 0, 0.66667],
+    "184": [0.17014, 0, 0, 0, 0.44445],
+    "305": [0, 0.44444, 0, 0, 0.23889],
+    "567": [0.19444, 0.44444, 0, 0, 0.26667],
+    "710": [0, 0.69444, 0, 0, 0.5],
+    "711": [0, 0.63194, 0, 0, 0.5],
+    "713": [0, 0.60889, 0, 0, 0.5],
+    "714": [0, 0.69444, 0, 0, 0.5],
+    "715": [0, 0.69444, 0, 0, 0.5],
+    "728": [0, 0.69444, 0, 0, 0.5],
+    "729": [0, 0.67937, 0, 0, 0.27778],
+    "730": [0, 0.69444, 0, 0, 0.66667],
+    "732": [0, 0.67659, 0, 0, 0.5],
+    "733": [0, 0.69444, 0, 0, 0.5],
+    "915": [0, 0.69444, 0, 0, 0.54167],
+    "916": [0, 0.69444, 0, 0, 0.83334],
+    "920": [0, 0.69444, 0, 0, 0.77778],
+    "923": [0, 0.69444, 0, 0, 0.61111],
+    "926": [0, 0.69444, 0, 0, 0.66667],
+    "928": [0, 0.69444, 0, 0, 0.70834],
+    "931": [0, 0.69444, 0, 0, 0.72222],
+    "933": [0, 0.69444, 0, 0, 0.77778],
+    "934": [0, 0.69444, 0, 0, 0.72222],
+    "936": [0, 0.69444, 0, 0, 0.77778],
+    "937": [0, 0.69444, 0, 0, 0.72222],
+    "8211": [0, 0.44444, 0.02778, 0, 0.5],
+    "8212": [0, 0.44444, 0.02778, 0, 1.0],
+    "8216": [0, 0.69444, 0, 0, 0.27778],
+    "8217": [0, 0.69444, 0, 0, 0.27778],
+    "8220": [0, 0.69444, 0, 0, 0.5],
+    "8221": [0, 0.69444, 0, 0, 0.5]
+  },
+  "Script-Regular": {
+    "65": [0, 0.7, 0.22925, 0, 0.80253],
+    "66": [0, 0.7, 0.04087, 0, 0.90757],
+    "67": [0, 0.7, 0.1689, 0, 0.66619],
+    "68": [0, 0.7, 0.09371, 0, 0.77443],
+    "69": [0, 0.7, 0.18583, 0, 0.56162],
+    "70": [0, 0.7, 0.13634, 0, 0.89544],
+    "71": [0, 0.7, 0.17322, 0, 0.60961],
+    "72": [0, 0.7, 0.29694, 0, 0.96919],
+    "73": [0, 0.7, 0.19189, 0, 0.80907],
+    "74": [0.27778, 0.7, 0.19189, 0, 1.05159],
+    "75": [0, 0.7, 0.31259, 0, 0.91364],
+    "76": [0, 0.7, 0.19189, 0, 0.87373],
+    "77": [0, 0.7, 0.15981, 0, 1.08031],
+    "78": [0, 0.7, 0.3525, 0, 0.9015],
+    "79": [0, 0.7, 0.08078, 0, 0.73787],
+    "80": [0, 0.7, 0.08078, 0, 1.01262],
+    "81": [0, 0.7, 0.03305, 0, 0.88282],
+    "82": [0, 0.7, 0.06259, 0, 0.85],
+    "83": [0, 0.7, 0.19189, 0, 0.86767],
+    "84": [0, 0.7, 0.29087, 0, 0.74697],
+    "85": [0, 0.7, 0.25815, 0, 0.79996],
+    "86": [0, 0.7, 0.27523, 0, 0.62204],
+    "87": [0, 0.7, 0.27523, 0, 0.80532],
+    "88": [0, 0.7, 0.26006, 0, 0.94445],
+    "89": [0, 0.7, 0.2939, 0, 0.70961],
+    "90": [0, 0.7, 0.24037, 0, 0.8212]
+  },
+  "Size1-Regular": {
+    "40": [0.35001, 0.85, 0, 0, 0.45834],
+    "41": [0.35001, 0.85, 0, 0, 0.45834],
+    "47": [0.35001, 0.85, 0, 0, 0.57778],
+    "91": [0.35001, 0.85, 0, 0, 0.41667],
+    "92": [0.35001, 0.85, 0, 0, 0.57778],
+    "93": [0.35001, 0.85, 0, 0, 0.41667],
+    "123": [0.35001, 0.85, 0, 0, 0.58334],
+    "125": [0.35001, 0.85, 0, 0, 0.58334],
+    "710": [0, 0.72222, 0, 0, 0.55556],
+    "732": [0, 0.72222, 0, 0, 0.55556],
+    "770": [0, 0.72222, 0, 0, 0.55556],
+    "771": [0, 0.72222, 0, 0, 0.55556],
+    "8214": [-0.00099, 0.601, 0, 0, 0.77778],
+    "8593": [1e-05, 0.6, 0, 0, 0.66667],
+    "8595": [1e-05, 0.6, 0, 0, 0.66667],
+    "8657": [1e-05, 0.6, 0, 0, 0.77778],
+    "8659": [1e-05, 0.6, 0, 0, 0.77778],
+    "8719": [0.25001, 0.75, 0, 0, 0.94445],
+    "8720": [0.25001, 0.75, 0, 0, 0.94445],
+    "8721": [0.25001, 0.75, 0, 0, 1.05556],
+    "8730": [0.35001, 0.85, 0, 0, 1.0],
+    "8739": [-0.00599, 0.606, 0, 0, 0.33333],
+    "8741": [-0.00599, 0.606, 0, 0, 0.55556],
+    "8747": [0.30612, 0.805, 0.19445, 0, 0.47222],
+    "8748": [0.306, 0.805, 0.19445, 0, 0.47222],
+    "8749": [0.306, 0.805, 0.19445, 0, 0.47222],
+    "8750": [0.30612, 0.805, 0.19445, 0, 0.47222],
+    "8896": [0.25001, 0.75, 0, 0, 0.83334],
+    "8897": [0.25001, 0.75, 0, 0, 0.83334],
+    "8898": [0.25001, 0.75, 0, 0, 0.83334],
+    "8899": [0.25001, 0.75, 0, 0, 0.83334],
+    "8968": [0.35001, 0.85, 0, 0, 0.47222],
+    "8969": [0.35001, 0.85, 0, 0, 0.47222],
+    "8970": [0.35001, 0.85, 0, 0, 0.47222],
+    "8971": [0.35001, 0.85, 0, 0, 0.47222],
+    "9168": [-0.00099, 0.601, 0, 0, 0.66667],
+    "10216": [0.35001, 0.85, 0, 0, 0.47222],
+    "10217": [0.35001, 0.85, 0, 0, 0.47222],
+    "10752": [0.25001, 0.75, 0, 0, 1.11111],
+    "10753": [0.25001, 0.75, 0, 0, 1.11111],
+    "10754": [0.25001, 0.75, 0, 0, 1.11111],
+    "10756": [0.25001, 0.75, 0, 0, 0.83334],
+    "10758": [0.25001, 0.75, 0, 0, 0.83334]
+  },
+  "Size2-Regular": {
+    "40": [0.65002, 1.15, 0, 0, 0.59722],
+    "41": [0.65002, 1.15, 0, 0, 0.59722],
+    "47": [0.65002, 1.15, 0, 0, 0.81111],
+    "91": [0.65002, 1.15, 0, 0, 0.47222],
+    "92": [0.65002, 1.15, 0, 0, 0.81111],
+    "93": [0.65002, 1.15, 0, 0, 0.47222],
+    "123": [0.65002, 1.15, 0, 0, 0.66667],
+    "125": [0.65002, 1.15, 0, 0, 0.66667],
+    "710": [0, 0.75, 0, 0, 1.0],
+    "732": [0, 0.75, 0, 0, 1.0],
+    "770": [0, 0.75, 0, 0, 1.0],
+    "771": [0, 0.75, 0, 0, 1.0],
+    "8719": [0.55001, 1.05, 0, 0, 1.27778],
+    "8720": [0.55001, 1.05, 0, 0, 1.27778],
+    "8721": [0.55001, 1.05, 0, 0, 1.44445],
+    "8730": [0.65002, 1.15, 0, 0, 1.0],
+    "8747": [0.86225, 1.36, 0.44445, 0, 0.55556],
+    "8748": [0.862, 1.36, 0.44445, 0, 0.55556],
+    "8749": [0.862, 1.36, 0.44445, 0, 0.55556],
+    "8750": [0.86225, 1.36, 0.44445, 0, 0.55556],
+    "8896": [0.55001, 1.05, 0, 0, 1.11111],
+    "8897": [0.55001, 1.05, 0, 0, 1.11111],
+    "8898": [0.55001, 1.05, 0, 0, 1.11111],
+    "8899": [0.55001, 1.05, 0, 0, 1.11111],
+    "8968": [0.65002, 1.15, 0, 0, 0.52778],
+    "8969": [0.65002, 1.15, 0, 0, 0.52778],
+    "8970": [0.65002, 1.15, 0, 0, 0.52778],
+    "8971": [0.65002, 1.15, 0, 0, 0.52778],
+    "10216": [0.65002, 1.15, 0, 0, 0.61111],
+    "10217": [0.65002, 1.15, 0, 0, 0.61111],
+    "10752": [0.55001, 1.05, 0, 0, 1.51112],
+    "10753": [0.55001, 1.05, 0, 0, 1.51112],
+    "10754": [0.55001, 1.05, 0, 0, 1.51112],
+    "10756": [0.55001, 1.05, 0, 0, 1.11111],
+    "10758": [0.55001, 1.05, 0, 0, 1.11111]
+  },
+  "Size3-Regular": {
+    "40": [0.95003, 1.45, 0, 0, 0.73611],
+    "41": [0.95003, 1.45, 0, 0, 0.73611],
+    "47": [0.95003, 1.45, 0, 0, 1.04445],
+    "91": [0.95003, 1.45, 0, 0, 0.52778],
+    "92": [0.95003, 1.45, 0, 0, 1.04445],
+    "93": [0.95003, 1.45, 0, 0, 0.52778],
+    "123": [0.95003, 1.45, 0, 0, 0.75],
+    "125": [0.95003, 1.45, 0, 0, 0.75],
+    "710": [0, 0.75, 0, 0, 1.44445],
+    "732": [0, 0.75, 0, 0, 1.44445],
+    "770": [0, 0.75, 0, 0, 1.44445],
+    "771": [0, 0.75, 0, 0, 1.44445],
+    "8730": [0.95003, 1.45, 0, 0, 1.0],
+    "8968": [0.95003, 1.45, 0, 0, 0.58334],
+    "8969": [0.95003, 1.45, 0, 0, 0.58334],
+    "8970": [0.95003, 1.45, 0, 0, 0.58334],
+    "8971": [0.95003, 1.45, 0, 0, 0.58334],
+    "10216": [0.95003, 1.45, 0, 0, 0.75],
+    "10217": [0.95003, 1.45, 0, 0, 0.75]
+  },
+  "Size4-Regular": {
+    "40": [1.25003, 1.75, 0, 0, 0.79167],
+    "41": [1.25003, 1.75, 0, 0, 0.79167],
+    "47": [1.25003, 1.75, 0, 0, 1.27778],
+    "91": [1.25003, 1.75, 0, 0, 0.58334],
+    "92": [1.25003, 1.75, 0, 0, 1.27778],
+    "93": [1.25003, 1.75, 0, 0, 0.58334],
+    "123": [1.25003, 1.75, 0, 0, 0.80556],
+    "125": [1.25003, 1.75, 0, 0, 0.80556],
+    "710": [0, 0.825, 0, 0, 1.8889],
+    "732": [0, 0.825, 0, 0, 1.8889],
+    "770": [0, 0.825, 0, 0, 1.8889],
+    "771": [0, 0.825, 0, 0, 1.8889],
+    "8730": [1.25003, 1.75, 0, 0, 1.0],
+    "8968": [1.25003, 1.75, 0, 0, 0.63889],
+    "8969": [1.25003, 1.75, 0, 0, 0.63889],
+    "8970": [1.25003, 1.75, 0, 0, 0.63889],
+    "8971": [1.25003, 1.75, 0, 0, 0.63889],
+    "9115": [0.64502, 1.155, 0, 0, 0.875],
+    "9116": [1e-05, 0.6, 0, 0, 0.875],
+    "9117": [0.64502, 1.155, 0, 0, 0.875],
+    "9118": [0.64502, 1.155, 0, 0, 0.875],
+    "9119": [1e-05, 0.6, 0, 0, 0.875],
+    "9120": [0.64502, 1.155, 0, 0, 0.875],
+    "9121": [0.64502, 1.155, 0, 0, 0.66667],
+    "9122": [-0.00099, 0.601, 0, 0, 0.66667],
+    "9123": [0.64502, 1.155, 0, 0, 0.66667],
+    "9124": [0.64502, 1.155, 0, 0, 0.66667],
+    "9125": [-0.00099, 0.601, 0, 0, 0.66667],
+    "9126": [0.64502, 1.155, 0, 0, 0.66667],
+    "9127": [1e-05, 0.9, 0, 0, 0.88889],
+    "9128": [0.65002, 1.15, 0, 0, 0.88889],
+    "9129": [0.90001, 0, 0, 0, 0.88889],
+    "9130": [0, 0.3, 0, 0, 0.88889],
+    "9131": [1e-05, 0.9, 0, 0, 0.88889],
+    "9132": [0.65002, 1.15, 0, 0, 0.88889],
+    "9133": [0.90001, 0, 0, 0, 0.88889],
+    "9143": [0.88502, 0.915, 0, 0, 1.05556],
+    "10216": [1.25003, 1.75, 0, 0, 0.80556],
+    "10217": [1.25003, 1.75, 0, 0, 0.80556],
+    "57344": [-0.00499, 0.605, 0, 0, 1.05556],
+    "57345": [-0.00499, 0.605, 0, 0, 1.05556],
+    "57680": [0, 0.12, 0, 0, 0.45],
+    "57681": [0, 0.12, 0, 0, 0.45],
+    "57682": [0, 0.12, 0, 0, 0.45],
+    "57683": [0, 0.12, 0, 0, 0.45]
+  },
+  "Typewriter-Regular": {
+    "32": [0, 0, 0, 0, 0.525],
+    "33": [0, 0.61111, 0, 0, 0.525],
+    "34": [0, 0.61111, 0, 0, 0.525],
+    "35": [0, 0.61111, 0, 0, 0.525],
+    "36": [0.08333, 0.69444, 0, 0, 0.525],
+    "37": [0.08333, 0.69444, 0, 0, 0.525],
+    "38": [0, 0.61111, 0, 0, 0.525],
+    "39": [0, 0.61111, 0, 0, 0.525],
+    "40": [0.08333, 0.69444, 0, 0, 0.525],
+    "41": [0.08333, 0.69444, 0, 0, 0.525],
+    "42": [0, 0.52083, 0, 0, 0.525],
+    "43": [-0.08056, 0.53055, 0, 0, 0.525],
+    "44": [0.13889, 0.125, 0, 0, 0.525],
+    "45": [-0.08056, 0.53055, 0, 0, 0.525],
+    "46": [0, 0.125, 0, 0, 0.525],
+    "47": [0.08333, 0.69444, 0, 0, 0.525],
+    "48": [0, 0.61111, 0, 0, 0.525],
+    "49": [0, 0.61111, 0, 0, 0.525],
+    "50": [0, 0.61111, 0, 0, 0.525],
+    "51": [0, 0.61111, 0, 0, 0.525],
+    "52": [0, 0.61111, 0, 0, 0.525],
+    "53": [0, 0.61111, 0, 0, 0.525],
+    "54": [0, 0.61111, 0, 0, 0.525],
+    "55": [0, 0.61111, 0, 0, 0.525],
+    "56": [0, 0.61111, 0, 0, 0.525],
+    "57": [0, 0.61111, 0, 0, 0.525],
+    "58": [0, 0.43056, 0, 0, 0.525],
+    "59": [0.13889, 0.43056, 0, 0, 0.525],
+    "60": [-0.05556, 0.55556, 0, 0, 0.525],
+    "61": [-0.19549, 0.41562, 0, 0, 0.525],
+    "62": [-0.05556, 0.55556, 0, 0, 0.525],
+    "63": [0, 0.61111, 0, 0, 0.525],
+    "64": [0, 0.61111, 0, 0, 0.525],
+    "65": [0, 0.61111, 0, 0, 0.525],
+    "66": [0, 0.61111, 0, 0, 0.525],
+    "67": [0, 0.61111, 0, 0, 0.525],
+    "68": [0, 0.61111, 0, 0, 0.525],
+    "69": [0, 0.61111, 0, 0, 0.525],
+    "70": [0, 0.61111, 0, 0, 0.525],
+    "71": [0, 0.61111, 0, 0, 0.525],
+    "72": [0, 0.61111, 0, 0, 0.525],
+    "73": [0, 0.61111, 0, 0, 0.525],
+    "74": [0, 0.61111, 0, 0, 0.525],
+    "75": [0, 0.61111, 0, 0, 0.525],
+    "76": [0, 0.61111, 0, 0, 0.525],
+    "77": [0, 0.61111, 0, 0, 0.525],
+    "78": [0, 0.61111, 0, 0, 0.525],
+    "79": [0, 0.61111, 0, 0, 0.525],
+    "80": [0, 0.61111, 0, 0, 0.525],
+    "81": [0.13889, 0.61111, 0, 0, 0.525],
+    "82": [0, 0.61111, 0, 0, 0.525],
+    "83": [0, 0.61111, 0, 0, 0.525],
+    "84": [0, 0.61111, 0, 0, 0.525],
+    "85": [0, 0.61111, 0, 0, 0.525],
+    "86": [0, 0.61111, 0, 0, 0.525],
+    "87": [0, 0.61111, 0, 0, 0.525],
+    "88": [0, 0.61111, 0, 0, 0.525],
+    "89": [0, 0.61111, 0, 0, 0.525],
+    "90": [0, 0.61111, 0, 0, 0.525],
+    "91": [0.08333, 0.69444, 0, 0, 0.525],
+    "92": [0.08333, 0.69444, 0, 0, 0.525],
+    "93": [0.08333, 0.69444, 0, 0, 0.525],
+    "94": [0, 0.61111, 0, 0, 0.525],
+    "95": [0.09514, 0, 0, 0, 0.525],
+    "96": [0, 0.61111, 0, 0, 0.525],
+    "97": [0, 0.43056, 0, 0, 0.525],
+    "98": [0, 0.61111, 0, 0, 0.525],
+    "99": [0, 0.43056, 0, 0, 0.525],
+    "100": [0, 0.61111, 0, 0, 0.525],
+    "101": [0, 0.43056, 0, 0, 0.525],
+    "102": [0, 0.61111, 0, 0, 0.525],
+    "103": [0.22222, 0.43056, 0, 0, 0.525],
+    "104": [0, 0.61111, 0, 0, 0.525],
+    "105": [0, 0.61111, 0, 0, 0.525],
+    "106": [0.22222, 0.61111, 0, 0, 0.525],
+    "107": [0, 0.61111, 0, 0, 0.525],
+    "108": [0, 0.61111, 0, 0, 0.525],
+    "109": [0, 0.43056, 0, 0, 0.525],
+    "110": [0, 0.43056, 0, 0, 0.525],
+    "111": [0, 0.43056, 0, 0, 0.525],
+    "112": [0.22222, 0.43056, 0, 0, 0.525],
+    "113": [0.22222, 0.43056, 0, 0, 0.525],
+    "114": [0, 0.43056, 0, 0, 0.525],
+    "115": [0, 0.43056, 0, 0, 0.525],
+    "116": [0, 0.55358, 0, 0, 0.525],
+    "117": [0, 0.43056, 0, 0, 0.525],
+    "118": [0, 0.43056, 0, 0, 0.525],
+    "119": [0, 0.43056, 0, 0, 0.525],
+    "120": [0, 0.43056, 0, 0, 0.525],
+    "121": [0.22222, 0.43056, 0, 0, 0.525],
+    "122": [0, 0.43056, 0, 0, 0.525],
+    "123": [0.08333, 0.69444, 0, 0, 0.525],
+    "124": [0.08333, 0.69444, 0, 0, 0.525],
+    "125": [0.08333, 0.69444, 0, 0, 0.525],
+    "126": [0, 0.61111, 0, 0, 0.525],
+    "127": [0, 0.61111, 0, 0, 0.525],
+    "160": [0, 0, 0, 0, 0.525],
+    "176": [0, 0.61111, 0, 0, 0.525],
+    "184": [0.19445, 0, 0, 0, 0.525],
+    "305": [0, 0.43056, 0, 0, 0.525],
+    "567": [0.22222, 0.43056, 0, 0, 0.525],
+    "711": [0, 0.56597, 0, 0, 0.525],
+    "713": [0, 0.56555, 0, 0, 0.525],
+    "714": [0, 0.61111, 0, 0, 0.525],
+    "715": [0, 0.61111, 0, 0, 0.525],
+    "728": [0, 0.61111, 0, 0, 0.525],
+    "730": [0, 0.61111, 0, 0, 0.525],
+    "770": [0, 0.61111, 0, 0, 0.525],
+    "771": [0, 0.61111, 0, 0, 0.525],
+    "776": [0, 0.61111, 0, 0, 0.525],
+    "915": [0, 0.61111, 0, 0, 0.525],
+    "916": [0, 0.61111, 0, 0, 0.525],
+    "920": [0, 0.61111, 0, 0, 0.525],
+    "923": [0, 0.61111, 0, 0, 0.525],
+    "926": [0, 0.61111, 0, 0, 0.525],
+    "928": [0, 0.61111, 0, 0, 0.525],
+    "931": [0, 0.61111, 0, 0, 0.525],
+    "933": [0, 0.61111, 0, 0, 0.525],
+    "934": [0, 0.61111, 0, 0, 0.525],
+    "936": [0, 0.61111, 0, 0, 0.525],
+    "937": [0, 0.61111, 0, 0, 0.525],
+    "8216": [0, 0.61111, 0, 0, 0.525],
+    "8217": [0, 0.61111, 0, 0, 0.525],
+    "8242": [0, 0.61111, 0, 0, 0.525],
+    "9251": [0.11111, 0.21944, 0, 0, 0.525]
+  }
+};
+
+/**
+ * This file contains metrics regarding fonts and individual symbols. The sigma
+ * and xi variables, as well as the metricMap map contain data extracted from
+ * TeX, TeX font metrics, and the TTF files. These data are then exposed via the
+ * `metrics` variable and the getCharacterMetrics function.
+ */
+// In TeX, there are actually three sets of dimensions, one for each of
+// textstyle (size index 5 and higher: >=9pt), scriptstyle (size index 3 and 4:
+// 7-8pt), and scriptscriptstyle (size index 1 and 2: 5-6pt).  These are
+// provided in the the arrays below, in that order.
+//
+// The font metrics are stored in fonts cmsy10, cmsy7, and cmsy5 respsectively.
+// This was determined by running the following script:
+//
+//     latex -interaction=nonstopmode \
+//     '\documentclass{article}\usepackage{amsmath}\begin{document}' \
+//     '$a$ \expandafter\show\the\textfont2' \
+//     '\expandafter\show\the\scriptfont2' \
+//     '\expandafter\show\the\scriptscriptfont2' \
+//     '\stop'
+//
+// The metrics themselves were retreived using the following commands:
+//
+//     tftopl cmsy10
+//     tftopl cmsy7
+//     tftopl cmsy5
+//
+// The output of each of these commands is quite lengthy.  The only part we
+// care about is the FONTDIMEN section. Each value is measured in EMs.
+const sigmasAndXis = {
+  slant: [0.250, 0.250, 0.250],
+  // sigma1
+  space: [0.000, 0.000, 0.000],
+  // sigma2
+  stretch: [0.000, 0.000, 0.000],
+  // sigma3
+  shrink: [0.000, 0.000, 0.000],
+  // sigma4
+  xHeight: [0.431, 0.431, 0.431],
+  // sigma5
+  quad: [1.000, 1.171, 1.472],
+  // sigma6
+  extraSpace: [0.000, 0.000, 0.000],
+  // sigma7
+  num1: [0.677, 0.732, 0.925],
+  // sigma8
+  num2: [0.394, 0.384, 0.387],
+  // sigma9
+  num3: [0.444, 0.471, 0.504],
+  // sigma10
+  denom1: [0.686, 0.752, 1.025],
+  // sigma11
+  denom2: [0.345, 0.344, 0.532],
+  // sigma12
+  sup1: [0.413, 0.503, 0.504],
+  // sigma13
+  sup2: [0.363, 0.431, 0.404],
+  // sigma14
+  sup3: [0.289, 0.286, 0.294],
+  // sigma15
+  sub1: [0.150, 0.143, 0.200],
+  // sigma16
+  sub2: [0.247, 0.286, 0.400],
+  // sigma17
+  supDrop: [0.386, 0.353, 0.494],
+  // sigma18
+  subDrop: [0.050, 0.071, 0.100],
+  // sigma19
+  delim1: [2.390, 1.700, 1.980],
+  // sigma20
+  delim2: [1.010, 1.157, 1.420],
+  // sigma21
+  axisHeight: [0.250, 0.250, 0.250],
+  // sigma22
+  // These font metrics are extracted from TeX by using tftopl on cmex10.tfm;
+  // they correspond to the font parameters of the extension fonts (family 3).
+  // See the TeXbook, page 441. In AMSTeX, the extension fonts scale; to
+  // match cmex7, we'd use cmex7.tfm values for script and scriptscript
+  // values.
+  defaultRuleThickness: [0.04, 0.049, 0.049],
+  // xi8; cmex7: 0.049
+  bigOpSpacing1: [0.111, 0.111, 0.111],
+  // xi9
+  bigOpSpacing2: [0.166, 0.166, 0.166],
+  // xi10
+  bigOpSpacing3: [0.2, 0.2, 0.2],
+  // xi11
+  bigOpSpacing4: [0.6, 0.611, 0.611],
+  // xi12; cmex7: 0.611
+  bigOpSpacing5: [0.1, 0.143, 0.143],
+  // xi13; cmex7: 0.143
+  // The \sqrt rule width is taken from the height of the surd character.
+  // Since we use the same font at all sizes, this thickness doesn't scale.
+  sqrtRuleThickness: [0.04, 0.04, 0.04],
+  // This value determines how large a pt is, for metrics which are defined
+  // in terms of pts.
+  // This value is also used in katex.less; if you change it make sure the
+  // values match.
+  ptPerEm: [10.0, 10.0, 10.0],
+  // The space between adjacent `|` columns in an array definition. From
+  // `\showthe\doublerulesep` in LaTeX. Equals 2.0 / ptPerEm.
+  doubleRuleSep: [0.2, 0.2, 0.2],
+  // The width of separator lines in {array} environments. From
+  // `\showthe\arrayrulewidth` in LaTeX. Equals 0.4 / ptPerEm.
+  arrayRuleWidth: [0.04, 0.04, 0.04],
+  // Two values from LaTeX source2e:
+  fboxsep: [0.3, 0.3, 0.3],
+  //        3 pt / ptPerEm
+  fboxrule: [0.04, 0.04, 0.04] // 0.4 pt / ptPerEm
+
+}; // This map contains a mapping from font name and character code to character
+// should have Latin-1 and Cyrillic characters, but may not depending on the
+// operating system.  The metrics do not account for extra height from the
+// accents.  In the case of Cyrillic characters which have both ascenders and
+// descenders we prefer approximations with ascenders, primarily to prevent
+// the fraction bar or root line from intersecting the glyph.
+// TODO(kevinb) allow union of multiple glyph metrics for better accuracy.
+
+const extraCharacterMap = {
+  // Latin-1
+  'Å': 'A',
+  'Ç': 'C',
+  'Ð': 'D',
+  'Þ': 'o',
+  'å': 'a',
+  'ç': 'c',
+  'ð': 'd',
+  'þ': 'o',
+  // Cyrillic
+  'А': 'A',
+  'Б': 'B',
+  'В': 'B',
+  'Г': 'F',
+  'Д': 'A',
+  'Е': 'E',
+  'Ж': 'K',
+  'З': '3',
+  'И': 'N',
+  'Й': 'N',
+  'К': 'K',
+  'Л': 'N',
+  'М': 'M',
+  'Н': 'H',
+  'О': 'O',
+  'П': 'N',
+  'Р': 'P',
+  'С': 'C',
+  'Т': 'T',
+  'У': 'y',
+  'Ф': 'O',
+  'Х': 'X',
+  'Ц': 'U',
+  'Ч': 'h',
+  'Ш': 'W',
+  'Щ': 'W',
+  'Ъ': 'B',
+  'Ы': 'X',
+  'Ь': 'B',
+  'Э': '3',
+  'Ю': 'X',
+  'Я': 'R',
+  'а': 'a',
+  'б': 'b',
+  'в': 'a',
+  'г': 'r',
+  'д': 'y',
+  'е': 'e',
+  'ж': 'm',
+  'з': 'e',
+  'и': 'n',
+  'й': 'n',
+  'к': 'n',
+  'л': 'n',
+  'м': 'm',
+  'н': 'n',
+  'о': 'o',
+  'п': 'n',
+  'р': 'p',
+  'с': 'c',
+  'т': 'o',
+  'у': 'y',
+  'ф': 'b',
+  'х': 'x',
+  'ц': 'n',
+  'ч': 'n',
+  'ш': 'w',
+  'щ': 'w',
+  'ъ': 'a',
+  'ы': 'm',
+  'ь': 'a',
+  'э': 'e',
+  'ю': 'm',
+  'я': 'r'
+};
+
+/**
+ * This function adds new font metrics to default metricMap
+ * It can also override existing metrics
+ */
+function setFontMetrics(fontName, metrics) {
+  metricMap[fontName] = metrics;
+}
+/**
+ * This function is a convenience function for looking up information in the
+ * metricMap table. It takes a character as a string, and a font.
+ *
+ * Note: the `width` property may be undefined if fontMetricsData.js wasn't
+ * built using `Make extended_metrics`.
+ */
+
+function getCharacterMetrics(character, font, mode) {
+  if (!metricMap[font]) {
+    throw new Error(`Font metrics not found for font: ${font}.`);
+  }
+
+  let ch = character.charCodeAt(0);
+  let metrics = metricMap[font][ch];
+
+  if (!metrics && character[0] in extraCharacterMap) {
+    ch = extraCharacterMap[character[0]].charCodeAt(0);
+    metrics = metricMap[font][ch];
+  }
+
+  if (!metrics && mode === 'text') {
+    // We don't typically have font metrics for Asian scripts.
+    // But since we support them in text mode, we need to return
+    // some sort of metrics.
+    // So if the character is in a script we support but we
+    // don't have metrics for it, just use the metrics for
+    // the Latin capital letter M. This is close enough because
+    // we (currently) only care about the height of the glpyh
+    // not its width.
+    if (supportedCodepoint(ch)) {
+      metrics = metricMap[font][77]; // 77 is the charcode for 'M'
+    }
+  }
+
+  if (metrics) {
+    return {
+      depth: metrics[0],
+      height: metrics[1],
+      italic: metrics[2],
+      skew: metrics[3],
+      width: metrics[4]
+    };
+  }
+}
+const fontMetricsBySizeIndex = {};
+/**
+ * Get the font metrics for a given size.
+ */
+
+function getGlobalMetrics(size) {
+  let sizeIndex;
+
+  if (size >= 5) {
+    sizeIndex = 0;
+  } else if (size >= 3) {
+    sizeIndex = 1;
+  } else {
+    sizeIndex = 2;
+  }
+
+  if (!fontMetricsBySizeIndex[sizeIndex]) {
+    const metrics = fontMetricsBySizeIndex[sizeIndex] = {
+      cssEmPerMu: sigmasAndXis.quad[sizeIndex] / 18
+    };
+
+    for (const key in sigmasAndXis) {
+      if (sigmasAndXis.hasOwnProperty(key)) {
+        metrics[key] = sigmasAndXis[key][sizeIndex];
+      }
+    }
+  }
+
+  return fontMetricsBySizeIndex[sizeIndex];
+}
+
+/**
+ * This file holds a list of all no-argument functions and single-character
+ * symbols (like 'a' or ';').
+ *
+ * For each of the symbols, there are three properties they can have:
+ * - font (required): the font to be used for this symbol. Either "main" (the
+     normal font), or "ams" (the ams fonts).
+ * - group (required): the ParseNode group type the symbol should have (i.e.
+     "textord", "mathord", etc).
+     See https://github.com/KaTeX/KaTeX/wiki/Examining-TeX#group-types
+ * - replace: the character that this symbol or function should be
+ *   replaced with (i.e. "\phi" has a replace value of "\u03d5", the phi
+ *   character in the main font).
+ *
+ * The outermost map in the table indicates what mode the symbols should be
+ * accepted in (e.g. "math" or "text").
+ */
+// Some of these have a "-token" suffix since these are also used as `ParseNode`
+// types for raw text tokens, and we want to avoid conflicts with higher-level
+// `ParseNode` types. These `ParseNode`s are constructed within `Parser` by
+// looking up the `symbols` map.
+const ATOMS = {
+  "bin": 1,
+  "close": 1,
+  "inner": 1,
+  "open": 1,
+  "punct": 1,
+  "rel": 1
+};
+const NON_ATOMS = {
+  "accent-token": 1,
+  "mathord": 1,
+  "op-token": 1,
+  "spacing": 1,
+  "textord": 1
+};
+const symbols = {
+  "math": {},
+  "text": {}
+};
+/** `acceptUnicodeChar = true` is only applicable if `replace` is set. */
+
+function defineSymbol(mode, font, group, replace, name, acceptUnicodeChar) {
+  symbols[mode][name] = {
+    font,
+    group,
+    replace
+  };
+
+  if (acceptUnicodeChar && replace) {
+    symbols[mode][replace] = symbols[mode][name];
+  }
+} // Some abbreviations for commonly used strings.
+// This helps minify the code, and also spotting typos using jshint.
+// modes:
+
+const math = "math";
+const text$1 = "text"; // fonts:
+
+const main = "main";
+const ams = "ams"; // groups:
+
+const accent = "accent-token";
+const bin = "bin";
+const close = "close";
+const inner = "inner";
+const mathord = "mathord";
+const op = "op-token";
+const open = "open";
+const punct = "punct";
+const rel = "rel";
+const spacing = "spacing";
+const textord = "textord"; // Now comes the symbol table
+// Relation Symbols
+
+defineSymbol(math, main, rel, "\u2261", "\\equiv", true);
+defineSymbol(math, main, rel, "\u227a", "\\prec", true);
+defineSymbol(math, main, rel, "\u227b", "\\succ", true);
+defineSymbol(math, main, rel, "\u223c", "\\sim", true);
+defineSymbol(math, main, rel, "\u22a5", "\\perp");
+defineSymbol(math, main, rel, "\u2aaf", "\\preceq", true);
+defineSymbol(math, main, rel, "\u2ab0", "\\succeq", true);
+defineSymbol(math, main, rel, "\u2243", "\\simeq", true);
+defineSymbol(math, main, rel, "\u2223", "\\mid", true);
+defineSymbol(math, main, rel, "\u226a", "\\ll", true);
+defineSymbol(math, main, rel, "\u226b", "\\gg", true);
+defineSymbol(math, main, rel, "\u224d", "\\asymp", true);
+defineSymbol(math, main, rel, "\u2225", "\\parallel");
+defineSymbol(math, main, rel, "\u22c8", "\\bowtie", true);
+defineSymbol(math, main, rel, "\u2323", "\\smile", true);
+defineSymbol(math, main, rel, "\u2291", "\\sqsubseteq", true);
+defineSymbol(math, main, rel, "\u2292", "\\sqsupseteq", true);
+defineSymbol(math, main, rel, "\u2250", "\\doteq", true);
+defineSymbol(math, main, rel, "\u2322", "\\frown", true);
+defineSymbol(math, main, rel, "\u220b", "\\ni", true);
+defineSymbol(math, main, rel, "\u221d", "\\propto", true);
+defineSymbol(math, main, rel, "\u22a2", "\\vdash", true);
+defineSymbol(math, main, rel, "\u22a3", "\\dashv", true);
+defineSymbol(math, main, rel, "\u220b", "\\owns"); // Punctuation
+
+defineSymbol(math, main, punct, "\u002e", "\\ldotp");
+defineSymbol(math, main, punct, "\u22c5", "\\cdotp"); // Misc Symbols
+
+defineSymbol(math, main, textord, "\u0023", "\\#");
+defineSymbol(text$1, main, textord, "\u0023", "\\#");
+defineSymbol(math, main, textord, "\u0026", "\\&");
+defineSymbol(text$1, main, textord, "\u0026", "\\&");
+defineSymbol(math, main, textord, "\u2135", "\\aleph", true);
+defineSymbol(math, main, textord, "\u2200", "\\forall", true);
+defineSymbol(math, main, textord, "\u210f", "\\hbar", true);
+defineSymbol(math, main, textord, "\u2203", "\\exists", true);
+defineSymbol(math, main, textord, "\u2207", "\\nabla", true);
+defineSymbol(math, main, textord, "\u266d", "\\flat", true);
+defineSymbol(math, main, textord, "\u2113", "\\ell", true);
+defineSymbol(math, main, textord, "\u266e", "\\natural", true);
+defineSymbol(math, main, textord, "\u2663", "\\clubsuit", true);
+defineSymbol(math, main, textord, "\u2118", "\\wp", true);
+defineSymbol(math, main, textord, "\u266f", "\\sharp", true);
+defineSymbol(math, main, textord, "\u2662", "\\diamondsuit", true);
+defineSymbol(math, main, textord, "\u211c", "\\Re", true);
+defineSymbol(math, main, textord, "\u2661", "\\heartsuit", true);
+defineSymbol(math, main, textord, "\u2111", "\\Im", true);
+defineSymbol(math, main, textord, "\u2660", "\\spadesuit", true);
+defineSymbol(text$1, main, textord, "\u00a7", "\\S", true);
+defineSymbol(text$1, main, textord, "\u00b6", "\\P", true); // Math and Text
+
+defineSymbol(math, main, textord, "\u2020", "\\dag");
+defineSymbol(text$1, main, textord, "\u2020", "\\dag");
+defineSymbol(text$1, main, textord, "\u2020", "\\textdagger");
+defineSymbol(math, main, textord, "\u2021", "\\ddag");
+defineSymbol(text$1, main, textord, "\u2021", "\\ddag");
+defineSymbol(text$1, main, textord, "\u2021", "\\textdaggerdbl"); // Large Delimiters
+
+defineSymbol(math, main, close, "\u23b1", "\\rmoustache", true);
+defineSymbol(math, main, open, "\u23b0", "\\lmoustache", true);
+defineSymbol(math, main, close, "\u27ef", "\\rgroup", true);
+defineSymbol(math, main, open, "\u27ee", "\\lgroup", true); // Binary Operators
+
+defineSymbol(math, main, bin, "\u2213", "\\mp", true);
+defineSymbol(math, main, bin, "\u2296", "\\ominus", true);
+defineSymbol(math, main, bin, "\u228e", "\\uplus", true);
+defineSymbol(math, main, bin, "\u2293", "\\sqcap", true);
+defineSymbol(math, main, bin, "\u2217", "\\ast");
+defineSymbol(math, main, bin, "\u2294", "\\sqcup", true);
+defineSymbol(math, main, bin, "\u25ef", "\\bigcirc");
+defineSymbol(math, main, bin, "\u2219", "\\bullet");
+defineSymbol(math, main, bin, "\u2021", "\\ddagger");
+defineSymbol(math, main, bin, "\u2240", "\\wr", true);
+defineSymbol(math, main, bin, "\u2a3f", "\\amalg");
+defineSymbol(math, main, bin, "\u0026", "\\And"); // from amsmath
+// Arrow Symbols
+
+defineSymbol(math, main, rel, "\u27f5", "\\longleftarrow", true);
+defineSymbol(math, main, rel, "\u21d0", "\\Leftarrow", true);
+defineSymbol(math, main, rel, "\u27f8", "\\Longleftarrow", true);
+defineSymbol(math, main, rel, "\u27f6", "\\longrightarrow", true);
+defineSymbol(math, main, rel, "\u21d2", "\\Rightarrow", true);
+defineSymbol(math, main, rel, "\u27f9", "\\Longrightarrow", true);
+defineSymbol(math, main, rel, "\u2194", "\\leftrightarrow", true);
+defineSymbol(math, main, rel, "\u27f7", "\\longleftrightarrow", true);
+defineSymbol(math, main, rel, "\u21d4", "\\Leftrightarrow", true);
+defineSymbol(math, main, rel, "\u27fa", "\\Longleftrightarrow", true);
+defineSymbol(math, main, rel, "\u21a6", "\\mapsto", true);
+defineSymbol(math, main, rel, "\u27fc", "\\longmapsto", true);
+defineSymbol(math, main, rel, "\u2197", "\\nearrow", true);
+defineSymbol(math, main, rel, "\u21a9", "\\hookleftarrow", true);
+defineSymbol(math, main, rel, "\u21aa", "\\hookrightarrow", true);
+defineSymbol(math, main, rel, "\u2198", "\\searrow", true);
+defineSymbol(math, main, rel, "\u21bc", "\\leftharpoonup", true);
+defineSymbol(math, main, rel, "\u21c0", "\\rightharpoonup", true);
+defineSymbol(math, main, rel, "\u2199", "\\swarrow", true);
+defineSymbol(math, main, rel, "\u21bd", "\\leftharpoondown", true);
+defineSymbol(math, main, rel, "\u21c1", "\\rightharpoondown", true);
+defineSymbol(math, main, rel, "\u2196", "\\nwarrow", true);
+defineSymbol(math, main, rel, "\u21cc", "\\rightleftharpoons", true); // AMS Negated Binary Relations
+
+defineSymbol(math, ams, rel, "\u226e", "\\nless", true); // Symbol names preceeded by "@" each have a corresponding macro.
+
+defineSymbol(math, ams, rel, "\ue010", "\\@nleqslant");
+defineSymbol(math, ams, rel, "\ue011", "\\@nleqq");
+defineSymbol(math, ams, rel, "\u2a87", "\\lneq", true);
+defineSymbol(math, ams, rel, "\u2268", "\\lneqq", true);
+defineSymbol(math, ams, rel, "\ue00c", "\\@lvertneqq");
+defineSymbol(math, ams, rel, "\u22e6", "\\lnsim", true);
+defineSymbol(math, ams, rel, "\u2a89", "\\lnapprox", true);
+defineSymbol(math, ams, rel, "\u2280", "\\nprec", true); // unicode-math maps \u22e0 to \npreccurlyeq. We'll use the AMS synonym.
+
+defineSymbol(math, ams, rel, "\u22e0", "\\npreceq", true);
+defineSymbol(math, ams, rel, "\u22e8", "\\precnsim", true);
+defineSymbol(math, ams, rel, "\u2ab9", "\\precnapprox", true);
+defineSymbol(math, ams, rel, "\u2241", "\\nsim", true);
+defineSymbol(math, ams, rel, "\ue006", "\\@nshortmid");
+defineSymbol(math, ams, rel, "\u2224", "\\nmid", true);
+defineSymbol(math, ams, rel, "\u22ac", "\\nvdash", true);
+defineSymbol(math, ams, rel, "\u22ad", "\\nvDash", true);
+defineSymbol(math, ams, rel, "\u22ea", "\\ntriangleleft");
+defineSymbol(math, ams, rel, "\u22ec", "\\ntrianglelefteq", true);
+defineSymbol(math, ams, rel, "\u228a", "\\subsetneq", true);
+defineSymbol(math, ams, rel, "\ue01a", "\\@varsubsetneq");
+defineSymbol(math, ams, rel, "\u2acb", "\\subsetneqq", true);
+defineSymbol(math, ams, rel, "\ue017", "\\@varsubsetneqq");
+defineSymbol(math, ams, rel, "\u226f", "\\ngtr", true);
+defineSymbol(math, ams, rel, "\ue00f", "\\@ngeqslant");
+defineSymbol(math, ams, rel, "\ue00e", "\\@ngeqq");
+defineSymbol(math, ams, rel, "\u2a88", "\\gneq", true);
+defineSymbol(math, ams, rel, "\u2269", "\\gneqq", true);
+defineSymbol(math, ams, rel, "\ue00d", "\\@gvertneqq");
+defineSymbol(math, ams, rel, "\u22e7", "\\gnsim", true);
+defineSymbol(math, ams, rel, "\u2a8a", "\\gnapprox", true);
+defineSymbol(math, ams, rel, "\u2281", "\\nsucc", true); // unicode-math maps \u22e1 to \nsucccurlyeq. We'll use the AMS synonym.
+
+defineSymbol(math, ams, rel, "\u22e1", "\\nsucceq", true);
+defineSymbol(math, ams, rel, "\u22e9", "\\succnsim", true);
+defineSymbol(math, ams, rel, "\u2aba", "\\succnapprox", true); // unicode-math maps \u2246 to \simneqq. We'll use the AMS synonym.
+
+defineSymbol(math, ams, rel, "\u2246", "\\ncong", true);
+defineSymbol(math, ams, rel, "\ue007", "\\@nshortparallel");
+defineSymbol(math, ams, rel, "\u2226", "\\nparallel", true);
+defineSymbol(math, ams, rel, "\u22af", "\\nVDash", true);
+defineSymbol(math, ams, rel, "\u22eb", "\\ntriangleright");
+defineSymbol(math, ams, rel, "\u22ed", "\\ntrianglerighteq", true);
+defineSymbol(math, ams, rel, "\ue018", "\\@nsupseteqq");
+defineSymbol(math, ams, rel, "\u228b", "\\supsetneq", true);
+defineSymbol(math, ams, rel, "\ue01b", "\\@varsupsetneq");
+defineSymbol(math, ams, rel, "\u2acc", "\\supsetneqq", true);
+defineSymbol(math, ams, rel, "\ue019", "\\@varsupsetneqq");
+defineSymbol(math, ams, rel, "\u22ae", "\\nVdash", true);
+defineSymbol(math, ams, rel, "\u2ab5", "\\precneqq", true);
+defineSymbol(math, ams, rel, "\u2ab6", "\\succneqq", true);
+defineSymbol(math, ams, rel, "\ue016", "\\@nsubseteqq");
+defineSymbol(math, ams, bin, "\u22b4", "\\unlhd");
+defineSymbol(math, ams, bin, "\u22b5", "\\unrhd"); // AMS Negated Arrows
+
+defineSymbol(math, ams, rel, "\u219a", "\\nleftarrow", true);
+defineSymbol(math, ams, rel, "\u219b", "\\nrightarrow", true);
+defineSymbol(math, ams, rel, "\u21cd", "\\nLeftarrow", true);
+defineSymbol(math, ams, rel, "\u21cf", "\\nRightarrow", true);
+defineSymbol(math, ams, rel, "\u21ae", "\\nleftrightarrow", true);
+defineSymbol(math, ams, rel, "\u21ce", "\\nLeftrightarrow", true); // AMS Misc
+
+defineSymbol(math, ams, rel, "\u25b3", "\\vartriangle");
+defineSymbol(math, ams, textord, "\u210f", "\\hslash");
+defineSymbol(math, ams, textord, "\u25bd", "\\triangledown");
+defineSymbol(math, ams, textord, "\u25ca", "\\lozenge");
+defineSymbol(math, ams, textord, "\u24c8", "\\circledS");
+defineSymbol(math, ams, textord, "\u00ae", "\\circledR");
+defineSymbol(text$1, ams, textord, "\u00ae", "\\circledR");
+defineSymbol(math, ams, textord, "\u2221", "\\measuredangle", true);
+defineSymbol(math, ams, textord, "\u2204", "\\nexists");
+defineSymbol(math, ams, textord, "\u2127", "\\mho");
+defineSymbol(math, ams, textord, "\u2132", "\\Finv", true);
+defineSymbol(math, ams, textord, "\u2141", "\\Game", true);
+defineSymbol(math, ams, textord, "\u2035", "\\backprime");
+defineSymbol(math, ams, textord, "\u25b2", "\\blacktriangle");
+defineSymbol(math, ams, textord, "\u25bc", "\\blacktriangledown");
+defineSymbol(math, ams, textord, "\u25a0", "\\blacksquare");
+defineSymbol(math, ams, textord, "\u29eb", "\\blacklozenge");
+defineSymbol(math, ams, textord, "\u2605", "\\bigstar");
+defineSymbol(math, ams, textord, "\u2222", "\\sphericalangle", true);
+defineSymbol(math, ams, textord, "\u2201", "\\complement", true); // unicode-math maps U+F0 (ð) to \matheth. We map to AMS function \eth
+
+defineSymbol(math, ams, textord, "\u00f0", "\\eth", true);
+defineSymbol(math, ams, textord, "\u2571", "\\diagup");
+defineSymbol(math, ams, textord, "\u2572", "\\diagdown");
+defineSymbol(math, ams, textord, "\u25a1", "\\square");
+defineSymbol(math, ams, textord, "\u25a1", "\\Box");
+defineSymbol(math, ams, textord, "\u25ca", "\\Diamond"); // unicode-math maps U+A5 to \mathyen. We map to AMS function \yen
+
+defineSymbol(math, ams, textord, "\u00a5", "\\yen", true);
+defineSymbol(text$1, ams, textord, "\u00a5", "\\yen", true);
+defineSymbol(math, ams, textord, "\u2713", "\\checkmark", true);
+defineSymbol(text$1, ams, textord, "\u2713", "\\checkmark"); // AMS Hebrew
+
+defineSymbol(math, ams, textord, "\u2136", "\\beth", true);
+defineSymbol(math, ams, textord, "\u2138", "\\daleth", true);
+defineSymbol(math, ams, textord, "\u2137", "\\gimel", true); // AMS Greek
+
+defineSymbol(math, ams, textord, "\u03dd", "\\digamma", true);
+defineSymbol(math, ams, textord, "\u03f0", "\\varkappa"); // AMS Delimiters
+
+defineSymbol(math, ams, open, "\u250c", "\\ulcorner", true);
+defineSymbol(math, ams, close, "\u2510", "\\urcorner", true);
+defineSymbol(math, ams, open, "\u2514", "\\llcorner", true);
+defineSymbol(math, ams, close, "\u2518", "\\lrcorner", true); // AMS Binary Relations
+
+defineSymbol(math, ams, rel, "\u2266", "\\leqq", true);
+defineSymbol(math, ams, rel, "\u2a7d", "\\leqslant", true);
+defineSymbol(math, ams, rel, "\u2a95", "\\eqslantless", true);
+defineSymbol(math, ams, rel, "\u2272", "\\lesssim", true);
+defineSymbol(math, ams, rel, "\u2a85", "\\lessapprox", true);
+defineSymbol(math, ams, rel, "\u224a", "\\approxeq", true);
+defineSymbol(math, ams, bin, "\u22d6", "\\lessdot");
+defineSymbol(math, ams, rel, "\u22d8", "\\lll", true);
+defineSymbol(math, ams, rel, "\u2276", "\\lessgtr", true);
+defineSymbol(math, ams, rel, "\u22da", "\\lesseqgtr", true);
+defineSymbol(math, ams, rel, "\u2a8b", "\\lesseqqgtr", true);
+defineSymbol(math, ams, rel, "\u2251", "\\doteqdot");
+defineSymbol(math, ams, rel, "\u2253", "\\risingdotseq", true);
+defineSymbol(math, ams, rel, "\u2252", "\\fallingdotseq", true);
+defineSymbol(math, ams, rel, "\u223d", "\\backsim", true);
+defineSymbol(math, ams, rel, "\u22cd", "\\backsimeq", true);
+defineSymbol(math, ams, rel, "\u2ac5", "\\subseteqq", true);
+defineSymbol(math, ams, rel, "\u22d0", "\\Subset", true);
+defineSymbol(math, ams, rel, "\u228f", "\\sqsubset", true);
+defineSymbol(math, ams, rel, "\u227c", "\\preccurlyeq", true);
+defineSymbol(math, ams, rel, "\u22de", "\\curlyeqprec", true);
+defineSymbol(math, ams, rel, "\u227e", "\\precsim", true);
+defineSymbol(math, ams, rel, "\u2ab7", "\\precapprox", true);
+defineSymbol(math, ams, rel, "\u22b2", "\\vartriangleleft");
+defineSymbol(math, ams, rel, "\u22b4", "\\trianglelefteq");
+defineSymbol(math, ams, rel, "\u22a8", "\\vDash", true);
+defineSymbol(math, ams, rel, "\u22aa", "\\Vvdash", true);
+defineSymbol(math, ams, rel, "\u2323", "\\smallsmile");
+defineSymbol(math, ams, rel, "\u2322", "\\smallfrown");
+defineSymbol(math, ams, rel, "\u224f", "\\bumpeq", true);
+defineSymbol(math, ams, rel, "\u224e", "\\Bumpeq", true);
+defineSymbol(math, ams, rel, "\u2267", "\\geqq", true);
+defineSymbol(math, ams, rel, "\u2a7e", "\\geqslant", true);
+defineSymbol(math, ams, rel, "\u2a96", "\\eqslantgtr", true);
+defineSymbol(math, ams, rel, "\u2273", "\\gtrsim", true);
+defineSymbol(math, ams, rel, "\u2a86", "\\gtrapprox", true);
+defineSymbol(math, ams, bin, "\u22d7", "\\gtrdot");
+defineSymbol(math, ams, rel, "\u22d9", "\\ggg", true);
+defineSymbol(math, ams, rel, "\u2277", "\\gtrless", true);
+defineSymbol(math, ams, rel, "\u22db", "\\gtreqless", true);
+defineSymbol(math, ams, rel, "\u2a8c", "\\gtreqqless", true);
+defineSymbol(math, ams, rel, "\u2256", "\\eqcirc", true);
+defineSymbol(math, ams, rel, "\u2257", "\\circeq", true);
+defineSymbol(math, ams, rel, "\u225c", "\\triangleq", true);
+defineSymbol(math, ams, rel, "\u223c", "\\thicksim");
+defineSymbol(math, ams, rel, "\u2248", "\\thickapprox");
+defineSymbol(math, ams, rel, "\u2ac6", "\\supseteqq", true);
+defineSymbol(math, ams, rel, "\u22d1", "\\Supset", true);
+defineSymbol(math, ams, rel, "\u2290", "\\sqsupset", true);
+defineSymbol(math, ams, rel, "\u227d", "\\succcurlyeq", true);
+defineSymbol(math, ams, rel, "\u22df", "\\curlyeqsucc", true);
+defineSymbol(math, ams, rel, "\u227f", "\\succsim", true);
+defineSymbol(math, ams, rel, "\u2ab8", "\\succapprox", true);
+defineSymbol(math, ams, rel, "\u22b3", "\\vartriangleright");
+defineSymbol(math, ams, rel, "\u22b5", "\\trianglerighteq");
+defineSymbol(math, ams, rel, "\u22a9", "\\Vdash", true);
+defineSymbol(math, ams, rel, "\u2223", "\\shortmid");
+defineSymbol(math, ams, rel, "\u2225", "\\shortparallel");
+defineSymbol(math, ams, rel, "\u226c", "\\between", true);
+defineSymbol(math, ams, rel, "\u22d4", "\\pitchfork", true);
+defineSymbol(math, ams, rel, "\u221d", "\\varpropto");
+defineSymbol(math, ams, rel, "\u25c0", "\\blacktriangleleft"); // unicode-math says that \therefore is a mathord atom.
+// We kept the amssymb atom type, which is rel.
+
+defineSymbol(math, ams, rel, "\u2234", "\\therefore", true);
+defineSymbol(math, ams, rel, "\u220d", "\\backepsilon");
+defineSymbol(math, ams, rel, "\u25b6", "\\blacktriangleright"); // unicode-math says that \because is a mathord atom.
+// We kept the amssymb atom type, which is rel.
+
+defineSymbol(math, ams, rel, "\u2235", "\\because", true);
+defineSymbol(math, ams, rel, "\u22d8", "\\llless");
+defineSymbol(math, ams, rel, "\u22d9", "\\gggtr");
+defineSymbol(math, ams, bin, "\u22b2", "\\lhd");
+defineSymbol(math, ams, bin, "\u22b3", "\\rhd");
+defineSymbol(math, ams, rel, "\u2242", "\\eqsim", true);
+defineSymbol(math, main, rel, "\u22c8", "\\Join");
+defineSymbol(math, ams, rel, "\u2251", "\\Doteq", true); // AMS Binary Operators
+
+defineSymbol(math, ams, bin, "\u2214", "\\dotplus", true);
+defineSymbol(math, ams, bin, "\u2216", "\\smallsetminus");
+defineSymbol(math, ams, bin, "\u22d2", "\\Cap", true);
+defineSymbol(math, ams, bin, "\u22d3", "\\Cup", true);
+defineSymbol(math, ams, bin, "\u2a5e", "\\doublebarwedge", true);
+defineSymbol(math, ams, bin, "\u229f", "\\boxminus", true);
+defineSymbol(math, ams, bin, "\u229e", "\\boxplus", true);
+defineSymbol(math, ams, bin, "\u22c7", "\\divideontimes", true);
+defineSymbol(math, ams, bin, "\u22c9", "\\ltimes", true);
+defineSymbol(math, ams, bin, "\u22ca", "\\rtimes", true);
+defineSymbol(math, ams, bin, "\u22cb", "\\leftthreetimes", true);
+defineSymbol(math, ams, bin, "\u22cc", "\\rightthreetimes", true);
+defineSymbol(math, ams, bin, "\u22cf", "\\curlywedge", true);
+defineSymbol(math, ams, bin, "\u22ce", "\\curlyvee", true);
+defineSymbol(math, ams, bin, "\u229d", "\\circleddash", true);
+defineSymbol(math, ams, bin, "\u229b", "\\circledast", true);
+defineSymbol(math, ams, bin, "\u22c5", "\\centerdot");
+defineSymbol(math, ams, bin, "\u22ba", "\\intercal", true);
+defineSymbol(math, ams, bin, "\u22d2", "\\doublecap");
+defineSymbol(math, ams, bin, "\u22d3", "\\doublecup");
+defineSymbol(math, ams, bin, "\u22a0", "\\boxtimes", true); // AMS Arrows
+// Note: unicode-math maps \u21e2 to their own function \rightdasharrow.
+// We'll map it to AMS function \dashrightarrow. It produces the same atom.
+
+defineSymbol(math, ams, rel, "\u21e2", "\\dashrightarrow", true); // unicode-math maps \u21e0 to \leftdasharrow. We'll use the AMS synonym.
+
+defineSymbol(math, ams, rel, "\u21e0", "\\dashleftarrow", true);
+defineSymbol(math, ams, rel, "\u21c7", "\\leftleftarrows", true);
+defineSymbol(math, ams, rel, "\u21c6", "\\leftrightarrows", true);
+defineSymbol(math, ams, rel, "\u21da", "\\Lleftarrow", true);
+defineSymbol(math, ams, rel, "\u219e", "\\twoheadleftarrow", true);
+defineSymbol(math, ams, rel, "\u21a2", "\\leftarrowtail", true);
+defineSymbol(math, ams, rel, "\u21ab", "\\looparrowleft", true);
+defineSymbol(math, ams, rel, "\u21cb", "\\leftrightharpoons", true);
+defineSymbol(math, ams, rel, "\u21b6", "\\curvearrowleft", true); // unicode-math maps \u21ba to \acwopencirclearrow. We'll use the AMS synonym.
+
+defineSymbol(math, ams, rel, "\u21ba", "\\circlearrowleft", true);
+defineSymbol(math, ams, rel, "\u21b0", "\\Lsh", true);
+defineSymbol(math, ams, rel, "\u21c8", "\\upuparrows", true);
+defineSymbol(math, ams, rel, "\u21bf", "\\upharpoonleft", true);
+defineSymbol(math, ams, rel, "\u21c3", "\\downharpoonleft", true);
+defineSymbol(math, ams, rel, "\u22b8", "\\multimap", true);
+defineSymbol(math, ams, rel, "\u21ad", "\\leftrightsquigarrow", true);
+defineSymbol(math, ams, rel, "\u21c9", "\\rightrightarrows", true);
+defineSymbol(math, ams, rel, "\u21c4", "\\rightleftarrows", true);
+defineSymbol(math, ams, rel, "\u21a0", "\\twoheadrightarrow", true);
+defineSymbol(math, ams, rel, "\u21a3", "\\rightarrowtail", true);
+defineSymbol(math, ams, rel, "\u21ac", "\\looparrowright", true);
+defineSymbol(math, ams, rel, "\u21b7", "\\curvearrowright", true); // unicode-math maps \u21bb to \cwopencirclearrow. We'll use the AMS synonym.
+
+defineSymbol(math, ams, rel, "\u21bb", "\\circlearrowright", true);
+defineSymbol(math, ams, rel, "\u21b1", "\\Rsh", true);
+defineSymbol(math, ams, rel, "\u21ca", "\\downdownarrows", true);
+defineSymbol(math, ams, rel, "\u21be", "\\upharpoonright", true);
+defineSymbol(math, ams, rel, "\u21c2", "\\downharpoonright", true);
+defineSymbol(math, ams, rel, "\u21dd", "\\rightsquigarrow", true);
+defineSymbol(math, ams, rel, "\u21dd", "\\leadsto");
+defineSymbol(math, ams, rel, "\u21db", "\\Rrightarrow", true);
+defineSymbol(math, ams, rel, "\u21be", "\\restriction");
+defineSymbol(math, main, textord, "\u2018", "`");
+defineSymbol(math, main, textord, "$", "\\$");
+defineSymbol(text$1, main, textord, "$", "\\$");
+defineSymbol(text$1, main, textord, "$", "\\textdollar");
+defineSymbol(math, main, textord, "%", "\\%");
+defineSymbol(text$1, main, textord, "%", "\\%");
+defineSymbol(math, main, textord, "_", "\\_");
+defineSymbol(text$1, main, textord, "_", "\\_");
+defineSymbol(text$1, main, textord, "_", "\\textunderscore");
+defineSymbol(math, main, textord, "\u2220", "\\angle", true);
+defineSymbol(math, main, textord, "\u221e", "\\infty", true);
+defineSymbol(math, main, textord, "\u2032", "\\prime");
+defineSymbol(math, main, textord, "\u25b3", "\\triangle");
+defineSymbol(math, main, textord, "\u0393", "\\Gamma", true);
+defineSymbol(math, main, textord, "\u0394", "\\Delta", true);
+defineSymbol(math, main, textord, "\u0398", "\\Theta", true);
+defineSymbol(math, main, textord, "\u039b", "\\Lambda", true);
+defineSymbol(math, main, textord, "\u039e", "\\Xi", true);
+defineSymbol(math, main, textord, "\u03a0", "\\Pi", true);
+defineSymbol(math, main, textord, "\u03a3", "\\Sigma", true);
+defineSymbol(math, main, textord, "\u03a5", "\\Upsilon", true);
+defineSymbol(math, main, textord, "\u03a6", "\\Phi", true);
+defineSymbol(math, main, textord, "\u03a8", "\\Psi", true);
+defineSymbol(math, main, textord, "\u03a9", "\\Omega", true);
+defineSymbol(math, main, textord, "A", "\u0391");
+defineSymbol(math, main, textord, "B", "\u0392");
+defineSymbol(math, main, textord, "E", "\u0395");
+defineSymbol(math, main, textord, "Z", "\u0396");
+defineSymbol(math, main, textord, "H", "\u0397");
+defineSymbol(math, main, textord, "I", "\u0399");
+defineSymbol(math, main, textord, "K", "\u039A");
+defineSymbol(math, main, textord, "M", "\u039C");
+defineSymbol(math, main, textord, "N", "\u039D");
+defineSymbol(math, main, textord, "O", "\u039F");
+defineSymbol(math, main, textord, "P", "\u03A1");
+defineSymbol(math, main, textord, "T", "\u03A4");
+defineSymbol(math, main, textord, "X", "\u03A7");
+defineSymbol(math, main, textord, "\u00ac", "\\neg", true);
+defineSymbol(math, main, textord, "\u00ac", "\\lnot");
+defineSymbol(math, main, textord, "\u22a4", "\\top");
+defineSymbol(math, main, textord, "\u22a5", "\\bot");
+defineSymbol(math, main, textord, "\u2205", "\\emptyset");
+defineSymbol(math, ams, textord, "\u2205", "\\varnothing");
+defineSymbol(math, main, mathord, "\u03b1", "\\alpha", true);
+defineSymbol(math, main, mathord, "\u03b2", "\\beta", true);
+defineSymbol(math, main, mathord, "\u03b3", "\\gamma", true);
+defineSymbol(math, main, mathord, "\u03b4", "\\delta", true);
+defineSymbol(math, main, mathord, "\u03f5", "\\epsilon", true);
+defineSymbol(math, main, mathord, "\u03b6", "\\zeta", true);
+defineSymbol(math, main, mathord, "\u03b7", "\\eta", true);
+defineSymbol(math, main, mathord, "\u03b8", "\\theta", true);
+defineSymbol(math, main, mathord, "\u03b9", "\\iota", true);
+defineSymbol(math, main, mathord, "\u03ba", "\\kappa", true);
+defineSymbol(math, main, mathord, "\u03bb", "\\lambda", true);
+defineSymbol(math, main, mathord, "\u03bc", "\\mu", true);
+defineSymbol(math, main, mathord, "\u03bd", "\\nu", true);
+defineSymbol(math, main, mathord, "\u03be", "\\xi", true);
+defineSymbol(math, main, mathord, "\u03bf", "\\omicron", true);
+defineSymbol(math, main, mathord, "\u03c0", "\\pi", true);
+defineSymbol(math, main, mathord, "\u03c1", "\\rho", true);
+defineSymbol(math, main, mathord, "\u03c3", "\\sigma", true);
+defineSymbol(math, main, mathord, "\u03c4", "\\tau", true);
+defineSymbol(math, main, mathord, "\u03c5", "\\upsilon", true);
+defineSymbol(math, main, mathord, "\u03d5", "\\phi", true);
+defineSymbol(math, main, mathord, "\u03c7", "\\chi", true);
+defineSymbol(math, main, mathord, "\u03c8", "\\psi", true);
+defineSymbol(math, main, mathord, "\u03c9", "\\omega", true);
+defineSymbol(math, main, mathord, "\u03b5", "\\varepsilon", true);
+defineSymbol(math, main, mathord, "\u03d1", "\\vartheta", true);
+defineSymbol(math, main, mathord, "\u03d6", "\\varpi", true);
+defineSymbol(math, main, mathord, "\u03f1", "\\varrho", true);
+defineSymbol(math, main, mathord, "\u03c2", "\\varsigma", true);
+defineSymbol(math, main, mathord, "\u03c6", "\\varphi", true);
+defineSymbol(math, main, bin, "\u2217", "*");
+defineSymbol(math, main, bin, "+", "+");
+defineSymbol(math, main, bin, "\u2212", "-");
+defineSymbol(math, main, bin, "\u22c5", "\\cdot", true);
+defineSymbol(math, main, bin, "\u2218", "\\circ");
+defineSymbol(math, main, bin, "\u00f7", "\\div", true);
+defineSymbol(math, main, bin, "\u00b1", "\\pm", true);
+defineSymbol(math, main, bin, "\u00d7", "\\times", true);
+defineSymbol(math, main, bin, "\u2229", "\\cap", true);
+defineSymbol(math, main, bin, "\u222a", "\\cup", true);
+defineSymbol(math, main, bin, "\u2216", "\\setminus");
+defineSymbol(math, main, bin, "\u2227", "\\land");
+defineSymbol(math, main, bin, "\u2228", "\\lor");
+defineSymbol(math, main, bin, "\u2227", "\\wedge", true);
+defineSymbol(math, main, bin, "\u2228", "\\vee", true);
+defineSymbol(math, main, textord, "\u221a", "\\surd");
+defineSymbol(math, main, open, "(", "(");
+defineSymbol(math, main, open, "[", "[");
+defineSymbol(math, main, open, "\u27e8", "\\langle", true);
+defineSymbol(math, main, open, "\u2223", "\\lvert");
+defineSymbol(math, main, open, "\u2225", "\\lVert");
+defineSymbol(math, main, close, ")", ")");
+defineSymbol(math, main, close, "]", "]");
+defineSymbol(math, main, close, "?", "?");
+defineSymbol(math, main, close, "!", "!");
+defineSymbol(math, main, close, "\u27e9", "\\rangle", true);
+defineSymbol(math, main, close, "\u2223", "\\rvert");
+defineSymbol(math, main, close, "\u2225", "\\rVert");
+defineSymbol(math, main, rel, "=", "=");
+defineSymbol(math, main, rel, "<", "<");
+defineSymbol(math, main, rel, ">", ">");
+defineSymbol(math, main, rel, ":", ":");
+defineSymbol(math, main, rel, "\u2248", "\\approx", true);
+defineSymbol(math, main, rel, "\u2245", "\\cong", true);
+defineSymbol(math, main, rel, "\u2265", "\\ge");
+defineSymbol(math, main, rel, "\u2265", "\\geq", true);
+defineSymbol(math, main, rel, "\u2190", "\\gets");
+defineSymbol(math, main, rel, ">", "\\gt");
+defineSymbol(math, main, rel, "\u2208", "\\in", true);
+defineSymbol(math, main, rel, "\ue020", "\\@not");
+defineSymbol(math, main, rel, "\u2282", "\\subset", true);
+defineSymbol(math, main, rel, "\u2283", "\\supset", true);
+defineSymbol(math, main, rel, "\u2286", "\\subseteq", true);
+defineSymbol(math, main, rel, "\u2287", "\\supseteq", true);
+defineSymbol(math, ams, rel, "\u2288", "\\nsubseteq", true);
+defineSymbol(math, ams, rel, "\u2289", "\\nsupseteq", true);
+defineSymbol(math, main, rel, "\u22a8", "\\models");
+defineSymbol(math, main, rel, "\u2190", "\\leftarrow", true);
+defineSymbol(math, main, rel, "\u2264", "\\le");
+defineSymbol(math, main, rel, "\u2264", "\\leq", true);
+defineSymbol(math, main, rel, "<", "\\lt");
+defineSymbol(math, main, rel, "\u2192", "\\rightarrow", true);
+defineSymbol(math, main, rel, "\u2192", "\\to");
+defineSymbol(math, ams, rel, "\u2271", "\\ngeq", true);
+defineSymbol(math, ams, rel, "\u2270", "\\nleq", true);
+defineSymbol(math, main, spacing, "\u00a0", "\\ ");
+defineSymbol(math, main, spacing, "\u00a0", "~");
+defineSymbol(math, main, spacing, "\u00a0", "\\space"); // Ref: LaTeX Source 2e: \DeclareRobustCommand{\nobreakspace}{%
+
+defineSymbol(math, main, spacing, "\u00a0", "\\nobreakspace");
+defineSymbol(text$1, main, spacing, "\u00a0", "\\ ");
+defineSymbol(text$1, main, spacing, "\u00a0", "~");
+defineSymbol(text$1, main, spacing, "\u00a0", "\\space");
+defineSymbol(text$1, main, spacing, "\u00a0", "\\nobreakspace");
+defineSymbol(math, main, spacing, null, "\\nobreak");
+defineSymbol(math, main, spacing, null, "\\allowbreak");
+defineSymbol(math, main, punct, ",", ",");
+defineSymbol(math, main, punct, ";", ";");
+defineSymbol(math, ams, bin, "\u22bc", "\\barwedge", true);
+defineSymbol(math, ams, bin, "\u22bb", "\\veebar", true);
+defineSymbol(math, main, bin, "\u2299", "\\odot", true);
+defineSymbol(math, main, bin, "\u2295", "\\oplus", true);
+defineSymbol(math, main, bin, "\u2297", "\\otimes", true);
+defineSymbol(math, main, textord, "\u2202", "\\partial", true);
+defineSymbol(math, main, bin, "\u2298", "\\oslash", true);
+defineSymbol(math, ams, bin, "\u229a", "\\circledcirc", true);
+defineSymbol(math, ams, bin, "\u22a1", "\\boxdot", true);
+defineSymbol(math, main, bin, "\u25b3", "\\bigtriangleup");
+defineSymbol(math, main, bin, "\u25bd", "\\bigtriangledown");
+defineSymbol(math, main, bin, "\u2020", "\\dagger");
+defineSymbol(math, main, bin, "\u22c4", "\\diamond");
+defineSymbol(math, main, bin, "\u22c6", "\\star");
+defineSymbol(math, main, bin, "\u25c3", "\\triangleleft");
+defineSymbol(math, main, bin, "\u25b9", "\\triangleright");
+defineSymbol(math, main, open, "{", "\\{");
+defineSymbol(text$1, main, textord, "{", "\\{");
+defineSymbol(text$1, main, textord, "{", "\\textbraceleft");
+defineSymbol(math, main, close, "}", "\\}");
+defineSymbol(text$1, main, textord, "}", "\\}");
+defineSymbol(text$1, main, textord, "}", "\\textbraceright");
+defineSymbol(math, main, open, "{", "\\lbrace");
+defineSymbol(math, main, close, "}", "\\rbrace");
+defineSymbol(math, main, open, "[", "\\lbrack");
+defineSymbol(text$1, main, textord, "[", "\\lbrack");
+defineSymbol(math, main, close, "]", "\\rbrack");
+defineSymbol(text$1, main, textord, "]", "\\rbrack");
+defineSymbol(math, main, open, "(", "\\lparen");
+defineSymbol(math, main, close, ")", "\\rparen");
+defineSymbol(text$1, main, textord, "<", "\\textless"); // in T1 fontenc
+
+defineSymbol(text$1, main, textord, ">", "\\textgreater"); // in T1 fontenc
+
+defineSymbol(math, main, open, "\u230a", "\\lfloor", true);
+defineSymbol(math, main, close, "\u230b", "\\rfloor", true);
+defineSymbol(math, main, open, "\u2308", "\\lceil", true);
+defineSymbol(math, main, close, "\u2309", "\\rceil", true);
+defineSymbol(math, main, textord, "\\", "\\backslash");
+defineSymbol(math, main, textord, "\u2223", "|");
+defineSymbol(math, main, textord, "\u2223", "\\vert");
+defineSymbol(text$1, main, textord, "|", "\\textbar"); // in T1 fontenc
+
+defineSymbol(math, main, textord, "\u2225", "\\|");
+defineSymbol(math, main, textord, "\u2225", "\\Vert");
+defineSymbol(text$1, main, textord, "\u2225", "\\textbardbl");
+defineSymbol(text$1, main, textord, "~", "\\textasciitilde");
+defineSymbol(text$1, main, textord, "\\", "\\textbackslash");
+defineSymbol(text$1, main, textord, "^", "\\textasciicircum");
+defineSymbol(math, main, rel, "\u2191", "\\uparrow", true);
+defineSymbol(math, main, rel, "\u21d1", "\\Uparrow", true);
+defineSymbol(math, main, rel, "\u2193", "\\downarrow", true);
+defineSymbol(math, main, rel, "\u21d3", "\\Downarrow", true);
+defineSymbol(math, main, rel, "\u2195", "\\updownarrow", true);
+defineSymbol(math, main, rel, "\u21d5", "\\Updownarrow", true);
+defineSymbol(math, main, op, "\u2210", "\\coprod");
+defineSymbol(math, main, op, "\u22c1", "\\bigvee");
+defineSymbol(math, main, op, "\u22c0", "\\bigwedge");
+defineSymbol(math, main, op, "\u2a04", "\\biguplus");
+defineSymbol(math, main, op, "\u22c2", "\\bigcap");
+defineSymbol(math, main, op, "\u22c3", "\\bigcup");
+defineSymbol(math, main, op, "\u222b", "\\int");
+defineSymbol(math, main, op, "\u222b", "\\intop");
+defineSymbol(math, main, op, "\u222c", "\\iint");
+defineSymbol(math, main, op, "\u222d", "\\iiint");
+defineSymbol(math, main, op, "\u220f", "\\prod");
+defineSymbol(math, main, op, "\u2211", "\\sum");
+defineSymbol(math, main, op, "\u2a02", "\\bigotimes");
+defineSymbol(math, main, op, "\u2a01", "\\bigoplus");
+defineSymbol(math, main, op, "\u2a00", "\\bigodot");
+defineSymbol(math, main, op, "\u222e", "\\oint");
+defineSymbol(math, main, op, "\u222f", "\\oiint");
+defineSymbol(math, main, op, "\u2230", "\\oiiint");
+defineSymbol(math, main, op, "\u2a06", "\\bigsqcup");
+defineSymbol(math, main, op, "\u222b", "\\smallint");
+defineSymbol(text$1, main, inner, "\u2026", "\\textellipsis");
+defineSymbol(math, main, inner, "\u2026", "\\mathellipsis");
+defineSymbol(text$1, main, inner, "\u2026", "\\ldots", true);
+defineSymbol(math, main, inner, "\u2026", "\\ldots", true);
+defineSymbol(math, main, inner, "\u22ef", "\\@cdots", true);
+defineSymbol(math, main, inner, "\u22f1", "\\ddots", true);
+defineSymbol(math, main, textord, "\u22ee", "\\varvdots"); // \vdots is a macro
+
+defineSymbol(math, main, accent, "\u02ca", "\\acute");
+defineSymbol(math, main, accent, "\u02cb", "\\grave");
+defineSymbol(math, main, accent, "\u00a8", "\\ddot");
+defineSymbol(math, main, accent, "\u007e", "\\tilde");
+defineSymbol(math, main, accent, "\u02c9", "\\bar");
+defineSymbol(math, main, accent, "\u02d8", "\\breve");
+defineSymbol(math, main, accent, "\u02c7", "\\check");
+defineSymbol(math, main, accent, "\u005e", "\\hat");
+defineSymbol(math, main, accent, "\u20d7", "\\vec");
+defineSymbol(math, main, accent, "\u02d9", "\\dot");
+defineSymbol(math, main, accent, "\u02da", "\\mathring");
+defineSymbol(math, main, mathord, "\u0131", "\\imath", true);
+defineSymbol(math, main, mathord, "\u0237", "\\jmath", true);
+defineSymbol(text$1, main, textord, "\u0131", "\\i", true);
+defineSymbol(text$1, main, textord, "\u0237", "\\j", true);
+defineSymbol(text$1, main, textord, "\u00df", "\\ss", true);
+defineSymbol(text$1, main, textord, "\u00e6", "\\ae", true);
+defineSymbol(text$1, main, textord, "\u00e6", "\\ae", true);
+defineSymbol(text$1, main, textord, "\u0153", "\\oe", true);
+defineSymbol(text$1, main, textord, "\u00f8", "\\o", true);
+defineSymbol(text$1, main, textord, "\u00c6", "\\AE", true);
+defineSymbol(text$1, main, textord, "\u0152", "\\OE", true);
+defineSymbol(text$1, main, textord, "\u00d8", "\\O", true);
+defineSymbol(text$1, main, accent, "\u02ca", "\\'"); // acute
+
+defineSymbol(text$1, main, accent, "\u02cb", "\\`"); // grave
+
+defineSymbol(text$1, main, accent, "\u02c6", "\\^"); // circumflex
+
+defineSymbol(text$1, main, accent, "\u02dc", "\\~"); // tilde
+
+defineSymbol(text$1, main, accent, "\u02c9", "\\="); // macron
+
+defineSymbol(text$1, main, accent, "\u02d8", "\\u"); // breve
+
+defineSymbol(text$1, main, accent, "\u02d9", "\\."); // dot above
+
+defineSymbol(text$1, main, accent, "\u02da", "\\r"); // ring above
+
+defineSymbol(text$1, main, accent, "\u02c7", "\\v"); // caron
+
+defineSymbol(text$1, main, accent, "\u00a8", '\\"'); // diaresis
+
+defineSymbol(text$1, main, accent, "\u02dd", "\\H"); // double acute
+
+defineSymbol(text$1, main, accent, "\u25ef", "\\textcircled"); // \bigcirc glyph
+// These ligatures are detected and created in Parser.js's `formLigatures`.
+
+const ligatures = {
+  "--": true,
+  "---": true,
+  "``": true,
+  "''": true
+};
+defineSymbol(text$1, main, textord, "\u2013", "--");
+defineSymbol(text$1, main, textord, "\u2013", "\\textendash");
+defineSymbol(text$1, main, textord, "\u2014", "---");
+defineSymbol(text$1, main, textord, "\u2014", "\\textemdash");
+defineSymbol(text$1, main, textord, "\u2018", "`");
+defineSymbol(text$1, main, textord, "\u2018", "\\textquoteleft");
+defineSymbol(text$1, main, textord, "\u2019", "'");
+defineSymbol(text$1, main, textord, "\u2019", "\\textquoteright");
+defineSymbol(text$1, main, textord, "\u201c", "``");
+defineSymbol(text$1, main, textord, "\u201c", "\\textquotedblleft");
+defineSymbol(text$1, main, textord, "\u201d", "''");
+defineSymbol(text$1, main, textord, "\u201d", "\\textquotedblright"); //  \degree from gensymb package
+
+defineSymbol(math, main, textord, "\u00b0", "\\degree", true);
+defineSymbol(text$1, main, textord, "\u00b0", "\\degree"); // \textdegree from inputenc package
+
+defineSymbol(text$1, main, textord, "\u00b0", "\\textdegree", true); // TODO: In LaTeX, \pounds can generate a different character in text and math
+// mode, but among our fonts, only Main-Italic defines this character "163".
+
+defineSymbol(math, main, mathord, "\u00a3", "\\pounds");
+defineSymbol(math, main, mathord, "\u00a3", "\\mathsterling", true);
+defineSymbol(text$1, main, mathord, "\u00a3", "\\pounds");
+defineSymbol(text$1, main, mathord, "\u00a3", "\\textsterling", true);
+defineSymbol(math, ams, textord, "\u2720", "\\maltese");
+defineSymbol(text$1, ams, textord, "\u2720", "\\maltese");
+defineSymbol(text$1, main, spacing, "\u00a0", "\\ ");
+defineSymbol(text$1, main, spacing, "\u00a0", " ");
+defineSymbol(text$1, main, spacing, "\u00a0", "~"); // There are lots of symbols which are the same, so we add them in afterwards.
+// All of these are textords in math mode
+
+const mathTextSymbols = "0123456789/@.\"";
+
+for (let i = 0; i < mathTextSymbols.length; i++) {
+  const ch = mathTextSymbols.charAt(i);
+  defineSymbol(math, main, textord, ch, ch);
+} // All of these are textords in text mode
+
+
+const textSymbols = "0123456789!@*()-=+[]<>|\";:?/.,";
+
+for (let i = 0; i < textSymbols.length; i++) {
+  const ch = textSymbols.charAt(i);
+  defineSymbol(text$1, main, textord, ch, ch);
+} // All of these are textords in text mode, and mathords in math mode
+
+
+const letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+
+for (let i = 0; i < letters.length; i++) {
+  const ch = letters.charAt(i);
+  defineSymbol(math, main, mathord, ch, ch);
+  defineSymbol(text$1, main, textord, ch, ch);
+} // Blackboard bold and script letters in Unicode range
+
+
+defineSymbol(math, ams, textord, "C", "\u2102"); // blackboard bold
+
+defineSymbol(text$1, ams, textord, "C", "\u2102");
+defineSymbol(math, ams, textord, "H", "\u210D");
+defineSymbol(text$1, ams, textord, "H", "\u210D");
+defineSymbol(math, ams, textord, "N", "\u2115");
+defineSymbol(text$1, ams, textord, "N", "\u2115");
+defineSymbol(math, ams, textord, "P", "\u2119");
+defineSymbol(text$1, ams, textord, "P", "\u2119");
+defineSymbol(math, ams, textord, "Q", "\u211A");
+defineSymbol(text$1, ams, textord, "Q", "\u211A");
+defineSymbol(math, ams, textord, "R", "\u211D");
+defineSymbol(text$1, ams, textord, "R", "\u211D");
+defineSymbol(math, ams, textord, "Z", "\u2124");
+defineSymbol(text$1, ams, textord, "Z", "\u2124");
+defineSymbol(math, main, mathord, "h", "\u210E"); // italic h, Planck constant
+
+defineSymbol(text$1, main, mathord, "h", "\u210E"); // The next loop loads wide (surrogate pair) characters.
+// We support some letters in the Unicode range U+1D400 to U+1D7FF,
+// Mathematical Alphanumeric Symbols.
+// Some editors do not deal well with wide characters. So don't write the
+// string into this file. Instead, create the string from the surrogate pair.
+
+let wideChar = "";
+
+for (let i = 0; i < letters.length; i++) {
+  const ch = letters.charAt(i); // The hex numbers in the next line are a surrogate pair.
+  // 0xD835 is the high surrogate for all letters in the range we support.
+  // 0xDC00 is the low surrogate for bold A.
+
+  wideChar = String.fromCharCode(0xD835, 0xDC00 + i); // A-Z a-z bold
+
+  defineSymbol(math, main, mathord, ch, wideChar);
+  defineSymbol(text$1, main, textord, ch, wideChar);
+  wideChar = String.fromCharCode(0xD835, 0xDC34 + i); // A-Z a-z italic
+
+  defineSymbol(math, main, mathord, ch, wideChar);
+  defineSymbol(text$1, main, textord, ch, wideChar);
+  wideChar = String.fromCharCode(0xD835, 0xDC68 + i); // A-Z a-z bold italic
+
+  defineSymbol(math, main, mathord, ch, wideChar);
+  defineSymbol(text$1, main, textord, ch, wideChar);
+  wideChar = String.fromCharCode(0xD835, 0xDD04 + i); // A-Z a-z Fractur
+
+  defineSymbol(math, main, mathord, ch, wideChar);
+  defineSymbol(text$1, main, textord, ch, wideChar);
+  wideChar = String.fromCharCode(0xD835, 0xDDA0 + i); // A-Z a-z sans-serif
+
+  defineSymbol(math, main, mathord, ch, wideChar);
+  defineSymbol(text$1, main, textord, ch, wideChar);
+  wideChar = String.fromCharCode(0xD835, 0xDDD4 + i); // A-Z a-z sans bold
+
+  defineSymbol(math, main, mathord, ch, wideChar);
+  defineSymbol(text$1, main, textord, ch, wideChar);
+  wideChar = String.fromCharCode(0xD835, 0xDE08 + i); // A-Z a-z sans italic
+
+  defineSymbol(math, main, mathord, ch, wideChar);
+  defineSymbol(text$1, main, textord, ch, wideChar);
+  wideChar = String.fromCharCode(0xD835, 0xDE70 + i); // A-Z a-z monospace
+
+  defineSymbol(math, main, mathord, ch, wideChar);
+  defineSymbol(text$1, main, textord, ch, wideChar);
+
+  if (i < 26) {
+    // KaTeX fonts have only capital letters for blackboard bold and script.
+    // See exception for k below.
+    wideChar = String.fromCharCode(0xD835, 0xDD38 + i); // A-Z double struck
+
+    defineSymbol(math, main, mathord, ch, wideChar);
+    defineSymbol(text$1, main, textord, ch, wideChar);
+    wideChar = String.fromCharCode(0xD835, 0xDC9C + i); // A-Z script
+
+    defineSymbol(math, main, mathord, ch, wideChar);
+    defineSymbol(text$1, main, textord, ch, wideChar);
+  } // TODO: Add bold script when it is supported by a KaTeX font.
+
+} // "k" is the only double struck lower case letter in the KaTeX fonts.
+
+
+wideChar = String.fromCharCode(0xD835, 0xDD5C); // k double struck
+
+defineSymbol(math, main, mathord, "k", wideChar);
+defineSymbol(text$1, main, textord, "k", wideChar); // Next, some wide character numerals
+
+for (let i = 0; i < 10; i++) {
+  const ch = i.toString();
+  wideChar = String.fromCharCode(0xD835, 0xDFCE + i); // 0-9 bold
+
+  defineSymbol(math, main, mathord, ch, wideChar);
+  defineSymbol(text$1, main, textord, ch, wideChar);
+  wideChar = String.fromCharCode(0xD835, 0xDFE2 + i); // 0-9 sans serif
+
+  defineSymbol(math, main, mathord, ch, wideChar);
+  defineSymbol(text$1, main, textord, ch, wideChar);
+  wideChar = String.fromCharCode(0xD835, 0xDFEC + i); // 0-9 bold sans
+
+  defineSymbol(math, main, mathord, ch, wideChar);
+  defineSymbol(text$1, main, textord, ch, wideChar);
+  wideChar = String.fromCharCode(0xD835, 0xDFF6 + i); // 0-9 monospace
+
+  defineSymbol(math, main, mathord, ch, wideChar);
+  defineSymbol(text$1, main, textord, ch, wideChar);
+} // We add these Latin-1 letters as symbols for backwards-compatibility,
+// but they are not actually in the font, nor are they supported by the
+// Unicode accent mechanism, so they fall back to Times font and look ugly.
+// TODO(edemaine): Fix this.
+
+
+const extraLatin = "ÇÐÞçþ";
+
+for (let i = 0; i < extraLatin.length; i++) {
+  const ch = extraLatin.charAt(i);
+  defineSymbol(math, main, mathord, ch, ch);
+  defineSymbol(text$1, main, textord, ch, ch);
+}
+
+defineSymbol(text$1, main, textord, "ð", "ð"); // Unicode versions of existing characters
+
+defineSymbol(text$1, main, textord, "\u2013", "–");
+defineSymbol(text$1, main, textord, "\u2014", "—");
+defineSymbol(text$1, main, textord, "\u2018", "‘");
+defineSymbol(text$1, main, textord, "\u2019", "’");
+defineSymbol(text$1, main, textord, "\u201c", "“");
+defineSymbol(text$1, main, textord, "\u201d", "”");
+
+/**
+ * This file provides support for Unicode range U+1D400 to U+1D7FF,
+ * Mathematical Alphanumeric Symbols.
+ *
+ * Function wideCharacterFont takes a wide character as input and returns
+ * the font information necessary to render it properly.
+ */
+/**
+ * Data below is from https://www.unicode.org/charts/PDF/U1D400.pdf
+ * That document sorts characters into groups by font type, say bold or italic.
+ *
+ * In the arrays below, each subarray consists three elements:
+ *      * The CSS class of that group when in math mode.
+ *      * The CSS class of that group when in text mode.
+ *      * The font name, so that KaTeX can get font metrics.
+ */
+
+const wideLatinLetterData = [["mathbf", "textbf", "Main-Bold"], // A-Z bold upright
+["mathbf", "textbf", "Main-Bold"], // a-z bold upright
+["mathdefault", "textit", "Math-Italic"], // A-Z italic
+["mathdefault", "textit", "Math-Italic"], // a-z italic
+["boldsymbol", "boldsymbol", "Main-BoldItalic"], // A-Z bold italic
+["boldsymbol", "boldsymbol", "Main-BoldItalic"], // a-z bold italic
+// Map fancy A-Z letters to script, not calligraphic.
+// This aligns with unicode-math and math fonts (except Cambria Math).
+["mathscr", "textscr", "Script-Regular"], // A-Z script
+["", "", ""], // a-z script.  No font
+["", "", ""], // A-Z bold script. No font
+["", "", ""], // a-z bold script. No font
+["mathfrak", "textfrak", "Fraktur-Regular"], // A-Z Fraktur
+["mathfrak", "textfrak", "Fraktur-Regular"], // a-z Fraktur
+["mathbb", "textbb", "AMS-Regular"], // A-Z double-struck
+["mathbb", "textbb", "AMS-Regular"], // k double-struck
+["", "", ""], // A-Z bold Fraktur No font metrics
+["", "", ""], // a-z bold Fraktur.   No font.
+["mathsf", "textsf", "SansSerif-Regular"], // A-Z sans-serif
+["mathsf", "textsf", "SansSerif-Regular"], // a-z sans-serif
+["mathboldsf", "textboldsf", "SansSerif-Bold"], // A-Z bold sans-serif
+["mathboldsf", "textboldsf", "SansSerif-Bold"], // a-z bold sans-serif
+["mathitsf", "textitsf", "SansSerif-Italic"], // A-Z italic sans-serif
+["mathitsf", "textitsf", "SansSerif-Italic"], // a-z italic sans-serif
+["", "", ""], // A-Z bold italic sans. No font
+["", "", ""], // a-z bold italic sans. No font
+["mathtt", "texttt", "Typewriter-Regular"], // A-Z monospace
+["mathtt", "texttt", "Typewriter-Regular"]];
+const wideNumeralData = [["mathbf", "textbf", "Main-Bold"], // 0-9 bold
+["", "", ""], // 0-9 double-struck. No KaTeX font.
+["mathsf", "textsf", "SansSerif-Regular"], // 0-9 sans-serif
+["mathboldsf", "textboldsf", "SansSerif-Bold"], // 0-9 bold sans-serif
+["mathtt", "texttt", "Typewriter-Regular"]];
+const wideCharacterFont = function wideCharacterFont(wideChar, mode) {
+  // IE doesn't support codePointAt(). So work with the surrogate pair.
+  const H = wideChar.charCodeAt(0); // high surrogate
+
+  const L = wideChar.charCodeAt(1); // low surrogate
+
+  const codePoint = (H - 0xD800) * 0x400 + (L - 0xDC00) + 0x10000;
+  const j = mode === "math" ? 0 : 1; // column index for CSS class.
+
+  if (0x1D400 <= codePoint && codePoint < 0x1D6A4) {
+    // wideLatinLetterData contains exactly 26 chars on each row.
+    // So we can calculate the relevant row. No traverse necessary.
+    const i = Math.floor((codePoint - 0x1D400) / 26);
+    return [wideLatinLetterData[i][2], wideLatinLetterData[i][j]];
+  } else if (0x1D7CE <= codePoint && codePoint <= 0x1D7FF) {
+    // Numerals, ten per row.
+    const i = Math.floor((codePoint - 0x1D7CE) / 10);
+    return [wideNumeralData[i][2], wideNumeralData[i][j]];
+  } else if (codePoint === 0x1D6A5 || codePoint === 0x1D6A6) {
+    // dotless i or j
+    return [wideLatinLetterData[0][2], wideLatinLetterData[0][j]];
+  } else if (0x1D6A6 < codePoint && codePoint < 0x1D7CE) {
+    // Greek letters. Not supported, yet.
+    return ["", ""];
+  } else {
+    // We don't support any wide characters outside 1D400–1D7FF.
+    throw new ParseError("Unsupported character: " + wideChar);
+  }
+};
+
+/**
+ * This file contains information about the options that the Parser carries
+ * around with it while parsing. Data is held in an `Options` object, and when
+ * recursing, a new `Options` object can be created with the `.with*` and
+ * `.reset` functions.
+ */
+const sizeStyleMap = [// Each element contains [textsize, scriptsize, scriptscriptsize].
+// The size mappings are taken from TeX with \normalsize=10pt.
+[1, 1, 1], // size1: [5, 5, 5]              \tiny
+[2, 1, 1], // size2: [6, 5, 5]
+[3, 1, 1], // size3: [7, 5, 5]              \scriptsize
+[4, 2, 1], // size4: [8, 6, 5]              \footnotesize
+[5, 2, 1], // size5: [9, 6, 5]              \small
+[6, 3, 1], // size6: [10, 7, 5]             \normalsize
+[7, 4, 2], // size7: [12, 8, 6]             \large
+[8, 6, 3], // size8: [14.4, 10, 7]          \Large
+[9, 7, 6], // size9: [17.28, 12, 10]        \LARGE
+[10, 8, 7], // size10: [20.74, 14.4, 12]     \huge
+[11, 10, 9]];
+const sizeMultipliers = [// fontMetrics.js:getGlobalMetrics also uses size indexes, so if
+// you change size indexes, change that function.
+0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.2, 1.44, 1.728, 2.074, 2.488];
+
+const sizeAtStyle = function sizeAtStyle(size, style) {
+  return style.size < 2 ? size : sizeStyleMap[size - 1][style.size - 1];
+}; // In these types, "" (empty string) means "no change".
+
+
+/**
+ * This is the main options class. It contains the current style, size, color,
+ * and font.
+ *
+ * Options objects should not be modified. To create a new Options with
+ * different properties, call a `.having*` method.
+ */
+class Options {
+  // A font family applies to a group of fonts (i.e. SansSerif), while a font
+  // represents a specific font (i.e. SansSerif Bold).
+  // See: https://tex.stackexchange.com/questions/22350/difference-between-textrm-and-mathrm
+
+  /**
+   * The base size index.
+   */
+  constructor(data) {
+    this.style = void 0;
+    this.color = void 0;
+    this.size = void 0;
+    this.textSize = void 0;
+    this.phantom = void 0;
+    this.font = void 0;
+    this.fontFamily = void 0;
+    this.fontWeight = void 0;
+    this.fontShape = void 0;
+    this.sizeMultiplier = void 0;
+    this.maxSize = void 0;
+    this.minRuleThickness = void 0;
+    this._fontMetrics = void 0;
+    this.style = data.style;
+    this.color = data.color;
+    this.size = data.size || Options.BASESIZE;
+    this.textSize = data.textSize || this.size;
+    this.phantom = !!data.phantom;
+    this.font = data.font || "";
+    this.fontFamily = data.fontFamily || "";
+    this.fontWeight = data.fontWeight || '';
+    this.fontShape = data.fontShape || '';
+    this.sizeMultiplier = sizeMultipliers[this.size - 1];
+    this.maxSize = data.maxSize;
+    this.minRuleThickness = data.minRuleThickness;
+    this._fontMetrics = undefined;
+  }
+  /**
+   * Returns a new options object with the same properties as "this".  Properties
+   * from "extension" will be copied to the new options object.
+   */
+
+
+  extend(extension) {
+    const data = {
+      style: this.style,
+      size: this.size,
+      textSize: this.textSize,
+      color: this.color,
+      phantom: this.phantom,
+      font: this.font,
+      fontFamily: this.fontFamily,
+      fontWeight: this.fontWeight,
+      fontShape: this.fontShape,
+      maxSize: this.maxSize,
+      minRuleThickness: this.minRuleThickness
+    };
+
+    for (const key in extension) {
+      if (extension.hasOwnProperty(key)) {
+        data[key] = extension[key];
+      }
+    }
+
+    return new Options(data);
+  }
+  /**
+   * Return an options object with the given style. If `this.style === style`,
+   * returns `this`.
+   */
+
+
+  havingStyle(style) {
+    if (this.style === style) {
+      return this;
+    } else {
+      return this.extend({
+        style: style,
+        size: sizeAtStyle(this.textSize, style)
+      });
+    }
+  }
+  /**
+   * Return an options object with a cramped version of the current style. If
+   * the current style is cramped, returns `this`.
+   */
+
+
+  havingCrampedStyle() {
+    return this.havingStyle(this.style.cramp());
+  }
+  /**
+   * Return an options object with the given size and in at least `\textstyle`.
+   * Returns `this` if appropriate.
+   */
+
+
+  havingSize(size) {
+    if (this.size === size && this.textSize === size) {
+      return this;
+    } else {
+      return this.extend({
+        style: this.style.text(),
+        size: size,
+        textSize: size,
+        sizeMultiplier: sizeMultipliers[size - 1]
+      });
+    }
+  }
+  /**
+   * Like `this.havingSize(BASESIZE).havingStyle(style)`. If `style` is omitted,
+   * changes to at least `\textstyle`.
+   */
+
+
+  havingBaseStyle(style) {
+    style = style || this.style.text();
+    const wantSize = sizeAtStyle(Options.BASESIZE, style);
+
+    if (this.size === wantSize && this.textSize === Options.BASESIZE && this.style === style) {
+      return this;
+    } else {
+      return this.extend({
+        style: style,
+        size: wantSize
+      });
+    }
+  }
+  /**
+   * Remove the effect of sizing changes such as \Huge.
+   * Keep the effect of the current style, such as \scriptstyle.
+   */
+
+
+  havingBaseSizing() {
+    let size;
+
+    switch (this.style.id) {
+      case 4:
+      case 5:
+        size = 3; // normalsize in scriptstyle
+
+        break;
+
+      case 6:
+      case 7:
+        size = 1; // normalsize in scriptscriptstyle
+
+        break;
+
+      default:
+        size = 6;
+      // normalsize in textstyle or displaystyle
+    }
+
+    return this.extend({
+      style: this.style.text(),
+      size: size
+    });
+  }
+  /**
+   * Create a new options object with the given color.
+   */
+
+
+  withColor(color) {
+    return this.extend({
+      color: color
+    });
+  }
+  /**
+   * Create a new options object with "phantom" set to true.
+   */
+
+
+  withPhantom() {
+    return this.extend({
+      phantom: true
+    });
+  }
+  /**
+   * Creates a new options object with the given math font or old text font.
+   * @type {[type]}
+   */
+
+
+  withFont(font) {
+    return this.extend({
+      font
+    });
+  }
+  /**
+   * Create a new options objects with the given fontFamily.
+   */
+
+
+  withTextFontFamily(fontFamily) {
+    return this.extend({
+      fontFamily,
+      font: ""
+    });
+  }
+  /**
+   * Creates a new options object with the given font weight
+   */
+
+
+  withTextFontWeight(fontWeight) {
+    return this.extend({
+      fontWeight,
+      font: ""
+    });
+  }
+  /**
+   * Creates a new options object with the given font weight
+   */
+
+
+  withTextFontShape(fontShape) {
+    return this.extend({
+      fontShape,
+      font: ""
+    });
+  }
+  /**
+   * Return the CSS sizing classes required to switch from enclosing options
+   * `oldOptions` to `this`. Returns an array of classes.
+   */
+
+
+  sizingClasses(oldOptions) {
+    if (oldOptions.size !== this.size) {
+      return ["sizing", "reset-size" + oldOptions.size, "size" + this.size];
+    } else {
+      return [];
+    }
+  }
+  /**
+   * Return the CSS sizing classes required to switch to the base size. Like
+   * `this.havingSize(BASESIZE).sizingClasses(this)`.
+   */
+
+
+  baseSizingClasses() {
+    if (this.size !== Options.BASESIZE) {
+      return ["sizing", "reset-size" + this.size, "size" + Options.BASESIZE];
+    } else {
+      return [];
+    }
+  }
+  /**
+   * Return the font metrics for this size.
+   */
+
+
+  fontMetrics() {
+    if (!this._fontMetrics) {
+      this._fontMetrics = getGlobalMetrics(this.size);
+    }
+
+    return this._fontMetrics;
+  }
+  /**
+   * Gets the CSS color of the current options object
+   */
+
+
+  getColor() {
+    if (this.phantom) {
+      return "transparent";
+    } else {
+      return this.color;
+    }
+  }
+
+}
+
+Options.BASESIZE = 6;
+
+/**
+ * This file does conversion between units.  In particular, it provides
+ * calculateSize to convert other units into ems.
+ */
+// Thus, multiplying a length by this number converts the length from units
+// into pts.  Dividing the result by ptPerEm gives the number of ems
+// *assuming* a font size of ptPerEm (normal size, normal style).
+
+const ptPerUnit = {
+  // https://en.wikibooks.org/wiki/LaTeX/Lengths and
+  // https://tex.stackexchange.com/a/8263
+  "pt": 1,
+  // TeX point
+  "mm": 7227 / 2540,
+  // millimeter
+  "cm": 7227 / 254,
+  // centimeter
+  "in": 72.27,
+  // inch
+  "bp": 803 / 800,
+  // big (PostScript) points
+  "pc": 12,
+  // pica
+  "dd": 1238 / 1157,
+  // didot
+  "cc": 14856 / 1157,
+  // cicero (12 didot)
+  "nd": 685 / 642,
+  // new didot
+  "nc": 1370 / 107,
+  // new cicero (12 new didot)
+  "sp": 1 / 65536,
+  // scaled point (TeX's internal smallest unit)
+  // https://tex.stackexchange.com/a/41371
+  "px": 803 / 800 // \pdfpxdimen defaults to 1 bp in pdfTeX and LuaTeX
+
+}; // Dictionary of relative units, for fast validity testing.
+
+const relativeUnit = {
+  "ex": true,
+  "em": true,
+  "mu": true
+};
+
+/**
+ * Determine whether the specified unit (either a string defining the unit
+ * or a "size" parse node containing a unit field) is valid.
+ */
+const validUnit = function validUnit(unit) {
+  if (typeof unit !== "string") {
+    unit = unit.unit;
+  }
+
+  return unit in ptPerUnit || unit in relativeUnit || unit === "ex";
+};
+/*
+ * Convert a "size" parse node (with numeric "number" and string "unit" fields,
+ * as parsed by functions.js argType "size") into a CSS em value for the
+ * current style/scale.  `options` gives the current options.
+ */
+
+const calculateSize = function calculateSize(sizeValue, options) {
+  let scale;
+
+  if (sizeValue.unit in ptPerUnit) {
+    // Absolute units
+    scale = ptPerUnit[sizeValue.unit] // Convert unit to pt
+    / options.fontMetrics().ptPerEm // Convert pt to CSS em
+    / options.sizeMultiplier; // Unscale to make absolute units
+  } else if (sizeValue.unit === "mu") {
+    // `mu` units scale with scriptstyle/scriptscriptstyle.
+    scale = options.fontMetrics().cssEmPerMu;
+  } else {
+    // Other relative units always refer to the *textstyle* font
+    // in the current size.
+    let unitOptions;
+
+    if (options.style.isTight()) {
+      // isTight() means current style is script/scriptscript.
+      unitOptions = options.havingStyle(options.style.text());
+    } else {
+      unitOptions = options;
+    } // TODO: In TeX these units are relative to the quad of the current
+    // *text* font, e.g. cmr10. KaTeX instead uses values from the
+    // comparably-sized *Computer Modern symbol* font. At 10pt, these
+    // match. At 7pt and 5pt, they differ: cmr7=1.138894, cmsy7=1.170641;
+    // cmr5=1.361133, cmsy5=1.472241. Consider $\scriptsize a\kern1emb$.
+    // TeX \showlists shows a kern of 1.13889 * fontsize;
+    // KaTeX shows a kern of 1.171 * fontsize.
+
+
+    if (sizeValue.unit === "ex") {
+      scale = unitOptions.fontMetrics().xHeight;
+    } else if (sizeValue.unit === "em") {
+      scale = unitOptions.fontMetrics().quad;
+    } else {
+      throw new ParseError("Invalid unit: '" + sizeValue.unit + "'");
+    }
+
+    if (unitOptions !== options) {
+      scale *= unitOptions.sizeMultiplier / options.sizeMultiplier;
+    }
+  }
+
+  return Math.min(sizeValue.number * scale, options.maxSize);
+};
+
+/* eslint no-console:0 */
+// The following have to be loaded from Main-Italic font, using class mathit
+const mathitLetters = ["\\imath", "ı", // dotless i
+"\\jmath", "ȷ", // dotless j
+"\\pounds", "\\mathsterling", "\\textsterling", "£"];
+/**
+ * Looks up the given symbol in fontMetrics, after applying any symbol
+ * replacements defined in symbol.js
+ */
+
+const lookupSymbol = function lookupSymbol(value, // TODO(#963): Use a union type for this.
+fontName, mode) {
+  // Replace the value with its replaced value from symbol.js
+  if (symbols[mode][value] && symbols[mode][value].replace) {
+    value = symbols[mode][value].replace;
+  }
+
+  return {
+    value: value,
+    metrics: getCharacterMetrics(value, fontName, mode)
+  };
+};
+/**
+ * Makes a symbolNode after translation via the list of symbols in symbols.js.
+ * Correctly pulls out metrics for the character, and optionally takes a list of
+ * classes to be attached to the node.
+ *
+ * TODO: make argument order closer to makeSpan
+ * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which
+ * should if present come first in `classes`.
+ * TODO(#953): Make `options` mandatory and always pass it in.
+ */
+
+
+const makeSymbol = function makeSymbol(value, fontName, mode, options, classes) {
+  const lookup = lookupSymbol(value, fontName, mode);
+  const metrics = lookup.metrics;
+  value = lookup.value;
+  let symbolNode;
+
+  if (metrics) {
+    let italic = metrics.italic;
+
+    if (mode === "text" || options && options.font === "mathit") {
+      italic = 0;
+    }
+
+    symbolNode = new SymbolNode(value, metrics.height, metrics.depth, italic, metrics.skew, metrics.width, classes);
+  } else {
+    // TODO(emily): Figure out a good way to only print this in development
+    typeof console !== "undefined" && console.warn("No character metrics " + `for '${value}' in style '${fontName}' and mode '${mode}'`);
+    symbolNode = new SymbolNode(value, 0, 0, 0, 0, 0, classes);
+  }
+
+  if (options) {
+    symbolNode.maxFontSize = options.sizeMultiplier;
+
+    if (options.style.isTight()) {
+      symbolNode.classes.push("mtight");
+    }
+
+    const color = options.getColor();
+
+    if (color) {
+      symbolNode.style.color = color;
+    }
+  }
+
+  return symbolNode;
+};
+/**
+ * Makes a symbol in Main-Regular or AMS-Regular.
+ * Used for rel, bin, open, close, inner, and punct.
+ */
+
+
+const mathsym = function mathsym(value, mode, options, classes) {
+  if (classes === void 0) {
+    classes = [];
+  }
+
+  // Decide what font to render the symbol in by its entry in the symbols
+  // table.
+  // Have a special case for when the value = \ because the \ is used as a
+  // textord in unsupported command errors but cannot be parsed as a regular
+  // text ordinal and is therefore not present as a symbol in the symbols
+  // table for text, as well as a special case for boldsymbol because it
+  // can be used for bold + and -
+  if (options.font === "boldsymbol" && lookupSymbol(value, "Main-Bold", mode).metrics) {
+    return makeSymbol(value, "Main-Bold", mode, options, classes.concat(["mathbf"]));
+  } else if (value === "\\" || symbols[mode][value].font === "main") {
+    return makeSymbol(value, "Main-Regular", mode, options, classes);
+  } else {
+    return makeSymbol(value, "AMS-Regular", mode, options, classes.concat(["amsrm"]));
+  }
+};
+/**
+ * Determines which of the two font names (Main-Italic and Math-Italic) and
+ * corresponding style tags (maindefault or mathit) to use for default math font,
+ * depending on the symbol.
+ */
+
+
+const mathdefault = function mathdefault(value, mode, options, classes) {
+  if (/[0-9]/.test(value.charAt(0)) || // glyphs for \imath and \jmath do not exist in Math-Italic so we
+  // need to use Main-Italic instead
+  utils.contains(mathitLetters, value)) {
+    return {
+      fontName: "Main-Italic",
+      fontClass: "mathit"
+    };
+  } else {
+    return {
+      fontName: "Math-Italic",
+      fontClass: "mathdefault"
+    };
+  }
+};
+/**
+ * Determines which of the font names (Main-Italic, Math-Italic, and Caligraphic)
+ * and corresponding style tags (mathit, mathdefault, or mathcal) to use for font
+ * "mathnormal", depending on the symbol.  Use this function instead of fontMap for
+ * font "mathnormal".
+ */
+
+
+const mathnormal = function mathnormal(value, mode, options, classes) {
+  if (utils.contains(mathitLetters, value)) {
+    return {
+      fontName: "Main-Italic",
+      fontClass: "mathit"
+    };
+  } else if (/[0-9]/.test(value.charAt(0))) {
+    return {
+      fontName: "Caligraphic-Regular",
+      fontClass: "mathcal"
+    };
+  } else {
+    return {
+      fontName: "Math-Italic",
+      fontClass: "mathdefault"
+    };
+  }
+};
+/**
+ * Determines which of the two font names (Main-Bold and Math-BoldItalic) and
+ * corresponding style tags (mathbf or boldsymbol) to use for font "boldsymbol",
+ * depending on the symbol.  Use this function instead of fontMap for font
+ * "boldsymbol".
+ */
+
+
+const boldsymbol = function boldsymbol(value, mode, options, classes) {
+  if (lookupSymbol(value, "Math-BoldItalic", mode).metrics) {
+    return {
+      fontName: "Math-BoldItalic",
+      fontClass: "boldsymbol"
+    };
+  } else {
+    // Some glyphs do not exist in Math-BoldItalic so we need to use
+    // Main-Bold instead.
+    return {
+      fontName: "Main-Bold",
+      fontClass: "mathbf"
+    };
+  }
+};
+/**
+ * Makes either a mathord or textord in the correct font and color.
+ */
+
+
+const makeOrd = function makeOrd(group, options, type) {
+  const mode = group.mode;
+  const text = group.text;
+  const classes = ["mord"]; // Math mode or Old font (i.e. \rm)
+
+  const isFont = mode === "math" || mode === "text" && options.font;
+  const fontOrFamily = isFont ? options.font : options.fontFamily;
+
+  if (text.charCodeAt(0) === 0xD835) {
+    // surrogate pairs get special treatment
+    const _wideCharacterFont = wideCharacterFont(text, mode),
+          wideFontName = _wideCharacterFont[0],
+          wideFontClass = _wideCharacterFont[1];
+
+    return makeSymbol(text, wideFontName, mode, options, classes.concat(wideFontClass));
+  } else if (fontOrFamily) {
+    let fontName;
+    let fontClasses;
+
+    if (fontOrFamily === "boldsymbol" || fontOrFamily === "mathnormal") {
+      const fontData = fontOrFamily === "boldsymbol" ? boldsymbol(text, mode, options, classes) : mathnormal(text, mode, options, classes);
+      fontName = fontData.fontName;
+      fontClasses = [fontData.fontClass];
+    } else if (utils.contains(mathitLetters, text)) {
+      fontName = "Main-Italic";
+      fontClasses = ["mathit"];
+    } else if (isFont) {
+      fontName = fontMap[fontOrFamily].fontName;
+      fontClasses = [fontOrFamily];
+    } else {
+      fontName = retrieveTextFontName(fontOrFamily, options.fontWeight, options.fontShape);
+      fontClasses = [fontOrFamily, options.fontWeight, options.fontShape];
+    }
+
+    if (lookupSymbol(text, fontName, mode).metrics) {
+      return makeSymbol(text, fontName, mode, options, classes.concat(fontClasses));
+    } else if (ligatures.hasOwnProperty(text) && fontName.substr(0, 10) === "Typewriter") {
+      // Deconstruct ligatures in monospace fonts (\texttt, \tt).
+      const parts = [];
+
+      for (let i = 0; i < text.length; i++) {
+        parts.push(makeSymbol(text[i], fontName, mode, options, classes.concat(fontClasses)));
+      }
+
+      return makeFragment(parts);
+    }
+  } // Makes a symbol in the default font for mathords and textords.
+
+
+  if (type === "mathord") {
+    const fontLookup = mathdefault(text, mode, options, classes);
+    return makeSymbol(text, fontLookup.fontName, mode, options, classes.concat([fontLookup.fontClass]));
+  } else if (type === "textord") {
+    const font = symbols[mode][text] && symbols[mode][text].font;
+
+    if (font === "ams") {
+      const fontName = retrieveTextFontName("amsrm", options.fontWeight, options.fontShape);
+      return makeSymbol(text, fontName, mode, options, classes.concat("amsrm", options.fontWeight, options.fontShape));
+    } else if (font === "main" || !font) {
+      const fontName = retrieveTextFontName("textrm", options.fontWeight, options.fontShape);
+      return makeSymbol(text, fontName, mode, options, classes.concat(options.fontWeight, options.fontShape));
+    } else {
+      // fonts added by plugins
+      const fontName = retrieveTextFontName(font, options.fontWeight, options.fontShape); // We add font name as a css class
+
+      return makeSymbol(text, fontName, mode, options, classes.concat(fontName, options.fontWeight, options.fontShape));
+    }
+  } else {
+    throw new Error("unexpected type: " + type + " in makeOrd");
+  }
+};
+/**
+ * Returns true if subsequent symbolNodes have the same classes, skew, maxFont,
+ * and styles.
+ */
+
+
+const canCombine = (prev, next) => {
+  if (createClass(prev.classes) !== createClass(next.classes) || prev.skew !== next.skew || prev.maxFontSize !== next.maxFontSize) {
+    return false;
+  }
+
+  for (const style in prev.style) {
+    if (prev.style.hasOwnProperty(style) && prev.style[style] !== next.style[style]) {
+      return false;
+    }
+  }
+
+  for (const style in next.style) {
+    if (next.style.hasOwnProperty(style) && prev.style[style] !== next.style[style]) {
+      return false;
+    }
+  }
+
+  return true;
+};
+/**
+ * Combine consequetive domTree.symbolNodes into a single symbolNode.
+ * Note: this function mutates the argument.
+ */
+
+
+const tryCombineChars = chars => {
+  for (let i = 0; i < chars.length - 1; i++) {
+    const prev = chars[i];
+    const next = chars[i + 1];
+
+    if (prev instanceof SymbolNode && next instanceof SymbolNode && canCombine(prev, next)) {
+      prev.text += next.text;
+      prev.height = Math.max(prev.height, next.height);
+      prev.depth = Math.max(prev.depth, next.depth); // Use the last character's italic correction since we use
+      // it to add padding to the right of the span created from
+      // the combined characters.
+
+      prev.italic = next.italic;
+      chars.splice(i + 1, 1);
+      i--;
+    }
+  }
+
+  return chars;
+};
+/**
+ * Calculate the height, depth, and maxFontSize of an element based on its
+ * children.
+ */
+
+
+const sizeElementFromChildren = function sizeElementFromChildren(elem) {
+  let height = 0;
+  let depth = 0;
+  let maxFontSize = 0;
+
+  for (let i = 0; i < elem.children.length; i++) {
+    const child = elem.children[i];
+
+    if (child.height > height) {
+      height = child.height;
+    }
+
+    if (child.depth > depth) {
+      depth = child.depth;
+    }
+
+    if (child.maxFontSize > maxFontSize) {
+      maxFontSize = child.maxFontSize;
+    }
+  }
+
+  elem.height = height;
+  elem.depth = depth;
+  elem.maxFontSize = maxFontSize;
+};
+/**
+ * Makes a span with the given list of classes, list of children, and options.
+ *
+ * TODO(#953): Ensure that `options` is always provided (currently some call
+ * sites don't pass it) and make the type below mandatory.
+ * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which
+ * should if present come first in `classes`.
+ */
+
+
+const makeSpan = function makeSpan(classes, children, options, style) {
+  const span = new Span(classes, children, options, style);
+  sizeElementFromChildren(span);
+  return span;
+}; // SVG one is simpler -- doesn't require height, depth, max-font setting.
+// This is also a separate method for typesafety.
+
+
+const makeSvgSpan = (classes, children, options, style) => new Span(classes, children, options, style);
+
+const makeLineSpan = function makeLineSpan(className, options, thickness) {
+  const line = makeSpan([className], [], options);
+  line.height = Math.max(thickness || options.fontMetrics().defaultRuleThickness, options.minRuleThickness);
+  line.style.borderBottomWidth = line.height + "em";
+  line.maxFontSize = 1.0;
+  return line;
+};
+/**
+ * Makes an anchor with the given href, list of classes, list of children,
+ * and options.
+ */
+
+
+const makeAnchor = function makeAnchor(href, classes, children, options) {
+  const anchor = new Anchor(href, classes, children, options);
+  sizeElementFromChildren(anchor);
+  return anchor;
+};
+/**
+ * Makes a document fragment with the given list of children.
+ */
+
+
+const makeFragment = function makeFragment(children) {
+  const fragment = new DocumentFragment(children);
+  sizeElementFromChildren(fragment);
+  return fragment;
+};
+/**
+ * Wraps group in a span if it's a document fragment, allowing to apply classes
+ * and styles
+ */
+
+
+const wrapFragment = function wrapFragment(group, options) {
+  if (group instanceof DocumentFragment) {
+    return makeSpan([], [group], options);
+  }
+
+  return group;
+}; // These are exact object types to catch typos in the names of the optional fields.
+
+
+// Computes the updated `children` list and the overall depth.
+//
+// This helper function for makeVList makes it easier to enforce type safety by
+// allowing early exits (returns) in the logic.
+const getVListChildrenAndDepth = function getVListChildrenAndDepth(params) {
+  if (params.positionType === "individualShift") {
+    const oldChildren = params.children;
+    const children = [oldChildren[0]]; // Add in kerns to the list of params.children to get each element to be
+    // shifted to the correct specified shift
+
+    const depth = -oldChildren[0].shift - oldChildren[0].elem.depth;
+    let currPos = depth;
+
+    for (let i = 1; i < oldChildren.length; i++) {
+      const diff = -oldChildren[i].shift - currPos - oldChildren[i].elem.depth;
+      const size = diff - (oldChildren[i - 1].elem.height + oldChildren[i - 1].elem.depth);
+      currPos = currPos + diff;
+      children.push({
+        type: "kern",
+        size
+      });
+      children.push(oldChildren[i]);
+    }
+
+    return {
+      children,
+      depth
+    };
+  }
+
+  let depth;
+
+  if (params.positionType === "top") {
+    // We always start at the bottom, so calculate the bottom by adding up
+    // all the sizes
+    let bottom = params.positionData;
+
+    for (let i = 0; i < params.children.length; i++) {
+      const child = params.children[i];
+      bottom -= child.type === "kern" ? child.size : child.elem.height + child.elem.depth;
+    }
+
+    depth = bottom;
+  } else if (params.positionType === "bottom") {
+    depth = -params.positionData;
+  } else {
+    const firstChild = params.children[0];
+
+    if (firstChild.type !== "elem") {
+      throw new Error('First child must have type "elem".');
+    }
+
+    if (params.positionType === "shift") {
+      depth = -firstChild.elem.depth - params.positionData;
+    } else if (params.positionType === "firstBaseline") {
+      depth = -firstChild.elem.depth;
+    } else {
+      throw new Error(`Invalid positionType ${params.positionType}.`);
+    }
+  }
+
+  return {
+    children: params.children,
+    depth
+  };
+};
+/**
+ * Makes a vertical list by stacking elements and kerns on top of each other.
+ * Allows for many different ways of specifying the positioning method.
+ *
+ * See VListParam documentation above.
+ */
+
+
+const makeVList = function makeVList(params, options) {
+  const _getVListChildrenAndD = getVListChildrenAndDepth(params),
+        children = _getVListChildrenAndD.children,
+        depth = _getVListChildrenAndD.depth; // Create a strut that is taller than any list item. The strut is added to
+  // each item, where it will determine the item's baseline. Since it has
+  // `overflow:hidden`, the strut's top edge will sit on the item's line box's
+  // top edge and the strut's bottom edge will sit on the item's baseline,
+  // with no additional line-height spacing. This allows the item baseline to
+  // be positioned precisely without worrying about font ascent and
+  // line-height.
+
+
+  let pstrutSize = 0;
+
+  for (let i = 0; i < children.length; i++) {
+    const child = children[i];
+
+    if (child.type === "elem") {
+      const elem = child.elem;
+      pstrutSize = Math.max(pstrutSize, elem.maxFontSize, elem.height);
+    }
+  }
+
+  pstrutSize += 2;
+  const pstrut = makeSpan(["pstrut"], []);
+  pstrut.style.height = pstrutSize + "em"; // Create a new list of actual children at the correct offsets
+
+  const realChildren = [];
+  let minPos = depth;
+  let maxPos = depth;
+  let currPos = depth;
+
+  for (let i = 0; i < children.length; i++) {
+    const child = children[i];
+
+    if (child.type === "kern") {
+      currPos += child.size;
+    } else {
+      const elem = child.elem;
+      const classes = child.wrapperClasses || [];
+      const style = child.wrapperStyle || {};
+      const childWrap = makeSpan(classes, [pstrut, elem], undefined, style);
+      childWrap.style.top = -pstrutSize - currPos - elem.depth + "em";
+
+      if (child.marginLeft) {
+        childWrap.style.marginLeft = child.marginLeft;
+      }
+
+      if (child.marginRight) {
+        childWrap.style.marginRight = child.marginRight;
+      }
+
+      realChildren.push(childWrap);
+      currPos += elem.height + elem.depth;
+    }
+
+    minPos = Math.min(minPos, currPos);
+    maxPos = Math.max(maxPos, currPos);
+  } // The vlist contents go in a table-cell with `vertical-align:bottom`.
+  // This cell's bottom edge will determine the containing table's baseline
+  // without overly expanding the containing line-box.
+
+
+  const vlist = makeSpan(["vlist"], realChildren);
+  vlist.style.height = maxPos + "em"; // A second row is used if necessary to represent the vlist's depth.
+
+  let rows;
+
+  if (minPos < 0) {
+    // We will define depth in an empty span with display: table-cell.
+    // It should render with the height that we define. But Chrome, in
+    // contenteditable mode only, treats that span as if it contains some
+    // text content. And that min-height over-rides our desired height.
+    // So we put another empty span inside the depth strut span.
+    const emptySpan = makeSpan([], []);
+    const depthStrut = makeSpan(["vlist"], [emptySpan]);
+    depthStrut.style.height = -minPos + "em"; // Safari wants the first row to have inline content; otherwise it
+    // puts the bottom of the *second* row on the baseline.
+
+    const topStrut = makeSpan(["vlist-s"], [new SymbolNode("\u200b")]);
+    rows = [makeSpan(["vlist-r"], [vlist, topStrut]), makeSpan(["vlist-r"], [depthStrut])];
+  } else {
+    rows = [makeSpan(["vlist-r"], [vlist])];
+  }
+
+  const vtable = makeSpan(["vlist-t"], rows);
+
+  if (rows.length === 2) {
+    vtable.classes.push("vlist-t2");
+  }
+
+  vtable.height = maxPos;
+  vtable.depth = -minPos;
+  return vtable;
+}; // Glue is a concept from TeX which is a flexible space between elements in
+// either a vertical or horizontal list. In KaTeX, at least for now, it's
+// static space between elements in a horizontal layout.
+
+
+const makeGlue = (measurement, options) => {
+  // Make an empty span for the space
+  const rule = makeSpan(["mspace"], [], options);
+  const size = calculateSize(measurement, options);
+  rule.style.marginRight = `${size}em`;
+  return rule;
+}; // Takes font options, and returns the appropriate fontLookup name
+
+
+const retrieveTextFontName = function retrieveTextFontName(fontFamily, fontWeight, fontShape) {
+  let baseFontName = "";
+
+  switch (fontFamily) {
+    case "amsrm":
+      baseFontName = "AMS";
+      break;
+
+    case "textrm":
+      baseFontName = "Main";
+      break;
+
+    case "textsf":
+      baseFontName = "SansSerif";
+      break;
+
+    case "texttt":
+      baseFontName = "Typewriter";
+      break;
+
+    default:
+      baseFontName = fontFamily;
+    // use fonts added by a plugin
+  }
+
+  let fontStylesName;
+
+  if (fontWeight === "textbf" && fontShape === "textit") {
+    fontStylesName = "BoldItalic";
+  } else if (fontWeight === "textbf") {
+    fontStylesName = "Bold";
+  } else if (fontWeight === "textit") {
+    fontStylesName = "Italic";
+  } else {
+    fontStylesName = "Regular";
+  }
+
+  return `${baseFontName}-${fontStylesName}`;
+};
+/**
+ * Maps TeX font commands to objects containing:
+ * - variant: string used for "mathvariant" attribute in buildMathML.js
+ * - fontName: the "style" parameter to fontMetrics.getCharacterMetrics
+ */
+// A map between tex font commands an MathML mathvariant attribute values
+
+
+const fontMap = {
+  // styles
+  "mathbf": {
+    variant: "bold",
+    fontName: "Main-Bold"
+  },
+  "mathrm": {
+    variant: "normal",
+    fontName: "Main-Regular"
+  },
+  "textit": {
+    variant: "italic",
+    fontName: "Main-Italic"
+  },
+  "mathit": {
+    variant: "italic",
+    fontName: "Main-Italic"
+  },
+  // Default math font, "mathnormal" and "boldsymbol" are missing because they
+  // require the use of several fonts: Main-Italic and Math-Italic for default
+  // math font, Main-Italic, Math-Italic, Caligraphic for "mathnormal", and
+  // Math-BoldItalic and Main-Bold for "boldsymbol".  This is handled by a
+  // special case in makeOrd which ends up calling mathdefault, mathnormal,
+  // and boldsymbol.
+  // families
+  "mathbb": {
+    variant: "double-struck",
+    fontName: "AMS-Regular"
+  },
+  "mathcal": {
+    variant: "script",
+    fontName: "Caligraphic-Regular"
+  },
+  "mathfrak": {
+    variant: "fraktur",
+    fontName: "Fraktur-Regular"
+  },
+  "mathscr": {
+    variant: "script",
+    fontName: "Script-Regular"
+  },
+  "mathsf": {
+    variant: "sans-serif",
+    fontName: "SansSerif-Regular"
+  },
+  "mathtt": {
+    variant: "monospace",
+    fontName: "Typewriter-Regular"
+  }
+};
+const svgData = {
+  //   path, width, height
+  vec: ["vec", 0.471, 0.714],
+  // values from the font glyph
+  oiintSize1: ["oiintSize1", 0.957, 0.499],
+  // oval to overlay the integrand
+  oiintSize2: ["oiintSize2", 1.472, 0.659],
+  oiiintSize1: ["oiiintSize1", 1.304, 0.499],
+  oiiintSize2: ["oiiintSize2", 1.98, 0.659]
+};
+
+const staticSvg = function staticSvg(value, options) {
+  // Create a span with inline SVG for the element.
+  const _svgData$value = svgData[value],
+        pathName = _svgData$value[0],
+        width = _svgData$value[1],
+        height = _svgData$value[2];
+  const path = new PathNode(pathName);
+  const svgNode = new SvgNode([path], {
+    "width": width + "em",
+    "height": height + "em",
+    // Override CSS rule `.katex svg { width: 100% }`
+    "style": "width:" + width + "em",
+    "viewBox": "0 0 " + 1000 * width + " " + 1000 * height,
+    "preserveAspectRatio": "xMinYMin"
+  });
+  const span = makeSvgSpan(["overlay"], [svgNode], options);
+  span.height = height;
+  span.style.height = height + "em";
+  span.style.width = width + "em";
+  return span;
+};
+
+var buildCommon = {
+  fontMap,
+  makeSymbol,
+  mathsym,
+  makeSpan,
+  makeSvgSpan,
+  makeLineSpan,
+  makeAnchor,
+  makeFragment,
+  wrapFragment,
+  makeVList,
+  makeOrd,
+  makeGlue,
+  staticSvg,
+  svgData,
+  tryCombineChars
+};
+
+/**
+ * Asserts that the node is of the given type and returns it with stricter
+ * typing. Throws if the node's type does not match.
+ */
+function assertNodeType(node, type) {
+  const typedNode = checkNodeType(node, type);
+
+  if (!typedNode) {
+    throw new Error(`Expected node of type ${type}, but got ` + (node ? `node of type ${node.type}` : String(node)));
+  } // $FlowFixMe: Unsure why.
+
+
+  return typedNode;
+}
+/**
+ * Returns the node more strictly typed iff it is of the given type. Otherwise,
+ * returns null.
+ */
+
+function checkNodeType(node, type) {
+  if (node && node.type === type) {
+    // The definition of ParseNode<TYPE> doesn't communicate to flow that
+    // `type: TYPE` (as that's not explicitly mentioned anywhere), though that
+    // happens to be true for all our value types.
+    // $FlowFixMe
+    return node;
+  }
+
+  return null;
+}
+/**
+ * Asserts that the node is of the given type and returns it with stricter
+ * typing. Throws if the node's type does not match.
+ */
+
+function assertAtomFamily(node, family) {
+  const typedNode = checkAtomFamily(node, family);
+
+  if (!typedNode) {
+    throw new Error(`Expected node of type "atom" and family "${family}", but got ` + (node ? node.type === "atom" ? `atom of family ${node.family}` : `node of type ${node.type}` : String(node)));
+  }
+
+  return typedNode;
+}
+/**
+ * Returns the node more strictly typed iff it is of the given type. Otherwise,
+ * returns null.
+ */
+
+function checkAtomFamily(node, family) {
+  return node && node.type === "atom" && node.family === family ? node : null;
+}
+/**
+ * Returns the node more strictly typed iff it is of the given type. Otherwise,
+ * returns null.
+ */
+
+function assertSymbolNodeType(node) {
+  const typedNode = checkSymbolNodeType(node);
+
+  if (!typedNode) {
+    throw new Error(`Expected node of symbol group type, but got ` + (node ? `node of type ${node.type}` : String(node)));
+  }
+
+  return typedNode;
+}
+/**
+ * Returns the node more strictly typed iff it is of the given type. Otherwise,
+ * returns null.
+ */
+
+function checkSymbolNodeType(node) {
+  if (node && (node.type === "atom" || NON_ATOMS.hasOwnProperty(node.type))) {
+    // $FlowFixMe
+    return node;
+  }
+
+  return null;
+}
+
+/**
+ * Describes spaces between different classes of atoms.
+ */
+const thinspace = {
+  number: 3,
+  unit: "mu"
+};
+const mediumspace = {
+  number: 4,
+  unit: "mu"
+};
+const thickspace = {
+  number: 5,
+  unit: "mu"
+}; // Making the type below exact with all optional fields doesn't work due to
+// - https://github.com/facebook/flow/issues/4582
+// - https://github.com/facebook/flow/issues/5688
+// However, since *all* fields are optional, $Shape<> works as suggested in 5688
+// above.
+
+// Spacing relationships for display and text styles
+const spacings = {
+  mord: {
+    mop: thinspace,
+    mbin: mediumspace,
+    mrel: thickspace,
+    minner: thinspace
+  },
+  mop: {
+    mord: thinspace,
+    mop: thinspace,
+    mrel: thickspace,
+    minner: thinspace
+  },
+  mbin: {
+    mord: mediumspace,
+    mop: mediumspace,
+    mopen: mediumspace,
+    minner: mediumspace
+  },
+  mrel: {
+    mord: thickspace,
+    mop: thickspace,
+    mopen: thickspace,
+    minner: thickspace
+  },
+  mopen: {},
+  mclose: {
+    mop: thinspace,
+    mbin: mediumspace,
+    mrel: thickspace,
+    minner: thinspace
+  },
+  mpunct: {
+    mord: thinspace,
+    mop: thinspace,
+    mrel: thickspace,
+    mopen: thinspace,
+    mclose: thinspace,
+    mpunct: thinspace,
+    minner: thinspace
+  },
+  minner: {
+    mord: thinspace,
+    mop: thinspace,
+    mbin: mediumspace,
+    mrel: thickspace,
+    mopen: thinspace,
+    mpunct: thinspace,
+    minner: thinspace
+  }
+}; // Spacing relationships for script and scriptscript styles
+
+const tightSpacings = {
+  mord: {
+    mop: thinspace
+  },
+  mop: {
+    mord: thinspace,
+    mop: thinspace
+  },
+  mbin: {},
+  mrel: {},
+  mopen: {},
+  mclose: {
+    mop: thinspace
+  },
+  mpunct: {},
+  minner: {
+    mop: thinspace
+  }
+};
+
+/**
+ * All registered functions.
+ * `functions.js` just exports this same dictionary again and makes it public.
+ * `Parser.js` requires this dictionary.
+ */
+const _functions = {};
+/**
+ * All HTML builders. Should be only used in the `define*` and the `build*ML`
+ * functions.
+ */
+
+const _htmlGroupBuilders = {};
+/**
+ * All MathML builders. Should be only used in the `define*` and the `build*ML`
+ * functions.
+ */
+
+const _mathmlGroupBuilders = {};
+function defineFunction(_ref) {
+  let type = _ref.type,
+      names = _ref.names,
+      props = _ref.props,
+      handler = _ref.handler,
+      htmlBuilder = _ref.htmlBuilder,
+      mathmlBuilder = _ref.mathmlBuilder;
+  // Set default values of functions
+  const data = {
+    type,
+    numArgs: props.numArgs,
+    argTypes: props.argTypes,
+    greediness: props.greediness === undefined ? 1 : props.greediness,
+    allowedInText: !!props.allowedInText,
+    allowedInMath: props.allowedInMath === undefined ? true : props.allowedInMath,
+    numOptionalArgs: props.numOptionalArgs || 0,
+    infix: !!props.infix,
+    handler: handler
+  };
+
+  for (let i = 0; i < names.length; ++i) {
+    _functions[names[i]] = data;
+  }
+
+  if (type) {
+    if (htmlBuilder) {
+      _htmlGroupBuilders[type] = htmlBuilder;
+    }
+
+    if (mathmlBuilder) {
+      _mathmlGroupBuilders[type] = mathmlBuilder;
+    }
+  }
+}
+/**
+ * Use this to register only the HTML and MathML builders for a function (e.g.
+ * if the function's ParseNode is generated in Parser.js rather than via a
+ * stand-alone handler provided to `defineFunction`).
+ */
+
+function defineFunctionBuilders(_ref2) {
+  let type = _ref2.type,
+      htmlBuilder = _ref2.htmlBuilder,
+      mathmlBuilder = _ref2.mathmlBuilder;
+  defineFunction({
+    type,
+    names: [],
+    props: {
+      numArgs: 0
+    },
+
+    handler() {
+      throw new Error('Should never be called.');
+    },
+
+    htmlBuilder,
+    mathmlBuilder
+  });
+} // Since the corresponding buildHTML/buildMathML function expects a
+// list of elements, we normalize for different kinds of arguments
+
+const ordargument = function ordargument(arg) {
+  const node = checkNodeType(arg, "ordgroup");
+  return node ? node.body : [arg];
+};
+
+/**
+ * This file does the main work of building a domTree structure from a parse
+ * tree. The entry point is the `buildHTML` function, which takes a parse tree.
+ * Then, the buildExpression, buildGroup, and various groupBuilders functions
+ * are called, to produce a final HTML tree.
+ */
+const makeSpan$1 = buildCommon.makeSpan; // Binary atoms (first class `mbin`) change into ordinary atoms (`mord`)
+// depending on their surroundings. See TeXbook pg. 442-446, Rules 5 and 6,
+// and the text before Rule 19.
+
+const binLeftCanceller = ["leftmost", "mbin", "mopen", "mrel", "mop", "mpunct"];
+const binRightCanceller = ["rightmost", "mrel", "mclose", "mpunct"];
+const styleMap = {
+  "display": Style$1.DISPLAY,
+  "text": Style$1.TEXT,
+  "script": Style$1.SCRIPT,
+  "scriptscript": Style$1.SCRIPTSCRIPT
+};
+const DomEnum = {
+  mord: "mord",
+  mop: "mop",
+  mbin: "mbin",
+  mrel: "mrel",
+  mopen: "mopen",
+  mclose: "mclose",
+  mpunct: "mpunct",
+  minner: "minner"
+};
+
+/**
+ * Take a list of nodes, build them in order, and return a list of the built
+ * nodes. documentFragments are flattened into their contents, so the
+ * returned list contains no fragments. `isRealGroup` is true if `expression`
+ * is a real group (no atoms will be added on either side), as opposed to
+ * a partial group (e.g. one created by \color). `surrounding` is an array
+ * consisting type of nodes that will be added to the left and right.
+ */
+const buildExpression = function buildExpression(expression, options, isRealGroup, surrounding) {
+  if (surrounding === void 0) {
+    surrounding = [null, null];
+  }
+
+  // Parse expressions into `groups`.
+  const groups = [];
+
+  for (let i = 0; i < expression.length; i++) {
+    const output = buildGroup(expression[i], options);
+
+    if (output instanceof DocumentFragment) {
+      const children = output.children;
+      groups.push(...children);
+    } else {
+      groups.push(output);
+    }
+  } // If `expression` is a partial group, let the parent handle spacings
+  // to avoid processing groups multiple times.
+
+
+  if (!isRealGroup) {
+    return groups;
+  }
+
+  let glueOptions = options;
+
+  if (expression.length === 1) {
+    const node = checkNodeType(expression[0], "sizing") || checkNodeType(expression[0], "styling");
+
+    if (!node) ; else if (node.type === "sizing") {
+      glueOptions = options.havingSize(node.size);
+    } else if (node.type === "styling") {
+      glueOptions = options.havingStyle(styleMap[node.style]);
+    }
+  } // Dummy spans for determining spacings between surrounding atoms.
+  // If `expression` has no atoms on the left or right, class "leftmost"
+  // or "rightmost", respectively, is used to indicate it.
+
+
+  const dummyPrev = makeSpan$1([surrounding[0] || "leftmost"], [], options);
+  const dummyNext = makeSpan$1([surrounding[1] || "rightmost"], [], options); // TODO: These code assumes that a node's math class is the first element
+  // of its `classes` array. A later cleanup should ensure this, for
+  // instance by changing the signature of `makeSpan`.
+  // Before determining what spaces to insert, perform bin cancellation.
+  // Binary operators change to ordinary symbols in some contexts.
+
+  traverseNonSpaceNodes(groups, (node, prev) => {
+    const prevType = prev.classes[0];
+    const type = node.classes[0];
+
+    if (prevType === "mbin" && utils.contains(binRightCanceller, type)) {
+      prev.classes[0] = "mord";
+    } else if (type === "mbin" && utils.contains(binLeftCanceller, prevType)) {
+      node.classes[0] = "mord";
+    }
+  }, {
+    node: dummyPrev
+  }, dummyNext);
+  traverseNonSpaceNodes(groups, (node, prev) => {
+    const prevType = getTypeOfDomTree(prev);
+    const type = getTypeOfDomTree(node); // 'mtight' indicates that the node is script or scriptscript style.
+
+    const space = prevType && type ? node.hasClass("mtight") ? tightSpacings[prevType][type] : spacings[prevType][type] : null;
+
+    if (space) {
+      // Insert glue (spacing) after the `prev`.
+      return buildCommon.makeGlue(space, glueOptions);
+    }
+  }, {
+    node: dummyPrev
+  }, dummyNext);
+  return groups;
+}; // Depth-first traverse non-space `nodes`, calling `callback` with the current and
+// previous node as arguments, optionally returning a node to insert after the
+// previous node. `prev` is an object with the previous node and `insertAfter`
+// function to insert after it. `next` is a node that will be added to the right.
+// Used for bin cancellation and inserting spacings.
+
+const traverseNonSpaceNodes = function traverseNonSpaceNodes(nodes, callback, prev, next) {
+  if (next) {
+    // temporarily append the right node, if exists
+    nodes.push(next);
+  }
+
+  let i = 0;
+
+  for (; i < nodes.length; i++) {
+    const node = nodes[i];
+    const partialGroup = checkPartialGroup(node);
+
+    if (partialGroup) {
+      // Recursive DFS
+      // $FlowFixMe: make nodes a $ReadOnlyArray by returning a new array
+      traverseNonSpaceNodes(partialGroup.children, callback, prev);
+      continue;
+    } // Ignore explicit spaces (e.g., \;, \,) when determining what implicit
+    // spacing should go between atoms of different classes
+
+
+    if (node.classes[0] === "mspace") {
+      continue;
+    }
+
+    const result = callback(node, prev.node);
+
+    if (result) {
+      if (prev.insertAfter) {
+        prev.insertAfter(result);
+      } else {
+        // insert at front
+        nodes.unshift(result);
+        i++;
+      }
+    }
+
+    prev.node = node;
+
+    prev.insertAfter = (index => n => {
+      nodes.splice(index + 1, 0, n);
+      i++;
+    })(i);
+  }
+
+  if (next) {
+    nodes.pop();
+  }
+}; // Check if given node is a partial group, i.e., does not affect spacing around.
+
+
+const checkPartialGroup = function checkPartialGroup(node) {
+  if (node instanceof DocumentFragment || node instanceof Anchor) {
+    return node;
+  }
+
+  return null;
+}; // Return the outermost node of a domTree.
+
+
+const getOutermostNode = function getOutermostNode(node, side) {
+  const partialGroup = checkPartialGroup(node);
+
+  if (partialGroup) {
+    const children = partialGroup.children;
+
+    if (children.length) {
+      if (side === "right") {
+        return getOutermostNode(children[children.length - 1], "right");
+      } else if (side === "left") {
+        return getOutermostNode(children[0], "left");
+      }
+    }
+  }
+
+  return node;
+}; // Return math atom class (mclass) of a domTree.
+// If `side` is given, it will get the type of the outermost node at given side.
+
+
+const getTypeOfDomTree = function getTypeOfDomTree(node, side) {
+  if (!node) {
+    return null;
+  }
+
+  if (side) {
+    node = getOutermostNode(node, side);
+  } // This makes a lot of assumptions as to where the type of atom
+  // appears.  We should do a better job of enforcing this.
+
+
+  return DomEnum[node.classes[0]] || null;
+};
+const makeNullDelimiter = function makeNullDelimiter(options, classes) {
+  const moreClasses = ["nulldelimiter"].concat(options.baseSizingClasses());
+  return makeSpan$1(classes.concat(moreClasses));
+};
+/**
+ * buildGroup is the function that takes a group and calls the correct groupType
+ * function for it. It also handles the interaction of size and style changes
+ * between parents and children.
+ */
+
+const buildGroup = function buildGroup(group, options, baseOptions) {
+  if (!group) {
+    return makeSpan$1();
+  }
+
+  if (_htmlGroupBuilders[group.type]) {
+    // Call the groupBuilders function
+    let groupNode = _htmlGroupBuilders[group.type](group, options); // If the size changed between the parent and the current group, account
+    // for that size difference.
+
+    if (baseOptions && options.size !== baseOptions.size) {
+      groupNode = makeSpan$1(options.sizingClasses(baseOptions), [groupNode], options);
+      const multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier;
+      groupNode.height *= multiplier;
+      groupNode.depth *= multiplier;
+    }
+
+    return groupNode;
+  } else {
+    throw new ParseError("Got group of unknown type: '" + group.type + "'");
+  }
+};
+/**
+ * Combine an array of HTML DOM nodes (e.g., the output of `buildExpression`)
+ * into an unbreakable HTML node of class .base, with proper struts to
+ * guarantee correct vertical extent.  `buildHTML` calls this repeatedly to
+ * make up the entire expression as a sequence of unbreakable units.
+ */
+
+function buildHTMLUnbreakable(children, options) {
+  // Compute height and depth of this chunk.
+  const body = makeSpan$1(["base"], children, options); // Add strut, which ensures that the top of the HTML element falls at
+  // the height of the expression, and the bottom of the HTML element
+  // falls at the depth of the expression.
+  // We used to have separate top and bottom struts, where the bottom strut
+  // would like to use `vertical-align: top`, but in IE 9 this lowers the
+  // baseline of the box to the bottom of this strut (instead of staying in
+  // the normal place) so we use an absolute value for vertical-align instead.
+
+  const strut = makeSpan$1(["strut"]);
+  strut.style.height = body.height + body.depth + "em";
+  strut.style.verticalAlign = -body.depth + "em";
+  body.children.unshift(strut);
+  return body;
+}
+/**
+ * Take an entire parse tree, and build it into an appropriate set of HTML
+ * nodes.
+ */
+
+
+function buildHTML(tree, options) {
+  // Strip off outer tag wrapper for processing below.
+  let tag = null;
+
+  if (tree.length === 1 && tree[0].type === "tag") {
+    tag = tree[0].tag;
+    tree = tree[0].body;
+  } // Build the expression contained in the tree
+
+
+  const expression = buildExpression(tree, options, true);
+  const children = []; // Create one base node for each chunk between potential line breaks.
+  // The TeXBook [p.173] says "A formula will be broken only after a
+  // relation symbol like $=$ or $<$ or $\rightarrow$, or after a binary
+  // operation symbol like $+$ or $-$ or $\times$, where the relation or
+  // binary operation is on the ``outer level'' of the formula (i.e., not
+  // enclosed in {...} and not part of an \over construction)."
+
+  let parts = [];
+
+  for (let i = 0; i < expression.length; i++) {
+    parts.push(expression[i]);
+
+    if (expression[i].hasClass("mbin") || expression[i].hasClass("mrel") || expression[i].hasClass("allowbreak")) {
+      // Put any post-operator glue on same line as operator.
+      // Watch for \nobreak along the way, and stop at \newline.
+      let nobreak = false;
+
+      while (i < expression.length - 1 && expression[i + 1].hasClass("mspace") && !expression[i + 1].hasClass("newline")) {
+        i++;
+        parts.push(expression[i]);
+
+        if (expression[i].hasClass("nobreak")) {
+          nobreak = true;
+        }
+      } // Don't allow break if \nobreak among the post-operator glue.
+
+
+      if (!nobreak) {
+        children.push(buildHTMLUnbreakable(parts, options));
+        parts = [];
+      }
+    } else if (expression[i].hasClass("newline")) {
+      // Write the line except the newline
+      parts.pop();
+
+      if (parts.length > 0) {
+        children.push(buildHTMLUnbreakable(parts, options));
+        parts = [];
+      } // Put the newline at the top level
+
+
+      children.push(expression[i]);
+    }
+  }
+
+  if (parts.length > 0) {
+    children.push(buildHTMLUnbreakable(parts, options));
+  } // Now, if there was a tag, build it too and append it as a final child.
+
+
+  let tagChild;
+
+  if (tag) {
+    tagChild = buildHTMLUnbreakable(buildExpression(tag, options, true));
+    tagChild.classes = ["tag"];
+    children.push(tagChild);
+  }
+
+  const htmlNode = makeSpan$1(["katex-html"], children);
+  htmlNode.setAttribute("aria-hidden", "true"); // Adjust the strut of the tag to be the maximum height of all children
+  // (the height of the enclosing htmlNode) for proper vertical alignment.
+
+  if (tagChild) {
+    const strut = tagChild.children[0];
+    strut.style.height = htmlNode.height + htmlNode.depth + "em";
+    strut.style.verticalAlign = -htmlNode.depth + "em";
+  }
+
+  return htmlNode;
+}
+
+/**
+ * These objects store data about MathML nodes. This is the MathML equivalent
+ * of the types in domTree.js. Since MathML handles its own rendering, and
+ * since we're mainly using MathML to improve accessibility, we don't manage
+ * any of the styling state that the plain DOM nodes do.
+ *
+ * The `toNode` and `toMarkup` functions work simlarly to how they do in
+ * domTree.js, creating namespaced DOM nodes and HTML text markup respectively.
+ */
+function newDocumentFragment(children) {
+  return new DocumentFragment(children);
+}
+/**
+ * This node represents a general purpose MathML node of any type. The
+ * constructor requires the type of node to create (for example, `"mo"` or
+ * `"mspace"`, corresponding to `<mo>` and `<mspace>` tags).
+ */
+
+class MathNode {
+  constructor(type, children) {
+    this.type = void 0;
+    this.attributes = void 0;
+    this.children = void 0;
+    this.type = type;
+    this.attributes = {};
+    this.children = children || [];
+  }
+  /**
+   * Sets an attribute on a MathML node. MathML depends on attributes to convey a
+   * semantic content, so this is used heavily.
+   */
+
+
+  setAttribute(name, value) {
+    this.attributes[name] = value;
+  }
+  /**
+   * Gets an attribute on a MathML node.
+   */
+
+
+  getAttribute(name) {
+    return this.attributes[name];
+  }
+  /**
+   * Converts the math node into a MathML-namespaced DOM element.
+   */
+
+
+  toNode() {
+    const node = document.createElementNS("http://www.w3.org/1998/Math/MathML", this.type);
+
+    for (const attr in this.attributes) {
+      if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {
+        node.setAttribute(attr, this.attributes[attr]);
+      }
+    }
+
+    for (let i = 0; i < this.children.length; i++) {
+      node.appendChild(this.children[i].toNode());
+    }
+
+    return node;
+  }
+  /**
+   * Converts the math node into an HTML markup string.
+   */
+
+
+  toMarkup() {
+    let markup = "<" + this.type; // Add the attributes
+
+    for (const attr in this.attributes) {
+      if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {
+        markup += " " + attr + "=\"";
+        markup += utils.escape(this.attributes[attr]);
+        markup += "\"";
+      }
+    }
+
+    markup += ">";
+
+    for (let i = 0; i < this.children.length; i++) {
+      markup += this.children[i].toMarkup();
+    }
+
+    markup += "</" + this.type + ">";
+    return markup;
+  }
+  /**
+   * Converts the math node into a string, similar to innerText, but escaped.
+   */
+
+
+  toText() {
+    return this.children.map(child => child.toText()).join("");
+  }
+
+}
+/**
+ * This node represents a piece of text.
+ */
+
+class TextNode {
+  constructor(text) {
+    this.text = void 0;
+    this.text = text;
+  }
+  /**
+   * Converts the text node into a DOM text node.
+   */
+
+
+  toNode() {
+    return document.createTextNode(this.text);
+  }
+  /**
+   * Converts the text node into escaped HTML markup
+   * (representing the text itself).
+   */
+
+
+  toMarkup() {
+    return utils.escape(this.toText());
+  }
+  /**
+   * Converts the text node into a string
+   * (representing the text iteself).
+   */
+
+
+  toText() {
+    return this.text;
+  }
+
+}
+/**
+ * This node represents a space, but may render as <mspace.../> or as text,
+ * depending on the width.
+ */
+
+class SpaceNode {
+  /**
+   * Create a Space node with width given in CSS ems.
+   */
+  constructor(width) {
+    this.width = void 0;
+    this.character = void 0;
+    this.width = width; // See https://www.w3.org/TR/2000/WD-MathML2-20000328/chapter6.html
+    // for a table of space-like characters.  We use Unicode
+    // representations instead of &LongNames; as it's not clear how to
+    // make the latter via document.createTextNode.
+
+    if (width >= 0.05555 && width <= 0.05556) {
+      this.character = "\u200a"; // &VeryThinSpace;
+    } else if (width >= 0.1666 && width <= 0.1667) {
+      this.character = "\u2009"; // &ThinSpace;
+    } else if (width >= 0.2222 && width <= 0.2223) {
+      this.character = "\u2005"; // &MediumSpace;
+    } else if (width >= 0.2777 && width <= 0.2778) {
+      this.character = "\u2005\u200a"; // &ThickSpace;
+    } else if (width >= -0.05556 && width <= -0.05555) {
+      this.character = "\u200a\u2063"; // &NegativeVeryThinSpace;
+    } else if (width >= -0.1667 && width <= -0.1666) {
+      this.character = "\u2009\u2063"; // &NegativeThinSpace;
+    } else if (width >= -0.2223 && width <= -0.2222) {
+      this.character = "\u205f\u2063"; // &NegativeMediumSpace;
+    } else if (width >= -0.2778 && width <= -0.2777) {
+      this.character = "\u2005\u2063"; // &NegativeThickSpace;
+    } else {
+      this.character = null;
+    }
+  }
+  /**
+   * Converts the math node into a MathML-namespaced DOM element.
+   */
+
+
+  toNode() {
+    if (this.character) {
+      return document.createTextNode(this.character);
+    } else {
+      const node = document.createElementNS("http://www.w3.org/1998/Math/MathML", "mspace");
+      node.setAttribute("width", this.width + "em");
+      return node;
+    }
+  }
+  /**
+   * Converts the math node into an HTML markup string.
+   */
+
+
+  toMarkup() {
+    if (this.character) {
+      return `<mtext>${this.character}</mtext>`;
+    } else {
+      return `<mspace width="${this.width}em"/>`;
+    }
+  }
+  /**
+   * Converts the math node into a string, similar to innerText.
+   */
+
+
+  toText() {
+    if (this.character) {
+      return this.character;
+    } else {
+      return " ";
+    }
+  }
+
+}
+
+var mathMLTree = {
+  MathNode,
+  TextNode,
+  SpaceNode,
+  newDocumentFragment
+};
+
+/**
+ * This file converts a parse tree into a cooresponding MathML tree. The main
+ * entry point is the `buildMathML` function, which takes a parse tree from the
+ * parser.
+ */
+
+/**
+ * Takes a symbol and converts it into a MathML text node after performing
+ * optional replacement from symbols.js.
+ */
+const makeText = function makeText(text, mode, options) {
+  if (symbols[mode][text] && symbols[mode][text].replace && text.charCodeAt(0) !== 0xD835 && !(ligatures.hasOwnProperty(text) && options && (options.fontFamily && options.fontFamily.substr(4, 2) === "tt" || options.font && options.font.substr(4, 2) === "tt"))) {
+    text = symbols[mode][text].replace;
+  }
+
+  return new mathMLTree.TextNode(text);
+};
+/**
+ * Wrap the given array of nodes in an <mrow> node if needed, i.e.,
+ * unless the array has length 1.  Always returns a single node.
+ */
+
+const makeRow = function makeRow(body) {
+  if (body.length === 1) {
+    return body[0];
+  } else {
+    return new mathMLTree.MathNode("mrow", body);
+  }
+};
+/**
+ * Returns the math variant as a string or null if none is required.
+ */
+
+const getVariant = function getVariant(group, options) {
+  // Handle \text... font specifiers as best we can.
+  // MathML has a limited list of allowable mathvariant specifiers; see
+  // https://www.w3.org/TR/MathML3/chapter3.html#presm.commatt
+  if (options.fontFamily === "texttt") {
+    return "monospace";
+  } else if (options.fontFamily === "textsf") {
+    if (options.fontShape === "textit" && options.fontWeight === "textbf") {
+      return "sans-serif-bold-italic";
+    } else if (options.fontShape === "textit") {
+      return "sans-serif-italic";
+    } else if (options.fontWeight === "textbf") {
+      return "bold-sans-serif";
+    } else {
+      return "sans-serif";
+    }
+  } else if (options.fontShape === "textit" && options.fontWeight === "textbf") {
+    return "bold-italic";
+  } else if (options.fontShape === "textit") {
+    return "italic";
+  } else if (options.fontWeight === "textbf") {
+    return "bold";
+  }
+
+  const font = options.font;
+
+  if (!font || font === "mathnormal") {
+    return null;
+  }
+
+  const mode = group.mode;
+
+  if (font === "mathit") {
+    return "italic";
+  } else if (font === "boldsymbol") {
+    return "bold-italic";
+  } else if (font === "mathbf") {
+    return "bold";
+  } else if (font === "mathbb") {
+    return "double-struck";
+  } else if (font === "mathfrak") {
+    return "fraktur";
+  } else if (font === "mathscr" || font === "mathcal") {
+    // MathML makes no distinction between script and caligrahpic
+    return "script";
+  } else if (font === "mathsf") {
+    return "sans-serif";
+  } else if (font === "mathtt") {
+    return "monospace";
+  }
+
+  let text = group.text;
+
+  if (utils.contains(["\\imath", "\\jmath"], text)) {
+    return null;
+  }
+
+  if (symbols[mode][text] && symbols[mode][text].replace) {
+    text = symbols[mode][text].replace;
+  }
+
+  const fontName = buildCommon.fontMap[font].fontName;
+
+  if (getCharacterMetrics(text, fontName, mode)) {
+    return buildCommon.fontMap[font].variant;
+  }
+
+  return null;
+};
+/**
+ * Takes a list of nodes, builds them, and returns a list of the generated
+ * MathML nodes.  Also combine consecutive <mtext> outputs into a single
+ * <mtext> tag.
+ */
+
+const buildExpression$1 = function buildExpression(expression, options, isOrdgroup) {
+  if (expression.length === 1) {
+    const group = buildGroup$1(expression[0], options);
+
+    if (isOrdgroup && group instanceof MathNode && group.type === "mo") {
+      // When TeX writers want to suppress spacing on an operator,
+      // they often put the operator by itself inside braces.
+      group.setAttribute("lspace", "0em");
+      group.setAttribute("rspace", "0em");
+    }
+
+    return [group];
+  }
+
+  const groups = [];
+  let lastGroup;
+
+  for (let i = 0; i < expression.length; i++) {
+    const group = buildGroup$1(expression[i], options);
+
+    if (group instanceof MathNode && lastGroup instanceof MathNode) {
+      // Concatenate adjacent <mtext>s
+      if (group.type === 'mtext' && lastGroup.type === 'mtext' && group.getAttribute('mathvariant') === lastGroup.getAttribute('mathvariant')) {
+        lastGroup.children.push(...group.children);
+        continue; // Concatenate adjacent <mn>s
+      } else if (group.type === 'mn' && lastGroup.type === 'mn') {
+        lastGroup.children.push(...group.children);
+        continue; // Concatenate <mn>...</mn> followed by <mi>.</mi>
+      } else if (group.type === 'mi' && group.children.length === 1 && lastGroup.type === 'mn') {
+        const child = group.children[0];
+
+        if (child instanceof TextNode && child.text === '.') {
+          lastGroup.children.push(...group.children);
+          continue;
+        }
+      } else if (lastGroup.type === 'mi' && lastGroup.children.length === 1) {
+        const lastChild = lastGroup.children[0];
+
+        if (lastChild instanceof TextNode && lastChild.text === '\u0338' && (group.type === 'mo' || group.type === 'mi' || group.type === 'mn')) {
+          const child = group.children[0];
+
+          if (child instanceof TextNode && child.text.length > 0) {
+            // Overlay with combining character long solidus
+            child.text = child.text.slice(0, 1) + "\u0338" + child.text.slice(1);
+            groups.pop();
+          }
+        }
+      }
+    }
+
+    groups.push(group);
+    lastGroup = group;
+  }
+
+  return groups;
+};
+/**
+ * Equivalent to buildExpression, but wraps the elements in an <mrow>
+ * if there's more than one.  Returns a single node instead of an array.
+ */
+
+const buildExpressionRow = function buildExpressionRow(expression, options, isOrdgroup) {
+  return makeRow(buildExpression$1(expression, options, isOrdgroup));
+};
+/**
+ * Takes a group from the parser and calls the appropriate groupBuilders function
+ * on it to produce a MathML node.
+ */
+
+const buildGroup$1 = function buildGroup(group, options) {
+  if (!group) {
+    return new mathMLTree.MathNode("mrow");
+  }
+
+  if (_mathmlGroupBuilders[group.type]) {
+    // Call the groupBuilders function
+    const result = _mathmlGroupBuilders[group.type](group, options);
+    return result;
+  } else {
+    throw new ParseError("Got group of unknown type: '" + group.type + "'");
+  }
+};
+/**
+ * Takes a full parse tree and settings and builds a MathML representation of
+ * it. In particular, we put the elements from building the parse tree into a
+ * <semantics> tag so we can also include that TeX source as an annotation.
+ *
+ * Note that we actually return a domTree element with a `<math>` inside it so
+ * we can do appropriate styling.
+ */
+
+function buildMathML(tree, texExpression, options, forMathmlOnly) {
+  const expression = buildExpression$1(tree, options); // Wrap up the expression in an mrow so it is presented in the semantics
+  // tag correctly, unless it's a single <mrow> or <mtable>.
+
+  let wrapper;
+
+  if (expression.length === 1 && expression[0] instanceof MathNode && utils.contains(["mrow", "mtable"], expression[0].type)) {
+    wrapper = expression[0];
+  } else {
+    wrapper = new mathMLTree.MathNode("mrow", expression);
+  } // Build a TeX annotation of the source
+
+
+  const annotation = new mathMLTree.MathNode("annotation", [new mathMLTree.TextNode(texExpression)]);
+  annotation.setAttribute("encoding", "application/x-tex");
+  const semantics = new mathMLTree.MathNode("semantics", [wrapper, annotation]);
+  const math = new mathMLTree.MathNode("math", [semantics]);
+  math.setAttribute("xmlns", "http://www.w3.org/1998/Math/MathML"); // You can't style <math> nodes, so we wrap the node in a span.
+  // NOTE: The span class is not typed to have <math> nodes as children, and
+  // we don't want to make the children type more generic since the children
+  // of span are expected to have more fields in `buildHtml` contexts.
+
+  const wrapperClass = forMathmlOnly ? "katex" : "katex-mathml"; // $FlowFixMe
+
+  return buildCommon.makeSpan([wrapperClass], [math]);
+}
+
+const optionsFromSettings = function optionsFromSettings(settings) {
+  return new Options({
+    style: settings.displayMode ? Style$1.DISPLAY : Style$1.TEXT,
+    maxSize: settings.maxSize,
+    minRuleThickness: settings.minRuleThickness
+  });
+};
+
+const displayWrap = function displayWrap(node, settings) {
+  if (settings.displayMode) {
+    const classes = ["katex-display"];
+
+    if (settings.leqno) {
+      classes.push("leqno");
+    }
+
+    if (settings.fleqn) {
+      classes.push("fleqn");
+    }
+
+    node = buildCommon.makeSpan(classes, [node]);
+  }
+
+  return node;
+};
+
+const buildTree = function buildTree(tree, expression, settings) {
+  const options = optionsFromSettings(settings);
+  let katexNode;
+
+  if (settings.output === "mathml") {
+    return buildMathML(tree, expression, options, true);
+  } else if (settings.output === "html") {
+    const htmlNode = buildHTML(tree, options);
+    katexNode = buildCommon.makeSpan(["katex"], [htmlNode]);
+  } else {
+    const mathMLNode = buildMathML(tree, expression, options, false);
+    const htmlNode = buildHTML(tree, options);
+    katexNode = buildCommon.makeSpan(["katex"], [mathMLNode, htmlNode]);
+  }
+
+  return displayWrap(katexNode, settings);
+};
+const buildHTMLTree = function buildHTMLTree(tree, expression, settings) {
+  const options = optionsFromSettings(settings);
+  const htmlNode = buildHTML(tree, options);
+  const katexNode = buildCommon.makeSpan(["katex"], [htmlNode]);
+  return displayWrap(katexNode, settings);
+};
+
+/**
+ * This file provides support to buildMathML.js and buildHTML.js
+ * for stretchy wide elements rendered from SVG files
+ * and other CSS trickery.
+ */
+const stretchyCodePoint = {
+  widehat: "^",
+  widecheck: "ˇ",
+  widetilde: "~",
+  utilde: "~",
+  overleftarrow: "\u2190",
+  underleftarrow: "\u2190",
+  xleftarrow: "\u2190",
+  overrightarrow: "\u2192",
+  underrightarrow: "\u2192",
+  xrightarrow: "\u2192",
+  underbrace: "\u23df",
+  overbrace: "\u23de",
+  overgroup: "\u23e0",
+  undergroup: "\u23e1",
+  overleftrightarrow: "\u2194",
+  underleftrightarrow: "\u2194",
+  xleftrightarrow: "\u2194",
+  Overrightarrow: "\u21d2",
+  xRightarrow: "\u21d2",
+  overleftharpoon: "\u21bc",
+  xleftharpoonup: "\u21bc",
+  overrightharpoon: "\u21c0",
+  xrightharpoonup: "\u21c0",
+  xLeftarrow: "\u21d0",
+  xLeftrightarrow: "\u21d4",
+  xhookleftarrow: "\u21a9",
+  xhookrightarrow: "\u21aa",
+  xmapsto: "\u21a6",
+  xrightharpoondown: "\u21c1",
+  xleftharpoondown: "\u21bd",
+  xrightleftharpoons: "\u21cc",
+  xleftrightharpoons: "\u21cb",
+  xtwoheadleftarrow: "\u219e",
+  xtwoheadrightarrow: "\u21a0",
+  xlongequal: "=",
+  xtofrom: "\u21c4",
+  xrightleftarrows: "\u21c4",
+  xrightequilibrium: "\u21cc",
+  // Not a perfect match.
+  xleftequilibrium: "\u21cb" // None better available.
+
+};
+
+const mathMLnode = function mathMLnode(label) {
+  const node = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(stretchyCodePoint[label.substr(1)])]);
+  node.setAttribute("stretchy", "true");
+  return node;
+}; // Many of the KaTeX SVG images have been adapted from glyphs in KaTeX fonts.
+// Copyright (c) 2009-2010, Design Science, Inc. (<www.mathjax.org>)
+// Copyright (c) 2014-2017 Khan Academy (<www.khanacademy.org>)
+// Licensed under the SIL Open Font License, Version 1.1.
+// See \nhttp://scripts.sil.org/OFL
+// Very Long SVGs
+//    Many of the KaTeX stretchy wide elements use a long SVG image and an
+//    overflow: hidden tactic to achieve a stretchy image while avoiding
+//    distortion of arrowheads or brace corners.
+//    The SVG typically contains a very long (400 em) arrow.
+//    The SVG is in a container span that has overflow: hidden, so the span
+//    acts like a window that exposes only part of the  SVG.
+//    The SVG always has a longer, thinner aspect ratio than the container span.
+//    After the SVG fills 100% of the height of the container span,
+//    there is a long arrow shaft left over. That left-over shaft is not shown.
+//    Instead, it is sliced off because the span's CSS has overflow: hidden.
+//    Thus, the reader sees an arrow that matches the subject matter width
+//    without distortion.
+//    Some functions, such as \cancel, need to vary their aspect ratio. These
+//    functions do not get the overflow SVG treatment.
+// Second Brush Stroke
+//    Low resolution monitors struggle to display images in fine detail.
+//    So browsers apply anti-aliasing. A long straight arrow shaft therefore
+//    will sometimes appear as if it has a blurred edge.
+//    To mitigate this, these SVG files contain a second "brush-stroke" on the
+//    arrow shafts. That is, a second long thin rectangular SVG path has been
+//    written directly on top of each arrow shaft. This reinforcement causes
+//    some of the screen pixels to display as black instead of the anti-aliased
+//    gray pixel that a  single path would generate. So we get arrow shafts
+//    whose edges appear to be sharper.
+// In the katexImagesData object just below, the dimensions all
+// correspond to path geometry inside the relevant SVG.
+// For example, \overrightarrow uses the same arrowhead as glyph U+2192
+// from the KaTeX Main font. The scaling factor is 1000.
+// That is, inside the font, that arrowhead is 522 units tall, which
+// corresponds to 0.522 em inside the document.
+
+
+const katexImagesData = {
+  //   path(s), minWidth, height, align
+  overrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"],
+  overleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"],
+  underrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"],
+  underleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"],
+  xrightarrow: [["rightarrow"], 1.469, 522, "xMaxYMin"],
+  xleftarrow: [["leftarrow"], 1.469, 522, "xMinYMin"],
+  Overrightarrow: [["doublerightarrow"], 0.888, 560, "xMaxYMin"],
+  xRightarrow: [["doublerightarrow"], 1.526, 560, "xMaxYMin"],
+  xLeftarrow: [["doubleleftarrow"], 1.526, 560, "xMinYMin"],
+  overleftharpoon: [["leftharpoon"], 0.888, 522, "xMinYMin"],
+  xleftharpoonup: [["leftharpoon"], 0.888, 522, "xMinYMin"],
+  xleftharpoondown: [["leftharpoondown"], 0.888, 522, "xMinYMin"],
+  overrightharpoon: [["rightharpoon"], 0.888, 522, "xMaxYMin"],
+  xrightharpoonup: [["rightharpoon"], 0.888, 522, "xMaxYMin"],
+  xrightharpoondown: [["rightharpoondown"], 0.888, 522, "xMaxYMin"],
+  xlongequal: [["longequal"], 0.888, 334, "xMinYMin"],
+  xtwoheadleftarrow: [["twoheadleftarrow"], 0.888, 334, "xMinYMin"],
+  xtwoheadrightarrow: [["twoheadrightarrow"], 0.888, 334, "xMaxYMin"],
+  overleftrightarrow: [["leftarrow", "rightarrow"], 0.888, 522],
+  overbrace: [["leftbrace", "midbrace", "rightbrace"], 1.6, 548],
+  underbrace: [["leftbraceunder", "midbraceunder", "rightbraceunder"], 1.6, 548],
+  underleftrightarrow: [["leftarrow", "rightarrow"], 0.888, 522],
+  xleftrightarrow: [["leftarrow", "rightarrow"], 1.75, 522],
+  xLeftrightarrow: [["doubleleftarrow", "doublerightarrow"], 1.75, 560],
+  xrightleftharpoons: [["leftharpoondownplus", "rightharpoonplus"], 1.75, 716],
+  xleftrightharpoons: [["leftharpoonplus", "rightharpoondownplus"], 1.75, 716],
+  xhookleftarrow: [["leftarrow", "righthook"], 1.08, 522],
+  xhookrightarrow: [["lefthook", "rightarrow"], 1.08, 522],
+  overlinesegment: [["leftlinesegment", "rightlinesegment"], 0.888, 522],
+  underlinesegment: [["leftlinesegment", "rightlinesegment"], 0.888, 522],
+  overgroup: [["leftgroup", "rightgroup"], 0.888, 342],
+  undergroup: [["leftgroupunder", "rightgroupunder"], 0.888, 342],
+  xmapsto: [["leftmapsto", "rightarrow"], 1.5, 522],
+  xtofrom: [["leftToFrom", "rightToFrom"], 1.75, 528],
+  // The next three arrows are from the mhchem package.
+  // In mhchem.sty, min-length is 2.0em. But these arrows might appear in the
+  // document as \xrightarrow or \xrightleftharpoons. Those have
+  // min-length = 1.75em, so we set min-length on these next three to match.
+  xrightleftarrows: [["baraboveleftarrow", "rightarrowabovebar"], 1.75, 901],
+  xrightequilibrium: [["baraboveshortleftharpoon", "rightharpoonaboveshortbar"], 1.75, 716],
+  xleftequilibrium: [["shortbaraboveleftharpoon", "shortrightharpoonabovebar"], 1.75, 716]
+};
+
+const groupLength = function groupLength(arg) {
+  if (arg.type === "ordgroup") {
+    return arg.body.length;
+  } else {
+    return 1;
+  }
+};
+
+const svgSpan = function svgSpan(group, options) {
+  // Create a span with inline SVG for the element.
+  function buildSvgSpan_() {
+    let viewBoxWidth = 400000; // default
+
+    const label = group.label.substr(1);
+
+    if (utils.contains(["widehat", "widecheck", "widetilde", "utilde"], label)) {
+      // Each type in the `if` statement corresponds to one of the ParseNode
+      // types below. This narrowing is required to access `grp.base`.
+      const grp = group; // There are four SVG images available for each function.
+      // Choose a taller image when there are more characters.
+
+      const numChars = groupLength(grp.base);
+      let viewBoxHeight;
+      let pathName;
+      let height;
+
+      if (numChars > 5) {
+        if (label === "widehat" || label === "widecheck") {
+          viewBoxHeight = 420;
+          viewBoxWidth = 2364;
+          height = 0.42;
+          pathName = label + "4";
+        } else {
+          viewBoxHeight = 312;
+          viewBoxWidth = 2340;
+          height = 0.34;
+          pathName = "tilde4";
+        }
+      } else {
+        const imgIndex = [1, 1, 2, 2, 3, 3][numChars];
+
+        if (label === "widehat" || label === "widecheck") {
+          viewBoxWidth = [0, 1062, 2364, 2364, 2364][imgIndex];
+          viewBoxHeight = [0, 239, 300, 360, 420][imgIndex];
+          height = [0, 0.24, 0.3, 0.3, 0.36, 0.42][imgIndex];
+          pathName = label + imgIndex;
+        } else {
+          viewBoxWidth = [0, 600, 1033, 2339, 2340][imgIndex];
+          viewBoxHeight = [0, 260, 286, 306, 312][imgIndex];
+          height = [0, 0.26, 0.286, 0.3, 0.306, 0.34][imgIndex];
+          pathName = "tilde" + imgIndex;
+        }
+      }
+
+      const path = new PathNode(pathName);
+      const svgNode = new SvgNode([path], {
+        "width": "100%",
+        "height": height + "em",
+        "viewBox": `0 0 ${viewBoxWidth} ${viewBoxHeight}`,
+        "preserveAspectRatio": "none"
+      });
+      return {
+        span: buildCommon.makeSvgSpan([], [svgNode], options),
+        minWidth: 0,
+        height
+      };
+    } else {
+      const spans = [];
+      const data = katexImagesData[label];
+      const paths = data[0],
+            minWidth = data[1],
+            viewBoxHeight = data[2];
+      const height = viewBoxHeight / 1000;
+      const numSvgChildren = paths.length;
+      let widthClasses;
+      let aligns;
+
+      if (numSvgChildren === 1) {
+        // $FlowFixMe: All these cases must be of the 4-tuple type.
+        const align1 = data[3];
+        widthClasses = ["hide-tail"];
+        aligns = [align1];
+      } else if (numSvgChildren === 2) {
+        widthClasses = ["halfarrow-left", "halfarrow-right"];
+        aligns = ["xMinYMin", "xMaxYMin"];
+      } else if (numSvgChildren === 3) {
+        widthClasses = ["brace-left", "brace-center", "brace-right"];
+        aligns = ["xMinYMin", "xMidYMin", "xMaxYMin"];
+      } else {
+        throw new Error(`Correct katexImagesData or update code here to support
+                    ${numSvgChildren} children.`);
+      }
+
+      for (let i = 0; i < numSvgChildren; i++) {
+        const path = new PathNode(paths[i]);
+        const svgNode = new SvgNode([path], {
+          "width": "400em",
+          "height": height + "em",
+          "viewBox": `0 0 ${viewBoxWidth} ${viewBoxHeight}`,
+          "preserveAspectRatio": aligns[i] + " slice"
+        });
+        const span = buildCommon.makeSvgSpan([widthClasses[i]], [svgNode], options);
+
+        if (numSvgChildren === 1) {
+          return {
+            span,
+            minWidth,
+            height
+          };
+        } else {
+          span.style.height = height + "em";
+          spans.push(span);
+        }
+      }
+
+      return {
+        span: buildCommon.makeSpan(["stretchy"], spans, options),
+        minWidth,
+        height
+      };
+    }
+  } // buildSvgSpan_()
+
+
+  const _buildSvgSpan_ = buildSvgSpan_(),
+        span = _buildSvgSpan_.span,
+        minWidth = _buildSvgSpan_.minWidth,
+        height = _buildSvgSpan_.height; // Note that we are returning span.depth = 0.
+  // Any adjustments relative to the baseline must be done in buildHTML.
+
+
+  span.height = height;
+  span.style.height = height + "em";
+
+  if (minWidth > 0) {
+    span.style.minWidth = minWidth + "em";
+  }
+
+  return span;
+};
+
+const encloseSpan = function encloseSpan(inner, label, pad, options) {
+  // Return an image span for \cancel, \bcancel, \xcancel, or \fbox
+  let img;
+  const totalHeight = inner.height + inner.depth + 2 * pad;
+
+  if (/fbox|color/.test(label)) {
+    img = buildCommon.makeSpan(["stretchy", label], [], options);
+
+    if (label === "fbox") {
+      const color = options.color && options.getColor();
+
+      if (color) {
+        img.style.borderColor = color;
+      }
+    }
+  } else {
+    // \cancel, \bcancel, or \xcancel
+    // Since \cancel's SVG is inline and it omits the viewBox attribute,
+    // its stroke-width will not vary with span area.
+    const lines = [];
+
+    if (/^[bx]cancel$/.test(label)) {
+      lines.push(new LineNode({
+        "x1": "0",
+        "y1": "0",
+        "x2": "100%",
+        "y2": "100%",
+        "stroke-width": "0.046em"
+      }));
+    }
+
+    if (/^x?cancel$/.test(label)) {
+      lines.push(new LineNode({
+        "x1": "0",
+        "y1": "100%",
+        "x2": "100%",
+        "y2": "0",
+        "stroke-width": "0.046em"
+      }));
+    }
+
+    const svgNode = new SvgNode(lines, {
+      "width": "100%",
+      "height": totalHeight + "em"
+    });
+    img = buildCommon.makeSvgSpan([], [svgNode], options);
+  }
+
+  img.height = totalHeight;
+  img.style.height = totalHeight + "em";
+  return img;
+};
+
+var stretchy = {
+  encloseSpan,
+  mathMLnode,
+  svgSpan
+};
+
+// NOTE: Unlike most `htmlBuilder`s, this one handles not only "accent", but
+const htmlBuilder = (grp, options) => {
+  // Accents are handled in the TeXbook pg. 443, rule 12.
+  let base;
+  let group;
+  const supSub = checkNodeType(grp, "supsub");
+  let supSubGroup;
+
+  if (supSub) {
+    // If our base is a character box, and we have superscripts and
+    // subscripts, the supsub will defer to us. In particular, we want
+    // to attach the superscripts and subscripts to the inner body (so
+    // that the position of the superscripts and subscripts won't be
+    // affected by the height of the accent). We accomplish this by
+    // sticking the base of the accent into the base of the supsub, and
+    // rendering that, while keeping track of where the accent is.
+    // The real accent group is the base of the supsub group
+    group = assertNodeType(supSub.base, "accent"); // The character box is the base of the accent group
+
+    base = group.base; // Stick the character box into the base of the supsub group
+
+    supSub.base = base; // Rerender the supsub group with its new base, and store that
+    // result.
+
+    supSubGroup = assertSpan(buildGroup(supSub, options)); // reset original base
+
+    supSub.base = group;
+  } else {
+    group = assertNodeType(grp, "accent");
+    base = group.base;
+  } // Build the base group
+
+
+  const body = buildGroup(base, options.havingCrampedStyle()); // Does the accent need to shift for the skew of a character?
+
+  const mustShift = group.isShifty && utils.isCharacterBox(base); // Calculate the skew of the accent. This is based on the line "If the
+  // nucleus is not a single character, let s = 0; otherwise set s to the
+  // kern amount for the nucleus followed by the \skewchar of its font."
+  // Note that our skew metrics are just the kern between each character
+  // and the skewchar.
+
+  let skew = 0;
+
+  if (mustShift) {
+    // If the base is a character box, then we want the skew of the
+    // innermost character. To do that, we find the innermost character:
+    const baseChar = utils.getBaseElem(base); // Then, we render its group to get the symbol inside it
+
+    const baseGroup = buildGroup(baseChar, options.havingCrampedStyle()); // Finally, we pull the skew off of the symbol.
+
+    skew = assertSymbolDomNode(baseGroup).skew; // Note that we now throw away baseGroup, because the layers we
+    // removed with getBaseElem might contain things like \color which
+    // we can't get rid of.
+    // TODO(emily): Find a better way to get the skew
+  } // calculate the amount of space between the body and the accent
+
+
+  let clearance = Math.min(body.height, options.fontMetrics().xHeight); // Build the accent
+
+  let accentBody;
+
+  if (!group.isStretchy) {
+    let accent;
+    let width;
+
+    if (group.label === "\\vec") {
+      // Before version 0.9, \vec used the combining font glyph U+20D7.
+      // But browsers, especially Safari, are not consistent in how they
+      // render combining characters when not preceded by a character.
+      // So now we use an SVG.
+      // If Safari reforms, we should consider reverting to the glyph.
+      accent = buildCommon.staticSvg("vec", options);
+      width = buildCommon.svgData.vec[1];
+    } else {
+      accent = buildCommon.makeOrd({
+        mode: group.mode,
+        text: group.label
+      }, options, "textord");
+      accent = assertSymbolDomNode(accent); // Remove the italic correction of the accent, because it only serves to
+      // shift the accent over to a place we don't want.
+
+      accent.italic = 0;
+      width = accent.width;
+    }
+
+    accentBody = buildCommon.makeSpan(["accent-body"], [accent]); // "Full" accents expand the width of the resulting symbol to be
+    // at least the width of the accent, and overlap directly onto the
+    // character without any vertical offset.
+
+    const accentFull = group.label === "\\textcircled";
+
+    if (accentFull) {
+      accentBody.classes.push('accent-full');
+      clearance = body.height;
+    } // Shift the accent over by the skew.
+
+
+    let left = skew; // CSS defines `.katex .accent .accent-body:not(.accent-full) { width: 0 }`
+    // so that the accent doesn't contribute to the bounding box.
+    // We need to shift the character by its width (effectively half
+    // its width) to compensate.
+
+    if (!accentFull) {
+      left -= width / 2;
+    }
+
+    accentBody.style.left = left + "em"; // \textcircled uses the \bigcirc glyph, so it needs some
+    // vertical adjustment to match LaTeX.
+
+    if (group.label === "\\textcircled") {
+      accentBody.style.top = ".2em";
+    }
+
+    accentBody = buildCommon.makeVList({
+      positionType: "firstBaseline",
+      children: [{
+        type: "elem",
+        elem: body
+      }, {
+        type: "kern",
+        size: -clearance
+      }, {
+        type: "elem",
+        elem: accentBody
+      }]
+    }, options);
+  } else {
+    accentBody = stretchy.svgSpan(group, options);
+    accentBody = buildCommon.makeVList({
+      positionType: "firstBaseline",
+      children: [{
+        type: "elem",
+        elem: body
+      }, {
+        type: "elem",
+        elem: accentBody,
+        wrapperClasses: ["svg-align"],
+        wrapperStyle: skew > 0 ? {
+          width: `calc(100% - ${2 * skew}em)`,
+          marginLeft: `${2 * skew}em`
+        } : undefined
+      }]
+    }, options);
+  }
+
+  const accentWrap = buildCommon.makeSpan(["mord", "accent"], [accentBody], options);
+
+  if (supSubGroup) {
+    // Here, we replace the "base" child of the supsub with our newly
+    // generated accent.
+    supSubGroup.children[0] = accentWrap; // Since we don't rerun the height calculation after replacing the
+    // accent, we manually recalculate height.
+
+    supSubGroup.height = Math.max(accentWrap.height, supSubGroup.height); // Accents should always be ords, even when their innards are not.
+
+    supSubGroup.classes[0] = "mord";
+    return supSubGroup;
+  } else {
+    return accentWrap;
+  }
+};
+
+const mathmlBuilder = (group, options) => {
+  const accentNode = group.isStretchy ? stretchy.mathMLnode(group.label) : new mathMLTree.MathNode("mo", [makeText(group.label, group.mode)]);
+  const node = new mathMLTree.MathNode("mover", [buildGroup$1(group.base, options), accentNode]);
+  node.setAttribute("accent", "true");
+  return node;
+};
+
+const NON_STRETCHY_ACCENT_REGEX = new RegExp(["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot", "\\mathring"].map(accent => `\\${accent}`).join("|")); // Accents
+
+defineFunction({
+  type: "accent",
+  names: ["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot", "\\mathring", "\\widecheck", "\\widehat", "\\widetilde", "\\overrightarrow", "\\overleftarrow", "\\Overrightarrow", "\\overleftrightarrow", "\\overgroup", "\\overlinesegment", "\\overleftharpoon", "\\overrightharpoon"],
+  props: {
+    numArgs: 1
+  },
+  handler: (context, args) => {
+    const base = args[0];
+    const isStretchy = !NON_STRETCHY_ACCENT_REGEX.test(context.funcName);
+    const isShifty = !isStretchy || context.funcName === "\\widehat" || context.funcName === "\\widetilde" || context.funcName === "\\widecheck";
+    return {
+      type: "accent",
+      mode: context.parser.mode,
+      label: context.funcName,
+      isStretchy: isStretchy,
+      isShifty: isShifty,
+      base: base
+    };
+  },
+  htmlBuilder,
+  mathmlBuilder
+}); // Text-mode accents
+
+defineFunction({
+  type: "accent",
+  names: ["\\'", "\\`", "\\^", "\\~", "\\=", "\\u", "\\.", '\\"', "\\r", "\\H", "\\v", "\\textcircled"],
+  props: {
+    numArgs: 1,
+    allowedInText: true,
+    allowedInMath: false
+  },
+  handler: (context, args) => {
+    const base = args[0];
+    return {
+      type: "accent",
+      mode: context.parser.mode,
+      label: context.funcName,
+      isStretchy: false,
+      isShifty: true,
+      base: base
+    };
+  },
+  htmlBuilder,
+  mathmlBuilder
+});
+
+// Horizontal overlap functions
+defineFunction({
+  type: "accentUnder",
+  names: ["\\underleftarrow", "\\underrightarrow", "\\underleftrightarrow", "\\undergroup", "\\underlinesegment", "\\utilde"],
+  props: {
+    numArgs: 1
+  },
+  handler: (_ref, args) => {
+    let parser = _ref.parser,
+        funcName = _ref.funcName;
+    const base = args[0];
+    return {
+      type: "accentUnder",
+      mode: parser.mode,
+      label: funcName,
+      base: base
+    };
+  },
+  htmlBuilder: (group, options) => {
+    // Treat under accents much like underlines.
+    const innerGroup = buildGroup(group.base, options);
+    const accentBody = stretchy.svgSpan(group, options);
+    const kern = group.label === "\\utilde" ? 0.12 : 0; // Generate the vlist, with the appropriate kerns
+
+    const vlist = buildCommon.makeVList({
+      positionType: "bottom",
+      positionData: accentBody.height + kern,
+      children: [{
+        type: "elem",
+        elem: accentBody,
+        wrapperClasses: ["svg-align"]
+      }, {
+        type: "kern",
+        size: kern
+      }, {
+        type: "elem",
+        elem: innerGroup
+      }]
+    }, options);
+    return buildCommon.makeSpan(["mord", "accentunder"], [vlist], options);
+  },
+  mathmlBuilder: (group, options) => {
+    const accentNode = stretchy.mathMLnode(group.label);
+    const node = new mathMLTree.MathNode("munder", [buildGroup$1(group.base, options), accentNode]);
+    node.setAttribute("accentunder", "true");
+    return node;
+  }
+});
+
+// Helper function
+const paddedNode = group => {
+  const node = new mathMLTree.MathNode("mpadded", group ? [group] : []);
+  node.setAttribute("width", "+0.6em");
+  node.setAttribute("lspace", "0.3em");
+  return node;
+}; // Stretchy arrows with an optional argument
+
+
+defineFunction({
+  type: "xArrow",
+  names: ["\\xleftarrow", "\\xrightarrow", "\\xLeftarrow", "\\xRightarrow", "\\xleftrightarrow", "\\xLeftrightarrow", "\\xhookleftarrow", "\\xhookrightarrow", "\\xmapsto", "\\xrightharpoondown", "\\xrightharpoonup", "\\xleftharpoondown", "\\xleftharpoonup", "\\xrightleftharpoons", "\\xleftrightharpoons", "\\xlongequal", "\\xtwoheadrightarrow", "\\xtwoheadleftarrow", "\\xtofrom", // The next 3 functions are here to support the mhchem extension.
+  // Direct use of these functions is discouraged and may break someday.
+  "\\xrightleftarrows", "\\xrightequilibrium", "\\xleftequilibrium"],
+  props: {
+    numArgs: 1,
+    numOptionalArgs: 1
+  },
+
+  handler(_ref, args, optArgs) {
+    let parser = _ref.parser,
+        funcName = _ref.funcName;
+    return {
+      type: "xArrow",
+      mode: parser.mode,
+      label: funcName,
+      body: args[0],
+      below: optArgs[0]
+    };
+  },
+
+  // Flow is unable to correctly infer the type of `group`, even though it's
+  // unamibiguously determined from the passed-in `type` above.
+  htmlBuilder(group, options) {
+    const style = options.style; // Build the argument groups in the appropriate style.
+    // Ref: amsmath.dtx:   \hbox{$\scriptstyle\mkern#3mu{#6}\mkern#4mu$}%
+    // Some groups can return document fragments.  Handle those by wrapping
+    // them in a span.
+
+    let newOptions = options.havingStyle(style.sup());
+    const upperGroup = buildCommon.wrapFragment(buildGroup(group.body, newOptions, options), options);
+    upperGroup.classes.push("x-arrow-pad");
+    let lowerGroup;
+
+    if (group.below) {
+      // Build the lower group
+      newOptions = options.havingStyle(style.sub());
+      lowerGroup = buildCommon.wrapFragment(buildGroup(group.below, newOptions, options), options);
+      lowerGroup.classes.push("x-arrow-pad");
+    }
+
+    const arrowBody = stretchy.svgSpan(group, options); // Re shift: Note that stretchy.svgSpan returned arrowBody.depth = 0.
+    // The point we want on the math axis is at 0.5 * arrowBody.height.
+
+    const arrowShift = -options.fontMetrics().axisHeight + 0.5 * arrowBody.height; // 2 mu kern. Ref: amsmath.dtx: #7\if0#2\else\mkern#2mu\fi
+
+    let upperShift = -options.fontMetrics().axisHeight - 0.5 * arrowBody.height - 0.111; // 0.111 em = 2 mu
+
+    if (upperGroup.depth > 0.25 || group.label === "\\xleftequilibrium") {
+      upperShift -= upperGroup.depth; // shift up if depth encroaches
+    } // Generate the vlist
+
+
+    let vlist;
+
+    if (lowerGroup) {
+      const lowerShift = -options.fontMetrics().axisHeight + lowerGroup.height + 0.5 * arrowBody.height + 0.111;
+      vlist = buildCommon.makeVList({
+        positionType: "individualShift",
+        children: [{
+          type: "elem",
+          elem: upperGroup,
+          shift: upperShift
+        }, {
+          type: "elem",
+          elem: arrowBody,
+          shift: arrowShift
+        }, {
+          type: "elem",
+          elem: lowerGroup,
+          shift: lowerShift
+        }]
+      }, options);
+    } else {
+      vlist = buildCommon.makeVList({
+        positionType: "individualShift",
+        children: [{
+          type: "elem",
+          elem: upperGroup,
+          shift: upperShift
+        }, {
+          type: "elem",
+          elem: arrowBody,
+          shift: arrowShift
+        }]
+      }, options);
+    } // $FlowFixMe: Replace this with passing "svg-align" into makeVList.
+
+
+    vlist.children[0].children[0].children[1].classes.push("svg-align");
+    return buildCommon.makeSpan(["mrel", "x-arrow"], [vlist], options);
+  },
+
+  mathmlBuilder(group, options) {
+    const arrowNode = stretchy.mathMLnode(group.label);
+    let node;
+
+    if (group.body) {
+      const upperNode = paddedNode(buildGroup$1(group.body, options));
+
+      if (group.below) {
+        const lowerNode = paddedNode(buildGroup$1(group.below, options));
+        node = new mathMLTree.MathNode("munderover", [arrowNode, lowerNode, upperNode]);
+      } else {
+        node = new mathMLTree.MathNode("mover", [arrowNode, upperNode]);
+      }
+    } else if (group.below) {
+      const lowerNode = paddedNode(buildGroup$1(group.below, options));
+      node = new mathMLTree.MathNode("munder", [arrowNode, lowerNode]);
+    } else {
+      // This should never happen.
+      // Parser.js throws an error if there is no argument.
+      node = paddedNode();
+      node = new mathMLTree.MathNode("mover", [arrowNode, node]);
+    }
+
+    return node;
+  }
+
+});
+
+// {123} and converts into symbol with code 123.  It is used by the *macro*
+// \char defined in macros.js.
+
+defineFunction({
+  type: "textord",
+  names: ["\\@char"],
+  props: {
+    numArgs: 1,
+    allowedInText: true
+  },
+
+  handler(_ref, args) {
+    let parser = _ref.parser;
+    const arg = assertNodeType(args[0], "ordgroup");
+    const group = arg.body;
+    let number = "";
+
+    for (let i = 0; i < group.length; i++) {
+      const node = assertNodeType(group[i], "textord");
+      number += node.text;
+    }
+
+    const code = parseInt(number);
+
+    if (isNaN(code)) {
+      throw new ParseError(`\\@char has non-numeric argument ${number}`);
+    }
+
+    return {
+      type: "textord",
+      mode: parser.mode,
+      text: String.fromCharCode(code)
+    };
+  }
+
+});
+
+const htmlBuilder$1 = (group, options) => {
+  const elements = buildExpression(group.body, options.withColor(group.color), false); // \color isn't supposed to affect the type of the elements it contains.
+  // To accomplish this, we wrap the results in a fragment, so the inner
+  // elements will be able to directly interact with their neighbors. For
+  // example, `\color{red}{2 +} 3` has the same spacing as `2 + 3`
+
+  return buildCommon.makeFragment(elements);
+};
+
+const mathmlBuilder$1 = (group, options) => {
+  const inner = buildExpression$1(group.body, options.withColor(group.color));
+  const node = new mathMLTree.MathNode("mstyle", inner);
+  node.setAttribute("mathcolor", group.color);
+  return node;
+};
+
+defineFunction({
+  type: "color",
+  names: ["\\textcolor"],
+  props: {
+    numArgs: 2,
+    allowedInText: true,
+    greediness: 3,
+    argTypes: ["color", "original"]
+  },
+
+  handler(_ref, args) {
+    let parser = _ref.parser;
+    const color = assertNodeType(args[0], "color-token").color;
+    const body = args[1];
+    return {
+      type: "color",
+      mode: parser.mode,
+      color,
+      body: ordargument(body)
+    };
+  },
+
+  htmlBuilder: htmlBuilder$1,
+  mathmlBuilder: mathmlBuilder$1
+});
+defineFunction({
+  type: "color",
+  names: ["\\color"],
+  props: {
+    numArgs: 1,
+    allowedInText: true,
+    greediness: 3,
+    argTypes: ["color"]
+  },
+
+  handler(_ref2, args) {
+    let parser = _ref2.parser,
+        breakOnTokenText = _ref2.breakOnTokenText;
+    const color = assertNodeType(args[0], "color-token").color; // Set macro \current@color in current namespace to store the current
+    // color, mimicking the behavior of color.sty.
+    // This is currently used just to correctly color a \right
+    // that follows a \color command.
+
+    parser.gullet.macros.set("\\current@color", color); // Parse out the implicit body that should be colored.
+
+    const body = parser.parseExpression(true, breakOnTokenText);
+    return {
+      type: "color",
+      mode: parser.mode,
+      color,
+      body
+    };
+  },
+
+  htmlBuilder: htmlBuilder$1,
+  mathmlBuilder: mathmlBuilder$1
+});
+
+// Row breaks within tabular environments, and line breaks at top level
+// same signature, we implement them as one megafunction, with newRow
+// indicating whether we're in the \cr case, and newLine indicating whether
+// to break the line in the \newline case.
+
+defineFunction({
+  type: "cr",
+  names: ["\\cr", "\\newline"],
+  props: {
+    numArgs: 0,
+    numOptionalArgs: 1,
+    argTypes: ["size"],
+    allowedInText: true
+  },
+
+  handler(_ref, args, optArgs) {
+    let parser = _ref.parser,
+        funcName = _ref.funcName;
+    const size = optArgs[0];
+    const newRow = funcName === "\\cr";
+    let newLine = false;
+
+    if (!newRow) {
+      if (parser.settings.displayMode && parser.settings.useStrictBehavior("newLineInDisplayMode", "In LaTeX, \\\\ or \\newline " + "does nothing in display mode")) {
+        newLine = false;
+      } else {
+        newLine = true;
+      }
+    }
+
+    return {
+      type: "cr",
+      mode: parser.mode,
+      newLine,
+      newRow,
+      size: size && assertNodeType(size, "size").value
+    };
+  },
+
+  // The following builders are called only at the top level,
+  // not within tabular/array environments.
+  htmlBuilder(group, options) {
+    if (group.newRow) {
+      throw new ParseError("\\cr valid only within a tabular/array environment");
+    }
+
+    const span = buildCommon.makeSpan(["mspace"], [], options);
+
+    if (group.newLine) {
+      span.classes.push("newline");
+
+      if (group.size) {
+        span.style.marginTop = calculateSize(group.size, options) + "em";
+      }
+    }
+
+    return span;
+  },
+
+  mathmlBuilder(group, options) {
+    const node = new mathMLTree.MathNode("mspace");
+
+    if (group.newLine) {
+      node.setAttribute("linebreak", "newline");
+
+      if (group.size) {
+        node.setAttribute("height", calculateSize(group.size, options) + "em");
+      }
+    }
+
+    return node;
+  }
+
+});
+
+/**
+ * This file deals with creating delimiters of various sizes. The TeXbook
+ * discusses these routines on page 441-442, in the "Another subroutine sets box
+ * x to a specified variable delimiter" paragraph.
+ *
+ * There are three main routines here. `makeSmallDelim` makes a delimiter in the
+ * normal font, but in either text, script, or scriptscript style.
+ * `makeLargeDelim` makes a delimiter in textstyle, but in one of the Size1,
+ * Size2, Size3, or Size4 fonts. `makeStackedDelim` makes a delimiter out of
+ * smaller pieces that are stacked on top of one another.
+ *
+ * The functions take a parameter `center`, which determines if the delimiter
+ * should be centered around the axis.
+ *
+ * Then, there are three exposed functions. `sizedDelim` makes a delimiter in
+ * one of the given sizes. This is used for things like `\bigl`.
+ * `customSizedDelim` makes a delimiter with a given total height+depth. It is
+ * called in places like `\sqrt`. `leftRightDelim` makes an appropriate
+ * delimiter which surrounds an expression of a given height an depth. It is
+ * used in `\left` and `\right`.
+ */
+
+/**
+ * Get the metrics for a given symbol and font, after transformation (i.e.
+ * after following replacement from symbols.js)
+ */
+const getMetrics = function getMetrics(symbol, font, mode) {
+  const replace = symbols.math[symbol] && symbols.math[symbol].replace;
+  const metrics = getCharacterMetrics(replace || symbol, font, mode);
+
+  if (!metrics) {
+    throw new Error(`Unsupported symbol ${symbol} and font size ${font}.`);
+  }
+
+  return metrics;
+};
+/**
+ * Puts a delimiter span in a given style, and adds appropriate height, depth,
+ * and maxFontSizes.
+ */
+
+
+const styleWrap = function styleWrap(delim, toStyle, options, classes) {
+  const newOptions = options.havingBaseStyle(toStyle);
+  const span = buildCommon.makeSpan(classes.concat(newOptions.sizingClasses(options)), [delim], options);
+  const delimSizeMultiplier = newOptions.sizeMultiplier / options.sizeMultiplier;
+  span.height *= delimSizeMultiplier;
+  span.depth *= delimSizeMultiplier;
+  span.maxFontSize = newOptions.sizeMultiplier;
+  return span;
+};
+
+const centerSpan = function centerSpan(span, options, style) {
+  const newOptions = options.havingBaseStyle(style);
+  const shift = (1 - options.sizeMultiplier / newOptions.sizeMultiplier) * options.fontMetrics().axisHeight;
+  span.classes.push("delimcenter");
+  span.style.top = shift + "em";
+  span.height -= shift;
+  span.depth += shift;
+};
+/**
+ * Makes a small delimiter. This is a delimiter that comes in the Main-Regular
+ * font, but is restyled to either be in textstyle, scriptstyle, or
+ * scriptscriptstyle.
+ */
+
+
+const makeSmallDelim = function makeSmallDelim(delim, style, center, options, mode, classes) {
+  const text = buildCommon.makeSymbol(delim, "Main-Regular", mode, options);
+  const span = styleWrap(text, style, options, classes);
+
+  if (center) {
+    centerSpan(span, options, style);
+  }
+
+  return span;
+};
+/**
+ * Builds a symbol in the given font size (note size is an integer)
+ */
+
+
+const mathrmSize = function mathrmSize(value, size, mode, options) {
+  return buildCommon.makeSymbol(value, "Size" + size + "-Regular", mode, options);
+};
+/**
+ * Makes a large delimiter. This is a delimiter that comes in the Size1, Size2,
+ * Size3, or Size4 fonts. It is always rendered in textstyle.
+ */
+
+
+const makeLargeDelim = function makeLargeDelim(delim, size, center, options, mode, classes) {
+  const inner = mathrmSize(delim, size, mode, options);
+  const span = styleWrap(buildCommon.makeSpan(["delimsizing", "size" + size], [inner], options), Style$1.TEXT, options, classes);
+
+  if (center) {
+    centerSpan(span, options, Style$1.TEXT);
+  }
+
+  return span;
+};
+/**
+ * Make an inner span with the given offset and in the given font. This is used
+ * in `makeStackedDelim` to make the stacking pieces for the delimiter.
+ */
+
+
+const makeInner = function makeInner(symbol, font, mode) {
+  let sizeClass; // Apply the correct CSS class to choose the right font.
+
+  if (font === "Size1-Regular") {
+    sizeClass = "delim-size1";
+  } else
+    /* if (font === "Size4-Regular") */
+    {
+      sizeClass = "delim-size4";
+    }
+
+  const inner = buildCommon.makeSpan(["delimsizinginner", sizeClass], [buildCommon.makeSpan([], [buildCommon.makeSymbol(symbol, font, mode)])]); // Since this will be passed into `makeVList` in the end, wrap the element
+  // in the appropriate tag that VList uses.
+
+  return {
+    type: "elem",
+    elem: inner
+  };
+}; // Helper for makeStackedDelim
+
+
+const lap = {
+  type: "kern",
+  size: -0.005
+};
+/**
+ * Make a stacked delimiter out of a given delimiter, with the total height at
+ * least `heightTotal`. This routine is mentioned on page 442 of the TeXbook.
+ */
+
+const makeStackedDelim = function makeStackedDelim(delim, heightTotal, center, options, mode, classes) {
+  // There are four parts, the top, an optional middle, a repeated part, and a
+  // bottom.
+  let top;
+  let middle;
+  let repeat;
+  let bottom;
+  top = repeat = bottom = delim;
+  middle = null; // Also keep track of what font the delimiters are in
+
+  let font = "Size1-Regular"; // We set the parts and font based on the symbol. Note that we use
+  // '\u23d0' instead of '|' and '\u2016' instead of '\\|' for the
+  // repeats of the arrows
+
+  if (delim === "\\uparrow") {
+    repeat = bottom = "\u23d0";
+  } else if (delim === "\\Uparrow") {
+    repeat = bottom = "\u2016";
+  } else if (delim === "\\downarrow") {
+    top = repeat = "\u23d0";
+  } else if (delim === "\\Downarrow") {
+    top = repeat = "\u2016";
+  } else if (delim === "\\updownarrow") {
+    top = "\\uparrow";
+    repeat = "\u23d0";
+    bottom = "\\downarrow";
+  } else if (delim === "\\Updownarrow") {
+    top = "\\Uparrow";
+    repeat = "\u2016";
+    bottom = "\\Downarrow";
+  } else if (delim === "[" || delim === "\\lbrack") {
+    top = "\u23a1";
+    repeat = "\u23a2";
+    bottom = "\u23a3";
+    font = "Size4-Regular";
+  } else if (delim === "]" || delim === "\\rbrack") {
+    top = "\u23a4";
+    repeat = "\u23a5";
+    bottom = "\u23a6";
+    font = "Size4-Regular";
+  } else if (delim === "\\lfloor" || delim === "\u230a") {
+    repeat = top = "\u23a2";
+    bottom = "\u23a3";
+    font = "Size4-Regular";
+  } else if (delim === "\\lceil" || delim === "\u2308") {
+    top = "\u23a1";
+    repeat = bottom = "\u23a2";
+    font = "Size4-Regular";
+  } else if (delim === "\\rfloor" || delim === "\u230b") {
+    repeat = top = "\u23a5";
+    bottom = "\u23a6";
+    font = "Size4-Regular";
+  } else if (delim === "\\rceil" || delim === "\u2309") {
+    top = "\u23a4";
+    repeat = bottom = "\u23a5";
+    font = "Size4-Regular";
+  } else if (delim === "(" || delim === "\\lparen") {
+    top = "\u239b";
+    repeat = "\u239c";
+    bottom = "\u239d";
+    font = "Size4-Regular";
+  } else if (delim === ")" || delim === "\\rparen") {
+    top = "\u239e";
+    repeat = "\u239f";
+    bottom = "\u23a0";
+    font = "Size4-Regular";
+  } else if (delim === "\\{" || delim === "\\lbrace") {
+    top = "\u23a7";
+    middle = "\u23a8";
+    bottom = "\u23a9";
+    repeat = "\u23aa";
+    font = "Size4-Regular";
+  } else if (delim === "\\}" || delim === "\\rbrace") {
+    top = "\u23ab";
+    middle = "\u23ac";
+    bottom = "\u23ad";
+    repeat = "\u23aa";
+    font = "Size4-Regular";
+  } else if (delim === "\\lgroup" || delim === "\u27ee") {
+    top = "\u23a7";
+    bottom = "\u23a9";
+    repeat = "\u23aa";
+    font = "Size4-Regular";
+  } else if (delim === "\\rgroup" || delim === "\u27ef") {
+    top = "\u23ab";
+    bottom = "\u23ad";
+    repeat = "\u23aa";
+    font = "Size4-Regular";
+  } else if (delim === "\\lmoustache" || delim === "\u23b0") {
+    top = "\u23a7";
+    bottom = "\u23ad";
+    repeat = "\u23aa";
+    font = "Size4-Regular";
+  } else if (delim === "\\rmoustache" || delim === "\u23b1") {
+    top = "\u23ab";
+    bottom = "\u23a9";
+    repeat = "\u23aa";
+    font = "Size4-Regular";
+  } // Get the metrics of the four sections
+
+
+  const topMetrics = getMetrics(top, font, mode);
+  const topHeightTotal = topMetrics.height + topMetrics.depth;
+  const repeatMetrics = getMetrics(repeat, font, mode);
+  const repeatHeightTotal = repeatMetrics.height + repeatMetrics.depth;
+  const bottomMetrics = getMetrics(bottom, font, mode);
+  const bottomHeightTotal = bottomMetrics.height + bottomMetrics.depth;
+  let middleHeightTotal = 0;
+  let middleFactor = 1;
+
+  if (middle !== null) {
+    const middleMetrics = getMetrics(middle, font, mode);
+    middleHeightTotal = middleMetrics.height + middleMetrics.depth;
+    middleFactor = 2; // repeat symmetrically above and below middle
+  } // Calcuate the minimal height that the delimiter can have.
+  // It is at least the size of the top, bottom, and optional middle combined.
+
+
+  const minHeight = topHeightTotal + bottomHeightTotal + middleHeightTotal; // Compute the number of copies of the repeat symbol we will need
+
+  const repeatCount = Math.max(0, Math.ceil((heightTotal - minHeight) / (middleFactor * repeatHeightTotal))); // Compute the total height of the delimiter including all the symbols
+
+  const realHeightTotal = minHeight + repeatCount * middleFactor * repeatHeightTotal; // The center of the delimiter is placed at the center of the axis. Note
+  // that in this context, "center" means that the delimiter should be
+  // centered around the axis in the current style, while normally it is
+  // centered around the axis in textstyle.
+
+  let axisHeight = options.fontMetrics().axisHeight;
+
+  if (center) {
+    axisHeight *= options.sizeMultiplier;
+  } // Calculate the depth
+
+
+  const depth = realHeightTotal / 2 - axisHeight; // This function differs from the TeX procedure in one way.
+  // We shift each repeat element downwards by 0.005em, to prevent a gap
+  // due to browser floating point rounding error.
+  // Then, at the last element-to element joint, we add one extra repeat
+  // element to cover the gap created by the shifts.
+  // Find the shift needed to align the upper end of the extra element at a point
+  // 0.005em above the lower end of the top element.
+
+  const shiftOfExtraElement = (repeatCount + 1) * 0.005 - repeatHeightTotal; // Now, we start building the pieces that will go into the vlist
+  // Keep a list of the inner pieces
+
+  const inners = []; // Add the bottom symbol
+
+  inners.push(makeInner(bottom, font, mode));
+
+  if (middle === null) {
+    // Add that many symbols
+    for (let i = 0; i < repeatCount; i++) {
+      inners.push(lap); // overlap
+
+      inners.push(makeInner(repeat, font, mode));
+    }
+  } else {
+    // When there is a middle bit, we need the middle part and two repeated
+    // sections
+    for (let i = 0; i < repeatCount; i++) {
+      inners.push(lap);
+      inners.push(makeInner(repeat, font, mode));
+    } // Insert one extra repeat element.
+
+
+    inners.push({
+      type: "kern",
+      size: shiftOfExtraElement
+    });
+    inners.push(makeInner(repeat, font, mode));
+    inners.push(lap); // Now insert the middle of the brace.
+
+    inners.push(makeInner(middle, font, mode));
+
+    for (let i = 0; i < repeatCount; i++) {
+      inners.push(lap);
+      inners.push(makeInner(repeat, font, mode));
+    }
+  } // To cover the gap create by the overlaps, insert one more repeat element,
+  // at a position that juts 0.005 above the bottom of the top element.
+
+
+  inners.push({
+    type: "kern",
+    size: shiftOfExtraElement
+  });
+  inners.push(makeInner(repeat, font, mode));
+  inners.push(lap); // Add the top symbol
+
+  inners.push(makeInner(top, font, mode)); // Finally, build the vlist
+
+  const newOptions = options.havingBaseStyle(Style$1.TEXT);
+  const inner = buildCommon.makeVList({
+    positionType: "bottom",
+    positionData: depth,
+    children: inners
+  }, newOptions);
+  return styleWrap(buildCommon.makeSpan(["delimsizing", "mult"], [inner], newOptions), Style$1.TEXT, options, classes);
+}; // All surds have 0.08em padding above the viniculum inside the SVG.
+// That keeps browser span height rounding error from pinching the line.
+
+
+const vbPad = 80; // padding above the surd, measured inside the viewBox.
+
+const emPad = 0.08; // padding, in ems, measured in the document.
+
+const sqrtSvg = function sqrtSvg(sqrtName, height, viewBoxHeight, extraViniculum, options) {
+  const path = sqrtPath(sqrtName, extraViniculum, viewBoxHeight);
+  const pathNode = new PathNode(sqrtName, path);
+  const svg = new SvgNode([pathNode], {
+    // Note: 1000:1 ratio of viewBox to document em width.
+    "width": "400em",
+    "height": height + "em",
+    "viewBox": "0 0 400000 " + viewBoxHeight,
+    "preserveAspectRatio": "xMinYMin slice"
+  });
+  return buildCommon.makeSvgSpan(["hide-tail"], [svg], options);
+};
+/**
+ * Make a sqrt image of the given height,
+ */
+
+
+const makeSqrtImage = function makeSqrtImage(height, options) {
+  // Define a newOptions that removes the effect of size changes such as \Huge.
+  // We don't pick different a height surd for \Huge. For it, we scale up.
+  const newOptions = options.havingBaseSizing(); // Pick the desired surd glyph from a sequence of surds.
+
+  const delim = traverseSequence("\\surd", height * newOptions.sizeMultiplier, stackLargeDelimiterSequence, newOptions);
+  let sizeMultiplier = newOptions.sizeMultiplier; // default
+  // The standard sqrt SVGs each have a 0.04em thick viniculum.
+  // If Settings.minRuleThickness is larger than that, we add extraViniculum.
+
+  const extraViniculum = Math.max(0, options.minRuleThickness - options.fontMetrics().sqrtRuleThickness); // Create a span containing an SVG image of a sqrt symbol.
+
+  let span;
+  let spanHeight = 0;
+  let texHeight = 0;
+  let viewBoxHeight = 0;
+  let advanceWidth; // We create viewBoxes with 80 units of "padding" above each surd.
+  // Then browser rounding error on the parent span height will not
+  // encroach on the ink of the viniculum. But that padding is not
+  // included in the TeX-like `height` used for calculation of
+  // vertical alignment. So texHeight = span.height < span.style.height.
+
+  if (delim.type === "small") {
+    // Get an SVG that is derived from glyph U+221A in font KaTeX-Main.
+    // 1000 unit normal glyph height.
+    viewBoxHeight = 1000 + 1000 * extraViniculum + vbPad;
+
+    if (height < 1.0) {
+      sizeMultiplier = 1.0; // mimic a \textfont radical
+    } else if (height < 1.4) {
+      sizeMultiplier = 0.7; // mimic a \scriptfont radical
+    }
+
+    spanHeight = (1.0 + extraViniculum + emPad) / sizeMultiplier;
+    texHeight = (1.00 + extraViniculum) / sizeMultiplier;
+    span = sqrtSvg("sqrtMain", spanHeight, viewBoxHeight, extraViniculum, options);
+    span.style.minWidth = "0.853em";
+    advanceWidth = 0.833 / sizeMultiplier; // from the font.
+  } else if (delim.type === "large") {
+    // These SVGs come from fonts: KaTeX_Size1, _Size2, etc.
+    viewBoxHeight = (1000 + vbPad) * sizeToMaxHeight[delim.size];
+    texHeight = (sizeToMaxHeight[delim.size] + extraViniculum) / sizeMultiplier;
+    spanHeight = (sizeToMaxHeight[delim.size] + extraViniculum + emPad) / sizeMultiplier;
+    span = sqrtSvg("sqrtSize" + delim.size, spanHeight, viewBoxHeight, extraViniculum, options);
+    span.style.minWidth = "1.02em";
+    advanceWidth = 1.0 / sizeMultiplier; // 1.0 from the font.
+  } else {
+    // Tall sqrt. In TeX, this would be stacked using multiple glyphs.
+    // We'll use a single SVG to accomplish the same thing.
+    spanHeight = height + extraViniculum + emPad;
+    texHeight = height + extraViniculum;
+    viewBoxHeight = Math.floor(1000 * height + extraViniculum) + vbPad;
+    span = sqrtSvg("sqrtTall", spanHeight, viewBoxHeight, extraViniculum, options);
+    span.style.minWidth = "0.742em";
+    advanceWidth = 1.056;
+  }
+
+  span.height = texHeight;
+  span.style.height = spanHeight + "em";
+  return {
+    span,
+    advanceWidth,
+    // Calculate the actual line width.
+    // This actually should depend on the chosen font -- e.g. \boldmath
+    // should use the thicker surd symbols from e.g. KaTeX_Main-Bold, and
+    // have thicker rules.
+    ruleWidth: (options.fontMetrics().sqrtRuleThickness + extraViniculum) * sizeMultiplier
+  };
+}; // There are three kinds of delimiters, delimiters that stack when they become
+// too large
+
+
+const stackLargeDelimiters = ["(", "\\lparen", ")", "\\rparen", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "\u230a", "\u230b", "\\lceil", "\\rceil", "\u2308", "\u2309", "\\surd"]; // delimiters that always stack
+
+const stackAlwaysDelimiters = ["\\uparrow", "\\downarrow", "\\updownarrow", "\\Uparrow", "\\Downarrow", "\\Updownarrow", "|", "\\|", "\\vert", "\\Vert", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "\u27ee", "\u27ef", "\\lmoustache", "\\rmoustache", "\u23b0", "\u23b1"]; // and delimiters that never stack
+
+const stackNeverDelimiters = ["<", ">", "\\langle", "\\rangle", "/", "\\backslash", "\\lt", "\\gt"]; // Metrics of the different sizes. Found by looking at TeX's output of
+// $\bigl| // \Bigl| \biggl| \Biggl| \showlists$
+// Used to create stacked delimiters of appropriate sizes in makeSizedDelim.
+
+const sizeToMaxHeight = [0, 1.2, 1.8, 2.4, 3.0];
+/**
+ * Used to create a delimiter of a specific size, where `size` is 1, 2, 3, or 4.
+ */
+
+const makeSizedDelim = function makeSizedDelim(delim, size, options, mode, classes) {
+  // < and > turn into \langle and \rangle in delimiters
+  if (delim === "<" || delim === "\\lt" || delim === "\u27e8") {
+    delim = "\\langle";
+  } else if (delim === ">" || delim === "\\gt" || delim === "\u27e9") {
+    delim = "\\rangle";
+  } // Sized delimiters are never centered.
+
+
+  if (utils.contains(stackLargeDelimiters, delim) || utils.contains(stackNeverDelimiters, delim)) {
+    return makeLargeDelim(delim, size, false, options, mode, classes);
+  } else if (utils.contains(stackAlwaysDelimiters, delim)) {
+    return makeStackedDelim(delim, sizeToMaxHeight[size], false, options, mode, classes);
+  } else {
+    throw new ParseError("Illegal delimiter: '" + delim + "'");
+  }
+};
+/**
+ * There are three different sequences of delimiter sizes that the delimiters
+ * follow depending on the kind of delimiter. This is used when creating custom
+ * sized delimiters to decide whether to create a small, large, or stacked
+ * delimiter.
+ *
+ * In real TeX, these sequences aren't explicitly defined, but are instead
+ * defined inside the font metrics. Since there are only three sequences that
+ * are possible for the delimiters that TeX defines, it is easier to just encode
+ * them explicitly here.
+ */
+
+
+// Delimiters that never stack try small delimiters and large delimiters only
+const stackNeverDelimiterSequence = [{
+  type: "small",
+  style: Style$1.SCRIPTSCRIPT
+}, {
+  type: "small",
+  style: Style$1.SCRIPT
+}, {
+  type: "small",
+  style: Style$1.TEXT
+}, {
+  type: "large",
+  size: 1
+}, {
+  type: "large",
+  size: 2
+}, {
+  type: "large",
+  size: 3
+}, {
+  type: "large",
+  size: 4
+}]; // Delimiters that always stack try the small delimiters first, then stack
+
+const stackAlwaysDelimiterSequence = [{
+  type: "small",
+  style: Style$1.SCRIPTSCRIPT
+}, {
+  type: "small",
+  style: Style$1.SCRIPT
+}, {
+  type: "small",
+  style: Style$1.TEXT
+}, {
+  type: "stack"
+}]; // Delimiters that stack when large try the small and then large delimiters, and
+// stack afterwards
+
+const stackLargeDelimiterSequence = [{
+  type: "small",
+  style: Style$1.SCRIPTSCRIPT
+}, {
+  type: "small",
+  style: Style$1.SCRIPT
+}, {
+  type: "small",
+  style: Style$1.TEXT
+}, {
+  type: "large",
+  size: 1
+}, {
+  type: "large",
+  size: 2
+}, {
+  type: "large",
+  size: 3
+}, {
+  type: "large",
+  size: 4
+}, {
+  type: "stack"
+}];
+/**
+ * Get the font used in a delimiter based on what kind of delimiter it is.
+ * TODO(#963) Use more specific font family return type once that is introduced.
+ */
+
+const delimTypeToFont = function delimTypeToFont(type) {
+  if (type.type === "small") {
+    return "Main-Regular";
+  } else if (type.type === "large") {
+    return "Size" + type.size + "-Regular";
+  } else if (type.type === "stack") {
+    return "Size4-Regular";
+  } else {
+    throw new Error(`Add support for delim type '${type.type}' here.`);
+  }
+};
+/**
+ * Traverse a sequence of types of delimiters to decide what kind of delimiter
+ * should be used to create a delimiter of the given height+depth.
+ */
+
+
+const traverseSequence = function traverseSequence(delim, height, sequence, options) {
+  // Here, we choose the index we should start at in the sequences. In smaller
+  // sizes (which correspond to larger numbers in style.size) we start earlier
+  // in the sequence. Thus, scriptscript starts at index 3-3=0, script starts
+  // at index 3-2=1, text starts at 3-1=2, and display starts at min(2,3-0)=2
+  const start = Math.min(2, 3 - options.style.size);
+
+  for (let i = start; i < sequence.length; i++) {
+    if (sequence[i].type === "stack") {
+      // This is always the last delimiter, so we just break the loop now.
+      break;
+    }
+
+    const metrics = getMetrics(delim, delimTypeToFont(sequence[i]), "math");
+    let heightDepth = metrics.height + metrics.depth; // Small delimiters are scaled down versions of the same font, so we
+    // account for the style change size.
+
+    if (sequence[i].type === "small") {
+      const newOptions = options.havingBaseStyle(sequence[i].style);
+      heightDepth *= newOptions.sizeMultiplier;
+    } // Check if the delimiter at this size works for the given height.
+
+
+    if (heightDepth > height) {
+      return sequence[i];
+    }
+  } // If we reached the end of the sequence, return the last sequence element.
+
+
+  return sequence[sequence.length - 1];
+};
+/**
+ * Make a delimiter of a given height+depth, with optional centering. Here, we
+ * traverse the sequences, and create a delimiter that the sequence tells us to.
+ */
+
+
+const makeCustomSizedDelim = function makeCustomSizedDelim(delim, height, center, options, mode, classes) {
+  if (delim === "<" || delim === "\\lt" || delim === "\u27e8") {
+    delim = "\\langle";
+  } else if (delim === ">" || delim === "\\gt" || delim === "\u27e9") {
+    delim = "\\rangle";
+  } // Decide what sequence to use
+
+
+  let sequence;
+
+  if (utils.contains(stackNeverDelimiters, delim)) {
+    sequence = stackNeverDelimiterSequence;
+  } else if (utils.contains(stackLargeDelimiters, delim)) {
+    sequence = stackLargeDelimiterSequence;
+  } else {
+    sequence = stackAlwaysDelimiterSequence;
+  } // Look through the sequence
+
+
+  const delimType = traverseSequence(delim, height, sequence, options); // Get the delimiter from font glyphs.
+  // Depending on the sequence element we decided on, call the
+  // appropriate function.
+
+  if (delimType.type === "small") {
+    return makeSmallDelim(delim, delimType.style, center, options, mode, classes);
+  } else if (delimType.type === "large") {
+    return makeLargeDelim(delim, delimType.size, center, options, mode, classes);
+  } else
+    /* if (delimType.type === "stack") */
+    {
+      return makeStackedDelim(delim, height, center, options, mode, classes);
+    }
+};
+/**
+ * Make a delimiter for use with `\left` and `\right`, given a height and depth
+ * of an expression that the delimiters surround.
+ */
+
+
+const makeLeftRightDelim = function makeLeftRightDelim(delim, height, depth, options, mode, classes) {
+  // We always center \left/\right delimiters, so the axis is always shifted
+  const axisHeight = options.fontMetrics().axisHeight * options.sizeMultiplier; // Taken from TeX source, tex.web, function make_left_right
+
+  const delimiterFactor = 901;
+  const delimiterExtend = 5.0 / options.fontMetrics().ptPerEm;
+  const maxDistFromAxis = Math.max(height - axisHeight, depth + axisHeight);
+  const totalHeight = Math.max( // In real TeX, calculations are done using integral values which are
+  // 65536 per pt, or 655360 per em. So, the division here truncates in
+  // TeX but doesn't here, producing different results. If we wanted to
+  // exactly match TeX's calculation, we could do
+  //   Math.floor(655360 * maxDistFromAxis / 500) *
+  //    delimiterFactor / 655360
+  // (To see the difference, compare
+  //    x^{x^{\left(\rule{0.1em}{0.68em}\right)}}
+  // in TeX and KaTeX)
+  maxDistFromAxis / 500 * delimiterFactor, 2 * maxDistFromAxis - delimiterExtend); // Finally, we defer to `makeCustomSizedDelim` with our calculated total
+  // height
+
+  return makeCustomSizedDelim(delim, totalHeight, true, options, mode, classes);
+};
+
+var delimiter = {
+  sqrtImage: makeSqrtImage,
+  sizedDelim: makeSizedDelim,
+  customSizedDelim: makeCustomSizedDelim,
+  leftRightDelim: makeLeftRightDelim
+};
+
+// Extra data needed for the delimiter handler down below
+const delimiterSizes = {
+  "\\bigl": {
+    mclass: "mopen",
+    size: 1
+  },
+  "\\Bigl": {
+    mclass: "mopen",
+    size: 2
+  },
+  "\\biggl": {
+    mclass: "mopen",
+    size: 3
+  },
+  "\\Biggl": {
+    mclass: "mopen",
+    size: 4
+  },
+  "\\bigr": {
+    mclass: "mclose",
+    size: 1
+  },
+  "\\Bigr": {
+    mclass: "mclose",
+    size: 2
+  },
+  "\\biggr": {
+    mclass: "mclose",
+    size: 3
+  },
+  "\\Biggr": {
+    mclass: "mclose",
+    size: 4
+  },
+  "\\bigm": {
+    mclass: "mrel",
+    size: 1
+  },
+  "\\Bigm": {
+    mclass: "mrel",
+    size: 2
+  },
+  "\\biggm": {
+    mclass: "mrel",
+    size: 3
+  },
+  "\\Biggm": {
+    mclass: "mrel",
+    size: 4
+  },
+  "\\big": {
+    mclass: "mord",
+    size: 1
+  },
+  "\\Big": {
+    mclass: "mord",
+    size: 2
+  },
+  "\\bigg": {
+    mclass: "mord",
+    size: 3
+  },
+  "\\Bigg": {
+    mclass: "mord",
+    size: 4
+  }
+};
+const delimiters = ["(", "\\lparen", ")", "\\rparen", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "\u230a", "\u230b", "\\lceil", "\\rceil", "\u2308", "\u2309", "<", ">", "\\langle", "\u27e8", "\\rangle", "\u27e9", "\\lt", "\\gt", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "\u27ee", "\u27ef", "\\lmoustache", "\\rmoustache", "\u23b0", "\u23b1", "/", "\\backslash", "|", "\\vert", "\\|", "\\Vert", "\\uparrow", "\\Uparrow", "\\downarrow", "\\Downarrow", "\\updownarrow", "\\Updownarrow", "."];
+
+// Delimiter functions
+function checkDelimiter(delim, context) {
+  const symDelim = checkSymbolNodeType(delim);
+
+  if (symDelim && utils.contains(delimiters, symDelim.text)) {
+    return symDelim;
+  } else {
+    throw new ParseError("Invalid delimiter: '" + (symDelim ? symDelim.text : JSON.stringify(delim)) + "' after '" + context.funcName + "'", delim);
+  }
+}
+
+defineFunction({
+  type: "delimsizing",
+  names: ["\\bigl", "\\Bigl", "\\biggl", "\\Biggl", "\\bigr", "\\Bigr", "\\biggr", "\\Biggr", "\\bigm", "\\Bigm", "\\biggm", "\\Biggm", "\\big", "\\Big", "\\bigg", "\\Bigg"],
+  props: {
+    numArgs: 1
+  },
+  handler: (context, args) => {
+    const delim = checkDelimiter(args[0], context);
+    return {
+      type: "delimsizing",
+      mode: context.parser.mode,
+      size: delimiterSizes[context.funcName].size,
+      mclass: delimiterSizes[context.funcName].mclass,
+      delim: delim.text
+    };
+  },
+  htmlBuilder: (group, options) => {
+    if (group.delim === ".") {
+      // Empty delimiters still count as elements, even though they don't
+      // show anything.
+      return buildCommon.makeSpan([group.mclass]);
+    } // Use delimiter.sizedDelim to generate the delimiter.
+
+
+    return delimiter.sizedDelim(group.delim, group.size, options, group.mode, [group.mclass]);
+  },
+  mathmlBuilder: group => {
+    const children = [];
+
+    if (group.delim !== ".") {
+      children.push(makeText(group.delim, group.mode));
+    }
+
+    const node = new mathMLTree.MathNode("mo", children);
+
+    if (group.mclass === "mopen" || group.mclass === "mclose") {
+      // Only some of the delimsizing functions act as fences, and they
+      // return "mopen" or "mclose" mclass.
+      node.setAttribute("fence", "true");
+    } else {
+      // Explicitly disable fencing if it's not a fence, to override the
+      // defaults.
+      node.setAttribute("fence", "false");
+    }
+
+    return node;
+  }
+});
+
+function assertParsed(group) {
+  if (!group.body) {
+    throw new Error("Bug: The leftright ParseNode wasn't fully parsed.");
+  }
+}
+
+defineFunction({
+  type: "leftright-right",
+  names: ["\\right"],
+  props: {
+    numArgs: 1
+  },
+  handler: (context, args) => {
+    // \left case below triggers parsing of \right in
+    //   `const right = parser.parseFunction();`
+    // uses this return value.
+    const color = context.parser.gullet.macros.get("\\current@color");
+
+    if (color && typeof color !== "string") {
+      throw new ParseError("\\current@color set to non-string in \\right");
+    }
+
+    return {
+      type: "leftright-right",
+      mode: context.parser.mode,
+      delim: checkDelimiter(args[0], context).text,
+      color // undefined if not set via \color
+
+    };
+  }
+});
+defineFunction({
+  type: "leftright",
+  names: ["\\left"],
+  props: {
+    numArgs: 1
+  },
+  handler: (context, args) => {
+    const delim = checkDelimiter(args[0], context);
+    const parser = context.parser; // Parse out the implicit body
+
+    ++parser.leftrightDepth; // parseExpression stops before '\\right'
+
+    const body = parser.parseExpression(false);
+    --parser.leftrightDepth; // Check the next token
+
+    parser.expect("\\right", false);
+    const right = assertNodeType(parser.parseFunction(), "leftright-right");
+    return {
+      type: "leftright",
+      mode: parser.mode,
+      body,
+      left: delim.text,
+      right: right.delim,
+      rightColor: right.color
+    };
+  },
+  htmlBuilder: (group, options) => {
+    assertParsed(group); // Build the inner expression
+
+    const inner = buildExpression(group.body, options, true, ["mopen", "mclose"]);
+    let innerHeight = 0;
+    let innerDepth = 0;
+    let hadMiddle = false; // Calculate its height and depth
+
+    for (let i = 0; i < inner.length; i++) {
+      // Property `isMiddle` not defined on `span`. See comment in
+      // "middle"'s htmlBuilder.
+      // $FlowFixMe
+      if (inner[i].isMiddle) {
+        hadMiddle = true;
+      } else {
+        innerHeight = Math.max(inner[i].height, innerHeight);
+        innerDepth = Math.max(inner[i].depth, innerDepth);
+      }
+    } // The size of delimiters is the same, regardless of what style we are
+    // in. Thus, to correctly calculate the size of delimiter we need around
+    // a group, we scale down the inner size based on the size.
+
+
+    innerHeight *= options.sizeMultiplier;
+    innerDepth *= options.sizeMultiplier;
+    let leftDelim;
+
+    if (group.left === ".") {
+      // Empty delimiters in \left and \right make null delimiter spaces.
+      leftDelim = makeNullDelimiter(options, ["mopen"]);
+    } else {
+      // Otherwise, use leftRightDelim to generate the correct sized
+      // delimiter.
+      leftDelim = delimiter.leftRightDelim(group.left, innerHeight, innerDepth, options, group.mode, ["mopen"]);
+    } // Add it to the beginning of the expression
+
+
+    inner.unshift(leftDelim); // Handle middle delimiters
+
+    if (hadMiddle) {
+      for (let i = 1; i < inner.length; i++) {
+        const middleDelim = inner[i]; // Property `isMiddle` not defined on `span`. See comment in
+        // "middle"'s htmlBuilder.
+        // $FlowFixMe
+
+        const isMiddle = middleDelim.isMiddle;
+
+        if (isMiddle) {
+          // Apply the options that were active when \middle was called
+          inner[i] = delimiter.leftRightDelim(isMiddle.delim, innerHeight, innerDepth, isMiddle.options, group.mode, []);
+        }
+      }
+    }
+
+    let rightDelim; // Same for the right delimiter, but using color specified by \color
+
+    if (group.right === ".") {
+      rightDelim = makeNullDelimiter(options, ["mclose"]);
+    } else {
+      const colorOptions = group.rightColor ? options.withColor(group.rightColor) : options;
+      rightDelim = delimiter.leftRightDelim(group.right, innerHeight, innerDepth, colorOptions, group.mode, ["mclose"]);
+    } // Add it to the end of the expression.
+
+
+    inner.push(rightDelim);
+    return buildCommon.makeSpan(["minner"], inner, options);
+  },
+  mathmlBuilder: (group, options) => {
+    assertParsed(group);
+    const inner = buildExpression$1(group.body, options);
+
+    if (group.left !== ".") {
+      const leftNode = new mathMLTree.MathNode("mo", [makeText(group.left, group.mode)]);
+      leftNode.setAttribute("fence", "true");
+      inner.unshift(leftNode);
+    }
+
+    if (group.right !== ".") {
+      const rightNode = new mathMLTree.MathNode("mo", [makeText(group.right, group.mode)]);
+      rightNode.setAttribute("fence", "true");
+
+      if (group.rightColor) {
+        rightNode.setAttribute("mathcolor", group.rightColor);
+      }
+
+      inner.push(rightNode);
+    }
+
+    return makeRow(inner);
+  }
+});
+defineFunction({
+  type: "middle",
+  names: ["\\middle"],
+  props: {
+    numArgs: 1
+  },
+  handler: (context, args) => {
+    const delim = checkDelimiter(args[0], context);
+
+    if (!context.parser.leftrightDepth) {
+      throw new ParseError("\\middle without preceding \\left", delim);
+    }
+
+    return {
+      type: "middle",
+      mode: context.parser.mode,
+      delim: delim.text
+    };
+  },
+  htmlBuilder: (group, options) => {
+    let middleDelim;
+
+    if (group.delim === ".") {
+      middleDelim = makeNullDelimiter(options, []);
+    } else {
+      middleDelim = delimiter.sizedDelim(group.delim, 1, options, group.mode, []);
+      const isMiddle = {
+        delim: group.delim,
+        options
+      }; // Property `isMiddle` not defined on `span`. It is only used in
+      // this file above.
+      // TODO: Fix this violation of the `span` type and possibly rename
+      // things since `isMiddle` sounds like a boolean, but is a struct.
+      // $FlowFixMe
+
+      middleDelim.isMiddle = isMiddle;
+    }
+
+    return middleDelim;
+  },
+  mathmlBuilder: (group, options) => {
+    // A Firefox \middle will strech a character vertically only if it
+    // is in the fence part of the operator dictionary at:
+    // https://www.w3.org/TR/MathML3/appendixc.html.
+    // So we need to avoid U+2223 and use plain "|" instead.
+    const textNode = group.delim === "\\vert" || group.delim === "|" ? makeText("|", "text") : makeText(group.delim, group.mode);
+    const middleNode = new mathMLTree.MathNode("mo", [textNode]);
+    middleNode.setAttribute("fence", "true"); // MathML gives 5/18em spacing to each <mo> element.
+    // \middle should get delimiter spacing instead.
+
+    middleNode.setAttribute("lspace", "0.05em");
+    middleNode.setAttribute("rspace", "0.05em");
+    return middleNode;
+  }
+});
+
+const htmlBuilder$2 = (group, options) => {
+  // \cancel, \bcancel, \xcancel, \sout, \fbox, \colorbox, \fcolorbox
+  // Some groups can return document fragments.  Handle those by wrapping
+  // them in a span.
+  const inner = buildCommon.wrapFragment(buildGroup(group.body, options), options);
+  const label = group.label.substr(1);
+  const scale = options.sizeMultiplier;
+  let img;
+  let imgShift = 0; // In the LaTeX cancel package, line geometry is slightly different
+  // depending on whether the subject is wider than it is tall, or vice versa.
+  // We don't know the width of a group, so as a proxy, we test if
+  // the subject is a single character. This captures most of the
+  // subjects that should get the "tall" treatment.
+
+  const isSingleChar = utils.isCharacterBox(group.body);
+
+  if (label === "sout") {
+    img = buildCommon.makeSpan(["stretchy", "sout"]);
+    img.height = options.fontMetrics().defaultRuleThickness / scale;
+    imgShift = -0.5 * options.fontMetrics().xHeight;
+  } else {
+    // Add horizontal padding
+    if (/cancel/.test(label)) {
+      if (!isSingleChar) {
+        inner.classes.push("cancel-pad");
+      }
+    } else {
+      inner.classes.push("boxpad");
+    } // Add vertical padding
+
+
+    let vertPad = 0;
+    let ruleThickness = 0; // ref: cancel package: \advance\totalheight2\p@ % "+2"
+
+    if (/box/.test(label)) {
+      ruleThickness = Math.max(options.fontMetrics().fboxrule, // default
+      options.minRuleThickness // User override.
+      );
+      vertPad = options.fontMetrics().fboxsep + (label === "colorbox" ? 0 : ruleThickness);
+    } else {
+      vertPad = isSingleChar ? 0.2 : 0;
+    }
+
+    img = stretchy.encloseSpan(inner, label, vertPad, options);
+
+    if (/fbox|boxed|fcolorbox/.test(label)) {
+      img.style.borderStyle = "solid";
+      img.style.borderWidth = `${ruleThickness}em`;
+    }
+
+    imgShift = inner.depth + vertPad;
+
+    if (group.backgroundColor) {
+      img.style.backgroundColor = group.backgroundColor;
+
+      if (group.borderColor) {
+        img.style.borderColor = group.borderColor;
+      }
+    }
+  }
+
+  let vlist;
+
+  if (group.backgroundColor) {
+    vlist = buildCommon.makeVList({
+      positionType: "individualShift",
+      children: [// Put the color background behind inner;
+      {
+        type: "elem",
+        elem: img,
+        shift: imgShift
+      }, {
+        type: "elem",
+        elem: inner,
+        shift: 0
+      }]
+    }, options);
+  } else {
+    vlist = buildCommon.makeVList({
+      positionType: "individualShift",
+      children: [// Write the \cancel stroke on top of inner.
+      {
+        type: "elem",
+        elem: inner,
+        shift: 0
+      }, {
+        type: "elem",
+        elem: img,
+        shift: imgShift,
+        wrapperClasses: /cancel/.test(label) ? ["svg-align"] : []
+      }]
+    }, options);
+  }
+
+  if (/cancel/.test(label)) {
+    // The cancel package documentation says that cancel lines add their height
+    // to the expression, but tests show that isn't how it actually works.
+    vlist.height = inner.height;
+    vlist.depth = inner.depth;
+  }
+
+  if (/cancel/.test(label) && !isSingleChar) {
+    // cancel does not create horiz space for its line extension.
+    return buildCommon.makeSpan(["mord", "cancel-lap"], [vlist], options);
+  } else {
+    return buildCommon.makeSpan(["mord"], [vlist], options);
+  }
+};
+
+const mathmlBuilder$2 = (group, options) => {
+  let fboxsep = 0;
+  const node = new mathMLTree.MathNode(group.label.indexOf("colorbox") > -1 ? "mpadded" : "menclose", [buildGroup$1(group.body, options)]);
+
+  switch (group.label) {
+    case "\\cancel":
+      node.setAttribute("notation", "updiagonalstrike");
+      break;
+
+    case "\\bcancel":
+      node.setAttribute("notation", "downdiagonalstrike");
+      break;
+
+    case "\\sout":
+      node.setAttribute("notation", "horizontalstrike");
+      break;
+
+    case "\\fbox":
+      node.setAttribute("notation", "box");
+      break;
+
+    case "\\fcolorbox":
+    case "\\colorbox":
+      // <menclose> doesn't have a good notation option. So use <mpadded>
+      // instead. Set some attributes that come included with <menclose>.
+      fboxsep = options.fontMetrics().fboxsep * options.fontMetrics().ptPerEm;
+      node.setAttribute("width", `+${2 * fboxsep}pt`);
+      node.setAttribute("height", `+${2 * fboxsep}pt`);
+      node.setAttribute("lspace", `${fboxsep}pt`); //
+
+      node.setAttribute("voffset", `${fboxsep}pt`);
+
+      if (group.label === "\\fcolorbox") {
+        const thk = Math.max(options.fontMetrics().fboxrule, // default
+        options.minRuleThickness // user override
+        );
+        node.setAttribute("style", "border: " + thk + "em solid " + String(group.borderColor));
+      }
+
+      break;
+
+    case "\\xcancel":
+      node.setAttribute("notation", "updiagonalstrike downdiagonalstrike");
+      break;
+  }
+
+  if (group.backgroundColor) {
+    node.setAttribute("mathbackground", group.backgroundColor);
+  }
+
+  return node;
+};
+
+defineFunction({
+  type: "enclose",
+  names: ["\\colorbox"],
+  props: {
+    numArgs: 2,
+    allowedInText: true,
+    greediness: 3,
+    argTypes: ["color", "text"]
+  },
+
+  handler(_ref, args, optArgs) {
+    let parser = _ref.parser,
+        funcName = _ref.funcName;
+    const color = assertNodeType(args[0], "color-token").color;
+    const body = args[1];
+    return {
+      type: "enclose",
+      mode: parser.mode,
+      label: funcName,
+      backgroundColor: color,
+      body
+    };
+  },
+
+  htmlBuilder: htmlBuilder$2,
+  mathmlBuilder: mathmlBuilder$2
+});
+defineFunction({
+  type: "enclose",
+  names: ["\\fcolorbox"],
+  props: {
+    numArgs: 3,
+    allowedInText: true,
+    greediness: 3,
+    argTypes: ["color", "color", "text"]
+  },
+
+  handler(_ref2, args, optArgs) {
+    let parser = _ref2.parser,
+        funcName = _ref2.funcName;
+    const borderColor = assertNodeType(args[0], "color-token").color;
+    const backgroundColor = assertNodeType(args[1], "color-token").color;
+    const body = args[2];
+    return {
+      type: "enclose",
+      mode: parser.mode,
+      label: funcName,
+      backgroundColor,
+      borderColor,
+      body
+    };
+  },
+
+  htmlBuilder: htmlBuilder$2,
+  mathmlBuilder: mathmlBuilder$2
+});
+defineFunction({
+  type: "enclose",
+  names: ["\\fbox"],
+  props: {
+    numArgs: 1,
+    argTypes: ["hbox"],
+    allowedInText: true
+  },
+
+  handler(_ref3, args) {
+    let parser = _ref3.parser;
+    return {
+      type: "enclose",
+      mode: parser.mode,
+      label: "\\fbox",
+      body: args[0]
+    };
+  }
+
+});
+defineFunction({
+  type: "enclose",
+  names: ["\\cancel", "\\bcancel", "\\xcancel", "\\sout"],
+  props: {
+    numArgs: 1
+  },
+
+  handler(_ref4, args, optArgs) {
+    let parser = _ref4.parser,
+        funcName = _ref4.funcName;
+    const body = args[0];
+    return {
+      type: "enclose",
+      mode: parser.mode,
+      label: funcName,
+      body
+    };
+  },
+
+  htmlBuilder: htmlBuilder$2,
+  mathmlBuilder: mathmlBuilder$2
+});
+
+/**
+ * All registered environments.
+ * `environments.js` exports this same dictionary again and makes it public.
+ * `Parser.js` requires this dictionary via `environments.js`.
+ */
+const _environments = {};
+function defineEnvironment(_ref) {
+  let type = _ref.type,
+      names = _ref.names,
+      props = _ref.props,
+      handler = _ref.handler,
+      htmlBuilder = _ref.htmlBuilder,
+      mathmlBuilder = _ref.mathmlBuilder;
+  // Set default values of environments.
+  const data = {
+    type,
+    numArgs: props.numArgs || 0,
+    greediness: 1,
+    allowedInText: false,
+    numOptionalArgs: 0,
+    handler
+  };
+
+  for (let i = 0; i < names.length; ++i) {
+    // TODO: The value type of _environments should be a type union of all
+    // possible `EnvSpec<>` possibilities instead of `EnvSpec<*>`, which is
+    // an existential type.
+    // $FlowFixMe
+    _environments[names[i]] = data;
+  }
+
+  if (htmlBuilder) {
+    _htmlGroupBuilders[type] = htmlBuilder;
+  }
+
+  if (mathmlBuilder) {
+    _mathmlGroupBuilders[type] = mathmlBuilder;
+  }
+}
+
+function getHLines(parser) {
+  // Return an array. The array length = number of hlines.
+  // Each element in the array tells if the line is dashed.
+  const hlineInfo = [];
+  parser.consumeSpaces();
+  let nxt = parser.fetch().text;
+
+  while (nxt === "\\hline" || nxt === "\\hdashline") {
+    parser.consume();
+    hlineInfo.push(nxt === "\\hdashline");
+    parser.consumeSpaces();
+    nxt = parser.fetch().text;
+  }
+
+  return hlineInfo;
+}
+/**
+ * Parse the body of the environment, with rows delimited by \\ and
+ * columns delimited by &, and create a nested list in row-major order
+ * with one group per cell.  If given an optional argument style
+ * ("text", "display", etc.), then each cell is cast into that style.
+ */
+
+
+function parseArray(parser, _ref, style) {
+  let hskipBeforeAndAfter = _ref.hskipBeforeAndAfter,
+      addJot = _ref.addJot,
+      cols = _ref.cols,
+      arraystretch = _ref.arraystretch,
+      colSeparationType = _ref.colSeparationType;
+  // Parse body of array with \\ temporarily mapped to \cr
+  parser.gullet.beginGroup();
+  parser.gullet.macros.set("\\\\", "\\cr"); // Get current arraystretch if it's not set by the environment
+
+  if (!arraystretch) {
+    const stretch = parser.gullet.expandMacroAsText("\\arraystretch");
+
+    if (stretch == null) {
+      // Default \arraystretch from lttab.dtx
+      arraystretch = 1;
+    } else {
+      arraystretch = parseFloat(stretch);
+
+      if (!arraystretch || arraystretch < 0) {
+        throw new ParseError(`Invalid \\arraystretch: ${stretch}`);
+      }
+    }
+  } // Start group for first cell
+
+
+  parser.gullet.beginGroup();
+  let row = [];
+  const body = [row];
+  const rowGaps = [];
+  const hLinesBeforeRow = []; // Test for \hline at the top of the array.
+
+  hLinesBeforeRow.push(getHLines(parser));
+
+  while (true) {
+    // eslint-disable-line no-constant-condition
+    // Parse each cell in its own group (namespace)
+    let cell = parser.parseExpression(false, "\\cr");
+    parser.gullet.endGroup();
+    parser.gullet.beginGroup();
+    cell = {
+      type: "ordgroup",
+      mode: parser.mode,
+      body: cell
+    };
+
+    if (style) {
+      cell = {
+        type: "styling",
+        mode: parser.mode,
+        style,
+        body: [cell]
+      };
+    }
+
+    row.push(cell);
+    const next = parser.fetch().text;
+
+    if (next === "&") {
+      parser.consume();
+    } else if (next === "\\end") {
+      // Arrays terminate newlines with `\crcr` which consumes a `\cr` if
+      // the last line is empty.
+      // NOTE: Currently, `cell` is the last item added into `row`.
+      if (row.length === 1 && cell.type === "styling" && cell.body[0].body.length === 0) {
+        body.pop();
+      }
+
+      if (hLinesBeforeRow.length < body.length + 1) {
+        hLinesBeforeRow.push([]);
+      }
+
+      break;
+    } else if (next === "\\cr") {
+      const cr = assertNodeType(parser.parseFunction(), "cr");
+      rowGaps.push(cr.size); // check for \hline(s) following the row separator
+
+      hLinesBeforeRow.push(getHLines(parser));
+      row = [];
+      body.push(row);
+    } else {
+      throw new ParseError("Expected & or \\\\ or \\cr or \\end", parser.nextToken);
+    }
+  } // End cell group
+
+
+  parser.gullet.endGroup(); // End array group defining \\
+
+  parser.gullet.endGroup();
+  return {
+    type: "array",
+    mode: parser.mode,
+    addJot,
+    arraystretch,
+    body,
+    cols,
+    rowGaps,
+    hskipBeforeAndAfter,
+    hLinesBeforeRow,
+    colSeparationType
+  };
+} // Decides on a style for cells in an array according to whether the given
+// environment name starts with the letter 'd'.
+
+
+function dCellStyle(envName) {
+  if (envName.substr(0, 1) === "d") {
+    return "display";
+  } else {
+    return "text";
+  }
+}
+
+const htmlBuilder$3 = function htmlBuilder(group, options) {
+  let r;
+  let c;
+  const nr = group.body.length;
+  const hLinesBeforeRow = group.hLinesBeforeRow;
+  let nc = 0;
+  let body = new Array(nr);
+  const hlines = [];
+  const ruleThickness = Math.max( // From LaTeX \showthe\arrayrulewidth. Equals 0.04 em.
+  options.fontMetrics().arrayRuleWidth, options.minRuleThickness // User override.
+  ); // Horizontal spacing
+
+  const pt = 1 / options.fontMetrics().ptPerEm;
+  let arraycolsep = 5 * pt; // default value, i.e. \arraycolsep in article.cls
+
+  if (group.colSeparationType && group.colSeparationType === "small") {
+    // We're in a {smallmatrix}. Default column space is \thickspace,
+    // i.e. 5/18em = 0.2778em, per amsmath.dtx for {smallmatrix}.
+    // But that needs adjustment because LaTeX applies \scriptstyle to the
+    // entire array, including the colspace, but this function applies
+    // \scriptstyle only inside each element.
+    const localMultiplier = options.havingStyle(Style$1.SCRIPT).sizeMultiplier;
+    arraycolsep = 0.2778 * (localMultiplier / options.sizeMultiplier);
+  } // Vertical spacing
+
+
+  const baselineskip = 12 * pt; // see size10.clo
+  // Default \jot from ltmath.dtx
+  // TODO(edemaine): allow overriding \jot via \setlength (#687)
+
+  const jot = 3 * pt;
+  const arrayskip = group.arraystretch * baselineskip;
+  const arstrutHeight = 0.7 * arrayskip; // \strutbox in ltfsstrc.dtx and
+
+  const arstrutDepth = 0.3 * arrayskip; // \@arstrutbox in lttab.dtx
+
+  let totalHeight = 0; // Set a position for \hline(s) at the top of the array, if any.
+
+  function setHLinePos(hlinesInGap) {
+    for (let i = 0; i < hlinesInGap.length; ++i) {
+      if (i > 0) {
+        totalHeight += 0.25;
+      }
+
+      hlines.push({
+        pos: totalHeight,
+        isDashed: hlinesInGap[i]
+      });
+    }
+  }
+
+  setHLinePos(hLinesBeforeRow[0]);
+
+  for (r = 0; r < group.body.length; ++r) {
+    const inrow = group.body[r];
+    let height = arstrutHeight; // \@array adds an \@arstrut
+
+    let depth = arstrutDepth; // to each tow (via the template)
+
+    if (nc < inrow.length) {
+      nc = inrow.length;
+    }
+
+    const outrow = new Array(inrow.length);
+
+    for (c = 0; c < inrow.length; ++c) {
+      const elt = buildGroup(inrow[c], options);
+
+      if (depth < elt.depth) {
+        depth = elt.depth;
+      }
+
+      if (height < elt.height) {
+        height = elt.height;
+      }
+
+      outrow[c] = elt;
+    }
+
+    const rowGap = group.rowGaps[r];
+    let gap = 0;
+
+    if (rowGap) {
+      gap = calculateSize(rowGap, options);
+
+      if (gap > 0) {
+        // \@argarraycr
+        gap += arstrutDepth;
+
+        if (depth < gap) {
+          depth = gap; // \@xargarraycr
+        }
+
+        gap = 0;
+      }
+    } // In AMS multiline environments such as aligned and gathered, rows
+    // correspond to lines that have additional \jot added to the
+    // \baselineskip via \openup.
+
+
+    if (group.addJot) {
+      depth += jot;
+    }
+
+    outrow.height = height;
+    outrow.depth = depth;
+    totalHeight += height;
+    outrow.pos = totalHeight;
+    totalHeight += depth + gap; // \@yargarraycr
+
+    body[r] = outrow; // Set a position for \hline(s), if any.
+
+    setHLinePos(hLinesBeforeRow[r + 1]);
+  }
+
+  const offset = totalHeight / 2 + options.fontMetrics().axisHeight;
+  const colDescriptions = group.cols || [];
+  const cols = [];
+  let colSep;
+  let colDescrNum;
+
+  for (c = 0, colDescrNum = 0; // Continue while either there are more columns or more column
+  // descriptions, so trailing separators don't get lost.
+  c < nc || colDescrNum < colDescriptions.length; ++c, ++colDescrNum) {
+    let colDescr = colDescriptions[colDescrNum] || {};
+    let firstSeparator = true;
+
+    while (colDescr.type === "separator") {
+      // If there is more than one separator in a row, add a space
+      // between them.
+      if (!firstSeparator) {
+        colSep = buildCommon.makeSpan(["arraycolsep"], []);
+        colSep.style.width = options.fontMetrics().doubleRuleSep + "em";
+        cols.push(colSep);
+      }
+
+      if (colDescr.separator === "|" || colDescr.separator === ":") {
+        const lineType = colDescr.separator === "|" ? "solid" : "dashed";
+        const separator = buildCommon.makeSpan(["vertical-separator"], [], options);
+        separator.style.height = totalHeight + "em";
+        separator.style.borderRightWidth = `${ruleThickness}em`;
+        separator.style.borderRightStyle = lineType;
+        separator.style.margin = `0 -${ruleThickness / 2}em`;
+        separator.style.verticalAlign = -(totalHeight - offset) + "em";
+        cols.push(separator);
+      } else {
+        throw new ParseError("Invalid separator type: " + colDescr.separator);
+      }
+
+      colDescrNum++;
+      colDescr = colDescriptions[colDescrNum] || {};
+      firstSeparator = false;
+    }
+
+    if (c >= nc) {
+      continue;
+    }
+
+    let sepwidth;
+
+    if (c > 0 || group.hskipBeforeAndAfter) {
+      sepwidth = utils.deflt(colDescr.pregap, arraycolsep);
+
+      if (sepwidth !== 0) {
+        colSep = buildCommon.makeSpan(["arraycolsep"], []);
+        colSep.style.width = sepwidth + "em";
+        cols.push(colSep);
+      }
+    }
+
+    let col = [];
+
+    for (r = 0; r < nr; ++r) {
+      const row = body[r];
+      const elem = row[c];
+
+      if (!elem) {
+        continue;
+      }
+
+      const shift = row.pos - offset;
+      elem.depth = row.depth;
+      elem.height = row.height;
+      col.push({
+        type: "elem",
+        elem: elem,
+        shift: shift
+      });
+    }
+
+    col = buildCommon.makeVList({
+      positionType: "individualShift",
+      children: col
+    }, options);
+    col = buildCommon.makeSpan(["col-align-" + (colDescr.align || "c")], [col]);
+    cols.push(col);
+
+    if (c < nc - 1 || group.hskipBeforeAndAfter) {
+      sepwidth = utils.deflt(colDescr.postgap, arraycolsep);
+
+      if (sepwidth !== 0) {
+        colSep = buildCommon.makeSpan(["arraycolsep"], []);
+        colSep.style.width = sepwidth + "em";
+        cols.push(colSep);
+      }
+    }
+  }
+
+  body = buildCommon.makeSpan(["mtable"], cols); // Add \hline(s), if any.
+
+  if (hlines.length > 0) {
+    const line = buildCommon.makeLineSpan("hline", options, ruleThickness);
+    const dashes = buildCommon.makeLineSpan("hdashline", options, ruleThickness);
+    const vListElems = [{
+      type: "elem",
+      elem: body,
+      shift: 0
+    }];
+
+    while (hlines.length > 0) {
+      const hline = hlines.pop();
+      const lineShift = hline.pos - offset;
+
+      if (hline.isDashed) {
+        vListElems.push({
+          type: "elem",
+          elem: dashes,
+          shift: lineShift
+        });
+      } else {
+        vListElems.push({
+          type: "elem",
+          elem: line,
+          shift: lineShift
+        });
+      }
+    }
+
+    body = buildCommon.makeVList({
+      positionType: "individualShift",
+      children: vListElems
+    }, options);
+  }
+
+  return buildCommon.makeSpan(["mord"], [body], options);
+};
+
+const alignMap = {
+  c: "center ",
+  l: "left ",
+  r: "right "
+};
+
+const mathmlBuilder$3 = function mathmlBuilder(group, options) {
+  let table = new mathMLTree.MathNode("mtable", group.body.map(function (row) {
+    return new mathMLTree.MathNode("mtr", row.map(function (cell) {
+      return new mathMLTree.MathNode("mtd", [buildGroup$1(cell, options)]);
+    }));
+  })); // Set column alignment, row spacing, column spacing, and
+  // array lines by setting attributes on the table element.
+  // Set the row spacing. In MathML, we specify a gap distance.
+  // We do not use rowGap[] because MathML automatically increases
+  // cell height with the height/depth of the element content.
+  // LaTeX \arraystretch multiplies the row baseline-to-baseline distance.
+  // We simulate this by adding (arraystretch - 1)em to the gap. This
+  // does a reasonable job of adjusting arrays containing 1 em tall content.
+  // The 0.16 and 0.09 values are found emprically. They produce an array
+  // similar to LaTeX and in which content does not interfere with \hines.
+
+  const gap = group.arraystretch === 0.5 ? 0.1 // {smallmatrix}, {subarray}
+  : 0.16 + group.arraystretch - 1 + (group.addJot ? 0.09 : 0);
+  table.setAttribute("rowspacing", gap + "em"); // MathML table lines go only between cells.
+  // To place a line on an edge we'll use <menclose>, if necessary.
+
+  let menclose = "";
+  let align = "";
+
+  if (group.cols) {
+    // Find column alignment, column spacing, and  vertical lines.
+    const cols = group.cols;
+    let columnLines = "";
+    let prevTypeWasAlign = false;
+    let iStart = 0;
+    let iEnd = cols.length;
+
+    if (cols[0].type === "separator") {
+      menclose += "top ";
+      iStart = 1;
+    }
+
+    if (cols[cols.length - 1].type === "separator") {
+      menclose += "bottom ";
+      iEnd -= 1;
+    }
+
+    for (let i = iStart; i < iEnd; i++) {
+      if (cols[i].type === "align") {
+        align += alignMap[cols[i].align];
+
+        if (prevTypeWasAlign) {
+          columnLines += "none ";
+        }
+
+        prevTypeWasAlign = true;
+      } else if (cols[i].type === "separator") {
+        // MathML accepts only single lines between cells.
+        // So we read only the first of consecutive separators.
+        if (prevTypeWasAlign) {
+          columnLines += cols[i].separator === "|" ? "solid " : "dashed ";
+          prevTypeWasAlign = false;
+        }
+      }
+    }
+
+    table.setAttribute("columnalign", align.trim());
+
+    if (/[sd]/.test(columnLines)) {
+      table.setAttribute("columnlines", columnLines.trim());
+    }
+  } // Set column spacing.
+
+
+  if (group.colSeparationType === "align") {
+    const cols = group.cols || [];
+    let spacing = "";
+
+    for (let i = 1; i < cols.length; i++) {
+      spacing += i % 2 ? "0em " : "1em ";
+    }
+
+    table.setAttribute("columnspacing", spacing.trim());
+  } else if (group.colSeparationType === "alignat") {
+    table.setAttribute("columnspacing", "0em");
+  } else if (group.colSeparationType === "small") {
+    table.setAttribute("columnspacing", "0.2778em");
+  } else {
+    table.setAttribute("columnspacing", "1em");
+  } // Address \hline and \hdashline
+
+
+  let rowLines = "";
+  const hlines = group.hLinesBeforeRow;
+  menclose += hlines[0].length > 0 ? "left " : "";
+  menclose += hlines[hlines.length - 1].length > 0 ? "right " : "";
+
+  for (let i = 1; i < hlines.length - 1; i++) {
+    rowLines += hlines[i].length === 0 ? "none " // MathML accepts only a single line between rows. Read one element.
+    : hlines[i][0] ? "dashed " : "solid ";
+  }
+
+  if (/[sd]/.test(rowLines)) {
+    table.setAttribute("rowlines", rowLines.trim());
+  }
+
+  if (menclose !== "") {
+    table = new mathMLTree.MathNode("menclose", [table]);
+    table.setAttribute("notation", menclose.trim());
+  }
+
+  if (group.arraystretch && group.arraystretch < 1) {
+    // A small array. Wrap in scriptstyle so row gap is not too large.
+    table = new mathMLTree.MathNode("mstyle", [table]);
+    table.setAttribute("scriptlevel", "1");
+  }
+
+  return table;
+}; // Convenience function for aligned and alignedat environments.
+
+
+const alignedHandler = function alignedHandler(context, args) {
+  const cols = [];
+  const res = parseArray(context.parser, {
+    cols,
+    addJot: true
+  }, "display"); // Determining number of columns.
+  // 1. If the first argument is given, we use it as a number of columns,
+  //    and makes sure that each row doesn't exceed that number.
+  // 2. Otherwise, just count number of columns = maximum number
+  //    of cells in each row ("aligned" mode -- isAligned will be true).
+  //
+  // At the same time, prepend empty group {} at beginning of every second
+  // cell in each row (starting with second cell) so that operators become
+  // binary.  This behavior is implemented in amsmath's \start@aligned.
+
+  let numMaths;
+  let numCols = 0;
+  const emptyGroup = {
+    type: "ordgroup",
+    mode: context.mode,
+    body: []
+  };
+  const ordgroup = checkNodeType(args[0], "ordgroup");
+
+  if (ordgroup) {
+    let arg0 = "";
+
+    for (let i = 0; i < ordgroup.body.length; i++) {
+      const textord = assertNodeType(ordgroup.body[i], "textord");
+      arg0 += textord.text;
+    }
+
+    numMaths = Number(arg0);
+    numCols = numMaths * 2;
+  }
+
+  const isAligned = !numCols;
+  res.body.forEach(function (row) {
+    for (let i = 1; i < row.length; i += 2) {
+      // Modify ordgroup node within styling node
+      const styling = assertNodeType(row[i], "styling");
+      const ordgroup = assertNodeType(styling.body[0], "ordgroup");
+      ordgroup.body.unshift(emptyGroup);
+    }
+
+    if (!isAligned) {
+      // Case 1
+      const curMaths = row.length / 2;
+
+      if (numMaths < curMaths) {
+        throw new ParseError("Too many math in a row: " + `expected ${numMaths}, but got ${curMaths}`, row[0]);
+      }
+    } else if (numCols < row.length) {
+      // Case 2
+      numCols = row.length;
+    }
+  }); // Adjusting alignment.
+  // In aligned mode, we add one \qquad between columns;
+  // otherwise we add nothing.
+
+  for (let i = 0; i < numCols; ++i) {
+    let align = "r";
+    let pregap = 0;
+
+    if (i % 2 === 1) {
+      align = "l";
+    } else if (i > 0 && isAligned) {
+      // "aligned" mode.
+      pregap = 1; // add one \quad
+    }
+
+    cols[i] = {
+      type: "align",
+      align: align,
+      pregap: pregap,
+      postgap: 0
+    };
+  }
+
+  res.colSeparationType = isAligned ? "align" : "alignat";
+  return res;
+}; // Arrays are part of LaTeX, defined in lttab.dtx so its documentation
+// is part of the source2e.pdf file of LaTeX2e source documentation.
+// {darray} is an {array} environment where cells are set in \displaystyle,
+// as defined in nccmath.sty.
+
+
+defineEnvironment({
+  type: "array",
+  names: ["array", "darray"],
+  props: {
+    numArgs: 1
+  },
+
+  handler(context, args) {
+    // Since no types are specified above, the two possibilities are
+    // - The argument is wrapped in {} or [], in which case Parser's
+    //   parseGroup() returns an "ordgroup" wrapping some symbol node.
+    // - The argument is a bare symbol node.
+    const symNode = checkSymbolNodeType(args[0]);
+    const colalign = symNode ? [args[0]] : assertNodeType(args[0], "ordgroup").body;
+    const cols = colalign.map(function (nde) {
+      const node = assertSymbolNodeType(nde);
+      const ca = node.text;
+
+      if ("lcr".indexOf(ca) !== -1) {
+        return {
+          type: "align",
+          align: ca
+        };
+      } else if (ca === "|") {
+        return {
+          type: "separator",
+          separator: "|"
+        };
+      } else if (ca === ":") {
+        return {
+          type: "separator",
+          separator: ":"
+        };
+      }
+
+      throw new ParseError("Unknown column alignment: " + ca, nde);
+    });
+    const res = {
+      cols,
+      hskipBeforeAndAfter: true // \@preamble in lttab.dtx
+
+    };
+    return parseArray(context.parser, res, dCellStyle(context.envName));
+  },
+
+  htmlBuilder: htmlBuilder$3,
+  mathmlBuilder: mathmlBuilder$3
+}); // The matrix environments of amsmath builds on the array environment
+// of LaTeX, which is discussed above.
+
+defineEnvironment({
+  type: "array",
+  names: ["matrix", "pmatrix", "bmatrix", "Bmatrix", "vmatrix", "Vmatrix"],
+  props: {
+    numArgs: 0
+  },
+
+  handler(context) {
+    const delimiters = {
+      "matrix": null,
+      "pmatrix": ["(", ")"],
+      "bmatrix": ["[", "]"],
+      "Bmatrix": ["\\{", "\\}"],
+      "vmatrix": ["|", "|"],
+      "Vmatrix": ["\\Vert", "\\Vert"]
+    }[context.envName]; // \hskip -\arraycolsep in amsmath
+
+    const payload = {
+      hskipBeforeAndAfter: false
+    };
+    const res = parseArray(context.parser, payload, dCellStyle(context.envName));
+    return delimiters ? {
+      type: "leftright",
+      mode: context.mode,
+      body: [res],
+      left: delimiters[0],
+      right: delimiters[1],
+      rightColor: undefined // \right uninfluenced by \color in array
+
+    } : res;
+  },
+
+  htmlBuilder: htmlBuilder$3,
+  mathmlBuilder: mathmlBuilder$3
+});
+defineEnvironment({
+  type: "array",
+  names: ["smallmatrix"],
+  props: {
+    numArgs: 0
+  },
+
+  handler(context) {
+    const payload = {
+      arraystretch: 0.5
+    };
+    const res = parseArray(context.parser, payload, "script");
+    res.colSeparationType = "small";
+    return res;
+  },
+
+  htmlBuilder: htmlBuilder$3,
+  mathmlBuilder: mathmlBuilder$3
+});
+defineEnvironment({
+  type: "array",
+  names: ["subarray"],
+  props: {
+    numArgs: 1
+  },
+
+  handler(context, args) {
+    // Parsing of {subarray} is similar to {array}
+    const symNode = checkSymbolNodeType(args[0]);
+    const colalign = symNode ? [args[0]] : assertNodeType(args[0], "ordgroup").body;
+    const cols = colalign.map(function (nde) {
+      const node = assertSymbolNodeType(nde);
+      const ca = node.text; // {subarray} only recognizes "l" & "c"
+
+      if ("lc".indexOf(ca) !== -1) {
+        return {
+          type: "align",
+          align: ca
+        };
+      }
+
+      throw new ParseError("Unknown column alignment: " + ca, nde);
+    });
+
+    if (cols.length > 1) {
+      throw new ParseError("{subarray} can contain only one column");
+    }
+
+    let res = {
+      cols,
+      hskipBeforeAndAfter: false,
+      arraystretch: 0.5
+    };
+    res = parseArray(context.parser, res, "script");
+
+    if (res.body[0].length > 1) {
+      throw new ParseError("{subarray} can contain only one column");
+    }
+
+    return res;
+  },
+
+  htmlBuilder: htmlBuilder$3,
+  mathmlBuilder: mathmlBuilder$3
+}); // A cases environment (in amsmath.sty) is almost equivalent to
+// \def\arraystretch{1.2}%
+// \left\{\begin{array}{@{}l@{\quad}l@{}} … \end{array}\right.
+// {dcases} is a {cases} environment where cells are set in \displaystyle,
+// as defined in mathtools.sty.
+
+defineEnvironment({
+  type: "array",
+  names: ["cases", "dcases"],
+  props: {
+    numArgs: 0
+  },
+
+  handler(context) {
+    const payload = {
+      arraystretch: 1.2,
+      cols: [{
+        type: "align",
+        align: "l",
+        pregap: 0,
+        // TODO(kevinb) get the current style.
+        // For now we use the metrics for TEXT style which is what we were
+        // doing before.  Before attempting to get the current style we
+        // should look at TeX's behavior especially for \over and matrices.
+        postgap: 1.0
+        /* 1em quad */
+
+      }, {
+        type: "align",
+        align: "l",
+        pregap: 0,
+        postgap: 0
+      }]
+    };
+    const res = parseArray(context.parser, payload, dCellStyle(context.envName));
+    return {
+      type: "leftright",
+      mode: context.mode,
+      body: [res],
+      left: "\\{",
+      right: ".",
+      rightColor: undefined
+    };
+  },
+
+  htmlBuilder: htmlBuilder$3,
+  mathmlBuilder: mathmlBuilder$3
+}); // An aligned environment is like the align* environment
+// except it operates within math mode.
+// Note that we assume \nomallineskiplimit to be zero,
+// so that \strut@ is the same as \strut.
+
+defineEnvironment({
+  type: "array",
+  names: ["aligned"],
+  props: {
+    numArgs: 0
+  },
+  handler: alignedHandler,
+  htmlBuilder: htmlBuilder$3,
+  mathmlBuilder: mathmlBuilder$3
+}); // A gathered environment is like an array environment with one centered
+// column, but where rows are considered lines so get \jot line spacing
+// and contents are set in \displaystyle.
+
+defineEnvironment({
+  type: "array",
+  names: ["gathered"],
+  props: {
+    numArgs: 0
+  },
+
+  handler(context) {
+    const res = {
+      cols: [{
+        type: "align",
+        align: "c"
+      }],
+      addJot: true
+    };
+    return parseArray(context.parser, res, "display");
+  },
+
+  htmlBuilder: htmlBuilder$3,
+  mathmlBuilder: mathmlBuilder$3
+}); // alignat environment is like an align environment, but one must explicitly
+// specify maximum number of columns in each row, and can adjust spacing between
+// each columns.
+
+defineEnvironment({
+  type: "array",
+  names: ["alignedat"],
+  // One for numbered and for unnumbered;
+  // but, KaTeX doesn't supports math numbering yet,
+  // they make no difference for now.
+  props: {
+    numArgs: 1
+  },
+  handler: alignedHandler,
+  htmlBuilder: htmlBuilder$3,
+  mathmlBuilder: mathmlBuilder$3
+}); // Catch \hline outside array environment
+
+defineFunction({
+  type: "text",
+  // Doesn't matter what this is.
+  names: ["\\hline", "\\hdashline"],
+  props: {
+    numArgs: 0,
+    allowedInText: true,
+    allowedInMath: true
+  },
+
+  handler(context, args) {
+    throw new ParseError(`${context.funcName} valid only within array environment`);
+  }
+
+});
+
+const environments = _environments;
+
+// defineEnvironment definitions.
+// $FlowFixMe, "environment" handler returns an environment ParseNode
+
+defineFunction({
+  type: "environment",
+  names: ["\\begin", "\\end"],
+  props: {
+    numArgs: 1,
+    argTypes: ["text"]
+  },
+
+  handler(_ref, args) {
+    let parser = _ref.parser,
+        funcName = _ref.funcName;
+    const nameGroup = args[0];
+
+    if (nameGroup.type !== "ordgroup") {
+      throw new ParseError("Invalid environment name", nameGroup);
+    }
+
+    let envName = "";
+
+    for (let i = 0; i < nameGroup.body.length; ++i) {
+      envName += assertNodeType(nameGroup.body[i], "textord").text;
+    }
+
+    if (funcName === "\\begin") {
+      // begin...end is similar to left...right
+      if (!environments.hasOwnProperty(envName)) {
+        throw new ParseError("No such environment: " + envName, nameGroup);
+      } // Build the environment object. Arguments and other information will
+      // be made available to the begin and end methods using properties.
+
+
+      const env = environments[envName];
+
+      const _parser$parseArgument = parser.parseArguments("\\begin{" + envName + "}", env),
+            args = _parser$parseArgument.args,
+            optArgs = _parser$parseArgument.optArgs;
+
+      const context = {
+        mode: parser.mode,
+        envName,
+        parser
+      };
+      const result = env.handler(context, args, optArgs);
+      parser.expect("\\end", false);
+      const endNameToken = parser.nextToken;
+      const end = assertNodeType(parser.parseFunction(), "environment");
+
+      if (end.name !== envName) {
+        throw new ParseError(`Mismatch: \\begin{${envName}} matched by \\end{${end.name}}`, endNameToken);
+      }
+
+      return result;
+    }
+
+    return {
+      type: "environment",
+      mode: parser.mode,
+      name: envName,
+      nameGroup
+    };
+  }
+
+});
+
+const makeSpan$2 = buildCommon.makeSpan;
+
+function htmlBuilder$4(group, options) {
+  const elements = buildExpression(group.body, options, true);
+  return makeSpan$2([group.mclass], elements, options);
+}
+
+function mathmlBuilder$4(group, options) {
+  let node;
+  const inner = buildExpression$1(group.body, options);
+
+  if (group.mclass === "minner") {
+    return mathMLTree.newDocumentFragment(inner);
+  } else if (group.mclass === "mord") {
+    if (group.isCharacterBox) {
+      node = inner[0];
+      node.type = "mi";
+    } else {
+      node = new mathMLTree.MathNode("mi", inner);
+    }
+  } else {
+    if (group.isCharacterBox) {
+      node = inner[0];
+      node.type = "mo";
+    } else {
+      node = new mathMLTree.MathNode("mo", inner);
+    } // Set spacing based on what is the most likely adjacent atom type.
+    // See TeXbook p170.
+
+
+    if (group.mclass === "mbin") {
+      node.attributes.lspace = "0.22em"; // medium space
+
+      node.attributes.rspace = "0.22em";
+    } else if (group.mclass === "mpunct") {
+      node.attributes.lspace = "0em";
+      node.attributes.rspace = "0.17em"; // thinspace
+    } else if (group.mclass === "mopen" || group.mclass === "mclose") {
+      node.attributes.lspace = "0em";
+      node.attributes.rspace = "0em";
+    } // MathML <mo> default space is 5/18 em, so <mrel> needs no action.
+    // Ref: https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mo
+
+  }
+
+  return node;
+} // Math class commands except \mathop
+
+
+defineFunction({
+  type: "mclass",
+  names: ["\\mathord", "\\mathbin", "\\mathrel", "\\mathopen", "\\mathclose", "\\mathpunct", "\\mathinner"],
+  props: {
+    numArgs: 1
+  },
+
+  handler(_ref, args) {
+    let parser = _ref.parser,
+        funcName = _ref.funcName;
+    const body = args[0];
+    return {
+      type: "mclass",
+      mode: parser.mode,
+      mclass: "m" + funcName.substr(5),
+      // TODO(kevinb): don't prefix with 'm'
+      body: ordargument(body),
+      isCharacterBox: utils.isCharacterBox(body)
+    };
+  },
+
+  htmlBuilder: htmlBuilder$4,
+  mathmlBuilder: mathmlBuilder$4
+});
+const binrelClass = arg => {
+  // \binrel@ spacing varies with (bin|rel|ord) of the atom in the argument.
+  // (by rendering separately and with {}s before and after, and measuring
+  // the change in spacing).  We'll do roughly the same by detecting the
+  // atom type directly.
+  const atom = arg.type === "ordgroup" && arg.body.length ? arg.body[0] : arg;
+
+  if (atom.type === "atom" && (atom.family === "bin" || atom.family === "rel")) {
+    return "m" + atom.family;
+  } else {
+    return "mord";
+  }
+}; // \@binrel{x}{y} renders like y but as mbin/mrel/mord if x is mbin/mrel/mord.
+// This is equivalent to \binrel@{x}\binrel@@{y} in AMSTeX.
+
+defineFunction({
+  type: "mclass",
+  names: ["\\@binrel"],
+  props: {
+    numArgs: 2
+  },
+
+  handler(_ref2, args) {
+    let parser = _ref2.parser;
+    return {
+      type: "mclass",
+      mode: parser.mode,
+      mclass: binrelClass(args[0]),
+      body: [args[1]],
+      isCharacterBox: utils.isCharacterBox(args[1])
+    };
+  }
+
+}); // Build a relation or stacked op by placing one symbol on top of another
+
+defineFunction({
+  type: "mclass",
+  names: ["\\stackrel", "\\overset", "\\underset"],
+  props: {
+    numArgs: 2
+  },
+
+  handler(_ref3, args) {
+    let parser = _ref3.parser,
+        funcName = _ref3.funcName;
+    const baseArg = args[1];
+    const shiftedArg = args[0];
+    let mclass;
+
+    if (funcName !== "\\stackrel") {
+      // LaTeX applies \binrel spacing to \overset and \underset.
+      mclass = binrelClass(baseArg);
+    } else {
+      mclass = "mrel"; // for \stackrel
+    }
+
+    const baseOp = {
+      type: "op",
+      mode: baseArg.mode,
+      limits: true,
+      alwaysHandleSupSub: true,
+      parentIsSupSub: false,
+      symbol: false,
+      suppressBaseShift: funcName !== "\\stackrel",
+      body: ordargument(baseArg)
+    };
+    const supsub = {
+      type: "supsub",
+      mode: shiftedArg.mode,
+      base: baseOp,
+      sup: funcName === "\\underset" ? null : shiftedArg,
+      sub: funcName === "\\underset" ? shiftedArg : null
+    };
+    return {
+      type: "mclass",
+      mode: parser.mode,
+      mclass,
+      body: [supsub],
+      isCharacterBox: utils.isCharacterBox(supsub)
+    };
+  },
+
+  htmlBuilder: htmlBuilder$4,
+  mathmlBuilder: mathmlBuilder$4
+});
+
+// TODO(kevinb): implement \\sl and \\sc
+
+const htmlBuilder$5 = (group, options) => {
+  const font = group.font;
+  const newOptions = options.withFont(font);
+  return buildGroup(group.body, newOptions);
+};
+
+const mathmlBuilder$5 = (group, options) => {
+  const font = group.font;
+  const newOptions = options.withFont(font);
+  return buildGroup$1(group.body, newOptions);
+};
+
+const fontAliases = {
+  "\\Bbb": "\\mathbb",
+  "\\bold": "\\mathbf",
+  "\\frak": "\\mathfrak",
+  "\\bm": "\\boldsymbol"
+};
+defineFunction({
+  type: "font",
+  names: [// styles, except \boldsymbol defined below
+  "\\mathrm", "\\mathit", "\\mathbf", "\\mathnormal", // families
+  "\\mathbb", "\\mathcal", "\\mathfrak", "\\mathscr", "\\mathsf", "\\mathtt", // aliases, except \bm defined below
+  "\\Bbb", "\\bold", "\\frak"],
+  props: {
+    numArgs: 1,
+    greediness: 2
+  },
+  handler: (_ref, args) => {
+    let parser = _ref.parser,
+        funcName = _ref.funcName;
+    const body = args[0];
+    let func = funcName;
+
+    if (func in fontAliases) {
+      func = fontAliases[func];
+    }
+
+    return {
+      type: "font",
+      mode: parser.mode,
+      font: func.slice(1),
+      body
+    };
+  },
+  htmlBuilder: htmlBuilder$5,
+  mathmlBuilder: mathmlBuilder$5
+});
+defineFunction({
+  type: "mclass",
+  names: ["\\boldsymbol", "\\bm"],
+  props: {
+    numArgs: 1,
+    greediness: 2
+  },
+  handler: (_ref2, args) => {
+    let parser = _ref2.parser;
+    const body = args[0];
+    const isCharacterBox = utils.isCharacterBox(body); // amsbsy.sty's \boldsymbol uses \binrel spacing to inherit the
+    // argument's bin|rel|ord status
+
+    return {
+      type: "mclass",
+      mode: parser.mode,
+      mclass: binrelClass(body),
+      body: [{
+        type: "font",
+        mode: parser.mode,
+        font: "boldsymbol",
+        body
+      }],
+      isCharacterBox: isCharacterBox
+    };
+  }
+}); // Old font changing functions
+
+defineFunction({
+  type: "font",
+  names: ["\\rm", "\\sf", "\\tt", "\\bf", "\\it"],
+  props: {
+    numArgs: 0,
+    allowedInText: true
+  },
+  handler: (_ref3, args) => {
+    let parser = _ref3.parser,
+        funcName = _ref3.funcName,
+        breakOnTokenText = _ref3.breakOnTokenText;
+    const mode = parser.mode;
+    const body = parser.parseExpression(true, breakOnTokenText);
+    const style = `math${funcName.slice(1)}`;
+    return {
+      type: "font",
+      mode: mode,
+      font: style,
+      body: {
+        type: "ordgroup",
+        mode: parser.mode,
+        body
+      }
+    };
+  },
+  htmlBuilder: htmlBuilder$5,
+  mathmlBuilder: mathmlBuilder$5
+});
+
+const adjustStyle = (size, originalStyle) => {
+  // Figure out what style this fraction should be in based on the
+  // function used
+  let style = originalStyle;
+
+  if (size === "display") {
+    // Get display style as a default.
+    // If incoming style is sub/sup, use style.text() to get correct size.
+    style = style.id >= Style$1.SCRIPT.id ? style.text() : Style$1.DISPLAY;
+  } else if (size === "text" && style.size === Style$1.DISPLAY.size) {
+    // We're in a \tfrac but incoming style is displaystyle, so:
+    style = Style$1.TEXT;
+  } else if (size === "script") {
+    style = Style$1.SCRIPT;
+  } else if (size === "scriptscript") {
+    style = Style$1.SCRIPTSCRIPT;
+  }
+
+  return style;
+};
+
+const htmlBuilder$6 = (group, options) => {
+  // Fractions are handled in the TeXbook on pages 444-445, rules 15(a-e).
+  const style = adjustStyle(group.size, options.style);
+  const nstyle = style.fracNum();
+  const dstyle = style.fracDen();
+  let newOptions;
+  newOptions = options.havingStyle(nstyle);
+  const numerm = buildGroup(group.numer, newOptions, options);
+
+  if (group.continued) {
+    // \cfrac inserts a \strut into the numerator.
+    // Get \strut dimensions from TeXbook page 353.
+    const hStrut = 8.5 / options.fontMetrics().ptPerEm;
+    const dStrut = 3.5 / options.fontMetrics().ptPerEm;
+    numerm.height = numerm.height < hStrut ? hStrut : numerm.height;
+    numerm.depth = numerm.depth < dStrut ? dStrut : numerm.depth;
+  }
+
+  newOptions = options.havingStyle(dstyle);
+  const denomm = buildGroup(group.denom, newOptions, options);
+  let rule;
+  let ruleWidth;
+  let ruleSpacing;
+
+  if (group.hasBarLine) {
+    if (group.barSize) {
+      ruleWidth = calculateSize(group.barSize, options);
+      rule = buildCommon.makeLineSpan("frac-line", options, ruleWidth);
+    } else {
+      rule = buildCommon.makeLineSpan("frac-line", options);
+    }
+
+    ruleWidth = rule.height;
+    ruleSpacing = rule.height;
+  } else {
+    rule = null;
+    ruleWidth = 0;
+    ruleSpacing = options.fontMetrics().defaultRuleThickness;
+  } // Rule 15b
+
+
+  let numShift;
+  let clearance;
+  let denomShift;
+
+  if (style.size === Style$1.DISPLAY.size || group.size === "display") {
+    numShift = options.fontMetrics().num1;
+
+    if (ruleWidth > 0) {
+      clearance = 3 * ruleSpacing;
+    } else {
+      clearance = 7 * ruleSpacing;
+    }
+
+    denomShift = options.fontMetrics().denom1;
+  } else {
+    if (ruleWidth > 0) {
+      numShift = options.fontMetrics().num2;
+      clearance = ruleSpacing;
+    } else {
+      numShift = options.fontMetrics().num3;
+      clearance = 3 * ruleSpacing;
+    }
+
+    denomShift = options.fontMetrics().denom2;
+  }
+
+  let frac;
+
+  if (!rule) {
+    // Rule 15c
+    const candidateClearance = numShift - numerm.depth - (denomm.height - denomShift);
+
+    if (candidateClearance < clearance) {
+      numShift += 0.5 * (clearance - candidateClearance);
+      denomShift += 0.5 * (clearance - candidateClearance);
+    }
+
+    frac = buildCommon.makeVList({
+      positionType: "individualShift",
+      children: [{
+        type: "elem",
+        elem: denomm,
+        shift: denomShift
+      }, {
+        type: "elem",
+        elem: numerm,
+        shift: -numShift
+      }]
+    }, options);
+  } else {
+    // Rule 15d
+    const axisHeight = options.fontMetrics().axisHeight;
+
+    if (numShift - numerm.depth - (axisHeight + 0.5 * ruleWidth) < clearance) {
+      numShift += clearance - (numShift - numerm.depth - (axisHeight + 0.5 * ruleWidth));
+    }
+
+    if (axisHeight - 0.5 * ruleWidth - (denomm.height - denomShift) < clearance) {
+      denomShift += clearance - (axisHeight - 0.5 * ruleWidth - (denomm.height - denomShift));
+    }
+
+    const midShift = -(axisHeight - 0.5 * ruleWidth);
+    frac = buildCommon.makeVList({
+      positionType: "individualShift",
+      children: [{
+        type: "elem",
+        elem: denomm,
+        shift: denomShift
+      }, {
+        type: "elem",
+        elem: rule,
+        shift: midShift
+      }, {
+        type: "elem",
+        elem: numerm,
+        shift: -numShift
+      }]
+    }, options);
+  } // Since we manually change the style sometimes (with \dfrac or \tfrac),
+  // account for the possible size change here.
+
+
+  newOptions = options.havingStyle(style);
+  frac.height *= newOptions.sizeMultiplier / options.sizeMultiplier;
+  frac.depth *= newOptions.sizeMultiplier / options.sizeMultiplier; // Rule 15e
+
+  let delimSize;
+
+  if (style.size === Style$1.DISPLAY.size) {
+    delimSize = options.fontMetrics().delim1;
+  } else {
+    delimSize = options.fontMetrics().delim2;
+  }
+
+  let leftDelim;
+  let rightDelim;
+
+  if (group.leftDelim == null) {
+    leftDelim = makeNullDelimiter(options, ["mopen"]);
+  } else {
+    leftDelim = delimiter.customSizedDelim(group.leftDelim, delimSize, true, options.havingStyle(style), group.mode, ["mopen"]);
+  }
+
+  if (group.continued) {
+    rightDelim = buildCommon.makeSpan([]); // zero width for \cfrac
+  } else if (group.rightDelim == null) {
+    rightDelim = makeNullDelimiter(options, ["mclose"]);
+  } else {
+    rightDelim = delimiter.customSizedDelim(group.rightDelim, delimSize, true, options.havingStyle(style), group.mode, ["mclose"]);
+  }
+
+  return buildCommon.makeSpan(["mord"].concat(newOptions.sizingClasses(options)), [leftDelim, buildCommon.makeSpan(["mfrac"], [frac]), rightDelim], options);
+};
+
+const mathmlBuilder$6 = (group, options) => {
+  let node = new mathMLTree.MathNode("mfrac", [buildGroup$1(group.numer, options), buildGroup$1(group.denom, options)]);
+
+  if (!group.hasBarLine) {
+    node.setAttribute("linethickness", "0px");
+  } else if (group.barSize) {
+    const ruleWidth = calculateSize(group.barSize, options);
+    node.setAttribute("linethickness", ruleWidth + "em");
+  }
+
+  const style = adjustStyle(group.size, options.style);
+
+  if (style.size !== options.style.size) {
+    node = new mathMLTree.MathNode("mstyle", [node]);
+    const isDisplay = style.size === Style$1.DISPLAY.size ? "true" : "false";
+    node.setAttribute("displaystyle", isDisplay);
+    node.setAttribute("scriptlevel", "0");
+  }
+
+  if (group.leftDelim != null || group.rightDelim != null) {
+    const withDelims = [];
+
+    if (group.leftDelim != null) {
+      const leftOp = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(group.leftDelim.replace("\\", ""))]);
+      leftOp.setAttribute("fence", "true");
+      withDelims.push(leftOp);
+    }
+
+    withDelims.push(node);
+
+    if (group.rightDelim != null) {
+      const rightOp = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(group.rightDelim.replace("\\", ""))]);
+      rightOp.setAttribute("fence", "true");
+      withDelims.push(rightOp);
+    }
+
+    return makeRow(withDelims);
+  }
+
+  return node;
+};
+
+defineFunction({
+  type: "genfrac",
+  names: ["\\cfrac", "\\dfrac", "\\frac", "\\tfrac", "\\dbinom", "\\binom", "\\tbinom", "\\\\atopfrac", // can’t be entered directly
+  "\\\\bracefrac", "\\\\brackfrac"],
+  props: {
+    numArgs: 2,
+    greediness: 2
+  },
+  handler: (_ref, args) => {
+    let parser = _ref.parser,
+        funcName = _ref.funcName;
+    const numer = args[0];
+    const denom = args[1];
+    let hasBarLine;
+    let leftDelim = null;
+    let rightDelim = null;
+    let size = "auto";
+
+    switch (funcName) {
+      case "\\cfrac":
+      case "\\dfrac":
+      case "\\frac":
+      case "\\tfrac":
+        hasBarLine = true;
+        break;
+
+      case "\\\\atopfrac":
+        hasBarLine = false;
+        break;
+
+      case "\\dbinom":
+      case "\\binom":
+      case "\\tbinom":
+        hasBarLine = false;
+        leftDelim = "(";
+        rightDelim = ")";
+        break;
+
+      case "\\\\bracefrac":
+        hasBarLine = false;
+        leftDelim = "\\{";
+        rightDelim = "\\}";
+        break;
+
+      case "\\\\brackfrac":
+        hasBarLine = false;
+        leftDelim = "[";
+        rightDelim = "]";
+        break;
+
+      default:
+        throw new Error("Unrecognized genfrac command");
+    }
+
+    switch (funcName) {
+      case "\\cfrac":
+      case "\\dfrac":
+      case "\\dbinom":
+        size = "display";
+        break;
+
+      case "\\tfrac":
+      case "\\tbinom":
+        size = "text";
+        break;
+    }
+
+    return {
+      type: "genfrac",
+      mode: parser.mode,
+      continued: funcName === "\\cfrac",
+      numer,
+      denom,
+      hasBarLine,
+      leftDelim,
+      rightDelim,
+      size,
+      barSize: null
+    };
+  },
+  htmlBuilder: htmlBuilder$6,
+  mathmlBuilder: mathmlBuilder$6
+}); // Infix generalized fractions -- these are not rendered directly, but replaced
+// immediately by one of the variants above.
+
+defineFunction({
+  type: "infix",
+  names: ["\\over", "\\choose", "\\atop", "\\brace", "\\brack"],
+  props: {
+    numArgs: 0,
+    infix: true
+  },
+
+  handler(_ref2) {
+    let parser = _ref2.parser,
+        funcName = _ref2.funcName,
+        token = _ref2.token;
+    let replaceWith;
+
+    switch (funcName) {
+      case "\\over":
+        replaceWith = "\\frac";
+        break;
+
+      case "\\choose":
+        replaceWith = "\\binom";
+        break;
+
+      case "\\atop":
+        replaceWith = "\\\\atopfrac";
+        break;
+
+      case "\\brace":
+        replaceWith = "\\\\bracefrac";
+        break;
+
+      case "\\brack":
+        replaceWith = "\\\\brackfrac";
+        break;
+
+      default:
+        throw new Error("Unrecognized infix genfrac command");
+    }
+
+    return {
+      type: "infix",
+      mode: parser.mode,
+      replaceWith,
+      token
+    };
+  }
+
+});
+const stylArray = ["display", "text", "script", "scriptscript"];
+
+const delimFromValue = function delimFromValue(delimString) {
+  let delim = null;
+
+  if (delimString.length > 0) {
+    delim = delimString;
+    delim = delim === "." ? null : delim;
+  }
+
+  return delim;
+};
+
+defineFunction({
+  type: "genfrac",
+  names: ["\\genfrac"],
+  props: {
+    numArgs: 6,
+    greediness: 6,
+    argTypes: ["math", "math", "size", "text", "math", "math"]
+  },
+
+  handler(_ref3, args) {
+    let parser = _ref3.parser;
+    const numer = args[4];
+    const denom = args[5]; // Look into the parse nodes to get the desired delimiters.
+
+    let leftNode = checkNodeType(args[0], "atom");
+
+    if (leftNode) {
+      leftNode = assertAtomFamily(args[0], "open");
+    }
+
+    const leftDelim = leftNode ? delimFromValue(leftNode.text) : null;
+    let rightNode = checkNodeType(args[1], "atom");
+
+    if (rightNode) {
+      rightNode = assertAtomFamily(args[1], "close");
+    }
+
+    const rightDelim = rightNode ? delimFromValue(rightNode.text) : null;
+    const barNode = assertNodeType(args[2], "size");
+    let hasBarLine;
+    let barSize = null;
+
+    if (barNode.isBlank) {
+      // \genfrac acts differently than \above.
+      // \genfrac treats an empty size group as a signal to use a
+      // standard bar size. \above would see size = 0 and omit the bar.
+      hasBarLine = true;
+    } else {
+      barSize = barNode.value;
+      hasBarLine = barSize.number > 0;
+    } // Find out if we want displaystyle, textstyle, etc.
+
+
+    let size = "auto";
+    let styl = checkNodeType(args[3], "ordgroup");
+
+    if (styl) {
+      if (styl.body.length > 0) {
+        const textOrd = assertNodeType(styl.body[0], "textord");
+        size = stylArray[Number(textOrd.text)];
+      }
+    } else {
+      styl = assertNodeType(args[3], "textord");
+      size = stylArray[Number(styl.text)];
+    }
+
+    return {
+      type: "genfrac",
+      mode: parser.mode,
+      numer,
+      denom,
+      continued: false,
+      hasBarLine,
+      barSize,
+      leftDelim,
+      rightDelim,
+      size
+    };
+  },
+
+  htmlBuilder: htmlBuilder$6,
+  mathmlBuilder: mathmlBuilder$6
+}); // \above is an infix fraction that also defines a fraction bar size.
+
+defineFunction({
+  type: "infix",
+  names: ["\\above"],
+  props: {
+    numArgs: 1,
+    argTypes: ["size"],
+    infix: true
+  },
+
+  handler(_ref4, args) {
+    let parser = _ref4.parser,
+        funcName = _ref4.funcName,
+        token = _ref4.token;
+    return {
+      type: "infix",
+      mode: parser.mode,
+      replaceWith: "\\\\abovefrac",
+      size: assertNodeType(args[0], "size").value,
+      token
+    };
+  }
+
+});
+defineFunction({
+  type: "genfrac",
+  names: ["\\\\abovefrac"],
+  props: {
+    numArgs: 3,
+    argTypes: ["math", "size", "math"]
+  },
+  handler: (_ref5, args) => {
+    let parser = _ref5.parser,
+        funcName = _ref5.funcName;
+    const numer = args[0];
+    const barSize = assert(assertNodeType(args[1], "infix").size);
+    const denom = args[2];
+    const hasBarLine = barSize.number > 0;
+    return {
+      type: "genfrac",
+      mode: parser.mode,
+      numer,
+      denom,
+      continued: false,
+      hasBarLine,
+      barSize,
+      leftDelim: null,
+      rightDelim: null,
+      size: "auto"
+    };
+  },
+  htmlBuilder: htmlBuilder$6,
+  mathmlBuilder: mathmlBuilder$6
+});
+
+// NOTE: Unlike most `htmlBuilder`s, this one handles not only "horizBrace", but
+const htmlBuilder$7 = (grp, options) => {
+  const style = options.style; // Pull out the `ParseNode<"horizBrace">` if `grp` is a "supsub" node.
+
+  let supSubGroup;
+  let group;
+  const supSub = checkNodeType(grp, "supsub");
+
+  if (supSub) {
+    // Ref: LaTeX source2e: }}}}\limits}
+    // i.e. LaTeX treats the brace similar to an op and passes it
+    // with \limits, so we need to assign supsub style.
+    supSubGroup = supSub.sup ? buildGroup(supSub.sup, options.havingStyle(style.sup()), options) : buildGroup(supSub.sub, options.havingStyle(style.sub()), options);
+    group = assertNodeType(supSub.base, "horizBrace");
+  } else {
+    group = assertNodeType(grp, "horizBrace");
+  } // Build the base group
+
+
+  const body = buildGroup(group.base, options.havingBaseStyle(Style$1.DISPLAY)); // Create the stretchy element
+
+  const braceBody = stretchy.svgSpan(group, options); // Generate the vlist, with the appropriate kerns        ┏━━━━━━━━┓
+  // This first vlist contains the content and the brace:   equation
+
+  let vlist;
+
+  if (group.isOver) {
+    vlist = buildCommon.makeVList({
+      positionType: "firstBaseline",
+      children: [{
+        type: "elem",
+        elem: body
+      }, {
+        type: "kern",
+        size: 0.1
+      }, {
+        type: "elem",
+        elem: braceBody
+      }]
+    }, options); // $FlowFixMe: Replace this with passing "svg-align" into makeVList.
+
+    vlist.children[0].children[0].children[1].classes.push("svg-align");
+  } else {
+    vlist = buildCommon.makeVList({
+      positionType: "bottom",
+      positionData: body.depth + 0.1 + braceBody.height,
+      children: [{
+        type: "elem",
+        elem: braceBody
+      }, {
+        type: "kern",
+        size: 0.1
+      }, {
+        type: "elem",
+        elem: body
+      }]
+    }, options); // $FlowFixMe: Replace this with passing "svg-align" into makeVList.
+
+    vlist.children[0].children[0].children[0].classes.push("svg-align");
+  }
+
+  if (supSubGroup) {
+    // To write the supsub, wrap the first vlist in another vlist:
+    // They can't all go in the same vlist, because the note might be
+    // wider than the equation. We want the equation to control the
+    // brace width.
+    //      note          long note           long note
+    //   ┏━━━━━━━━┓   or    ┏━━━┓     not    ┏━━━━━━━━━┓
+    //    equation           eqn                 eqn
+    const vSpan = buildCommon.makeSpan(["mord", group.isOver ? "mover" : "munder"], [vlist], options);
+
+    if (group.isOver) {
+      vlist = buildCommon.makeVList({
+        positionType: "firstBaseline",
+        children: [{
+          type: "elem",
+          elem: vSpan
+        }, {
+          type: "kern",
+          size: 0.2
+        }, {
+          type: "elem",
+          elem: supSubGroup
+        }]
+      }, options);
+    } else {
+      vlist = buildCommon.makeVList({
+        positionType: "bottom",
+        positionData: vSpan.depth + 0.2 + supSubGroup.height + supSubGroup.depth,
+        children: [{
+          type: "elem",
+          elem: supSubGroup
+        }, {
+          type: "kern",
+          size: 0.2
+        }, {
+          type: "elem",
+          elem: vSpan
+        }]
+      }, options);
+    }
+  }
+
+  return buildCommon.makeSpan(["mord", group.isOver ? "mover" : "munder"], [vlist], options);
+};
+
+const mathmlBuilder$7 = (group, options) => {
+  const accentNode = stretchy.mathMLnode(group.label);
+  return new mathMLTree.MathNode(group.isOver ? "mover" : "munder", [buildGroup$1(group.base, options), accentNode]);
+}; // Horizontal stretchy braces
+
+
+defineFunction({
+  type: "horizBrace",
+  names: ["\\overbrace", "\\underbrace"],
+  props: {
+    numArgs: 1
+  },
+
+  handler(_ref, args) {
+    let parser = _ref.parser,
+        funcName = _ref.funcName;
+    return {
+      type: "horizBrace",
+      mode: parser.mode,
+      label: funcName,
+      isOver: /^\\over/.test(funcName),
+      base: args[0]
+    };
+  },
+
+  htmlBuilder: htmlBuilder$7,
+  mathmlBuilder: mathmlBuilder$7
+});
+
+defineFunction({
+  type: "href",
+  names: ["\\href"],
+  props: {
+    numArgs: 2,
+    argTypes: ["url", "original"],
+    allowedInText: true
+  },
+  handler: (_ref, args) => {
+    let parser = _ref.parser;
+    const body = args[1];
+    const href = assertNodeType(args[0], "url").url;
+
+    if (!parser.settings.isTrusted({
+      command: "\\href",
+      url: href
+    })) {
+      return parser.formatUnsupportedCmd("\\href");
+    }
+
+    return {
+      type: "href",
+      mode: parser.mode,
+      href,
+      body: ordargument(body)
+    };
+  },
+  htmlBuilder: (group, options) => {
+    const elements = buildExpression(group.body, options, false);
+    return buildCommon.makeAnchor(group.href, [], elements, options);
+  },
+  mathmlBuilder: (group, options) => {
+    let math = buildExpressionRow(group.body, options);
+
+    if (!(math instanceof MathNode)) {
+      math = new MathNode("mrow", [math]);
+    }
+
+    math.setAttribute("href", group.href);
+    return math;
+  }
+});
+defineFunction({
+  type: "href",
+  names: ["\\url"],
+  props: {
+    numArgs: 1,
+    argTypes: ["url"],
+    allowedInText: true
+  },
+  handler: (_ref2, args) => {
+    let parser = _ref2.parser;
+    const href = assertNodeType(args[0], "url").url;
+
+    if (!parser.settings.isTrusted({
+      command: "\\url",
+      url: href
+    })) {
+      return parser.formatUnsupportedCmd("\\url");
+    }
+
+    const chars = [];
+
+    for (let i = 0; i < href.length; i++) {
+      let c = href[i];
+
+      if (c === "~") {
+        c = "\\textasciitilde";
+      }
+
+      chars.push({
+        type: "textord",
+        mode: "text",
+        text: c
+      });
+    }
+
+    const body = {
+      type: "text",
+      mode: parser.mode,
+      font: "\\texttt",
+      body: chars
+    };
+    return {
+      type: "href",
+      mode: parser.mode,
+      href,
+      body: ordargument(body)
+    };
+  }
+});
+
+defineFunction({
+  type: "htmlmathml",
+  names: ["\\html@mathml"],
+  props: {
+    numArgs: 2,
+    allowedInText: true
+  },
+  handler: (_ref, args) => {
+    let parser = _ref.parser;
+    return {
+      type: "htmlmathml",
+      mode: parser.mode,
+      html: ordargument(args[0]),
+      mathml: ordargument(args[1])
+    };
+  },
+  htmlBuilder: (group, options) => {
+    const elements = buildExpression(group.html, options, false);
+    return buildCommon.makeFragment(elements);
+  },
+  mathmlBuilder: (group, options) => {
+    return buildExpressionRow(group.mathml, options);
+  }
+});
+
+const sizeData = function sizeData(str) {
+  if (/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(str)) {
+    // str is a number with no unit specified.
+    // default unit is bp, per graphix package.
+    return {
+      number: +str,
+      unit: "bp"
+    };
+  } else {
+    const match = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(str);
+
+    if (!match) {
+      throw new ParseError("Invalid size: '" + str + "' in \\includegraphics");
+    }
+
+    const data = {
+      number: +(match[1] + match[2]),
+      // sign + magnitude, cast to number
+      unit: match[3]
+    };
+
+    if (!validUnit(data)) {
+      throw new ParseError("Invalid unit: '" + data.unit + "' in \\includegraphics.");
+    }
+
+    return data;
+  }
+};
+
+defineFunction({
+  type: "includegraphics",
+  names: ["\\includegraphics"],
+  props: {
+    numArgs: 1,
+    numOptionalArgs: 1,
+    argTypes: ["raw", "url"],
+    allowedInText: false
+  },
+  handler: (_ref, args, optArgs) => {
+    let parser = _ref.parser;
+    let width = {
+      number: 0,
+      unit: "em"
+    };
+    let height = {
+      number: 0.9,
+      unit: "em"
+    }; // sorta character sized.
+
+    let totalheight = {
+      number: 0,
+      unit: "em"
+    };
+    let alt = "";
+
+    if (optArgs[0]) {
+      const attributeStr = assertNodeType(optArgs[0], "raw").string; // Parser.js does not parse key/value pairs. We get a string.
+
+      const attributes = attributeStr.split(",");
+
+      for (let i = 0; i < attributes.length; i++) {
+        const keyVal = attributes[i].split("=");
+
+        if (keyVal.length === 2) {
+          const str = keyVal[1].trim();
+
+          switch (keyVal[0].trim()) {
+            case "alt":
+              alt = str;
+              break;
+
+            case "width":
+              width = sizeData(str);
+              break;
+
+            case "height":
+              height = sizeData(str);
+              break;
+
+            case "totalheight":
+              totalheight = sizeData(str);
+              break;
+
+            default:
+              throw new ParseError("Invalid key: '" + keyVal[0] + "' in \\includegraphics.");
+          }
+        }
+      }
+    }
+
+    const src = assertNodeType(args[0], "url").url;
+
+    if (alt === "") {
+      // No alt given. Use the file name. Strip away the path.
+      alt = src;
+      alt = alt.replace(/^.*[\\/]/, '');
+      alt = alt.substring(0, alt.lastIndexOf('.'));
+    }
+
+    if (!parser.settings.isTrusted({
+      command: "\\includegraphics",
+      url: src
+    })) {
+      return parser.formatUnsupportedCmd("\\includegraphics");
+    }
+
+    return {
+      type: "includegraphics",
+      mode: parser.mode,
+      alt: alt,
+      width: width,
+      height: height,
+      totalheight: totalheight,
+      src: src
+    };
+  },
+  htmlBuilder: (group, options) => {
+    const height = calculateSize(group.height, options);
+    let depth = 0;
+
+    if (group.totalheight.number > 0) {
+      depth = calculateSize(group.totalheight, options) - height;
+      depth = Number(depth.toFixed(2));
+    }
+
+    let width = 0;
+
+    if (group.width.number > 0) {
+      width = calculateSize(group.width, options);
+    }
+
+    const style = {
+      height: height + depth + "em"
+    };
+
+    if (width > 0) {
+      style.width = width + "em";
+    }
+
+    if (depth > 0) {
+      style.verticalAlign = -depth + "em";
+    }
+
+    const node = new Img(group.src, group.alt, style);
+    node.height = height;
+    node.depth = depth;
+    return node;
+  },
+  mathmlBuilder: (group, options) => {
+    const node = new mathMLTree.MathNode("mglyph", []);
+    node.setAttribute("alt", group.alt);
+    const height = calculateSize(group.height, options);
+    let depth = 0;
+
+    if (group.totalheight.number > 0) {
+      depth = calculateSize(group.totalheight, options) - height;
+      depth = depth.toFixed(2);
+      node.setAttribute("valign", "-" + depth + "em");
+    }
+
+    node.setAttribute("height", height + depth + "em");
+
+    if (group.width.number > 0) {
+      const width = calculateSize(group.width, options);
+      node.setAttribute("width", width + "em");
+    }
+
+    node.setAttribute("src", group.src);
+    return node;
+  }
+});
+
+// Horizontal spacing commands
+
+defineFunction({
+  type: "kern",
+  names: ["\\kern", "\\mkern", "\\hskip", "\\mskip"],
+  props: {
+    numArgs: 1,
+    argTypes: ["size"],
+    allowedInText: true
+  },
+
+  handler(_ref, args) {
+    let parser = _ref.parser,
+        funcName = _ref.funcName;
+    const size = assertNodeType(args[0], "size");
+
+    if (parser.settings.strict) {
+      const mathFunction = funcName[1] === 'm'; // \mkern, \mskip
+
+      const muUnit = size.value.unit === 'mu';
+
+      if (mathFunction) {
+        if (!muUnit) {
+          parser.settings.reportNonstrict("mathVsTextUnits", `LaTeX's ${funcName} supports only mu units, ` + `not ${size.value.unit} units`);
+        }
+
+        if (parser.mode !== "math") {
+          parser.settings.reportNonstrict("mathVsTextUnits", `LaTeX's ${funcName} works only in math mode`);
+        }
+      } else {
+        // !mathFunction
+        if (muUnit) {
+          parser.settings.reportNonstrict("mathVsTextUnits", `LaTeX's ${funcName} doesn't support mu units`);
+        }
+      }
+    }
+
+    return {
+      type: "kern",
+      mode: parser.mode,
+      dimension: size.value
+    };
+  },
+
+  htmlBuilder(group, options) {
+    return buildCommon.makeGlue(group.dimension, options);
+  },
+
+  mathmlBuilder(group, options) {
+    const dimension = calculateSize(group.dimension, options);
+    return new mathMLTree.SpaceNode(dimension);
+  }
+
+});
+
+// Horizontal overlap functions
+defineFunction({
+  type: "lap",
+  names: ["\\mathllap", "\\mathrlap", "\\mathclap"],
+  props: {
+    numArgs: 1,
+    allowedInText: true
+  },
+  handler: (_ref, args) => {
+    let parser = _ref.parser,
+        funcName = _ref.funcName;
+    const body = args[0];
+    return {
+      type: "lap",
+      mode: parser.mode,
+      alignment: funcName.slice(5),
+      body
+    };
+  },
+  htmlBuilder: (group, options) => {
+    // mathllap, mathrlap, mathclap
+    let inner;
+
+    if (group.alignment === "clap") {
+      // ref: https://www.math.lsu.edu/~aperlis/publications/mathclap/
+      inner = buildCommon.makeSpan([], [buildGroup(group.body, options)]); // wrap, since CSS will center a .clap > .inner > span
+
+      inner = buildCommon.makeSpan(["inner"], [inner], options);
+    } else {
+      inner = buildCommon.makeSpan(["inner"], [buildGroup(group.body, options)]);
+    }
+
+    const fix = buildCommon.makeSpan(["fix"], []);
+    let node = buildCommon.makeSpan([group.alignment], [inner, fix], options); // At this point, we have correctly set horizontal alignment of the
+    // two items involved in the lap.
+    // Next, use a strut to set the height of the HTML bounding box.
+    // Otherwise, a tall argument may be misplaced.
+
+    const strut = buildCommon.makeSpan(["strut"]);
+    strut.style.height = node.height + node.depth + "em";
+    strut.style.verticalAlign = -node.depth + "em";
+    node.children.unshift(strut); // Next, prevent vertical misplacement when next to something tall.
+
+    node = buildCommon.makeVList({
+      positionType: "firstBaseline",
+      children: [{
+        type: "elem",
+        elem: node
+      }]
+    }, options); // Get the horizontal spacing correct relative to adjacent items.
+
+    return buildCommon.makeSpan(["mord"], [node], options);
+  },
+  mathmlBuilder: (group, options) => {
+    // mathllap, mathrlap, mathclap
+    const node = new mathMLTree.MathNode("mpadded", [buildGroup$1(group.body, options)]);
+
+    if (group.alignment !== "rlap") {
+      const offset = group.alignment === "llap" ? "-1" : "-0.5";
+      node.setAttribute("lspace", offset + "width");
+    }
+
+    node.setAttribute("width", "0px");
+    return node;
+  }
+});
+
+defineFunction({
+  type: "styling",
+  names: ["\\(", "$"],
+  props: {
+    numArgs: 0,
+    allowedInText: true,
+    allowedInMath: false
+  },
+
+  handler(_ref, args) {
+    let funcName = _ref.funcName,
+        parser = _ref.parser;
+    const outerMode = parser.mode;
+    parser.switchMode("math");
+    const close = funcName === "\\(" ? "\\)" : "$";
+    const body = parser.parseExpression(false, close);
+    parser.expect(close);
+    parser.switchMode(outerMode);
+    return {
+      type: "styling",
+      mode: parser.mode,
+      style: "text",
+      body
+    };
+  }
+
+}); // Check for extra closing math delimiters
+
+defineFunction({
+  type: "text",
+  // Doesn't matter what this is.
+  names: ["\\)", "\\]"],
+  props: {
+    numArgs: 0,
+    allowedInText: true,
+    allowedInMath: false
+  },
+
+  handler(context, args) {
+    throw new ParseError(`Mismatched ${context.funcName}`);
+  }
+
+});
+
+const chooseMathStyle = (group, options) => {
+  switch (options.style.size) {
+    case Style$1.DISPLAY.size:
+      return group.display;
+
+    case Style$1.TEXT.size:
+      return group.text;
+
+    case Style$1.SCRIPT.size:
+      return group.script;
+
+    case Style$1.SCRIPTSCRIPT.size:
+      return group.scriptscript;
+
+    default:
+      return group.text;
+  }
+};
+
+defineFunction({
+  type: "mathchoice",
+  names: ["\\mathchoice"],
+  props: {
+    numArgs: 4
+  },
+  handler: (_ref, args) => {
+    let parser = _ref.parser;
+    return {
+      type: "mathchoice",
+      mode: parser.mode,
+      display: ordargument(args[0]),
+      text: ordargument(args[1]),
+      script: ordargument(args[2]),
+      scriptscript: ordargument(args[3])
+    };
+  },
+  htmlBuilder: (group, options) => {
+    const body = chooseMathStyle(group, options);
+    const elements = buildExpression(body, options, false);
+    return buildCommon.makeFragment(elements);
+  },
+  mathmlBuilder: (group, options) => {
+    const body = chooseMathStyle(group, options);
+    return buildExpressionRow(body, options);
+  }
+});
+
+// For an operator with limits, assemble the base, sup, and sub into a span.
+const assembleSupSub = (base, supGroup, subGroup, options, style, slant, baseShift) => {
+  // IE 8 clips \int if it is in a display: inline-block. We wrap it
+  // in a new span so it is an inline, and works.
+  base = buildCommon.makeSpan([], [base]);
+  let sub;
+  let sup; // We manually have to handle the superscripts and subscripts. This,
+  // aside from the kern calculations, is copied from supsub.
+
+  if (supGroup) {
+    const elem = buildGroup(supGroup, options.havingStyle(style.sup()), options);
+    sup = {
+      elem,
+      kern: Math.max(options.fontMetrics().bigOpSpacing1, options.fontMetrics().bigOpSpacing3 - elem.depth)
+    };
+  }
+
+  if (subGroup) {
+    const elem = buildGroup(subGroup, options.havingStyle(style.sub()), options);
+    sub = {
+      elem,
+      kern: Math.max(options.fontMetrics().bigOpSpacing2, options.fontMetrics().bigOpSpacing4 - elem.height)
+    };
+  } // Build the final group as a vlist of the possible subscript, base,
+  // and possible superscript.
+
+
+  let finalGroup;
+
+  if (sup && sub) {
+    const bottom = options.fontMetrics().bigOpSpacing5 + sub.elem.height + sub.elem.depth + sub.kern + base.depth + baseShift;
+    finalGroup = buildCommon.makeVList({
+      positionType: "bottom",
+      positionData: bottom,
+      children: [{
+        type: "kern",
+        size: options.fontMetrics().bigOpSpacing5
+      }, {
+        type: "elem",
+        elem: sub.elem,
+        marginLeft: -slant + "em"
+      }, {
+        type: "kern",
+        size: sub.kern
+      }, {
+        type: "elem",
+        elem: base
+      }, {
+        type: "kern",
+        size: sup.kern
+      }, {
+        type: "elem",
+        elem: sup.elem,
+        marginLeft: slant + "em"
+      }, {
+        type: "kern",
+        size: options.fontMetrics().bigOpSpacing5
+      }]
+    }, options);
+  } else if (sub) {
+    const top = base.height - baseShift; // Shift the limits by the slant of the symbol. Note
+    // that we are supposed to shift the limits by 1/2 of the slant,
+    // but since we are centering the limits adding a full slant of
+    // margin will shift by 1/2 that.
+
+    finalGroup = buildCommon.makeVList({
+      positionType: "top",
+      positionData: top,
+      children: [{
+        type: "kern",
+        size: options.fontMetrics().bigOpSpacing5
+      }, {
+        type: "elem",
+        elem: sub.elem,
+        marginLeft: -slant + "em"
+      }, {
+        type: "kern",
+        size: sub.kern
+      }, {
+        type: "elem",
+        elem: base
+      }]
+    }, options);
+  } else if (sup) {
+    const bottom = base.depth + baseShift;
+    finalGroup = buildCommon.makeVList({
+      positionType: "bottom",
+      positionData: bottom,
+      children: [{
+        type: "elem",
+        elem: base
+      }, {
+        type: "kern",
+        size: sup.kern
+      }, {
+        type: "elem",
+        elem: sup.elem,
+        marginLeft: slant + "em"
+      }, {
+        type: "kern",
+        size: options.fontMetrics().bigOpSpacing5
+      }]
+    }, options);
+  } else {
+    // This case probably shouldn't occur (this would mean the
+    // supsub was sending us a group with no superscript or
+    // subscript) but be safe.
+    return base;
+  }
+
+  return buildCommon.makeSpan(["mop", "op-limits"], [finalGroup], options);
+};
+
+// Limits, symbols
+// Most operators have a large successor symbol, but these don't.
+const noSuccessor = ["\\smallint"]; // NOTE: Unlike most `htmlBuilder`s, this one handles not only "op", but also
+// "supsub" since some of them (like \int) can affect super/subscripting.
+
+const htmlBuilder$8 = (grp, options) => {
+  // Operators are handled in the TeXbook pg. 443-444, rule 13(a).
+  let supGroup;
+  let subGroup;
+  let hasLimits = false;
+  let group;
+  const supSub = checkNodeType(grp, "supsub");
+
+  if (supSub) {
+    // If we have limits, supsub will pass us its group to handle. Pull
+    // out the superscript and subscript and set the group to the op in
+    // its base.
+    supGroup = supSub.sup;
+    subGroup = supSub.sub;
+    group = assertNodeType(supSub.base, "op");
+    hasLimits = true;
+  } else {
+    group = assertNodeType(grp, "op");
+  }
+
+  const style = options.style;
+  let large = false;
+
+  if (style.size === Style$1.DISPLAY.size && group.symbol && !utils.contains(noSuccessor, group.name)) {
+    // Most symbol operators get larger in displaystyle (rule 13)
+    large = true;
+  }
+
+  let base;
+
+  if (group.symbol) {
+    // If this is a symbol, create the symbol.
+    const fontName = large ? "Size2-Regular" : "Size1-Regular";
+    let stash = "";
+
+    if (group.name === "\\oiint" || group.name === "\\oiiint") {
+      // No font glyphs yet, so use a glyph w/o the oval.
+      // TODO: When font glyphs are available, delete this code.
+      stash = group.name.substr(1); // $FlowFixMe
+
+      group.name = stash === "oiint" ? "\\iint" : "\\iiint";
+    }
+
+    base = buildCommon.makeSymbol(group.name, fontName, "math", options, ["mop", "op-symbol", large ? "large-op" : "small-op"]);
+
+    if (stash.length > 0) {
+      // We're in \oiint or \oiiint. Overlay the oval.
+      // TODO: When font glyphs are available, delete this code.
+      const italic = base.italic;
+      const oval = buildCommon.staticSvg(stash + "Size" + (large ? "2" : "1"), options);
+      base = buildCommon.makeVList({
+        positionType: "individualShift",
+        children: [{
+          type: "elem",
+          elem: base,
+          shift: 0
+        }, {
+          type: "elem",
+          elem: oval,
+          shift: large ? 0.08 : 0
+        }]
+      }, options); // $FlowFixMe
+
+      group.name = "\\" + stash;
+      base.classes.unshift("mop"); // $FlowFixMe
+
+      base.italic = italic;
+    }
+  } else if (group.body) {
+    // If this is a list, compose that list.
+    const inner = buildExpression(group.body, options, true);
+
+    if (inner.length === 1 && inner[0] instanceof SymbolNode) {
+      base = inner[0];
+      base.classes[0] = "mop"; // replace old mclass
+    } else {
+      base = buildCommon.makeSpan(["mop"], buildCommon.tryCombineChars(inner), options);
+    }
+  } else {
+    // Otherwise, this is a text operator. Build the text from the
+    // operator's name.
+    // TODO(emily): Add a space in the middle of some of these
+    // operators, like \limsup
+    const output = [];
+
+    for (let i = 1; i < group.name.length; i++) {
+      output.push(buildCommon.mathsym(group.name[i], group.mode, options));
+    }
+
+    base = buildCommon.makeSpan(["mop"], output, options);
+  } // If content of op is a single symbol, shift it vertically.
+
+
+  let baseShift = 0;
+  let slant = 0;
+
+  if ((base instanceof SymbolNode || group.name === "\\oiint" || group.name === "\\oiiint") && !group.suppressBaseShift) {
+    // We suppress the shift of the base of \overset and \underset. Otherwise,
+    // shift the symbol so its center lies on the axis (rule 13). It
+    // appears that our fonts have the centers of the symbols already
+    // almost on the axis, so these numbers are very small. Note we
+    // don't actually apply this here, but instead it is used either in
+    // the vlist creation or separately when there are no limits.
+    baseShift = (base.height - base.depth) / 2 - options.fontMetrics().axisHeight; // The slant of the symbol is just its italic correction.
+    // $FlowFixMe
+
+    slant = base.italic;
+  }
+
+  if (hasLimits) {
+    return assembleSupSub(base, supGroup, subGroup, options, style, slant, baseShift);
+  } else {
+    if (baseShift) {
+      base.style.position = "relative";
+      base.style.top = baseShift + "em";
+    }
+
+    return base;
+  }
+};
+
+const mathmlBuilder$8 = (group, options) => {
+  let node;
+
+  if (group.symbol) {
+    // This is a symbol. Just add the symbol.
+    node = new MathNode("mo", [makeText(group.name, group.mode)]);
+
+    if (utils.contains(noSuccessor, group.name)) {
+      node.setAttribute("largeop", "false");
+    }
+  } else if (group.body) {
+    // This is an operator with children. Add them.
+    node = new MathNode("mo", buildExpression$1(group.body, options));
+  } else {
+    // This is a text operator. Add all of the characters from the
+    // operator's name.
+    node = new MathNode("mi", [new TextNode(group.name.slice(1))]); // Append an <mo>&ApplyFunction;</mo>.
+    // ref: https://www.w3.org/TR/REC-MathML/chap3_2.html#sec3.2.4
+
+    const operator = new MathNode("mo", [makeText("\u2061", "text")]);
+
+    if (group.parentIsSupSub) {
+      node = new MathNode("mo", [node, operator]);
+    } else {
+      node = newDocumentFragment([node, operator]);
+    }
+  }
+
+  return node;
+};
+
+const singleCharBigOps = {
+  "\u220F": "\\prod",
+  "\u2210": "\\coprod",
+  "\u2211": "\\sum",
+  "\u22c0": "\\bigwedge",
+  "\u22c1": "\\bigvee",
+  "\u22c2": "\\bigcap",
+  "\u22c3": "\\bigcup",
+  "\u2a00": "\\bigodot",
+  "\u2a01": "\\bigoplus",
+  "\u2a02": "\\bigotimes",
+  "\u2a04": "\\biguplus",
+  "\u2a06": "\\bigsqcup"
+};
+defineFunction({
+  type: "op",
+  names: ["\\coprod", "\\bigvee", "\\bigwedge", "\\biguplus", "\\bigcap", "\\bigcup", "\\intop", "\\prod", "\\sum", "\\bigotimes", "\\bigoplus", "\\bigodot", "\\bigsqcup", "\\smallint", "\u220F", "\u2210", "\u2211", "\u22c0", "\u22c1", "\u22c2", "\u22c3", "\u2a00", "\u2a01", "\u2a02", "\u2a04", "\u2a06"],
+  props: {
+    numArgs: 0
+  },
+  handler: (_ref, args) => {
+    let parser = _ref.parser,
+        funcName = _ref.funcName;
+    let fName = funcName;
+
+    if (fName.length === 1) {
+      fName = singleCharBigOps[fName];
+    }
+
+    return {
+      type: "op",
+      mode: parser.mode,
+      limits: true,
+      parentIsSupSub: false,
+      symbol: true,
+      name: fName
+    };
+  },
+  htmlBuilder: htmlBuilder$8,
+  mathmlBuilder: mathmlBuilder$8
+}); // Note: calling defineFunction with a type that's already been defined only
+// works because the same htmlBuilder and mathmlBuilder are being used.
+
+defineFunction({
+  type: "op",
+  names: ["\\mathop"],
+  props: {
+    numArgs: 1
+  },
+  handler: (_ref2, args) => {
+    let parser = _ref2.parser;
+    const body = args[0];
+    return {
+      type: "op",
+      mode: parser.mode,
+      limits: false,
+      parentIsSupSub: false,
+      symbol: false,
+      body: ordargument(body)
+    };
+  },
+  htmlBuilder: htmlBuilder$8,
+  mathmlBuilder: mathmlBuilder$8
+}); // There are 2 flags for operators; whether they produce limits in
+// displaystyle, and whether they are symbols and should grow in
+// displaystyle. These four groups cover the four possible choices.
+
+const singleCharIntegrals = {
+  "\u222b": "\\int",
+  "\u222c": "\\iint",
+  "\u222d": "\\iiint",
+  "\u222e": "\\oint",
+  "\u222f": "\\oiint",
+  "\u2230": "\\oiiint"
+}; // No limits, not symbols
+
+defineFunction({
+  type: "op",
+  names: ["\\arcsin", "\\arccos", "\\arctan", "\\arctg", "\\arcctg", "\\arg", "\\ch", "\\cos", "\\cosec", "\\cosh", "\\cot", "\\cotg", "\\coth", "\\csc", "\\ctg", "\\cth", "\\deg", "\\dim", "\\exp", "\\hom", "\\ker", "\\lg", "\\ln", "\\log", "\\sec", "\\sin", "\\sinh", "\\sh", "\\tan", "\\tanh", "\\tg", "\\th"],
+  props: {
+    numArgs: 0
+  },
+
+  handler(_ref3) {
+    let parser = _ref3.parser,
+        funcName = _ref3.funcName;
+    return {
+      type: "op",
+      mode: parser.mode,
+      limits: false,
+      parentIsSupSub: false,
+      symbol: false,
+      name: funcName
+    };
+  },
+
+  htmlBuilder: htmlBuilder$8,
+  mathmlBuilder: mathmlBuilder$8
+}); // Limits, not symbols
+
+defineFunction({
+  type: "op",
+  names: ["\\det", "\\gcd", "\\inf", "\\lim", "\\max", "\\min", "\\Pr", "\\sup"],
+  props: {
+    numArgs: 0
+  },
+
+  handler(_ref4) {
+    let parser = _ref4.parser,
+        funcName = _ref4.funcName;
+    return {
+      type: "op",
+      mode: parser.mode,
+      limits: true,
+      parentIsSupSub: false,
+      symbol: false,
+      name: funcName
+    };
+  },
+
+  htmlBuilder: htmlBuilder$8,
+  mathmlBuilder: mathmlBuilder$8
+}); // No limits, symbols
+
+defineFunction({
+  type: "op",
+  names: ["\\int", "\\iint", "\\iiint", "\\oint", "\\oiint", "\\oiiint", "\u222b", "\u222c", "\u222d", "\u222e", "\u222f", "\u2230"],
+  props: {
+    numArgs: 0
+  },
+
+  handler(_ref5) {
+    let parser = _ref5.parser,
+        funcName = _ref5.funcName;
+    let fName = funcName;
+
+    if (fName.length === 1) {
+      fName = singleCharIntegrals[fName];
+    }
+
+    return {
+      type: "op",
+      mode: parser.mode,
+      limits: false,
+      parentIsSupSub: false,
+      symbol: true,
+      name: fName
+    };
+  },
+
+  htmlBuilder: htmlBuilder$8,
+  mathmlBuilder: mathmlBuilder$8
+});
+
+// NOTE: Unlike most `htmlBuilder`s, this one handles not only
+// "operatorname", but also  "supsub" since \operatorname* can
+const htmlBuilder$9 = (grp, options) => {
+  // Operators are handled in the TeXbook pg. 443-444, rule 13(a).
+  let supGroup;
+  let subGroup;
+  let hasLimits = false;
+  let group;
+  const supSub = checkNodeType(grp, "supsub");
+
+  if (supSub) {
+    // If we have limits, supsub will pass us its group to handle. Pull
+    // out the superscript and subscript and set the group to the op in
+    // its base.
+    supGroup = supSub.sup;
+    subGroup = supSub.sub;
+    group = assertNodeType(supSub.base, "operatorname");
+    hasLimits = true;
+  } else {
+    group = assertNodeType(grp, "operatorname");
+  }
+
+  let base;
+
+  if (group.body.length > 0) {
+    const body = group.body.map(child => {
+      // $FlowFixMe: Check if the node has a string `text` property.
+      const childText = child.text;
+
+      if (typeof childText === "string") {
+        return {
+          type: "textord",
+          mode: child.mode,
+          text: childText
+        };
+      } else {
+        return child;
+      }
+    }); // Consolidate function names into symbol characters.
+
+    const expression = buildExpression(body, options.withFont("mathrm"), true);
+
+    for (let i = 0; i < expression.length; i++) {
+      const child = expression[i];
+
+      if (child instanceof SymbolNode) {
+        // Per amsopn package,
+        // change minus to hyphen and \ast to asterisk
+        child.text = child.text.replace(/\u2212/, "-").replace(/\u2217/, "*");
+      }
+    }
+
+    base = buildCommon.makeSpan(["mop"], expression, options);
+  } else {
+    base = buildCommon.makeSpan(["mop"], [], options);
+  }
+
+  if (hasLimits) {
+    return assembleSupSub(base, supGroup, subGroup, options, options.style, 0, 0);
+  } else {
+    return base;
+  }
+};
+
+const mathmlBuilder$9 = (group, options) => {
+  // The steps taken here are similar to the html version.
+  let expression = buildExpression$1(group.body, options.withFont("mathrm")); // Is expression a string or has it something like a fraction?
+
+  let isAllString = true; // default
+
+  for (let i = 0; i < expression.length; i++) {
+    const node = expression[i];
+
+    if (node instanceof mathMLTree.SpaceNode) ; else if (node instanceof mathMLTree.MathNode) {
+      switch (node.type) {
+        case "mi":
+        case "mn":
+        case "ms":
+        case "mspace":
+        case "mtext":
+          break;
+        // Do nothing yet.
+
+        case "mo":
+          {
+            const child = node.children[0];
+
+            if (node.children.length === 1 && child instanceof mathMLTree.TextNode) {
+              child.text = child.text.replace(/\u2212/, "-").replace(/\u2217/, "*");
+            } else {
+              isAllString = false;
+            }
+
+            break;
+          }
+
+        default:
+          isAllString = false;
+      }
+    } else {
+      isAllString = false;
+    }
+  }
+
+  if (isAllString) {
+    // Write a single TextNode instead of multiple nested tags.
+    const word = expression.map(node => node.toText()).join("");
+    expression = [new mathMLTree.TextNode(word)];
+  }
+
+  const identifier = new mathMLTree.MathNode("mi", expression);
+  identifier.setAttribute("mathvariant", "normal"); // \u2061 is the same as &ApplyFunction;
+  // ref: https://www.w3schools.com/charsets/ref_html_entities_a.asp
+
+  const operator = new mathMLTree.MathNode("mo", [makeText("\u2061", "text")]);
+
+  if (group.parentIsSupSub) {
+    return new mathMLTree.MathNode("mo", [identifier, operator]);
+  } else {
+    return mathMLTree.newDocumentFragment([identifier, operator]);
+  }
+}; // \operatorname
+// amsopn.dtx: \mathop{#1\kern\z@\operator@font#3}\newmcodes@
+
+
+defineFunction({
+  type: "operatorname",
+  names: ["\\operatorname", "\\operatorname*"],
+  props: {
+    numArgs: 1
+  },
+  handler: (_ref, args) => {
+    let parser = _ref.parser,
+        funcName = _ref.funcName;
+    const body = args[0];
+    return {
+      type: "operatorname",
+      mode: parser.mode,
+      body: ordargument(body),
+      alwaysHandleSupSub: funcName === "\\operatorname*",
+      limits: false,
+      parentIsSupSub: false
+    };
+  },
+  htmlBuilder: htmlBuilder$9,
+  mathmlBuilder: mathmlBuilder$9
+});
+
+defineFunctionBuilders({
+  type: "ordgroup",
+
+  htmlBuilder(group, options) {
+    if (group.semisimple) {
+      return buildCommon.makeFragment(buildExpression(group.body, options, false));
+    }
+
+    return buildCommon.makeSpan(["mord"], buildExpression(group.body, options, true), options);
+  },
+
+  mathmlBuilder(group, options) {
+    return buildExpressionRow(group.body, options, true);
+  }
+
+});
+
+defineFunction({
+  type: "overline",
+  names: ["\\overline"],
+  props: {
+    numArgs: 1
+  },
+
+  handler(_ref, args) {
+    let parser = _ref.parser;
+    const body = args[0];
+    return {
+      type: "overline",
+      mode: parser.mode,
+      body
+    };
+  },
+
+  htmlBuilder(group, options) {
+    // Overlines are handled in the TeXbook pg 443, Rule 9.
+    // Build the inner group in the cramped style.
+    const innerGroup = buildGroup(group.body, options.havingCrampedStyle()); // Create the line above the body
+
+    const line = buildCommon.makeLineSpan("overline-line", options); // Generate the vlist, with the appropriate kerns
+
+    const defaultRuleThickness = options.fontMetrics().defaultRuleThickness;
+    const vlist = buildCommon.makeVList({
+      positionType: "firstBaseline",
+      children: [{
+        type: "elem",
+        elem: innerGroup
+      }, {
+        type: "kern",
+        size: 3 * defaultRuleThickness
+      }, {
+        type: "elem",
+        elem: line
+      }, {
+        type: "kern",
+        size: defaultRuleThickness
+      }]
+    }, options);
+    return buildCommon.makeSpan(["mord", "overline"], [vlist], options);
+  },
+
+  mathmlBuilder(group, options) {
+    const operator = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode("\u203e")]);
+    operator.setAttribute("stretchy", "true");
+    const node = new mathMLTree.MathNode("mover", [buildGroup$1(group.body, options), operator]);
+    node.setAttribute("accent", "true");
+    return node;
+  }
+
+});
+
+defineFunction({
+  type: "phantom",
+  names: ["\\phantom"],
+  props: {
+    numArgs: 1,
+    allowedInText: true
+  },
+  handler: (_ref, args) => {
+    let parser = _ref.parser;
+    const body = args[0];
+    return {
+      type: "phantom",
+      mode: parser.mode,
+      body: ordargument(body)
+    };
+  },
+  htmlBuilder: (group, options) => {
+    const elements = buildExpression(group.body, options.withPhantom(), false); // \phantom isn't supposed to affect the elements it contains.
+    // See "color" for more details.
+
+    return buildCommon.makeFragment(elements);
+  },
+  mathmlBuilder: (group, options) => {
+    const inner = buildExpression$1(group.body, options);
+    return new mathMLTree.MathNode("mphantom", inner);
+  }
+});
+defineFunction({
+  type: "hphantom",
+  names: ["\\hphantom"],
+  props: {
+    numArgs: 1,
+    allowedInText: true
+  },
+  handler: (_ref2, args) => {
+    let parser = _ref2.parser;
+    const body = args[0];
+    return {
+      type: "hphantom",
+      mode: parser.mode,
+      body
+    };
+  },
+  htmlBuilder: (group, options) => {
+    let node = buildCommon.makeSpan([], [buildGroup(group.body, options.withPhantom())]);
+    node.height = 0;
+    node.depth = 0;
+
+    if (node.children) {
+      for (let i = 0; i < node.children.length; i++) {
+        node.children[i].height = 0;
+        node.children[i].depth = 0;
+      }
+    } // See smash for comment re: use of makeVList
+
+
+    node = buildCommon.makeVList({
+      positionType: "firstBaseline",
+      children: [{
+        type: "elem",
+        elem: node
+      }]
+    }, options); // For spacing, TeX treats \smash as a math group (same spacing as ord).
+
+    return buildCommon.makeSpan(["mord"], [node], options);
+  },
+  mathmlBuilder: (group, options) => {
+    const inner = buildExpression$1(ordargument(group.body), options);
+    const phantom = new mathMLTree.MathNode("mphantom", inner);
+    const node = new mathMLTree.MathNode("mpadded", [phantom]);
+    node.setAttribute("height", "0px");
+    node.setAttribute("depth", "0px");
+    return node;
+  }
+});
+defineFunction({
+  type: "vphantom",
+  names: ["\\vphantom"],
+  props: {
+    numArgs: 1,
+    allowedInText: true
+  },
+  handler: (_ref3, args) => {
+    let parser = _ref3.parser;
+    const body = args[0];
+    return {
+      type: "vphantom",
+      mode: parser.mode,
+      body
+    };
+  },
+  htmlBuilder: (group, options) => {
+    const inner = buildCommon.makeSpan(["inner"], [buildGroup(group.body, options.withPhantom())]);
+    const fix = buildCommon.makeSpan(["fix"], []);
+    return buildCommon.makeSpan(["mord", "rlap"], [inner, fix], options);
+  },
+  mathmlBuilder: (group, options) => {
+    const inner = buildExpression$1(ordargument(group.body), options);
+    const phantom = new mathMLTree.MathNode("mphantom", inner);
+    const node = new mathMLTree.MathNode("mpadded", [phantom]);
+    node.setAttribute("width", "0px");
+    return node;
+  }
+});
+
+defineFunction({
+  type: "raisebox",
+  names: ["\\raisebox"],
+  props: {
+    numArgs: 2,
+    argTypes: ["size", "hbox"],
+    allowedInText: true
+  },
+
+  handler(_ref, args) {
+    let parser = _ref.parser;
+    const amount = assertNodeType(args[0], "size").value;
+    const body = args[1];
+    return {
+      type: "raisebox",
+      mode: parser.mode,
+      dy: amount,
+      body
+    };
+  },
+
+  htmlBuilder(group, options) {
+    const body = buildGroup(group.body, options);
+    const dy = calculateSize(group.dy, options);
+    return buildCommon.makeVList({
+      positionType: "shift",
+      positionData: -dy,
+      children: [{
+        type: "elem",
+        elem: body
+      }]
+    }, options);
+  },
+
+  mathmlBuilder(group, options) {
+    const node = new mathMLTree.MathNode("mpadded", [buildGroup$1(group.body, options)]);
+    const dy = group.dy.number + group.dy.unit;
+    node.setAttribute("voffset", dy);
+    return node;
+  }
+
+});
+
+defineFunction({
+  type: "rule",
+  names: ["\\rule"],
+  props: {
+    numArgs: 2,
+    numOptionalArgs: 1,
+    argTypes: ["size", "size", "size"]
+  },
+
+  handler(_ref, args, optArgs) {
+    let parser = _ref.parser;
+    const shift = optArgs[0];
+    const width = assertNodeType(args[0], "size");
+    const height = assertNodeType(args[1], "size");
+    return {
+      type: "rule",
+      mode: parser.mode,
+      shift: shift && assertNodeType(shift, "size").value,
+      width: width.value,
+      height: height.value
+    };
+  },
+
+  htmlBuilder(group, options) {
+    // Make an empty span for the rule
+    const rule = buildCommon.makeSpan(["mord", "rule"], [], options); // Calculate the shift, width, and height of the rule, and account for units
+
+    const width = calculateSize(group.width, options);
+    const height = calculateSize(group.height, options);
+    const shift = group.shift ? calculateSize(group.shift, options) : 0; // Style the rule to the right size
+
+    rule.style.borderRightWidth = width + "em";
+    rule.style.borderTopWidth = height + "em";
+    rule.style.bottom = shift + "em"; // Record the height and width
+
+    rule.width = width;
+    rule.height = height + shift;
+    rule.depth = -shift; // Font size is the number large enough that the browser will
+    // reserve at least `absHeight` space above the baseline.
+    // The 1.125 factor was empirically determined
+
+    rule.maxFontSize = height * 1.125 * options.sizeMultiplier;
+    return rule;
+  },
+
+  mathmlBuilder(group, options) {
+    const width = calculateSize(group.width, options);
+    const height = calculateSize(group.height, options);
+    const shift = group.shift ? calculateSize(group.shift, options) : 0;
+    const color = options.color && options.getColor() || "black";
+    const rule = new mathMLTree.MathNode("mspace");
+    rule.setAttribute("mathbackground", color);
+    rule.setAttribute("width", width + "em");
+    rule.setAttribute("height", height + "em");
+    const wrapper = new mathMLTree.MathNode("mpadded", [rule]);
+
+    if (shift >= 0) {
+      wrapper.setAttribute("height", "+" + shift + "em");
+    } else {
+      wrapper.setAttribute("height", shift + "em");
+      wrapper.setAttribute("depth", "+" + -shift + "em");
+    }
+
+    wrapper.setAttribute("voffset", shift + "em");
+    return wrapper;
+  }
+
+});
+
+function sizingGroup(value, options, baseOptions) {
+  const inner = buildExpression(value, options, false);
+  const multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier; // Add size-resetting classes to the inner list and set maxFontSize
+  // manually. Handle nested size changes.
+
+  for (let i = 0; i < inner.length; i++) {
+    const pos = inner[i].classes.indexOf("sizing");
+
+    if (pos < 0) {
+      Array.prototype.push.apply(inner[i].classes, options.sizingClasses(baseOptions));
+    } else if (inner[i].classes[pos + 1] === "reset-size" + options.size) {
+      // This is a nested size change: e.g., inner[i] is the "b" in
+      // `\Huge a \small b`. Override the old size (the `reset-` class)
+      // but not the new size.
+      inner[i].classes[pos + 1] = "reset-size" + baseOptions.size;
+    }
+
+    inner[i].height *= multiplier;
+    inner[i].depth *= multiplier;
+  }
+
+  return buildCommon.makeFragment(inner);
+}
+const sizeFuncs = ["\\tiny", "\\sixptsize", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"];
+const htmlBuilder$a = (group, options) => {
+  // Handle sizing operators like \Huge. Real TeX doesn't actually allow
+  // these functions inside of math expressions, so we do some special
+  // handling.
+  const newOptions = options.havingSize(group.size);
+  return sizingGroup(group.body, newOptions, options);
+};
+defineFunction({
+  type: "sizing",
+  names: sizeFuncs,
+  props: {
+    numArgs: 0,
+    allowedInText: true
+  },
+  handler: (_ref, args) => {
+    let breakOnTokenText = _ref.breakOnTokenText,
+        funcName = _ref.funcName,
+        parser = _ref.parser;
+    const body = parser.parseExpression(false, breakOnTokenText);
+    return {
+      type: "sizing",
+      mode: parser.mode,
+      // Figure out what size to use based on the list of functions above
+      size: sizeFuncs.indexOf(funcName) + 1,
+      body
+    };
+  },
+  htmlBuilder: htmlBuilder$a,
+  mathmlBuilder: (group, options) => {
+    const newOptions = options.havingSize(group.size);
+    const inner = buildExpression$1(group.body, newOptions);
+    const node = new mathMLTree.MathNode("mstyle", inner); // TODO(emily): This doesn't produce the correct size for nested size
+    // changes, because we don't keep state of what style we're currently
+    // in, so we can't reset the size to normal before changing it.  Now
+    // that we're passing an options parameter we should be able to fix
+    // this.
+
+    node.setAttribute("mathsize", newOptions.sizeMultiplier + "em");
+    return node;
+  }
+});
+
+// smash, with optional [tb], as in AMS
+defineFunction({
+  type: "smash",
+  names: ["\\smash"],
+  props: {
+    numArgs: 1,
+    numOptionalArgs: 1,
+    allowedInText: true
+  },
+  handler: (_ref, args, optArgs) => {
+    let parser = _ref.parser;
+    let smashHeight = false;
+    let smashDepth = false;
+    const tbArg = optArgs[0] && assertNodeType(optArgs[0], "ordgroup");
+
+    if (tbArg) {
+      // Optional [tb] argument is engaged.
+      // ref: amsmath: \renewcommand{\smash}[1][tb]{%
+      //               def\mb@t{\ht}\def\mb@b{\dp}\def\mb@tb{\ht\z@\z@\dp}%
+      let letter = "";
+
+      for (let i = 0; i < tbArg.body.length; ++i) {
+        const node = tbArg.body[i]; // $FlowFixMe: Not every node type has a `text` property.
+
+        letter = node.text;
+
+        if (letter === "t") {
+          smashHeight = true;
+        } else if (letter === "b") {
+          smashDepth = true;
+        } else {
+          smashHeight = false;
+          smashDepth = false;
+          break;
+        }
+      }
+    } else {
+      smashHeight = true;
+      smashDepth = true;
+    }
+
+    const body = args[0];
+    return {
+      type: "smash",
+      mode: parser.mode,
+      body,
+      smashHeight,
+      smashDepth
+    };
+  },
+  htmlBuilder: (group, options) => {
+    const node = buildCommon.makeSpan([], [buildGroup(group.body, options)]);
+
+    if (!group.smashHeight && !group.smashDepth) {
+      return node;
+    }
+
+    if (group.smashHeight) {
+      node.height = 0; // In order to influence makeVList, we have to reset the children.
+
+      if (node.children) {
+        for (let i = 0; i < node.children.length; i++) {
+          node.children[i].height = 0;
+        }
+      }
+    }
+
+    if (group.smashDepth) {
+      node.depth = 0;
+
+      if (node.children) {
+        for (let i = 0; i < node.children.length; i++) {
+          node.children[i].depth = 0;
+        }
+      }
+    } // At this point, we've reset the TeX-like height and depth values.
+    // But the span still has an HTML line height.
+    // makeVList applies "display: table-cell", which prevents the browser
+    // from acting on that line height. So we'll call makeVList now.
+
+
+    const smashedNode = buildCommon.makeVList({
+      positionType: "firstBaseline",
+      children: [{
+        type: "elem",
+        elem: node
+      }]
+    }, options); // For spacing, TeX treats \hphantom as a math group (same spacing as ord).
+
+    return buildCommon.makeSpan(["mord"], [smashedNode], options);
+  },
+  mathmlBuilder: (group, options) => {
+    const node = new mathMLTree.MathNode("mpadded", [buildGroup$1(group.body, options)]);
+
+    if (group.smashHeight) {
+      node.setAttribute("height", "0px");
+    }
+
+    if (group.smashDepth) {
+      node.setAttribute("depth", "0px");
+    }
+
+    return node;
+  }
+});
+
+defineFunction({
+  type: "sqrt",
+  names: ["\\sqrt"],
+  props: {
+    numArgs: 1,
+    numOptionalArgs: 1
+  },
+
+  handler(_ref, args, optArgs) {
+    let parser = _ref.parser;
+    const index = optArgs[0];
+    const body = args[0];
+    return {
+      type: "sqrt",
+      mode: parser.mode,
+      body,
+      index
+    };
+  },
+
+  htmlBuilder(group, options) {
+    // Square roots are handled in the TeXbook pg. 443, Rule 11.
+    // First, we do the same steps as in overline to build the inner group
+    // and line
+    let inner = buildGroup(group.body, options.havingCrampedStyle());
+
+    if (inner.height === 0) {
+      // Render a small surd.
+      inner.height = options.fontMetrics().xHeight;
+    } // Some groups can return document fragments.  Handle those by wrapping
+    // them in a span.
+
+
+    inner = buildCommon.wrapFragment(inner, options); // Calculate the minimum size for the \surd delimiter
+
+    const metrics = options.fontMetrics();
+    const theta = metrics.defaultRuleThickness;
+    let phi = theta;
+
+    if (options.style.id < Style$1.TEXT.id) {
+      phi = options.fontMetrics().xHeight;
+    } // Calculate the clearance between the body and line
+
+
+    let lineClearance = theta + phi / 4;
+    const minDelimiterHeight = inner.height + inner.depth + lineClearance + theta; // Create a sqrt SVG of the required minimum size
+
+    const _delimiter$sqrtImage = delimiter.sqrtImage(minDelimiterHeight, options),
+          img = _delimiter$sqrtImage.span,
+          ruleWidth = _delimiter$sqrtImage.ruleWidth,
+          advanceWidth = _delimiter$sqrtImage.advanceWidth;
+
+    const delimDepth = img.height - ruleWidth; // Adjust the clearance based on the delimiter size
+
+    if (delimDepth > inner.height + inner.depth + lineClearance) {
+      lineClearance = (lineClearance + delimDepth - inner.height - inner.depth) / 2;
+    } // Shift the sqrt image
+
+
+    const imgShift = img.height - inner.height - lineClearance - ruleWidth;
+    inner.style.paddingLeft = advanceWidth + "em"; // Overlay the image and the argument.
+
+    const body = buildCommon.makeVList({
+      positionType: "firstBaseline",
+      children: [{
+        type: "elem",
+        elem: inner,
+        wrapperClasses: ["svg-align"]
+      }, {
+        type: "kern",
+        size: -(inner.height + imgShift)
+      }, {
+        type: "elem",
+        elem: img
+      }, {
+        type: "kern",
+        size: ruleWidth
+      }]
+    }, options);
+
+    if (!group.index) {
+      return buildCommon.makeSpan(["mord", "sqrt"], [body], options);
+    } else {
+      // Handle the optional root index
+      // The index is always in scriptscript style
+      const newOptions = options.havingStyle(Style$1.SCRIPTSCRIPT);
+      const rootm = buildGroup(group.index, newOptions, options); // The amount the index is shifted by. This is taken from the TeX
+      // source, in the definition of `\r@@t`.
+
+      const toShift = 0.6 * (body.height - body.depth); // Build a VList with the superscript shifted up correctly
+
+      const rootVList = buildCommon.makeVList({
+        positionType: "shift",
+        positionData: -toShift,
+        children: [{
+          type: "elem",
+          elem: rootm
+        }]
+      }, options); // Add a class surrounding it so we can add on the appropriate
+      // kerning
+
+      const rootVListWrap = buildCommon.makeSpan(["root"], [rootVList]);
+      return buildCommon.makeSpan(["mord", "sqrt"], [rootVListWrap, body], options);
+    }
+  },
+
+  mathmlBuilder(group, options) {
+    const body = group.body,
+          index = group.index;
+    return index ? new mathMLTree.MathNode("mroot", [buildGroup$1(body, options), buildGroup$1(index, options)]) : new mathMLTree.MathNode("msqrt", [buildGroup$1(body, options)]);
+  }
+
+});
+
+const styleMap$1 = {
+  "display": Style$1.DISPLAY,
+  "text": Style$1.TEXT,
+  "script": Style$1.SCRIPT,
+  "scriptscript": Style$1.SCRIPTSCRIPT
+};
+defineFunction({
+  type: "styling",
+  names: ["\\displaystyle", "\\textstyle", "\\scriptstyle", "\\scriptscriptstyle"],
+  props: {
+    numArgs: 0,
+    allowedInText: true
+  },
+
+  handler(_ref, args) {
+    let breakOnTokenText = _ref.breakOnTokenText,
+        funcName = _ref.funcName,
+        parser = _ref.parser;
+    // parse out the implicit body
+    const body = parser.parseExpression(true, breakOnTokenText); // TODO: Refactor to avoid duplicating styleMap in multiple places (e.g.
+    // here and in buildHTML and de-dupe the enumeration of all the styles).
+    // $FlowFixMe: The names above exactly match the styles.
+
+    const style = funcName.slice(1, funcName.length - 5);
+    return {
+      type: "styling",
+      mode: parser.mode,
+      // Figure out what style to use by pulling out the style from
+      // the function name
+      style,
+      body
+    };
+  },
+
+  htmlBuilder(group, options) {
+    // Style changes are handled in the TeXbook on pg. 442, Rule 3.
+    const newStyle = styleMap$1[group.style];
+    const newOptions = options.havingStyle(newStyle).withFont('');
+    return sizingGroup(group.body, newOptions, options);
+  },
+
+  mathmlBuilder(group, options) {
+    // Figure out what style we're changing to.
+    const newStyle = styleMap$1[group.style];
+    const newOptions = options.havingStyle(newStyle);
+    const inner = buildExpression$1(group.body, newOptions);
+    const node = new mathMLTree.MathNode("mstyle", inner);
+    const styleAttributes = {
+      "display": ["0", "true"],
+      "text": ["0", "false"],
+      "script": ["1", "false"],
+      "scriptscript": ["2", "false"]
+    };
+    const attr = styleAttributes[group.style];
+    node.setAttribute("scriptlevel", attr[0]);
+    node.setAttribute("displaystyle", attr[1]);
+    return node;
+  }
+
+});
+
+/**
+ * Sometimes, groups perform special rules when they have superscripts or
+ * subscripts attached to them. This function lets the `supsub` group know that
+ * Sometimes, groups perform special rules when they have superscripts or
+ * its inner element should handle the superscripts and subscripts instead of
+ * handling them itself.
+ */
+const htmlBuilderDelegate = function htmlBuilderDelegate(group, options) {
+  const base = group.base;
+
+  if (!base) {
+    return null;
+  } else if (base.type === "op") {
+    // Operators handle supsubs differently when they have limits
+    // (e.g. `\displaystyle\sum_2^3`)
+    const delegate = base.limits && (options.style.size === Style$1.DISPLAY.size || base.alwaysHandleSupSub);
+    return delegate ? htmlBuilder$8 : null;
+  } else if (base.type === "operatorname") {
+    const delegate = base.alwaysHandleSupSub && (options.style.size === Style$1.DISPLAY.size || base.limits);
+    return delegate ? htmlBuilder$9 : null;
+  } else if (base.type === "accent") {
+    return utils.isCharacterBox(base.base) ? htmlBuilder : null;
+  } else if (base.type === "horizBrace") {
+    const isSup = !group.sub;
+    return isSup === base.isOver ? htmlBuilder$7 : null;
+  } else {
+    return null;
+  }
+}; // Super scripts and subscripts, whose precise placement can depend on other
+// functions that precede them.
+
+
+defineFunctionBuilders({
+  type: "supsub",
+
+  htmlBuilder(group, options) {
+    // Superscript and subscripts are handled in the TeXbook on page
+    // 445-446, rules 18(a-f).
+    // Here is where we defer to the inner group if it should handle
+    // superscripts and subscripts itself.
+    const builderDelegate = htmlBuilderDelegate(group, options);
+
+    if (builderDelegate) {
+      return builderDelegate(group, options);
+    }
+
+    const valueBase = group.base,
+          valueSup = group.sup,
+          valueSub = group.sub;
+    const base = buildGroup(valueBase, options);
+    let supm;
+    let subm;
+    const metrics = options.fontMetrics(); // Rule 18a
+
+    let supShift = 0;
+    let subShift = 0;
+    const isCharacterBox = valueBase && utils.isCharacterBox(valueBase);
+
+    if (valueSup) {
+      const newOptions = options.havingStyle(options.style.sup());
+      supm = buildGroup(valueSup, newOptions, options);
+
+      if (!isCharacterBox) {
+        supShift = base.height - newOptions.fontMetrics().supDrop * newOptions.sizeMultiplier / options.sizeMultiplier;
+      }
+    }
+
+    if (valueSub) {
+      const newOptions = options.havingStyle(options.style.sub());
+      subm = buildGroup(valueSub, newOptions, options);
+
+      if (!isCharacterBox) {
+        subShift = base.depth + newOptions.fontMetrics().subDrop * newOptions.sizeMultiplier / options.sizeMultiplier;
+      }
+    } // Rule 18c
+
+
+    let minSupShift;
+
+    if (options.style === Style$1.DISPLAY) {
+      minSupShift = metrics.sup1;
+    } else if (options.style.cramped) {
+      minSupShift = metrics.sup3;
+    } else {
+      minSupShift = metrics.sup2;
+    } // scriptspace is a font-size-independent size, so scale it
+    // appropriately for use as the marginRight.
+
+
+    const multiplier = options.sizeMultiplier;
+    const marginRight = 0.5 / metrics.ptPerEm / multiplier + "em";
+    let marginLeft = null;
+
+    if (subm) {
+      // Subscripts shouldn't be shifted by the base's italic correction.
+      // Account for that by shifting the subscript back the appropriate
+      // amount. Note we only do this when the base is a single symbol.
+      const isOiint = group.base && group.base.type === "op" && group.base.name && (group.base.name === "\\oiint" || group.base.name === "\\oiiint");
+
+      if (base instanceof SymbolNode || isOiint) {
+        // $FlowFixMe
+        marginLeft = -base.italic + "em";
+      }
+    }
+
+    let supsub;
+
+    if (supm && subm) {
+      supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight);
+      subShift = Math.max(subShift, metrics.sub2);
+      const ruleWidth = metrics.defaultRuleThickness; // Rule 18e
+
+      const maxWidth = 4 * ruleWidth;
+
+      if (supShift - supm.depth - (subm.height - subShift) < maxWidth) {
+        subShift = maxWidth - (supShift - supm.depth) + subm.height;
+        const psi = 0.8 * metrics.xHeight - (supShift - supm.depth);
+
+        if (psi > 0) {
+          supShift += psi;
+          subShift -= psi;
+        }
+      }
+
+      const vlistElem = [{
+        type: "elem",
+        elem: subm,
+        shift: subShift,
+        marginRight,
+        marginLeft
+      }, {
+        type: "elem",
+        elem: supm,
+        shift: -supShift,
+        marginRight
+      }];
+      supsub = buildCommon.makeVList({
+        positionType: "individualShift",
+        children: vlistElem
+      }, options);
+    } else if (subm) {
+      // Rule 18b
+      subShift = Math.max(subShift, metrics.sub1, subm.height - 0.8 * metrics.xHeight);
+      const vlistElem = [{
+        type: "elem",
+        elem: subm,
+        marginLeft,
+        marginRight
+      }];
+      supsub = buildCommon.makeVList({
+        positionType: "shift",
+        positionData: subShift,
+        children: vlistElem
+      }, options);
+    } else if (supm) {
+      // Rule 18c, d
+      supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight);
+      supsub = buildCommon.makeVList({
+        positionType: "shift",
+        positionData: -supShift,
+        children: [{
+          type: "elem",
+          elem: supm,
+          marginRight
+        }]
+      }, options);
+    } else {
+      throw new Error("supsub must have either sup or sub.");
+    } // Wrap the supsub vlist in a span.msupsub to reset text-align.
+
+
+    const mclass = getTypeOfDomTree(base, "right") || "mord";
+    return buildCommon.makeSpan([mclass], [base, buildCommon.makeSpan(["msupsub"], [supsub])], options);
+  },
+
+  mathmlBuilder(group, options) {
+    // Is the inner group a relevant horizonal brace?
+    let isBrace = false;
+    let isOver;
+    let isSup;
+    const horizBrace = checkNodeType(group.base, "horizBrace");
+
+    if (horizBrace) {
+      isSup = !!group.sup;
+
+      if (isSup === horizBrace.isOver) {
+        isBrace = true;
+        isOver = horizBrace.isOver;
+      }
+    }
+
+    if (group.base && (group.base.type === "op" || group.base.type === "operatorname")) {
+      group.base.parentIsSupSub = true;
+    }
+
+    const children = [buildGroup$1(group.base, options)];
+
+    if (group.sub) {
+      children.push(buildGroup$1(group.sub, options));
+    }
+
+    if (group.sup) {
+      children.push(buildGroup$1(group.sup, options));
+    }
+
+    let nodeType;
+
+    if (isBrace) {
+      nodeType = isOver ? "mover" : "munder";
+    } else if (!group.sub) {
+      const base = group.base;
+
+      if (base && base.type === "op" && base.limits && (options.style === Style$1.DISPLAY || base.alwaysHandleSupSub)) {
+        nodeType = "mover";
+      } else if (base && base.type === "operatorname" && base.alwaysHandleSupSub && (base.limits || options.style === Style$1.DISPLAY)) {
+        nodeType = "mover";
+      } else {
+        nodeType = "msup";
+      }
+    } else if (!group.sup) {
+      const base = group.base;
+
+      if (base && base.type === "op" && base.limits && (options.style === Style$1.DISPLAY || base.alwaysHandleSupSub)) {
+        nodeType = "munder";
+      } else if (base && base.type === "operatorname" && base.alwaysHandleSupSub && (base.limits || options.style === Style$1.DISPLAY)) {
+        nodeType = "munder";
+      } else {
+        nodeType = "msub";
+      }
+    } else {
+      const base = group.base;
+
+      if (base && base.type === "op" && base.limits && options.style === Style$1.DISPLAY) {
+        nodeType = "munderover";
+      } else if (base && base.type === "operatorname" && base.alwaysHandleSupSub && (options.style === Style$1.DISPLAY || base.limits)) {
+        nodeType = "munderover";
+      } else {
+        nodeType = "msubsup";
+      }
+    }
+
+    const node = new mathMLTree.MathNode(nodeType, children);
+    return node;
+  }
+
+});
+
+defineFunctionBuilders({
+  type: "atom",
+
+  htmlBuilder(group, options) {
+    return buildCommon.mathsym(group.text, group.mode, options, ["m" + group.family]);
+  },
+
+  mathmlBuilder(group, options) {
+    const node = new mathMLTree.MathNode("mo", [makeText(group.text, group.mode)]);
+
+    if (group.family === "bin") {
+      const variant = getVariant(group, options);
+
+      if (variant === "bold-italic") {
+        node.setAttribute("mathvariant", variant);
+      }
+    } else if (group.family === "punct") {
+      node.setAttribute("separator", "true");
+    } else if (group.family === "open" || group.family === "close") {
+      // Delims built here should not stretch vertically.
+      // See delimsizing.js for stretchy delims.
+      node.setAttribute("stretchy", "false");
+    }
+
+    return node;
+  }
+
+});
+
+// "mathord" and "textord" ParseNodes created in Parser.js from symbol Groups in
+const defaultVariant = {
+  "mi": "italic",
+  "mn": "normal",
+  "mtext": "normal"
+};
+defineFunctionBuilders({
+  type: "mathord",
+
+  htmlBuilder(group, options) {
+    return buildCommon.makeOrd(group, options, "mathord");
+  },
+
+  mathmlBuilder(group, options) {
+    const node = new mathMLTree.MathNode("mi", [makeText(group.text, group.mode, options)]);
+    const variant = getVariant(group, options) || "italic";
+
+    if (variant !== defaultVariant[node.type]) {
+      node.setAttribute("mathvariant", variant);
+    }
+
+    return node;
+  }
+
+});
+defineFunctionBuilders({
+  type: "textord",
+
+  htmlBuilder(group, options) {
+    return buildCommon.makeOrd(group, options, "textord");
+  },
+
+  mathmlBuilder(group, options) {
+    const text = makeText(group.text, group.mode, options);
+    const variant = getVariant(group, options) || "normal";
+    let node;
+
+    if (group.mode === 'text') {
+      node = new mathMLTree.MathNode("mtext", [text]);
+    } else if (/[0-9]/.test(group.text)) {
+      // TODO(kevinb) merge adjacent <mn> nodes
+      // do it as a post processing step
+      node = new mathMLTree.MathNode("mn", [text]);
+    } else if (group.text === "\\prime") {
+      node = new mathMLTree.MathNode("mo", [text]);
+    } else {
+      node = new mathMLTree.MathNode("mi", [text]);
+    }
+
+    if (variant !== defaultVariant[node.type]) {
+      node.setAttribute("mathvariant", variant);
+    }
+
+    return node;
+  }
+
+});
+
+const cssSpace = {
+  "\\nobreak": "nobreak",
+  "\\allowbreak": "allowbreak"
+}; // A lookup table to determine whether a spacing function/symbol should be
+// treated like a regular space character.  If a symbol or command is a key
+// in this table, then it should be a regular space character.  Furthermore,
+// the associated value may have a `className` specifying an extra CSS class
+// to add to the created `span`.
+
+const regularSpace = {
+  " ": {},
+  "\\ ": {},
+  "~": {
+    className: "nobreak"
+  },
+  "\\space": {},
+  "\\nobreakspace": {
+    className: "nobreak"
+  }
+}; // ParseNode<"spacing"> created in Parser.js from the "spacing" symbol Groups in
+// src/symbols.js.
+
+defineFunctionBuilders({
+  type: "spacing",
+
+  htmlBuilder(group, options) {
+    if (regularSpace.hasOwnProperty(group.text)) {
+      const className = regularSpace[group.text].className || ""; // Spaces are generated by adding an actual space. Each of these
+      // things has an entry in the symbols table, so these will be turned
+      // into appropriate outputs.
+
+      if (group.mode === "text") {
+        const ord = buildCommon.makeOrd(group, options, "textord");
+        ord.classes.push(className);
+        return ord;
+      } else {
+        return buildCommon.makeSpan(["mspace", className], [buildCommon.mathsym(group.text, group.mode, options)], options);
+      }
+    } else if (cssSpace.hasOwnProperty(group.text)) {
+      // Spaces based on just a CSS class.
+      return buildCommon.makeSpan(["mspace", cssSpace[group.text]], [], options);
+    } else {
+      throw new ParseError(`Unknown type of space "${group.text}"`);
+    }
+  },
+
+  mathmlBuilder(group, options) {
+    let node;
+
+    if (regularSpace.hasOwnProperty(group.text)) {
+      node = new mathMLTree.MathNode("mtext", [new mathMLTree.TextNode("\u00a0")]);
+    } else if (cssSpace.hasOwnProperty(group.text)) {
+      // CSS-based MathML spaces (\nobreak, \allowbreak) are ignored
+      return new mathMLTree.MathNode("mspace");
+    } else {
+      throw new ParseError(`Unknown type of space "${group.text}"`);
+    }
+
+    return node;
+  }
+
+});
+
+const pad = () => {
+  const padNode = new mathMLTree.MathNode("mtd", []);
+  padNode.setAttribute("width", "50%");
+  return padNode;
+};
+
+defineFunctionBuilders({
+  type: "tag",
+
+  mathmlBuilder(group, options) {
+    const table = new mathMLTree.MathNode("mtable", [new mathMLTree.MathNode("mtr", [pad(), new mathMLTree.MathNode("mtd", [buildExpressionRow(group.body, options)]), pad(), new mathMLTree.MathNode("mtd", [buildExpressionRow(group.tag, options)])])]);
+    table.setAttribute("width", "100%");
+    return table; // TODO: Left-aligned tags.
+    // Currently, the group and options passed here do not contain
+    // enough info to set tag alignment. `leqno` is in Settings but it is
+    // not passed to Options. On the HTML side, leqno is
+    // set by a CSS class applied in buildTree.js. That would have worked
+    // in MathML if browsers supported <mlabeledtr>. Since they don't, we
+    // need to rewrite the way this function is called.
+  }
+
+});
+
+const textFontFamilies = {
+  "\\text": undefined,
+  "\\textrm": "textrm",
+  "\\textsf": "textsf",
+  "\\texttt": "texttt",
+  "\\textnormal": "textrm"
+};
+const textFontWeights = {
+  "\\textbf": "textbf",
+  "\\textmd": "textmd"
+};
+const textFontShapes = {
+  "\\textit": "textit",
+  "\\textup": "textup"
+};
+
+const optionsWithFont = (group, options) => {
+  const font = group.font; // Checks if the argument is a font family or a font style.
+
+  if (!font) {
+    return options;
+  } else if (textFontFamilies[font]) {
+    return options.withTextFontFamily(textFontFamilies[font]);
+  } else if (textFontWeights[font]) {
+    return options.withTextFontWeight(textFontWeights[font]);
+  } else {
+    return options.withTextFontShape(textFontShapes[font]);
+  }
+};
+
+defineFunction({
+  type: "text",
+  names: [// Font families
+  "\\text", "\\textrm", "\\textsf", "\\texttt", "\\textnormal", // Font weights
+  "\\textbf", "\\textmd", // Font Shapes
+  "\\textit", "\\textup"],
+  props: {
+    numArgs: 1,
+    argTypes: ["text"],
+    greediness: 2,
+    allowedInText: true
+  },
+
+  handler(_ref, args) {
+    let parser = _ref.parser,
+        funcName = _ref.funcName;
+    const body = args[0];
+    return {
+      type: "text",
+      mode: parser.mode,
+      body: ordargument(body),
+      font: funcName
+    };
+  },
+
+  htmlBuilder(group, options) {
+    const newOptions = optionsWithFont(group, options);
+    const inner = buildExpression(group.body, newOptions, true);
+    return buildCommon.makeSpan(["mord", "text"], buildCommon.tryCombineChars(inner), newOptions);
+  },
+
+  mathmlBuilder(group, options) {
+    const newOptions = optionsWithFont(group, options);
+    return buildExpressionRow(group.body, newOptions);
+  }
+
+});
+
+defineFunction({
+  type: "underline",
+  names: ["\\underline"],
+  props: {
+    numArgs: 1,
+    allowedInText: true
+  },
+
+  handler(_ref, args) {
+    let parser = _ref.parser;
+    return {
+      type: "underline",
+      mode: parser.mode,
+      body: args[0]
+    };
+  },
+
+  htmlBuilder(group, options) {
+    // Underlines are handled in the TeXbook pg 443, Rule 10.
+    // Build the inner group.
+    const innerGroup = buildGroup(group.body, options); // Create the line to go below the body
+
+    const line = buildCommon.makeLineSpan("underline-line", options); // Generate the vlist, with the appropriate kerns
+
+    const defaultRuleThickness = options.fontMetrics().defaultRuleThickness;
+    const vlist = buildCommon.makeVList({
+      positionType: "top",
+      positionData: innerGroup.height,
+      children: [{
+        type: "kern",
+        size: defaultRuleThickness
+      }, {
+        type: "elem",
+        elem: line
+      }, {
+        type: "kern",
+        size: 3 * defaultRuleThickness
+      }, {
+        type: "elem",
+        elem: innerGroup
+      }]
+    }, options);
+    return buildCommon.makeSpan(["mord", "underline"], [vlist], options);
+  },
+
+  mathmlBuilder(group, options) {
+    const operator = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode("\u203e")]);
+    operator.setAttribute("stretchy", "true");
+    const node = new mathMLTree.MathNode("munder", [buildGroup$1(group.body, options), operator]);
+    node.setAttribute("accentunder", "true");
+    return node;
+  }
+
+});
+
+defineFunction({
+  type: "verb",
+  names: ["\\verb"],
+  props: {
+    numArgs: 0,
+    allowedInText: true
+  },
+
+  handler(context, args, optArgs) {
+    // \verb and \verb* are dealt with directly in Parser.js.
+    // If we end up here, it's because of a failure to match the two delimiters
+    // in the regex in Lexer.js.  LaTeX raises the following error when \verb is
+    // terminated by end of line (or file).
+    throw new ParseError("\\verb ended by end of line instead of matching delimiter");
+  },
+
+  htmlBuilder(group, options) {
+    const text = makeVerb(group);
+    const body = []; // \verb enters text mode and therefore is sized like \textstyle
+
+    const newOptions = options.havingStyle(options.style.text());
+
+    for (let i = 0; i < text.length; i++) {
+      let c = text[i];
+
+      if (c === '~') {
+        c = '\\textasciitilde';
+      }
+
+      body.push(buildCommon.makeSymbol(c, "Typewriter-Regular", group.mode, newOptions, ["mord", "texttt"]));
+    }
+
+    return buildCommon.makeSpan(["mord", "text"].concat(newOptions.sizingClasses(options)), buildCommon.tryCombineChars(body), newOptions);
+  },
+
+  mathmlBuilder(group, options) {
+    const text = new mathMLTree.TextNode(makeVerb(group));
+    const node = new mathMLTree.MathNode("mtext", [text]);
+    node.setAttribute("mathvariant", "monospace");
+    return node;
+  }
+
+});
+/**
+ * Converts verb group into body string.
+ *
+ * \verb* replaces each space with an open box \u2423
+ * \verb replaces each space with a no-break space \xA0
+ */
+
+const makeVerb = group => group.body.replace(/ /g, group.star ? '\u2423' : '\xA0');
+
+/** Include this to ensure that all functions are defined. */
+const functions = _functions;
+
+/**
+ * The Lexer class handles tokenizing the input in various ways. Since our
+ * parser expects us to be able to backtrack, the lexer allows lexing from any
+ * given starting point.
+ *
+ * Its main exposed function is the `lex` function, which takes a position to
+ * lex from and a type of token to lex. It defers to the appropriate `_innerLex`
+ * function.
+ *
+ * The various `_innerLex` functions perform the actual lexing of different
+ * kinds.
+ */
+
+/* The following tokenRegex
+ * - matches typical whitespace (but not NBSP etc.) using its first group
+ * - does not match any control character \x00-\x1f except whitespace
+ * - does not match a bare backslash
+ * - matches any ASCII character except those just mentioned
+ * - does not match the BMP private use area \uE000-\uF8FF
+ * - does not match bare surrogate code units
+ * - matches any BMP character except for those just described
+ * - matches any valid Unicode surrogate pair
+ * - matches a backslash followed by one or more letters
+ * - matches a backslash followed by any BMP character, including newline
+ * Just because the Lexer matches something doesn't mean it's valid input:
+ * If there is no matching function or symbol definition, the Parser will
+ * still reject the input.
+ */
+const spaceRegexString = "[ \r\n\t]";
+const controlWordRegexString = "\\\\[a-zA-Z@]+";
+const controlSymbolRegexString = "\\\\[^\uD800-\uDFFF]";
+const controlWordWhitespaceRegexString = `${controlWordRegexString}${spaceRegexString}*`;
+const controlWordWhitespaceRegex = new RegExp(`^(${controlWordRegexString})${spaceRegexString}*$`);
+const combiningDiacriticalMarkString = "[\u0300-\u036f]";
+const combiningDiacriticalMarksEndRegex = new RegExp(`${combiningDiacriticalMarkString}+$`);
+const tokenRegexString = `(${spaceRegexString}+)|` + // whitespace
+"([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]" + // single codepoint
+`${combiningDiacriticalMarkString}*` + // ...plus accents
+"|[\uD800-\uDBFF][\uDC00-\uDFFF]" + // surrogate pair
+`${combiningDiacriticalMarkString}*` + // ...plus accents
+"|\\\\verb\\*([^]).*?\\3" + // \verb*
+"|\\\\verb([^*a-zA-Z]).*?\\4" + // \verb unstarred
+"|\\\\operatorname\\*" + // \operatorname*
+`|${controlWordWhitespaceRegexString}` + // \macroName + spaces
+`|${controlSymbolRegexString})`; // \\, \', etc.
+
+/** Main Lexer class */
+
+class Lexer {
+  // category codes, only supports comment characters (14) for now
+  constructor(input, settings) {
+    this.input = void 0;
+    this.settings = void 0;
+    this.tokenRegex = void 0;
+    this.catcodes = void 0;
+    // Separate accents from characters
+    this.input = input;
+    this.settings = settings;
+    this.tokenRegex = new RegExp(tokenRegexString, 'g');
+    this.catcodes = {
+      "%": 14 // comment character
+
+    };
+  }
+
+  setCatcode(char, code) {
+    this.catcodes[char] = code;
+  }
+  /**
+   * This function lexes a single token.
+   */
+
+
+  lex() {
+    const input = this.input;
+    const pos = this.tokenRegex.lastIndex;
+
+    if (pos === input.length) {
+      return new Token("EOF", new SourceLocation(this, pos, pos));
+    }
+
+    const match = this.tokenRegex.exec(input);
+
+    if (match === null || match.index !== pos) {
+      throw new ParseError(`Unexpected character: '${input[pos]}'`, new Token(input[pos], new SourceLocation(this, pos, pos + 1)));
+    }
+
+    let text = match[2] || " ";
+
+    if (this.catcodes[text] === 14) {
+      // comment character
+      const nlIndex = input.indexOf('\n', this.tokenRegex.lastIndex);
+
+      if (nlIndex === -1) {
+        this.tokenRegex.lastIndex = input.length; // EOF
+
+        this.settings.reportNonstrict("commentAtEnd", "% comment has no terminating newline; LaTeX would " + "fail because of commenting the end of math mode (e.g. $)");
+      } else {
+        this.tokenRegex.lastIndex = nlIndex + 1;
+      }
+
+      return this.lex();
+    } // Trim any trailing whitespace from control word match
+
+
+    const controlMatch = text.match(controlWordWhitespaceRegex);
+
+    if (controlMatch) {
+      text = controlMatch[1];
+    }
+
+    return new Token(text, new SourceLocation(this, pos, this.tokenRegex.lastIndex));
+  }
+
+}
+
+/**
+ * A `Namespace` refers to a space of nameable things like macros or lengths,
+ * which can be `set` either globally or local to a nested group, using an
+ * undo stack similar to how TeX implements this functionality.
+ * Performance-wise, `get` and local `set` take constant time, while global
+ * `set` takes time proportional to the depth of group nesting.
+ */
+class Namespace {
+  /**
+   * Both arguments are optional.  The first argument is an object of
+   * built-in mappings which never change.  The second argument is an object
+   * of initial (global-level) mappings, which will constantly change
+   * according to any global/top-level `set`s done.
+   */
+  constructor(builtins, globalMacros) {
+    if (builtins === void 0) {
+      builtins = {};
+    }
+
+    if (globalMacros === void 0) {
+      globalMacros = {};
+    }
+
+    this.current = void 0;
+    this.builtins = void 0;
+    this.undefStack = void 0;
+    this.current = globalMacros;
+    this.builtins = builtins;
+    this.undefStack = [];
+  }
+  /**
+   * Start a new nested group, affecting future local `set`s.
+   */
+
+
+  beginGroup() {
+    this.undefStack.push({});
+  }
+  /**
+   * End current nested group, restoring values before the group began.
+   */
+
+
+  endGroup() {
+    if (this.undefStack.length === 0) {
+      throw new ParseError("Unbalanced namespace destruction: attempt " + "to pop global namespace; please report this as a bug");
+    }
+
+    const undefs = this.undefStack.pop();
+
+    for (const undef in undefs) {
+      if (undefs.hasOwnProperty(undef)) {
+        if (undefs[undef] === undefined) {
+          delete this.current[undef];
+        } else {
+          this.current[undef] = undefs[undef];
+        }
+      }
+    }
+  }
+  /**
+   * Detect whether `name` has a definition.  Equivalent to
+   * `get(name) != null`.
+   */
+
+
+  has(name) {
+    return this.current.hasOwnProperty(name) || this.builtins.hasOwnProperty(name);
+  }
+  /**
+   * Get the current value of a name, or `undefined` if there is no value.
+   *
+   * Note: Do not use `if (namespace.get(...))` to detect whether a macro
+   * is defined, as the definition may be the empty string which evaluates
+   * to `false` in JavaScript.  Use `if (namespace.get(...) != null)` or
+   * `if (namespace.has(...))`.
+   */
+
+
+  get(name) {
+    if (this.current.hasOwnProperty(name)) {
+      return this.current[name];
+    } else {
+      return this.builtins[name];
+    }
+  }
+  /**
+   * Set the current value of a name, and optionally set it globally too.
+   * Local set() sets the current value and (when appropriate) adds an undo
+   * operation to the undo stack.  Global set() may change the undo
+   * operation at every level, so takes time linear in their number.
+   */
+
+
+  set(name, value, global) {
+    if (global === void 0) {
+      global = false;
+    }
+
+    if (global) {
+      // Global set is equivalent to setting in all groups.  Simulate this
+      // by destroying any undos currently scheduled for this name,
+      // and adding an undo with the *new* value (in case it later gets
+      // locally reset within this environment).
+      for (let i = 0; i < this.undefStack.length; i++) {
+        delete this.undefStack[i][name];
+      }
+
+      if (this.undefStack.length > 0) {
+        this.undefStack[this.undefStack.length - 1][name] = value;
+      }
+    } else {
+      // Undo this set at end of this group (possibly to `undefined`),
+      // unless an undo is already in place, in which case that older
+      // value is the correct one.
+      const top = this.undefStack[this.undefStack.length - 1];
+
+      if (top && !top.hasOwnProperty(name)) {
+        top[name] = this.current[name];
+      }
+    }
+
+    this.current[name] = value;
+  }
+
+}
+
+/**
+ * Predefined macros for KaTeX.
+ * This can be used to define some commands in terms of others.
+ */
+const builtinMacros = {};
+
+function defineMacro(name, body) {
+  builtinMacros[name] = body;
+} //////////////////////////////////////////////////////////////////////
+// macro tools
+// LaTeX's \@firstoftwo{#1}{#2} expands to #1, skipping #2
+// TeX source: \long\def\@firstoftwo#1#2{#1}
+
+defineMacro("\\@firstoftwo", function (context) {
+  const args = context.consumeArgs(2);
+  return {
+    tokens: args[0],
+    numArgs: 0
+  };
+}); // LaTeX's \@secondoftwo{#1}{#2} expands to #2, skipping #1
+// TeX source: \long\def\@secondoftwo#1#2{#2}
+
+defineMacro("\\@secondoftwo", function (context) {
+  const args = context.consumeArgs(2);
+  return {
+    tokens: args[1],
+    numArgs: 0
+  };
+}); // LaTeX's \@ifnextchar{#1}{#2}{#3} looks ahead to the next (unexpanded)
+// symbol.  If it matches #1, then the macro expands to #2; otherwise, #3.
+// Note, however, that it does not consume the next symbol in either case.
+
+defineMacro("\\@ifnextchar", function (context) {
+  const args = context.consumeArgs(3); // symbol, if, else
+
+  const nextToken = context.future();
+
+  if (args[0].length === 1 && args[0][0].text === nextToken.text) {
+    return {
+      tokens: args[1],
+      numArgs: 0
+    };
+  } else {
+    return {
+      tokens: args[2],
+      numArgs: 0
+    };
+  }
+}); // LaTeX's \@ifstar{#1}{#2} looks ahead to the next (unexpanded) symbol.
+// If it is `*`, then it consumes the symbol, and the macro expands to #1;
+// otherwise, the macro expands to #2 (without consuming the symbol).
+// TeX source: \def\@ifstar#1{\@ifnextchar *{\@firstoftwo{#1}}}
+
+defineMacro("\\@ifstar", "\\@ifnextchar *{\\@firstoftwo{#1}}"); // LaTeX's \TextOrMath{#1}{#2} expands to #1 in text mode, #2 in math mode
+
+defineMacro("\\TextOrMath", function (context) {
+  const args = context.consumeArgs(2);
+
+  if (context.mode === 'text') {
+    return {
+      tokens: args[0],
+      numArgs: 0
+    };
+  } else {
+    return {
+      tokens: args[1],
+      numArgs: 0
+    };
+  }
+}); // Lookup table for parsing numbers in base 8 through 16
+
+const digitToNumber = {
+  "0": 0,
+  "1": 1,
+  "2": 2,
+  "3": 3,
+  "4": 4,
+  "5": 5,
+  "6": 6,
+  "7": 7,
+  "8": 8,
+  "9": 9,
+  "a": 10,
+  "A": 10,
+  "b": 11,
+  "B": 11,
+  "c": 12,
+  "C": 12,
+  "d": 13,
+  "D": 13,
+  "e": 14,
+  "E": 14,
+  "f": 15,
+  "F": 15
+}; // TeX \char makes a literal character (catcode 12) using the following forms:
+// (see The TeXBook, p. 43)
+//   \char123  -- decimal
+//   \char'123 -- octal
+//   \char"123 -- hex
+//   \char`x   -- character that can be written (i.e. isn't active)
+//   \char`\x  -- character that cannot be written (e.g. %)
+// These all refer to characters from the font, so we turn them into special
+// calls to a function \@char dealt with in the Parser.
+
+defineMacro("\\char", function (context) {
+  let token = context.popToken();
+  let base;
+  let number = '';
+
+  if (token.text === "'") {
+    base = 8;
+    token = context.popToken();
+  } else if (token.text === '"') {
+    base = 16;
+    token = context.popToken();
+  } else if (token.text === "`") {
+    token = context.popToken();
+
+    if (token.text[0] === "\\") {
+      number = token.text.charCodeAt(1);
+    } else if (token.text === "EOF") {
+      throw new ParseError("\\char` missing argument");
+    } else {
+      number = token.text.charCodeAt(0);
+    }
+  } else {
+    base = 10;
+  }
+
+  if (base) {
+    // Parse a number in the given base, starting with first `token`.
+    number = digitToNumber[token.text];
+
+    if (number == null || number >= base) {
+      throw new ParseError(`Invalid base-${base} digit ${token.text}`);
+    }
+
+    let digit;
+
+    while ((digit = digitToNumber[context.future().text]) != null && digit < base) {
+      number *= base;
+      number += digit;
+      context.popToken();
+    }
+  }
+
+  return `\\@char{${number}}`;
+}); // Basic support for macro definitions:
+//     \def\macro{expansion}
+//     \def\macro#1{expansion}
+//     \def\macro#1#2{expansion}
+//     \def\macro#1#2#3#4#5#6#7#8#9{expansion}
+// Also the \gdef and \global\def equivalents
+
+const def = (context, global) => {
+  let arg = context.consumeArgs(1)[0];
+
+  if (arg.length !== 1) {
+    throw new ParseError("\\gdef's first argument must be a macro name");
+  }
+
+  const name = arg[0].text; // Count argument specifiers, and check they are in the order #1 #2 ...
+
+  let numArgs = 0;
+  arg = context.consumeArgs(1)[0];
+
+  while (arg.length === 1 && arg[0].text === "#") {
+    arg = context.consumeArgs(1)[0];
+
+    if (arg.length !== 1) {
+      throw new ParseError(`Invalid argument number length "${arg.length}"`);
+    }
+
+    if (!/^[1-9]$/.test(arg[0].text)) {
+      throw new ParseError(`Invalid argument number "${arg[0].text}"`);
+    }
+
+    numArgs++;
+
+    if (parseInt(arg[0].text) !== numArgs) {
+      throw new ParseError(`Argument number "${arg[0].text}" out of order`);
+    }
+
+    arg = context.consumeArgs(1)[0];
+  } // Final arg is the expansion of the macro
+
+
+  context.macros.set(name, {
+    tokens: arg,
+    numArgs
+  }, global);
+  return '';
+};
+
+defineMacro("\\gdef", context => def(context, true));
+defineMacro("\\def", context => def(context, false));
+defineMacro("\\global", context => {
+  const next = context.consumeArgs(1)[0];
+
+  if (next.length !== 1) {
+    throw new ParseError("Invalid command after \\global");
+  }
+
+  const command = next[0].text; // TODO: Should expand command
+
+  if (command === "\\def") {
+    // \global\def is equivalent to \gdef
+    return def(context, true);
+  } else {
+    throw new ParseError(`Invalid command '${command}' after \\global`);
+  }
+}); // \newcommand{\macro}[args]{definition}
+// \renewcommand{\macro}[args]{definition}
+// TODO: Optional arguments: \newcommand{\macro}[args][default]{definition}
+
+const newcommand = (context, existsOK, nonexistsOK) => {
+  let arg = context.consumeArgs(1)[0];
+
+  if (arg.length !== 1) {
+    throw new ParseError("\\newcommand's first argument must be a macro name");
+  }
+
+  const name = arg[0].text;
+  const exists = context.isDefined(name);
+
+  if (exists && !existsOK) {
+    throw new ParseError(`\\newcommand{${name}} attempting to redefine ` + `${name}; use \\renewcommand`);
+  }
+
+  if (!exists && !nonexistsOK) {
+    throw new ParseError(`\\renewcommand{${name}} when command ${name} ` + `does not yet exist; use \\newcommand`);
+  }
+
+  let numArgs = 0;
+  arg = context.consumeArgs(1)[0];
+
+  if (arg.length === 1 && arg[0].text === "[") {
+    let argText = '';
+    let token = context.expandNextToken();
+
+    while (token.text !== "]" && token.text !== "EOF") {
+      // TODO: Should properly expand arg, e.g., ignore {}s
+      argText += token.text;
+      token = context.expandNextToken();
+    }
+
+    if (!argText.match(/^\s*[0-9]+\s*$/)) {
+      throw new ParseError(`Invalid number of arguments: ${argText}`);
+    }
+
+    numArgs = parseInt(argText);
+    arg = context.consumeArgs(1)[0];
+  } // Final arg is the expansion of the macro
+
+
+  context.macros.set(name, {
+    tokens: arg,
+    numArgs
+  });
+  return '';
+};
+
+defineMacro("\\newcommand", context => newcommand(context, false, true));
+defineMacro("\\renewcommand", context => newcommand(context, true, false));
+defineMacro("\\providecommand", context => newcommand(context, true, true)); //////////////////////////////////////////////////////////////////////
+// Grouping
+// \let\bgroup={ \let\egroup=}
+
+defineMacro("\\bgroup", "{");
+defineMacro("\\egroup", "}"); // Symbols from latex.ltx:
+// \def\lq{`}
+// \def\rq{'}
+// \def \aa {\r a}
+// \def \AA {\r A}
+
+defineMacro("\\lq", "`");
+defineMacro("\\rq", "'");
+defineMacro("\\aa", "\\r a");
+defineMacro("\\AA", "\\r A"); // Copyright (C) and registered (R) symbols. Use raw symbol in MathML.
+// \DeclareTextCommandDefault{\textcopyright}{\textcircled{c}}
+// \DeclareTextCommandDefault{\textregistered}{\textcircled{%
+//      \check@mathfonts\fontsize\sf@size\z@\math@fontsfalse\selectfont R}}
+// \DeclareRobustCommand{\copyright}{%
+//    \ifmmode{\nfss@text{\textcopyright}}\else\textcopyright\fi}
+
+defineMacro("\\textcopyright", "\\html@mathml{\\textcircled{c}}{\\char`©}");
+defineMacro("\\copyright", "\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");
+defineMacro("\\textregistered", "\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}"); // Characters omitted from Unicode range 1D400–1D7FF
+
+defineMacro("\u212C", "\\mathscr{B}"); // script
+
+defineMacro("\u2130", "\\mathscr{E}");
+defineMacro("\u2131", "\\mathscr{F}");
+defineMacro("\u210B", "\\mathscr{H}");
+defineMacro("\u2110", "\\mathscr{I}");
+defineMacro("\u2112", "\\mathscr{L}");
+defineMacro("\u2133", "\\mathscr{M}");
+defineMacro("\u211B", "\\mathscr{R}");
+defineMacro("\u212D", "\\mathfrak{C}"); // Fraktur
+
+defineMacro("\u210C", "\\mathfrak{H}");
+defineMacro("\u2128", "\\mathfrak{Z}"); // Define \Bbbk with a macro that works in both HTML and MathML.
+
+defineMacro("\\Bbbk", "\\Bbb{k}"); // Unicode middle dot
+// The KaTeX fonts do not contain U+00B7. Instead, \cdotp displays
+// the dot at U+22C5 and gives it punct spacing.
+
+defineMacro("\u00b7", "\\cdotp"); // \llap and \rlap render their contents in text mode
+
+defineMacro("\\llap", "\\mathllap{\\textrm{#1}}");
+defineMacro("\\rlap", "\\mathrlap{\\textrm{#1}}");
+defineMacro("\\clap", "\\mathclap{\\textrm{#1}}"); // \not is defined by base/fontmath.ltx via
+// \DeclareMathSymbol{\not}{\mathrel}{symbols}{"36}
+// It's thus treated like a \mathrel, but defined by a symbol that has zero
+// width but extends to the right.  We use \rlap to get that spacing.
+// For MathML we write U+0338 here. buildMathML.js will then do the overlay.
+
+defineMacro("\\not", '\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'); // Negated symbols from base/fontmath.ltx:
+// \def\neq{\not=} \let\ne=\neq
+// \DeclareRobustCommand
+//   \notin{\mathrel{\m@th\mathpalette\c@ncel\in}}
+// \def\c@ncel#1#2{\m@th\ooalign{$\hfil#1\mkern1mu/\hfil$\crcr$#1#2$}}
+
+defineMacro("\\neq", "\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}");
+defineMacro("\\ne", "\\neq");
+defineMacro("\u2260", "\\neq");
+defineMacro("\\notin", "\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}" + "{\\mathrel{\\char`∉}}");
+defineMacro("\u2209", "\\notin"); // Unicode stacked relations
+
+defineMacro("\u2258", "\\html@mathml{" + "\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}" + "}{\\mathrel{\\char`\u2258}}");
+defineMacro("\u2259", "\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}");
+defineMacro("\u225A", "\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225A}}");
+defineMacro("\u225B", "\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}" + "{\\mathrel{\\char`\u225B}}");
+defineMacro("\u225D", "\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}" + "{\\mathrel{\\char`\u225D}}");
+defineMacro("\u225E", "\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}" + "{\\mathrel{\\char`\u225E}}");
+defineMacro("\u225F", "\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225F}}"); // Misc Unicode
+
+defineMacro("\u27C2", "\\perp");
+defineMacro("\u203C", "\\mathclose{!\\mkern-0.8mu!}");
+defineMacro("\u220C", "\\notni");
+defineMacro("\u231C", "\\ulcorner");
+defineMacro("\u231D", "\\urcorner");
+defineMacro("\u231E", "\\llcorner");
+defineMacro("\u231F", "\\lrcorner");
+defineMacro("\u00A9", "\\copyright");
+defineMacro("\u00AE", "\\textregistered");
+defineMacro("\uFE0F", "\\textregistered"); //////////////////////////////////////////////////////////////////////
+// LaTeX_2ε
+// \vdots{\vbox{\baselineskip4\p@  \lineskiplimit\z@
+// \kern6\p@\hbox{.}\hbox{.}\hbox{.}}}
+// We'll call \varvdots, which gets a glyph from symbols.js.
+// The zero-width rule gets us an equivalent to the vertical 6pt kern.
+
+defineMacro("\\vdots", "\\mathord{\\varvdots\\rule{0pt}{15pt}}");
+defineMacro("\u22ee", "\\vdots"); //////////////////////////////////////////////////////////////////////
+// amsmath.sty
+// http://mirrors.concertpass.com/tex-archive/macros/latex/required/amsmath/amsmath.pdf
+// Italic Greek capital letters.  AMS defines these with \DeclareMathSymbol,
+// but they are equivalent to \mathit{\Letter}.
+
+defineMacro("\\varGamma", "\\mathit{\\Gamma}");
+defineMacro("\\varDelta", "\\mathit{\\Delta}");
+defineMacro("\\varTheta", "\\mathit{\\Theta}");
+defineMacro("\\varLambda", "\\mathit{\\Lambda}");
+defineMacro("\\varXi", "\\mathit{\\Xi}");
+defineMacro("\\varPi", "\\mathit{\\Pi}");
+defineMacro("\\varSigma", "\\mathit{\\Sigma}");
+defineMacro("\\varUpsilon", "\\mathit{\\Upsilon}");
+defineMacro("\\varPhi", "\\mathit{\\Phi}");
+defineMacro("\\varPsi", "\\mathit{\\Psi}");
+defineMacro("\\varOmega", "\\mathit{\\Omega}"); //\newcommand{\substack}[1]{\subarray{c}#1\endsubarray}
+
+defineMacro("\\substack", "\\begin{subarray}{c}#1\\end{subarray}"); // \renewcommand{\colon}{\nobreak\mskip2mu\mathpunct{}\nonscript
+// \mkern-\thinmuskip{:}\mskip6muplus1mu\relax}
+
+defineMacro("\\colon", "\\nobreak\\mskip2mu\\mathpunct{}" + "\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu"); // \newcommand{\boxed}[1]{\fbox{\m@th$\displaystyle#1$}}
+
+defineMacro("\\boxed", "\\fbox{$\\displaystyle{#1}$}"); // \def\iff{\DOTSB\;\Longleftrightarrow\;}
+// \def\implies{\DOTSB\;\Longrightarrow\;}
+// \def\impliedby{\DOTSB\;\Longleftarrow\;}
+
+defineMacro("\\iff", "\\DOTSB\\;\\Longleftrightarrow\\;");
+defineMacro("\\implies", "\\DOTSB\\;\\Longrightarrow\\;");
+defineMacro("\\impliedby", "\\DOTSB\\;\\Longleftarrow\\;"); // AMSMath's automatic \dots, based on \mdots@@ macro.
+
+const dotsByToken = {
+  ',': '\\dotsc',
+  '\\not': '\\dotsb',
+  // \keybin@ checks for the following:
+  '+': '\\dotsb',
+  '=': '\\dotsb',
+  '<': '\\dotsb',
+  '>': '\\dotsb',
+  '-': '\\dotsb',
+  '*': '\\dotsb',
+  ':': '\\dotsb',
+  // Symbols whose definition starts with \DOTSB:
+  '\\DOTSB': '\\dotsb',
+  '\\coprod': '\\dotsb',
+  '\\bigvee': '\\dotsb',
+  '\\bigwedge': '\\dotsb',
+  '\\biguplus': '\\dotsb',
+  '\\bigcap': '\\dotsb',
+  '\\bigcup': '\\dotsb',
+  '\\prod': '\\dotsb',
+  '\\sum': '\\dotsb',
+  '\\bigotimes': '\\dotsb',
+  '\\bigoplus': '\\dotsb',
+  '\\bigodot': '\\dotsb',
+  '\\bigsqcup': '\\dotsb',
+  '\\And': '\\dotsb',
+  '\\longrightarrow': '\\dotsb',
+  '\\Longrightarrow': '\\dotsb',
+  '\\longleftarrow': '\\dotsb',
+  '\\Longleftarrow': '\\dotsb',
+  '\\longleftrightarrow': '\\dotsb',
+  '\\Longleftrightarrow': '\\dotsb',
+  '\\mapsto': '\\dotsb',
+  '\\longmapsto': '\\dotsb',
+  '\\hookrightarrow': '\\dotsb',
+  '\\doteq': '\\dotsb',
+  // Symbols whose definition starts with \mathbin:
+  '\\mathbin': '\\dotsb',
+  // Symbols whose definition starts with \mathrel:
+  '\\mathrel': '\\dotsb',
+  '\\relbar': '\\dotsb',
+  '\\Relbar': '\\dotsb',
+  '\\xrightarrow': '\\dotsb',
+  '\\xleftarrow': '\\dotsb',
+  // Symbols whose definition starts with \DOTSI:
+  '\\DOTSI': '\\dotsi',
+  '\\int': '\\dotsi',
+  '\\oint': '\\dotsi',
+  '\\iint': '\\dotsi',
+  '\\iiint': '\\dotsi',
+  '\\iiiint': '\\dotsi',
+  '\\idotsint': '\\dotsi',
+  // Symbols whose definition starts with \DOTSX:
+  '\\DOTSX': '\\dotsx'
+};
+defineMacro("\\dots", function (context) {
+  // TODO: If used in text mode, should expand to \textellipsis.
+  // However, in KaTeX, \textellipsis and \ldots behave the same
+  // (in text mode), and it's unlikely we'd see any of the math commands
+  // that affect the behavior of \dots when in text mode.  So fine for now
+  // (until we support \ifmmode ... \else ... \fi).
+  let thedots = '\\dotso';
+  const next = context.expandAfterFuture().text;
+
+  if (next in dotsByToken) {
+    thedots = dotsByToken[next];
+  } else if (next.substr(0, 4) === '\\not') {
+    thedots = '\\dotsb';
+  } else if (next in symbols.math) {
+    if (utils.contains(['bin', 'rel'], symbols.math[next].group)) {
+      thedots = '\\dotsb';
+    }
+  }
+
+  return thedots;
+});
+const spaceAfterDots = {
+  // \rightdelim@ checks for the following:
+  ')': true,
+  ']': true,
+  '\\rbrack': true,
+  '\\}': true,
+  '\\rbrace': true,
+  '\\rangle': true,
+  '\\rceil': true,
+  '\\rfloor': true,
+  '\\rgroup': true,
+  '\\rmoustache': true,
+  '\\right': true,
+  '\\bigr': true,
+  '\\biggr': true,
+  '\\Bigr': true,
+  '\\Biggr': true,
+  // \extra@ also tests for the following:
+  '$': true,
+  // \extrap@ checks for the following:
+  ';': true,
+  '.': true,
+  ',': true
+};
+defineMacro("\\dotso", function (context) {
+  const next = context.future().text;
+
+  if (next in spaceAfterDots) {
+    return "\\ldots\\,";
+  } else {
+    return "\\ldots";
+  }
+});
+defineMacro("\\dotsc", function (context) {
+  const next = context.future().text; // \dotsc uses \extra@ but not \extrap@, instead specially checking for
+  // ';' and '.', but doesn't check for ','.
+
+  if (next in spaceAfterDots && next !== ',') {
+    return "\\ldots\\,";
+  } else {
+    return "\\ldots";
+  }
+});
+defineMacro("\\cdots", function (context) {
+  const next = context.future().text;
+
+  if (next in spaceAfterDots) {
+    return "\\@cdots\\,";
+  } else {
+    return "\\@cdots";
+  }
+});
+defineMacro("\\dotsb", "\\cdots");
+defineMacro("\\dotsm", "\\cdots");
+defineMacro("\\dotsi", "\\!\\cdots"); // amsmath doesn't actually define \dotsx, but \dots followed by a macro
+// starting with \DOTSX implies \dotso, and then \extra@ detects this case
+// and forces the added `\,`.
+
+defineMacro("\\dotsx", "\\ldots\\,"); // \let\DOTSI\relax
+// \let\DOTSB\relax
+// \let\DOTSX\relax
+
+defineMacro("\\DOTSI", "\\relax");
+defineMacro("\\DOTSB", "\\relax");
+defineMacro("\\DOTSX", "\\relax"); // Spacing, based on amsmath.sty's override of LaTeX defaults
+// \DeclareRobustCommand{\tmspace}[3]{%
+//   \ifmmode\mskip#1#2\else\kern#1#3\fi\relax}
+
+defineMacro("\\tmspace", "\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"); // \renewcommand{\,}{\tmspace+\thinmuskip{.1667em}}
+// TODO: math mode should use \thinmuskip
+
+defineMacro("\\,", "\\tmspace+{3mu}{.1667em}"); // \let\thinspace\,
+
+defineMacro("\\thinspace", "\\,"); // \def\>{\mskip\medmuskip}
+// \renewcommand{\:}{\tmspace+\medmuskip{.2222em}}
+// TODO: \> and math mode of \: should use \medmuskip = 4mu plus 2mu minus 4mu
+
+defineMacro("\\>", "\\mskip{4mu}");
+defineMacro("\\:", "\\tmspace+{4mu}{.2222em}"); // \let\medspace\:
+
+defineMacro("\\medspace", "\\:"); // \renewcommand{\;}{\tmspace+\thickmuskip{.2777em}}
+// TODO: math mode should use \thickmuskip = 5mu plus 5mu
+
+defineMacro("\\;", "\\tmspace+{5mu}{.2777em}"); // \let\thickspace\;
+
+defineMacro("\\thickspace", "\\;"); // \renewcommand{\!}{\tmspace-\thinmuskip{.1667em}}
+// TODO: math mode should use \thinmuskip
+
+defineMacro("\\!", "\\tmspace-{3mu}{.1667em}"); // \let\negthinspace\!
+
+defineMacro("\\negthinspace", "\\!"); // \newcommand{\negmedspace}{\tmspace-\medmuskip{.2222em}}
+// TODO: math mode should use \medmuskip
+
+defineMacro("\\negmedspace", "\\tmspace-{4mu}{.2222em}"); // \newcommand{\negthickspace}{\tmspace-\thickmuskip{.2777em}}
+// TODO: math mode should use \thickmuskip
+
+defineMacro("\\negthickspace", "\\tmspace-{5mu}{.277em}"); // \def\enspace{\kern.5em }
+
+defineMacro("\\enspace", "\\kern.5em "); // \def\enskip{\hskip.5em\relax}
+
+defineMacro("\\enskip", "\\hskip.5em\\relax"); // \def\quad{\hskip1em\relax}
+
+defineMacro("\\quad", "\\hskip1em\\relax"); // \def\qquad{\hskip2em\relax}
+
+defineMacro("\\qquad", "\\hskip2em\\relax"); // \tag@in@display form of \tag
+
+defineMacro("\\tag", "\\@ifstar\\tag@literal\\tag@paren");
+defineMacro("\\tag@paren", "\\tag@literal{({#1})}");
+defineMacro("\\tag@literal", context => {
+  if (context.macros.get("\\df@tag")) {
+    throw new ParseError("Multiple \\tag");
+  }
+
+  return "\\gdef\\df@tag{\\text{#1}}";
+}); // \renewcommand{\bmod}{\nonscript\mskip-\medmuskip\mkern5mu\mathbin
+//   {\operator@font mod}\penalty900
+//   \mkern5mu\nonscript\mskip-\medmuskip}
+// \newcommand{\pod}[1]{\allowbreak
+//   \if@display\mkern18mu\else\mkern8mu\fi(#1)}
+// \renewcommand{\pmod}[1]{\pod{{\operator@font mod}\mkern6mu#1}}
+// \newcommand{\mod}[1]{\allowbreak\if@display\mkern18mu
+//   \else\mkern12mu\fi{\operator@font mod}\,\,#1}
+// TODO: math mode should use \medmuskip = 4mu plus 2mu minus 4mu
+
+defineMacro("\\bmod", "\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}" + "\\mathbin{\\rm mod}" + "\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");
+defineMacro("\\pod", "\\allowbreak" + "\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");
+defineMacro("\\pmod", "\\pod{{\\rm mod}\\mkern6mu#1}");
+defineMacro("\\mod", "\\allowbreak" + "\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}" + "{\\rm mod}\\,\\,#1"); // \pmb    --   A simulation of bold.
+// The version in ambsy.sty works by typesetting three copies of the argument
+// with small offsets. We use two copies. We omit the vertical offset because
+// of rendering problems that makeVList encounters in Safari.
+
+defineMacro("\\pmb", "\\html@mathml{" + "\\@binrel{#1}{\\mathrlap{#1}\\kern0.5px#1}}" + "{\\mathbf{#1}}"); //////////////////////////////////////////////////////////////////////
+// LaTeX source2e
+// \\ defaults to \newline, but changes to \cr within array environment
+
+defineMacro("\\\\", "\\newline"); // \def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\@}
+// TODO: Doesn't normally work in math mode because \@ fails.  KaTeX doesn't
+// support \@ yet, so that's omitted, and we add \text so that the result
+// doesn't look funny in math mode.
+
+defineMacro("\\TeX", "\\textrm{\\html@mathml{" + "T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX" + "}{TeX}}"); // \DeclareRobustCommand{\LaTeX}{L\kern-.36em%
+//         {\sbox\z@ T%
+//          \vbox to\ht\z@{\hbox{\check@mathfonts
+//                               \fontsize\sf@size\z@
+//                               \math@fontsfalse\selectfont
+//                               A}%
+//                         \vss}%
+//         }%
+//         \kern-.15em%
+//         \TeX}
+// This code aligns the top of the A with the T (from the perspective of TeX's
+// boxes, though visually the A appears to extend above slightly).
+// We compute the corresponding \raisebox when A is rendered in \normalsize
+// \scriptstyle, which has a scale factor of 0.7 (see Options.js).
+
+const latexRaiseA = metricMap['Main-Regular']["T".charCodeAt(0)][1] - 0.7 * metricMap['Main-Regular']["A".charCodeAt(0)][1] + "em";
+defineMacro("\\LaTeX", "\\textrm{\\html@mathml{" + `L\\kern-.36em\\raisebox{${latexRaiseA}}{\\scriptstyle A}` + "\\kern-.15em\\TeX}{LaTeX}}"); // New KaTeX logo based on tweaking LaTeX logo
+
+defineMacro("\\KaTeX", "\\textrm{\\html@mathml{" + `K\\kern-.17em\\raisebox{${latexRaiseA}}{\\scriptstyle A}` + "\\kern-.15em\\TeX}{KaTeX}}"); // \DeclareRobustCommand\hspace{\@ifstar\@hspacer\@hspace}
+// \def\@hspace#1{\hskip  #1\relax}
+// \def\@hspacer#1{\vrule \@width\z@\nobreak
+//                 \hskip #1\hskip \z@skip}
+
+defineMacro("\\hspace", "\\@ifstar\\@hspacer\\@hspace");
+defineMacro("\\@hspace", "\\hskip #1\\relax");
+defineMacro("\\@hspacer", "\\rule{0pt}{0pt}\\hskip #1\\relax"); //////////////////////////////////////////////////////////////////////
+// mathtools.sty
+//\providecommand\ordinarycolon{:}
+
+defineMacro("\\ordinarycolon", ":"); //\def\vcentcolon{\mathrel{\mathop\ordinarycolon}}
+//TODO(edemaine): Not yet centered. Fix via \raisebox or #726
+
+defineMacro("\\vcentcolon", "\\mathrel{\\mathop\\ordinarycolon}"); // \providecommand*\dblcolon{\vcentcolon\mathrel{\mkern-.9mu}\vcentcolon}
+
+defineMacro("\\dblcolon", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}" + "{\\mathop{\\char\"2237}}"); // \providecommand*\coloneqq{\vcentcolon\mathrel{\mkern-1.2mu}=}
+
+defineMacro("\\coloneqq", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}" + "{\\mathop{\\char\"2254}}"); // ≔
+// \providecommand*\Coloneqq{\dblcolon\mathrel{\mkern-1.2mu}=}
+
+defineMacro("\\Coloneqq", "\\html@mathml{" + "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}" + "{\\mathop{\\char\"2237\\char\"3d}}"); // \providecommand*\coloneq{\vcentcolon\mathrel{\mkern-1.2mu}\mathrel{-}}
+
+defineMacro("\\coloneq", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}" + "{\\mathop{\\char\"3a\\char\"2212}}"); // \providecommand*\Coloneq{\dblcolon\mathrel{\mkern-1.2mu}\mathrel{-}}
+
+defineMacro("\\Coloneq", "\\html@mathml{" + "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}" + "{\\mathop{\\char\"2237\\char\"2212}}"); // \providecommand*\eqqcolon{=\mathrel{\mkern-1.2mu}\vcentcolon}
+
+defineMacro("\\eqqcolon", "\\html@mathml{" + "\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}" + "{\\mathop{\\char\"2255}}"); // ≕
+// \providecommand*\Eqqcolon{=\mathrel{\mkern-1.2mu}\dblcolon}
+
+defineMacro("\\Eqqcolon", "\\html@mathml{" + "\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}" + "{\\mathop{\\char\"3d\\char\"2237}}"); // \providecommand*\eqcolon{\mathrel{-}\mathrel{\mkern-1.2mu}\vcentcolon}
+
+defineMacro("\\eqcolon", "\\html@mathml{" + "\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}" + "{\\mathop{\\char\"2239}}"); // \providecommand*\Eqcolon{\mathrel{-}\mathrel{\mkern-1.2mu}\dblcolon}
+
+defineMacro("\\Eqcolon", "\\html@mathml{" + "\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}" + "{\\mathop{\\char\"2212\\char\"2237}}"); // \providecommand*\colonapprox{\vcentcolon\mathrel{\mkern-1.2mu}\approx}
+
+defineMacro("\\colonapprox", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}" + "{\\mathop{\\char\"3a\\char\"2248}}"); // \providecommand*\Colonapprox{\dblcolon\mathrel{\mkern-1.2mu}\approx}
+
+defineMacro("\\Colonapprox", "\\html@mathml{" + "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}" + "{\\mathop{\\char\"2237\\char\"2248}}"); // \providecommand*\colonsim{\vcentcolon\mathrel{\mkern-1.2mu}\sim}
+
+defineMacro("\\colonsim", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}" + "{\\mathop{\\char\"3a\\char\"223c}}"); // \providecommand*\Colonsim{\dblcolon\mathrel{\mkern-1.2mu}\sim}
+
+defineMacro("\\Colonsim", "\\html@mathml{" + "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}" + "{\\mathop{\\char\"2237\\char\"223c}}"); // Some Unicode characters are implemented with macros to mathtools functions.
+
+defineMacro("\u2237", "\\dblcolon"); // ::
+
+defineMacro("\u2239", "\\eqcolon"); // -:
+
+defineMacro("\u2254", "\\coloneqq"); // :=
+
+defineMacro("\u2255", "\\eqqcolon"); // =:
+
+defineMacro("\u2A74", "\\Coloneqq"); // ::=
+//////////////////////////////////////////////////////////////////////
+// colonequals.sty
+// Alternate names for mathtools's macros:
+
+defineMacro("\\ratio", "\\vcentcolon");
+defineMacro("\\coloncolon", "\\dblcolon");
+defineMacro("\\colonequals", "\\coloneqq");
+defineMacro("\\coloncolonequals", "\\Coloneqq");
+defineMacro("\\equalscolon", "\\eqqcolon");
+defineMacro("\\equalscoloncolon", "\\Eqqcolon");
+defineMacro("\\colonminus", "\\coloneq");
+defineMacro("\\coloncolonminus", "\\Coloneq");
+defineMacro("\\minuscolon", "\\eqcolon");
+defineMacro("\\minuscoloncolon", "\\Eqcolon"); // \colonapprox name is same in mathtools and colonequals.
+
+defineMacro("\\coloncolonapprox", "\\Colonapprox"); // \colonsim name is same in mathtools and colonequals.
+
+defineMacro("\\coloncolonsim", "\\Colonsim"); // Additional macros, implemented by analogy with mathtools definitions:
+
+defineMacro("\\simcolon", "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");
+defineMacro("\\simcoloncolon", "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");
+defineMacro("\\approxcolon", "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");
+defineMacro("\\approxcoloncolon", "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"); // Present in newtxmath, pxfonts and txfonts
+
+defineMacro("\\notni", "\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220C}}");
+defineMacro("\\limsup", "\\DOTSB\\operatorname*{lim\\,sup}");
+defineMacro("\\liminf", "\\DOTSB\\operatorname*{lim\\,inf}"); //////////////////////////////////////////////////////////////////////
+// MathML alternates for KaTeX glyphs in the Unicode private area
+
+defineMacro("\\gvertneqq", "\\html@mathml{\\@gvertneqq}{\u2269}");
+defineMacro("\\lvertneqq", "\\html@mathml{\\@lvertneqq}{\u2268}");
+defineMacro("\\ngeqq", "\\html@mathml{\\@ngeqq}{\u2271}");
+defineMacro("\\ngeqslant", "\\html@mathml{\\@ngeqslant}{\u2271}");
+defineMacro("\\nleqq", "\\html@mathml{\\@nleqq}{\u2270}");
+defineMacro("\\nleqslant", "\\html@mathml{\\@nleqslant}{\u2270}");
+defineMacro("\\nshortmid", "\\html@mathml{\\@nshortmid}{∤}");
+defineMacro("\\nshortparallel", "\\html@mathml{\\@nshortparallel}{∦}");
+defineMacro("\\nsubseteqq", "\\html@mathml{\\@nsubseteqq}{\u2288}");
+defineMacro("\\nsupseteqq", "\\html@mathml{\\@nsupseteqq}{\u2289}");
+defineMacro("\\varsubsetneq", "\\html@mathml{\\@varsubsetneq}{⊊}");
+defineMacro("\\varsubsetneqq", "\\html@mathml{\\@varsubsetneqq}{⫋}");
+defineMacro("\\varsupsetneq", "\\html@mathml{\\@varsupsetneq}{⊋}");
+defineMacro("\\varsupsetneqq", "\\html@mathml{\\@varsupsetneqq}{⫌}"); //////////////////////////////////////////////////////////////////////
+// stmaryrd and semantic
+// The stmaryrd and semantic packages render the next four items by calling a
+// glyph. Those glyphs do not exist in the KaTeX fonts. Hence the macros.
+
+defineMacro("\\llbracket", "\\html@mathml{" + "\\mathopen{[\\mkern-3.2mu[}}" + "{\\mathopen{\\char`\u27e6}}");
+defineMacro("\\rrbracket", "\\html@mathml{" + "\\mathclose{]\\mkern-3.2mu]}}" + "{\\mathclose{\\char`\u27e7}}");
+defineMacro("\u27e6", "\\llbracket"); // blackboard bold [
+
+defineMacro("\u27e7", "\\rrbracket"); // blackboard bold ]
+
+defineMacro("\\lBrace", "\\html@mathml{" + "\\mathopen{\\{\\mkern-3.2mu[}}" + "{\\mathopen{\\char`\u2983}}");
+defineMacro("\\rBrace", "\\html@mathml{" + "\\mathclose{]\\mkern-3.2mu\\}}}" + "{\\mathclose{\\char`\u2984}}");
+defineMacro("\u2983", "\\lBrace"); // blackboard bold {
+
+defineMacro("\u2984", "\\rBrace"); // blackboard bold }
+// TODO: Create variable sized versions of the last two items. I believe that
+// will require new font glyphs.
+//////////////////////////////////////////////////////////////////////
+// texvc.sty
+// The texvc package contains macros available in mediawiki pages.
+// We omit the functions deprecated at
+// https://en.wikipedia.org/wiki/Help:Displaying_a_formula#Deprecated_syntax
+// We also omit texvc's \O, which conflicts with \text{\O}
+
+defineMacro("\\darr", "\\downarrow");
+defineMacro("\\dArr", "\\Downarrow");
+defineMacro("\\Darr", "\\Downarrow");
+defineMacro("\\lang", "\\langle");
+defineMacro("\\rang", "\\rangle");
+defineMacro("\\uarr", "\\uparrow");
+defineMacro("\\uArr", "\\Uparrow");
+defineMacro("\\Uarr", "\\Uparrow");
+defineMacro("\\N", "\\mathbb{N}");
+defineMacro("\\R", "\\mathbb{R}");
+defineMacro("\\Z", "\\mathbb{Z}");
+defineMacro("\\alef", "\\aleph");
+defineMacro("\\alefsym", "\\aleph");
+defineMacro("\\Alpha", "\\mathrm{A}");
+defineMacro("\\Beta", "\\mathrm{B}");
+defineMacro("\\bull", "\\bullet");
+defineMacro("\\Chi", "\\mathrm{X}");
+defineMacro("\\clubs", "\\clubsuit");
+defineMacro("\\cnums", "\\mathbb{C}");
+defineMacro("\\Complex", "\\mathbb{C}");
+defineMacro("\\Dagger", "\\ddagger");
+defineMacro("\\diamonds", "\\diamondsuit");
+defineMacro("\\empty", "\\emptyset");
+defineMacro("\\Epsilon", "\\mathrm{E}");
+defineMacro("\\Eta", "\\mathrm{H}");
+defineMacro("\\exist", "\\exists");
+defineMacro("\\harr", "\\leftrightarrow");
+defineMacro("\\hArr", "\\Leftrightarrow");
+defineMacro("\\Harr", "\\Leftrightarrow");
+defineMacro("\\hearts", "\\heartsuit");
+defineMacro("\\image", "\\Im");
+defineMacro("\\infin", "\\infty");
+defineMacro("\\Iota", "\\mathrm{I}");
+defineMacro("\\isin", "\\in");
+defineMacro("\\Kappa", "\\mathrm{K}");
+defineMacro("\\larr", "\\leftarrow");
+defineMacro("\\lArr", "\\Leftarrow");
+defineMacro("\\Larr", "\\Leftarrow");
+defineMacro("\\lrarr", "\\leftrightarrow");
+defineMacro("\\lrArr", "\\Leftrightarrow");
+defineMacro("\\Lrarr", "\\Leftrightarrow");
+defineMacro("\\Mu", "\\mathrm{M}");
+defineMacro("\\natnums", "\\mathbb{N}");
+defineMacro("\\Nu", "\\mathrm{N}");
+defineMacro("\\Omicron", "\\mathrm{O}");
+defineMacro("\\plusmn", "\\pm");
+defineMacro("\\rarr", "\\rightarrow");
+defineMacro("\\rArr", "\\Rightarrow");
+defineMacro("\\Rarr", "\\Rightarrow");
+defineMacro("\\real", "\\Re");
+defineMacro("\\reals", "\\mathbb{R}");
+defineMacro("\\Reals", "\\mathbb{R}");
+defineMacro("\\Rho", "\\mathrm{P}");
+defineMacro("\\sdot", "\\cdot");
+defineMacro("\\sect", "\\S");
+defineMacro("\\spades", "\\spadesuit");
+defineMacro("\\sub", "\\subset");
+defineMacro("\\sube", "\\subseteq");
+defineMacro("\\supe", "\\supseteq");
+defineMacro("\\Tau", "\\mathrm{T}");
+defineMacro("\\thetasym", "\\vartheta"); // TODO: defineMacro("\\varcoppa", "\\\mbox{\\coppa}");
+
+defineMacro("\\weierp", "\\wp");
+defineMacro("\\Zeta", "\\mathrm{Z}"); //////////////////////////////////////////////////////////////////////
+// statmath.sty
+// https://ctan.math.illinois.edu/macros/latex/contrib/statmath/statmath.pdf
+
+defineMacro("\\argmin", "\\DOTSB\\operatorname*{arg\\,min}");
+defineMacro("\\argmax", "\\DOTSB\\operatorname*{arg\\,max}");
+defineMacro("\\plim", "\\DOTSB\\mathop{\\operatorname{plim}}\\limits"); // Custom Khan Academy colors, should be moved to an optional package
+
+defineMacro("\\blue", "\\textcolor{##6495ed}{#1}");
+defineMacro("\\orange", "\\textcolor{##ffa500}{#1}");
+defineMacro("\\pink", "\\textcolor{##ff00af}{#1}");
+defineMacro("\\red", "\\textcolor{##df0030}{#1}");
+defineMacro("\\green", "\\textcolor{##28ae7b}{#1}");
+defineMacro("\\gray", "\\textcolor{gray}{#1}");
+defineMacro("\\purple", "\\textcolor{##9d38bd}{#1}");
+defineMacro("\\blueA", "\\textcolor{##ccfaff}{#1}");
+defineMacro("\\blueB", "\\textcolor{##80f6ff}{#1}");
+defineMacro("\\blueC", "\\textcolor{##63d9ea}{#1}");
+defineMacro("\\blueD", "\\textcolor{##11accd}{#1}");
+defineMacro("\\blueE", "\\textcolor{##0c7f99}{#1}");
+defineMacro("\\tealA", "\\textcolor{##94fff5}{#1}");
+defineMacro("\\tealB", "\\textcolor{##26edd5}{#1}");
+defineMacro("\\tealC", "\\textcolor{##01d1c1}{#1}");
+defineMacro("\\tealD", "\\textcolor{##01a995}{#1}");
+defineMacro("\\tealE", "\\textcolor{##208170}{#1}");
+defineMacro("\\greenA", "\\textcolor{##b6ffb0}{#1}");
+defineMacro("\\greenB", "\\textcolor{##8af281}{#1}");
+defineMacro("\\greenC", "\\textcolor{##74cf70}{#1}");
+defineMacro("\\greenD", "\\textcolor{##1fab54}{#1}");
+defineMacro("\\greenE", "\\textcolor{##0d923f}{#1}");
+defineMacro("\\goldA", "\\textcolor{##ffd0a9}{#1}");
+defineMacro("\\goldB", "\\textcolor{##ffbb71}{#1}");
+defineMacro("\\goldC", "\\textcolor{##ff9c39}{#1}");
+defineMacro("\\goldD", "\\textcolor{##e07d10}{#1}");
+defineMacro("\\goldE", "\\textcolor{##a75a05}{#1}");
+defineMacro("\\redA", "\\textcolor{##fca9a9}{#1}");
+defineMacro("\\redB", "\\textcolor{##ff8482}{#1}");
+defineMacro("\\redC", "\\textcolor{##f9685d}{#1}");
+defineMacro("\\redD", "\\textcolor{##e84d39}{#1}");
+defineMacro("\\redE", "\\textcolor{##bc2612}{#1}");
+defineMacro("\\maroonA", "\\textcolor{##ffbde0}{#1}");
+defineMacro("\\maroonB", "\\textcolor{##ff92c6}{#1}");
+defineMacro("\\maroonC", "\\textcolor{##ed5fa6}{#1}");
+defineMacro("\\maroonD", "\\textcolor{##ca337c}{#1}");
+defineMacro("\\maroonE", "\\textcolor{##9e034e}{#1}");
+defineMacro("\\purpleA", "\\textcolor{##ddd7ff}{#1}");
+defineMacro("\\purpleB", "\\textcolor{##c6b9fc}{#1}");
+defineMacro("\\purpleC", "\\textcolor{##aa87ff}{#1}");
+defineMacro("\\purpleD", "\\textcolor{##7854ab}{#1}");
+defineMacro("\\purpleE", "\\textcolor{##543b78}{#1}");
+defineMacro("\\mintA", "\\textcolor{##f5f9e8}{#1}");
+defineMacro("\\mintB", "\\textcolor{##edf2df}{#1}");
+defineMacro("\\mintC", "\\textcolor{##e0e5cc}{#1}");
+defineMacro("\\grayA", "\\textcolor{##f6f7f7}{#1}");
+defineMacro("\\grayB", "\\textcolor{##f0f1f2}{#1}");
+defineMacro("\\grayC", "\\textcolor{##e3e5e6}{#1}");
+defineMacro("\\grayD", "\\textcolor{##d6d8da}{#1}");
+defineMacro("\\grayE", "\\textcolor{##babec2}{#1}");
+defineMacro("\\grayF", "\\textcolor{##888d93}{#1}");
+defineMacro("\\grayG", "\\textcolor{##626569}{#1}");
+defineMacro("\\grayH", "\\textcolor{##3b3e40}{#1}");
+defineMacro("\\grayI", "\\textcolor{##21242c}{#1}");
+defineMacro("\\kaBlue", "\\textcolor{##314453}{#1}");
+defineMacro("\\kaGreen", "\\textcolor{##71B307}{#1}");
+
+/**
+ * This file contains the “gullet” where macros are expanded
+ * until only non-macro tokens remain.
+ */
+// List of commands that act like macros but aren't defined as a macro,
+// function, or symbol.  Used in `isDefined`.
+const implicitCommands = {
+  "\\relax": true,
+  // MacroExpander.js
+  "^": true,
+  // Parser.js
+  "_": true,
+  // Parser.js
+  "\\limits": true,
+  // Parser.js
+  "\\nolimits": true // Parser.js
+
+};
+class MacroExpander {
+  constructor(input, settings, mode) {
+    this.settings = void 0;
+    this.expansionCount = void 0;
+    this.lexer = void 0;
+    this.macros = void 0;
+    this.stack = void 0;
+    this.mode = void 0;
+    this.settings = settings;
+    this.expansionCount = 0;
+    this.feed(input); // Make new global namespace
+
+    this.macros = new Namespace(builtinMacros, settings.macros);
+    this.mode = mode;
+    this.stack = []; // contains tokens in REVERSE order
+  }
+  /**
+   * Feed a new input string to the same MacroExpander
+   * (with existing macros etc.).
+   */
+
+
+  feed(input) {
+    this.lexer = new Lexer(input, this.settings);
+  }
+  /**
+   * Switches between "text" and "math" modes.
+   */
+
+
+  switchMode(newMode) {
+    this.mode = newMode;
+  }
+  /**
+   * Start a new group nesting within all namespaces.
+   */
+
+
+  beginGroup() {
+    this.macros.beginGroup();
+  }
+  /**
+   * End current group nesting within all namespaces.
+   */
+
+
+  endGroup() {
+    this.macros.endGroup();
+  }
+  /**
+   * Returns the topmost token on the stack, without expanding it.
+   * Similar in behavior to TeX's `\futurelet`.
+   */
+
+
+  future() {
+    if (this.stack.length === 0) {
+      this.pushToken(this.lexer.lex());
+    }
+
+    return this.stack[this.stack.length - 1];
+  }
+  /**
+   * Remove and return the next unexpanded token.
+   */
+
+
+  popToken() {
+    this.future(); // ensure non-empty stack
+
+    return this.stack.pop();
+  }
+  /**
+   * Add a given token to the token stack.  In particular, this get be used
+   * to put back a token returned from one of the other methods.
+   */
+
+
+  pushToken(token) {
+    this.stack.push(token);
+  }
+  /**
+   * Append an array of tokens to the token stack.
+   */
+
+
+  pushTokens(tokens) {
+    this.stack.push(...tokens);
+  }
+  /**
+   * Consume all following space tokens, without expansion.
+   */
+
+
+  consumeSpaces() {
+    for (;;) {
+      const token = this.future();
+
+      if (token.text === " ") {
+        this.stack.pop();
+      } else {
+        break;
+      }
+    }
+  }
+  /**
+   * Consume the specified number of arguments from the token stream,
+   * and return the resulting array of arguments.
+   */
+
+
+  consumeArgs(numArgs) {
+    const args = []; // obtain arguments, either single token or balanced {…} group
+
+    for (let i = 0; i < numArgs; ++i) {
+      this.consumeSpaces(); // ignore spaces before each argument
+
+      const startOfArg = this.popToken();
+
+      if (startOfArg.text === "{") {
+        const arg = [];
+        let depth = 1;
+
+        while (depth !== 0) {
+          const tok = this.popToken();
+          arg.push(tok);
+
+          if (tok.text === "{") {
+            ++depth;
+          } else if (tok.text === "}") {
+            --depth;
+          } else if (tok.text === "EOF") {
+            throw new ParseError("End of input in macro argument", startOfArg);
+          }
+        }
+
+        arg.pop(); // remove last }
+
+        arg.reverse(); // like above, to fit in with stack order
+
+        args[i] = arg;
+      } else if (startOfArg.text === "EOF") {
+        throw new ParseError("End of input expecting macro argument");
+      } else {
+        args[i] = [startOfArg];
+      }
+    }
+
+    return args;
+  }
+  /**
+   * Expand the next token only once if possible.
+   *
+   * If the token is expanded, the resulting tokens will be pushed onto
+   * the stack in reverse order and will be returned as an array,
+   * also in reverse order.
+   *
+   * If not, the next token will be returned without removing it
+   * from the stack.  This case can be detected by a `Token` return value
+   * instead of an `Array` return value.
+   *
+   * In either case, the next token will be on the top of the stack,
+   * or the stack will be empty.
+   *
+   * Used to implement `expandAfterFuture` and `expandNextToken`.
+   *
+   * At the moment, macro expansion doesn't handle delimited macros,
+   * i.e. things like those defined by \def\foo#1\end{…}.
+   * See the TeX book page 202ff. for details on how those should behave.
+   */
+
+
+  expandOnce() {
+    const topToken = this.popToken();
+    const name = topToken.text;
+
+    const expansion = this._getExpansion(name);
+
+    if (expansion == null) {
+      // mainly checking for undefined here
+      // Fully expanded
+      this.pushToken(topToken);
+      return topToken;
+    }
+
+    this.expansionCount++;
+
+    if (this.expansionCount > this.settings.maxExpand) {
+      throw new ParseError("Too many expansions: infinite loop or " + "need to increase maxExpand setting");
+    }
+
+    let tokens = expansion.tokens;
+
+    if (expansion.numArgs) {
+      const args = this.consumeArgs(expansion.numArgs); // paste arguments in place of the placeholders
+
+      tokens = tokens.slice(); // make a shallow copy
+
+      for (let i = tokens.length - 1; i >= 0; --i) {
+        let tok = tokens[i];
+
+        if (tok.text === "#") {
+          if (i === 0) {
+            throw new ParseError("Incomplete placeholder at end of macro body", tok);
+          }
+
+          tok = tokens[--i]; // next token on stack
+
+          if (tok.text === "#") {
+            // ## → #
+            tokens.splice(i + 1, 1); // drop first #
+          } else if (/^[1-9]$/.test(tok.text)) {
+            // replace the placeholder with the indicated argument
+            tokens.splice(i, 2, ...args[+tok.text - 1]);
+          } else {
+            throw new ParseError("Not a valid argument number", tok);
+          }
+        }
+      }
+    } // Concatenate expansion onto top of stack.
+
+
+    this.pushTokens(tokens);
+    return tokens;
+  }
+  /**
+   * Expand the next token only once (if possible), and return the resulting
+   * top token on the stack (without removing anything from the stack).
+   * Similar in behavior to TeX's `\expandafter\futurelet`.
+   * Equivalent to expandOnce() followed by future().
+   */
+
+
+  expandAfterFuture() {
+    this.expandOnce();
+    return this.future();
+  }
+  /**
+   * Recursively expand first token, then return first non-expandable token.
+   */
+
+
+  expandNextToken() {
+    for (;;) {
+      const expanded = this.expandOnce(); // expandOnce returns Token if and only if it's fully expanded.
+
+      if (expanded instanceof Token) {
+        // \relax stops the expansion, but shouldn't get returned (a
+        // null return value couldn't get implemented as a function).
+        if (expanded.text === "\\relax") {
+          this.stack.pop();
+        } else {
+          return this.stack.pop(); // === expanded
+        }
+      }
+    } // Flow unable to figure out that this pathway is impossible.
+    // https://github.com/facebook/flow/issues/4808
+
+
+    throw new Error(); // eslint-disable-line no-unreachable
+  }
+  /**
+   * Fully expand the given macro name and return the resulting list of
+   * tokens, or return `undefined` if no such macro is defined.
+   */
+
+
+  expandMacro(name) {
+    if (!this.macros.get(name)) {
+      return undefined;
+    }
+
+    const output = [];
+    const oldStackLength = this.stack.length;
+    this.pushToken(new Token(name));
+
+    while (this.stack.length > oldStackLength) {
+      const expanded = this.expandOnce(); // expandOnce returns Token if and only if it's fully expanded.
+
+      if (expanded instanceof Token) {
+        output.push(this.stack.pop());
+      }
+    }
+
+    return output;
+  }
+  /**
+   * Fully expand the given macro name and return the result as a string,
+   * or return `undefined` if no such macro is defined.
+   */
+
+
+  expandMacroAsText(name) {
+    const tokens = this.expandMacro(name);
+
+    if (tokens) {
+      return tokens.map(token => token.text).join("");
+    } else {
+      return tokens;
+    }
+  }
+  /**
+   * Returns the expanded macro as a reversed array of tokens and a macro
+   * argument count.  Or returns `null` if no such macro.
+   */
+
+
+  _getExpansion(name) {
+    const definition = this.macros.get(name);
+
+    if (definition == null) {
+      // mainly checking for undefined here
+      return definition;
+    }
+
+    const expansion = typeof definition === "function" ? definition(this) : definition;
+
+    if (typeof expansion === "string") {
+      let numArgs = 0;
+
+      if (expansion.indexOf("#") !== -1) {
+        const stripped = expansion.replace(/##/g, "");
+
+        while (stripped.indexOf("#" + (numArgs + 1)) !== -1) {
+          ++numArgs;
+        }
+      }
+
+      const bodyLexer = new Lexer(expansion, this.settings);
+      const tokens = [];
+      let tok = bodyLexer.lex();
+
+      while (tok.text !== "EOF") {
+        tokens.push(tok);
+        tok = bodyLexer.lex();
+      }
+
+      tokens.reverse(); // to fit in with stack using push and pop
+
+      const expanded = {
+        tokens,
+        numArgs
+      };
+      return expanded;
+    }
+
+    return expansion;
+  }
+  /**
+   * Determine whether a command is currently "defined" (has some
+   * functionality), meaning that it's a macro (in the current group),
+   * a function, a symbol, or one of the special commands listed in
+   * `implicitCommands`.
+   */
+
+
+  isDefined(name) {
+    return this.macros.has(name) || functions.hasOwnProperty(name) || symbols.math.hasOwnProperty(name) || symbols.text.hasOwnProperty(name) || implicitCommands.hasOwnProperty(name);
+  }
+
+}
+
+// Mapping of Unicode accent characters to their LaTeX equivalent in text and
+// math mode (when they exist).
+var unicodeAccents = {
+  '\u0301': {
+    text: "\\'",
+    math: '\\acute'
+  },
+  '\u0300': {
+    text: '\\`',
+    math: '\\grave'
+  },
+  '\u0308': {
+    text: '\\"',
+    math: '\\ddot'
+  },
+  '\u0303': {
+    text: '\\~',
+    math: '\\tilde'
+  },
+  '\u0304': {
+    text: '\\=',
+    math: '\\bar'
+  },
+  '\u0306': {
+    text: '\\u',
+    math: '\\breve'
+  },
+  '\u030c': {
+    text: '\\v',
+    math: '\\check'
+  },
+  '\u0302': {
+    text: '\\^',
+    math: '\\hat'
+  },
+  '\u0307': {
+    text: '\\.',
+    math: '\\dot'
+  },
+  '\u030a': {
+    text: '\\r',
+    math: '\\mathring'
+  },
+  '\u030b': {
+    text: '\\H'
+  }
+};
+
+// This file is GENERATED by unicodeMake.js. DO NOT MODIFY.
+var unicodeSymbols = {
+  "\u00e1": "\u0061\u0301",
+  // á = \'{a}
+  "\u00e0": "\u0061\u0300",
+  // à = \`{a}
+  "\u00e4": "\u0061\u0308",
+  // ä = \"{a}
+  "\u01df": "\u0061\u0308\u0304",
+  // ǟ = \"\={a}
+  "\u00e3": "\u0061\u0303",
+  // ã = \~{a}
+  "\u0101": "\u0061\u0304",
+  // ā = \={a}
+  "\u0103": "\u0061\u0306",
+  // ă = \u{a}
+  "\u1eaf": "\u0061\u0306\u0301",
+  // ắ = \u\'{a}
+  "\u1eb1": "\u0061\u0306\u0300",
+  // ằ = \u\`{a}
+  "\u1eb5": "\u0061\u0306\u0303",
+  // ẵ = \u\~{a}
+  "\u01ce": "\u0061\u030c",
+  // ǎ = \v{a}
+  "\u00e2": "\u0061\u0302",
+  // â = \^{a}
+  "\u1ea5": "\u0061\u0302\u0301",
+  // ấ = \^\'{a}
+  "\u1ea7": "\u0061\u0302\u0300",
+  // ầ = \^\`{a}
+  "\u1eab": "\u0061\u0302\u0303",
+  // ẫ = \^\~{a}
+  "\u0227": "\u0061\u0307",
+  // ȧ = \.{a}
+  "\u01e1": "\u0061\u0307\u0304",
+  // ǡ = \.\={a}
+  "\u00e5": "\u0061\u030a",
+  // å = \r{a}
+  "\u01fb": "\u0061\u030a\u0301",
+  // ǻ = \r\'{a}
+  "\u1e03": "\u0062\u0307",
+  // ḃ = \.{b}
+  "\u0107": "\u0063\u0301",
+  // ć = \'{c}
+  "\u010d": "\u0063\u030c",
+  // č = \v{c}
+  "\u0109": "\u0063\u0302",
+  // ĉ = \^{c}
+  "\u010b": "\u0063\u0307",
+  // ċ = \.{c}
+  "\u010f": "\u0064\u030c",
+  // ď = \v{d}
+  "\u1e0b": "\u0064\u0307",
+  // ḋ = \.{d}
+  "\u00e9": "\u0065\u0301",
+  // é = \'{e}
+  "\u00e8": "\u0065\u0300",
+  // è = \`{e}
+  "\u00eb": "\u0065\u0308",
+  // ë = \"{e}
+  "\u1ebd": "\u0065\u0303",
+  // ẽ = \~{e}
+  "\u0113": "\u0065\u0304",
+  // ē = \={e}
+  "\u1e17": "\u0065\u0304\u0301",
+  // ḗ = \=\'{e}
+  "\u1e15": "\u0065\u0304\u0300",
+  // ḕ = \=\`{e}
+  "\u0115": "\u0065\u0306",
+  // ĕ = \u{e}
+  "\u011b": "\u0065\u030c",
+  // ě = \v{e}
+  "\u00ea": "\u0065\u0302",
+  // ê = \^{e}
+  "\u1ebf": "\u0065\u0302\u0301",
+  // ế = \^\'{e}
+  "\u1ec1": "\u0065\u0302\u0300",
+  // ề = \^\`{e}
+  "\u1ec5": "\u0065\u0302\u0303",
+  // ễ = \^\~{e}
+  "\u0117": "\u0065\u0307",
+  // ė = \.{e}
+  "\u1e1f": "\u0066\u0307",
+  // ḟ = \.{f}
+  "\u01f5": "\u0067\u0301",
+  // ǵ = \'{g}
+  "\u1e21": "\u0067\u0304",
+  // ḡ = \={g}
+  "\u011f": "\u0067\u0306",
+  // ğ = \u{g}
+  "\u01e7": "\u0067\u030c",
+  // ǧ = \v{g}
+  "\u011d": "\u0067\u0302",
+  // ĝ = \^{g}
+  "\u0121": "\u0067\u0307",
+  // ġ = \.{g}
+  "\u1e27": "\u0068\u0308",
+  // ḧ = \"{h}
+  "\u021f": "\u0068\u030c",
+  // ȟ = \v{h}
+  "\u0125": "\u0068\u0302",
+  // ĥ = \^{h}
+  "\u1e23": "\u0068\u0307",
+  // ḣ = \.{h}
+  "\u00ed": "\u0069\u0301",
+  // í = \'{i}
+  "\u00ec": "\u0069\u0300",
+  // ì = \`{i}
+  "\u00ef": "\u0069\u0308",
+  // ï = \"{i}
+  "\u1e2f": "\u0069\u0308\u0301",
+  // ḯ = \"\'{i}
+  "\u0129": "\u0069\u0303",
+  // ĩ = \~{i}
+  "\u012b": "\u0069\u0304",
+  // ī = \={i}
+  "\u012d": "\u0069\u0306",
+  // ĭ = \u{i}
+  "\u01d0": "\u0069\u030c",
+  // ǐ = \v{i}
+  "\u00ee": "\u0069\u0302",
+  // î = \^{i}
+  "\u01f0": "\u006a\u030c",
+  // ǰ = \v{j}
+  "\u0135": "\u006a\u0302",
+  // ĵ = \^{j}
+  "\u1e31": "\u006b\u0301",
+  // ḱ = \'{k}
+  "\u01e9": "\u006b\u030c",
+  // ǩ = \v{k}
+  "\u013a": "\u006c\u0301",
+  // ĺ = \'{l}
+  "\u013e": "\u006c\u030c",
+  // ľ = \v{l}
+  "\u1e3f": "\u006d\u0301",
+  // ḿ = \'{m}
+  "\u1e41": "\u006d\u0307",
+  // ṁ = \.{m}
+  "\u0144": "\u006e\u0301",
+  // ń = \'{n}
+  "\u01f9": "\u006e\u0300",
+  // ǹ = \`{n}
+  "\u00f1": "\u006e\u0303",
+  // ñ = \~{n}
+  "\u0148": "\u006e\u030c",
+  // ň = \v{n}
+  "\u1e45": "\u006e\u0307",
+  // ṅ = \.{n}
+  "\u00f3": "\u006f\u0301",
+  // ó = \'{o}
+  "\u00f2": "\u006f\u0300",
+  // ò = \`{o}
+  "\u00f6": "\u006f\u0308",
+  // ö = \"{o}
+  "\u022b": "\u006f\u0308\u0304",
+  // ȫ = \"\={o}
+  "\u00f5": "\u006f\u0303",
+  // õ = \~{o}
+  "\u1e4d": "\u006f\u0303\u0301",
+  // ṍ = \~\'{o}
+  "\u1e4f": "\u006f\u0303\u0308",
+  // ṏ = \~\"{o}
+  "\u022d": "\u006f\u0303\u0304",
+  // ȭ = \~\={o}
+  "\u014d": "\u006f\u0304",
+  // ō = \={o}
+  "\u1e53": "\u006f\u0304\u0301",
+  // ṓ = \=\'{o}
+  "\u1e51": "\u006f\u0304\u0300",
+  // ṑ = \=\`{o}
+  "\u014f": "\u006f\u0306",
+  // ŏ = \u{o}
+  "\u01d2": "\u006f\u030c",
+  // ǒ = \v{o}
+  "\u00f4": "\u006f\u0302",
+  // ô = \^{o}
+  "\u1ed1": "\u006f\u0302\u0301",
+  // ố = \^\'{o}
+  "\u1ed3": "\u006f\u0302\u0300",
+  // ồ = \^\`{o}
+  "\u1ed7": "\u006f\u0302\u0303",
+  // ỗ = \^\~{o}
+  "\u022f": "\u006f\u0307",
+  // ȯ = \.{o}
+  "\u0231": "\u006f\u0307\u0304",
+  // ȱ = \.\={o}
+  "\u0151": "\u006f\u030b",
+  // ő = \H{o}
+  "\u1e55": "\u0070\u0301",
+  // ṕ = \'{p}
+  "\u1e57": "\u0070\u0307",
+  // ṗ = \.{p}
+  "\u0155": "\u0072\u0301",
+  // ŕ = \'{r}
+  "\u0159": "\u0072\u030c",
+  // ř = \v{r}
+  "\u1e59": "\u0072\u0307",
+  // ṙ = \.{r}
+  "\u015b": "\u0073\u0301",
+  // ś = \'{s}
+  "\u1e65": "\u0073\u0301\u0307",
+  // ṥ = \'\.{s}
+  "\u0161": "\u0073\u030c",
+  // š = \v{s}
+  "\u1e67": "\u0073\u030c\u0307",
+  // ṧ = \v\.{s}
+  "\u015d": "\u0073\u0302",
+  // ŝ = \^{s}
+  "\u1e61": "\u0073\u0307",
+  // ṡ = \.{s}
+  "\u1e97": "\u0074\u0308",
+  // ẗ = \"{t}
+  "\u0165": "\u0074\u030c",
+  // ť = \v{t}
+  "\u1e6b": "\u0074\u0307",
+  // ṫ = \.{t}
+  "\u00fa": "\u0075\u0301",
+  // ú = \'{u}
+  "\u00f9": "\u0075\u0300",
+  // ù = \`{u}
+  "\u00fc": "\u0075\u0308",
+  // ü = \"{u}
+  "\u01d8": "\u0075\u0308\u0301",
+  // ǘ = \"\'{u}
+  "\u01dc": "\u0075\u0308\u0300",
+  // ǜ = \"\`{u}
+  "\u01d6": "\u0075\u0308\u0304",
+  // ǖ = \"\={u}
+  "\u01da": "\u0075\u0308\u030c",
+  // ǚ = \"\v{u}
+  "\u0169": "\u0075\u0303",
+  // ũ = \~{u}
+  "\u1e79": "\u0075\u0303\u0301",
+  // ṹ = \~\'{u}
+  "\u016b": "\u0075\u0304",
+  // ū = \={u}
+  "\u1e7b": "\u0075\u0304\u0308",
+  // ṻ = \=\"{u}
+  "\u016d": "\u0075\u0306",
+  // ŭ = \u{u}
+  "\u01d4": "\u0075\u030c",
+  // ǔ = \v{u}
+  "\u00fb": "\u0075\u0302",
+  // û = \^{u}
+  "\u016f": "\u0075\u030a",
+  // ů = \r{u}
+  "\u0171": "\u0075\u030b",
+  // ű = \H{u}
+  "\u1e7d": "\u0076\u0303",
+  // ṽ = \~{v}
+  "\u1e83": "\u0077\u0301",
+  // ẃ = \'{w}
+  "\u1e81": "\u0077\u0300",
+  // ẁ = \`{w}
+  "\u1e85": "\u0077\u0308",
+  // ẅ = \"{w}
+  "\u0175": "\u0077\u0302",
+  // ŵ = \^{w}
+  "\u1e87": "\u0077\u0307",
+  // ẇ = \.{w}
+  "\u1e98": "\u0077\u030a",
+  // ẘ = \r{w}
+  "\u1e8d": "\u0078\u0308",
+  // ẍ = \"{x}
+  "\u1e8b": "\u0078\u0307",
+  // ẋ = \.{x}
+  "\u00fd": "\u0079\u0301",
+  // ý = \'{y}
+  "\u1ef3": "\u0079\u0300",
+  // ỳ = \`{y}
+  "\u00ff": "\u0079\u0308",
+  // ÿ = \"{y}
+  "\u1ef9": "\u0079\u0303",
+  // ỹ = \~{y}
+  "\u0233": "\u0079\u0304",
+  // ȳ = \={y}
+  "\u0177": "\u0079\u0302",
+  // ŷ = \^{y}
+  "\u1e8f": "\u0079\u0307",
+  // ẏ = \.{y}
+  "\u1e99": "\u0079\u030a",
+  // ẙ = \r{y}
+  "\u017a": "\u007a\u0301",
+  // ź = \'{z}
+  "\u017e": "\u007a\u030c",
+  // ž = \v{z}
+  "\u1e91": "\u007a\u0302",
+  // ẑ = \^{z}
+  "\u017c": "\u007a\u0307",
+  // ż = \.{z}
+  "\u00c1": "\u0041\u0301",
+  // Á = \'{A}
+  "\u00c0": "\u0041\u0300",
+  // À = \`{A}
+  "\u00c4": "\u0041\u0308",
+  // Ä = \"{A}
+  "\u01de": "\u0041\u0308\u0304",
+  // Ǟ = \"\={A}
+  "\u00c3": "\u0041\u0303",
+  // Ã = \~{A}
+  "\u0100": "\u0041\u0304",
+  // Ā = \={A}
+  "\u0102": "\u0041\u0306",
+  // Ă = \u{A}
+  "\u1eae": "\u0041\u0306\u0301",
+  // Ắ = \u\'{A}
+  "\u1eb0": "\u0041\u0306\u0300",
+  // Ằ = \u\`{A}
+  "\u1eb4": "\u0041\u0306\u0303",
+  // Ẵ = \u\~{A}
+  "\u01cd": "\u0041\u030c",
+  // Ǎ = \v{A}
+  "\u00c2": "\u0041\u0302",
+  // Â = \^{A}
+  "\u1ea4": "\u0041\u0302\u0301",
+  // Ấ = \^\'{A}
+  "\u1ea6": "\u0041\u0302\u0300",
+  // Ầ = \^\`{A}
+  "\u1eaa": "\u0041\u0302\u0303",
+  // Ẫ = \^\~{A}
+  "\u0226": "\u0041\u0307",
+  // Ȧ = \.{A}
+  "\u01e0": "\u0041\u0307\u0304",
+  // Ǡ = \.\={A}
+  "\u00c5": "\u0041\u030a",
+  // Å = \r{A}
+  "\u01fa": "\u0041\u030a\u0301",
+  // Ǻ = \r\'{A}
+  "\u1e02": "\u0042\u0307",
+  // Ḃ = \.{B}
+  "\u0106": "\u0043\u0301",
+  // Ć = \'{C}
+  "\u010c": "\u0043\u030c",
+  // Č = \v{C}
+  "\u0108": "\u0043\u0302",
+  // Ĉ = \^{C}
+  "\u010a": "\u0043\u0307",
+  // Ċ = \.{C}
+  "\u010e": "\u0044\u030c",
+  // Ď = \v{D}
+  "\u1e0a": "\u0044\u0307",
+  // Ḋ = \.{D}
+  "\u00c9": "\u0045\u0301",
+  // É = \'{E}
+  "\u00c8": "\u0045\u0300",
+  // È = \`{E}
+  "\u00cb": "\u0045\u0308",
+  // Ë = \"{E}
+  "\u1ebc": "\u0045\u0303",
+  // Ẽ = \~{E}
+  "\u0112": "\u0045\u0304",
+  // Ē = \={E}
+  "\u1e16": "\u0045\u0304\u0301",
+  // Ḗ = \=\'{E}
+  "\u1e14": "\u0045\u0304\u0300",
+  // Ḕ = \=\`{E}
+  "\u0114": "\u0045\u0306",
+  // Ĕ = \u{E}
+  "\u011a": "\u0045\u030c",
+  // Ě = \v{E}
+  "\u00ca": "\u0045\u0302",
+  // Ê = \^{E}
+  "\u1ebe": "\u0045\u0302\u0301",
+  // Ế = \^\'{E}
+  "\u1ec0": "\u0045\u0302\u0300",
+  // Ề = \^\`{E}
+  "\u1ec4": "\u0045\u0302\u0303",
+  // Ễ = \^\~{E}
+  "\u0116": "\u0045\u0307",
+  // Ė = \.{E}
+  "\u1e1e": "\u0046\u0307",
+  // Ḟ = \.{F}
+  "\u01f4": "\u0047\u0301",
+  // Ǵ = \'{G}
+  "\u1e20": "\u0047\u0304",
+  // Ḡ = \={G}
+  "\u011e": "\u0047\u0306",
+  // Ğ = \u{G}
+  "\u01e6": "\u0047\u030c",
+  // Ǧ = \v{G}
+  "\u011c": "\u0047\u0302",
+  // Ĝ = \^{G}
+  "\u0120": "\u0047\u0307",
+  // Ġ = \.{G}
+  "\u1e26": "\u0048\u0308",
+  // Ḧ = \"{H}
+  "\u021e": "\u0048\u030c",
+  // Ȟ = \v{H}
+  "\u0124": "\u0048\u0302",
+  // Ĥ = \^{H}
+  "\u1e22": "\u0048\u0307",
+  // Ḣ = \.{H}
+  "\u00cd": "\u0049\u0301",
+  // Í = \'{I}
+  "\u00cc": "\u0049\u0300",
+  // Ì = \`{I}
+  "\u00cf": "\u0049\u0308",
+  // Ï = \"{I}
+  "\u1e2e": "\u0049\u0308\u0301",
+  // Ḯ = \"\'{I}
+  "\u0128": "\u0049\u0303",
+  // Ĩ = \~{I}
+  "\u012a": "\u0049\u0304",
+  // Ī = \={I}
+  "\u012c": "\u0049\u0306",
+  // Ĭ = \u{I}
+  "\u01cf": "\u0049\u030c",
+  // Ǐ = \v{I}
+  "\u00ce": "\u0049\u0302",
+  // Î = \^{I}
+  "\u0130": "\u0049\u0307",
+  // İ = \.{I}
+  "\u0134": "\u004a\u0302",
+  // Ĵ = \^{J}
+  "\u1e30": "\u004b\u0301",
+  // Ḱ = \'{K}
+  "\u01e8": "\u004b\u030c",
+  // Ǩ = \v{K}
+  "\u0139": "\u004c\u0301",
+  // Ĺ = \'{L}
+  "\u013d": "\u004c\u030c",
+  // Ľ = \v{L}
+  "\u1e3e": "\u004d\u0301",
+  // Ḿ = \'{M}
+  "\u1e40": "\u004d\u0307",
+  // Ṁ = \.{M}
+  "\u0143": "\u004e\u0301",
+  // Ń = \'{N}
+  "\u01f8": "\u004e\u0300",
+  // Ǹ = \`{N}
+  "\u00d1": "\u004e\u0303",
+  // Ñ = \~{N}
+  "\u0147": "\u004e\u030c",
+  // Ň = \v{N}
+  "\u1e44": "\u004e\u0307",
+  // Ṅ = \.{N}
+  "\u00d3": "\u004f\u0301",
+  // Ó = \'{O}
+  "\u00d2": "\u004f\u0300",
+  // Ò = \`{O}
+  "\u00d6": "\u004f\u0308",
+  // Ö = \"{O}
+  "\u022a": "\u004f\u0308\u0304",
+  // Ȫ = \"\={O}
+  "\u00d5": "\u004f\u0303",
+  // Õ = \~{O}
+  "\u1e4c": "\u004f\u0303\u0301",
+  // Ṍ = \~\'{O}
+  "\u1e4e": "\u004f\u0303\u0308",
+  // Ṏ = \~\"{O}
+  "\u022c": "\u004f\u0303\u0304",
+  // Ȭ = \~\={O}
+  "\u014c": "\u004f\u0304",
+  // Ō = \={O}
+  "\u1e52": "\u004f\u0304\u0301",
+  // Ṓ = \=\'{O}
+  "\u1e50": "\u004f\u0304\u0300",
+  // Ṑ = \=\`{O}
+  "\u014e": "\u004f\u0306",
+  // Ŏ = \u{O}
+  "\u01d1": "\u004f\u030c",
+  // Ǒ = \v{O}
+  "\u00d4": "\u004f\u0302",
+  // Ô = \^{O}
+  "\u1ed0": "\u004f\u0302\u0301",
+  // Ố = \^\'{O}
+  "\u1ed2": "\u004f\u0302\u0300",
+  // Ồ = \^\`{O}
+  "\u1ed6": "\u004f\u0302\u0303",
+  // Ỗ = \^\~{O}
+  "\u022e": "\u004f\u0307",
+  // Ȯ = \.{O}
+  "\u0230": "\u004f\u0307\u0304",
+  // Ȱ = \.\={O}
+  "\u0150": "\u004f\u030b",
+  // Ő = \H{O}
+  "\u1e54": "\u0050\u0301",
+  // Ṕ = \'{P}
+  "\u1e56": "\u0050\u0307",
+  // Ṗ = \.{P}
+  "\u0154": "\u0052\u0301",
+  // Ŕ = \'{R}
+  "\u0158": "\u0052\u030c",
+  // Ř = \v{R}
+  "\u1e58": "\u0052\u0307",
+  // Ṙ = \.{R}
+  "\u015a": "\u0053\u0301",
+  // Ś = \'{S}
+  "\u1e64": "\u0053\u0301\u0307",
+  // Ṥ = \'\.{S}
+  "\u0160": "\u0053\u030c",
+  // Š = \v{S}
+  "\u1e66": "\u0053\u030c\u0307",
+  // Ṧ = \v\.{S}
+  "\u015c": "\u0053\u0302",
+  // Ŝ = \^{S}
+  "\u1e60": "\u0053\u0307",
+  // Ṡ = \.{S}
+  "\u0164": "\u0054\u030c",
+  // Ť = \v{T}
+  "\u1e6a": "\u0054\u0307",
+  // Ṫ = \.{T}
+  "\u00da": "\u0055\u0301",
+  // Ú = \'{U}
+  "\u00d9": "\u0055\u0300",
+  // Ù = \`{U}
+  "\u00dc": "\u0055\u0308",
+  // Ü = \"{U}
+  "\u01d7": "\u0055\u0308\u0301",
+  // Ǘ = \"\'{U}
+  "\u01db": "\u0055\u0308\u0300",
+  // Ǜ = \"\`{U}
+  "\u01d5": "\u0055\u0308\u0304",
+  // Ǖ = \"\={U}
+  "\u01d9": "\u0055\u0308\u030c",
+  // Ǚ = \"\v{U}
+  "\u0168": "\u0055\u0303",
+  // Ũ = \~{U}
+  "\u1e78": "\u0055\u0303\u0301",
+  // Ṹ = \~\'{U}
+  "\u016a": "\u0055\u0304",
+  // Ū = \={U}
+  "\u1e7a": "\u0055\u0304\u0308",
+  // Ṻ = \=\"{U}
+  "\u016c": "\u0055\u0306",
+  // Ŭ = \u{U}
+  "\u01d3": "\u0055\u030c",
+  // Ǔ = \v{U}
+  "\u00db": "\u0055\u0302",
+  // Û = \^{U}
+  "\u016e": "\u0055\u030a",
+  // Ů = \r{U}
+  "\u0170": "\u0055\u030b",
+  // Ű = \H{U}
+  "\u1e7c": "\u0056\u0303",
+  // Ṽ = \~{V}
+  "\u1e82": "\u0057\u0301",
+  // Ẃ = \'{W}
+  "\u1e80": "\u0057\u0300",
+  // Ẁ = \`{W}
+  "\u1e84": "\u0057\u0308",
+  // Ẅ = \"{W}
+  "\u0174": "\u0057\u0302",
+  // Ŵ = \^{W}
+  "\u1e86": "\u0057\u0307",
+  // Ẇ = \.{W}
+  "\u1e8c": "\u0058\u0308",
+  // Ẍ = \"{X}
+  "\u1e8a": "\u0058\u0307",
+  // Ẋ = \.{X}
+  "\u00dd": "\u0059\u0301",
+  // Ý = \'{Y}
+  "\u1ef2": "\u0059\u0300",
+  // Ỳ = \`{Y}
+  "\u0178": "\u0059\u0308",
+  // Ÿ = \"{Y}
+  "\u1ef8": "\u0059\u0303",
+  // Ỹ = \~{Y}
+  "\u0232": "\u0059\u0304",
+  // Ȳ = \={Y}
+  "\u0176": "\u0059\u0302",
+  // Ŷ = \^{Y}
+  "\u1e8e": "\u0059\u0307",
+  // Ẏ = \.{Y}
+  "\u0179": "\u005a\u0301",
+  // Ź = \'{Z}
+  "\u017d": "\u005a\u030c",
+  // Ž = \v{Z}
+  "\u1e90": "\u005a\u0302",
+  // Ẑ = \^{Z}
+  "\u017b": "\u005a\u0307",
+  // Ż = \.{Z}
+  "\u03ac": "\u03b1\u0301",
+  // ά = \'{α}
+  "\u1f70": "\u03b1\u0300",
+  // ὰ = \`{α}
+  "\u1fb1": "\u03b1\u0304",
+  // ᾱ = \={α}
+  "\u1fb0": "\u03b1\u0306",
+  // ᾰ = \u{α}
+  "\u03ad": "\u03b5\u0301",
+  // έ = \'{ε}
+  "\u1f72": "\u03b5\u0300",
+  // ὲ = \`{ε}
+  "\u03ae": "\u03b7\u0301",
+  // ή = \'{η}
+  "\u1f74": "\u03b7\u0300",
+  // ὴ = \`{η}
+  "\u03af": "\u03b9\u0301",
+  // ί = \'{ι}
+  "\u1f76": "\u03b9\u0300",
+  // ὶ = \`{ι}
+  "\u03ca": "\u03b9\u0308",
+  // ϊ = \"{ι}
+  "\u0390": "\u03b9\u0308\u0301",
+  // ΐ = \"\'{ι}
+  "\u1fd2": "\u03b9\u0308\u0300",
+  // ῒ = \"\`{ι}
+  "\u1fd1": "\u03b9\u0304",
+  // ῑ = \={ι}
+  "\u1fd0": "\u03b9\u0306",
+  // ῐ = \u{ι}
+  "\u03cc": "\u03bf\u0301",
+  // ό = \'{ο}
+  "\u1f78": "\u03bf\u0300",
+  // ὸ = \`{ο}
+  "\u03cd": "\u03c5\u0301",
+  // ύ = \'{υ}
+  "\u1f7a": "\u03c5\u0300",
+  // ὺ = \`{υ}
+  "\u03cb": "\u03c5\u0308",
+  // ϋ = \"{υ}
+  "\u03b0": "\u03c5\u0308\u0301",
+  // ΰ = \"\'{υ}
+  "\u1fe2": "\u03c5\u0308\u0300",
+  // ῢ = \"\`{υ}
+  "\u1fe1": "\u03c5\u0304",
+  // ῡ = \={υ}
+  "\u1fe0": "\u03c5\u0306",
+  // ῠ = \u{υ}
+  "\u03ce": "\u03c9\u0301",
+  // ώ = \'{ω}
+  "\u1f7c": "\u03c9\u0300",
+  // ὼ = \`{ω}
+  "\u038e": "\u03a5\u0301",
+  // Ύ = \'{Υ}
+  "\u1fea": "\u03a5\u0300",
+  // Ὺ = \`{Υ}
+  "\u03ab": "\u03a5\u0308",
+  // Ϋ = \"{Υ}
+  "\u1fe9": "\u03a5\u0304",
+  // Ῡ = \={Υ}
+  "\u1fe8": "\u03a5\u0306",
+  // Ῠ = \u{Υ}
+  "\u038f": "\u03a9\u0301",
+  // Ώ = \'{Ω}
+  "\u1ffa": "\u03a9\u0300" // Ὼ = \`{Ω}
+
+};
+
+/* eslint no-constant-condition:0 */
+
+/**
+ * This file contains the parser used to parse out a TeX expression from the
+ * input. Since TeX isn't context-free, standard parsers don't work particularly
+ * well.
+ *
+ * The strategy of this parser is as such:
+ *
+ * The main functions (the `.parse...` ones) take a position in the current
+ * parse string to parse tokens from. The lexer (found in Lexer.js, stored at
+ * this.gullet.lexer) also supports pulling out tokens at arbitrary places. When
+ * individual tokens are needed at a position, the lexer is called to pull out a
+ * token, which is then used.
+ *
+ * The parser has a property called "mode" indicating the mode that
+ * the parser is currently in. Currently it has to be one of "math" or
+ * "text", which denotes whether the current environment is a math-y
+ * one or a text-y one (e.g. inside \text). Currently, this serves to
+ * limit the functions which can be used in text mode.
+ *
+ * The main functions then return an object which contains the useful data that
+ * was parsed at its given point, and a new position at the end of the parsed
+ * data. The main functions can call each other and continue the parsing by
+ * using the returned position as a new starting point.
+ *
+ * There are also extra `.handle...` functions, which pull out some reused
+ * functionality into self-contained functions.
+ *
+ * The functions return ParseNodes.
+ */
+class Parser {
+  constructor(input, settings) {
+    this.mode = void 0;
+    this.gullet = void 0;
+    this.settings = void 0;
+    this.leftrightDepth = void 0;
+    this.nextToken = void 0;
+    // Start in math mode
+    this.mode = "math"; // Create a new macro expander (gullet) and (indirectly via that) also a
+    // new lexer (mouth) for this parser (stomach, in the language of TeX)
+
+    this.gullet = new MacroExpander(input, settings, this.mode); // Store the settings for use in parsing
+
+    this.settings = settings; // Count leftright depth (for \middle errors)
+
+    this.leftrightDepth = 0;
+  }
+  /**
+   * Checks a result to make sure it has the right type, and throws an
+   * appropriate error otherwise.
+   */
+
+
+  expect(text, consume) {
+    if (consume === void 0) {
+      consume = true;
+    }
+
+    if (this.fetch().text !== text) {
+      throw new ParseError(`Expected '${text}', got '${this.fetch().text}'`, this.fetch());
+    }
+
+    if (consume) {
+      this.consume();
+    }
+  }
+  /**
+   * Discards the current lookahead token, considering it consumed.
+   */
+
+
+  consume() {
+    this.nextToken = null;
+  }
+  /**
+   * Return the current lookahead token, or if there isn't one (at the
+   * beginning, or if the previous lookahead token was consume()d),
+   * fetch the next token as the new lookahead token and return it.
+   */
+
+
+  fetch() {
+    if (this.nextToken == null) {
+      this.nextToken = this.gullet.expandNextToken();
+    }
+
+    return this.nextToken;
+  }
+  /**
+   * Switches between "text" and "math" modes.
+   */
+
+
+  switchMode(newMode) {
+    this.mode = newMode;
+    this.gullet.switchMode(newMode);
+  }
+  /**
+   * Main parsing function, which parses an entire input.
+   */
+
+
+  parse() {
+    // Create a group namespace for the math expression.
+    // (LaTeX creates a new group for every $...$, $$...$$, \[...\].)
+    this.gullet.beginGroup(); // Use old \color behavior (same as LaTeX's \textcolor) if requested.
+    // We do this within the group for the math expression, so it doesn't
+    // pollute settings.macros.
+
+    if (this.settings.colorIsTextColor) {
+      this.gullet.macros.set("\\color", "\\textcolor");
+    } // Try to parse the input
+
+
+    const parse = this.parseExpression(false); // If we succeeded, make sure there's an EOF at the end
+
+    this.expect("EOF"); // End the group namespace for the expression
+
+    this.gullet.endGroup();
+    return parse;
+  }
+
+  parseExpression(breakOnInfix, breakOnTokenText) {
+    const body = []; // Keep adding atoms to the body until we can't parse any more atoms (either
+    // we reached the end, a }, or a \right)
+
+    while (true) {
+      // Ignore spaces in math mode
+      if (this.mode === "math") {
+        this.consumeSpaces();
+      }
+
+      const lex = this.fetch();
+
+      if (Parser.endOfExpression.indexOf(lex.text) !== -1) {
+        break;
+      }
+
+      if (breakOnTokenText && lex.text === breakOnTokenText) {
+        break;
+      }
+
+      if (breakOnInfix && functions[lex.text] && functions[lex.text].infix) {
+        break;
+      }
+
+      const atom = this.parseAtom(breakOnTokenText);
+
+      if (!atom) {
+        break;
+      }
+
+      body.push(atom);
+    }
+
+    if (this.mode === "text") {
+      this.formLigatures(body);
+    }
+
+    return this.handleInfixNodes(body);
+  }
+  /**
+   * Rewrites infix operators such as \over with corresponding commands such
+   * as \frac.
+   *
+   * There can only be one infix operator per group.  If there's more than one
+   * then the expression is ambiguous.  This can be resolved by adding {}.
+   */
+
+
+  handleInfixNodes(body) {
+    let overIndex = -1;
+    let funcName;
+
+    for (let i = 0; i < body.length; i++) {
+      const node = checkNodeType(body[i], "infix");
+
+      if (node) {
+        if (overIndex !== -1) {
+          throw new ParseError("only one infix operator per group", node.token);
+        }
+
+        overIndex = i;
+        funcName = node.replaceWith;
+      }
+    }
+
+    if (overIndex !== -1 && funcName) {
+      let numerNode;
+      let denomNode;
+      const numerBody = body.slice(0, overIndex);
+      const denomBody = body.slice(overIndex + 1);
+
+      if (numerBody.length === 1 && numerBody[0].type === "ordgroup") {
+        numerNode = numerBody[0];
+      } else {
+        numerNode = {
+          type: "ordgroup",
+          mode: this.mode,
+          body: numerBody
+        };
+      }
+
+      if (denomBody.length === 1 && denomBody[0].type === "ordgroup") {
+        denomNode = denomBody[0];
+      } else {
+        denomNode = {
+          type: "ordgroup",
+          mode: this.mode,
+          body: denomBody
+        };
+      }
+
+      let node;
+
+      if (funcName === "\\\\abovefrac") {
+        node = this.callFunction(funcName, [numerNode, body[overIndex], denomNode], []);
+      } else {
+        node = this.callFunction(funcName, [numerNode, denomNode], []);
+      }
+
+      return [node];
+    } else {
+      return body;
+    }
+  } // The greediness of a superscript or subscript
+
+
+  /**
+   * Handle a subscript or superscript with nice errors.
+   */
+  handleSupSubscript(name) {
+    const symbolToken = this.fetch();
+    const symbol = symbolToken.text;
+    this.consume();
+    const group = this.parseGroup(name, false, Parser.SUPSUB_GREEDINESS, undefined, undefined, true); // ignore spaces before sup/subscript argument
+
+    if (!group) {
+      throw new ParseError("Expected group after '" + symbol + "'", symbolToken);
+    }
+
+    return group;
+  }
+  /**
+   * Converts the textual input of an unsupported command into a text node
+   * contained within a color node whose color is determined by errorColor
+   */
+
+
+  formatUnsupportedCmd(text) {
+    const textordArray = [];
+
+    for (let i = 0; i < text.length; i++) {
+      textordArray.push({
+        type: "textord",
+        mode: "text",
+        text: text[i]
+      });
+    }
+
+    const textNode = {
+      type: "text",
+      mode: this.mode,
+      body: textordArray
+    };
+    const colorNode = {
+      type: "color",
+      mode: this.mode,
+      color: this.settings.errorColor,
+      body: [textNode]
+    };
+    return colorNode;
+  }
+  /**
+   * Parses a group with optional super/subscripts.
+   */
+
+
+  parseAtom(breakOnTokenText) {
+    // The body of an atom is an implicit group, so that things like
+    // \left(x\right)^2 work correctly.
+    const base = this.parseGroup("atom", false, null, breakOnTokenText); // In text mode, we don't have superscripts or subscripts
+
+    if (this.mode === "text") {
+      return base;
+    } // Note that base may be empty (i.e. null) at this point.
+
+
+    let superscript;
+    let subscript;
+
+    while (true) {
+      // Guaranteed in math mode, so eat any spaces first.
+      this.consumeSpaces(); // Lex the first token
+
+      const lex = this.fetch();
+
+      if (lex.text === "\\limits" || lex.text === "\\nolimits") {
+        // We got a limit control
+        let opNode = checkNodeType(base, "op");
+
+        if (opNode) {
+          const limits = lex.text === "\\limits";
+          opNode.limits = limits;
+          opNode.alwaysHandleSupSub = true;
+        } else {
+          opNode = checkNodeType(base, "operatorname");
+
+          if (opNode && opNode.alwaysHandleSupSub) {
+            const limits = lex.text === "\\limits";
+            opNode.limits = limits;
+          } else {
+            throw new ParseError("Limit controls must follow a math operator", lex);
+          }
+        }
+
+        this.consume();
+      } else if (lex.text === "^") {
+        // We got a superscript start
+        if (superscript) {
+          throw new ParseError("Double superscript", lex);
+        }
+
+        superscript = this.handleSupSubscript("superscript");
+      } else if (lex.text === "_") {
+        // We got a subscript start
+        if (subscript) {
+          throw new ParseError("Double subscript", lex);
+        }
+
+        subscript = this.handleSupSubscript("subscript");
+      } else if (lex.text === "'") {
+        // We got a prime
+        if (superscript) {
+          throw new ParseError("Double superscript", lex);
+        }
+
+        const prime = {
+          type: "textord",
+          mode: this.mode,
+          text: "\\prime"
+        }; // Many primes can be grouped together, so we handle this here
+
+        const primes = [prime];
+        this.consume(); // Keep lexing tokens until we get something that's not a prime
+
+        while (this.fetch().text === "'") {
+          // For each one, add another prime to the list
+          primes.push(prime);
+          this.consume();
+        } // If there's a superscript following the primes, combine that
+        // superscript in with the primes.
+
+
+        if (this.fetch().text === "^") {
+          primes.push(this.handleSupSubscript("superscript"));
+        } // Put everything into an ordgroup as the superscript
+
+
+        superscript = {
+          type: "ordgroup",
+          mode: this.mode,
+          body: primes
+        };
+      } else {
+        // If it wasn't ^, _, or ', stop parsing super/subscripts
+        break;
+      }
+    } // Base must be set if superscript or subscript are set per logic above,
+    // but need to check here for type check to pass.
+
+
+    if (superscript || subscript) {
+      // If we got either a superscript or subscript, create a supsub
+      return {
+        type: "supsub",
+        mode: this.mode,
+        base: base,
+        sup: superscript,
+        sub: subscript
+      };
+    } else {
+      // Otherwise return the original body
+      return base;
+    }
+  }
+  /**
+   * Parses an entire function, including its base and all of its arguments.
+   */
+
+
+  parseFunction(breakOnTokenText, name, // For error reporting.
+  greediness) {
+    const token = this.fetch();
+    const func = token.text;
+    const funcData = functions[func];
+
+    if (!funcData) {
+      return null;
+    }
+
+    this.consume(); // consume command token
+
+    if (greediness != null && funcData.greediness <= greediness) {
+      throw new ParseError("Got function '" + func + "' with no arguments" + (name ? " as " + name : ""), token);
+    } else if (this.mode === "text" && !funcData.allowedInText) {
+      throw new ParseError("Can't use function '" + func + "' in text mode", token);
+    } else if (this.mode === "math" && funcData.allowedInMath === false) {
+      throw new ParseError("Can't use function '" + func + "' in math mode", token);
+    }
+
+    const _this$parseArguments = this.parseArguments(func, funcData),
+          args = _this$parseArguments.args,
+          optArgs = _this$parseArguments.optArgs;
+
+    return this.callFunction(func, args, optArgs, token, breakOnTokenText);
+  }
+  /**
+   * Call a function handler with a suitable context and arguments.
+   */
+
+
+  callFunction(name, args, optArgs, token, breakOnTokenText) {
+    const context = {
+      funcName: name,
+      parser: this,
+      token,
+      breakOnTokenText
+    };
+    const func = functions[name];
+
+    if (func && func.handler) {
+      return func.handler(context, args, optArgs);
+    } else {
+      throw new ParseError(`No function handler for ${name}`);
+    }
+  }
+  /**
+   * Parses the arguments of a function or environment
+   */
+
+
+  parseArguments(func, // Should look like "\name" or "\begin{name}".
+  funcData) {
+    const totalArgs = funcData.numArgs + funcData.numOptionalArgs;
+
+    if (totalArgs === 0) {
+      return {
+        args: [],
+        optArgs: []
+      };
+    }
+
+    const baseGreediness = funcData.greediness;
+    const args = [];
+    const optArgs = [];
+
+    for (let i = 0; i < totalArgs; i++) {
+      const argType = funcData.argTypes && funcData.argTypes[i];
+      const isOptional = i < funcData.numOptionalArgs; // Ignore spaces between arguments.  As the TeXbook says:
+      // "After you have said ‘\def\row#1#2{...}’, you are allowed to
+      //  put spaces between the arguments (e.g., ‘\row x n’), because
+      //  TeX doesn’t use single spaces as undelimited arguments."
+
+      const consumeSpaces = i > 0 && !isOptional || // Also consume leading spaces in math mode, as parseSymbol
+      // won't know what to do with them.  This can only happen with
+      // macros, e.g. \frac\foo\foo where \foo expands to a space symbol.
+      // In LaTeX, the \foo's get treated as (blank) arguments.
+      // In KaTeX, for now, both spaces will get consumed.
+      // TODO(edemaine)
+      i === 0 && !isOptional && this.mode === "math";
+      const arg = this.parseGroupOfType(`argument to '${func}'`, argType, isOptional, baseGreediness, consumeSpaces);
+
+      if (!arg) {
+        if (isOptional) {
+          optArgs.push(null);
+          continue;
+        }
+
+        throw new ParseError(`Expected group after '${func}'`, this.fetch());
+      }
+
+      (isOptional ? optArgs : args).push(arg);
+    }
+
+    return {
+      args,
+      optArgs
+    };
+  }
+  /**
+   * Parses a group when the mode is changing.
+   */
+
+
+  parseGroupOfType(name, type, optional, greediness, consumeSpaces) {
+    switch (type) {
+      case "color":
+        if (consumeSpaces) {
+          this.consumeSpaces();
+        }
+
+        return this.parseColorGroup(optional);
+
+      case "size":
+        if (consumeSpaces) {
+          this.consumeSpaces();
+        }
+
+        return this.parseSizeGroup(optional);
+
+      case "url":
+        return this.parseUrlGroup(optional, consumeSpaces);
+
+      case "math":
+      case "text":
+        return this.parseGroup(name, optional, greediness, undefined, type, consumeSpaces);
+
+      case "hbox":
+        {
+          // hbox argument type wraps the argument in the equivalent of
+          // \hbox, which is like \text but switching to \textstyle size.
+          const group = this.parseGroup(name, optional, greediness, undefined, "text", consumeSpaces);
+
+          if (!group) {
+            return group;
+          }
+
+          const styledGroup = {
+            type: "styling",
+            mode: group.mode,
+            body: [group],
+            style: "text" // simulate \textstyle
+
+          };
+          return styledGroup;
+        }
+
+      case "raw":
+        {
+          if (consumeSpaces) {
+            this.consumeSpaces();
+          }
+
+          if (optional && this.fetch().text === "{") {
+            return null;
+          }
+
+          const token = this.parseStringGroup("raw", optional, true);
+
+          if (token) {
+            return {
+              type: "raw",
+              mode: "text",
+              string: token.text
+            };
+          } else {
+            throw new ParseError("Expected raw group", this.fetch());
+          }
+        }
+
+      case "original":
+      case null:
+      case undefined:
+        return this.parseGroup(name, optional, greediness, undefined, undefined, consumeSpaces);
+
+      default:
+        throw new ParseError("Unknown group type as " + name, this.fetch());
+    }
+  }
+  /**
+   * Discard any space tokens, fetching the next non-space token.
+   */
+
+
+  consumeSpaces() {
+    while (this.fetch().text === " ") {
+      this.consume();
+    }
+  }
+  /**
+   * Parses a group, essentially returning the string formed by the
+   * brace-enclosed tokens plus some position information.
+   */
+
+
+  parseStringGroup(modeName, // Used to describe the mode in error messages.
+  optional, raw) {
+    const groupBegin = optional ? "[" : "{";
+    const groupEnd = optional ? "]" : "}";
+    const beginToken = this.fetch();
+
+    if (beginToken.text !== groupBegin) {
+      if (optional) {
+        return null;
+      } else if (raw && beginToken.text !== "EOF" && /[^{}[\]]/.test(beginToken.text)) {
+        this.consume();
+        return beginToken;
+      }
+    }
+
+    const outerMode = this.mode;
+    this.mode = "text";
+    this.expect(groupBegin);
+    let str = "";
+    const firstToken = this.fetch();
+    let nested = 0; // allow nested braces in raw string group
+
+    let lastToken = firstToken;
+    let nextToken;
+
+    while ((nextToken = this.fetch()).text !== groupEnd || raw && nested > 0) {
+      switch (nextToken.text) {
+        case "EOF":
+          throw new ParseError("Unexpected end of input in " + modeName, firstToken.range(lastToken, str));
+
+        case groupBegin:
+          nested++;
+          break;
+
+        case groupEnd:
+          nested--;
+          break;
+      }
+
+      lastToken = nextToken;
+      str += lastToken.text;
+      this.consume();
+    }
+
+    this.expect(groupEnd);
+    this.mode = outerMode;
+    return firstToken.range(lastToken, str);
+  }
+  /**
+   * Parses a regex-delimited group: the largest sequence of tokens
+   * whose concatenated strings match `regex`. Returns the string
+   * formed by the tokens plus some position information.
+   */
+
+
+  parseRegexGroup(regex, modeName) {
+    const outerMode = this.mode;
+    this.mode = "text";
+    const firstToken = this.fetch();
+    let lastToken = firstToken;
+    let str = "";
+    let nextToken;
+
+    while ((nextToken = this.fetch()).text !== "EOF" && regex.test(str + nextToken.text)) {
+      lastToken = nextToken;
+      str += lastToken.text;
+      this.consume();
+    }
+
+    if (str === "") {
+      throw new ParseError("Invalid " + modeName + ": '" + firstToken.text + "'", firstToken);
+    }
+
+    this.mode = outerMode;
+    return firstToken.range(lastToken, str);
+  }
+  /**
+   * Parses a color description.
+   */
+
+
+  parseColorGroup(optional) {
+    const res = this.parseStringGroup("color", optional);
+
+    if (!res) {
+      return null;
+    }
+
+    const match = /^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(res.text);
+
+    if (!match) {
+      throw new ParseError("Invalid color: '" + res.text + "'", res);
+    }
+
+    let color = match[0];
+
+    if (/^[0-9a-f]{6}$/i.test(color)) {
+      // We allow a 6-digit HTML color spec without a leading "#".
+      // This follows the xcolor package's HTML color model.
+      // Predefined color names are all missed by this RegEx pattern.
+      color = "#" + color;
+    }
+
+    return {
+      type: "color-token",
+      mode: this.mode,
+      color
+    };
+  }
+  /**
+   * Parses a size specification, consisting of magnitude and unit.
+   */
+
+
+  parseSizeGroup(optional) {
+    let res;
+    let isBlank = false;
+
+    if (!optional && this.fetch().text !== "{") {
+      res = this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/, "size");
+    } else {
+      res = this.parseStringGroup("size", optional);
+    }
+
+    if (!res) {
+      return null;
+    }
+
+    if (!optional && res.text.length === 0) {
+      // Because we've tested for what is !optional, this block won't
+      // affect \kern, \hspace, etc. It will capture the mandatory arguments
+      // to \genfrac and \above.
+      res.text = "0pt"; // Enable \above{}
+
+      isBlank = true; // This is here specifically for \genfrac
+    }
+
+    const match = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(res.text);
+
+    if (!match) {
+      throw new ParseError("Invalid size: '" + res.text + "'", res);
+    }
+
+    const data = {
+      number: +(match[1] + match[2]),
+      // sign + magnitude, cast to number
+      unit: match[3]
+    };
+
+    if (!validUnit(data)) {
+      throw new ParseError("Invalid unit: '" + data.unit + "'", res);
+    }
+
+    return {
+      type: "size",
+      mode: this.mode,
+      value: data,
+      isBlank
+    };
+  }
+  /**
+   * Parses an URL, checking escaped letters and allowed protocols,
+   * and setting the catcode of % as an active character (as in \hyperref).
+   */
+
+
+  parseUrlGroup(optional, consumeSpaces) {
+    this.gullet.lexer.setCatcode("%", 13); // active character
+
+    const res = this.parseStringGroup("url", optional, true); // get raw string
+
+    this.gullet.lexer.setCatcode("%", 14); // comment character
+
+    if (!res) {
+      return null;
+    } // hyperref package allows backslashes alone in href, but doesn't
+    // generate valid links in such cases; we interpret this as
+    // "undefined" behaviour, and keep them as-is. Some browser will
+    // replace backslashes with forward slashes.
+
+
+    const url = res.text.replace(/\\([#$%&~_^{}])/g, '$1');
+    return {
+      type: "url",
+      mode: this.mode,
+      url
+    };
+  }
+  /**
+   * If `optional` is false or absent, this parses an ordinary group,
+   * which is either a single nucleus (like "x") or an expression
+   * in braces (like "{x+y}") or an implicit group, a group that starts
+   * at the current position, and ends right before a higher explicit
+   * group ends, or at EOF.
+   * If `optional` is true, it parses either a bracket-delimited expression
+   * (like "[x+y]") or returns null to indicate the absence of a
+   * bracket-enclosed group.
+   * If `mode` is present, switches to that mode while parsing the group,
+   * and switches back after.
+   */
+
+
+  parseGroup(name, // For error reporting.
+  optional, greediness, breakOnTokenText, mode, consumeSpaces) {
+    // Switch to specified mode
+    const outerMode = this.mode;
+
+    if (mode) {
+      this.switchMode(mode);
+    } // Consume spaces if requested, crucially *after* we switch modes,
+    // so that the next non-space token is parsed in the correct mode.
+
+
+    if (consumeSpaces) {
+      this.consumeSpaces();
+    } // Get first token
+
+
+    const firstToken = this.fetch();
+    const text = firstToken.text;
+    let result; // Try to parse an open brace or \begingroup
+
+    if (optional ? text === "[" : text === "{" || text === "\\begingroup") {
+      this.consume();
+      const groupEnd = Parser.endOfGroup[text]; // Start a new group namespace
+
+      this.gullet.beginGroup(); // If we get a brace, parse an expression
+
+      const expression = this.parseExpression(false, groupEnd);
+      const lastToken = this.fetch(); // Check that we got a matching closing brace
+
+      this.expect(groupEnd); // End group namespace
+
+      this.gullet.endGroup();
+      result = {
+        type: "ordgroup",
+        mode: this.mode,
+        loc: SourceLocation.range(firstToken, lastToken),
+        body: expression,
+        // A group formed by \begingroup...\endgroup is a semi-simple group
+        // which doesn't affect spacing in math mode, i.e., is transparent.
+        // https://tex.stackexchange.com/questions/1930/when-should-one-
+        // use-begingroup-instead-of-bgroup
+        semisimple: text === "\\begingroup" || undefined
+      };
+    } else if (optional) {
+      // Return nothing for an optional group
+      result = null;
+    } else {
+      // If there exists a function with this name, parse the function.
+      // Otherwise, just return a nucleus
+      result = this.parseFunction(breakOnTokenText, name, greediness) || this.parseSymbol();
+
+      if (result == null && text[0] === "\\" && !implicitCommands.hasOwnProperty(text)) {
+        if (this.settings.throwOnError) {
+          throw new ParseError("Undefined control sequence: " + text, firstToken);
+        }
+
+        result = this.formatUnsupportedCmd(text);
+        this.consume();
+      }
+    } // Switch mode back
+
+
+    if (mode) {
+      this.switchMode(outerMode);
+    }
+
+    return result;
+  }
+  /**
+   * Form ligature-like combinations of characters for text mode.
+   * This includes inputs like "--", "---", "``" and "''".
+   * The result will simply replace multiple textord nodes with a single
+   * character in each value by a single textord node having multiple
+   * characters in its value.  The representation is still ASCII source.
+   * The group will be modified in place.
+   */
+
+
+  formLigatures(group) {
+    let n = group.length - 1;
+
+    for (let i = 0; i < n; ++i) {
+      const a = group[i]; // $FlowFixMe: Not every node type has a `text` property.
+
+      const v = a.text;
+
+      if (v === "-" && group[i + 1].text === "-") {
+        if (i + 1 < n && group[i + 2].text === "-") {
+          group.splice(i, 3, {
+            type: "textord",
+            mode: "text",
+            loc: SourceLocation.range(a, group[i + 2]),
+            text: "---"
+          });
+          n -= 2;
+        } else {
+          group.splice(i, 2, {
+            type: "textord",
+            mode: "text",
+            loc: SourceLocation.range(a, group[i + 1]),
+            text: "--"
+          });
+          n -= 1;
+        }
+      }
+
+      if ((v === "'" || v === "`") && group[i + 1].text === v) {
+        group.splice(i, 2, {
+          type: "textord",
+          mode: "text",
+          loc: SourceLocation.range(a, group[i + 1]),
+          text: v + v
+        });
+        n -= 1;
+      }
+    }
+  }
+  /**
+   * Parse a single symbol out of the string. Here, we handle single character
+   * symbols and special functions like \verb.
+   */
+
+
+  parseSymbol() {
+    const nucleus = this.fetch();
+    let text = nucleus.text;
+
+    if (/^\\verb[^a-zA-Z]/.test(text)) {
+      this.consume();
+      let arg = text.slice(5);
+      const star = arg.charAt(0) === "*";
+
+      if (star) {
+        arg = arg.slice(1);
+      } // Lexer's tokenRegex is constructed to always have matching
+      // first/last characters.
+
+
+      if (arg.length < 2 || arg.charAt(0) !== arg.slice(-1)) {
+        throw new ParseError(`\\verb assertion failed --
+                    please report what input caused this bug`);
+      }
+
+      arg = arg.slice(1, -1); // remove first and last char
+
+      return {
+        type: "verb",
+        mode: "text",
+        body: arg,
+        star
+      };
+    } // At this point, we should have a symbol, possibly with accents.
+    // First expand any accented base symbol according to unicodeSymbols.
+
+
+    if (unicodeSymbols.hasOwnProperty(text[0]) && !symbols[this.mode][text[0]]) {
+      // This behavior is not strict (XeTeX-compatible) in math mode.
+      if (this.settings.strict && this.mode === "math") {
+        this.settings.reportNonstrict("unicodeTextInMathMode", `Accented Unicode text character "${text[0]}" used in ` + `math mode`, nucleus);
+      }
+
+      text = unicodeSymbols[text[0]] + text.substr(1);
+    } // Strip off any combining characters
+
+
+    const match = combiningDiacriticalMarksEndRegex.exec(text);
+
+    if (match) {
+      text = text.substring(0, match.index);
+
+      if (text === 'i') {
+        text = '\u0131'; // dotless i, in math and text mode
+      } else if (text === 'j') {
+        text = '\u0237'; // dotless j, in math and text mode
+      }
+    } // Recognize base symbol
+
+
+    let symbol;
+
+    if (symbols[this.mode][text]) {
+      if (this.settings.strict && this.mode === 'math' && extraLatin.indexOf(text) >= 0) {
+        this.settings.reportNonstrict("unicodeTextInMathMode", `Latin-1/Unicode text character "${text[0]}" used in ` + `math mode`, nucleus);
+      }
+
+      const group = symbols[this.mode][text].group;
+      const loc = SourceLocation.range(nucleus);
+      let s;
+
+      if (ATOMS.hasOwnProperty(group)) {
+        // $FlowFixMe
+        const family = group;
+        s = {
+          type: "atom",
+          mode: this.mode,
+          family,
+          loc,
+          text
+        };
+      } else {
+        // $FlowFixMe
+        s = {
+          type: group,
+          mode: this.mode,
+          loc,
+          text
+        };
+      }
+
+      symbol = s;
+    } else if (text.charCodeAt(0) >= 0x80) {
+      // no symbol for e.g. ^
+      if (this.settings.strict) {
+        if (!supportedCodepoint(text.charCodeAt(0))) {
+          this.settings.reportNonstrict("unknownSymbol", `Unrecognized Unicode character "${text[0]}"` + ` (${text.charCodeAt(0)})`, nucleus);
+        } else if (this.mode === "math") {
+          this.settings.reportNonstrict("unicodeTextInMathMode", `Unicode text character "${text[0]}" used in math mode`, nucleus);
+        }
+      } // All nonmathematical Unicode characters are rendered as if they
+      // are in text mode (wrapped in \text) because that's what it
+      // takes to render them in LaTeX.  Setting `mode: this.mode` is
+      // another natural choice (the user requested math mode), but
+      // this makes it more difficult for getCharacterMetrics() to
+      // distinguish Unicode characters without metrics and those for
+      // which we want to simulate the letter M.
+
+
+      symbol = {
+        type: "textord",
+        mode: "text",
+        loc: SourceLocation.range(nucleus),
+        text
+      };
+    } else {
+      return null; // EOF, ^, _, {, }, etc.
+    }
+
+    this.consume(); // Transform combining characters into accents
+
+    if (match) {
+      for (let i = 0; i < match[0].length; i++) {
+        const accent = match[0][i];
+
+        if (!unicodeAccents[accent]) {
+          throw new ParseError(`Unknown accent ' ${accent}'`, nucleus);
+        }
+
+        const command = unicodeAccents[accent][this.mode];
+
+        if (!command) {
+          throw new ParseError(`Accent ${accent} unsupported in ${this.mode} mode`, nucleus);
+        }
+
+        symbol = {
+          type: "accent",
+          mode: this.mode,
+          loc: SourceLocation.range(nucleus),
+          label: command,
+          isStretchy: false,
+          isShifty: true,
+          base: symbol
+        };
+      }
+    }
+
+    return symbol;
+  }
+
+}
+Parser.endOfExpression = ["}", "\\endgroup", "\\end", "\\right", "&"];
+Parser.endOfGroup = {
+  "[": "]",
+  "{": "}",
+  "\\begingroup": "\\endgroup"
+  /**
+   * Parses an "expression", which is a list of atoms.
+   *
+   * `breakOnInfix`: Should the parsing stop when we hit infix nodes? This
+   *                 happens when functions have higher precendence han infix
+   *                 nodes in implicit parses.
+   *
+   * `breakOnTokenText`: The text of the token that the expression should end
+   *                     with, or `null` if something else should end the
+   *                     expression.
+   */
+
+};
+Parser.SUPSUB_GREEDINESS = 1;
+
+/**
+ * Provides a single function for parsing an expression using a Parser
+ * TODO(emily): Remove this
+ */
+
+/**
+ * Parses an expression using a Parser, then returns the parsed result.
+ */
+const parseTree = function parseTree(toParse, settings) {
+  if (!(typeof toParse === 'string' || toParse instanceof String)) {
+    throw new TypeError('KaTeX can only parse string typed expression');
+  }
+
+  const parser = new Parser(toParse, settings); // Blank out any \df@tag to avoid spurious "Duplicate \tag" errors
+
+  delete parser.gullet.macros.current["\\df@tag"];
+  let tree = parser.parse(); // If the input used \tag, it will set the \df@tag macro to the tag.
+  // In this case, we separately parse the tag and wrap the tree.
+
+  if (parser.gullet.macros.get("\\df@tag")) {
+    if (!settings.displayMode) {
+      throw new ParseError("\\tag works only in display equations");
+    }
+
+    parser.gullet.feed("\\df@tag");
+    tree = [{
+      type: "tag",
+      mode: "text",
+      body: tree,
+      tag: parser.parse()
+    }];
+  }
+
+  return tree;
+};
+
+/* eslint no-console:0 */
+
+/**
+ * Parse and build an expression, and place that expression in the DOM node
+ * given.
+ */
+let render = function render(expression, baseNode, options) {
+  baseNode.textContent = "";
+  const node = renderToDomTree(expression, options).toNode();
+  baseNode.appendChild(node);
+}; // KaTeX's styles don't work properly in quirks mode. Print out an error, and
+// disable rendering.
+
+
+if (typeof document !== "undefined") {
+  if (document.compatMode !== "CSS1Compat") {
+    typeof console !== "undefined" && console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your " + "website has a suitable doctype.");
+
+    render = function render() {
+      throw new ParseError("KaTeX doesn't work in quirks mode.");
+    };
+  }
+}
+/**
+ * Parse and build an expression, and return the markup for that.
+ */
+
+
+const renderToString = function renderToString(expression, options) {
+  const markup = renderToDomTree(expression, options).toMarkup();
+  return markup;
+};
+/**
+ * Parse an expression and return the parse tree.
+ */
+
+
+const generateParseTree = function generateParseTree(expression, options) {
+  const settings = new Settings(options);
+  return parseTree(expression, settings);
+};
+/**
+ * If the given error is a KaTeX ParseError and options.throwOnError is false,
+ * renders the invalid LaTeX as a span with hover title giving the KaTeX
+ * error message.  Otherwise, simply throws the error.
+ */
+
+
+const renderError = function renderError(error, expression, options) {
+  if (options.throwOnError || !(error instanceof ParseError)) {
+    throw error;
+  }
+
+  const node = buildCommon.makeSpan(["katex-error"], [new SymbolNode(expression)]);
+  node.setAttribute("title", error.toString());
+  node.setAttribute("style", `color:${options.errorColor}`);
+  return node;
+};
+/**
+ * Generates and returns the katex build tree. This is used for advanced
+ * use cases (like rendering to custom output).
+ */
+
+
+const renderToDomTree = function renderToDomTree(expression, options) {
+  const settings = new Settings(options);
+
+  try {
+    const tree = parseTree(expression, settings);
+    return buildTree(tree, expression, settings);
+  } catch (error) {
+    return renderError(error, expression, settings);
+  }
+};
+/**
+ * Generates and returns the katex build tree, with just HTML (no MathML).
+ * This is used for advanced use cases (like rendering to custom output).
+ */
+
+
+const renderToHTMLTree = function renderToHTMLTree(expression, options) {
+  const settings = new Settings(options);
+
+  try {
+    const tree = parseTree(expression, settings);
+    return buildHTMLTree(tree, expression, settings);
+  } catch (error) {
+    return renderError(error, expression, settings);
+  }
+};
+
+var katex = {
+  /**
+   * Current KaTeX version
+   */
+  version: "0.11.1",
+
+  /**
+   * Renders the given LaTeX into an HTML+MathML combination, and adds
+   * it as a child to the specified DOM node.
+   */
+  render,
+
+  /**
+   * Renders the given LaTeX into an HTML+MathML combination string,
+   * for sending to the client.
+   */
+  renderToString,
+
+  /**
+   * KaTeX error, usually during parsing.
+   */
+  ParseError,
+
+  /**
+   * Parses the given LaTeX into KaTeX's internal parse tree structure,
+   * without rendering to HTML or MathML.
+   *
+   * NOTE: This method is not currently recommended for public use.
+   * The internal tree representation is unstable and is very likely
+   * to change. Use at your own risk.
+   */
+  __parse: generateParseTree,
+
+  /**
+   * Renders the given LaTeX into an HTML+MathML internal DOM tree
+   * representation, without flattening that representation to a string.
+   *
+   * NOTE: This method is not currently recommended for public use.
+   * The internal tree representation is unstable and is very likely
+   * to change. Use at your own risk.
+   */
+  __renderToDomTree: renderToDomTree,
+
+  /**
+   * Renders the given LaTeX into an HTML internal DOM tree representation,
+   * without MathML and without flattening that representation to a string.
+   *
+   * NOTE: This method is not currently recommended for public use.
+   * The internal tree representation is unstable and is very likely
+   * to change. Use at your own risk.
+   */
+  __renderToHTMLTree: renderToHTMLTree,
+
+  /**
+   * extends internal font metrics object with a new object
+   * each key in the new object represents a font name
+  */
+  __setFontMetrics: setFontMetrics,
+
+  /**
+   * adds a new symbol to builtin symbols table
+   */
+  __defineSymbol: defineSymbol,
+
+  /**
+   * adds a new macro to builtin macro list
+   */
+  __defineMacro: defineMacro,
+
+  /**
+   * Expose the dom tree node types, which can be useful for type checking nodes.
+   *
+   * NOTE: This method is not currently recommended for public use.
+   * The internal tree representation is unstable and is very likely
+   * to change. Use at your own risk.
+   */
+  __domTree: {
+    Span,
+    Anchor,
+    SymbolNode,
+    SvgNode,
+    PathNode,
+    LineNode
+  }
+};
+
+export default katex;
diff --git a/node_modules/mavon-editor/dist/markdown/github-markdown.min.css b/node_modules/mavon-editor/dist/markdown/github-markdown.min.css
new file mode 100644
index 0000000..2d83c36
--- /dev/null
+++ b/node_modules/mavon-editor/dist/markdown/github-markdown.min.css
@@ -0,0 +1,2 @@
+@font-face{font-family:octicons-link;src:url(data:font/woff;charset=utf-8;base64,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) format('woff')}.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;line-height:1.5;color:#24292e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body .pl-c{color:#6a737d}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:#005cc5}.markdown-body .pl-e,.markdown-body .pl-en{color:#6f42c1}.markdown-body .pl-s .pl-s1,.markdown-body .pl-smi{color:#24292e}.markdown-body .pl-ent{color:#22863a}.markdown-body .pl-k{color:#d73a49}.markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre{color:#032f62}.markdown-body .pl-smw,.markdown-body .pl-v{color:#e36209}.markdown-body .pl-bu{color:#b31d28}.markdown-body .pl-ii{color:#fafbfc;background-color:#b31d28}.markdown-body .pl-c2{color:#fafbfc;background-color:#d73a49}.markdown-body .pl-c2::before{content:"^M"}.markdown-body .pl-sr .pl-cce{font-weight:700;color:#22863a}.markdown-body .pl-ml{color:#735c0f}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{font-weight:700;color:#005cc5}.markdown-body .pl-mi{font-style:italic;color:#24292e}.markdown-body .pl-mb{font-weight:700;color:#24292e}.markdown-body .pl-md{color:#b31d28;background-color:#ffeef0}.markdown-body .pl-mi1{color:#22863a;background-color:#f0fff4}.markdown-body .pl-mc{color:#e36209;background-color:#ffebda}.markdown-body .pl-mi2{color:#f6f8fa;background-color:#005cc5}.markdown-body .pl-mdr{font-weight:700;color:#6f42c1}.markdown-body .pl-ba{color:#586069}.markdown-body .pl-sg{color:#959da5}.markdown-body .pl-corl{text-decoration:underline;color:#032f62}.markdown-body .octicon{display:inline-block;vertical-align:text-top;fill:currentColor}.markdown-body a{background-color:transparent;-webkit-text-decoration-skip:objects}.markdown-body a:active,.markdown-body a:hover{outline-width:0}.markdown-body strong{font-weight:inherit}.markdown-body strong{font-weight:bolder}.markdown-body h1{font-size:2em;margin:.67em 0}.markdown-body img{border-style:none}.markdown-body svg:not(:root){overflow:hidden}.markdown-body code,.markdown-body kbd,.markdown-body pre{font-family:monospace,monospace;font-size:1em}.markdown-body hr{box-sizing:content-box;height:0;overflow:visible}.markdown-body input{font:inherit;margin:0}.markdown-body input{overflow:visible}.markdown-body [type=checkbox]{box-sizing:border-box;padding:0}.markdown-body *{box-sizing:border-box}.markdown-body input{font-family:inherit;font-size:inherit;line-height:inherit}.markdown-body a{color:#0366d6;text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:600}.markdown-body hr{height:0;margin:15px 0;overflow:hidden;background:0 0;border:0;border-bottom:1px solid #dfe2e5}.markdown-body hr::before{display:table;content:""}.markdown-body hr::after{display:table;clear:both;content:""}.markdown-body table{border-spacing:0;border-collapse:collapse}.markdown-body td,.markdown-body th{padding:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:0;margin-bottom:0}.markdown-body h1{font-size:32px;font-weight:600}.markdown-body h2{font-size:24px;font-weight:600}.markdown-body h3{font-size:20px;font-weight:600}.markdown-body h4{font-size:16px;font-weight:600}.markdown-body h5{font-size:14px;font-weight:600}.markdown-body h6{font-size:12px;font-weight:600}.markdown-body p{margin-top:0;margin-bottom:10px}.markdown-body blockquote{margin:0}.markdown-body ol,.markdown-body ul{padding-left:0;margin-top:0;margin-bottom:0}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code{font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:12px}.markdown-body pre{margin-top:0;margin-bottom:0;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:12px}.markdown-body .octicon{vertical-align:text-bottom}.markdown-body .pl-0{padding-left:0!important}.markdown-body .pl-1{padding-left:4px!important}.markdown-body .pl-2{padding-left:8px!important}.markdown-body .pl-3{padding-left:16px!important}.markdown-body .pl-4{padding-left:24px!important}.markdown-body .pl-5{padding-left:32px!important}.markdown-body .pl-6{padding-left:40px!important}.markdown-body::before{display:table;content:""}.markdown-body::after{display:table;clear:both;content:""}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .anchor{float:left;padding-right:4px;margin-left:-20px;line-height:1}.markdown-body .anchor:focus{outline:0}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body hr{height:.25em;padding:0;margin:24px 0;background-color:#e1e4e8;border:0}.markdown-body blockquote{padding:0 1em;color:#6a737d;border-left:.25em solid #dfe2e5}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body kbd{display:inline-block;padding:3px 5px;font-size:11px;line-height:10px;color:#444d56;vertical-align:middle;background-color:#fafbfc;border:solid 1px #c6cbd1;border-bottom-color:#959da5;border-radius:3px;box-shadow:inset 0 -1px 0 #959da5}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#1b1f23;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1{padding-bottom:.3em;font-size:2em;border-bottom:1px solid #eaecef}.markdown-body h2{padding-bottom:.3em;font-size:1.5em;border-bottom:1px solid #eaecef}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body h6{font-size:.85em;color:#6a737d}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:600}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}.markdown-body table{display:block;width:100%;overflow:auto}.markdown-body table th{font-weight:600}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #dfe2e5}.markdown-body table tr{background-color:#fff;border-top:1px solid #c6cbd1}.markdown-body table tr:nth-child(2n){background-color:#f6f8fa}.markdown-body img{max-width:100%;box-sizing:content-box;background-color:#fff}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body code{padding:0;padding-top:.2em;padding-bottom:.2em;margin:0;font-size:85%;background-color:rgba(27,31,35,.05);border-radius:3px}.markdown-body code::after,.markdown-body code::before{letter-spacing:-.2em;content:"\00a0"}.markdown-body pre{word-wrap:normal}.markdown-body pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:0 0;border:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f6f8fa;border-radius:3px}.markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.markdown-body pre code::after,.markdown-body pre code::before{content:normal}.markdown-body .full-commit .btn-outline:not(:disabled):hover{color:#005cc5;border-color:#005cc5}.markdown-body kbd{display:inline-block;padding:3px 5px;font:11px SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;line-height:10px;color:#444d56;vertical-align:middle;background-color:#fafbfc;border:solid 1px #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px 0 #c6cbd1}.markdown-body :checked+.radio-label{position:relative;z-index:1;border-color:#0366d6}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item+.task-list-item{margin-top:3px}.markdown-body .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}.markdown-body hr{border-bottom-color:#eee}
+/*# sourceMappingURL=github-markdown.min.css.map */
\ No newline at end of file
diff --git a/node_modules/mavon-editor/dist/mavon-editor.js b/node_modules/mavon-editor/dist/mavon-editor.js
new file mode 100644
index 0000000..5f1854d
--- /dev/null
+++ b/node_modules/mavon-editor/dist/mavon-editor.js
@@ -0,0 +1,22 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("vue")):"function"==typeof define&&define.amd?define("MavonEditor",["vue"],t):"object"==typeof exports?exports.MavonEditor=t(require("vue")):e.MavonEditor=t(e.Vue)}(window,(function(__WEBPACK_EXTERNAL_MODULE__0__){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=79)}([function(e,t){e.exports=__WEBPACK_EXTERNAL_MODULE__0__},function(e,t,r){"use strict";var n=Object.prototype.hasOwnProperty;function o(e,t){return n.call(e,t)}function i(e){return!(e>=55296&&e<=57343)&&(!(e>=64976&&e<=65007)&&(65535!=(65535&e)&&65534!=(65535&e)&&(!(e>=0&&e<=8)&&(11!==e&&(!(e>=14&&e<=31)&&(!(e>=127&&e<=159)&&!(e>1114111)))))))}function a(e){if(e>65535){var t=55296+((e-=65536)>>10),r=56320+(1023&e);return String.fromCharCode(t,r)}return String.fromCharCode(e)}var s=/\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,l=new RegExp(s.source+"|"+/&([a-z#][a-z0-9]{1,31});/gi.source,"gi"),c=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,u=r(62);var p=/[&<>"]/,d=/[&<>"]/g,h={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"};function f(e){return h[e]}var _=/[.?*+^$[\]\\(){}|-]/g;var m=r(40);t.lib={},t.lib.mdurl=r(63),t.lib.ucmicro=r(145),t.assign=function(e){var t=Array.prototype.slice.call(arguments,1);return t.forEach((function(t){if(t){if("object"!=typeof t)throw new TypeError(t+"must be object");Object.keys(t).forEach((function(r){e[r]=t[r]}))}})),e},t.isString=function(e){return"[object String]"===function(e){return Object.prototype.toString.call(e)}(e)},t.has=o,t.unescapeMd=function(e){return e.indexOf("\\")<0?e:e.replace(s,"$1")},t.unescapeAll=function(e){return e.indexOf("\\")<0&&e.indexOf("&")<0?e:e.replace(l,(function(e,t,r){return t||function(e,t){var r=0;return o(u,t)?u[t]:35===t.charCodeAt(0)&&c.test(t)&&i(r="x"===t[1].toLowerCase()?parseInt(t.slice(2),16):parseInt(t.slice(1),10))?a(r):e}(e,r)}))},t.isValidEntityCode=i,t.fromCodePoint=a,t.escapeHtml=function(e){return p.test(e)?e.replace(d,f):e},t.arrayReplaceAt=function(e,t,r){return[].concat(e.slice(0,t),r,e.slice(t+1))},t.isSpace=function(e){switch(e){case 9:case 32:return!0}return!1},t.isWhiteSpace=function(e){if(e>=8192&&e<=8202)return!0;switch(e){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1},t.isMdAsciiPunct=function(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}},t.isPunctChar=function(e){return m.test(e)},t.escapeRE=function(e){return e.replace(_,"\\$&")},t.normalizeReference=function(e){return e=e.trim().replace(/\s+/g," "),"Ṿ"==="ẞ".toLowerCase()&&(e=e.replace(/ẞ/g,"ß")),e.toLowerCase().toUpperCase()}},function(e,t){var r=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=(e,t)=>{const r=e.__vccOpts||e;for(const[e,n]of t)r[e]=n;return r}},function(e,t){var r={}.hasOwnProperty;e.exports=function(e,t){return r.call(e,t)}},function(e,t,r){var n=r(6),o=r(16);e.exports=r(7)?function(e,t,r){return n.f(e,t,o(1,r))}:function(e,t,r){return e[t]=r,e}},function(e,t,r){var n=r(14),o=r(47),i=r(28),a=Object.defineProperty;t.f=r(7)?Object.defineProperty:function(e,t,r){if(n(e),t=i(t,!0),n(r),o)try{return a(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},function(e,t,r){e.exports=!r(15)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(e,t,r){var n=r(89),o=r(27);e.exports=function(e){return n(o(e))}},function(e,t,r){var n=r(32)("wks"),o=r(17),i=r(2).Symbol,a="function"==typeof i;(e.exports=function(e){return n[e]||(n[e]=a&&i[e]||(a?i:o)("Symbol."+e))}).store=n},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _typeof2=__webpack_require__(25),_typeof3=_interopRequireDefault(_typeof2),_keydownListen=__webpack_require__(110),_langHljsCss=__webpack_require__(111),_langHljsCss2=_interopRequireDefault(_langHljsCss),_langHljs=__webpack_require__(56),_langHljs2=_interopRequireDefault(_langHljs),_extraFunction=__webpack_require__(57),_util=__webpack_require__(112),_toolbar_left_click2=__webpack_require__(113),_toolbar_right_click2=__webpack_require__(114),_config=__webpack_require__(115),_markdown=__webpack_require__(132),_markdown2=_interopRequireDefault(_markdown),_mdToolbarLeft=__webpack_require__(70),_mdToolbarLeft2=_interopRequireDefault(_mdToolbarLeft),_mdToolbarRight=__webpack_require__(72),_mdToolbarRight2=_interopRequireDefault(_mdToolbarRight),_autoTextarea=__webpack_require__(216),_autoTextarea2=_interopRequireDefault(_autoTextarea);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}__webpack_require__(222),__webpack_require__(231),exports.default={emits:["imgDel","change","fullScreen","readModel","previewToggle","subfieldToggle","htmlCode","helpToggle","save","navigationToggle","update:modelValue"],mixins:[_markdown2.default],props:{scrollStyle:{type:Boolean,default:!0},boxShadow:{type:Boolean,default:!0},transition:{type:Boolean,default:!0},autofocus:{type:Boolean,default:!0},fontSize:{type:String,default:"14px"},toolbarsBackground:{type:String,default:"#ffffff"},editorBackground:{type:String,default:"#ffffff"},previewBackground:{type:String,default:"#fbfbfb"},boxShadowStyle:{type:String,default:"0 2px 12px 0 rgba(0, 0, 0, 0.1)"},help:{type:String,default:null},modelValue:{type:String,default:""},language:{type:String,default:"zh-CN"},subfield:{type:Boolean,default:!0},navigation:{type:Boolean,default:!1},defaultOpen:{type:String,default:null},editable:{type:Boolean,default:!0},toolbarsFlag:{type:Boolean,default:!0},toolbars:{type:Object,default:function(){return _config.CONFIG.toolbars}},html:{type:Boolean,default:!0},xssOptions:{type:[Object,Boolean],default:function(){return{}}},codeStyle:{type:String,default:function(){return"github"}},placeholder:{type:String,default:null},ishljs:{type:Boolean,default:!0},externalLink:{type:[Object,Boolean],default:!0},imageFilter:{type:Function,default:null},imageClick:{type:Function,default:null},tabSize:{type:Number,default:0},shortCut:{type:Boolean,default:!0}},data:function(){var e,t,r=this;return{s_right_click_menu_show:!1,right_click_menu_top:0,right_click_menu_left:0,s_subfield:r.subfield,s_autofocus:!0,s_navigation:r.navigation,s_scrollStyle:r.scrollStyle,d_value:"",d_render:"",s_preview_switch:(t=r.defaultOpen,t||(t=r.subfield?"preview":"edit"),"preview"===t),s_fullScreen:!1,s_help:!1,s_html_code:!1,d_help:null,d_words:null,edit_scroll_height:-1,s_readmodel:!1,s_table_enter:!1,d_history:(e=[],e.push(r.modelValue),e),d_history_index:0,currentTimeout:"",d_image_file:[],d_preview_imgsrc:null,s_external_link:{markdown_css:function(){return"https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/2.9.0/github-markdown.min.css"},hljs_js:function(){return"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.3.1/highlight.min.js"},hljs_lang:function(e){return"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.3.1/languages/"+e+".min.js"},hljs_css:function(e){return _langHljsCss2.default[e]?"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.3.1/styles/"+e+".min.css":""},katex_js:function(){return"https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.js"},katex_css:function(){return"https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.css"}},p_external_link:{},textarea_selectionEnd:0,textarea_selectionEnds:[0],_xssHandler:null}},created:function(){var e=this;this.initLanguage(),this.initExternalFuc(),this.$nextTick((function(){e.editableTextarea()}))},mounted:function(){var e=this;this.$el.addEventListener("paste",(function(t){e.$paste(t)})),this.$el.addEventListener("drop",(function(t){e.$drag(t)})),(0,_keydownListen.keydownListen)(this),(0,_extraFunction.ImagePreviewListener)(this),this.autofocus&&this.getTextareaDom().focus(),(0,_extraFunction.fullscreenchange)(this),this.d_value=this.modelValue||"",document.body.appendChild(this.$refs.help),this.loadExternalLink("markdown_css","css"),this.loadExternalLink("katex_css","css"),this.loadExternalLink("katex_js","js",(function(){e.iRender(!0)})),this.loadExternalLink("hljs_js","js",(function(){e.iRender(!0)})),"object"===(0,_typeof3.default)(e.externalLink)&&"function"==typeof e.externalLink.markdown_css||e.codeStyleChange(e.codeStyle,!0)},beforeUnmount:function(){document.body.removeChild(this.$refs.help)},getMarkdownIt:function(){var e=this.mixins[0].data().markdownIt;return e||(e=(0,_markdown.initMarkdown)()),e},methods:{loadExternalLink:function(e,t,r){if("function"==typeof this.p_external_link[e]){var n={css:_extraFunction.loadLink,js:_extraFunction.loadScript};n.hasOwnProperty(t)&&n[t](this.p_external_link[e](),r)}else!1!==this.p_external_link[e]&&console.error("external_link."+e,"is not a function, if you want to disabled this error log, set external_link."+e,"to function or false")},initExternalFuc:function(){for(var e=["markdown_css","hljs_js","hljs_css","hljs_lang","katex_js","katex_css"],t=(0,_typeof3.default)(this.externalLink),r="object"===t,n="boolean"===t,o=0;o<e.length;o++)n&&!this.externalLink||r&&!1===this.externalLink[e[o]]?this.p_external_link[e[o]]=!1:r&&"function"==typeof this.externalLink[e[o]]?this.p_external_link[e[o]]=this.externalLink[e[o]]:this.p_external_link[e[o]]=this.s_external_link[e[o]]},textAreaFocus:function(){this.$refs.vNoteTextarea.$refs.vTextarea.focus()},$drag:function(e){var t=e.dataTransfer;if(t){var r=t.files;r.length>0&&(e.preventDefault(),this.$refs.toolbar_left.$imgFilesAdd(r))}},$paste:function(e){var t=e.clipboardData;if(t){var r=t.items;if(!r)return;for(var n=t.types||[],o=null,i=0;i<n.length;i++)if("Files"===n[i]){o=r[i];break}if(o&&"file"===o.kind){(0,_util.stopEvent)(e);var a=o.getAsFile();this.$refs.toolbar_left.$imgFilesAdd([a])}}},$imgTouch:function(e){},$imgDel:function(e){this.markdownIt.image_del(e[1]);var t=e[0],r=new RegExp("\\!\\["+e[1]._name+"\\]\\("+t+"\\)","g");this.d_value=this.d_value.replace(r,""),this.iRender(),this.$emit("imgDel",e)},$imgAdd:function(e,t,r){void 0===r&&(r=!0);var n=this;if(null==this.__rFilter&&(this.__rFilter=/^image\//i),this.__oFReader=new FileReader,this.__oFReader.onload=function(o){n.markdownIt.image_add(e,o.target.result),t.miniurl=o.target.result,!0===r&&(t._name=t.name.replace(/[\[\]\(\)\+\{\}&\|\\\*^%$#@\-]/g,""),n.insertText(n.getTextareaDom(),{prefix:"!["+t._name+"]("+e+")",subfix:"",str:""}),n.$nextTick((function(){n.$emit("imgAdd",e,t)})))},t){var o=t;this.__rFilter.test(o.type)&&this.__oFReader.readAsDataURL(o)}},$imgUpdateByUrl:function(e,t){var r=this;this.markdownIt.image_add(e,t),this.$nextTick((function(){r.d_render=this.markdownIt.render(this.d_value)}))},$imgAddByUrl:function(e,t){return!!this.$refs.toolbar_left.$imgAddByUrl(e,t)&&(this.$imgUpdateByUrl(e,t),!0)},$img2Url:function $img2Url(fileIndex,url){var reg_str="/(!\\[[^\\[]*?\\](?=\\())\\(\\s*("+fileIndex+")\\s*\\)/g",reg=eval(reg_str);this.d_value=this.d_value.replace(reg,"$1("+url+")"),this.$refs.toolbar_left.$changeUrl(fileIndex,url),this.iRender()},$imglst2Url:function(e){if(e instanceof Array)for(var t=0;t<e.length;t++)this.$img2Url(e[t][0],e[t][1])},toolbar_left_click:function(e){(0,_toolbar_left_click2.toolbar_left_click)(e,this)},toolbar_left_addlink:function(e,t,r){(0,_toolbar_left_click2.toolbar_left_addlink)(e,t,r,this)},toolbar_right_click:function(e){(0,_toolbar_right_click2.toolbar_right_click)(e,this)},getNavigation:function(e,t){return(0,_extraFunction.getNavigation)(e,t)},change:function(e,t){this.$emit("change",e,t)},fullscreen:function(e,t){this.$emit("fullScreen",e,t)},readmodel:function(e,t){this.$emit("readModel",e,t)},previewtoggle:function(e,t){this.$emit("previewToggle",e,t)},subfieldtoggle:function(e,t){this.$emit("subfieldToggle",e,t)},htmlcode:function(e,t){this.$emit("htmlCode",e,t)},helptoggle:function(e,t){this.$emit("helpToggle",e,t)},save:function(e,t){this.$emit("save",e,t)},navigationtoggle:function(e,t){this.$emit("navigationToggle",e,t)},$toolbar_right_read_change_status:function(){this.s_readmodel=!this.s_readmodel,this.readmodel&&this.readmodel(this.s_readmodel,this.d_value),this.s_readmodel&&this.toolbars.navigation&&this.getNavigation(this,!0)},$v_edit_scroll:function(e){(0,_extraFunction.scrollLink)(e,this)},getTextareaDom:function(){return this.$refs.vNoteTextarea.$refs.vTextarea},insertText:function(e,t){var r=t.prefix,n=t.subfix,o=t.str,i=t.type;(0,_extraFunction.insertTextAtCaret)(e,{prefix:r,subfix:n,str:o,type:i},this)},insertTab:function(){(0,_extraFunction.insertTab)(this,this.tabSize)},insertOl:function(){(0,_extraFunction.insertOl)(this)},removeLine:function(){(0,_extraFunction.removeLine)(this)},insertUl:function(){(0,_extraFunction.insertUl)(this)},unInsertTab:function(){(0,_extraFunction.unInsertTab)(this,this.tabSize)},insertCodeBlock:function(){(0,_extraFunction.insertCodeBlock)(this)},insertEnter:function(e){(0,_extraFunction.insertEnter)(this,e)},saveHistory:function(){this.d_history.splice(this.d_history_index+1,this.d_history.length),this.d_history.push(this.d_value),this.textarea_selectionEnds.splice(this.d_history_index+1,this.textarea_selectionEnds.length),this.textarea_selectionEnds.push(this.textarea_selectionEnd),this.d_history_index=this.d_history.length-1},saveSelectionEndsHistory:function(){var e=this.$refs.vNoteTextarea&&this.$refs.vNoteTextarea.$el.querySelector("textarea");this.textarea_selectionEnd=e?e.selectionEnd:this.textarea_selectionEnd},initLanguage:function(){var e=_config.CONFIG.langList.indexOf(this.language)>=0?this.language:"zh-CN",t=this;t.$render(_config.CONFIG["help_"+e],(function(e){t.d_help=e})),this.d_words=_config.CONFIG["words_"+e]},editableTextarea:function(){var e=this.$refs.vNoteTextarea.$refs.vTextarea;this.editable?e.removeAttribute("disabled"):e.setAttribute("disabled","disabled")},codeStyleChange:function(e,t){if(t=t||!1,"function"==typeof this.p_external_link.hljs_css){var r=this.p_external_link.hljs_css(e);0===r.length&&t&&(console.warn("hljs color scheme",e,"do not exist, loading default github"),r=this.p_external_link.hljs_css("github")),r.length>0?(0,_extraFunction.loadLink)(r,null,"md-code-style"):console.warn("hljs color scheme",e,"do not exist, hljs color scheme will not change")}else!1!==this.p_external_link.hljs_css&&console.error("external_link.hljs_css is not a function, if you want to disabled this error log, set external_link.hljs_css to function or false")},iRender:function(e){var t=this;this.$render(t.d_value,(function(r){t.d_render=r,e||t.change&&t.change(t.d_value,t.d_render),t.s_navigation&&(0,_extraFunction.getNavigation)(t,!1),t.$emit("update:modelValue",t.d_value),t.d_value!==t.d_history[t.d_history_index]&&(window.clearTimeout(t.currentTimeout),t.currentTimeout=setTimeout((function(){t.saveHistory()}),500))}))},$emptyHistory:function(){this.d_history=[this.d_value],this.d_history_index=0}},watch:{d_value:function(e,t){this.saveSelectionEndsHistory(),this.iRender()},modelValue:function(e,t){e!==this.d_value&&(this.d_value=e)},subfield:function(e,t){this.s_subfield=e},d_history_index:function(){this.d_history_index>20&&(this.d_history.shift(),this.d_history_index=this.d_history_index-1),this.d_value=this.d_history[this.d_history_index]},language:function(e){this.initLanguage()},editable:function(){this.editableTextarea()},defaultOpen:function(e){var t=e;return t||(t=this.subfield?"preview":"edit"),this.s_preview_switch="preview"===t,this.s_preview_switch},codeStyle:function(e){this.codeStyleChange(e)}},components:{"v-autoTextarea":_autoTextarea2.default,"v-md-toolbar-left":_mdToolbarLeft2.default,"v-md-toolbar-right":_mdToolbarRight2.default}}},function(e,t){e.exports=!0},function(e,t){var r=e.exports={version:"2.6.12"};"number"==typeof __e&&(__e=r)},function(e,t,r){var n=r(10);e.exports=function(e){if(!n(e))throw TypeError(e+" is not an object!");return e}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t){var r=0,n=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++r+n).toString(36))}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={emits:["toolbar_left_addlink","imgTouch","imgAdd","imgDel","imgAdd","imgAdd","toolbar_left_click","toolbar_left_click"],name:"s-md-toolbar-left",props:{editable:{type:Boolean,default:!0},transition:{type:Boolean,default:!0},toolbars:{type:Object,required:!0},d_words:{type:Object,required:!0},image_filter:{type:Function,default:null}},data:function(){return{img_file:[[0,null]],img_timer:null,header_timer:null,s_img_dropdown_open:!1,s_header_dropdown_open:!1,s_img_link_open:!1,trigger:null,num:0,link_text:"",link_addr:"",link_type:"link"}},methods:{$imgLinkAdd:function(){this.$emit("toolbar_left_addlink",this.link_type,this.link_text,this.link_addr),this.s_img_link_open=!1},$toggle_imgLinkAdd:function(e){var t=this;this.link_type=e,this.link_text=this.link_addr="",this.s_img_link_open=!0,this.$nextTick((function(){t.$refs.linkTextInput.focus()})),this.s_img_dropdown_open=!1},$imgFileListClick:function(e){this.$emit("imgTouch",this.img_file[e])},$changeUrl:function(e,t){this.img_file[e][0]=t},$imgFileAdd:function(e){this.img_file.push([++this.num,e]),this.$emit("imgAdd",this.num,e),this.s_img_dropdown_open=!1},$imgFilesAdd:function(e){for(var t="function"==typeof this.image_filter,r=0;r<e.length;r++)(t&&!0===this.image_filter(e[r])||!t&&e[r].type.match(/^image\//i))&&this.$imgFileAdd(e[r])},$imgAdd:function(e){this.$imgFilesAdd(e.target.files),e.target.value=""},$imgDel:function(e){this.$emit("imgDel",this.img_file[e]),this.img_file.splice(e,1),this.num--,this.s_img_dropdown_open=!1},isEqualName:function(e,t){return!(!this.img_file[t][1]||this.img_file[t][1].name!==e&&this.img_file[t][1]._name!==e)},$imgDelByFilename:function(e){for(var t=0;this.img_file.length>t;){if(this.img_file[t][1]===e||this.isEqualName(e,t))return this.$imgDel(t),!0;t+=1}return!1},$imgAddByFilename:function(e,t){for(var r=0;r<this.img_file.length;r++)if(this.img_file[r][0]===e)return!1;return this.img_file[0][0]=e,this.img_file[0][1]=t,this.img_file[0][2]=e,this.img_file.unshift(["./"+this.num,null]),this.$emit("imgAdd",this.img_file[1][0],t,!1),!0},$imgAddByUrl:function(e,t){for(var r=0;r<this.img_file.length;r++)if(this.img_file[r][0]===e)return!1;return this.img_file[0][0]=e,this.img_file[0][1]=t,this.img_file.unshift(["./"+this.num,null]),!0},$imgUpdateByFilename:function(e,t){for(var r=0;r<this.img_file.length;r++)if(this.img_file[r][0]===e||this.isEqualName(e,r))return this.img_file[r][1]=t,this.$emit("imgAdd",e,t,!1),!0;return!1},$mouseenter_img_dropdown:function(){this.editable&&(clearTimeout(this.img_timer),this.s_img_dropdown_open=!0)},$mouseleave_img_dropdown:function(){var e=this;this.img_timer=setTimeout((function(){e.s_img_dropdown_open=!1}),200)},$mouseenter_header_dropdown:function(){this.editable&&(clearTimeout(this.header_timer),this.s_header_dropdown_open=!0)},$mouseleave_header_dropdown:function(){var e=this;this.header_timer=setTimeout((function(){e.s_header_dropdown_open=!1}),200)},$clicks:function(e){this.editable&&this.$emit("toolbar_left_click",e)},$click_header:function(e){this.$emit("toolbar_left_click",e),this.s_header_dropdown_open=!1},handleClose:function(e){this.s_img_dropdown_open=!1}},watch:{s_img_link_open:function(e){this.$parent.$el.style.zIndex=e?1501:1500}}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={emits:["toolbar_right_click"],name:"s-md-toolbar-right",props:{s_subfield:{type:Boolean,required:!0},toolbars:{type:Object,required:!0},s_preview_switch:{type:Boolean,required:!0},s_fullScreen:{type:Boolean,required:!0},s_html_code:{type:Boolean,required:!0},s_navigation:{type:Boolean,required:!0},d_words:{type:Object,required:!0}},methods:{$clicks:function(e){this.$emit("toolbar_right_click",e)}}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={emits:["update:modelValue"],data:function(){var e=this;return{temp_value:e.modelValue,s_autofocus:function(){if(e.autofocus)return"autofocus"}()}},created:function(){},props:{fullHeight:{type:Boolean,default:!1},autofocus:{type:Boolean,default:!1},modelValue:{type:String,default:""},placeholder:{type:String,default:""},border:{type:Boolean,default:!1},resize:{type:Boolean,default:!1},onchange:{type:Function,default:null},fontSize:{type:String,default:"14px"},lineHeight:{type:String,default:"18px"}},methods:{change:function(e){this.onchange&&this.onchange(this.temp_value,e)}},watch:{modelValue:function(e,t){this.temp_value=e},temp_value:function(e,t){this.$emit("update:modelValue",e)}}}},function(e,t,r){"use strict";r.r(t);var n=r(11),o=r.n(n);for(var i in r.d(t,"default",(function(){return o.a})),n)["default"].indexOf(i)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(i)},function(e,t,r){"use strict";r.r(t);var n=r(18),o=r.n(n);for(var i in r.d(t,"default",(function(){return o.a})),n)["default"].indexOf(i)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(i)},function(e,t,r){"use strict";r.r(t);var n=r(19),o=r.n(n);for(var i in r.d(t,"default",(function(){return o.a})),n)["default"].indexOf(i)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(i)},function(e,t,r){"use strict";r.r(t);var n=r(20),o=r.n(n);for(var i in r.d(t,"default",(function(){return o.a})),n)["default"].indexOf(i)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(i)},function(e,t,r){"use strict";t.__esModule=!0;var n=a(r(81)),o=a(r(99)),i="function"==typeof o.default&&"symbol"==typeof n.default?function(e){return typeof e}:function(e){return e&&"function"==typeof o.default&&e.constructor===o.default&&e!==o.default.prototype?"symbol":typeof e};function a(e){return e&&e.__esModule?e:{default:e}}t.default="function"==typeof o.default&&"symbol"===i(n.default)?function(e){return void 0===e?"undefined":i(e)}:function(e){return e&&"function"==typeof o.default&&e.constructor===o.default&&e!==o.default.prototype?"symbol":void 0===e?"undefined":i(e)}},function(e,t){var r=Math.ceil,n=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?n:r)(e)}},function(e,t){e.exports=function(e){if(null==e)throw TypeError("Can't call method on  "+e);return e}},function(e,t,r){var n=r(10);e.exports=function(e,t){if(!n(e))return e;var r,o;if(t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;if("function"==typeof(r=e.valueOf)&&!n(o=r.call(e)))return o;if(!t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,t){e.exports={}},function(e,t,r){var n=r(51),o=r(33);e.exports=Object.keys||function(e){return n(e,o)}},function(e,t,r){var n=r(32)("keys"),o=r(17);e.exports=function(e){return n[e]||(n[e]=o(e))}},function(e,t,r){var n=r(13),o=r(2),i=o["__core-js_shared__"]||(o["__core-js_shared__"]={});(e.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})("versions",[]).push({version:n.version,mode:r(12)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,r){var n=r(6).f,o=r(4),i=r(9)("toStringTag");e.exports=function(e,t,r){e&&!o(e=r?e:e.prototype,i)&&n(e,i,{configurable:!0,value:t})}},function(e,t,r){t.f=r(9)},function(e,t,r){var n=r(2),o=r(13),i=r(12),a=r(35),s=r(6).f;e.exports=function(e){var t=o.Symbol||(o.Symbol=i?{}:n.Symbol||{});"_"==e.charAt(0)||e in t||s(t,e,{value:a.f(e)})}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,r){var n=r(59),o=r(135);for(var i in(t=e.exports=function(e,t){return new o(t).process(e)}).FilterCSS=o,n)t[i]=n[i];"undefined"!=typeof window&&(window.filterCSS=e.exports)},function(e,t){e.exports={indexOf:function(e,t){var r,n;if(Array.prototype.indexOf)return e.indexOf(t);for(r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1},forEach:function(e,t,r){var n,o;if(Array.prototype.forEach)return e.forEach(t,r);for(n=0,o=e.length;n<o;n++)t.call(r,e[n],n,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},spaceIndex:function(e){var t=/\s|\n|\t/.exec(e);return t?t.index:-1}}},function(e,t){e.exports=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4E\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/},function(e,t,r){"use strict";function n(){this.__rules__=[],this.__cache__=null}n.prototype.__find__=function(e){for(var t=0;t<this.__rules__.length;t++)if(this.__rules__[t].name===e)return t;return-1},n.prototype.__compile__=function(){var e=this,t=[""];e.__rules__.forEach((function(e){e.enabled&&e.alt.forEach((function(e){t.indexOf(e)<0&&t.push(e)}))})),e.__cache__={},t.forEach((function(t){e.__cache__[t]=[],e.__rules__.forEach((function(r){r.enabled&&(t&&r.alt.indexOf(t)<0||e.__cache__[t].push(r.fn))}))}))},n.prototype.at=function(e,t,r){var n=this.__find__(e),o=r||{};if(-1===n)throw new Error("Parser rule not found: "+e);this.__rules__[n].fn=t,this.__rules__[n].alt=o.alt||[],this.__cache__=null},n.prototype.before=function(e,t,r,n){var o=this.__find__(e),i=n||{};if(-1===o)throw new Error("Parser rule not found: "+e);this.__rules__.splice(o,0,{name:t,enabled:!0,fn:r,alt:i.alt||[]}),this.__cache__=null},n.prototype.after=function(e,t,r,n){var o=this.__find__(e),i=n||{};if(-1===o)throw new Error("Parser rule not found: "+e);this.__rules__.splice(o+1,0,{name:t,enabled:!0,fn:r,alt:i.alt||[]}),this.__cache__=null},n.prototype.push=function(e,t,r){var n=r||{};this.__rules__.push({name:e,enabled:!0,fn:t,alt:n.alt||[]}),this.__cache__=null},n.prototype.enable=function(e,t){Array.isArray(e)||(e=[e]);var r=[];return e.forEach((function(e){var n=this.__find__(e);if(n<0){if(t)return;throw new Error("Rules manager: invalid rule name "+e)}this.__rules__[n].enabled=!0,r.push(e)}),this),this.__cache__=null,r},n.prototype.enableOnly=function(e,t){Array.isArray(e)||(e=[e]),this.__rules__.forEach((function(e){e.enabled=!1})),this.enable(e,t)},n.prototype.disable=function(e,t){Array.isArray(e)||(e=[e]);var r=[];return e.forEach((function(e){var n=this.__find__(e);if(n<0){if(t)return;throw new Error("Rules manager: invalid rule name "+e)}this.__rules__[n].enabled=!1,r.push(e)}),this),this.__cache__=null,r},n.prototype.getRules=function(e){return null===this.__cache__&&this.__compile__(),this.__cache__[e]||[]},e.exports=n},function(e,t,r){"use strict";function n(e,t,r){this.type=e,this.tag=t,this.attrs=null,this.map=null,this.nesting=r,this.level=0,this.children=null,this.content="",this.markup="",this.info="",this.meta=null,this.block=!1,this.hidden=!1}n.prototype.attrIndex=function(e){var t,r,n;if(!this.attrs)return-1;for(r=0,n=(t=this.attrs).length;r<n;r++)if(t[r][0]===e)return r;return-1},n.prototype.attrPush=function(e){this.attrs?this.attrs.push(e):this.attrs=[e]},n.prototype.attrSet=function(e,t){var r=this.attrIndex(e),n=[e,t];r<0?this.attrPush(n):this.attrs[r]=n},n.prototype.attrGet=function(e){var t=this.attrIndex(e),r=null;return t>=0&&(r=this.attrs[t][1]),r},n.prototype.attrJoin=function(e,t){var r=this.attrIndex(e);r<0?this.attrPush([e,t]):this.attrs[r][1]=this.attrs[r][1]+" "+t},e.exports=n},function(e,t,r){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var r=function(e,t){var r=e[1]||"",n=e[3];if(!n)return r;if(t&&"function"==typeof btoa){var o=(a=n,s=btoa(unescape(encodeURIComponent(JSON.stringify(a)))),l="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(s),"/*# ".concat(l," */")),i=n.sources.map((function(e){return"/*# sourceURL=".concat(n.sourceRoot||"").concat(e," */")}));return[r].concat(i).concat([o]).join("\n")}var a,s,l;return[r].join("\n")}(t,e);return t[2]?"@media ".concat(t[2]," {").concat(r,"}"):r})).join("")},t.i=function(e,r,n){"string"==typeof e&&(e=[[null,e,""]]);var o={};if(n)for(var i=0;i<this.length;i++){var a=this[i][0];null!=a&&(o[a]=!0)}for(var s=0;s<e.length;s++){var l=[].concat(e[s]);n&&o[l[0]]||(r&&(l[2]?l[2]="".concat(r," and ").concat(l[2]):l[2]=r),t.push(l))}},t}},function(e,t,r){"use strict";function n(e,t){for(var r=[],n={},o=0;o<t.length;o++){var i=t[o],a=i[0],s={id:e+":"+o,css:i[1],media:i[2],sourceMap:i[3]};n[a]?n[a].parts.push(s):r.push(n[a]={id:a,parts:[s]})}return r}r.r(t),r.d(t,"default",(function(){return h}));var o="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!o)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var i={},a=o&&(document.head||document.getElementsByTagName("head")[0]),s=null,l=0,c=!1,u=function(){},p=null,d="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function h(e,t,r,o){c=r,p=o||{};var a=n(e,t);return f(a),function(t){for(var r=[],o=0;o<a.length;o++){var s=a[o];(l=i[s.id]).refs--,r.push(l)}t?f(a=n(e,t)):a=[];for(o=0;o<r.length;o++){var l;if(0===(l=r[o]).refs){for(var c=0;c<l.parts.length;c++)l.parts[c]();delete i[l.id]}}}}function f(e){for(var t=0;t<e.length;t++){var r=e[t],n=i[r.id];if(n){n.refs++;for(var o=0;o<n.parts.length;o++)n.parts[o](r.parts[o]);for(;o<r.parts.length;o++)n.parts.push(m(r.parts[o]));n.parts.length>r.parts.length&&(n.parts.length=r.parts.length)}else{var a=[];for(o=0;o<r.parts.length;o++)a.push(m(r.parts[o]));i[r.id]={id:r.id,refs:1,parts:a}}}}function _(){var e=document.createElement("style");return e.type="text/css",a.appendChild(e),e}function m(e){var t,r,n=document.querySelector('style[data-vue-ssr-id~="'+e.id+'"]');if(n){if(c)return u;n.parentNode.removeChild(n)}if(d){var o=l++;n=s||(s=_()),t=v.bind(null,n,o,!1),r=v.bind(null,n,o,!0)}else n=_(),t=k.bind(null,n),r=function(){n.parentNode.removeChild(n)};return t(e),function(n){if(n){if(n.css===e.css&&n.media===e.media&&n.sourceMap===e.sourceMap)return;t(e=n)}else r()}}var g,b=(g=[],function(e,t){return g[e]=t,g.filter(Boolean).join("\n")});function v(e,t,r,n){var o=r?"":n.css;if(e.styleSheet)e.styleSheet.cssText=b(t,o);else{var i=document.createTextNode(o),a=e.childNodes;a[t]&&e.removeChild(a[t]),a.length?e.insertBefore(i,a[t]):e.appendChild(i)}}function k(e,t){var r=t.css,n=t.media,o=t.sourceMap;if(n&&e.setAttribute("media",n),p.ssrId&&e.setAttribute("data-vue-ssr-id",t.id),o&&(r+="\n/*# sourceURL="+o.sources[0]+" */",r+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */"),e.styleSheet)e.styleSheet.cssText=r;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(r))}}},function(e,t,r){"use strict";var n=r(12),o=r(46),i=r(49),a=r(5),s=r(29),l=r(87),c=r(34),u=r(94),p=r(9)("iterator"),d=!([].keys&&"next"in[].keys()),h=function(){return this};e.exports=function(e,t,r,f,_,m,g){l(r,t,f);var b,v,k,w=function(e){if(!d&&e in j)return j[e];switch(e){case"keys":case"values":return function(){return new r(this,e)}}return function(){return new r(this,e)}},y=t+" Iterator",x="values"==_,C=!1,j=e.prototype,O=j[p]||j["@@iterator"]||_&&j[_],S=O||w(_),E=_?x?w("entries"):S:void 0,T="Array"==t&&j.entries||O;if(T&&(k=u(T.call(new e)))!==Object.prototype&&k.next&&(c(k,y,!0),n||"function"==typeof k[p]||a(k,p,h)),x&&O&&"values"!==O.name&&(C=!0,S=function(){return O.call(this)}),n&&!g||!d&&!C&&j[p]||a(j,p,S),s[t]=S,s[y]=h,_)if(b={values:x?S:w("values"),keys:m?S:w("keys"),entries:E},g)for(v in b)v in j||i(j,v,b[v]);else o(o.P+o.F*(d||C),t,b);return b}},function(e,t,r){var n=r(2),o=r(13),i=r(85),a=r(5),s=r(4),l=function(e,t,r){var c,u,p,d=e&l.F,h=e&l.G,f=e&l.S,_=e&l.P,m=e&l.B,g=e&l.W,b=h?o:o[t]||(o[t]={}),v=b.prototype,k=h?n:f?n[t]:(n[t]||{}).prototype;for(c in h&&(r=t),r)(u=!d&&k&&void 0!==k[c])&&s(b,c)||(p=u?k[c]:r[c],b[c]=h&&"function"!=typeof k[c]?r[c]:m&&u?i(p,n):g&&k[c]==p?function(e){var t=function(t,r,n){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,r)}return new e(t,r,n)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(p):_&&"function"==typeof p?i(Function.call,p):p,_&&((b.virtual||(b.virtual={}))[c]=p,e&l.R&&v&&!v[c]&&a(v,c,p)))};l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,e.exports=l},function(e,t,r){e.exports=!r(7)&&!r(15)((function(){return 7!=Object.defineProperty(r(48)("div"),"a",{get:function(){return 7}}).a}))},function(e,t,r){var n=r(10),o=r(2).document,i=n(o)&&n(o.createElement);e.exports=function(e){return i?o.createElement(e):{}}},function(e,t,r){e.exports=r(5)},function(e,t,r){var n=r(14),o=r(88),i=r(33),a=r(31)("IE_PROTO"),s=function(){},l=function(){var e,t=r(48)("iframe"),n=i.length;for(t.style.display="none",r(93).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),l=e.F;n--;)delete l.prototype[i[n]];return l()};e.exports=Object.create||function(e,t){var r;return null!==e?(s.prototype=n(e),r=new s,s.prototype=null,r[a]=e):r=l(),void 0===t?r:o(r,t)}},function(e,t,r){var n=r(4),o=r(8),i=r(90)(!1),a=r(31)("IE_PROTO");e.exports=function(e,t){var r,s=o(e),l=0,c=[];for(r in s)r!=a&&n(s,r)&&c.push(r);for(;t.length>l;)n(s,r=t[l++])&&(~i(c,r)||c.push(r));return c}},function(e,t){var r={}.toString;e.exports=function(e){return r.call(e).slice(8,-1)}},function(e,t,r){var n=r(27);e.exports=function(e){return Object(n(e))}},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,r){var n=r(51),o=r(33).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return n(e,o)}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={"1c":"1c",abnf:"abnf",accesslog:"accesslog",actionscript:"actionscript",as:"actionscript",ada:"ada",apache:"apache",apacheconf:"apache",applescript:"applescript",osascript:"applescript",arduino:"arduino",armasm:"armasm",arm:"armasm",asciidoc:"asciidoc",adoc:"asciidoc",aspectj:"aspectj",autohotkey:"autohotkey",ahk:"autohotkey",autoit:"autoit",avrasm:"avrasm",awk:"awk",axapta:"axapta",bash:"bash",sh:"bash",zsh:"bash",basic:"basic",bnf:"bnf",brainfuck:"brainfuck",bf:"brainfuck",cal:"cal",capnproto:"capnproto",capnp:"capnproto",ceylon:"ceylon",clean:"clean",icl:"clean",dcl:"clean","clojure-repl":"clojure-repl",clojure:"clojure",clj:"clojure",cmake:"cmake","cmake.in":"cmake",coffeescript:"coffeescript",coffee:"coffeescript",cson:"coffeescript",iced:"coffeescript",coq:"coq",cos:"cos",cls:"cos",cpp:"cpp",c:"cpp",cc:"cpp",h:"cpp","c++":"cpp","h++":"cpp",hpp:"cpp",crmsh:"crmsh",crm:"crmsh",pcmk:"crmsh",crystal:"crystal",cr:"crystal",cs:"cs",csharp:"cs",csp:"csp",css:"css",d:"d",dart:"dart",delphi:"delphi",dpr:"delphi",dfm:"delphi",pas:"delphi",pascal:"delphi",freepascal:"delphi",lazarus:"delphi",lpr:"delphi",lfm:"delphi",diff:"diff",patch:"diff",django:"django",jinja:"django",dns:"dns",bind:"dns",zone:"dns",dockerfile:"dockerfile",docker:"dockerfile",dos:"dos",bat:"dos",cmd:"dos",dsconfig:"dsconfig",dts:"dts",dust:"dust",dst:"dust",ebnf:"ebnf",elixir:"elixir",elm:"elm",erb:"erb","erlang-repl":"erlang-repl",erlang:"erlang",erl:"erlang",excel:"excel",xlsx:"excel",xls:"excel",fix:"fix",flix:"flix",fortran:"fortran",f90:"fortran",f95:"fortran",fsharp:"fsharp",fs:"fsharp",gams:"gams",gms:"gams",gauss:"gauss",gss:"gauss",gcode:"gcode",nc:"gcode",gherkin:"gherkin",feature:"gherkin",glsl:"glsl",go:"go",golang:"go",golo:"golo",gradle:"gradle",groovy:"groovy",haml:"haml",handlebars:"handlebars",hbs:"handlebars","html.hbs":"handlebars","html.handlebars":"handlebars",haskell:"haskell",hs:"haskell",haxe:"haxe",hx:"haxe",hsp:"hsp",htmlbars:"htmlbars",http:"http",https:"http",hy:"hy",hylang:"hy",inform7:"inform7",i7:"inform7",ini:"ini",toml:"ini",irpf90:"irpf90",java:"java",jsp:"java",javascript:"javascript",js:"javascript",jsx:"javascript","jboss-cli":"jboss-cli","wildfly-cli":"jboss-cli",json:"json","julia-repl":"julia-repl",julia:"julia",kotlin:"kotlin",lasso:"lasso",ls:"livescript",lassoscript:"lasso",ldif:"ldif",leaf:"leaf",less:"less",lisp:"lisp",livecodeserver:"livecodeserver",livescript:"livescript",llvm:"llvm",lsl:"lsl",lua:"lua",makefile:"makefile",mk:"makefile",mak:"makefile",markdown:"markdown",md:"markdown",mkdown:"markdown",mkd:"markdown",mathematica:"mathematica",mma:"mathematica",matlab:"matlab",maxima:"maxima",mel:"mel",mercury:"mercury",m:"mercury",moo:"mercury",mipsasm:"mipsasm",mips:"mipsasm",mizar:"mizar",mojolicious:"mojolicious",monkey:"monkey",moonscript:"moonscript",moon:"moonscript",n1ql:"n1ql",nginx:"nginx",nginxconf:"nginx",nimrod:"nimrod",nim:"nimrod",nix:"nix",nixos:"nix",nsis:"nsis",objectivec:"objectivec",mm:"objectivec",objc:"objectivec","obj-c":"objectivec",ocaml:"ocaml",ml:"sml",openscad:"openscad",scad:"openscad",oxygene:"oxygene",parser3:"parser3",perl:"perl",pl:"perl",pm:"perl",pf:"pf","pf.conf":"pf",php:"php",php3:"php",php4:"php",php5:"php",php6:"php",pony:"pony",powershell:"powershell",ps:"powershell",processing:"processing",profile:"profile",prolog:"prolog",protobuf:"protobuf",puppet:"puppet",pp:"puppet",purebasic:"purebasic",pb:"purebasic",pbi:"purebasic",python:"python",py:"python",gyp:"python",q:"q",k:"q",kdb:"q",qml:"qml",qt:"qml",r:"r",rib:"rib",roboconf:"roboconf",graph:"roboconf",instances:"roboconf",routeros:"routeros",mikrotik:"routeros",rsl:"rsl",ruby:"ruby",rb:"ruby",gemspec:"ruby",podspec:"ruby",thor:"ruby",irb:"ruby",ruleslanguage:"ruleslanguage",rust:"rust",rs:"rust",scala:"scala",scheme:"scheme",scilab:"scilab",sci:"scilab",scss:"scss",shell:"shell",console:"shell",smali:"smali",smalltalk:"smalltalk",st:"smalltalk",sml:"sml",sqf:"sqf",sql:"sql",stan:"stan",stata:"stata",do:"stata",ado:"stata",step21:"step21",p21:"step21",step:"step21",stp:"step21",stylus:"stylus",styl:"stylus",subunit:"subunit",swift:"swift",taggerscript:"taggerscript",tap:"tap",tcl:"tcl",tk:"tcl",tex:"tex",thrift:"thrift",tp:"tp",twig:"twig",craftcms:"twig",typescript:"typescript",ts:"typescript",vala:"vala",vbnet:"vbnet",vb:"vbnet","vbscript-html":"vbscript-html",vbscript:"vbscript",vbs:"vbscript",verilog:"verilog",v:"verilog",sv:"verilog",svh:"verilog",vhdl:"vhdl",vim:"vim",x86asm:"x86asm",xl:"xl",tao:"xl",xml:"xml",html:"xml",xhtml:"xml",rss:"xml",atom:"xml",xjb:"xml",xsd:"xml",xsl:"xml",plist:"xml",xquery:"xquery",xpath:"xquery",xq:"xquery",yaml:"yaml",yml:"yaml",YAML:"yaml",zephir:"zephir",zep:"zephir"}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.loadScript=function(e,t){"function"!=typeof t&&(t=function(){});var r=document.querySelectorAll("script[src='"+e+"']");if(r.length>0)return r[0].addEventListener("load",(function(){t()})),void t();var n=document.createElement("script"),o=document.getElementsByTagName("head")[0];n.type="text/javascript",n.charset="UTF-8",n.src=e,n.addEventListener?n.addEventListener("load",(function(){t()}),!1):n.attachEvent&&n.attachEvent("onreadystatechange",(function(){"loaded"===window.event.srcElement.readyState&&t()}));o.appendChild(n)},t.loadLink=function(e,t,r){"function"!=typeof t&&(t=function(){});if(document.querySelectorAll("link[href='"+e+"']").length>0)return void t();if(r){var n=document.querySelectorAll("link#"+r);if(n.length)return void(n[0].href=e)}var o=document.createElement("link"),i=document.getElementsByTagName("head")[0];o.rel="stylesheet",o.href=e,r&&(o.id=r),o.addEventListener?o.addEventListener("load",(function(){t()}),!1):o.attachEvent&&o.attachEvent("onreadystatechange",(function(){"loaded"===window.event.srcElement.readyState&&t()}));i.appendChild(o)};t.insertTextAtCaret=function(e,t,r){var n=t.prefix,o=t.subfix,i=t.str;t.type;if(e.focus(),s(e)){var a=e.selectionStart,l=e.selectionEnd,c=e.value;a===l?(e.value=c.substring(0,a)+n+i+o+c.substring(l,c.length),e.selectionStart=a+n.length,e.selectionEnd=a+(i.length+n.length)):c.substring(a-n.length,a)===n&&c.substring(l,l+o.length)===o&&function(e,t,r,n,o){if("*"===e&&"*"===t&&"*"===r.substring(n-2,n-1)&&"*"===r.substring(o+1,o+2))return!1;return!0}(n,o,c,a,l)?(e.value=c.substring(0,a-n.length)+c.substring(a,l)+c.substring(l+o.length,c.length),e.selectionStart=a-n.length,e.selectionEnd=l-n.length):(e.value=c.substring(0,a)+n+c.substring(a,l)+o+c.substring(l,c.length),e.selectionStart=a+n.length,e.selectionEnd=a+(l-a+n.length))}else alert("Error: Browser version is too low");r.d_value=e.value,e.focus()};var n="```",o="\n```\n",i="language";t.insertCodeBlock=function(e){var t=e.getTextareaDom();if(s(t)){var r=i,l=t.selectionStart,c=t.selectionEnd,u=t.value;l===c?a(r,"",t):function(e){var t=e.selectionStart,r=e.selectionEnd,i=e.value,a=n,s=o;"\n"===i.substring(t-1,t)?a+="\n":s="\n"+s;return i.substring(t-a.length,t)===a&&i.substring(r,r+s.length)===s}(t)?function(e){var t=n,r=o,a=i,s=e.selectionStart,l=e.selectionEnd,c=e.value,u=c.substring(s,l);if("\n"===c.substring(s-1,s))t+="\n";else if(t+a+(r="\n"+r)===c.substring(s-t.length,l+r.length)){var p=c.substring(0,s-t.length);return p+=c.substring(l+r.length,c.length),e.value=p,e.selectionStart=s-t.length,void(e.selectionEnd=e.selectionStart)}var d=c.substring(0,s-t.length);d+=u,d+=c.substring(l+r.length,c.length),e.value=d,e.selectionStart=s-t.length,e.selectionEnd=e.selectionStart+u.length}(t):a("",u.substring(l,c),t),e.d_value=t.value,t.focus()}else alert("Error: Browser version is too low")};function a(e,t,r){var i=n,a=o,s=r.selectionStart,l=r.selectionEnd,c=r.value,u=c.substring(0,s);u+=i+e+"\n",u+=t,u+=a,u+=c.substring(l,c.length),r.value=u,r.selectionStart=s+i.length+(e?0:1),r.selectionEnd=r.selectionStart+e.length+t.length}function s(e){return"number"==typeof e.selectionStart&&"number"==typeof e.selectionEnd}t.insertOl=function(e){var t=e.getTextareaDom();if(s(t)){var r=t.selectionStart,n=t.selectionEnd,o=t.value;if(r===n)t.value=o.substring(0,r)+"1. "+o.substring(n,o.length),t.selectionEnd=t.selectionStart=r+3;else{for(var i=r;i>0&&"\n"!==o.substring(i-1,i);)i--;for(var a=o.substring(i,n),l=a.split("\n"),c=0;c<l.length;c++)l[c]=c+1+". "+l[c];var u=l.join("\n");t.value=o.substring(0,i)+u+o.substring(n,o.length),t.selectionStart=i,t.selectionEnd=n+u.length-a.length}}else alert("Error: Browser version is too low");e.d_value=t.value,t.focus()},t.removeLine=function(e){var t=e.getTextareaDom();if(s(t)){for(var r=t.selectionStart,n=t.selectionEnd,o=t.value,i=r;i>0&&"\n"!==o.substring(i-1,i);)i--;for(var a=n;a<o.length&&"\n"!==o.substring(a,a+1);)a++;a<o.length&&a++,t.value=o.substring(0,i)+o.substring(a,o.length),t.selectionEnd=t.selectionStart=0===i?0:i-1}else alert("Error: Browser version is too low");e.d_value=t.value,t.focus()},t.insertUl=function(e){var t=e.getTextareaDom();if(s(t)){var r=t.selectionStart,n=t.selectionEnd,o=t.value;if(r===n)t.value=o.substring(0,r)+"- "+o.substring(n,o.length),t.selectionEnd=t.selectionStart=r+2;else{for(var i=r;i>0&&"\n"!==o.substring(i-1,i);)i--;var a=o.substring(i,n),l=a.replace(/\n/g,"\n- ");l="- "+l,t.value=o.substring(0,i)+l+o.substring(n,o.length),t.selectionStart=i,t.selectionEnd=n+l.length-a.length}}else alert("Error: Browser version is too low");e.d_value=t.value,t.focus()},t.insertTab=function(e,t){t=t?new Array(t).fill(" ").join(""):"\t";var r=e.getTextareaDom();if(s(r)){var n=r.selectionStart,o=r.selectionEnd,i=r.value,a=i.substring(0,n).split("\n").pop();if(a.match(/^\s*[0-9]+\.\s+\S*/)){var l=a.replace(/(\d+)/,1);r.value=i.substring(0,n-l.length)+t+l+i.substring(o,i.length)}else a.match(/^\s*-\s+\S*/)?r.value=i.substring(0,n-a.length)+t+a+i.substring(o,i.length):r.value=i.substring(0,n)+t+i.substring(o,i.length);r.selectionStart=r.selectionEnd=n+t.length}else alert("Error: Browser version is too low");e.d_value=r.value,r.focus()},t.unInsertTab=function(e,t){var r=new RegExp(t?"\\s{"+t+"}":"\t");console.log("regTab:",r);var n=e.getTextareaDom();if(s(n)){var o=n.selectionStart,i=n.selectionEnd,a=n.value,l=a.substring(0,o).split("\n").pop();l.search(r)>=0&&(n.value=a.substring(0,o-l.length)+l.replace(r,"")+a.substring(i,a.length),n.selectionStart=n.selectionEnd=o-(t||1))}else alert("Error: Browser version is too low");e.d_value=n.value,n.focus()},t.insertEnter=function(e,t){var r=e.getTextareaDom();if(s(r)){var n=r.selectionStart,o=r.selectionEnd,i=r.value,a=i.substring(0,n).split("\n").pop(),l=a.match(/^\s*(?:[0-9]+\.|-)\s+\S+/);if(l){t.preventDefault();var c=l.shift().match(/^\s*(?:[0-9]+\.|-)\s/).shift();if(c.search(/-/)>=0)r.value=i.substring(0,n)+"\n"+c+i.substring(o,i.length),r.selectionStart=r.selectionEnd=n+c.length+1;else{var u=c.replace(/(\d+)/,parseInt(c)+1);r.value=i.substring(0,n)+"\n"+u+i.substring(o,i.length),r.selectionStart=r.selectionEnd=n+u.length+1}}else{var p=a.match(/^\s*(?:[0-9]+\.|-)\s+$/);if(p){t.preventDefault();var d=p.shift().length;r.value=i.substring(0,n-d)+"\n"+i.substring(o,i.length),r.selectionStart=r.selectionEnd=n-d}}}else alert("Error: Browser version is too low");e.d_value=r.value,r.focus()},t.getNavigation=function(e,t){var r=void 0;(r=e.$refs.navigationContent).innerHTML=e.d_render;var n=r.children;if(n.length)for(var o=0;o<n.length;o++)i(n[o],o,n);function i(t,r,n){/^H[1-6]{1}$/.exec(t.tagName)?t.onclick=function(){var t=e.$refs.vShowContent,n=e.$refs.vNoteEdit;e.s_subfield?e.s_preview_switch&&(n.scrollTop=t.children[r].offsetTop*(n.scrollHeight-n.offsetHeight)/(t.scrollHeight-t.offsetHeight)):e.s_preview_switch&&(t.scrollTop=t.children[r].offsetTop)}:t.style.display="none"}},t.scrollLink=function(e,t){var r=e.srcElement?e.srcElement:e.target,n=r.scrollTop/(r.scrollHeight-r.offsetHeight);t.edit_scroll_height>=0&&r.scrollHeight!==t.edit_scroll_height&&r.scrollHeight-r.offsetHeight-r.scrollTop<=30&&(t.$refs.vNoteEdit.scrollTop=r.scrollHeight-r.offsetHeight,n=1),t.edit_scroll_height=r.scrollHeight,t.$refs.vShowContent.scrollHeight>t.$refs.vShowContent.offsetHeight&&(t.$refs.vShowContent.scrollTop=(t.$refs.vShowContent.scrollHeight-t.$refs.vShowContent.offsetHeight)*n)},t.fullscreenchange=function(e){e.$el.addEventListener("fullscreenchange",(function(t){e.$toolbar_right_read_change_status()}),!1),e.$el.addEventListener("mozfullscreenchange",(function(t){e.$toolbar_right_read_change_status()}),!1),e.$el.addEventListener("webkitfullscreenchange",(function(t){e.$toolbar_right_read_change_status()}),!1),e.$el.addEventListener("msfullscreenchange",(function(t){e.$toolbar_right_read_change_status()}),!1)},t.windowResize=function(e){function t(){e.$el.clientWidth>768?e.s_subfield=e.subfield:e.s_subfield=!1}t(),window.addEventListener("resize",t)};t.ImagePreviewListener=function(e){e.$refs.vShowContent.addEventListener("click",(function(t){var r=(t=t||window.event).srcElement?t.srcElement:t.target;"IMG"===r.tagName&&(null!=e.imageClick?e.imageClick(r):e.d_preview_imgsrc=r.src)}))}},function(e,t,r){var n=r(38).FilterCSS,o=r(38).getDefaultWhiteList,i=r(39);function a(){return{a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]}}var s=new n;function l(e){return e.replace(c,"&lt;").replace(u,"&gt;")}var c=/</g,u=/>/g,p=/"/g,d=/&quot;/g,h=/&#([a-zA-Z0-9]*);?/gim,f=/&colon;?/gim,_=/&newline;?/gim,m=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi,g=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,b=/u\s*r\s*l\s*\(.*/gi;function v(e){return e.replace(p,"&quot;")}function k(e){return e.replace(d,'"')}function w(e){return e.replace(h,(function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))}))}function y(e){return e.replace(f,":").replace(_," ")}function x(e){for(var t="",r=0,n=e.length;r<n;r++)t+=e.charCodeAt(r)<32?" ":e.charAt(r);return i.trim(t)}function C(e){return e=x(e=y(e=w(e=k(e))))}function j(e){return e=l(e=v(e))}t.whiteList={a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]},t.getDefaultWhiteList=a,t.onTag=function(e,t,r){},t.onIgnoreTag=function(e,t,r){},t.onTagAttr=function(e,t,r){},t.onIgnoreTagAttr=function(e,t,r){},t.safeAttrValue=function(e,t,r,n){if(r=C(r),"href"===t||"src"===t){if("#"===(r=i.trim(r)))return"#";if("http://"!==r.substr(0,7)&&"https://"!==r.substr(0,8)&&"mailto:"!==r.substr(0,7)&&"tel:"!==r.substr(0,4)&&"data:image/"!==r.substr(0,11)&&"ftp://"!==r.substr(0,6)&&"./"!==r.substr(0,2)&&"../"!==r.substr(0,3)&&"#"!==r[0]&&"/"!==r[0])return""}else if("background"===t){if(m.lastIndex=0,m.test(r))return""}else if("style"===t){if(g.lastIndex=0,g.test(r))return"";if(b.lastIndex=0,b.test(r)&&(m.lastIndex=0,m.test(r)))return"";!1!==n&&(r=(n=n||s).process(r))}return r=j(r)},t.escapeHtml=l,t.escapeQuote=v,t.unescapeQuote=k,t.escapeHtmlEntities=w,t.escapeDangerHtml5Entities=y,t.clearNonPrintableCharacter=x,t.friendlyAttrValue=C,t.escapeAttrValue=j,t.onIgnoreTagStripAll=function(){return""},t.StripTagBody=function(e,t){"function"!=typeof t&&(t=function(){});var r=!Array.isArray(e),n=[],o=!1;return{onIgnoreTag:function(a,s,l){if(function(t){return!!r||-1!==i.indexOf(e,t)}(a)){if(l.isClosing){var c="[/removed]",u=l.position+c.length;return n.push([!1!==o?o:l.position,u]),o=!1,c}return o||(o=l.position),"[removed]"}return t(a,s,l)},remove:function(e){var t="",r=0;return i.forEach(n,(function(n){t+=e.slice(r,n[0]),r=n[1]})),t+=e.slice(r)}}},t.stripCommentTag=function(e){for(var t="",r=0;r<e.length;){var n=e.indexOf("\x3c!--",r);if(-1===n){t+=e.slice(r);break}t+=e.slice(r,n);var o=e.indexOf("--\x3e",n);if(-1===o)break;r=o+3}return t},t.stripBlankChar=function(e){var t=e.split("");return(t=t.filter((function(e){var t=e.charCodeAt(0);return 127!==t&&(!(t<=31)||(10===t||13===t))}))).join("")},t.cssFilter=s,t.getDefaultCSSWhiteList=o},function(e,t){function r(){var e={"align-content":!1,"align-items":!1,"align-self":!1,"alignment-adjust":!1,"alignment-baseline":!1,all:!1,"anchor-point":!1,animation:!1,"animation-delay":!1,"animation-direction":!1,"animation-duration":!1,"animation-fill-mode":!1,"animation-iteration-count":!1,"animation-name":!1,"animation-play-state":!1,"animation-timing-function":!1,azimuth:!1,"backface-visibility":!1,background:!0,"background-attachment":!0,"background-clip":!0,"background-color":!0,"background-image":!0,"background-origin":!0,"background-position":!0,"background-repeat":!0,"background-size":!0,"baseline-shift":!1,binding:!1,bleed:!1,"bookmark-label":!1,"bookmark-level":!1,"bookmark-state":!1,border:!0,"border-bottom":!0,"border-bottom-color":!0,"border-bottom-left-radius":!0,"border-bottom-right-radius":!0,"border-bottom-style":!0,"border-bottom-width":!0,"border-collapse":!0,"border-color":!0,"border-image":!0,"border-image-outset":!0,"border-image-repeat":!0,"border-image-slice":!0,"border-image-source":!0,"border-image-width":!0,"border-left":!0,"border-left-color":!0,"border-left-style":!0,"border-left-width":!0,"border-radius":!0,"border-right":!0,"border-right-color":!0,"border-right-style":!0,"border-right-width":!0,"border-spacing":!0,"border-style":!0,"border-top":!0,"border-top-color":!0,"border-top-left-radius":!0,"border-top-right-radius":!0,"border-top-style":!0,"border-top-width":!0,"border-width":!0,bottom:!1,"box-decoration-break":!0,"box-shadow":!0,"box-sizing":!0,"box-snap":!0,"box-suppress":!0,"break-after":!0,"break-before":!0,"break-inside":!0,"caption-side":!1,chains:!1,clear:!0,clip:!1,"clip-path":!1,"clip-rule":!1,color:!0,"color-interpolation-filters":!0,"column-count":!1,"column-fill":!1,"column-gap":!1,"column-rule":!1,"column-rule-color":!1,"column-rule-style":!1,"column-rule-width":!1,"column-span":!1,"column-width":!1,columns:!1,contain:!1,content:!1,"counter-increment":!1,"counter-reset":!1,"counter-set":!1,crop:!1,cue:!1,"cue-after":!1,"cue-before":!1,cursor:!1,direction:!1,display:!0,"display-inside":!0,"display-list":!0,"display-outside":!0,"dominant-baseline":!1,elevation:!1,"empty-cells":!1,filter:!1,flex:!1,"flex-basis":!1,"flex-direction":!1,"flex-flow":!1,"flex-grow":!1,"flex-shrink":!1,"flex-wrap":!1,float:!1,"float-offset":!1,"flood-color":!1,"flood-opacity":!1,"flow-from":!1,"flow-into":!1,font:!0,"font-family":!0,"font-feature-settings":!0,"font-kerning":!0,"font-language-override":!0,"font-size":!0,"font-size-adjust":!0,"font-stretch":!0,"font-style":!0,"font-synthesis":!0,"font-variant":!0,"font-variant-alternates":!0,"font-variant-caps":!0,"font-variant-east-asian":!0,"font-variant-ligatures":!0,"font-variant-numeric":!0,"font-variant-position":!0,"font-weight":!0,grid:!1,"grid-area":!1,"grid-auto-columns":!1,"grid-auto-flow":!1,"grid-auto-rows":!1,"grid-column":!1,"grid-column-end":!1,"grid-column-start":!1,"grid-row":!1,"grid-row-end":!1,"grid-row-start":!1,"grid-template":!1,"grid-template-areas":!1,"grid-template-columns":!1,"grid-template-rows":!1,"hanging-punctuation":!1,height:!0,hyphens:!1,icon:!1,"image-orientation":!1,"image-resolution":!1,"ime-mode":!1,"initial-letters":!1,"inline-box-align":!1,"justify-content":!1,"justify-items":!1,"justify-self":!1,left:!1,"letter-spacing":!0,"lighting-color":!0,"line-box-contain":!1,"line-break":!1,"line-grid":!1,"line-height":!1,"line-snap":!1,"line-stacking":!1,"line-stacking-ruby":!1,"line-stacking-shift":!1,"line-stacking-strategy":!1,"list-style":!0,"list-style-image":!0,"list-style-position":!0,"list-style-type":!0,margin:!0,"margin-bottom":!0,"margin-left":!0,"margin-right":!0,"margin-top":!0,"marker-offset":!1,"marker-side":!1,marks:!1,mask:!1,"mask-box":!1,"mask-box-outset":!1,"mask-box-repeat":!1,"mask-box-slice":!1,"mask-box-source":!1,"mask-box-width":!1,"mask-clip":!1,"mask-image":!1,"mask-origin":!1,"mask-position":!1,"mask-repeat":!1,"mask-size":!1,"mask-source-type":!1,"mask-type":!1,"max-height":!0,"max-lines":!1,"max-width":!0,"min-height":!0,"min-width":!0,"move-to":!1,"nav-down":!1,"nav-index":!1,"nav-left":!1,"nav-right":!1,"nav-up":!1,"object-fit":!1,"object-position":!1,opacity:!1,order:!1,orphans:!1,outline:!1,"outline-color":!1,"outline-offset":!1,"outline-style":!1,"outline-width":!1,overflow:!1,"overflow-wrap":!1,"overflow-x":!1,"overflow-y":!1,padding:!0,"padding-bottom":!0,"padding-left":!0,"padding-right":!0,"padding-top":!0,page:!1,"page-break-after":!1,"page-break-before":!1,"page-break-inside":!1,"page-policy":!1,pause:!1,"pause-after":!1,"pause-before":!1,perspective:!1,"perspective-origin":!1,pitch:!1,"pitch-range":!1,"play-during":!1,position:!1,"presentation-level":!1,quotes:!1,"region-fragment":!1,resize:!1,rest:!1,"rest-after":!1,"rest-before":!1,richness:!1,right:!1,rotation:!1,"rotation-point":!1,"ruby-align":!1,"ruby-merge":!1,"ruby-position":!1,"shape-image-threshold":!1,"shape-outside":!1,"shape-margin":!1,size:!1,speak:!1,"speak-as":!1,"speak-header":!1,"speak-numeral":!1,"speak-punctuation":!1,"speech-rate":!1,stress:!1,"string-set":!1,"tab-size":!1,"table-layout":!1,"text-align":!0,"text-align-last":!0,"text-combine-upright":!0,"text-decoration":!0,"text-decoration-color":!0,"text-decoration-line":!0,"text-decoration-skip":!0,"text-decoration-style":!0,"text-emphasis":!0,"text-emphasis-color":!0,"text-emphasis-position":!0,"text-emphasis-style":!0,"text-height":!0,"text-indent":!0,"text-justify":!0,"text-orientation":!0,"text-overflow":!0,"text-shadow":!0,"text-space-collapse":!0,"text-transform":!0,"text-underline-position":!0,"text-wrap":!0,top:!1,transform:!1,"transform-origin":!1,"transform-style":!1,transition:!1,"transition-delay":!1,"transition-duration":!1,"transition-property":!1,"transition-timing-function":!1,"unicode-bidi":!1,"vertical-align":!1,visibility:!1,"voice-balance":!1,"voice-duration":!1,"voice-family":!1,"voice-pitch":!1,"voice-range":!1,"voice-rate":!1,"voice-stress":!1,"voice-volume":!1,volume:!1,"white-space":!1,widows:!1,width:!0,"will-change":!1,"word-break":!0,"word-spacing":!0,"word-wrap":!0,"wrap-flow":!1,"wrap-through":!1,"writing-mode":!1,"z-index":!1};return e}var n=/javascript\s*\:/gim;t.whiteList=r(),t.getDefaultWhiteList=r,t.onAttr=function(e,t,r){},t.onIgnoreAttr=function(e,t,r){},t.safeAttrValue=function(e,t){return n.test(t)?"":t}},function(e,t){e.exports={indexOf:function(e,t){var r,n;if(Array.prototype.indexOf)return e.indexOf(t);for(r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1},forEach:function(e,t,r){var n,o;if(Array.prototype.forEach)return e.forEach(t,r);for(n=0,o=e.length;n<o;n++)t.call(r,e[n],n,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},trimRight:function(e){return String.prototype.trimRight?e.trimRight():e.replace(/(\s*$)/g,"")}}},function(e,t,r){var n=r(39);function o(e){var t,r=n.spaceIndex(e);return t=-1===r?e.slice(1,-1):e.slice(1,r+1),"/"===(t=n.trim(t).toLowerCase()).slice(0,1)&&(t=t.slice(1)),"/"===t.slice(-1)&&(t=t.slice(0,-1)),t}function i(e){return"</"===e.slice(0,2)}var a=/[^a-zA-Z0-9\\_:.-]/gim;function s(e,t){for(;t<e.length;t++){var r=e[t];if(" "!==r)return"="===r?t:-1}}function l(e,t){for(;t<e.length;t++){var r=e[t];if(" "!==r)return"'"===r||'"'===r?t:-1}}function c(e,t){for(;t>0;t--){var r=e[t];if(" "!==r)return"="===r?t:-1}}function u(e){return function(e){return'"'===e[0]&&'"'===e[e.length-1]||"'"===e[0]&&"'"===e[e.length-1]}(e)?e.substr(1,e.length-2):e}t.parseTag=function(e,t,r){"use strict";var n="",a=0,s=!1,l=!1,c=0,u=e.length,p="",d="";e:for(c=0;c<u;c++){var h=e.charAt(c);if(!1===s){if("<"===h){s=c;continue}}else if(!1===l){if("<"===h){n+=r(e.slice(a,c)),s=c,a=c;continue}if(">"===h||c===u-1){n+=r(e.slice(a,s)),p=o(d=e.slice(s,c+1)),n+=t(s,n.length,p,d,i(d)),a=c+1,s=!1;continue}if('"'===h||"'"===h)for(var f=1,_=e.charAt(c-f);""===_.trim()||"="===_;){if("="===_){l=h;continue e}_=e.charAt(c-++f)}}else if(h===l){l=!1;continue}}return a<u&&(n+=r(e.substr(a))),n},t.parseAttr=function(e,t){"use strict";var r=0,o=0,i=[],p=!1,d=e.length;function h(e,r){if(!((e=(e=n.trim(e)).replace(a,"").toLowerCase()).length<1)){var o=t(e,r||"");o&&i.push(o)}}for(var f=0;f<d;f++){var _,m=e.charAt(f);if(!1!==p||"="!==m)if(!1===p||f!==o)if(/\s|\n|\t/.test(m)){if(e=e.replace(/\s|\n|\t/g," "),!1===p){if(-1===(_=s(e,f))){h(n.trim(e.slice(r,f))),p=!1,r=f+1;continue}f=_-1;continue}if(-1===(_=c(e,f-1))){h(p,u(n.trim(e.slice(r,f)))),p=!1,r=f+1;continue}}else;else{if(-1===(_=e.indexOf(m,f+1)))break;h(p,n.trim(e.slice(o+1,_))),p=!1,r=(f=_)+1}else p=e.slice(r,f),r=f+1,o='"'===e.charAt(r)||"'"===e.charAt(r)?r:l(e,f+1)}return r<e.length&&(!1===p?h(e.slice(r)):h(p,u(n.trim(e.slice(r))))),n.trim(i.join(" "))}},function(e,t,r){"use strict";e.exports=r(140)},function(e,t,r){"use strict";e.exports.encode=r(141),e.exports.decode=r(142),e.exports.format=r(143),e.exports.parse=r(144)},function(e,t){e.exports=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/},function(e,t){e.exports=/[\0-\x1F\x7F-\x9F]/},function(e,t){e.exports=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/},function(e,t,r){"use strict";var n="<[A-Za-z][A-Za-z0-9\\-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>",o="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",i=new RegExp("^(?:"+n+"|"+o+"|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|<[?].*?[?]>|<![A-Z]+\\s+[^>]*>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>)"),a=new RegExp("^(?:"+n+"|"+o+")");e.exports.HTML_TAG_RE=i,e.exports.HTML_OPEN_CLOSE_TAG_RE=a},function(e,t,r){"use strict";function n(e,t){var r,n,o,i,a,s=[],l=t.length;for(r=0;r<l;r++)126===(o=t[r]).marker&&-1!==o.end&&(i=t[o.end],(a=e.tokens[o.token]).type="s_open",a.tag="s",a.nesting=1,a.markup="~~",a.content="",(a=e.tokens[i.token]).type="s_close",a.tag="s",a.nesting=-1,a.markup="~~",a.content="","text"===e.tokens[i.token-1].type&&"~"===e.tokens[i.token-1].content&&s.push(i.token-1));for(;s.length;){for(n=(r=s.pop())+1;n<e.tokens.length&&"s_close"===e.tokens[n].type;)n++;r!==--n&&(a=e.tokens[n],e.tokens[n]=e.tokens[r],e.tokens[r]=a)}}e.exports.tokenize=function(e,t){var r,n,o,i,a=e.pos,s=e.src.charCodeAt(a);if(t)return!1;if(126!==s)return!1;if(o=(n=e.scanDelims(e.pos,!0)).length,i=String.fromCharCode(s),o<2)return!1;for(o%2&&(e.push("text","",0).content=i,o--),r=0;r<o;r+=2)e.push("text","",0).content=i+i,e.delimiters.push({marker:s,length:0,jump:r,token:e.tokens.length-1,end:-1,open:n.can_open,close:n.can_close});return e.pos+=n.length,!0},e.exports.postProcess=function(e){var t,r=e.tokens_meta,o=e.tokens_meta.length;for(n(e,e.delimiters),t=0;t<o;t++)r[t]&&r[t].delimiters&&n(e,r[t].delimiters)}},function(e,t,r){"use strict";function n(e,t){var r,n,o,i,a,s;for(r=t.length-1;r>=0;r--)95!==(n=t[r]).marker&&42!==n.marker||-1!==n.end&&(o=t[n.end],s=r>0&&t[r-1].end===n.end+1&&t[r-1].token===n.token-1&&t[n.end+1].token===o.token+1&&t[r-1].marker===n.marker,a=String.fromCharCode(n.marker),(i=e.tokens[n.token]).type=s?"strong_open":"em_open",i.tag=s?"strong":"em",i.nesting=1,i.markup=s?a+a:a,i.content="",(i=e.tokens[o.token]).type=s?"strong_close":"em_close",i.tag=s?"strong":"em",i.nesting=-1,i.markup=s?a+a:a,i.content="",s&&(e.tokens[t[r-1].token].content="",e.tokens[t[n.end+1].token].content="",r--))}e.exports.tokenize=function(e,t){var r,n,o=e.pos,i=e.src.charCodeAt(o);if(t)return!1;if(95!==i&&42!==i)return!1;for(n=e.scanDelims(e.pos,42===i),r=0;r<n.length;r++)e.push("text","",0).content=String.fromCharCode(i),e.delimiters.push({marker:i,length:n.length,jump:r,token:e.tokens.length-1,end:-1,open:n.can_open,close:n.can_close});return e.pos+=n.length,!0},e.exports.postProcess=function(e){var t,r=e.tokens_meta,o=e.tokens_meta.length;for(n(e,e.delimiters),t=0;t<o;t++)r[t]&&r[t].delimiters&&n(e,r[t].delimiters)}},function(e,t,r){"use strict";r.r(t);var n=r(76),o=r(22);for(var i in o)["default"].indexOf(i)<0&&function(e){r.d(t,e,(function(){return o[e]}))}(i);r(214);var a=r(3);const s=r.n(a)()(o.default,[["render",n.a],["__scopeId","data-v-218640b4"]]);t.default=s},function(e,t,r){var n=r(215);n.__esModule&&(n=n.default),"string"==typeof n&&(n=[[e.i,n,""]]),n.locals&&(e.exports=n.locals);(0,r(44).default)("74ee9320",n,!1,{})},function(e,t,r){"use strict";r.r(t);var n=r(77),o=r(23);for(var i in o)["default"].indexOf(i)<0&&function(e){r.d(t,e,(function(){return o[e]}))}(i);var a=r(3);const s=r.n(a)()(o.default,[["render",n.a]]);t.default=s},function(e,t,r){var n=r(218);n.__esModule&&(n=n.default),"string"==typeof n&&(n=[[e.i,n,""]]),n.locals&&(e.exports=n.locals);(0,r(44).default)("4958985a",n,!1,{})},function(e,t,r){var n=r(220);n.__esModule&&(n=n.default),"string"==typeof n&&(n=[[e.i,n,""]]),n.locals&&(e.exports=n.locals);(0,r(44).default)("200b97d3",n,!1,{})},function(e,t,r){"use strict";r.d(t,"a",(function(){return p}));var n=r(0);const o={class:"v-note-panel"},i=["innerHTML"],a={class:"v-note-navigation-title"},s={ref:"help"},l=["innerHTML"],c=["src"],u=["innerHTML"];function p(e,t,r,p,d,h){const f=Object(n.resolveComponent)("v-md-toolbar-left"),_=Object(n.resolveComponent)("v-md-toolbar-right"),m=Object(n.resolveComponent)("v-autoTextarea");return Object(n.openBlock)(),Object(n.createElementBlock)("div",{class:Object(n.normalizeClass)([[{fullscreen:d.s_fullScreen,shadow:r.boxShadow}],"v-note-wrapper markdown-body"]),style:Object(n.normalizeStyle)({"box-shadow":r.boxShadow?r.boxShadowStyle:""})},[Object(n.createCommentVNode)("工具栏"),Object(n.withDirectives)(Object(n.createElementVNode)("div",{class:"v-note-op",style:Object(n.normalizeStyle)({background:r.toolbarsBackground})},[Object(n.createVNode)(f,{ref:"toolbar_left",editable:r.editable,transition:r.transition,d_words:d.d_words,onToolbar_left_click:h.toolbar_left_click,onToolbar_left_addlink:h.toolbar_left_addlink,toolbars:r.toolbars,onImgAdd:h.$imgAdd,onImgDel:h.$imgDel,onImgTouch:h.$imgTouch,image_filter:r.imageFilter,class:Object(n.normalizeClass)({transition:r.transition})},{"left-toolbar-before":Object(n.withCtx)(()=>[Object(n.renderSlot)(e.$slots,"left-toolbar-before",{},void 0,!0)]),"left-toolbar-after":Object(n.withCtx)(()=>[Object(n.renderSlot)(e.$slots,"left-toolbar-after",{},void 0,!0)]),_:3},8,["editable","transition","d_words","onToolbar_left_click","onToolbar_left_addlink","toolbars","onImgAdd","onImgDel","onImgTouch","image_filter","class"]),Object(n.createVNode)(_,{ref:"toolbar_right",d_words:d.d_words,onToolbar_right_click:h.toolbar_right_click,toolbars:r.toolbars,s_subfield:d.s_subfield,s_preview_switch:d.s_preview_switch,s_fullScreen:d.s_fullScreen,s_html_code:d.s_html_code,s_navigation:d.s_navigation,class:Object(n.normalizeClass)({transition:r.transition})},{"right-toolbar-before":Object(n.withCtx)(()=>[Object(n.renderSlot)(e.$slots,"right-toolbar-before",{},void 0,!0)]),"right-toolbar-after":Object(n.withCtx)(()=>[Object(n.renderSlot)(e.$slots,"right-toolbar-after",{},void 0,!0)]),_:3},8,["d_words","onToolbar_right_click","toolbars","s_subfield","s_preview_switch","s_fullScreen","s_html_code","s_navigation","class"])],4),[[n.vShow,r.toolbarsFlag]]),Object(n.createCommentVNode)("编辑展示区域"),Object(n.createElementVNode)("div",o,[Object(n.createCommentVNode)("编辑区"),Object(n.createElementVNode)("div",{ref:"vNoteEdit",onScroll:t[1]||(t[1]=(...e)=>h.$v_edit_scroll&&h.$v_edit_scroll(...e)),class:Object(n.normalizeClass)(["v-note-edit divarea-wrapper",{"scroll-style":d.s_scrollStyle,"scroll-style-border-radius":d.s_scrollStyle&&!d.s_preview_switch&&!d.s_html_code,"single-edit":!d.s_preview_switch&&!d.s_html_code,"single-show":!d.s_subfield&&d.s_preview_switch||!d.s_subfield&&d.s_html_code,transition:r.transition}]),onClick:t[2]||(t[2]=(...e)=>h.textAreaFocus&&h.textAreaFocus(...e))},[Object(n.createElementVNode)("div",{class:"content-input-wrapper",style:Object(n.normalizeStyle)({"background-color":r.editorBackground})},[Object(n.createCommentVNode)(" 双栏 "),Object(n.createVNode)(m,{ref:"vNoteTextarea",placeholder:r.placeholder?r.placeholder:d.d_words.start_editor,class:"content-input",fontSize:r.fontSize,lineHeight:"1.5",modelValue:d.d_value,"onUpdate:modelValue":t[0]||(t[0]=e=>d.d_value=e),fullHeight:"",style:Object(n.normalizeStyle)({"background-color":r.editorBackground})},null,8,["placeholder","fontSize","modelValue","style"])],4)],34),Object(n.createCommentVNode)("展示区"),Object(n.withDirectives)(Object(n.createElementVNode)("div",{class:Object(n.normalizeClass)([{"single-show":!d.s_subfield&&d.s_preview_switch||!d.s_subfield&&d.s_html_code},"v-note-show"])},[Object(n.withDirectives)(Object(n.createElementVNode)("div",{ref:"vShowContent",innerHTML:d.d_render,class:Object(n.normalizeClass)([{"scroll-style":d.s_scrollStyle,"scroll-style-border-radius":d.s_scrollStyle},"v-show-content"]),style:Object(n.normalizeStyle)({"background-color":r.previewBackground})},null,14,i),[[n.vShow,!d.s_html_code]]),Object(n.withDirectives)(Object(n.createElementVNode)("div",{class:Object(n.normalizeClass)([{"scroll-style":d.s_scrollStyle,"scroll-style-border-radius":d.s_scrollStyle},"v-show-content-html"]),style:Object(n.normalizeStyle)({"background-color":r.previewBackground})},Object(n.toDisplayString)(d.d_render),7),[[n.vShow,d.s_html_code]])],2),[[n.vShow,d.s_preview_switch||d.s_html_code]]),Object(n.createCommentVNode)("标题导航"),Object(n.createVNode)(n.Transition,{name:"slideTop",persisted:""},{default:Object(n.withCtx)(()=>[Object(n.withDirectives)(Object(n.createElementVNode)("div",{class:Object(n.normalizeClass)(["v-note-navigation-wrapper",{transition:r.transition}])},[Object(n.createElementVNode)("div",a,[Object(n.createTextVNode)(Object(n.toDisplayString)(d.d_words.navigation_title),1),Object(n.createElementVNode)("i",{onClick:t[3]||(t[3]=e=>h.toolbar_right_click("navigation")),class:"fa fa-mavon-times v-note-navigation-close","aria-hidden":"true"})]),Object(n.createElementVNode)("div",{ref:"navigationContent",class:Object(n.normalizeClass)(["v-note-navigation-content",{"scroll-style":d.s_scrollStyle}])},null,2)],2),[[n.vShow,d.s_navigation]])]),_:1})]),Object(n.createCommentVNode)("帮助文档"),Object(n.createVNode)(n.Transition,{name:"fade"},{default:Object(n.withCtx)(()=>[Object(n.createElementVNode)("div",s,[d.s_help?(Object(n.openBlock)(),Object(n.createElementBlock)("div",{key:0,onClick:t[5]||(t[5]=Object(n.withModifiers)(e=>h.toolbar_right_click("help"),["self"])),class:"v-note-help-wrapper"},[Object(n.createElementVNode)("div",{class:Object(n.normalizeClass)(["v-note-help-content markdown-body",{shadow:r.boxShadow}])},[Object(n.createElementVNode)("i",{onClick:t[4]||(t[4]=Object(n.withModifiers)(e=>h.toolbar_right_click("help"),["stop","prevent"])),class:"fa fa-mavon-times","aria-hidden":"true"}),Object(n.createElementVNode)("div",{class:"scroll-style v-note-help-show",innerHTML:d.d_help},null,8,l)],2)])):Object(n.createCommentVNode)("v-if",!0)],512)]),_:1}),Object(n.createCommentVNode)(" 预览图片 "),Object(n.createVNode)(n.Transition,{name:"fade"},{default:Object(n.withCtx)(()=>[d.d_preview_imgsrc?(Object(n.openBlock)(),Object(n.createElementBlock)("div",{key:0,onClick:t[6]||(t[6]=e=>d.d_preview_imgsrc=null),class:"v-note-img-wrapper"},[Object(n.createElementVNode)("img",{src:d.d_preview_imgsrc,alt:"none"},null,8,c)])):Object(n.createCommentVNode)("v-if",!0)]),_:1}),Object(n.createCommentVNode)("阅读模式"),Object(n.createElementVNode)("div",{class:Object(n.normalizeClass)([{show:d.s_readmodel},"v-note-read-model scroll-style"]),ref:"vReadModel"},[Object(n.createElementVNode)("div",{ref:"vNoteReadContent",class:"v-note-read-content",innerHTML:d.d_render},null,8,u)],2)],6)}},function(e,t,r){"use strict";r.d(t,"a",(function(){return R}));var n=r(0);const o={class:"v-left-item"},i=["disabled","title"],a=["disabled","title"],s=["disabled","title"],l={key:3,class:"op-icon-divider"},c=["disabled","title"],u=["disabled","title"],p=["disabled","title"],d=["disabled","title"],h=["disabled","title"],f=["disabled","title"],_=["disabled","title"],m=["disabled","title"],g={key:12,class:"op-icon-divider"},b=["disabled","title"],v=["disabled","title"],k=["disabled","title"],w={key:16,class:"op-icon-divider"},y=["disabled","title"],x=["disabled"],C={class:"dropdown-item",style:{overflow:"hidden"}},j=["title","onClick"],O=["onClick","title"],S=["src"],E=["disabled","title"],T=["disabled","title"],A={key:21,class:"op-icon-divider"},D=["title"],L=["title"],q=["title"],z=["title"],$={key:0,class:"add-image-link-wrapper"},M={class:"add-image-link"},F={class:"title"},N={class:"link-text input-wrapper"},B=["placeholder"],I={class:"link-addr input-wrapper"},V=["placeholder"];function R(e,t,r,R,H,P){return Object(n.openBlock)(),Object(n.createElementBlock)("div",o,[Object(n.renderSlot)(e.$slots,"left-toolbar-before",{},void 0,!0),r.toolbars.bold?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:0,disabled:!r.editable,type:"button",onClick:t[0]||(t[0]=e=>P.$clicks("bold")),class:"op-icon fa fa-mavon-bold","aria-hidden":"true",title:r.d_words.tl_bold+" (ctrl+b)"},null,8,i)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.italic?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:1,disabled:!r.editable,type:"button",onClick:t[1]||(t[1]=e=>P.$clicks("italic")),class:"op-icon fa fa-mavon-italic","aria-hidden":"true",title:r.d_words.tl_italic+" (ctrl+i)"},null,8,a)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.header?(Object(n.openBlock)(),Object(n.createElementBlock)("div",{key:2,class:Object(n.normalizeClass)([{selected:H.s_header_dropdown_open},"op-icon fa fa-mavon-header dropdown dropdown-wrapper"]),disabled:!r.editable,type:"button",onMouseleave:t[10]||(t[10]=(...e)=>P.$mouseleave_header_dropdown&&P.$mouseleave_header_dropdown(...e)),onMouseenter:t[11]||(t[11]=(...e)=>P.$mouseenter_header_dropdown&&P.$mouseenter_header_dropdown(...e)),"aria-hidden":"true",title:r.d_words.tl_header+" (ctrl+h)"},[Object(n.createVNode)(n.Transition,{name:"fade",persisted:""},{default:Object(n.withCtx)(()=>[Object(n.withDirectives)(Object(n.createElementVNode)("div",{class:Object(n.normalizeClass)(["op-header popup-dropdown",{transition:r.transition}]),onMouseenter:t[8]||(t[8]=(...e)=>P.$mouseenter_header_dropdown&&P.$mouseenter_header_dropdown(...e)),onMouseleave:t[9]||(t[9]=(...e)=>P.$mouseleave_header_dropdown&&P.$mouseleave_header_dropdown(...e))},[Object(n.createElementVNode)("div",{title:"#",class:"dropdown-item",onClick:t[2]||(t[2]=Object(n.withModifiers)(e=>P.$click_header("header1"),["stop"]))},[Object(n.createElementVNode)("span",null,Object(n.toDisplayString)(r.d_words.tl_header_one),1)]),Object(n.createElementVNode)("div",{title:"## ",class:"dropdown-item",onClick:t[3]||(t[3]=Object(n.withModifiers)(e=>P.$click_header("header2"),["stop"]))},[Object(n.createElementVNode)("span",null,Object(n.toDisplayString)(r.d_words.tl_header_two),1)]),Object(n.createElementVNode)("div",{title:"### ",class:"dropdown-item",onClick:t[4]||(t[4]=Object(n.withModifiers)(e=>P.$click_header("header3"),["stop"]))},[Object(n.createElementVNode)("span",null,Object(n.toDisplayString)(r.d_words.tl_header_three),1)]),Object(n.createElementVNode)("div",{title:"#### ",class:"dropdown-item",onClick:t[5]||(t[5]=Object(n.withModifiers)(e=>P.$click_header("header4"),["stop"]))},[Object(n.createElementVNode)("span",null,Object(n.toDisplayString)(r.d_words.tl_header_four),1)]),Object(n.createElementVNode)("div",{title:"##### ",class:"dropdown-item",onClick:t[6]||(t[6]=Object(n.withModifiers)(e=>P.$click_header("header5"),["stop"]))},[Object(n.createElementVNode)("span",null,Object(n.toDisplayString)(r.d_words.tl_header_five),1)]),Object(n.createElementVNode)("div",{title:"###### ",class:"dropdown-item",onClick:t[7]||(t[7]=Object(n.withModifiers)(e=>P.$click_header("header6"),["stop"]))},[Object(n.createElementVNode)("span",null,Object(n.toDisplayString)(r.d_words.tl_header_six),1)])],34),[[n.vShow,H.s_header_dropdown_open]])]),_:1})],42,s)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.header||r.toolbars.italic||r.toolbars.bold?(Object(n.openBlock)(),Object(n.createElementBlock)("span",l)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.underline?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:4,disabled:!r.editable,type:"button",onClick:t[12]||(t[12]=e=>P.$clicks("underline")),class:"op-icon fa fa-mavon-underline",title:r.d_words.tl_underline+" (ctrl+u)","aria-hidden":"true"},null,8,c)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.strikethrough?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:5,disabled:!r.editable,type:"button",onClick:t[13]||(t[13]=e=>P.$clicks("strikethrough")),class:"op-icon fa fa-mavon-strikethrough",title:r.d_words.tl_strikethrough+" (ctrl+shift+d)","aria-hidden":"true"},null,8,u)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.mark?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:6,disabled:!r.editable,type:"button",onClick:t[14]||(t[14]=e=>P.$clicks("mark")),class:"op-icon fa fa-mavon-thumb-tack",title:r.d_words.tl_mark+" (ctrl+m)","aria-hidden":"true"},null,8,p)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.superscript?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:7,disabled:!r.editable,type:"button",onClick:t[15]||(t[15]=e=>P.$clicks("superscript")),class:"op-icon fa fa-mavon-superscript","aria-hidden":"true",title:r.d_words.tl_superscript+" (ctrl+alt+s)"},null,8,d)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.subscript?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:8,disabled:!r.editable,type:"button",onClick:t[16]||(t[16]=e=>P.$clicks("subscript")),class:"op-icon fa fa-mavon-subscript","aria-hidden":"true",title:r.d_words.tl_subscript+" (ctrl+shift+s)"},null,8,h)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.alignleft?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:9,disabled:!r.editable,type:"button",onClick:t[17]||(t[17]=e=>P.$clicks("alignleft")),class:"op-icon fa fa-mavon-align-left","aria-hidden":"true",title:r.d_words.tl_alignleft+" (ctrl+l)"},null,8,f)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.aligncenter?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:10,disabled:!r.editable,type:"button",onClick:t[18]||(t[18]=e=>P.$clicks("aligncenter")),class:"op-icon fa fa-mavon-align-center","aria-hidden":"true",title:r.d_words.tl_aligncenter+" (ctrl+e)"},null,8,_)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.alignright?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:11,disabled:!r.editable,type:"button",onClick:t[19]||(t[19]=e=>P.$clicks("alignright")),class:"op-icon fa fa-mavon-align-right","aria-hidden":"true",title:r.d_words.tl_alignright+" (ctrl+r)"},null,8,m)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.superscript||r.toolbars.subscript||r.toolbars.underline||r.toolbars.strikethrough||r.toolbars.mark?(Object(n.openBlock)(),Object(n.createElementBlock)("span",g)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.quote?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:13,disabled:!r.editable,type:"button",onClick:t[20]||(t[20]=e=>P.$clicks("quote")),class:"op-icon fa fa-mavon-quote-left","aria-hidden":"true",title:r.d_words.tl_quote+" (ctrl+q)"},null,8,b)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.ol?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:14,disabled:!r.editable,type:"button",onClick:t[21]||(t[21]=e=>P.$clicks("ol")),class:"op-icon fa fa-mavon-list-ol","aria-hidden":"true",title:r.d_words.tl_ol+" (ctrl+o)"},null,8,v)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.ul?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:15,disabled:!r.editable,type:"button",onClick:t[22]||(t[22]=e=>P.$clicks("ul")),class:"op-icon fa fa-mavon-list-ul","aria-hidden":"true",title:r.d_words.tl_ul+" (ctrl+alt+u)"},null,8,k)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.ul||r.toolbars.ol||r.toolbars.quote?(Object(n.openBlock)(),Object(n.createElementBlock)("span",w)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.link?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:17,disabled:!r.editable,type:"button",onClick:t[23]||(t[23]=Object(n.withModifiers)(e=>P.$toggle_imgLinkAdd("link"),["stop"])),class:"op-icon fa fa-mavon-link","aria-hidden":"true",title:r.d_words.tl_link+" (ctrl+l)"},null,8,y)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.imagelink?(Object(n.openBlock)(),Object(n.createElementBlock)("div",{key:18,disabled:!r.editable,class:Object(n.normalizeClass)([{selected:H.s_img_dropdown_open},"op-icon fa fa-mavon-picture-o dropdown dropdown-wrapper"]),type:"button",onMouseleave:t[28]||(t[28]=(...e)=>P.$mouseleave_img_dropdown&&P.$mouseleave_img_dropdown(...e)),onMouseenter:t[29]||(t[29]=(...e)=>P.$mouseenter_img_dropdown&&P.$mouseenter_img_dropdown(...e)),"aria-hidden":"true"},[Object(n.createVNode)(n.Transition,{name:"fade",persisted:""},{default:Object(n.withCtx)(()=>[Object(n.withDirectives)(Object(n.createElementVNode)("div",{class:Object(n.normalizeClass)(["op-image popup-dropdown",{transition:r.transition}]),onMouseleave:t[26]||(t[26]=(...e)=>P.$mouseleave_img_dropdown&&P.$mouseleave_img_dropdown(...e)),onMouseenter:t[27]||(t[27]=(...e)=>P.$mouseenter_img_dropdown&&P.$mouseenter_img_dropdown(...e))},[Object(n.createElementVNode)("div",{class:"dropdown-item",onClick:t[24]||(t[24]=Object(n.withModifiers)(e=>P.$toggle_imgLinkAdd("imagelink"),["stop"]))},[Object(n.createElementVNode)("span",null,Object(n.toDisplayString)(r.d_words.tl_image),1)]),Object(n.createElementVNode)("div",C,[Object(n.createElementVNode)("input",{type:"file",accept:"image/gif,image/jpeg,image/jpg,image/png,image/svg",onChange:t[25]||(t[25]=e=>P.$imgAdd(e)),multiple:"multiple"},null,32),Object(n.createTextVNode)(Object(n.toDisplayString)(r.d_words.tl_upload),1)]),(Object(n.openBlock)(!0),Object(n.createElementBlock)(n.Fragment,null,Object(n.renderList)(H.img_file,(e,t)=>(Object(n.openBlock)(),Object(n.createElementBlock)(n.Fragment,{key:t},[e&&e[1]?(Object(n.openBlock)(),Object(n.createElementBlock)("div",{key:0,class:"dropdown-item dropdown-images",title:e[1].name,onClick:Object(n.withModifiers)(e=>P.$imgFileListClick(t),["stop"])},[Object(n.createElementVNode)("span",null,Object(n.toDisplayString)(e[1].name),1),Object(n.createElementVNode)("button",{type:"button",onClick:Object(n.withModifiers)(e=>P.$imgDel(t),["stop"]),class:"op-icon fa fa-mavon-times","aria-hidden":"true",title:r.d_words.tl_upload_remove},null,8,O),Object(n.createCommentVNode)(" 缩略图展示 "),Object(n.createElementVNode)("img",{class:Object(n.normalizeClass)(["image-show",{transition:r.transition}]),src:e[1].miniurl,alt:"none"},null,10,S)],8,j)):Object(n.createCommentVNode)("v-if",!0)],64))),128))],34),[[n.vShow,H.s_img_dropdown_open]])]),_:1})],42,x)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.code?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:19,disabled:!r.editable,type:"button",onClick:t[30]||(t[30]=e=>P.$clicks("code")),class:"op-icon fa fa-mavon-code","aria-hidden":"true",title:r.d_words.tl_code+" (ctrl+alt+c)"},null,8,E)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.table?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:20,disabled:!r.editable,type:"button",onClick:t[31]||(t[31]=e=>P.$clicks("table")),class:"op-icon fa fa-mavon-table","aria-hidden":"true",title:r.d_words.tl_table+" (ctrl+alt+t)"},null,8,T)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.link||r.toolbars.imagelink||r.toolbars.code||r.toolbars.table?(Object(n.openBlock)(),Object(n.createElementBlock)("span",A)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.undo?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:22,type:"button",onClick:t[32]||(t[32]=e=>P.$clicks("undo")),class:"op-icon fa fa-mavon-undo","aria-hidden":"true",title:r.d_words.tl_undo+" (ctrl+z)"},null,8,D)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.redo?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:23,type:"button",onClick:t[33]||(t[33]=e=>P.$clicks("redo")),class:"op-icon fa fa-mavon-repeat","aria-hidden":"true",title:r.d_words.tl_redo+" (ctrl+y)"},null,8,L)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.trash?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:24,type:"button",onClick:t[34]||(t[34]=e=>P.$clicks("trash")),class:"op-icon fa fa-mavon-trash-o","aria-hidden":"true",title:r.d_words.tl_trash+" (ctrl+breakspace)"},null,8,q)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.save?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:25,type:"button",onClick:t[35]||(t[35]=e=>P.$clicks("save")),class:"op-icon fa fa-mavon-floppy-o","aria-hidden":"true",title:r.d_words.tl_save+" (ctrl+s)"},null,8,z)):Object(n.createCommentVNode)("v-if",!0),Object(n.renderSlot)(e.$slots,"left-toolbar-after",{},void 0,!0),Object(n.createCommentVNode)(" 添加image链接 "),Object(n.createVNode)(n.Transition,{name:"fade"},{default:Object(n.withCtx)(()=>[H.s_img_link_open?(Object(n.openBlock)(),Object(n.createElementBlock)("div",$,[Object(n.createElementVNode)("div",M,[Object(n.createElementVNode)("i",{onClick:t[36]||(t[36]=Object(n.withModifiers)(e=>H.s_img_link_open=!1,["stop","prevent"])),class:"fa fa-mavon-times","aria-hidden":"true"}),Object(n.createElementVNode)("h3",F,Object(n.toDisplayString)("link"==H.link_type?r.d_words.tl_popup_link_title:r.d_words.tl_popup_img_link_title),1),Object(n.createElementVNode)("div",N,[Object(n.withDirectives)(Object(n.createElementVNode)("input",{ref:"linkTextInput",type:"text","onUpdate:modelValue":t[37]||(t[37]=e=>H.link_text=e),placeholder:"link"==H.link_type?r.d_words.tl_popup_link_text:r.d_words.tl_popup_img_link_text},null,8,B),[[n.vModelText,H.link_text]])]),Object(n.createElementVNode)("div",I,[Object(n.withDirectives)(Object(n.createElementVNode)("input",{type:"text","onUpdate:modelValue":t[38]||(t[38]=e=>H.link_addr=e),placeholder:"link"==H.link_type?r.d_words.tl_popup_link_addr:r.d_words.tl_popup_img_link_addr},null,8,V),[[n.vModelText,H.link_addr]])]),Object(n.createElementVNode)("div",{class:"op-btn cancel",onClick:t[39]||(t[39]=Object(n.withModifiers)(e=>H.s_img_link_open=!1,["stop"]))},Object(n.toDisplayString)(r.d_words.tl_popup_link_cancel),1),Object(n.createElementVNode)("div",{class:"op-btn sure",onClick:t[40]||(t[40]=Object(n.withModifiers)(e=>P.$imgLinkAdd(),["stop"]))},Object(n.toDisplayString)(r.d_words.tl_popup_link_sure),1)])])):Object(n.createCommentVNode)("v-if",!0)]),_:1})])}},function(e,t,r){"use strict";r.d(t,"a",(function(){return g}));var n=r(0);const o={class:"v-right-item"},i=["title"],a=["title"],s=["title"],l=["title"],c=["title"],u=["title"],p=["title"],d=["title"],h={key:8,class:"op-icon-divider"},f=["title"],_=["title"],m=["title"];function g(e,t,r,g,b,v){return Object(n.openBlock)(),Object(n.createElementBlock)("div",o,[Object(n.renderSlot)(e.$slots,"right-toolbar-before"),r.toolbars.navigation?Object(n.withDirectives)((Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:0,type:"button",onClick:t[0]||(t[0]=e=>v.$clicks("navigation")),class:"op-icon fa fa-mavon-bars","aria-hidden":"true",title:r.d_words.tl_navigation_on+" (F8)"},null,8,i)),[[n.vShow,!r.s_navigation]]):Object(n.createCommentVNode)("v-if",!0),r.toolbars.navigation?Object(n.withDirectives)((Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:1,type:"button",onClick:t[1]||(t[1]=e=>v.$clicks("navigation")),class:"op-icon fa fa-mavon-bars selected","aria-hidden":"true",title:r.d_words.tl_navigation_off+" (F8)"},null,8,a)),[[n.vShow,r.s_navigation]]):Object(n.createCommentVNode)("v-if",!0),r.toolbars.preview?Object(n.withDirectives)((Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:2,type:"button",onClick:t[2]||(t[2]=e=>v.$clicks("preview")),class:"op-icon fa fa-mavon-eye-slash selected","aria-hidden":"true",title:r.d_words.tl_edit+" (F9)"},null,8,s)),[[n.vShow,r.s_preview_switch]]):Object(n.createCommentVNode)("v-if",!0),r.toolbars.preview?Object(n.withDirectives)((Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:3,type:"button",onClick:t[3]||(t[3]=e=>v.$clicks("preview")),class:"op-icon fa fa-mavon-eye","aria-hidden":"true",title:r.d_words.tl_preview+" (F9)"},null,8,l)),[[n.vShow,!r.s_preview_switch]]):Object(n.createCommentVNode)("v-if",!0),r.toolbars.fullscreen?Object(n.withDirectives)((Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:4,type:"button",onClick:t[4]||(t[4]=e=>v.$clicks("fullscreen")),class:"op-icon fa fa-mavon-arrows-alt",title:r.d_words.tl_fullscreen_on+" (F10)","aria-hidden":"true"},null,8,c)),[[n.vShow,!r.s_fullScreen]]):Object(n.createCommentVNode)("v-if",!0),r.toolbars.fullscreen?Object(n.withDirectives)((Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:5,type:"button",onClick:t[5]||(t[5]=e=>v.$clicks("fullscreen")),class:"op-icon fa fa-mavon-compress selected",title:r.d_words.tl_fullscreen_off+" (F10)","aria-hidden":"true"},null,8,u)),[[n.vShow,r.s_fullScreen]]):Object(n.createCommentVNode)("v-if",!0),r.toolbars.readmodel?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:6,type:"button",onClick:t[6]||(t[6]=e=>v.$clicks("read")),class:"op-icon fa fa-mavon-window-maximize","aria-hidden":"true",title:r.d_words.tl_read+" (F11)"},null,8,p)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.subfield?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:7,type:"button",onClick:t[7]||(t[7]=e=>v.$clicks("subfield")),class:Object(n.normalizeClass)(["op-icon fa fa-mavon-columns",{selected:r.s_subfield}]),"aria-hidden":"true",title:(r.s_subfield?r.d_words.tl_single_column:r.d_words.tl_double_column)+" (F12)"},null,10,d)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.help&&r.toolbars.htmlcode&&r.toolbars.readmodel&&r.toolbars.fullscreen&&r.toolbars.subfield&&r.toolbars.navigation?(Object(n.openBlock)(),Object(n.createElementBlock)("span",h)):Object(n.createCommentVNode)("v-if",!0),r.toolbars.htmlcode?Object(n.withDirectives)((Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:9,type:"button",onClick:t[8]||(t[8]=e=>v.$clicks("html")),class:"op-icon fa fa-mavon-code",title:r.d_words.tl_html_on,"aria-hidden":"true"},null,8,f)),[[n.vShow,!r.s_html_code]]):Object(n.createCommentVNode)("v-if",!0),r.toolbars.htmlcode?Object(n.withDirectives)((Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:10,type:"button",onClick:t[9]||(t[9]=e=>v.$clicks("html")),class:"op-icon fa fa-mavon-code selected",title:r.d_words.tl_html_off,"aria-hidden":"true"},null,8,_)),[[n.vShow,r.s_html_code]]):Object(n.createCommentVNode)("v-if",!0),r.toolbars.help?(Object(n.openBlock)(),Object(n.createElementBlock)("button",{key:11,type:"button",onClick:t[10]||(t[10]=e=>v.$clicks("help")),class:"op-icon fa fa-mavon-question-circle",style:{"font-size":"17px",padding:"5px 6px 5px 3px"},title:r.d_words.tl_help,"aria-hidden":"true"},null,8,m)):Object(n.createCommentVNode)("v-if",!0),Object(n.renderSlot)(e.$slots,"right-toolbar-after")])}},function(e,t,r){"use strict";r.d(t,"a",(function(){return a}));var n=r(0);const o=Object(n.createElementVNode)("br",null,null,-1),i=["autofocus","placeholder"];function a(e,t,r,a,s,l){return Object(n.openBlock)(),Object(n.createElementBlock)("div",{style:Object(n.normalizeStyle)({fontSize:r.fontSize,lineHeight:r.lineHeight,height:r.fullHeight?"100%":"auto"}),class:"auto-textarea-wrapper"},[Object(n.createElementVNode)("pre",{style:Object(n.normalizeStyle)({fontSize:r.fontSize,lineHeight:r.lineHeight,minHeight:r.fullHeight?"100%":"auto"}),class:"auto-textarea-block"},[o,Object(n.createTextVNode)(Object(n.toDisplayString)(s.temp_value)+" ",1)],4),Object(n.withDirectives)(Object(n.createElementVNode)("textarea",{ref:"vTextarea",autofocus:s.s_autofocus,onKeyup:t[0]||(t[0]=(...e)=>l.change&&l.change(...e)),spellcheck:"false",placeholder:r.placeholder,"onUpdate:modelValue":t[1]||(t[1]=e=>s.temp_value=e),style:Object(n.normalizeStyle)({fontSize:r.fontSize,lineHeight:r.lineHeight}),class:Object(n.normalizeClass)([{"no-border":!r.border,"no-resize":!r.resize},"auto-textarea-input"])},"\r\n      ",46,i),[[n.vModelText,s.temp_value]])],4)}},function(e,t,r){"use strict";var n=r(80).default,o={markdownIt:n.mixins[0].data().markdownIt,mavonEditor:n,LeftToolbar:r(70).default,RightToolbar:r(72).default,install:function(e){e.component("mavon-editor",n)}};e.exports=o},function(e,t,r){"use strict";r.r(t);var n=r(75),o=r(21);for(var i in o)["default"].indexOf(i)<0&&function(e){r.d(t,e,(function(){return o[e]}))}(i);r(219),r(221);var a=r(3);const s=r.n(a)()(o.default,[["render",n.a],["__scopeId","data-v-33c11741"]]);t.default=s},function(e,t,r){e.exports={default:r(82),__esModule:!0}},function(e,t,r){r(83),r(95),e.exports=r(35).f("iterator")},function(e,t,r){"use strict";var n=r(84)(!0);r(45)(String,"String",(function(e){this._t=String(e),this._i=0}),(function(){var e,t=this._t,r=this._i;return r>=t.length?{value:void 0,done:!0}:(e=n(t,r),this._i+=e.length,{value:e,done:!1})}))},function(e,t,r){var n=r(26),o=r(27);e.exports=function(e){return function(t,r){var i,a,s=String(o(t)),l=n(r),c=s.length;return l<0||l>=c?e?"":void 0:(i=s.charCodeAt(l))<55296||i>56319||l+1===c||(a=s.charCodeAt(l+1))<56320||a>57343?e?s.charAt(l):i:e?s.slice(l,l+2):a-56320+(i-55296<<10)+65536}}},function(e,t,r){var n=r(86);e.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,o){return e.call(t,r,n,o)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,r){"use strict";var n=r(50),o=r(16),i=r(34),a={};r(5)(a,r(9)("iterator"),(function(){return this})),e.exports=function(e,t,r){e.prototype=n(a,{next:o(1,r)}),i(e,t+" Iterator")}},function(e,t,r){var n=r(6),o=r(14),i=r(30);e.exports=r(7)?Object.defineProperties:function(e,t){o(e);for(var r,a=i(t),s=a.length,l=0;s>l;)n.f(e,r=a[l++],t[r]);return e}},function(e,t,r){var n=r(52);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},function(e,t,r){var n=r(8),o=r(91),i=r(92);e.exports=function(e){return function(t,r,a){var s,l=n(t),c=o(l.length),u=i(a,c);if(e&&r!=r){for(;c>u;)if((s=l[u++])!=s)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===r)return e||u||0;return!e&&-1}}},function(e,t,r){var n=r(26),o=Math.min;e.exports=function(e){return e>0?o(n(e),9007199254740991):0}},function(e,t,r){var n=r(26),o=Math.max,i=Math.min;e.exports=function(e,t){return(e=n(e))<0?o(e+t,0):i(e,t)}},function(e,t,r){var n=r(2).document;e.exports=n&&n.documentElement},function(e,t,r){var n=r(4),o=r(53),i=r(31)("IE_PROTO"),a=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=o(e),n(e,i)?e[i]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},function(e,t,r){r(96);for(var n=r(2),o=r(5),i=r(29),a=r(9)("toStringTag"),s="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),l=0;l<s.length;l++){var c=s[l],u=n[c],p=u&&u.prototype;p&&!p[a]&&o(p,a,c),i[c]=i.Array}},function(e,t,r){"use strict";var n=r(97),o=r(98),i=r(29),a=r(8);e.exports=r(45)(Array,"Array",(function(e,t){this._t=a(e),this._i=0,this._k=t}),(function(){var e=this._t,t=this._k,r=this._i++;return!e||r>=e.length?(this._t=void 0,o(1)):o(0,"keys"==t?r:"values"==t?e[r]:[r,e[r]])}),"values"),i.Arguments=i.Array,n("keys"),n("values"),n("entries")},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,r){e.exports={default:r(100),__esModule:!0}},function(e,t,r){r(101),r(107),r(108),r(109),e.exports=r(13).Symbol},function(e,t,r){"use strict";var n=r(2),o=r(4),i=r(7),a=r(46),s=r(49),l=r(102).KEY,c=r(15),u=r(32),p=r(34),d=r(17),h=r(9),f=r(35),_=r(36),m=r(103),g=r(104),b=r(14),v=r(10),k=r(53),w=r(8),y=r(28),x=r(16),C=r(50),j=r(105),O=r(106),S=r(54),E=r(6),T=r(30),A=O.f,D=E.f,L=j.f,q=n.Symbol,z=n.JSON,$=z&&z.stringify,M=h("_hidden"),F=h("toPrimitive"),N={}.propertyIsEnumerable,B=u("symbol-registry"),I=u("symbols"),V=u("op-symbols"),R=Object.prototype,H="function"==typeof q&&!!S.f,P=n.QObject,W=!P||!P.prototype||!P.prototype.findChild,U=i&&c((function(){return 7!=C(D({},"a",{get:function(){return D(this,"a",{value:7}).a}})).a}))?function(e,t,r){var n=A(R,t);n&&delete R[t],D(e,t,r),n&&e!==R&&D(R,t,n)}:D,G=function(e){var t=I[e]=C(q.prototype);return t._k=e,t},K=H&&"symbol"==typeof q.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof q},Z=function(e,t,r){return e===R&&Z(V,t,r),b(e),t=y(t,!0),b(r),o(I,t)?(r.enumerable?(o(e,M)&&e[M][t]&&(e[M][t]=!1),r=C(r,{enumerable:x(0,!1)})):(o(e,M)||D(e,M,x(1,{})),e[M][t]=!0),U(e,t,r)):D(e,t,r)},X=function(e,t){b(e);for(var r,n=m(t=w(t)),o=0,i=n.length;i>o;)Z(e,r=n[o++],t[r]);return e},J=function(e){var t=N.call(this,e=y(e,!0));return!(this===R&&o(I,e)&&!o(V,e))&&(!(t||!o(this,e)||!o(I,e)||o(this,M)&&this[M][e])||t)},Q=function(e,t){if(e=w(e),t=y(t,!0),e!==R||!o(I,t)||o(V,t)){var r=A(e,t);return!r||!o(I,t)||o(e,M)&&e[M][t]||(r.enumerable=!0),r}},Y=function(e){for(var t,r=L(w(e)),n=[],i=0;r.length>i;)o(I,t=r[i++])||t==M||t==l||n.push(t);return n},ee=function(e){for(var t,r=e===R,n=L(r?V:w(e)),i=[],a=0;n.length>a;)!o(I,t=n[a++])||r&&!o(R,t)||i.push(I[t]);return i};H||(s((q=function(){if(this instanceof q)throw TypeError("Symbol is not a constructor!");var e=d(arguments.length>0?arguments[0]:void 0),t=function(r){this===R&&t.call(V,r),o(this,M)&&o(this[M],e)&&(this[M][e]=!1),U(this,e,x(1,r))};return i&&W&&U(R,e,{configurable:!0,set:t}),G(e)}).prototype,"toString",(function(){return this._k})),O.f=Q,E.f=Z,r(55).f=j.f=Y,r(37).f=J,S.f=ee,i&&!r(12)&&s(R,"propertyIsEnumerable",J,!0),f.f=function(e){return G(h(e))}),a(a.G+a.W+a.F*!H,{Symbol:q});for(var te="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),re=0;te.length>re;)h(te[re++]);for(var ne=T(h.store),oe=0;ne.length>oe;)_(ne[oe++]);a(a.S+a.F*!H,"Symbol",{for:function(e){return o(B,e+="")?B[e]:B[e]=q(e)},keyFor:function(e){if(!K(e))throw TypeError(e+" is not a symbol!");for(var t in B)if(B[t]===e)return t},useSetter:function(){W=!0},useSimple:function(){W=!1}}),a(a.S+a.F*!H,"Object",{create:function(e,t){return void 0===t?C(e):X(C(e),t)},defineProperty:Z,defineProperties:X,getOwnPropertyDescriptor:Q,getOwnPropertyNames:Y,getOwnPropertySymbols:ee});var ie=c((function(){S.f(1)}));a(a.S+a.F*ie,"Object",{getOwnPropertySymbols:function(e){return S.f(k(e))}}),z&&a(a.S+a.F*(!H||c((function(){var e=q();return"[null]"!=$([e])||"{}"!=$({a:e})||"{}"!=$(Object(e))}))),"JSON",{stringify:function(e){for(var t,r,n=[e],o=1;arguments.length>o;)n.push(arguments[o++]);if(r=t=n[1],(v(t)||void 0!==e)&&!K(e))return g(t)||(t=function(e,t){if("function"==typeof r&&(t=r.call(this,e,t)),!K(t))return t}),n[1]=t,$.apply(z,n)}}),q.prototype[F]||r(5)(q.prototype,F,q.prototype.valueOf),p(q,"Symbol"),p(Math,"Math",!0),p(n.JSON,"JSON",!0)},function(e,t,r){var n=r(17)("meta"),o=r(10),i=r(4),a=r(6).f,s=0,l=Object.isExtensible||function(){return!0},c=!r(15)((function(){return l(Object.preventExtensions({}))})),u=function(e){a(e,n,{value:{i:"O"+ ++s,w:{}}})},p=e.exports={KEY:n,NEED:!1,fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,n)){if(!l(e))return"F";if(!t)return"E";u(e)}return e[n].i},getWeak:function(e,t){if(!i(e,n)){if(!l(e))return!0;if(!t)return!1;u(e)}return e[n].w},onFreeze:function(e){return c&&p.NEED&&l(e)&&!i(e,n)&&u(e),e}}},function(e,t,r){var n=r(30),o=r(54),i=r(37);e.exports=function(e){var t=n(e),r=o.f;if(r)for(var a,s=r(e),l=i.f,c=0;s.length>c;)l.call(e,a=s[c++])&&t.push(a);return t}},function(e,t,r){var n=r(52);e.exports=Array.isArray||function(e){return"Array"==n(e)}},function(e,t,r){var n=r(8),o=r(55).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return a&&"[object Window]"==i.call(e)?function(e){try{return o(e)}catch(e){return a.slice()}}(e):o(n(e))}},function(e,t,r){var n=r(37),o=r(16),i=r(8),a=r(28),s=r(4),l=r(47),c=Object.getOwnPropertyDescriptor;t.f=r(7)?c:function(e,t){if(e=i(e),t=a(t,!0),l)try{return c(e,t)}catch(e){}if(s(e,t))return o(!n.f.call(e,t),e[t])}},function(e,t){},function(e,t,r){r(36)("asyncIterator")},function(e,t,r){r(36)("observable")},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=119,o=120,i=121,a=122,s=123,l=66,c=73,u=72,p=85,d=68,h=77,f=81,_=79,m=76,g=83,b=90,v=89,k=67,w=84,y=82,x=8,C=9,j=13,O=97,S=98,E=99,T=100,A=101,D=102,L=49,q=50,z=51,$=52,M=53,F=54;t.keydownListen=function(e){e.shortCut&&e.$el.addEventListener("keydown",(function(t){if(t.ctrlKey||t.metaKey||t.altKey||t.shiftKey)if(!t.ctrlKey&&!t.metaKey||t.altKey||t.shiftKey){if((t.ctrlKey||t.metaKey)&&t.altKey&&!t.shiftKey)switch(t.keyCode){case g:t.preventDefault(),e.toolbar_left_click("superscript");break;case p:t.preventDefault(),e.toolbar_left_click("ul");break;case m:t.preventDefault(),e.toolbar_left_click("imagelink");break;case k:t.preventDefault(),e.toolbar_left_click("code");break;case w:t.preventDefault(),e.toolbar_left_click("table")}else if((t.ctrlKey||t.metaKey)&&t.shiftKey&&!t.altKey)switch(t.keyCode){case g:t.preventDefault(),e.toolbar_left_click("subscript");break;case d:t.preventDefault(),e.toolbar_left_click("strikethrough");break;case m:t.preventDefault(),e.toolbar_left_click("alignleft");break;case y:t.preventDefault(),e.toolbar_left_click("alignright");break;case k:t.preventDefault(),e.toolbar_left_click("aligncenter")}else if(!t.ctrlKey&&!t.metaKey&&t.shiftKey&&!t.altKey)switch(t.keyCode){case C:e.$refs.toolbar_left.s_img_link_open||(t.preventDefault(),e.unInsertTab())}}else switch(t.keyCode){case l:t.preventDefault(),e.toolbar_left_click("bold");break;case c:t.preventDefault(),e.toolbar_left_click("italic");break;case u:t.preventDefault(),e.toolbar_left_click("header");break;case p:t.preventDefault(),e.toolbar_left_click("underline");break;case d:t.preventDefault(),e.toolbar_left_click("removeLine");break;case h:t.preventDefault(),e.toolbar_left_click("mark");break;case f:t.preventDefault(),e.toolbar_left_click("quote");break;case _:t.preventDefault(),e.toolbar_left_click("ol");break;case m:t.preventDefault(),e.toolbar_left_click("link");break;case g:t.preventDefault(),e.toolbar_left_click("save");break;case b:t.preventDefault(),e.toolbar_left_click("undo");break;case v:t.preventDefault(),e.toolbar_left_click("redo");break;case x:t.preventDefault(),e.toolbar_left_click("trash");break;case O:t.preventDefault(),e.toolbar_left_click("header1");break;case S:t.preventDefault(),e.toolbar_left_click("header2");break;case E:t.preventDefault(),e.toolbar_left_click("header3");break;case T:t.preventDefault(),e.toolbar_left_click("header4");break;case A:t.preventDefault(),e.toolbar_left_click("header5");break;case D:t.preventDefault(),e.toolbar_left_click("header6");break;case L:t.preventDefault(),e.toolbar_left_click("header1");break;case q:t.preventDefault(),e.toolbar_left_click("header2");break;case z:t.preventDefault(),e.toolbar_left_click("header3");break;case $:t.preventDefault(),e.toolbar_left_click("header4");break;case M:t.preventDefault(),e.toolbar_left_click("header5");break;case F:t.preventDefault(),e.toolbar_left_click("header6")}else switch(t.keyCode){case n:e.toolbars.navigation&&(t.preventDefault(),e.toolbar_right_click("navigation"));break;case o:e.toolbars.preview&&(t.preventDefault(),e.toolbar_right_click("preview"));break;case i:e.toolbars.fullscreen&&(t.preventDefault(),e.toolbar_right_click("fullscreen"));break;case a:e.toolbars.readmodel&&(t.preventDefault(),e.toolbar_right_click("read"));break;case s:e.toolbars.subfield&&(t.preventDefault(),e.toolbar_right_click("subfield"));break;case C:e.$refs.toolbar_left.s_img_link_open||(t.preventDefault(),e.insertTab());break;case j:e.$refs.toolbar_left.s_img_link_open?(t.preventDefault(),e.$refs.toolbar_left.$imgLinkAdd()):e.insertEnter(t)}}))}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={agate:1,androidstudio:1,"arduino-light":1,arta:1,ascetic:1,"atom-one-dark":1,"atom-one-light":1,"brown-paper":1,"codepen-embed":1,"color-brewer":1,dark:1,default:1,docco:1,far:1,foundation:1,github:1,googlecode:1,grayscale:1,hybrid:1,idea:1,"ir-black":1,magula:1,"mono-blue":1,"monokai-sublime":1,monokai:1,obsidian:1,"paraiso-dark":1,"paraiso-light":1,pojoaque:1,purebasic:1,rainbow:1,routeros:1,"school-book":1,sunburst:1,"tomorrow-night-blue":1,"tomorrow-night-bright":1,vs:1,vs2015:1,xcode:1,xt256:1,"a11y-dark":1,"a11y-light":1,"an-old-hope":1,"atom-one-dark-reasonable":1,"brown-pap":1,devibeans:1,"github-dark":1,"github-dark-dimmed":1,gml:1,"gradient-dark":1,"gradient-light":1,"isbl-editor-dark":1,"isbl-editor-light":1,"kimbie-dark":1,"kimbie-light":1,lightfair:1,lioshi:1,"night-owl":1,"nnfx-dark":1,"nnfx-light":1,nord:1,pojo:1,"qtcreator-dark":1,"qtcreator-light":1,"shades-of-purple":1,srcery:1,"stackoverflow-dark":1,"stackoverflow-light":1}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,o=r(25),i=(n=o)&&n.__esModule?n:{default:n};t.p_ObjectCopy_DEEP=function e(t,r){for(var n in r){var o=(0,i.default)(r[n]);!t[n]||"Object"!==o&&"object"!==o?t[n]=r[n]:t[n]=e(t[n],r[n])}return t},t.p_urlParse=function(){var e=window.location.search,t={},r=e.match(/[?&][^?&]+=[^?&]+/g);r&&r.forEach((function(e){var r=e.substring(1).split("="),n=decodeURIComponent(r[0]),o=decodeURIComponent(r[1]);t[n]=o}));return t},t.stopEvent=function(e){if(!e)return;e.preventDefault&&e.preventDefault();e.stopPropagation&&e.stopPropagation()}},function(e,t,r){"use strict";function n(e){e.d_history_index>0&&e.d_history_index--,e.$nextTick((function(){var t=e.textarea_selectionEnds[e.d_history_index];e.getTextareaDom().selectionStart=t,e.getTextareaDom().selectionEnd=t})),e.getTextareaDom().focus()}function o(e){e.d_history_index<e.d_history.length-1&&e.d_history_index++,e.$nextTick((function(){var t=e.textarea_selectionEnds[e.d_history_index];e.getTextareaDom().selectionStart=t,e.getTextareaDom().selectionEnd=t})),e.getTextareaDom().focus()}function i(e){e.d_value="",e.getTextareaDom().focus()}function a(e){e.save(e.d_value,e.d_render)}function s(e){e.insertOl()}function l(e){e.insertUl()}function c(e){e.removeLine()}function u(e){e.insertCodeBlock()}Object.defineProperty(t,"__esModule",{value:!0});t.toolbar_left_addlink=function(e,t,r,n){var o={prefix:"link"===e?"["+t+"](":"!["+t+"](",subfix:")",str:r};n.insertText(n.getTextareaDom(),o)},t.toolbar_left_click=function(e,t){var r={bold:{prefix:"**",subfix:"**",str:t.d_words.tl_bold},italic:{prefix:"*",subfix:"*",str:t.d_words.tl_italic},header:{prefix:"# ",subfix:"",str:t.d_words.tl_header},header1:{prefix:"# ",subfix:"",str:t.d_words.tl_header_one},header2:{prefix:"## ",subfix:"",str:t.d_words.tl_header_two},header3:{prefix:"### ",subfix:"",str:t.d_words.tl_header_three},header4:{prefix:"#### ",subfix:"",str:t.d_words.tl_header_four},header5:{prefix:"##### ",subfix:"",str:t.d_words.tl_header_five},header6:{prefix:"###### ",subfix:"",str:t.d_words.tl_header_six},underline:{prefix:"++",subfix:"++",str:t.d_words.tl_underline},strikethrough:{prefix:"~~",subfix:"~~",str:t.d_words.tl_strikethrough},mark:{prefix:"==",subfix:"==",str:t.d_words.tl_mark},superscript:{prefix:"^",subfix:"^",str:t.d_words.tl_superscript},subscript:{prefix:"~",subfix:"~",str:t.d_words.tl_subscript},quote:{prefix:"> ",subfix:"",str:t.d_words.tl_quote},link:{prefix:"[](",subfix:")",str:t.d_words.tl_link},imagelink:{prefix:"![](",subfix:")",str:t.d_words.tl_image},table:{prefix:"",subfix:"",str:"|column1|column2|column3|\n|-|-|-|\n|content1|content2|content3|\n"},aligncenter:{prefix:"::: hljs-center\n\n",subfix:"\n\n:::\n",str:t.d_words.tl_aligncenter},alignright:{prefix:"::: hljs-right\n\n",subfix:"\n\n:::\n",str:t.d_words.tl_alignright},alignleft:{prefix:"::: hljs-left\n\n",subfix:"\n\n:::\n",str:t.d_words.tl_alignleft}};r.hasOwnProperty(e)&&t.insertText(t.getTextareaDom(),r[e]);var p={undo:n,redo:o,trash:i,save:a,ol:s,ul:l,removeLine:c,code:u};p.hasOwnProperty(e)&&p[e](t)}},function(e,t,r){"use strict";function n(e){e.s_html_code=!e.s_html_code,e.htmlcode&&e.htmlcode(e.s_html_code,e.d_value)}function o(e){e.s_help=!e.s_help,e.helptoggle&&e.helptoggle(e.s_help,e.d_value)}function i(e){var t=e.$refs.vReadModel;t.requestFullscreen?t.requestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.msRequestFullscreen&&t.msRequestFullscreen()}function a(e){e.s_preview_switch=!e.s_preview_switch,e.previewtoggle&&e.previewtoggle(e.s_preview_switch,e.d_value)}function s(e){e.s_fullScreen=!e.s_fullScreen,e.fullscreen&&e.fullscreen(e.s_fullScreen,e.d_value)}function l(e){e.s_subfield=!e.s_subfield,e.s_preview_switch=e.s_subfield,e.previewtoggle&&e.previewtoggle(e.s_preview_switch,e.d_value),e.subfieldtoggle&&e.subfieldtoggle(e.s_subfield,e.d_value)}function c(e){e.s_navigation=!e.s_navigation,e.s_navigation&&(e.s_preview_switch=!0),e.navigationtoggle&&e.navigationtoggle(e.s_navigation,e.d_value),e.s_navigation&&e.getNavigation(e,!1)}Object.defineProperty(t,"__esModule",{value:!0});t.toolbar_right_click=function(e,t){var r={help:o,html:n,read:i,preview:a,fullscreen:s,navigation:c,subfield:l};r.hasOwnProperty(e)&&r[e](t)}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CONFIG=void 0;var n=v(r(116)),o=v(r(117)),i=v(r(118)),a=v(r(119)),s=v(r(120)),l=v(r(121)),c=v(r(122)),u=v(r(123)),p=v(r(124)),d=v(r(125)),h=v(r(126)),f=v(r(127)),_=v(r(128)),m=v(r(129)),g=v(r(130)),b=v(r(131));function v(e){return e&&e.__esModule?e:{default:e}}t.CONFIG={"help_zh-CN":n.default,"help_zh-TW":o.default,"help_pt-BR":s.default,help_en:i.default,help_fr:a.default,help_ru:l.default,help_de:c.default,help_ja:u.default,"words_zh-CN":p.default,"words_zh-TW":d.default,"words_pt-BR":_.default,words_en:h.default,words_fr:f.default,words_ru:m.default,words_de:g.default,words_ja:b.default,langList:["en","zh-CN","zh-TW","fr","pt-BR","ru","de","ja"],toolbars:{bold:!0,italic:!0,header:!0,underline:!0,strikethrough:!0,mark:!0,superscript:!0,subscript:!0,quote:!0,ol:!0,ul:!0,link:!0,imagelink:!0,code:!0,table:!0,undo:!0,redo:!0,trash:!0,save:!0,alignleft:!0,aligncenter:!0,alignright:!0,navigation:!0,subfield:!0,fullscreen:!0,readmodel:!0,htmlcode:!0,help:!0,preview:!0}}},function(e,t){e.exports='@[toc](目录)\r\n\r\nMarkdown 语法简介\r\n=============\r\n> [语法详解](http://commonmark.org/help/)\r\n\r\n## **目录**\r\n```\r\n@[toc](目录)\r\n```\r\n\r\n## **粗体**\r\n```\r\n**粗体**\r\n__粗体__\r\n```\r\n## *斜体*\r\n```\r\n*斜体*\r\n_斜体_\r\n```\r\n## 标题\r\n```\r\n# 一级标题 #\r\n一级标题\r\n====\r\n## 二级标题 ##\r\n二级标题\r\n----\r\n### 三级标题 ###\r\n#### 四级标题 ####\r\n##### 五级标题 #####\r\n###### 六级标题 ######\r\n```\r\n## 分割线\r\n```\r\n***\r\n---\r\n```\r\n****\r\n## ^上^角~下~标\r\n```\r\n上角标 x^2^\r\n下角标 H~2~0\r\n```\r\n## ++下划线++ ~~中划线~~\r\n```\r\n++下划线++\r\n~~中划线~~\r\n```\r\n## ==标记==\r\n```\r\n==标记==\r\n```\r\n## 段落引用\r\n```\r\n> 一级\r\n>> 二级\r\n>>> 三级\r\n...\r\n```\r\n\r\n## 列表\r\n```\r\n有序列表\r\n1.\r\n2.\r\n3.\r\n...\r\n无序列表\r\n-\r\n-\r\n...\r\n```\r\n\r\n## 任务列表\r\n\r\n- [x] 已完成任务\r\n- [ ] 未完成任务\r\n\r\n```\r\n- [x] 已完成任务\r\n- [ ] 未完成任务\r\n```\r\n\r\n## 链接\r\n```\r\n[链接](www.baidu.com)\r\n![图片描述](http://www.image.com)\r\n```\r\n## 代码段落\r\n\\``` type\r\n\r\n代码段落\r\n\r\n\\```\r\n\r\n\\` 代码块 \\`\r\n\r\n```c++\r\nint main()\r\n{\r\n    printf("hello world!");\r\n}\r\n```\r\n`code`\r\n## 表格(table)\r\n```\r\n| 标题1 | 标题2 | 标题3 |\r\n| :--  | :--: | ----: |\r\n| 左对齐 | 居中 | 右对齐 |\r\n| ---------------------- | ------------- | ----------------- |\r\n```\r\n| 标题1 | 标题2 | 标题3 |\r\n| :--  | :--: | ----: |\r\n| 左对齐 | 居中 | 右对齐 |\r\n| ---------------------- | ------------- | ----------------- |\r\n## 脚注(footnote)\r\n```\r\nhello[^hello]\r\n```\r\n\r\n见底部脚注[^hello]\r\n\r\n[^hello]: 一个注脚\r\n\r\n## 表情(emoji)\r\n[参考网站: https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)\r\n```\r\n:laughing:\r\n:blush:\r\n:smiley:\r\n:)\r\n...\r\n```\r\n:laughing::blush::smiley::)\r\n\r\n## $\\KaTeX$公式\r\n\r\n我们可以渲染公式例如:$x_i + y_i = z_i$和$\\sum_{i=1}^n a_i=0$\r\n我们也可以单行渲染\r\n$$\\sum_{i=1}^n a_i=0$$\r\n具体可参照[katex文档](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex支持的函数](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex文档](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)\r\n\r\n## 布局\r\n\r\n::: hljs-left\r\n`::: hljs-left`\r\n`居左`\r\n`:::`\r\n:::\r\n\r\n::: hljs-center\r\n`::: hljs-center`\r\n`居中`\r\n`:::`\r\n:::\r\n\r\n::: hljs-right\r\n`::: hljs-right`\r\n`居右`\r\n`:::`\r\n:::\r\n\r\n## 定义\r\n\r\n术语一\r\n\r\n:   定义一\r\n\r\n包含有*行内标记*的术语二\r\n\r\n:   定义二\r\n\r\n        {一些定义二的文字或代码}\r\n\r\n    定义二的第三段\r\n\r\n```\r\n术语一\r\n\r\n:   定义一\r\n\r\n包含有*行内标记*的术语二\r\n\r\n:   定义二\r\n\r\n        {一些定义二的文字或代码}\r\n\r\n    定义二的第三段\r\n\r\n```\r\n\r\n## abbr\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]:  World Wide Web Consortium\r\nHTML 规范由 W3C 维护\r\n```\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]:  World Wide Web Consortium\r\nHTML 规范由 W3C 维护\r\n```\r\n\r\n'},function(e,t){e.exports='@[toc](目錄)\r\n\r\nMarkdown 語法簡介\r\n=============\r\n> [語法詳解](http://commonmark.org/help/)\r\n\r\n## **粗體**\r\n```\r\n**粗體**\r\n__粗體__\r\n```\r\n## *斜體*\r\n```\r\n*斜體*\r\n_斜體_\r\n```\r\n## 標題\r\n```\r\n# 一級標題 #\r\n一級標題\r\n====\r\n## 二級標題 ##\r\n二級標題\r\n----\r\n### 三級標題 ###\r\n#### 四級標題 ####\r\n##### 五級標題 #####\r\n###### 六級標題 ######\r\n```\r\n## 分割線\r\n```\r\n***\r\n---\r\n```\r\n****\r\n## ^上^角~下~標\r\n```\r\n上角標 x^2^\r\n下角標 H~2~0\r\n```\r\n## ++下劃線++ ~~中劃線~~\r\n```\r\n++下劃線++\r\n~~中劃線~~\r\n```\r\n## ==標記==\r\n```\r\n==標記==\r\n```\r\n## 段落引用\r\n```\r\n> 一級\r\n>> 二級\r\n>>> 三級\r\n...\r\n```\r\n\r\n## 列表\r\n```\r\n有序列表\r\n1.\r\n2.\r\n3.\r\n...\r\n無序列表\r\n-\r\n-\r\n...\r\n```\r\n\r\n## 任務列表\r\n\r\n- [x] 已完成任務\r\n- [ ] 未完成任務\r\n\r\n```\r\n- [x] 已完成任務\r\n- [ ] 未完成任務\r\n```\r\n\r\n## 鏈接\r\n```\r\n[鏈接](www.baidu.com)\r\n![圖片描述](http://www.image.com)\r\n```\r\n## 代碼段落\r\n\\``` type\r\n\r\n代碼段落\r\n\r\n\\```\r\n\r\n\\` 代碼塊 \\`\r\n\r\n```c++\r\nint main()\r\n{\r\n    printf("hello world!");\r\n}\r\n```\r\n`code`\r\n## 表格(table)\r\n```\r\n| 標題1 | 標題2 | 標題3 |\r\n| :--  | :--: | ----: |\r\n| 左對齊 | 居中 | 右對齊 |\r\n| ---------------------- | ------------- | ----------------- |\r\n```\r\n| 標題1 | 標題2 | 標題3 |\r\n| :--  | :--: | ----: |\r\n| 左對齊 | 居中 | 右對齊 |\r\n| ---------------------- | ------------- | ----------------- |\r\n## 腳註(footnote)\r\n```\r\nhello[^hello]\r\n```\r\n\r\n見底部腳註[^hello]\r\n\r\n[^hello]: 一個註腳\r\n\r\n## 表情(emoji)\r\n[參考網站: https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)\r\n```\r\n:laughing:\r\n:blush:\r\n:smiley:\r\n:)\r\n...\r\n```\r\n:laughing::blush::smiley::)\r\n\r\n## $\\KaTeX$公式\r\n\r\n我們可以渲染公式例如:$x_i + y_i = z_i$和$\\sum_{i=1}^n a_i=0$\r\n我們也可以單行渲染\r\n$$\\sum_{i=1}^n a_i=0$$\r\n具體可參照[katex文檔](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex支持的函數](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex文檔](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)\r\n\r\n## 布局\r\n\r\n::: hljs-left\r\n`::: hljs-left`\r\n`居左`\r\n`:::`\r\n:::\r\n\r\n::: hljs-center\r\n`::: hljs-center`\r\n`居中`\r\n`:::`\r\n:::\r\n\r\n::: hljs-right\r\n`::: hljs-right`\r\n`居右`\r\n`:::`\r\n:::\r\n\r\n## 定義\r\n\r\n術語一\r\n\r\n:   定義一\r\n\r\n包含有*行內標記*的術語二\r\n\r\n:   定義二\r\n\r\n        {一些定義二的文字或代碼}\r\n\r\n    定義二的第三段\r\n\r\n```\r\n術語一\r\n\r\n:   定義一\r\n\r\n包含有*行內標記*的術語二\r\n\r\n:   定義二\r\n\r\n        {一些定義二的文字或代碼}\r\n\r\n    定義二的第三段\r\n\r\n```\r\n\r\n## abbr\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]:  World Wide Web Consortium\r\nHTML 規範由 W3C 維護\r\n```\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]:  World Wide Web Consortium\r\nHTML 規範由 W3C 維護\r\n```\r\n\r\n'},function(e,t){e.exports='@[toc](Catalog)\r\n\r\nMarkdown Guide\r\n===\r\n> Detailed: [http://commonmark.org/help/](http://commonmark.org/help/)\r\n\r\n## **Bold**\r\n```\r\n**bold**\r\n__bold__\r\n```\r\n## *Italic*\r\n```\r\n*italic*\r\n_italic_\r\n```\r\n## Header\r\n```\r\n# h1 #\r\nh1\r\n====\r\n## h2 ##\r\nh2\r\n----\r\n### h3 ###\r\n#### h4 ####\r\n##### h5 #####\r\n###### h6 ######\r\n```\r\n## Dividing line\r\n```\r\n***\r\n---\r\n```\r\n****\r\n## ^Super^script & ~Sub~script\r\n```\r\nsuper x^2^\r\nsub H~2~0\r\n```\r\n## ++Underline++ & ~~Strikethrough~~\r\n```\r\n++underline++\r\n~~strikethrough~~\r\n```\r\n## ==Mark==\r\n```\r\n==mark==\r\n```\r\n## Quote\r\n\r\n```\r\n> quote 1\r\n>> quote 2\r\n>>> quote 3\r\n...\r\n```\r\n\r\n## List\r\n```\r\nol\r\n1.\r\n2.\r\n3.\r\n...\r\n\r\nul\r\n-\r\n-\r\n...\r\n```\r\n\r\n## Todo List\r\n\r\n- [x] task 1\r\n- [ ] task 2\r\n\r\n```\r\n- [x] task 1\r\n- [ ] task 2\r\n```\r\n\r\n## Link\r\n```\r\nText Link\r\n[Text](www.baidu.com)\r\n\r\nImage Link\r\n![Text](http://www.image.com)\r\n```\r\n## Code\r\n\\``` type\r\n\r\ncode block\r\n\r\n\\```\r\n\r\n\\` code \\`\r\n\r\n```c++\r\nint main()\r\n{\r\n    printf("hello world!");\r\n}\r\n```\r\n`code`\r\n\r\n## Table\r\n```\r\n| th1 | th2 | th3 |\r\n| :--  | :--: | ----: |\r\n| left | center | right |\r\n```\r\n| th1 | th2 | th3 |\r\n| :--  | :--: | ----: |\r\n| left | center | right |\r\n| ---------------------- | ------------- | ----------------- |\r\n## Footnote\r\n```\r\nhello[^hello]\r\n```\r\n\r\nLook at the bottom[^hello]\r\n\r\n[^hello]: footnote\r\n\r\n## Emojis\r\nDetailed: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)\r\n```\r\n:laughing:\r\n:blush:\r\n:smiley:\r\n:)\r\n...\r\n```\r\n:laughing::blush::smiley::)\r\n\r\n## $\\KaTeX$ Mathematics\r\n\r\nWe can render formulas for example:$x_i + y_i = z_i$ and $\\sum_{i=1}^n a_i=0$\r\nWe can also single-line rendering\r\n$$\\sum_{i=1}^n a_i=0$$\r\nDetailed: [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)\r\n\r\n## Layout\r\n\r\n::: hljs-left\r\n`::: hljs-left`\r\n`left`\r\n`:::`\r\n:::\r\n\r\n::: hljs-center\r\n`::: hljs-center`\r\n`center`\r\n`:::`\r\n:::\r\n\r\n::: hljs-right\r\n`::: hljs-right`\r\n`right`\r\n`:::`\r\n:::\r\n\r\n## deflist\r\n\r\nTerm 1\r\n\r\n:   Definition 1\r\n\r\nTerm 2 with *inline markup*\r\n\r\n:   Definition 2\r\n\r\n        { some code, part of Definition 2 }\r\n\r\n    Third paragraph of definition 2.\r\n\r\n```\r\nTerm 1\r\n\r\n:   Definition 1\r\n\r\nTerm 2 with *inline markup*\r\n\r\n:   Definition 2\r\n\r\n        { some code, part of Definition 2 }\r\n\r\n    Third paragraph of definition 2.\r\n\r\n```\r\n\r\n## abbr\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]:  World Wide Web Consortium\r\nThe HTML specification\r\nis maintained by the W3C.\r\n```\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]:  World Wide Web Consortium\r\nThe HTML specification\r\nis maintained by the W3C.\r\n```\r\n'},function(e,t){e.exports='@[toc](Catalogue)\r\n\r\nGuide Markdown\r\n==============\r\n> Détail : [http://commonmark.org/help/](http://commonmark.org/help/)\r\n\r\n## **Bold**\r\n```\r\n**bold**\r\n__bold__\r\n```\r\n## *Italic*\r\n```\r\n*italic*\r\n_italic_\r\n```\r\n## Header\r\n```\r\n# h1 #\r\nh1\r\n====\r\n## h2 ##\r\nh2\r\n----\r\n### h3 ###\r\n#### h4 ####\r\n##### h5 #####\r\n###### h6 ######\r\n```\r\n## Dividing line\r\n```\r\n***\r\n---\r\n```\r\n****\r\n## ^Super^script & ~Sub~script\r\n```\r\nsuper x^2^\r\nsub H~2~0\r\n```\r\n## ++Underline++ & ~~Strikethrough~~\r\n```\r\n++underline++\r\n~~strikethrough~~\r\n```\r\n## ==Mark==\r\n```\r\n==mark==\r\n```\r\n## Quote\r\n\r\n```\r\n> quote 1\r\n>> quote 2\r\n>>> quote 3\r\n...\r\n```\r\n\r\n## List\r\n```\r\nol\r\n1.\r\n2.\r\n3.\r\n...\r\n\r\nul\r\n-\r\n-\r\n...\r\n```\r\n## Link\r\n\r\n## Todo List\r\n\r\n- [x] Équipe 1\r\n- [ ] Équipe 2\r\n\r\n```\r\n- [x] Équipe 1\r\n- [ ] Équipe 2\r\n```\r\n\r\n```\r\nText Link\r\n[Text](www.baidu.com)\r\n\r\nImage Link\r\n![Text](http://www.image.com)\r\n```\r\n## Code\r\n\\``` type\r\n\r\ncode block\r\n\r\n\\```\r\n\r\n\\` code \\`\r\n\r\n```c++\r\nint main()\r\n{\r\n    printf("hello world!");\r\n}\r\n```\r\n`code`\r\n\r\n## Table\r\n```\r\n| th1 | th2 | th3 |\r\n| :--  | :--: | ----: |\r\n| left | center | right |\r\n```\r\n| th1 | th2 | th3 |\r\n| :--  | :--: | ----: |\r\n| left | center | right |\r\n| ---------------------- | ------------- | ----------------- |\r\n## Footnote\r\n```\r\nhello[^hello]\r\n```\r\n\r\nLook at the bottom[^hello]\r\n\r\n[^hello]: footnote\r\n\r\n## Emojis\r\nDetailed: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)\r\n```\r\n:laughing:\r\n:blush:\r\n:smiley:\r\n:)\r\n...\r\n```\r\n:laughing::blush::smiley::)\r\n\r\n## $\\KaTeX$ Mathematics\r\n\r\nWe can render formulas for example:$x_i + y_i = z_i$ and $\\sum_{i=1}^n a_i=0$\r\nWe can also single-line rendering\r\n$$\\sum_{i=1}^n a_i=0$$\r\nDetailed: [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)\r\n\r\n## Layout\r\n\r\n::: hljs-left\r\n`::: hljs-left`\r\n`left`\r\n`:::`\r\n:::\r\n\r\n::: hljs-center\r\n`::: hljs-center`\r\n`center`\r\n`:::`\r\n:::\r\n\r\n::: hljs-right\r\n`::: hljs-right`\r\n`right`\r\n`:::`\r\n:::\r\n\r\n## deflist\r\n\r\nTerm 1\r\n\r\n:   Definition 1\r\n\r\nTerm 2 with *inline markup*\r\n\r\n:   Definition 2\r\n\r\n        { some code, part of Definition 2 }\r\n\r\n    Third paragraph of definition 2.\r\n\r\n```\r\nTerm 1\r\n\r\n:   Definition 1\r\n\r\nTerm 2 with *inline markup*\r\n\r\n:   Definition 2\r\n\r\n        { some code, part of Definition 2 }\r\n\r\n    Third paragraph of definition 2.\r\n\r\n```\r\n\r\n## abbr\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]:  World Wide Web Consortium\r\nThe HTML specification\r\nis maintained by the W3C.\r\n```\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]:  World Wide Web Consortium\r\nThe HTML specification\r\nis maintained by the W3C.\r\n```\r\n'},function(e,t){e.exports='@[toc](Directory)\r\n\r\nGuia Markdown\r\n===\r\n> Detalhes: [http://commonmark.org/help/](http://commonmark.org/help/)\r\n\r\n## **Negrito**\r\n```\r\n**negrito**\r\n__negrito__\r\n```\r\n## *Itálico*\r\n```\r\n*itálico*\r\n_itálico_\r\n```\r\n## Cabeçalho\r\n```\r\n# h1 #\r\nh1\r\n====\r\n## h2 ##\r\nh2\r\n----\r\n### h3 ###\r\n#### h4 ####\r\n##### h5 #####\r\n###### h6 ######\r\n```\r\n## Linha Divisora\r\n```\r\n***\r\n---\r\n```\r\n****\r\n## ^Sobre^scrito & ~Sub~scrito\r\n```\r\nsobre x^2^\r\nsub H~2~0\r\n```\r\n## ++Sublinhar++ & ~~Tachar~~\r\n```\r\n++sublinhar++\r\n~~tachar~~\r\n```\r\n## ==Marcador==\r\n```\r\n==marcador==\r\n```\r\n## Citação\r\n\r\n```\r\n> citação 1\r\n>> citação 2\r\n>>> citação 3\r\n...\r\n```\r\n\r\n## Listas\r\n```\r\nlista Numerada\r\n1.\r\n2.\r\n3.\r\n...\r\n\r\nlista com marcadores\r\n-\r\n-\r\n...\r\n```\r\n\r\n## Todo Listas\r\n\r\n- [x] Tarefa 1\r\n- [ ] Tarefa 2\r\n\r\n```\r\n- [x] Tarefa 1\r\n- [ ] Tarefa 2\r\n```\r\n\r\n## Link\r\n```\r\nLink Texto\r\n[Text](www.baidu.com)\r\n\r\nLink Imagem\r\n![Text](http://www.image.com)\r\n```\r\n## Código\r\n\\``` tipo\r\n\r\nbloco de código\r\n\r\n\\```\r\n\r\n\\` código \\`\r\n\r\n```c++\r\nint main()\r\n{\r\n    printf("hello world!");\r\n}\r\n```\r\n`code`\r\n\r\n## Tabela\r\n```\r\n| th1 | th2 | th3 |\r\n| :--  | :--: | ----: |\r\n| esquerda | centro | direita |\r\n```\r\n| th1 | th2 | th3 |\r\n| :--  | :--: | ----: |\r\n| esquerda | centro | direita |\r\n| ---------------------- | ------------- | ----------------- |\r\n## Rodapé\r\n```\r\nolá[^olá]\r\n```\r\n\r\nOlhe para baixo[^olá]\r\n\r\n[^olá]: rodapé\r\n\r\n## Emojis\r\nDetalhes: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)\r\n```\r\n:laughing:\r\n:blush:\r\n:smiley:\r\n:)\r\n...\r\n```\r\n:laughing::blush::smiley::)\r\n\r\n## $\\KaTeX$ Mathematics\r\n\r\nPodemos mostrar fórmulas por exemplo:$x_i + y_i = z_i$ and $\\sum_{i=1}^n a_i=0$\r\nPodemos também mostrar em uma única linha:\r\n$$\\sum_{i=1}^n a_i=0$$\r\nDetalhes: [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)\r\n\r\n## Layout\r\n\r\n::: hljs-left\r\n`::: hljs-left`\r\n`esquerda`\r\n`:::`\r\n:::\r\n\r\n::: hljs-center\r\n`::: hljs-center`\r\n`centro`\r\n`:::`\r\n:::\r\n\r\n::: hljs-right\r\n`::: hljs-right`\r\n`direita`\r\n`:::`\r\n:::\r\n\r\n## Definições\r\n\r\nTermo 1\r\n\r\n:   Definição 1\r\n\r\nTermo 2 com *markup inline*\r\n\r\n:   Definição 2\r\n\r\n        { um pouco de código, parte da Definição 2 }\r\n\r\n    Terceiro parágrafo da definição 2.\r\n\r\n```\r\nTermo 1\r\n\r\n:   Definição 1\r\n\r\nTermo 2 com *markup inline*\r\n\r\n:   Definição 2\r\n\r\n        { um pouco de código, parte da Definição 2 }\r\n\r\n    Terceiro parágrafo da definição 2.\r\n\r\n```\r\n\r\n## Abreviações\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]:  World Wide Web Consortium\r\nA especificação HTML\r\né mantida pela W3C.\r\n```\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]:  World Wide Web Consortium\r\nThe HTML specification\r\né mantida pela W3C.\r\n```\r\n'},function(e,t){e.exports='@[toc](Catalog)  \r\n  \r\nMarkdown помощь  \r\n===  \r\n> Подробнее: [http://commonmark.org/help/](http://commonmark.org/help/)  \r\n  \r\n## **Полужирный**  \r\n```  \r\n**Полужирный**  \r\n__Полужирный__  \r\n```  \r\n## *Курсив*  \r\n```  \r\n*Курсив*  \r\n_Курсив_  \r\n```  \r\n## Заголовок  \r\n```  \r\n# h1 #  \r\nh1  \r\n====  \r\n## h2 ##  \r\nh2  \r\n----  \r\n### h3 ###  \r\n#### h4 ####  \r\n##### h5 #####  \r\n###### h6 ######  \r\n```  \r\n## Разделительная линия  \r\n```  \r\n***  \r\n---  \r\n```  \r\n****  \r\n## ^Верхний^индекс & ~Нижний~индекс  \r\n```  \r\nверхний x^2^  \r\nнижний H~2~0  \r\n```  \r\n## ++Подчеркнутый++ & ~~Зачеркнутый~~  \r\n```  \r\n++Подчеркнутый++  \r\n~~Зачеркнутый~~  \r\n```  \r\n## ==Отметка==  \r\n```  \r\n==Отметка==  \r\n```  \r\n## Цитата  \r\n  \r\n```  \r\n> Цитата  \r\n>> Цитата 2  \r\n>>> Цитата 3  \r\n...  \r\n```  \r\n  \r\n## Список  \r\n```  \r\nol  \r\n1.  \r\n2.  \r\n3.  \r\n...  \r\n  \r\nul  \r\n-  \r\n-  \r\n...  \r\n```  \r\n  \r\n## Список задач  \r\n  \r\n- [x] Задача 1  \r\n- [ ] Задача 2  \r\n  \r\n```  \r\n- [x] Задача 1  \r\n- [ ] Задача 2  \r\n```  \r\n  \r\n## Ссылка  \r\n```  \r\nСсылка  \r\n[Текст](www.baidu.com)  \r\n  \r\nСсылка изображения  \r\n![Текст](http://www.image.com)  \r\n```  \r\n## Код  \r\n\\``` type  \r\n  \r\ncode block  \r\n  \r\n\\```  \r\n  \r\n\\` code \\`  \r\n  \r\n```c++  \r\nint main()  \r\n{  \r\n printf("hello world!");}  \r\n```  \r\n`code`  \r\n  \r\n## Таблица  \r\n```  \r\n| th1 | th2 | th3 |  \r\n| :--  | :--: | ----: |  \r\n| left | center | right |  \r\n```  \r\n| th1 | th2 | th3 |  \r\n| :--  | :--: | ----: |  \r\n| left | center | right |  \r\n| ---------------------- | ------------- | ----------------- |  \r\n## Сноска  \r\n```  \r\nПривет[^Привет]  \r\n```  \r\n  \r\nТут что-то непонятное[^Привет]  \r\n  \r\n[^Привет]: А тут объяснение  \r\n  \r\n## Emojis  \r\nПодробнее: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)  \r\n```  \r\n:laughing:  \r\n:blush:  \r\n:smiley:  \r\n:)  \r\n...  \r\n```  \r\n:laughing::blush::smiley::)  \r\n  \r\n## $\\KaTeX$ Mathematics  \r\n  \r\nМожно выводить такие формулы:$x_i + y_i = z_i$ and $\\sum_{i=1}^n a_i=0$  \r\nА также в одну строку:\r\n$$\\sum_{i=1}^n a_i=0$$  \r\nПодробнее: \r\n- [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)\r\n- [katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)\r\n- [latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)  \r\n  \r\n## Разметка\r\n  \r\n::: hljs-left  \r\n`::: hljs-left`  \r\n`left`  \r\n`:::`  \r\n:::  \r\n  \r\n::: hljs-center  \r\n`::: hljs-center`  \r\n`center`  \r\n`:::`  \r\n:::  \r\n  \r\n::: hljs-right  \r\n`::: hljs-right`  \r\n`right`  \r\n`:::`  \r\n:::  \r\n  \r\n## Список определений\r\n  \r\nТермин 1  \r\n  \r\n:   Определение 1  \r\n  \r\nТермин  2 с использованием *разметки*\r\n  \r\n:   Определение 2  \r\n  \r\n { Какой-нибудь код, часть определения 2 }  \r\n Третий параграф определения 2.  \r\n```  \r\nТермин 1  \r\n  \r\n:   Определение 1  \r\n  \r\nТермин  2 с использованием *разметки*\r\n  \r\n:   Определение 2  \r\n  \r\n { Какой-нибудь код, часть определения 2 }  \r\n Третий параграф определения 2.  \r\n```  \r\n  \r\n## Сокращения\r\n*[HTML]: Hyper Text Markup Language  \r\n*[W3C]:  World Wide Web Consortium  \r\nThe HTML specification  \r\nis maintained by the W3C.  \r\n```  \r\n*[HTML]: Hyper Text Markup Language  \r\n*[W3C]:  World Wide Web Consortium  \r\nThe HTML specification  \r\nis maintained by the W3C.  \r\n```\r\n'},function(e,t){e.exports='@[toc](Catalog)\r\n\r\nMarkdown Handbuch\r\n===\r\n> Details: [http://commonmark.org/help/](http://commonmark.org/help/)\r\n\r\n## **Fett**\r\n```\r\n**fett**\r\n__fett__\r\n```\r\n## *Kursiv*\r\n```\r\n*kursiv*\r\n_kursiv_\r\n```\r\n## Überschriften\r\n```\r\n# h1 #\r\nh1\r\n====\r\n## h2 ##\r\nh2\r\n----\r\n### h3 ###\r\n#### h4 ####\r\n##### h5 #####\r\n###### h6 ######\r\n```\r\n## Trennlinien\r\n```\r\n***\r\n---\r\n```\r\n****\r\n## ^Hoch^gestellt & ~Tief~gestellt\r\n```\r\nhochgestellt x^2^\r\ntiefgestellt H~2~0\r\n```\r\n## ++Unterstrichen++ & ~~Durchgestrichen~~\r\n```\r\n++unterstrichen++\r\n~~durchgestrichen~~\r\n```\r\n## ==Markiert==\r\n```\r\n==markiert==\r\n```\r\n## Zitat\r\n\r\n```\r\n> zitat 1\r\n>> zitat 2\r\n>>> zitat 3\r\n...\r\n```\r\n\r\n## Liste\r\n```\r\nol\r\n1.\r\n2.\r\n3.\r\n...\r\n\r\nul\r\n-\r\n-\r\n...\r\n```\r\n\r\n## Todo Liste\r\n\r\n- [x] aufgabe 1\r\n- [ ] aufgabe 2\r\n\r\n```\r\n- [x] aufgabe 1\r\n- [ ] aufgabe 2\r\n```\r\n\r\n## Link\r\n```\r\nText Link\r\n[Text](www.baidu.com)\r\n\r\nLink mit Bild\r\n![Text](http://www.image.com)\r\n```\r\n## Code\r\n\\``` Typ\r\n\r\nCodeblock\r\n\r\n\\```\r\n\r\n\\` code \\`\r\n\r\n```c++\r\nint main()\r\n{\r\n    printf("hello world!");\r\n}\r\n```\r\n`code`\r\n\r\n## Tabelle\r\n```\r\n| th1 | th2 | th3 |\r\n| :--  | :--: | ----: |\r\n| links | mitte | rechts |\r\n```\r\n| th1 | th2 | th3 |\r\n| :--  | :--: | ----: |\r\n| links | mitte | rechts |\r\n| ---------------------- | ------------- | ----------------- |\r\n## Fußnote\r\n```\r\nhallo[^hallo]\r\n```\r\n\r\nSchau zum unteren Rand[^hallo]\r\n\r\n[^hallo]: fussnote\r\n\r\n## Emojis\r\nDetails: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)\r\n```\r\n:laughing:\r\n:blush:\r\n:smiley:\r\n:)\r\n...\r\n```\r\n:laughing::blush::smiley::)\r\n\r\n## $\\KaTeX$ Mathematik\r\n\r\nFormeln lassen sich darstellen z.b. :$x_i + y_i = z_i$ und $\\sum_{i=1}^n a_i=0$\r\nFormeln können auf einer eigenen Zeile gerendert werden\r\n$$\\sum_{i=1}^n a_i=0$$\r\nDetails: [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)\r\n\r\n## Layout\r\n\r\n::: hljs-left\r\n`::: hljs-left`\r\n`links`\r\n`:::`\r\n:::\r\n\r\n::: hljs-center\r\n`::: hljs-center`\r\n`mitte`\r\n`:::`\r\n:::\r\n\r\n::: hljs-right\r\n`::: hljs-right`\r\n`rechts`\r\n`:::`\r\n:::\r\n\r\n## Liste von Definitionen\r\n\r\nTerm 1\r\n\r\n:   Definition 1\r\n\r\nTerm 2 mit *inline markup*\r\n\r\n:   Definition 2\r\n\r\n        { ein wenig code, teil von Definition 2 }\r\n\r\n    Dritter Absatz von Definition 2.\r\n\r\n```\r\nTerm 1\r\n\r\n:   Definition 1\r\n\r\nTerm 2 mit *inline markup*\r\n\r\n:   Definition 2\r\n\r\n        { ein wenig code, teil von Definition 2 }\r\n\r\n    Dritter Absatz von Definition 2.\r\n\r\n```\r\n\r\n## Abkürzungen\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]:  World Wide Web Consortium\r\nDie HTML Spezifikation\r\nwird gepflegt vom W3C.\r\n```\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]:  World Wide Web Consortium\r\nDie HTML Spezifikation\r\nwird gepflegt vom W3C.\r\n```\r\n'},function(e,t){e.exports='@[toc](目次)\r\n\r\nMarkdown 文法ガイド\r\n===\r\n> Detailed: [http://commonmark.org/help/](http://commonmark.org/help/)\r\n\r\n## **太字**\r\n```\r\n**太字**\r\n__太字__\r\n```\r\n## *斜体*\r\n```\r\n*斜体*\r\n_斜体_\r\n```\r\n## 見出し\r\n```\r\n# h1 #\r\nh1\r\n====\r\n## h2 ##\r\nh2\r\n----\r\n### h3 ###\r\n#### h4 ####\r\n##### h5 #####\r\n###### h6 ######\r\n```\r\n## 横線\r\n```\r\n***\r\n---\r\n```\r\n****\r\n## ^上付き^文字 & ~下付き~文字\r\n```\r\nsuper x^2^\r\nsub H~2~0\r\n```\r\n## ++下線++ & ~~取り消し線~~\r\n```\r\n++underline++\r\n~~strikethrough~~\r\n```\r\n## ==蛍光ペン==\r\n```\r\n==mark==\r\n```\r\n## 引用\r\n\r\n```\r\n> quote 1\r\n>> quote 2\r\n>>> quote 3\r\n...\r\n```\r\n\r\n## リスト\r\n```\r\n番号付きリスト\r\n1.\r\n2.\r\n3.\r\n...\r\n\r\n箇条書きリスト\r\n-\r\n-\r\n...\r\n```\r\n\r\n## Todoリスト\r\n\r\n- [x] task 1\r\n- [ ] task 2\r\n\r\n```\r\n- [x] task 1\r\n- [ ] task 2\r\n```\r\n\r\n## リンク\r\n```\r\nText Link\r\n[Text](www.baidu.com)\r\n\r\nImage Link\r\n![Text](http://www.image.com)\r\n```\r\n## コード\r\n\\``` type\r\n\r\ncode block\r\n\r\n\\```\r\n\r\n\\` code \\`\r\n\r\n```c++\r\nint main()\r\n{\r\n    printf("hello world!");\r\n}\r\n```\r\n`code`\r\n\r\n## 表\r\n```\r\n| th1 | th2 | th3 |\r\n| :--  | :--: | ----: |\r\n| left | center | right |\r\n```\r\n| th1 | th2 | th3 |\r\n| :--  | :--: | ----: |\r\n| left | center | right |\r\n| ---------------------- | ------------- | ----------------- |\r\n\r\n## 脚注\r\n```\r\nhello[^hello]\r\n```\r\n\r\nLook at the bottom[^hello]\r\n\r\n[^hello]: footnote\r\n\r\n## 絵文字\r\n> Detailed: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)\r\n```\r\n:laughing:\r\n:blush:\r\n:smiley:\r\n:)\r\n...\r\n```\r\n:laughing::blush::smiley::)\r\n\r\n## $\\KaTeX$ 数式\r\n> Detailed: [KaTeXマニュアル](http://www.intmath.com/cg5/katex-mathjax-comparison.php)、[KaTeX function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)、[LaTeXマニュアル](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)\r\n\r\nWe can render formulas for example:$x_i + y_i = z_i$ and $\\sum_{i=1}^n a_i=0$  \r\nWe can also single-line rendering\r\n$$\\sum_{i=1}^n a_i=0$$\r\n\r\n## レイアウト\r\n\r\n::: hljs-left\r\n`::: hljs-left`\r\n`left`\r\n`:::`\r\n:::\r\n\r\n::: hljs-center\r\n`::: hljs-center`\r\n`center`\r\n`:::`\r\n:::\r\n\r\n::: hljs-right\r\n`::: hljs-right`\r\n`right`\r\n`:::`\r\n:::\r\n\r\n## 定義リスト\r\n\r\nTerm 1\r\n\r\n:   Definition 1\r\n\r\nTerm 2 with *inline markup*\r\n\r\n:   Definition 2\r\n\r\n        { some code, part of Definition 2 }\r\n\r\n    Third paragraph of definition 2.\r\n\r\n```\r\nTerm 1\r\n\r\n:   Definition 1\r\n\r\nTerm 2 with *inline markup*\r\n\r\n:   Definition 2\r\n\r\n        { some code, part of Definition 2 }\r\n\r\n    Third paragraph of definition 2.\r\n\r\n```\r\n\r\n## abbr\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]:  World Wide Web Consortium\r\nThe HTML specification\r\nis maintained by the W3C.\r\n```\r\n*[HTML]: Hyper Text Markup Language\r\n*[W3C]:  World Wide Web Consortium\r\nThe HTML specification\r\nis maintained by the W3C.\r\n```\r\n'},function(e){e.exports=JSON.parse('{"start_editor":"开始编辑...","navigation_title":"导航目录","tl_bold":"粗体","tl_italic":"斜体","tl_header":"标题","tl_header_one":"一级标题","tl_header_two":"二级标题","tl_header_three":"三级标题","tl_header_four":"四级标题","tl_header_five":"五级标题","tl_header_six":"六级标题","tl_underline":"下划线","tl_strikethrough":"中划线","tl_mark":"标记","tl_superscript":"上角标","tl_subscript":"下角标","tl_quote":"段落引用","tl_ol":"有序列表","tl_ul":"无序列表","tl_link":"链接","tl_image":"添加图片链接","tl_code":"代码块","tl_table":"表格","tl_undo":"上一步","tl_redo":"下一步","tl_trash":"清空","tl_save":"保存","tl_navigation_on":"开启标题导航","tl_navigation_off":"关闭标题导航","tl_preview":"预览","tl_aligncenter":"居中","tl_alignleft":"居左","tl_alignright":"居右","tl_edit":"编辑","tl_single_column":"单栏","tl_double_column":"双栏","tl_fullscreen_on":"全屏编辑","tl_fullscreen_off":"退出全屏","tl_read":"沉浸式阅读","tl_html_on":"查看html文本","tl_html_off":"返回markdown文本","tl_help":"markdown语法帮助","tl_upload":"上传图片","tl_upload_remove":"删除","tl_popup_link_title":"添加链接","tl_popup_link_text":"链接描述","tl_popup_link_addr":"链接地址","tl_popup_img_link_title":"添加图片","tl_popup_img_link_text":"图片描述","tl_popup_img_link_addr":"图片链接","tl_popup_link_sure":"确定","tl_popup_link_cancel":"取消"}')},function(e){e.exports=JSON.parse('{"start_editor":"開始編輯...","navigation_title":"導航目錄","tl_bold":"粗體","tl_italic":"斜體","tl_header":"標題","tl_header_one":"一級標題","tl_header_two":"二級標題","tl_header_three":"三級標題","tl_header_four":"四級標題","tl_header_five":"五級標題","tl_header_six":"六級標題","tl_underline":"下劃線","tl_strikethrough":"中劃線","tl_mark":"標記","tl_superscript":"上角標","tl_subscript":"下角標","tl_quote":"段落引用","tl_ol":"有序列表","tl_ul":"無序列表","tl_link":"鏈接","tl_image":"添加圖片鏈接","tl_code":"代碼塊","tl_table":"表格","tl_undo":"上一步","tl_redo":"下一步","tl_trash":"清空","tl_save":"保存","tl_navigation_on":"開啟標題導航","tl_navigation_off":"關閉標題導航","tl_preview":"預覽","tl_aligncenter":"居中","tl_alignleft":"居左","tl_alignright":"居右","tl_edit":"編輯","tl_single_column":"單欄","tl_double_column":"雙欄","tl_fullscreen_on":"全屏編輯","tl_fullscreen_off":"退出全屏","tl_read":"沈浸式閱讀","tl_html_on":"查看html文本","tl_html_off":"返回markdown文本","tl_help":"markdown語法幫助","tl_upload":"上傳圖片","tl_upload_remove":"刪除","tl_popup_link_title":"添加鏈接","tl_popup_link_text":"鏈接描述","tl_popup_link_addr":"鏈接地址","tl_popup_img_link_title":"添加圖片","tl_popup_img_link_text":"圖片描述","tl_popup_img_link_addr":"圖片鏈接","tl_popup_link_sure":"確定","tl_popup_link_cancel":"取消"}')},function(e){e.exports=JSON.parse('{"start_editor":"Begin editing...","navigation_title":"Navigation","tl_bold":"Bold","tl_italic":"Italic","tl_header":"Header","tl_header_one":"Header 1","tl_header_two":"Header 2","tl_header_three":"Header 3","tl_header_four":"Header 4","tl_header_five":"Header 5","tl_header_six":"Header 6","tl_underline":"Underline","tl_strikethrough":"Strikethrough","tl_mark":"Mark","tl_superscript":"Superscript","tl_subscript":"Subscript","tl_quote":"Quote","tl_ol":"Ol","tl_ul":"Ul","tl_link":"Link","tl_image":"Image Link","tl_code":"Code","tl_table":"Table","tl_undo":"Undo","tl_redo":"Redo","tl_trash":"Trash","tl_save":"Save","tl_navigation_on":"Navigation ON","tl_navigation_off":"Navigation OFF","tl_preview":"Preview","tl_aligncenter":"Center text","tl_alignleft":"Clamp text to the left","tl_alignright":"Clamp text to the right","tl_edit":"Edit","tl_single_column":"Single Column","tl_double_column":"Double Columns","tl_fullscreen_on":"FullScreen ON","tl_fullscreen_off":"FullScreen OFF","tl_read":"Read Model","tl_html_on":"HTML ON","tl_html_off":"HTML OFF","tl_help":"Markdown Guide","tl_upload":"Upload Images","tl_upload_remove":"Remove","tl_popup_link_title":"Add Link","tl_popup_link_text":"Link text","tl_popup_link_addr":"Link address","tl_popup_img_link_title":"Add Image","tl_popup_img_link_text":"Image Text","tl_popup_img_link_addr":"Image Link","tl_popup_link_sure":"Sure","tl_popup_link_cancel":"Cancel"}')},function(e){e.exports=JSON.parse('{"start_editor":"Début d\'édition...","navigation_title":"Navigation","tl_bold":"Gras","tl_italic":"Italique","tl_header":"Entête","tl_header_one":"Entête 1","tl_header_two":"Entête 2","tl_header_three":"Entête 3","tl_header_four":"Entête 4","tl_header_five":"Entête 5","tl_header_six":"Entête 6","tl_underline":"Souligné","tl_strikethrough":"Barré","tl_mark":"Mark","tl_superscript":"Exposant","tl_subscript":"Sous-exposant","tl_quote":"Quote","tl_ol":"Liste ","tl_ul":"Puce","tl_link":"Lien","tl_image":"Image Lien","tl_code":"Code","tl_table":"Table","tl_undo":"Annuler","tl_redo":"Refaire","tl_trash":"Supprimer","tl_save":"Sauver","tl_navigation_on":"Activer la navigation","tl_navigation_off":"Désactiver le navigation","tl_preview":"Previsualisé","tl_aligncenter":"Center le texte","tl_alignleft":"Férer le texte à gauche","tl_alignright":"Férer le texte à droite","tl_edit":"Editer","tl_single_column":"Seule Colonne","tl_double_column":"Colonnes Doubles","tl_fullscreen_on":"Activer le mode plein écran","tl_fullscreen_off":"Désactiver le mode plein écran","tl_read":"Lire le modèle","tl_html_on":"Activer le mode HTML","tl_html_off":"Désactiver le mode HTML","tl_help":"Guide Markdown","tl_upload":"Télécharger les images","tl_upload_remove":"Supprimer","tl_popup_link_title":"Ajouter un lien","tl_popup_link_text":"Description","tl_popup_link_addr":"Link","tl_popup_img_link_title":"Ajouter une image","tl_popup_img_link_text":"Description","tl_popup_img_link_addr":"Link","tl_popup_link_sure":"sûr","tl_popup_link_cancel":"Annuler"}')},function(e){e.exports=JSON.parse('{"start_editor":"Começar edição...","navigation_title":"Navegação","tl_bold":"Negrito","tl_italic":"Itálico","tl_header":"Cabeçalho","tl_header_one":"Cabeçalho 1","tl_header_two":"Cabeçalho 2","tl_header_three":"Cabeçalho 3","tl_header_four":"Cabeçalho 4","tl_header_five":"Cabeçalho 5","tl_header_six":"Cabeçalho 6","tl_underline":"Sublinhar","tl_strikethrough":"Tachar","tl_mark":"Marcação","tl_superscript":"Sobrescrito","tl_subscript":"Subscrito","tl_quote":"Citação","tl_ol":"Lista Numerada","tl_ul":"Lista com marcadores","tl_link":"Link","tl_image":"Link de imagem","tl_code":"Código","tl_table":"Tabela","tl_undo":"Desfazer","tl_redo":"Refazer","tl_trash":"Lixo","tl_save":"Salvar","tl_navigation_on":"Mostrar Navegação","tl_navigation_off":"Esconder Navegação","tl_preview":"Preview","tl_aligncenter":"Alinhar no centro","tl_alignleft":"Alinhar à esquerda","tl_alignright":"Alinhar à direita","tl_edit":"Editar","tl_single_column":"Coluna Única","tl_double_column":"Duas Colunas","tl_fullscreen_on":"Ligar Tela Cheia","tl_fullscreen_off":"Desligar Tela Cheia","tl_read":"Modo de Leitura","tl_html_on":"Ligar HTML","tl_html_off":"Desligar HTML","tl_help":"Guia Markdown","tl_upload":"Upload de Imagens","tl_upload_remove":"Remover","tl_popup_link_title":"Adicionar Link","tl_popup_link_text":"Descrição","tl_popup_link_addr":"Link","tl_popup_img_link_title":"Adicionar fotos","tl_popup_img_link_text":"Descrição","tl_popup_img_link_addr":"Link","tl_popup_link_sure":"Confirmar","tl_popup_link_cancel":"Cancelar"}')},function(e){e.exports=JSON.parse('{"start_editor":"Начните редактирование...","navigation_title":"Навигация","tl_bold":"Полужирный","tl_italic":"Курсив","tl_header":"Заголовки","tl_header_one":"Заголовок 1","tl_header_two":"Заголовок 2","tl_header_three":"Заголовок 3","tl_header_four":"Заголовок 4","tl_header_five":"Заголовок 5","tl_header_six":"Заголовок 6","tl_underline":"Подчеркнутый","tl_strikethrough":"Зачеркнутый","tl_mark":"Отметка","tl_superscript":"Верхний индекс","tl_subscript":"Нижний индекс","tl_quote":"Цитата","tl_ol":"Нумерованный список","tl_ul":"Список","tl_link":"Ссылка","tl_image":"Ссылка изображения","tl_code":"Код","tl_table":"Таблица","tl_undo":"Отменить","tl_redo":"Вернуть","tl_trash":"Удалить","tl_save":"Сохранить","tl_navigation_on":"Показать навигацию","tl_navigation_off":"Скрыть навигацию","tl_preview":"Предпросмотр","tl_aligncenter":"Выровнять по центру","tl_alignleft":"Выровнять по левому краю","tl_alignright":"Выровнять по правому краю","tl_edit":"Редактор","tl_single_column":"Одно поле","tl_double_column":"Два поля","tl_fullscreen_on":"Полноэкранный режим","tl_fullscreen_off":"Выключить полноэкранный режим","tl_read":"Режим чтения","tl_html_on":"Показать HTML","tl_html_off":"Убрать HTML","tl_help":"Markdown помощь","tl_upload":"Загрузить изображение","tl_upload_remove":"Удалить","tl_popup_link_title":"Добавить ссылку","tl_popup_link_text":"Текст ссылки","tl_popup_link_addr":"Адрес ссылки","tl_popup_img_link_title":"Локальное изображение","tl_popup_img_link_text":"Текст изображения","tl_popup_img_link_addr":"Ссылка изображения","tl_popup_link_sure":"Добавить","tl_popup_link_cancel":"Отменить"}')},function(e){e.exports=JSON.parse('{"start_editor":"Bearbeitung beginnen...","navigation_title":"Navigation","tl_bold":"Fett","tl_italic":"Kursiv","tl_header":"Überschrift","tl_header_one":"Überschrift 1","tl_header_two":"Überschrift 2","tl_header_three":"Überschrift 3","tl_header_four":"Überschrift 4","tl_header_five":"Überschrift 5","tl_header_six":"Überschrift 6","tl_underline":"Unterstrichen","tl_strikethrough":"Durchgestrichen","tl_mark":"Markiert","tl_superscript":"Hochgestellt","tl_subscript":"Tiefgestellt","tl_quote":"Zitat","tl_ol":"Ol","tl_ul":"Ul","tl_link":"Link","tl_image":"Link mit Bild","tl_code":"Code","tl_table":"Tabelle","tl_undo":"Rückgängig","tl_redo":"Wiederherstellen","tl_trash":"Mülleimer","tl_save":"Speichern","tl_navigation_on":"Navigation AN","tl_navigation_off":"Navigation AUS","tl_preview":"Vorschau","tl_aligncenter":"Text zentrieren","tl_alignleft":"Nach links ausrichten","tl_alignright":"Nach rechts ausrichten","tl_edit":"Bearbeiten","tl_single_column":"Einspaltig","tl_double_column":"Zweispaltig","tl_fullscreen_on":"Vollbild AN","tl_fullscreen_off":"Vollbild AUS","tl_read":"Lesemodus","tl_html_on":"HTML AN","tl_html_off":"HTML AUS","tl_help":"Markdown Handbuch","tl_upload":"Bilder-Upload","tl_upload_remove":"Entfernen","tl_popup_link_title":"Link hinzufügen","tl_popup_link_text":"Text des Links","tl_popup_link_addr":"Linkziel","tl_popup_img_link_title":"Bild hinzufügen","tl_popup_img_link_text":"Text des Bildes","tl_popup_img_link_addr":"Link auf Bild","tl_popup_link_sure":"Ja","tl_popup_link_cancel":"Abbruch"}')},function(e){e.exports=JSON.parse('{"start_editor":"編集を始めてね!","navigation_title":"ナビゲーション","tl_bold":"太字","tl_italic":"斜体","tl_header":"見出し","tl_header_one":"見出し1","tl_header_two":"見出し2","tl_header_three":"見出し3","tl_header_four":"見出し4","tl_header_five":"見出し5","tl_header_six":"見出し6","tl_underline":"下線","tl_strikethrough":"取り消し線","tl_mark":"蛍光ペン","tl_superscript":"上付き文字","tl_subscript":"下付き文字","tl_quote":"引用","tl_ol":"番号付きリスト","tl_ul":"箇条書きリスト","tl_link":"ハイパーリンク","tl_image":"画像のリンク","tl_code":"コードの挿入","tl_table":"表の挿入","tl_undo":"戻る","tl_redo":"進む","tl_trash":"削除","tl_save":"保存","tl_navigation_on":"ナビゲーションを表示","tl_navigation_off":"ナビゲーションを非表示","tl_preview":"プレビュー","tl_aligncenter":"中央揃え","tl_alignleft":"左揃え","tl_alignright":"右揃え","tl_edit":"編集","tl_single_column":"一列","tl_double_column":"二列","tl_fullscreen_on":"全画面表示","tl_fullscreen_off":"全画面表示の終了","tl_read":"モデルの読み込み","tl_html_on":"HTMLで表示","tl_html_off":"HTML表示の終了","tl_help":"ヘルプ","tl_upload":"画像をアップロード","tl_upload_remove":"画像の削除","tl_popup_link_title":"リンクの追加","tl_popup_link_text":"リンクテキスト","tl_popup_link_addr":"リンク先のURL","tl_popup_img_link_title":"画像の追加","tl_popup_img_link_text":"画像タイトル","tl_popup_img_link_addr":"画像URL","tl_popup_link_sure":"OK","tl_popup_link_cancel":"戻る"}')},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=s(r(25));t.initMarkdown=S;var o=s(r(56)),i=r(57),a=s(r(133));function s(e){return e&&e.__esModule?e:{default:e}}var l={html:!0,xhtmlOut:!0,breaks:!0,langPrefix:"lang-",linkify:!1,typographer:!0,quotes:"“”‘’"},c=r(138),u=r(195),p=r(201),d=r(202),h=r(203),f=r(204),_=r(205),m=r(206),g=r(207),b=r(208),v=r(209),k=r(210),w=r(211),y=r(212),x=r(213),C={},j=[],O={hljs:"auto",highlighted:!0,langCheck:function(e){e&&o.default[e]&&!C[e]&&(C[e]=1,j.push(o.default[e]))}};function S(){var e=new c(l),t=e.renderer.rules.link_open||function(e,t,r,n,o){return o.renderToken(e,t,r)};return e.renderer.rules.link_open=function(e,r,n,o,i){var a=e[r].attrIndex("href");if(e[r].attrs[a][1].startsWith("#"))return t(e,r,n,o,i);var s=e[r].attrIndex("target");return s<0?e[r].attrPush(["target","_blank"]):e[r].attrs[s][1]="_blank",t(e,r,n,o,i)},e.use(w,O).use(u).use(d).use(p).use(v).use(v,"hljs-left").use(v,"hljs-center").use(v,"hljs-right").use(h).use(f).use(_).use(m).use(g).use(v).use(x).use(y).use(b).use(k),e}t.default={data:function(){return{markdownIt:null}},created:function(){this.markdownIt=S(),this.html?"object"===(0,n.default)(this.xssOptions)&&this.markdownIt.use(a.default,this.xssOptions):(this.markdownIt.set({html:!1}),this.xssOptions=!1)},mounted:function(){O.highlighted=this.ishljs},methods:{$render:function(e,t){C={},j=[];var r=this.markdownIt.render(e);this.ishljs&&j.length>0&&this.$_render(e,t,r),t(r)},$_render:function(e,t,r){for(var n=0,o=0;o<j.length;o++){var a=this.p_external_link.hljs_lang(j[o]);(0,i.loadScript)(a,(function(){(n+=1)===j.length&&(r=this.markdownIt.render(e),t(r))}))}}},watch:{ishljs:function(e){O.highlighted=e}}}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){e.options.html&&(o=new n.FilterXSS(t),e.core.ruler.push("mavoneditor_sanitizer",i))};var n=r(134),o=void 0;function i(e){o&&function e(t,r){for(var n=void 0,i=void 0,a=0;a<t.length;a++)-1!==r.indexOf(t[a].type)&&(n=t[a].content,i=t[a].children,t[a].content=o.process(n),i&&i.length&&n!==t[a].content&&e(i,["html_inline"]))}(e.tokens,["inline","html_block"])}},function(e,t,r){var n=r(58),o=r(61),i=r(137);function a(e,t){return new i(t).process(e)}(t=e.exports=a).filterXSS=a,t.FilterXSS=i,function(){for(var e in n)t[e]=n[e];for(var r in o)t[r]=o[r]}(),"undefined"!=typeof window&&(window.filterXSS=e.exports),"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope&&(self.filterXSS=e.exports)},function(e,t,r){var n=r(59),o=r(136);r(60);function i(e){return null==e}function a(e){(e=function(e){var t={};for(var r in e)t[r]=e[r];return t}(e||{})).whiteList=e.whiteList||n.whiteList,e.onAttr=e.onAttr||n.onAttr,e.onIgnoreAttr=e.onIgnoreAttr||n.onIgnoreAttr,e.safeAttrValue=e.safeAttrValue||n.safeAttrValue,this.options=e}a.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this.options,r=t.whiteList,n=t.onAttr,a=t.onIgnoreAttr,s=t.safeAttrValue;return o(e,(function(e,t,o,l,c){var u=r[o],p=!1;if(!0===u?p=u:"function"==typeof u?p=u(l):u instanceof RegExp&&(p=u.test(l)),!0!==p&&(p=!1),l=s(o,l)){var d,h={position:t,sourcePosition:e,source:c,isWhite:p};return p?i(d=n(o,l,h))?o+":"+l:d:i(d=a(o,l,h))?void 0:d}}))},e.exports=a},function(e,t,r){var n=r(60);e.exports=function(e,t){";"!==(e=n.trimRight(e))[e.length-1]&&(e+=";");var r=e.length,o=!1,i=0,a=0,s="";function l(){if(!o){var r=n.trim(e.slice(i,a)),l=r.indexOf(":");if(-1!==l){var c=n.trim(r.slice(0,l)),u=n.trim(r.slice(l+1));if(c){var p=t(i,s.length,c,u,r);p&&(s+=p+"; ")}}}i=a+1}for(;a<r;a++){var c=e[a];if("/"===c&&"*"===e[a+1]){var u=e.indexOf("*/",a+2);if(-1===u)break;i=(a=u+1)+1,o=!1}else"("===c?o=!0:")"===c?o=!1:";"===c?o||l():"\n"===c&&l()}return n.trim(s)}},function(e,t,r){var n=r(38).FilterCSS,o=r(58),i=r(61),a=i.parseTag,s=i.parseAttr,l=r(39);function c(e){return null==e}function u(e){(e=function(e){var t={};for(var r in e)t[r]=e[r];return t}(e||{})).stripIgnoreTag&&(e.onIgnoreTag&&console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'),e.onIgnoreTag=o.onIgnoreTagStripAll),e.whiteList||e.allowList?e.whiteList=function(e){var t={};for(var r in e)Array.isArray(e[r])?t[r.toLowerCase()]=e[r].map((function(e){return e.toLowerCase()})):t[r.toLowerCase()]=e[r];return t}(e.whiteList||e.allowList):e.whiteList=o.whiteList,e.onTag=e.onTag||o.onTag,e.onTagAttr=e.onTagAttr||o.onTagAttr,e.onIgnoreTag=e.onIgnoreTag||o.onIgnoreTag,e.onIgnoreTagAttr=e.onIgnoreTagAttr||o.onIgnoreTagAttr,e.safeAttrValue=e.safeAttrValue||o.safeAttrValue,e.escapeHtml=e.escapeHtml||o.escapeHtml,this.options=e,!1===e.css?this.cssFilter=!1:(e.css=e.css||{},this.cssFilter=new n(e.css))}u.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this.options,r=t.whiteList,n=t.onTag,i=t.onIgnoreTag,u=t.onTagAttr,p=t.onIgnoreTagAttr,d=t.safeAttrValue,h=t.escapeHtml,f=this.cssFilter;t.stripBlankChar&&(e=o.stripBlankChar(e)),t.allowCommentTag||(e=o.stripCommentTag(e));var _=!1;t.stripIgnoreTagBody&&(_=o.StripTagBody(t.stripIgnoreTagBody,i),i=_.onIgnoreTag);var m=a(e,(function(e,t,o,a,_){var m={sourcePosition:e,position:t,isClosing:_,isWhite:Object.prototype.hasOwnProperty.call(r,o)},g=n(o,a,m);if(!c(g))return g;if(m.isWhite){if(m.isClosing)return"</"+o+">";var b=function(e){var t=l.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};var r="/"===(e=l.trim(e.slice(t+1,-1)))[e.length-1];return r&&(e=l.trim(e.slice(0,-1))),{html:e,closing:r}}(a),v=r[o],k=s(b.html,(function(e,t){var r=-1!==l.indexOf(v,e),n=u(o,e,t,r);return c(n)?r?(t=d(o,e,t,f))?e+'="'+t+'"':e:c(n=p(o,e,t,r))?void 0:n:n}));return a="<"+o,k&&(a+=" "+k),b.closing&&(a+=" /"),a+=">"}return c(g=i(o,a,m))?h(a):g}),h);return _&&(m=_.remove(m)),m},e.exports=u},function(e,t,r){"use strict";e.exports=r(139)},function(e,t,r){"use strict";var n=r(1),o=r(147),i=r(151),a=r(152),s=r(160),l=r(174),c=r(187),u=r(63),p=r(189),d={default:r(192),zero:r(193),commonmark:r(194)},h=/^(vbscript|javascript|file|data):/,f=/^data:image\/(gif|png|jpeg|webp);/;function _(e){var t=e.trim().toLowerCase();return!h.test(t)||!!f.test(t)}var m=["http:","https:","mailto:"];function g(e){var t=u.parse(e,!0);if(t.hostname&&(!t.protocol||m.indexOf(t.protocol)>=0))try{t.hostname=p.toASCII(t.hostname)}catch(e){}return u.encode(u.format(t))}function b(e){var t=u.parse(e,!0);if(t.hostname&&(!t.protocol||m.indexOf(t.protocol)>=0))try{t.hostname=p.toUnicode(t.hostname)}catch(e){}return u.decode(u.format(t))}function v(e,t){if(!(this instanceof v))return new v(e,t);t||n.isString(e)||(t=e||{},e="default"),this.inline=new l,this.block=new s,this.core=new a,this.renderer=new i,this.linkify=new c,this.validateLink=_,this.normalizeLink=g,this.normalizeLinkText=b,this.utils=n,this.helpers=n.assign({},o),this.options={},this.configure(e),t&&this.set(t)}v.prototype.set=function(e){return n.assign(this.options,e),this},v.prototype.configure=function(e){var t,r=this;if(n.isString(e)&&!(e=d[t=e]))throw new Error('Wrong `markdown-it` preset "'+t+'", check name');if(!e)throw new Error("Wrong `markdown-it` preset, can't be empty");return e.options&&r.set(e.options),e.components&&Object.keys(e.components).forEach((function(t){e.components[t].rules&&r[t].ruler.enableOnly(e.components[t].rules),e.components[t].rules2&&r[t].ruler2.enableOnly(e.components[t].rules2)})),this},v.prototype.enable=function(e,t){var r=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(t){r=r.concat(this[t].ruler.enable(e,!0))}),this),r=r.concat(this.inline.ruler2.enable(e,!0));var n=e.filter((function(e){return r.indexOf(e)<0}));if(n.length&&!t)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+n);return this},v.prototype.disable=function(e,t){var r=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(t){r=r.concat(this[t].ruler.disable(e,!0))}),this),r=r.concat(this.inline.ruler2.disable(e,!0));var n=e.filter((function(e){return r.indexOf(e)<0}));if(n.length&&!t)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+n);return this},v.prototype.use=function(e){var t=[this].concat(Array.prototype.slice.call(arguments,1));return e.apply(e,t),this},v.prototype.parse=function(e,t){if("string"!=typeof e)throw new Error("Input data should be a String");var r=new this.core.State(e,this,t);return this.core.process(r),r.tokens},v.prototype.render=function(e,t){return t=t||{},this.renderer.render(this.parse(e,t),this.options,t)},v.prototype.parseInline=function(e,t){var r=new this.core.State(e,this,t);return r.inlineMode=!0,this.core.process(r),r.tokens},v.prototype.renderInline=function(e,t){return t=t||{},this.renderer.render(this.parseInline(e,t),this.options,t)},e.exports=v},function(e){e.exports=JSON.parse('{"Aacute":"Á","aacute":"á","Abreve":"Ă","abreve":"ă","ac":"∾","acd":"∿","acE":"∾̳","Acirc":"Â","acirc":"â","acute":"´","Acy":"А","acy":"а","AElig":"Æ","aelig":"æ","af":"⁡","Afr":"𝔄","afr":"𝔞","Agrave":"À","agrave":"à","alefsym":"ℵ","aleph":"ℵ","Alpha":"Α","alpha":"α","Amacr":"Ā","amacr":"ā","amalg":"⨿","amp":"&","AMP":"&","andand":"⩕","And":"⩓","and":"∧","andd":"⩜","andslope":"⩘","andv":"⩚","ang":"∠","ange":"⦤","angle":"∠","angmsdaa":"⦨","angmsdab":"⦩","angmsdac":"⦪","angmsdad":"⦫","angmsdae":"⦬","angmsdaf":"⦭","angmsdag":"⦮","angmsdah":"⦯","angmsd":"∡","angrt":"∟","angrtvb":"⊾","angrtvbd":"⦝","angsph":"∢","angst":"Å","angzarr":"⍼","Aogon":"Ą","aogon":"ą","Aopf":"𝔸","aopf":"𝕒","apacir":"⩯","ap":"≈","apE":"⩰","ape":"≊","apid":"≋","apos":"\'","ApplyFunction":"⁡","approx":"≈","approxeq":"≊","Aring":"Å","aring":"å","Ascr":"𝒜","ascr":"𝒶","Assign":"≔","ast":"*","asymp":"≈","asympeq":"≍","Atilde":"Ã","atilde":"ã","Auml":"Ä","auml":"ä","awconint":"∳","awint":"⨑","backcong":"≌","backepsilon":"϶","backprime":"‵","backsim":"∽","backsimeq":"⋍","Backslash":"∖","Barv":"⫧","barvee":"⊽","barwed":"⌅","Barwed":"⌆","barwedge":"⌅","bbrk":"⎵","bbrktbrk":"⎶","bcong":"≌","Bcy":"Б","bcy":"б","bdquo":"„","becaus":"∵","because":"∵","Because":"∵","bemptyv":"⦰","bepsi":"϶","bernou":"ℬ","Bernoullis":"ℬ","Beta":"Β","beta":"β","beth":"ℶ","between":"≬","Bfr":"𝔅","bfr":"𝔟","bigcap":"⋂","bigcirc":"◯","bigcup":"⋃","bigodot":"⨀","bigoplus":"⨁","bigotimes":"⨂","bigsqcup":"⨆","bigstar":"★","bigtriangledown":"▽","bigtriangleup":"△","biguplus":"⨄","bigvee":"⋁","bigwedge":"⋀","bkarow":"⤍","blacklozenge":"⧫","blacksquare":"▪","blacktriangle":"▴","blacktriangledown":"▾","blacktriangleleft":"◂","blacktriangleright":"▸","blank":"␣","blk12":"▒","blk14":"░","blk34":"▓","block":"█","bne":"=⃥","bnequiv":"≡⃥","bNot":"⫭","bnot":"⌐","Bopf":"𝔹","bopf":"𝕓","bot":"⊥","bottom":"⊥","bowtie":"⋈","boxbox":"⧉","boxdl":"┐","boxdL":"╕","boxDl":"╖","boxDL":"╗","boxdr":"┌","boxdR":"╒","boxDr":"╓","boxDR":"╔","boxh":"─","boxH":"═","boxhd":"┬","boxHd":"╤","boxhD":"╥","boxHD":"╦","boxhu":"┴","boxHu":"╧","boxhU":"╨","boxHU":"╩","boxminus":"⊟","boxplus":"⊞","boxtimes":"⊠","boxul":"┘","boxuL":"╛","boxUl":"╜","boxUL":"╝","boxur":"└","boxuR":"╘","boxUr":"╙","boxUR":"╚","boxv":"│","boxV":"║","boxvh":"┼","boxvH":"╪","boxVh":"╫","boxVH":"╬","boxvl":"┤","boxvL":"╡","boxVl":"╢","boxVL":"╣","boxvr":"├","boxvR":"╞","boxVr":"╟","boxVR":"╠","bprime":"‵","breve":"˘","Breve":"˘","brvbar":"¦","bscr":"𝒷","Bscr":"ℬ","bsemi":"⁏","bsim":"∽","bsime":"⋍","bsolb":"⧅","bsol":"\\\\","bsolhsub":"⟈","bull":"•","bullet":"•","bump":"≎","bumpE":"⪮","bumpe":"≏","Bumpeq":"≎","bumpeq":"≏","Cacute":"Ć","cacute":"ć","capand":"⩄","capbrcup":"⩉","capcap":"⩋","cap":"∩","Cap":"⋒","capcup":"⩇","capdot":"⩀","CapitalDifferentialD":"ⅅ","caps":"∩︀","caret":"⁁","caron":"ˇ","Cayleys":"ℭ","ccaps":"⩍","Ccaron":"Č","ccaron":"č","Ccedil":"Ç","ccedil":"ç","Ccirc":"Ĉ","ccirc":"ĉ","Cconint":"∰","ccups":"⩌","ccupssm":"⩐","Cdot":"Ċ","cdot":"ċ","cedil":"¸","Cedilla":"¸","cemptyv":"⦲","cent":"¢","centerdot":"·","CenterDot":"·","cfr":"𝔠","Cfr":"ℭ","CHcy":"Ч","chcy":"ч","check":"✓","checkmark":"✓","Chi":"Χ","chi":"χ","circ":"ˆ","circeq":"≗","circlearrowleft":"↺","circlearrowright":"↻","circledast":"⊛","circledcirc":"⊚","circleddash":"⊝","CircleDot":"⊙","circledR":"®","circledS":"Ⓢ","CircleMinus":"⊖","CirclePlus":"⊕","CircleTimes":"⊗","cir":"○","cirE":"⧃","cire":"≗","cirfnint":"⨐","cirmid":"⫯","cirscir":"⧂","ClockwiseContourIntegral":"∲","CloseCurlyDoubleQuote":"”","CloseCurlyQuote":"’","clubs":"♣","clubsuit":"♣","colon":":","Colon":"∷","Colone":"⩴","colone":"≔","coloneq":"≔","comma":",","commat":"@","comp":"∁","compfn":"∘","complement":"∁","complexes":"ℂ","cong":"≅","congdot":"⩭","Congruent":"≡","conint":"∮","Conint":"∯","ContourIntegral":"∮","copf":"𝕔","Copf":"ℂ","coprod":"∐","Coproduct":"∐","copy":"©","COPY":"©","copysr":"℗","CounterClockwiseContourIntegral":"∳","crarr":"↵","cross":"✗","Cross":"⨯","Cscr":"𝒞","cscr":"𝒸","csub":"⫏","csube":"⫑","csup":"⫐","csupe":"⫒","ctdot":"⋯","cudarrl":"⤸","cudarrr":"⤵","cuepr":"⋞","cuesc":"⋟","cularr":"↶","cularrp":"⤽","cupbrcap":"⩈","cupcap":"⩆","CupCap":"≍","cup":"∪","Cup":"⋓","cupcup":"⩊","cupdot":"⊍","cupor":"⩅","cups":"∪︀","curarr":"↷","curarrm":"⤼","curlyeqprec":"⋞","curlyeqsucc":"⋟","curlyvee":"⋎","curlywedge":"⋏","curren":"¤","curvearrowleft":"↶","curvearrowright":"↷","cuvee":"⋎","cuwed":"⋏","cwconint":"∲","cwint":"∱","cylcty":"⌭","dagger":"†","Dagger":"‡","daleth":"ℸ","darr":"↓","Darr":"↡","dArr":"⇓","dash":"‐","Dashv":"⫤","dashv":"⊣","dbkarow":"⤏","dblac":"˝","Dcaron":"Ď","dcaron":"ď","Dcy":"Д","dcy":"д","ddagger":"‡","ddarr":"⇊","DD":"ⅅ","dd":"ⅆ","DDotrahd":"⤑","ddotseq":"⩷","deg":"°","Del":"∇","Delta":"Δ","delta":"δ","demptyv":"⦱","dfisht":"⥿","Dfr":"𝔇","dfr":"𝔡","dHar":"⥥","dharl":"⇃","dharr":"⇂","DiacriticalAcute":"´","DiacriticalDot":"˙","DiacriticalDoubleAcute":"˝","DiacriticalGrave":"`","DiacriticalTilde":"˜","diam":"⋄","diamond":"⋄","Diamond":"⋄","diamondsuit":"♦","diams":"♦","die":"¨","DifferentialD":"ⅆ","digamma":"ϝ","disin":"⋲","div":"÷","divide":"÷","divideontimes":"⋇","divonx":"⋇","DJcy":"Ђ","djcy":"ђ","dlcorn":"⌞","dlcrop":"⌍","dollar":"$","Dopf":"𝔻","dopf":"𝕕","Dot":"¨","dot":"˙","DotDot":"⃜","doteq":"≐","doteqdot":"≑","DotEqual":"≐","dotminus":"∸","dotplus":"∔","dotsquare":"⊡","doublebarwedge":"⌆","DoubleContourIntegral":"∯","DoubleDot":"¨","DoubleDownArrow":"⇓","DoubleLeftArrow":"⇐","DoubleLeftRightArrow":"⇔","DoubleLeftTee":"⫤","DoubleLongLeftArrow":"⟸","DoubleLongLeftRightArrow":"⟺","DoubleLongRightArrow":"⟹","DoubleRightArrow":"⇒","DoubleRightTee":"⊨","DoubleUpArrow":"⇑","DoubleUpDownArrow":"⇕","DoubleVerticalBar":"∥","DownArrowBar":"⤓","downarrow":"↓","DownArrow":"↓","Downarrow":"⇓","DownArrowUpArrow":"⇵","DownBreve":"̑","downdownarrows":"⇊","downharpoonleft":"⇃","downharpoonright":"⇂","DownLeftRightVector":"⥐","DownLeftTeeVector":"⥞","DownLeftVectorBar":"⥖","DownLeftVector":"↽","DownRightTeeVector":"⥟","DownRightVectorBar":"⥗","DownRightVector":"⇁","DownTeeArrow":"↧","DownTee":"⊤","drbkarow":"⤐","drcorn":"⌟","drcrop":"⌌","Dscr":"𝒟","dscr":"𝒹","DScy":"Ѕ","dscy":"ѕ","dsol":"⧶","Dstrok":"Đ","dstrok":"đ","dtdot":"⋱","dtri":"▿","dtrif":"▾","duarr":"⇵","duhar":"⥯","dwangle":"⦦","DZcy":"Џ","dzcy":"џ","dzigrarr":"⟿","Eacute":"É","eacute":"é","easter":"⩮","Ecaron":"Ě","ecaron":"ě","Ecirc":"Ê","ecirc":"ê","ecir":"≖","ecolon":"≕","Ecy":"Э","ecy":"э","eDDot":"⩷","Edot":"Ė","edot":"ė","eDot":"≑","ee":"ⅇ","efDot":"≒","Efr":"𝔈","efr":"𝔢","eg":"⪚","Egrave":"È","egrave":"è","egs":"⪖","egsdot":"⪘","el":"⪙","Element":"∈","elinters":"⏧","ell":"ℓ","els":"⪕","elsdot":"⪗","Emacr":"Ē","emacr":"ē","empty":"∅","emptyset":"∅","EmptySmallSquare":"◻","emptyv":"∅","EmptyVerySmallSquare":"▫","emsp13":" ","emsp14":" ","emsp":" ","ENG":"Ŋ","eng":"ŋ","ensp":" ","Eogon":"Ę","eogon":"ę","Eopf":"𝔼","eopf":"𝕖","epar":"⋕","eparsl":"⧣","eplus":"⩱","epsi":"ε","Epsilon":"Ε","epsilon":"ε","epsiv":"ϵ","eqcirc":"≖","eqcolon":"≕","eqsim":"≂","eqslantgtr":"⪖","eqslantless":"⪕","Equal":"⩵","equals":"=","EqualTilde":"≂","equest":"≟","Equilibrium":"⇌","equiv":"≡","equivDD":"⩸","eqvparsl":"⧥","erarr":"⥱","erDot":"≓","escr":"ℯ","Escr":"ℰ","esdot":"≐","Esim":"⩳","esim":"≂","Eta":"Η","eta":"η","ETH":"Ð","eth":"ð","Euml":"Ë","euml":"ë","euro":"€","excl":"!","exist":"∃","Exists":"∃","expectation":"ℰ","exponentiale":"ⅇ","ExponentialE":"ⅇ","fallingdotseq":"≒","Fcy":"Ф","fcy":"ф","female":"♀","ffilig":"ffi","fflig":"ff","ffllig":"ffl","Ffr":"𝔉","ffr":"𝔣","filig":"fi","FilledSmallSquare":"◼","FilledVerySmallSquare":"▪","fjlig":"fj","flat":"♭","fllig":"fl","fltns":"▱","fnof":"ƒ","Fopf":"𝔽","fopf":"𝕗","forall":"∀","ForAll":"∀","fork":"⋔","forkv":"⫙","Fouriertrf":"ℱ","fpartint":"⨍","frac12":"½","frac13":"⅓","frac14":"¼","frac15":"⅕","frac16":"⅙","frac18":"⅛","frac23":"⅔","frac25":"⅖","frac34":"¾","frac35":"⅗","frac38":"⅜","frac45":"⅘","frac56":"⅚","frac58":"⅝","frac78":"⅞","frasl":"⁄","frown":"⌢","fscr":"𝒻","Fscr":"ℱ","gacute":"ǵ","Gamma":"Γ","gamma":"γ","Gammad":"Ϝ","gammad":"ϝ","gap":"⪆","Gbreve":"Ğ","gbreve":"ğ","Gcedil":"Ģ","Gcirc":"Ĝ","gcirc":"ĝ","Gcy":"Г","gcy":"г","Gdot":"Ġ","gdot":"ġ","ge":"≥","gE":"≧","gEl":"⪌","gel":"⋛","geq":"≥","geqq":"≧","geqslant":"⩾","gescc":"⪩","ges":"⩾","gesdot":"⪀","gesdoto":"⪂","gesdotol":"⪄","gesl":"⋛︀","gesles":"⪔","Gfr":"𝔊","gfr":"𝔤","gg":"≫","Gg":"⋙","ggg":"⋙","gimel":"ℷ","GJcy":"Ѓ","gjcy":"ѓ","gla":"⪥","gl":"≷","glE":"⪒","glj":"⪤","gnap":"⪊","gnapprox":"⪊","gne":"⪈","gnE":"≩","gneq":"⪈","gneqq":"≩","gnsim":"⋧","Gopf":"𝔾","gopf":"𝕘","grave":"`","GreaterEqual":"≥","GreaterEqualLess":"⋛","GreaterFullEqual":"≧","GreaterGreater":"⪢","GreaterLess":"≷","GreaterSlantEqual":"⩾","GreaterTilde":"≳","Gscr":"𝒢","gscr":"ℊ","gsim":"≳","gsime":"⪎","gsiml":"⪐","gtcc":"⪧","gtcir":"⩺","gt":">","GT":">","Gt":"≫","gtdot":"⋗","gtlPar":"⦕","gtquest":"⩼","gtrapprox":"⪆","gtrarr":"⥸","gtrdot":"⋗","gtreqless":"⋛","gtreqqless":"⪌","gtrless":"≷","gtrsim":"≳","gvertneqq":"≩︀","gvnE":"≩︀","Hacek":"ˇ","hairsp":" ","half":"½","hamilt":"ℋ","HARDcy":"Ъ","hardcy":"ъ","harrcir":"⥈","harr":"↔","hArr":"⇔","harrw":"↭","Hat":"^","hbar":"ℏ","Hcirc":"Ĥ","hcirc":"ĥ","hearts":"♥","heartsuit":"♥","hellip":"…","hercon":"⊹","hfr":"𝔥","Hfr":"ℌ","HilbertSpace":"ℋ","hksearow":"⤥","hkswarow":"⤦","hoarr":"⇿","homtht":"∻","hookleftarrow":"↩","hookrightarrow":"↪","hopf":"𝕙","Hopf":"ℍ","horbar":"―","HorizontalLine":"─","hscr":"𝒽","Hscr":"ℋ","hslash":"ℏ","Hstrok":"Ħ","hstrok":"ħ","HumpDownHump":"≎","HumpEqual":"≏","hybull":"⁃","hyphen":"‐","Iacute":"Í","iacute":"í","ic":"⁣","Icirc":"Î","icirc":"î","Icy":"И","icy":"и","Idot":"İ","IEcy":"Е","iecy":"е","iexcl":"¡","iff":"⇔","ifr":"𝔦","Ifr":"ℑ","Igrave":"Ì","igrave":"ì","ii":"ⅈ","iiiint":"⨌","iiint":"∭","iinfin":"⧜","iiota":"℩","IJlig":"IJ","ijlig":"ij","Imacr":"Ī","imacr":"ī","image":"ℑ","ImaginaryI":"ⅈ","imagline":"ℐ","imagpart":"ℑ","imath":"ı","Im":"ℑ","imof":"⊷","imped":"Ƶ","Implies":"⇒","incare":"℅","in":"∈","infin":"∞","infintie":"⧝","inodot":"ı","intcal":"⊺","int":"∫","Int":"∬","integers":"ℤ","Integral":"∫","intercal":"⊺","Intersection":"⋂","intlarhk":"⨗","intprod":"⨼","InvisibleComma":"⁣","InvisibleTimes":"⁢","IOcy":"Ё","iocy":"ё","Iogon":"Į","iogon":"į","Iopf":"𝕀","iopf":"𝕚","Iota":"Ι","iota":"ι","iprod":"⨼","iquest":"¿","iscr":"𝒾","Iscr":"ℐ","isin":"∈","isindot":"⋵","isinE":"⋹","isins":"⋴","isinsv":"⋳","isinv":"∈","it":"⁢","Itilde":"Ĩ","itilde":"ĩ","Iukcy":"І","iukcy":"і","Iuml":"Ï","iuml":"ï","Jcirc":"Ĵ","jcirc":"ĵ","Jcy":"Й","jcy":"й","Jfr":"𝔍","jfr":"𝔧","jmath":"ȷ","Jopf":"𝕁","jopf":"𝕛","Jscr":"𝒥","jscr":"𝒿","Jsercy":"Ј","jsercy":"ј","Jukcy":"Є","jukcy":"є","Kappa":"Κ","kappa":"κ","kappav":"ϰ","Kcedil":"Ķ","kcedil":"ķ","Kcy":"К","kcy":"к","Kfr":"𝔎","kfr":"𝔨","kgreen":"ĸ","KHcy":"Х","khcy":"х","KJcy":"Ќ","kjcy":"ќ","Kopf":"𝕂","kopf":"𝕜","Kscr":"𝒦","kscr":"𝓀","lAarr":"⇚","Lacute":"Ĺ","lacute":"ĺ","laemptyv":"⦴","lagran":"ℒ","Lambda":"Λ","lambda":"λ","lang":"⟨","Lang":"⟪","langd":"⦑","langle":"⟨","lap":"⪅","Laplacetrf":"ℒ","laquo":"«","larrb":"⇤","larrbfs":"⤟","larr":"←","Larr":"↞","lArr":"⇐","larrfs":"⤝","larrhk":"↩","larrlp":"↫","larrpl":"⤹","larrsim":"⥳","larrtl":"↢","latail":"⤙","lAtail":"⤛","lat":"⪫","late":"⪭","lates":"⪭︀","lbarr":"⤌","lBarr":"⤎","lbbrk":"❲","lbrace":"{","lbrack":"[","lbrke":"⦋","lbrksld":"⦏","lbrkslu":"⦍","Lcaron":"Ľ","lcaron":"ľ","Lcedil":"Ļ","lcedil":"ļ","lceil":"⌈","lcub":"{","Lcy":"Л","lcy":"л","ldca":"⤶","ldquo":"“","ldquor":"„","ldrdhar":"⥧","ldrushar":"⥋","ldsh":"↲","le":"≤","lE":"≦","LeftAngleBracket":"⟨","LeftArrowBar":"⇤","leftarrow":"←","LeftArrow":"←","Leftarrow":"⇐","LeftArrowRightArrow":"⇆","leftarrowtail":"↢","LeftCeiling":"⌈","LeftDoubleBracket":"⟦","LeftDownTeeVector":"⥡","LeftDownVectorBar":"⥙","LeftDownVector":"⇃","LeftFloor":"⌊","leftharpoondown":"↽","leftharpoonup":"↼","leftleftarrows":"⇇","leftrightarrow":"↔","LeftRightArrow":"↔","Leftrightarrow":"⇔","leftrightarrows":"⇆","leftrightharpoons":"⇋","leftrightsquigarrow":"↭","LeftRightVector":"⥎","LeftTeeArrow":"↤","LeftTee":"⊣","LeftTeeVector":"⥚","leftthreetimes":"⋋","LeftTriangleBar":"⧏","LeftTriangle":"⊲","LeftTriangleEqual":"⊴","LeftUpDownVector":"⥑","LeftUpTeeVector":"⥠","LeftUpVectorBar":"⥘","LeftUpVector":"↿","LeftVectorBar":"⥒","LeftVector":"↼","lEg":"⪋","leg":"⋚","leq":"≤","leqq":"≦","leqslant":"⩽","lescc":"⪨","les":"⩽","lesdot":"⩿","lesdoto":"⪁","lesdotor":"⪃","lesg":"⋚︀","lesges":"⪓","lessapprox":"⪅","lessdot":"⋖","lesseqgtr":"⋚","lesseqqgtr":"⪋","LessEqualGreater":"⋚","LessFullEqual":"≦","LessGreater":"≶","lessgtr":"≶","LessLess":"⪡","lesssim":"≲","LessSlantEqual":"⩽","LessTilde":"≲","lfisht":"⥼","lfloor":"⌊","Lfr":"𝔏","lfr":"𝔩","lg":"≶","lgE":"⪑","lHar":"⥢","lhard":"↽","lharu":"↼","lharul":"⥪","lhblk":"▄","LJcy":"Љ","ljcy":"љ","llarr":"⇇","ll":"≪","Ll":"⋘","llcorner":"⌞","Lleftarrow":"⇚","llhard":"⥫","lltri":"◺","Lmidot":"Ŀ","lmidot":"ŀ","lmoustache":"⎰","lmoust":"⎰","lnap":"⪉","lnapprox":"⪉","lne":"⪇","lnE":"≨","lneq":"⪇","lneqq":"≨","lnsim":"⋦","loang":"⟬","loarr":"⇽","lobrk":"⟦","longleftarrow":"⟵","LongLeftArrow":"⟵","Longleftarrow":"⟸","longleftrightarrow":"⟷","LongLeftRightArrow":"⟷","Longleftrightarrow":"⟺","longmapsto":"⟼","longrightarrow":"⟶","LongRightArrow":"⟶","Longrightarrow":"⟹","looparrowleft":"↫","looparrowright":"↬","lopar":"⦅","Lopf":"𝕃","lopf":"𝕝","loplus":"⨭","lotimes":"⨴","lowast":"∗","lowbar":"_","LowerLeftArrow":"↙","LowerRightArrow":"↘","loz":"◊","lozenge":"◊","lozf":"⧫","lpar":"(","lparlt":"⦓","lrarr":"⇆","lrcorner":"⌟","lrhar":"⇋","lrhard":"⥭","lrm":"‎","lrtri":"⊿","lsaquo":"‹","lscr":"𝓁","Lscr":"ℒ","lsh":"↰","Lsh":"↰","lsim":"≲","lsime":"⪍","lsimg":"⪏","lsqb":"[","lsquo":"‘","lsquor":"‚","Lstrok":"Ł","lstrok":"ł","ltcc":"⪦","ltcir":"⩹","lt":"<","LT":"<","Lt":"≪","ltdot":"⋖","lthree":"⋋","ltimes":"⋉","ltlarr":"⥶","ltquest":"⩻","ltri":"◃","ltrie":"⊴","ltrif":"◂","ltrPar":"⦖","lurdshar":"⥊","luruhar":"⥦","lvertneqq":"≨︀","lvnE":"≨︀","macr":"¯","male":"♂","malt":"✠","maltese":"✠","Map":"⤅","map":"↦","mapsto":"↦","mapstodown":"↧","mapstoleft":"↤","mapstoup":"↥","marker":"▮","mcomma":"⨩","Mcy":"М","mcy":"м","mdash":"—","mDDot":"∺","measuredangle":"∡","MediumSpace":" ","Mellintrf":"ℳ","Mfr":"𝔐","mfr":"𝔪","mho":"℧","micro":"µ","midast":"*","midcir":"⫰","mid":"∣","middot":"·","minusb":"⊟","minus":"−","minusd":"∸","minusdu":"⨪","MinusPlus":"∓","mlcp":"⫛","mldr":"…","mnplus":"∓","models":"⊧","Mopf":"𝕄","mopf":"𝕞","mp":"∓","mscr":"𝓂","Mscr":"ℳ","mstpos":"∾","Mu":"Μ","mu":"μ","multimap":"⊸","mumap":"⊸","nabla":"∇","Nacute":"Ń","nacute":"ń","nang":"∠⃒","nap":"≉","napE":"⩰̸","napid":"≋̸","napos":"ʼn","napprox":"≉","natural":"♮","naturals":"ℕ","natur":"♮","nbsp":" ","nbump":"≎̸","nbumpe":"≏̸","ncap":"⩃","Ncaron":"Ň","ncaron":"ň","Ncedil":"Ņ","ncedil":"ņ","ncong":"≇","ncongdot":"⩭̸","ncup":"⩂","Ncy":"Н","ncy":"н","ndash":"–","nearhk":"⤤","nearr":"↗","neArr":"⇗","nearrow":"↗","ne":"≠","nedot":"≐̸","NegativeMediumSpace":"​","NegativeThickSpace":"​","NegativeThinSpace":"​","NegativeVeryThinSpace":"​","nequiv":"≢","nesear":"⤨","nesim":"≂̸","NestedGreaterGreater":"≫","NestedLessLess":"≪","NewLine":"\\n","nexist":"∄","nexists":"∄","Nfr":"𝔑","nfr":"𝔫","ngE":"≧̸","nge":"≱","ngeq":"≱","ngeqq":"≧̸","ngeqslant":"⩾̸","nges":"⩾̸","nGg":"⋙̸","ngsim":"≵","nGt":"≫⃒","ngt":"≯","ngtr":"≯","nGtv":"≫̸","nharr":"↮","nhArr":"⇎","nhpar":"⫲","ni":"∋","nis":"⋼","nisd":"⋺","niv":"∋","NJcy":"Њ","njcy":"њ","nlarr":"↚","nlArr":"⇍","nldr":"‥","nlE":"≦̸","nle":"≰","nleftarrow":"↚","nLeftarrow":"⇍","nleftrightarrow":"↮","nLeftrightarrow":"⇎","nleq":"≰","nleqq":"≦̸","nleqslant":"⩽̸","nles":"⩽̸","nless":"≮","nLl":"⋘̸","nlsim":"≴","nLt":"≪⃒","nlt":"≮","nltri":"⋪","nltrie":"⋬","nLtv":"≪̸","nmid":"∤","NoBreak":"⁠","NonBreakingSpace":" ","nopf":"𝕟","Nopf":"ℕ","Not":"⫬","not":"¬","NotCongruent":"≢","NotCupCap":"≭","NotDoubleVerticalBar":"∦","NotElement":"∉","NotEqual":"≠","NotEqualTilde":"≂̸","NotExists":"∄","NotGreater":"≯","NotGreaterEqual":"≱","NotGreaterFullEqual":"≧̸","NotGreaterGreater":"≫̸","NotGreaterLess":"≹","NotGreaterSlantEqual":"⩾̸","NotGreaterTilde":"≵","NotHumpDownHump":"≎̸","NotHumpEqual":"≏̸","notin":"∉","notindot":"⋵̸","notinE":"⋹̸","notinva":"∉","notinvb":"⋷","notinvc":"⋶","NotLeftTriangleBar":"⧏̸","NotLeftTriangle":"⋪","NotLeftTriangleEqual":"⋬","NotLess":"≮","NotLessEqual":"≰","NotLessGreater":"≸","NotLessLess":"≪̸","NotLessSlantEqual":"⩽̸","NotLessTilde":"≴","NotNestedGreaterGreater":"⪢̸","NotNestedLessLess":"⪡̸","notni":"∌","notniva":"∌","notnivb":"⋾","notnivc":"⋽","NotPrecedes":"⊀","NotPrecedesEqual":"⪯̸","NotPrecedesSlantEqual":"⋠","NotReverseElement":"∌","NotRightTriangleBar":"⧐̸","NotRightTriangle":"⋫","NotRightTriangleEqual":"⋭","NotSquareSubset":"⊏̸","NotSquareSubsetEqual":"⋢","NotSquareSuperset":"⊐̸","NotSquareSupersetEqual":"⋣","NotSubset":"⊂⃒","NotSubsetEqual":"⊈","NotSucceeds":"⊁","NotSucceedsEqual":"⪰̸","NotSucceedsSlantEqual":"⋡","NotSucceedsTilde":"≿̸","NotSuperset":"⊃⃒","NotSupersetEqual":"⊉","NotTilde":"≁","NotTildeEqual":"≄","NotTildeFullEqual":"≇","NotTildeTilde":"≉","NotVerticalBar":"∤","nparallel":"∦","npar":"∦","nparsl":"⫽⃥","npart":"∂̸","npolint":"⨔","npr":"⊀","nprcue":"⋠","nprec":"⊀","npreceq":"⪯̸","npre":"⪯̸","nrarrc":"⤳̸","nrarr":"↛","nrArr":"⇏","nrarrw":"↝̸","nrightarrow":"↛","nRightarrow":"⇏","nrtri":"⋫","nrtrie":"⋭","nsc":"⊁","nsccue":"⋡","nsce":"⪰̸","Nscr":"𝒩","nscr":"𝓃","nshortmid":"∤","nshortparallel":"∦","nsim":"≁","nsime":"≄","nsimeq":"≄","nsmid":"∤","nspar":"∦","nsqsube":"⋢","nsqsupe":"⋣","nsub":"⊄","nsubE":"⫅̸","nsube":"⊈","nsubset":"⊂⃒","nsubseteq":"⊈","nsubseteqq":"⫅̸","nsucc":"⊁","nsucceq":"⪰̸","nsup":"⊅","nsupE":"⫆̸","nsupe":"⊉","nsupset":"⊃⃒","nsupseteq":"⊉","nsupseteqq":"⫆̸","ntgl":"≹","Ntilde":"Ñ","ntilde":"ñ","ntlg":"≸","ntriangleleft":"⋪","ntrianglelefteq":"⋬","ntriangleright":"⋫","ntrianglerighteq":"⋭","Nu":"Ν","nu":"ν","num":"#","numero":"№","numsp":" ","nvap":"≍⃒","nvdash":"⊬","nvDash":"⊭","nVdash":"⊮","nVDash":"⊯","nvge":"≥⃒","nvgt":">⃒","nvHarr":"⤄","nvinfin":"⧞","nvlArr":"⤂","nvle":"≤⃒","nvlt":"<⃒","nvltrie":"⊴⃒","nvrArr":"⤃","nvrtrie":"⊵⃒","nvsim":"∼⃒","nwarhk":"⤣","nwarr":"↖","nwArr":"⇖","nwarrow":"↖","nwnear":"⤧","Oacute":"Ó","oacute":"ó","oast":"⊛","Ocirc":"Ô","ocirc":"ô","ocir":"⊚","Ocy":"О","ocy":"о","odash":"⊝","Odblac":"Ő","odblac":"ő","odiv":"⨸","odot":"⊙","odsold":"⦼","OElig":"Œ","oelig":"œ","ofcir":"⦿","Ofr":"𝔒","ofr":"𝔬","ogon":"˛","Ograve":"Ò","ograve":"ò","ogt":"⧁","ohbar":"⦵","ohm":"Ω","oint":"∮","olarr":"↺","olcir":"⦾","olcross":"⦻","oline":"‾","olt":"⧀","Omacr":"Ō","omacr":"ō","Omega":"Ω","omega":"ω","Omicron":"Ο","omicron":"ο","omid":"⦶","ominus":"⊖","Oopf":"𝕆","oopf":"𝕠","opar":"⦷","OpenCurlyDoubleQuote":"“","OpenCurlyQuote":"‘","operp":"⦹","oplus":"⊕","orarr":"↻","Or":"⩔","or":"∨","ord":"⩝","order":"ℴ","orderof":"ℴ","ordf":"ª","ordm":"º","origof":"⊶","oror":"⩖","orslope":"⩗","orv":"⩛","oS":"Ⓢ","Oscr":"𝒪","oscr":"ℴ","Oslash":"Ø","oslash":"ø","osol":"⊘","Otilde":"Õ","otilde":"õ","otimesas":"⨶","Otimes":"⨷","otimes":"⊗","Ouml":"Ö","ouml":"ö","ovbar":"⌽","OverBar":"‾","OverBrace":"⏞","OverBracket":"⎴","OverParenthesis":"⏜","para":"¶","parallel":"∥","par":"∥","parsim":"⫳","parsl":"⫽","part":"∂","PartialD":"∂","Pcy":"П","pcy":"п","percnt":"%","period":".","permil":"‰","perp":"⊥","pertenk":"‱","Pfr":"𝔓","pfr":"𝔭","Phi":"Φ","phi":"φ","phiv":"ϕ","phmmat":"ℳ","phone":"☎","Pi":"Π","pi":"π","pitchfork":"⋔","piv":"ϖ","planck":"ℏ","planckh":"ℎ","plankv":"ℏ","plusacir":"⨣","plusb":"⊞","pluscir":"⨢","plus":"+","plusdo":"∔","plusdu":"⨥","pluse":"⩲","PlusMinus":"±","plusmn":"±","plussim":"⨦","plustwo":"⨧","pm":"±","Poincareplane":"ℌ","pointint":"⨕","popf":"𝕡","Popf":"ℙ","pound":"£","prap":"⪷","Pr":"⪻","pr":"≺","prcue":"≼","precapprox":"⪷","prec":"≺","preccurlyeq":"≼","Precedes":"≺","PrecedesEqual":"⪯","PrecedesSlantEqual":"≼","PrecedesTilde":"≾","preceq":"⪯","precnapprox":"⪹","precneqq":"⪵","precnsim":"⋨","pre":"⪯","prE":"⪳","precsim":"≾","prime":"′","Prime":"″","primes":"ℙ","prnap":"⪹","prnE":"⪵","prnsim":"⋨","prod":"∏","Product":"∏","profalar":"⌮","profline":"⌒","profsurf":"⌓","prop":"∝","Proportional":"∝","Proportion":"∷","propto":"∝","prsim":"≾","prurel":"⊰","Pscr":"𝒫","pscr":"𝓅","Psi":"Ψ","psi":"ψ","puncsp":" ","Qfr":"𝔔","qfr":"𝔮","qint":"⨌","qopf":"𝕢","Qopf":"ℚ","qprime":"⁗","Qscr":"𝒬","qscr":"𝓆","quaternions":"ℍ","quatint":"⨖","quest":"?","questeq":"≟","quot":"\\"","QUOT":"\\"","rAarr":"⇛","race":"∽̱","Racute":"Ŕ","racute":"ŕ","radic":"√","raemptyv":"⦳","rang":"⟩","Rang":"⟫","rangd":"⦒","range":"⦥","rangle":"⟩","raquo":"»","rarrap":"⥵","rarrb":"⇥","rarrbfs":"⤠","rarrc":"⤳","rarr":"→","Rarr":"↠","rArr":"⇒","rarrfs":"⤞","rarrhk":"↪","rarrlp":"↬","rarrpl":"⥅","rarrsim":"⥴","Rarrtl":"⤖","rarrtl":"↣","rarrw":"↝","ratail":"⤚","rAtail":"⤜","ratio":"∶","rationals":"ℚ","rbarr":"⤍","rBarr":"⤏","RBarr":"⤐","rbbrk":"❳","rbrace":"}","rbrack":"]","rbrke":"⦌","rbrksld":"⦎","rbrkslu":"⦐","Rcaron":"Ř","rcaron":"ř","Rcedil":"Ŗ","rcedil":"ŗ","rceil":"⌉","rcub":"}","Rcy":"Р","rcy":"р","rdca":"⤷","rdldhar":"⥩","rdquo":"”","rdquor":"”","rdsh":"↳","real":"ℜ","realine":"ℛ","realpart":"ℜ","reals":"ℝ","Re":"ℜ","rect":"▭","reg":"®","REG":"®","ReverseElement":"∋","ReverseEquilibrium":"⇋","ReverseUpEquilibrium":"⥯","rfisht":"⥽","rfloor":"⌋","rfr":"𝔯","Rfr":"ℜ","rHar":"⥤","rhard":"⇁","rharu":"⇀","rharul":"⥬","Rho":"Ρ","rho":"ρ","rhov":"ϱ","RightAngleBracket":"⟩","RightArrowBar":"⇥","rightarrow":"→","RightArrow":"→","Rightarrow":"⇒","RightArrowLeftArrow":"⇄","rightarrowtail":"↣","RightCeiling":"⌉","RightDoubleBracket":"⟧","RightDownTeeVector":"⥝","RightDownVectorBar":"⥕","RightDownVector":"⇂","RightFloor":"⌋","rightharpoondown":"⇁","rightharpoonup":"⇀","rightleftarrows":"⇄","rightleftharpoons":"⇌","rightrightarrows":"⇉","rightsquigarrow":"↝","RightTeeArrow":"↦","RightTee":"⊢","RightTeeVector":"⥛","rightthreetimes":"⋌","RightTriangleBar":"⧐","RightTriangle":"⊳","RightTriangleEqual":"⊵","RightUpDownVector":"⥏","RightUpTeeVector":"⥜","RightUpVectorBar":"⥔","RightUpVector":"↾","RightVectorBar":"⥓","RightVector":"⇀","ring":"˚","risingdotseq":"≓","rlarr":"⇄","rlhar":"⇌","rlm":"‏","rmoustache":"⎱","rmoust":"⎱","rnmid":"⫮","roang":"⟭","roarr":"⇾","robrk":"⟧","ropar":"⦆","ropf":"𝕣","Ropf":"ℝ","roplus":"⨮","rotimes":"⨵","RoundImplies":"⥰","rpar":")","rpargt":"⦔","rppolint":"⨒","rrarr":"⇉","Rrightarrow":"⇛","rsaquo":"›","rscr":"𝓇","Rscr":"ℛ","rsh":"↱","Rsh":"↱","rsqb":"]","rsquo":"’","rsquor":"’","rthree":"⋌","rtimes":"⋊","rtri":"▹","rtrie":"⊵","rtrif":"▸","rtriltri":"⧎","RuleDelayed":"⧴","ruluhar":"⥨","rx":"℞","Sacute":"Ś","sacute":"ś","sbquo":"‚","scap":"⪸","Scaron":"Š","scaron":"š","Sc":"⪼","sc":"≻","sccue":"≽","sce":"⪰","scE":"⪴","Scedil":"Ş","scedil":"ş","Scirc":"Ŝ","scirc":"ŝ","scnap":"⪺","scnE":"⪶","scnsim":"⋩","scpolint":"⨓","scsim":"≿","Scy":"С","scy":"с","sdotb":"⊡","sdot":"⋅","sdote":"⩦","searhk":"⤥","searr":"↘","seArr":"⇘","searrow":"↘","sect":"§","semi":";","seswar":"⤩","setminus":"∖","setmn":"∖","sext":"✶","Sfr":"𝔖","sfr":"𝔰","sfrown":"⌢","sharp":"♯","SHCHcy":"Щ","shchcy":"щ","SHcy":"Ш","shcy":"ш","ShortDownArrow":"↓","ShortLeftArrow":"←","shortmid":"∣","shortparallel":"∥","ShortRightArrow":"→","ShortUpArrow":"↑","shy":"­","Sigma":"Σ","sigma":"σ","sigmaf":"ς","sigmav":"ς","sim":"∼","simdot":"⩪","sime":"≃","simeq":"≃","simg":"⪞","simgE":"⪠","siml":"⪝","simlE":"⪟","simne":"≆","simplus":"⨤","simrarr":"⥲","slarr":"←","SmallCircle":"∘","smallsetminus":"∖","smashp":"⨳","smeparsl":"⧤","smid":"∣","smile":"⌣","smt":"⪪","smte":"⪬","smtes":"⪬︀","SOFTcy":"Ь","softcy":"ь","solbar":"⌿","solb":"⧄","sol":"/","Sopf":"𝕊","sopf":"𝕤","spades":"♠","spadesuit":"♠","spar":"∥","sqcap":"⊓","sqcaps":"⊓︀","sqcup":"⊔","sqcups":"⊔︀","Sqrt":"√","sqsub":"⊏","sqsube":"⊑","sqsubset":"⊏","sqsubseteq":"⊑","sqsup":"⊐","sqsupe":"⊒","sqsupset":"⊐","sqsupseteq":"⊒","square":"□","Square":"□","SquareIntersection":"⊓","SquareSubset":"⊏","SquareSubsetEqual":"⊑","SquareSuperset":"⊐","SquareSupersetEqual":"⊒","SquareUnion":"⊔","squarf":"▪","squ":"□","squf":"▪","srarr":"→","Sscr":"𝒮","sscr":"𝓈","ssetmn":"∖","ssmile":"⌣","sstarf":"⋆","Star":"⋆","star":"☆","starf":"★","straightepsilon":"ϵ","straightphi":"ϕ","strns":"¯","sub":"⊂","Sub":"⋐","subdot":"⪽","subE":"⫅","sube":"⊆","subedot":"⫃","submult":"⫁","subnE":"⫋","subne":"⊊","subplus":"⪿","subrarr":"⥹","subset":"⊂","Subset":"⋐","subseteq":"⊆","subseteqq":"⫅","SubsetEqual":"⊆","subsetneq":"⊊","subsetneqq":"⫋","subsim":"⫇","subsub":"⫕","subsup":"⫓","succapprox":"⪸","succ":"≻","succcurlyeq":"≽","Succeeds":"≻","SucceedsEqual":"⪰","SucceedsSlantEqual":"≽","SucceedsTilde":"≿","succeq":"⪰","succnapprox":"⪺","succneqq":"⪶","succnsim":"⋩","succsim":"≿","SuchThat":"∋","sum":"∑","Sum":"∑","sung":"♪","sup1":"¹","sup2":"²","sup3":"³","sup":"⊃","Sup":"⋑","supdot":"⪾","supdsub":"⫘","supE":"⫆","supe":"⊇","supedot":"⫄","Superset":"⊃","SupersetEqual":"⊇","suphsol":"⟉","suphsub":"⫗","suplarr":"⥻","supmult":"⫂","supnE":"⫌","supne":"⊋","supplus":"⫀","supset":"⊃","Supset":"⋑","supseteq":"⊇","supseteqq":"⫆","supsetneq":"⊋","supsetneqq":"⫌","supsim":"⫈","supsub":"⫔","supsup":"⫖","swarhk":"⤦","swarr":"↙","swArr":"⇙","swarrow":"↙","swnwar":"⤪","szlig":"ß","Tab":"\\t","target":"⌖","Tau":"Τ","tau":"τ","tbrk":"⎴","Tcaron":"Ť","tcaron":"ť","Tcedil":"Ţ","tcedil":"ţ","Tcy":"Т","tcy":"т","tdot":"⃛","telrec":"⌕","Tfr":"𝔗","tfr":"𝔱","there4":"∴","therefore":"∴","Therefore":"∴","Theta":"Θ","theta":"θ","thetasym":"ϑ","thetav":"ϑ","thickapprox":"≈","thicksim":"∼","ThickSpace":"  ","ThinSpace":" ","thinsp":" ","thkap":"≈","thksim":"∼","THORN":"Þ","thorn":"þ","tilde":"˜","Tilde":"∼","TildeEqual":"≃","TildeFullEqual":"≅","TildeTilde":"≈","timesbar":"⨱","timesb":"⊠","times":"×","timesd":"⨰","tint":"∭","toea":"⤨","topbot":"⌶","topcir":"⫱","top":"⊤","Topf":"𝕋","topf":"𝕥","topfork":"⫚","tosa":"⤩","tprime":"‴","trade":"™","TRADE":"™","triangle":"▵","triangledown":"▿","triangleleft":"◃","trianglelefteq":"⊴","triangleq":"≜","triangleright":"▹","trianglerighteq":"⊵","tridot":"◬","trie":"≜","triminus":"⨺","TripleDot":"⃛","triplus":"⨹","trisb":"⧍","tritime":"⨻","trpezium":"⏢","Tscr":"𝒯","tscr":"𝓉","TScy":"Ц","tscy":"ц","TSHcy":"Ћ","tshcy":"ћ","Tstrok":"Ŧ","tstrok":"ŧ","twixt":"≬","twoheadleftarrow":"↞","twoheadrightarrow":"↠","Uacute":"Ú","uacute":"ú","uarr":"↑","Uarr":"↟","uArr":"⇑","Uarrocir":"⥉","Ubrcy":"Ў","ubrcy":"ў","Ubreve":"Ŭ","ubreve":"ŭ","Ucirc":"Û","ucirc":"û","Ucy":"У","ucy":"у","udarr":"⇅","Udblac":"Ű","udblac":"ű","udhar":"⥮","ufisht":"⥾","Ufr":"𝔘","ufr":"𝔲","Ugrave":"Ù","ugrave":"ù","uHar":"⥣","uharl":"↿","uharr":"↾","uhblk":"▀","ulcorn":"⌜","ulcorner":"⌜","ulcrop":"⌏","ultri":"◸","Umacr":"Ū","umacr":"ū","uml":"¨","UnderBar":"_","UnderBrace":"⏟","UnderBracket":"⎵","UnderParenthesis":"⏝","Union":"⋃","UnionPlus":"⊎","Uogon":"Ų","uogon":"ų","Uopf":"𝕌","uopf":"𝕦","UpArrowBar":"⤒","uparrow":"↑","UpArrow":"↑","Uparrow":"⇑","UpArrowDownArrow":"⇅","updownarrow":"↕","UpDownArrow":"↕","Updownarrow":"⇕","UpEquilibrium":"⥮","upharpoonleft":"↿","upharpoonright":"↾","uplus":"⊎","UpperLeftArrow":"↖","UpperRightArrow":"↗","upsi":"υ","Upsi":"ϒ","upsih":"ϒ","Upsilon":"Υ","upsilon":"υ","UpTeeArrow":"↥","UpTee":"⊥","upuparrows":"⇈","urcorn":"⌝","urcorner":"⌝","urcrop":"⌎","Uring":"Ů","uring":"ů","urtri":"◹","Uscr":"𝒰","uscr":"𝓊","utdot":"⋰","Utilde":"Ũ","utilde":"ũ","utri":"▵","utrif":"▴","uuarr":"⇈","Uuml":"Ü","uuml":"ü","uwangle":"⦧","vangrt":"⦜","varepsilon":"ϵ","varkappa":"ϰ","varnothing":"∅","varphi":"ϕ","varpi":"ϖ","varpropto":"∝","varr":"↕","vArr":"⇕","varrho":"ϱ","varsigma":"ς","varsubsetneq":"⊊︀","varsubsetneqq":"⫋︀","varsupsetneq":"⊋︀","varsupsetneqq":"⫌︀","vartheta":"ϑ","vartriangleleft":"⊲","vartriangleright":"⊳","vBar":"⫨","Vbar":"⫫","vBarv":"⫩","Vcy":"В","vcy":"в","vdash":"⊢","vDash":"⊨","Vdash":"⊩","VDash":"⊫","Vdashl":"⫦","veebar":"⊻","vee":"∨","Vee":"⋁","veeeq":"≚","vellip":"⋮","verbar":"|","Verbar":"‖","vert":"|","Vert":"‖","VerticalBar":"∣","VerticalLine":"|","VerticalSeparator":"❘","VerticalTilde":"≀","VeryThinSpace":" ","Vfr":"𝔙","vfr":"𝔳","vltri":"⊲","vnsub":"⊂⃒","vnsup":"⊃⃒","Vopf":"𝕍","vopf":"𝕧","vprop":"∝","vrtri":"⊳","Vscr":"𝒱","vscr":"𝓋","vsubnE":"⫋︀","vsubne":"⊊︀","vsupnE":"⫌︀","vsupne":"⊋︀","Vvdash":"⊪","vzigzag":"⦚","Wcirc":"Ŵ","wcirc":"ŵ","wedbar":"⩟","wedge":"∧","Wedge":"⋀","wedgeq":"≙","weierp":"℘","Wfr":"𝔚","wfr":"𝔴","Wopf":"𝕎","wopf":"𝕨","wp":"℘","wr":"≀","wreath":"≀","Wscr":"𝒲","wscr":"𝓌","xcap":"⋂","xcirc":"◯","xcup":"⋃","xdtri":"▽","Xfr":"𝔛","xfr":"𝔵","xharr":"⟷","xhArr":"⟺","Xi":"Ξ","xi":"ξ","xlarr":"⟵","xlArr":"⟸","xmap":"⟼","xnis":"⋻","xodot":"⨀","Xopf":"𝕏","xopf":"𝕩","xoplus":"⨁","xotime":"⨂","xrarr":"⟶","xrArr":"⟹","Xscr":"𝒳","xscr":"𝓍","xsqcup":"⨆","xuplus":"⨄","xutri":"△","xvee":"⋁","xwedge":"⋀","Yacute":"Ý","yacute":"ý","YAcy":"Я","yacy":"я","Ycirc":"Ŷ","ycirc":"ŷ","Ycy":"Ы","ycy":"ы","yen":"¥","Yfr":"𝔜","yfr":"𝔶","YIcy":"Ї","yicy":"ї","Yopf":"𝕐","yopf":"𝕪","Yscr":"𝒴","yscr":"𝓎","YUcy":"Ю","yucy":"ю","yuml":"ÿ","Yuml":"Ÿ","Zacute":"Ź","zacute":"ź","Zcaron":"Ž","zcaron":"ž","Zcy":"З","zcy":"з","Zdot":"Ż","zdot":"ż","zeetrf":"ℨ","ZeroWidthSpace":"​","Zeta":"Ζ","zeta":"ζ","zfr":"𝔷","Zfr":"ℨ","ZHcy":"Ж","zhcy":"ж","zigrarr":"⇝","zopf":"𝕫","Zopf":"ℤ","Zscr":"𝒵","zscr":"𝓏","zwj":"‍","zwnj":"‌"}')},function(e,t,r){"use strict";var n={};function o(e,t,r){var i,a,s,l,c,u="";for("string"!=typeof t&&(r=t,t=o.defaultChars),void 0===r&&(r=!0),c=function(e){var t,r,o=n[e];if(o)return o;for(o=n[e]=[],t=0;t<128;t++)r=String.fromCharCode(t),/^[0-9a-z]$/i.test(r)?o.push(r):o.push("%"+("0"+t.toString(16).toUpperCase()).slice(-2));for(t=0;t<e.length;t++)o[e.charCodeAt(t)]=e[t];return o}(t),i=0,a=e.length;i<a;i++)if(s=e.charCodeAt(i),r&&37===s&&i+2<a&&/^[0-9a-f]{2}$/i.test(e.slice(i+1,i+3)))u+=e.slice(i,i+3),i+=2;else if(s<128)u+=c[s];else if(s>=55296&&s<=57343){if(s>=55296&&s<=56319&&i+1<a&&(l=e.charCodeAt(i+1))>=56320&&l<=57343){u+=encodeURIComponent(e[i]+e[i+1]),i++;continue}u+="%EF%BF%BD"}else u+=encodeURIComponent(e[i]);return u}o.defaultChars=";/?:@&=+$,-_.!~*'()#",o.componentChars="-_.!~*'()",e.exports=o},function(e,t,r){"use strict";var n={};function o(e,t){var r;return"string"!=typeof t&&(t=o.defaultChars),r=function(e){var t,r,o=n[e];if(o)return o;for(o=n[e]=[],t=0;t<128;t++)r=String.fromCharCode(t),o.push(r);for(t=0;t<e.length;t++)o[r=e.charCodeAt(t)]="%"+("0"+r.toString(16).toUpperCase()).slice(-2);return o}(t),e.replace(/(%[a-f0-9]{2})+/gi,(function(e){var t,n,o,i,a,s,l,c="";for(t=0,n=e.length;t<n;t+=3)(o=parseInt(e.slice(t+1,t+3),16))<128?c+=r[o]:192==(224&o)&&t+3<n&&128==(192&(i=parseInt(e.slice(t+4,t+6),16)))?(c+=(l=o<<6&1984|63&i)<128?"��":String.fromCharCode(l),t+=3):224==(240&o)&&t+6<n&&(i=parseInt(e.slice(t+4,t+6),16),a=parseInt(e.slice(t+7,t+9),16),128==(192&i)&&128==(192&a))?(c+=(l=o<<12&61440|i<<6&4032|63&a)<2048||l>=55296&&l<=57343?"���":String.fromCharCode(l),t+=6):240==(248&o)&&t+9<n&&(i=parseInt(e.slice(t+4,t+6),16),a=parseInt(e.slice(t+7,t+9),16),s=parseInt(e.slice(t+10,t+12),16),128==(192&i)&&128==(192&a)&&128==(192&s))?((l=o<<18&1835008|i<<12&258048|a<<6&4032|63&s)<65536||l>1114111?c+="����":(l-=65536,c+=String.fromCharCode(55296+(l>>10),56320+(1023&l))),t+=9):c+="�";return c}))}o.defaultChars=";/?:@&=+$,#",o.componentChars="",e.exports=o},function(e,t,r){"use strict";e.exports=function(e){var t="";return t+=e.protocol||"",t+=e.slashes?"//":"",t+=e.auth?e.auth+"@":"",e.hostname&&-1!==e.hostname.indexOf(":")?t+="["+e.hostname+"]":t+=e.hostname||"",t+=e.port?":"+e.port:"",t+=e.pathname||"",t+=e.search||"",t+=e.hash||""}},function(e,t,r){"use strict";function n(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}var o=/^([a-z0-9.+-]+:)/i,i=/:[0-9]*$/,a=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,s=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),l=["'"].concat(s),c=["%","/","?",";","#"].concat(l),u=["/","?","#"],p=/^[+a-z0-9A-Z_-]{0,63}$/,d=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,h={javascript:!0,"javascript:":!0},f={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};n.prototype.parse=function(e,t){var r,n,i,s,l,_=e;if(_=_.trim(),!t&&1===e.split("#").length){var m=a.exec(_);if(m)return this.pathname=m[1],m[2]&&(this.search=m[2]),this}var g=o.exec(_);if(g&&(i=(g=g[0]).toLowerCase(),this.protocol=g,_=_.substr(g.length)),(t||g||_.match(/^\/\/[^@\/]+@[^@\/]+/))&&(!(l="//"===_.substr(0,2))||g&&h[g]||(_=_.substr(2),this.slashes=!0)),!h[g]&&(l||g&&!f[g])){var b,v,k=-1;for(r=0;r<u.length;r++)-1!==(s=_.indexOf(u[r]))&&(-1===k||s<k)&&(k=s);for(-1!==(v=-1===k?_.lastIndexOf("@"):_.lastIndexOf("@",k))&&(b=_.slice(0,v),_=_.slice(v+1),this.auth=b),k=-1,r=0;r<c.length;r++)-1!==(s=_.indexOf(c[r]))&&(-1===k||s<k)&&(k=s);-1===k&&(k=_.length),":"===_[k-1]&&k--;var w=_.slice(0,k);_=_.slice(k),this.parseHost(w),this.hostname=this.hostname||"";var y="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!y){var x=this.hostname.split(/\./);for(r=0,n=x.length;r<n;r++){var C=x[r];if(C&&!C.match(p)){for(var j="",O=0,S=C.length;O<S;O++)C.charCodeAt(O)>127?j+="x":j+=C[O];if(!j.match(p)){var E=x.slice(0,r),T=x.slice(r+1),A=C.match(d);A&&(E.push(A[1]),T.unshift(A[2])),T.length&&(_=T.join(".")+_),this.hostname=E.join(".");break}}}}this.hostname.length>255&&(this.hostname=""),y&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}var D=_.indexOf("#");-1!==D&&(this.hash=_.substr(D),_=_.slice(0,D));var L=_.indexOf("?");return-1!==L&&(this.search=_.substr(L),_=_.slice(0,L)),_&&(this.pathname=_),f[i]&&this.hostname&&!this.pathname&&(this.pathname=""),this},n.prototype.parseHost=function(e){var t=i.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)},e.exports=function(e,t){if(e&&e instanceof n)return e;var r=new n;return r.parse(e,t),r}},function(e,t,r){"use strict";t.Any=r(64),t.Cc=r(65),t.Cf=r(146),t.P=r(40),t.Z=r(66)},function(e,t){e.exports=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/},function(e,t,r){"use strict";t.parseLinkLabel=r(148),t.parseLinkDestination=r(149),t.parseLinkTitle=r(150)},function(e,t,r){"use strict";e.exports=function(e,t,r){var n,o,i,a,s=-1,l=e.posMax,c=e.pos;for(e.pos=t+1,n=1;e.pos<l;){if(93===(i=e.src.charCodeAt(e.pos))&&0===--n){o=!0;break}if(a=e.pos,e.md.inline.skipToken(e),91===i)if(a===e.pos-1)n++;else if(r)return e.pos=c,-1}return o&&(s=e.pos),e.pos=c,s}},function(e,t,r){"use strict";var n=r(1).unescapeAll;e.exports=function(e,t,r){var o,i,a=t,s={ok:!1,pos:0,lines:0,str:""};if(60===e.charCodeAt(t)){for(t++;t<r;){if(10===(o=e.charCodeAt(t)))return s;if(62===o)return s.pos=t+1,s.str=n(e.slice(a+1,t)),s.ok=!0,s;92===o&&t+1<r?t+=2:t++}return s}for(i=0;t<r&&32!==(o=e.charCodeAt(t))&&!(o<32||127===o);)if(92===o&&t+1<r)t+=2;else{if(40===o&&i++,41===o){if(0===i)break;i--}t++}return a===t||0!==i||(s.str=n(e.slice(a,t)),s.lines=0,s.pos=t,s.ok=!0),s}},function(e,t,r){"use strict";var n=r(1).unescapeAll;e.exports=function(e,t,r){var o,i,a=0,s=t,l={ok:!1,pos:0,lines:0,str:""};if(t>=r)return l;if(34!==(i=e.charCodeAt(t))&&39!==i&&40!==i)return l;for(t++,40===i&&(i=41);t<r;){if((o=e.charCodeAt(t))===i)return l.pos=t+1,l.lines=a,l.str=n(e.slice(s+1,t)),l.ok=!0,l;10===o?a++:92===o&&t+1<r&&(t++,10===e.charCodeAt(t)&&a++),t++}return l}},function(e,t,r){"use strict";var n=r(1).assign,o=r(1).unescapeAll,i=r(1).escapeHtml,a={};function s(){this.rules=n({},a)}a.code_inline=function(e,t,r,n,o){var a=e[t];return"<code"+o.renderAttrs(a)+">"+i(e[t].content)+"</code>"},a.code_block=function(e,t,r,n,o){var a=e[t];return"<pre"+o.renderAttrs(a)+"><code>"+i(e[t].content)+"</code></pre>\n"},a.fence=function(e,t,r,n,a){var s,l,c,u,p=e[t],d=p.info?o(p.info).trim():"",h="";return d&&(h=d.split(/\s+/g)[0]),0===(s=r.highlight&&r.highlight(p.content,h)||i(p.content)).indexOf("<pre")?s+"\n":d?(l=p.attrIndex("class"),c=p.attrs?p.attrs.slice():[],l<0?c.push(["class",r.langPrefix+h]):c[l][1]+=" "+r.langPrefix+h,u={attrs:c},"<pre><code"+a.renderAttrs(u)+">"+s+"</code></pre>\n"):"<pre><code"+a.renderAttrs(p)+">"+s+"</code></pre>\n"},a.image=function(e,t,r,n,o){var i=e[t];return i.attrs[i.attrIndex("alt")][1]=o.renderInlineAsText(i.children,r,n),o.renderToken(e,t,r)},a.hardbreak=function(e,t,r){return r.xhtmlOut?"<br />\n":"<br>\n"},a.softbreak=function(e,t,r){return r.breaks?r.xhtmlOut?"<br />\n":"<br>\n":"\n"},a.text=function(e,t){return i(e[t].content)},a.html_block=function(e,t){return e[t].content},a.html_inline=function(e,t){return e[t].content},s.prototype.renderAttrs=function(e){var t,r,n;if(!e.attrs)return"";for(n="",t=0,r=e.attrs.length;t<r;t++)n+=" "+i(e.attrs[t][0])+'="'+i(e.attrs[t][1])+'"';return n},s.prototype.renderToken=function(e,t,r){var n,o="",i=!1,a=e[t];return a.hidden?"":(a.block&&-1!==a.nesting&&t&&e[t-1].hidden&&(o+="\n"),o+=(-1===a.nesting?"</":"<")+a.tag,o+=this.renderAttrs(a),0===a.nesting&&r.xhtmlOut&&(o+=" /"),a.block&&(i=!0,1===a.nesting&&t+1<e.length&&("inline"===(n=e[t+1]).type||n.hidden||-1===n.nesting&&n.tag===a.tag)&&(i=!1)),o+=i?">\n":">")},s.prototype.renderInline=function(e,t,r){for(var n,o="",i=this.rules,a=0,s=e.length;a<s;a++)void 0!==i[n=e[a].type]?o+=i[n](e,a,t,r,this):o+=this.renderToken(e,a,t);return o},s.prototype.renderInlineAsText=function(e,t,r){for(var n="",o=0,i=e.length;o<i;o++)"text"===e[o].type?n+=e[o].content:"image"===e[o].type&&(n+=this.renderInlineAsText(e[o].children,t,r));return n},s.prototype.render=function(e,t,r){var n,o,i,a="",s=this.rules;for(n=0,o=e.length;n<o;n++)"inline"===(i=e[n].type)?a+=this.renderInline(e[n].children,t,r):void 0!==s[i]?a+=s[e[n].type](e,n,t,r,this):a+=this.renderToken(e,n,t,r);return a},e.exports=s},function(e,t,r){"use strict";var n=r(41),o=[["normalize",r(153)],["block",r(154)],["inline",r(155)],["linkify",r(156)],["replacements",r(157)],["smartquotes",r(158)]];function i(){this.ruler=new n;for(var e=0;e<o.length;e++)this.ruler.push(o[e][0],o[e][1])}i.prototype.process=function(e){var t,r,n;for(t=0,r=(n=this.ruler.getRules("")).length;t<r;t++)n[t](e)},i.prototype.State=r(159),e.exports=i},function(e,t,r){"use strict";var n=/\r\n?|\n/g,o=/\0/g;e.exports=function(e){var t;t=(t=e.src.replace(n,"\n")).replace(o,"�"),e.src=t}},function(e,t,r){"use strict";e.exports=function(e){var t;e.inlineMode?((t=new e.Token("inline","",0)).content=e.src,t.map=[0,1],t.children=[],e.tokens.push(t)):e.md.block.parse(e.src,e.md,e.env,e.tokens)}},function(e,t,r){"use strict";e.exports=function(e){var t,r,n,o=e.tokens;for(r=0,n=o.length;r<n;r++)"inline"===(t=o[r]).type&&e.md.inline.parse(t.content,e.md,e.env,t.children)}},function(e,t,r){"use strict";var n=r(1).arrayReplaceAt;function o(e){return/^<\/a\s*>/i.test(e)}e.exports=function(e){var t,r,i,a,s,l,c,u,p,d,h,f,_,m,g,b,v,k,w=e.tokens;if(e.md.options.linkify)for(r=0,i=w.length;r<i;r++)if("inline"===w[r].type&&e.md.linkify.pretest(w[r].content))for(_=0,t=(a=w[r].children).length-1;t>=0;t--)if("link_close"!==(l=a[t]).type){if("html_inline"===l.type&&(k=l.content,/^<a[>\s]/i.test(k)&&_>0&&_--,o(l.content)&&_++),!(_>0)&&"text"===l.type&&e.md.linkify.test(l.content)){for(p=l.content,v=e.md.linkify.match(p),c=[],f=l.level,h=0,u=0;u<v.length;u++)m=v[u].url,g=e.md.normalizeLink(m),e.md.validateLink(g)&&(b=v[u].text,b=v[u].schema?"mailto:"!==v[u].schema||/^mailto:/i.test(b)?e.md.normalizeLinkText(b):e.md.normalizeLinkText("mailto:"+b).replace(/^mailto:/,""):e.md.normalizeLinkText("http://"+b).replace(/^http:\/\//,""),(d=v[u].index)>h&&((s=new e.Token("text","",0)).content=p.slice(h,d),s.level=f,c.push(s)),(s=new e.Token("link_open","a",1)).attrs=[["href",g]],s.level=f++,s.markup="linkify",s.info="auto",c.push(s),(s=new e.Token("text","",0)).content=b,s.level=f,c.push(s),(s=new e.Token("link_close","a",-1)).level=--f,s.markup="linkify",s.info="auto",c.push(s),h=v[u].lastIndex);h<p.length&&((s=new e.Token("text","",0)).content=p.slice(h),s.level=f,c.push(s)),w[r].children=a=n(a,t,c)}}else for(t--;a[t].level!==l.level&&"link_open"!==a[t].type;)t--}},function(e,t,r){"use strict";var n=/\+-|\.\.|\?\?\?\?|!!!!|,,|--/,o=/\((c|tm|r|p)\)/i,i=/\((c|tm|r|p)\)/gi,a={c:"©",r:"®",p:"§",tm:"™"};function s(e,t){return a[t.toLowerCase()]}function l(e){var t,r,n=0;for(t=e.length-1;t>=0;t--)"text"!==(r=e[t]).type||n||(r.content=r.content.replace(i,s)),"link_open"===r.type&&"auto"===r.info&&n--,"link_close"===r.type&&"auto"===r.info&&n++}function c(e){var t,r,o=0;for(t=e.length-1;t>=0;t--)"text"!==(r=e[t]).type||o||n.test(r.content)&&(r.content=r.content.replace(/\+-/g,"±").replace(/\.{2,}/g,"…").replace(/([?!])…/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---([^-]|$)/gm,"$1—$2").replace(/(^|\s)--(\s|$)/gm,"$1–$2").replace(/(^|[^-\s])--([^-\s]|$)/gm,"$1–$2")),"link_open"===r.type&&"auto"===r.info&&o--,"link_close"===r.type&&"auto"===r.info&&o++}e.exports=function(e){var t;if(e.md.options.typographer)for(t=e.tokens.length-1;t>=0;t--)"inline"===e.tokens[t].type&&(o.test(e.tokens[t].content)&&l(e.tokens[t].children),n.test(e.tokens[t].content)&&c(e.tokens[t].children))}},function(e,t,r){"use strict";var n=r(1).isWhiteSpace,o=r(1).isPunctChar,i=r(1).isMdAsciiPunct,a=/['"]/,s=/['"]/g;function l(e,t,r){return e.substr(0,t)+r+e.substr(t+1)}function c(e,t){var r,a,c,u,p,d,h,f,_,m,g,b,v,k,w,y,x,C,j,O,S;for(j=[],r=0;r<e.length;r++){for(a=e[r],h=e[r].level,x=j.length-1;x>=0&&!(j[x].level<=h);x--);if(j.length=x+1,"text"===a.type){p=0,d=(c=a.content).length;e:for(;p<d&&(s.lastIndex=p,u=s.exec(c));){if(w=y=!0,p=u.index+1,C="'"===u[0],_=32,u.index-1>=0)_=c.charCodeAt(u.index-1);else for(x=r-1;x>=0&&("softbreak"!==e[x].type&&"hardbreak"!==e[x].type);x--)if("text"===e[x].type){_=e[x].content.charCodeAt(e[x].content.length-1);break}if(m=32,p<d)m=c.charCodeAt(p);else for(x=r+1;x<e.length&&("softbreak"!==e[x].type&&"hardbreak"!==e[x].type);x++)if("text"===e[x].type){m=e[x].content.charCodeAt(0);break}if(g=i(_)||o(String.fromCharCode(_)),b=i(m)||o(String.fromCharCode(m)),v=n(_),(k=n(m))?w=!1:b&&(v||g||(w=!1)),v?y=!1:g&&(k||b||(y=!1)),34===m&&'"'===u[0]&&_>=48&&_<=57&&(y=w=!1),w&&y&&(w=!1,y=b),w||y){if(y)for(x=j.length-1;x>=0&&(f=j[x],!(j[x].level<h));x--)if(f.single===C&&j[x].level===h){f=j[x],C?(O=t.md.options.quotes[2],S=t.md.options.quotes[3]):(O=t.md.options.quotes[0],S=t.md.options.quotes[1]),a.content=l(a.content,u.index,S),e[f.token].content=l(e[f.token].content,f.pos,O),p+=S.length-1,f.token===r&&(p+=O.length-1),d=(c=a.content).length,j.length=x;continue e}w?j.push({token:r,pos:u.index,single:C,level:h}):y&&C&&(a.content=l(a.content,u.index,"’"))}else C&&(a.content=l(a.content,u.index,"’"))}}}}e.exports=function(e){var t;if(e.md.options.typographer)for(t=e.tokens.length-1;t>=0;t--)"inline"===e.tokens[t].type&&a.test(e.tokens[t].content)&&c(e.tokens[t].children,e)}},function(e,t,r){"use strict";var n=r(42);function o(e,t,r){this.src=e,this.env=r,this.tokens=[],this.inlineMode=!1,this.md=t}o.prototype.Token=n,e.exports=o},function(e,t,r){"use strict";var n=r(41),o=[["table",r(161),["paragraph","reference"]],["code",r(162)],["fence",r(163),["paragraph","reference","blockquote","list"]],["blockquote",r(164),["paragraph","reference","blockquote","list"]],["hr",r(165),["paragraph","reference","blockquote","list"]],["list",r(166),["paragraph","reference","blockquote"]],["reference",r(167)],["heading",r(168),["paragraph","reference","blockquote"]],["lheading",r(169)],["html_block",r(170),["paragraph","reference","blockquote"]],["paragraph",r(172)]];function i(){this.ruler=new n;for(var e=0;e<o.length;e++)this.ruler.push(o[e][0],o[e][1],{alt:(o[e][2]||[]).slice()})}i.prototype.tokenize=function(e,t,r){for(var n,o=this.ruler.getRules(""),i=o.length,a=t,s=!1,l=e.md.options.maxNesting;a<r&&(e.line=a=e.skipEmptyLines(a),!(a>=r))&&!(e.sCount[a]<e.blkIndent);){if(e.level>=l){e.line=r;break}for(n=0;n<i&&!o[n](e,a,r,!1);n++);e.tight=!s,e.isEmpty(e.line-1)&&(s=!0),(a=e.line)<r&&e.isEmpty(a)&&(s=!0,a++,e.line=a)}},i.prototype.parse=function(e,t,r,n){var o;e&&(o=new this.State(e,t,r,n),this.tokenize(o,o.line,o.lineMax))},i.prototype.State=r(173),e.exports=i},function(e,t,r){"use strict";var n=r(1).isSpace;function o(e,t){var r=e.bMarks[t]+e.blkIndent,n=e.eMarks[t];return e.src.substr(r,n-r)}function i(e){var t,r=[],n=0,o=e.length,i=0,a=0,s=!1,l=0;for(t=e.charCodeAt(n);n<o;)96===t?s?(s=!1,l=n):i%2==0&&(s=!0,l=n):124!==t||i%2!=0||s||(r.push(e.substring(a,n)),a=n+1),92===t?i++:i=0,++n===o&&s&&(s=!1,n=l+1),t=e.charCodeAt(n);return r.push(e.substring(a)),r}e.exports=function(e,t,r,a){var s,l,c,u,p,d,h,f,_,m,g,b;if(t+2>r)return!1;if(p=t+1,e.sCount[p]<e.blkIndent)return!1;if(e.sCount[p]-e.blkIndent>=4)return!1;if((c=e.bMarks[p]+e.tShift[p])>=e.eMarks[p])return!1;if(124!==(s=e.src.charCodeAt(c++))&&45!==s&&58!==s)return!1;for(;c<e.eMarks[p];){if(124!==(s=e.src.charCodeAt(c))&&45!==s&&58!==s&&!n(s))return!1;c++}for(d=(l=o(e,t+1)).split("|"),_=[],u=0;u<d.length;u++){if(!(m=d[u].trim())){if(0===u||u===d.length-1)continue;return!1}if(!/^:?-+:?$/.test(m))return!1;58===m.charCodeAt(m.length-1)?_.push(58===m.charCodeAt(0)?"center":"right"):58===m.charCodeAt(0)?_.push("left"):_.push("")}if(-1===(l=o(e,t).trim()).indexOf("|"))return!1;if(e.sCount[t]-e.blkIndent>=4)return!1;if((h=(d=i(l.replace(/^\||\|$/g,""))).length)>_.length)return!1;if(a)return!0;for((f=e.push("table_open","table",1)).map=g=[t,0],(f=e.push("thead_open","thead",1)).map=[t,t+1],(f=e.push("tr_open","tr",1)).map=[t,t+1],u=0;u<d.length;u++)(f=e.push("th_open","th",1)).map=[t,t+1],_[u]&&(f.attrs=[["style","text-align:"+_[u]]]),(f=e.push("inline","",0)).content=d[u].trim(),f.map=[t,t+1],f.children=[],f=e.push("th_close","th",-1);for(f=e.push("tr_close","tr",-1),f=e.push("thead_close","thead",-1),(f=e.push("tbody_open","tbody",1)).map=b=[t+2,0],p=t+2;p<r&&!(e.sCount[p]<e.blkIndent)&&-1!==(l=o(e,p).trim()).indexOf("|")&&!(e.sCount[p]-e.blkIndent>=4);p++){for(d=i(l.replace(/^\||\|$/g,"")),f=e.push("tr_open","tr",1),u=0;u<h;u++)f=e.push("td_open","td",1),_[u]&&(f.attrs=[["style","text-align:"+_[u]]]),(f=e.push("inline","",0)).content=d[u]?d[u].trim():"",f.children=[],f=e.push("td_close","td",-1);f=e.push("tr_close","tr",-1)}return f=e.push("tbody_close","tbody",-1),f=e.push("table_close","table",-1),g[1]=b[1]=p,e.line=p,!0}},function(e,t,r){"use strict";e.exports=function(e,t,r){var n,o,i;if(e.sCount[t]-e.blkIndent<4)return!1;for(o=n=t+1;n<r;)if(e.isEmpty(n))n++;else{if(!(e.sCount[n]-e.blkIndent>=4))break;o=++n}return e.line=o,(i=e.push("code_block","code",0)).content=e.getLines(t,o,4+e.blkIndent,!0),i.map=[t,e.line],!0}},function(e,t,r){"use strict";e.exports=function(e,t,r,n){var o,i,a,s,l,c,u,p=!1,d=e.bMarks[t]+e.tShift[t],h=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(d+3>h)return!1;if(126!==(o=e.src.charCodeAt(d))&&96!==o)return!1;if(l=d,(i=(d=e.skipChars(d,o))-l)<3)return!1;if(u=e.src.slice(l,d),a=e.src.slice(d,h),96===o&&a.indexOf(String.fromCharCode(o))>=0)return!1;if(n)return!0;for(s=t;!(++s>=r)&&!((d=l=e.bMarks[s]+e.tShift[s])<(h=e.eMarks[s])&&e.sCount[s]<e.blkIndent);)if(e.src.charCodeAt(d)===o&&!(e.sCount[s]-e.blkIndent>=4||(d=e.skipChars(d,o))-l<i||(d=e.skipSpaces(d))<h)){p=!0;break}return i=e.sCount[t],e.line=s+(p?1:0),(c=e.push("fence","code",0)).info=a,c.content=e.getLines(t+1,s,i,!0),c.markup=u,c.map=[t,e.line],!0}},function(e,t,r){"use strict";var n=r(1).isSpace;e.exports=function(e,t,r,o){var i,a,s,l,c,u,p,d,h,f,_,m,g,b,v,k,w,y,x,C,j=e.lineMax,O=e.bMarks[t]+e.tShift[t],S=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(62!==e.src.charCodeAt(O++))return!1;if(o)return!0;for(l=h=e.sCount[t]+O-(e.bMarks[t]+e.tShift[t]),32===e.src.charCodeAt(O)?(O++,l++,h++,i=!1,k=!0):9===e.src.charCodeAt(O)?(k=!0,(e.bsCount[t]+h)%4==3?(O++,l++,h++,i=!1):i=!0):k=!1,f=[e.bMarks[t]],e.bMarks[t]=O;O<S&&(a=e.src.charCodeAt(O),n(a));)9===a?h+=4-(h+e.bsCount[t]+(i?1:0))%4:h++,O++;for(_=[e.bsCount[t]],e.bsCount[t]=e.sCount[t]+1+(k?1:0),u=O>=S,b=[e.sCount[t]],e.sCount[t]=h-l,v=[e.tShift[t]],e.tShift[t]=O-e.bMarks[t],y=e.md.block.ruler.getRules("blockquote"),g=e.parentType,e.parentType="blockquote",C=!1,d=t+1;d<r&&(e.sCount[d]<e.blkIndent&&(C=!0),!((O=e.bMarks[d]+e.tShift[d])>=(S=e.eMarks[d])));d++)if(62!==e.src.charCodeAt(O++)||C){if(u)break;for(w=!1,s=0,c=y.length;s<c;s++)if(y[s](e,d,r,!0)){w=!0;break}if(w){e.lineMax=d,0!==e.blkIndent&&(f.push(e.bMarks[d]),_.push(e.bsCount[d]),v.push(e.tShift[d]),b.push(e.sCount[d]),e.sCount[d]-=e.blkIndent);break}f.push(e.bMarks[d]),_.push(e.bsCount[d]),v.push(e.tShift[d]),b.push(e.sCount[d]),e.sCount[d]=-1}else{for(l=h=e.sCount[d]+O-(e.bMarks[d]+e.tShift[d]),32===e.src.charCodeAt(O)?(O++,l++,h++,i=!1,k=!0):9===e.src.charCodeAt(O)?(k=!0,(e.bsCount[d]+h)%4==3?(O++,l++,h++,i=!1):i=!0):k=!1,f.push(e.bMarks[d]),e.bMarks[d]=O;O<S&&(a=e.src.charCodeAt(O),n(a));)9===a?h+=4-(h+e.bsCount[d]+(i?1:0))%4:h++,O++;u=O>=S,_.push(e.bsCount[d]),e.bsCount[d]=e.sCount[d]+1+(k?1:0),b.push(e.sCount[d]),e.sCount[d]=h-l,v.push(e.tShift[d]),e.tShift[d]=O-e.bMarks[d]}for(m=e.blkIndent,e.blkIndent=0,(x=e.push("blockquote_open","blockquote",1)).markup=">",x.map=p=[t,0],e.md.block.tokenize(e,t,d),(x=e.push("blockquote_close","blockquote",-1)).markup=">",e.lineMax=j,e.parentType=g,p[1]=e.line,s=0;s<v.length;s++)e.bMarks[s+t]=f[s],e.tShift[s+t]=v[s],e.sCount[s+t]=b[s],e.bsCount[s+t]=_[s];return e.blkIndent=m,!0}},function(e,t,r){"use strict";var n=r(1).isSpace;e.exports=function(e,t,r,o){var i,a,s,l,c=e.bMarks[t]+e.tShift[t],u=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(42!==(i=e.src.charCodeAt(c++))&&45!==i&&95!==i)return!1;for(a=1;c<u;){if((s=e.src.charCodeAt(c++))!==i&&!n(s))return!1;s===i&&a++}return!(a<3)&&(o||(e.line=t+1,(l=e.push("hr","hr",0)).map=[t,e.line],l.markup=Array(a+1).join(String.fromCharCode(i))),!0)}},function(e,t,r){"use strict";var n=r(1).isSpace;function o(e,t){var r,o,i,a;return o=e.bMarks[t]+e.tShift[t],i=e.eMarks[t],42!==(r=e.src.charCodeAt(o++))&&45!==r&&43!==r||o<i&&(a=e.src.charCodeAt(o),!n(a))?-1:o}function i(e,t){var r,o=e.bMarks[t]+e.tShift[t],i=o,a=e.eMarks[t];if(i+1>=a)return-1;if((r=e.src.charCodeAt(i++))<48||r>57)return-1;for(;;){if(i>=a)return-1;if(!((r=e.src.charCodeAt(i++))>=48&&r<=57)){if(41===r||46===r)break;return-1}if(i-o>=10)return-1}return i<a&&(r=e.src.charCodeAt(i),!n(r))?-1:i}e.exports=function(e,t,r,n){var a,s,l,c,u,p,d,h,f,_,m,g,b,v,k,w,y,x,C,j,O,S,E,T,A,D,L,q,z=!1,$=!0;if(e.sCount[t]-e.blkIndent>=4)return!1;if(e.listIndent>=0&&e.sCount[t]-e.listIndent>=4&&e.sCount[t]<e.blkIndent)return!1;if(n&&"paragraph"===e.parentType&&e.tShift[t]>=e.blkIndent&&(z=!0),(E=i(e,t))>=0){if(d=!0,A=e.bMarks[t]+e.tShift[t],b=Number(e.src.substr(A,E-A-1)),z&&1!==b)return!1}else{if(!((E=o(e,t))>=0))return!1;d=!1}if(z&&e.skipSpaces(E)>=e.eMarks[t])return!1;if(g=e.src.charCodeAt(E-1),n)return!0;for(m=e.tokens.length,d?(q=e.push("ordered_list_open","ol",1),1!==b&&(q.attrs=[["start",b]])):q=e.push("bullet_list_open","ul",1),q.map=_=[t,0],q.markup=String.fromCharCode(g),k=t,T=!1,L=e.md.block.ruler.getRules("list"),x=e.parentType,e.parentType="list";k<r;){for(S=E,v=e.eMarks[k],p=w=e.sCount[k]+E-(e.bMarks[t]+e.tShift[t]);S<v;){if(9===(a=e.src.charCodeAt(S)))w+=4-(w+e.bsCount[k])%4;else{if(32!==a)break;w++}S++}if((u=(s=S)>=v?1:w-p)>4&&(u=1),c=p+u,(q=e.push("list_item_open","li",1)).markup=String.fromCharCode(g),q.map=h=[t,0],O=e.tight,j=e.tShift[t],C=e.sCount[t],y=e.listIndent,e.listIndent=e.blkIndent,e.blkIndent=c,e.tight=!0,e.tShift[t]=s-e.bMarks[t],e.sCount[t]=w,s>=v&&e.isEmpty(t+1)?e.line=Math.min(e.line+2,r):e.md.block.tokenize(e,t,r,!0),e.tight&&!T||($=!1),T=e.line-t>1&&e.isEmpty(e.line-1),e.blkIndent=e.listIndent,e.listIndent=y,e.tShift[t]=j,e.sCount[t]=C,e.tight=O,(q=e.push("list_item_close","li",-1)).markup=String.fromCharCode(g),k=t=e.line,h[1]=k,s=e.bMarks[t],k>=r)break;if(e.sCount[k]<e.blkIndent)break;if(e.sCount[t]-e.blkIndent>=4)break;for(D=!1,l=0,f=L.length;l<f;l++)if(L[l](e,k,r,!0)){D=!0;break}if(D)break;if(d){if((E=i(e,k))<0)break}else if((E=o(e,k))<0)break;if(g!==e.src.charCodeAt(E-1))break}return(q=d?e.push("ordered_list_close","ol",-1):e.push("bullet_list_close","ul",-1)).markup=String.fromCharCode(g),_[1]=k,e.line=k,e.parentType=x,$&&function(e,t){var r,n,o=e.level+2;for(r=t+2,n=e.tokens.length-2;r<n;r++)e.tokens[r].level===o&&"paragraph_open"===e.tokens[r].type&&(e.tokens[r+2].hidden=!0,e.tokens[r].hidden=!0,r+=2)}(e,m),!0}},function(e,t,r){"use strict";var n=r(1).normalizeReference,o=r(1).isSpace;e.exports=function(e,t,r,i){var a,s,l,c,u,p,d,h,f,_,m,g,b,v,k,w,y=0,x=e.bMarks[t]+e.tShift[t],C=e.eMarks[t],j=t+1;if(e.sCount[t]-e.blkIndent>=4)return!1;if(91!==e.src.charCodeAt(x))return!1;for(;++x<C;)if(93===e.src.charCodeAt(x)&&92!==e.src.charCodeAt(x-1)){if(x+1===C)return!1;if(58!==e.src.charCodeAt(x+1))return!1;break}for(c=e.lineMax,k=e.md.block.ruler.getRules("reference"),_=e.parentType,e.parentType="reference";j<c&&!e.isEmpty(j);j++)if(!(e.sCount[j]-e.blkIndent>3||e.sCount[j]<0)){for(v=!1,p=0,d=k.length;p<d;p++)if(k[p](e,j,c,!0)){v=!0;break}if(v)break}for(C=(b=e.getLines(t,j,e.blkIndent,!1).trim()).length,x=1;x<C;x++){if(91===(a=b.charCodeAt(x)))return!1;if(93===a){f=x;break}(10===a||92===a&&++x<C&&10===b.charCodeAt(x))&&y++}if(f<0||58!==b.charCodeAt(f+1))return!1;for(x=f+2;x<C;x++)if(10===(a=b.charCodeAt(x)))y++;else if(!o(a))break;if(!(m=e.md.helpers.parseLinkDestination(b,x,C)).ok)return!1;if(u=e.md.normalizeLink(m.str),!e.md.validateLink(u))return!1;for(s=x=m.pos,l=y+=m.lines,g=x;x<C;x++)if(10===(a=b.charCodeAt(x)))y++;else if(!o(a))break;for(m=e.md.helpers.parseLinkTitle(b,x,C),x<C&&g!==x&&m.ok?(w=m.str,x=m.pos,y+=m.lines):(w="",x=s,y=l);x<C&&(a=b.charCodeAt(x),o(a));)x++;if(x<C&&10!==b.charCodeAt(x)&&w)for(w="",x=s,y=l;x<C&&(a=b.charCodeAt(x),o(a));)x++;return!(x<C&&10!==b.charCodeAt(x))&&(!!(h=n(b.slice(1,f)))&&(i||(void 0===e.env.references&&(e.env.references={}),void 0===e.env.references[h]&&(e.env.references[h]={title:w,href:u}),e.parentType=_,e.line=t+y+1),!0))}},function(e,t,r){"use strict";var n=r(1).isSpace;e.exports=function(e,t,r,o){var i,a,s,l,c=e.bMarks[t]+e.tShift[t],u=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(35!==(i=e.src.charCodeAt(c))||c>=u)return!1;for(a=1,i=e.src.charCodeAt(++c);35===i&&c<u&&a<=6;)a++,i=e.src.charCodeAt(++c);return!(a>6||c<u&&!n(i))&&(o||(u=e.skipSpacesBack(u,c),(s=e.skipCharsBack(u,35,c))>c&&n(e.src.charCodeAt(s-1))&&(u=s),e.line=t+1,(l=e.push("heading_open","h"+String(a),1)).markup="########".slice(0,a),l.map=[t,e.line],(l=e.push("inline","",0)).content=e.src.slice(c,u).trim(),l.map=[t,e.line],l.children=[],(l=e.push("heading_close","h"+String(a),-1)).markup="########".slice(0,a)),!0)}},function(e,t,r){"use strict";e.exports=function(e,t,r){var n,o,i,a,s,l,c,u,p,d,h=t+1,f=e.md.block.ruler.getRules("paragraph");if(e.sCount[t]-e.blkIndent>=4)return!1;for(d=e.parentType,e.parentType="paragraph";h<r&&!e.isEmpty(h);h++)if(!(e.sCount[h]-e.blkIndent>3)){if(e.sCount[h]>=e.blkIndent&&(l=e.bMarks[h]+e.tShift[h])<(c=e.eMarks[h])&&(45===(p=e.src.charCodeAt(l))||61===p)&&(l=e.skipChars(l,p),(l=e.skipSpaces(l))>=c)){u=61===p?1:2;break}if(!(e.sCount[h]<0)){for(o=!1,i=0,a=f.length;i<a;i++)if(f[i](e,h,r,!0)){o=!0;break}if(o)break}}return!!u&&(n=e.getLines(t,h,e.blkIndent,!1).trim(),e.line=h+1,(s=e.push("heading_open","h"+String(u),1)).markup=String.fromCharCode(p),s.map=[t,e.line],(s=e.push("inline","",0)).content=n,s.map=[t,e.line-1],s.children=[],(s=e.push("heading_close","h"+String(u),-1)).markup=String.fromCharCode(p),e.parentType=d,!0)}},function(e,t,r){"use strict";var n=r(171),o=r(67).HTML_OPEN_CLOSE_TAG_RE,i=[[/^<(script|pre|style)(?=(\s|>|$))/i,/<\/(script|pre|style)>/i,!0],[/^<!--/,/-->/,!0],[/^<\?/,/\?>/,!0],[/^<![A-Z]/,/>/,!0],[/^<!\[CDATA\[/,/\]\]>/,!0],[new RegExp("^</?("+n.join("|")+")(?=(\\s|/?>|$))","i"),/^$/,!0],[new RegExp(o.source+"\\s*$"),/^$/,!1]];e.exports=function(e,t,r,n){var o,a,s,l,c=e.bMarks[t]+e.tShift[t],u=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(!e.md.options.html)return!1;if(60!==e.src.charCodeAt(c))return!1;for(l=e.src.slice(c,u),o=0;o<i.length&&!i[o][0].test(l);o++);if(o===i.length)return!1;if(n)return i[o][2];if(a=t+1,!i[o][1].test(l))for(;a<r&&!(e.sCount[a]<e.blkIndent);a++)if(c=e.bMarks[a]+e.tShift[a],u=e.eMarks[a],l=e.src.slice(c,u),i[o][1].test(l)){0!==l.length&&a++;break}return e.line=a,(s=e.push("html_block","",0)).map=[t,a],s.content=e.getLines(t,a,e.blkIndent,!0),!0}},function(e,t,r){"use strict";e.exports=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","meta","nav","noframes","ol","optgroup","option","p","param","section","source","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"]},function(e,t,r){"use strict";e.exports=function(e,t){var r,n,o,i,a,s,l=t+1,c=e.md.block.ruler.getRules("paragraph"),u=e.lineMax;for(s=e.parentType,e.parentType="paragraph";l<u&&!e.isEmpty(l);l++)if(!(e.sCount[l]-e.blkIndent>3||e.sCount[l]<0)){for(n=!1,o=0,i=c.length;o<i;o++)if(c[o](e,l,u,!0)){n=!0;break}if(n)break}return r=e.getLines(t,l,e.blkIndent,!1).trim(),e.line=l,(a=e.push("paragraph_open","p",1)).map=[t,e.line],(a=e.push("inline","",0)).content=r,a.map=[t,e.line],a.children=[],a=e.push("paragraph_close","p",-1),e.parentType=s,!0}},function(e,t,r){"use strict";var n=r(42),o=r(1).isSpace;function i(e,t,r,n){var i,a,s,l,c,u,p,d;for(this.src=e,this.md=t,this.env=r,this.tokens=n,this.bMarks=[],this.eMarks=[],this.tShift=[],this.sCount=[],this.bsCount=[],this.blkIndent=0,this.line=0,this.lineMax=0,this.tight=!1,this.ddIndent=-1,this.listIndent=-1,this.parentType="root",this.level=0,this.result="",d=!1,s=l=u=p=0,c=(a=this.src).length;l<c;l++){if(i=a.charCodeAt(l),!d){if(o(i)){u++,9===i?p+=4-p%4:p++;continue}d=!0}10!==i&&l!==c-1||(10!==i&&l++,this.bMarks.push(s),this.eMarks.push(l),this.tShift.push(u),this.sCount.push(p),this.bsCount.push(0),d=!1,u=0,p=0,s=l+1)}this.bMarks.push(a.length),this.eMarks.push(a.length),this.tShift.push(0),this.sCount.push(0),this.bsCount.push(0),this.lineMax=this.bMarks.length-1}i.prototype.push=function(e,t,r){var o=new n(e,t,r);return o.block=!0,r<0&&this.level--,o.level=this.level,r>0&&this.level++,this.tokens.push(o),o},i.prototype.isEmpty=function(e){return this.bMarks[e]+this.tShift[e]>=this.eMarks[e]},i.prototype.skipEmptyLines=function(e){for(var t=this.lineMax;e<t&&!(this.bMarks[e]+this.tShift[e]<this.eMarks[e]);e++);return e},i.prototype.skipSpaces=function(e){for(var t,r=this.src.length;e<r&&(t=this.src.charCodeAt(e),o(t));e++);return e},i.prototype.skipSpacesBack=function(e,t){if(e<=t)return e;for(;e>t;)if(!o(this.src.charCodeAt(--e)))return e+1;return e},i.prototype.skipChars=function(e,t){for(var r=this.src.length;e<r&&this.src.charCodeAt(e)===t;e++);return e},i.prototype.skipCharsBack=function(e,t,r){if(e<=r)return e;for(;e>r;)if(t!==this.src.charCodeAt(--e))return e+1;return e},i.prototype.getLines=function(e,t,r,n){var i,a,s,l,c,u,p,d=e;if(e>=t)return"";for(u=new Array(t-e),i=0;d<t;d++,i++){for(a=0,p=l=this.bMarks[d],c=d+1<t||n?this.eMarks[d]+1:this.eMarks[d];l<c&&a<r;){if(s=this.src.charCodeAt(l),o(s))9===s?a+=4-(a+this.bsCount[d])%4:a++;else{if(!(l-p<this.tShift[d]))break;a++}l++}u[i]=a>r?new Array(a-r+1).join(" ")+this.src.slice(l,c):this.src.slice(l,c)}return u.join("")},i.prototype.Token=n,e.exports=i},function(e,t,r){"use strict";var n=r(41),o=[["text",r(175)],["newline",r(176)],["escape",r(177)],["backticks",r(178)],["strikethrough",r(68).tokenize],["emphasis",r(69).tokenize],["link",r(179)],["image",r(180)],["autolink",r(181)],["html_inline",r(182)],["entity",r(183)]],i=[["balance_pairs",r(184)],["strikethrough",r(68).postProcess],["emphasis",r(69).postProcess],["text_collapse",r(185)]];function a(){var e;for(this.ruler=new n,e=0;e<o.length;e++)this.ruler.push(o[e][0],o[e][1]);for(this.ruler2=new n,e=0;e<i.length;e++)this.ruler2.push(i[e][0],i[e][1])}a.prototype.skipToken=function(e){var t,r,n=e.pos,o=this.ruler.getRules(""),i=o.length,a=e.md.options.maxNesting,s=e.cache;if(void 0===s[n]){if(e.level<a)for(r=0;r<i&&(e.level++,t=o[r](e,!0),e.level--,!t);r++);else e.pos=e.posMax;t||e.pos++,s[n]=e.pos}else e.pos=s[n]},a.prototype.tokenize=function(e){for(var t,r,n=this.ruler.getRules(""),o=n.length,i=e.posMax,a=e.md.options.maxNesting;e.pos<i;){if(e.level<a)for(r=0;r<o&&!(t=n[r](e,!1));r++);if(t){if(e.pos>=i)break}else e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()},a.prototype.parse=function(e,t,r,n){var o,i,a,s=new this.State(e,t,r,n);for(this.tokenize(s),a=(i=this.ruler2.getRules("")).length,o=0;o<a;o++)i[o](s)},a.prototype.State=r(186),e.exports=a},function(e,t,r){"use strict";function n(e){switch(e){case 10:case 33:case 35:case 36:case 37:case 38:case 42:case 43:case 45:case 58:case 60:case 61:case 62:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 125:case 126:return!0;default:return!1}}e.exports=function(e,t){for(var r=e.pos;r<e.posMax&&!n(e.src.charCodeAt(r));)r++;return r!==e.pos&&(t||(e.pending+=e.src.slice(e.pos,r)),e.pos=r,!0)}},function(e,t,r){"use strict";var n=r(1).isSpace;e.exports=function(e,t){var r,o,i=e.pos;if(10!==e.src.charCodeAt(i))return!1;for(r=e.pending.length-1,o=e.posMax,t||(r>=0&&32===e.pending.charCodeAt(r)?r>=1&&32===e.pending.charCodeAt(r-1)?(e.pending=e.pending.replace(/ +$/,""),e.push("hardbreak","br",0)):(e.pending=e.pending.slice(0,-1),e.push("softbreak","br",0)):e.push("softbreak","br",0)),i++;i<o&&n(e.src.charCodeAt(i));)i++;return e.pos=i,!0}},function(e,t,r){"use strict";for(var n=r(1).isSpace,o=[],i=0;i<256;i++)o.push(0);"\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach((function(e){o[e.charCodeAt(0)]=1})),e.exports=function(e,t){var r,i=e.pos,a=e.posMax;if(92!==e.src.charCodeAt(i))return!1;if(++i<a){if((r=e.src.charCodeAt(i))<256&&0!==o[r])return t||(e.pending+=e.src[i]),e.pos+=2,!0;if(10===r){for(t||e.push("hardbreak","br",0),i++;i<a&&(r=e.src.charCodeAt(i),n(r));)i++;return e.pos=i,!0}}return t||(e.pending+="\\"),e.pos++,!0}},function(e,t,r){"use strict";e.exports=function(e,t){var r,n,o,i,a,s,l=e.pos;if(96!==e.src.charCodeAt(l))return!1;for(r=l,l++,n=e.posMax;l<n&&96===e.src.charCodeAt(l);)l++;for(o=e.src.slice(r,l),i=a=l;-1!==(i=e.src.indexOf("`",a));){for(a=i+1;a<n&&96===e.src.charCodeAt(a);)a++;if(a-i===o.length)return t||((s=e.push("code_inline","code",0)).markup=o,s.content=e.src.slice(l,i).replace(/\n/g," ").replace(/^ (.+) $/,"$1")),e.pos=a,!0}return t||(e.pending+=o),e.pos+=o.length,!0}},function(e,t,r){"use strict";var n=r(1).normalizeReference,o=r(1).isSpace;e.exports=function(e,t){var r,i,a,s,l,c,u,p,d,h="",f=e.pos,_=e.posMax,m=e.pos,g=!0;if(91!==e.src.charCodeAt(e.pos))return!1;if(l=e.pos+1,(s=e.md.helpers.parseLinkLabel(e,e.pos,!0))<0)return!1;if((c=s+1)<_&&40===e.src.charCodeAt(c)){for(g=!1,c++;c<_&&(i=e.src.charCodeAt(c),o(i)||10===i);c++);if(c>=_)return!1;for(m=c,(u=e.md.helpers.parseLinkDestination(e.src,c,e.posMax)).ok&&(h=e.md.normalizeLink(u.str),e.md.validateLink(h)?c=u.pos:h=""),m=c;c<_&&(i=e.src.charCodeAt(c),o(i)||10===i);c++);if(u=e.md.helpers.parseLinkTitle(e.src,c,e.posMax),c<_&&m!==c&&u.ok)for(d=u.str,c=u.pos;c<_&&(i=e.src.charCodeAt(c),o(i)||10===i);c++);else d="";(c>=_||41!==e.src.charCodeAt(c))&&(g=!0),c++}if(g){if(void 0===e.env.references)return!1;if(c<_&&91===e.src.charCodeAt(c)?(m=c+1,(c=e.md.helpers.parseLinkLabel(e,c))>=0?a=e.src.slice(m,c++):c=s+1):c=s+1,a||(a=e.src.slice(l,s)),!(p=e.env.references[n(a)]))return e.pos=f,!1;h=p.href,d=p.title}return t||(e.pos=l,e.posMax=s,e.push("link_open","a",1).attrs=r=[["href",h]],d&&r.push(["title",d]),e.md.inline.tokenize(e),e.push("link_close","a",-1)),e.pos=c,e.posMax=_,!0}},function(e,t,r){"use strict";var n=r(1).normalizeReference,o=r(1).isSpace;e.exports=function(e,t){var r,i,a,s,l,c,u,p,d,h,f,_,m,g="",b=e.pos,v=e.posMax;if(33!==e.src.charCodeAt(e.pos))return!1;if(91!==e.src.charCodeAt(e.pos+1))return!1;if(c=e.pos+2,(l=e.md.helpers.parseLinkLabel(e,e.pos+1,!1))<0)return!1;if((u=l+1)<v&&40===e.src.charCodeAt(u)){for(u++;u<v&&(i=e.src.charCodeAt(u),o(i)||10===i);u++);if(u>=v)return!1;for(m=u,(d=e.md.helpers.parseLinkDestination(e.src,u,e.posMax)).ok&&(g=e.md.normalizeLink(d.str),e.md.validateLink(g)?u=d.pos:g=""),m=u;u<v&&(i=e.src.charCodeAt(u),o(i)||10===i);u++);if(d=e.md.helpers.parseLinkTitle(e.src,u,e.posMax),u<v&&m!==u&&d.ok)for(h=d.str,u=d.pos;u<v&&(i=e.src.charCodeAt(u),o(i)||10===i);u++);else h="";if(u>=v||41!==e.src.charCodeAt(u))return e.pos=b,!1;u++}else{if(void 0===e.env.references)return!1;if(u<v&&91===e.src.charCodeAt(u)?(m=u+1,(u=e.md.helpers.parseLinkLabel(e,u))>=0?s=e.src.slice(m,u++):u=l+1):u=l+1,s||(s=e.src.slice(c,l)),!(p=e.env.references[n(s)]))return e.pos=b,!1;g=p.href,h=p.title}return t||(a=e.src.slice(c,l),e.md.inline.parse(a,e.md,e.env,_=[]),(f=e.push("image","img",0)).attrs=r=[["src",g],["alt",""]],f.children=_,f.content=a,h&&r.push(["title",h])),e.pos=u,e.posMax=v,!0}},function(e,t,r){"use strict";var n=/^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/,o=/^<([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)>/;e.exports=function(e,t){var r,i,a,s,l,c,u=e.pos;return 60===e.src.charCodeAt(u)&&(!((r=e.src.slice(u)).indexOf(">")<0)&&(o.test(r)?(s=(i=r.match(o))[0].slice(1,-1),l=e.md.normalizeLink(s),!!e.md.validateLink(l)&&(t||((c=e.push("link_open","a",1)).attrs=[["href",l]],c.markup="autolink",c.info="auto",(c=e.push("text","",0)).content=e.md.normalizeLinkText(s),(c=e.push("link_close","a",-1)).markup="autolink",c.info="auto"),e.pos+=i[0].length,!0)):!!n.test(r)&&(s=(a=r.match(n))[0].slice(1,-1),l=e.md.normalizeLink("mailto:"+s),!!e.md.validateLink(l)&&(t||((c=e.push("link_open","a",1)).attrs=[["href",l]],c.markup="autolink",c.info="auto",(c=e.push("text","",0)).content=e.md.normalizeLinkText(s),(c=e.push("link_close","a",-1)).markup="autolink",c.info="auto"),e.pos+=a[0].length,!0))))}},function(e,t,r){"use strict";var n=r(67).HTML_TAG_RE;e.exports=function(e,t){var r,o,i,a=e.pos;return!!e.md.options.html&&(i=e.posMax,!(60!==e.src.charCodeAt(a)||a+2>=i)&&(!(33!==(r=e.src.charCodeAt(a+1))&&63!==r&&47!==r&&!function(e){var t=32|e;return t>=97&&t<=122}(r))&&(!!(o=e.src.slice(a).match(n))&&(t||(e.push("html_inline","",0).content=e.src.slice(a,a+o[0].length)),e.pos+=o[0].length,!0))))}},function(e,t,r){"use strict";var n=r(62),o=r(1).has,i=r(1).isValidEntityCode,a=r(1).fromCodePoint,s=/^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i,l=/^&([a-z][a-z0-9]{1,31});/i;e.exports=function(e,t){var r,c,u=e.pos,p=e.posMax;if(38!==e.src.charCodeAt(u))return!1;if(u+1<p)if(35===e.src.charCodeAt(u+1)){if(c=e.src.slice(u).match(s))return t||(r="x"===c[1][0].toLowerCase()?parseInt(c[1].slice(1),16):parseInt(c[1],10),e.pending+=i(r)?a(r):a(65533)),e.pos+=c[0].length,!0}else if((c=e.src.slice(u).match(l))&&o(n,c[1]))return t||(e.pending+=n[c[1]]),e.pos+=c[0].length,!0;return t||(e.pending+="&"),e.pos++,!0}},function(e,t,r){"use strict";function n(e,t){var r,n,o,i,a,s,l,c,u={},p=t.length;for(r=0;r<p;r++)if((o=t[r]).length=o.length||0,o.close){for(u.hasOwnProperty(o.marker)||(u[o.marker]=[-1,-1,-1]),a=u[o.marker][o.length%3],s=-1,n=r-o.jump-1;n>a;n-=i.jump+1)if((i=t[n]).marker===o.marker&&(-1===s&&(s=n),i.open&&i.end<0&&i.level===o.level&&(l=!1,(i.close||o.open)&&(i.length+o.length)%3==0&&(i.length%3==0&&o.length%3==0||(l=!0)),!l))){c=n>0&&!t[n-1].open?t[n-1].jump+1:0,o.jump=r-n+c,o.open=!1,i.end=r,i.jump=c,i.close=!1,s=-1;break}-1!==s&&(u[o.marker][(o.length||0)%3]=s)}}e.exports=function(e){var t,r=e.tokens_meta,o=e.tokens_meta.length;for(n(0,e.delimiters),t=0;t<o;t++)r[t]&&r[t].delimiters&&n(0,r[t].delimiters)}},function(e,t,r){"use strict";e.exports=function(e){var t,r,n=0,o=e.tokens,i=e.tokens.length;for(t=r=0;t<i;t++)o[t].nesting<0&&n--,o[t].level=n,o[t].nesting>0&&n++,"text"===o[t].type&&t+1<i&&"text"===o[t+1].type?o[t+1].content=o[t].content+o[t+1].content:(t!==r&&(o[r]=o[t]),r++);t!==r&&(o.length=r)}},function(e,t,r){"use strict";var n=r(42),o=r(1).isWhiteSpace,i=r(1).isPunctChar,a=r(1).isMdAsciiPunct;function s(e,t,r,n){this.src=e,this.env=r,this.md=t,this.tokens=n,this.tokens_meta=Array(n.length),this.pos=0,this.posMax=this.src.length,this.level=0,this.pending="",this.pendingLevel=0,this.cache={},this.delimiters=[],this._prev_delimiters=[]}s.prototype.pushPending=function(){var e=new n("text","",0);return e.content=this.pending,e.level=this.pendingLevel,this.tokens.push(e),this.pending="",e},s.prototype.push=function(e,t,r){this.pending&&this.pushPending();var o=new n(e,t,r),i=null;return r<0&&(this.level--,this.delimiters=this._prev_delimiters.pop()),o.level=this.level,r>0&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],i={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(o),this.tokens_meta.push(i),o},s.prototype.scanDelims=function(e,t){var r,n,s,l,c,u,p,d,h,f=e,_=!0,m=!0,g=this.posMax,b=this.src.charCodeAt(e);for(r=e>0?this.src.charCodeAt(e-1):32;f<g&&this.src.charCodeAt(f)===b;)f++;return s=f-e,n=f<g?this.src.charCodeAt(f):32,p=a(r)||i(String.fromCharCode(r)),h=a(n)||i(String.fromCharCode(n)),u=o(r),(d=o(n))?_=!1:h&&(u||p||(_=!1)),u?m=!1:p&&(d||h||(m=!1)),t?(l=_,c=m):(l=_&&(!m||p),c=m&&(!_||h)),{can_open:l,can_close:c,length:s}},s.prototype.Token=n,e.exports=s},function(e,t,r){"use strict";function n(e){var t=Array.prototype.slice.call(arguments,1);return t.forEach((function(t){t&&Object.keys(t).forEach((function(r){e[r]=t[r]}))})),e}function o(e){return Object.prototype.toString.call(e)}function i(e){return"[object Function]"===o(e)}function a(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}var s={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1};var l={"http:":{validate:function(e,t,r){var n=e.slice(t);return r.re.http||(r.re.http=new RegExp("^\\/\\/"+r.re.src_auth+r.re.src_host_port_strict+r.re.src_path,"i")),r.re.http.test(n)?n.match(r.re.http)[0].length:0}},"https:":"http:","ftp:":"http:","//":{validate:function(e,t,r){var n=e.slice(t);return r.re.no_http||(r.re.no_http=new RegExp("^"+r.re.src_auth+"(?:localhost|(?:(?:"+r.re.src_domain+")\\.)+"+r.re.src_domain_root+")"+r.re.src_port+r.re.src_host_terminator+r.re.src_path,"i")),r.re.no_http.test(n)?t>=3&&":"===e[t-3]||t>=3&&"/"===e[t-3]?0:n.match(r.re.no_http)[0].length:0}},"mailto:":{validate:function(e,t,r){var n=e.slice(t);return r.re.mailto||(r.re.mailto=new RegExp("^"+r.re.src_email_name+"@"+r.re.src_host_strict,"i")),r.re.mailto.test(n)?n.match(r.re.mailto)[0].length:0}}},c="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф".split("|");function u(e){var t=e.re=r(188)(e.__opts__),n=e.__tlds__.slice();function s(e){return e.replace("%TLDS%",t.src_tlds)}e.onCompile(),e.__tlds_replaced__||n.push("a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]"),n.push(t.src_xn),t.src_tlds=n.join("|"),t.email_fuzzy=RegExp(s(t.tpl_email_fuzzy),"i"),t.link_fuzzy=RegExp(s(t.tpl_link_fuzzy),"i"),t.link_no_ip_fuzzy=RegExp(s(t.tpl_link_no_ip_fuzzy),"i"),t.host_fuzzy_test=RegExp(s(t.tpl_host_fuzzy_test),"i");var l=[];function c(e,t){throw new Error('(LinkifyIt) Invalid schema "'+e+'": '+t)}e.__compiled__={},Object.keys(e.__schemas__).forEach((function(t){var r=e.__schemas__[t];if(null!==r){var n={validate:null,link:null};if(e.__compiled__[t]=n,"[object Object]"===o(r))return!function(e){return"[object RegExp]"===o(e)}(r.validate)?i(r.validate)?n.validate=r.validate:c(t,r):n.validate=function(e){return function(t,r){var n=t.slice(r);return e.test(n)?n.match(e)[0].length:0}}(r.validate),void(i(r.normalize)?n.normalize=r.normalize:r.normalize?c(t,r):n.normalize=function(e,t){t.normalize(e)});!function(e){return"[object String]"===o(e)}(r)?c(t,r):l.push(t)}})),l.forEach((function(t){e.__compiled__[e.__schemas__[t]]&&(e.__compiled__[t].validate=e.__compiled__[e.__schemas__[t]].validate,e.__compiled__[t].normalize=e.__compiled__[e.__schemas__[t]].normalize)})),e.__compiled__[""]={validate:null,normalize:function(e,t){t.normalize(e)}};var u=Object.keys(e.__compiled__).filter((function(t){return t.length>0&&e.__compiled__[t]})).map(a).join("|");e.re.schema_test=RegExp("(^|(?!_)(?:[><|]|"+t.src_ZPCc+"))("+u+")","i"),e.re.schema_search=RegExp("(^|(?!_)(?:[><|]|"+t.src_ZPCc+"))("+u+")","ig"),e.re.pretest=RegExp("("+e.re.schema_test.source+")|("+e.re.host_fuzzy_test.source+")|@","i"),function(e){e.__index__=-1,e.__text_cache__=""}(e)}function p(e,t){var r=e.__index__,n=e.__last_index__,o=e.__text_cache__.slice(r,n);this.schema=e.__schema__.toLowerCase(),this.index=r+t,this.lastIndex=n+t,this.raw=o,this.text=o,this.url=o}function d(e,t){var r=new p(e,t);return e.__compiled__[r.schema].normalize(r,e),r}function h(e,t){if(!(this instanceof h))return new h(e,t);var r;t||(r=e,Object.keys(r||{}).reduce((function(e,t){return e||s.hasOwnProperty(t)}),!1)&&(t=e,e={})),this.__opts__=n({},s,t),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=n({},l,e),this.__compiled__={},this.__tlds__=c,this.__tlds_replaced__=!1,this.re={},u(this)}h.prototype.add=function(e,t){return this.__schemas__[e]=t,u(this),this},h.prototype.set=function(e){return this.__opts__=n(this.__opts__,e),this},h.prototype.test=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return!1;var t,r,n,o,i,a,s,l;if(this.re.schema_test.test(e))for((s=this.re.schema_search).lastIndex=0;null!==(t=s.exec(e));)if(o=this.testSchemaAt(e,t[2],s.lastIndex)){this.__schema__=t[2],this.__index__=t.index+t[1].length,this.__last_index__=t.index+t[0].length+o;break}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(l=e.search(this.re.host_fuzzy_test))>=0&&(this.__index__<0||l<this.__index__)&&null!==(r=e.match(this.__opts__.fuzzyIP?this.re.link_fuzzy:this.re.link_no_ip_fuzzy))&&(i=r.index+r[1].length,(this.__index__<0||i<this.__index__)&&(this.__schema__="",this.__index__=i,this.__last_index__=r.index+r[0].length)),this.__opts__.fuzzyEmail&&this.__compiled__["mailto:"]&&e.indexOf("@")>=0&&null!==(n=e.match(this.re.email_fuzzy))&&(i=n.index+n[1].length,a=n.index+n[0].length,(this.__index__<0||i<this.__index__||i===this.__index__&&a>this.__last_index__)&&(this.__schema__="mailto:",this.__index__=i,this.__last_index__=a)),this.__index__>=0},h.prototype.pretest=function(e){return this.re.pretest.test(e)},h.prototype.testSchemaAt=function(e,t,r){return this.__compiled__[t.toLowerCase()]?this.__compiled__[t.toLowerCase()].validate(e,r,this):0},h.prototype.match=function(e){var t=0,r=[];this.__index__>=0&&this.__text_cache__===e&&(r.push(d(this,t)),t=this.__last_index__);for(var n=t?e.slice(t):e;this.test(n);)r.push(d(this,t)),n=n.slice(this.__last_index__),t+=this.__last_index__;return r.length?r:null},h.prototype.tlds=function(e,t){return e=Array.isArray(e)?e:[e],t?(this.__tlds__=this.__tlds__.concat(e).sort().filter((function(e,t,r){return e!==r[t-1]})).reverse(),u(this),this):(this.__tlds__=e.slice(),this.__tlds_replaced__=!0,u(this),this)},h.prototype.normalize=function(e){e.schema||(e.url="http://"+e.url),"mailto:"!==e.schema||/^mailto:/i.test(e.url)||(e.url="mailto:"+e.url)},h.prototype.onCompile=function(){},e.exports=h},function(e,t,r){"use strict";e.exports=function(e){var t={};t.src_Any=r(64).source,t.src_Cc=r(65).source,t.src_Z=r(66).source,t.src_P=r(40).source,t.src_ZPCc=[t.src_Z,t.src_P,t.src_Cc].join("|"),t.src_ZCc=[t.src_Z,t.src_Cc].join("|");return t.src_pseudo_letter="(?:(?![><|]|"+t.src_ZPCc+")"+t.src_Any+")",t.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",t.src_auth="(?:(?:(?!"+t.src_ZCc+"|[@/\\[\\]()]).)+@)?",t.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",t.src_host_terminator="(?=$|[><|]|"+t.src_ZPCc+")(?!-|_|:\\d|\\.-|\\.(?!$|"+t.src_ZPCc+"))",t.src_path="(?:[/?#](?:(?!"+t.src_ZCc+"|[><|]|[()[\\]{}.,\"'?!\\-]).|\\[(?:(?!"+t.src_ZCc+"|\\]).)*\\]|\\((?:(?!"+t.src_ZCc+"|[)]).)*\\)|\\{(?:(?!"+t.src_ZCc+'|[}]).)*\\}|\\"(?:(?!'+t.src_ZCc+'|["]).)+\\"|\\\'(?:(?!'+t.src_ZCc+"|[']).)+\\'|\\'(?="+t.src_pseudo_letter+"|[-]).|\\.{2,4}[a-zA-Z0-9%/]|\\.(?!"+t.src_ZCc+"|[.]).|"+(e&&e["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+"\\,(?!"+t.src_ZCc+").|\\!(?!"+t.src_ZCc+"|[!]).|\\?(?!"+t.src_ZCc+"|[?]).)+|\\/)?",t.src_email_name='[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*',t.src_xn="xn--[a-z0-9\\-]{1,59}",t.src_domain_root="(?:"+t.src_xn+"|"+t.src_pseudo_letter+"{1,63})",t.src_domain="(?:"+t.src_xn+"|(?:"+t.src_pseudo_letter+")|(?:"+t.src_pseudo_letter+"(?:-|"+t.src_pseudo_letter+"){0,61}"+t.src_pseudo_letter+"))",t.src_host="(?:(?:(?:(?:"+t.src_domain+")\\.)*"+t.src_domain+"))",t.tpl_host_fuzzy="(?:"+t.src_ip4+"|(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%)))",t.tpl_host_no_ip_fuzzy="(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%))",t.src_host_strict=t.src_host+t.src_host_terminator,t.tpl_host_fuzzy_strict=t.tpl_host_fuzzy+t.src_host_terminator,t.src_host_port_strict=t.src_host+t.src_port+t.src_host_terminator,t.tpl_host_port_fuzzy_strict=t.tpl_host_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_port_no_ip_fuzzy_strict=t.tpl_host_no_ip_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_fuzzy_test="localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+t.src_ZPCc+"|>|$))",t.tpl_email_fuzzy='(^|[><|]|"|\\(|'+t.src_ZCc+")("+t.src_email_name+"@"+t.tpl_host_fuzzy_strict+")",t.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`||]|"+t.src_ZPCc+"))((?![$+<=>^`||])"+t.tpl_host_port_fuzzy_strict+t.src_path+")",t.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`||]|"+t.src_ZPCc+"))((?![$+<=>^`||])"+t.tpl_host_port_no_ip_fuzzy_strict+t.src_path+")",t}},function(e,t,r){(function(e,n){var o;/*! https://mths.be/punycode v1.4.1 by @mathias */!function(i){t&&t.nodeType,e&&e.nodeType;var a="object"==typeof n&&n;a.global!==a&&a.window!==a&&a.self;var s,l=2147483647,c=/^xn--/,u=/[^\x20-\x7E]/,p=/[\x2E\u3002\uFF0E\uFF61]/g,d={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},h=Math.floor,f=String.fromCharCode;function _(e){throw new RangeError(d[e])}function m(e,t){for(var r=e.length,n=[];r--;)n[r]=t(e[r]);return n}function g(e,t){var r=e.split("@"),n="";return r.length>1&&(n=r[0]+"@",e=r[1]),n+m((e=e.replace(p,".")).split("."),t).join(".")}function b(e){for(var t,r,n=[],o=0,i=e.length;o<i;)(t=e.charCodeAt(o++))>=55296&&t<=56319&&o<i?56320==(64512&(r=e.charCodeAt(o++)))?n.push(((1023&t)<<10)+(1023&r)+65536):(n.push(t),o--):n.push(t);return n}function v(e){return m(e,(function(e){var t="";return e>65535&&(t+=f((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+=f(e)})).join("")}function k(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function w(e,t,r){var n=0;for(e=r?h(e/700):e>>1,e+=h(e/t);e>455;n+=36)e=h(e/35);return h(n+36*e/(e+38))}function y(e){var t,r,n,o,i,a,s,c,u,p,d,f=[],m=e.length,g=0,b=128,k=72;for((r=e.lastIndexOf("-"))<0&&(r=0),n=0;n<r;++n)e.charCodeAt(n)>=128&&_("not-basic"),f.push(e.charCodeAt(n));for(o=r>0?r+1:0;o<m;){for(i=g,a=1,s=36;o>=m&&_("invalid-input"),((c=(d=e.charCodeAt(o++))-48<10?d-22:d-65<26?d-65:d-97<26?d-97:36)>=36||c>h((l-g)/a))&&_("overflow"),g+=c*a,!(c<(u=s<=k?1:s>=k+26?26:s-k));s+=36)a>h(l/(p=36-u))&&_("overflow"),a*=p;k=w(g-i,t=f.length+1,0==i),h(g/t)>l-b&&_("overflow"),b+=h(g/t),g%=t,f.splice(g++,0,b)}return v(f)}function x(e){var t,r,n,o,i,a,s,c,u,p,d,m,g,v,y,x=[];for(m=(e=b(e)).length,t=128,r=0,i=72,a=0;a<m;++a)(d=e[a])<128&&x.push(f(d));for(n=o=x.length,o&&x.push("-");n<m;){for(s=l,a=0;a<m;++a)(d=e[a])>=t&&d<s&&(s=d);for(s-t>h((l-r)/(g=n+1))&&_("overflow"),r+=(s-t)*g,t=s,a=0;a<m;++a)if((d=e[a])<t&&++r>l&&_("overflow"),d==t){for(c=r,u=36;!(c<(p=u<=i?1:u>=i+26?26:u-i));u+=36)y=c-p,v=36-p,x.push(f(k(p+y%v,0))),c=h(y/v);x.push(f(k(c,0))),i=w(r,g,n==o),r=0,++n}++r,++t}return x.join("")}s={version:"1.4.1",ucs2:{decode:b,encode:v},decode:y,encode:x,toASCII:function(e){return g(e,(function(e){return u.test(e)?"xn--"+x(e):e}))},toUnicode:function(e){return g(e,(function(e){return c.test(e)?y(e.slice(4).toLowerCase()):e}))}},void 0===(o=function(){return s}.call(t,r,t,e))||(e.exports=o)}()}).call(this,r(190)(e),r(191))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,r){"use strict";e.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:100},components:{core:{},block:{},inline:{}}}},function(e,t,r){"use strict";e.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline"]},block:{rules:["paragraph"]},inline:{rules:["text"],rules2:["balance_pairs","text_collapse"]}}}},function(e,t,r){"use strict";e.exports={options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline"]},block:{rules:["blockquote","code","fence","heading","hr","html_block","lheading","list","reference","paragraph"]},inline:{rules:["autolink","backticks","emphasis","entity","escape","html_inline","image","link","newline","text"],rules2:["balance_pairs","emphasis","text_collapse"]}}}},function(e,t,r){"use strict";var n=r(196),o=r(197),i=r(198),a=r(199),s=r(200);e.exports=function(e,t){var r={defs:n,shortcuts:o,enabled:[]},l=s(e.utils.assign({},r,t||{}));e.renderer.rules.emoji=i,e.core.ruler.push("emoji",a(e,l.defs,l.shortcuts,l.scanRE,l.replaceRE))}},function(e){e.exports=JSON.parse('{"100":"💯","1234":"🔢","grinning":"😀","smiley":"😃","smile":"😄","grin":"😁","laughing":"😆","satisfied":"😆","sweat_smile":"😅","joy":"😂","rofl":"🤣","relaxed":"☺️","blush":"😊","innocent":"😇","slightly_smiling_face":"🙂","upside_down_face":"🙃","wink":"😉","relieved":"😌","heart_eyes":"😍","kissing_heart":"😘","kissing":"😗","kissing_smiling_eyes":"😙","kissing_closed_eyes":"😚","yum":"😋","stuck_out_tongue_winking_eye":"😜","stuck_out_tongue_closed_eyes":"😝","stuck_out_tongue":"😛","money_mouth_face":"🤑","hugs":"🤗","nerd_face":"🤓","sunglasses":"😎","clown_face":"🤡","cowboy_hat_face":"🤠","smirk":"😏","unamused":"😒","disappointed":"😞","pensive":"😔","worried":"😟","confused":"😕","slightly_frowning_face":"🙁","frowning_face":"☹️","persevere":"😣","confounded":"😖","tired_face":"😫","weary":"😩","triumph":"😤","angry":"😠","rage":"😡","pout":"😡","no_mouth":"😶","neutral_face":"😐","expressionless":"😑","hushed":"😯","frowning":"😦","anguished":"😧","open_mouth":"😮","astonished":"😲","dizzy_face":"😵","flushed":"😳","scream":"😱","fearful":"😨","cold_sweat":"😰","cry":"😢","disappointed_relieved":"😥","drooling_face":"🤤","sob":"😭","sweat":"😓","sleepy":"😪","sleeping":"😴","roll_eyes":"🙄","thinking":"🤔","lying_face":"🤥","grimacing":"😬","zipper_mouth_face":"🤐","nauseated_face":"🤢","sneezing_face":"🤧","mask":"😷","face_with_thermometer":"🤒","face_with_head_bandage":"🤕","smiling_imp":"😈","imp":"👿","japanese_ogre":"👹","japanese_goblin":"👺","hankey":"💩","poop":"💩","shit":"💩","ghost":"👻","skull":"💀","skull_and_crossbones":"☠️","alien":"👽","space_invader":"👾","robot":"🤖","jack_o_lantern":"🎃","smiley_cat":"😺","smile_cat":"😸","joy_cat":"😹","heart_eyes_cat":"😻","smirk_cat":"😼","kissing_cat":"😽","scream_cat":"🙀","crying_cat_face":"😿","pouting_cat":"😾","open_hands":"👐","raised_hands":"🙌","clap":"👏","pray":"🙏","handshake":"🤝","+1":"👍","thumbsup":"👍","-1":"👎","thumbsdown":"👎","fist_oncoming":"👊","facepunch":"👊","punch":"👊","fist_raised":"✊","fist":"✊","fist_left":"🤛","fist_right":"🤜","crossed_fingers":"🤞","v":"✌️","metal":"🤘","ok_hand":"👌","point_left":"👈","point_right":"👉","point_up_2":"👆","point_down":"👇","point_up":"☝️","hand":"✋","raised_hand":"✋","raised_back_of_hand":"🤚","raised_hand_with_fingers_splayed":"🖐","vulcan_salute":"🖖","wave":"👋","call_me_hand":"🤙","muscle":"💪","middle_finger":"🖕","fu":"🖕","writing_hand":"✍️","selfie":"🤳","nail_care":"💅","ring":"💍","lipstick":"💄","kiss":"💋","lips":"👄","tongue":"👅","ear":"👂","nose":"👃","footprints":"👣","eye":"👁","eyes":"👀","speaking_head":"🗣","bust_in_silhouette":"👤","busts_in_silhouette":"👥","baby":"👶","boy":"👦","girl":"👧","man":"👨","woman":"👩","blonde_woman":"👱‍♀","blonde_man":"👱","person_with_blond_hair":"👱","older_man":"👴","older_woman":"👵","man_with_gua_pi_mao":"👲","woman_with_turban":"👳‍♀","man_with_turban":"👳","policewoman":"👮‍♀","policeman":"👮","cop":"👮","construction_worker_woman":"👷‍♀","construction_worker_man":"👷","construction_worker":"👷","guardswoman":"💂‍♀","guardsman":"💂","female_detective":"🕵️‍♀️","male_detective":"🕵","detective":"🕵","woman_health_worker":"👩‍⚕","man_health_worker":"👨‍⚕","woman_farmer":"👩‍🌾","man_farmer":"👨‍🌾","woman_cook":"👩‍🍳","man_cook":"👨‍🍳","woman_student":"👩‍🎓","man_student":"👨‍🎓","woman_singer":"👩‍🎤","man_singer":"👨‍🎤","woman_teacher":"👩‍🏫","man_teacher":"👨‍🏫","woman_factory_worker":"👩‍🏭","man_factory_worker":"👨‍🏭","woman_technologist":"👩‍💻","man_technologist":"👨‍💻","woman_office_worker":"👩‍💼","man_office_worker":"👨‍💼","woman_mechanic":"👩‍🔧","man_mechanic":"👨‍🔧","woman_scientist":"👩‍🔬","man_scientist":"👨‍🔬","woman_artist":"👩‍🎨","man_artist":"👨‍🎨","woman_firefighter":"👩‍🚒","man_firefighter":"👨‍🚒","woman_pilot":"👩‍✈","man_pilot":"👨‍✈","woman_astronaut":"👩‍🚀","man_astronaut":"👨‍🚀","woman_judge":"👩‍⚖","man_judge":"👨‍⚖","mrs_claus":"🤶","santa":"🎅","princess":"👸","prince":"🤴","bride_with_veil":"👰","man_in_tuxedo":"🤵","angel":"👼","pregnant_woman":"🤰","bowing_woman":"🙇‍♀","bowing_man":"🙇","bow":"🙇","tipping_hand_woman":"💁","information_desk_person":"💁","sassy_woman":"💁","tipping_hand_man":"💁‍♂","sassy_man":"💁‍♂","no_good_woman":"🙅","no_good":"🙅","ng_woman":"🙅","no_good_man":"🙅‍♂","ng_man":"🙅‍♂","ok_woman":"🙆","ok_man":"🙆‍♂","raising_hand_woman":"🙋","raising_hand":"🙋","raising_hand_man":"🙋‍♂","woman_facepalming":"🤦‍♀","man_facepalming":"🤦‍♂","woman_shrugging":"🤷‍♀","man_shrugging":"🤷‍♂","pouting_woman":"🙎","person_with_pouting_face":"🙎","pouting_man":"🙎‍♂","frowning_woman":"🙍","person_frowning":"🙍","frowning_man":"🙍‍♂","haircut_woman":"💇","haircut":"💇","haircut_man":"💇‍♂","massage_woman":"💆","massage":"💆","massage_man":"💆‍♂","business_suit_levitating":"🕴","dancer":"💃","man_dancing":"🕺","dancing_women":"👯","dancers":"👯","dancing_men":"👯‍♂","walking_woman":"🚶‍♀","walking_man":"🚶","walking":"🚶","running_woman":"🏃‍♀","running_man":"🏃","runner":"🏃","running":"🏃","couple":"👫","two_women_holding_hands":"👭","two_men_holding_hands":"👬","couple_with_heart_woman_man":"💑","couple_with_heart":"💑","couple_with_heart_woman_woman":"👩‍❤️‍👩","couple_with_heart_man_man":"👨‍❤️‍👨","couplekiss_man_woman":"💏","couplekiss_woman_woman":"👩‍❤️‍💋‍👩","couplekiss_man_man":"👨‍❤️‍💋‍👨","family_man_woman_boy":"👪","family":"👪","family_man_woman_girl":"👨‍👩‍👧","family_man_woman_girl_boy":"👨‍👩‍👧‍👦","family_man_woman_boy_boy":"👨‍👩‍👦‍👦","family_man_woman_girl_girl":"👨‍👩‍👧‍👧","family_woman_woman_boy":"👩‍👩‍👦","family_woman_woman_girl":"👩‍👩‍👧","family_woman_woman_girl_boy":"👩‍👩‍👧‍👦","family_woman_woman_boy_boy":"👩‍👩‍👦‍👦","family_woman_woman_girl_girl":"👩‍👩‍👧‍👧","family_man_man_boy":"👨‍👨‍👦","family_man_man_girl":"👨‍👨‍👧","family_man_man_girl_boy":"👨‍👨‍👧‍👦","family_man_man_boy_boy":"👨‍👨‍👦‍👦","family_man_man_girl_girl":"👨‍👨‍👧‍👧","family_woman_boy":"👩‍👦","family_woman_girl":"👩‍👧","family_woman_girl_boy":"👩‍👧‍👦","family_woman_boy_boy":"👩‍👦‍👦","family_woman_girl_girl":"👩‍👧‍👧","family_man_boy":"👨‍👦","family_man_girl":"👨‍👧","family_man_girl_boy":"👨‍👧‍👦","family_man_boy_boy":"👨‍👦‍👦","family_man_girl_girl":"👨‍👧‍👧","womans_clothes":"👚","shirt":"👕","tshirt":"👕","jeans":"👖","necktie":"👔","dress":"👗","bikini":"👙","kimono":"👘","high_heel":"👠","sandal":"👡","boot":"👢","mans_shoe":"👞","shoe":"👞","athletic_shoe":"👟","womans_hat":"👒","tophat":"🎩","mortar_board":"🎓","crown":"👑","rescue_worker_helmet":"⛑","school_satchel":"🎒","pouch":"👝","purse":"👛","handbag":"👜","briefcase":"💼","eyeglasses":"👓","dark_sunglasses":"🕶","closed_umbrella":"🌂","open_umbrella":"☂️","dog":"🐶","cat":"🐱","mouse":"🐭","hamster":"🐹","rabbit":"🐰","fox_face":"🦊","bear":"🐻","panda_face":"🐼","koala":"🐨","tiger":"🐯","lion":"🦁","cow":"🐮","pig":"🐷","pig_nose":"🐽","frog":"🐸","monkey_face":"🐵","see_no_evil":"🙈","hear_no_evil":"🙉","speak_no_evil":"🙊","monkey":"🐒","chicken":"🐔","penguin":"🐧","bird":"🐦","baby_chick":"🐤","hatching_chick":"🐣","hatched_chick":"🐥","duck":"🦆","eagle":"🦅","owl":"🦉","bat":"🦇","wolf":"🐺","boar":"🐗","horse":"🐴","unicorn":"🦄","bee":"🐝","honeybee":"🐝","bug":"🐛","butterfly":"🦋","snail":"🐌","shell":"🐚","beetle":"🐞","ant":"🐜","spider":"🕷","spider_web":"🕸","turtle":"🐢","snake":"🐍","lizard":"🦎","scorpion":"🦂","crab":"🦀","squid":"🦑","octopus":"🐙","shrimp":"🦐","tropical_fish":"🐠","fish":"🐟","blowfish":"🐡","dolphin":"🐬","flipper":"🐬","shark":"🦈","whale":"🐳","whale2":"🐋","crocodile":"🐊","leopard":"🐆","tiger2":"🐅","water_buffalo":"🐃","ox":"🐂","cow2":"🐄","deer":"🦌","dromedary_camel":"🐪","camel":"🐫","elephant":"🐘","rhinoceros":"🦏","gorilla":"🦍","racehorse":"🐎","pig2":"🐖","goat":"🐐","ram":"🐏","sheep":"🐑","dog2":"🐕","poodle":"🐩","cat2":"🐈","rooster":"🐓","turkey":"🦃","dove":"🕊","rabbit2":"🐇","mouse2":"🐁","rat":"🐀","chipmunk":"🐿","feet":"🐾","paw_prints":"🐾","dragon":"🐉","dragon_face":"🐲","cactus":"🌵","christmas_tree":"🎄","evergreen_tree":"🌲","deciduous_tree":"🌳","palm_tree":"🌴","seedling":"🌱","herb":"🌿","shamrock":"☘️","four_leaf_clover":"🍀","bamboo":"🎍","tanabata_tree":"🎋","leaves":"🍃","fallen_leaf":"🍂","maple_leaf":"🍁","mushroom":"🍄","ear_of_rice":"🌾","bouquet":"💐","tulip":"🌷","rose":"🌹","wilted_flower":"🥀","sunflower":"🌻","blossom":"🌼","cherry_blossom":"🌸","hibiscus":"🌺","earth_americas":"🌎","earth_africa":"🌍","earth_asia":"🌏","full_moon":"🌕","waning_gibbous_moon":"🌖","last_quarter_moon":"🌗","waning_crescent_moon":"🌘","new_moon":"🌑","waxing_crescent_moon":"🌒","first_quarter_moon":"🌓","moon":"🌔","waxing_gibbous_moon":"🌔","new_moon_with_face":"🌚","full_moon_with_face":"🌝","sun_with_face":"🌞","first_quarter_moon_with_face":"🌛","last_quarter_moon_with_face":"🌜","crescent_moon":"🌙","dizzy":"💫","star":"⭐️","star2":"🌟","sparkles":"✨","zap":"⚡️","fire":"🔥","boom":"💥","collision":"💥","comet":"☄","sunny":"☀️","sun_behind_small_cloud":"🌤","partly_sunny":"⛅️","sun_behind_large_cloud":"🌥","sun_behind_rain_cloud":"🌦","rainbow":"🌈","cloud":"☁️","cloud_with_rain":"🌧","cloud_with_lightning_and_rain":"⛈","cloud_with_lightning":"🌩","cloud_with_snow":"🌨","snowman_with_snow":"☃️","snowman":"⛄️","snowflake":"❄️","wind_face":"🌬","dash":"💨","tornado":"🌪","fog":"🌫","ocean":"🌊","droplet":"💧","sweat_drops":"💦","umbrella":"☔️","green_apple":"🍏","apple":"🍎","pear":"🍐","tangerine":"🍊","orange":"🍊","mandarin":"🍊","lemon":"🍋","banana":"🍌","watermelon":"🍉","grapes":"🍇","strawberry":"🍓","melon":"🍈","cherries":"🍒","peach":"🍑","pineapple":"🍍","kiwi_fruit":"🥝","avocado":"🥑","tomato":"🍅","eggplant":"🍆","cucumber":"🥒","carrot":"🥕","corn":"🌽","hot_pepper":"🌶","potato":"🥔","sweet_potato":"🍠","chestnut":"🌰","peanuts":"🥜","honey_pot":"🍯","croissant":"🥐","bread":"🍞","baguette_bread":"🥖","cheese":"🧀","egg":"🥚","fried_egg":"🍳","bacon":"🥓","pancakes":"🥞","fried_shrimp":"🍤","poultry_leg":"🍗","meat_on_bone":"🍖","pizza":"🍕","hotdog":"🌭","hamburger":"🍔","fries":"🍟","stuffed_flatbread":"🥙","taco":"🌮","burrito":"🌯","green_salad":"🥗","shallow_pan_of_food":"🥘","spaghetti":"🍝","ramen":"🍜","stew":"🍲","fish_cake":"🍥","sushi":"🍣","bento":"🍱","curry":"🍛","rice":"🍚","rice_ball":"🍙","rice_cracker":"🍘","oden":"🍢","dango":"🍡","shaved_ice":"🍧","ice_cream":"🍨","icecream":"🍦","cake":"🍰","birthday":"🎂","custard":"🍮","lollipop":"🍭","candy":"🍬","chocolate_bar":"🍫","popcorn":"🍿","doughnut":"🍩","cookie":"🍪","milk_glass":"🥛","baby_bottle":"🍼","coffee":"☕️","tea":"🍵","sake":"🍶","beer":"🍺","beers":"🍻","clinking_glasses":"🥂","wine_glass":"🍷","tumbler_glass":"🥃","cocktail":"🍸","tropical_drink":"🍹","champagne":"🍾","spoon":"🥄","fork_and_knife":"🍴","plate_with_cutlery":"🍽","soccer":"⚽️","basketball":"🏀","football":"🏈","baseball":"⚾️","tennis":"🎾","volleyball":"🏐","rugby_football":"🏉","8ball":"🎱","ping_pong":"🏓","badminton":"🏸","goal_net":"🥅","ice_hockey":"🏒","field_hockey":"🏑","cricket":"🏏","golf":"⛳️","bow_and_arrow":"🏹","fishing_pole_and_fish":"🎣","boxing_glove":"🥊","martial_arts_uniform":"🥋","ice_skate":"⛸","ski":"🎿","skier":"⛷","snowboarder":"🏂","weight_lifting_woman":"🏋️‍♀️","weight_lifting_man":"🏋","person_fencing":"🤺","women_wrestling":"🤼‍♀","men_wrestling":"🤼‍♂","woman_cartwheeling":"🤸‍♀","man_cartwheeling":"🤸‍♂","basketball_woman":"⛹️‍♀️","basketball_man":"⛹","woman_playing_handball":"🤾‍♀","man_playing_handball":"🤾‍♂","golfing_woman":"🏌️‍♀️","golfing_man":"🏌","surfing_woman":"🏄‍♀","surfing_man":"🏄","surfer":"🏄","swimming_woman":"🏊‍♀","swimming_man":"🏊","swimmer":"🏊","woman_playing_water_polo":"🤽‍♀","man_playing_water_polo":"🤽‍♂","rowing_woman":"🚣‍♀","rowing_man":"🚣","rowboat":"🚣","horse_racing":"🏇","biking_woman":"🚴‍♀","biking_man":"🚴","bicyclist":"🚴","mountain_biking_woman":"🚵‍♀","mountain_biking_man":"🚵","mountain_bicyclist":"🚵","running_shirt_with_sash":"🎽","medal_sports":"🏅","medal_military":"🎖","1st_place_medal":"🥇","2nd_place_medal":"🥈","3rd_place_medal":"🥉","trophy":"🏆","rosette":"🏵","reminder_ribbon":"🎗","ticket":"🎫","tickets":"🎟","circus_tent":"🎪","woman_juggling":"🤹‍♀","man_juggling":"🤹‍♂","performing_arts":"🎭","art":"🎨","clapper":"🎬","microphone":"🎤","headphones":"🎧","musical_score":"🎼","musical_keyboard":"🎹","drum":"🥁","saxophone":"🎷","trumpet":"🎺","guitar":"🎸","violin":"🎻","game_die":"🎲","dart":"🎯","bowling":"🎳","video_game":"🎮","slot_machine":"🎰","car":"🚗","red_car":"🚗","taxi":"🚕","blue_car":"🚙","bus":"🚌","trolleybus":"🚎","racing_car":"🏎","police_car":"🚓","ambulance":"🚑","fire_engine":"🚒","minibus":"🚐","truck":"🚚","articulated_lorry":"🚛","tractor":"🚜","kick_scooter":"🛴","bike":"🚲","motor_scooter":"🛵","motorcycle":"🏍","rotating_light":"🚨","oncoming_police_car":"🚔","oncoming_bus":"🚍","oncoming_automobile":"🚘","oncoming_taxi":"🚖","aerial_tramway":"🚡","mountain_cableway":"🚠","suspension_railway":"🚟","railway_car":"🚃","train":"🚋","mountain_railway":"🚞","monorail":"🚝","bullettrain_side":"🚄","bullettrain_front":"🚅","light_rail":"🚈","steam_locomotive":"🚂","train2":"🚆","metro":"🚇","tram":"🚊","station":"🚉","helicopter":"🚁","small_airplane":"🛩","airplane":"✈️","flight_departure":"🛫","flight_arrival":"🛬","rocket":"🚀","artificial_satellite":"🛰","seat":"💺","canoe":"🛶","boat":"⛵️","sailboat":"⛵️","motor_boat":"🛥","speedboat":"🚤","passenger_ship":"🛳","ferry":"⛴","ship":"🚢","anchor":"⚓️","construction":"🚧","fuelpump":"⛽️","busstop":"🚏","vertical_traffic_light":"🚦","traffic_light":"🚥","world_map":"🗺","moyai":"🗿","statue_of_liberty":"🗽","fountain":"⛲️","tokyo_tower":"🗼","european_castle":"🏰","japanese_castle":"🏯","stadium":"🏟","ferris_wheel":"🎡","roller_coaster":"🎢","carousel_horse":"🎠","parasol_on_ground":"⛱","beach_umbrella":"🏖","desert_island":"🏝","mountain":"⛰","mountain_snow":"🏔","mount_fuji":"🗻","volcano":"🌋","desert":"🏜","camping":"🏕","tent":"⛺️","railway_track":"🛤","motorway":"🛣","building_construction":"🏗","factory":"🏭","house":"🏠","house_with_garden":"🏡","houses":"🏘","derelict_house":"🏚","office":"🏢","department_store":"🏬","post_office":"🏣","european_post_office":"🏤","hospital":"🏥","bank":"🏦","hotel":"🏨","convenience_store":"🏪","school":"🏫","love_hotel":"🏩","wedding":"💒","classical_building":"🏛","church":"⛪️","mosque":"🕌","synagogue":"🕍","kaaba":"🕋","shinto_shrine":"⛩","japan":"🗾","rice_scene":"🎑","national_park":"🏞","sunrise":"🌅","sunrise_over_mountains":"🌄","stars":"🌠","sparkler":"🎇","fireworks":"🎆","city_sunrise":"🌇","city_sunset":"🌆","cityscape":"🏙","night_with_stars":"🌃","milky_way":"🌌","bridge_at_night":"🌉","foggy":"🌁","watch":"⌚️","iphone":"📱","calling":"📲","computer":"💻","keyboard":"⌨️","desktop_computer":"🖥","printer":"🖨","computer_mouse":"🖱","trackball":"🖲","joystick":"🕹","clamp":"🗜","minidisc":"💽","floppy_disk":"💾","cd":"💿","dvd":"📀","vhs":"📼","camera":"📷","camera_flash":"📸","video_camera":"📹","movie_camera":"🎥","film_projector":"📽","film_strip":"🎞","telephone_receiver":"📞","phone":"☎️","telephone":"☎️","pager":"📟","fax":"📠","tv":"📺","radio":"📻","studio_microphone":"🎙","level_slider":"🎚","control_knobs":"🎛","stopwatch":"⏱","timer_clock":"⏲","alarm_clock":"⏰","mantelpiece_clock":"🕰","hourglass":"⌛️","hourglass_flowing_sand":"⏳","satellite":"📡","battery":"🔋","electric_plug":"🔌","bulb":"💡","flashlight":"🔦","candle":"🕯","wastebasket":"🗑","oil_drum":"🛢","money_with_wings":"💸","dollar":"💵","yen":"💴","euro":"💶","pound":"💷","moneybag":"💰","credit_card":"💳","gem":"💎","balance_scale":"⚖️","wrench":"🔧","hammer":"🔨","hammer_and_pick":"⚒","hammer_and_wrench":"🛠","pick":"⛏","nut_and_bolt":"🔩","gear":"⚙️","chains":"⛓","gun":"🔫","bomb":"💣","hocho":"🔪","knife":"🔪","dagger":"🗡","crossed_swords":"⚔️","shield":"🛡","smoking":"🚬","coffin":"⚰️","funeral_urn":"⚱️","amphora":"🏺","crystal_ball":"🔮","prayer_beads":"📿","barber":"💈","alembic":"⚗️","telescope":"🔭","microscope":"🔬","hole":"🕳","pill":"💊","syringe":"💉","thermometer":"🌡","toilet":"🚽","potable_water":"🚰","shower":"🚿","bathtub":"🛁","bath":"🛀","bellhop_bell":"🛎","key":"🔑","old_key":"🗝","door":"🚪","couch_and_lamp":"🛋","bed":"🛏","sleeping_bed":"🛌","framed_picture":"🖼","shopping":"🛍","shopping_cart":"🛒","gift":"🎁","balloon":"🎈","flags":"🎏","ribbon":"🎀","confetti_ball":"🎊","tada":"🎉","dolls":"🎎","izakaya_lantern":"🏮","lantern":"🏮","wind_chime":"🎐","email":"✉️","envelope":"✉️","envelope_with_arrow":"📩","incoming_envelope":"📨","e-mail":"📧","love_letter":"💌","inbox_tray":"📥","outbox_tray":"📤","package":"📦","label":"🏷","mailbox_closed":"📪","mailbox":"📫","mailbox_with_mail":"📬","mailbox_with_no_mail":"📭","postbox":"📮","postal_horn":"📯","scroll":"📜","page_with_curl":"📃","page_facing_up":"📄","bookmark_tabs":"📑","bar_chart":"📊","chart_with_upwards_trend":"📈","chart_with_downwards_trend":"📉","spiral_notepad":"🗒","spiral_calendar":"🗓","calendar":"📆","date":"📅","card_index":"📇","card_file_box":"🗃","ballot_box":"🗳","file_cabinet":"🗄","clipboard":"📋","file_folder":"📁","open_file_folder":"📂","card_index_dividers":"🗂","newspaper_roll":"🗞","newspaper":"📰","notebook":"📓","notebook_with_decorative_cover":"📔","ledger":"📒","closed_book":"📕","green_book":"📗","blue_book":"📘","orange_book":"📙","books":"📚","book":"📖","open_book":"📖","bookmark":"🔖","link":"🔗","paperclip":"📎","paperclips":"🖇","triangular_ruler":"📐","straight_ruler":"📏","pushpin":"📌","round_pushpin":"📍","scissors":"✂️","pen":"🖊","fountain_pen":"🖋","black_nib":"✒️","paintbrush":"🖌","crayon":"🖍","memo":"📝","pencil":"📝","pencil2":"✏️","mag":"🔍","mag_right":"🔎","lock_with_ink_pen":"🔏","closed_lock_with_key":"🔐","lock":"🔒","unlock":"🔓","heart":"❤️","yellow_heart":"💛","green_heart":"💚","blue_heart":"💙","purple_heart":"💜","black_heart":"🖤","broken_heart":"💔","heavy_heart_exclamation":"❣️","two_hearts":"💕","revolving_hearts":"💞","heartbeat":"💓","heartpulse":"💗","sparkling_heart":"💖","cupid":"💘","gift_heart":"💝","heart_decoration":"💟","peace_symbol":"☮️","latin_cross":"✝️","star_and_crescent":"☪️","om":"🕉","wheel_of_dharma":"☸️","star_of_david":"✡️","six_pointed_star":"🔯","menorah":"🕎","yin_yang":"☯️","orthodox_cross":"☦️","place_of_worship":"🛐","ophiuchus":"⛎","aries":"♈️","taurus":"♉️","gemini":"♊️","cancer":"♋️","leo":"♌️","virgo":"♍️","libra":"♎️","scorpius":"♏️","sagittarius":"♐️","capricorn":"♑️","aquarius":"♒️","pisces":"♓️","id":"🆔","atom_symbol":"⚛️","accept":"🉑","radioactive":"☢️","biohazard":"☣️","mobile_phone_off":"📴","vibration_mode":"📳","eight_pointed_black_star":"✴️","vs":"🆚","white_flower":"💮","ideograph_advantage":"🉐","secret":"㊙️","congratulations":"㊗️","u6e80":"🈵","a":"🅰️","b":"🅱️","ab":"🆎","cl":"🆑","o2":"🅾️","sos":"🆘","x":"❌","o":"⭕️","stop_sign":"🛑","no_entry":"⛔️","name_badge":"📛","no_entry_sign":"🚫","anger":"💢","hotsprings":"♨️","no_pedestrians":"🚷","do_not_litter":"🚯","no_bicycles":"🚳","non-potable_water":"🚱","underage":"🔞","no_mobile_phones":"📵","no_smoking":"🚭","exclamation":"❗️","heavy_exclamation_mark":"❗️","grey_exclamation":"❕","question":"❓","grey_question":"❔","bangbang":"‼️","interrobang":"⁉️","low_brightness":"🔅","high_brightness":"🔆","part_alternation_mark":"〽️","warning":"⚠️","children_crossing":"🚸","trident":"🔱","fleur_de_lis":"⚜️","beginner":"🔰","recycle":"♻️","white_check_mark":"✅","chart":"💹","sparkle":"❇️","eight_spoked_asterisk":"✳️","negative_squared_cross_mark":"❎","globe_with_meridians":"🌐","diamond_shape_with_a_dot_inside":"💠","m":"Ⓜ️","cyclone":"🌀","zzz":"💤","atm":"🏧","wc":"🚾","wheelchair":"♿️","parking":"🅿️","sa":"🈂️","passport_control":"🛂","customs":"🛃","baggage_claim":"🛄","left_luggage":"🛅","mens":"🚹","womens":"🚺","baby_symbol":"🚼","restroom":"🚻","put_litter_in_its_place":"🚮","cinema":"🎦","signal_strength":"📶","koko":"🈁","symbols":"🔣","information_source":"ℹ️","abc":"🔤","abcd":"🔡","capital_abcd":"🔠","ng":"🆖","ok":"🆗","up":"🆙","cool":"🆒","new":"🆕","free":"🆓","zero":"0️⃣","one":"1️⃣","two":"2️⃣","three":"3️⃣","four":"4️⃣","five":"5️⃣","six":"6️⃣","seven":"7️⃣","eight":"8️⃣","nine":"9️⃣","keycap_ten":"🔟","hash":"#️⃣","asterisk":"*️⃣","arrow_forward":"▶️","pause_button":"⏸","play_or_pause_button":"⏯","stop_button":"⏹","record_button":"⏺","next_track_button":"⏭","previous_track_button":"⏮","fast_forward":"⏩","rewind":"⏪","arrow_double_up":"⏫","arrow_double_down":"⏬","arrow_backward":"◀️","arrow_up_small":"🔼","arrow_down_small":"🔽","arrow_right":"➡️","arrow_left":"⬅️","arrow_up":"⬆️","arrow_down":"⬇️","arrow_upper_right":"↗️","arrow_lower_right":"↘️","arrow_lower_left":"↙️","arrow_upper_left":"↖️","arrow_up_down":"↕️","left_right_arrow":"↔️","arrow_right_hook":"↪️","leftwards_arrow_with_hook":"↩️","arrow_heading_up":"⤴️","arrow_heading_down":"⤵️","twisted_rightwards_arrows":"🔀","repeat":"🔁","repeat_one":"🔂","arrows_counterclockwise":"🔄","arrows_clockwise":"🔃","musical_note":"🎵","notes":"🎶","heavy_plus_sign":"➕","heavy_minus_sign":"➖","heavy_division_sign":"➗","heavy_multiplication_x":"✖️","heavy_dollar_sign":"💲","currency_exchange":"💱","tm":"™️","copyright":"©️","registered":"®️","wavy_dash":"〰️","curly_loop":"➰","loop":"➿","end":"🔚","back":"🔙","on":"🔛","top":"🔝","soon":"🔜","heavy_check_mark":"✔️","ballot_box_with_check":"☑️","radio_button":"🔘","white_circle":"⚪️","black_circle":"⚫️","red_circle":"🔴","large_blue_circle":"🔵","small_red_triangle":"🔺","small_red_triangle_down":"🔻","small_orange_diamond":"🔸","small_blue_diamond":"🔹","large_orange_diamond":"🔶","large_blue_diamond":"🔷","white_square_button":"🔳","black_square_button":"🔲","black_small_square":"▪️","white_small_square":"▫️","black_medium_small_square":"◾️","white_medium_small_square":"◽️","black_medium_square":"◼️","white_medium_square":"◻️","black_large_square":"⬛️","white_large_square":"⬜️","speaker":"🔈","mute":"🔇","sound":"🔉","loud_sound":"🔊","bell":"🔔","no_bell":"🔕","mega":"📣","loudspeaker":"📢","eye_speech_bubble":"👁‍🗨","speech_balloon":"💬","thought_balloon":"💭","right_anger_bubble":"🗯","spades":"♠️","clubs":"♣️","hearts":"♥️","diamonds":"♦️","black_joker":"🃏","flower_playing_cards":"🎴","mahjong":"🀄️","clock1":"🕐","clock2":"🕑","clock3":"🕒","clock4":"🕓","clock5":"🕔","clock6":"🕕","clock7":"🕖","clock8":"🕗","clock9":"🕘","clock10":"🕙","clock11":"🕚","clock12":"🕛","clock130":"🕜","clock230":"🕝","clock330":"🕞","clock430":"🕟","clock530":"🕠","clock630":"🕡","clock730":"🕢","clock830":"🕣","clock930":"🕤","clock1030":"🕥","clock1130":"🕦","clock1230":"🕧","white_flag":"🏳️","black_flag":"🏴","checkered_flag":"🏁","triangular_flag_on_post":"🚩","rainbow_flag":"🏳️‍🌈","afghanistan":"🇦🇫","aland_islands":"🇦🇽","albania":"🇦🇱","algeria":"🇩🇿","american_samoa":"🇦🇸","andorra":"🇦🇩","angola":"🇦🇴","anguilla":"🇦🇮","antarctica":"🇦🇶","antigua_barbuda":"🇦🇬","argentina":"🇦🇷","armenia":"🇦🇲","aruba":"🇦🇼","australia":"🇦🇺","austria":"🇦🇹","azerbaijan":"🇦🇿","bahamas":"🇧🇸","bahrain":"🇧🇭","bangladesh":"🇧🇩","barbados":"🇧🇧","belarus":"🇧🇾","belgium":"🇧🇪","belize":"🇧🇿","benin":"🇧🇯","bermuda":"🇧🇲","bhutan":"🇧🇹","bolivia":"🇧🇴","caribbean_netherlands":"🇧🇶","bosnia_herzegovina":"🇧🇦","botswana":"🇧🇼","brazil":"🇧🇷","british_indian_ocean_territory":"🇮🇴","british_virgin_islands":"🇻🇬","brunei":"🇧🇳","bulgaria":"🇧🇬","burkina_faso":"🇧🇫","burundi":"🇧🇮","cape_verde":"🇨🇻","cambodia":"🇰🇭","cameroon":"🇨🇲","canada":"🇨🇦","canary_islands":"🇮🇨","cayman_islands":"🇰🇾","central_african_republic":"🇨🇫","chad":"🇹🇩","chile":"🇨🇱","cn":"🇨🇳","christmas_island":"🇨🇽","cocos_islands":"🇨🇨","colombia":"🇨🇴","comoros":"🇰🇲","congo_brazzaville":"🇨🇬","congo_kinshasa":"🇨🇩","cook_islands":"🇨🇰","costa_rica":"🇨🇷","cote_divoire":"🇨🇮","croatia":"🇭🇷","cuba":"🇨🇺","curacao":"🇨🇼","cyprus":"🇨🇾","czech_republic":"🇨🇿","denmark":"🇩🇰","djibouti":"🇩🇯","dominica":"🇩🇲","dominican_republic":"🇩🇴","ecuador":"🇪🇨","egypt":"🇪🇬","el_salvador":"🇸🇻","equatorial_guinea":"🇬🇶","eritrea":"🇪🇷","estonia":"🇪🇪","ethiopia":"🇪🇹","eu":"🇪🇺","european_union":"🇪🇺","falkland_islands":"🇫🇰","faroe_islands":"🇫🇴","fiji":"🇫🇯","finland":"🇫🇮","fr":"🇫🇷","french_guiana":"🇬🇫","french_polynesia":"🇵🇫","french_southern_territories":"🇹🇫","gabon":"🇬🇦","gambia":"🇬🇲","georgia":"🇬🇪","de":"🇩🇪","ghana":"🇬🇭","gibraltar":"🇬🇮","greece":"🇬🇷","greenland":"🇬🇱","grenada":"🇬🇩","guadeloupe":"🇬🇵","guam":"🇬🇺","guatemala":"🇬🇹","guernsey":"🇬🇬","guinea":"🇬🇳","guinea_bissau":"🇬🇼","guyana":"🇬🇾","haiti":"🇭🇹","honduras":"🇭🇳","hong_kong":"🇭🇰","hungary":"🇭🇺","iceland":"🇮🇸","india":"🇮🇳","indonesia":"🇮🇩","iran":"🇮🇷","iraq":"🇮🇶","ireland":"🇮🇪","isle_of_man":"🇮🇲","israel":"🇮🇱","it":"🇮🇹","jamaica":"🇯🇲","jp":"🇯🇵","crossed_flags":"🎌","jersey":"🇯🇪","jordan":"🇯🇴","kazakhstan":"🇰🇿","kenya":"🇰🇪","kiribati":"🇰🇮","kosovo":"🇽🇰","kuwait":"🇰🇼","kyrgyzstan":"🇰🇬","laos":"🇱🇦","latvia":"🇱🇻","lebanon":"🇱🇧","lesotho":"🇱🇸","liberia":"🇱🇷","libya":"🇱🇾","liechtenstein":"🇱🇮","lithuania":"🇱🇹","luxembourg":"🇱🇺","macau":"🇲🇴","macedonia":"🇲🇰","madagascar":"🇲🇬","malawi":"🇲🇼","malaysia":"🇲🇾","maldives":"🇲🇻","mali":"🇲🇱","malta":"🇲🇹","marshall_islands":"🇲🇭","martinique":"🇲🇶","mauritania":"🇲🇷","mauritius":"🇲🇺","mayotte":"🇾🇹","mexico":"🇲🇽","micronesia":"🇫🇲","moldova":"🇲🇩","monaco":"🇲🇨","mongolia":"🇲🇳","montenegro":"🇲🇪","montserrat":"🇲🇸","morocco":"🇲🇦","mozambique":"🇲🇿","myanmar":"🇲🇲","namibia":"🇳🇦","nauru":"🇳🇷","nepal":"🇳🇵","netherlands":"🇳🇱","new_caledonia":"🇳🇨","new_zealand":"🇳🇿","nicaragua":"🇳🇮","niger":"🇳🇪","nigeria":"🇳🇬","niue":"🇳🇺","norfolk_island":"🇳🇫","northern_mariana_islands":"🇲🇵","north_korea":"🇰🇵","norway":"🇳🇴","oman":"🇴🇲","pakistan":"🇵🇰","palau":"🇵🇼","palestinian_territories":"🇵🇸","panama":"🇵🇦","papua_new_guinea":"🇵🇬","paraguay":"🇵🇾","peru":"🇵🇪","philippines":"🇵🇭","pitcairn_islands":"🇵🇳","poland":"🇵🇱","portugal":"🇵🇹","puerto_rico":"🇵🇷","qatar":"🇶🇦","reunion":"🇷🇪","romania":"🇷🇴","ru":"🇷🇺","rwanda":"🇷🇼","st_barthelemy":"🇧🇱","st_helena":"🇸🇭","st_kitts_nevis":"🇰🇳","st_lucia":"🇱🇨","st_pierre_miquelon":"🇵🇲","st_vincent_grenadines":"🇻🇨","samoa":"🇼🇸","san_marino":"🇸🇲","sao_tome_principe":"🇸🇹","saudi_arabia":"🇸🇦","senegal":"🇸🇳","serbia":"🇷🇸","seychelles":"🇸🇨","sierra_leone":"🇸🇱","singapore":"🇸🇬","sint_maarten":"🇸🇽","slovakia":"🇸🇰","slovenia":"🇸🇮","solomon_islands":"🇸🇧","somalia":"🇸🇴","south_africa":"🇿🇦","south_georgia_south_sandwich_islands":"🇬🇸","kr":"🇰🇷","south_sudan":"🇸🇸","es":"🇪🇸","sri_lanka":"🇱🇰","sudan":"🇸🇩","suriname":"🇸🇷","swaziland":"🇸🇿","sweden":"🇸🇪","switzerland":"🇨🇭","syria":"🇸🇾","taiwan":"🇹🇼","tajikistan":"🇹🇯","tanzania":"🇹🇿","thailand":"🇹🇭","timor_leste":"🇹🇱","togo":"🇹🇬","tokelau":"🇹🇰","tonga":"🇹🇴","trinidad_tobago":"🇹🇹","tunisia":"🇹🇳","tr":"🇹🇷","turkmenistan":"🇹🇲","turks_caicos_islands":"🇹🇨","tuvalu":"🇹🇻","uganda":"🇺🇬","ukraine":"🇺🇦","united_arab_emirates":"🇦🇪","gb":"🇬🇧","uk":"🇬🇧","us":"🇺🇸","us_virgin_islands":"🇻🇮","uruguay":"🇺🇾","uzbekistan":"🇺🇿","vanuatu":"🇻🇺","vatican_city":"🇻🇦","venezuela":"🇻🇪","vietnam":"🇻🇳","wallis_futuna":"🇼🇫","western_sahara":"🇪🇭","yemen":"🇾🇪","zambia":"🇿🇲","zimbabwe":"🇿🇼"}')},function(e,t,r){"use strict";e.exports={angry:[">:(",">:-("],blush:[':")',':-")'],broken_heart:["</3","<\\3"],confused:[":/",":-/"],cry:[":'(",":'-(",":,(",":,-("],frowning:[":(",":-("],heart:["<3"],imp:["]:(","]:-("],innocent:["o:)","O:)","o:-)","O:-)","0:)","0:-)"],joy:[":')",":'-)",":,)",":,-)",":'D",":'-D",":,D",":,-D"],kissing:[":*",":-*"],laughing:["x-)","X-)"],neutral_face:[":|",":-|"],open_mouth:[":o",":-o",":O",":-O"],rage:[":@",":-@"],smile:[":D",":-D"],smiley:[":)",":-)"],smiling_imp:["]:)","]:-)"],sob:[":,'(",":,'-(",";(",";-("],stuck_out_tongue:[":P",":-P"],sunglasses:["8-)","B-)"],sweat:[",:(",",:-("],sweat_smile:[",:)",",:-)"],unamused:[":s",":-S",":z",":-Z",":$",":-$"],wink:[";)",";-)"]}},function(e,t,r){"use strict";e.exports=function(e,t){return e[t].content}},function(e,t,r){"use strict";e.exports=function(e,t,r,n,o){var i=e.utils.arrayReplaceAt,a=e.utils.lib.ucmicro,s=new RegExp([a.Z.source,a.P.source,a.Cc.source].join("|"));function l(e,n,i){var a,l=0,c=[];return e.replace(o,(function(n,o,u){var p;if(r.hasOwnProperty(n)){if(p=r[n],o>0&&!s.test(u[o-1]))return;if(o+n.length<u.length&&!s.test(u[o+n.length]))return}else p=n.slice(1,-1);o>l&&((a=new i("text","",0)).content=e.slice(l,o),c.push(a)),(a=new i("emoji","",0)).markup=p,a.content=t[p],c.push(a),l=o+n.length})),l<e.length&&((a=new i("text","",0)).content=e.slice(l),c.push(a)),c}return function(e){var t,r,o,a,s,c=e.tokens,u=0;for(r=0,o=c.length;r<o;r++)if("inline"===c[r].type)for(t=(a=c[r].children).length-1;t>=0;t--)"link_open"!==(s=a[t]).type&&"link_close"!==s.type||"auto"===s.info&&(u-=s.nesting),"text"===s.type&&0===u&&n.test(s.content)&&(c[r].children=a=i(a,t,l(s.content,s.level,e.Token)))}}},function(e,t,r){"use strict";e.exports=function(e){var t,r=e.defs;e.enabled.length&&(r=Object.keys(r).reduce((function(t,n){return e.enabled.indexOf(n)>=0&&(t[n]=r[n]),t}),{})),t=Object.keys(e.shortcuts).reduce((function(t,n){return r[n]?Array.isArray(e.shortcuts[n])?(e.shortcuts[n].forEach((function(e){t[e]=n})),t):(t[e.shortcuts[n]]=n,t):t}),{});var n=Object.keys(r).map((function(e){return":"+e+":"})).concat(Object.keys(t)).sort().reverse().map((function(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")})).join("|"),o=RegExp(n),i=RegExp(n,"g");return{defs:r,shortcuts:t,scanRE:o,replaceRE:i}}},function(e,t,r){"use strict";var n=/\\([ \\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g;function o(e,t){var r,o,i=e.posMax,a=e.pos;if(126!==e.src.charCodeAt(a))return!1;if(t)return!1;if(a+2>=i)return!1;for(e.pos=a+1;e.pos<i;){if(126===e.src.charCodeAt(e.pos)){r=!0;break}e.md.inline.skipToken(e)}return r&&a+1!==e.pos?(o=e.src.slice(a+1,e.pos)).match(/(^|[^\\])(\\\\)*\s/)?(e.pos=a,!1):(e.posMax=e.pos,e.pos=a+1,e.push("sub_open","sub",1).markup="~",e.push("text","",0).content=o.replace(n,"$1"),e.push("sub_close","sub",-1).markup="~",e.pos=e.posMax+1,e.posMax=i,!0):(e.pos=a,!1)}e.exports=function(e){e.inline.ruler.after("emphasis","sub",o)}},function(e,t,r){"use strict";var n=/\\([ \\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g;function o(e,t){var r,o,i=e.posMax,a=e.pos;if(94!==e.src.charCodeAt(a))return!1;if(t)return!1;if(a+2>=i)return!1;for(e.pos=a+1;e.pos<i;){if(94===e.src.charCodeAt(e.pos)){r=!0;break}e.md.inline.skipToken(e)}return r&&a+1!==e.pos?(o=e.src.slice(a+1,e.pos)).match(/(^|[^\\])(\\\\)*\s/)?(e.pos=a,!1):(e.posMax=e.pos,e.pos=a+1,e.push("sup_open","sup",1).markup="^",e.push("text","",0).content=o.replace(n,"$1"),e.push("sup_close","sup",-1).markup="^",e.pos=e.posMax+1,e.posMax=i,!0):(e.pos=a,!1)}e.exports=function(e){e.inline.ruler.after("emphasis","sup",o)}},function(e,t,r){"use strict";e.exports=function(e){var t=e.utils.isSpace;function r(e,t){var r,n,o=e.bMarks[t]+e.tShift[t],i=e.eMarks[t];return o>=i||126!==(n=e.src.charCodeAt(o++))&&58!==n||o===(r=e.skipSpaces(o))||r>=i?-1:o}e.block.ruler.before("paragraph","deflist",(function(e,n,o,i){var a,s,l,c,u,p,d,h,f,_,m,g,b,v,k,w,y,x,C,j;if(i)return!(e.ddIndent<0)&&r(e,n)>=0;if((f=n+1)>=o)return!1;if(e.isEmpty(f)&&++f>=o)return!1;if(e.sCount[f]<e.blkIndent)return!1;if((s=r(e,f))<0)return!1;d=e.tokens.length,C=!0,(j=e.push("dl_open","dl",1)).map=p=[n,0],c=n,l=f;e:for(;;){for(x=!1,(j=e.push("dt_open","dt",1)).map=[c,c],(j=e.push("inline","",0)).map=[c,c],j.content=e.getLines(c,c+1,e.blkIndent,!1).trim(),j.children=[],j=e.push("dt_close","dt",-1);;){for((j=e.push("dd_open","dd",1)).map=u=[f,0],y=s,h=e.eMarks[l],_=e.sCount[l]+s-(e.bMarks[l]+e.tShift[l]);y<h&&(a=e.src.charCodeAt(y),t(a));)9===a?_+=4-_%4:_++,y++;if(s=y,w=e.tight,m=e.ddIndent,g=e.blkIndent,k=e.tShift[l],v=e.sCount[l],b=e.parentType,e.blkIndent=e.ddIndent=e.sCount[l]+2,e.tShift[l]=s-e.bMarks[l],e.sCount[l]=_,e.tight=!0,e.parentType="deflist",e.md.block.tokenize(e,l,o,!0),e.tight&&!x||(C=!1),x=e.line-l>1&&e.isEmpty(e.line-1),e.tShift[l]=k,e.sCount[l]=v,e.tight=w,e.parentType=b,e.blkIndent=g,e.ddIndent=m,j=e.push("dd_close","dd",-1),u[1]=f=e.line,f>=o)break e;if(e.sCount[f]<e.blkIndent)break e;if((s=r(e,f))<0)break;l=f}if(f>=o)break;if(c=f,e.isEmpty(c))break;if(e.sCount[c]<e.blkIndent)break;if((l=c+1)>=o)break;if(e.isEmpty(l)&&l++,l>=o)break;if(e.sCount[l]<e.blkIndent)break;if((s=r(e,l))<0)break}return j=e.push("dl_close","dl",-1),p[1]=f,e.line=f,C&&function(e,t){var r,n,o=e.level+2;for(r=t+2,n=e.tokens.length-2;r<n;r++)e.tokens[r].level===o&&"paragraph_open"===e.tokens[r].type&&(e.tokens[r+2].hidden=!0,e.tokens[r].hidden=!0,r+=2)}(e,d),!0}),{alt:["paragraph","reference","blockquote"]})}},function(e,t,r){"use strict";e.exports=function(e){var t=e.utils.escapeRE,r=e.utils.arrayReplaceAt,n=e.utils.lib.ucmicro.P.source,o=e.utils.lib.ucmicro.Z.source;e.block.ruler.before("reference","abbr_def",(function(e,t,r,n){var o,i,a,s,l,c=e.bMarks[t]+e.tShift[t],u=e.eMarks[t];if(c+2>=u)return!1;if(42!==e.src.charCodeAt(c++))return!1;if(91!==e.src.charCodeAt(c++))return!1;for(s=c;c<u;c++){if(91===(a=e.src.charCodeAt(c)))return!1;if(93===a){l=c;break}92===a&&c++}return!(l<0||58!==e.src.charCodeAt(l+1))&&(!!n||(o=e.src.slice(s,l).replace(/\\(.)/g,"$1"),i=e.src.slice(l+2,u).trim(),0!==o.length&&(0!==i.length&&(e.env.abbreviations||(e.env.abbreviations={}),void 0===e.env.abbreviations[":"+o]&&(e.env.abbreviations[":"+o]=i),e.line=t+1,!0))))}),{alt:["paragraph","reference"]}),e.core.ruler.after("linkify","abbr_replace",(function(e){var i,a,s,l,c,u,p,d,h,f,_,m,g,b=e.tokens;if(e.env.abbreviations)for(m=new RegExp("(?:"+Object.keys(e.env.abbreviations).map((function(e){return e.substr(1)})).sort((function(e,t){return t.length-e.length})).map(t).join("|")+")"),_="(^|"+n+"|"+o+"|["+" \r\n$+<=>^`|~".split("").map(t).join("")+"])("+Object.keys(e.env.abbreviations).map((function(e){return e.substr(1)})).sort((function(e,t){return t.length-e.length})).map(t).join("|")+")($|"+n+"|"+o+"|["+" \r\n$+<=>^`|~".split("").map(t).join("")+"])",h=new RegExp(_,"g"),a=0,s=b.length;a<s;a++)if("inline"===b[a].type)for(i=(l=b[a].children).length-1;i>=0;i--)if("text"===(g=l[i]).type&&(d=0,u=g.content,h.lastIndex=0,p=[],m.test(u))){for(;f=h.exec(u);)(f.index>0||f[1].length>0)&&((c=new e.Token("text","",0)).content=u.slice(d,f.index+f[1].length),p.push(c)),(c=new e.Token("abbr_open","abbr",1)).attrs=[["title",e.env.abbreviations[":"+f[2]]]],p.push(c),(c=new e.Token("text","",0)).content=f[2],p.push(c),c=new e.Token("abbr_close","abbr",-1),p.push(c),h.lastIndex-=f[3].length,d=h.lastIndex;p.length&&(d<u.length&&((c=new e.Token("text","",0)).content=u.slice(d),p.push(c)),b[a].children=l=r(l,i,p))}}))}},function(e,t,r){"use strict";function n(e,t,r,n){var o=Number(e[t].meta.id+1).toString(),i="";return"string"==typeof n.docId&&(i="-"+n.docId+"-"),i+o}function o(e,t){var r=Number(e[t].meta.id+1).toString();return e[t].meta.subId>0&&(r+=":"+e[t].meta.subId),"["+r+"]"}function i(e,t,r,n,o){var i=o.rules.footnote_anchor_name(e,t,r,n,o),a=o.rules.footnote_caption(e,t,r,n,o),s=i;return e[t].meta.subId>0&&(s+=":"+e[t].meta.subId),'<sup class="footnote-ref"><a href="#fn'+i+'" id="fnref'+s+'">'+a+"</a></sup>"}function a(e,t,r){return(r.xhtmlOut?'<hr class="footnotes-sep" />\n':'<hr class="footnotes-sep">\n')+'<section class="footnotes">\n<ol class="footnotes-list">\n'}function s(){return"</ol>\n</section>\n"}function l(e,t,r,n,o){var i=o.rules.footnote_anchor_name(e,t,r,n,o);return e[t].meta.subId>0&&(i+=":"+e[t].meta.subId),'<li id="fn'+i+'" class="footnote-item">'}function c(){return"</li>\n"}function u(e,t,r,n,o){var i=o.rules.footnote_anchor_name(e,t,r,n,o);return e[t].meta.subId>0&&(i+=":"+e[t].meta.subId),' <a href="#fnref'+i+'" class="footnote-backref">↩︎</a>'}e.exports=function(e){var t=e.helpers.parseLinkLabel,r=e.utils.isSpace;e.renderer.rules.footnote_ref=i,e.renderer.rules.footnote_block_open=a,e.renderer.rules.footnote_block_close=s,e.renderer.rules.footnote_open=l,e.renderer.rules.footnote_close=c,e.renderer.rules.footnote_anchor=u,e.renderer.rules.footnote_caption=o,e.renderer.rules.footnote_anchor_name=n,e.block.ruler.before("reference","footnote_def",(function(e,t,n,o){var i,a,s,l,c,u,p,d,h,f,_,m=e.bMarks[t]+e.tShift[t],g=e.eMarks[t];if(m+4>g)return!1;if(91!==e.src.charCodeAt(m))return!1;if(94!==e.src.charCodeAt(m+1))return!1;for(c=m+2;c<g;c++){if(32===e.src.charCodeAt(c))return!1;if(93===e.src.charCodeAt(c))break}if(c===m+2)return!1;if(c+1>=g||58!==e.src.charCodeAt(++c))return!1;if(o)return!0;for(c++,e.env.footnotes||(e.env.footnotes={}),e.env.footnotes.refs||(e.env.footnotes.refs={}),u=e.src.slice(m+2,c-2),e.env.footnotes.refs[":"+u]=-1,(p=new e.Token("footnote_reference_open","",1)).meta={label:u},p.level=e.level++,e.tokens.push(p),i=e.bMarks[t],a=e.tShift[t],s=e.sCount[t],l=e.parentType,_=c,d=h=e.sCount[t]+c-(e.bMarks[t]+e.tShift[t]);c<g&&(f=e.src.charCodeAt(c),r(f));)9===f?h+=4-h%4:h++,c++;return e.tShift[t]=c-_,e.sCount[t]=h-d,e.bMarks[t]=_,e.blkIndent+=4,e.parentType="footnote",e.sCount[t]<e.blkIndent&&(e.sCount[t]+=e.blkIndent),e.md.block.tokenize(e,t,n,!0),e.parentType=l,e.blkIndent-=4,e.tShift[t]=a,e.sCount[t]=s,e.bMarks[t]=i,(p=new e.Token("footnote_reference_close","",-1)).level=--e.level,e.tokens.push(p),!0}),{alt:["paragraph","reference"]}),e.inline.ruler.after("image","footnote_inline",(function(e,r){var n,o,i,a,s=e.posMax,l=e.pos;return!(l+2>=s)&&(94===e.src.charCodeAt(l)&&(91===e.src.charCodeAt(l+1)&&(n=l+2,!((o=t(e,l+1))<0)&&(r||(e.env.footnotes||(e.env.footnotes={}),e.env.footnotes.list||(e.env.footnotes.list=[]),i=e.env.footnotes.list.length,e.md.inline.parse(e.src.slice(n,o),e.md,e.env,a=[]),e.push("footnote_ref","",0).meta={id:i},e.env.footnotes.list[i]={content:e.src.slice(n,o),tokens:a}),e.pos=o+1,e.posMax=s,!0))))})),e.inline.ruler.after("footnote_inline","footnote_ref",(function(e,t){var r,n,o,i,a=e.posMax,s=e.pos;if(s+3>a)return!1;if(!e.env.footnotes||!e.env.footnotes.refs)return!1;if(91!==e.src.charCodeAt(s))return!1;if(94!==e.src.charCodeAt(s+1))return!1;for(n=s+2;n<a;n++){if(32===e.src.charCodeAt(n))return!1;if(10===e.src.charCodeAt(n))return!1;if(93===e.src.charCodeAt(n))break}return n!==s+2&&(!(n>=a)&&(n++,r=e.src.slice(s+2,n-1),void 0!==e.env.footnotes.refs[":"+r]&&(t||(e.env.footnotes.list||(e.env.footnotes.list=[]),e.env.footnotes.refs[":"+r]<0?(o=e.env.footnotes.list.length,e.env.footnotes.list[o]={label:r,count:0},e.env.footnotes.refs[":"+r]=o):o=e.env.footnotes.refs[":"+r],i=e.env.footnotes.list[o].count,e.env.footnotes.list[o].count++,e.push("footnote_ref","",0).meta={id:o,subId:i,label:r}),e.pos=n,e.posMax=a,!0)))})),e.core.ruler.after("inline","footnote_tail",(function(e){var t,r,n,o,i,a,s,l,c,u,p=!1,d={};if(e.env.footnotes&&(e.tokens=e.tokens.filter((function(e){return"footnote_reference_open"===e.type?(p=!0,c=[],u=e.meta.label,!1):"footnote_reference_close"===e.type?(p=!1,d[":"+u]=c,!1):(p&&c.push(e),!p)})),e.env.footnotes.list)){for(a=e.env.footnotes.list,s=new e.Token("footnote_block_open","",1),e.tokens.push(s),t=0,r=a.length;t<r;t++){for((s=new e.Token("footnote_open","",1)).meta={id:t,label:a[t].label},e.tokens.push(s),a[t].tokens?(l=[],(s=new e.Token("paragraph_open","p",1)).block=!0,l.push(s),(s=new e.Token("inline","",0)).children=a[t].tokens,s.content=a[t].content,l.push(s),(s=new e.Token("paragraph_close","p",-1)).block=!0,l.push(s)):a[t].label&&(l=d[":"+a[t].label]),l&&(e.tokens=e.tokens.concat(l)),i="paragraph_close"===e.tokens[e.tokens.length-1].type?e.tokens.pop():null,o=a[t].count>0?a[t].count:1,n=0;n<o;n++)(s=new e.Token("footnote_anchor","",0)).meta={id:t,subId:n,label:a[t].label},e.tokens.push(s);i&&e.tokens.push(i),s=new e.Token("footnote_close","",-1),e.tokens.push(s)}s=new e.Token("footnote_block_close","",-1),e.tokens.push(s)}}))}},function(e,t,r){"use strict";e.exports=function(e){e.inline.ruler.before("emphasis","ins",(function(e,t){var r,n,o,i,a=e.pos,s=e.src.charCodeAt(a);if(t)return!1;if(43!==s)return!1;if(o=(n=e.scanDelims(e.pos,!0)).length,i=String.fromCharCode(s),o<2)return!1;for(o%2&&(e.push("text","",0).content=i,o--),r=0;r<o;r+=2)e.push("text","",0).content=i+i,e.delimiters.push({marker:s,jump:r,token:e.tokens.length-1,level:e.level,end:-1,open:n.can_open,close:n.can_close});return e.pos+=n.length,!0})),e.inline.ruler2.before("emphasis","ins",(function(e){var t,r,n,o,i,a=[],s=e.delimiters,l=e.delimiters.length;for(t=0;t<l;t++)43===(n=s[t]).marker&&-1!==n.end&&(o=s[n.end],(i=e.tokens[n.token]).type="ins_open",i.tag="ins",i.nesting=1,i.markup="++",i.content="",(i=e.tokens[o.token]).type="ins_close",i.tag="ins",i.nesting=-1,i.markup="++",i.content="","text"===e.tokens[o.token-1].type&&"+"===e.tokens[o.token-1].content&&a.push(o.token-1));for(;a.length;){for(r=(t=a.pop())+1;r<e.tokens.length&&"ins_close"===e.tokens[r].type;)r++;t!==--r&&(i=e.tokens[r],e.tokens[r]=e.tokens[t],e.tokens[t]=i)}}))}},function(e,t,r){"use strict";e.exports=function(e){e.inline.ruler.before("emphasis","mark",(function(e,t){var r,n,o,i,a=e.pos,s=e.src.charCodeAt(a);if(t)return!1;if(61!==s)return!1;if(o=(n=e.scanDelims(e.pos,!0)).length,i=String.fromCharCode(s),o<2)return!1;for(o%2&&(e.push("text","",0).content=i,o--),r=0;r<o;r+=2)e.push("text","",0).content=i+i,e.delimiters.push({marker:s,jump:r,token:e.tokens.length-1,level:e.level,end:-1,open:n.can_open,close:n.can_close});return e.pos+=n.length,!0})),e.inline.ruler2.before("emphasis","mark",(function(e){var t,r,n,o,i,a=[],s=e.delimiters,l=e.delimiters.length;for(t=0;t<l;t++)61===(n=s[t]).marker&&-1!==n.end&&(o=s[n.end],(i=e.tokens[n.token]).type="mark_open",i.tag="mark",i.nesting=1,i.markup="==",i.content="",(i=e.tokens[o.token]).type="mark_close",i.tag="mark",i.nesting=-1,i.markup="==",i.content="","text"===e.tokens[o.token-1].type&&"="===e.tokens[o.token-1].content&&a.push(o.token-1));for(;a.length;){for(r=(t=a.pop())+1;r<e.tokens.length&&"mark_close"===e.tokens[r].type;)r++;t!==--r&&(i=e.tokens[r],e.tokens[r]=e.tokens[t],e.tokens[t]=i)}}))}},function(e,t){var r=!0,n=!1,o=!1;function i(e,t,r){var n=e.attrIndex(t),o=[t,r];n<0?e.attrPush(o):e.attrs[n]=o}function a(e,t){for(var r=e[t].level-1,n=t-1;n>=0;n--)if(e[n].level===r)return n;return-1}function s(e,t){return"inline"===e[t].type&&function(e){return"paragraph_open"===e.type}(e[t-1])&&function(e){return"list_item_open"===e.type}(e[t-2])&&function(e){return 0===e.content.indexOf("[ ] ")||0===e.content.indexOf("[x] ")||0===e.content.indexOf("[X] ")}(e[t])}function l(e,t){if(e.children.unshift(function(e,t){var n=new t("html_inline","",0),o=r?' disabled="" ':"";0===e.content.indexOf("[ ] ")?n.content='<input class="task-list-item-checkbox"'+o+'type="checkbox">':0!==e.content.indexOf("[x] ")&&0!==e.content.indexOf("[X] ")||(n.content='<input class="task-list-item-checkbox" checked=""'+o+'type="checkbox">');return n}(e,t)),e.children[1].content=e.children[1].content.slice(3),e.content=e.content.slice(3),n)if(o){e.children.pop();var i="task-item-"+Math.ceil(1e7*Math.random()-1e3);e.children[0].content=e.children[0].content.slice(0,-1)+' id="'+i+'">',e.children.push(function(e,t,r){var n=new r("html_inline","",0);return n.content='<label class="task-list-item-label" for="'+t+'">'+e+"</label>",n.attrs=[{for:t}],n}(e.content,i,t))}else e.children.unshift(function(e){var t=new e("html_inline","",0);return t.content="<label>",t}(t)),e.children.push(function(e){var t=new e("html_inline","",0);return t.content="</label>",t}(t))}e.exports=function(e,t){t&&(r=!t.enabled,n=!!t.label,o=!!t.labelAfter),e.core.ruler.after("inline","github-task-lists",(function(e){for(var t=e.tokens,n=2;n<t.length;n++)s(t,n)&&(l(t[n],e.Token),i(t[n-2],"class","task-list-item"+(r?"":" enabled")),i(t[a(t,n-2)],"class","contains-task-list"))}))}},function(e,t,r){"use strict";e.exports=function(e,t,r){var n=(r=r||{}).marker||":",o=n.charCodeAt(0),i=n.length,a=r.validate||function(e){return e.trim().split(" ",2)[0]===t},s=r.render||function(e,r,n,o,i){return 1===e[r].nesting&&e[r].attrPush(["class",t]),i.renderToken(e,r,n,o,i)};e.block.ruler.before("fence","container_"+t,(function(e,r,s,l){var c,u,p,d,h,f,_,m,g=!1,b=e.bMarks[r]+e.tShift[r],v=e.eMarks[r];if(o!==e.src.charCodeAt(b))return!1;for(c=b+1;c<=v&&n[(c-b)%i]===e.src[c];c++);if((p=Math.floor((c-b)/i))<3)return!1;if(c-=(c-b)%i,d=e.src.slice(b,c),h=e.src.slice(c,v),!a(h))return!1;if(l)return!0;for(u=r;!(++u>=s)&&!((b=e.bMarks[u]+e.tShift[u])<(v=e.eMarks[u])&&e.sCount[u]<e.blkIndent);)if(o===e.src.charCodeAt(b)&&!(e.sCount[u]-e.blkIndent>=4)){for(c=b+1;c<=v&&n[(c-b)%i]===e.src[c];c++);if(!(Math.floor((c-b)/i)<p||(c-=(c-b)%i,(c=e.skipSpaces(c))<v))){g=!0;break}}return _=e.parentType,m=e.lineMax,e.parentType="container",e.lineMax=u,(f=e.push("container_"+t+"_open","div",1)).markup=d,f.block=!0,f.info=h,f.map=[r,u],e.md.block.tokenize(e,r+1,u),(f=e.push("container_"+t+"_close","div",-1)).markup=e.src.slice(b,c),f.block=!0,e.parentType=_,e.lineMax=m,e.line=u+(g?1:0),!0}),{alt:["paragraph","reference","blockquote","list"]}),e.renderer.rules["container_"+t+"_open"]=s,e.renderer.rules["container_"+t+"_close"]=s}},function(e,t,r){"use strict";e.exports=function(e){var t,r=/^@\[toc\](?:\((?:\s+)?([^\)]+)(?:\s+)?\)?)?(?:\s+?)?$/im;var n=function(e){return e.replace(/[^\w\s]/gi,"").split(" ").join("_")};e.renderer.rules.heading_open=function(e,t){var r=e[t].tag,o=e[t+1];return"inline"===o.type?"<"+r+'><a id="'+(n(o.content)+"_"+o.map[0])+'"></a>':"</h1>"},e.renderer.rules.toc_open=function(e,t){return""},e.renderer.rules.toc_close=function(e,t){return""},e.renderer.rules.toc_body=function(e,r){for(var o=[],i=t.tokens,a=i.length,s=0;s<a;s++)if("heading_close"===i[s].type){var l=i[s],c=i[s-1];"inline"===c.type&&o.push({level:+l.tag.substr(1,1),anchor:n(c.content)+"_"+c.map[0],content:c.content})}var u=0,p=o.map((function(e){var t=[];if(e.level>u)for(var r=e.level-u,n=0;n<r;n++)t.push("<ul>"),u++;else if(e.level<u)for(r=u-e.level,n=0;n<r;n++)t.push("</ul>"),u--;return(t=t.concat(['<li><a href="#',e.anchor,'">',e.content,"</a></li>"])).join("")}));return"<h3>"+e[r].content+"</h3>"+p.join("")+new Array(u+1).join("</ul>")},e.core.ruler.push("grab_state",(function(e){t=e})),e.inline.ruler.after("emphasis","toc",(function(e,t){for(;e.src.indexOf("\n")>=0&&e.src.indexOf("\n")<e.src.indexOf("@[toc]");)"softbreak"===e.tokens.slice(-1)[0].type&&(e.src=e.src.split("\n").slice(1).join("\n"),e.pos=0);var n;if(64!==e.src.charCodeAt(e.pos))return!1;if(91!==e.src.charCodeAt(e.pos+1))return!1;var o=r.exec(e.src);if(!o)return!1;if((o=o.filter((function(e){return e}))).length<1)return!1;if(t)return!1;(n=e.push("toc_open","toc",1)).markup="@[toc]",n=e.push("toc_body","",0);var i="Table of Contents";o.length>1&&(i=o.pop()),n.content=i,n=e.push("toc_close","toc",-1);var a=0,s=e.src.indexOf("\n");return a=-1!==s?e.pos+s:e.pos+e.posMax+1,e.pos=a,!0}))}},function(e,t){e.exports=function(e,t){void 0===(t=t||{}).highlighted&&(t.highlighted=!0),void 0===t.hljs&&(t.hljs="auto"),"function"!=typeof t.langCheck&&(t.langCheck=function(){}),e.options.highlight=function(r,n){var o=t.hljs;if("auto"===t.hljs&&(o=window.hljs),t.highlighted&&n&&o){if(o.getLanguage(n))return'<pre><div class="hljs"><code class="'+e.options.langPrefix+n+'">'+o.highlight(n,r,!0).value+"</code></div></pre>";"function"==typeof t.langCheck&&t.langCheck(n)}return'<pre><code class="'+e.options.langPrefix+n+'">'+e.utils.escapeHtml(r)+"</code></pre>"}}},function(e,t,r){"use strict";
+/**
+ * @Author: chenhuachao <chc>
+ * @Date:   2017-11-26T15:57:48+08:00
+ * @Email:  chenhuachaoxyz@gmail.com
+ * @Filename: index.js
+ * @Last modified by:   chc
+ * @Last modified time: 2017-11-26T16:00:49+08:00
+ * @License: MIT
+ * @Copyright: 2017
+ */var n=null;function o(e,t){var r,n,o=e.posMax,i=!0,a=!0;return r=t>0?e.src.charCodeAt(t-1):-1,n=t+1<=o?e.src.charCodeAt(t+1):-1,(32===r||9===r||n>=48&&n<=57)&&(a=!1),32!==n&&9!==n||(i=!1),{can_open:i,can_close:a}}function i(e,t){if(!n&&window.katex&&(n=window.katex),!n)return!1;var r,i,a,s;if("$"!==e.src[e.pos])return!1;if(!o(e,e.pos).can_open)return t||(e.pending+="$"),e.pos+=1,!0;for(i=r=e.pos+1;-1!==(i=e.src.indexOf("$",i));){for(s=i-1;"\\"===e.src[s];)s-=1;if((i-s)%2==1)break;i+=1}return-1===i?(t||(e.pending+="$"),e.pos=r,!0):i-r==0?(t||(e.pending+="$$"),e.pos=r+1,!0):o(e,i).can_close?(t||((a=e.push("math_inline","math",0)).markup="$",a.content=e.src.slice(r,i)),e.pos=i+1,!0):(t||(e.pending+="$"),e.pos=r,!0)}function a(e,t,r,o){if(!n&&window.katex&&(n=window.katex),!n)return!1;var i,a,s,l,c,u=!1,p=e.bMarks[t]+e.tShift[t],d=e.eMarks[t];if(p+2>d)return!1;if("$$"!==e.src.slice(p,p+2))return!1;if(p+=2,i=e.src.slice(p,d),o)return!0;for("$$"===i.trim().slice(-2)&&(i=i.trim().slice(0,-2),u=!0),s=t;!u&&!(++s>=r)&&!((p=e.bMarks[s]+e.tShift[s])<(d=e.eMarks[s])&&e.tShift[s]<e.blkIndent);)"$$"===e.src.slice(p,d).trim().slice(-2)&&(l=e.src.slice(0,d).lastIndexOf("$$"),a=e.src.slice(p,l),u=!0);return e.line=s+1,(c=e.push("math_block","math",0)).block=!0,c.content=(i&&i.trim()?i+"\n":"")+e.getLines(t+1,s,e.tShift[t],!0)+(a&&a.trim()?a:""),c.map=[t,e.line],c.markup="$$",!0}e.exports=function(e,t){t=t||{};e.inline.ruler.after("escape","math_inline",i),e.block.ruler.after("blockquote","math_block",a,{alt:["paragraph","reference","blockquote","list"]}),e.renderer.rules.math_inline=function(e,r){return function(e){!n&&window.katex&&(n=window.katex),t.displayMode=!1;try{return n.renderToString(e,t)}catch(r){return t.throwOnError&&console.log(r),e}}(e[r].content)},e.renderer.rules.math_block=function(e,r){return function(e){!n&&window.katex&&(n=window.katex),t.displayMode=!0;try{return"<p>"+n.renderToString(e,t)+"</p>"}catch(r){return t.throwOnError&&console.log(r),e}}(e[r].content)+"\n"}}},function(e,t){
+/**
+ * @Author: HuaChao Chen <chc>
+ * @Date:   2017-06-12T21:06:58+08:00
+ * @Email:  chenhuachaoxyz@gmail.com
+ * @Filename: index.js
+ * @Last modified by:   chc
+ * @Last modified time: 2017-06-12T21:18:15+08:00
+ * @License: MIT
+ * @Copyright: 2017
+ */
+e.exports=function(e,t){e.image_add=function(t,r){e.__image instanceof Object||(e.__image={}),e.__image[t]=r},e.image_del=function(t){e.__image instanceof Object||(e.__image={}),delete e.__image[t]};var r=e.renderer.rules.image;e.renderer.rules.image=function(t,n,o,i,a){var s=t[n].attrs;if(e.__image instanceof Object)for(var l=0;l<s.length;l++)if("src"==s[l][0]&&e.__image.hasOwnProperty(t[n].attrs[l][1])){s.push(["rel",s[l][1]]),s[l][1]=e.__image[t[n].attrs[l][1]];break}return r(t,n,o,i,a)}}},function(e,t,r){"use strict";r(71)},function(e,t,r){(t=r(43)(!1)).push([e.i,".op-icon.dropdown-wrapper.dropdown[data-v-218640b4]{position:relative}.op-icon.dropdown-wrapper.dropdown[type=button][data-v-218640b4]{-webkit-appearance:unset}.op-icon.dropdown-wrapper.dropdown .popup-dropdown[data-v-218640b4]{position:absolute;display:block;background:#fff;top:32px;left:-45px;min-width:130px;z-index:1600;border:1px solid #ebeef5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,0.1)}.op-icon.dropdown-wrapper.dropdown .popup-dropdown .dropdown-item[data-v-218640b4]:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.op-icon.dropdown-wrapper.dropdown .popup-dropdown .dropdown-item[data-v-218640b4]:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.op-icon.dropdown-wrapper.dropdown .popup-dropdown.op-header[data-v-218640b4]{left:-30px;min-width:90px}.op-icon.dropdown-wrapper.dropdown .popup-dropdown.fade-enter-active[data-v-218640b4],.op-icon.dropdown-wrapper.dropdown .popup-dropdown.fade-leave-active[data-v-218640b4]{opacity:1}.op-icon.dropdown-wrapper.dropdown .popup-dropdown.fade-enter[data-v-218640b4],.op-icon.dropdown-wrapper.dropdown .popup-dropdown.fade-leave-active[data-v-218640b4]{opacity:0}.op-icon.dropdown-wrapper.dropdown .popup-dropdown.transition[data-v-218640b4],.op-icon.dropdown-wrapper.dropdown .popup-dropdown.transition .dropdown-item[data-v-218640b4]{transition:all .2s linear 0s}.op-icon.dropdown-wrapper.dropdown .dropdown-item[data-v-218640b4]{height:40px;line-height:40px;font-size:14px;color:#606266;position:relative}.op-icon.dropdown-wrapper.dropdown .dropdown-item[data-v-218640b4]:hover{color:#303133;background-color:#e9e9eb}.op-icon.dropdown-wrapper.dropdown .dropdown-item input[data-v-218640b4]{position:absolute;font-size:100px;right:0;top:0;opacity:0;cursor:pointer}.op-icon.dropdown-wrapper.dropdown .dropdown-images[data-v-218640b4]{box-sizing:border-box}.op-icon.dropdown-wrapper.dropdown .dropdown-images button[data-v-218640b4]{position:absolute;top:-1px;right:5px;font-size:14px}.op-icon.dropdown-wrapper.dropdown .dropdown-images button[data-v-218640b4]:hover{color:#f56c6c;background-color:transparent}.op-icon.dropdown-wrapper.dropdown .dropdown-images span[data-v-218640b4]{display:inline-block;width:80px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.op-icon.dropdown-wrapper.dropdown .dropdown-images:hover .image-show[data-v-218640b4]{display:block !important}.op-icon.dropdown-wrapper.dropdown .dropdown-images .image-show[data-v-218640b4]{display:none;position:absolute;left:-128px;top:0;width:120px;height:90px;object-fit:contain;border:1px solid #f2f6fc}.op-icon.dropdown-wrapper.dropdown .dropdown-images .image-show.transition[data-v-218640b4]{transition:all .2s linear 0s}.op-icon.dropdown-wrapper.dropdown .dropdown-images.transition[data-v-218640b4]{transition:all .2s linear 0s}.add-image-link-wrapper[data-v-218640b4]{position:fixed;left:0;right:0;top:0;bottom:0;background:rgba(0,0,0,0.7);z-index:1600;transition:all .1s linear 0s}.add-image-link-wrapper.fade-enter-active[data-v-218640b4],.add-image-link-wrapper.fade-leave-active[data-v-218640b4]{opacity:1}.add-image-link-wrapper.fade-enter[data-v-218640b4],.add-image-link-wrapper.fade-leave-active[data-v-218640b4]{opacity:0}.add-image-link-wrapper .add-image-link[data-v-218640b4]{position:fixed;box-sizing:border-box;text-align:center;width:24%;left:38%;height:auto;padding:40px;top:25%;transition:all .1s linear 0s;z-index:3;background:#fff;border-radius:2px}@media only screen and (max-width:1500px){.add-image-link-wrapper .add-image-link[data-v-218640b4]{width:34%;left:33%}}@media only screen and (max-width:1000px){.add-image-link-wrapper .add-image-link[data-v-218640b4]{width:50%;left:25%}}@media only screen and (max-width:600px){.add-image-link-wrapper .add-image-link[data-v-218640b4]{width:80%;left:10%}}.add-image-link-wrapper .add-image-link i[data-v-218640b4]{font-size:24px;position:absolute;right:8px;top:6px;color:rgba(0,0,0,0.7);cursor:pointer}.add-image-link-wrapper .add-image-link .title[data-v-218640b4]{font-size:20px;margin-bottom:30px;margin-top:10px;font-weight:500 !important}.add-image-link-wrapper .add-image-link .input-wrapper[data-v-218640b4]{margin-top:10px;width:80%;border:1px solid #eeece8;text-align:left;margin-left:10%;height:35px}.add-image-link-wrapper .add-image-link .input-wrapper input[data-v-218640b4]{height:32px;line-height:32px;font-size:15px;width:90%;margin-left:8px;border:none;outline:none}.add-image-link-wrapper .add-image-link .op-btn[data-v-218640b4]{width:100px;height:35px;display:inline-block;margin-top:30px;cursor:pointer;text-align:center;line-height:35px;opacity:.9;border-radius:2px;letter-spacing:1px;font-size:15px}.add-image-link-wrapper .add-image-link .op-btn.sure[data-v-218640b4]{background:#2185d0;color:#fff;margin-left:5%}.add-image-link-wrapper .add-image-link .op-btn.sure[data-v-218640b4]:hover{opacity:1}.add-image-link-wrapper .add-image-link .op-btn.cancel[data-v-218640b4]{border:1px solid #bcbcbc;color:#bcbcbc}.add-image-link-wrapper .add-image-link .op-btn.cancel[data-v-218640b4]:hover{color:#000}",""]),e.exports=t},function(e,t,r){"use strict";r.r(t);var n=r(78),o=r(24);for(var i in o)["default"].indexOf(i)<0&&function(e){r.d(t,e,(function(){return o[e]}))}(i);r(217);var a=r(3);const s=r.n(a)()(o.default,[["render",n.a]]);t.default=s},function(e,t,r){"use strict";r(73)},function(e,t,r){(t=r(43)(!1)).push([e.i,'.auto-textarea-wrapper{position:relative;width:100%;margin:0;padding:0;line-height:normal}.auto-textarea-wrapper .auto-textarea-block{display:block;white-space:pre-wrap;word-wrap:break-word !important;visibility:hidden;overflow:hidden;margin:0;padding:0;box-sizing:border-box;font-size:100%}.auto-textarea-wrapper .auto-textarea-input{font-family:Menlo,"Ubuntu Mono",Consolas,"Courier New","Microsoft Yahei","Hiragino Sans GB","WenQuanYi Micro Hei",sans-serif;position:absolute;width:100%;height:100%;top:0;left:0;margin:0;padding:0;overflow-y:hidden;color:#2c3e50}.auto-textarea-wrapper .auto-textarea-input.no-border{outline:0 none;border:none !important}.auto-textarea-wrapper .auto-textarea-input.no-resize{resize:none}',""]),e.exports=t},function(e,t,r){"use strict";r(74)},function(e,t,r){(t=r(43)(!1)).push([e.i,"textarea:disabled{background-color:#fff}.v-note-wrapper{position:relative;min-width:300px;min-height:300px;display:flex;flex-direction:column;background-color:#fff;z-index:1500;text-align:left;border:1px solid #f2f6fc;border-radius:4px}.v-note-wrapper.fullscreen{position:fixed;left:0;right:0;bottom:0;top:0;margin:0;height:auto;z-index:1501}.v-note-wrapper .v-note-op{padding:1px;width:100%;display:flex;white-space:pre-line;flex:none;min-height:40px;user-select:none;border-bottom:1px solid #f2f6fc;border-radius:4px 4px 0 0;background-color:#fff;z-index:1}.v-note-wrapper .v-note-op .v-left-item,.v-note-wrapper .v-note-op .v-right-item{flex:1;min-height:40px;box-sizing:border-box}.v-note-wrapper .v-note-op .v-left-item .op-icon-divider,.v-note-wrapper .v-note-op .v-right-item .op-icon-divider{height:40px;border-left:1px solid #e5e5e5;margin:0 6px 0 4px}.v-note-wrapper .v-note-op .v-left-item .op-icon,.v-note-wrapper .v-note-op .v-right-item .op-icon{box-sizing:border-box;display:inline-block;cursor:pointer;height:28px;width:28px;margin:6px 0 5px 0;font-size:14px;padding:4.5px 6px 5px 3.5px;color:#757575;border-radius:5px;text-align:center;background:none;border:none;outline:none;line-height:1}.v-note-wrapper .v-note-op .v-left-item .op-icon.dropdown-wrapper,.v-note-wrapper .v-note-op .v-right-item .op-icon.dropdown-wrapper{line-height:18px}.v-note-wrapper .v-note-op .v-left-item .op-icon.selected,.v-note-wrapper .v-note-op .v-right-item .op-icon.selected{color:rgba(0,0,0,0.8);background:#eaeaea}.v-note-wrapper .v-note-op .v-left-item .op-icon:hover,.v-note-wrapper .v-note-op .v-right-item .op-icon:hover{color:rgba(0,0,0,0.8);background:#e9e9eb}.v-note-wrapper .v-note-op .v-left-item.transition .op-icon,.v-note-wrapper .v-note-op .v-right-item.transition .op-icon{transition:all .2s linear 0s}.v-note-wrapper .v-note-op .v-right-item{text-align:right;padding-right:6px;max-width:30%}.v-note-wrapper .v-note-op .v-left-item{text-align:left;padding-left:6px}.v-note-wrapper .v-note-panel{position:relative;border-top:none;display:flex;flex:1;width:100%;box-sizing:border-box;overflow:hidden}.v-note-wrapper .v-note-panel .v-note-edit.divarea-wrapper{flex:0 0 50%;width:50%;padding:0;overflow-y:scroll;overflow-x:hidden;box-sizing:border-box;cursor:text;border-bottom-left-radius:4px}.v-note-wrapper .v-note-panel .v-note-edit.divarea-wrapper.scroll-style::-webkit-scrollbar{width:6px;background-color:#e5e5e5}.v-note-wrapper .v-note-panel .v-note-edit.divarea-wrapper.scroll-style::-webkit-scrollbar-thumb{background-color:#b7b7b7;border-radius:4px}.v-note-wrapper .v-note-panel .v-note-edit.divarea-wrapper.scroll-style::-webkit-scrollbar-thumb:hover{background-color:#a1a1a1}.v-note-wrapper .v-note-panel .v-note-edit.divarea-wrapper.scroll-style::-webkit-scrollbar-thumb:active{background-color:#a1a1a1}.v-note-wrapper .v-note-panel .v-note-edit.divarea-wrapper.scroll-style::-webkit-scrollbar-track{-webkit-box-shadow:0 0 0 #808080 inset}.v-note-wrapper .v-note-panel .v-note-edit.divarea-wrapper.scroll-style-border-radius::-webkit-scrollbar{border-bottom-right-radius:4px}.v-note-wrapper .v-note-panel .v-note-edit.divarea-wrapper.transition{transition:all .2s linear 0s}.v-note-wrapper .v-note-panel .v-note-edit.divarea-wrapper.single-edit{width:100%;flex:0 0 100%;overflow-y:auto}.v-note-wrapper .v-note-panel .v-note-edit.divarea-wrapper.single-show{width:0;flex:0 0 0;display:none}.v-note-wrapper .v-note-panel .v-note-edit.divarea-wrapper .content-div{width:100%;padding:20px 25px;box-sizing:border-box;outline:0 none;border:none !important;color:#2c3e50;font-size:16px}.v-note-wrapper .v-note-panel .v-note-edit.divarea-wrapper .content-input-wrapper{width:100%;padding:8px 25px 15px 25px}.v-note-wrapper .v-note-panel .v-note-show{flex:0 0 50%;width:50%;overflow-y:auto;padding:0 0;transition:all .2s linear 0s}.v-note-wrapper .v-note-panel .v-note-show.single-show{flex:0 0 100%;width:100%}.v-note-wrapper .v-note-panel .v-note-show .v-show-content,.v-note-wrapper .v-note-panel .v-note-show .v-show-content-html{width:100%;height:100%;padding:8px 25px 15px 25px;overflow-y:auto;box-sizing:border-box;overflow-x:hidden}.v-note-wrapper .v-note-panel .v-note-show .v-show-content.scroll-style::-webkit-scrollbar,.v-note-wrapper .v-note-panel .v-note-show .v-show-content-html.scroll-style::-webkit-scrollbar{width:6px;background-color:#e5e5e5}.v-note-wrapper .v-note-panel .v-note-show .v-show-content.scroll-style::-webkit-scrollbar-thumb,.v-note-wrapper .v-note-panel .v-note-show .v-show-content-html.scroll-style::-webkit-scrollbar-thumb{background-color:#b7b7b7;border-radius:4px}.v-note-wrapper .v-note-panel .v-note-show .v-show-content.scroll-style::-webkit-scrollbar-thumb:hover,.v-note-wrapper .v-note-panel .v-note-show .v-show-content-html.scroll-style::-webkit-scrollbar-thumb:hover{background-color:#a1a1a1}.v-note-wrapper .v-note-panel .v-note-show .v-show-content.scroll-style::-webkit-scrollbar-thumb:active,.v-note-wrapper .v-note-panel .v-note-show .v-show-content-html.scroll-style::-webkit-scrollbar-thumb:active{background-color:#a1a1a1}.v-note-wrapper .v-note-panel .v-note-show .v-show-content.scroll-style::-webkit-scrollbar-track,.v-note-wrapper .v-note-panel .v-note-show .v-show-content-html.scroll-style::-webkit-scrollbar-track{-webkit-box-shadow:0 0 0 #808080 inset}.v-note-wrapper .v-note-panel .v-note-show .v-show-content.scroll-style-border-radius::-webkit-scrollbar,.v-note-wrapper .v-note-panel .v-note-show .v-show-content-html.scroll-style-border-radius::-webkit-scrollbar{border-bottom-right-radius:4px}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper{display:flex;position:absolute;width:250px;right:0;top:0;bottom:0;height:100%;flex-direction:column;background-color:rgba(255,255,255,0.98);border-left:1px solid #f2f6fc;border-right:1px solid #f2f6fc}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper.transition{transition:all .1s linear 0s}@media only screen and (max-width:768px){.v-note-wrapper .v-note-panel .v-note-navigation-wrapper{width:50%}}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper.slideTop-enter-active,.v-note-wrapper .v-note-panel .v-note-navigation-wrapper.slideTop-leave-active{height:100%}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper.slideTop-enter,.v-note-wrapper .v-note-panel .v-note-navigation-wrapper.slideTop-leave-active{height:0}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-title{height:50px;width:100%;border-bottom:1px solid #f2f6fc;flex:none;line-height:50px;font-size:16px;box-sizing:border-box;padding:0 12px 0 18px}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-title .v-note-navigation-close{float:right;color:#606266;font-size:18px;cursor:pointer}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-title .v-note-navigation-close:hover{color:#303133}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content{overflow-y:auto;flex:1;padding:8px 0}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content.scroll-style::-webkit-scrollbar{width:6px;background-color:#e5e5e5}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content.scroll-style::-webkit-scrollbar-thumb{background-color:#b7b7b7;border-radius:4px}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content.scroll-style::-webkit-scrollbar-thumb:hover{background-color:#a1a1a1}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content.scroll-style::-webkit-scrollbar-thumb:active{background-color:#a1a1a1}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content.scroll-style::-webkit-scrollbar-track{-webkit-box-shadow:0 0 0 #808080 inset}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content.scroll-style-border-radius::-webkit-scrollbar{border-bottom-right-radius:4px}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h1,.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h2,.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h3,.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h4,.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h5,.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h6{margin:2px 0;font-weight:500;font-size:17px;color:#2185d0;cursor:pointer;line-height:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 12px;border-bottom:none}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h1:hover,.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h2:hover,.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h3:hover,.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h4:hover,.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h5:hover,.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h6:hover{color:#483d8b;text-decoration-line:underline}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h2{padding-left:27px;font-size:17px}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h3{padding-left:42px;font-size:17px}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h4{padding-left:58px;font-size:15px}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h5{padding-left:72px;font-size:15px}.v-note-wrapper .v-note-panel .v-note-navigation-wrapper .v-note-navigation-content h6{padding-left:87px;font-size:15px}.v-note-wrapper .v-note-read-model{position:relative;display:none;width:100%;height:100%;background:#fbfbfb;padding:30px 8% 50px 8%;overflow-y:auto;box-sizing:border-box}.v-note-wrapper .v-note-read-model.scroll-style::-webkit-scrollbar{width:6px;background-color:#e5e5e5}.v-note-wrapper .v-note-read-model.scroll-style::-webkit-scrollbar-thumb{background-color:#b7b7b7;border-radius:4px}.v-note-wrapper .v-note-read-model.scroll-style::-webkit-scrollbar-thumb:hover{background-color:#a1a1a1}.v-note-wrapper .v-note-read-model.scroll-style::-webkit-scrollbar-thumb:active{background-color:#a1a1a1}.v-note-wrapper .v-note-read-model.scroll-style::-webkit-scrollbar-track{-webkit-box-shadow:0 0 0 #808080 inset}.v-note-wrapper .v-note-read-model.scroll-style-border-radius::-webkit-scrollbar{border-bottom-right-radius:4px}.v-note-wrapper .v-note-read-model.show{display:block}.v-note-wrapper.shadow{border:none}.v-note-help-wrapper{position:fixed;left:0;right:0;top:0;bottom:0;background:rgba(0,0,0,0.7);z-index:1600;transition:all .1s linear 0s}.v-note-help-wrapper.fade-enter-active,.v-note-help-wrapper.fade-leave-active{opacity:1}.v-note-help-wrapper.fade-enter,.v-note-help-wrapper.fade-leave-active{opacity:0}.v-note-help-wrapper .v-note-help-content{position:relative;width:60%;max-width:800px;margin:30px auto;height:90%;min-width:320px;transition:all .1s linear 0s;z-index:3;border:1px solid #f2f6fc}.v-note-help-wrapper .v-note-help-content.shadow{border:none;box-shadow:0 0 5px rgba(0,0,0,0.157),0 0 5px rgba(0,0,0,0.227)}.v-note-help-wrapper .v-note-help-content i{font-size:28px;position:absolute;right:15px;top:8px;color:rgba(0,0,0,0.7);cursor:pointer}.v-note-help-wrapper .v-note-help-content i:hover{color:#000}.v-note-help-wrapper .v-note-help-content .v-note-help-show{width:100%;height:100%;font-size:18px;background:#fbfbfb;overflow-y:auto;padding:2% 6%}.v-note-help-wrapper .v-note-help-content .v-note-help-show.scroll-style::-webkit-scrollbar{width:6px;background-color:#e5e5e5}.v-note-help-wrapper .v-note-help-content .v-note-help-show.scroll-style::-webkit-scrollbar-thumb{background-color:#b7b7b7;border-radius:4px}.v-note-help-wrapper .v-note-help-content .v-note-help-show.scroll-style::-webkit-scrollbar-thumb:hover{background-color:#a1a1a1}.v-note-help-wrapper .v-note-help-content .v-note-help-show.scroll-style::-webkit-scrollbar-thumb:active{background-color:#a1a1a1}.v-note-help-wrapper .v-note-help-content .v-note-help-show.scroll-style::-webkit-scrollbar-track{-webkit-box-shadow:0 0 0 #808080 inset}.v-note-help-wrapper .v-note-help-content .v-note-help-show.scroll-style-border-radius::-webkit-scrollbar{border-bottom-right-radius:4px}.v-note-img-wrapper{position:fixed;display:flex;justify-content:center;align-items:center;left:0;right:0;top:0;bottom:0;background:rgba(0,0,0,0.7);z-index:1600;transition:all .1s linear 0s}.v-note-img-wrapper.fade-enter-active,.v-note-img-wrapper.fade-leave-active{opacity:1}.v-note-img-wrapper.fade-enter,.v-note-img-wrapper.fade-leave-active{opacity:0}.v-note-img-wrapper img{flex:0 0 auto;z-index:3}.v-note-img-wrapper i{font-size:28px;position:absolute;right:15px;top:8px;color:rgba(255,255,255,0.7);cursor:pointer}.v-note-img-wrapper i:hover{color:#fff}",""]),e.exports=t},function(e,t,r){"use strict";r(233)},function(e,t){},,,,,,,,,function(e,t){},,function(e,t){}])}));
\ No newline at end of file
diff --git a/node_modules/mavon-editor/mavon-editor.d.ts b/node_modules/mavon-editor/mavon-editor.d.ts
new file mode 100644
index 0000000..84d03ab
--- /dev/null
+++ b/node_modules/mavon-editor/mavon-editor.d.ts
@@ -0,0 +1,10 @@
+import { Component } from "vue";
+interface VueMavonEditor {
+  markdownIt: any;
+  mavonEditor: Component;
+  LeftToolbar: Component;
+  RightToolbar: Component;
+  install: (Vue: any) => any;
+}
+declare let editor: VueMavonEditor;
+export default editor;
diff --git a/node_modules/mavon-editor/package.json b/node_modules/mavon-editor/package.json
new file mode 100644
index 0000000..bb638d4
--- /dev/null
+++ b/node_modules/mavon-editor/package.json
@@ -0,0 +1,128 @@
+{
+  "name": "mavon-editor",
+  "version": "3.0.1",
+  "description": "Vue-next markdown editor",
+  "main": "dist/mavon-editor.js",
+  "types": "./mavon-editor.d.ts",
+  "scripts": {
+    "dev": "webpack-dev-server --open --progress --config webpack/webpack.dev.js",
+    "ci-build": "webpack --progress --config webpack/webpack.build.js",
+    "build": "run-s lint ci-build",
+    "test": "jest",
+    "test:coverage": "jest --coverage",
+    "lint": "eslint --ext .js,.vue src/",
+    "lint:fix": "eslint --fix --ext .js,.vue src/"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/hinesboy/mavonEditor.git"
+  },
+  "keywords": [
+    "javascript",
+    "vue",
+    "markdown",
+    "editor",
+    "html"
+  ],
+  "files": [
+    "dist",
+    "mavon-editor.d.ts",
+    "src"
+  ],
+  "author": "hinesboy",
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/hinesboy/mavonEditor/issues"
+  },
+  "homepage": "https://github.com/hinesboy/mavonEditor/tree/next",
+  "dependencies": {
+    "xss": "^1.0.10"
+  },
+  "devDependencies": {
+    "@vue/compiler-sfc": "^3.1.1",
+    "@vue/test-utils": "^1.1.2",
+    "auto-textarea": "^1.4.0",
+    "autoprefixer": "^8.3.0",
+    "babel-core": "^6.0.0",
+    "babel-eslint": "^8.0.2",
+    "babel-jest": "^23.6.0",
+    "babel-loader": "^7.0.0",
+    "babel-plugin-transform-runtime": "^6.23.0",
+    "babel-polyfill": "^6.26.0",
+    "babel-preset-env": "^1.6.0",
+    "babel-preset-stage-2": "^6.24.1",
+    "copy-webpack-plugin": "^4.2.3",
+    "css-loader": "^3.1.0",
+    "eslint": "^4.11.0",
+    "eslint-config-standard": "^10.2.1",
+    "eslint-plugin-html": "^4.0.0",
+    "eslint-plugin-import": "^2.8.0",
+    "eslint-plugin-node": "^5.2.1",
+    "eslint-plugin-promise": "^3.6.0",
+    "eslint-plugin-standard": "^3.0.1",
+    "extract-text-webpack-plugin": "^4.0.0-beta.0",
+    "file-loader": "^1",
+    "github-markdown-css": "^2.6.0",
+    "html-loader": "^1.3.2",
+    "html-webpack-plugin": "^4.5.2",
+    "identity-obj-proxy": "^3.0.0",
+    "jest": "^23.6.0",
+    "jest-raw-loader": "^1.0.1",
+    "jest-serializer-vue": "^2.0.2",
+    "katex": "^0.11.1",
+    "keycode": "^2.1.9",
+    "less": "^3.5.0",
+    "less-loader": "^7",
+    "markdown-it": "^10.0.0",
+    "markdown-it-abbr": "^1.0.4",
+    "markdown-it-container": "^2.0.0",
+    "markdown-it-deflist": "^2.0.0",
+    "markdown-it-emoji": "^1.1.1",
+    "markdown-it-footnote": "^3.0.1",
+    "markdown-it-for-inline": "~0.1.0",
+    "markdown-it-highlightjs-external": "^1.0.1",
+    "markdown-it-images-preview": "^1.0.0",
+    "markdown-it-ins": "^2.0.0",
+    "markdown-it-katex-external": "^1.0.0",
+    "markdown-it-mark": "^2.0.0",
+    "markdown-it-sub": "^1.0.0",
+    "markdown-it-sup": "^1.0.0",
+    "markdown-it-task-lists": "^2.1.1",
+    "markdown-it-toc": "^1.1.0",
+    "merges-utils": "^1.0.2",
+    "npm-run-all": "^4.1.5",
+    "optimize-css-assets-webpack-plugin": "^1.3.1",
+    "postcss": "^8.3.6",
+    "postcss-advanced-variables": "1.2.2",
+    "postcss-atroot": "^0.1.2",
+    "postcss-color-function": "^3.0.0",
+    "postcss-custom-media": "^5.0.0",
+    "postcss-custom-properties": "^5.0.0",
+    "postcss-custom-selectors": "^3.0.0",
+    "postcss-extend": "^1.0.1",
+    "postcss-loader": "^4",
+    "postcss-media-minmax": "^2.1.0",
+    "postcss-mixins": "^5.4.1",
+    "postcss-nested": "^1.0.0",
+    "postcss-nested-import": "^0.1.0",
+    "postcss-nesting": "^2.0.6",
+    "postcss-partial-import": "^3.1.1",
+    "postcss-property-lookup": "^1.1.3",
+    "postcss-selector-matches": "^2.0.0",
+    "postcss-selector-not": "^2.0.0",
+    "raw-loader": "^0.5.1",
+    "style-loader": "2",
+    "stylus": "^0.54.8",
+    "stylus-loader": "^4",
+    "url-loader": "^1",
+    "vue": "^3.1.1",
+    "vue-jest": "^3.0.7",
+    "vue-loader": "16",
+    "vue-style-loader": "^4.1.3",
+    "webpack": "^4.36.1",
+    "webpack-bundle-analyzer": "^3.3.2",
+    "webpack-cli": "^3.3.6",
+    "webpack-dev-server": "^3",
+    "webpack-md5-hash": "^0.0.5"
+  }
+}
diff --git a/node_modules/mavon-editor/src/components/auto-textarea.vue b/node_modules/mavon-editor/src/components/auto-textarea.vue
new file mode 100644
index 0000000..5e63ab1
--- /dev/null
+++ b/node_modules/mavon-editor/src/components/auto-textarea.vue
@@ -0,0 +1,119 @@
+<template>
+  <div :style="{fontSize: fontSize , lineHeight: lineHeight, height: fullHeight ? '100%': 'auto'}" class="auto-textarea-wrapper">
+    <pre :style="{fontSize: fontSize , lineHeight: lineHeight, minHeight: fullHeight ? '100%': 'auto'}" class="auto-textarea-block"><br/>{{temp_value}} </pre>
+    <textarea ref="vTextarea" :autofocus="s_autofocus" @keyup="change" spellcheck="false"  :placeholder="placeholder" v-model="temp_value"  :style="{fontSize: fontSize , lineHeight: lineHeight}" :class="{'no-border': !border , 'no-resize': !resize}" class="auto-textarea-input">
+      </textarea>
+  </div>
+</template>
+
+<script type="text/ecmascript-6">
+    export default {
+        emits: ["update:modelValue"],
+
+        data() {
+            return {
+                temp_value: (() => {
+                    return this.modelValue;
+                })(),
+                s_autofocus: (() => {
+                    if (this.autofocus) {
+                        return 'autofocus'
+                    }
+                })()
+            };
+        },
+
+        created() {
+        },
+
+        props: {
+            fullHeight: {
+                type: Boolean,
+                default: false
+            },
+            autofocus: {
+                type: Boolean,
+                default: false
+            },
+            modelValue: {
+                type: String,
+                default: ''
+            },
+            placeholder: {
+                type: String,
+                default: ''
+            },
+            border: {
+                type: Boolean,
+                default: false
+            },
+            resize: {
+                type: Boolean,
+                default: false
+            },
+            onchange: {
+                type: Function,
+                default: null
+            },
+            fontSize: {
+                type: String,
+                default: '14px'
+            },
+            lineHeight: {
+                type: String,
+                default: '18px'
+            }
+        },
+
+        methods: {
+            change($event) {
+                if (this.onchange) {
+                    this.onchange(this.temp_value , $event)
+                }
+            }
+        },
+
+        watch: {
+            modelValue: function (val, oldVal) {
+                this.temp_value = val
+            },
+            temp_value: function (val, oldVal) {
+                this.$emit('update:modelValue' , val)
+            }
+        }
+    };
+</script>
+<style lang="stylus" rel="stylesheet/stylus">
+  .auto-textarea-wrapper
+    position relative
+    width 100%
+    margin 0
+    padding 0
+    line-height normal
+    .auto-textarea-block
+      display block
+      white-space pre-wrap
+      word-wrap break-word !important
+      visibility hidden
+      overflow hidden
+      margin 0
+      padding 0
+      box-sizing border-box
+      font-size 100%
+    .auto-textarea-input
+      font-family Menlo, "Ubuntu Mono", Consolas, "Courier New", "Microsoft Yahei", "Hiragino Sans GB", "WenQuanYi Micro Hei", sans-serif
+      position absolute
+      width 100%
+      height 100%
+      top 0
+      left 0
+      margin 0
+      padding 0
+      overflow-y hidden
+      color #2C3E50
+      &.no-border
+        outline 0 none
+        border none !important
+      &.no-resize
+        resize none
+</style>
diff --git a/node_modules/mavon-editor/src/components/md-toolbar-left.vue b/node_modules/mavon-editor/src/components/md-toolbar-left.vue
new file mode 100644
index 0000000..56aeba9
--- /dev/null
+++ b/node_modules/mavon-editor/src/components/md-toolbar-left.vue
@@ -0,0 +1,750 @@
+<template>
+  <div class="v-left-item">
+    <slot name="left-toolbar-before" />
+    <button
+      :disabled="!editable"
+      type="button"
+      v-if="toolbars.bold"
+      @click="$clicks('bold')"
+      class="op-icon fa fa-mavon-bold"
+      aria-hidden="true"
+      :title="`${d_words.tl_bold} (ctrl+b)`"
+    ></button>
+    <button
+      :disabled="!editable"
+      type="button"
+      v-if="toolbars.italic"
+      @click="$clicks('italic')"
+      class="op-icon fa fa-mavon-italic"
+      aria-hidden="true"
+      :title="`${d_words.tl_italic} (ctrl+i)`"
+    ></button>
+    <div
+      :class="{ selected: s_header_dropdown_open }"
+      :disabled="!editable"
+      type="button"
+      v-if="toolbars.header"
+      @mouseleave="$mouseleave_header_dropdown"
+      @mouseenter="$mouseenter_header_dropdown"
+      class="op-icon fa fa-mavon-header dropdown dropdown-wrapper"
+      aria-hidden="true"
+      :title="`${d_words.tl_header} (ctrl+h)`"
+    >
+      <transition name="fade">
+        <div
+          class="op-header popup-dropdown"
+          :class="{ transition: transition }"
+          v-show="s_header_dropdown_open"
+          @mouseenter="$mouseenter_header_dropdown"
+          @mouseleave="$mouseleave_header_dropdown"
+        >
+          <div
+            title="#"
+            class="dropdown-item"
+            @click.stop="$click_header('header1')"
+          >
+            <span>{{ d_words.tl_header_one }}</span>
+          </div>
+          <div
+            title="## "
+            class="dropdown-item"
+            @click.stop="$click_header('header2')"
+          >
+            <span>{{ d_words.tl_header_two }}</span>
+          </div>
+          <div
+            title="### "
+            class="dropdown-item"
+            @click.stop="$click_header('header3')"
+          >
+            <span>{{ d_words.tl_header_three }}</span>
+          </div>
+          <div
+            title="#### "
+            class="dropdown-item"
+            @click.stop="$click_header('header4')"
+          >
+            <span>{{ d_words.tl_header_four }}</span>
+          </div>
+          <div
+            title="##### "
+            class="dropdown-item"
+            @click.stop="$click_header('header5')"
+          >
+            <span>{{ d_words.tl_header_five }}</span>
+          </div>
+          <div
+            title="###### "
+            class="dropdown-item"
+            @click.stop="$click_header('header6')"
+          >
+            <span>{{ d_words.tl_header_six }}</span>
+          </div>
+        </div>
+      </transition>
+    </div>
+    <span
+      v-if="toolbars.header || toolbars.italic || toolbars.bold"
+      class="op-icon-divider"
+    ></span>
+    <button
+      :disabled="!editable"
+      type="button"
+      v-if="toolbars.underline"
+      @click="$clicks('underline')"
+      class="op-icon fa fa-mavon-underline"
+      :title="`${d_words.tl_underline} (ctrl+u)`"
+      aria-hidden="true"
+    ></button>
+    <button
+      :disabled="!editable"
+      type="button"
+      v-if="toolbars.strikethrough"
+      @click="$clicks('strikethrough')"
+      class="op-icon fa fa-mavon-strikethrough"
+      :title="`${d_words.tl_strikethrough} (ctrl+shift+d)`"
+      aria-hidden="true"
+    ></button>
+    <button
+      :disabled="!editable"
+      type="button"
+      v-if="toolbars.mark"
+      @click="$clicks('mark')"
+      class="op-icon fa fa-mavon-thumb-tack"
+      :title="`${d_words.tl_mark} (ctrl+m)`"
+      aria-hidden="true"
+    ></button>
+    <button
+      :disabled="!editable"
+      type="button"
+      v-if="toolbars.superscript"
+      @click="$clicks('superscript')"
+      class="op-icon fa fa-mavon-superscript"
+      aria-hidden="true"
+      :title="`${d_words.tl_superscript} (ctrl+alt+s)`"
+    ></button>
+    <button
+      :disabled="!editable"
+      type="button"
+      v-if="toolbars.subscript"
+      @click="$clicks('subscript')"
+      class="op-icon fa fa-mavon-subscript"
+      aria-hidden="true"
+      :title="`${d_words.tl_subscript} (ctrl+shift+s)`"
+    ></button>
+    <button
+      :disabled="!editable"
+      type="button"
+      v-if="toolbars.alignleft"
+      @click="$clicks('alignleft')"
+      class="op-icon fa fa-mavon-align-left"
+      aria-hidden="true"
+      :title="`${d_words.tl_alignleft} (ctrl+l)`"
+    ></button>
+    <button
+      :disabled="!editable"
+      type="button"
+      v-if="toolbars.aligncenter"
+      @click="$clicks('aligncenter')"
+      class="op-icon fa fa-mavon-align-center"
+      aria-hidden="true"
+      :title="`${d_words.tl_aligncenter} (ctrl+e)`"
+    ></button>
+    <button
+      :disabled="!editable"
+      type="button"
+      v-if="toolbars.alignright"
+      @click="$clicks('alignright')"
+      class="op-icon fa fa-mavon-align-right"
+      aria-hidden="true"
+      :title="`${d_words.tl_alignright} (ctrl+r)`"
+    ></button>
+    <span
+      v-if="
+        toolbars.superscript ||
+        toolbars.subscript ||
+        toolbars.underline ||
+        toolbars.strikethrough ||
+        toolbars.mark
+      "
+      class="op-icon-divider"
+    ></span>
+    <button
+      :disabled="!editable"
+      type="button"
+      v-if="toolbars.quote"
+      @click="$clicks('quote')"
+      class="op-icon fa fa-mavon-quote-left"
+      aria-hidden="true"
+      :title="`${d_words.tl_quote} (ctrl+q)`"
+    ></button>
+    <button
+      :disabled="!editable"
+      type="button"
+      v-if="toolbars.ol"
+      @click="$clicks('ol')"
+      class="op-icon fa fa-mavon-list-ol"
+      aria-hidden="true"
+      :title="`${d_words.tl_ol} (ctrl+o)`"
+    ></button>
+    <button
+      :disabled="!editable"
+      type="button"
+      v-if="toolbars.ul"
+      @click="$clicks('ul')"
+      class="op-icon fa fa-mavon-list-ul"
+      aria-hidden="true"
+      :title="`${d_words.tl_ul} (ctrl+alt+u)`"
+    ></button>
+    <span
+      v-if="toolbars.ul || toolbars.ol || toolbars.quote"
+      class="op-icon-divider"
+    ></span>
+    <button
+      :disabled="!editable"
+      type="button"
+      v-if="toolbars.link"
+      @click.stop="$toggle_imgLinkAdd('link')"
+      class="op-icon fa fa-mavon-link"
+      aria-hidden="true"
+      :title="`${d_words.tl_link} (ctrl+l)`"
+    ></button>
+
+    <div
+      :disabled="!editable"
+      :class="{ selected: s_img_dropdown_open }"
+      type="button"
+      v-if="toolbars.imagelink"
+      @mouseleave="$mouseleave_img_dropdown"
+      @mouseenter="$mouseenter_img_dropdown"
+      class="op-icon fa fa-mavon-picture-o dropdown dropdown-wrapper"
+      aria-hidden="true"
+    >
+      <transition name="fade">
+        <div
+          class="op-image popup-dropdown"
+          :class="{ transition: transition }"
+          v-show="s_img_dropdown_open"
+          @mouseleave="$mouseleave_img_dropdown"
+          @mouseenter="$mouseenter_img_dropdown"
+        >
+          <div
+            class="dropdown-item"
+            @click.stop="$toggle_imgLinkAdd('imagelink')"
+          >
+            <span>{{ d_words.tl_image }}</span>
+          </div>
+          <div class="dropdown-item" style="overflow: hidden">
+            <input
+              type="file"
+              accept="image/gif,image/jpeg,image/jpg,image/png,image/svg"
+              @change="$imgAdd($event)"
+              multiple="multiple"
+            />{{ d_words.tl_upload }}
+          </div>
+
+          <template v-for="(item, index) in img_file" :key="index">
+            <div
+              v-if="item && item[1]"
+              class="dropdown-item dropdown-images"
+              :title="item[1].name"
+              @click.stop="$imgFileListClick(index)"
+            >
+              <span>{{ item[1].name }}</span>
+              <button
+                type="button"
+                @click.stop="$imgDel(index)"
+                class="op-icon fa fa-mavon-times"
+                aria-hidden="true"
+                :title="d_words.tl_upload_remove"
+              ></button>
+
+              <!-- 缩略图展示 -->
+              <img
+                class="image-show"
+                :class="{ transition: transition }"
+                :src="item[1].miniurl"
+                alt="none"
+              />
+            </div>
+          </template>
+        </div>
+      </transition>
+    </div>
+    <button
+      :disabled="!editable"
+      type="button"
+      v-if="toolbars.code"
+      @click="$clicks('code')"
+      class="op-icon fa fa-mavon-code"
+      aria-hidden="true"
+      :title="`${d_words.tl_code} (ctrl+alt+c)`"
+    ></button>
+    <button
+      :disabled="!editable"
+      type="button"
+      v-if="toolbars.table"
+      @click="$clicks('table')"
+      class="op-icon fa fa-mavon-table"
+      aria-hidden="true"
+      :title="`${d_words.tl_table} (ctrl+alt+t)`"
+    ></button>
+    <span
+      v-if="
+        toolbars.link || toolbars.imagelink || toolbars.code || toolbars.table
+      "
+      class="op-icon-divider"
+    ></span>
+    <button
+      type="button"
+      v-if="toolbars.undo"
+      @click="$clicks('undo')"
+      class="op-icon fa fa-mavon-undo"
+      aria-hidden="true"
+      :title="`${d_words.tl_undo} (ctrl+z)`"
+    ></button>
+    <button
+      type="button"
+      v-if="toolbars.redo"
+      @click="$clicks('redo')"
+      class="op-icon fa fa-mavon-repeat"
+      aria-hidden="true"
+      :title="`${d_words.tl_redo} (ctrl+y)`"
+    ></button>
+    <button
+      type="button"
+      v-if="toolbars.trash"
+      @click="$clicks('trash')"
+      class="op-icon fa fa-mavon-trash-o"
+      aria-hidden="true"
+      :title="`${d_words.tl_trash} (ctrl+breakspace)`"
+    ></button>
+    <button
+      type="button"
+      v-if="toolbars.save"
+      @click="$clicks('save')"
+      class="op-icon fa fa-mavon-floppy-o"
+      aria-hidden="true"
+      :title="`${d_words.tl_save} (ctrl+s)`"
+    ></button>
+    <slot name="left-toolbar-after" />
+
+    <!-- 添加image链接 -->
+    <transition name="fade">
+      <div class="add-image-link-wrapper" v-if="s_img_link_open">
+        <div class="add-image-link">
+          <i
+            @click.stop.prevent="s_img_link_open = false"
+            class="fa fa-mavon-times"
+            aria-hidden="true"
+          ></i>
+          <h3 class="title">
+            {{
+              link_type == "link"
+                ? d_words.tl_popup_link_title
+                : d_words.tl_popup_img_link_title
+            }}
+          </h3>
+          <div class="link-text input-wrapper">
+            <input
+              ref="linkTextInput"
+              type="text"
+              v-model="link_text"
+              :placeholder="
+                link_type == 'link'
+                  ? d_words.tl_popup_link_text
+                  : d_words.tl_popup_img_link_text
+              "
+            />
+          </div>
+          <div class="link-addr input-wrapper">
+            <input
+              type="text"
+              v-model="link_addr"
+              :placeholder="
+                link_type == 'link'
+                  ? d_words.tl_popup_link_addr
+                  : d_words.tl_popup_img_link_addr
+              "
+            />
+          </div>
+          <div class="op-btn cancel" @click.stop="s_img_link_open = false">
+            {{ d_words.tl_popup_link_cancel }}
+          </div>
+          <div class="op-btn sure" @click.stop="$imgLinkAdd()">
+            {{ d_words.tl_popup_link_sure }}
+          </div>
+        </div>
+      </div>
+    </transition>
+  </div>
+</template>
+<script type="text/ecmascript-6">
+export default {
+    emits: [
+        "toolbar_left_addlink",
+        "imgTouch",
+        "imgAdd",
+        "imgDel",
+        "imgAdd",
+        "imgAdd",
+        "toolbar_left_click",
+        "toolbar_left_click"
+    ],
+
+    name: 's-md-toolbar-left',
+
+    props: {
+        editable: { // 是否开启编辑
+            type: Boolean,
+            default: true
+        },
+        transition: { // TODO: 是否开启动画过渡
+            type: Boolean,
+            default: true
+        },
+        toolbars: { // 工具栏
+            type: Object,
+            required: true
+        },
+        d_words: {
+            type: Object,
+            required: true
+        },
+        image_filter: {
+            type: Function,
+            default: null
+        }
+    },
+
+    data() {
+        return {
+            // [index, file]
+            img_file: [[0, null]],
+            img_timer: null,
+            header_timer: null,
+            s_img_dropdown_open: false,
+            s_header_dropdown_open: false,
+            s_img_link_open: false,
+            trigger: null,
+            num: 0,
+            link_text: '',
+            link_addr: '',
+            link_type: 'link'
+        }
+    },
+
+    methods: {
+        $imgLinkAdd() {
+            this.$emit('toolbar_left_addlink', this.link_type, this.link_text, this.link_addr);
+            this.s_img_link_open = false;
+        },
+        $toggle_imgLinkAdd(type) {
+            this.link_type = type;
+            this.link_text = this.link_addr = '';
+            this.s_img_link_open = true;
+            this.$nextTick(() => {
+                this.$refs.linkTextInput.focus()
+            })
+            this.s_img_dropdown_open = false;
+        },
+        $imgFileListClick(pos) {
+            this.$emit('imgTouch', this.img_file[pos]);
+        },
+        $changeUrl(index,url) {
+            this.img_file[index][0] = url;
+        },
+        $imgFileAdd($file) {
+            // this.img_file[0][0] = this.num;
+            // this.img_file[0][1] = $file;
+            // this.img_file.unshift([(this.num + 1), null]);
+            // this.num = this.num + 1;
+            this.img_file.push([++this.num, $file])
+            this.$emit('imgAdd', this.num, $file);
+            this.s_img_dropdown_open = false;
+        },
+        $imgFilesAdd($files) {
+            // valid means if the image_filter exist.
+            let valid = (typeof this.image_filter === 'function');
+            for (let i = 0; i < $files.length; i++) {
+                if (valid && this.image_filter($files[i]) === true) {
+                    this.$imgFileAdd($files[i]);
+                } else if (!valid && $files[i].type.match(/^image\//i)) {
+                    this.$imgFileAdd($files[i]);
+                }
+            }
+        },
+        $imgAdd($e) {
+            this.$imgFilesAdd($e.target.files);
+            $e.target.value = ''; // 初始化
+        },
+        $imgDel(pos) {
+            this.$emit('imgDel', this.img_file[pos]);
+           this.img_file.splice(pos, 1);
+           this.num--;
+
+            this.s_img_dropdown_open = false;
+        },
+        isEqualName(filename, pos) {
+            if (this.img_file[pos][1]) {
+                if (this.img_file[pos][1].name === filename || this.img_file[pos][1]._name === filename) {
+                    return true
+                }
+            }
+            return false
+        },
+        $imgDelByFilename(filename) {
+            var pos = 0;
+            while (this.img_file.length > pos) {
+                if (this.img_file[pos][1] === filename || this.isEqualName(filename, pos)) {
+                    this.$imgDel(pos);
+                    return true;
+                }
+                pos += 1;
+            }
+            return false;
+        },
+        $imgAddByFilename(filename, $file) {
+            for (var i = 0; i < this.img_file.length; i++)
+                { if (this.img_file[i][0] === filename) return false; }
+            this.img_file[0][0] = filename;
+            this.img_file[0][1] = $file;
+            this.img_file[0][2] = filename;
+            this.img_file.unshift(['./' + (this.num), null])
+            this.$emit('imgAdd', this.img_file[1][0], $file, false);
+            return true;
+        },
+        $imgAddByUrl(filename, $url) {
+            for (var i = 0; i < this.img_file.length; i++)
+                { if (this.img_file[i][0] === filename) return false; }
+            this.img_file[0][0] = filename;
+            this.img_file[0][1] = $url;
+            this.img_file.unshift(['./' + (this.num), null])
+            return true;
+        },
+        $imgUpdateByFilename(filename, $file) {
+            for (var i = 0; i < this.img_file.length; i++) {
+                if (this.img_file[i][0] === filename || this.isEqualName(filename, i)) {
+                    this.img_file[i][1] = $file;
+                    this.$emit('imgAdd', filename, $file, false);
+                    return true;
+                }
+            }
+            return false;
+        },
+        // 工具栏功能图标click-----------------
+        $mouseenter_img_dropdown() {
+            if (this.editable) {
+                clearTimeout(this.img_timer)
+                this.s_img_dropdown_open = true
+            }
+        },
+        $mouseleave_img_dropdown() {
+            let vm = this
+            this.img_timer = setTimeout(function() {
+                vm.s_img_dropdown_open = false
+            },200)
+        },
+        $mouseenter_header_dropdown() {
+            if (this.editable) {
+                clearTimeout(this.header_timer)
+                this.s_header_dropdown_open = true
+            }
+        },
+        $mouseleave_header_dropdown() {
+            let vm = this
+            this.header_timer = setTimeout(function() {
+                vm.s_header_dropdown_open = false
+            },200)
+        },
+        $clicks(_type) {
+            // 让父节点来绑定事件并
+            if (this.editable) {
+                this.$emit('toolbar_left_click', _type);
+            }
+        },
+        $click_header(_type) {
+            // 让父节点来绑定事件并
+            this.$emit('toolbar_left_click', _type);
+            this.s_header_dropdown_open = false
+        },
+        handleClose(e) {
+            this.s_img_dropdown_open = false;
+        }
+        },
+
+        watch:{
+        s_img_link_open(newVlaue) {
+          // fix issue #644
+          this.$parent.$el.style.zIndex = newVlaue ? 1501 : 1500;
+        }
+    }
+};
+</script>
+<style lang="stylus" scoped>
+    .op-icon.dropdown-wrapper.dropdown
+        position relative
+        &[type=button]
+            -webkit-appearance unset
+        .popup-dropdown
+            position absolute
+            display block
+            background #fff
+            top 32px
+            left -45px
+            min-width 130px
+            z-index 1600
+            border 1px solid #ebeef5
+            border-radius 4px
+            box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1)
+            .dropdown-item:first-child
+                border-top-left-radius 3px
+                border-top-right-radius 3px
+            .dropdown-item:last-child
+                border-bottom-left-radius 3px
+                border-bottom-right-radius 3px
+            &.op-header
+                left -30px
+                min-width 90px
+            &.fade-enter-active, &.fade-leave-active
+                opacity 1
+            &.fade-enter, &.fade-leave-active
+                opacity 0
+            &.transition
+              &, .dropdown-item
+                transition all 0.2s linear 0s
+        .dropdown-item
+            height 40px
+            line-height @height
+            font-size 14px
+            color #606266
+            position relative
+            &:hover
+                color #303133
+                background-color #e9e9eb
+            input
+                position absolute
+                font-size 100px
+                right 0
+                top 0
+                opacity 0
+                cursor pointer
+        .dropdown-images
+            box-sizing border-box
+            button
+                position absolute
+                top -1px
+                right 5px
+                font-size: 14px
+                &:hover
+                    color #F56C6C
+                    background-color: transparent
+            span
+                display inline-block
+                width 80px
+                white-space nowrap
+                overflow hidden
+                text-overflow ellipsis
+            &:hover
+                .image-show
+                    display block !important
+            .image-show
+                display none
+                position absolute
+                left -128px
+                top 0
+                width 120px
+                height 90px
+                object-fit contain
+                border 1px solid #F2F6FC
+                &.transition
+                    transition all 0.2s linear 0s
+            &.transition
+                transition all 0.2s linear 0s
+.add-image-link-wrapper
+    position fixed
+    left 0
+    right 0
+    top 0
+    bottom 0
+    background rgba(0, 0, 0, 0.7)
+    z-index 1600
+    transition all 0.1s linear 0s
+    &.fade-enter-active, &.fade-leave-active
+        opacity 1
+    &.fade-enter, &.fade-leave-active
+        opacity 0
+    .add-image-link
+        position fixed
+        box-sizing border-box
+        text-align center
+        width 24%
+        left 38%
+        @media only screen and (max-width 1500px)
+            width 34%
+            left 33%
+        @media only screen and (max-width 1000px)
+            width 50%
+            left 25%
+        @media only screen and (max-width 600px)
+            width 80%
+            left 10%
+        height auto
+        padding 40px
+        top 25%
+        transition all 0.1s linear 0s
+        z-index 3
+        background #fff
+        border-radius 2px
+
+        i
+            font-size 24px
+            position absolute
+            right 8px
+            top 6px
+            color rgba(0, 0, 0, 0.7)
+            cursor pointer
+        .title
+            font-size 20px
+            margin-bottom 30px
+            margin-top 10px
+            font-weight 500 !important
+        .input-wrapper
+            margin-top 10px
+            width 80%
+            border  1px solid #eeece8
+            text-align left
+            margin-left 10%
+            height 35px
+            input
+                height 32px
+                line-height 32px
+                font-size 15px
+                width 90%
+                margin-left 8px
+                border none
+                outline none
+        .op-btn
+            width 100px
+            height 35px
+            display inline-block
+            margin-top 30px
+            cursor pointer
+            text-align center
+            line-height @height
+            opacity 0.9
+            border-radius 2px
+            letter-spacing 1px
+            font-size 15px
+        .op-btn.sure
+            background #2185d0
+            color #fff
+            margin-left 5%
+            &:hover
+                opacity 1
+        .op-btn.cancel
+            border 1px solid #bcbcbc
+            color #bcbcbc
+            &:hover
+                color #000
+</style>
diff --git a/node_modules/mavon-editor/src/components/md-toolbar-right.vue b/node_modules/mavon-editor/src/components/md-toolbar-right.vue
new file mode 100644
index 0000000..8506fc4
--- /dev/null
+++ b/node_modules/mavon-editor/src/components/md-toolbar-right.vue
@@ -0,0 +1,71 @@
+<template>
+      <div class="v-right-item">
+        <slot name="right-toolbar-before" />
+        <button type="button" v-if="toolbars.navigation" @click="$clicks('navigation')" v-show="!s_navigation"
+                class="op-icon fa fa-mavon-bars"
+                aria-hidden="true" :title="`${d_words.tl_navigation_on} (F8)`"></button>
+        <button type="button" v-if="toolbars.navigation" @click="$clicks('navigation')" v-show="s_navigation"
+                class="op-icon fa fa-mavon-bars selected"
+                aria-hidden="true" :title="`${d_words.tl_navigation_off} (F8)`"></button>
+        <button type="button" v-if="toolbars.preview" @click="$clicks('preview')" v-show="s_preview_switch"
+                class="op-icon fa fa-mavon-eye-slash selected"
+                aria-hidden="true" :title="`${d_words.tl_edit} (F9)`"></button>
+        <button type="button" v-if="toolbars.preview" @click="$clicks('preview')" v-show="!s_preview_switch"
+                class="op-icon fa fa-mavon-eye"
+                aria-hidden="true" :title="`${d_words.tl_preview} (F9)`"></button>
+        <button type="button" v-if="toolbars.fullscreen" @click="$clicks('fullscreen')" v-show="!s_fullScreen"
+                class="op-icon fa fa-mavon-arrows-alt"
+                :title="`${d_words.tl_fullscreen_on} (F10)`" aria-hidden="true"></button>
+        <button type="button" v-if="toolbars.fullscreen" @click="$clicks('fullscreen')" v-show="s_fullScreen"
+                class="op-icon fa fa-mavon-compress selected"
+                :title="`${d_words.tl_fullscreen_off} (F10)`" aria-hidden="true"></button>
+        <button type="button" v-if="toolbars.readmodel" @click="$clicks('read')" class="op-icon fa fa-mavon-window-maximize" aria-hidden="true"
+                :title="`${d_words.tl_read} (F11)`"></button>
+        <button type="button" v-if="toolbars.subfield" @click="$clicks('subfield')" class="op-icon fa fa-mavon-columns" aria-hidden="true"
+                :class = "{'selected': s_subfield}" :title="`${s_subfield ? d_words.tl_single_column : d_words.tl_double_column} (F12)`"></button>
+        <span
+                v-if=" toolbars.help && toolbars.htmlcode && toolbars.readmodel && toolbars.fullscreen && toolbars.subfield && toolbars.navigation"
+                class="op-icon-divider"></span>
+        <button type="button" v-if="toolbars.htmlcode" @click="$clicks('html')" v-show="!s_html_code" class="op-icon fa fa-mavon-code"
+                :title="d_words.tl_html_on"
+                aria-hidden="true"></button>
+        <button type="button" v-if="toolbars.htmlcode" @click="$clicks('html')" v-show="s_html_code"
+                class="op-icon fa fa-mavon-code selected"
+                :title="d_words.tl_html_off" aria-hidden="true"></button>
+        <button type="button"  v-if="toolbars.help" @click="$clicks('help')" class="op-icon fa fa-mavon-question-circle"
+                 style="font-size: 17px;padding: 5px 6px 5px 3px"
+                 :title="d_words.tl_help" aria-hidden="true"></button>
+        <slot name="right-toolbar-after" />
+      </div>
+</template>
+<script type="text/ecmascript-6">
+export default {
+    emits: ["toolbar_right_click"],
+    name: 's-md-toolbar-right',
+
+    props: {
+        // 工具栏
+        s_subfield: {
+            type: Boolean ,
+            required: true
+        },
+        toolbars: { type: Object, required: true },
+        s_preview_switch: { type: Boolean, required: true },
+        s_fullScreen: { type: Boolean, required: true },
+        s_html_code: { type: Boolean, required: true },
+        s_navigation: { type: Boolean, required: true },
+        d_words: {
+            type: Object,
+            required: true
+        }
+    },
+
+    methods: {
+        // 工具栏功能图标click-----------------
+        $clicks(_type) {
+            // 让父节点来绑定事件并
+            this.$emit('toolbar_right_click', _type);
+        }
+    }
+};
+</script>
diff --git a/node_modules/mavon-editor/src/dev/app.vue b/node_modules/mavon-editor/src/dev/app.vue
new file mode 100644
index 0000000..7eaffb7
--- /dev/null
+++ b/node_modules/mavon-editor/src/dev/app.vue
@@ -0,0 +1,354 @@
+<template>
+    <div id="app">
+        <select @change="opchange" class="page-lang">
+            <option value="zh-CN">简体中文</option>
+            <option value="zh-TW">正體中文</option>
+            <option value="en">English</option>
+            <option value="fr">Français</option>
+            <option value="de">Deutsch</option>
+            <option value="ja">日本語 </option>
+            <option value="pt-BR">Português</option>
+            <option value="ru">Русский</option>
+        </select>
+        <section class="page-header">
+            <h1 class="project-name">mavonEditor</h1>
+            <h3 class="project-tagline">{{d_words.sub_title}}</h3>
+            <a href="https://github.com/hinesboy/mavonEditor" class="btn">View on GitHub</a>
+            <a href="https://github.com/hinesboy/mavonEditor/zipball/master" class="btn">Download .zip</a>
+            <a href="https://github.com/hinesboy/mavonEditor/master" class="btn">Download .tar.gz</a>
+        </section>
+        <div v-if="!screen_phone" class="item">
+            <h2 class="item-header">
+                {{d_words.default_setting}}
+            </h2>
+            <div class="item-button">
+              <button @click="clearCache">clear cache</button>
+              <button @click="uploadimg">upload</button>
+              <button @click="imgreplace">imgreplace</button>
+              <input type="text" v-model="imgName" />
+              <button @click="imgdelete">delete</button>
+              <div class="switch-code-style">
+                <span>code style:</span>
+                <select v-model="codeStyle">
+                  <option v-for="(val, key) in styles" :value="key">{{ key }}</option>
+                </select>
+              </div>
+            </div>
+            <mavon-editor ref="md" :subfield="subfield" :toolbarsFlag="toolbarsFlag" :editable="editable"
+                          :language="d_language" @change="change" @save="saveone" :ishljs="true" class="item-editor" v-model="help1"
+                          :autofocus="autofocus"
+                          :shortCut="true"
+                          @imgAdd="$imgAdd" @imgDel="$imgDel" @subfieldtoggle="$subfieldtoggle" @previewtoggle="$previewtoggle"
+                          :imageFilter="image_filter"
+                          :boxShadow="true"
+                          :scrollStyle="true"
+                          :transition="true"
+                          :codeStyle="codeStyle"
+                          box-shadow-style="0 2px 12px 0 rgba(0, 0, 0, 0.1)"
+                          toolbars-background="#ffffff"
+                          preview-background="#fbfbfb">
+                <!-- <template slot="left-toolbar-before">
+                    左工具栏前
+                </template>
+                <template slot="left-toolbar-after">
+                    左工具栏后
+                </template>
+
+                <template slot="right-toolbar-before">
+                    右工具栏前
+                </template>
+                <template slot="right-toolbar-after">
+                    右工具栏后
+                </template> -->          
+            </mavon-editor>
+            <button ref="diy" type="button" @click="$click('selftest')" class="op-icon fa fa-mavon-align-left"
+                aria-hidden="true" title="自定义"></button>
+        </div>
+        <!--自定义-->
+        <div v-if="screen_phone" class="item">
+            <h2 class="item-header">
+                {{d_words.customize_setting}}
+            </h2>
+            <mavon-editor :language="d_language" @save="savetwo" :toolbars="toolbars" class="item-editor"
+                          v-model="help2"></mavon-editor>
+        </div>
+        <div class="item">
+      <span style="display: block;margin: 30px 0 15px 0;color: #1e6bb8" class="">
+        {{d_words.mark}}
+      </span>
+        </div>
+        <div class="item">
+            <h2 class="item-header">
+                {{d_words.detail}}<a href="https://github.com/hinesboy/mavonEditor">GitHub</a>
+            </h2>
+        </div>
+    </div>
+</template>
+
+<script type="text/ecmascript-6">
+    // import {CONFIG} from './assets/config.js'
+    import {CONFIG} from '../lib/config.js'
+    import styles from '../lib/core/hljs/lang.hljs.css.js'
+    export default {
+        name: 'app',
+        data () {
+            return {
+                d_language: 'zh-CN',
+                help1: '',
+                help2: '',
+                d_words: {},
+                screen_phone: false,
+                toolbars: {
+                    underline: true, // 下划线
+                    strikethrough: true, // 中划线
+                    alignCenter: true, // 中划线
+                    undo: true,
+                    save: true,
+                    fullscreen: true, // 全屏编辑
+                    navigation: true,
+                    preview: true,
+                    subfield: false
+                },
+                autofocus: true,
+                subfield: true,
+                editable: true,
+                toolbarsFlag: true,
+                img_file: {},
+                toolbar_settings: {
+                    undo: true, // 上一步
+                    redo: true, // 下一步
+                    bold: true, // 粗体
+                    italic: true, // 斜体
+                    header: true, // 标题
+                    underline: true, // 下划线
+                    strikethrough: true, // 中划线
+                    quote: true, // 引用
+                    ol: true, // 有序列表
+                    ul: true, // 无序列表
+                    link: true, // 链接
+                    code: true, // code
+                    readmodel: true, // 沉浸式阅读
+                    htmlcode: true, // 展示html源码
+                    /* 2.1.8 */
+                    alignleft: true, // 左对齐
+                    aligncenter: true, // 居中
+                    alignright: true, // 右对齐
+                    /* 2.2.1 */
+                    subfield: true, // 单双栏模式
+                    preview: true, // 预览
+                    /* 1.4.2 */
+                    navigation: true // 导航目录
+                },
+                image_filter: function($files) {
+                    console.log('image_filter files:', $files);
+                    // console.log('here for you', $files);
+                    return true;
+                },
+                imageClick: function (file) {
+                    console.log(file);
+                },
+                imgName: '',
+                codeStyle: "github",
+                styles
+            }
+        },
+        created () {
+            var $vm = this;
+            this.initLanguage();
+            this.sizeToStatus()
+            window.addEventListener('resize', function() {
+                // 媒介查询
+                $vm.sizeToStatus()
+            })
+        },
+        mounted() {
+            var md = this.$refs.md;
+            var toolbar_left = md.$refs.toolbar_left;
+            var diy = this.$refs.diy;
+            toolbar_left.$el.append(diy)
+            // toolbar_left.$el.append(diy.$el)
+            // console.log(toolbar_left)
+        },
+        methods: {
+            clearCache() {
+                this.$refs.md.$emptyHistory()
+            },
+            $click(val) {
+                console.log(val);
+            },
+            imgreplace($e) {
+                console.log('here');
+                this.$refs.md.$imglst2Url([
+                    [0, 'https://raw.githubusercontent.com/hinesboy/mavonEditor/master/img/cn/cn-common.png'],
+                    [1, 'https://raw.githubusercontent.com/hinesboy/mavonEditor/master/img/cn/cn-common.png']
+                ]);
+            },
+            uploadimg($e) {
+                console.log(this.img_file);
+                for (var _img in this.img_file) {
+                    this.$refs.md.$img2Url(_img, 'https://raw.githubusercontent.com/hinesboy/mavonEditor/master/img/cn/cn-common.png')
+                }
+                /* var formdata = new FormData();
+                for (var _img in this.img_file) {
+                    formdata.append(_img, this.img_file[_img]);
+                    // _imglst.push([_img, this.img_file[_img]]);
+                }
+                axios({
+                    url: 'http://127.0.0.1/index.php',
+                    method: 'post',
+                    data: formdata,
+                    headers: {'Content-Type': 'multipart/form-data'},
+                }).then((res) => {
+                    console.log(res);
+                }) */
+            },
+            $imgAdd(pos, $file) {
+                console.log('imgAdd', pos, $file);
+                this.img_file[pos] = $file;
+                // console.log(this.$refs.md.$refs.toolbar_left.$imgDelByFilename(pos));
+                // console.log(this.$refs.md.$refs.toolbar_left.$imgAddByFilename('./test', $file))
+                // console.log(this.$refs.md.$refs.toolbar_left.$imgUpdateByFilename('./test', $file))
+                // console.log(this.$refs.md.$refs.toolbar_left.$imgAddByFilename('./test', $file))
+                // console.log(this.$refs.md);
+                // this.$refs.md.$imgUpdateByUrl(pos, 'http://pic.58pic.com/58pic/13/46/50/61758PICWZY_1024.jpg');
+            },
+            $imgDel(pos) {
+                console.log('imgDel', pos);
+                delete this.img_file[pos];
+            },
+            sizeToStatus () {
+                if (window.matchMedia('(min-width:768px)').matches) {
+                    // > 768
+                    this.screen_phone = false
+                } else {
+                    // <  768
+                    this.screen_phone = true
+                }
+            },
+            saveone (val, render) {
+                alert('save one')
+            },
+            savetwo (val, render) {
+                alert('save two')
+            },
+            change (val, render) {
+                console.log(val)
+            },
+            opchange (event) {
+                this.d_language = event.target.value;
+            },
+            initLanguage() {
+                this.d_words = CONFIG[`words_${this.d_language}`]
+                this.help1 = CONFIG[`help_${this.d_language}`]
+                this.help2 = CONFIG[`help_${this.d_language}`]
+            },
+            $subfieldtoggle(flag , value) {
+                console.log('sufield toggle' + flag)
+            },
+            $previewtoggle(flag , value) {
+                console.log('preview toggle' + flag)
+            },
+            imgdelete() {
+                var md = this.$refs.md;
+                var toolbar_left = md.$refs.toolbar_left;
+                toolbar_left.$imgDelByFilename(this.imgName);
+            }
+        },
+        watch: {
+            d_language: function () {
+                this.initLanguage();
+            }
+        }
+    }
+</script>
+
+<style lang="stylus" rel="stylesheet/stylus">
+    body
+        margin 0
+        padding 0
+        padding-bottom 50px
+    .switch-code-style
+        display inline
+        margin-left 8px
+    .page-lang
+        position absolute
+        top 15px
+        right 2%
+    .page-header
+        box-sizing border-box
+        padding 90px 15px
+        width 100%
+        height 380px
+        color #fff
+        text-align center
+        background-color #159957
+        background-image linear-gradient(120deg, #155799, #159957)
+        @media only screen and (max-width 958px)
+            height 300px
+            padding 60px 15px
+        @media only screen and (max-width 768px)
+            height 370px
+            padding 50px 15px
+        .project-name
+            margin-top 0
+            margin-bottom 0.1rem
+            font-size 2.25rem
+            @media only screen and (max-width 768px)
+                font-size 25px
+        .project-tagline
+            margin-bottom 2rem
+            font-weight normal
+            opacity 0.7
+            @media only screen and (max-width 768px)
+                font-size 16px
+        .btn
+            padding: 0.6rem 0.9rem
+            font-size: 0.9rem
+            display: inline-block
+            margin-bottom: 1rem
+            color: rgba(255, 255, 255, 0.7)
+            background-color: rgba(255, 255, 255, 0.08)
+            border-color: rgba(255, 255, 255, 0.2)
+            border-style: solid
+            border-width: 1px
+            border-radius: 0.3rem
+            transition: color 0.2s, background-color 0.2s, border-color 0.2s
+            text-decoration: none
+            margin-left 20px
+            box-sizing border-box
+            &:hover
+                color: rgba(255, 255, 255, 0.8)
+                text-decoration: none
+                background-color: rgba(255, 255, 255, 0.2)
+                border-color: rgba(255, 255, 255, 0.3)
+            @media only screen and (max-width 768px)
+                display: block
+                width: 90%
+                padding: 0.75rem
+                font-size: 0.9rem
+                margin-left 5%
+    .item
+        width 75%
+        margin-left 12.5%
+        @media only screen and (max-width 1100px)
+            width 85%
+            margin-left 7.5%
+        @media only screen and (max-width 768px)
+            width 92%
+            margin-left 4%
+        .item-header
+            margin-top: 3.5rem
+            margin-bottom: 2rem
+            font-weight: normal
+            color: #159957
+            @media only screen and (max-width 768px)
+                margin-top: 2rem
+                margin-bottom: 1rem
+        .item-button
+            margin-bottom: 4rem
+        .item-editor
+            width 100%
+            height 700px
+            @media only screen and (max-width 1600px)
+                height 550px
+</style>
diff --git a/node_modules/mavon-editor/src/dev/assets/config.js b/node_modules/mavon-editor/src/dev/assets/config.js
new file mode 100644
index 0000000..a142bde
--- /dev/null
+++ b/node_modules/mavon-editor/src/dev/assets/config.js
@@ -0,0 +1,35 @@
+/**
+ * Created by zhy on 2017/5/11.
+ */
+import help_zh_CN from './lang/zh-CN/help_zh-CN.md'
+import help_zh_TW from './lang/zh-TW/help_zh-TW.md'
+import help_en from './lang/en/help_en.md'
+import help_fr from './lang/fr/help_fr.md'
+import help_pt_BR from './lang/pt-BR/help_pt-BR.md'
+import help_ru from './lang/ru/help_ru.md'
+import help_de from './lang/de/help_de.md'
+
+import words_zh_CN from './lang/zh-CN/words_zh-CN.json'
+import words_zh_TW from './lang/zh-TW/words_zh-TW.json'
+import words_en from './lang/en/words_en.json'
+import words_fr from './lang/fr/words_fr.json'
+import words_pt_BR from './lang/pt-BR/words_pt-BR.json'
+import words_ru from './lang/ru/words_ru.json'
+import words_de from './lang/de/words_de.json'
+
+export const CONFIG = {
+  'help_zh-CN': help_zh_CN,
+  'help_zh-TW': help_zh_TW,
+  'help_pt-BR': help_pt_BR,
+  'help_en': help_en,
+  'help_fr': help_fr,
+  'help_ru': help_ru,
+  'help_de': help_de,
+  'words_zh-CN': words_zh_CN,
+  'words_zh-TW': words_zh_TW,
+  'words_pt-BR': words_pt_BR,
+  'words_en': words_en,
+  'words_fr': words_fr,
+  'words_ru': words_ru,
+  'words_de': words_de
+}
diff --git a/node_modules/mavon-editor/src/dev/assets/img/1.png b/node_modules/mavon-editor/src/dev/assets/img/1.png
new file mode 100644
index 0000000000000000000000000000000000000000..30335319087dfee0d0ac79dbe625177d03072c25
GIT binary patch
literal 2708
zcmV;F3TyR=P)<h;3K|Lk000e1NJLTq004jh002q|0ssI2{4dK+000VGNkl<ZcmeHO
zUr1Y78b7v4Yg)70+^Ar-w3wvc2Za$5X|haVd@wU<(3vevUH?EI+NFg}z`}ItE)2U*
zE$l8-NER$xAG%mwJJ21bIO&=Pg(;(p2~^OBWMgEDwO}>ZF;df-w)>rXlbf5r#@uWE
z=sged-1Fx<-}(K{`M&SmbFKLB;R6y=@envvyrIRBF#;k1MP3II{^P%S^ClDuMIw>+
z@89Pk?a-k^5{X1EmmfWPG>`7(-lc-457^k)*xcL{1O?y#k|3hWNC+<z^!Dvrq0k4&
zU>kwJGQv&}Re2ErkO`s$D@1UCtmIP2EH5vos=<qZ?d|PUiF`@~7syAM!t~`uKz?2~
z%ftj1m}RUIsp3UIiOiv_)es3NGJOJ^1CnO2;`#f%Zx%L^O4B_4O!MWH-{@-7)MPIT
zx$oWio^@xk=1Vs^PU9Zi-qHS1?^d*Pyga+KV%G{zfPeB&-%aH<tND3t>*I^s+#1JQ
zZG|W{_^nj88EEvOT6(Jal+@#)n3kKAz!6$p0YP(u6CkK|I|)-5I*joxBqKY_4YR|(
z$WGmMRlmKmFgri%UB+8WrXoLT{76$P-Iau_jmwq*czqFxP?L^3vcBuBGznW^f-w4(
zRaId@4(FkTiO~lx-)00!s!ov_v^)!G+WAmY)zH?{*{Tub)V@aqXg>L}Rr~YI)c@q4
z_-1k;bA7fN36e<a%zf8Cj(qRvpM2@;zk~X&8>rF#K`=j+4Hx^aG`<?`zaQbXOt=2`
z-N4=H2&q<}=e6B^X7toK5z|+plDY?PKQmmt)^S>vP19WJ_K1L5<L96MG8+Lu&gV@4
z(R%$>D?PXK);`2=@CO&X3}n#P69^HVzrU5s>@&4lnHaeHthW2>9`x{c%Z5vGm*cJ{
z%r<@{)&2Qv-Gjf}9gxR%A6vKUOnHZ)Qq_6uRb3^*=p)z_S1|g#)554@g1C62r%ARQ
z*+yH-u8H|L`dB&?%bI#_TqGtOqp@v~@2KTX0NV0CdKg=qFJ1R1R`SJx(=W6_h2=FW
zY+R%ovM%hK^(Eq8M{2Nnlc{RtVQPhEuvLZxgq}UPM<b2BZp`jq{kRTAus>jG=0+Xy
zqXGxqT(WZG1+!$*aeoft9{IT*b6sMmI&;rCaKBq~_Z^cG^93VMSG-3)AW>&wpSGxF
zpYyMGo;QZ)=c8U1Tb^sbMFW3(iaA&~Mfn2Z#zurx`HfuLdhPN`|KRO`_G_2VwOVf~
z9uK?bf?G&NG_`fNHxt{-KMW2$rW!BzG4WS^qcFY7kN`&Um-F)|?scI|cDf_VfiJ)Z
z5xTF8?ELEHvqyuDKTfFh=i5KIWNnwr&{in4;(hFJxSvZKyKi1@CU^x}jFNjqz|`&D
zcHSuLEFcV5q1;wN-X}<j=FS_9ZF5hZlMnkJy$a)jB$YKPQh(vAt4%^+PirnX0Vg$|
z)}VjC;=+<CU-PNvWTv_-<!}yQYr*1-s%~|XxFGn$z&~c=x1$mPmM4-DO|3mmOwh{?
zDrkn+op9PK9-iu{RCyY1p5qpvJHVAXyE2S|3IJ6Bhu}p3d{H8-s)7p?R=vHD#tT8I
zR0uoEnU>%JIkJnNO|?Iu6E6a)s;Y#YmiS%J?(l?f*^VDSzPmn|TLbz>jvUEczdvhu
zML`TC@HN%z*RSCN#dq)C<pI*+!-s*$W5<piK=c7F0SL$gbg>JI052cFN)a=8BOnrx
zH*~^u6bTRp$GoM81mq2!Fdan#guyXyDH6ZmpLb`mBYy-W1R=ydHh)D9s)PzSKpoV%
zm&Cj!;Wx3*SxZ8n1E++fqN3u!O}dmOEJi^^W<w;P$OOdiw+o=ixBvRK0Hc)h5MTW2
zizM|5N&t-g>#nXO4GzxZKSxGVCo7tuR7?t5A`(zgxKjr!4FUq=j`4)=2^Yuhu7rYA
z&G$)3X%L_`S<o2E0iZuk^tP$F5L2Gv@kP2|-90kmj{YYe;xb3MM~2<&(M|yulTRq*
z3Z(OaaV!di*rUQzS_oVKx3=5_(hKc`Qzry~4o$7n<zo&nTR-H0|FtA7R#O5GP<=w*
zWx)Hx)`rF%er-wvplWDp4a@P`qyMfs1R15Vw_AUL70=D6O;!uuf+?bKBdlKVtktAo
z#o|&%8n7E3s@mAwrBfhg>2&E8xJ|kQm*;FTT!TZt_ym9wq{YUpcbKgceHNVnEKK@E
zEzD|+A;#_{jmFg}8eXrRF7sl};-v_%25D9`?0{ekAPyKgkr_iDaM_tIECNi%i<!pB
z>p&@dQ*Nj4Om8<V0=(x~J?ZuV*U(h8#nuItpsLfY>DJeqdV|AHJQ_?!+O)K^#FU>r
z8T~A_Bna@1aiO8tKBFe7g}?PCo7DvH`L#AvJv{66Ol9J)UIWV!gQY)#O$ug*vjc(_
zo2ktPn<g;<Ju^gC$|hqQEzV3;8*J(KO~CJkeZcHbb&GNO$pWR<DHJ+`(lHazWsvFh
z`an2IHn2mK1Oe>IO1lHFt}t8V_1Y2Oh&f1?sNgDETOArFte7=H5{RrOT5=S%8iY*(
z3tvGfSA*+FotCy2OH03qt$jvrNf3~I2f+6C_z|fjwFWfprs~sLSjs)UTCG%`F%bW8
z`IWFVIffX#!VJuo<7}9@gW*0~of#|`H@K$Ma*PS9Czh`vlxtHn0X;UJff+E1BqLQp
zRImAgi?jqVO}M`$K|uB$u<m~1BhEIg`jNV&A-LcfW}E;!3+w<1uoVr)RUcC5yV}46
zjdAQ4Zb({a?`_4_E9M?>Ipsl_!GaB-OxOUdp13R0cUgiC#&{}?MzR_&f1F?otif)m
z=P<`qr2Q>E0T9(Bn`TB+2u^4VOQADny<!0yPlXN~fL^alnaUzzY|$VmZi5hXw3*=V
z;`m6gC8Iy2o5FJS`U9qV#+1`V@t+;na%><>s$HqYV?s*aH%w`!-y##>8MZSaBS*i)
z#mfYIbP&R6lbo#wVkkFV3RpygCj7`c;;5XIj#_feA81pnp?fS|;<m|YEiaCbtr~ly
z%Lw}-q~*%UnlCZ|x^5eHIVU*bta@jzR5Q^I9g<rbf<cWbCH!BT!Y2br_?!U&%#dT;
z(o6goHGGz6xYd{)#<ivyFMi-ia5=C6NNuJ_AyrI~2}o5aYe{_03C*~x8#@3TgMz)r
z5jqtdvD@*nEPhsinuK^%*KG;f$A%F2l4P@859~PI>uR7-0c#~;P`ZS>dgxlpGreXs
zM~zWp`}9v08=;@l*X%(l+y|81>u4N1;gfJ$FOiH<_LDHYj(+jt1%#n+4uFFgoP^=a
z@bcOL$rCQXGsFnioQHukWA4U>k$Na+;bOx*K|my6Phibms7OHWSnWy6Li>QU_o90;
zvoaA{Py&*^34p5!cs~wrXyF|pyrn7=!~|Bepaf*mJ?R}`mX`ahsw4>Dz8~Lb`0hBJ
z;uFB$4ehAwzHCrr0+@TzeTi(2lPV?wa1hT?%YEETJO>n+T#<kx6YzfxUfv4AF^m%c
O0000<MNUMnLSTZpOcxvg

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/src/dev/assets/img/2.png b/node_modules/mavon-editor/src/dev/assets/img/2.png
new file mode 100644
index 0000000000000000000000000000000000000000..19ab7f0ab73d684544cc7fd25571ff01dad7ab58
GIT binary patch
literal 2502
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
QYXATM07*qoM6N<$g8G=dW&i*H

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/src/dev/assets/lang/de/help_de.md b/node_modules/mavon-editor/src/dev/assets/lang/de/help_de.md
new file mode 100644
index 0000000..7db0345
--- /dev/null
+++ b/node_modules/mavon-editor/src/dev/assets/lang/de/help_de.md
@@ -0,0 +1,204 @@
+@[toc](Catalog)
+
+Markdown Handbuch
+===
+> Details: [http://commonmark.org/help/](http://commonmark.org/help/)
+
+## **Fett**
+```
+**fett**
+__fett__
+```
+## *Kursiv*
+```
+*kursiv*
+_kursiv_
+```
+## Überschriften
+```
+# h1 #
+h1
+====
+## h2 ##
+h2
+----
+### h3 ###
+#### h4 ####
+##### h5 #####
+###### h6 ######
+```
+## Trennlinien
+```
+***
+---
+```
+****
+## ^Hoch^gestellt & ~Tief~gestellt
+```
+hochgestellt x^2^
+tiefgestellt H~2~0
+```
+## ++Unterstrichen++ & ~~Durchgestrichen~~
+```
+++unterstrichen++
+~~durchgestrichen~~
+```
+## ==Markiert==
+```
+==markiert==
+```
+## Zitat
+
+```
+> zitat 1
+>> zitat 2
+>>> zitat 3
+...
+```
+
+## Liste
+```
+ol
+1.
+2.
+3.
+...
+
+ul
+-
+-
+...
+```
+
+## Todo Liste
+
+- [x] aufgabe 1
+- [ ] aufgabe 2
+
+```
+- [x] aufgabe 1
+- [ ] aufgabe 2
+```
+
+## Link
+```
+Text Link
+[Text](www.baidu.com)
+
+Link mit Bild
+![Text](http://www.image.com)
+```
+## Code
+\``` Typ
+
+Codeblock
+
+\```
+
+\` code \`
+
+```c++
+int main()
+{
+    printf("hello world!");
+}
+```
+`code`
+
+## Tabelle
+```
+| th1 | th2 | th3 |
+| :--  | :--: | ----: |
+| links | mitte | rechts |
+```
+| th1 | th2 | th3 |
+| :--  | :--: | ----: |
+| links | mitte | rechts |
+| ---------------------- | ------------- | ----------------- |
+## Fußnote
+```
+hallo[^hallo]
+```
+
+Schau zum unteren Rand[^hallo]
+
+[^hallo]: fussnote
+
+## Emojis
+Details: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)
+```
+:laughing:
+:blush:
+:smiley:
+:)
+...
+```
+:laughing::blush::smiley::)
+
+## $\KaTeX$ Mathematik
+
+Formeln lassen sich darstellen z.b. :$x_i + y_i = z_i$ und $\sum_{i=1}^n a_i=0$
+Formeln können auf einer eigenen Zeile gerendert werden
+$$\sum_{i=1}^n a_i=0$$
+Details: [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)
+
+## Layout
+
+::: hljs-left
+`::: hljs-left`
+`links`
+`:::`
+:::
+
+::: hljs-center
+`::: hljs-center`
+`mitte`
+`:::`
+:::
+
+::: hljs-right
+`::: hljs-right`
+`rechts`
+`:::`
+:::
+
+## Liste von Definitionen
+
+Term 1
+
+:   Definition 1
+
+Term 2 mit *inline markup*
+
+:   Definition 2
+
+        { ein wenig code, teil von Definition 2 }
+
+    Dritter Absatz von Definition 2.
+
+```
+Term 1
+
+:   Definition 1
+
+Term 2 mit *inline markup*
+
+:   Definition 2
+
+        { ein wenig code, teil von Definition 2 }
+
+    Dritter Absatz von Definition 2.
+
+```
+
+## Abkürzungen
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+Die HTML Spezifikation
+wird gepflegt vom W3C.
+```
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+Die HTML Spezifikation
+wird gepflegt vom W3C.
+```
diff --git a/node_modules/mavon-editor/src/dev/assets/lang/de/words_de.json b/node_modules/mavon-editor/src/dev/assets/lang/de/words_de.json
new file mode 100644
index 0000000..9325671
--- /dev/null
+++ b/node_modules/mavon-editor/src/dev/assets/lang/de/words_de.json
@@ -0,0 +1,54 @@
+{
+  "start_editor": "Bearbeitung beginnen...",
+  "navigation_title": "Navigation",
+  "tl_bold": "Fett",
+  "tl_italic": "Kursiv",
+  "tl_header": "Überschrift",
+  "tl_header_one": "Überschrift 1",
+  "tl_header_two": "Überschrift 2",
+  "tl_header_three": "Überschrift 3",
+  "tl_header_four": "Überschrift 4",
+  "tl_header_five": "Überschrift 5",
+  "tl_header_six": "Überschrift 6",
+  "tl_underline": "Unterstrichen",
+  "tl_strikethrough": "Durchgestrichen",
+  "tl_mark": "Markiert",
+  "tl_superscript": "Hochgestellt",
+  "tl_subscript": "Tiefgestellt",
+  "tl_quote": "Zitat",
+  "tl_ol": "Ol",
+  "tl_ul": "Ul",
+  "tl_link": "Link",
+  "tl_image": "Link mit Bild",
+  "tl_code": "Code",
+  "tl_table": "Tabelle",
+  "tl_undo": "Rückgängig",
+  "tl_redo": "Wiederherstellen",
+  "tl_trash": "Mülleimer",
+  "tl_save": "Speichern",
+  "tl_navigation_on": "Navigation AN",
+  "tl_navigation_off": "Navigation AUS",
+  "tl_preview": "Vorschau",
+  "tl_aligncenter": "Text zentrieren",
+  "tl_alignleft": "Nach links ausrichten",
+  "tl_alignright": "Nach rechts ausrichten",
+  "tl_edit": "Bearbeiten",
+  "tl_single_column": "Einspaltig",
+  "tl_double_column": "Zweispaltig",
+  "tl_fullscreen_on": "Vollbild AN",
+  "tl_fullscreen_off": "Vollbild AUS",
+  "tl_read": "Lesemodus",
+  "tl_html_on": "HTML AN",
+  "tl_html_off": "HTML AUS",
+  "tl_help": "Markdown Handbuch",
+  "tl_upload": "Bilder-Upload",
+  "tl_upload_remove": "Entfernen",
+  "tl_popup_link_title": "Link hinzufügen",
+  "tl_popup_link_text": "Text des Links",
+  "tl_popup_link_addr": "Linkziel",
+  "tl_popup_img_link_title": "Bild hinzufügen",
+  "tl_popup_img_link_text": "Text des Bildes",
+  "tl_popup_img_link_addr": "Link auf Bild",
+  "tl_popup_link_sure": "Ja",
+  "tl_popup_link_cancel": "Abbruch"
+}
diff --git a/node_modules/mavon-editor/src/dev/assets/lang/en/help_en.md b/node_modules/mavon-editor/src/dev/assets/lang/en/help_en.md
new file mode 100644
index 0000000..e6abfd0
--- /dev/null
+++ b/node_modules/mavon-editor/src/dev/assets/lang/en/help_en.md
@@ -0,0 +1,204 @@
+@[toc](Catalog)
+
+Markdown Guide
+===
+> Detailed: [http://commonmark.org/help/](http://commonmark.org/help/)
+
+## **Bold**
+```
+**bold**
+__bold__
+```
+## *Italic*
+```
+*italic*
+_italic_
+```
+## Header
+```
+# h1 #
+h1
+====
+## h2 ##
+h2
+----
+### h3 ###
+#### h4 ####
+##### h5 #####
+###### h6 ######
+```
+## Dividing line
+```
+***
+---
+```
+****
+## ^Super^script & ~Sub~script
+```
+super x^2^
+sub H~2~0
+```
+## ++Underline++ & ~~Strikethrough~~
+```
+++underline++
+~~strikethrough~~
+```
+## ==Mark==
+```
+==mark==
+```
+## Quote
+
+```
+> quote 1
+>> quote 2
+>>> quote 3
+...
+```
+
+## List
+```
+ol
+1.
+2.
+3.
+...
+
+ul
+-
+-
+...
+```
+
+## Todo List
+
+- [x] task 1
+- [ ] task 2
+
+```
+- [x] task 1
+- [ ] task 2
+```
+
+## Link
+```
+Text Link
+[Text](www.baidu.com)
+
+Image Link
+![Text](http://www.image.com)
+```
+## Code
+\``` type
+
+code block
+
+\```
+
+\` code \`
+
+```c++
+int main()
+{
+    printf("hello world!");
+}
+```
+`code`
+
+## Table
+```
+| th1 | th2 | th3 |
+| :--  | :--: | ----: |
+| left | center | right |
+```
+| th1 | th2 | th3 |
+| :--  | :--: | ----: |
+| left | center | right |
+| ---------------------- | ------------- | ----------------- |
+## Footnote
+```
+hello[^hello]
+```
+
+Look at the bottom[^hello]
+
+[^hello]: footnote
+
+## Emojis
+Detailed: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)
+```
+:laughing:
+:blush:
+:smiley:
+:)
+...
+```
+:laughing::blush::smiley::)
+
+## $\KaTeX$ Mathematics
+
+We can render formulas for example:$x_i + y_i = z_i$ and $\sum_{i=1}^n a_i=0$
+We can also single-line rendering
+$$\sum_{i=1}^n a_i=0$$
+Detailed: [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)
+
+## Layout
+
+::: hljs-left
+`::: hljs-left`
+`left`
+`:::`
+:::
+
+::: hljs-center
+`::: hljs-center`
+`center`
+`:::`
+:::
+
+::: hljs-right
+`::: hljs-right`
+`right`
+`:::`
+:::
+
+## deflist
+
+Term 1
+
+:   Definition 1
+
+Term 2 with *inline markup*
+
+:   Definition 2
+
+        { some code, part of Definition 2 }
+
+    Third paragraph of definition 2.
+
+```
+Term 1
+
+:   Definition 1
+
+Term 2 with *inline markup*
+
+:   Definition 2
+
+        { some code, part of Definition 2 }
+
+    Third paragraph of definition 2.
+
+```
+
+## abbr
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+The HTML specification
+is maintained by the W3C.
+```
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+The HTML specification
+is maintained by the W3C.
+```
diff --git a/node_modules/mavon-editor/src/dev/assets/lang/en/words_en.json b/node_modules/mavon-editor/src/dev/assets/lang/en/words_en.json
new file mode 100644
index 0000000..e30268d
--- /dev/null
+++ b/node_modules/mavon-editor/src/dev/assets/lang/en/words_en.json
@@ -0,0 +1,54 @@
+{
+  "start_editor": "Begin editing...",
+  "navigation_title": "Navigation",
+  "tl_bold": "Bold",
+  "tl_italic": "Italic",
+  "tl_header": "Header",
+  "tl_header_one": "Header 1",
+  "tl_header_two": "Header 2",
+  "tl_header_three": "Header 3",
+  "tl_header_four": "Header 4",
+  "tl_header_five": "Header 5",
+  "tl_header_six": "Header 6",
+  "tl_underline": "Underline",
+  "tl_strikethrough": "Strikethrough",
+  "tl_mark": "Mark",
+  "tl_superscript": "Superscript",
+  "tl_subscript": "Subscript",
+  "tl_quote": "Quote",
+  "tl_ol": "Ol",
+  "tl_ul": "Ul",
+  "tl_link": "Link",
+  "tl_image": "Image Link",
+  "tl_code": "Code",
+  "tl_table": "Table",
+  "tl_undo": "Undo",
+  "tl_redo": "Redo",
+  "tl_trash": "Trash",
+  "tl_save": "Save",
+  "tl_navigation_on": "Navigation ON",
+  "tl_navigation_off": "Navigation OFF",
+  "tl_preview": "Preview",
+  "tl_aligncenter": "Center text",
+  "tl_alignleft": "Clamp text to the left",
+  "tl_alignright": "Clamp text to the right",
+  "tl_edit": "Edit",
+  "tl_single_column": "Single Column",
+  "tl_double_column": "Double Columns",
+  "tl_fullscreen_on": "FullScreen ON",
+  "tl_fullscreen_off": "FullScreen OFF",
+  "tl_read": "Read Model",
+  "tl_html_on": "HTML ON",
+  "tl_html_off": "HTML OFF",
+  "tl_help": "Markdown Guide",
+  "tl_upload": "Upload Images",
+  "tl_upload_remove": "Remove",
+  "tl_popup_link_title": "Add Link",
+  "tl_popup_link_text": "Link text",
+  "tl_popup_link_addr": "Link address",
+  "tl_popup_img_link_title": "Add Image",
+  "tl_popup_img_link_text": "Image Text",
+  "tl_popup_img_link_addr": "Image Link",
+  "tl_popup_link_sure": "Sure",
+  "tl_popup_link_cancel": "Cancel"
+}
diff --git a/node_modules/mavon-editor/src/dev/assets/lang/fr/help_fr.md b/node_modules/mavon-editor/src/dev/assets/lang/fr/help_fr.md
new file mode 100644
index 0000000..b3a19fe
--- /dev/null
+++ b/node_modules/mavon-editor/src/dev/assets/lang/fr/help_fr.md
@@ -0,0 +1,204 @@
+@[toc](Catalogue)
+
+Guide Markdown
+==============
+> Détail : [http://commonmark.org/help/](http://commonmark.org/help/)
+
+## **Bold**
+```
+**bold**
+__bold__
+```
+## *Italic*
+```
+*italic*
+_italic_
+```
+## Header
+```
+# h1 #
+h1
+====
+## h2 ##
+h2
+----
+### h3 ###
+#### h4 ####
+##### h5 #####
+###### h6 ######
+```
+## Dividing line
+```
+***
+---
+```
+****
+## ^Super^script & ~Sub~script
+```
+super x^2^
+sub H~2~0
+```
+## ++Underline++ & ~~Strikethrough~~
+```
+++underline++
+~~strikethrough~~
+```
+## ==Mark==
+```
+==mark==
+```
+## Quote
+
+```
+> quote 1
+>> quote 2
+>>> quote 3
+...
+```
+
+## List
+```
+ol
+1.
+2.
+3.
+...
+
+ul
+-
+-
+...
+```
+## Link
+
+## Todo List
+
+- [x] Équipe 1
+- [ ] Équipe 2
+
+```
+- [x] Équipe 1
+- [ ] Équipe 2
+```
+
+```
+Text Link
+[Text](www.baidu.com)
+
+Image Link
+![Text](http://www.image.com)
+```
+## Code
+\``` type
+
+code block
+
+\```
+
+\` code \`
+
+```c++
+int main()
+{
+    printf("hello world!");
+}
+```
+`code`
+
+## Table
+```
+| th1 | th2 | th3 |
+| :--  | :--: | ----: |
+| left | center | right |
+```
+| th1 | th2 | th3 |
+| :--  | :--: | ----: |
+| left | center | right |
+| ---------------------- | ------------- | ----------------- |
+## Footnote
+```
+hello[^hello]
+```
+
+Look at the bottom[^hello]
+
+[^hello]: footnote
+
+## Emojis
+Detailed: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)
+```
+:laughing:
+:blush:
+:smiley:
+:)
+...
+```
+:laughing::blush::smiley::)
+
+## $\KaTeX$ Mathematics
+
+We can render formulas for example:$x_i + y_i = z_i$ and $\sum_{i=1}^n a_i=0$
+We can also single-line rendering
+$$\sum_{i=1}^n a_i=0$$
+Detailed: [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)
+
+## Layout
+
+::: hljs-left
+`::: hljs-left`
+`left`
+`:::`
+:::
+
+::: hljs-center
+`::: hljs-center`
+`center`
+`:::`
+:::
+
+::: hljs-right
+`::: hljs-right`
+`right`
+`:::`
+:::
+
+## deflist
+
+Term 1
+
+:   Definition 1
+
+Term 2 with *inline markup*
+
+:   Definition 2
+
+        { some code, part of Definition 2 }
+
+    Third paragraph of definition 2.
+
+```
+Term 1
+
+:   Definition 1
+
+Term 2 with *inline markup*
+
+:   Definition 2
+
+        { some code, part of Definition 2 }
+
+    Third paragraph of definition 2.
+
+```
+
+## abbr
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+The HTML specification
+is maintained by the W3C.
+```
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+The HTML specification
+is maintained by the W3C.
+```
diff --git a/node_modules/mavon-editor/src/dev/assets/lang/fr/words_fr.json b/node_modules/mavon-editor/src/dev/assets/lang/fr/words_fr.json
new file mode 100644
index 0000000..0c5c176
--- /dev/null
+++ b/node_modules/mavon-editor/src/dev/assets/lang/fr/words_fr.json
@@ -0,0 +1,55 @@
+{
+  "start_editor": "Début d'édition...",
+  "navigation_title": "Navigation",
+  "tl_bold": "Gras",
+  "tl_italic": "Italique",
+  "tl_header": "Entête",
+  "tl_header_one": "Entête 1",
+  "tl_header_two": "Entête 2",
+  "tl_header_three": "Entête 3",
+  "tl_header_four": "Entête 4",
+  "tl_header_five": "Entête 5",
+  "tl_header_six": "Entête 6",
+  "tl_underline": "Souligné",
+  "tl_strikethrough": "Barré",
+  "tl_mark": "Mark",
+  "tl_superscript": "Exposant",
+  "tl_subscript": "Sous-exposant",
+  "tl_quote": "Quote",
+  "tl_ol": "Liste ",
+  "tl_ul": "Puce",
+  "tl_link": "Lien",
+  "tl_image": "Image Lien",
+  "tl_code": "Code",
+  "tl_table": "Table",
+  "tl_undo": "Annuler",
+  "tl_redo": "Refaire",
+  "tl_trash": "Supprimer",
+  "tl_save": "Sauver",
+  "tl_navigation_on": "Activer la navigation",
+  "tl_navigation_off": "Désactiver le navigation",
+  "tl_preview": "Previsualisé",
+  "tl_aligncenter": "Center le texte",
+  "tl_alignleft": "Férer le texte à gauche",
+  "tl_alignright": "Férer le texte à droite",
+  "tl_preview": "Previsualisé",
+  "tl_edit": "Editer",
+  "tl_single_column": "Seule Colonne",
+  "tl_double_column": "Colonnes Doubles",
+  "tl_fullscreen_on": "Activer le mode plein écran",
+  "tl_fullscreen_off": "Désactiver le mode plein écran",
+  "tl_read": "Lire le modèle",
+  "tl_html_on": "Activer le mode HTML",
+  "tl_html_off": "Désactiver le mode HTML",
+  "tl_help": "Guide Markdown",
+  "tl_upload": "Télécharger les images",
+  "tl_upload_remove": "Supprimer",
+  "tl_popup_link_title": "Ajouter un lien",
+  "tl_popup_link_text": "Description",
+  "tl_popup_link_addr": "Link",
+  "tl_popup_img_link_title": "Ajouter une image",
+  "tl_popup_img_link_text": "Description",
+  "tl_popup_img_link_addr": "Link",
+  "tl_popup_link_sure": "sûr",
+  "tl_popup_link_cancel": "Annuler"
+}
diff --git a/node_modules/mavon-editor/src/dev/assets/lang/pt-BR/help_pt-BR.md b/node_modules/mavon-editor/src/dev/assets/lang/pt-BR/help_pt-BR.md
new file mode 100644
index 0000000..dd5d442
--- /dev/null
+++ b/node_modules/mavon-editor/src/dev/assets/lang/pt-BR/help_pt-BR.md
@@ -0,0 +1,204 @@
+@[toc](Directory)
+
+Guia Markdown
+===
+> Detalhes: [http://commonmark.org/help/](http://commonmark.org/help/)
+
+## **Negrito**
+```
+**negrito**
+__negrito__
+```
+## *Itálico*
+```
+*itálico*
+_itálico_
+```
+## Cabeçalho
+```
+# h1 #
+h1
+====
+## h2 ##
+h2
+----
+### h3 ###
+#### h4 ####
+##### h5 #####
+###### h6 ######
+```
+## Linha Divisora
+```
+***
+---
+```
+****
+## ^Sobre^scrito & ~Sub~scrito
+```
+sobre x^2^
+sub H~2~0
+```
+## ++Sublinhar++ & ~~Tachar~~
+```
+++sublinhar++
+~~tachar~~
+```
+## ==Marcador==
+```
+==marcador==
+```
+## Citação
+
+```
+> citação 1
+>> citação 2
+>>> citação 3
+...
+```
+
+## Listas
+```
+lista Numerada
+1.
+2.
+3.
+...
+
+lista com marcadores
+-
+-
+...
+```
+
+## Todo Listas
+
+- [x] Tarefa 1
+- [ ] Tarefa 2
+
+```
+- [x] Tarefa 1
+- [ ] Tarefa 2
+```
+
+## Link
+```
+Link Texto
+[Text](www.baidu.com)
+
+Link Imagem
+![Text](http://www.image.com)
+```
+## Código
+\``` tipo
+
+bloco de código
+
+\```
+
+\` código \`
+
+```c++
+int main()
+{
+    printf("hello world!");
+}
+```
+`code`
+
+## Tabela
+```
+| th1 | th2 | th3 |
+| :--  | :--: | ----: |
+| esquerda | centro | direita |
+```
+| th1 | th2 | th3 |
+| :--  | :--: | ----: |
+| esquerda | centro | direita |
+| ---------------------- | ------------- | ----------------- |
+## Rodapé
+```
+olá[^olá]
+```
+
+Olhe para baixo[^olá]
+
+[^olá]: rodapé
+
+## Emojis
+Detalhes: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)
+```
+:laughing:
+:blush:
+:smiley:
+:)
+...
+```
+:laughing::blush::smiley::)
+
+## $\KaTeX$ Mathematics
+
+Podemos mostrar fórmulas por exemplo:$x_i + y_i = z_i$ and $\sum_{i=1}^n a_i=0$
+Podemos também mostrar em uma única linha:
+$$\sum_{i=1}^n a_i=0$$
+Detalhes: [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)
+
+## Layout
+
+::: hljs-left
+`::: hljs-left`
+`esquerda`
+`:::`
+:::
+
+::: hljs-center
+`::: hljs-center`
+`centro`
+`:::`
+:::
+
+::: hljs-right
+`::: hljs-right`
+`direita`
+`:::`
+:::
+
+## Definições
+
+Termo 1
+
+:   Definição 1
+
+Termo 2 com *markup inline*
+
+:   Definição 2
+
+        { um pouco de código, parte da Definição 2 }
+
+    Terceiro parágrafo da definição 2.
+
+```
+Termo 1
+
+:   Definição 1
+
+Termo 2 com *markup inline*
+
+:   Definição 2
+
+        { um pouco de código, parte da Definição 2 }
+
+    Terceiro parágrafo da definição 2.
+
+```
+
+## Abreviações
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+A especificação HTML
+é mantida pela W3C.
+```
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+The HTML specification
+é mantida pela W3C.
+```
diff --git a/node_modules/mavon-editor/src/dev/assets/lang/pt-BR/words_pt-BR.json b/node_modules/mavon-editor/src/dev/assets/lang/pt-BR/words_pt-BR.json
new file mode 100644
index 0000000..3e4046a
--- /dev/null
+++ b/node_modules/mavon-editor/src/dev/assets/lang/pt-BR/words_pt-BR.json
@@ -0,0 +1,54 @@
+{
+	"start_editor": "Começar edição...",
+	"navigation_title": "Navegação",
+	"tl_bold": "Negrito",
+	"tl_italic": "Itálico",
+	"tl_header": "Cabeçalho",
+	"tl_header_one": "Cabeçalho 1",
+	"tl_header_two": "Cabeçalho 2",
+	"tl_header_three": "Cabeçalho 3",
+	"tl_header_four": "Cabeçalho 4",
+	"tl_header_five": "Cabeçalho 5",
+	"tl_header_six": "Cabeçalho 6",
+	"tl_underline": "Sublinhar",
+	"tl_strikethrough": "Tachar",
+	"tl_mark": "Marcação",
+	"tl_superscript": "Sobrescrito",
+	"tl_subscript": "Subscrito",
+	"tl_quote": "Citação",
+	"tl_ol": "Lista Numerada",
+	"tl_ul": "Lista com marcadores",
+	"tl_link": "Link",
+	"tl_image": "Link de imagem",
+	"tl_code": "Código",
+	"tl_table": "Tabela",
+	"tl_undo": "Desfazer",
+	"tl_redo": "Refazer",
+	"tl_trash": "Lixo",
+	"tl_save": "Salvar",
+	"tl_navigation_on": "Mostrar Navegação",
+	"tl_navigation_off": "Esconder Navegação",
+	"tl_preview": "Preview",
+	"tl_aligncenter": "Alinhar no centro",
+	"tl_alignleft": "Alinhar à esquerda",
+	"tl_alignright": "Alinhar à direita",
+	"tl_edit": "Editar",
+	"tl_single_column": "Coluna Única",
+	"tl_double_column": "Duas Colunas",
+	"tl_fullscreen_on": "Ligar Tela Cheia",
+	"tl_fullscreen_off": "Desligar Tela Cheia",
+	"tl_read": "Modo de Leitura",
+	"tl_html_on": "Ligar HTML",
+	"tl_html_off": "Desligar HTML",
+	"tl_help": "Guia Markdown",
+	"tl_upload": "Upload de Imagens",
+	"tl_upload_remove": "Remover",
+	"tl_popup_link_title": "Adicionar Link",
+	"tl_popup_link_text": "Descrição",
+	"tl_popup_link_addr": "Link",
+	"tl_popup_img_link_title": "Adicionar fotos",
+	"tl_popup_img_link_text": "Descrição",
+	"tl_popup_img_link_addr": "Link",
+	"tl_popup_link_sure": "Confirmar",
+	"tl_popup_link_cancel": "Cancelar"
+}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/src/dev/assets/lang/ru/help_ru.md b/node_modules/mavon-editor/src/dev/assets/lang/ru/help_ru.md
new file mode 100644
index 0000000..36d6a72
--- /dev/null
+++ b/node_modules/mavon-editor/src/dev/assets/lang/ru/help_ru.md
@@ -0,0 +1,202 @@
+@[toc](Catalog)  
+  
+Markdown помощь  
+===  
+> Подробнее: [http://commonmark.org/help/](http://commonmark.org/help/)  
+  
+## **Полужирный**  
+```  
+**Полужирный**  
+__Полужирный__  
+```  
+## *Курсив*  
+```  
+*Курсив*  
+_Курсив_  
+```  
+## Заголовок  
+```  
+# h1 #  
+h1  
+====  
+## h2 ##  
+h2  
+----  
+### h3 ###  
+#### h4 ####  
+##### h5 #####  
+###### h6 ######  
+```  
+## Разделительная линия  
+```  
+***  
+---  
+```  
+****  
+## ^Верхний^индекс & ~Нижний~индекс  
+```  
+верхний x^2^  
+нижний H~2~0  
+```  
+## ++Подчеркнутый++ & ~~Зачеркнутый~~  
+```  
+++Подчеркнутый++  
+~~Зачеркнутый~~  
+```  
+## ==Отметка==  
+```  
+==Отметка==  
+```  
+## Цитата  
+  
+```  
+> Цитата  
+>> Цитата 2  
+>>> Цитата 3  
+...  
+```  
+  
+## Список  
+```  
+ol  
+1.  
+2.  
+3.  
+...  
+  
+ul  
+-  
+-  
+...  
+```  
+  
+## Список задач  
+  
+- [x] Задача 1  
+- [ ] Задача 2  
+  
+```  
+- [x] Задача 1  
+- [ ] Задача 2  
+```  
+  
+## Ссылка  
+```  
+Ссылка  
+[Текст](www.baidu.com)  
+  
+Ссылка изображения  
+![Текст](http://www.image.com)  
+```  
+## Код  
+\``` type  
+  
+code block  
+  
+\```  
+  
+\` code \`  
+  
+```c++  
+int main()  
+{  
+ printf("hello world!");}  
+```  
+`code`  
+  
+## Таблица  
+```  
+| th1 | th2 | th3 |  
+| :--  | :--: | ----: |  
+| left | center | right |  
+```  
+| th1 | th2 | th3 |  
+| :--  | :--: | ----: |  
+| left | center | right |  
+| ---------------------- | ------------- | ----------------- |  
+## Сноска  
+```  
+Привет[^Привет]  
+```  
+  
+Тут что-то непонятное[^Привет]  
+  
+[^Привет]: А тут объяснение  
+  
+## Emojis  
+Подробнее: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)  
+```  
+:laughing:  
+:blush:  
+:smiley:  
+:)  
+...  
+```  
+:laughing::blush::smiley::)  
+  
+## $\KaTeX$ Mathematics  
+  
+Можно выводить такие формулы:$x_i + y_i = z_i$ and $\sum_{i=1}^n a_i=0$  
+А также в одну строку:
+$$\sum_{i=1}^n a_i=0$$  
+Подробнее: 
+- [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)
+- [katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)
+- [latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)  
+  
+## Разметка
+  
+::: hljs-left  
+`::: hljs-left`  
+`left`  
+`:::`  
+:::  
+  
+::: hljs-center  
+`::: hljs-center`  
+`center`  
+`:::`  
+:::  
+  
+::: hljs-right  
+`::: hljs-right`  
+`right`  
+`:::`  
+:::  
+  
+## Список определений
+  
+Термин 1  
+  
+:   Определение 1  
+  
+Термин  2 с использованием *разметки*
+  
+:   Определение 2  
+  
+ { Какой-нибудь код, часть определения 2 }  
+ Третий параграф определения 2.  
+```  
+Термин 1  
+  
+:   Определение 1  
+  
+Термин  2 с использованием *разметки*
+  
+:   Определение 2  
+  
+ { Какой-нибудь код, часть определения 2 }  
+ Третий параграф определения 2.  
+```  
+  
+## Сокращения
+*[HTML]: Hyper Text Markup Language  
+*[W3C]:  World Wide Web Consortium  
+The HTML specification  
+is maintained by the W3C.  
+```  
+*[HTML]: Hyper Text Markup Language  
+*[W3C]:  World Wide Web Consortium  
+The HTML specification  
+is maintained by the W3C.  
+```
diff --git a/node_modules/mavon-editor/src/dev/assets/lang/ru/words_ru.json b/node_modules/mavon-editor/src/dev/assets/lang/ru/words_ru.json
new file mode 100644
index 0000000..83a68e6
--- /dev/null
+++ b/node_modules/mavon-editor/src/dev/assets/lang/ru/words_ru.json
@@ -0,0 +1,54 @@
+{
+  "start_editor": "Начните редактирование...",
+  "navigation_title": "Навигация",
+  "tl_bold": "Полужирный",
+  "tl_italic": "Курсив",
+  "tl_header": "Заголовки",
+  "tl_header_one": "Заголовок 1",
+  "tl_header_two": "Заголовок 2",
+  "tl_header_three": "Заголовок 3",
+  "tl_header_four": "Заголовок 4",
+  "tl_header_five": "Заголовок 5",
+  "tl_header_six": "Заголовок 6",
+  "tl_underline": "Подчеркнутый",
+  "tl_strikethrough": "Зачеркнутый",
+  "tl_mark": "Отметка",
+  "tl_superscript": "Верхний индекс",
+  "tl_subscript": "Нижний индекс",
+  "tl_quote": "Цитата",
+  "tl_ol": "Нумерованный список",
+  "tl_ul": "Список",
+  "tl_link": "Ссылка",
+  "tl_image": "Ссылка изображения",
+  "tl_code": "Код",
+  "tl_table": "Таблица",
+  "tl_undo": "Отменить",
+  "tl_redo": "Вернуть",
+  "tl_trash": "Удалить",
+  "tl_save": "Сохранить",
+  "tl_navigation_on": "Показать навигацию",
+  "tl_navigation_off": "Скрыть навигацию",
+  "tl_preview": "Предпросмотр",
+  "tl_aligncenter": "Выровнять по центру",
+  "tl_alignleft": "Выровнять по левому краю",
+  "tl_alignright": "Выровнять по правому краю",
+  "tl_edit": "Редактор",
+  "tl_single_column": "Одно поле",
+  "tl_double_column": "Два поля",
+  "tl_fullscreen_on": "Полноэкранный режим",
+  "tl_fullscreen_off": "Выключить полноэкранный режим",
+  "tl_read": "Режим чтения",
+  "tl_html_on": "Показать HTML",
+  "tl_html_off": "Убрать HTML",
+  "tl_help": "Markdown помощь",
+  "tl_upload": "Загрузить изображение",
+  "tl_upload_remove": "Удалить",
+  "tl_popup_link_title": "Добавить ссылку",
+  "tl_popup_link_text": "Текст ссылки",
+  "tl_popup_link_addr": "Адрес ссылки",
+  "tl_popup_img_link_title": "Локальное изображение",
+  "tl_popup_img_link_text": "Текст изображения",
+  "tl_popup_img_link_addr": "Ссылка изображения",
+  "tl_popup_link_sure": "Добавить",
+  "tl_popup_link_cancel": "Отменить"
+}
diff --git a/node_modules/mavon-editor/src/dev/assets/lang/zh-CN/help_zh-CN.md b/node_modules/mavon-editor/src/dev/assets/lang/zh-CN/help_zh-CN.md
new file mode 100644
index 0000000..fb7a8dc
--- /dev/null
+++ b/node_modules/mavon-editor/src/dev/assets/lang/zh-CN/help_zh-CN.md
@@ -0,0 +1,198 @@
+@[toc](目录)
+
+Markdown 语法简介
+=============
+> [语法详解](http://commonmark.org/help/)
+
+## **粗体**
+```
+**粗体**
+__粗体__
+```
+## *斜体*
+```
+*斜体*
+_斜体_
+```
+## 标题
+```
+# 一级标题 #
+一级标题
+====
+## 二级标题 ##
+二级标题
+----
+### 三级标题 ###
+#### 四级标题 ####
+##### 五级标题 #####
+###### 六级标题 ######
+```
+## 分割线
+```
+***
+---
+```
+****
+## ^上^角~下~标
+```
+上角标 x^2^
+下角标 H~2~0
+```
+## ++下划线++ ~~中划线~~
+```
+++下划线++
+~~中划线~~
+```
+## ==标记==
+```
+==标记==
+```
+## 段落引用
+```
+> 一级
+>> 二级
+>>> 三级
+...
+```
+
+## 列表
+```
+有序列表
+1.
+2.
+3.
+...
+无序列表
+-
+-
+...
+```
+
+## 任务列表
+
+- [x] 已完成任务
+- [ ] 未完成任务
+
+```
+- [x] 已完成任务
+- [ ] 未完成任务
+```
+
+## 链接
+```
+[链接](www.baidu.com)
+![图片描述](http://www.image.com)
+```
+## 代码段落
+\``` type
+
+代码段落
+
+\```
+
+\` 代码块 \`
+
+```c++
+int main()
+{
+    printf("hello world!");
+}
+```
+`code`
+## 表格(table)
+```
+| 标题1 | 标题2 | 标题3 |
+| :--  | :--: | ----: |
+| 左对齐 | 居中 | 右对齐 |
+| ---------------------- | ------------- | ----------------- |
+```
+| 标题1 | 标题2 | 标题3 |
+| :--  | :--: | ----: |
+| 左对齐 | 居中 | 右对齐 |
+| ---------------------- | ------------- | ----------------- |
+## 脚注(footnote)
+```
+hello[^hello]
+```
+
+见底部脚注[^hello]
+
+[^hello]: 一个注脚
+
+## 表情(emoji)
+[参考网站: https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)
+```
+:laughing:
+:blush:
+:smiley:
+:)
+...
+```
+:laughing::blush::smiley::)
+
+## $\KaTeX$公式
+
+我们可以渲染公式例如:$x_i + y_i = z_i$和$\sum_{i=1}^n a_i=0$
+我们也可以单行渲染
+$$\sum_{i=1}^n a_i=0$$
+具体可参照[katex文档](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex支持的函数](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex文档](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)
+
+## 布局
+
+::: hljs-left
+`::: hljs-left`
+`居左`
+`:::`
+:::
+
+::: hljs-center
+`::: hljs-center`
+`居中`
+`:::`
+:::
+
+::: hljs-right
+`::: hljs-right`
+`居右`
+`:::`
+:::
+
+## 定义
+
+术语一
+
+:   定义一
+
+包含有*行内标记*的术语二
+
+:   定义二
+
+        {一些定义二的文字或代码}
+
+    定义二的第三段
+
+```
+术语一
+
+:   定义一
+
+包含有*行内标记*的术语二
+
+:   定义二
+
+        {一些定义二的文字或代码}
+
+    定义二的第三段
+
+```
+
+## abbr
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+HTML 规范由 W3C 维护
+```
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+HTML 规范由 W3C 维护
+```
+
diff --git a/node_modules/mavon-editor/src/dev/assets/lang/zh-CN/words_zh-CN.json b/node_modules/mavon-editor/src/dev/assets/lang/zh-CN/words_zh-CN.json
new file mode 100644
index 0000000..1a03e14
--- /dev/null
+++ b/node_modules/mavon-editor/src/dev/assets/lang/zh-CN/words_zh-CN.json
@@ -0,0 +1,54 @@
+{
+  "start_editor": "开始编辑...",
+  "navigation_title": "导航目录",
+  "tl_bold": "粗体",
+  "tl_italic": "斜体",
+  "tl_header": "标题",
+  "tl_header_one": "一级标题",
+  "tl_header_two": "二级标题",
+  "tl_header_three": "三级标题",
+  "tl_header_four": "四级标题",
+  "tl_header_five": "五级标题",
+  "tl_header_six": "六级标题",
+  "tl_underline": "下划线",
+  "tl_strikethrough": "中划线",
+  "tl_mark": "标记",
+  "tl_superscript": "上角标",
+  "tl_subscript": "下角标",
+  "tl_quote": "段落引用",
+  "tl_ol": "有序列表",
+  "tl_ul": "无序列表",
+  "tl_link": "链接",
+  "tl_image": "添加图片链接",
+  "tl_code": "代码块",
+  "tl_table": "表格",
+  "tl_undo": "上一步",
+  "tl_redo": "下一步",
+  "tl_trash": "清空",
+  "tl_save": "保存",
+  "tl_navigation_on": "开启标题导航",
+  "tl_navigation_off": "关闭标题导航",
+  "tl_preview": "预览",
+  "tl_aligncenter": "居中",
+  "tl_alignleft": "居左",
+  "tl_alignright": "居右",
+  "tl_edit": "编辑",
+  "tl_single_column": "单栏",
+  "tl_double_column": "双栏",
+  "tl_fullscreen_on": "全屏编辑",
+  "tl_fullscreen_off": "退出全屏",
+  "tl_read": "沉浸式阅读",
+  "tl_html_on": "查看html文本",
+  "tl_html_off": "返回markdown文本",
+  "tl_help": "markdown语法帮助",
+  "tl_upload": "上传图片",
+  "tl_upload_remove": "删除",
+  "tl_popup_link_title": "添加链接",
+  "tl_popup_link_text": "链接描述",
+  "tl_popup_link_addr": "链接地址",
+  "tl_popup_img_link_title": "添加图片",
+  "tl_popup_img_link_text": "图片描述",
+  "tl_popup_img_link_addr": "图片链接",
+  "tl_popup_link_sure": "确定",
+  "tl_popup_link_cancel": "取消"
+}
diff --git a/node_modules/mavon-editor/src/dev/assets/lang/zh-TW/help_zh-TW.md b/node_modules/mavon-editor/src/dev/assets/lang/zh-TW/help_zh-TW.md
new file mode 100644
index 0000000..ac451b9
--- /dev/null
+++ b/node_modules/mavon-editor/src/dev/assets/lang/zh-TW/help_zh-TW.md
@@ -0,0 +1,198 @@
+@[toc](目錄)
+
+Markdown 語法簡介
+=============
+> [語法詳解](http://commonmark.org/help/)
+
+## **粗體**
+```
+**粗體**
+__粗體__
+```
+## *斜體*
+```
+*斜體*
+_斜體_
+```
+## 標題
+```
+# 一級標題 #
+一級標題
+====
+## 二級標題 ##
+二級標題
+----
+### 三級標題 ###
+#### 四級標題 ####
+##### 五級標題 #####
+###### 六級標題 ######
+```
+## 分割線
+```
+***
+---
+```
+****
+## ^上^角~下~標
+```
+上角標 x^2^
+下角標 H~2~0
+```
+## ++下劃線++ ~~中劃線~~
+```
+++下劃線++
+~~中劃線~~
+```
+## ==標記==
+```
+==標記==
+```
+## 段落引用
+```
+> 一級
+>> 二級
+>>> 三級
+...
+```
+
+## 列表
+```
+有序列表
+1.
+2.
+3.
+...
+無序列表
+-
+-
+...
+```
+
+## 任務列表
+
+- [x] 已完成任務
+- [ ] 未完成任務
+
+```
+- [x] 已完成任務
+- [ ] 未完成任務
+```
+
+## 鏈接
+```
+[鏈接](www.baidu.com)
+![圖片描述](http://www.image.com)
+```
+## 代碼段落
+\``` type
+
+代碼段落
+
+\```
+
+\` 代碼塊 \`
+
+```c++
+int main()
+{
+    printf("hello world!");
+}
+```
+`code`
+## 表格(table)
+```
+| 標題1 | 標題2 | 標題3 |
+| :--  | :--: | ----: |
+| 左對齊 | 居中 | 右對齊 |
+| ---------------------- | ------------- | ----------------- |
+```
+| 標題1 | 標題2 | 標題3 |
+| :--  | :--: | ----: |
+| 左對齊 | 居中 | 右對齊 |
+| ---------------------- | ------------- | ----------------- |
+## 腳註(footnote)
+```
+hello[^hello]
+```
+
+見底部腳註[^hello]
+
+[^hello]: 一個註腳
+
+## 表情(emoji)
+[參考網站: https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)
+```
+:laughing:
+:blush:
+:smiley:
+:)
+...
+```
+:laughing::blush::smiley::)
+
+## $\KaTeX$公式
+
+我們可以渲染公式例如:$x_i + y_i = z_i$和$\sum_{i=1}^n a_i=0$
+我們也可以單行渲染
+$$\sum_{i=1}^n a_i=0$$
+具體可參照[katex文檔](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex支持的函數](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex文檔](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)
+
+## 布局
+
+::: hljs-left
+`::: hljs-left`
+`居左`
+`:::`
+:::
+
+::: hljs-center
+`::: hljs-center`
+`居中`
+`:::`
+:::
+
+::: hljs-right
+`::: hljs-right`
+`居右`
+`:::`
+:::
+
+## 定義
+
+術語一
+
+:   定義一
+
+包含有*行內標記*的術語二
+
+:   定義二
+
+        {一些定義二的文字或代碼}
+
+    定義二的第三段
+
+```
+術語一
+
+:   定義一
+
+包含有*行內標記*的術語二
+
+:   定義二
+
+        {一些定義二的文字或代碼}
+
+    定義二的第三段
+
+```
+
+## abbr
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+HTML 規範由 W3C 維護
+```
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+HTML 規範由 W3C 維護
+```
+
diff --git a/node_modules/mavon-editor/src/dev/assets/lang/zh-TW/words_zh-TW.json b/node_modules/mavon-editor/src/dev/assets/lang/zh-TW/words_zh-TW.json
new file mode 100644
index 0000000..e388ce3
--- /dev/null
+++ b/node_modules/mavon-editor/src/dev/assets/lang/zh-TW/words_zh-TW.json
@@ -0,0 +1,54 @@
+{
+  "start_editor": "開始編輯...",
+  "navigation_title": "導航目錄",
+  "tl_bold": "粗體",
+  "tl_italic": "斜體",
+  "tl_header": "標題",
+  "tl_header_one": "一級標題",
+  "tl_header_two": "二級標題",
+  "tl_header_three": "三級標題",
+  "tl_header_four": "四級標題",
+  "tl_header_five": "五級標題",
+  "tl_header_six": "六級標題",
+  "tl_underline": "下劃線",
+  "tl_strikethrough": "中劃線",
+  "tl_mark": "標記",
+  "tl_superscript": "上角標",
+  "tl_subscript": "下角標",
+  "tl_quote": "段落引用",
+  "tl_ol": "有序列表",
+  "tl_ul": "無序列表",
+  "tl_link": "鏈接",
+  "tl_image": "添加圖片鏈接",
+  "tl_code": "代碼塊",
+  "tl_table": "表格",
+  "tl_undo": "上一步",
+  "tl_redo": "下一步",
+  "tl_trash": "清空",
+  "tl_save": "保存",
+  "tl_navigation_on": "開啟標題導航",
+  "tl_navigation_off": "關閉標題導航",
+  "tl_preview": "預覽",
+  "tl_aligncenter": "居中",
+  "tl_alignleft": "居左",
+  "tl_alignright": "居右",
+  "tl_edit": "編輯",
+  "tl_single_column": "單欄",
+  "tl_double_column": "雙欄",
+  "tl_fullscreen_on": "全屏編輯",
+  "tl_fullscreen_off": "退出全屏",
+  "tl_read": "沈浸式閱讀",
+  "tl_html_on": "查看html文本",
+  "tl_html_off": "返回markdown文本",
+  "tl_help": "markdown語法幫助",
+  "tl_upload": "上傳圖片",
+  "tl_upload_remove": "刪除",
+  "tl_popup_link_title": "添加鏈接",
+  "tl_popup_link_text": "鏈接描述",
+  "tl_popup_link_addr": "鏈接地址",
+  "tl_popup_img_link_title": "添加圖片",
+  "tl_popup_img_link_text": "圖片描述",
+  "tl_popup_img_link_addr": "圖片鏈接",
+  "tl_popup_link_sure": "確定",
+  "tl_popup_link_cancel": "取消"
+}
diff --git a/node_modules/mavon-editor/src/dev/demo.vue b/node_modules/mavon-editor/src/dev/demo.vue
new file mode 100644
index 0000000..1adedf0
--- /dev/null
+++ b/node_modules/mavon-editor/src/dev/demo.vue
@@ -0,0 +1,34 @@
+<template>
+  <div>
+    <div class="navigate">
+      <span @click="viewIndex = 1">Full demo</span>
+      <span @click="viewIndex = 2">Simple demo</span>
+    </div>
+    <div>
+      <App v-if="viewIndex == 1"></App>
+      <Editor v-else-if="viewIndex == 2"></Editor>
+    </div>
+  </div>
+</template>
+
+<script setup>
+import App from './app.vue';
+import Editor from './editor.vue';
+import {ref} from "vue"
+
+const viewIndex = ref(1)
+</script>
+<style>
+.navigate {
+  text-align: center;
+  font-size: 18px;
+  color: blue;
+}
+.navigate span {
+  margin-right: 5px;
+}
+.navigate span:hover {
+  cursor: pointer;
+  font-weight: bolder;
+}
+</style>
\ No newline at end of file
diff --git a/node_modules/mavon-editor/src/dev/editor.vue b/node_modules/mavon-editor/src/dev/editor.vue
new file mode 100644
index 0000000..f59b0d5
--- /dev/null
+++ b/node_modules/mavon-editor/src/dev/editor.vue
@@ -0,0 +1,66 @@
+<template>
+    <div class="container">
+        <div id="editor">
+            <mavon-editor style="height: 100%" v-model="code" :codeStyle="codeStyle" :xssOptions="xssOptions"></mavon-editor>
+        </div>
+        <div class="switch-code-style">
+            <span>code style:</span>
+            <select v-model="codeStyle">
+                <option v-for="(val, key) in styles" :value="key">{{ key }}</option>
+            </select>
+        </div>
+    </div>
+</template>
+<script>
+import styles from '../lib/core/hljs/lang.hljs.css.js'
+const code = `java
+/**
+ * @author John Smith <john.smith@example.com>
+*/
+package l2f.gameserver.model;
+public abstract strictfp class L2Char extends L2Object {
+  public static final Short ERROR = 0x0001;
+  public void moveTo(int x, int y, int z) {
+    _ai = null;
+    log("Should not be called");
+    if (1 > 5) { 
+      return;
+    }
+  }
+}`;
+
+module.exports = {
+    name: 'editor',
+    data: function() {
+        return {
+            codeStyle: "github",
+            styles,
+            code: '<span style="color:red;font-size:36px;">A</span> \n```' + code + '\n```',
+            xssOptions:{
+                whiteList: {
+                    span: ['style']
+                }
+            }
+        };
+    },
+    computed: {
+    },
+    methods: {
+    }
+}
+</script>
+<style>
+.container {
+    margin: auto;
+    width: 80%;
+}
+
+#editor {
+  height: 580px;
+}
+
+.switch-code-style {
+    margin-top: 10px;
+    font-size: 16px;
+}
+</style>
diff --git a/node_modules/mavon-editor/src/dev/index.html b/node_modules/mavon-editor/src/dev/index.html
new file mode 100644
index 0000000..4066676
--- /dev/null
+++ b/node_modules/mavon-editor/src/dev/index.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title>md-test</title>
+    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no">
+</head>
+<body>
+    <div id="main">
+    </div>
+</body>
+</html>
diff --git a/node_modules/mavon-editor/src/dev/index.js b/node_modules/mavon-editor/src/dev/index.js
new file mode 100644
index 0000000..30da850
--- /dev/null
+++ b/node_modules/mavon-editor/src/dev/index.js
@@ -0,0 +1,18 @@
+/**
+ * @Author: HuaChao Chen <CHC>
+ * @Date:   2017-05-04T23:26:08+08:00
+ * @Email:  chenhuachaoxyz@gmail.com
+ * @Filename: index.js
+ * @Last modified by:   chc
+ * @Last modified time: 2017-11-25T12:14:56+08:00
+ * @License: MIT
+ * @Copyright: 2017
+ */
+
+import { createApp, h } from 'vue';
+import demo from './demo.vue';
+import sMd from '../index'
+
+createApp({
+    render: () => h(demo)
+}).use(sMd).mount('#main');
diff --git a/node_modules/mavon-editor/src/index.js b/node_modules/mavon-editor/src/index.js
new file mode 100644
index 0000000..7f57dc6
--- /dev/null
+++ b/node_modules/mavon-editor/src/index.js
@@ -0,0 +1,25 @@
+/**
+ * Created by zhy on 2017/4/1.
+ */
+'use strict';
+
+/**
+ * mavonEditor
+ * @author hinesboy
+ */
+const mavonEditor = require('./mavon-editor.vue').default;
+const VueMavonEditor = {
+    /**
+     * @deprecated
+     * @see mavonEditor.getMarkdownIt()
+     */
+    markdownIt: mavonEditor.mixins[0].data().markdownIt,
+    mavonEditor: mavonEditor,
+    LeftToolbar: require('./components/md-toolbar-left').default,
+    RightToolbar: require('./components/md-toolbar-right').default,
+    install: function(Vue) {
+        Vue.component('mavon-editor', mavonEditor);
+    }
+};
+
+module.exports = VueMavonEditor;
diff --git a/node_modules/mavon-editor/src/lib/config.js b/node_modules/mavon-editor/src/lib/config.js
new file mode 100644
index 0000000..f768ec4
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/config.js
@@ -0,0 +1,79 @@
+/**
+ * @Author: HuaChao Chen <CHC>
+ * @Date:   2017-05-06T21:40:39+08:00
+ * @Email:  chenhuachaoxyz@gmail.com
+ * @Filename: config.js
+ * @Last modified by:   CHC
+ * @Last modified time: 2017-05-06T22:12:49+08:00
+ * @License: MIT
+ * @Copyright: 2017
+ * @desc 初始化配置项
+ */
+
+import help_zh_CN from './lang/zh-CN/help_zh-CN.md'
+import help_zh_TW from './lang/zh-TW/help_zh-TW.md'
+import help_en from './lang/en/help_en.md'
+import help_fr from './lang/fr/help_fr.md'
+import help_pt_BR from './lang/pt-BR/help_pt-BR.md'
+import help_ru from './lang/ru/help_ru.md'
+import help_de from './lang/de/help_de.md'
+import help_ja from './lang/ja/help_ja.md'
+
+import words_zh_CN from './lang/zh-CN/words_zh-CN.json'
+import words_zh_TW from './lang/zh-TW/words_zh-TW.json'
+import words_en from './lang/en/words_en.json'
+import words_fr from './lang/fr/words_fr.json'
+import words_pt_BR from './lang/pt-BR/words_pt-BR.json'
+import words_ru from './lang/ru/words_ru.json'
+import words_de from './lang/de/words_de.json'
+import words_ja from './lang/ja/words_ja.json'
+export const CONFIG = {
+    'help_zh-CN': help_zh_CN,
+    'help_zh-TW': help_zh_TW,
+    'help_pt-BR': help_pt_BR,
+    'help_en': help_en,
+    'help_fr': help_fr,
+    'help_ru': help_ru,
+    'help_de': help_de,
+    'help_ja': help_ja,
+    'words_zh-CN': words_zh_CN,
+    'words_zh-TW': words_zh_TW,
+    'words_pt-BR': words_pt_BR,
+    'words_en': words_en,
+    'words_fr': words_fr,
+    'words_ru': words_ru,
+    'words_de': words_de,
+    'words_ja': words_ja,
+    'langList': ['en', 'zh-CN', 'zh-TW', 'fr', 'pt-BR', 'ru', 'de', 'ja'],
+    'toolbars': {
+        'bold': true,
+        'italic': true,
+        'header': true,
+        'underline': true,
+        'strikethrough': true,
+        'mark': true,
+        'superscript': true,
+        'subscript': true,
+        'quote': true,
+        'ol': true,
+        'ul': true,
+        'link': true,
+        'imagelink': true,
+        'code': true,
+        'table': true,
+        'undo': true,
+        'redo': true,
+        'trash': true,
+        'save': true,
+        'alignleft': true,
+        'aligncenter': true,
+        'alignright': true,
+        'navigation': true,
+        'subfield': true,
+        'fullscreen': true,
+        'readmodel': true,
+        'htmlcode': true,
+        'help': true,
+        'preview': true
+    }
+};
diff --git a/node_modules/mavon-editor/src/lib/core/extra-function.js b/node_modules/mavon-editor/src/lib/core/extra-function.js
new file mode 100644
index 0000000..44b7eaf
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/core/extra-function.js
@@ -0,0 +1,538 @@
+/**
+ * @Author: HuaChao Chen <chc>
+ * @Date:   2017-06-14T23:04:34+08:00
+ * @Email:  chenhuachaoxyz@gmail.com
+ * @Filename: extra-function.js
+ * @Last modified by:   CHC
+ * @Last modified time: 2017-12-19T17:46:48+08:00
+ * @License: MIT
+ * @Copyright: 2017
+ */
+
+/**
+ * Created by zhy on 2017/4/24.
+ */
+/**
+ * textarea 插入内容
+ */
+export const insertTextAtCaret = (obj, {prefix, subfix, str, type}, $vm) => {
+    obj.focus()
+    if (isExistSelectionObj(obj)) {
+        var startPos = obj.selectionStart;
+        var endPos = obj.selectionEnd;
+        var tmpStr = obj.value;
+        if (startPos === endPos) {
+            // 直接插入
+            obj.value = tmpStr.substring(0, startPos) + prefix + str + subfix + tmpStr.substring(endPos, tmpStr.length);
+            obj.selectionStart = startPos + prefix.length;
+            obj.selectionEnd = startPos + (str.length + prefix.length);
+        } else {
+            // 存在选中区域
+            if (tmpStr.substring(startPos - prefix.length, startPos) === prefix && tmpStr.substring(endPos, endPos + subfix.length) === subfix && judgeItalicAndBold(prefix, subfix, tmpStr, startPos, endPos)) {
+                // 取消
+                obj.value = tmpStr.substring(0, startPos - prefix.length) + tmpStr.substring(startPos, endPos) + tmpStr.substring(endPos + subfix.length, tmpStr.length);
+                obj.selectionStart = startPos - prefix.length;
+                obj.selectionEnd = endPos - prefix.length;
+            } else {
+                // 确定
+                obj.value = tmpStr.substring(0, startPos) + prefix + tmpStr.substring(startPos, endPos) + subfix + tmpStr.substring(endPos, tmpStr.length);
+                obj.selectionStart = startPos + prefix.length;
+                obj.selectionEnd = startPos + (endPos - startPos + prefix.length);
+            }
+        }
+    } else {
+        alert('Error: Browser version is too low')
+        // obj.value += str;
+    }
+    // 触发change事件
+    $vm.d_value = obj.value
+    obj.focus()
+}
+
+const code_structure = {
+    prefix: "```",
+    subfix: "\n```\n",
+    defaultLanguageText: "language"
+}
+
+export const insertCodeBlock = ($vm) => {
+    let obj = $vm.getTextareaDom();
+
+    if (isExistSelectionObj(obj)) {
+        const {defaultLanguageText: language} = code_structure;
+        let { selectionStart: startPos, selectionEnd: endPos, value: tmpStr } = obj;
+
+        if (startPos === endPos) {
+            // 直接插入
+            insertCodeBlockToVM(language, "", obj);
+        } else {
+            // 存在选中区域
+            if (isCancelCodeBlock(obj)) {
+                // 取消
+                removeCodeBlockFromVM(obj);
+            } else {
+                // 确定
+                let value = tmpStr.substring(startPos, endPos);
+                insertCodeBlockToVM("", value, obj);
+            }
+        }
+    } else {
+        alert('Error: Browser version is too low');
+        return;
+    }
+
+    // 触发change事件
+    $vm.d_value = obj.value
+    obj.focus();
+}
+
+function insertCodeBlockToVM(language, content, selectionObj) {
+    const {prefix, subfix} = code_structure;
+    let { selectionStart: startPos, selectionEnd: endPos, value: tmpStr } = selectionObj;
+
+    let value = tmpStr.substring(0, startPos);
+    value += prefix + language + "\n";
+    value += content;
+    value += subfix;
+    value += tmpStr.substring(endPos, tmpStr.length);
+
+    selectionObj.value = value;
+    selectionObj.selectionStart = startPos + prefix.length + (language ? 0 : 1);
+    selectionObj.selectionEnd = selectionObj.selectionStart + language.length +  content.length;
+}
+
+function removeCodeBlockFromVM(selectionObj) {
+    let {prefix, subfix, defaultLanguageText: language} = code_structure;
+    let { selectionStart: startPos, selectionEnd: endPos, value: content } = selectionObj;
+    let selectedValue = content.substring(startPos, endPos);
+
+    if (content.substring(startPos - 1, startPos) === "\n")
+    {
+        prefix = prefix + "\n";
+    } else {
+        subfix = "\n" + subfix;
+        if (prefix + language + subfix === content.substring(startPos - prefix.length,endPos + subfix.length)) {
+            let value = content.substring(0, startPos - prefix.length);
+            value += content.substring(endPos + subfix.length, content.length)
+
+            selectionObj.value = value;
+            selectionObj.selectionStart = startPos - prefix.length;
+            selectionObj.selectionEnd = selectionObj.selectionStart;
+            return;
+        }
+    }
+
+    let value = content.substring(0, startPos - prefix.length);
+    value += selectedValue;
+    value += content.substring(endPos + subfix.length, content.length)
+
+    selectionObj.value = value;
+    selectionObj.selectionStart = startPos - prefix.length;
+    selectionObj.selectionEnd = selectionObj.selectionStart + selectedValue.length;
+}
+
+function isExistSelectionObj(textareaDom) {
+    return typeof textareaDom.selectionStart === 'number' && typeof textareaDom.selectionEnd === 'number';
+}
+
+function isCancelCodeBlock(selectionObj) {
+    let { selectionStart: startPos, selectionEnd: endPos, value: content } = selectionObj;
+    let {prefix, subfix} = code_structure;
+
+    if (content.substring(startPos - 1, startPos) === "\n")
+    {
+        prefix = prefix + "\n";
+    } else {
+        subfix = "\n" + subfix;
+    }
+
+    return content.substring(startPos - prefix.length, startPos) === prefix &&
+                content.substring(endPos, endPos + subfix.length) === subfix;
+}
+
+// 处理粗体与斜体冲突问题
+function judgeItalicAndBold(prefix, subfix, tmpStr, startPos, endPos) {
+    if (prefix === '*' && subfix ===  '*') {
+        if (tmpStr.substring(startPos - 2, startPos - 1) === '*' && tmpStr.substring(endPos + 1, endPos + 2) === '*') {
+            return false
+        }
+    }
+    return true
+}
+// 插入有序列表
+export const insertOl = ($vm) => {
+    let obj = $vm.getTextareaDom();
+    if (isExistSelectionObj(obj)) {
+        var startPos = obj.selectionStart;
+        var endPos = obj.selectionEnd;
+        var tmpStr = obj.value;
+        if (startPos === endPos) {
+            // 直接插入
+            obj.value = tmpStr.substring(0, startPos) + '1. ' + tmpStr.substring(endPos, tmpStr.length);
+            obj.selectionEnd = obj.selectionStart = startPos + 3;
+        } else {
+            // 存在选中区域
+            let start = startPos
+            while (start > 0 && tmpStr.substring(start - 1, start) !== '\n') {
+                start--
+            }
+            let selectStr = tmpStr.substring(start, endPos)
+            let selectStrs = selectStr.split('\n')
+            for (let i = 0; i < selectStrs.length; i++) {
+                selectStrs[i] = (i + 1) + '. ' + selectStrs[i]
+            }
+            let newSelectStr = selectStrs.join('\n')
+            obj.value = tmpStr.substring(0, start) + newSelectStr + tmpStr.substring(endPos, tmpStr.length);
+            obj.selectionStart = start
+            obj.selectionEnd = endPos + newSelectStr.length - selectStr.length;
+        }
+    } else {
+        alert('Error: Browser version is too low')
+        // obj.value += str;
+    }
+    // 触发change事件
+    $vm.d_value = obj.value
+    obj.focus();
+}
+// 删除行
+export const removeLine = ($vm) => {
+    let obj = $vm.getTextareaDom();
+    if (isExistSelectionObj(obj)) {
+        var startPos = obj.selectionStart;
+        var endPos = obj.selectionEnd;
+        var tmpStr = obj.value;
+        // 找到行首、行尾
+        let start = startPos
+        while (start > 0 && tmpStr.substring(start - 1, start) !== '\n') {
+            start--
+        }
+        let end = endPos
+        while (end < tmpStr.length && tmpStr.substring(end, end + 1) !== '\n') {
+            end++
+        }
+        if (end < tmpStr.length) {
+            end++
+        }
+        obj.value = tmpStr.substring(0, start)  + tmpStr.substring(end, tmpStr.length);
+        obj.selectionEnd = obj.selectionStart = start === 0 ? 0 : start - 1;
+    } else {
+        alert('Error: Browser version is too low')
+        // obj.value += str;
+    }
+    // 触发change事件
+    $vm.d_value = obj.value
+    obj.focus();
+}
+// 插入无序列表
+export const insertUl = ($vm) => {
+    let obj = $vm.getTextareaDom();
+    if (isExistSelectionObj(obj)) {
+        var startPos = obj.selectionStart;
+        var endPos = obj.selectionEnd;
+        var tmpStr = obj.value;
+        if (startPos === endPos) {
+            // 直接插入
+            obj.value = tmpStr.substring(0, startPos) + '- ' + tmpStr.substring(endPos, tmpStr.length);
+            obj.selectionEnd = obj.selectionStart = startPos + 2;
+        } else {
+            // 存在选中区域
+            let start = startPos
+            while (start > 0 && tmpStr.substring(start - 1, start) !== '\n') {
+                start--
+            }
+            let selectStr = tmpStr.substring(start, endPos)
+            let newSelectStr = selectStr.replace(/\n/g, '\n- ')
+            newSelectStr = '- ' + newSelectStr
+            obj.value = tmpStr.substring(0, start) + newSelectStr + tmpStr.substring(endPos, tmpStr.length);
+            obj.selectionStart = start
+            obj.selectionEnd = endPos + newSelectStr.length - selectStr.length;
+        }
+    } else {
+        alert('Error: Browser version is too low')
+        // obj.value += str;
+    }
+    // 触发change事件
+    $vm.d_value = obj.value
+    obj.focus();
+}
+// 插入tab
+export const insertTab = ($vm, tab) => {
+    tab = tab ? (new Array(tab)).fill(' ').join('') : '\t'
+    let obj = $vm.getTextareaDom();
+    if (isExistSelectionObj(obj)) {
+        var startPos = obj.selectionStart;
+        var endPos = obj.selectionEnd;
+        var tmpStr = obj.value;
+        let lastLine = tmpStr.substring(0, startPos).split('\n').pop()
+        if (lastLine.match(/^\s*[0-9]+\.\s+\S*/)) {
+            // 有序列表
+            let temp = lastLine.replace(/(\d+)/, 1)
+            obj.value = tmpStr.substring(0, startPos - temp.length) + tab + temp + tmpStr.substring(endPos, tmpStr.length);
+        } else if (lastLine.match(/^\s*-\s+\S*/)) {
+            // 无序列表
+            obj.value = tmpStr.substring(0, startPos - lastLine.length) + tab + lastLine + tmpStr.substring(endPos, tmpStr.length);
+        } else {
+            obj.value = tmpStr.substring(0, startPos) + tab + tmpStr.substring(endPos, tmpStr.length);
+        }
+        obj.selectionStart = obj.selectionEnd = startPos + tab.length;
+    } else {
+        alert('Error: Browser version is too low')
+        // obj.value += str;
+    }
+    // 触发change事件
+    $vm.d_value = obj.value
+    obj.focus();
+}
+// shift + tab
+export const unInsertTab = ($vm, tab) => {
+    let regTab = new RegExp(tab ? `\\s{${tab}}` : '\t')
+    console.log(`regTab:`, regTab)
+    let obj = $vm.getTextareaDom();
+    if (isExistSelectionObj(obj)) {
+        var startPos = obj.selectionStart;
+        var endPos = obj.selectionEnd;
+        var tmpStr = obj.value;
+        let lastLine = tmpStr.substring(0, startPos).split('\n').pop()
+        if (lastLine.search(regTab) >= 0) {
+            // 替换最后一个制表符为空
+            obj.value = tmpStr.substring(0, startPos - lastLine.length) +  lastLine.replace(regTab, '') + tmpStr.substring(endPos, tmpStr.length);
+            obj.selectionStart = obj.selectionEnd = startPos - (tab || 1);
+        }
+    } else {
+        alert('Error: Browser version is too low')
+        // obj.value += str;
+    }
+    // 触发change事件
+    $vm.d_value = obj.value
+    obj.focus();
+}
+// 插入enter
+export const insertEnter = ($vm, event) => {
+    let obj = $vm.getTextareaDom()
+    if (isExistSelectionObj(obj)) {
+        var startPos = obj.selectionStart;
+        var endPos = obj.selectionEnd;
+        var tmpStr = obj.value;
+        // 获取光标前最后一行字符串
+        let lastLine = tmpStr.substring(0, startPos).split('\n').pop()
+        let matchListNeedChangeLine = lastLine.match(/^\s*(?:[0-9]+\.|-)\s+\S+/)
+        if (matchListNeedChangeLine) {
+            // 需要自动产生下一个列表项
+            event.preventDefault()
+            // eg: [1.  test] 仅获取[1. ]
+            let subfix = matchListNeedChangeLine.shift().match(/^\s*(?:[0-9]+\.|-)\s/).shift()
+            if (subfix.search(/-/) >= 0) {
+                // 无序列表
+                obj.value = tmpStr.substring(0, startPos) + '\n' + subfix + tmpStr.substring(endPos, tmpStr.length);
+                obj.selectionStart = obj.selectionEnd = startPos + subfix.length + 1
+            } else {
+                // 有序列表
+                let temp = subfix.replace(/(\d+)/, parseInt(subfix) + 1)
+                obj.value = tmpStr.substring(0, startPos) + '\n' + temp + tmpStr.substring(endPos, tmpStr.length);
+                obj.selectionStart = obj.selectionEnd = startPos + temp.length + 1
+            }
+        } else {
+            let matchListNeedRemoveLine = lastLine.match(/^\s*(?:[0-9]+\.|-)\s+$/)
+            if (matchListNeedRemoveLine) {
+                // 需要跳出列表
+                event.preventDefault()
+                let preLength = matchListNeedRemoveLine.shift().length
+                obj.value = tmpStr.substring(0, startPos - preLength) + '\n' + tmpStr.substring(endPos, tmpStr.length);
+                obj.selectionStart = obj.selectionEnd = startPos - preLength
+                // TODO 检测是否存在嵌套列表,自动生成上一级
+            }
+        }
+    } else {
+        alert('Error: Browser version is too low')
+    }
+    $vm.d_value = obj.value
+    obj.focus();
+}
+/**
+ * 生成导航目录
+ */
+export const getNavigation = ($vm , full) => {
+    let navigationContent;
+
+    navigationContent = $vm.$refs.navigationContent
+
+    navigationContent.innerHTML = $vm.d_render
+    let nodes = navigationContent.children
+    if (nodes.length) {
+        for (let i = 0; i < nodes.length; i++) {
+            judageH(nodes[i] , i , nodes)
+        }
+    }
+    function judageH(node , i , nodes) {
+        let reg = /^H[1-6]{1}$/;
+        if (!reg.exec(node.tagName)) {
+            node.style.display = 'none'
+        } else {
+            node.onclick = function () {
+                let vShowContent = $vm.$refs.vShowContent;
+                let vNoteEdit = $vm.$refs.vNoteEdit;
+                if ($vm.s_subfield) {
+                    // 双栏
+                    if ($vm.s_preview_switch) {
+                        // 编辑预览
+                        vNoteEdit.scrollTop = vShowContent.children[i].offsetTop * (vNoteEdit.scrollHeight - vNoteEdit.offsetHeight) / (vShowContent.scrollHeight - vShowContent.offsetHeight);
+                    } else {
+                        // todo 编辑
+                    }
+                } else {
+                    // 单栏
+                    if ($vm.s_preview_switch) {
+                        // 预览
+                        vShowContent.scrollTop = vShowContent.children[i].offsetTop;
+                    } else {
+                        // todo 编辑
+                    }
+                }
+            }
+        }
+    }
+}
+
+/**
+ * 滚动条联动
+ */
+export const scrollLink = ($event, $vm) => {
+    let element = $event.srcElement ? $event.srcElement : $event.target
+    let ratio = element.scrollTop / (element.scrollHeight - element.offsetHeight)
+    if ($vm.edit_scroll_height >= 0 && element.scrollHeight !== $vm.edit_scroll_height && (element.scrollHeight - element.offsetHeight - element.scrollTop <= 30)) {
+        // star 内容变化 导致 高度增加  且滚动条距离底部小于25px  自动滚动到底部
+        $vm.$refs.vNoteEdit.scrollTop = element.scrollHeight - element.offsetHeight
+        ratio = 1
+    }
+    $vm.edit_scroll_height = element.scrollHeight
+    // end ----
+    if ($vm.$refs.vShowContent.scrollHeight > $vm.$refs.vShowContent.offsetHeight) {
+        $vm.$refs.vShowContent.scrollTop = ($vm.$refs.vShowContent.scrollHeight - $vm.$refs.vShowContent.offsetHeight) * ratio
+    }
+}
+/**
+ * 监听浏览器fullscreen
+ * @param $vm
+ */
+export const fullscreenchange = ($vm) => {
+    // 阅读模式 全屏监听事件
+    $vm.$el.addEventListener('fullscreenchange', function (e) {
+        $vm.$toolbar_right_read_change_status()
+    }, false);
+    $vm.$el.addEventListener('mozfullscreenchange', function (e) {
+        $vm.$toolbar_right_read_change_status()
+    }, false);
+    $vm.$el.addEventListener('webkitfullscreenchange', function (e) {
+        $vm.$toolbar_right_read_change_status()
+    }, false);
+    $vm.$el.addEventListener('msfullscreenchange', function (e) {
+        $vm.$toolbar_right_read_change_status()
+    }, false);
+}
+
+/**
+ * 监听浏览器onresize
+ * @param $vm
+ */
+export const windowResize = ($vm) => {
+    function sizeToStatus() {
+        if ($vm.$el.clientWidth > 768) {
+            // > 768
+            $vm.s_subfield = $vm.subfield;
+        }
+        else {
+            // <  768
+            $vm.s_subfield = false;
+        }
+    }
+
+    sizeToStatus();
+    window.addEventListener('resize', sizeToStatus);
+}
+
+export function loadScript(src, callback) {
+    if (!(typeof callback === 'function')) {
+        callback = function() {};
+    }
+    var check = document.querySelectorAll("script[src='" + src + "']");
+    if (check.length > 0) {
+        check[0].addEventListener('load', function() {
+            callback();
+        });
+        callback();
+        return;
+    }
+    var script = document.createElement('script');
+    var head = document.getElementsByTagName('head')[0];
+    script.type = 'text/javascript';
+    script.charset = 'UTF-8';
+    script.src = src;
+    if (script.addEventListener) {
+        script.addEventListener('load', function () {
+            callback();
+        }, false);
+    } else if (script.attachEvent) {
+        script.attachEvent('onreadystatechange', function () {
+            var target = window.event.srcElement;
+            if (target.readyState === 'loaded') {
+                callback();
+            }
+        });
+    }
+    head.appendChild(script);
+}
+
+// <link href="https://cdn.bootcss.com/highlight.js/9.12.0/styles/agate.min.css" rel="stylesheet">
+export function loadLink(src, callback, id) {
+    if (!(typeof callback === 'function')) {
+        callback = function() {};
+    }
+    var check = document.querySelectorAll("link[href='" + src + "']");
+    if (check.length > 0) {
+        callback();
+        return;
+    }
+
+    if (id) {
+        var styles = document.querySelectorAll("link#" + id);
+        if (styles.length) {
+            styles[0].href = src;
+            return;
+        }
+    }
+
+    var link = document.createElement('link');
+    var head = document.getElementsByTagName('head')[0];
+    link.rel = 'stylesheet';
+    link.href = src;
+    id && (link['id'] = id);
+    if (link.addEventListener) {
+        link.addEventListener('load', function () {
+            callback();
+        }, false);
+    } else if (link.attachEvent) {
+        link.attachEvent('onreadystatechange', function () {
+            var target = window.event.srcElement;
+            if (target.readyState === 'loaded') {
+                callback();
+            }
+        });
+    }
+    head.appendChild(link);
+}
+
+export const ImagePreviewListener = ($vm) => {
+    // vShowContent
+    $vm.$refs.vShowContent.addEventListener('click', function (event) {
+        event = event ? event : window.event;
+        let ele = event.srcElement ? event.srcElement : event.target;
+        if (ele.tagName === 'IMG') {
+            if ($vm.imageClick != null) {
+                // 覆盖图片点击事件
+                $vm.imageClick(ele);
+            } else {
+                $vm.d_preview_imgsrc = ele.src;
+            }
+        }
+    })
+}
diff --git a/node_modules/mavon-editor/src/lib/core/highlight.js b/node_modules/mavon-editor/src/lib/core/highlight.js
new file mode 100644
index 0000000..80f8605
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/core/highlight.js
@@ -0,0 +1,95 @@
+/**
+ * @Author: HuaChao Chen <CHC>
+ * @Date:   2017-06-16T21:01:47+08:00
+ * @Email:  chenhuachaoxyz@gmail.com
+ * @Filename: highlight.js
+ * @Last modified by:   chc
+ * @Last modified time: 2017-11-24T19:55:22+08:00
+ * @License: MIT
+ * @Copyright: 2017
+ */
+
+import {
+    loadScript
+} from './extra-function.js'
+function highLightCode(str, callback, hljsLangFuc, hljsFuc) {
+    var hljs = window.hljs;
+    if (!hljs) {
+        if (typeof hljsFuc !== 'function') {
+            console.warn('external_link.hljs_js is not a function, hljs can not load by mavon-editor, if you want to disabled this log, set external_link.hljs_js to function');
+            callback(str);
+            return;
+        }
+        var url = hljsFuc();
+        console.warn('hljs parsing file is missing. mavon-editor will autoload', url);
+        loadScript(url, function() {
+            _highLightCode(str, callback, hljsLangFuc);
+        });
+    } else {
+        if (typeof hljsLangFuc === 'function') {
+            _highLightCode(str, callback, hljsLangFuc);
+        } else {
+            console.warn('external_link.hljs_lang is not a function, hljs will not to work');
+            callback(str);
+        }
+    }
+}
+function _highLightCode(str, callback, hljsLangFuc) {
+    var dom = document.createElement('div');
+    var hljs = window.hljs;
+    dom.innerHTML = str;
+    var pre_code = dom.querySelectorAll('pre > div.hljs > code');
+    if (pre_code && hljs && (typeof hljsLangFuc === 'function')) {
+        var flag = 0;
+        var i = 0;
+        var deal = 0;
+        var not_include_lang = {}; // these lang parse file need to be include.
+        var url = '';
+        for (i = 0; i < pre_code.length; i++) {
+            var lang = pre_code[i].className.toLowerCase();
+            if (lang.length > 0) {
+                // if this lang parse file missing
+                url = hljsLangFuc(lang);
+                if (!hljs.getLanguage(lang) && !not_include_lang.hasOwnProperty(lang) && url.length > 0) {
+                    not_include_lang[lang] = url;
+                }
+            }
+        }
+        // we need to include these lang parse file manually
+        var need_langs = [];
+        for (var key in not_include_lang) {
+            if (not_include_lang.hasOwnProperty(key)) {
+                need_langs.push(key);
+            }
+        }
+        for (i = 0; i < need_langs.length; i++) {
+            url = not_include_lang[need_langs[i]];
+            loadScript(url, function() {
+                deal = deal + 1;
+                if (deal === need_langs.length) {
+                    for (var i = 0; i < pre_code.length; i++) {
+                        var lang = pre_code[i].className;
+                        // if lang is valid.
+                        if (lang.length > 0 && hljs.getLanguage(lang)) {
+                            hljs.highlightBlock(pre_code[i])
+                        }
+                    }
+                    callback(dom.innerHTML);
+                }
+            });
+        }
+        if (need_langs.length === 0) {
+            for (i = 0; i < pre_code.length; i++) {
+                 lang = pre_code[i].className;
+                // if lang is valid.
+                if (lang.length > 0 && hljs.getLanguage(lang)) {
+                    hljs.highlightBlock(pre_code[i])
+                }
+            }
+            callback(dom.innerHTML);
+        }
+    } else {
+        callback(dom.innerHTML);
+    }
+}
+export default highLightCode;
diff --git a/node_modules/mavon-editor/src/lib/core/hljs/lang.hljs.css.js b/node_modules/mavon-editor/src/lib/core/hljs/lang.hljs.css.js
new file mode 100644
index 0000000..41c13b4
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/core/hljs/lang.hljs.css.js
@@ -0,0 +1,70 @@
+export default {
+    agate: 1,
+    androidstudio: 1,
+    'arduino-light': 1,
+    arta: 1,
+    ascetic: 1,
+    'atom-one-dark': 1,
+    'atom-one-light': 1,
+    'brown-paper': 1,
+    'codepen-embed': 1,
+    'color-brewer': 1,
+    dark: 1,
+    default: 1,
+    docco: 1,
+    far: 1,
+    foundation: 1,
+    github: 1,
+    googlecode: 1,
+    grayscale: 1,
+    hybrid: 1,
+    idea: 1,
+    'ir-black': 1,
+    magula: 1,
+    'mono-blue': 1,
+    'monokai-sublime': 1,
+    monokai: 1,
+    obsidian: 1,
+    'paraiso-dark': 1,
+    'paraiso-light': 1,
+    pojoaque: 1,
+    purebasic: 1,
+    rainbow: 1,
+    routeros: 1,
+    'school-book': 1,
+    sunburst: 1,
+    'tomorrow-night-blue': 1,
+    'tomorrow-night-bright': 1,
+    vs: 1,
+    vs2015: 1,
+    xcode: 1,
+    xt256: 1,
+    'a11y-dark': 1,
+    'a11y-light': 1,
+    'an-old-hope': 1,
+    'atom-one-dark-reasonable': 1,
+    'brown-pap': 1,
+    devibeans: 1,
+    'github-dark': 1,
+    'github-dark-dimmed': 1,
+    gml: 1,
+    'gradient-dark': 1,
+    'gradient-light': 1,
+    'isbl-editor-dark': 1,
+    'isbl-editor-light': 1,
+    'kimbie-dark': 1,
+    'kimbie-light': 1,
+    lightfair: 1,
+    lioshi: 1,
+    'night-owl': 1,
+    'nnfx-dark': 1,
+    'nnfx-light': 1,
+    nord: 1,
+    pojo: 1,
+    'qtcreator-dark': 1,
+    'qtcreator-light': 1,
+    'shades-of-purple': 1,
+    srcery: 1,
+    'stackoverflow-dark': 1,
+    'stackoverflow-light': 1
+  };
diff --git a/node_modules/mavon-editor/src/lib/core/hljs/lang.hljs.js b/node_modules/mavon-editor/src/lib/core/hljs/lang.hljs.js
new file mode 100644
index 0000000..120636a
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/core/hljs/lang.hljs.js
@@ -0,0 +1,322 @@
+export default {
+    '1c': '1c',
+    'abnf': 'abnf',
+    'accesslog': 'accesslog',
+    'actionscript': 'actionscript',
+    'as': 'actionscript',
+    'ada': 'ada',
+    'apache': 'apache',
+    'apacheconf': 'apache',
+    'applescript': 'applescript',
+    'osascript': 'applescript',
+    'arduino': 'arduino',
+    'armasm': 'armasm',
+    'arm': 'armasm',
+    'asciidoc': 'asciidoc',
+    'adoc': 'asciidoc',
+    'aspectj': 'aspectj',
+    'autohotkey': 'autohotkey',
+    'ahk': 'autohotkey',
+    'autoit': 'autoit',
+    'avrasm': 'avrasm',
+    'awk': 'awk',
+    'axapta': 'axapta',
+    'bash': 'bash',
+    'sh': 'bash',
+    'zsh': 'bash',
+    'basic': 'basic',
+    'bnf': 'bnf',
+    'brainfuck': 'brainfuck',
+    'bf': 'brainfuck',
+    'cal': 'cal',
+    'capnproto': 'capnproto',
+    'capnp': 'capnproto',
+    'ceylon': 'ceylon',
+    'clean': 'clean',
+    'icl': 'clean',
+    'dcl': 'clean',
+    'clojure-repl': 'clojure-repl',
+    'clojure': 'clojure',
+    'clj': 'clojure',
+    'cmake': 'cmake',
+    'cmake.in': 'cmake',
+    'coffeescript': 'coffeescript',
+    'coffee': 'coffeescript',
+    'cson': 'coffeescript',
+    'iced': 'coffeescript',
+    'coq': 'coq',
+    'cos': 'cos',
+    'cls': 'cos',
+    'cpp': 'cpp',
+    'c': 'cpp',
+    'cc': 'cpp',
+    'h': 'cpp',
+    'c++': 'cpp',
+    'h++': 'cpp',
+    'hpp': 'cpp',
+    'crmsh': 'crmsh',
+    'crm': 'crmsh',
+    'pcmk': 'crmsh',
+    'crystal': 'crystal',
+    'cr': 'crystal',
+    'cs': 'cs',
+    'csharp': 'cs',
+    'csp': 'csp',
+    'css': 'css',
+    'd': 'd',
+    'dart': 'dart',
+    'delphi': 'delphi',
+    'dpr': 'delphi',
+    'dfm': 'delphi',
+    'pas': 'delphi',
+    'pascal': 'delphi',
+    'freepascal': 'delphi',
+    'lazarus': 'delphi',
+    'lpr': 'delphi',
+    'lfm': 'delphi',
+    'diff': 'diff',
+    'patch': 'diff',
+    'django': 'django',
+    'jinja': 'django',
+    'dns': 'dns',
+    'bind': 'dns',
+    'zone': 'dns',
+    'dockerfile': 'dockerfile',
+    'docker': 'dockerfile',
+    'dos': 'dos',
+    'bat': 'dos',
+    'cmd': 'dos',
+    'dsconfig': 'dsconfig',
+    'dts': 'dts',
+    'dust': 'dust',
+    'dst': 'dust',
+    'ebnf': 'ebnf',
+    'elixir': 'elixir',
+    'elm': 'elm',
+    'erb': 'erb',
+    'erlang-repl': 'erlang-repl',
+    'erlang': 'erlang',
+    'erl': 'erlang',
+    'excel': 'excel',
+    'xlsx': 'excel',
+    'xls': 'excel',
+    'fix': 'fix',
+    'flix': 'flix',
+    'fortran': 'fortran',
+    'f90': 'fortran',
+    'f95': 'fortran',
+    'fsharp': 'fsharp',
+    'fs': 'fsharp',
+    'gams': 'gams',
+    'gms': 'gams',
+    'gauss': 'gauss',
+    'gss': 'gauss',
+    'gcode': 'gcode',
+    'nc': 'gcode',
+    'gherkin': 'gherkin',
+    'feature': 'gherkin',
+    'glsl': 'glsl',
+    'go': 'go',
+    'golang': 'go',
+    'golo': 'golo',
+    'gradle': 'gradle',
+    'groovy': 'groovy',
+    'haml': 'haml',
+    'handlebars': 'handlebars',
+    'hbs': 'handlebars',
+    'html.hbs': 'handlebars',
+    'html.handlebars': 'handlebars',
+    'haskell': 'haskell',
+    'hs': 'haskell',
+    'haxe': 'haxe',
+    'hx': 'haxe',
+    'hsp': 'hsp',
+    'htmlbars': 'htmlbars',
+    'http': 'http',
+    'https': 'http',
+    'hy': 'hy',
+    'hylang': 'hy',
+    'inform7': 'inform7',
+    'i7': 'inform7',
+    'ini': 'ini',
+    'toml': 'ini',
+    'irpf90': 'irpf90',
+    'java': 'java',
+    'jsp': 'java',
+    'javascript': 'javascript',
+    'js': 'javascript',
+    'jsx': 'javascript',
+    'jboss-cli': 'jboss-cli',
+    'wildfly-cli': 'jboss-cli',
+    'json': 'json',
+    'julia-repl': 'julia-repl',
+    'julia': 'julia',
+    'kotlin': 'kotlin',
+    'lasso': 'lasso',
+    'ls': 'livescript',
+    'lassoscript': 'lasso',
+    'ldif': 'ldif',
+    'leaf': 'leaf',
+    'less': 'less',
+    'lisp': 'lisp',
+    'livecodeserver': 'livecodeserver',
+    'livescript': 'livescript',
+    'llvm': 'llvm',
+    'lsl': 'lsl',
+    'lua': 'lua',
+    'makefile': 'makefile',
+    'mk': 'makefile',
+    'mak': 'makefile',
+    'markdown': 'markdown',
+    'md': 'markdown',
+    'mkdown': 'markdown',
+    'mkd': 'markdown',
+    'mathematica': 'mathematica',
+    'mma': 'mathematica',
+    'matlab': 'matlab',
+    'maxima': 'maxima',
+    'mel': 'mel',
+    'mercury': 'mercury',
+    'm': 'mercury',
+    'moo': 'mercury',
+    'mipsasm': 'mipsasm',
+    'mips': 'mipsasm',
+    'mizar': 'mizar',
+    'mojolicious': 'mojolicious',
+    'monkey': 'monkey',
+    'moonscript': 'moonscript',
+    'moon': 'moonscript',
+    'n1ql': 'n1ql',
+    'nginx': 'nginx',
+    'nginxconf': 'nginx',
+    'nimrod': 'nimrod',
+    'nim': 'nimrod',
+    'nix': 'nix',
+    'nixos': 'nix',
+    'nsis': 'nsis',
+    'objectivec': 'objectivec',
+    'mm': 'objectivec',
+    'objc': 'objectivec',
+    'obj-c': 'objectivec',
+    'ocaml': 'ocaml',
+    'ml': 'sml',
+    'openscad': 'openscad',
+    'scad': 'openscad',
+    'oxygene': 'oxygene',
+    'parser3': 'parser3',
+    'perl': 'perl',
+    'pl': 'perl',
+    'pm': 'perl',
+    'pf': 'pf',
+    'pf.conf': 'pf',
+    'php': 'php',
+    'php3': 'php',
+    'php4': 'php',
+    'php5': 'php',
+    'php6': 'php',
+    'pony': 'pony',
+    'powershell': 'powershell',
+    'ps': 'powershell',
+    'processing': 'processing',
+    'profile': 'profile',
+    'prolog': 'prolog',
+    'protobuf': 'protobuf',
+    'puppet': 'puppet',
+    'pp': 'puppet',
+    'purebasic': 'purebasic',
+    'pb': 'purebasic',
+    'pbi': 'purebasic',
+    'python': 'python',
+    'py': 'python',
+    'gyp': 'python',
+    'q': 'q',
+    'k': 'q',
+    'kdb': 'q',
+    'qml': 'qml',
+    'qt': 'qml',
+    'r': 'r',
+    'rib': 'rib',
+    'roboconf': 'roboconf',
+    'graph': 'roboconf',
+    'instances': 'roboconf',
+    'routeros': 'routeros',
+    'mikrotik': 'routeros',
+    'rsl': 'rsl',
+    'ruby': 'ruby',
+    'rb': 'ruby',
+    'gemspec': 'ruby',
+    'podspec': 'ruby',
+    'thor': 'ruby',
+    'irb': 'ruby',
+    'ruleslanguage': 'ruleslanguage',
+    'rust': 'rust',
+    'rs': 'rust',
+    'scala': 'scala',
+    'scheme': 'scheme',
+    'scilab': 'scilab',
+    'sci': 'scilab',
+    'scss': 'scss',
+    'shell': 'shell',
+    'console': 'shell',
+    'smali': 'smali',
+    'smalltalk': 'smalltalk',
+    'st': 'smalltalk',
+    'sml': 'sml',
+    'sqf': 'sqf',
+    'sql': 'sql',
+    'stan': 'stan',
+    'stata': 'stata',
+    'do': 'stata',
+    'ado': 'stata',
+    'step21': 'step21',
+    'p21': 'step21',
+    'step': 'step21',
+    'stp': 'step21',
+    'stylus': 'stylus',
+    'styl': 'stylus',
+    'subunit': 'subunit',
+    'swift': 'swift',
+    'taggerscript': 'taggerscript',
+    'tap': 'tap',
+    'tcl': 'tcl',
+    'tk': 'tcl',
+    'tex': 'tex',
+    'thrift': 'thrift',
+    'tp': 'tp',
+    'twig': 'twig',
+    'craftcms': 'twig',
+    'typescript': 'typescript',
+    'ts': 'typescript',
+    'vala': 'vala',
+    'vbnet': 'vbnet',
+    'vb': 'vbnet',
+    'vbscript-html': 'vbscript-html',
+    'vbscript': 'vbscript',
+    'vbs': 'vbscript',
+    'verilog': 'verilog',
+    'v': 'verilog',
+    'sv': 'verilog',
+    'svh': 'verilog',
+    'vhdl': 'vhdl',
+    'vim': 'vim',
+    'x86asm': 'x86asm',
+    'xl': 'xl',
+    'tao': 'xl',
+    'xml': 'xml',
+    'html': 'xml',
+    'xhtml': 'xml',
+    'rss': 'xml',
+    'atom': 'xml',
+    'xjb': 'xml',
+    'xsd': 'xml',
+    'xsl': 'xml',
+    'plist': 'xml',
+    'xquery': 'xquery',
+    'xpath': 'xquery',
+    'xq': 'xquery',
+    'yaml': 'yaml',
+    'yml': 'yaml',
+    'YAML': 'yaml',
+    'zephir': 'zephir',
+    'zep': 'zephir'
+};
diff --git a/node_modules/mavon-editor/src/lib/core/keydown-listen.js b/node_modules/mavon-editor/src/lib/core/keydown-listen.js
new file mode 100644
index 0000000..0d2b4ad
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/core/keydown-listen.js
@@ -0,0 +1,359 @@
+/**
+ * @Author: HuaChao Chen <CHC>
+ * @Date:   2017-05-03T00:31:20+08:00
+ * @Email:  chenhuachaoxyz@gmail.com
+ * @Filename: keydown-listen.js
+ * @Last modified by:   chenhuachao
+ * @Last modified time: 2017-12-04T00:03:33+08:00
+ * @License: MIT
+ * @Copyright: 2017
+ */
+
+/**
+ * Created by zhy on 2017/4/24.
+ */
+const KEY_CODE = {
+    F8: 119,
+    F9: 120,
+    F10: 121,
+    F11: 122,
+    F12: 123,
+    B: 66,
+    I: 73,
+    H: 72,
+    U: 85,
+    D: 68,
+    M:77 ,
+    Q: 81,
+    O: 79,
+    L: 76,
+    S: 83,
+    Z: 90,
+    Y: 89,
+    C: 67,
+    T: 84,
+    R: 82,
+    DELETE: 8,
+    TAB: 9,
+    ENTER: 13,
+    ONE: 97,
+    TWO: 98,
+    THREE: 99,
+    FOUR: 100,
+    FIVE: 101,
+    SIX: 102,
+    _ONE: 49,
+    _TWO: 50,
+    _THREE: 51,
+    _FOUR: 52,
+    _FIVE: 53,
+    _SIX: 54
+};
+export const keydownListen = ($vm) => {
+    if (!$vm.shortCut)
+    {
+        return
+    }
+    $vm.$el.addEventListener('keydown', function (e) {
+        // 注册监听键盘事件
+        if (!(e.ctrlKey || e.metaKey) && !e.altKey && !e.shiftKey) {
+            // one key
+            switch (e.keyCode) {
+                case KEY_CODE.F8: {
+                    // F8 导航
+                    if ($vm.toolbars.navigation) {
+                        e.preventDefault()
+                        $vm.toolbar_right_click('navigation')
+                    }
+                    break;
+                }
+                case KEY_CODE.F9: {
+                    // F9 预览模式
+                    if ($vm.toolbars.preview) {
+                        e.preventDefault()
+                        $vm.toolbar_right_click('preview')
+                    }
+                    break;
+                }
+                case KEY_CODE.F10: {
+                    // F10 全屏
+                    if ($vm.toolbars.fullscreen) {
+                        e.preventDefault()
+                        $vm.toolbar_right_click('fullscreen')
+                    }
+                    break;
+                }
+                case KEY_CODE.F11: {
+                    // F11 阅读
+                    if ($vm.toolbars.readmodel) {
+                        e.preventDefault()
+                        $vm.toolbar_right_click('read')
+                    }
+                    break;
+                }
+                case KEY_CODE.F12: {
+                    // F12 单双栏切换
+                    if ($vm.toolbars.subfield) {
+                        e.preventDefault()
+                        $vm.toolbar_right_click('subfield')
+                    }
+                    break;
+                }
+                case KEY_CODE.TAB: {
+                    // TAB
+                    if (!$vm.$refs.toolbar_left.s_img_link_open) {
+                        e.preventDefault()
+                        $vm.insertTab();
+                    }
+                    break;
+                }
+                case KEY_CODE.ENTER: {
+                // enter
+                if ($vm.$refs.toolbar_left.s_img_link_open) {
+                    // 当添加外部链接的弹出层打开时, enter表示确定输入此链接
+                    e.preventDefault()
+                    $vm.$refs.toolbar_left.$imgLinkAdd();
+                } else {
+                    // 在文本框中输入enter
+                    $vm.insertEnter(e)
+                }
+                break;
+            }
+            }
+        } else if ((e.ctrlKey || e.metaKey) && !e.altKey && !e.shiftKey) {
+            // ctrl +
+            switch (e.keyCode) {
+                case KEY_CODE.B: {
+                    // B
+                    e.preventDefault()
+                    $vm.toolbar_left_click('bold')
+                    break;
+                }
+                case KEY_CODE.I: {
+                    // I
+                    e.preventDefault()
+                    $vm.toolbar_left_click('italic')
+                    break;
+                }
+                case KEY_CODE.H: {
+                    // H
+                    e.preventDefault()
+                    $vm.toolbar_left_click('header')
+                    break;
+                }
+                case KEY_CODE.U: {
+                    // U
+                    e.preventDefault()
+                    $vm.toolbar_left_click('underline')
+                    break;
+                }
+                case KEY_CODE.D: {
+                    // D
+                    e.preventDefault()
+                    $vm.toolbar_left_click('removeLine')
+                    break;
+                }
+                case KEY_CODE.M: {
+                    // M
+                    e.preventDefault()
+                    $vm.toolbar_left_click('mark')
+                    break;
+                }
+                case KEY_CODE.Q: {
+                    // Q
+                    e.preventDefault()
+                    $vm.toolbar_left_click('quote')
+                    break;
+                }
+                case KEY_CODE.O: {
+                    // O
+                    e.preventDefault()
+                    $vm.toolbar_left_click('ol')
+                    break;
+                }
+                case KEY_CODE.L: {
+                    // L
+                    e.preventDefault()
+                    $vm.toolbar_left_click('link')
+                    break;
+                }
+                case KEY_CODE.S: {
+                    // S
+                    e.preventDefault()
+                    $vm.toolbar_left_click('save')
+                    break;
+                }
+                case KEY_CODE.Z: {
+                    // Z
+                    e.preventDefault()
+                    $vm.toolbar_left_click('undo')
+                    break;
+                }
+                case KEY_CODE.Y: {
+                    // Y
+                    e.preventDefault()
+                    $vm.toolbar_left_click('redo')
+                    break;
+                }
+                case KEY_CODE.DELETE: {
+                    // delete
+                    e.preventDefault()
+                    $vm.toolbar_left_click('trash')
+                    break;
+                }
+                case KEY_CODE.ONE: {
+                    // ONE
+                    e.preventDefault()
+                    $vm.toolbar_left_click('header1')
+                    break;
+                }
+                case KEY_CODE.TWO: {
+                    // TWO
+                    e.preventDefault()
+                    $vm.toolbar_left_click('header2')
+                    break;
+                }
+                case KEY_CODE.THREE: {
+                    // THREE
+                    e.preventDefault()
+                    $vm.toolbar_left_click('header3')
+                    break;
+                }
+                case KEY_CODE.FOUR: {
+                    // FOUR
+                    e.preventDefault()
+                    $vm.toolbar_left_click('header4')
+                    break;
+                }
+                case KEY_CODE.FIVE: {
+                    // FIVE
+                    e.preventDefault()
+                    $vm.toolbar_left_click('header5')
+                    break;
+                }
+                case KEY_CODE.SIX: {
+                    // SIX
+                    e.preventDefault()
+                    $vm.toolbar_left_click('header6')
+                    break;
+                }
+                case KEY_CODE._ONE: {
+                    // ONE
+                    e.preventDefault()
+                    $vm.toolbar_left_click('header1')
+                    break;
+                }
+                case KEY_CODE._TWO: {
+                    // TWO
+                    e.preventDefault()
+                    $vm.toolbar_left_click('header2')
+                    break;
+                }
+                case KEY_CODE._THREE: {
+                    // THREE
+                    e.preventDefault()
+                    $vm.toolbar_left_click('header3')
+                    break;
+                }
+                case KEY_CODE._FOUR: {
+                    // FOUR
+                    e.preventDefault()
+                    $vm.toolbar_left_click('header4')
+                    break;
+                }
+                case KEY_CODE._FIVE: {
+                    // FIVE
+                    e.preventDefault()
+                    $vm.toolbar_left_click('header5')
+                    break;
+                }
+                case KEY_CODE._SIX: {
+                    // SIX
+                    e.preventDefault()
+                    $vm.toolbar_left_click('header6')
+                    break;
+                }
+            }
+        } else if ((e.ctrlKey || e.metaKey) && e.altKey && !e.shiftKey) {
+            // ctrl + alt +
+            switch (e.keyCode) {
+                case KEY_CODE.S: {
+                    // S
+                    e.preventDefault()
+                    $vm.toolbar_left_click('superscript')
+                    break;
+                }
+                case KEY_CODE.U: {
+                    // U
+                    e.preventDefault()
+                    $vm.toolbar_left_click('ul')
+                    break;
+                }
+                case KEY_CODE.L: {
+                    // L
+                    e.preventDefault()
+                    $vm.toolbar_left_click('imagelink')
+                    break;
+                }
+                case KEY_CODE.C: {
+                    // C
+                    e.preventDefault()
+                    $vm.toolbar_left_click('code')
+                    break;
+                }
+                case KEY_CODE.T: {
+                    // T
+                    e.preventDefault()
+                    $vm.toolbar_left_click('table')
+                    break;
+                }
+            }
+        } else if ((e.ctrlKey || e.metaKey) && e.shiftKey && !e.altKey) {
+            // ctrl + shift
+            switch (e.keyCode) {
+                case KEY_CODE.S: {
+                    // S
+                    e.preventDefault()
+                    $vm.toolbar_left_click('subscript')
+                    break;
+                }
+                case KEY_CODE.D: {
+                    // D
+                    e.preventDefault()
+                    $vm.toolbar_left_click('strikethrough')
+                    break;
+                }
+                case KEY_CODE.L: {
+                    // D
+                    e.preventDefault()
+                    $vm.toolbar_left_click('alignleft')
+                    break;
+                }
+                case KEY_CODE.R: {
+                    // D
+                    e.preventDefault()
+                    $vm.toolbar_left_click('alignright')
+                    break;
+                }
+                case KEY_CODE.C: {
+                    // D
+                    e.preventDefault()
+                    $vm.toolbar_left_click('aligncenter')
+                    break;
+                }
+            }
+        } else if (!(e.ctrlKey || e.metaKey) && e.shiftKey && !e.altKey) {
+            // shift +
+            switch (e.keyCode) {
+                case KEY_CODE.TAB: {
+                    // TAB
+                    if (!$vm.$refs.toolbar_left.s_img_link_open) {
+                        e.preventDefault()
+                        $vm.unInsertTab();
+                    }
+                    break;
+                }
+            }
+        }
+    });
+}
diff --git a/node_modules/mavon-editor/src/lib/core/markdown.js b/node_modules/mavon-editor/src/lib/core/markdown.js
new file mode 100644
index 0000000..6de0444
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/core/markdown.js
@@ -0,0 +1,90 @@
+/**
+ * @Author: HuaChao Chen <CHC>
+ * @Date:   2017-05-03T00:31:20+08:00
+ * @Email:  chenhuachaoxyz@gmail.com
+ * @Filename: markdown.js
+ * @Last modified by:   chc
+ * @Last modified time: 2017-11-26T16:40:54+08:00
+ * @License: MIT
+ * @Copyright: 2017
+ */
+
+import hljsLangs from './hljs/lang.hljs.js'
+
+/**
+ * Created by zhy on 2017/3/30.
+ */
+// default mode
+var markdown_config = {
+    html: true,        // Enable HTML tags in source
+    xhtmlOut: true,        // Use '/' to close single tags (<br />).
+    breaks: true,        // Convert '\n' in paragraphs into <br>
+    langPrefix: 'language-',  // CSS language prefix for fenced blocks. Can be
+    linkify: false,        // 自动识别url
+    typographer: true,
+    quotes: '“”‘’',
+    highlight: function (str, lang) {
+        if (lang && hljsLangs[lang]) {
+            return '<pre><div class="hljs"><code class="' + lang + '">' + markdown.utils.escapeHtml(str) + '</code></div></pre>';
+        }
+        return '<pre><code class="' + lang + '">' + markdown.utils.escapeHtml(str) + '</code></pre>';
+    }
+}
+var markdown = require('markdown-it')(markdown_config);
+// 表情
+var emoji = require('markdown-it-emoji');
+// 下标
+var sub = require('markdown-it-sub')
+// 上标
+var sup = require('markdown-it-sup')
+// <dl/>
+var deflist = require('markdown-it-deflist')
+// <abbr/>
+var abbr = require('markdown-it-abbr')
+// footnote
+var footnote = require('markdown-it-footnote')
+// insert 带有下划线 样式 ++ ++
+var insert = require('markdown-it-ins')
+// mark
+var mark = require('markdown-it-mark')
+// taskLists
+var taskLists = require('markdown-it-task-lists')
+//
+var container = require('markdown-it-container')
+// add target="_blank" to all link
+var defaultRender = markdown.renderer.rules.link_open || function(tokens, idx, options, env, self) {
+    return self.renderToken(tokens, idx, options);
+};
+markdown.renderer.rules.link_open = function (tokens, idx, options, env, self) {
+    // If you are sure other plugins can't add `target` - drop check below
+    var aIndex = tokens[idx].attrIndex('target');
+
+    if (aIndex < 0) {
+        tokens[idx].attrPush(['target', '_blank']); // add new attribute
+    } else {
+        tokens[idx].attrs[aIndex][1] = '_blank';    // replace value of existing attr
+    }
+
+    // pass token to default renderer.
+    return defaultRender(tokens, idx, options, env, self);
+};
+// math katex
+var katex = require('markdown-it-katex-external');
+var miip = require('markdown-it-images-preview');
+markdown.use(emoji)
+    .use(taskLists)
+    .use(sup)
+    .use(sub)
+    .use(container)
+    .use(container, 'hljs-left') /* align left */
+    .use(container, 'hljs-center')/* align center */
+    .use(container, 'hljs-right')/* align right */
+    .use(deflist)
+    .use(abbr)
+    .use(footnote)
+    .use(insert)
+    .use(mark)
+    .use(container)
+    .use(miip)
+    .use(katex)
+export default markdown
diff --git a/node_modules/mavon-editor/src/lib/core/onecolumn-event.js b/node_modules/mavon-editor/src/lib/core/onecolumn-event.js
new file mode 100644
index 0000000..d2a98d1
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/core/onecolumn-event.js
@@ -0,0 +1,159 @@
+/**
+ * Created by zhy on 2017/4/24.
+ */
+/**
+ * keydown enter
+ */
+export const onecolumnKeyDownEnter = ($event , $vm , tomarkdown) => {
+    let element = $event.srcElement ? $event.srcElement : $event.target
+    let sel = window.getSelection();
+    let range = sel.getRangeAt(0);
+    // code中回车处理
+    if (range.startContainer.tagName === 'CODE' || range.startContainer.tagName === 'PRE') {
+        $event.preventDefault()
+        onecolumnInsert(range.startContainer , '\n')
+    } else if (range.startContainer.parentElement.tagName === 'CODE' || range.startContainer.parentElement.tagName === 'PRE') {
+        $event.preventDefault()
+        onecolumnInsert(range.startContainer.parentElement , '\n')
+    } else if (!blockQuoteDoubleEnter(range.startContainer , $event , range.startContainer)) {
+        $vm.s_table_enter = false
+        judgeRender(range.startContainer , $event , range.startContainer , range.startContainer , $vm)
+        /* if (result) {
+         range = range.cloneRange();
+         // code的渲染
+         if (result.children !== null && result.children.length > 0 && result.children[0].tagName === 'PRE') {
+         result.children[0].children[0].innerHTML = '\n'
+         result.innerHTML += '<div><br/></div>'
+         range.setStartAfter(result.children[0].children[0]);
+         } else if (result.lastChild) {
+         range.setStartAfter(result.lastChild);
+         } else {
+         range.setStartAfter(result);
+         }
+         range.collapse(true);
+         sel.removeAllRanges();
+         sel.addRange(range);
+         } */
+    }
+    $vm.d_value = tomarkdown(element.innerHTML)
+}
+/**
+ * insert
+ */
+export const onecolumnInsert = (dom , html) => {
+    dom.focus()
+    var sel
+    var range
+    if (window.getSelection) {
+        // IE9 and non-IE
+        sel = window.getSelection();
+        if (sel.getRangeAt && sel.rangeCount) {
+            range = sel.getRangeAt(0);
+            range.deleteContents();
+            // Range.createContextualFragment() would be useful here but is
+            // non-standard and not supported in all browsers (IE9, for one)
+            var el = document.createElement('div');
+            el.innerHTML = html;
+            var frag = document.createDocumentFragment()
+            var node
+            var lastNode
+            while ((node = el.firstChild)) {
+                lastNode = frag.appendChild(node);
+            }
+            range.insertNode(frag);
+            // Preserve the selection
+            if (lastNode) {
+                range = range.cloneRange();
+                range.setStartAfter(lastNode);
+                range.collapse(true);
+                sel.removeAllRanges();
+                sel.addRange(range);
+            }
+        }
+    } else if (document.selection && document.selection.type !== 'Control') {
+        // IE < 9
+        document.selection.createRange().pasteHTML(html);
+    }
+}
+/**
+ * 连续两次在段落中换行 跳出段落
+ */
+export const blockQuoteDoubleEnter = (dom , $event , self) => {
+    if (dom.tagName) {
+        if (dom.getAttribute('class') === 'content-div content-div-edit') {
+            return false
+        } else if (dom.tagName === 'BLOCKQUOTE') {
+            if (!self.innerText || self.innerText === '\n' || self.innerText === '') {
+                $event.preventDefault()
+                let sel = window.getSelection();
+                let range = sel.getRangeAt(0);
+                let next = dom.nextSibling
+                self.outerHTML = ''
+                dom.outerHTML += '<div><br/></div>'
+                range = range.cloneRange()
+                range.setStartAfter(next.previousSibling.lastChild);
+                range.collapse(true);
+                sel.removeAllRanges();
+                sel.addRange(range);
+            }
+            return true
+        }
+        return blockQuoteDoubleEnter(dom.parentElement, $event , dom)
+    } else {
+        return blockQuoteDoubleEnter(dom.parentElement, $event , dom)
+    }
+}
+/**
+ * 在表格中回车特殊处理(暂时只做表格回车 , 后续可能拓展)
+ */
+export const judgeRender = (dom , $event , self , pre , $vm) => {
+    if (dom.tagName) {
+        if (dom.tagName === 'TABLE') {
+            $vm.s_table_enter = true
+            self = dom
+        }
+        if (dom.getAttribute('class') === 'content-div content-div-edit') {
+            // 在表格中回车 在表格后换行
+            if ($vm.s_table_enter) {
+                let sel = window.getSelection();
+                let range = sel.getRangeAt(0);
+                range = range.cloneRange()
+                $event.preventDefault()
+                let next = self.nextSibling
+                self.outerHTML += '<div><br/></div>'
+                range.setStartAfter(next.previousSibling.lastChild);
+                range.collapse(true);
+                sel.removeAllRanges();
+                sel.addRange(range);
+            }
+            return;
+        }
+        judgeRender(dom.parentElement , $event , self , dom , $vm)
+        /* let obj = document.createElement('div')
+         obj.innerHTML = markdown.render(dom.innerHTML.replace('&gt;' , '>'))
+         var objText = obj.innerText
+         var domText = dom.innerText
+         var objTextNoSpaceEnter = objText.replace(/\s+/g, '').replace(/[\r\n]/g, '')
+         var domTextNoSpaceEnter = domText.replace(/\s+/g, '').replace(/[\r\n]/g, '')
+         if (obj.children.length > 0) {
+         if (obj.children[0].innerText.replace(/\s+/g, '').replace(/[\r\n]/g, '') === domTextNoSpaceEnter || obj.children[0].innerText === domText || objText === domText || domTextNoSpaceEnter === objTextNoSpaceEnter) {
+         return judgeRender(dom.parentElement , $event , self ,dom , $vm)
+         } else {
+         // 有变化
+         $event.preventDefault()
+         dom.innerHTML = markdown.render(tomarkdown(dom.innerHTML))
+         return dom
+         }
+         } else {
+         if (objText === domText || objTextNoSpaceEnter === domTextNoSpaceEnter) {
+         return judgeRender(dom.parentElement , $event , self , dom , $vm)
+         } else {
+         // 有变化
+         dom.innerHTML = markdown.render(tomarkdown(obj.innerHTML))
+         return dom
+         }
+         } */
+    } else {
+        judgeRender(dom.parentElement , $event , self , dom , $vm)
+    }
+}
diff --git a/node_modules/mavon-editor/src/lib/core/sanitizer.js b/node_modules/mavon-editor/src/lib/core/sanitizer.js
new file mode 100644
index 0000000..bdb79a7
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/core/sanitizer.js
@@ -0,0 +1,31 @@
+import { FilterXSS } from 'xss';
+
+let xssHandler;
+
+function mavoneditor_sanitizer(state) {
+  if (!xssHandler) {
+    return;
+  }
+  sanitizer(state.tokens, ['inline', 'html_block']);
+}
+
+function sanitizer(tokens, types) {
+  let originContent, children;
+  for (let i = 0; i < tokens.length; i++) {
+    if (types.indexOf(tokens[i].type) !== -1) {
+      originContent = tokens[i].content;
+      children = tokens[i].children;
+      tokens[i].content = xssHandler.process(originContent);
+      if (children && children.length && originContent !== tokens[i].content) {
+        sanitizer(children, ['html_inline']);
+      }
+    }
+  }
+}
+
+export default function (md, xssOptions) {
+  if (md.options.html) {
+    xssHandler = new FilterXSS(xssOptions);
+    md.core.ruler.push('mavoneditor_sanitizer', mavoneditor_sanitizer);
+  }
+}
diff --git a/node_modules/mavon-editor/src/lib/core/to-markdown.js b/node_modules/mavon-editor/src/lib/core/to-markdown.js
new file mode 100644
index 0000000..d6edd1b
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/core/to-markdown.js
@@ -0,0 +1,171 @@
+/**
+ * @Author: HuaChao Chen <chc>
+ * @Date:   2017-05-03T00:31:20+08:00
+ * @Email:  chenhuachaoxyz@gmail.com
+ * @Filename: to-markdown.js
+ * @Last modified by:   chc
+ * @Last modified time: 2017-06-12T20:42:27+08:00
+ * @License: MIT
+ * @Copyright: 2017
+ */
+
+/**
+ * Created by zhy on 2017/4/9.
+ */
+var toMarkdown = require('to-markdown');
+//
+const coverterP = {
+  filter: 'P',
+  replacement: function (content) {
+    return '\n' + content
+  }
+}
+const coverterp = {
+  filter: 'p',
+  replacement: function (content) {
+    return '\n' + content
+  }
+}
+const coverterDiv = {
+  filter: 'DIV',
+  replacement: function (content) {
+    return '\n' + content
+  }
+}
+const coverterdiv = {
+  filter: 'div',
+  replacement: function (content) {
+    return '\n' + content
+  }
+}
+// 解析代码块
+const coverterCode = {
+  filter: 'pre',
+  replacement: function (content) {
+    let objE = document.createElement('div');
+    objE.innerHTML = content;
+    let codes = objE.getElementsByTagName('code')
+    if (codes !== null && codes.length > 0) {
+      let code = codes[0]
+      let codeType = code.getAttribute('class') === null ? '' : code.getAttribute('class')
+      let codeContent = code.innerText
+      return '\n```' + codeType + '\n' + codeContent + '\n```\n';
+    }
+    return '\n```\n' + content + '\n```\n';
+  }
+}
+// 解析表格
+const coverterTable = {
+  filter: 'table',
+  replacement: function (content) {
+    let table = document.createElement('table');
+    table.innerHTML = content;
+    let dom = '\n';
+    let tableMark = '';
+    let thead = table.getElementsByTagName('thead')[0];
+    let thead_tr = thead.getElementsByTagName('tr')[0];
+    let thead_th = thead_tr.getElementsByTagName('th')
+    for (let i = 0; i < thead_th.length; i++) {
+      dom += '| ' + thead_th[i].innerText + ' '
+      let text_align = thead_th[i].style.textAlign
+      if (text_align === 'left') {
+        tableMark += '| :- '
+      } else if (text_align === 'center') {
+        tableMark += '| :-: '
+      } else if (text_align === 'right') {
+        tableMark += '| -: '
+      } else {
+        tableMark += '| - '
+      }
+      if (i === thead_th.length - 1) {
+        dom += '|\n' + tableMark + ' |\n'
+      }
+    }
+    let tbody
+    if (table.getElementsByTagName('tbody')) {
+      tbody = table.getElementsByTagName('tbody')[0];
+      let tbody_tr = tbody.getElementsByTagName('tr')
+      if (tbody_tr.length > 0) {
+        for (let i = 0; i < tbody_tr.length; i++) {
+          let tbody_td = tbody_tr[i].getElementsByTagName('td')
+          for (let j = 0; j < tbody_td.length; j++) {
+            dom += '| ' + tbody_td[j].innerText + ' ';
+            if (j === tbody_td.length - 1) {
+              dom += '|\n';
+            }
+          }
+        }
+      }
+    }
+    return dom
+  }
+}
+// 上角标
+const coverterSup = {
+  filter: 'sup',
+  replacement: function (content) {
+    return '^' + content + '^';
+  }
+}
+// 下角标
+const coverterSub = {
+  filter: 'sub',
+  replacement: function (content) {
+    return '~' + content + '~';
+  }
+}
+// 下划线
+const coverterUnderline = {
+  filter: 'ins',
+  replacement: function (content) {
+    return '++' + content + '++';
+  }
+}
+// 中画线
+const coverterStrikethrough = {
+  filter: 's',
+  replacement: function (content) {
+    return '~~' + content + '~~';
+  }
+}
+// 标记
+const coverterMark = {
+  filter: 'mark',
+  replacement: function (content) {
+    return '==' + content + '==';
+  }
+}
+// 图片
+const converterImg = {
+    filter: 'img',
+    replacement: function(content, tag) {
+        var rel = tag.getAttribute('rel');
+        var alt = tag.getAttribute('alt');
+        if (rel && alt) {
+            return '![' + alt + ']' + '(' + rel + ')'
+        }
+        else {
+            var src = tag.getAttribute('src');
+            return '![' + alt + ']' + '(' + src + ')'
+        }
+    }
+}
+var tomarkdown = function (str) {
+  return toMarkdown(str, {
+    converters: [
+      coverterCode,
+      coverterTable,
+      coverterSup,
+      coverterSub,
+      coverterUnderline,
+      coverterStrikethrough,
+      coverterMark,
+      coverterP,
+      coverterp,
+      coverterDiv,
+      coverterdiv,
+      converterImg
+    ]
+  });
+}
+export default tomarkdown
diff --git a/node_modules/mavon-editor/src/lib/css/markdown.css b/node_modules/mavon-editor/src/lib/css/markdown.css
new file mode 100644
index 0000000..3cecff0
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/css/markdown.css
@@ -0,0 +1,783 @@
+@font-face {
+    font-family: octicons-link;
+    src: url(data:font/woff;charset=utf-8;base64,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) format('woff');
+}
+
+.markdown-body {
+    -ms-text-size-adjust: 100%;
+    -webkit-text-size-adjust: 100%;
+    line-height: 1.5;
+    color: #24292e;
+    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+    font-size: 16px;
+    line-height: 1.5;
+    word-wrap: break-word;
+}
+
+.markdown-body .pl-c {
+    color: #969896;
+}
+
+.markdown-body .pl-c1,
+.markdown-body .pl-s .pl-v {
+    color: #0086b3;
+}
+
+.markdown-body .pl-e,
+.markdown-body .pl-en {
+    color: #795da3;
+}
+
+.markdown-body .pl-smi,
+.markdown-body .pl-s .pl-s1 {
+    color: #333;
+}
+
+.markdown-body .pl-ent {
+    color: #63a35c;
+}
+
+.markdown-body .pl-k {
+    color: #a71d5d;
+}
+
+.markdown-body .pl-s,
+.markdown-body .pl-pds,
+.markdown-body .pl-s .pl-pse .pl-s1,
+.markdown-body .pl-sr,
+.markdown-body .pl-sr .pl-cce,
+.markdown-body .pl-sr .pl-sre,
+.markdown-body .pl-sr .pl-sra {
+    color: #183691;
+}
+
+.markdown-body .pl-v,
+.markdown-body .pl-smw {
+    color: #ed6a43;
+}
+
+.markdown-body .pl-bu {
+    color: #b52a1d;
+}
+
+.markdown-body .pl-ii {
+    color: #f8f8f8;
+    background-color: #b52a1d;
+}
+
+.markdown-body .pl-c2 {
+    color: #f8f8f8;
+    background-color: #b52a1d;
+}
+
+.markdown-body .pl-c2::before {
+    content: "^M";
+}
+
+.markdown-body .pl-sr .pl-cce {
+    font-weight: bold;
+    color: #63a35c;
+}
+
+.markdown-body .pl-ml {
+    color: #693a17;
+}
+
+.markdown-body .pl-mh,
+.markdown-body .pl-mh .pl-en,
+.markdown-body .pl-ms {
+    font-weight: bold;
+    color: #1d3e81;
+}
+
+.markdown-body .pl-mq {
+    color: #008080;
+}
+
+.markdown-body .pl-mi {
+    font-style: italic;
+    color: #333;
+}
+
+.markdown-body .pl-mb {
+    font-weight: bold;
+    color: #333;
+}
+
+.markdown-body .pl-md {
+    color: #bd2c00;
+    background-color: #ffecec;
+}
+
+.markdown-body .pl-mi1 {
+    color: #55a532;
+    background-color: #eaffea;
+}
+
+.markdown-body .pl-mc {
+    color: #ef9700;
+    background-color: #ffe3b4;
+}
+
+.markdown-body .pl-mi2 {
+    color: #d8d8d8;
+    background-color: #808080;
+}
+
+.markdown-body .pl-mdr {
+    font-weight: bold;
+    color: #795da3;
+}
+
+.markdown-body .pl-mo {
+    color: #1d3e81;
+}
+
+.markdown-body .pl-ba {
+    color: #595e62;
+}
+
+.markdown-body .pl-sg {
+    color: #c0c0c0;
+}
+
+.markdown-body .pl-corl {
+    text-decoration: underline;
+    color: #183691;
+}
+
+.markdown-body .octicon {
+    display: inline-block;
+    vertical-align: text-top;
+    fill: currentColor;
+}
+
+.markdown-body a {
+    background-color: transparent;
+    -webkit-text-decoration-skip: objects;
+}
+
+.markdown-body a:active,
+.markdown-body a:hover {
+    outline-width: 0;
+}
+
+.markdown-body strong {
+    font-weight: inherit;
+}
+
+.markdown-body strong {
+    font-weight: bolder;
+}
+
+.markdown-body h1 {
+    font-size: 2.4em;
+    margin: 0.67em 0;
+}
+
+.markdown-body img {
+    border-style: none;
+}
+
+.markdown-body svg:not(:root) {
+    overflow: hidden;
+}
+
+.markdown-body code,
+.markdown-body kbd,
+.markdown-body pre {
+    font-family: monospace, monospace;
+    font-size: 1em;
+}
+
+.markdown-body hr {
+    box-sizing: content-box;
+    height: 0;
+    overflow: visible;
+}
+
+.markdown-body input {
+    font: inherit;
+    margin: 0;
+}
+
+.markdown-body input {
+    overflow: visible;
+}
+
+.markdown-body [type="checkbox"] {
+    box-sizing: border-box;
+    padding: 0;
+}
+
+.markdown-body * {
+    box-sizing: border-box;
+}
+
+.markdown-body input {
+    font-family: inherit;
+    font-size: inherit;
+    line-height: inherit;
+}
+
+.markdown-body a {
+    color: #0366d6;
+    text-decoration: none;
+}
+
+.markdown-body a:hover {
+    text-decoration: underline;
+}
+
+.markdown-body strong {
+    font-weight: 600;
+}
+
+.markdown-body hr {
+    height: 0;
+    margin: 15px 0;
+    overflow: hidden;
+    background: transparent;
+    border: 0;
+    border-bottom: 1px solid #dfe2e5;
+}
+
+.markdown-body hr::before {
+    display: table;
+    content: "";
+}
+
+.markdown-body hr::after {
+    display: table;
+    clear: both;
+    content: "";
+}
+
+.markdown-body table {
+    border-spacing: 0;
+    border-collapse: collapse;
+}
+
+.markdown-body td,
+.markdown-body th {
+    padding: 0;
+}
+
+.markdown-body h1,
+.markdown-body h2,
+.markdown-body h3,
+.markdown-body h4,
+.markdown-body h5,
+.markdown-body h6 {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+.markdown-body h1 {
+    font-size: 36px;
+    font-weight: 600;
+}
+.markdown-body h2 {
+    font-size: 28px;
+    font-weight: 600;
+}
+
+.markdown-body h3 {
+    font-size: 20px;
+    font-weight: 600;
+}
+
+.markdown-body h4 {
+    font-size: 18px;
+    font-weight: 600;
+}
+
+.markdown-body h5 {
+    font-size: 14px;
+    font-weight: 600;
+}
+
+.markdown-body h6 {
+    font-size: 12px;
+    font-weight: 600;
+}
+
+.markdown-body p {
+    margin-top: 0;
+    margin-bottom: 6px;
+}
+
+.markdown-body blockquote {
+    margin: 0;
+}
+
+.markdown-body ul,
+.markdown-body ol {
+    padding-left: 0;
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+.markdown-body ol ol,
+.markdown-body ul ol {
+    list-style-type: lower-roman;
+}
+.markdown-body ul ul ol,
+.markdown-body ul ol ol,
+.markdown-body ol ul ol,
+.markdown-body ol ol ol {
+    list-style-type: lower-alpha;
+}
+
+.markdown-body dd {
+    margin-left: 0;
+}
+
+.markdown-body code {
+    font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
+    font-size: 12px;
+}
+
+.markdown-body pre {
+    margin-top: 0;
+    margin-bottom: 0;
+    font: 12px "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
+}
+
+.markdown-body .octicon {
+    vertical-align: text-bottom;
+}
+
+.markdown-body .pl-0 {
+    padding-left: 0 !important;
+}
+
+.markdown-body .pl-1 {
+    padding-left: 4px !important;
+}
+
+.markdown-body .pl-2 {
+    padding-left: 8px !important;
+}
+
+.markdown-body .pl-3 {
+    padding-left: 16px !important;
+}
+
+.markdown-body .pl-4 {
+    padding-left: 24px !important;
+}
+
+.markdown-body .pl-5 {
+    padding-left: 32px !important;
+}
+
+.markdown-body .pl-6 {
+    padding-left: 40px !important;
+}
+
+.markdown-body::before {
+    display: table;
+    content: "";
+}
+
+.markdown-body::after {
+    display: table;
+    clear: both;
+    content: "";
+}
+
+.markdown-body > *:first-child {
+    margin-top: 0 !important;
+}
+
+.markdown-body > *:last-child {
+    margin-bottom: 0 !important;
+}
+
+.markdown-body a:not([href]) {
+    color: inherit;
+    text-decoration: none;
+}
+
+.markdown-body .anchor {
+    float: left;
+    padding-right: 4px;
+    margin-left: -20px;
+    line-height: 1;
+}
+
+.markdown-body .anchor:focus {
+    outline: none;
+}
+
+.markdown-body blockquote,
+.markdown-body ul,
+.markdown-body ol,
+.markdown-body dl,
+.markdown-body table,
+.markdown-body pre {
+    margin-top: 0;
+    margin-bottom: 10px;
+}
+
+.markdown-body hr {
+    height: 0.25em;
+    padding: 0;
+    margin: 24px 0;
+    background-color: #e1e4e8;
+    border: 0;
+}
+
+.markdown-body blockquote {
+    padding: 0 1em;
+    color: #6a737d;
+    border-left: 0.25em solid #dfe2e5;
+}
+
+.markdown-body blockquote > :first-child {
+    margin-top: 0;
+}
+
+.markdown-body blockquote > :last-child {
+    margin-bottom: 0;
+}
+
+.markdown-body kbd {
+    display: inline-block;
+    padding: 3px 5px;
+    font-size: 11px;
+    line-height: 10px;
+    color: #444d56;
+    vertical-align: middle;
+    background-color: #fafbfc;
+    border: solid 1px #c6cbd1;
+    border-bottom-color: #959da5;
+    border-radius: 3px;
+    box-shadow: inset 0 -1px 0 #959da5;
+}
+
+.markdown-body h1,
+.markdown-body h2,
+.markdown-body h3,
+.markdown-body h4,
+.markdown-body h5,
+.markdown-body h6 {
+    margin-top: 20px;
+    margin-bottom: 12px;
+    font-weight: 600;
+    line-height: 1.25;
+}
+
+.markdown-body h1 .octicon-link,
+.markdown-body h2 .octicon-link,
+.markdown-body h3 .octicon-link,
+.markdown-body h4 .octicon-link,
+.markdown-body h5 .octicon-link,
+.markdown-body h6 .octicon-link {
+    color: #1b1f23;
+    vertical-align: middle;
+    visibility: hidden;
+}
+
+.markdown-body h1:hover .anchor,
+.markdown-body h2:hover .anchor,
+.markdown-body h3:hover .anchor,
+.markdown-body h4:hover .anchor,
+.markdown-body h5:hover .anchor,
+.markdown-body h6:hover .anchor {
+    text-decoration: none;
+}
+
+.markdown-body h1:hover .anchor .octicon-link,
+.markdown-body h2:hover .anchor .octicon-link,
+.markdown-body h3:hover .anchor .octicon-link,
+.markdown-body h4:hover .anchor .octicon-link,
+.markdown-body h5:hover .anchor .octicon-link,
+.markdown-body h6:hover .anchor .octicon-link {
+    visibility: visible;
+}
+
+.markdown-body h1 {
+    padding-bottom: 0.3em;
+    font-size: 2.2em;
+    border-bottom: 1px solid #eaecef;
+}
+
+.markdown-body h2 {
+    padding-bottom: 0.3em;
+    font-size: 1.8em;
+    border-bottom: 1px solid #eaecef;
+}
+
+.markdown-body h3 {
+    font-size: 1.5em;
+}
+
+.markdown-body h4 {
+    font-size: 1.2em;
+}
+
+.markdown-body h5 {
+    font-size: 16px;
+}
+
+.markdown-body h6 {
+    font-size: 14px;
+    color: #6a737d;
+}
+
+.markdown-body ul,
+.markdown-body ol {
+    padding-left: 2em;
+}
+
+.markdown-body ul ul,
+.markdown-body ul ol,
+.markdown-body ol ol,
+.markdown-body ol ul {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+.markdown-body li > p {
+    margin-top: 16px;
+}
+
+.markdown-body li + li {
+    margin-top: 0.25em;
+}
+
+.markdown-body dl {
+    padding: 0;
+}
+
+.markdown-body dl dt {
+    padding: 0;
+    margin-top: 16px;
+    font-size: 1em;
+    font-style: italic;
+    font-weight: 600;
+}
+
+.markdown-body dl dd {
+    padding: 0 16px;
+    margin-bottom: 12px;
+}
+
+.markdown-body table {
+    display: block;
+    width: 100%;
+    overflow: auto;
+}
+
+.markdown-body table th {
+    font-weight: 600;
+}
+
+.markdown-body table th,
+.markdown-body table td {
+    padding: 6px 13px;
+    border: 1px solid #dfe2e5;
+}
+
+.markdown-body table tr {
+    background-color: #fff;
+    border-top: 1px solid #c6cbd1;
+}
+
+.markdown-body table tr:nth-child(2n) {
+    background-color: #f6f8fa;
+}
+
+.markdown-body img {
+    max-width: 100%;
+    box-sizing: content-box;
+    background-color: #fff;
+}
+
+.markdown-body code {
+    padding: 0;
+    padding-top: 0.2em;
+    padding-bottom: 0.2em;
+    margin: 0;
+    font-size: 85%;
+    background-color: rgba(27, 31, 35, 0.05);
+    border-radius: 3px;
+}
+
+.markdown-body code::before,
+.markdown-body code::after {
+    letter-spacing: -0.2em;
+    content: "\00a0";
+}
+
+.markdown-body pre {
+    word-wrap: normal;
+}
+
+.markdown-body pre > code {
+    padding: 0;
+    margin: 0;
+    font-size: 100%;
+    word-break: normal;
+    white-space: pre;
+    background: transparent;
+    border: 0;
+}
+
+.markdown-body .highlight {
+    margin-bottom: 12px;
+}
+
+.markdown-body .highlight pre {
+    margin-bottom: 0;
+    word-break: normal;
+}
+
+.markdown-body .highlight pre,
+.markdown-body pre {
+    padding: 16px;
+    overflow: auto;
+    font-size: 85%;
+    line-height: 1.45;
+    border-radius: 3px;
+}
+
+.markdown-body pre code {
+    display: inline;
+    max-width: auto;
+    padding: 0;
+    margin: 0;
+    overflow: visible;
+    line-height: inherit;
+    word-wrap: normal;
+    background-color: transparent;
+    border: 0;
+}
+
+.markdown-body pre code::before,
+.markdown-body pre code::after {
+    content: normal;
+}
+
+.markdown-body .full-commit .btn-outline:not(:disabled):hover {
+    color: #005cc5;
+    border-color: #005cc5;
+}
+
+.markdown-body kbd {
+    display: inline-block;
+    padding: 3px 5px;
+    font: 11px "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
+    line-height: 10px;
+    color: #444d56;
+    vertical-align: middle;
+    background-color: #fcfcfc;
+    border: solid 1px #c6cbd1;
+    border-bottom-color: #959da5;
+    border-radius: 3px;
+    box-shadow: inset 0 -1px 0 #959da5;
+}
+
+.markdown-body :checked + .radio-label {
+    position: relative;
+    z-index: 1;
+    border-color: #0366d6;
+}
+
+.markdown-body .task-list-item {
+    list-style-type: none;
+}
+
+.markdown-body .task-list-item + .task-list-item {
+    margin-top: 3px;
+}
+
+.markdown-body .task-list-item input {
+    margin: 0 0.2em 0.25em -1.6em;
+    vertical-align: middle;
+}
+
+.markdown-body hr {
+    border-bottom-color: #eee;
+}
+
+/* 高亮 */
+.markdown-body .hljs {
+    display: block;
+    overflow-x: auto;
+    padding: 0.5em;
+    color: #333;
+    background: #f2f3f1
+}
+
+.markdown-body .hljs-comment, .hljs-quote {
+    color: #998;
+    font-style: italic
+}
+
+.markdown-body .hljs-keyword, .hljs-selector-tag, .hljs-subst {
+    color: #333;
+    font-weight: bold
+}
+
+.markdown-body .hljs-number, .hljs-literal, .hljs-variable, .hljs-template-variable, .hljs-tag .hljs-attr {
+    color: #008080
+}
+
+.markdown-body .hljs-string, .hljs-doctag {
+    color: #d14
+}
+
+.markdown-body .hljs-title, .hljs-section, .hljs-selector-id {
+    color: #900;
+    font-weight: bold
+}
+
+.markdown-body .hljs-subst {
+    font-weight: normal
+}
+
+.markdown-body .hljs-type, .hljs-class .hljs-title {
+    color: #458;
+    font-weight: bold
+}
+
+.markdown-body .hljs-tag, .hljs-name, .hljs-attribute {
+    color: #000080;
+    font-weight: normal
+}
+
+.markdown-body .hljs-regexp, .hljs-link {
+    color: #009926
+}
+
+.markdown-body .hljs-symbol, .hljs-bullet {
+    color: #990073
+}
+
+.markdown-body .hljs-built_in, .hljs-builtin-name {
+    color: #0086b3
+}
+
+.markdown-body .hljs-meta {
+    color: #999;
+    font-weight: bold
+}
+
+.markdown-body .hljs-deletion {
+    background: #fdd
+}
+
+.markdown-body .hljs-addition {
+    background: #dfd
+}
+
+.markdown-body .hljs-emphasis {
+    font-style: italic
+}
+
+.markdown-body .hljs-strong {
+    font-weight: bold
+}
diff --git a/node_modules/mavon-editor/src/lib/css/mavon-editor.styl b/node_modules/mavon-editor/src/lib/css/mavon-editor.styl
new file mode 100644
index 0000000..a280844
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/css/mavon-editor.styl
@@ -0,0 +1,297 @@
+  border-color = 1px solid #F2F6FC
+  op-height = 40px
+  textarea:disabled
+    background-color #ffffff
+
+  /* 路由内容 */
+  .v-note-wrapper
+    position relative
+    min-width 300px
+    min-height 300px
+    display flex
+    flex-direction column
+    background-color #fff
+    z-index 1500
+    text-align left
+    border border-color
+    border-radius 4px
+    &.fullscreen
+      position fixed
+      left 0
+      right 0
+      bottom 0
+      top 0
+      margin 0
+      height auto
+      z-index 1501
+    .v-note-op
+      padding 1px
+      width 100%
+      display flex
+      white-space pre-line
+      flex none
+      min-height op-height
+      user-select none
+      border-bottom border-color
+      border-radius 4px 4px 0 0
+      background-color #fff
+      z-index 1
+      .v-left-item, .v-right-item
+        flex 1
+        min-height op-height
+        box-sizing border-box
+        .op-icon-divider
+          height op-height
+          border-left 1px solid #e5e5e5
+          margin 0 6px 0 4px
+        .op-icon
+          box-sizing border-box
+          display inline-block
+          cursor pointer
+          height 28px
+          width 28px
+          margin 6px 0 5px 0px
+          font-size 14px
+          padding 4.5px 6px 5px 3.5px
+          color #757575
+          border-radius 5px
+          text-align center
+          background none
+          border none
+          outline none
+          line-height 1
+          //vertical-align middle
+          &.dropdown-wrapper
+            line-height 18px
+          &.selected
+            color rgba(0, 0, 0, 0.8)
+            background #eaeaea
+          &:hover
+            color rgba(0, 0, 0, 0.8)
+            background #e9e9eb
+        &.transition
+          .op-icon
+            transition all 0.2s linear 0s
+      .v-right-item
+        text-align right
+        padding-right 6px
+        max-width 30%
+      .v-left-item
+        text-align left
+        padding-left 6px
+    .v-note-panel
+      position relative
+      border-top none
+      display flex
+      flex 1
+      width 100%
+      box-sizing border-box
+      overflow hidden
+      .v-note-edit.divarea-wrapper
+        flex 0 0 50%
+        width 50%
+        padding 0
+        overflow-y scroll
+        overflow-x hidden
+        box-sizing border-box
+        cursor text
+        border-bottom-left-radius: 4px;
+        scrollbar()
+        &.transition
+          transition all 0.2s linear 0s
+        &.single-edit
+          width 100%
+          flex 0 0 100%
+          overflow-y auto
+        &.single-show
+          width 0
+          flex 0 0 0
+          display none
+        .content-div
+          width 100%
+          padding 20px 25px
+          box-sizing border-box
+          outline 0 none
+          border none !important
+          color #2c3e50
+          font-size 16px
+        .content-input-wrapper
+          width 100%
+          padding 8px 25px 15px 25px
+      .v-note-show
+        flex 0 0 50%
+        width 50%
+        overflow-y auto
+        padding 0 0
+        transition all 0.2s linear 0s
+        &.single-show
+          flex 0 0 100%
+          width 100%
+        .v-show-content, .v-show-content-html
+          width 100%
+          height 100%
+          padding 8px 25px 15px 25px
+          overflow-y auto
+          box-sizing border-box
+          overflow-x hidden
+          scrollbar()
+      .v-note-navigation-wrapper
+        display flex
+        position absolute
+        width 250px
+        right 0
+        top 0
+        bottom 0
+        height 100%
+        flex-direction column
+        background-color rgba(255,255,255,0.98)
+        border-left border-color
+        border-right border-color
+        &.transition
+          transition all 0.1s linear 0s
+        @media only screen and (max-width 768px)
+          width 50%
+        &.slideTop-enter-active, &.slideTop-leave-active
+          height 100%
+        &.slideTop-enter, &.slideTop-leave-active
+          height 0
+        .v-note-navigation-title
+          height 50px
+          width 100%
+          border-bottom border-color
+          flex none
+          line-height @height
+          font-size 16px
+          box-sizing border-box
+          padding 0 12px 0 18px
+          .v-note-navigation-close
+            float right
+            color #606266
+            font-size 18px
+            cursor pointer
+            &:hover
+              color #303133
+        .v-note-navigation-content
+          overflow-y auto
+          flex 1
+          scrollbar()
+          padding 8px 0
+          h1, h2, h3, h4, h5, h6
+            margin 2px 0
+            font-weight 500
+            font-size 17px
+            color #2185d0
+            cursor pointer
+            line-height normal
+            overflow hidden
+            text-overflow ellipsis
+            white-space nowrap
+            padding 0 12px
+            border-bottom none
+            &:hover
+              color #483D8B
+              text-decoration-line underline
+          h2
+            padding-left  27px
+            font-size 17px
+          h3
+            padding-left  42px
+            font-size 17px
+          h4
+            padding-left  58px
+            font-size 15px
+          h5
+            padding-left  72px
+            font-size 15px
+          h6
+            padding-left  87px
+            font-size 15px
+    .v-note-read-model
+      position relative
+      display none
+      width 100%
+      height 100%
+      background #fbfbfb
+      padding 30px 8% 50px 8%
+      overflow-y auto
+      scrollbar()
+      box-sizing border-box
+      &.show
+        display block
+    &.shadow
+      border none
+      // box-shadow 0 2px 12px 0 rgba(0, 0, 0, 0.1) 
+.v-note-help-wrapper
+  position fixed
+  left 0
+  right 0
+  top 0
+  bottom 0
+  background rgba(0, 0, 0, 0.7)
+  z-index 1600
+  transition all 0.1s linear 0s
+  &.fade-enter-active, &.fade-leave-active
+    opacity 1
+  &.fade-enter, &.fade-leave-active
+    opacity 0
+  .v-note-help-content
+    position relative
+    width 60%
+    max-width 800px
+    margin 30px auto
+    height 90%
+    min-width 320px
+    transition all 0.1s linear 0s
+    z-index 3
+    border border-color
+    &.shadow
+      border none
+      box-shadow 0 0px 5px rgba(0, 0, 0, .156863), 0 0px 5px rgba(0, 0, 0, .227451)
+    i
+      font-size 28px
+      position absolute
+      right 15px
+      top 8px
+      color rgba(0, 0, 0, 0.7)
+      cursor pointer
+      &:hover
+        color rgba(0, 0, 0, 1)
+    .v-note-help-show
+      width 100%
+      height 100%
+      font-size 18px
+      background #fbfbfb
+      overflow-y auto
+      padding 2% 6%
+      scrollbar()
+
+
+.v-note-img-wrapper
+  position fixed
+  display flex
+  justify-content center
+  align-items center
+  left 0
+  right 0
+  top 0
+  bottom 0
+  background rgba(0, 0, 0, 0.7)
+  z-index 1600
+  transition all 0.1s linear 0s
+  &.fade-enter-active, &.fade-leave-active
+    opacity 1
+  &.fade-enter, &.fade-leave-active
+    opacity 0
+  img
+    flex 0 0 auto
+    z-index 3
+  i
+    font-size 28px
+    position absolute
+    right 15px
+    top 8px
+    color rgba(255, 255, 255, 0.7)
+    cursor pointer
+    &:hover
+      color rgba(255, 255, 255, 1)
+align()
diff --git a/node_modules/mavon-editor/src/lib/css/md.css b/node_modules/mavon-editor/src/lib/css/md.css
new file mode 100644
index 0000000..b6bde12
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/css/md.css
@@ -0,0 +1,27 @@
+/**
+ * @Author: HuaChao Chen <CHC>
+ * @Date:   2017-05-05T15:57:16+08:00
+ * @Email:  chenhuachaoxyz@gmail.com
+ * @Filename: md.css
+ * @Last modified by:   chc
+ * @Last modified time: 2017-06-15T00:13:34+08:00
+ * @License: MIT
+ * @Copyright: 2017
+ */
+
+.markdown-body strong{
+    font-weight: bolder;
+}
+
+.markdown-body .hljs-center {
+    text-align: center;
+}
+.markdown-body .hljs-right {
+    text-align: right;
+}
+.markdown-body .hljs-left {
+    text-align: left;
+}
+.markdown-body .hljs {
+    overflow: auto;
+}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/src/lib/css/scroll.styl b/node_modules/mavon-editor/src/lib/css/scroll.styl
new file mode 100644
index 0000000..0303c96
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/css/scroll.styl
@@ -0,0 +1,15 @@
+scrollbar()
+  &.scroll-style::-webkit-scrollbar
+    width 6px
+    background-color #e5e5e5
+  &.scroll-style::-webkit-scrollbar-thumb
+    background-color #b7b7b7
+    border-radius 4px
+  &.scroll-style::-webkit-scrollbar-thumb:hover
+    background-color #a1a1a1
+  &.scroll-style::-webkit-scrollbar-thumb:active
+    background-color #a1a1a1
+  &.scroll-style::-webkit-scrollbar-track
+    -webkit-box-shadow 0 0 0px gray inset
+  &.scroll-style-border-radius::-webkit-scrollbar
+    border-bottom-right-radius 4px
\ No newline at end of file
diff --git a/node_modules/mavon-editor/src/lib/font/LICENSE.txt b/node_modules/mavon-editor/src/lib/font/LICENSE.txt
new file mode 100644
index 0000000..8fa3da3
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/font/LICENSE.txt
@@ -0,0 +1,12 @@
+Font license info
+
+
+## Font Awesome
+
+   Copyright (C) 2016 by Dave Gandy
+
+   Author:    Dave Gandy
+   License:   SIL ()
+   Homepage:  http://fortawesome.github.com/Font-Awesome/
+
+
diff --git a/node_modules/mavon-editor/src/lib/font/README.txt b/node_modules/mavon-editor/src/lib/font/README.txt
new file mode 100644
index 0000000..beaab33
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/font/README.txt
@@ -0,0 +1,75 @@
+This webfont is generated by http://fontello.com open source project.
+
+
+================================================================================
+Please, note, that you should obey original font licenses, used to make this
+webfont pack. Details available in LICENSE.txt file.
+
+- Usually, it's enough to publish content of LICENSE.txt file somewhere on your
+  site in "About" section.
+
+- If your project is open-source, usually, it will be ok to make LICENSE.txt
+  file publicly available in your repository.
+
+- Fonts, used in Fontello, don't require a clickable link on your site.
+  But any kind of additional authors crediting is welcome.
+================================================================================
+
+
+Comments on archive content
+---------------------------
+
+- /font/* - fonts in different formats
+
+- /css/*  - different kinds of css, for all situations. Should be ok with 
+  twitter bootstrap. Also, you can skip <i> style and assign icon classes
+  directly to text elements, if you don't mind about IE7.
+
+- demo.html - demo file, to show your webfont content
+
+- LICENSE.txt - license info about source fonts, used to build your one.
+
+- config.json - keeps your settings. You can import it back into fontello
+  anytime, to continue your work
+
+
+Why so many CSS files ?
+-----------------------
+
+Because we like to fit all your needs :)
+
+- basic file, <your_font_name>.css - is usually enough, it contains @font-face
+  and character code definitions
+
+- *-ie7.css - if you need IE7 support, but still don't wish to put char codes
+  directly into html
+
+- *-codes.css and *-ie7-codes.css - if you like to use your own @font-face
+  rules, but still wish to benefit from css generation. That can be very
+  convenient for automated asset build systems. When you need to update font -
+  no need to manually edit files, just override old version with archive
+  content. See fontello source code for examples.
+
+- *-embedded.css - basic css file, but with embedded WOFF font, to avoid
+  CORS issues in Firefox and IE9+, when fonts are hosted on the separate domain.
+  We strongly recommend to resolve this issue by `Access-Control-Allow-Origin`
+  server headers. But if you ok with dirty hack - this file is for you. Note,
+  that data url moved to separate @font-face to avoid problems with <IE9, when
+  string is too long.
+
+- animate.css - use it to get ideas about spinner rotation animation.
+
+
+Attention for server setup
+--------------------------
+
+You MUST setup server to reply with proper `mime-types` for font files -
+otherwise some browsers will fail to show fonts.
+
+Usually, `apache` already has necessary settings, but `nginx` and other
+webservers should be tuned. Here is list of mime types for our file extensions:
+
+- `application/vnd.ms-fontobject` - eot
+- `application/x-font-woff` - woff
+- `application/x-font-ttf` - ttf
+- `image/svg+xml` - svg
diff --git a/node_modules/mavon-editor/src/lib/font/config.json b/node_modules/mavon-editor/src/lib/font/config.json
new file mode 100644
index 0000000..41f485d
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/font/config.json
@@ -0,0 +1,196 @@
+{
+  "name": "",
+  "css_prefix_text": "fa-mavon-",
+  "css_use_suffix": false,
+  "hinting": true,
+  "units_per_em": 1000,
+  "ascent": 850,
+  "glyphs": [
+    {
+      "uid": "02cca871bb69da75e8ee286b7055832c",
+      "css": "bold",
+      "code": 59392,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "a8cb1c217f02b073db3670c061cc54d2",
+      "css": "italic",
+      "code": 59393,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "0c708edd8fae2376b3370aa56d40cf9e",
+      "css": "header",
+      "code": 61916,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "d4a4a38a40b728f46dad1de4ac950231",
+      "css": "underline",
+      "code": 61645,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "61c242c9e2134d5864d7fdd57b3c9289",
+      "css": "strikethrough",
+      "code": 61644,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "f04a5d24e9e659145b966739c4fde82a",
+      "css": "thumb-tack",
+      "code": 59394,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "4e88371fb8857dacc1f66afe6314e426",
+      "css": "superscript",
+      "code": 61739,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "3d1c929dbc966992185ce749548c1b2c",
+      "css": "subscript",
+      "code": 61740,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "ab95e1351ebaec5850101097cbf7097f",
+      "css": "quote-left",
+      "code": 61709,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "f6766a8b042c2453a4e153af03294383",
+      "css": "list-ol",
+      "code": 61643,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "a2a74f5e7b7d9ba054897d8c795a326a",
+      "css": "list-ul",
+      "code": 61642,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "0ddd3e8201ccc7d41f7b7c9d27eca6c1",
+      "css": "link",
+      "code": 59395,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "381da2c2f7fd51f8de877c044d7f439d",
+      "css": "picture-o",
+      "code": 59396,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "7034e4d22866af82bef811f52fb1ba46",
+      "css": "code",
+      "code": 61729,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "8fb55fd696d9a0f58f3b27c1d8633750",
+      "css": "table",
+      "code": 61646,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "bc71f4c6e53394d5ba46b063040014f1",
+      "css": "repeat",
+      "code": 59397,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "f9c3205df26e7778abac86183aefdc99",
+      "css": "undo",
+      "code": 59398,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "f48ae54adfb27d8ada53d0fd9e34ee10",
+      "css": "trash-o",
+      "code": 59399,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "f4445feb55521283572ee88bc304f928",
+      "css": "floppy-o",
+      "code": 59400,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "559647a6f430b3aeadbecd67194451dd",
+      "css": "bars",
+      "code": 61641,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "53dd31a6cc6438192b2d7b09b1c1dd45",
+      "css": "columns",
+      "code": 61659,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "07f0832c07f3d9713fffb06c8bffa027",
+      "css": "window-maximize",
+      "code": 62160,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "b013f6403e5ab0326614e68d1850fd6b",
+      "css": "arrows-alt",
+      "code": 61618,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "3c24ee33c9487bbf18796ca6dffa1905",
+      "css": "compress",
+      "code": 59401,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "c5fd349cbd3d23e4ade333789c29c729",
+      "css": "eye",
+      "code": 59402,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "7fd683b2c518ceb9e5fa6757f2276faa",
+      "css": "eye-slash",
+      "code": 59403,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "17ebadd1e3f274ff0205601eef7b9cc4",
+      "css": "question-circle",
+      "code": 59404,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "5211af474d3a9848f67f945e2ccaf143",
+      "css": "times",
+      "code": 59405,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "f4f0e849b805be1f6d76b65581cb3b8b",
+      "css": "align-left",
+      "code": 59407,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "ae6336c46d73af999fe7460c089abb4d",
+      "css": "align-center",
+      "code": 59408,
+      "src": "fontawesome"
+    },
+    {
+      "uid": "e1e7306b47c3c5e6faecce9d32571381",
+      "css": "align-right",
+      "code": 59409,
+      "src": "fontawesome"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/src/lib/font/css/animation.css b/node_modules/mavon-editor/src/lib/font/css/animation.css
new file mode 100644
index 0000000..ac5a956
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/font/css/animation.css
@@ -0,0 +1,85 @@
+/*
+   Animation example, for spinners
+*/
+.animate-spin {
+  -moz-animation: spin 2s infinite linear;
+  -o-animation: spin 2s infinite linear;
+  -webkit-animation: spin 2s infinite linear;
+  animation: spin 2s infinite linear;
+  display: inline-block;
+}
+@-moz-keyframes spin {
+  0% {
+    -moz-transform: rotate(0deg);
+    -o-transform: rotate(0deg);
+    -webkit-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+
+  100% {
+    -moz-transform: rotate(359deg);
+    -o-transform: rotate(359deg);
+    -webkit-transform: rotate(359deg);
+    transform: rotate(359deg);
+  }
+}
+@-webkit-keyframes spin {
+  0% {
+    -moz-transform: rotate(0deg);
+    -o-transform: rotate(0deg);
+    -webkit-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+
+  100% {
+    -moz-transform: rotate(359deg);
+    -o-transform: rotate(359deg);
+    -webkit-transform: rotate(359deg);
+    transform: rotate(359deg);
+  }
+}
+@-o-keyframes spin {
+  0% {
+    -moz-transform: rotate(0deg);
+    -o-transform: rotate(0deg);
+    -webkit-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+
+  100% {
+    -moz-transform: rotate(359deg);
+    -o-transform: rotate(359deg);
+    -webkit-transform: rotate(359deg);
+    transform: rotate(359deg);
+  }
+}
+@-ms-keyframes spin {
+  0% {
+    -moz-transform: rotate(0deg);
+    -o-transform: rotate(0deg);
+    -webkit-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+
+  100% {
+    -moz-transform: rotate(359deg);
+    -o-transform: rotate(359deg);
+    -webkit-transform: rotate(359deg);
+    transform: rotate(359deg);
+  }
+}
+@keyframes spin {
+  0% {
+    -moz-transform: rotate(0deg);
+    -o-transform: rotate(0deg);
+    -webkit-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+
+  100% {
+    -moz-transform: rotate(359deg);
+    -o-transform: rotate(359deg);
+    -webkit-transform: rotate(359deg);
+    transform: rotate(359deg);
+  }
+}
diff --git a/node_modules/mavon-editor/src/lib/font/css/fontello-codes.css b/node_modules/mavon-editor/src/lib/font/css/fontello-codes.css
new file mode 100644
index 0000000..e73964c
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/font/css/fontello-codes.css
@@ -0,0 +1,32 @@
+
+.fa-mavon-bold:before { content: '\e800'; } /* '' */
+.fa-mavon-italic:before { content: '\e801'; } /* '' */
+.fa-mavon-thumb-tack:before { content: '\e802'; } /* '' */
+.fa-mavon-link:before { content: '\e803'; } /* '' */
+.fa-mavon-picture-o:before { content: '\e804'; } /* '' */
+.fa-mavon-repeat:before { content: '\e805'; } /* '' */
+.fa-mavon-undo:before { content: '\e806'; } /* '' */
+.fa-mavon-trash-o:before { content: '\e807'; } /* '' */
+.fa-mavon-floppy-o:before { content: '\e808'; } /* '' */
+.fa-mavon-compress:before { content: '\e809'; } /* '' */
+.fa-mavon-eye:before { content: '\e80a'; } /* '' */
+.fa-mavon-eye-slash:before { content: '\e80b'; } /* '' */
+.fa-mavon-question-circle:before { content: '\e80c'; } /* '' */
+.fa-mavon-times:before { content: '\e80d'; } /* '' */
+.fa-mavon-align-left:before { content: '\e80f'; } /* '' */
+.fa-mavon-align-center:before { content: '\e810'; } /* '' */
+.fa-mavon-align-right:before { content: '\e811'; } /* '' */
+.fa-mavon-arrows-alt:before { content: '\f0b2'; } /* '' */
+.fa-mavon-bars:before { content: '\f0c9'; } /* '' */
+.fa-mavon-list-ul:before { content: '\f0ca'; } /* '' */
+.fa-mavon-list-ol:before { content: '\f0cb'; } /* '' */
+.fa-mavon-strikethrough:before { content: '\f0cc'; } /* '' */
+.fa-mavon-underline:before { content: '\f0cd'; } /* '' */
+.fa-mavon-table:before { content: '\f0ce'; } /* '' */
+.fa-mavon-columns:before { content: '\f0db'; } /* '' */
+.fa-mavon-quote-left:before { content: '\f10d'; } /* '' */
+.fa-mavon-code:before { content: '\f121'; } /* '' */
+.fa-mavon-superscript:before { content: '\f12b'; } /* '' */
+.fa-mavon-subscript:before { content: '\f12c'; } /* '' */
+.fa-mavon-header:before { content: '\f1dc'; } /* '' */
+.fa-mavon-window-maximize:before { content: '\f2d0'; } /* '' */
\ No newline at end of file
diff --git a/node_modules/mavon-editor/src/lib/font/css/fontello-embedded.css b/node_modules/mavon-editor/src/lib/font/css/fontello-embedded.css
new file mode 100644
index 0000000..dd7821d
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/font/css/fontello-embedded.css
@@ -0,0 +1,85 @@
+@font-face {
+  font-family: 'fontello';
+  src: url('../font/fontello.eot?30047687');
+  src: url('../font/fontello.eot?30047687#iefix') format('embedded-opentype'),
+       url('../font/fontello.svg?30047687#fontello') format('svg');
+  font-weight: normal;
+  font-style: normal;
+}
+@font-face {
+  font-family: 'fontello';
+  src: url('data:application/octet-stream;base64,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') format('woff'),
+       url('data:application/octet-stream;base64,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') format('truetype');
+}
+/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
+/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
+/*
+@media screen and (-webkit-min-device-pixel-ratio:0) {
+  @font-face {
+    font-family: 'fontello';
+    src: url('../font/fontello.svg?30047687#fontello') format('svg');
+  }
+}
+*/
+ 
+ [class^="fa-mavon-"]:before, [class*=" fa-mavon-"]:before {
+  font-family: "fontello";
+  font-style: normal;
+  font-weight: normal;
+  speak: none;
+ 
+  display: inline-block;
+  text-decoration: inherit;
+  width: 1em;
+  margin-right: .2em;
+  text-align: center;
+  /* opacity: .8; */
+ 
+  /* For safety - reset parent styles, that can break glyph codes*/
+  font-variant: normal;
+  text-transform: none;
+     
+  /* fix buttons height, for twitter bootstrap */
+  line-height: 1em;
+ 
+  /* Animation center compensation - margins should be symmetric */
+  /* remove if not needed */
+  margin-left: .2em;
+ 
+  /* you can be more comfortable with increased icons size */
+  /* font-size: 120%; */
+ 
+  /* Uncomment for 3D effect */
+  /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
+}
+.fa-mavon-bold:before { content: '\e800'; } /* '' */
+.fa-mavon-italic:before { content: '\e801'; } /* '' */
+.fa-mavon-thumb-tack:before { content: '\e802'; } /* '' */
+.fa-mavon-link:before { content: '\e803'; } /* '' */
+.fa-mavon-picture-o:before { content: '\e804'; } /* '' */
+.fa-mavon-repeat:before { content: '\e805'; } /* '' */
+.fa-mavon-undo:before { content: '\e806'; } /* '' */
+.fa-mavon-trash-o:before { content: '\e807'; } /* '' */
+.fa-mavon-floppy-o:before { content: '\e808'; } /* '' */
+.fa-mavon-compress:before { content: '\e809'; } /* '' */
+.fa-mavon-eye:before { content: '\e80a'; } /* '' */
+.fa-mavon-eye-slash:before { content: '\e80b'; } /* '' */
+.fa-mavon-question-circle:before { content: '\e80c'; } /* '' */
+.fa-mavon-times:before { content: '\e80d'; } /* '' */
+.fa-mavon-align-left:before { content: '\e80f'; } /* '' */
+.fa-mavon-align-center:before { content: '\e810'; } /* '' */
+.fa-mavon-align-right:before { content: '\e811'; } /* '' */
+.fa-mavon-arrows-alt:before { content: '\f0b2'; } /* '' */
+.fa-mavon-bars:before { content: '\f0c9'; } /* '' */
+.fa-mavon-list-ul:before { content: '\f0ca'; } /* '' */
+.fa-mavon-list-ol:before { content: '\f0cb'; } /* '' */
+.fa-mavon-strikethrough:before { content: '\f0cc'; } /* '' */
+.fa-mavon-underline:before { content: '\f0cd'; } /* '' */
+.fa-mavon-table:before { content: '\f0ce'; } /* '' */
+.fa-mavon-columns:before { content: '\f0db'; } /* '' */
+.fa-mavon-quote-left:before { content: '\f10d'; } /* '' */
+.fa-mavon-code:before { content: '\f121'; } /* '' */
+.fa-mavon-superscript:before { content: '\f12b'; } /* '' */
+.fa-mavon-subscript:before { content: '\f12c'; } /* '' */
+.fa-mavon-header:before { content: '\f1dc'; } /* '' */
+.fa-mavon-window-maximize:before { content: '\f2d0'; } /* '' */
\ No newline at end of file
diff --git a/node_modules/mavon-editor/src/lib/font/css/fontello-ie7-codes.css b/node_modules/mavon-editor/src/lib/font/css/fontello-ie7-codes.css
new file mode 100644
index 0000000..65a81d3
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/font/css/fontello-ie7-codes.css
@@ -0,0 +1,32 @@
+
+.fa-mavon-bold { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe800;&nbsp;'); }
+.fa-mavon-italic { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe801;&nbsp;'); }
+.fa-mavon-thumb-tack { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe802;&nbsp;'); }
+.fa-mavon-link { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe803;&nbsp;'); }
+.fa-mavon-picture-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe804;&nbsp;'); }
+.fa-mavon-repeat { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe805;&nbsp;'); }
+.fa-mavon-undo { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe806;&nbsp;'); }
+.fa-mavon-trash-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe807;&nbsp;'); }
+.fa-mavon-floppy-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe808;&nbsp;'); }
+.fa-mavon-compress { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe809;&nbsp;'); }
+.fa-mavon-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80a;&nbsp;'); }
+.fa-mavon-eye-slash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80b;&nbsp;'); }
+.fa-mavon-question-circle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80c;&nbsp;'); }
+.fa-mavon-times { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80d;&nbsp;'); }
+.fa-mavon-align-left { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80f;&nbsp;'); }
+.fa-mavon-align-center { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe810;&nbsp;'); }
+.fa-mavon-align-right { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe811;&nbsp;'); }
+.fa-mavon-arrows-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0b2;&nbsp;'); }
+.fa-mavon-bars { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c9;&nbsp;'); }
+.fa-mavon-list-ul { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ca;&nbsp;'); }
+.fa-mavon-list-ol { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0cb;&nbsp;'); }
+.fa-mavon-strikethrough { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0cc;&nbsp;'); }
+.fa-mavon-underline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0cd;&nbsp;'); }
+.fa-mavon-table { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ce;&nbsp;'); }
+.fa-mavon-columns { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0db;&nbsp;'); }
+.fa-mavon-quote-left { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10d;&nbsp;'); }
+.fa-mavon-code { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf121;&nbsp;'); }
+.fa-mavon-superscript { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12b;&nbsp;'); }
+.fa-mavon-subscript { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12c;&nbsp;'); }
+.fa-mavon-header { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf1dc;&nbsp;'); }
+.fa-mavon-window-maximize { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf2d0;&nbsp;'); }
\ No newline at end of file
diff --git a/node_modules/mavon-editor/src/lib/font/css/fontello-ie7.css b/node_modules/mavon-editor/src/lib/font/css/fontello-ie7.css
new file mode 100644
index 0000000..ddd9d0e
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/font/css/fontello-ie7.css
@@ -0,0 +1,43 @@
+[class^="fa-mavon-"], [class*=" fa-mavon-"] {
+  font-family: 'fontello';
+  font-style: normal;
+  font-weight: normal;
+ 
+  /* fix buttons height */
+  line-height: 1em;
+ 
+  /* you can be more comfortable with increased icons size */
+  /* font-size: 120%; */
+}
+ 
+.fa-mavon-bold { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe800;&nbsp;'); }
+.fa-mavon-italic { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe801;&nbsp;'); }
+.fa-mavon-thumb-tack { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe802;&nbsp;'); }
+.fa-mavon-link { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe803;&nbsp;'); }
+.fa-mavon-picture-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe804;&nbsp;'); }
+.fa-mavon-repeat { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe805;&nbsp;'); }
+.fa-mavon-undo { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe806;&nbsp;'); }
+.fa-mavon-trash-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe807;&nbsp;'); }
+.fa-mavon-floppy-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe808;&nbsp;'); }
+.fa-mavon-compress { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe809;&nbsp;'); }
+.fa-mavon-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80a;&nbsp;'); }
+.fa-mavon-eye-slash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80b;&nbsp;'); }
+.fa-mavon-question-circle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80c;&nbsp;'); }
+.fa-mavon-times { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80d;&nbsp;'); }
+.fa-mavon-align-left { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80f;&nbsp;'); }
+.fa-mavon-align-center { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe810;&nbsp;'); }
+.fa-mavon-align-right { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe811;&nbsp;'); }
+.fa-mavon-arrows-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0b2;&nbsp;'); }
+.fa-mavon-bars { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0c9;&nbsp;'); }
+.fa-mavon-list-ul { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ca;&nbsp;'); }
+.fa-mavon-list-ol { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0cb;&nbsp;'); }
+.fa-mavon-strikethrough { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0cc;&nbsp;'); }
+.fa-mavon-underline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0cd;&nbsp;'); }
+.fa-mavon-table { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0ce;&nbsp;'); }
+.fa-mavon-columns { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf0db;&nbsp;'); }
+.fa-mavon-quote-left { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf10d;&nbsp;'); }
+.fa-mavon-code { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf121;&nbsp;'); }
+.fa-mavon-superscript { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12b;&nbsp;'); }
+.fa-mavon-subscript { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf12c;&nbsp;'); }
+.fa-mavon-header { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf1dc;&nbsp;'); }
+.fa-mavon-window-maximize { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf2d0;&nbsp;'); }
\ No newline at end of file
diff --git a/node_modules/mavon-editor/src/lib/font/css/fontello.css b/node_modules/mavon-editor/src/lib/font/css/fontello.css
new file mode 100644
index 0000000..1939b7b
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/font/css/fontello.css
@@ -0,0 +1,88 @@
+@font-face {
+  font-family: 'fontello';
+  src: url('../font/fontello.eot?60486047');
+  src: url('../font/fontello.eot?60486047#iefix') format('embedded-opentype'),
+       url('../font/fontello.woff2?60486047') format('woff2'),
+       url('../font/fontello.woff?60486047') format('woff'),
+       url('../font/fontello.ttf?60486047') format('truetype'),
+       url('../font/fontello.svg?60486047#fontello') format('svg');
+  font-weight: normal;
+  font-style: normal;
+}
+/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
+/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
+/*
+@media screen and (-webkit-min-device-pixel-ratio:0) {
+  @font-face {
+    font-family: 'fontello';
+    src: url('../font/fontello.svg?60486047#fontello') format('svg');
+  }
+}
+*/
+ 
+ [class^="fa-mavon-"]:before, [class*=" fa-mavon-"]:before {
+  font-family: "fontello";
+  font-style: normal;
+  font-weight: normal;
+  speak: none;
+ 
+  display: inline-block;
+  text-decoration: inherit;
+  width: 1em;
+  margin-right: .2em;
+  text-align: center;
+  /* opacity: .8; */
+ 
+  /* For safety - reset parent styles, that can break glyph codes*/
+  font-variant: normal;
+  text-transform: none;
+ 
+  /* fix buttons height, for twitter bootstrap */
+  line-height: 1em;
+ 
+  /* Animation center compensation - margins should be symmetric */
+  /* remove if not needed */
+  margin-left: .2em;
+ 
+  /* you can be more comfortable with increased icons size */
+  /* font-size: 120%; */
+ 
+  /* Font smoothing. That was taken from TWBS */
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+ 
+  /* Uncomment for 3D effect */
+  /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
+}
+ 
+.fa-mavon-bold:before { content: '\e800'; } /* '' */
+.fa-mavon-italic:before { content: '\e801'; } /* '' */
+.fa-mavon-thumb-tack:before { content: '\e802'; } /* '' */
+.fa-mavon-link:before { content: '\e803'; } /* '' */
+.fa-mavon-picture-o:before { content: '\e804'; } /* '' */
+.fa-mavon-repeat:before { content: '\e805'; } /* '' */
+.fa-mavon-undo:before { content: '\e806'; } /* '' */
+.fa-mavon-trash-o:before { content: '\e807'; } /* '' */
+.fa-mavon-floppy-o:before { content: '\e808'; } /* '' */
+.fa-mavon-compress:before { content: '\e809'; } /* '' */
+.fa-mavon-eye:before { content: '\e80a'; } /* '' */
+.fa-mavon-eye-slash:before { content: '\e80b'; } /* '' */
+.fa-mavon-question-circle:before { content: '\e80c'; } /* '' */
+.fa-mavon-times:before { content: '\e80d'; } /* '' */
+.fa-mavon-align-left:before { content: '\e80f'; } /* '' */
+.fa-mavon-align-center:before { content: '\e810'; } /* '' */
+.fa-mavon-align-right:before { content: '\e811'; } /* '' */
+.fa-mavon-arrows-alt:before { content: '\f0b2'; } /* '' */
+.fa-mavon-bars:before { content: '\f0c9'; } /* '' */
+.fa-mavon-list-ul:before { content: '\f0ca'; } /* '' */
+.fa-mavon-list-ol:before { content: '\f0cb'; } /* '' */
+.fa-mavon-strikethrough:before { content: '\f0cc'; } /* '' */
+.fa-mavon-underline:before { content: '\f0cd'; } /* '' */
+.fa-mavon-table:before { content: '\f0ce'; } /* '' */
+.fa-mavon-columns:before { content: '\f0db'; } /* '' */
+.fa-mavon-quote-left:before { content: '\f10d'; } /* '' */
+.fa-mavon-code:before { content: '\f121'; } /* '' */
+.fa-mavon-superscript:before { content: '\f12b'; } /* '' */
+.fa-mavon-subscript:before { content: '\f12c'; } /* '' */
+.fa-mavon-header:before { content: '\f1dc'; } /* '' */
+.fa-mavon-window-maximize:before { content: '\f2d0'; } /* '' */
\ No newline at end of file
diff --git a/node_modules/mavon-editor/src/lib/font/demo.html b/node_modules/mavon-editor/src/lib/font/demo.html
new file mode 100644
index 0000000..2e576f5
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/font/demo.html
@@ -0,0 +1,353 @@
+<!DOCTYPE html>
+<html>
+  <head><!--[if lt IE 9]><script language="javascript" type="text/javascript" src="//html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
+    <meta charset="UTF-8"><style>/*
+ * Bootstrap v2.2.1
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */
+.clearfix {
+  *zoom: 1;
+}
+.clearfix:before,
+.clearfix:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.clearfix:after {
+  clear: both;
+}
+html {
+  font-size: 100%;
+  -webkit-text-size-adjust: 100%;
+  -ms-text-size-adjust: 100%;
+}
+a:focus {
+  outline: thin dotted #333;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+a:hover,
+a:active {
+  outline: 0;
+}
+button,
+input,
+select,
+textarea {
+  margin: 0;
+  font-size: 100%;
+  vertical-align: middle;
+}
+button,
+input {
+  *overflow: visible;
+  line-height: normal;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+body {
+  margin: 0;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 14px;
+  line-height: 20px;
+  color: #333;
+  background-color: #fff;
+}
+a {
+  color: #08c;
+  text-decoration: none;
+}
+a:hover {
+  color: #005580;
+  text-decoration: underline;
+}
+.row {
+  margin-left: -20px;
+  *zoom: 1;
+}
+.row:before,
+.row:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.row:after {
+  clear: both;
+}
+[class*="span"] {
+  float: left;
+  min-height: 1px;
+  margin-left: 20px;
+}
+.container,
+.navbar-static-top .container,
+.navbar-fixed-top .container,
+.navbar-fixed-bottom .container {
+  width: 940px;
+}
+.span12 {
+  width: 940px;
+}
+.span11 {
+  width: 860px;
+}
+.span10 {
+  width: 780px;
+}
+.span9 {
+  width: 700px;
+}
+.span8 {
+  width: 620px;
+}
+.span7 {
+  width: 540px;
+}
+.span6 {
+  width: 460px;
+}
+.span5 {
+  width: 380px;
+}
+.span4 {
+  width: 300px;
+}
+.span3 {
+  width: 220px;
+}
+.span2 {
+  width: 140px;
+}
+.span1 {
+  width: 60px;
+}
+[class*="span"].pull-right,
+.row-fluid [class*="span"].pull-right {
+  float: right;
+}
+.container {
+  margin-right: auto;
+  margin-left: auto;
+  *zoom: 1;
+}
+.container:before,
+.container:after {
+  display: table;
+  content: "";
+  line-height: 0;
+}
+.container:after {
+  clear: both;
+}
+p {
+  margin: 0 0 10px;
+}
+.lead {
+  margin-bottom: 20px;
+  font-size: 21px;
+  font-weight: 200;
+  line-height: 30px;
+}
+small {
+  font-size: 85%;
+}
+h1 {
+  margin: 10px 0;
+  font-family: inherit;
+  font-weight: bold;
+  line-height: 20px;
+  color: inherit;
+  text-rendering: optimizelegibility;
+}
+h1 small {
+  font-weight: normal;
+  line-height: 1;
+  color: #999;
+}
+h1 {
+  line-height: 40px;
+}
+h1 {
+  font-size: 38.5px;
+}
+h1 small {
+  font-size: 24.5px;
+}
+body {
+  margin-top: 90px;
+}
+.header {
+  position: fixed;
+  top: 0;
+  left: 50%;
+  margin-left: -480px;
+  background-color: #fff;
+  border-bottom: 1px solid #ddd;
+  padding-top: 10px;
+  z-index: 10;
+}
+.footer {
+  color: #ddd;
+  font-size: 12px;
+  text-align: center;
+  margin-top: 20px;
+}
+.footer a {
+  color: #ccc;
+  text-decoration: underline;
+}
+.the-icons {
+  font-size: 14px;
+  line-height: 24px;
+}
+.switch {
+  position: absolute;
+  right: 0;
+  bottom: 10px;
+  color: #666;
+}
+.switch input {
+  margin-right: 0.3em;
+}
+.codesOn .i-name {
+  display: none;
+}
+.codesOn .i-code {
+  display: inline;
+}
+.i-code {
+  display: none;
+}
+@font-face {
+      font-family: 'fontello';
+      src: url('./font/fontello.eot?55997964');
+      src: url('./font/fontello.eot?55997964#iefix') format('embedded-opentype'),
+           url('./font/fontello.woff?55997964') format('woff'),
+           url('./font/fontello.ttf?55997964') format('truetype'),
+           url('./font/fontello.svg?55997964#fontello') format('svg');
+      font-weight: normal;
+      font-style: normal;
+    }
+     
+     
+    .demo-icon
+    {
+      font-family: "fontello";
+      font-style: normal;
+      font-weight: normal;
+      speak: none;
+     
+      display: inline-block;
+      text-decoration: inherit;
+      width: 1em;
+      margin-right: .2em;
+      text-align: center;
+      /* opacity: .8; */
+     
+      /* For safety - reset parent styles, that can break glyph codes*/
+      font-variant: normal;
+      text-transform: none;
+     
+      /* fix buttons height, for twitter bootstrap */
+      line-height: 1em;
+     
+      /* Animation center compensation - margins should be symmetric */
+      /* remove if not needed */
+      margin-left: .2em;
+     
+      /* You can be more comfortable with increased icons size */
+      /* font-size: 120%; */
+     
+      /* Font smoothing. That was taken from TWBS */
+      -webkit-font-smoothing: antialiased;
+      -moz-osx-font-smoothing: grayscale;
+     
+      /* Uncomment for 3D effect */
+      /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
+    }
+     </style>
+    <link rel="stylesheet" href="css/animation.css"><!--[if IE 7]><link rel="stylesheet" href="css/fontello-ie7.css"><![endif]-->
+    <script>
+      function toggleCodes(on) {
+        var obj = document.getElementById('icons');
+      
+        if (on) {
+          obj.className += ' codesOn';
+        } else {
+          obj.className = obj.className.replace(' codesOn', '');
+        }
+      }
+      
+    </script>
+  </head>
+  <body>
+    <div class="container header">
+      <h1>
+        fontello
+         <small>font demo</small>
+      </h1>
+      <label class="switch">
+        <input type="checkbox" onclick="toggleCodes(this.checked)">show codes
+      </label>
+    </div>
+    <div id="icons" class="container">
+      <div class="row">
+        <div title="Code: 0xe800" class="the-icons span3"><i class="demo-icon fa-mavon-bold">&#xe800;</i> <span class="i-name">fa-mavon-bold</span><span class="i-code">0xe800</span></div>
+        <div title="Code: 0xe801" class="the-icons span3"><i class="demo-icon fa-mavon-italic">&#xe801;</i> <span class="i-name">fa-mavon-italic</span><span class="i-code">0xe801</span></div>
+        <div title="Code: 0xe802" class="the-icons span3"><i class="demo-icon fa-mavon-thumb-tack">&#xe802;</i> <span class="i-name">fa-mavon-thumb-tack</span><span class="i-code">0xe802</span></div>
+        <div title="Code: 0xe803" class="the-icons span3"><i class="demo-icon fa-mavon-link">&#xe803;</i> <span class="i-name">fa-mavon-link</span><span class="i-code">0xe803</span></div>
+      </div>
+      <div class="row">
+        <div title="Code: 0xe804" class="the-icons span3"><i class="demo-icon fa-mavon-picture-o">&#xe804;</i> <span class="i-name">fa-mavon-picture-o</span><span class="i-code">0xe804</span></div>
+        <div title="Code: 0xe805" class="the-icons span3"><i class="demo-icon fa-mavon-repeat">&#xe805;</i> <span class="i-name">fa-mavon-repeat</span><span class="i-code">0xe805</span></div>
+        <div title="Code: 0xe806" class="the-icons span3"><i class="demo-icon fa-mavon-undo">&#xe806;</i> <span class="i-name">fa-mavon-undo</span><span class="i-code">0xe806</span></div>
+        <div title="Code: 0xe807" class="the-icons span3"><i class="demo-icon fa-mavon-trash-o">&#xe807;</i> <span class="i-name">fa-mavon-trash-o</span><span class="i-code">0xe807</span></div>
+      </div>
+      <div class="row">
+        <div title="Code: 0xe808" class="the-icons span3"><i class="demo-icon fa-mavon-floppy-o">&#xe808;</i> <span class="i-name">fa-mavon-floppy-o</span><span class="i-code">0xe808</span></div>
+        <div title="Code: 0xe809" class="the-icons span3"><i class="demo-icon fa-mavon-compress">&#xe809;</i> <span class="i-name">fa-mavon-compress</span><span class="i-code">0xe809</span></div>
+        <div title="Code: 0xe80a" class="the-icons span3"><i class="demo-icon fa-mavon-eye">&#xe80a;</i> <span class="i-name">fa-mavon-eye</span><span class="i-code">0xe80a</span></div>
+        <div title="Code: 0xe80b" class="the-icons span3"><i class="demo-icon fa-mavon-eye-slash">&#xe80b;</i> <span class="i-name">fa-mavon-eye-slash</span><span class="i-code">0xe80b</span></div>
+      </div>
+      <div class="row">
+        <div title="Code: 0xe80c" class="the-icons span3"><i class="demo-icon fa-mavon-question-circle">&#xe80c;</i> <span class="i-name">fa-mavon-question-circle</span><span class="i-code">0xe80c</span></div>
+        <div title="Code: 0xe80d" class="the-icons span3"><i class="demo-icon fa-mavon-times">&#xe80d;</i> <span class="i-name">fa-mavon-times</span><span class="i-code">0xe80d</span></div>
+        <div title="Code: 0xe80f" class="the-icons span3"><i class="demo-icon fa-mavon-align-left">&#xe80f;</i> <span class="i-name">fa-mavon-align-left</span><span class="i-code">0xe80f</span></div>
+        <div title="Code: 0xe810" class="the-icons span3"><i class="demo-icon fa-mavon-align-center">&#xe810;</i> <span class="i-name">fa-mavon-align-center</span><span class="i-code">0xe810</span></div>
+      </div>
+      <div class="row">
+        <div title="Code: 0xe811" class="the-icons span3"><i class="demo-icon fa-mavon-align-right">&#xe811;</i> <span class="i-name">fa-mavon-align-right</span><span class="i-code">0xe811</span></div>
+        <div title="Code: 0xf0b2" class="the-icons span3"><i class="demo-icon fa-mavon-arrows-alt">&#xf0b2;</i> <span class="i-name">fa-mavon-arrows-alt</span><span class="i-code">0xf0b2</span></div>
+        <div title="Code: 0xf0c9" class="the-icons span3"><i class="demo-icon fa-mavon-bars">&#xf0c9;</i> <span class="i-name">fa-mavon-bars</span><span class="i-code">0xf0c9</span></div>
+        <div title="Code: 0xf0ca" class="the-icons span3"><i class="demo-icon fa-mavon-list-ul">&#xf0ca;</i> <span class="i-name">fa-mavon-list-ul</span><span class="i-code">0xf0ca</span></div>
+      </div>
+      <div class="row">
+        <div title="Code: 0xf0cb" class="the-icons span3"><i class="demo-icon fa-mavon-list-ol">&#xf0cb;</i> <span class="i-name">fa-mavon-list-ol</span><span class="i-code">0xf0cb</span></div>
+        <div title="Code: 0xf0cc" class="the-icons span3"><i class="demo-icon fa-mavon-strikethrough">&#xf0cc;</i> <span class="i-name">fa-mavon-strikethrough</span><span class="i-code">0xf0cc</span></div>
+        <div title="Code: 0xf0cd" class="the-icons span3"><i class="demo-icon fa-mavon-underline">&#xf0cd;</i> <span class="i-name">fa-mavon-underline</span><span class="i-code">0xf0cd</span></div>
+        <div title="Code: 0xf0ce" class="the-icons span3"><i class="demo-icon fa-mavon-table">&#xf0ce;</i> <span class="i-name">fa-mavon-table</span><span class="i-code">0xf0ce</span></div>
+      </div>
+      <div class="row">
+        <div title="Code: 0xf0db" class="the-icons span3"><i class="demo-icon fa-mavon-columns">&#xf0db;</i> <span class="i-name">fa-mavon-columns</span><span class="i-code">0xf0db</span></div>
+        <div title="Code: 0xf10d" class="the-icons span3"><i class="demo-icon fa-mavon-quote-left">&#xf10d;</i> <span class="i-name">fa-mavon-quote-left</span><span class="i-code">0xf10d</span></div>
+        <div title="Code: 0xf121" class="the-icons span3"><i class="demo-icon fa-mavon-code">&#xf121;</i> <span class="i-name">fa-mavon-code</span><span class="i-code">0xf121</span></div>
+        <div title="Code: 0xf12b" class="the-icons span3"><i class="demo-icon fa-mavon-superscript">&#xf12b;</i> <span class="i-name">fa-mavon-superscript</span><span class="i-code">0xf12b</span></div>
+      </div>
+      <div class="row">
+        <div title="Code: 0xf12c" class="the-icons span3"><i class="demo-icon fa-mavon-subscript">&#xf12c;</i> <span class="i-name">fa-mavon-subscript</span><span class="i-code">0xf12c</span></div>
+        <div title="Code: 0xf1dc" class="the-icons span3"><i class="demo-icon fa-mavon-header">&#xf1dc;</i> <span class="i-name">fa-mavon-header</span><span class="i-code">0xf1dc</span></div>
+        <div title="Code: 0xf2d0" class="the-icons span3"><i class="demo-icon fa-mavon-window-maximize">&#xf2d0;</i> <span class="i-name">fa-mavon-window-maximize</span><span class="i-code">0xf2d0</span></div>
+      </div>
+    </div>
+    <div class="container footer">Generated by <a href="http://fontello.com">fontello.com</a></div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/node_modules/mavon-editor/src/lib/font/font/fontello.eot b/node_modules/mavon-editor/src/lib/font/font/fontello.eot
new file mode 100644
index 0000000000000000000000000000000000000000..4f8bd8207106c88b0d216d339dfcc50bee7ae8b2
GIT binary patch
literal 15568
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
MlK5d5iV;HoA7$VQ@c;k-

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/src/lib/font/font/fontello.svg b/node_modules/mavon-editor/src/lib/font/font/fontello.svg
new file mode 100644
index 0000000..01812b4
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/font/font/fontello.svg
@@ -0,0 +1,72 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Copyright (C) 2017 by original authors @ fontello.com</metadata>
+<defs>
+<font id="fontello" horiz-adv-x="1000" >
+<font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
+<missing-glyph horiz-adv-x="1000" />
+<glyph glyph-name="bold" unicode="&#xe800;" d="M310 1q41-18 78-18 210 0 210 187 0 64-23 101-15 24-34 41t-38 26-45 14-47 6-53 1q-40 0-56-6 0-29 0-88t-1-88q0-5 0-38t0-54 2-47 7-37z m-8 417q23-4 61-4 46 0 80 7t61 25 42 50 14 79q0 39-16 68t-45 46-60 24-69 8q-28 0-73-7 0-28 3-84t2-85q0-15 0-45t-1-44q0-26 1-38z m-302-497l1 53q9 2 48 9t59 15q4 7 7 15t4 19 4 18 1 21 0 19v36q0 548-12 572-2 5-12 8t-25 6-28 4-27 3-17 2l-2 46q55 1 190 6t208 6q13 0 38-1t38 0q39 0 76-7t72-24 60-39 41-59 16-76q0-29-9-54t-22-40-36-32-41-25-47-22q86-20 144-75t57-138q0-56-20-101t-52-72-77-48-91-27-98-8q-25 0-74 2t-74 1q-59 0-171-6t-129-7z" horiz-adv-x="785.7" />
+
+<glyph glyph-name="italic" unicode="&#xe801;" d="M0-78l10 48q12 4 34 9t40 11 33 13q16 19 23 56 1 4 35 162t63 303 29 165v14q-13 8-30 11t-39 4-32 3l10 58q19-1 67-4t84-4 67-1q27 0 55 1t68 4 54 4q-2-22-10-50-17-6-57-16t-60-19q-5-10-8-23t-5-23-4-25-4-24q-15-82-49-234t-43-198q-1-5-7-32t-11-51-9-46-4-32l1-10q9-3 103-18-2-24-9-55-6 0-18-1t-18-1q-16 0-49 6t-48 6q-77 1-115 1-28 0-79-5t-68-7z" horiz-adv-x="571.4" />
+
+<glyph glyph-name="thumb-tack" unicode="&#xe802;" d="M650 779q12 0 24-5 19-8 29-23t11-35v-719q0-19-11-35t-29-23q-10-4-24-4-27 0-47 18l-246 236-246-236q-20-19-46-19-13 0-25 5-18 7-29 23t-11 35v719q0 19 11 35t29 23q12 5 25 5h585z" horiz-adv-x="714.3" />
+
+<glyph glyph-name="link" unicode="&#xe803;" d="M813 171q0 23-16 38l-116 116q-16 16-38 16-24 0-40-18 1-1 10-10t12-12 9-11 7-14 2-15q0-23-16-38t-38-16q-8 0-15 2t-14 7-11 9-12 12-10 10q-19-17-19-40 0-23 16-38l115-116q15-15 38-15 22 0 38 15l82 81q16 16 16 37z m-393 394q0 22-15 38l-115 115q-16 16-38 16-22 0-38-15l-82-82q-16-15-16-37 0-22 16-38l116-116q15-15 38-15 23 0 40 17-2 2-11 11t-12 12-8 10-7 14-2 16q0 22 15 38t38 15q9 0 16-2t14-7 11-8 12-12 10-11q18 17 18 41z m500-394q0-66-48-113l-82-81q-46-47-113-47-68 0-114 48l-115 115q-46 47-46 114 0 68 49 116l-49 49q-48-49-116-49-67 0-114 47l-116 116q-47 47-47 114t47 113l82 82q47 46 114 46 67 0 114-47l115-116q46-46 46-113 0-69-49-117l49-49q48 49 116 49 67 0 114-47l116-116q47-47 47-114z" horiz-adv-x="928.6" />
+
+<glyph glyph-name="picture-o" unicode="&#xe804;" d="M357 529q0-45-31-76t-76-32-76 32-31 76 31 76 76 31 76-31 31-76z m572-215v-250h-786v107l178 179 90-89 285 285z m53 393h-893q-7 0-12-5t-6-13v-678q0-7 6-13t12-5h893q7 0 13 5t5 13v678q0 8-5 13t-13 5z m89-18v-678q0-37-26-63t-63-27h-893q-36 0-63 27t-26 63v678q0 37 26 63t63 27h893q37 0 63-27t26-63z" horiz-adv-x="1071.4" />
+
+<glyph glyph-name="repeat" unicode="&#xe805;" d="M857 707v-250q0-14-10-25t-26-11h-250q-23 0-32 23-10 22 7 38l77 77q-82 77-194 77-58 0-111-23t-91-61-61-91-23-111 23-111 61-91 91-61 111-23q66 0 125 29t100 82q4 6 13 7 8 0 14-5l76-77q5-4 6-11t-5-13q-60-74-147-114t-182-41q-87 0-167 34t-136 92-92 137-34 166 34 166 92 137 136 92 167 34q82 0 158-31t137-88l72 72q17 18 39 8 22-9 22-33z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="undo" unicode="&#xe806;" d="M857 350q0-87-34-166t-91-137-137-92-166-34q-96 0-183 41t-147 114q-4 6-4 13t5 11l76 77q6 5 14 5 9-1 13-7 41-53 100-82t126-29q58 0 110 23t92 61 61 91 22 111-22 111-61 91-92 61-110 23q-55 0-105-20t-90-57l77-77q17-16 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l72-72q60 57 137 88t159 31q87 0 166-34t137-92 91-137 34-166z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="trash-o" unicode="&#xe807;" d="M286 439v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m143 0v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m142 0v-321q0-8-5-13t-12-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q7 0 12-5t5-13z m72-404v529h-500v-529q0-12 4-22t8-15 6-5h464q2 0 6 5t8 15 4 22z m-375 601h250l-27 65q-4 5-9 6h-177q-6-1-10-6z m518-18v-36q0-8-5-13t-13-5h-54v-529q0-46-26-80t-63-34h-464q-37 0-63 33t-27 79v531h-53q-8 0-13 5t-5 13v36q0 8 5 13t13 5h172l39 93q9 21 31 35t44 15h178q23 0 44-15t30-35l39-93h173q8 0 13-5t5-13z" horiz-adv-x="785.7" />
+
+<glyph glyph-name="floppy-o" unicode="&#xe808;" d="M214-7h429v214h-429v-214z m500 0h72v500q0 8-6 21t-11 20l-157 156q-5 6-19 12t-22 5v-232q0-22-15-38t-38-16h-322q-22 0-37 16t-16 38v232h-72v-714h72v232q0 22 16 38t37 16h465q22 0 38-16t15-38v-232z m-214 518v178q0 8-5 13t-13 5h-107q-7 0-13-5t-5-13v-178q0-7 5-13t13-5h107q7 0 13 5t5 13z m357-18v-518q0-22-15-38t-38-16h-750q-23 0-38 16t-16 38v750q0 22 16 38t38 16h517q23 0 50-12t42-26l156-157q16-15 27-42t11-49z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="compress" unicode="&#xe809;" d="M429 314v-250q0-14-11-25t-25-10-25 10l-81 81-185-186q-5-5-13-5t-12 5l-64 64q-6 6-6 13t6 13l185 185-80 80q-11 11-11 25t11 25 25 11h250q14 0 25-11t11-25z m421 375q0-7-6-12l-185-186 80-80q11-11 11-25t-11-25-25-11h-250q-14 0-25 11t-10 25v250q0 14 10 25t25 10 25-10l81-80 185 185q6 5 13 5t13-5l63-64q6-5 6-13z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="eye" unicode="&#xe80a;" d="M929 314q-85 132-213 197 34-58 34-125 0-103-73-177t-177-73-177 73-73 177q0 67 34 125-128-65-213-197 75-114 187-182t242-68 243 68 186 182z m-402 215q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-11 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19z m473-215q0-19-11-38-78-129-210-206t-279-77-279 77-210 206q-11 19-11 38t11 39q78 128 210 205t279 78 279-78 210-205q11-20 11-39z" horiz-adv-x="1000" />
+
+<glyph glyph-name="eye-slash" unicode="&#xe80b;" d="M310 105l43 79q-48 35-76 88t-27 114q0 67 34 125-128-65-213-197 94-144 239-209z m217 424q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-11 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19z m202 106q0-4 0-5-59-105-176-316t-176-316l-28-50q-5-9-15-9-7 0-75 39-9 6-9 16 0 7 25 49-80 36-147 96t-117 137q-11 17-11 38t11 39q86 131 212 207t277 76q50 0 100-10l31 54q5 9 15 9 3 0 10-3t18-9 18-10 18-10 10-7q9-5 9-15z m21-249q0-78-44-142t-117-91l157 280q4-25 4-47z m250-72q0-19-11-38-22-36-61-81-84-96-194-149t-234-53l41 74q119 10 219 76t169 171q-65 100-158 164l35 63q53-36 102-85t81-103q11-19 11-39z" horiz-adv-x="1000" />
+
+<glyph glyph-name="question-circle" unicode="&#xe80c;" d="M500 82v107q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h107q8 0 13 5t5 13z m143 375q0 49-31 91t-77 65-95 23q-136 0-207-119-9-13 4-24l74-55q4-4 10-4 9 0 14 7 30 38 48 51 19 14 48 14 27 0 48-15t21-33q0-21-11-34t-38-25q-35-15-65-48t-29-70v-20q0-8 5-13t13-5h107q8 0 13 5t5 13q0 10 12 27t30 28q18 10 28 16t25 19 25 27 16 34 7 45z m214-107q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="times" unicode="&#xe80d;" d="M724 112q0-22-15-38l-76-76q-16-15-38-15t-38 15l-164 165-164-165q-16-15-38-15t-38 15l-76 76q-16 16-16 38t16 38l164 164-164 164q-16 16-16 38t16 38l76 76q16 16 38 16t38-16l164-164 164 164q16 16 38 16t38-16l76-76q15-15 15-38t-15-38l-164-164 164-164q15-15 15-38z" horiz-adv-x="785.7" />
+
+<glyph glyph-name="align-left" unicode="&#xe80f;" d="M1000 100v-71q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v71q0 15 11 25t25 11h928q15 0 25-11t11-25z m-214 214v-71q0-15-11-25t-25-11h-714q-15 0-25 11t-11 25v71q0 15 11 25t25 11h714q15 0 25-11t11-25z m143 215v-72q0-14-11-25t-25-11h-857q-15 0-25 11t-11 25v72q0 14 11 25t25 10h857q14 0 25-10t11-25z m-215 214v-72q0-14-10-25t-25-10h-643q-15 0-25 10t-11 25v72q0 14 11 25t25 11h643q14 0 25-11t10-25z" horiz-adv-x="1000" />
+
+<glyph glyph-name="align-center" unicode="&#xe810;" d="M1000 100v-71q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v71q0 15 11 25t25 11h928q15 0 25-11t11-25z m-214 214v-71q0-15-11-25t-25-11h-500q-14 0-25 11t-11 25v71q0 15 11 25t25 11h500q15 0 25-11t11-25z m143 215v-72q0-14-11-25t-25-11h-786q-14 0-25 11t-11 25v72q0 14 11 25t25 10h786q14 0 25-10t11-25z m-215 214v-72q0-14-10-25t-25-10h-358q-14 0-25 10t-10 25v72q0 14 10 25t25 11h358q14 0 25-11t10-25z" horiz-adv-x="1000" />
+
+<glyph glyph-name="align-right" unicode="&#xe811;" d="M1000 100v-71q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v71q0 15 11 25t25 11h928q15 0 25-11t11-25z m0 214v-71q0-15-11-25t-25-11h-714q-14 0-25 11t-11 25v71q0 15 11 25t25 11h714q15 0 25-11t11-25z m0 215v-72q0-14-11-25t-25-11h-857q-14 0-25 11t-11 25v72q0 14 11 25t25 10h857q15 0 25-10t11-25z m0 214v-72q0-14-11-25t-25-10h-643q-14 0-25 10t-10 25v72q0 14 10 25t25 11h643q15 0 25-11t11-25z" horiz-adv-x="1000" />
+
+<glyph glyph-name="arrows-alt" unicode="&#xf0b2;" d="M716 548l-198-198 198-198 80 80q17 18 39 8 22-9 22-33v-250q0-14-10-25t-26-11h-250q-23 0-32 23-10 21 7 38l81 81-198 198-198-198 80-81q17-17 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l80-80 198 198-198 198-80-80q-11-11-25-11-7 0-14 3-22 9-22 33v250q0 14 11 25t25 11h250q23 0 33-23 9-21-8-38l-80-81 198-198 198 198-81 81q-17 17-7 38 9 23 32 23h250q15 0 26-11t10-25v-250q0-24-22-33-7-3-14-3-14 0-25 11z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="bars" unicode="&#xf0c9;" d="M857 100v-71q0-15-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 25t25 11h785q15 0 26-11t10-25z m0 286v-72q0-14-10-25t-26-10h-785q-15 0-25 10t-11 25v72q0 14 11 25t25 10h785q15 0 26-10t10-25z m0 285v-71q0-14-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 26t25 10h785q15 0 26-10t10-26z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="list-ul" unicode="&#xf0ca;" d="M214 64q0-44-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m0 286q0-45-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m786-232v-107q0-7-5-13t-13-5h-678q-8 0-13 5t-5 13v107q0 7 5 12t13 6h678q7 0 13-6t5-12z m-786 518q0-45-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m786-232v-108q0-7-5-12t-13-5h-678q-8 0-13 5t-5 12v108q0 7 5 12t13 5h678q7 0 13-5t5-12z m0 285v-107q0-7-5-12t-13-6h-678q-8 0-13 6t-5 12v107q0 8 5 13t13 5h678q7 0 13-5t5-13z" horiz-adv-x="1000" />
+
+<glyph glyph-name="list-ol" unicode="&#xf0cb;" d="M213-54q0-45-31-70t-75-26q-60 0-96 37l31 49q28-25 60-25 16 0 28 8t12 24q0 35-59 31l-14 31q4 6 18 24t24 31 20 21v1q-9 0-27-1t-27 0v-30h-59v85h186v-49l-53-65q28-6 45-27t17-49z m1 350v-89h-202q-4 20-4 30 0 29 14 52t31 38 37 27 31 24 14 25q0 14-9 22t-22 7q-25 0-45-32l-47 33q13 28 40 44t59 16q40 0 68-23t28-63q0-28-19-51t-42-36-42-28-20-30h71v34h59z m786-178v-107q0-7-5-13t-13-5h-678q-8 0-13 5t-5 13v107q0 8 5 13t13 5h678q7 0 13-6t5-12z m-786 502v-56h-187v56h60q0 22 0 67t1 68v7h-1q-5-10-28-30l-40 42 76 71h59v-225h60z m786-216v-108q0-7-5-12t-13-5h-678q-8 0-13 5t-5 12v108q0 7 5 12t13 5h678q7 0 13-5t5-12z m0 285v-107q0-7-5-12t-13-6h-678q-8 0-13 6t-5 12v107q0 8 5 13t13 5h678q7 0 13-5t5-13z" horiz-adv-x="1000" />
+
+<glyph glyph-name="strikethrough" unicode="&#xf0cc;" d="M982 350q8 0 13-5t5-13v-36q0-7-5-12t-13-5h-964q-8 0-13 5t-5 12v36q0 8 5 13t13 5h964z m-712 36q-16 19-29 44-27 55-27 105 0 101 75 173 74 71 219 71 28 0 94-11 36-7 98-27 6-21 12-66 8-68 8-102 0-10-3-25l-7-2-46 4-8 1q-28 83-58 114-49 51-117 51-64 0-101-33-38-32-38-81 0-41 37-78t156-72q38-12 96-37 33-16 53-29h-414z m283-143h229q4-22 4-51 0-62-23-119-13-31-40-58-20-19-61-45-44-27-85-37-45-12-113-12-64 0-109 13l-78 23q-32 8-40 15-5 5-5 12v8q0 60-1 87 0 17 0 38l1 20v25l57 1q8-19 17-40t12-31 7-15q20-32 45-52 24-20 59-32 33-12 73-12 36 0 78 15 43 14 68 48 26 34 26 72 0 47-45 87-19 16-76 40z" horiz-adv-x="1000" />
+
+<glyph glyph-name="underline" unicode="&#xf0cd;" d="M27 726q-21 1-25 2l-2 49q7 1 22 1 34 0 63-3 74-4 93-4 47 0 93 2 65 2 82 3 31 0 48 1l-1-8 1-36v-5q-33-5-69-5-33 0-44-14-7-7-7-73 0-7 0-18t0-15l1-127 8-157q3-69 28-112 20-33 54-52 49-26 98-26 59 0 107 16 31 10 55 28 27 20 37 36 20 31 29 63 12 41 12 128 0 44-2 72t-6 68-8 89l-2 33q-3 37-13 49-19 20-43 19l-56-1-8 2 1 48h47l114-6q43-2 110 6l10-1q3-22 3-29 0-4-2-17-25-7-47-8-41-6-44-9-8-8-8-23 0-4 0-15t1-17q5-11 13-221 3-109-9-170-8-42-23-68-21-36-62-69-42-31-102-49-61-19-142-19-93 0-159 26-66 26-99 68-34 42-47 109-9 45-9 132v186q0 105-9 119-14 20-82 22z m830-787v36q0 8-5 13t-13 5h-821q-8 0-13-5t-5-13v-36q0-8 5-13t13-5h821q8 0 13 5t5 13z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="table" unicode="&#xf0ce;" d="M286 82v107q0 8-5 13t-13 5h-179q-7 0-12-5t-6-13v-107q0-8 6-13t12-5h179q8 0 13 5t5 13z m0 214v108q0 7-5 12t-13 5h-179q-7 0-12-5t-6-12v-108q0-7 6-12t12-5h179q8 0 13 5t5 12z m285-214v107q0 8-5 13t-12 5h-179q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h179q7 0 12 5t5 13z m-285 429v107q0 8-5 13t-13 5h-179q-7 0-12-5t-6-13v-107q0-8 6-13t12-5h179q8 0 13 5t5 13z m285-215v108q0 7-5 12t-12 5h-179q-8 0-13-5t-5-12v-108q0-7 5-12t13-5h179q7 0 12 5t5 12z m286-214v107q0 8-5 13t-13 5h-178q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h178q8 0 13 5t5 13z m-286 429v107q0 8-5 13t-12 5h-179q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h179q7 0 12 5t5 13z m286-215v108q0 7-5 12t-13 5h-178q-8 0-13-5t-5-12v-108q0-7 5-12t13-5h178q8 0 13 5t5 12z m0 215v107q0 8-5 13t-13 5h-178q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h178q8 0 13 5t5 13z m72 178v-607q0-37-27-63t-63-26h-750q-36 0-63 26t-26 63v607q0 37 26 63t63 27h750q37 0 63-27t27-63z" horiz-adv-x="928.6" />
+
+<glyph glyph-name="columns" unicode="&#xf0db;" d="M89-7h340v643h-358v-625q0-7 6-13t12-5z m768 18v625h-357v-643h339q8 0 13 5t5 13z m72 678v-678q0-37-27-63t-63-27h-750q-36 0-63 27t-26 63v678q0 37 26 63t63 27h750q37 0 63-27t27-63z" horiz-adv-x="928.6" />
+
+<glyph glyph-name="quote-left" unicode="&#xf10d;" d="M429 314v-214q0-45-32-76t-76-31h-214q-44 0-76 31t-31 76v393q0 58 23 111t61 91 91 61 111 23h35q15 0 26-11t10-25v-72q0-14-10-25t-26-10h-35q-59 0-101-42t-42-101v-18q0-22 16-38t37-16h125q45 0 76-31t32-76z m500 0v-214q0-45-32-76t-76-31h-214q-44 0-76 31t-31 76v393q0 58 23 111t61 91 91 61 111 23h35q15 0 26-11t10-25v-72q0-14-10-25t-26-10h-35q-59 0-101-42t-42-101v-18q0-22 16-38t37-16h125q45 0 76-31t32-76z" horiz-adv-x="928.6" />
+
+<glyph glyph-name="code" unicode="&#xf121;" d="M344 69l-28-28q-5-5-12-5t-13 5l-260 261q-6 5-6 12t6 13l260 260q5 6 13 6t12-6l28-28q6-5 6-13t-6-12l-219-220 219-219q6-6 6-13t-6-13z m330 596l-208-721q-2-7-9-11t-13-1l-34 9q-8 3-11 9t-2 14l209 720q2 8 8 11t13 2l35-10q7-2 11-9t1-13z m367-363l-260-261q-6-5-13-5t-13 5l-28 28q-5 6-5 13t5 13l219 219-219 220q-5 5-5 12t5 13l28 28q6 6 13 6t13-6l260-260q5-5 5-13t-5-12z" horiz-adv-x="1071.4" />
+
+<glyph glyph-name="superscript" unicode="&#xf12b;" d="M501 86v-93h-139l-89 141-13 23q-4 5-6 12h-2q0-2-1-4t-2-4-2-4q-5-11-14-25l-86-139h-144v93h71l110 162-103 152h-76v94h154l77-127q1-2 13-24 4-5 6-11h2q1 5 6 11l14 24 78 127h143v-94h-69l-103-149 114-165h61z m355 379v-115h-287l-1 15q-3 16-3 26 0 36 15 65t36 48 47 37 47 30 36 30 15 36q0 21-17 35t-39 13q-29 0-54-21-8-6-20-22l-59 52q15 20 35 37 47 36 105 36 61 0 99-33t38-89q0-31-13-57t-35-43-45-33-46-28-37-28-17-36h130v45h70z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="subscript" unicode="&#xf12c;" d="M501 86v-93h-139l-89 141-13 23q-4 5-6 12h-2q0-2-1-4t-2-4-2-4q-5-11-14-25l-86-139h-144v93h71l110 162-103 152h-76v94h154l77-127q1-2 13-24 4-5 6-11h2q1 5 6 11l14 24 78 127h143v-94h-69l-103-149 114-165h61z m356-121v-115h-287l-2 15q-2 25-2 26 0 35 15 65t36 48 47 37 47 30 36 30 15 36q0 21-17 35t-39 13q-28 0-54-21-8-6-20-22l-59 52q15 20 35 37 45 36 105 36 62 0 100-33t37-89q0-37-19-66t-47-48-55-35-49-35-23-41h130v45h70z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="header" unicode="&#xf1dc;" d="M939-79q-25 0-74 2t-75 2q-24 0-73-2t-74-2q-13 0-21 12t-7 25q0 18 9 26t22 9 29 4 25 9q18 11 18 78l0 218q0 12-1 17-7 3-28 3h-376q-22 0-29-3 0-5 0-17l-1-207q0-79 21-91 9-6 26-8t32-2 25-8 11-26q0-14-6-26t-21-13q-26 0-78 2t-77 2q-24 0-71-2t-71-2q-13 0-20 12t-7 25q0 17 9 25t20 10 26 4 24 9q18 13 18 80l-1 31v454q0 2 1 15t0 20-1 21-2 24-4 20-6 18-9 10q-8 5-25 7t-29 1-23 7-10 26q0 14 6 26t20 13q26 0 78-2t77-2q23 0 71 2t70 2q14 0 21-13t7-26q0-17-9-25t-22-8-27-2-24-7q-20-12-20-90l1-178q0-12 0-18 7-2 22-2h390q14 0 21 2 1 6 1 18l0 178q0 78-19 90-10 6-33 7t-37 7-14 28q0 14 7 26t21 13q24 0 74-2t73-2q24 0 72 2t72 2q14 0 21-13t7-26q0-17-10-25t-22-8-29-2-24-7q-20-13-20-90l1-526q0-66 19-78 9-6 25-8t30-2 23-9 10-25q0-14-6-26t-20-13z" horiz-adv-x="1000" />
+
+<glyph glyph-name="window-maximize" unicode="&#xf2d0;" d="M143 64h714v429h-714v-429z m857 625v-678q0-37-26-63t-63-27h-822q-36 0-63 27t-26 63v678q0 37 26 63t63 27h822q37 0 63-27t26-63z" horiz-adv-x="1000" />
+</font>
+</defs>
+</svg>
\ No newline at end of file
diff --git a/node_modules/mavon-editor/src/lib/font/font/fontello.ttf b/node_modules/mavon-editor/src/lib/font/font/fontello.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..fcc3b308b45bd042835771713158f9e97b75211f
GIT binary patch
literal 15400
zcmd^md2pP^b!T^f=X`S?_y)k>_~yV22+R!b84v)$Ar68ENP!?oVJIFm1V9obKtRAy
z5@pMlSBfmthh%T!bt$$YrDP|StX%^tDO+?Z>#BIYw&KK!*OtAJ%VlRPwMd-UluLHS
zToT-0e=`8V%UAio9k9QC-TnIO?)P55_xklmLJ1*G@+1++;>f{61I7m%9!Je}q=^R(
zwzT&f2Y*Be9Ygu>)O>#NMDF(sDE}!T!qKTm3Wogcn<62tF0>n`7EjM#`snjnlv@e0
zE}qUWFQOi8ttxW$^xVZ$w$XRB5h9^a!y{*A^3#r&GiM2DdN<lrXHcQMPxuRzkx1ms
zeBrT&KXUWuD1R5_C+8NX@*n-qv(tn$Pog|9pMPwTzG53g`I9Ic=kxP3U;k8XJ<5MY
z2>ZLmh2_HN*!A}klKc?n{O-l2nZ<wJ!P|OY0{%0EuU#Xpq@S>%oud=PF_$l#C)EVA
zGk?5&Gfd}ZPv;3=3vZ!l<E<1ml*sF~!iVVdM8f!wGmJz&RLbcONE>CSC6a*Jd;G>u
z4NsHID*5Rf!uZXz<cKg%J`OZKQt5|xf=h(NkuWa(Zn^E7sO4C3<eFJ8lFy*5gYp8A
zSM96rtCz3-{nfYLw!a;GJO1|fe)`7En}n>ARVV7dR<3VeuSd^2e-!U(C7t-|FaKpo
z21pdk5il1Ct5-k;3&yt+8?h4yWXeU{#6!HqM=H?YPbx_jXd56kq?XhXaEWr7{r~>6
zaRSh%%VYpmRsr(FdAeFopfg!5Cs3TMmJ^qQ)pFu8w^~kI8du8+oFS{_#ASE2oWL!z
zT25SUR?7(-B&+2FUXs;v0$0guIf1{Bo>Bs*$tw0ZPkgVhx=RV%Cs!|*66Anf{aPtO
zBFNR(O9`?;uKsN)K}yKgua^?!g<So+Qi9}=tAAfgkRfvQtx|$Ck+(4)o*-A`?O-WE
z!pPgrr36_cZ^ugsQb*qYUMWHTu+K^fk_c+vToJs274vB#C&<3co-JX<gaec^2PHHP
zNfk$+wWI}5TwtP*14khJG)IUmlL^c~o>YJ(k2W_qpJ>kR93I-<xFsD_rOM_8y`#OW
zGnN#?A*I5Hf4YF0eirLYvRFv*>AcoQ)BX4-MAKa^jv7lv((QV>y-uj`IRvGSDm)8C
zm5@SHTN=LUcSfU~O-7@Oih@6y97@$uqo+SwlaMK0`=8XZ-zUmU7MYFt>Z)r5mZpx~
z_I7)0&(3zkQ=N>|9xl+v%#ov=RVS-@7pdoqnTE=cM`QA2Z|%{FPWo}t5y`Z~dO{AW
z)GXE}>KxT;LKkzWic5FYND&sPlw_HSNvcss9ijN1SZ#Y<$mQ^zKiGXF)nsF0X?sJ0
zZ?3Rj(6)zkXS!S<XR_HQ2!xGPQ92CTLx-?=!q|B(@pOVvN}%2;8Qt2|*?O{0l=S9`
zbU#a{w$qen8wJtQ{yN&xj<T#^da{%9Cv!5n!ms;fB_xMK(Qp*x)@<>J)1`z%J@!ys
z(*|32)d#v8Q%rS_`6NMNB6AK|JQk5!jx$BBlwAYPebJhZ{jH*AQ@jm-{2~qc9IDJ%
zk0?MMM7>7#Sv0#}tFw%+y^%ba)HO|TR@O5c<=UCA^{?6MSZfUlX6hVR2^|seAPbCA
zdWsT{%chYU8W1I4Gi}E*{BEDDV7@I_K{ymk(k^#rDxK<Jmuxn#kLn)H5%B%|=e}yY
z&7<ocn_aL<YMt*!o7Yf8&%gbfS5gcw`vyvw0GHz{!Y72?7{8YsB`;*Ed#FWvaD)-j
zYh_dsMh-VK%TAdoZ0FvhHa3}Qg*~!}(hQ*rBzlG`1;s*g5Oal!N*>IC7#$^opiUB1
zwF$cenRebqkSz1Ok3zw_U)d>}abzd`{+dRAWp$-blWLnAI$LNoq<{kT6ch+0X$zHo
z^;B;Mm#Nw4ELWssN!Hbw^0(_~u1Bj6Eg)F5GaW1C=+cfhpW-)jA>k^xk}h4aQD*3>
z!y)Qk*RnI=8h5Qd>Rfik0k{gzq}wlOVx8aOP^_Y=dFVT><H`3Ymy>O6t?zFsw6u)3
zJkzpK`g6at;PU8#OLk(?q9*F@q_g039&ph=(p}3g=eRSDm*SlchebE2D5-+Q>R$WE
zK+A!a*5#J>x3;z6rOzbClP!hhv!xPbM!b3R=8D(?nNguh>q!ealo_w}F)BDAI1anb
zA~I4_0a1kp0v`zz=ZUOPfyzRTOB|z|U6LeD5K)vSxt1DryOPb(aFyRx@2>ZHJ*wny
zralKK1~ow|f?a7pZ3u>B#qHD6!S+<l-5E6nF&K)bx%>s&bvo03q#yrS-}N6~K0<40
z-SwvwjoM`43B^XW1Dy@mpNfD}4Z;%*oy?u+X9I@^#GbWl*Ur6~rL`|>>Ww2DQDvV2
zZEqZD=%lF#`wY(ry}1T`o5h-2$+k>Sf>OzX#j+7>A#4|69vXoP>>NxQB@&b@6Gb)w
z6(LR%&|x$d^Tr|_vQ*tnD|~V@4Mn$8Y<CBA9fMwgCatH?n9vHLB<mMC+I4?Ar3+b~
z>zd!|-Z#G3b9OYD96j4J@W>X?Essh}?)%({2VYv;C1xJ`#6#ns*tW|ZXMc0ep(kAX
z_5rZ~{GKkEO8Z2Iyl0FK6<++@i-n>7t-Cz1X6C*xt*4FjXL_5cAT`v&N?<{vKn0Ov
zt1y9@3lc;Le1k1F7sNFkBcofo{9%8@T#(PfpuJ+zP6)Mb>bZU)$-pbWZmu+jtx!+<
zq5tZbkR4ij>2U6IePFrl7PmYy*mGvAi6uwp7N#5bxxM~tP9KfCclEt6{@{y+0eT$I
zq4C|aL)<4(xvQtVvc`seu7vKmR_XQZ+S-q`VM*MB0FON2QAsL$$sjpRrZf2mhncKy
z30Ao+Q1IZH1YW`LQ8F(wMih90=inY#REH(!v@_KPn?hCjI8m%tWr8S*b&^;W>*&mM
z{`f=LgX0g3?jG5(-52pi`7i8(ZlKVKoT*$D_EIqKSCqZ(pxXzF5Nz+Kv?CUcg=IxD
z1p^(!km;BkB;7{&+qjj5Jk*1JI<3>xh^m>7=Wc-?(UelHqU~C<sVbvyFjZaqz%^*?
z6<MS|($rLE!&)muxr_JyuQ5wpzwB?a#6GKP^z&=~jaSkg{COXEZJN1n{KV$dG#{JU
zAwm2PV#FIiNe&Gpnb(}jv5Fd6=R2lx53jse1QH}|WSAVt>~C%gheTDRBX%l+x@;%W
zpsrO-%t4C?vI+?UZ@`q}5_n><ka3<9%Oq5_Wi+#`yUQQ#aC>{*ZkH7V_XoRzQU{bk
z3r$jZBPF7Bh20$xHjq_Ugs#pgSR(u3y?}lxX@jyQ1is(iq@P_oNZ;9IlRhQYsCE9e
zzt-#Mu3bh2{Rim7H#PN~sSo&by3T*Y1K~DwCizp&Pr7vF%{S>gYPIr7*+y4&!_Zf6
zq|BVwUFMX$%=>CLuJI=JW8J89e9D>Pa*Ac$d`%dKL*a)uY0V^>A_0L3P8sIR+<)Q%
zw280)J;@e86S{y-r+gJ#dnzTV%2Xg&wz6(Wu<=Zp<3`4>m*g-FDnMe=rg5R4)oZK=
zUXxs6MwVY2vtr*kbo%LAps!9l@S5z9x68B#P0VuOiX>%F0puE8r?ZN5#e{fAW*K`8
zt!3N&3t^Q#0lzs!I>^q<pcM*_*`W{lIv965p%@7h$T_GSEbknc%;4t13`mmcIC1q)
zrBS~g@l{mniWF$3(U=Z~!msE|%WxwNsO%^_B=E64#kmV!`V?6-B3OAk6{n(K7hXQ}
zWawjWd@S_jp}jw#;y<l@-eui6?b2OCtyUNPU)KF=|FQOuYyYv|YTZv&8l~!fEA4rD
zN6+Bt-)GOy4)*MLdg<9`>2Bao4_jR>YwM8f>t65sUU=bs-l*@%7ubvMf!mKI-~1b_
zcLgF@jZ@_id5}Dqndl6_#vO#mMaBogv9W<IF_p?PU3b4rZa4HP<XZ*-aKIJL!96+8
zH;QQjxk?qu=;&T=vMS=MRbV9=(n*@;>(}pEeA-t5&yjN9D+&@NDJKKhuCN%Up3oKD
z3kSuk`#~m{lrYyI(O4R;n@&^Bt=$x4I!@1SBGK!;|Jqw4Y08kLYV4VItM%~p|I*%G
zFKL3q8nIGK#pLc!iPx-pY~p+G-ty>Ihj$zccbzn>vk!#NZsWvzo}S)Jx(gzmT{|+{
zZi&g7(iC}YpS#KP)F-r*MV5WANNYFtKN+BvRmZ*FNFsN3kM{KJbY^?xWD15!xOoG*
z<AkZh)1dIK%<vWp=M5e^-0xd5B{4xdM-&K?0$~DY;LSp)Kz8np%ac$f@@Pd}vsZ_P
zR;8NehO#=Sr9K@RI_2$5Qn=ePoUo2|5U8EY9Eio$1#j<!uih{C;ev33OxxjwyaRo}
zH#Q#6^&f3}cEn=eBgz)3uA#e04}|;RIiRW1Q=`@SY~NY>%Ia6o%a8xnJ6GN_zTQov
z?`@k%K5Dn7MI{=j^HfyZoC6I$ywnr2y5#Db#_<bZE)>4}ul!-!=%27}v1dqx)MWyp
zDwhIZio55GumyPPPzp6ZpU4kvWe0P!QYg8YB^6+*2KFuIC_KqmUcqD3#dBoqWvBC%
zSDcHwYt-rd^rxM7BRZ2D!PM>8^BXpHJK2*NX~n6g5$<E93nva0`i;xJLS#viId4Qk
zf|iFGfP(}cfmfSOOkG{kE?Cis$s^7JZv3#zxkDGbqnt+BG>&NZm)m1ye6I6_Ro!tt
z2M0oT2roH(-_{*BQf7(0?({v6wm&JgWgYr=e9jwBl-izh=+h%6Xg<HX3I5tHhps#D
zpuYcMKApUR>u_%4Zl}X=W`NVd1-Hp0f$%#e0e1yBN!Cfg%bQ8S75=?Rux8_Hpzo9@
z@MB&OJSG9wUf>IJ(o??$0e+|JkKSJd_<FfW+;9E7or}PI)(=Uzk>X3{5`e<>KQY&z
zH48VMFxStXa{7K_0e}=kPaVNN7$)tRmj14e5bRxN&<J?kE=Dcz{6|E{yRabL+O5%^
zbf9Oe=`$<by@xL1USkYrff$@+Ws|p@j+uw+vJ2Sm*J0b!v1r<~^gQ~))j#|CSH3dl
zj`K5uMROnE1&dbppvO?MIur$KzvkC0Zj=wWH49pGsw;}a$|At<cq?Jj{T00P0XJe1
zrb})16)bl*S+L&Hnf({S5%%S>pPkNh^4)JrJ#_T1*zn+WSJXTSHQcei5jQe<$+th3
zZC>8I-T7(g`cF*O32rRomy|a1le#vxF7;8z2$z5n-ktAberEWV@GtEDzzcQ5TWvzj
zXAe1%IXcwWD`?ivI8!YFFT)9F1W`s!wrV&Qz<_hjW+5uGsGBq!&VCbo`8d!XzZDbO
zwKKE5JJsL?b-g~X#|G~;&E1>MeyVr*<Ph99IQHeWugf_k<5mMF0&g%kI1tx21TVi?
zI`fvEf`^}Bxs76<QEb=${a&@OQnyet@eJ!b+Q%|KP4JU*|Jsk%Jzkuf8CkEKQ#4KC
z52~LtPt@F?nY24A{EM&;F@SAkA2~+m$rDV-q>p3|2|nke=b6K|K<$oJs;H-1ngq==
zQUkNSz1AUEaR#7Ff^TaXIYBkQ7rr9GJ2r%Oj#p64138|7-LMMc3}II6qZ#6J*nJba
zi#fd1t~%_;!7#<6Dmesd-4>6VvqP3F@(IF^s}nrBWo44}IB_~{yUNT!Ja~6tZ?OTR
zoVdp*2sh3D4u@&NFgbG=kLI4=w3^@PIGOw%Ls$`*w9?<@7};z#6W_nzFy3`>dFkBj
zRDS=l{l|_zG=5<0fxWv22aIjTw!Yp-KzDm8z2T6bpUxnop;#K86&!XY#>1fLu8<t7
z2zPZ<z@_(AgyFjO3u*4yD>3f8!u@hErK5|Vg1JIpmv_qhz|HN#2|1STsNn6tY(IRv
zKi(IquQ6Pey$;b)scDvorT0o#O^CiO)`S{$!DFxTwb)ZeV|O$eg)_Bp^M1Jg?_cc0
z+1B4U+AHke+;H2jNhR88LtB;06&CAdPrY4*cUpI-ZHL@M2eLk`Hd$9$X?M7&5v(zi
zjWx;YI%nu|d1I-Xjb82U9!&TZ&DS*Y!|&dEZ}GV3O4-k9LtJz!lM5kkZbM`ZXG9HP
zDM%wh8%fGMQLr1-b8x)`n4z47JBQd^I9toII)N}K_lQ*)ULP(+C-#kI`a9ZPZLYS)
zXr&G<?uc5Y3Pg8Ji?l&qoEg9+oGB2Z#$N?o1w<+kwc<xHvrg$iEzTI`ACCy58H|f{
zr4g^gaf8RU`f-knMTIxHR=VD2K3(>}AAGcCAkvS?2}-J_u5Bo@ch95Io}llke-{1r
zfNx8DOJXRK*l(x^HEeZTWYO0))EGI`k?_*vh&FJ2g!n_mTa|8~dCsc%DiT8>&B>&L
z^&LCfw(JSps$BNx^xFQd^#N~nK(pEXsv;?BUm)tMqKy?k$!M&s9g4Ozf*|}nUW$bs
zC3E!1-l7FNx2n?x{p3b4FPUH>Idz<A7I9=N;{VVfJPd6juzMo>lFr#|>Ges3n>5uj
zLp1F?Oa_%EaDYU#+ltFcGdilO=FyPHutjyWJZ8t{Ui>`G%?(3e%1T`s53JtR)r0B&
zrUPbLN@HpBzvdLVmZ+uV?3t6fg9l*ox;om7I-kd>;J|y79<|~6z>BbjDNZ<XrPA$b
z#Sbq=kt=Wp<Kkr2;wB*trNM*i5GF`my2G!hx%8E!3_cUbH48Y}A_`v;xhTXe3elDM
z0S|^T6{rxI;tbX9@wOy)xa-}N1|vbMLRF#47iw$kZLO~iXg-S#K`AC^-pX#3wk$Od
zY67d$w+JdlFx;j(E4DOUJaFvkLA%A`VAmkQf6FCUKopI=NogB4A=pOMEs{eSc<EEa
z%|UOqOY`_#^~RP5<K1Iz!3LWTmabK1D%>v7jvF^YbvmuG^_%nCnyMqg`i9Pl!Nh}C
zW*xrkKPd(AxNX%CWB-Nl@}_gv1Gwc|Anzs5kv}4jXCD2)`)2c7yW12+zWDI&9aU~w
zVA%s(f)<r32)~RFugk^|1CVoWJ5wAg4rVwgJ1tl$S0Mt)StUk29y-Bu>X{@S>KT3U
z4?q5&Km5Vpd+LdIU09w!H#2qYp+g7v?ZxrT{Dpl`?d#`g_@L%F8Qa|qv#pn<JI>jh
zEj$c&zxMm#ub<QJY+oO5y**tH>up>DAVT`8>7%^LIkf@OT1{E6S^MAjY2e}2QtVFE
z*8b^Mht2i3Fm|OPH$3Kr0{d}8=dDBj_cv7fH*OvL|8fKT#;@D_{f#bHZoJ&k+1bEO
zn0FBZzke}hLxx9FOSWcG&>57%^#&`U_m2w*C5j@M;5p$p5JViMq^8Q}wrUntzzrEr
zs@RbJAdf@q4R~V5ctJ|;TCS5aODEP|unF?oAJT)WcKd1-_SB8%6q}bleB%j?eeU+l
z68P0@Lw<vZ!lyDFogThXMsN$ncsy_(GbZPu+)+D$jIv26G0H}}U^|dHcsyYJsst12
zXFRM9A(CUTKV|0YrI5Kf<9j2}&t~Fp#xs=PoP^CIL%4UssCXjLPk(mbmYz4^_a^8E
z_?1iP^gq$-(T)DZed_r+g4^rYM4es1eSCy$<?))N8yk&BYj^|~;VW{gtFtlY_wd`{
z1_Wwi{5r6F4QNJgso;RtL)_0>x(&i@g?VR))1i5{((cEFA)Ty|9P-+A839H_bZcb!
zt+!-4^agXtAyuaTz-&rbQRy5o9CD2$z4ewP)c^$cFp3Dfa#%)_OZ?tjvV-lv(W2nq
z56X_cffs1ZvG&~B|1EWT>wCb)5Np?^vYq^eFv)I`Fxf>eXDYg>MN3oB5`$6=Rl9L_
zuZkmki#0GeX$Q55R;vvLj#xy^l9PDYUr<HiIL=Wjv#KZT3J>tJah@}B7-V8(PaxB6
z_7rXKV}G-**-Tv|f^V>PMRtws+}7LK9&Nxx!|p1##~pAx5m|1i2y?3v=D{*2g<qMD
z;lZs>M`}Cks0b^5Ts3m1r(cBHf@=z&lV5F{-l+)hl>Y34SvyzxqGUPz{K)y!qc7|;
z%aUXNbHk^X=u2xqq(WU&XH#8BudPyTy-r_C&$iL(crsZd{HMdmKJ1sUT-ECM;ITjc
z#PRpyiv&roeDCo;_%wajveTtSdZLlahzB<*6|$?-=Z*|?*LQ}DO2d~Z`6*|GEd4Q-
zHB4T~R8&(<NQc~lMN7eZuryNDx=#OAP?2!@m*}o>x`Ui>Vsf0`AU2M7V1-qE5Z<9(
z#U**0*@b}cziyv(iVsJIhX#9lI@*34ic1y27Mz7|BRF<C|90fpp!dsbKV+;-@0x0p
z-igOYX|x;n0>6yh7nhyY;l4;zkGeM#yP+p)M0L=*6yN#pu)psi`!jp96P<!A`Jtgy
zh^a85Lh2PJ$)aRlTj9PihmT6Yq6uV-OyWuycchPBTwFLelRGha=z;xvh6?&N7~RTd
zDHJt7_eevjrBmEp=6;J4eoY-zoOyIAAwUd)&=qs1Q&D_g08b}L<!Bm#z;@h(m_jMT
zu<}nx;P8}QWqx;XXS;Xf)xw`wooqi@Wp`0ewPEq#=4|a*U7;10P@Rw3oYiOAj^pIw
z(d*F0bu)Ifq=qVWYI9VdY0c>lho`zm^HIe~pK&PEt0ik3j>_qlT&2U|tHhT<)N3(n
zJk<7pC|24%E+)&?!GE+#g7AX}Y_jO`I4UV`al1rOu@BbMuQ=@vyikL)EwXZRHE)(|
z`@hVXY`eVQCNrCE_A52m_ucsE0AA*CIVw#%Q#vOJ_)0612@)KP)-TQYl?=B<lVAoc
zODBJAWpf(FuHg<-_Z)luMoP%y3xU^5UkIccIy3aMU%tz(K`yv#d~?q`pFiR3`x&tc
z=7(?J{<F2y+zjv>HyCH}b;Ldtc}T4ELm%@SNg}qO{hHXq-*Vf};BOM}1sdx`!q;ZP
zOR(K7H*X5rn`;8TP~~lA&S8$rQ}*T!vwpp7)|K(@ta}OXDkqG8$GiCVmH2&*M(8x_
zXI~Hu;gYyt{Ju0GU6JSHpDKOIm(+~<B}>2M6>Y$J)%F?tRmYlh%=uMUkL#Md=y}@n
zMfB&ZGRRBNHT=g&68B`wfWB*8G;0XLHQ(P@dl%|Tbl_j4c9mgV$s?Xrsuxf{RE9;s
zqh%P;9el%9!jVybq6}-K8F&7rdMhO2W3bHFs~G1j`E(hk#6_KDm=Oo%U(<0M0riP8
zECSwEh9#oYePvii{Ztv&V6>LYu$4sV*9I3BFD}iVK2tCn2e%mQt!-)J<V9lvRkP>w
zb4LC`;mpF)vXL=PEu1gR%*`z%rxxbd;qjT%7v}Oy>&5l_@XXTk?814YE!nzWH8OL4
zW+`8ondWa_e&lp}p>WDLwX`sA>@2_6SX^2-J2O>Co+%U-ds<r7d-Cz%jxCTya*-^N
zS&-@sDG-A+qIL`Nc3eoeku;!_z%YPW!kQ)LNuJE1CQmM)#~HI_8RZPpDU{Bmb_N)8
zfRkhj&-uIR$ANJg{pawOrMp`1e9K{AFF|-_&9@tvR}!<k6Ke!m=S|GKIfH4;r!@Cv
z@(4z2M{NPU_$-&qSs7%f`NmuGH9!yEb{6lM0(R1*N&&S!__(R%t})lw2dP@$-z9l3
zi}<F@fXNW3Nb&Is4rVH~;NwFpwNX1h0CZ9p0t_DNMOeCm>eNpwX%(%e0b0X9Ucwha
z1`QJN<igyvJX^@m%}!~BGZ*GhCJOnfbK>0W`E!=V*{Q;XrJ2Nnj1R?U@&)n2`RN6v
zu#{gulUPts%`Gf0UIYNP<4f}8Wnt#xj0GvNJO>Qt!xv_j3lOfv)a=sK+>BJ1ou66O
zFwp7qiMg3m1zQQ6nt`+~SxW^|zP0?)(!!(5iTqqaJeglwR_11x3yBMJrF>z|zFb(E
zJvUQ0v$SyG^cf2#HM4~IVubw3xfx|@VeZ2G`DN|l3k!uAb0l$UVS2{8d|?sNKD9Kv
zSg<T#I9Y;Z{>}Z&lJn77EbY+*zM!9-pM87=G=^Udt%YxS@Ay^Xn_K*Gealmk#El|3
zG&!6#jJ;nVjsts(^1&mM#m+#nF`GMOTskyaWDWV(RH%`usqo1_FjyqnA{h)1UB(!L
zxq(EH#*0SoRHDe@#<WrV(pXW99=Y5|wZY-3;qiwigW+J{(xg!w8=DLkGuePq?B-B+
zHfyYukn+>TMpTtcMzNK*w{pxcjZGSu#HGB!!%8{S7`#p6P>MsTTp)+wN}x!av)OQw
zj7`pDvx%Y*H-?R(*pSDBq`|Stq7)t|%HaV_KU<`^L{W@~F)w3!MLIcP@Rrix{E7DA
zsiM#nME#&~$+(1fue3@HSk{5b+*lw#o}CP5(V96piKYNwRC(k?QHmFp!RE^leUmgY
zis6AUNE{x>7um^EMLLD|7p0~|QHdLTlGeegFNowMP%zC*F3VAJL*^va_+`aP28Rcl
zf*ZuP#BV3QR(cC<#uNsz;+!#jDV*nwFeya>oSH==fJv^;vM4l!^FyT}toP|&jGz}f
zZ!B$dCmWZU@W5rOCJavo1L0t{DVQkQ<135}7pL<>iJ~Kp1sF!rHn@kc3qW`vTeS1i
zI7)Vu5=AFo<1$HNfC5vPcF{4IGcM(fq60)r6kYMX6O$|A^iVcZw9kYeOBCJly$2@u
z9xPP`f~fbJ^`7_&aSk4uTyZ+Vzx+Va+02C$qC2o+;}1I?MXG}n0&X}~xa5LZ1DC*F
zK5SDkjBe|2pw!O0K=yfS7AqOS{6}(N;%%(D4+B>S@rFU-!6NCu3~$kt25+3K5H>t9
zS#*X6jNzgcLaAZk+<=k8@PFyT*VGO&FmNfi;*pz+OU;20$mGM?yv>PXMSO+wTnC+b
z?vLXecjT4v6_Mvv@fC^Z)$tXX=YjZ&!t<K=ipula_=<(+b#YR(H~$tBsmDa>@B#x9
z;du}f;duxX;dvMn;dulT;duil!t*F5!t)p=!t+K<gy&o0MxQC?O>wN>l`{r8EjZKi
z$ctOJP&LPkP0ht7Y?nABbp#@H&;1h4cZa#I`lT3<mqanK!2_xn<4r|c(P~mTxtS`r
zH?_o#E_0r(z@fu;Z&zr6drphj6a6nt4LsBz?p|r36<A3d){TkYvr7(Ao9|8(+v7=p
zU!vIYt56|fQ$X(oD~R4;B#jZiGeN@LmoANjN1zENp|hd$uw6Uwt*{T{cR_{dkbe9#
zQHqwq=9x>$uwnFF!n;zpnvG=X9YqoE1eQ_E@y(n$F!?Go1S9Y&iwf1*0j}Uws7j27
z5yLyNwZO&O_X##NZ7ykYHkg|Z7lpz6G;|Cb%m)DHve=k+_Q_*P(7NHB`R+g%BkaVw
zkeQ?4efJmy6XBXr#O?;|B?uDq_8l|98}sPgU`_&0m=UhRZjA*gNpl()7+s2%X%OxM
zX}ZnoqKe&X7(2rwd@#<fttQF%0?HI66O&1!4~CD=xLk>s-6FZ%fYNR>ZJ5>)qwW^2
zT)4~`%rQ~yDbHYVoi#abd+%K0IxBnQVI#?@wi8;nFPmJ!XXDs-eH+!_=B?^&8`UQE
zde_@<`s2l}=Jl4_Ub;PAOf_GE3~^z(gzb3Oz+g+V*o^TrCb_r(u2Yu_R~Wk@iA_?P
z;|?ebDCiAIU0?677R8Z!3C3?DeVlGwuk?kx1Hn!F4ra@99N@%QC+Z+ye~?q2PqDm?
zjU^9Z$rYu|2~&=J=uH;euos8#Q@<0smioNKcHoS}i=D`JajFf2uEtK-taUo=j&pG=
z?gCl&#PQ#=b^zE5fO23oewmsz`v90V`#H`4njYXd92ny`95}#nI55s}`T-o|I2@SZ
zI2<^{aX4_8<75Cl$Z<F@$#FQ4<v1KT!f^%xJj8K0aFpY4;26i@z;TYV9l!~W!+{*f
z;Xt0_aNuOTnBE}s6fYEeQ9W%!eSl_6c|!Fz6i&s9-5c1adBMa!V?rEz)`U3f*?4j5
z2I@IpFj41Bh@;M%5Jx>9FZOJpF7Sehx@bZi^<fj@s7vuz@qawlJ)?o<qB>I)B4dwn
zQ<ETYvcEbG2ZVkEO1b1#FRl=20IMfW9C%ej9IXU7hzZF9SJ;=(Y(cFuaD`+_ut0`Z
zBJ|k<@EV_;ToI;+R-(LgMST(n_RO<WaGihx=Q#VSjZs_E7wFC3D~cb6p%^0M{{fW*
B_x=C?

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/src/lib/font/font/fontello.woff b/node_modules/mavon-editor/src/lib/font/font/fontello.woff
new file mode 100644
index 0000000000000000000000000000000000000000..984445365a1cb97d508c612c13142313eece4b10
GIT binary patch
literal 9068
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

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/src/lib/font/font/fontello.woff2 b/node_modules/mavon-editor/src/lib/font/font/fontello.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..957d0533bb3add3e396e6f484b3caa0383b11bdb
GIT binary patch
literal 7764
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
ax5DGbVzc~Kx8&gBZ{xtE?`B87pKt@}gU<l~

literal 0
HcmV?d00001

diff --git a/node_modules/mavon-editor/src/lib/lang/de/help_de.md b/node_modules/mavon-editor/src/lib/lang/de/help_de.md
new file mode 100644
index 0000000..7db0345
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/lang/de/help_de.md
@@ -0,0 +1,204 @@
+@[toc](Catalog)
+
+Markdown Handbuch
+===
+> Details: [http://commonmark.org/help/](http://commonmark.org/help/)
+
+## **Fett**
+```
+**fett**
+__fett__
+```
+## *Kursiv*
+```
+*kursiv*
+_kursiv_
+```
+## Überschriften
+```
+# h1 #
+h1
+====
+## h2 ##
+h2
+----
+### h3 ###
+#### h4 ####
+##### h5 #####
+###### h6 ######
+```
+## Trennlinien
+```
+***
+---
+```
+****
+## ^Hoch^gestellt & ~Tief~gestellt
+```
+hochgestellt x^2^
+tiefgestellt H~2~0
+```
+## ++Unterstrichen++ & ~~Durchgestrichen~~
+```
+++unterstrichen++
+~~durchgestrichen~~
+```
+## ==Markiert==
+```
+==markiert==
+```
+## Zitat
+
+```
+> zitat 1
+>> zitat 2
+>>> zitat 3
+...
+```
+
+## Liste
+```
+ol
+1.
+2.
+3.
+...
+
+ul
+-
+-
+...
+```
+
+## Todo Liste
+
+- [x] aufgabe 1
+- [ ] aufgabe 2
+
+```
+- [x] aufgabe 1
+- [ ] aufgabe 2
+```
+
+## Link
+```
+Text Link
+[Text](www.baidu.com)
+
+Link mit Bild
+![Text](http://www.image.com)
+```
+## Code
+\``` Typ
+
+Codeblock
+
+\```
+
+\` code \`
+
+```c++
+int main()
+{
+    printf("hello world!");
+}
+```
+`code`
+
+## Tabelle
+```
+| th1 | th2 | th3 |
+| :--  | :--: | ----: |
+| links | mitte | rechts |
+```
+| th1 | th2 | th3 |
+| :--  | :--: | ----: |
+| links | mitte | rechts |
+| ---------------------- | ------------- | ----------------- |
+## Fußnote
+```
+hallo[^hallo]
+```
+
+Schau zum unteren Rand[^hallo]
+
+[^hallo]: fussnote
+
+## Emojis
+Details: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)
+```
+:laughing:
+:blush:
+:smiley:
+:)
+...
+```
+:laughing::blush::smiley::)
+
+## $\KaTeX$ Mathematik
+
+Formeln lassen sich darstellen z.b. :$x_i + y_i = z_i$ und $\sum_{i=1}^n a_i=0$
+Formeln können auf einer eigenen Zeile gerendert werden
+$$\sum_{i=1}^n a_i=0$$
+Details: [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)
+
+## Layout
+
+::: hljs-left
+`::: hljs-left`
+`links`
+`:::`
+:::
+
+::: hljs-center
+`::: hljs-center`
+`mitte`
+`:::`
+:::
+
+::: hljs-right
+`::: hljs-right`
+`rechts`
+`:::`
+:::
+
+## Liste von Definitionen
+
+Term 1
+
+:   Definition 1
+
+Term 2 mit *inline markup*
+
+:   Definition 2
+
+        { ein wenig code, teil von Definition 2 }
+
+    Dritter Absatz von Definition 2.
+
+```
+Term 1
+
+:   Definition 1
+
+Term 2 mit *inline markup*
+
+:   Definition 2
+
+        { ein wenig code, teil von Definition 2 }
+
+    Dritter Absatz von Definition 2.
+
+```
+
+## Abkürzungen
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+Die HTML Spezifikation
+wird gepflegt vom W3C.
+```
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+Die HTML Spezifikation
+wird gepflegt vom W3C.
+```
diff --git a/node_modules/mavon-editor/src/lib/lang/de/words_de.json b/node_modules/mavon-editor/src/lib/lang/de/words_de.json
new file mode 100644
index 0000000..9325671
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/lang/de/words_de.json
@@ -0,0 +1,54 @@
+{
+  "start_editor": "Bearbeitung beginnen...",
+  "navigation_title": "Navigation",
+  "tl_bold": "Fett",
+  "tl_italic": "Kursiv",
+  "tl_header": "Überschrift",
+  "tl_header_one": "Überschrift 1",
+  "tl_header_two": "Überschrift 2",
+  "tl_header_three": "Überschrift 3",
+  "tl_header_four": "Überschrift 4",
+  "tl_header_five": "Überschrift 5",
+  "tl_header_six": "Überschrift 6",
+  "tl_underline": "Unterstrichen",
+  "tl_strikethrough": "Durchgestrichen",
+  "tl_mark": "Markiert",
+  "tl_superscript": "Hochgestellt",
+  "tl_subscript": "Tiefgestellt",
+  "tl_quote": "Zitat",
+  "tl_ol": "Ol",
+  "tl_ul": "Ul",
+  "tl_link": "Link",
+  "tl_image": "Link mit Bild",
+  "tl_code": "Code",
+  "tl_table": "Tabelle",
+  "tl_undo": "Rückgängig",
+  "tl_redo": "Wiederherstellen",
+  "tl_trash": "Mülleimer",
+  "tl_save": "Speichern",
+  "tl_navigation_on": "Navigation AN",
+  "tl_navigation_off": "Navigation AUS",
+  "tl_preview": "Vorschau",
+  "tl_aligncenter": "Text zentrieren",
+  "tl_alignleft": "Nach links ausrichten",
+  "tl_alignright": "Nach rechts ausrichten",
+  "tl_edit": "Bearbeiten",
+  "tl_single_column": "Einspaltig",
+  "tl_double_column": "Zweispaltig",
+  "tl_fullscreen_on": "Vollbild AN",
+  "tl_fullscreen_off": "Vollbild AUS",
+  "tl_read": "Lesemodus",
+  "tl_html_on": "HTML AN",
+  "tl_html_off": "HTML AUS",
+  "tl_help": "Markdown Handbuch",
+  "tl_upload": "Bilder-Upload",
+  "tl_upload_remove": "Entfernen",
+  "tl_popup_link_title": "Link hinzufügen",
+  "tl_popup_link_text": "Text des Links",
+  "tl_popup_link_addr": "Linkziel",
+  "tl_popup_img_link_title": "Bild hinzufügen",
+  "tl_popup_img_link_text": "Text des Bildes",
+  "tl_popup_img_link_addr": "Link auf Bild",
+  "tl_popup_link_sure": "Ja",
+  "tl_popup_link_cancel": "Abbruch"
+}
diff --git a/node_modules/mavon-editor/src/lib/lang/en/help_en.md b/node_modules/mavon-editor/src/lib/lang/en/help_en.md
new file mode 100644
index 0000000..e6abfd0
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/lang/en/help_en.md
@@ -0,0 +1,204 @@
+@[toc](Catalog)
+
+Markdown Guide
+===
+> Detailed: [http://commonmark.org/help/](http://commonmark.org/help/)
+
+## **Bold**
+```
+**bold**
+__bold__
+```
+## *Italic*
+```
+*italic*
+_italic_
+```
+## Header
+```
+# h1 #
+h1
+====
+## h2 ##
+h2
+----
+### h3 ###
+#### h4 ####
+##### h5 #####
+###### h6 ######
+```
+## Dividing line
+```
+***
+---
+```
+****
+## ^Super^script & ~Sub~script
+```
+super x^2^
+sub H~2~0
+```
+## ++Underline++ & ~~Strikethrough~~
+```
+++underline++
+~~strikethrough~~
+```
+## ==Mark==
+```
+==mark==
+```
+## Quote
+
+```
+> quote 1
+>> quote 2
+>>> quote 3
+...
+```
+
+## List
+```
+ol
+1.
+2.
+3.
+...
+
+ul
+-
+-
+...
+```
+
+## Todo List
+
+- [x] task 1
+- [ ] task 2
+
+```
+- [x] task 1
+- [ ] task 2
+```
+
+## Link
+```
+Text Link
+[Text](www.baidu.com)
+
+Image Link
+![Text](http://www.image.com)
+```
+## Code
+\``` type
+
+code block
+
+\```
+
+\` code \`
+
+```c++
+int main()
+{
+    printf("hello world!");
+}
+```
+`code`
+
+## Table
+```
+| th1 | th2 | th3 |
+| :--  | :--: | ----: |
+| left | center | right |
+```
+| th1 | th2 | th3 |
+| :--  | :--: | ----: |
+| left | center | right |
+| ---------------------- | ------------- | ----------------- |
+## Footnote
+```
+hello[^hello]
+```
+
+Look at the bottom[^hello]
+
+[^hello]: footnote
+
+## Emojis
+Detailed: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)
+```
+:laughing:
+:blush:
+:smiley:
+:)
+...
+```
+:laughing::blush::smiley::)
+
+## $\KaTeX$ Mathematics
+
+We can render formulas for example:$x_i + y_i = z_i$ and $\sum_{i=1}^n a_i=0$
+We can also single-line rendering
+$$\sum_{i=1}^n a_i=0$$
+Detailed: [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)
+
+## Layout
+
+::: hljs-left
+`::: hljs-left`
+`left`
+`:::`
+:::
+
+::: hljs-center
+`::: hljs-center`
+`center`
+`:::`
+:::
+
+::: hljs-right
+`::: hljs-right`
+`right`
+`:::`
+:::
+
+## deflist
+
+Term 1
+
+:   Definition 1
+
+Term 2 with *inline markup*
+
+:   Definition 2
+
+        { some code, part of Definition 2 }
+
+    Third paragraph of definition 2.
+
+```
+Term 1
+
+:   Definition 1
+
+Term 2 with *inline markup*
+
+:   Definition 2
+
+        { some code, part of Definition 2 }
+
+    Third paragraph of definition 2.
+
+```
+
+## abbr
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+The HTML specification
+is maintained by the W3C.
+```
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+The HTML specification
+is maintained by the W3C.
+```
diff --git a/node_modules/mavon-editor/src/lib/lang/en/words_en.json b/node_modules/mavon-editor/src/lib/lang/en/words_en.json
new file mode 100644
index 0000000..e30268d
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/lang/en/words_en.json
@@ -0,0 +1,54 @@
+{
+  "start_editor": "Begin editing...",
+  "navigation_title": "Navigation",
+  "tl_bold": "Bold",
+  "tl_italic": "Italic",
+  "tl_header": "Header",
+  "tl_header_one": "Header 1",
+  "tl_header_two": "Header 2",
+  "tl_header_three": "Header 3",
+  "tl_header_four": "Header 4",
+  "tl_header_five": "Header 5",
+  "tl_header_six": "Header 6",
+  "tl_underline": "Underline",
+  "tl_strikethrough": "Strikethrough",
+  "tl_mark": "Mark",
+  "tl_superscript": "Superscript",
+  "tl_subscript": "Subscript",
+  "tl_quote": "Quote",
+  "tl_ol": "Ol",
+  "tl_ul": "Ul",
+  "tl_link": "Link",
+  "tl_image": "Image Link",
+  "tl_code": "Code",
+  "tl_table": "Table",
+  "tl_undo": "Undo",
+  "tl_redo": "Redo",
+  "tl_trash": "Trash",
+  "tl_save": "Save",
+  "tl_navigation_on": "Navigation ON",
+  "tl_navigation_off": "Navigation OFF",
+  "tl_preview": "Preview",
+  "tl_aligncenter": "Center text",
+  "tl_alignleft": "Clamp text to the left",
+  "tl_alignright": "Clamp text to the right",
+  "tl_edit": "Edit",
+  "tl_single_column": "Single Column",
+  "tl_double_column": "Double Columns",
+  "tl_fullscreen_on": "FullScreen ON",
+  "tl_fullscreen_off": "FullScreen OFF",
+  "tl_read": "Read Model",
+  "tl_html_on": "HTML ON",
+  "tl_html_off": "HTML OFF",
+  "tl_help": "Markdown Guide",
+  "tl_upload": "Upload Images",
+  "tl_upload_remove": "Remove",
+  "tl_popup_link_title": "Add Link",
+  "tl_popup_link_text": "Link text",
+  "tl_popup_link_addr": "Link address",
+  "tl_popup_img_link_title": "Add Image",
+  "tl_popup_img_link_text": "Image Text",
+  "tl_popup_img_link_addr": "Image Link",
+  "tl_popup_link_sure": "Sure",
+  "tl_popup_link_cancel": "Cancel"
+}
diff --git a/node_modules/mavon-editor/src/lib/lang/fr/help_fr.md b/node_modules/mavon-editor/src/lib/lang/fr/help_fr.md
new file mode 100644
index 0000000..b3a19fe
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/lang/fr/help_fr.md
@@ -0,0 +1,204 @@
+@[toc](Catalogue)
+
+Guide Markdown
+==============
+> Détail : [http://commonmark.org/help/](http://commonmark.org/help/)
+
+## **Bold**
+```
+**bold**
+__bold__
+```
+## *Italic*
+```
+*italic*
+_italic_
+```
+## Header
+```
+# h1 #
+h1
+====
+## h2 ##
+h2
+----
+### h3 ###
+#### h4 ####
+##### h5 #####
+###### h6 ######
+```
+## Dividing line
+```
+***
+---
+```
+****
+## ^Super^script & ~Sub~script
+```
+super x^2^
+sub H~2~0
+```
+## ++Underline++ & ~~Strikethrough~~
+```
+++underline++
+~~strikethrough~~
+```
+## ==Mark==
+```
+==mark==
+```
+## Quote
+
+```
+> quote 1
+>> quote 2
+>>> quote 3
+...
+```
+
+## List
+```
+ol
+1.
+2.
+3.
+...
+
+ul
+-
+-
+...
+```
+## Link
+
+## Todo List
+
+- [x] Équipe 1
+- [ ] Équipe 2
+
+```
+- [x] Équipe 1
+- [ ] Équipe 2
+```
+
+```
+Text Link
+[Text](www.baidu.com)
+
+Image Link
+![Text](http://www.image.com)
+```
+## Code
+\``` type
+
+code block
+
+\```
+
+\` code \`
+
+```c++
+int main()
+{
+    printf("hello world!");
+}
+```
+`code`
+
+## Table
+```
+| th1 | th2 | th3 |
+| :--  | :--: | ----: |
+| left | center | right |
+```
+| th1 | th2 | th3 |
+| :--  | :--: | ----: |
+| left | center | right |
+| ---------------------- | ------------- | ----------------- |
+## Footnote
+```
+hello[^hello]
+```
+
+Look at the bottom[^hello]
+
+[^hello]: footnote
+
+## Emojis
+Detailed: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)
+```
+:laughing:
+:blush:
+:smiley:
+:)
+...
+```
+:laughing::blush::smiley::)
+
+## $\KaTeX$ Mathematics
+
+We can render formulas for example:$x_i + y_i = z_i$ and $\sum_{i=1}^n a_i=0$
+We can also single-line rendering
+$$\sum_{i=1}^n a_i=0$$
+Detailed: [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)
+
+## Layout
+
+::: hljs-left
+`::: hljs-left`
+`left`
+`:::`
+:::
+
+::: hljs-center
+`::: hljs-center`
+`center`
+`:::`
+:::
+
+::: hljs-right
+`::: hljs-right`
+`right`
+`:::`
+:::
+
+## deflist
+
+Term 1
+
+:   Definition 1
+
+Term 2 with *inline markup*
+
+:   Definition 2
+
+        { some code, part of Definition 2 }
+
+    Third paragraph of definition 2.
+
+```
+Term 1
+
+:   Definition 1
+
+Term 2 with *inline markup*
+
+:   Definition 2
+
+        { some code, part of Definition 2 }
+
+    Third paragraph of definition 2.
+
+```
+
+## abbr
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+The HTML specification
+is maintained by the W3C.
+```
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+The HTML specification
+is maintained by the W3C.
+```
diff --git a/node_modules/mavon-editor/src/lib/lang/fr/words_fr.json b/node_modules/mavon-editor/src/lib/lang/fr/words_fr.json
new file mode 100644
index 0000000..0c5c176
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/lang/fr/words_fr.json
@@ -0,0 +1,55 @@
+{
+  "start_editor": "Début d'édition...",
+  "navigation_title": "Navigation",
+  "tl_bold": "Gras",
+  "tl_italic": "Italique",
+  "tl_header": "Entête",
+  "tl_header_one": "Entête 1",
+  "tl_header_two": "Entête 2",
+  "tl_header_three": "Entête 3",
+  "tl_header_four": "Entête 4",
+  "tl_header_five": "Entête 5",
+  "tl_header_six": "Entête 6",
+  "tl_underline": "Souligné",
+  "tl_strikethrough": "Barré",
+  "tl_mark": "Mark",
+  "tl_superscript": "Exposant",
+  "tl_subscript": "Sous-exposant",
+  "tl_quote": "Quote",
+  "tl_ol": "Liste ",
+  "tl_ul": "Puce",
+  "tl_link": "Lien",
+  "tl_image": "Image Lien",
+  "tl_code": "Code",
+  "tl_table": "Table",
+  "tl_undo": "Annuler",
+  "tl_redo": "Refaire",
+  "tl_trash": "Supprimer",
+  "tl_save": "Sauver",
+  "tl_navigation_on": "Activer la navigation",
+  "tl_navigation_off": "Désactiver le navigation",
+  "tl_preview": "Previsualisé",
+  "tl_aligncenter": "Center le texte",
+  "tl_alignleft": "Férer le texte à gauche",
+  "tl_alignright": "Férer le texte à droite",
+  "tl_preview": "Previsualisé",
+  "tl_edit": "Editer",
+  "tl_single_column": "Seule Colonne",
+  "tl_double_column": "Colonnes Doubles",
+  "tl_fullscreen_on": "Activer le mode plein écran",
+  "tl_fullscreen_off": "Désactiver le mode plein écran",
+  "tl_read": "Lire le modèle",
+  "tl_html_on": "Activer le mode HTML",
+  "tl_html_off": "Désactiver le mode HTML",
+  "tl_help": "Guide Markdown",
+  "tl_upload": "Télécharger les images",
+  "tl_upload_remove": "Supprimer",
+  "tl_popup_link_title": "Ajouter un lien",
+  "tl_popup_link_text": "Description",
+  "tl_popup_link_addr": "Link",
+  "tl_popup_img_link_title": "Ajouter une image",
+  "tl_popup_img_link_text": "Description",
+  "tl_popup_img_link_addr": "Link",
+  "tl_popup_link_sure": "sûr",
+  "tl_popup_link_cancel": "Annuler"
+}
diff --git a/node_modules/mavon-editor/src/lib/lang/ja/help_ja.md b/node_modules/mavon-editor/src/lib/lang/ja/help_ja.md
new file mode 100644
index 0000000..205f1d0
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/lang/ja/help_ja.md
@@ -0,0 +1,205 @@
+@[toc](目次)
+
+Markdown 文法ガイド
+===
+> Detailed: [http://commonmark.org/help/](http://commonmark.org/help/)
+
+## **太字**
+```
+**太字**
+__太字__
+```
+## *斜体*
+```
+*斜体*
+_斜体_
+```
+## 見出し
+```
+# h1 #
+h1
+====
+## h2 ##
+h2
+----
+### h3 ###
+#### h4 ####
+##### h5 #####
+###### h6 ######
+```
+## 横線
+```
+***
+---
+```
+****
+## ^上付き^文字 & ~下付き~文字
+```
+super x^2^
+sub H~2~0
+```
+## ++下線++ & ~~取り消し線~~
+```
+++underline++
+~~strikethrough~~
+```
+## ==蛍光ペン==
+```
+==mark==
+```
+## 引用
+
+```
+> quote 1
+>> quote 2
+>>> quote 3
+...
+```
+
+## リスト
+```
+番号付きリスト
+1.
+2.
+3.
+...
+
+箇条書きリスト
+-
+-
+...
+```
+
+## Todoリスト
+
+- [x] task 1
+- [ ] task 2
+
+```
+- [x] task 1
+- [ ] task 2
+```
+
+## リンク
+```
+Text Link
+[Text](www.baidu.com)
+
+Image Link
+![Text](http://www.image.com)
+```
+## コード
+\``` type
+
+code block
+
+\```
+
+\` code \`
+
+```c++
+int main()
+{
+    printf("hello world!");
+}
+```
+`code`
+
+## 表
+```
+| th1 | th2 | th3 |
+| :--  | :--: | ----: |
+| left | center | right |
+```
+| th1 | th2 | th3 |
+| :--  | :--: | ----: |
+| left | center | right |
+| ---------------------- | ------------- | ----------------- |
+
+## 脚注
+```
+hello[^hello]
+```
+
+Look at the bottom[^hello]
+
+[^hello]: footnote
+
+## 絵文字
+> Detailed: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)
+```
+:laughing:
+:blush:
+:smiley:
+:)
+...
+```
+:laughing::blush::smiley::)
+
+## $\KaTeX$ 数式
+> Detailed: [KaTeXマニュアル](http://www.intmath.com/cg5/katex-mathjax-comparison.php)、[KaTeX function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)、[LaTeXマニュアル](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)
+
+We can render formulas for example:$x_i + y_i = z_i$ and $\sum_{i=1}^n a_i=0$  
+We can also single-line rendering
+$$\sum_{i=1}^n a_i=0$$
+
+## レイアウト
+
+::: hljs-left
+`::: hljs-left`
+`left`
+`:::`
+:::
+
+::: hljs-center
+`::: hljs-center`
+`center`
+`:::`
+:::
+
+::: hljs-right
+`::: hljs-right`
+`right`
+`:::`
+:::
+
+## 定義リスト
+
+Term 1
+
+:   Definition 1
+
+Term 2 with *inline markup*
+
+:   Definition 2
+
+        { some code, part of Definition 2 }
+
+    Third paragraph of definition 2.
+
+```
+Term 1
+
+:   Definition 1
+
+Term 2 with *inline markup*
+
+:   Definition 2
+
+        { some code, part of Definition 2 }
+
+    Third paragraph of definition 2.
+
+```
+
+## abbr
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+The HTML specification
+is maintained by the W3C.
+```
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+The HTML specification
+is maintained by the W3C.
+```
diff --git a/node_modules/mavon-editor/src/lib/lang/ja/words_ja.json b/node_modules/mavon-editor/src/lib/lang/ja/words_ja.json
new file mode 100644
index 0000000..96d9585
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/lang/ja/words_ja.json
@@ -0,0 +1,54 @@
+{
+  "start_editor": "編集を始めてね!",
+  "navigation_title": "ナビゲーション",
+  "tl_bold": "太字",
+  "tl_italic": "斜体",
+  "tl_header": "見出し",
+  "tl_header_one": "見出し1",
+  "tl_header_two": "見出し2",
+  "tl_header_three": "見出し3",
+  "tl_header_four": "見出し4",
+  "tl_header_five": "見出し5",
+  "tl_header_six": "見出し6",
+  "tl_underline": "下線",
+  "tl_strikethrough": "取り消し線",
+  "tl_mark": "蛍光ペン",
+  "tl_superscript": "上付き文字",
+  "tl_subscript": "下付き文字",
+  "tl_quote": "引用",
+  "tl_ol": "番号付きリスト",
+  "tl_ul": "箇条書きリスト",
+  "tl_link": "ハイパーリンク",
+  "tl_image": "画像のリンク",
+  "tl_code": "コードの挿入",
+  "tl_table": "表の挿入",
+  "tl_undo": "戻る",
+  "tl_redo": "進む",
+  "tl_trash": "削除",
+  "tl_save": "保存",
+  "tl_navigation_on": "ナビゲーションを表示",
+  "tl_navigation_off": "ナビゲーションを非表示",
+  "tl_preview": "プレビュー",
+  "tl_aligncenter": "中央揃え",
+  "tl_alignleft": "左揃え",
+  "tl_alignright": "右揃え",
+  "tl_edit": "編集",
+  "tl_single_column": "一列",
+  "tl_double_column": "二列",
+  "tl_fullscreen_on": "全画面表示",
+  "tl_fullscreen_off": "全画面表示の終了",
+  "tl_read": "モデルの読み込み",
+  "tl_html_on": "HTMLで表示",
+  "tl_html_off": "HTML表示の終了",
+  "tl_help": "ヘルプ",
+  "tl_upload": "画像をアップロード",
+  "tl_upload_remove": "画像の削除",
+  "tl_popup_link_title": "リンクの追加",
+  "tl_popup_link_text": "リンクテキスト",
+  "tl_popup_link_addr": "リンク先のURL",
+  "tl_popup_img_link_title": "画像の追加",
+  "tl_popup_img_link_text": "画像タイトル",
+  "tl_popup_img_link_addr": "画像URL",
+  "tl_popup_link_sure": "OK",
+  "tl_popup_link_cancel": "戻る"
+}
diff --git a/node_modules/mavon-editor/src/lib/lang/pt-BR/help_pt-BR.md b/node_modules/mavon-editor/src/lib/lang/pt-BR/help_pt-BR.md
new file mode 100644
index 0000000..dd5d442
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/lang/pt-BR/help_pt-BR.md
@@ -0,0 +1,204 @@
+@[toc](Directory)
+
+Guia Markdown
+===
+> Detalhes: [http://commonmark.org/help/](http://commonmark.org/help/)
+
+## **Negrito**
+```
+**negrito**
+__negrito__
+```
+## *Itálico*
+```
+*itálico*
+_itálico_
+```
+## Cabeçalho
+```
+# h1 #
+h1
+====
+## h2 ##
+h2
+----
+### h3 ###
+#### h4 ####
+##### h5 #####
+###### h6 ######
+```
+## Linha Divisora
+```
+***
+---
+```
+****
+## ^Sobre^scrito & ~Sub~scrito
+```
+sobre x^2^
+sub H~2~0
+```
+## ++Sublinhar++ & ~~Tachar~~
+```
+++sublinhar++
+~~tachar~~
+```
+## ==Marcador==
+```
+==marcador==
+```
+## Citação
+
+```
+> citação 1
+>> citação 2
+>>> citação 3
+...
+```
+
+## Listas
+```
+lista Numerada
+1.
+2.
+3.
+...
+
+lista com marcadores
+-
+-
+...
+```
+
+## Todo Listas
+
+- [x] Tarefa 1
+- [ ] Tarefa 2
+
+```
+- [x] Tarefa 1
+- [ ] Tarefa 2
+```
+
+## Link
+```
+Link Texto
+[Text](www.baidu.com)
+
+Link Imagem
+![Text](http://www.image.com)
+```
+## Código
+\``` tipo
+
+bloco de código
+
+\```
+
+\` código \`
+
+```c++
+int main()
+{
+    printf("hello world!");
+}
+```
+`code`
+
+## Tabela
+```
+| th1 | th2 | th3 |
+| :--  | :--: | ----: |
+| esquerda | centro | direita |
+```
+| th1 | th2 | th3 |
+| :--  | :--: | ----: |
+| esquerda | centro | direita |
+| ---------------------- | ------------- | ----------------- |
+## Rodapé
+```
+olá[^olá]
+```
+
+Olhe para baixo[^olá]
+
+[^olá]: rodapé
+
+## Emojis
+Detalhes: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)
+```
+:laughing:
+:blush:
+:smiley:
+:)
+...
+```
+:laughing::blush::smiley::)
+
+## $\KaTeX$ Mathematics
+
+Podemos mostrar fórmulas por exemplo:$x_i + y_i = z_i$ and $\sum_{i=1}^n a_i=0$
+Podemos também mostrar em uma única linha:
+$$\sum_{i=1}^n a_i=0$$
+Detalhes: [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)
+
+## Layout
+
+::: hljs-left
+`::: hljs-left`
+`esquerda`
+`:::`
+:::
+
+::: hljs-center
+`::: hljs-center`
+`centro`
+`:::`
+:::
+
+::: hljs-right
+`::: hljs-right`
+`direita`
+`:::`
+:::
+
+## Definições
+
+Termo 1
+
+:   Definição 1
+
+Termo 2 com *markup inline*
+
+:   Definição 2
+
+        { um pouco de código, parte da Definição 2 }
+
+    Terceiro parágrafo da definição 2.
+
+```
+Termo 1
+
+:   Definição 1
+
+Termo 2 com *markup inline*
+
+:   Definição 2
+
+        { um pouco de código, parte da Definição 2 }
+
+    Terceiro parágrafo da definição 2.
+
+```
+
+## Abreviações
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+A especificação HTML
+é mantida pela W3C.
+```
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+The HTML specification
+é mantida pela W3C.
+```
diff --git a/node_modules/mavon-editor/src/lib/lang/pt-BR/words_pt-BR.json b/node_modules/mavon-editor/src/lib/lang/pt-BR/words_pt-BR.json
new file mode 100644
index 0000000..3e4046a
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/lang/pt-BR/words_pt-BR.json
@@ -0,0 +1,54 @@
+{
+	"start_editor": "Começar edição...",
+	"navigation_title": "Navegação",
+	"tl_bold": "Negrito",
+	"tl_italic": "Itálico",
+	"tl_header": "Cabeçalho",
+	"tl_header_one": "Cabeçalho 1",
+	"tl_header_two": "Cabeçalho 2",
+	"tl_header_three": "Cabeçalho 3",
+	"tl_header_four": "Cabeçalho 4",
+	"tl_header_five": "Cabeçalho 5",
+	"tl_header_six": "Cabeçalho 6",
+	"tl_underline": "Sublinhar",
+	"tl_strikethrough": "Tachar",
+	"tl_mark": "Marcação",
+	"tl_superscript": "Sobrescrito",
+	"tl_subscript": "Subscrito",
+	"tl_quote": "Citação",
+	"tl_ol": "Lista Numerada",
+	"tl_ul": "Lista com marcadores",
+	"tl_link": "Link",
+	"tl_image": "Link de imagem",
+	"tl_code": "Código",
+	"tl_table": "Tabela",
+	"tl_undo": "Desfazer",
+	"tl_redo": "Refazer",
+	"tl_trash": "Lixo",
+	"tl_save": "Salvar",
+	"tl_navigation_on": "Mostrar Navegação",
+	"tl_navigation_off": "Esconder Navegação",
+	"tl_preview": "Preview",
+	"tl_aligncenter": "Alinhar no centro",
+	"tl_alignleft": "Alinhar à esquerda",
+	"tl_alignright": "Alinhar à direita",
+	"tl_edit": "Editar",
+	"tl_single_column": "Coluna Única",
+	"tl_double_column": "Duas Colunas",
+	"tl_fullscreen_on": "Ligar Tela Cheia",
+	"tl_fullscreen_off": "Desligar Tela Cheia",
+	"tl_read": "Modo de Leitura",
+	"tl_html_on": "Ligar HTML",
+	"tl_html_off": "Desligar HTML",
+	"tl_help": "Guia Markdown",
+	"tl_upload": "Upload de Imagens",
+	"tl_upload_remove": "Remover",
+	"tl_popup_link_title": "Adicionar Link",
+	"tl_popup_link_text": "Descrição",
+	"tl_popup_link_addr": "Link",
+	"tl_popup_img_link_title": "Adicionar fotos",
+	"tl_popup_img_link_text": "Descrição",
+	"tl_popup_img_link_addr": "Link",
+	"tl_popup_link_sure": "Confirmar",
+	"tl_popup_link_cancel": "Cancelar"
+}
\ No newline at end of file
diff --git a/node_modules/mavon-editor/src/lib/lang/ru/help_ru.md b/node_modules/mavon-editor/src/lib/lang/ru/help_ru.md
new file mode 100644
index 0000000..36d6a72
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/lang/ru/help_ru.md
@@ -0,0 +1,202 @@
+@[toc](Catalog)  
+  
+Markdown помощь  
+===  
+> Подробнее: [http://commonmark.org/help/](http://commonmark.org/help/)  
+  
+## **Полужирный**  
+```  
+**Полужирный**  
+__Полужирный__  
+```  
+## *Курсив*  
+```  
+*Курсив*  
+_Курсив_  
+```  
+## Заголовок  
+```  
+# h1 #  
+h1  
+====  
+## h2 ##  
+h2  
+----  
+### h3 ###  
+#### h4 ####  
+##### h5 #####  
+###### h6 ######  
+```  
+## Разделительная линия  
+```  
+***  
+---  
+```  
+****  
+## ^Верхний^индекс & ~Нижний~индекс  
+```  
+верхний x^2^  
+нижний H~2~0  
+```  
+## ++Подчеркнутый++ & ~~Зачеркнутый~~  
+```  
+++Подчеркнутый++  
+~~Зачеркнутый~~  
+```  
+## ==Отметка==  
+```  
+==Отметка==  
+```  
+## Цитата  
+  
+```  
+> Цитата  
+>> Цитата 2  
+>>> Цитата 3  
+...  
+```  
+  
+## Список  
+```  
+ol  
+1.  
+2.  
+3.  
+...  
+  
+ul  
+-  
+-  
+...  
+```  
+  
+## Список задач  
+  
+- [x] Задача 1  
+- [ ] Задача 2  
+  
+```  
+- [x] Задача 1  
+- [ ] Задача 2  
+```  
+  
+## Ссылка  
+```  
+Ссылка  
+[Текст](www.baidu.com)  
+  
+Ссылка изображения  
+![Текст](http://www.image.com)  
+```  
+## Код  
+\``` type  
+  
+code block  
+  
+\```  
+  
+\` code \`  
+  
+```c++  
+int main()  
+{  
+ printf("hello world!");}  
+```  
+`code`  
+  
+## Таблица  
+```  
+| th1 | th2 | th3 |  
+| :--  | :--: | ----: |  
+| left | center | right |  
+```  
+| th1 | th2 | th3 |  
+| :--  | :--: | ----: |  
+| left | center | right |  
+| ---------------------- | ------------- | ----------------- |  
+## Сноска  
+```  
+Привет[^Привет]  
+```  
+  
+Тут что-то непонятное[^Привет]  
+  
+[^Привет]: А тут объяснение  
+  
+## Emojis  
+Подробнее: [https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)  
+```  
+:laughing:  
+:blush:  
+:smiley:  
+:)  
+...  
+```  
+:laughing::blush::smiley::)  
+  
+## $\KaTeX$ Mathematics  
+  
+Можно выводить такие формулы:$x_i + y_i = z_i$ and $\sum_{i=1}^n a_i=0$  
+А также в одну строку:
+$$\sum_{i=1}^n a_i=0$$  
+Подробнее: 
+- [katex](http://www.intmath.com/cg5/katex-mathjax-comparison.php)
+- [katex function](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)
+- [latex](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)  
+  
+## Разметка
+  
+::: hljs-left  
+`::: hljs-left`  
+`left`  
+`:::`  
+:::  
+  
+::: hljs-center  
+`::: hljs-center`  
+`center`  
+`:::`  
+:::  
+  
+::: hljs-right  
+`::: hljs-right`  
+`right`  
+`:::`  
+:::  
+  
+## Список определений
+  
+Термин 1  
+  
+:   Определение 1  
+  
+Термин  2 с использованием *разметки*
+  
+:   Определение 2  
+  
+ { Какой-нибудь код, часть определения 2 }  
+ Третий параграф определения 2.  
+```  
+Термин 1  
+  
+:   Определение 1  
+  
+Термин  2 с использованием *разметки*
+  
+:   Определение 2  
+  
+ { Какой-нибудь код, часть определения 2 }  
+ Третий параграф определения 2.  
+```  
+  
+## Сокращения
+*[HTML]: Hyper Text Markup Language  
+*[W3C]:  World Wide Web Consortium  
+The HTML specification  
+is maintained by the W3C.  
+```  
+*[HTML]: Hyper Text Markup Language  
+*[W3C]:  World Wide Web Consortium  
+The HTML specification  
+is maintained by the W3C.  
+```
diff --git a/node_modules/mavon-editor/src/lib/lang/ru/words_ru.json b/node_modules/mavon-editor/src/lib/lang/ru/words_ru.json
new file mode 100644
index 0000000..83a68e6
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/lang/ru/words_ru.json
@@ -0,0 +1,54 @@
+{
+  "start_editor": "Начните редактирование...",
+  "navigation_title": "Навигация",
+  "tl_bold": "Полужирный",
+  "tl_italic": "Курсив",
+  "tl_header": "Заголовки",
+  "tl_header_one": "Заголовок 1",
+  "tl_header_two": "Заголовок 2",
+  "tl_header_three": "Заголовок 3",
+  "tl_header_four": "Заголовок 4",
+  "tl_header_five": "Заголовок 5",
+  "tl_header_six": "Заголовок 6",
+  "tl_underline": "Подчеркнутый",
+  "tl_strikethrough": "Зачеркнутый",
+  "tl_mark": "Отметка",
+  "tl_superscript": "Верхний индекс",
+  "tl_subscript": "Нижний индекс",
+  "tl_quote": "Цитата",
+  "tl_ol": "Нумерованный список",
+  "tl_ul": "Список",
+  "tl_link": "Ссылка",
+  "tl_image": "Ссылка изображения",
+  "tl_code": "Код",
+  "tl_table": "Таблица",
+  "tl_undo": "Отменить",
+  "tl_redo": "Вернуть",
+  "tl_trash": "Удалить",
+  "tl_save": "Сохранить",
+  "tl_navigation_on": "Показать навигацию",
+  "tl_navigation_off": "Скрыть навигацию",
+  "tl_preview": "Предпросмотр",
+  "tl_aligncenter": "Выровнять по центру",
+  "tl_alignleft": "Выровнять по левому краю",
+  "tl_alignright": "Выровнять по правому краю",
+  "tl_edit": "Редактор",
+  "tl_single_column": "Одно поле",
+  "tl_double_column": "Два поля",
+  "tl_fullscreen_on": "Полноэкранный режим",
+  "tl_fullscreen_off": "Выключить полноэкранный режим",
+  "tl_read": "Режим чтения",
+  "tl_html_on": "Показать HTML",
+  "tl_html_off": "Убрать HTML",
+  "tl_help": "Markdown помощь",
+  "tl_upload": "Загрузить изображение",
+  "tl_upload_remove": "Удалить",
+  "tl_popup_link_title": "Добавить ссылку",
+  "tl_popup_link_text": "Текст ссылки",
+  "tl_popup_link_addr": "Адрес ссылки",
+  "tl_popup_img_link_title": "Локальное изображение",
+  "tl_popup_img_link_text": "Текст изображения",
+  "tl_popup_img_link_addr": "Ссылка изображения",
+  "tl_popup_link_sure": "Добавить",
+  "tl_popup_link_cancel": "Отменить"
+}
diff --git a/node_modules/mavon-editor/src/lib/lang/zh-CN/help_zh-CN.md b/node_modules/mavon-editor/src/lib/lang/zh-CN/help_zh-CN.md
new file mode 100644
index 0000000..d0924ca
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/lang/zh-CN/help_zh-CN.md
@@ -0,0 +1,203 @@
+@[toc](目录)
+
+Markdown 语法简介
+=============
+> [语法详解](http://commonmark.org/help/)
+
+## **目录**
+```
+@[toc](目录)
+```
+
+## **粗体**
+```
+**粗体**
+__粗体__
+```
+## *斜体*
+```
+*斜体*
+_斜体_
+```
+## 标题
+```
+# 一级标题 #
+一级标题
+====
+## 二级标题 ##
+二级标题
+----
+### 三级标题 ###
+#### 四级标题 ####
+##### 五级标题 #####
+###### 六级标题 ######
+```
+## 分割线
+```
+***
+---
+```
+****
+## ^上^角~下~标
+```
+上角标 x^2^
+下角标 H~2~0
+```
+## ++下划线++ ~~中划线~~
+```
+++下划线++
+~~中划线~~
+```
+## ==标记==
+```
+==标记==
+```
+## 段落引用
+```
+> 一级
+>> 二级
+>>> 三级
+...
+```
+
+## 列表
+```
+有序列表
+1.
+2.
+3.
+...
+无序列表
+-
+-
+...
+```
+
+## 任务列表
+
+- [x] 已完成任务
+- [ ] 未完成任务
+
+```
+- [x] 已完成任务
+- [ ] 未完成任务
+```
+
+## 链接
+```
+[链接](www.baidu.com)
+![图片描述](http://www.image.com)
+```
+## 代码段落
+\``` type
+
+代码段落
+
+\```
+
+\` 代码块 \`
+
+```c++
+int main()
+{
+    printf("hello world!");
+}
+```
+`code`
+## 表格(table)
+```
+| 标题1 | 标题2 | 标题3 |
+| :--  | :--: | ----: |
+| 左对齐 | 居中 | 右对齐 |
+| ---------------------- | ------------- | ----------------- |
+```
+| 标题1 | 标题2 | 标题3 |
+| :--  | :--: | ----: |
+| 左对齐 | 居中 | 右对齐 |
+| ---------------------- | ------------- | ----------------- |
+## 脚注(footnote)
+```
+hello[^hello]
+```
+
+见底部脚注[^hello]
+
+[^hello]: 一个注脚
+
+## 表情(emoji)
+[参考网站: https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)
+```
+:laughing:
+:blush:
+:smiley:
+:)
+...
+```
+:laughing::blush::smiley::)
+
+## $\KaTeX$公式
+
+我们可以渲染公式例如:$x_i + y_i = z_i$和$\sum_{i=1}^n a_i=0$
+我们也可以单行渲染
+$$\sum_{i=1}^n a_i=0$$
+具体可参照[katex文档](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex支持的函数](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex文档](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)
+
+## 布局
+
+::: hljs-left
+`::: hljs-left`
+`居左`
+`:::`
+:::
+
+::: hljs-center
+`::: hljs-center`
+`居中`
+`:::`
+:::
+
+::: hljs-right
+`::: hljs-right`
+`居右`
+`:::`
+:::
+
+## 定义
+
+术语一
+
+:   定义一
+
+包含有*行内标记*的术语二
+
+:   定义二
+
+        {一些定义二的文字或代码}
+
+    定义二的第三段
+
+```
+术语一
+
+:   定义一
+
+包含有*行内标记*的术语二
+
+:   定义二
+
+        {一些定义二的文字或代码}
+
+    定义二的第三段
+
+```
+
+## abbr
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+HTML 规范由 W3C 维护
+```
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+HTML 规范由 W3C 维护
+```
+
diff --git a/node_modules/mavon-editor/src/lib/lang/zh-CN/words_zh-CN.json b/node_modules/mavon-editor/src/lib/lang/zh-CN/words_zh-CN.json
new file mode 100644
index 0000000..1a03e14
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/lang/zh-CN/words_zh-CN.json
@@ -0,0 +1,54 @@
+{
+  "start_editor": "开始编辑...",
+  "navigation_title": "导航目录",
+  "tl_bold": "粗体",
+  "tl_italic": "斜体",
+  "tl_header": "标题",
+  "tl_header_one": "一级标题",
+  "tl_header_two": "二级标题",
+  "tl_header_three": "三级标题",
+  "tl_header_four": "四级标题",
+  "tl_header_five": "五级标题",
+  "tl_header_six": "六级标题",
+  "tl_underline": "下划线",
+  "tl_strikethrough": "中划线",
+  "tl_mark": "标记",
+  "tl_superscript": "上角标",
+  "tl_subscript": "下角标",
+  "tl_quote": "段落引用",
+  "tl_ol": "有序列表",
+  "tl_ul": "无序列表",
+  "tl_link": "链接",
+  "tl_image": "添加图片链接",
+  "tl_code": "代码块",
+  "tl_table": "表格",
+  "tl_undo": "上一步",
+  "tl_redo": "下一步",
+  "tl_trash": "清空",
+  "tl_save": "保存",
+  "tl_navigation_on": "开启标题导航",
+  "tl_navigation_off": "关闭标题导航",
+  "tl_preview": "预览",
+  "tl_aligncenter": "居中",
+  "tl_alignleft": "居左",
+  "tl_alignright": "居右",
+  "tl_edit": "编辑",
+  "tl_single_column": "单栏",
+  "tl_double_column": "双栏",
+  "tl_fullscreen_on": "全屏编辑",
+  "tl_fullscreen_off": "退出全屏",
+  "tl_read": "沉浸式阅读",
+  "tl_html_on": "查看html文本",
+  "tl_html_off": "返回markdown文本",
+  "tl_help": "markdown语法帮助",
+  "tl_upload": "上传图片",
+  "tl_upload_remove": "删除",
+  "tl_popup_link_title": "添加链接",
+  "tl_popup_link_text": "链接描述",
+  "tl_popup_link_addr": "链接地址",
+  "tl_popup_img_link_title": "添加图片",
+  "tl_popup_img_link_text": "图片描述",
+  "tl_popup_img_link_addr": "图片链接",
+  "tl_popup_link_sure": "确定",
+  "tl_popup_link_cancel": "取消"
+}
diff --git a/node_modules/mavon-editor/src/lib/lang/zh-TW/help_zh-TW.md b/node_modules/mavon-editor/src/lib/lang/zh-TW/help_zh-TW.md
new file mode 100644
index 0000000..ac451b9
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/lang/zh-TW/help_zh-TW.md
@@ -0,0 +1,198 @@
+@[toc](目錄)
+
+Markdown 語法簡介
+=============
+> [語法詳解](http://commonmark.org/help/)
+
+## **粗體**
+```
+**粗體**
+__粗體__
+```
+## *斜體*
+```
+*斜體*
+_斜體_
+```
+## 標題
+```
+# 一級標題 #
+一級標題
+====
+## 二級標題 ##
+二級標題
+----
+### 三級標題 ###
+#### 四級標題 ####
+##### 五級標題 #####
+###### 六級標題 ######
+```
+## 分割線
+```
+***
+---
+```
+****
+## ^上^角~下~標
+```
+上角標 x^2^
+下角標 H~2~0
+```
+## ++下劃線++ ~~中劃線~~
+```
+++下劃線++
+~~中劃線~~
+```
+## ==標記==
+```
+==標記==
+```
+## 段落引用
+```
+> 一級
+>> 二級
+>>> 三級
+...
+```
+
+## 列表
+```
+有序列表
+1.
+2.
+3.
+...
+無序列表
+-
+-
+...
+```
+
+## 任務列表
+
+- [x] 已完成任務
+- [ ] 未完成任務
+
+```
+- [x] 已完成任務
+- [ ] 未完成任務
+```
+
+## 鏈接
+```
+[鏈接](www.baidu.com)
+![圖片描述](http://www.image.com)
+```
+## 代碼段落
+\``` type
+
+代碼段落
+
+\```
+
+\` 代碼塊 \`
+
+```c++
+int main()
+{
+    printf("hello world!");
+}
+```
+`code`
+## 表格(table)
+```
+| 標題1 | 標題2 | 標題3 |
+| :--  | :--: | ----: |
+| 左對齊 | 居中 | 右對齊 |
+| ---------------------- | ------------- | ----------------- |
+```
+| 標題1 | 標題2 | 標題3 |
+| :--  | :--: | ----: |
+| 左對齊 | 居中 | 右對齊 |
+| ---------------------- | ------------- | ----------------- |
+## 腳註(footnote)
+```
+hello[^hello]
+```
+
+見底部腳註[^hello]
+
+[^hello]: 一個註腳
+
+## 表情(emoji)
+[參考網站: https://www.webpagefx.com/tools/emoji-cheat-sheet/](https://www.webpagefx.com/tools/emoji-cheat-sheet/)
+```
+:laughing:
+:blush:
+:smiley:
+:)
+...
+```
+:laughing::blush::smiley::)
+
+## $\KaTeX$公式
+
+我們可以渲染公式例如:$x_i + y_i = z_i$和$\sum_{i=1}^n a_i=0$
+我們也可以單行渲染
+$$\sum_{i=1}^n a_i=0$$
+具體可參照[katex文檔](http://www.intmath.com/cg5/katex-mathjax-comparison.php)和[katex支持的函數](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX)以及[latex文檔](https://math.meta.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)
+
+## 布局
+
+::: hljs-left
+`::: hljs-left`
+`居左`
+`:::`
+:::
+
+::: hljs-center
+`::: hljs-center`
+`居中`
+`:::`
+:::
+
+::: hljs-right
+`::: hljs-right`
+`居右`
+`:::`
+:::
+
+## 定義
+
+術語一
+
+:   定義一
+
+包含有*行內標記*的術語二
+
+:   定義二
+
+        {一些定義二的文字或代碼}
+
+    定義二的第三段
+
+```
+術語一
+
+:   定義一
+
+包含有*行內標記*的術語二
+
+:   定義二
+
+        {一些定義二的文字或代碼}
+
+    定義二的第三段
+
+```
+
+## abbr
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+HTML 規範由 W3C 維護
+```
+*[HTML]: Hyper Text Markup Language
+*[W3C]:  World Wide Web Consortium
+HTML 規範由 W3C 維護
+```
+
diff --git a/node_modules/mavon-editor/src/lib/lang/zh-TW/words_zh-TW.json b/node_modules/mavon-editor/src/lib/lang/zh-TW/words_zh-TW.json
new file mode 100644
index 0000000..e388ce3
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/lang/zh-TW/words_zh-TW.json
@@ -0,0 +1,54 @@
+{
+  "start_editor": "開始編輯...",
+  "navigation_title": "導航目錄",
+  "tl_bold": "粗體",
+  "tl_italic": "斜體",
+  "tl_header": "標題",
+  "tl_header_one": "一級標題",
+  "tl_header_two": "二級標題",
+  "tl_header_three": "三級標題",
+  "tl_header_four": "四級標題",
+  "tl_header_five": "五級標題",
+  "tl_header_six": "六級標題",
+  "tl_underline": "下劃線",
+  "tl_strikethrough": "中劃線",
+  "tl_mark": "標記",
+  "tl_superscript": "上角標",
+  "tl_subscript": "下角標",
+  "tl_quote": "段落引用",
+  "tl_ol": "有序列表",
+  "tl_ul": "無序列表",
+  "tl_link": "鏈接",
+  "tl_image": "添加圖片鏈接",
+  "tl_code": "代碼塊",
+  "tl_table": "表格",
+  "tl_undo": "上一步",
+  "tl_redo": "下一步",
+  "tl_trash": "清空",
+  "tl_save": "保存",
+  "tl_navigation_on": "開啟標題導航",
+  "tl_navigation_off": "關閉標題導航",
+  "tl_preview": "預覽",
+  "tl_aligncenter": "居中",
+  "tl_alignleft": "居左",
+  "tl_alignright": "居右",
+  "tl_edit": "編輯",
+  "tl_single_column": "單欄",
+  "tl_double_column": "雙欄",
+  "tl_fullscreen_on": "全屏編輯",
+  "tl_fullscreen_off": "退出全屏",
+  "tl_read": "沈浸式閱讀",
+  "tl_html_on": "查看html文本",
+  "tl_html_off": "返回markdown文本",
+  "tl_help": "markdown語法幫助",
+  "tl_upload": "上傳圖片",
+  "tl_upload_remove": "刪除",
+  "tl_popup_link_title": "添加鏈接",
+  "tl_popup_link_text": "鏈接描述",
+  "tl_popup_link_addr": "鏈接地址",
+  "tl_popup_img_link_title": "添加圖片",
+  "tl_popup_img_link_text": "圖片描述",
+  "tl_popup_img_link_addr": "圖片鏈接",
+  "tl_popup_link_sure": "確定",
+  "tl_popup_link_cancel": "取消"
+}
diff --git a/node_modules/mavon-editor/src/lib/mixins/markdown.js b/node_modules/mavon-editor/src/lib/mixins/markdown.js
new file mode 100644
index 0000000..da6da90
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/mixins/markdown.js
@@ -0,0 +1,154 @@
+import hljsLangs from '../core/hljs/lang.hljs.js'
+import {
+    loadScript
+} from '../core/extra-function.js'
+import sanitizer from '../core/sanitizer.js'
+var markdown_config = {
+    html: true,        // Enable HTML tags in source
+    xhtmlOut: true,        // Use '/' to close single tags (<br />).
+    breaks: true,        // Convert '\n' in paragraphs into <br>
+    langPrefix: 'lang-',  // CSS language prefix for fenced blocks. Can be
+    linkify: false,        // 自动识别url
+    typographer: true,
+    quotes: '“”‘’'
+}
+
+var MarkdownIt = require('markdown-it');
+// 表情
+var emoji = require('markdown-it-emoji');
+// 下标
+var sub = require('markdown-it-sub')
+// 上标
+var sup = require('markdown-it-sup')
+// <dl/>
+var deflist = require('markdown-it-deflist')
+// <abbr/>
+var abbr = require('markdown-it-abbr')
+// footnote
+var footnote = require('markdown-it-footnote')
+// insert 带有下划线 样式 ++ ++
+var insert = require('markdown-it-ins')
+// mark
+var mark = require('markdown-it-mark')
+// taskLists
+var taskLists = require('markdown-it-task-lists')
+// container
+var container = require('markdown-it-container')
+
+var toc = require('markdown-it-toc')
+
+var mihe = require('markdown-it-highlightjs-external');
+// math katex
+var katex = require('markdown-it-katex-external');
+var miip = require('markdown-it-images-preview');
+var missLangs = {};
+var needLangs = [];
+var hljs_opts = {
+    hljs: 'auto',
+    highlighted: true,
+    langCheck: function (lang) {
+        if (lang && hljsLangs[lang] && !missLangs[lang]) {
+            missLangs[lang] = 1;
+            needLangs.push(hljsLangs[lang])
+        }
+    }
+};
+
+export function initMarkdown() {
+    const markdown = new MarkdownIt(markdown_config);
+
+    // add target="_blank" to all link
+    var defaultRender = markdown.renderer.rules.link_open || function (tokens, idx, options, env, self) {
+        return self.renderToken(tokens, idx, options);
+    };
+    markdown.renderer.rules.link_open = function (tokens, idx, options, env, self) {
+        var hIndex = tokens[idx].attrIndex('href');
+        if (tokens[idx].attrs[hIndex][1].startsWith('#')) return defaultRender(tokens, idx, options, env, self);
+        // If you are sure other plugins can't add `target` - drop check below
+        var aIndex = tokens[idx].attrIndex('target');
+
+        if (aIndex < 0) {
+            tokens[idx].attrPush(['target', '_blank']); // add new attribute
+        } else {
+            tokens[idx].attrs[aIndex][1] = '_blank';    // replace value of existing attr
+        }
+
+        // pass token to default renderer.
+        return defaultRender(tokens, idx, options, env, self);
+    };
+
+    markdown.use(mihe, hljs_opts)
+        .use(emoji)
+        .use(sup)
+        .use(sub)
+        .use(container)
+        .use(container, 'hljs-left') /* align left */
+        .use(container, 'hljs-center')/* align center */
+        .use(container, 'hljs-right')/* align right */
+        .use(deflist)
+        .use(abbr)
+        .use(footnote)
+        .use(insert)
+        .use(mark)
+        .use(container)
+        .use(miip)
+        .use(katex)
+        .use(taskLists)
+        .use(toc)
+
+    return markdown;
+}
+
+export default {
+    data() {
+        return {
+            markdownIt: null
+        }
+    },
+    created() {
+        this.markdownIt = initMarkdown();
+        if (!this.html) {
+            this.markdownIt.set({ html: false });
+            this.xssOptions = false;
+        } else if (typeof this.xssOptions === 'object') {
+            this.markdownIt.use(sanitizer, this.xssOptions);
+        }
+    },
+    mounted() {
+        var $vm = this;
+        hljs_opts.highlighted = this.ishljs;
+    },
+    methods: {
+        $render(src, func) {
+            var $vm = this;
+            missLangs = {};
+            needLangs = [];
+            var res = this.markdownIt.render(src);
+            if (this.ishljs) {
+                if (needLangs.length > 0) {
+                    $vm.$_render(src, func, res);
+                }
+            }
+            func(res);
+        },
+        $_render(src, func, res) {
+            var $vm = this;
+            var deal = 0;
+            for (var i = 0; i < needLangs.length; i++) {
+                var url = $vm.p_external_link.hljs_lang(needLangs[i]);
+                loadScript(url, function () {
+                    deal = deal + 1;
+                    if (deal === needLangs.length) {
+                        res = this.markdownIt.render(src);
+                        func(res);
+                    }
+                })
+            }
+        }
+    },
+    watch: {
+        ishljs: function (val) {
+            hljs_opts.highlighted = val;
+        }
+    }
+};
diff --git a/node_modules/mavon-editor/src/lib/toolbar_left_click.js b/node_modules/mavon-editor/src/lib/toolbar_left_click.js
new file mode 100644
index 0000000..c6432c0
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/toolbar_left_click.js
@@ -0,0 +1,197 @@
+/**
+ * @Author: HuaChao Chen <CHC>
+ * @Date:   2017-05-03T01:23:38+08:00
+ * @Email:  chenhuachaoxyz@gmail.com
+ * @Filename: toolbar_left_click.js
+ * @Last modified by:   CHC
+ * @Last modified time: 2017-08-10T12:43:22+08:00
+ * @License: MIT
+ * @Copyright: 2017
+ */
+
+function $toolbar_left_undo_click($vm) {
+    if ($vm.d_history_index > 0) {
+        $vm.d_history_index--
+    }
+    // $vm.$refs.vNoteDivEdit.innerHTML = $vm.s_markdown.render($vm.d_value)
+    $vm.$nextTick(() => {
+        // 光标操作
+        let start = $vm.textarea_selectionEnds[$vm.d_history_index];
+        $vm.getTextareaDom().selectionStart = start
+        $vm.getTextareaDom().selectionEnd = start
+    })
+    $vm.getTextareaDom().focus()
+}
+// redo
+function $toolbar_left_redo_click($vm) {
+    if ($vm.d_history_index < $vm.d_history.length - 1) {
+        $vm.d_history_index++
+    }
+    $vm.$nextTick(() => {
+        let start = $vm.textarea_selectionEnds[$vm.d_history_index];
+        $vm.getTextareaDom().selectionStart = start
+        $vm.getTextareaDom().selectionEnd = start
+    })
+    $vm.getTextareaDom().focus()
+    // $vm.$refs.vNoteDivEdit.innerHTML = $vm.s_markdown.render($vm.d_value)
+}
+function $toolbar_left_trash_click($vm) {
+    $vm.d_value = ''
+    $vm.getTextareaDom().focus()
+    // $vm.$refs.vNoteDivEdit.innerHTML = $vm.s_markdown.render($vm.d_value)
+}
+function $toolbar_left_save_click($vm) {
+    $vm.save($vm.d_value, $vm.d_render)
+}
+// ol
+function $toolbar_left_ol_click($vm) {
+    $vm.insertOl()
+}
+// ul
+function $toolbar_left_ul_click($vm) {
+    $vm.insertUl()
+}
+function $toolbar_left_remove_line_click($vm) {
+    $vm.removeLine()
+}
+
+function $toolbar_left_codeBlock_click($vm) {
+    $vm.insertCodeBlock();
+}
+
+// 直接添加链接
+export const toolbar_left_addlink = (type, text, link, $vm) => {
+    let insert_text = {
+        prefix: type === 'link' ? `[${text}](` : `![${text}](`,
+        subfix: ')',
+        str: link
+    };
+    $vm.insertText($vm.getTextareaDom(), insert_text);
+}
+export const toolbar_left_click = (_type, $vm) => {
+     var _param_of_insert_text = {
+         'bold': {
+             prefix: '**',
+             subfix: '**',
+             str: $vm.d_words.tl_bold
+         },
+         'italic': {
+             prefix: '*',
+             subfix: '*',
+             str: $vm.d_words.tl_italic
+         },
+         'header': {
+             prefix: '# ',
+             subfix: '',
+             str: $vm.d_words.tl_header
+         },
+         'header1': {
+             prefix: '# ',
+             subfix: '',
+             str: $vm.d_words.tl_header_one
+         },
+         'header2': {
+             prefix: '## ',
+             subfix: '',
+             str: $vm.d_words.tl_header_two
+         },
+         'header3': {
+             prefix: '### ',
+             subfix: '',
+             str: $vm.d_words.tl_header_three
+         },
+         'header4': {
+             prefix: '#### ',
+             subfix: '',
+             str: $vm.d_words.tl_header_four
+         },
+         'header5': {
+             prefix: '##### ',
+             subfix: '',
+             str: $vm.d_words.tl_header_five
+         },
+         'header6': {
+             prefix: '###### ',
+             subfix: '',
+             str: $vm.d_words.tl_header_six
+         },
+         'underline': {
+             prefix: '++',
+             subfix: '++',
+             str: $vm.d_words.tl_underline
+         },
+         'strikethrough': {
+             prefix: '~~',
+             subfix: '~~',
+             str: $vm.d_words.tl_strikethrough
+         },
+         'mark': {
+             prefix: '==',
+             subfix: '==',
+             str: $vm.d_words.tl_mark
+         },
+         'superscript': {
+             prefix: '^',
+             subfix: '^',
+             str: $vm.d_words.tl_superscript
+         },
+         'subscript': {
+             prefix: '~',
+             subfix: '~',
+             str: $vm.d_words.tl_subscript
+         },
+         'quote': {
+             prefix: '> ',
+             subfix: '',
+             str: $vm.d_words.tl_quote
+         },
+         'link': {
+             prefix: '[](',
+             subfix: ')',
+             str: $vm.d_words.tl_link
+         },
+         'imagelink': {
+             prefix: '![](',
+             subfix: ')',
+             str: $vm.d_words.tl_image
+         },
+         'table': {
+             prefix: '',
+             subfix: '',
+             str: '|column1|column2|column3|\n|-|-|-|\n|content1|content2|content3|\n'
+         },
+         'aligncenter': {
+           prefix: '::: hljs-center\n\n',
+           subfix: '\n\n:::\n',
+           str: $vm.d_words.tl_aligncenter
+         },
+         'alignright': {
+           prefix: '::: hljs-right\n\n',
+           subfix: '\n\n:::\n',
+           str: $vm.d_words.tl_alignright
+         },
+         'alignleft': {
+           prefix: '::: hljs-left\n\n',
+           subfix: '\n\n:::\n',
+           str: $vm.d_words.tl_alignleft
+         }
+     };
+     if (_param_of_insert_text.hasOwnProperty(_type)) {
+         // 插入对应的内容
+         $vm.insertText($vm.getTextareaDom(),
+             _param_of_insert_text[_type]);
+     }
+     var _other_left_click = {
+         'undo': $toolbar_left_undo_click,
+         'redo': $toolbar_left_redo_click,
+         'trash': $toolbar_left_trash_click,
+         'save': $toolbar_left_save_click,
+         'ol': $toolbar_left_ol_click,
+         'ul': $toolbar_left_ul_click,
+         'removeLine': $toolbar_left_remove_line_click,
+         'code': $toolbar_left_codeBlock_click
+     };
+     if (_other_left_click.hasOwnProperty(_type)) {
+         _other_left_click[_type]($vm);
+     }
+ }
diff --git a/node_modules/mavon-editor/src/lib/toolbar_right_click.js b/node_modules/mavon-editor/src/lib/toolbar_right_click.js
new file mode 100644
index 0000000..aa66e42
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/toolbar_right_click.js
@@ -0,0 +1,92 @@
+/**
+ * @Author: HuaChao Chen <CHC>
+ * @Date:   2017-05-03T01:39:47+08:00
+ * @Email:  chenhuachaoxyz@gmail.com
+ * @Filename: toolbar_right_click.js
+ * @Last modified by:   chc
+ * @Last modified time: 2017-06-08T12:44:50+08:00
+ * @License: MIT
+ * @Copyright: 2017
+ */
+
+function $toolbar_right_html_click($vm) {
+    $vm.s_html_code = !$vm.s_html_code
+    if ($vm.htmlcode) {
+        $vm.htmlcode($vm.s_html_code, $vm.d_value)
+    }
+}
+
+function $toolbar_right_help_click($vm) {
+    $vm.s_help = !$vm.s_help
+    if ($vm.helptoggle) {
+        $vm.helptoggle($vm.s_help, $vm.d_value)
+    }
+}
+// 导航
+function $toolbar_right_read_click($vm) {
+    let element = $vm.$refs.vReadModel
+    // 单栏编辑
+    if (element.requestFullscreen) {
+        element.requestFullscreen();
+    } else if (element.mozRequestFullScreen) {
+        element.mozRequestFullScreen();
+    } else if (element.webkitRequestFullscreen) {
+        element.webkitRequestFullscreen();
+    } else if (element.msRequestFullscreen) {
+        element.msRequestFullscreen();
+    }
+}
+
+function $toolbar_right_preview_click($vm) {
+    $vm.s_preview_switch = !$vm.s_preview_switch
+    // $vm.$refs.vNoteDivEdit.innerHTML = $vm.s_markdown.render($vm.d_value)
+    if ($vm.previewtoggle) {
+        $vm.previewtoggle($vm.s_preview_switch, $vm.d_value)
+    }
+}
+
+function $toolbar_right_fullscreen_click($vm) {
+    $vm.s_fullScreen = !$vm.s_fullScreen
+    if ($vm.fullscreen) {
+        $vm.fullscreen($vm.s_fullScreen, $vm.d_value)
+    }
+}
+function $toolbar_right_subfield_click ($vm) {
+    $vm.s_subfield = !$vm.s_subfield
+    $vm.s_preview_switch = $vm.s_subfield;
+    // $vm.$refs.vNoteDivEdit.innerHTML = $vm.s_markdown.render($vm.d_value)
+    if ($vm.previewtoggle) {
+        $vm.previewtoggle($vm.s_preview_switch, $vm.d_value)
+    }
+    // $vm.$refs.vNoteDivEdit.innerHTML = $vm.s_markdown.render($vm.d_value)
+    if ($vm.subfieldtoggle) {
+        $vm.subfieldtoggle($vm.s_subfield, $vm.d_value)
+    }
+}
+function $toolbar_right_navigation_click($vm) {
+    $vm.s_navigation = !$vm.s_navigation
+    if ($vm.s_navigation) {
+        $vm.s_preview_switch = true;
+    }
+    if ($vm.navigationtoggle) {
+        $vm.navigationtoggle($vm.s_navigation, $vm.d_value)
+    }
+    if ($vm.s_navigation) {
+        // 绘制标题导航
+        $vm.getNavigation($vm, false)
+    }
+}
+export const toolbar_right_click = (_type, $vm) => {
+    var _other_right_click = {
+        'help': $toolbar_right_help_click,
+        'html': $toolbar_right_html_click,
+        'read': $toolbar_right_read_click,
+        'preview': $toolbar_right_preview_click,
+        'fullscreen': $toolbar_right_fullscreen_click,
+        'navigation': $toolbar_right_navigation_click,
+        'subfield': $toolbar_right_subfield_click
+    }
+    if (_other_right_click.hasOwnProperty(_type)) {
+        _other_right_click[_type]($vm);
+    }
+}
diff --git a/node_modules/mavon-editor/src/lib/util.js b/node_modules/mavon-editor/src/lib/util.js
new file mode 100644
index 0000000..a964300
--- /dev/null
+++ b/node_modules/mavon-editor/src/lib/util.js
@@ -0,0 +1,52 @@
+/**
+ * Created by zhy on 2016/12/25.
+ */
+/**
+ * 深度拷贝对象
+ * @param target
+ * @param arg
+ * @returns {*}
+ * @constructor
+ */
+export function p_ObjectCopy_DEEP(target, arg) {
+  for (let arg_item in arg) {
+    let type = typeof arg[arg_item];
+    if (!target[arg_item] || (type !== 'Object' && type !== 'object')) {
+      target[arg_item] = arg[arg_item];
+      continue;
+    } else {
+      target[arg_item] = p_ObjectCopy_DEEP(target[arg_item], arg[arg_item]);
+    }
+  }
+  return target;
+};
+/**
+ * 解析url参数
+ */
+export function p_urlParse() {
+  let url = window.location.search;
+  let obj = {};
+  let reg = /[?&][^?&]+=[^?&]+/g;
+  let arr = url.match(reg);
+  if (arr) {
+    arr.forEach((item) => {
+      let tempArr = item.substring(1).split('=');
+      let key = decodeURIComponent(tempArr[0]);
+      let val = decodeURIComponent(tempArr[1]);
+      obj[key] = val;
+    })
+  }
+  return obj;
+};
+
+export function stopEvent(e) {
+  if (!e) {
+    return;
+  }
+  if (e.preventDefault) {
+    e.preventDefault();
+  }
+  if (e.stopPropagation) {
+    e.stopPropagation();
+  }
+};
diff --git a/node_modules/mavon-editor/src/mavon-editor.vue b/node_modules/mavon-editor/src/mavon-editor.vue
new file mode 100644
index 0000000..f34db3d
--- /dev/null
+++ b/node_modules/mavon-editor/src/mavon-editor.vue
@@ -0,0 +1,932 @@
+<template>
+  <div
+    :class="[{ fullscreen: s_fullScreen, shadow: boxShadow }]"
+    class="v-note-wrapper markdown-body"
+    :style="{ 'box-shadow': boxShadow ? boxShadowStyle : '' }"
+  >
+    <!--工具栏-->
+    <div
+      class="v-note-op"
+      v-show="toolbarsFlag"
+      :style="{ background: toolbarsBackground }"
+    >
+      <v-md-toolbar-left
+        ref="toolbar_left"
+        :editable="editable"
+        :transition="transition"
+        :d_words="d_words"
+        @toolbar_left_click="toolbar_left_click"
+        @toolbar_left_addlink="toolbar_left_addlink"
+        :toolbars="toolbars"
+        @imgAdd="$imgAdd"
+        @imgDel="$imgDel"
+        @imgTouch="$imgTouch"
+        :image_filter="imageFilter"
+        :class="{ transition: transition }"
+      >
+        <template v-slot:left-toolbar-before
+          ><slot name="left-toolbar-before"
+        /></template>
+        <template v-slot:left-toolbar-after
+          ><slot name="left-toolbar-after"
+        /></template>
+      </v-md-toolbar-left>
+      <v-md-toolbar-right
+        ref="toolbar_right"
+        :d_words="d_words"
+        @toolbar_right_click="toolbar_right_click"
+        :toolbars="toolbars"
+        :s_subfield="s_subfield"
+        :s_preview_switch="s_preview_switch"
+        :s_fullScreen="s_fullScreen"
+        :s_html_code="s_html_code"
+        :s_navigation="s_navigation"
+        :class="{ transition: transition }"
+      >
+        <template v-slot:right-toolbar-before
+          ><slot name="right-toolbar-before"
+        /></template>
+        <template v-slot:right-toolbar-after
+          ><slot name="right-toolbar-after"
+        /></template>
+      </v-md-toolbar-right>
+    </div>
+    <!--编辑展示区域-->
+    <div class="v-note-panel">
+      <!--编辑区-->
+      <div
+        ref="vNoteEdit"
+        @scroll="$v_edit_scroll"
+        class="v-note-edit divarea-wrapper"
+        :class="{
+          'scroll-style': s_scrollStyle,
+          'scroll-style-border-radius':
+            s_scrollStyle && !s_preview_switch && !s_html_code,
+          'single-edit': !s_preview_switch && !s_html_code,
+          'single-show':
+            (!s_subfield && s_preview_switch) || (!s_subfield && s_html_code),
+          transition: transition
+        }"
+        @click="textAreaFocus"
+      >
+        <div
+          class="content-input-wrapper"
+          :style="{ 'background-color': editorBackground }"
+        >
+          <!-- 双栏 -->
+          <v-autoTextarea
+            ref="vNoteTextarea"
+            :placeholder="placeholder ? placeholder : d_words.start_editor"
+            class="content-input"
+            :fontSize="fontSize"
+            lineHeight="1.5"
+            v-model="d_value"
+            fullHeight
+            :style="{ 'background-color': editorBackground }"
+          ></v-autoTextarea>
+        </div>
+      </div>
+      <!--展示区-->
+      <div
+        :class="{
+          'single-show':
+            (!s_subfield && s_preview_switch) || (!s_subfield && s_html_code)
+        }"
+        v-show="s_preview_switch || s_html_code"
+        class="v-note-show"
+      >
+        <div
+          ref="vShowContent"
+          v-html="d_render"
+          v-show="!s_html_code"
+          :class="{
+            'scroll-style': s_scrollStyle,
+            'scroll-style-border-radius': s_scrollStyle
+          }"
+          class="v-show-content"
+          :style="{ 'background-color': previewBackground }"
+        ></div>
+        <div
+          v-show="s_html_code"
+          :class="{
+            'scroll-style': s_scrollStyle,
+            'scroll-style-border-radius': s_scrollStyle
+          }"
+          class="v-show-content-html"
+          :style="{ 'background-color': previewBackground }"
+        >
+          {{ d_render }}
+        </div>
+      </div>
+
+      <!--标题导航-->
+      <transition name="slideTop">
+        <div
+          v-show="s_navigation"
+          class="v-note-navigation-wrapper"
+          :class="{ transition: transition }"
+        >
+          <div class="v-note-navigation-title">
+            {{ d_words.navigation_title
+            }}<i
+              @click="toolbar_right_click('navigation')"
+              class="fa fa-mavon-times v-note-navigation-close"
+              aria-hidden="true"
+            ></i>
+          </div>
+          <div
+            ref="navigationContent"
+            class="v-note-navigation-content"
+            :class="{ 'scroll-style': s_scrollStyle }"
+          ></div>
+        </div>
+      </transition>
+    </div>
+    <!--帮助文档-->
+    <transition name="fade">
+      <div ref="help">
+        <div
+          @click.self="toolbar_right_click('help')"
+          class="v-note-help-wrapper"
+          v-if="s_help"
+        >
+          <div
+            class="v-note-help-content markdown-body"
+            :class="{ shadow: boxShadow }"
+          >
+            <i
+              @click.stop.prevent="toolbar_right_click('help')"
+              class="fa fa-mavon-times"
+              aria-hidden="true"
+            ></i>
+            <div class="scroll-style v-note-help-show" v-html="d_help"></div>
+          </div>
+        </div>
+      </div>
+    </transition>
+    <!-- 预览图片 -->
+    <transition name="fade">
+      <div
+        @click="d_preview_imgsrc = null"
+        class="v-note-img-wrapper"
+        v-if="d_preview_imgsrc"
+      >
+        <img :src="d_preview_imgsrc" alt="none" />
+      </div>
+    </transition>
+    <!--阅读模式-->
+    <div
+      :class="{ show: s_readmodel }"
+      class="v-note-read-model scroll-style"
+      ref="vReadModel"
+    >
+      <div
+        ref="vNoteReadContent"
+        class="v-note-read-content"
+        v-html="d_render"
+      ></div>
+    </div>
+  </div>
+</template>
+
+<script>
+// import tomarkdown from './lib/core/to-markdown.js'
+import { keydownListen } from "./lib/core/keydown-listen.js";
+import hljsCss from "./lib/core/hljs/lang.hljs.css.js";
+import hljsLangs from "./lib/core/hljs/lang.hljs.js";
+import {
+  fullscreenchange,
+  /* windowResize, */
+  scrollLink,
+  insertTextAtCaret,
+  getNavigation,
+  insertTab,
+  unInsertTab,
+  insertOl,
+  insertUl,
+  insertEnter,
+  removeLine,
+  insertCodeBlock,
+  loadLink,
+  loadScript,
+  ImagePreviewListener
+} from "./lib/core/extra-function.js";
+import { stopEvent } from "./lib/util.js";
+import {
+  toolbar_left_click,
+  toolbar_left_addlink
+} from "./lib/toolbar_left_click.js";
+import { toolbar_right_click } from "./lib/toolbar_right_click.js";
+import { CONFIG } from "./lib/config.js";
+import markdown, {initMarkdown} from './lib/mixins/markdown.js';
+import md_toolbar_left from "./components/md-toolbar-left";
+import md_toolbar_right from "./components/md-toolbar-right";
+import autoTextarea from "./components/auto-textarea";
+import "./lib/font/css/fontello.css";
+import "./lib/css/md.css";
+
+export default {
+  emits: [
+    "imgDel",
+    "change",
+    "fullScreen",
+    "readModel",
+    "previewToggle",
+    "subfieldToggle",
+    "htmlCode",
+    "helpToggle",
+    "save",
+    "navigationToggle",
+    "update:modelValue"
+  ],
+
+  mixins: [markdown],
+
+  props: {
+    scrollStyle: {
+      // 是否渲染滚动条样式(webkit)
+      type: Boolean,
+      default: true
+    },
+    boxShadow: {
+      // 是否添加阴影
+      type: Boolean,
+      default: true
+    },
+    transition: {
+      // 是否开启动画过渡
+      type: Boolean,
+      default: true
+    },
+    autofocus: {
+      // 是否自动获取焦点
+      type: Boolean,
+      default: true
+    },
+    fontSize: {
+      // 字体大小
+      type: String,
+      default: "14px"
+    },
+    toolbarsBackground: {
+      // 工具栏背景色
+      type: String,
+      default: "#ffffff"
+    },
+    editorBackground: {
+      // TODO: 编辑栏背景色
+      type: String,
+      default: "#ffffff"
+    },
+    previewBackground: {
+      // 预览栏背景色
+      type: String,
+      default: "#fbfbfb"
+    },
+    boxShadowStyle: {
+      // 阴影样式
+      type: String,
+      default: "0 2px 12px 0 rgba(0, 0, 0, 0.1)"
+    },
+    help: {
+      type: String,
+      default: null
+    },
+    modelValue: {
+      // 初始 value
+      type: String,
+      default: ""
+    },
+    language: {
+      // 初始语言
+      type: String,
+      default: "zh-CN"
+    },
+    subfield: {
+      type: Boolean,
+      default: true
+    },
+    navigation: {
+      type: Boolean,
+      default: false
+    },
+    defaultOpen: {
+      type: String,
+      default: null
+    },
+    editable: {
+      // 是否开启编辑
+      type: Boolean,
+      default: true
+    },
+    toolbarsFlag: {
+      // 是否开启工具栏
+      type: Boolean,
+      default: true
+    },
+    toolbars: {
+      // 工具栏
+      type: Object,
+      default() {
+        return CONFIG.toolbars;
+      }
+    },
+    html: {// Enable HTML tags in source
+        type: Boolean,
+        default: true
+    },
+    xssOptions: {
+      type: [Object, Boolean],
+      default() {
+        return {};
+      }
+    },
+    codeStyle: {
+      // <code></code> 样式
+      type: String,
+      default() {
+        return "github";
+      }
+    },
+    placeholder: {
+      // 编辑器默认内容
+      type: String,
+      default: null
+    },
+    ishljs: {
+      type: Boolean,
+      default: true
+    },
+    externalLink: {
+      type: [Object, Boolean],
+      default: true
+    },
+    imageFilter: {
+      type: Function,
+      default: null
+    },
+    imageClick: {
+      type: Function,
+      default: null
+    },
+    tabSize: {
+      type: Number,
+      default: 0
+    },
+    shortCut: {
+      type: Boolean,
+      default: true
+    }
+  },
+
+  data() {
+    return {
+      s_right_click_menu_show: false,
+      right_click_menu_top: 0,
+      right_click_menu_left: 0,
+      s_subfield: (() => {
+        return this.subfield;
+      })(),
+      s_autofocus: true,
+      // 标题导航
+      s_navigation: (() => {
+        return this.navigation;
+      })(),
+      s_scrollStyle: (() => {
+        return this.scrollStyle;
+      })(), // props 是否渲染滚动条样式
+      d_value: "", // props 文本内容
+      d_render: "", // props 文本内容render
+      s_preview_switch: (() => {
+        let default_open_ = this.defaultOpen;
+        if (!default_open_) {
+          default_open_ = this.subfield ? "preview" : "edit";
+        }
+        return default_open_ === "preview" ? true : false;
+      })(), // props true 展示编辑 false展示预览
+      s_fullScreen: false, // 全屏编辑标志
+      s_help: false, // markdown帮助
+      s_html_code: false, // 分栏情况下查看html
+      d_help: null,
+      d_words: null,
+      edit_scroll_height: -1,
+      s_readmodel: false,
+      s_table_enter: false, // 回车事件是否在表格中执行
+      d_history: (() => {
+        let temp_array = [];
+        temp_array.push(this.modelValue);
+        return temp_array;
+      })(), // 编辑记录
+      d_history_index: 0, // 编辑记录索引
+      currentTimeout: "",
+      d_image_file: [],
+      d_preview_imgsrc: null, // 图片预览地址
+      s_external_link: {
+        markdown_css: function () {
+          return "https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/2.9.0/github-markdown.min.css";
+        },
+        hljs_js: function () {
+          return "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.3.1/highlight.min.js";
+        },
+        hljs_lang: function (lang) {
+          return (
+            "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.3.1/languages/" +
+            lang +
+            ".min.js"
+          );
+        },
+        hljs_css: function (css) {
+          if (hljsCss[css]) {
+            return (
+              "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.3.1/styles/" +
+              css +
+              ".min.css"
+            );
+          }
+          return "";
+        },
+        katex_js: function () {
+          return "https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.js";
+        },
+        katex_css: function () {
+          return "https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.8.3/katex.min.css";
+        }
+      },
+      p_external_link: {},
+      textarea_selectionEnd: 0,
+      textarea_selectionEnds: [0],
+      _xssHandler: null
+    };
+  },
+
+  created() {
+    var $vm = this;
+    // 初始化语言
+    this.initLanguage();
+    this.initExternalFuc();
+    this.$nextTick(() => {
+      // 初始化Textarea编辑开关
+      $vm.editableTextarea();
+    });
+  },
+
+  mounted() {
+    var $vm = this;
+    this.$el.addEventListener("paste", function (e) {
+      $vm.$paste(e);
+    });
+    this.$el.addEventListener("drop", function (e) {
+      $vm.$drag(e);
+    });
+    // 浏览器siz大小
+    /* windowResize(this); */
+    keydownListen(this);
+    // 图片预览事件监听
+    ImagePreviewListener(this);
+    // 设置默认焦点
+    if (this.autofocus) {
+      this.getTextareaDom().focus();
+    }
+    // fullscreen事件
+    fullscreenchange(this);
+    this.d_value = this.modelValue || "";
+    // 将help添加到末尾
+    document.body.appendChild(this.$refs.help);
+    this.loadExternalLink("markdown_css", "css");
+    this.loadExternalLink("katex_css", "css");
+    this.loadExternalLink("katex_js", "js", function () {
+      $vm.iRender(true);
+    });
+    this.loadExternalLink("hljs_js", "js", function () {
+      $vm.iRender(true);
+    });
+
+    if (
+      !(
+        typeof $vm.externalLink === "object" &&
+        typeof $vm.externalLink["markdown_css"] === "function"
+      )
+    ) {
+      // 没有外部文件要来接管markdown样式,可以更改markdown样式。
+      $vm.codeStyleChange($vm.codeStyle, true);
+    }
+  },
+
+  beforeUnmount() {
+    document.body.removeChild(this.$refs.help);
+  },
+
+  getMarkdownIt() {
+    let mdIt = this.mixins[0].data().markdownIt;
+    if (!mdIt) {
+        mdIt = initMarkdown();
+    }
+    return mdIt;
+  },
+
+  methods: {
+    loadExternalLink(name, type, callback) {
+      if (typeof this.p_external_link[name] !== "function") {
+        if (this.p_external_link[name] !== false) {
+          console.error(
+            "external_link." + name,
+            "is not a function, if you want to disabled this error log, set external_link." +
+              name,
+            "to function or false"
+          );
+        }
+        return;
+      }
+      var _obj = {
+        css: loadLink,
+        js: loadScript
+      };
+      if (_obj.hasOwnProperty(type)) {
+        _obj[type](this.p_external_link[name](), callback);
+      }
+    },
+    initExternalFuc() {
+      var $vm = this;
+      var _external_ = [
+        "markdown_css",
+        "hljs_js",
+        "hljs_css",
+        "hljs_lang",
+        "katex_js",
+        "katex_css"
+      ];
+      var _type_ = typeof $vm.externalLink;
+      var _is_object = _type_ === "object";
+      var _is_boolean = _type_ === "boolean";
+      for (var i = 0; i < _external_.length; i++) {
+        if (
+          (_is_boolean && !$vm.externalLink) ||
+          (_is_object && $vm.externalLink[_external_[i]] === false)
+        ) {
+          $vm.p_external_link[_external_[i]] = false;
+        } else if (
+          _is_object &&
+          typeof $vm.externalLink[_external_[i]] === "function"
+        ) {
+          $vm.p_external_link[_external_[i]] = $vm.externalLink[_external_[i]];
+        } else {
+          $vm.p_external_link[_external_[i]] =
+            $vm.s_external_link[_external_[i]];
+        }
+      }
+    },
+    textAreaFocus() {
+      this.$refs.vNoteTextarea.$refs.vTextarea.focus();
+    },
+    $drag($e) {
+      var dataTransfer = $e.dataTransfer;
+      if (dataTransfer) {
+        var files = dataTransfer.files;
+        if (files.length > 0) {
+          $e.preventDefault();
+          this.$refs.toolbar_left.$imgFilesAdd(files);
+        }
+      }
+    },
+    $paste($e) {
+      var clipboardData = $e.clipboardData;
+      if (clipboardData) {
+        var items = clipboardData.items;
+        if (!items) return;
+        var types = clipboardData.types || [];
+        var item = null;
+        for (var i = 0; i < types.length; i++) {
+          if (types[i] === "Files") {
+            item = items[i];
+            break;
+          }
+        }
+        if (item && item.kind === "file") {
+          // prevent filename being pasted parallel along
+          // with the image pasting process
+          stopEvent($e);
+          var oFile = item.getAsFile();
+          this.$refs.toolbar_left.$imgFilesAdd([oFile]);
+        }
+      }
+    },
+    $imgTouch(file) {
+      var $vm = this;
+      // TODO 跳转到图片位置
+    },
+    $imgDel(file) {
+      this.markdownIt.image_del(file[1]);
+      // 删除所有markdown中的图片
+      let fileReg = file[0];
+      let reg = new RegExp(`\\!\\[${file[1]._name}\\]\\(${fileReg}\\)`, "g");
+
+      this.d_value = this.d_value.replace(reg, "");
+      this.iRender();
+      this.$emit("imgDel", file);
+    },
+    $imgAdd(pos, $file, isinsert) {
+      if (isinsert === undefined) isinsert = true;
+      var $vm = this;
+      if (this.__rFilter == null) {
+        // this.__rFilter = /^(?:image\/bmp|image\/cis\-cod|image\/gif|image\/ief|image\/jpeg|image\/jpeg|image\/jpeg|image\/pipeg|image\/png|image\/svg\+xml|image\/tiff|image\/x\-cmu\-raster|image\/x\-cmx|image\/x\-icon|image\/x\-portable\-anymap|image\/x\-portable\-bitmap|image\/x\-portable\-graymap|image\/x\-portable\-pixmap|image\/x\-rgb|image\/x\-xbitmap|image\/x\-xpixmap|image\/x\-xwindowdump)$/i;
+        this.__rFilter = /^image\//i;
+      }
+      this.__oFReader = new FileReader();
+      this.__oFReader.onload = function (oFREvent) {
+        $vm.markdownIt.image_add(pos, oFREvent.target.result);
+        $file.miniurl = oFREvent.target.result;
+        if (isinsert === true) {
+          // 去除特殊字符
+          $file._name = $file.name.replace(
+            /[\[\]\(\)\+\{\}&\|\\\*^%$#@\-]/g,
+            ""
+          );
+
+          $vm.insertText($vm.getTextareaDom(), {
+            prefix: "![" + $file._name + "](" + pos + ")",
+            subfix: "",
+            str: ""
+          });
+          $vm.$nextTick(function () {
+            $vm.$emit("imgAdd", pos, $file);
+          });
+        }
+      };
+      if ($file) {
+        var oFile = $file;
+        if (this.__rFilter.test(oFile.type)) {
+          this.__oFReader.readAsDataURL(oFile);
+        }
+      }
+    },
+    $imgUpdateByUrl(pos, url) {
+      var $vm = this;
+      this.markdownIt.image_add(pos, url);
+      this.$nextTick(function () {
+        $vm.d_render = this.markdownIt.render(this.d_value);
+      });
+    },
+    $imgAddByUrl(pos, url) {
+      if (this.$refs.toolbar_left.$imgAddByUrl(pos, url)) {
+        this.$imgUpdateByUrl(pos, url);
+        return true;
+      }
+      return false;
+    },
+    $img2Url(fileIndex, url) {
+      // x.replace(/(\[[^\[]*?\](?=\())\(\s*(\.\/2)\s*\)/g, "$1(http://path/to/png.png)")
+      var reg_str =
+        "/(!\\[\[^\\[\]*?\\]\(?=\\(\)\)\\(\\s*\(" + fileIndex + "\)\\s*\\)/g";
+      var reg = eval(reg_str);
+      this.d_value = this.d_value.replace(reg, "$1(" + url + ")");
+      this.$refs.toolbar_left.$changeUrl(fileIndex, url);
+      this.iRender();
+    },
+    $imglst2Url(imglst) {
+      if (imglst instanceof Array) {
+        for (var i = 0; i < imglst.length; i++) {
+          this.$img2Url(imglst[i][0], imglst[i][1]);
+        }
+      }
+    },
+    toolbar_left_click(_type) {
+      toolbar_left_click(_type, this);
+    },
+    toolbar_left_addlink(_type, text, link) {
+      toolbar_left_addlink(_type, text, link, this);
+    },
+    toolbar_right_click(_type) {
+      toolbar_right_click(_type, this);
+    },
+    getNavigation($vm, full) {
+      return getNavigation($vm, full);
+    },
+    // @event
+    // 修改数据触发 (val , val_render)
+    change(val, render) {
+      this.$emit("change", val, render);
+    },
+    // 切换全屏触发 (status , val)
+    fullscreen(status, val) {
+      this.$emit("fullScreen", status, val);
+    },
+    // 打开阅读模式触发(status , val)
+    readmodel(status, val) {
+      this.$emit("readModel", status, val);
+    },
+    // 切换阅读编辑触发 (status , val)
+    previewtoggle(status, val) {
+      this.$emit("previewToggle", status, val);
+    },
+    // 切换分栏触发 (status , val)
+    subfieldtoggle(status, val) {
+      this.$emit("subfieldToggle", status, val);
+    },
+    // 切换htmlcode触发 (status , val)
+    htmlcode(status, val) {
+      this.$emit("htmlCode", status, val);
+    },
+    // 打开 , 关闭 help触发 (status , val)
+    helptoggle(status, val) {
+      this.$emit("helpToggle", status, val);
+    },
+    // 监听ctrl + s
+    save(val, render) {
+      this.$emit("save", val, render);
+    },
+    // 导航栏切换
+    navigationtoggle(status, val) {
+      this.$emit("navigationToggle", status, val);
+    },
+    $toolbar_right_read_change_status() {
+      this.s_readmodel = !this.s_readmodel;
+      if (this.readmodel) {
+        this.readmodel(this.s_readmodel, this.d_value);
+      }
+      if (this.s_readmodel && this.toolbars.navigation) {
+        this.getNavigation(this, true);
+      }
+    },
+    // ---------------------------------------
+    // 滚动条联动
+    $v_edit_scroll($event) {
+      scrollLink($event, this);
+    },
+    // 获取textarea dom节点
+    getTextareaDom() {
+      return this.$refs.vNoteTextarea.$refs.vTextarea;
+    },
+    // 工具栏插入内容
+    insertText(obj, { prefix, subfix, str, type }) {
+      // if (this.s_preview_switch) {
+
+      insertTextAtCaret(obj, { prefix, subfix, str, type }, this);
+    },
+    insertTab() {
+      insertTab(this, this.tabSize);
+    },
+    insertOl() {
+      insertOl(this);
+    },
+    removeLine() {
+      removeLine(this);
+    },
+    insertUl() {
+      insertUl(this);
+    },
+    unInsertTab() {
+      unInsertTab(this, this.tabSize);
+    },
+    insertCodeBlock() {
+      insertCodeBlock(this);
+    },
+    insertEnter(event) {
+      insertEnter(this, event);
+    },
+    saveHistory() {
+      this.d_history.splice(this.d_history_index + 1, this.d_history.length);
+      this.d_history.push(this.d_value);
+      this.textarea_selectionEnds.splice(
+        this.d_history_index + 1,
+        this.textarea_selectionEnds.length
+      );
+      this.textarea_selectionEnds.push(this.textarea_selectionEnd);
+      this.d_history_index = this.d_history.length - 1;
+    },
+    saveSelectionEndsHistory() {
+      const textarea =
+        this.$refs.vNoteTextarea &&
+        this.$refs.vNoteTextarea.$el.querySelector("textarea");
+      this.textarea_selectionEnd = textarea
+        ? textarea.selectionEnd
+        : this.textarea_selectionEnd;
+    },
+    initLanguage() {
+      let lang =
+        CONFIG.langList.indexOf(this.language) >= 0 ? this.language : "zh-CN";
+      var $vm = this;
+      $vm.$render(CONFIG[`help_${lang}`], function (res) {
+        $vm.d_help = res;
+      });
+      this.d_words = CONFIG[`words_${lang}`];
+    },
+    // 编辑开关
+    editableTextarea() {
+      let text_dom = this.$refs.vNoteTextarea.$refs.vTextarea;
+      if (this.editable) {
+        text_dom.removeAttribute("disabled");
+      } else {
+        text_dom.setAttribute("disabled", "disabled");
+      }
+    },
+    codeStyleChange(val, isInit) {
+      isInit = isInit ? isInit : false;
+      if (typeof this.p_external_link.hljs_css !== "function") {
+        if (this.p_external_link.hljs_css !== false) {
+          console.error(
+            "external_link.hljs_css is not a function, if you want to disabled this error log, set external_link.hljs_css to function or false"
+          );
+        }
+        return;
+      }
+      var url = this.p_external_link.hljs_css(val);
+      if (url.length === 0 && isInit) {
+        console.warn(
+          "hljs color scheme",
+          val,
+          "do not exist, loading default github"
+        );
+        url = this.p_external_link.hljs_css("github");
+      }
+      if (url.length > 0) {
+        loadLink(url, null, "md-code-style");
+      } else {
+        console.warn(
+          "hljs color scheme",
+          val,
+          "do not exist, hljs color scheme will not change"
+        );
+      }
+    },
+    iRender(toggleChange) {
+      var $vm = this;
+      this.$render($vm.d_value, function (res) {
+        $vm.d_render = res;
+        // change回调  toggleChange == false 时候触发change回调
+        if (!toggleChange) {
+          if ($vm.change) $vm.change($vm.d_value, $vm.d_render);
+        }
+        // 改变标题导航
+        if ($vm.s_navigation) getNavigation($vm, false);
+        // v-model 语法糖
+        $vm.$emit("update:modelValue", $vm.d_value);
+        // 塞入编辑记录数组
+        if ($vm.d_value === $vm.d_history[$vm.d_history_index]) return;
+        window.clearTimeout($vm.currentTimeout);
+        $vm.currentTimeout = setTimeout(() => {
+          $vm.saveHistory();
+        }, 500);
+      });
+    },
+    // 清空上一步 下一步缓存
+    $emptyHistory() {
+      this.d_history = [this.d_value]; // 编辑记录
+      this.d_history_index = 0; // 编辑记录索引
+    }
+  },
+
+  watch: {
+    d_value: function (val, oldVal) {
+      this.saveSelectionEndsHistory();
+      this.iRender();
+    },
+    modelValue: function (val, oldVal) {
+      if (val !== this.d_value) {
+        this.d_value = val;
+      }
+    },
+    subfield: function (val, oldVal) {
+      this.s_subfield = val;
+    },
+    d_history_index() {
+      if (this.d_history_index > 20) {
+        this.d_history.shift();
+        this.d_history_index = this.d_history_index - 1;
+      }
+      this.d_value = this.d_history[this.d_history_index];
+    },
+    language: function (val) {
+      this.initLanguage();
+    },
+    editable: function () {
+      this.editableTextarea();
+    },
+    defaultOpen: function (val) {
+      let default_open_ = val;
+      if (!default_open_) {
+        default_open_ = this.subfield ? "preview" : "edit";
+      }
+      this.s_preview_switch = default_open_ === "preview" ? true : false;
+      return this.s_preview_switch;
+    },
+    codeStyle: function (val) {
+      this.codeStyleChange(val);
+    }
+  },
+
+  components: {
+    "v-autoTextarea": autoTextarea,
+    "v-md-toolbar-left": md_toolbar_left,
+    "v-md-toolbar-right": md_toolbar_right
+  }
+};
+</script>
+<style lang="stylus" rel="stylesheet/stylus">
+@import "lib/css/scroll.styl"
+@import "lib/css/mavon-editor.styl"
+</style>
+<style lang="css" scoped>
+.auto-textarea-wrapper {
+  height: 100%;
+}
+</style>
diff --git a/node_modules/xss/LICENSE b/node_modules/xss/LICENSE
new file mode 100644
index 0000000..f840eb4
--- /dev/null
+++ b/node_modules/xss/LICENSE
@@ -0,0 +1,23 @@
+Copyright (c) 2012-2018 Zongmin Lei(雷宗民) <leizongmin@gmail.com>
+http://ucdok.com
+
+The MIT License
+
+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.
\ No newline at end of file
diff --git a/node_modules/xss/README.md b/node_modules/xss/README.md
new file mode 100644
index 0000000..b40bdaf
--- /dev/null
+++ b/node_modules/xss/README.md
@@ -0,0 +1,508 @@
+[![NPM version][npm-image]][npm-url]
+[![Node.js CI](https://github.com/leizongmin/js-xss/actions/workflows/nodejs.yml/badge.svg)](https://github.com/leizongmin/js-xss/actions/workflows/nodejs.yml)
+[![Test coverage][coveralls-image]][coveralls-url]
+[![David deps][david-image]][david-url]
+[![node version][node-image]][node-url]
+[![npm download][download-image]][download-url]
+[![npm license][license-image]][download-url]
+
+[npm-image]: https://img.shields.io/npm/v/xss.svg?style=flat-square
+[npm-url]: https://npmjs.org/package/xss
+[coveralls-image]: https://img.shields.io/coveralls/leizongmin/js-xss.svg?style=flat-square
+[coveralls-url]: https://coveralls.io/r/leizongmin/js-xss?branch=master
+[david-image]: https://img.shields.io/david/leizongmin/js-xss.svg?style=flat-square
+[david-url]: https://david-dm.org/leizongmin/js-xss
+[node-image]: https://img.shields.io/badge/node.js-%3E=_0.10-green.svg?style=flat-square
+[node-url]: http://nodejs.org/download/
+[download-image]: https://img.shields.io/npm/dm/xss.svg?style=flat-square
+[download-url]: https://npmjs.org/package/xss
+[license-image]: https://img.shields.io/npm/l/xss.svg
+
+# Sanitize untrusted HTML (to prevent XSS) with a configuration specified by a Whitelist.
+
+[![Greenkeeper badge](https://badges.greenkeeper.io/leizongmin/js-xss.svg)](https://greenkeeper.io/)
+
+![xss](https://nodei.co/npm/xss.png?downloads=true&stars=true)
+
+---
+
+`xss` is a module used to filter input from users to prevent XSS attacks.
+([What is XSS attack?](http://en.wikipedia.org/wiki/Cross-site_scripting))
+
+**Project Homepage:** http://jsxss.com
+
+**Try Online:** http://jsxss.com/en/try.html
+
+**[中文版文档](https://github.com/leizongmin/js-xss/blob/master/README.zh.md)**
+
+---
+
+## Features
+
+- Specifies HTML tags and their attributes allowed with whitelist
+- Handle any tags or attributes using custom function.
+
+## Reference
+
+- [XSS Filter Evasion Cheat Sheet](https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet)
+- [Data URI scheme](http://en.wikipedia.org/wiki/Data_URI_scheme)
+- [XSS with Data URI Scheme](http://hi.baidu.com/badzzzz/item/bdbafe83144619c199255f7b)
+
+## Benchmark (for references only)
+
+- the xss module: 22.53 MB/s
+- `xss()` function from module `validator@0.3.7`: 6.9 MB/s
+
+For test code please refer to `benchmark` directory.
+
+## They are using xss module
+
+- **nodeclub** - A Node.js bbs using MongoDB - https://github.com/cnodejs/nodeclub
+- **cnpmjs.org** - Private npm registry and web for Enterprise - https://github.com/cnpm/cnpmjs.org
+- **cocalc.com** - Collaborative Calculation and Data Science - https://cocalc.com
+
+## Install
+
+### NPM
+
+```bash
+npm install xss
+```
+
+### Bower
+
+```bash
+bower install xss
+```
+
+Or
+
+```bash
+bower install https://github.com/leizongmin/js-xss.git
+```
+
+## Usages
+
+### On Node.js
+
+```javascript
+var xss = require("xss");
+var html = xss('<script>alert("xss");</script>');
+console.log(html);
+```
+
+### On Browser
+
+Shim mode (reference file `test/test.html`):
+
+```html
+<script src="https://rawgit.com/leizongmin/js-xss/master/dist/xss.js"></script>
+<script>
+  // apply function filterXSS in the same way
+  var html = filterXSS('<script>alert("xss");</scr' + "ipt>");
+  alert(html);
+</script>
+```
+
+AMD mode - shim:
+
+```html
+<script>
+  require.config({
+    baseUrl: "./",
+    paths: {
+      xss: "https://rawgit.com/leizongmin/js-xss/master/dist/xss.js",
+    },
+    shim: {
+      xss: { exports: "filterXSS" },
+    },
+  });
+  require(["xss"], function (xss) {
+    var html = xss('<script>alert("xss");</scr' + "ipt>");
+    alert(html);
+  });
+</script>
+```
+
+**Notes: please don't use the URL https://rawgit.com/leizongmin/js-xss/master/dist/xss.js in production environment.**
+
+## Command Line Tool
+
+### Process File
+
+You can use the xss command line tool to process a file. Usage:
+
+```bash
+xss -i <input_file> -o <output_file>
+```
+
+Example:
+
+```bash
+xss -i origin.html -o target.html
+```
+
+### Active Test
+
+Run the following command, them you can type HTML
+code in the command-line, and check the filtered output:
+
+```bash
+xss -t
+```
+
+For more details, please run `$ xss -h` to see it.
+
+## Custom filter rules
+
+When using the `xss()` function, the second parameter could be used to specify
+custom rules:
+
+```javascript
+options = {}; // Custom rules
+html = xss('<script>alert("xss");</script>', options);
+```
+
+To avoid passing `options` every time, you can also do it in a faster way by
+creating a `FilterXSS` instance:
+
+```javascript
+options = {}; // Custom rules
+myxss = new xss.FilterXSS(options);
+// then apply myxss.process()
+html = myxss.process('<script>alert("xss");</script>');
+```
+
+Details of parameters in `options` would be described below.
+
+### Whitelist
+
+By specifying a `whiteList`, e.g. `{ 'tagName': [ 'attr-1', 'attr-2' ] }`. Tags
+and attributes not in the whitelist would be filter out. For example:
+
+```javascript
+// only tag a and its attributes href, title, target are allowed
+var options = {
+  whiteList: {
+    a: ["href", "title", "target"],
+  },
+};
+// With the configuration specified above, the following HTML:
+// <a href="#" onclick="hello()"><i>Hello</i></a>
+// would become:
+// <a href="#">&lt;i&gt;Hello&lt;/i&gt;</a>
+```
+
+For the default whitelist, please refer `xss.whiteList`.
+
+`allowList` is also supported, and has the same function as `whiteList`.
+
+### Customize the handler function for matched tags
+
+By specifying the handler function with `onTag`:
+
+```javascript
+function onTag(tag, html, options) {
+  // tag is the name of current tag, e.g. 'a' for tag <a>
+  // html is the HTML of this tag, e.g. '<a>' for tag <a>
+  // options is some addition informations:
+  //   isWhite    boolean, whether the tag is in whitelist
+  //   isClosing  boolean, whether the tag is a closing tag, e.g. true for </a>
+  //   position        integer, the position of the tag in output result
+  //   sourcePosition  integer, the position of the tag in input HTML source
+  // If a string is returned, the current tag would be replaced with the string
+  // If return nothing, the default measure would be taken:
+  //   If in whitelist: filter attributes using onTagAttr, as described below
+  //   If not in whitelist: handle by onIgnoreTag, as described below
+}
+```
+
+### Customize the handler function for attributes of matched tags
+
+By specifying the handler function with `onTagAttr`:
+
+```javascript
+function onTagAttr(tag, name, value, isWhiteAttr) {
+  // tag is the name of current tag, e.g. 'a' for tag <a>
+  // name is the name of current attribute, e.g. 'href' for href="#"
+  // isWhiteAttr whether the attribute is in whitelist
+  // If a string is returned, the attribute would be replaced with the string
+  // If return nothing, the default measure would be taken:
+  //   If in whitelist: filter the value using safeAttrValue as described below
+  //   If not in whitelist: handle by onIgnoreTagAttr, as described below
+}
+```
+
+### Customize the handler function for tags not in the whitelist
+
+By specifying the handler function with `onIgnoreTag`:
+
+```javascript
+function onIgnoreTag(tag, html, options) {
+  // Parameters are the same with onTag
+  // If a string is returned, the tag would be replaced with the string
+  // If return nothing, the default measure would be taken (specifies using
+  // escape, as described below)
+}
+```
+
+### Customize the handler function for attributes not in the whitelist
+
+By specifying the handler function with `onIgnoreTagAttr`:
+
+```javascript
+function onIgnoreTagAttr(tag, name, value, isWhiteAttr) {
+  // Parameters are the same with onTagAttr
+  // If a string is returned, the value would be replaced with this string
+  // If return nothing, then keep default (remove the attribute)
+}
+```
+
+### Customize escaping function for HTML
+
+By specifying the handler function with `escapeHtml`. Following is the default
+function **(Modification is not recommended)**:
+
+```javascript
+function escapeHtml(html) {
+  return html.replace(/</g, "&lt;").replace(/>/g, "&gt;");
+}
+```
+
+### Customize escaping function for value of attributes
+
+By specifying the handler function with `safeAttrValue`:
+
+```javascript
+function safeAttrValue(tag, name, value) {
+  // Parameters are the same with onTagAttr (without options)
+  // Return the value as a string
+}
+```
+
+### Customize CSS filter
+
+If you allow the attribute `style`, the value will be processed by [cssfilter](https://github.com/leizongmin/js-css-filter) module. The cssfilter module includes a default css whitelist. You can specify the options for cssfilter module like this:
+
+```javascript
+myxss = new xss.FilterXSS({
+  css: {
+    whiteList: {
+      position: /^fixed|relative$/,
+      top: true,
+      left: true,
+    },
+  },
+});
+html = myxss.process('<script>alert("xss");</script>');
+```
+
+If you don't want to filter out the `style` content, just specify `false` to the `css` option:
+
+```javascript
+myxss = new xss.FilterXSS({
+  css: false,
+});
+```
+
+For more help, please see https://github.com/leizongmin/js-css-filter
+
+### Quick Start
+
+#### Filter out tags not in the whitelist
+
+By using `stripIgnoreTag` parameter:
+
+- `true` filter out tags not in the whitelist
+- `false`: by default: escape the tag using configured `escape` function
+
+Example:
+
+If `stripIgnoreTag = true` is set, the following code:
+
+```html
+code:
+<script>
+  alert(/xss/);
+</script>
+```
+
+would output filtered:
+
+```html
+code:alert(/xss/);
+```
+
+#### Filter out tags and tag bodies not in the whitelist
+
+By using `stripIgnoreTagBody` parameter:
+
+- `false|null|undefined` by default: do nothing
+- `'*'|true`: filter out all tags not in the whitelist
+- `['tag1', 'tag2']`: filter out only specified tags not in the whitelist
+
+Example:
+
+If `stripIgnoreTagBody = ['script']` is set, the following code:
+
+```html
+code:
+<script>
+  alert(/xss/);
+</script>
+```
+
+would output filtered:
+
+```html
+code:
+```
+
+#### Filter out HTML comments
+
+By using `allowCommentTag` parameter:
+
+- `true`: do nothing
+- `false` by default: filter out HTML comments
+
+Example:
+
+If `allowCommentTag = false` is set, the following code:
+
+```html
+code:<!-- something -->
+END
+```
+
+would output filtered:
+
+```html
+code: END
+```
+
+## Examples
+
+### Allow attributes of whitelist tags start with `data-`
+
+```javascript
+var source = '<div a="1" b="2" data-a="3" data-b="4">hello</div>';
+var html = xss(source, {
+  onIgnoreTagAttr: function (tag, name, value, isWhiteAttr) {
+    if (name.substr(0, 5) === "data-") {
+      // escape its value using built-in escapeAttrValue function
+      return name + '="' + xss.escapeAttrValue(value) + '"';
+    }
+  },
+});
+
+console.log("%s\nconvert to:\n%s", source, html);
+```
+
+Result:
+
+```html
+<div a="1" b="2" data-a="3" data-b="4">hello</div>
+convert to:
+<div data-a="3" data-b="4">hello</div>
+```
+
+### Allow tags start with `x-`
+
+```javascript
+var source = "<x><x-1>he<x-2 checked></x-2>wwww</x-1><a>";
+var html = xss(source, {
+  onIgnoreTag: function (tag, html, options) {
+    if (tag.substr(0, 2) === "x-") {
+      // do not filter its attributes
+      return html;
+    }
+  },
+});
+
+console.log("%s\nconvert to:\n%s", source, html);
+```
+
+Result:
+
+```html
+<x
+  ><x-1>he<x-2 checked></x-2>wwww</x-1
+  ><a>
+    convert to: &lt;x&gt;<x-1>he<x-2 checked></x-2>wwww</x-1><a></a></a
+></x>
+```
+
+### Parse images in HTML
+
+```javascript
+var source =
+  '<img src="img1">a<img src="img2">b<img src="img3">c<img src="img4">d';
+var list = [];
+var html = xss(source, {
+  onTagAttr: function (tag, name, value, isWhiteAttr) {
+    if (tag === "img" && name === "src") {
+      // Use the built-in friendlyAttrValue function to escape attribute
+      // values. It supports converting entity tags such as &lt; to printable
+      // characters such as <
+      list.push(xss.friendlyAttrValue(value));
+    }
+    // Return nothing, means keep the default handling measure
+  },
+});
+
+console.log("image list:\n%s", list.join(", "));
+```
+
+Result:
+
+```html
+image list: img1, img2, img3, img4
+```
+
+### Filter out HTML tags (keeps only plain text)
+
+```javascript
+var source = "<strong>hello</strong><script>alert(/xss/);</script>end";
+var html = xss(source, {
+  whiteList: {}, // empty, means filter out all tags
+  stripIgnoreTag: true, // filter out all HTML not in the whitelist
+  stripIgnoreTagBody: ["script"], // the script tag is a special case, we need
+  // to filter out its content
+});
+
+console.log("text: %s", html);
+```
+
+Result:
+
+```html
+text: helloend
+```
+
+## License
+
+```text
+Copyright (c) 2012-2018 Zongmin Lei(雷宗民) <leizongmin@gmail.com>
+http://ucdok.com
+
+The MIT License
+
+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.
+```
diff --git a/node_modules/xss/README.zh.md b/node_modules/xss/README.zh.md
new file mode 100644
index 0000000..3bdb4b8
--- /dev/null
+++ b/node_modules/xss/README.zh.md
@@ -0,0 +1,491 @@
+[![NPM version][npm-image]][npm-url]
+[![Node.js CI](https://github.com/leizongmin/js-xss/actions/workflows/nodejs.yml/badge.svg)](https://github.com/leizongmin/js-xss/actions/workflows/nodejs.yml)
+[![Test coverage][coveralls-image]][coveralls-url]
+[![David deps][david-image]][david-url]
+[![node version][node-image]][node-url]
+[![npm download][download-image]][download-url]
+[![npm license][license-image]][download-url]
+
+[npm-image]: https://img.shields.io/npm/v/xss.svg?style=flat-square
+[npm-url]: https://npmjs.org/package/xss
+[coveralls-image]: https://img.shields.io/coveralls/leizongmin/js-xss.svg?style=flat-square
+[coveralls-url]: https://coveralls.io/r/leizongmin/js-xss?branch=master
+[david-image]: https://img.shields.io/david/leizongmin/js-xss.svg?style=flat-square
+[david-url]: https://david-dm.org/leizongmin/js-xss
+[node-image]: https://img.shields.io/badge/node.js-%3E=_0.10-green.svg?style=flat-square
+[node-url]: http://nodejs.org/download/
+[download-image]: https://img.shields.io/npm/dm/xss.svg?style=flat-square
+[download-url]: https://npmjs.org/package/xss
+[license-image]: https://img.shields.io/npm/l/xss.svg
+
+# 根据白名单过滤 HTML(防止 XSS 攻击)
+
+![xss](https://nodei.co/npm/xss.png?downloads=true&stars=true)
+
+---
+
+`xss`是一个用于对用户输入的内容进行过滤,以避免遭受 XSS 攻击的模块([什么是 XSS 攻击?](http://baike.baidu.com/view/2161269.htm))。主要用于论坛、博客、网上商店等等一些可允许用户录入页面排版、格式控制相关的 HTML 的场景,`xss`模块通过白名单来控制允许的标签及相关的标签属性,另外还提供了一系列的接口以便用户扩展,比其他同类模块更为灵活。
+
+**项目主页:** http://jsxss.com
+
+**在线测试:** http://jsxss.com/zh/try.html
+
+---
+
+## 特性
+
+- 白名单控制允许的 HTML 标签及各标签的属性
+- 通过自定义处理函数,可对任意标签及其属性进行处理
+
+## 参考资料
+
+- [XSS 与字符编码的那些事儿 ---科普文](http://drops.wooyun.org/tips/689)
+- [腾讯实例教程:那些年我们一起学 XSS](http://www.wooyun.org/whitehats/%E5%BF%83%E4%BC%A4%E7%9A%84%E7%98%A6%E5%AD%90)
+- [mXSS 攻击的成因及常见种类](http://drops.wooyun.org/tips/956)
+- [XSS Filter Evasion Cheat Sheet](https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet)
+- [Data URI scheme](http://en.wikipedia.org/wiki/Data_URI_scheme)
+- [XSS with Data URI Scheme](http://hi.baidu.com/badzzzz/item/bdbafe83144619c199255f7b)
+
+## 性能(仅作参考)
+
+- xss 模块:22.53 MB/s
+- validator@0.3.7 模块的 xss()函数:6.9 MB/s
+
+测试代码参考 benchmark 目录
+
+## 安装
+
+### NPM
+
+```bash
+npm install xss
+```
+
+### Bower
+
+```bash
+bower install xss
+```
+
+或者
+
+```bash
+bower install https://github.com/leizongmin/js-xss.git
+```
+
+## 使用方法
+
+### 在 Node.js 中使用
+
+```javascript
+var xss = require("xss");
+var html = xss('<script>alert("xss");</script>');
+console.log(html);
+```
+
+### 在浏览器端使用
+
+Shim 模式(参考文件 `test/test.html`):
+
+```html
+<script src="https://rawgit.com/leizongmin/js-xss/master/dist/xss.js"></script>
+<script>
+  // 使用函数名 filterXSS,用法一样
+  var html = filterXSS('<script>alert("xss");</scr' + "ipt>");
+  alert(html);
+</script>
+```
+
+AMD 模式(参考文件 `test/test_amd.html`):
+
+```html
+<script>
+  require.config({
+    baseUrl: "./",
+    paths: {
+      xss: "https://rawgit.com/leizongmin/js-xss/master/dist/xss.js",
+    },
+    shim: {
+      xss: { exports: "filterXSS" },
+    },
+  });
+  require(["xss"], function (xss) {
+    var html = xss('<script>alert("xss");</scr' + "ipt>");
+    alert(html);
+  });
+</script>
+```
+
+**说明:请勿将 URL https://rawgit.com/leizongmin/js-xss/master/dist/xss.js 用于生产环境。**
+
+### 使用命令行工具来对文件进行 XSS 处理
+
+### 处理文件
+
+可通过内置的 `xss` 命令来对输入的文件进行 XSS 处理。使用方法:
+
+```bash
+xss -i <源文件> -o <目标文件>
+```
+
+例:
+
+```bash
+xss -i origin.html -o target.html
+```
+
+### 在线测试
+
+执行以下命令,可在命令行中输入 HTML 代码,并看到过滤后的代码:
+
+```bash
+xss -t
+```
+
+详细命令行参数说明,请输入 `$ xss -h` 来查看。
+
+## 自定义过滤规则
+
+在调用 `xss()` 函数进行过滤时,可通过第二个参数来设置自定义规则:
+
+```javascript
+options = {}; // 自定义规则
+html = xss('<script>alert("xss");</script>', options);
+```
+
+如果不想每次都传入一个 `options` 参数,可以创建一个 `FilterXSS` 实例(使用这种方法速度更快):
+
+```
+options = {};  // 自定义规则
+myxss = new xss.FilterXSS(options);
+// 以后直接调用 myxss.process() 来处理即可
+html = myxss.process('<script>alert("xss");</script>');
+```
+
+`options` 参数的详细说明见下文。
+
+### 白名单
+
+通过 `whiteList` 来指定,格式为:`{'标签名': ['属性1', '属性2']}`。不在白名单上的标签将被过滤,不在白名单上的属性也会被过滤。以下是示例:
+
+```javascript
+// 只允许a标签,该标签只允许href, title, target这三个属性
+var options = {
+  whiteList: {
+    a: ["href", "title", "target"],
+  },
+};
+// 使用以上配置后,下面的HTML
+// <a href="#" onclick="hello()"><i>大家好</i></a>
+// 将被过滤为
+// <a href="#">大家好</a>
+```
+
+默认白名单参考 `xss.whiteList`。
+
+### 自定义匹配到标签时的处理方法
+
+通过 `onTag` 来指定相应的处理函数。以下是详细说明:
+
+```javascript
+function onTag(tag, html, options) {
+  // tag是当前的标签名称,比如<a>标签,则tag的值是'a'
+  // html是该标签的HTML,比如<a>标签,则html的值是'<a>'
+  // options是一些附加的信息,具体如下:
+  //   isWhite    boolean类型,表示该标签是否在白名单上
+  //   isClosing  boolean类型,表示该标签是否为闭合标签,比如</a>时为true
+  //   position        integer类型,表示当前标签在输出的结果中的起始位置
+  //   sourcePosition  integer类型,表示当前标签在原HTML中的起始位置
+  // 如果返回一个字符串,则当前标签将被替换为该字符串
+  // 如果不返回任何值,则使用默认的处理方法:
+  //   在白名单上:  通过onTagAttr来过滤属性,详见下文
+  //   不在白名单上:通过onIgnoreTag指定,详见下文
+}
+```
+
+### 自定义匹配到标签的属性时的处理方法
+
+通过 `onTagAttr` 来指定相应的处理函数。以下是详细说明:
+
+```javascript
+function onTagAttr(tag, name, value, isWhiteAttr) {
+  // tag是当前的标签名称,比如<a>标签,则tag的值是'a'
+  // name是当前属性的名称,比如href="#",则name的值是'href'
+  // value是当前属性的值,比如href="#",则value的值是'#'
+  // isWhiteAttr是否为白名单上的属性
+  // 如果返回一个字符串,则当前属性值将被替换为该字符串
+  // 如果不返回任何值,则使用默认的处理方法
+  //   在白名单上:  调用safeAttrValue来过滤属性值,并输出该属性,详见下文
+  //   不在白名单上:通过onIgnoreTagAttr指定,详见下文
+}
+```
+
+### 自定义匹配到不在白名单上的标签时的处理方法
+
+通过 `onIgnoreTag` 来指定相应的处理函数。以下是详细说明:
+
+```javascript
+function onIgnoreTag(tag, html, options) {
+  // 参数说明与onTag相同
+  // 如果返回一个字符串,则当前标签将被替换为该字符串
+  // 如果不返回任何值,则使用默认的处理方法(通过escape指定,详见下文)
+}
+```
+
+### 自定义匹配到不在白名单上的属性时的处理方法
+
+通过 `onIgnoreTagAttr` 来指定相应的处理函数。以下是详细说明:
+
+```javascript
+function onIgnoreTagAttr(tag, name, value, isWhiteAttr) {
+  // 参数说明与onTagAttr相同
+  // 如果返回一个字符串,则当前属性值将被替换为该字符串
+  // 如果不返回任何值,则使用默认的处理方法(删除该属)
+}
+```
+
+### 自定义 HTML 转义函数
+
+通过 `escapeHtml` 来指定相应的处理函数。以下是默认代码 **(不建议修改)** :
+
+```javascript
+function escapeHtml(html) {
+  return html.replace(/</g, "&lt;").replace(/>/g, "&gt;");
+}
+```
+
+### 自定义标签属性值的转义函数
+
+通过 `safeAttrValue` 来指定相应的处理函数。以下是详细说明:
+
+```javascript
+function safeAttrValue(tag, name, value) {
+  // 参数说明与onTagAttr相同(没有options参数)
+  // 返回一个字符串表示该属性值
+}
+```
+
+### 自定义 CSS 过滤器
+
+如果配置中允许了标签的 `style` 属性,则它的值会通过[cssfilter](https://github.com/leizongmin/js-css-filter) 模块处理。
+`cssfilter` 模块包含了一个默认的 CSS 白名单,你可以通过以下的方式配置:
+
+```javascript
+myxss = new xss.FilterXSS({
+  css: {
+    whiteList: {
+      position: /^fixed|relative$/,
+      top: true,
+      left: true,
+    },
+  },
+});
+html = myxss.process('<script>alert("xss");</script>');
+```
+
+如果不想使用 CSS 过滤器来处理 `style` 属性的内容,可指定 `css` 选项的值为 `false`:
+
+```javascript
+myxss = new xss.FilterXSS({
+  css: false,
+});
+```
+
+要获取更多的帮助信息可看这里:https://github.com/leizongmin/js-css-filter
+
+### 快捷配置
+
+#### 去掉不在白名单上的标签
+
+通过 `stripIgnoreTag` 来设置:
+
+- `true`:去掉不在白名单上的标签
+- `false`:(默认),使用配置的`escape`函数对该标签进行转义
+
+示例:
+
+当设置 `stripIgnoreTag = true`时,以下代码
+
+```html
+code:
+<script>
+  alert(/xss/);
+</script>
+```
+
+过滤后将输出
+
+```html
+code:alert(/xss/);
+```
+
+#### 去掉不在白名单上的标签及标签体
+
+通过 `stripIgnoreTagBody` 来设置:
+
+- `false|null|undefined`:(默认),不特殊处理
+- `'*'|true`:去掉所有不在白名单上的标签
+- `['tag1', 'tag2']`:仅去掉指定的不在白名单上的标签
+
+示例:
+
+当设置 `stripIgnoreTagBody = ['script']`时,以下代码
+
+```html
+code:
+<script>
+  alert(/xss/);
+</script>
+```
+
+过滤后将输出
+
+```html
+code:
+```
+
+#### 去掉 HTML 备注
+
+通过 `allowCommentTag` 来设置:
+
+- `true`:不处理
+- `false`:(默认),自动去掉 HTML 中的备注
+
+示例:
+
+当设置 `allowCommentTag = false` 时,以下代码
+
+```html
+code:<!-- something -->
+END
+```
+
+过滤后将输出
+
+```html
+code: END
+```
+
+## 应用实例
+
+### 允许标签以 data-开头的属性
+
+```javascript
+var source = '<div a="1" b="2" data-a="3" data-b="4">hello</div>';
+var html = xss(source, {
+  onIgnoreTagAttr: function (tag, name, value, isWhiteAttr) {
+    if (name.substr(0, 5) === "data-") {
+      // 通过内置的escapeAttrValue函数来对属性值进行转义
+      return name + '="' + xss.escapeAttrValue(value) + '"';
+    }
+  },
+});
+
+console.log("%s\nconvert to:\n%s", source, html);
+```
+
+运行结果:
+
+```html
+<div a="1" b="2" data-a="3" data-b="4">hello</div>
+convert to:
+<div data-a="3" data-b="4">hello</div>
+```
+
+### 允许名称以 x-开头的标签
+
+```javascript
+var source = "<x><x-1>he<x-2 checked></x-2>wwww</x-1><a>";
+var html = xss(source, {
+  onIgnoreTag: function (tag, html, options) {
+    if (tag.substr(0, 2) === "x-") {
+      // 不对其属性列表进行过滤
+      return html;
+    }
+  },
+});
+
+console.log("%s\nconvert to:\n%s", source, html);
+```
+
+运行结果:
+
+```html
+<x
+  ><x-1>he<x-2 checked></x-2>wwww</x-1
+  ><a>
+    convert to: &lt;x&gt;<x-1>he<x-2 checked></x-2>wwww</x-1><a></a></a
+></x>
+```
+
+### 分析 HTML 代码中的图片列表
+
+```javascript
+var source =
+  '<img src="img1">a<img src="img2">b<img src="img3">c<img src="img4">d';
+var list = [];
+var html = xss(source, {
+  onTagAttr: function (tag, name, value, isWhiteAttr) {
+    if (tag === "img" && name === "src") {
+      // 使用内置的friendlyAttrValue函数来对属性值进行转义,可将&lt;这类的实体标记转换成打印字符<
+      list.push(xss.friendlyAttrValue(value));
+    }
+    // 不返回任何值,表示还是按照默认的方法处理
+  },
+});
+
+console.log("image list:\n%s", list.join(", "));
+```
+
+运行结果:
+
+```html
+image list: img1, img2, img3, img4
+```
+
+### 去除 HTML 标签(只保留文本内容)
+
+```javascript
+var source = "<strong>hello</strong><script>alert(/xss/);</script>end";
+var html = xss(source, {
+  whiteList: {}, // 白名单为空,表示过滤所有标签
+  stripIgnoreTag: true, // 过滤所有非白名单标签的HTML
+  stripIgnoreTagBody: ["script"], // script标签较特殊,需要过滤标签中间的内容
+});
+
+console.log("text: %s", html);
+```
+
+运行结果:
+
+```html
+text: helloend
+```
+
+## 授权协议
+
+```text
+Copyright (c) 2012-2018 Zongmin Lei(雷宗民) <leizongmin@gmail.com>
+http://ucdok.com
+
+The MIT License
+
+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.
+```
diff --git a/node_modules/xss/bin/xss b/node_modules/xss/bin/xss
new file mode 100644
index 0000000..35e902f
--- /dev/null
+++ b/node_modules/xss/bin/xss
@@ -0,0 +1,67 @@
+#!/usr/bin/env node
+
+/**
+ * 命令行工具
+ *
+ * @author Zongmin Lei<leizongmin@gmail.com>
+ */
+
+var fs = require('fs');
+var path = require('path');
+var program = require('commander');
+var xss = require('../');
+var packageInfo = require('../package.json');
+
+program
+  .version(packageInfo.version)
+  .option('-t, --test', 'active test')
+  .option('-i, --input <input_file>', 'input file name')
+  .option('-o, --output <output_file>', 'output filename')
+  .option('-c, --config <config_file>', 'load custom config')
+  .option('-s, --strip-ignore-tag', 'set stripIgnoreTag=true')
+  .option('-b, --strip-ignore-tag-body', 'set stripIgnoreTagBody=true');
+
+program.on('--help', function () {
+  console.log('  Examples:');
+  console.log('');
+  console.log('    $ xss -t');
+  console.log('    $ xss -i origin.html');
+  console.log('    $ xss -i origin.html -o targer.html');
+  console.log('    $ xss -i origin.html -c config.js');
+  console.log('    $ xss -i origin.html -s');
+  console.log('    $ xss -i origin.html -s -b');
+  console.log('');
+  console.log('  For more details, please see: https://npmjs.org/package/xss')
+});
+
+program.parse(process.argv);
+
+if (program.test) {
+  require('../lib/cli');
+  return;
+}
+
+var config = {};
+if (program.config) {
+  config = require(path.resolve(program.config));
+}
+if (program.input) {
+  var input = fs.readFileSync(program.input, 'utf8');
+} else {
+  program.help();
+}
+
+if (program['strip-ignore-tag']) {
+  config.stripIgnoreTag = true;
+}
+if (program['strip-ignore-tag-body']) {
+  config.stripIgnoreTagBody = true;
+}
+
+var output = xss(input, config);
+
+if (program.output) {
+  fs.writeFileSync(program.output, output);
+} else {
+  console.log(output);
+}
diff --git a/node_modules/xss/dist/test.html b/node_modules/xss/dist/test.html
new file mode 100644
index 0000000..cae361e
--- /dev/null
+++ b/node_modules/xss/dist/test.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<html>
+<head>
+  <title>测试</title>
+  <meta charset="utf8">
+</head>
+<body>
+  <pre id="result"></pre>
+</body>
+</html>
+<script src="xss.js"></script>
+<script>
+var code = '<script>alert("xss");</' + 'script>';
+document.querySelector('#result').innerText = code + '\n被转换成了\n' + filterXSS(code);
+</script>
\ No newline at end of file
diff --git a/node_modules/xss/dist/xss.js b/node_modules/xss/dist/xss.js
new file mode 100644
index 0000000..d18a8d6
--- /dev/null
+++ b/node_modules/xss/dist/xss.js
@@ -0,0 +1,1700 @@
+(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
+/**
+ * default settings
+ *
+ * @author Zongmin Lei<leizongmin@gmail.com>
+ */
+
+var FilterCSS = require("cssfilter").FilterCSS;
+var getDefaultCSSWhiteList = require("cssfilter").getDefaultWhiteList;
+var _ = require("./util");
+
+function getDefaultWhiteList() {
+  return {
+    a: ["target", "href", "title"],
+    abbr: ["title"],
+    address: [],
+    area: ["shape", "coords", "href", "alt"],
+    article: [],
+    aside: [],
+    audio: [
+      "autoplay",
+      "controls",
+      "crossorigin",
+      "loop",
+      "muted",
+      "preload",
+      "src",
+    ],
+    b: [],
+    bdi: ["dir"],
+    bdo: ["dir"],
+    big: [],
+    blockquote: ["cite"],
+    br: [],
+    caption: [],
+    center: [],
+    cite: [],
+    code: [],
+    col: ["align", "valign", "span", "width"],
+    colgroup: ["align", "valign", "span", "width"],
+    dd: [],
+    del: ["datetime"],
+    details: ["open"],
+    div: [],
+    dl: [],
+    dt: [],
+    em: [],
+    figcaption: [],
+    figure: [],
+    font: ["color", "size", "face"],
+    footer: [],
+    h1: [],
+    h2: [],
+    h3: [],
+    h4: [],
+    h5: [],
+    h6: [],
+    header: [],
+    hr: [],
+    i: [],
+    img: ["src", "alt", "title", "width", "height"],
+    ins: ["datetime"],
+    li: [],
+    mark: [],
+    nav: [],
+    ol: [],
+    p: [],
+    pre: [],
+    s: [],
+    section: [],
+    small: [],
+    span: [],
+    sub: [],
+    summary: [],
+    sup: [],
+    strong: [],
+    strike: [],
+    table: ["width", "border", "align", "valign"],
+    tbody: ["align", "valign"],
+    td: ["width", "rowspan", "colspan", "align", "valign"],
+    tfoot: ["align", "valign"],
+    th: ["width", "rowspan", "colspan", "align", "valign"],
+    thead: ["align", "valign"],
+    tr: ["rowspan", "align", "valign"],
+    tt: [],
+    u: [],
+    ul: [],
+    video: [
+      "autoplay",
+      "controls",
+      "crossorigin",
+      "loop",
+      "muted",
+      "playsinline",
+      "poster",
+      "preload",
+      "src",
+      "height",
+      "width",
+    ],
+  };
+}
+
+var defaultCSSFilter = new FilterCSS();
+
+/**
+ * default onTag function
+ *
+ * @param {String} tag
+ * @param {String} html
+ * @param {Object} options
+ * @return {String}
+ */
+function onTag(tag, html, options) {
+  // do nothing
+}
+
+/**
+ * default onIgnoreTag function
+ *
+ * @param {String} tag
+ * @param {String} html
+ * @param {Object} options
+ * @return {String}
+ */
+function onIgnoreTag(tag, html, options) {
+  // do nothing
+}
+
+/**
+ * default onTagAttr function
+ *
+ * @param {String} tag
+ * @param {String} name
+ * @param {String} value
+ * @return {String}
+ */
+function onTagAttr(tag, name, value) {
+  // do nothing
+}
+
+/**
+ * default onIgnoreTagAttr function
+ *
+ * @param {String} tag
+ * @param {String} name
+ * @param {String} value
+ * @return {String}
+ */
+function onIgnoreTagAttr(tag, name, value) {
+  // do nothing
+}
+
+/**
+ * default escapeHtml function
+ *
+ * @param {String} html
+ */
+function escapeHtml(html) {
+  return html.replace(REGEXP_LT, "&lt;").replace(REGEXP_GT, "&gt;");
+}
+
+/**
+ * default safeAttrValue function
+ *
+ * @param {String} tag
+ * @param {String} name
+ * @param {String} value
+ * @param {Object} cssFilter
+ * @return {String}
+ */
+function safeAttrValue(tag, name, value, cssFilter) {
+  // unescape attribute value firstly
+  value = friendlyAttrValue(value);
+
+  if (name === "href" || name === "src") {
+    // filter `href` and `src` attribute
+    // only allow the value that starts with `http://` | `https://` | `mailto:` | `/` | `#`
+    value = _.trim(value);
+    if (value === "#") return "#";
+    if (
+      !(
+        value.substr(0, 7) === "http://" ||
+        value.substr(0, 8) === "https://" ||
+        value.substr(0, 7) === "mailto:" ||
+        value.substr(0, 4) === "tel:" ||
+        value.substr(0, 11) === "data:image/" ||
+        value.substr(0, 6) === "ftp://" ||
+        value.substr(0, 2) === "./" ||
+        value.substr(0, 3) === "../" ||
+        value[0] === "#" ||
+        value[0] === "/"
+      )
+    ) {
+      return "";
+    }
+  } else if (name === "background") {
+    // filter `background` attribute (maybe no use)
+    // `javascript:`
+    REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;
+    if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {
+      return "";
+    }
+  } else if (name === "style") {
+    // `expression()`
+    REGEXP_DEFAULT_ON_TAG_ATTR_7.lastIndex = 0;
+    if (REGEXP_DEFAULT_ON_TAG_ATTR_7.test(value)) {
+      return "";
+    }
+    // `url()`
+    REGEXP_DEFAULT_ON_TAG_ATTR_8.lastIndex = 0;
+    if (REGEXP_DEFAULT_ON_TAG_ATTR_8.test(value)) {
+      REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;
+      if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {
+        return "";
+      }
+    }
+    if (cssFilter !== false) {
+      cssFilter = cssFilter || defaultCSSFilter;
+      value = cssFilter.process(value);
+    }
+  }
+
+  // escape `<>"` before returns
+  value = escapeAttrValue(value);
+  return value;
+}
+
+// RegExp list
+var REGEXP_LT = /</g;
+var REGEXP_GT = />/g;
+var REGEXP_QUOTE = /"/g;
+var REGEXP_QUOTE_2 = /&quot;/g;
+var REGEXP_ATTR_VALUE_1 = /&#([a-zA-Z0-9]*);?/gim;
+var REGEXP_ATTR_VALUE_COLON = /&colon;?/gim;
+var REGEXP_ATTR_VALUE_NEWLINE = /&newline;?/gim;
+// var REGEXP_DEFAULT_ON_TAG_ATTR_3 = /\/\*|\*\//gm;
+var REGEXP_DEFAULT_ON_TAG_ATTR_4 =
+  /((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi;
+// var REGEXP_DEFAULT_ON_TAG_ATTR_5 = /^[\s"'`]*(d\s*a\s*t\s*a\s*)\:/gi;
+// var REGEXP_DEFAULT_ON_TAG_ATTR_6 = /^[\s"'`]*(d\s*a\s*t\s*a\s*)\:\s*image\//gi;
+var REGEXP_DEFAULT_ON_TAG_ATTR_7 =
+  /e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi;
+var REGEXP_DEFAULT_ON_TAG_ATTR_8 = /u\s*r\s*l\s*\(.*/gi;
+
+/**
+ * escape double quote
+ *
+ * @param {String} str
+ * @return {String} str
+ */
+function escapeQuote(str) {
+  return str.replace(REGEXP_QUOTE, "&quot;");
+}
+
+/**
+ * unescape double quote
+ *
+ * @param {String} str
+ * @return {String} str
+ */
+function unescapeQuote(str) {
+  return str.replace(REGEXP_QUOTE_2, '"');
+}
+
+/**
+ * escape html entities
+ *
+ * @param {String} str
+ * @return {String}
+ */
+function escapeHtmlEntities(str) {
+  return str.replace(REGEXP_ATTR_VALUE_1, function replaceUnicode(str, code) {
+    return code[0] === "x" || code[0] === "X"
+      ? String.fromCharCode(parseInt(code.substr(1), 16))
+      : String.fromCharCode(parseInt(code, 10));
+  });
+}
+
+/**
+ * escape html5 new danger entities
+ *
+ * @param {String} str
+ * @return {String}
+ */
+function escapeDangerHtml5Entities(str) {
+  return str
+    .replace(REGEXP_ATTR_VALUE_COLON, ":")
+    .replace(REGEXP_ATTR_VALUE_NEWLINE, " ");
+}
+
+/**
+ * clear nonprintable characters
+ *
+ * @param {String} str
+ * @return {String}
+ */
+function clearNonPrintableCharacter(str) {
+  var str2 = "";
+  for (var i = 0, len = str.length; i < len; i++) {
+    str2 += str.charCodeAt(i) < 32 ? " " : str.charAt(i);
+  }
+  return _.trim(str2);
+}
+
+/**
+ * get friendly attribute value
+ *
+ * @param {String} str
+ * @return {String}
+ */
+function friendlyAttrValue(str) {
+  str = unescapeQuote(str);
+  str = escapeHtmlEntities(str);
+  str = escapeDangerHtml5Entities(str);
+  str = clearNonPrintableCharacter(str);
+  return str;
+}
+
+/**
+ * unescape attribute value
+ *
+ * @param {String} str
+ * @return {String}
+ */
+function escapeAttrValue(str) {
+  str = escapeQuote(str);
+  str = escapeHtml(str);
+  return str;
+}
+
+/**
+ * `onIgnoreTag` function for removing all the tags that are not in whitelist
+ */
+function onIgnoreTagStripAll() {
+  return "";
+}
+
+/**
+ * remove tag body
+ * specify a `tags` list, if the tag is not in the `tags` list then process by the specify function (optional)
+ *
+ * @param {array} tags
+ * @param {function} next
+ */
+function StripTagBody(tags, next) {
+  if (typeof next !== "function") {
+    next = function () {};
+  }
+
+  var isRemoveAllTag = !Array.isArray(tags);
+  function isRemoveTag(tag) {
+    if (isRemoveAllTag) return true;
+    return _.indexOf(tags, tag) !== -1;
+  }
+
+  var removeList = [];
+  var posStart = false;
+
+  return {
+    onIgnoreTag: function (tag, html, options) {
+      if (isRemoveTag(tag)) {
+        if (options.isClosing) {
+          var ret = "[/removed]";
+          var end = options.position + ret.length;
+          removeList.push([
+            posStart !== false ? posStart : options.position,
+            end,
+          ]);
+          posStart = false;
+          return ret;
+        } else {
+          if (!posStart) {
+            posStart = options.position;
+          }
+          return "[removed]";
+        }
+      } else {
+        return next(tag, html, options);
+      }
+    },
+    remove: function (html) {
+      var rethtml = "";
+      var lastPos = 0;
+      _.forEach(removeList, function (pos) {
+        rethtml += html.slice(lastPos, pos[0]);
+        lastPos = pos[1];
+      });
+      rethtml += html.slice(lastPos);
+      return rethtml;
+    },
+  };
+}
+
+/**
+ * remove html comments
+ *
+ * @param {String} html
+ * @return {String}
+ */
+function stripCommentTag(html) {
+  var retHtml = "";
+  var lastPos = 0;
+  while (lastPos < html.length) {
+    var i = html.indexOf("<!--", lastPos);
+    if (i === -1) {
+      retHtml += html.slice(lastPos);
+      break;
+    }
+    retHtml += html.slice(lastPos, i);
+    var j = html.indexOf("-->", i);
+    if (j === -1) {
+      break;
+    }
+    lastPos = j + 3;
+  }
+  return retHtml;
+}
+
+/**
+ * remove invisible characters
+ *
+ * @param {String} html
+ * @return {String}
+ */
+function stripBlankChar(html) {
+  var chars = html.split("");
+  chars = chars.filter(function (char) {
+    var c = char.charCodeAt(0);
+    if (c === 127) return false;
+    if (c <= 31) {
+      if (c === 10 || c === 13) return true;
+      return false;
+    }
+    return true;
+  });
+  return chars.join("");
+}
+
+exports.whiteList = getDefaultWhiteList();
+exports.getDefaultWhiteList = getDefaultWhiteList;
+exports.onTag = onTag;
+exports.onIgnoreTag = onIgnoreTag;
+exports.onTagAttr = onTagAttr;
+exports.onIgnoreTagAttr = onIgnoreTagAttr;
+exports.safeAttrValue = safeAttrValue;
+exports.escapeHtml = escapeHtml;
+exports.escapeQuote = escapeQuote;
+exports.unescapeQuote = unescapeQuote;
+exports.escapeHtmlEntities = escapeHtmlEntities;
+exports.escapeDangerHtml5Entities = escapeDangerHtml5Entities;
+exports.clearNonPrintableCharacter = clearNonPrintableCharacter;
+exports.friendlyAttrValue = friendlyAttrValue;
+exports.escapeAttrValue = escapeAttrValue;
+exports.onIgnoreTagStripAll = onIgnoreTagStripAll;
+exports.StripTagBody = StripTagBody;
+exports.stripCommentTag = stripCommentTag;
+exports.stripBlankChar = stripBlankChar;
+exports.cssFilter = defaultCSSFilter;
+exports.getDefaultCSSWhiteList = getDefaultCSSWhiteList;
+
+},{"./util":4,"cssfilter":8}],2:[function(require,module,exports){
+/**
+ * xss
+ *
+ * @author Zongmin Lei<leizongmin@gmail.com>
+ */
+
+var DEFAULT = require("./default");
+var parser = require("./parser");
+var FilterXSS = require("./xss");
+
+/**
+ * filter xss function
+ *
+ * @param {String} html
+ * @param {Object} options { whiteList, onTag, onTagAttr, onIgnoreTag, onIgnoreTagAttr, safeAttrValue, escapeHtml }
+ * @return {String}
+ */
+function filterXSS(html, options) {
+  var xss = new FilterXSS(options);
+  return xss.process(html);
+}
+
+exports = module.exports = filterXSS;
+exports.filterXSS = filterXSS;
+exports.FilterXSS = FilterXSS;
+
+(function () {
+  for (var i in DEFAULT) {
+    exports[i] = DEFAULT[i];
+  }
+  for (var j in parser) {
+    exports[j] = parser[j];
+  }
+})();
+
+// using `xss` on the browser, output `filterXSS` to the globals
+if (typeof window !== "undefined") {
+  window.filterXSS = module.exports;
+}
+
+// using `xss` on the WebWorker, output `filterXSS` to the globals
+function isWorkerEnv() {
+  return (
+    typeof self !== "undefined" &&
+    typeof DedicatedWorkerGlobalScope !== "undefined" &&
+    self instanceof DedicatedWorkerGlobalScope
+  );
+}
+if (isWorkerEnv()) {
+  self.filterXSS = module.exports;
+}
+
+},{"./default":1,"./parser":3,"./xss":5}],3:[function(require,module,exports){
+/**
+ * Simple HTML Parser
+ *
+ * @author Zongmin Lei<leizongmin@gmail.com>
+ */
+
+var _ = require("./util");
+
+/**
+ * get tag name
+ *
+ * @param {String} html e.g. '<a hef="#">'
+ * @return {String}
+ */
+function getTagName(html) {
+  var i = _.spaceIndex(html);
+  var tagName;
+  if (i === -1) {
+    tagName = html.slice(1, -1);
+  } else {
+    tagName = html.slice(1, i + 1);
+  }
+  tagName = _.trim(tagName).toLowerCase();
+  if (tagName.slice(0, 1) === "/") tagName = tagName.slice(1);
+  if (tagName.slice(-1) === "/") tagName = tagName.slice(0, -1);
+  return tagName;
+}
+
+/**
+ * is close tag?
+ *
+ * @param {String} html 如:'<a hef="#">'
+ * @return {Boolean}
+ */
+function isClosing(html) {
+  return html.slice(0, 2) === "</";
+}
+
+/**
+ * parse input html and returns processed html
+ *
+ * @param {String} html
+ * @param {Function} onTag e.g. function (sourcePosition, position, tag, html, isClosing)
+ * @param {Function} escapeHtml
+ * @return {String}
+ */
+function parseTag(html, onTag, escapeHtml) {
+  "use strict";
+
+  var rethtml = "";
+  var lastPos = 0;
+  var tagStart = false;
+  var quoteStart = false;
+  var currentPos = 0;
+  var len = html.length;
+  var currentTagName = "";
+  var currentHtml = "";
+
+  chariterator: for (currentPos = 0; currentPos < len; currentPos++) {
+    var c = html.charAt(currentPos);
+    if (tagStart === false) {
+      if (c === "<") {
+        tagStart = currentPos;
+        continue;
+      }
+    } else {
+      if (quoteStart === false) {
+        if (c === "<") {
+          rethtml += escapeHtml(html.slice(lastPos, currentPos));
+          tagStart = currentPos;
+          lastPos = currentPos;
+          continue;
+        }
+        if (c === ">" || currentPos === len - 1) {
+          rethtml += escapeHtml(html.slice(lastPos, tagStart));
+          currentHtml = html.slice(tagStart, currentPos + 1);
+          currentTagName = getTagName(currentHtml);
+          rethtml += onTag(
+            tagStart,
+            rethtml.length,
+            currentTagName,
+            currentHtml,
+            isClosing(currentHtml)
+          );
+          lastPos = currentPos + 1;
+          tagStart = false;
+          continue;
+        }
+        if (c === '"' || c === "'") {
+          var i = 1;
+          var ic = html.charAt(currentPos - i);
+
+          while (ic.trim() === "" || ic === "=") {
+            if (ic === "=") {
+              quoteStart = c;
+              continue chariterator;
+            }
+            ic = html.charAt(currentPos - ++i);
+          }
+        }
+      } else {
+        if (c === quoteStart) {
+          quoteStart = false;
+          continue;
+        }
+      }
+    }
+  }
+  if (lastPos < len) {
+    rethtml += escapeHtml(html.substr(lastPos));
+  }
+
+  return rethtml;
+}
+
+var REGEXP_ILLEGAL_ATTR_NAME = /[^a-zA-Z0-9\\_:.-]/gim;
+
+/**
+ * parse input attributes and returns processed attributes
+ *
+ * @param {String} html e.g. `href="#" target="_blank"`
+ * @param {Function} onAttr e.g. `function (name, value)`
+ * @return {String}
+ */
+function parseAttr(html, onAttr) {
+  "use strict";
+
+  var lastPos = 0;
+  var lastMarkPos = 0;
+  var retAttrs = [];
+  var tmpName = false;
+  var len = html.length;
+
+  function addAttr(name, value) {
+    name = _.trim(name);
+    name = name.replace(REGEXP_ILLEGAL_ATTR_NAME, "").toLowerCase();
+    if (name.length < 1) return;
+    var ret = onAttr(name, value || "");
+    if (ret) retAttrs.push(ret);
+  }
+
+  // 逐个分析字符
+  for (var i = 0; i < len; i++) {
+    var c = html.charAt(i);
+    var v, j;
+    if (tmpName === false && c === "=") {
+      tmpName = html.slice(lastPos, i);
+      lastPos = i + 1;
+      lastMarkPos = html.charAt(lastPos) === '"' || html.charAt(lastPos) === "'" ? lastPos : findNextQuotationMark(html, i + 1);
+      continue;
+    }
+    if (tmpName !== false) {
+      if (
+        i === lastMarkPos
+      ) {
+        j = html.indexOf(c, i + 1);
+        if (j === -1) {
+          break;
+        } else {
+          v = _.trim(html.slice(lastMarkPos + 1, j));
+          addAttr(tmpName, v);
+          tmpName = false;
+          i = j;
+          lastPos = i + 1;
+          continue;
+        }
+      }
+    }
+    if (/\s|\n|\t/.test(c)) {
+      html = html.replace(/\s|\n|\t/g, " ");
+      if (tmpName === false) {
+        j = findNextEqual(html, i);
+        if (j === -1) {
+          v = _.trim(html.slice(lastPos, i));
+          addAttr(v);
+          tmpName = false;
+          lastPos = i + 1;
+          continue;
+        } else {
+          i = j - 1;
+          continue;
+        }
+      } else {
+        j = findBeforeEqual(html, i - 1);
+        if (j === -1) {
+          v = _.trim(html.slice(lastPos, i));
+          v = stripQuoteWrap(v);
+          addAttr(tmpName, v);
+          tmpName = false;
+          lastPos = i + 1;
+          continue;
+        } else {
+          continue;
+        }
+      }
+    }
+  }
+
+  if (lastPos < html.length) {
+    if (tmpName === false) {
+      addAttr(html.slice(lastPos));
+    } else {
+      addAttr(tmpName, stripQuoteWrap(_.trim(html.slice(lastPos))));
+    }
+  }
+
+  return _.trim(retAttrs.join(" "));
+}
+
+function findNextEqual(str, i) {
+  for (; i < str.length; i++) {
+    var c = str[i];
+    if (c === " ") continue;
+    if (c === "=") return i;
+    return -1;
+  }
+}
+
+function findNextQuotationMark(str, i) {
+  for (; i < str.length; i++) {
+    var c = str[i];
+    if (c === " ") continue;
+    if (c === "'" || c === '"') return i;
+    return -1;
+  }
+}
+
+function findBeforeEqual(str, i) {
+  for (; i > 0; i--) {
+    var c = str[i];
+    if (c === " ") continue;
+    if (c === "=") return i;
+    return -1;
+  }
+}
+
+function isQuoteWrapString(text) {
+  if (
+    (text[0] === '"' && text[text.length - 1] === '"') ||
+    (text[0] === "'" && text[text.length - 1] === "'")
+  ) {
+    return true;
+  } else {
+    return false;
+  }
+}
+
+function stripQuoteWrap(text) {
+  if (isQuoteWrapString(text)) {
+    return text.substr(1, text.length - 2);
+  } else {
+    return text;
+  }
+}
+
+exports.parseTag = parseTag;
+exports.parseAttr = parseAttr;
+
+},{"./util":4}],4:[function(require,module,exports){
+module.exports = {
+  indexOf: function (arr, item) {
+    var i, j;
+    if (Array.prototype.indexOf) {
+      return arr.indexOf(item);
+    }
+    for (i = 0, j = arr.length; i < j; i++) {
+      if (arr[i] === item) {
+        return i;
+      }
+    }
+    return -1;
+  },
+  forEach: function (arr, fn, scope) {
+    var i, j;
+    if (Array.prototype.forEach) {
+      return arr.forEach(fn, scope);
+    }
+    for (i = 0, j = arr.length; i < j; i++) {
+      fn.call(scope, arr[i], i, arr);
+    }
+  },
+  trim: function (str) {
+    if (String.prototype.trim) {
+      return str.trim();
+    }
+    return str.replace(/(^\s*)|(\s*$)/g, "");
+  },
+  spaceIndex: function (str) {
+    var reg = /\s|\n|\t/;
+    var match = reg.exec(str);
+    return match ? match.index : -1;
+  },
+};
+
+},{}],5:[function(require,module,exports){
+/**
+ * filter xss
+ *
+ * @author Zongmin Lei<leizongmin@gmail.com>
+ */
+
+var FilterCSS = require("cssfilter").FilterCSS;
+var DEFAULT = require("./default");
+var parser = require("./parser");
+var parseTag = parser.parseTag;
+var parseAttr = parser.parseAttr;
+var _ = require("./util");
+
+/**
+ * returns `true` if the input value is `undefined` or `null`
+ *
+ * @param {Object} obj
+ * @return {Boolean}
+ */
+function isNull(obj) {
+  return obj === undefined || obj === null;
+}
+
+/**
+ * get attributes for a tag
+ *
+ * @param {String} html
+ * @return {Object}
+ *   - {String} html
+ *   - {Boolean} closing
+ */
+function getAttrs(html) {
+  var i = _.spaceIndex(html);
+  if (i === -1) {
+    return {
+      html: "",
+      closing: html[html.length - 2] === "/",
+    };
+  }
+  html = _.trim(html.slice(i + 1, -1));
+  var isClosing = html[html.length - 1] === "/";
+  if (isClosing) html = _.trim(html.slice(0, -1));
+  return {
+    html: html,
+    closing: isClosing,
+  };
+}
+
+/**
+ * shallow copy
+ *
+ * @param {Object} obj
+ * @return {Object}
+ */
+function shallowCopyObject(obj) {
+  var ret = {};
+  for (var i in obj) {
+    ret[i] = obj[i];
+  }
+  return ret;
+}
+
+function keysToLowerCase(obj) {
+  var ret = {};
+  for (var i in obj) {
+    if (Array.isArray(obj[i])) {
+      ret[i.toLowerCase()] = obj[i].map(function (item) {
+        return item.toLowerCase();
+      });
+    } else {
+      ret[i.toLowerCase()] = obj[i];
+    }
+  }
+  return ret;
+}
+
+/**
+ * FilterXSS class
+ *
+ * @param {Object} options
+ *        whiteList (or allowList), onTag, onTagAttr, onIgnoreTag,
+ *        onIgnoreTagAttr, safeAttrValue, escapeHtml
+ *        stripIgnoreTagBody, allowCommentTag, stripBlankChar
+ *        css{whiteList, onAttr, onIgnoreAttr} `css=false` means don't use `cssfilter`
+ */
+function FilterXSS(options) {
+  options = shallowCopyObject(options || {});
+
+  if (options.stripIgnoreTag) {
+    if (options.onIgnoreTag) {
+      console.error(
+        'Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'
+      );
+    }
+    options.onIgnoreTag = DEFAULT.onIgnoreTagStripAll;
+  }
+  if (options.whiteList || options.allowList) {
+    options.whiteList = keysToLowerCase(options.whiteList || options.allowList);
+  } else {
+    options.whiteList = DEFAULT.whiteList;
+  }
+
+  options.onTag = options.onTag || DEFAULT.onTag;
+  options.onTagAttr = options.onTagAttr || DEFAULT.onTagAttr;
+  options.onIgnoreTag = options.onIgnoreTag || DEFAULT.onIgnoreTag;
+  options.onIgnoreTagAttr = options.onIgnoreTagAttr || DEFAULT.onIgnoreTagAttr;
+  options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;
+  options.escapeHtml = options.escapeHtml || DEFAULT.escapeHtml;
+  this.options = options;
+
+  if (options.css === false) {
+    this.cssFilter = false;
+  } else {
+    options.css = options.css || {};
+    this.cssFilter = new FilterCSS(options.css);
+  }
+}
+
+/**
+ * start process and returns result
+ *
+ * @param {String} html
+ * @return {String}
+ */
+FilterXSS.prototype.process = function (html) {
+  // compatible with the input
+  html = html || "";
+  html = html.toString();
+  if (!html) return "";
+
+  var me = this;
+  var options = me.options;
+  var whiteList = options.whiteList;
+  var onTag = options.onTag;
+  var onIgnoreTag = options.onIgnoreTag;
+  var onTagAttr = options.onTagAttr;
+  var onIgnoreTagAttr = options.onIgnoreTagAttr;
+  var safeAttrValue = options.safeAttrValue;
+  var escapeHtml = options.escapeHtml;
+  var cssFilter = me.cssFilter;
+
+  // remove invisible characters
+  if (options.stripBlankChar) {
+    html = DEFAULT.stripBlankChar(html);
+  }
+
+  // remove html comments
+  if (!options.allowCommentTag) {
+    html = DEFAULT.stripCommentTag(html);
+  }
+
+  // if enable stripIgnoreTagBody
+  var stripIgnoreTagBody = false;
+  if (options.stripIgnoreTagBody) {
+    stripIgnoreTagBody = DEFAULT.StripTagBody(
+      options.stripIgnoreTagBody,
+      onIgnoreTag
+    );
+    onIgnoreTag = stripIgnoreTagBody.onIgnoreTag;
+  }
+
+  var retHtml = parseTag(
+    html,
+    function (sourcePosition, position, tag, html, isClosing) {
+      var info = {
+        sourcePosition: sourcePosition,
+        position: position,
+        isClosing: isClosing,
+        isWhite: Object.prototype.hasOwnProperty.call(whiteList, tag),
+      };
+
+      // call `onTag()`
+      var ret = onTag(tag, html, info);
+      if (!isNull(ret)) return ret;
+
+      if (info.isWhite) {
+        if (info.isClosing) {
+          return "</" + tag + ">";
+        }
+
+        var attrs = getAttrs(html);
+        var whiteAttrList = whiteList[tag];
+        var attrsHtml = parseAttr(attrs.html, function (name, value) {
+          // call `onTagAttr()`
+          var isWhiteAttr = _.indexOf(whiteAttrList, name) !== -1;
+          var ret = onTagAttr(tag, name, value, isWhiteAttr);
+          if (!isNull(ret)) return ret;
+
+          if (isWhiteAttr) {
+            // call `safeAttrValue()`
+            value = safeAttrValue(tag, name, value, cssFilter);
+            if (value) {
+              return name + '="' + value + '"';
+            } else {
+              return name;
+            }
+          } else {
+            // call `onIgnoreTagAttr()`
+            ret = onIgnoreTagAttr(tag, name, value, isWhiteAttr);
+            if (!isNull(ret)) return ret;
+            return;
+          }
+        });
+
+        // build new tag html
+        html = "<" + tag;
+        if (attrsHtml) html += " " + attrsHtml;
+        if (attrs.closing) html += " /";
+        html += ">";
+        return html;
+      } else {
+        // call `onIgnoreTag()`
+        ret = onIgnoreTag(tag, html, info);
+        if (!isNull(ret)) return ret;
+        return escapeHtml(html);
+      }
+    },
+    escapeHtml
+  );
+
+  // if enable stripIgnoreTagBody
+  if (stripIgnoreTagBody) {
+    retHtml = stripIgnoreTagBody.remove(retHtml);
+  }
+
+  return retHtml;
+};
+
+module.exports = FilterXSS;
+
+},{"./default":1,"./parser":3,"./util":4,"cssfilter":8}],6:[function(require,module,exports){
+/**
+ * cssfilter
+ *
+ * @author 老雷<leizongmin@gmail.com>
+ */
+
+var DEFAULT = require('./default');
+var parseStyle = require('./parser');
+var _ = require('./util');
+
+
+/**
+ * 返回值是否为空
+ *
+ * @param {Object} obj
+ * @return {Boolean}
+ */
+function isNull (obj) {
+  return (obj === undefined || obj === null);
+}
+
+/**
+ * 浅拷贝对象
+ *
+ * @param {Object} obj
+ * @return {Object}
+ */
+function shallowCopyObject (obj) {
+  var ret = {};
+  for (var i in obj) {
+    ret[i] = obj[i];
+  }
+  return ret;
+}
+
+/**
+ * 创建CSS过滤器
+ *
+ * @param {Object} options
+ *   - {Object} whiteList
+ *   - {Function} onAttr
+ *   - {Function} onIgnoreAttr
+ *   - {Function} safeAttrValue
+ */
+function FilterCSS (options) {
+  options = shallowCopyObject(options || {});
+  options.whiteList = options.whiteList || DEFAULT.whiteList;
+  options.onAttr = options.onAttr || DEFAULT.onAttr;
+  options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT.onIgnoreAttr;
+  options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;
+  this.options = options;
+}
+
+FilterCSS.prototype.process = function (css) {
+  // 兼容各种奇葩输入
+  css = css || '';
+  css = css.toString();
+  if (!css) return '';
+
+  var me = this;
+  var options = me.options;
+  var whiteList = options.whiteList;
+  var onAttr = options.onAttr;
+  var onIgnoreAttr = options.onIgnoreAttr;
+  var safeAttrValue = options.safeAttrValue;
+
+  var retCSS = parseStyle(css, function (sourcePosition, position, name, value, source) {
+
+    var check = whiteList[name];
+    var isWhite = false;
+    if (check === true) isWhite = check;
+    else if (typeof check === 'function') isWhite = check(value);
+    else if (check instanceof RegExp) isWhite = check.test(value);
+    if (isWhite !== true) isWhite = false;
+
+    // 如果过滤后 value 为空则直接忽略
+    value = safeAttrValue(name, value);
+    if (!value) return;
+
+    var opts = {
+      position: position,
+      sourcePosition: sourcePosition,
+      source: source,
+      isWhite: isWhite
+    };
+
+    if (isWhite) {
+
+      var ret = onAttr(name, value, opts);
+      if (isNull(ret)) {
+        return name + ':' + value;
+      } else {
+        return ret;
+      }
+
+    } else {
+
+      var ret = onIgnoreAttr(name, value, opts);
+      if (!isNull(ret)) {
+        return ret;
+      }
+
+    }
+  });
+
+  return retCSS;
+};
+
+
+module.exports = FilterCSS;
+
+},{"./default":7,"./parser":9,"./util":10}],7:[function(require,module,exports){
+/**
+ * cssfilter
+ *
+ * @author 老雷<leizongmin@gmail.com>
+ */
+
+function getDefaultWhiteList () {
+  // 白名单值说明:
+  // true: 允许该属性
+  // Function: function (val) { } 返回true表示允许该属性,其他值均表示不允许
+  // RegExp: regexp.test(val) 返回true表示允许该属性,其他值均表示不允许
+  // 除上面列出的值外均表示不允许
+  var whiteList = {};
+
+  whiteList['align-content'] = false; // default: auto
+  whiteList['align-items'] = false; // default: auto
+  whiteList['align-self'] = false; // default: auto
+  whiteList['alignment-adjust'] = false; // default: auto
+  whiteList['alignment-baseline'] = false; // default: baseline
+  whiteList['all'] = false; // default: depending on individual properties
+  whiteList['anchor-point'] = false; // default: none
+  whiteList['animation'] = false; // default: depending on individual properties
+  whiteList['animation-delay'] = false; // default: 0
+  whiteList['animation-direction'] = false; // default: normal
+  whiteList['animation-duration'] = false; // default: 0
+  whiteList['animation-fill-mode'] = false; // default: none
+  whiteList['animation-iteration-count'] = false; // default: 1
+  whiteList['animation-name'] = false; // default: none
+  whiteList['animation-play-state'] = false; // default: running
+  whiteList['animation-timing-function'] = false; // default: ease
+  whiteList['azimuth'] = false; // default: center
+  whiteList['backface-visibility'] = false; // default: visible
+  whiteList['background'] = true; // default: depending on individual properties
+  whiteList['background-attachment'] = true; // default: scroll
+  whiteList['background-clip'] = true; // default: border-box
+  whiteList['background-color'] = true; // default: transparent
+  whiteList['background-image'] = true; // default: none
+  whiteList['background-origin'] = true; // default: padding-box
+  whiteList['background-position'] = true; // default: 0% 0%
+  whiteList['background-repeat'] = true; // default: repeat
+  whiteList['background-size'] = true; // default: auto
+  whiteList['baseline-shift'] = false; // default: baseline
+  whiteList['binding'] = false; // default: none
+  whiteList['bleed'] = false; // default: 6pt
+  whiteList['bookmark-label'] = false; // default: content()
+  whiteList['bookmark-level'] = false; // default: none
+  whiteList['bookmark-state'] = false; // default: open
+  whiteList['border'] = true; // default: depending on individual properties
+  whiteList['border-bottom'] = true; // default: depending on individual properties
+  whiteList['border-bottom-color'] = true; // default: current color
+  whiteList['border-bottom-left-radius'] = true; // default: 0
+  whiteList['border-bottom-right-radius'] = true; // default: 0
+  whiteList['border-bottom-style'] = true; // default: none
+  whiteList['border-bottom-width'] = true; // default: medium
+  whiteList['border-collapse'] = true; // default: separate
+  whiteList['border-color'] = true; // default: depending on individual properties
+  whiteList['border-image'] = true; // default: none
+  whiteList['border-image-outset'] = true; // default: 0
+  whiteList['border-image-repeat'] = true; // default: stretch
+  whiteList['border-image-slice'] = true; // default: 100%
+  whiteList['border-image-source'] = true; // default: none
+  whiteList['border-image-width'] = true; // default: 1
+  whiteList['border-left'] = true; // default: depending on individual properties
+  whiteList['border-left-color'] = true; // default: current color
+  whiteList['border-left-style'] = true; // default: none
+  whiteList['border-left-width'] = true; // default: medium
+  whiteList['border-radius'] = true; // default: 0
+  whiteList['border-right'] = true; // default: depending on individual properties
+  whiteList['border-right-color'] = true; // default: current color
+  whiteList['border-right-style'] = true; // default: none
+  whiteList['border-right-width'] = true; // default: medium
+  whiteList['border-spacing'] = true; // default: 0
+  whiteList['border-style'] = true; // default: depending on individual properties
+  whiteList['border-top'] = true; // default: depending on individual properties
+  whiteList['border-top-color'] = true; // default: current color
+  whiteList['border-top-left-radius'] = true; // default: 0
+  whiteList['border-top-right-radius'] = true; // default: 0
+  whiteList['border-top-style'] = true; // default: none
+  whiteList['border-top-width'] = true; // default: medium
+  whiteList['border-width'] = true; // default: depending on individual properties
+  whiteList['bottom'] = false; // default: auto
+  whiteList['box-decoration-break'] = true; // default: slice
+  whiteList['box-shadow'] = true; // default: none
+  whiteList['box-sizing'] = true; // default: content-box
+  whiteList['box-snap'] = true; // default: none
+  whiteList['box-suppress'] = true; // default: show
+  whiteList['break-after'] = true; // default: auto
+  whiteList['break-before'] = true; // default: auto
+  whiteList['break-inside'] = true; // default: auto
+  whiteList['caption-side'] = false; // default: top
+  whiteList['chains'] = false; // default: none
+  whiteList['clear'] = true; // default: none
+  whiteList['clip'] = false; // default: auto
+  whiteList['clip-path'] = false; // default: none
+  whiteList['clip-rule'] = false; // default: nonzero
+  whiteList['color'] = true; // default: implementation dependent
+  whiteList['color-interpolation-filters'] = true; // default: auto
+  whiteList['column-count'] = false; // default: auto
+  whiteList['column-fill'] = false; // default: balance
+  whiteList['column-gap'] = false; // default: normal
+  whiteList['column-rule'] = false; // default: depending on individual properties
+  whiteList['column-rule-color'] = false; // default: current color
+  whiteList['column-rule-style'] = false; // default: medium
+  whiteList['column-rule-width'] = false; // default: medium
+  whiteList['column-span'] = false; // default: none
+  whiteList['column-width'] = false; // default: auto
+  whiteList['columns'] = false; // default: depending on individual properties
+  whiteList['contain'] = false; // default: none
+  whiteList['content'] = false; // default: normal
+  whiteList['counter-increment'] = false; // default: none
+  whiteList['counter-reset'] = false; // default: none
+  whiteList['counter-set'] = false; // default: none
+  whiteList['crop'] = false; // default: auto
+  whiteList['cue'] = false; // default: depending on individual properties
+  whiteList['cue-after'] = false; // default: none
+  whiteList['cue-before'] = false; // default: none
+  whiteList['cursor'] = false; // default: auto
+  whiteList['direction'] = false; // default: ltr
+  whiteList['display'] = true; // default: depending on individual properties
+  whiteList['display-inside'] = true; // default: auto
+  whiteList['display-list'] = true; // default: none
+  whiteList['display-outside'] = true; // default: inline-level
+  whiteList['dominant-baseline'] = false; // default: auto
+  whiteList['elevation'] = false; // default: level
+  whiteList['empty-cells'] = false; // default: show
+  whiteList['filter'] = false; // default: none
+  whiteList['flex'] = false; // default: depending on individual properties
+  whiteList['flex-basis'] = false; // default: auto
+  whiteList['flex-direction'] = false; // default: row
+  whiteList['flex-flow'] = false; // default: depending on individual properties
+  whiteList['flex-grow'] = false; // default: 0
+  whiteList['flex-shrink'] = false; // default: 1
+  whiteList['flex-wrap'] = false; // default: nowrap
+  whiteList['float'] = false; // default: none
+  whiteList['float-offset'] = false; // default: 0 0
+  whiteList['flood-color'] = false; // default: black
+  whiteList['flood-opacity'] = false; // default: 1
+  whiteList['flow-from'] = false; // default: none
+  whiteList['flow-into'] = false; // default: none
+  whiteList['font'] = true; // default: depending on individual properties
+  whiteList['font-family'] = true; // default: implementation dependent
+  whiteList['font-feature-settings'] = true; // default: normal
+  whiteList['font-kerning'] = true; // default: auto
+  whiteList['font-language-override'] = true; // default: normal
+  whiteList['font-size'] = true; // default: medium
+  whiteList['font-size-adjust'] = true; // default: none
+  whiteList['font-stretch'] = true; // default: normal
+  whiteList['font-style'] = true; // default: normal
+  whiteList['font-synthesis'] = true; // default: weight style
+  whiteList['font-variant'] = true; // default: normal
+  whiteList['font-variant-alternates'] = true; // default: normal
+  whiteList['font-variant-caps'] = true; // default: normal
+  whiteList['font-variant-east-asian'] = true; // default: normal
+  whiteList['font-variant-ligatures'] = true; // default: normal
+  whiteList['font-variant-numeric'] = true; // default: normal
+  whiteList['font-variant-position'] = true; // default: normal
+  whiteList['font-weight'] = true; // default: normal
+  whiteList['grid'] = false; // default: depending on individual properties
+  whiteList['grid-area'] = false; // default: depending on individual properties
+  whiteList['grid-auto-columns'] = false; // default: auto
+  whiteList['grid-auto-flow'] = false; // default: none
+  whiteList['grid-auto-rows'] = false; // default: auto
+  whiteList['grid-column'] = false; // default: depending on individual properties
+  whiteList['grid-column-end'] = false; // default: auto
+  whiteList['grid-column-start'] = false; // default: auto
+  whiteList['grid-row'] = false; // default: depending on individual properties
+  whiteList['grid-row-end'] = false; // default: auto
+  whiteList['grid-row-start'] = false; // default: auto
+  whiteList['grid-template'] = false; // default: depending on individual properties
+  whiteList['grid-template-areas'] = false; // default: none
+  whiteList['grid-template-columns'] = false; // default: none
+  whiteList['grid-template-rows'] = false; // default: none
+  whiteList['hanging-punctuation'] = false; // default: none
+  whiteList['height'] = true; // default: auto
+  whiteList['hyphens'] = false; // default: manual
+  whiteList['icon'] = false; // default: auto
+  whiteList['image-orientation'] = false; // default: auto
+  whiteList['image-resolution'] = false; // default: normal
+  whiteList['ime-mode'] = false; // default: auto
+  whiteList['initial-letters'] = false; // default: normal
+  whiteList['inline-box-align'] = false; // default: last
+  whiteList['justify-content'] = false; // default: auto
+  whiteList['justify-items'] = false; // default: auto
+  whiteList['justify-self'] = false; // default: auto
+  whiteList['left'] = false; // default: auto
+  whiteList['letter-spacing'] = true; // default: normal
+  whiteList['lighting-color'] = true; // default: white
+  whiteList['line-box-contain'] = false; // default: block inline replaced
+  whiteList['line-break'] = false; // default: auto
+  whiteList['line-grid'] = false; // default: match-parent
+  whiteList['line-height'] = false; // default: normal
+  whiteList['line-snap'] = false; // default: none
+  whiteList['line-stacking'] = false; // default: depending on individual properties
+  whiteList['line-stacking-ruby'] = false; // default: exclude-ruby
+  whiteList['line-stacking-shift'] = false; // default: consider-shifts
+  whiteList['line-stacking-strategy'] = false; // default: inline-line-height
+  whiteList['list-style'] = true; // default: depending on individual properties
+  whiteList['list-style-image'] = true; // default: none
+  whiteList['list-style-position'] = true; // default: outside
+  whiteList['list-style-type'] = true; // default: disc
+  whiteList['margin'] = true; // default: depending on individual properties
+  whiteList['margin-bottom'] = true; // default: 0
+  whiteList['margin-left'] = true; // default: 0
+  whiteList['margin-right'] = true; // default: 0
+  whiteList['margin-top'] = true; // default: 0
+  whiteList['marker-offset'] = false; // default: auto
+  whiteList['marker-side'] = false; // default: list-item
+  whiteList['marks'] = false; // default: none
+  whiteList['mask'] = false; // default: border-box
+  whiteList['mask-box'] = false; // default: see individual properties
+  whiteList['mask-box-outset'] = false; // default: 0
+  whiteList['mask-box-repeat'] = false; // default: stretch
+  whiteList['mask-box-slice'] = false; // default: 0 fill
+  whiteList['mask-box-source'] = false; // default: none
+  whiteList['mask-box-width'] = false; // default: auto
+  whiteList['mask-clip'] = false; // default: border-box
+  whiteList['mask-image'] = false; // default: none
+  whiteList['mask-origin'] = false; // default: border-box
+  whiteList['mask-position'] = false; // default: center
+  whiteList['mask-repeat'] = false; // default: no-repeat
+  whiteList['mask-size'] = false; // default: border-box
+  whiteList['mask-source-type'] = false; // default: auto
+  whiteList['mask-type'] = false; // default: luminance
+  whiteList['max-height'] = true; // default: none
+  whiteList['max-lines'] = false; // default: none
+  whiteList['max-width'] = true; // default: none
+  whiteList['min-height'] = true; // default: 0
+  whiteList['min-width'] = true; // default: 0
+  whiteList['move-to'] = false; // default: normal
+  whiteList['nav-down'] = false; // default: auto
+  whiteList['nav-index'] = false; // default: auto
+  whiteList['nav-left'] = false; // default: auto
+  whiteList['nav-right'] = false; // default: auto
+  whiteList['nav-up'] = false; // default: auto
+  whiteList['object-fit'] = false; // default: fill
+  whiteList['object-position'] = false; // default: 50% 50%
+  whiteList['opacity'] = false; // default: 1
+  whiteList['order'] = false; // default: 0
+  whiteList['orphans'] = false; // default: 2
+  whiteList['outline'] = false; // default: depending on individual properties
+  whiteList['outline-color'] = false; // default: invert
+  whiteList['outline-offset'] = false; // default: 0
+  whiteList['outline-style'] = false; // default: none
+  whiteList['outline-width'] = false; // default: medium
+  whiteList['overflow'] = false; // default: depending on individual properties
+  whiteList['overflow-wrap'] = false; // default: normal
+  whiteList['overflow-x'] = false; // default: visible
+  whiteList['overflow-y'] = false; // default: visible
+  whiteList['padding'] = true; // default: depending on individual properties
+  whiteList['padding-bottom'] = true; // default: 0
+  whiteList['padding-left'] = true; // default: 0
+  whiteList['padding-right'] = true; // default: 0
+  whiteList['padding-top'] = true; // default: 0
+  whiteList['page'] = false; // default: auto
+  whiteList['page-break-after'] = false; // default: auto
+  whiteList['page-break-before'] = false; // default: auto
+  whiteList['page-break-inside'] = false; // default: auto
+  whiteList['page-policy'] = false; // default: start
+  whiteList['pause'] = false; // default: implementation dependent
+  whiteList['pause-after'] = false; // default: implementation dependent
+  whiteList['pause-before'] = false; // default: implementation dependent
+  whiteList['perspective'] = false; // default: none
+  whiteList['perspective-origin'] = false; // default: 50% 50%
+  whiteList['pitch'] = false; // default: medium
+  whiteList['pitch-range'] = false; // default: 50
+  whiteList['play-during'] = false; // default: auto
+  whiteList['position'] = false; // default: static
+  whiteList['presentation-level'] = false; // default: 0
+  whiteList['quotes'] = false; // default: text
+  whiteList['region-fragment'] = false; // default: auto
+  whiteList['resize'] = false; // default: none
+  whiteList['rest'] = false; // default: depending on individual properties
+  whiteList['rest-after'] = false; // default: none
+  whiteList['rest-before'] = false; // default: none
+  whiteList['richness'] = false; // default: 50
+  whiteList['right'] = false; // default: auto
+  whiteList['rotation'] = false; // default: 0
+  whiteList['rotation-point'] = false; // default: 50% 50%
+  whiteList['ruby-align'] = false; // default: auto
+  whiteList['ruby-merge'] = false; // default: separate
+  whiteList['ruby-position'] = false; // default: before
+  whiteList['shape-image-threshold'] = false; // default: 0.0
+  whiteList['shape-outside'] = false; // default: none
+  whiteList['shape-margin'] = false; // default: 0
+  whiteList['size'] = false; // default: auto
+  whiteList['speak'] = false; // default: auto
+  whiteList['speak-as'] = false; // default: normal
+  whiteList['speak-header'] = false; // default: once
+  whiteList['speak-numeral'] = false; // default: continuous
+  whiteList['speak-punctuation'] = false; // default: none
+  whiteList['speech-rate'] = false; // default: medium
+  whiteList['stress'] = false; // default: 50
+  whiteList['string-set'] = false; // default: none
+  whiteList['tab-size'] = false; // default: 8
+  whiteList['table-layout'] = false; // default: auto
+  whiteList['text-align'] = true; // default: start
+  whiteList['text-align-last'] = true; // default: auto
+  whiteList['text-combine-upright'] = true; // default: none
+  whiteList['text-decoration'] = true; // default: none
+  whiteList['text-decoration-color'] = true; // default: currentColor
+  whiteList['text-decoration-line'] = true; // default: none
+  whiteList['text-decoration-skip'] = true; // default: objects
+  whiteList['text-decoration-style'] = true; // default: solid
+  whiteList['text-emphasis'] = true; // default: depending on individual properties
+  whiteList['text-emphasis-color'] = true; // default: currentColor
+  whiteList['text-emphasis-position'] = true; // default: over right
+  whiteList['text-emphasis-style'] = true; // default: none
+  whiteList['text-height'] = true; // default: auto
+  whiteList['text-indent'] = true; // default: 0
+  whiteList['text-justify'] = true; // default: auto
+  whiteList['text-orientation'] = true; // default: mixed
+  whiteList['text-overflow'] = true; // default: clip
+  whiteList['text-shadow'] = true; // default: none
+  whiteList['text-space-collapse'] = true; // default: collapse
+  whiteList['text-transform'] = true; // default: none
+  whiteList['text-underline-position'] = true; // default: auto
+  whiteList['text-wrap'] = true; // default: normal
+  whiteList['top'] = false; // default: auto
+  whiteList['transform'] = false; // default: none
+  whiteList['transform-origin'] = false; // default: 50% 50% 0
+  whiteList['transform-style'] = false; // default: flat
+  whiteList['transition'] = false; // default: depending on individual properties
+  whiteList['transition-delay'] = false; // default: 0s
+  whiteList['transition-duration'] = false; // default: 0s
+  whiteList['transition-property'] = false; // default: all
+  whiteList['transition-timing-function'] = false; // default: ease
+  whiteList['unicode-bidi'] = false; // default: normal
+  whiteList['vertical-align'] = false; // default: baseline
+  whiteList['visibility'] = false; // default: visible
+  whiteList['voice-balance'] = false; // default: center
+  whiteList['voice-duration'] = false; // default: auto
+  whiteList['voice-family'] = false; // default: implementation dependent
+  whiteList['voice-pitch'] = false; // default: medium
+  whiteList['voice-range'] = false; // default: medium
+  whiteList['voice-rate'] = false; // default: normal
+  whiteList['voice-stress'] = false; // default: normal
+  whiteList['voice-volume'] = false; // default: medium
+  whiteList['volume'] = false; // default: medium
+  whiteList['white-space'] = false; // default: normal
+  whiteList['widows'] = false; // default: 2
+  whiteList['width'] = true; // default: auto
+  whiteList['will-change'] = false; // default: auto
+  whiteList['word-break'] = true; // default: normal
+  whiteList['word-spacing'] = true; // default: normal
+  whiteList['word-wrap'] = true; // default: normal
+  whiteList['wrap-flow'] = false; // default: auto
+  whiteList['wrap-through'] = false; // default: wrap
+  whiteList['writing-mode'] = false; // default: horizontal-tb
+  whiteList['z-index'] = false; // default: auto
+
+  return whiteList;
+}
+
+
+/**
+ * 匹配到白名单上的一个属性时
+ *
+ * @param {String} name
+ * @param {String} value
+ * @param {Object} options
+ * @return {String}
+ */
+function onAttr (name, value, options) {
+  // do nothing
+}
+
+/**
+ * 匹配到不在白名单上的一个属性时
+ *
+ * @param {String} name
+ * @param {String} value
+ * @param {Object} options
+ * @return {String}
+ */
+function onIgnoreAttr (name, value, options) {
+  // do nothing
+}
+
+var REGEXP_URL_JAVASCRIPT = /javascript\s*\:/img;
+
+/**
+ * 过滤属性值
+ *
+ * @param {String} name
+ * @param {String} value
+ * @return {String}
+ */
+function safeAttrValue(name, value) {
+  if (REGEXP_URL_JAVASCRIPT.test(value)) return '';
+  return value;
+}
+
+
+exports.whiteList = getDefaultWhiteList();
+exports.getDefaultWhiteList = getDefaultWhiteList;
+exports.onAttr = onAttr;
+exports.onIgnoreAttr = onIgnoreAttr;
+exports.safeAttrValue = safeAttrValue;
+
+},{}],8:[function(require,module,exports){
+/**
+ * cssfilter
+ *
+ * @author 老雷<leizongmin@gmail.com>
+ */
+
+var DEFAULT = require('./default');
+var FilterCSS = require('./css');
+
+
+/**
+ * XSS过滤
+ *
+ * @param {String} css 要过滤的CSS代码
+ * @param {Object} options 选项:whiteList, onAttr, onIgnoreAttr
+ * @return {String}
+ */
+function filterCSS (html, options) {
+  var xss = new FilterCSS(options);
+  return xss.process(html);
+}
+
+
+// 输出
+exports = module.exports = filterCSS;
+exports.FilterCSS = FilterCSS;
+for (var i in DEFAULT) exports[i] = DEFAULT[i];
+
+// 在浏览器端使用
+if (typeof window !== 'undefined') {
+  window.filterCSS = module.exports;
+}
+
+},{"./css":6,"./default":7}],9:[function(require,module,exports){
+/**
+ * cssfilter
+ *
+ * @author 老雷<leizongmin@gmail.com>
+ */
+
+var _ = require('./util');
+
+
+/**
+ * 解析style
+ *
+ * @param {String} css
+ * @param {Function} onAttr 处理属性的函数
+ *   参数格式: function (sourcePosition, position, name, value, source)
+ * @return {String}
+ */
+function parseStyle (css, onAttr) {
+  css = _.trimRight(css);
+  if (css[css.length - 1] !== ';') css += ';';
+  var cssLength = css.length;
+  var isParenthesisOpen = false;
+  var lastPos = 0;
+  var i = 0;
+  var retCSS = '';
+
+  function addNewAttr () {
+    // 如果没有正常的闭合圆括号,则直接忽略当前属性
+    if (!isParenthesisOpen) {
+      var source = _.trim(css.slice(lastPos, i));
+      var j = source.indexOf(':');
+      if (j !== -1) {
+        var name = _.trim(source.slice(0, j));
+        var value = _.trim(source.slice(j + 1));
+        // 必须有属性名称
+        if (name) {
+          var ret = onAttr(lastPos, retCSS.length, name, value, source);
+          if (ret) retCSS += ret + '; ';
+        }
+      }
+    }
+    lastPos = i + 1;
+  }
+
+  for (; i < cssLength; i++) {
+    var c = css[i];
+    if (c === '/' && css[i + 1] === '*') {
+      // 备注开始
+      var j = css.indexOf('*/', i + 2);
+      // 如果没有正常的备注结束,则后面的部分全部跳过
+      if (j === -1) break;
+      // 直接将当前位置调到备注结尾,并且初始化状态
+      i = j + 1;
+      lastPos = i + 1;
+      isParenthesisOpen = false;
+    } else if (c === '(') {
+      isParenthesisOpen = true;
+    } else if (c === ')') {
+      isParenthesisOpen = false;
+    } else if (c === ';') {
+      if (isParenthesisOpen) {
+        // 在圆括号里面,忽略
+      } else {
+        addNewAttr();
+      }
+    } else if (c === '\n') {
+      addNewAttr();
+    }
+  }
+
+  return _.trim(retCSS);
+}
+
+module.exports = parseStyle;
+
+},{"./util":10}],10:[function(require,module,exports){
+module.exports = {
+  indexOf: function (arr, item) {
+    var i, j;
+    if (Array.prototype.indexOf) {
+      return arr.indexOf(item);
+    }
+    for (i = 0, j = arr.length; i < j; i++) {
+      if (arr[i] === item) {
+        return i;
+      }
+    }
+    return -1;
+  },
+  forEach: function (arr, fn, scope) {
+    var i, j;
+    if (Array.prototype.forEach) {
+      return arr.forEach(fn, scope);
+    }
+    for (i = 0, j = arr.length; i < j; i++) {
+      fn.call(scope, arr[i], i, arr);
+    }
+  },
+  trim: function (str) {
+    if (String.prototype.trim) {
+      return str.trim();
+    }
+    return str.replace(/(^\s*)|(\s*$)/g, '');
+  },
+  trimRight: function (str) {
+    if (String.prototype.trimRight) {
+      return str.trimRight();
+    }
+    return str.replace(/(\s*$)/g, '');
+  }
+};
+
+},{}]},{},[2]);
diff --git a/node_modules/xss/dist/xss.min.js b/node_modules/xss/dist/xss.min.js
new file mode 100644
index 0000000..848bd4e
--- /dev/null
+++ b/node_modules/xss/dist/xss.min.js
@@ -0,0 +1 @@
+(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){var FilterCSS=require("cssfilter").FilterCSS;var getDefaultCSSWhiteList=require("cssfilter").getDefaultWhiteList;var _=require("./util");function getDefaultWhiteList(){return{a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]}}var defaultCSSFilter=new FilterCSS;function onTag(tag,html,options){}function onIgnoreTag(tag,html,options){}function onTagAttr(tag,name,value){}function onIgnoreTagAttr(tag,name,value){}function escapeHtml(html){return html.replace(REGEXP_LT,"&lt;").replace(REGEXP_GT,"&gt;")}function safeAttrValue(tag,name,value,cssFilter){value=friendlyAttrValue(value);if(name==="href"||name==="src"){value=_.trim(value);if(value==="#")return"#";if(!(value.substr(0,7)==="http://"||value.substr(0,8)==="https://"||value.substr(0,7)==="mailto:"||value.substr(0,4)==="tel:"||value.substr(0,11)==="data:image/"||value.substr(0,6)==="ftp://"||value.substr(0,2)==="./"||value.substr(0,3)==="../"||value[0]==="#"||value[0]==="/")){return""}}else if(name==="background"){REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex=0;if(REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)){return""}}else if(name==="style"){REGEXP_DEFAULT_ON_TAG_ATTR_7.lastIndex=0;if(REGEXP_DEFAULT_ON_TAG_ATTR_7.test(value)){return""}REGEXP_DEFAULT_ON_TAG_ATTR_8.lastIndex=0;if(REGEXP_DEFAULT_ON_TAG_ATTR_8.test(value)){REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex=0;if(REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)){return""}}if(cssFilter!==false){cssFilter=cssFilter||defaultCSSFilter;value=cssFilter.process(value)}}value=escapeAttrValue(value);return value}var REGEXP_LT=/</g;var REGEXP_GT=/>/g;var REGEXP_QUOTE=/"/g;var REGEXP_QUOTE_2=/&quot;/g;var REGEXP_ATTR_VALUE_1=/&#([a-zA-Z0-9]*);?/gim;var REGEXP_ATTR_VALUE_COLON=/&colon;?/gim;var REGEXP_ATTR_VALUE_NEWLINE=/&newline;?/gim;var REGEXP_DEFAULT_ON_TAG_ATTR_4=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi;var REGEXP_DEFAULT_ON_TAG_ATTR_7=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi;var REGEXP_DEFAULT_ON_TAG_ATTR_8=/u\s*r\s*l\s*\(.*/gi;function escapeQuote(str){return str.replace(REGEXP_QUOTE,"&quot;")}function unescapeQuote(str){return str.replace(REGEXP_QUOTE_2,'"')}function escapeHtmlEntities(str){return str.replace(REGEXP_ATTR_VALUE_1,function replaceUnicode(str,code){return code[0]==="x"||code[0]==="X"?String.fromCharCode(parseInt(code.substr(1),16)):String.fromCharCode(parseInt(code,10))})}function escapeDangerHtml5Entities(str){return str.replace(REGEXP_ATTR_VALUE_COLON,":").replace(REGEXP_ATTR_VALUE_NEWLINE," ")}function clearNonPrintableCharacter(str){var str2="";for(var i=0,len=str.length;i<len;i++){str2+=str.charCodeAt(i)<32?" ":str.charAt(i)}return _.trim(str2)}function friendlyAttrValue(str){str=unescapeQuote(str);str=escapeHtmlEntities(str);str=escapeDangerHtml5Entities(str);str=clearNonPrintableCharacter(str);return str}function escapeAttrValue(str){str=escapeQuote(str);str=escapeHtml(str);return str}function onIgnoreTagStripAll(){return""}function StripTagBody(tags,next){if(typeof next!=="function"){next=function(){}}var isRemoveAllTag=!Array.isArray(tags);function isRemoveTag(tag){if(isRemoveAllTag)return true;return _.indexOf(tags,tag)!==-1}var removeList=[];var posStart=false;return{onIgnoreTag:function(tag,html,options){if(isRemoveTag(tag)){if(options.isClosing){var ret="[/removed]";var end=options.position+ret.length;removeList.push([posStart!==false?posStart:options.position,end]);posStart=false;return ret}else{if(!posStart){posStart=options.position}return"[removed]"}}else{return next(tag,html,options)}},remove:function(html){var rethtml="";var lastPos=0;_.forEach(removeList,function(pos){rethtml+=html.slice(lastPos,pos[0]);lastPos=pos[1]});rethtml+=html.slice(lastPos);return rethtml}}}function stripCommentTag(html){var retHtml="";var lastPos=0;while(lastPos<html.length){var i=html.indexOf("\x3c!--",lastPos);if(i===-1){retHtml+=html.slice(lastPos);break}retHtml+=html.slice(lastPos,i);var j=html.indexOf("--\x3e",i);if(j===-1){break}lastPos=j+3}return retHtml}function stripBlankChar(html){var chars=html.split("");chars=chars.filter(function(char){var c=char.charCodeAt(0);if(c===127)return false;if(c<=31){if(c===10||c===13)return true;return false}return true});return chars.join("")}exports.whiteList=getDefaultWhiteList();exports.getDefaultWhiteList=getDefaultWhiteList;exports.onTag=onTag;exports.onIgnoreTag=onIgnoreTag;exports.onTagAttr=onTagAttr;exports.onIgnoreTagAttr=onIgnoreTagAttr;exports.safeAttrValue=safeAttrValue;exports.escapeHtml=escapeHtml;exports.escapeQuote=escapeQuote;exports.unescapeQuote=unescapeQuote;exports.escapeHtmlEntities=escapeHtmlEntities;exports.escapeDangerHtml5Entities=escapeDangerHtml5Entities;exports.clearNonPrintableCharacter=clearNonPrintableCharacter;exports.friendlyAttrValue=friendlyAttrValue;exports.escapeAttrValue=escapeAttrValue;exports.onIgnoreTagStripAll=onIgnoreTagStripAll;exports.StripTagBody=StripTagBody;exports.stripCommentTag=stripCommentTag;exports.stripBlankChar=stripBlankChar;exports.cssFilter=defaultCSSFilter;exports.getDefaultCSSWhiteList=getDefaultCSSWhiteList},{"./util":4,cssfilter:8}],2:[function(require,module,exports){var DEFAULT=require("./default");var parser=require("./parser");var FilterXSS=require("./xss");function filterXSS(html,options){var xss=new FilterXSS(options);return xss.process(html)}exports=module.exports=filterXSS;exports.filterXSS=filterXSS;exports.FilterXSS=FilterXSS;(function(){for(var i in DEFAULT){exports[i]=DEFAULT[i]}for(var j in parser){exports[j]=parser[j]}})();if(typeof window!=="undefined"){window.filterXSS=module.exports}function isWorkerEnv(){return typeof self!=="undefined"&&typeof DedicatedWorkerGlobalScope!=="undefined"&&self instanceof DedicatedWorkerGlobalScope}if(isWorkerEnv()){self.filterXSS=module.exports}},{"./default":1,"./parser":3,"./xss":5}],3:[function(require,module,exports){var _=require("./util");function getTagName(html){var i=_.spaceIndex(html);var tagName;if(i===-1){tagName=html.slice(1,-1)}else{tagName=html.slice(1,i+1)}tagName=_.trim(tagName).toLowerCase();if(tagName.slice(0,1)==="/")tagName=tagName.slice(1);if(tagName.slice(-1)==="/")tagName=tagName.slice(0,-1);return tagName}function isClosing(html){return html.slice(0,2)==="</"}function parseTag(html,onTag,escapeHtml){"use strict";var rethtml="";var lastPos=0;var tagStart=false;var quoteStart=false;var currentPos=0;var len=html.length;var currentTagName="";var currentHtml="";chariterator:for(currentPos=0;currentPos<len;currentPos++){var c=html.charAt(currentPos);if(tagStart===false){if(c==="<"){tagStart=currentPos;continue}}else{if(quoteStart===false){if(c==="<"){rethtml+=escapeHtml(html.slice(lastPos,currentPos));tagStart=currentPos;lastPos=currentPos;continue}if(c===">"||currentPos===len-1){rethtml+=escapeHtml(html.slice(lastPos,tagStart));currentHtml=html.slice(tagStart,currentPos+1);currentTagName=getTagName(currentHtml);rethtml+=onTag(tagStart,rethtml.length,currentTagName,currentHtml,isClosing(currentHtml));lastPos=currentPos+1;tagStart=false;continue}if(c==='"'||c==="'"){var i=1;var ic=html.charAt(currentPos-i);while(ic.trim()===""||ic==="="){if(ic==="="){quoteStart=c;continue chariterator}ic=html.charAt(currentPos-++i)}}}else{if(c===quoteStart){quoteStart=false;continue}}}}if(lastPos<len){rethtml+=escapeHtml(html.substr(lastPos))}return rethtml}var REGEXP_ILLEGAL_ATTR_NAME=/[^a-zA-Z0-9\\_:.-]/gim;function parseAttr(html,onAttr){"use strict";var lastPos=0;var lastMarkPos=0;var retAttrs=[];var tmpName=false;var len=html.length;function addAttr(name,value){name=_.trim(name);name=name.replace(REGEXP_ILLEGAL_ATTR_NAME,"").toLowerCase();if(name.length<1)return;var ret=onAttr(name,value||"");if(ret)retAttrs.push(ret)}for(var i=0;i<len;i++){var c=html.charAt(i);var v,j;if(tmpName===false&&c==="="){tmpName=html.slice(lastPos,i);lastPos=i+1;lastMarkPos=html.charAt(lastPos)==='"'||html.charAt(lastPos)==="'"?lastPos:findNextQuotationMark(html,i+1);continue}if(tmpName!==false){if(i===lastMarkPos){j=html.indexOf(c,i+1);if(j===-1){break}else{v=_.trim(html.slice(lastMarkPos+1,j));addAttr(tmpName,v);tmpName=false;i=j;lastPos=i+1;continue}}}if(/\s|\n|\t/.test(c)){html=html.replace(/\s|\n|\t/g," ");if(tmpName===false){j=findNextEqual(html,i);if(j===-1){v=_.trim(html.slice(lastPos,i));addAttr(v);tmpName=false;lastPos=i+1;continue}else{i=j-1;continue}}else{j=findBeforeEqual(html,i-1);if(j===-1){v=_.trim(html.slice(lastPos,i));v=stripQuoteWrap(v);addAttr(tmpName,v);tmpName=false;lastPos=i+1;continue}else{continue}}}}if(lastPos<html.length){if(tmpName===false){addAttr(html.slice(lastPos))}else{addAttr(tmpName,stripQuoteWrap(_.trim(html.slice(lastPos))))}}return _.trim(retAttrs.join(" "))}function findNextEqual(str,i){for(;i<str.length;i++){var c=str[i];if(c===" ")continue;if(c==="=")return i;return-1}}function findNextQuotationMark(str,i){for(;i<str.length;i++){var c=str[i];if(c===" ")continue;if(c==="'"||c==='"')return i;return-1}}function findBeforeEqual(str,i){for(;i>0;i--){var c=str[i];if(c===" ")continue;if(c==="=")return i;return-1}}function isQuoteWrapString(text){if(text[0]==='"'&&text[text.length-1]==='"'||text[0]==="'"&&text[text.length-1]==="'"){return true}else{return false}}function stripQuoteWrap(text){if(isQuoteWrapString(text)){return text.substr(1,text.length-2)}else{return text}}exports.parseTag=parseTag;exports.parseAttr=parseAttr},{"./util":4}],4:[function(require,module,exports){module.exports={indexOf:function(arr,item){var i,j;if(Array.prototype.indexOf){return arr.indexOf(item)}for(i=0,j=arr.length;i<j;i++){if(arr[i]===item){return i}}return-1},forEach:function(arr,fn,scope){var i,j;if(Array.prototype.forEach){return arr.forEach(fn,scope)}for(i=0,j=arr.length;i<j;i++){fn.call(scope,arr[i],i,arr)}},trim:function(str){if(String.prototype.trim){return str.trim()}return str.replace(/(^\s*)|(\s*$)/g,"")},spaceIndex:function(str){var reg=/\s|\n|\t/;var match=reg.exec(str);return match?match.index:-1}}},{}],5:[function(require,module,exports){var FilterCSS=require("cssfilter").FilterCSS;var DEFAULT=require("./default");var parser=require("./parser");var parseTag=parser.parseTag;var parseAttr=parser.parseAttr;var _=require("./util");function isNull(obj){return obj===undefined||obj===null}function getAttrs(html){var i=_.spaceIndex(html);if(i===-1){return{html:"",closing:html[html.length-2]==="/"}}html=_.trim(html.slice(i+1,-1));var isClosing=html[html.length-1]==="/";if(isClosing)html=_.trim(html.slice(0,-1));return{html:html,closing:isClosing}}function shallowCopyObject(obj){var ret={};for(var i in obj){ret[i]=obj[i]}return ret}function keysToLowerCase(obj){var ret={};for(var i in obj){if(Array.isArray(obj[i])){ret[i.toLowerCase()]=obj[i].map(function(item){return item.toLowerCase()})}else{ret[i.toLowerCase()]=obj[i]}}return ret}function FilterXSS(options){options=shallowCopyObject(options||{});if(options.stripIgnoreTag){if(options.onIgnoreTag){console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time')}options.onIgnoreTag=DEFAULT.onIgnoreTagStripAll}if(options.whiteList||options.allowList){options.whiteList=keysToLowerCase(options.whiteList||options.allowList)}else{options.whiteList=DEFAULT.whiteList}options.onTag=options.onTag||DEFAULT.onTag;options.onTagAttr=options.onTagAttr||DEFAULT.onTagAttr;options.onIgnoreTag=options.onIgnoreTag||DEFAULT.onIgnoreTag;options.onIgnoreTagAttr=options.onIgnoreTagAttr||DEFAULT.onIgnoreTagAttr;options.safeAttrValue=options.safeAttrValue||DEFAULT.safeAttrValue;options.escapeHtml=options.escapeHtml||DEFAULT.escapeHtml;this.options=options;if(options.css===false){this.cssFilter=false}else{options.css=options.css||{};this.cssFilter=new FilterCSS(options.css)}}FilterXSS.prototype.process=function(html){html=html||"";html=html.toString();if(!html)return"";var me=this;var options=me.options;var whiteList=options.whiteList;var onTag=options.onTag;var onIgnoreTag=options.onIgnoreTag;var onTagAttr=options.onTagAttr;var onIgnoreTagAttr=options.onIgnoreTagAttr;var safeAttrValue=options.safeAttrValue;var escapeHtml=options.escapeHtml;var cssFilter=me.cssFilter;if(options.stripBlankChar){html=DEFAULT.stripBlankChar(html)}if(!options.allowCommentTag){html=DEFAULT.stripCommentTag(html)}var stripIgnoreTagBody=false;if(options.stripIgnoreTagBody){stripIgnoreTagBody=DEFAULT.StripTagBody(options.stripIgnoreTagBody,onIgnoreTag);onIgnoreTag=stripIgnoreTagBody.onIgnoreTag}var retHtml=parseTag(html,function(sourcePosition,position,tag,html,isClosing){var info={sourcePosition:sourcePosition,position:position,isClosing:isClosing,isWhite:Object.prototype.hasOwnProperty.call(whiteList,tag)};var ret=onTag(tag,html,info);if(!isNull(ret))return ret;if(info.isWhite){if(info.isClosing){return"</"+tag+">"}var attrs=getAttrs(html);var whiteAttrList=whiteList[tag];var attrsHtml=parseAttr(attrs.html,function(name,value){var isWhiteAttr=_.indexOf(whiteAttrList,name)!==-1;var ret=onTagAttr(tag,name,value,isWhiteAttr);if(!isNull(ret))return ret;if(isWhiteAttr){value=safeAttrValue(tag,name,value,cssFilter);if(value){return name+'="'+value+'"'}else{return name}}else{ret=onIgnoreTagAttr(tag,name,value,isWhiteAttr);if(!isNull(ret))return ret;return}});html="<"+tag;if(attrsHtml)html+=" "+attrsHtml;if(attrs.closing)html+=" /";html+=">";return html}else{ret=onIgnoreTag(tag,html,info);if(!isNull(ret))return ret;return escapeHtml(html)}},escapeHtml);if(stripIgnoreTagBody){retHtml=stripIgnoreTagBody.remove(retHtml)}return retHtml};module.exports=FilterXSS},{"./default":1,"./parser":3,"./util":4,cssfilter:8}],6:[function(require,module,exports){var DEFAULT=require("./default");var parseStyle=require("./parser");var _=require("./util");function isNull(obj){return obj===undefined||obj===null}function shallowCopyObject(obj){var ret={};for(var i in obj){ret[i]=obj[i]}return ret}function FilterCSS(options){options=shallowCopyObject(options||{});options.whiteList=options.whiteList||DEFAULT.whiteList;options.onAttr=options.onAttr||DEFAULT.onAttr;options.onIgnoreAttr=options.onIgnoreAttr||DEFAULT.onIgnoreAttr;options.safeAttrValue=options.safeAttrValue||DEFAULT.safeAttrValue;this.options=options}FilterCSS.prototype.process=function(css){css=css||"";css=css.toString();if(!css)return"";var me=this;var options=me.options;var whiteList=options.whiteList;var onAttr=options.onAttr;var onIgnoreAttr=options.onIgnoreAttr;var safeAttrValue=options.safeAttrValue;var retCSS=parseStyle(css,function(sourcePosition,position,name,value,source){var check=whiteList[name];var isWhite=false;if(check===true)isWhite=check;else if(typeof check==="function")isWhite=check(value);else if(check instanceof RegExp)isWhite=check.test(value);if(isWhite!==true)isWhite=false;value=safeAttrValue(name,value);if(!value)return;var opts={position:position,sourcePosition:sourcePosition,source:source,isWhite:isWhite};if(isWhite){var ret=onAttr(name,value,opts);if(isNull(ret)){return name+":"+value}else{return ret}}else{var ret=onIgnoreAttr(name,value,opts);if(!isNull(ret)){return ret}}});return retCSS};module.exports=FilterCSS},{"./default":7,"./parser":9,"./util":10}],7:[function(require,module,exports){function getDefaultWhiteList(){var whiteList={};whiteList["align-content"]=false;whiteList["align-items"]=false;whiteList["align-self"]=false;whiteList["alignment-adjust"]=false;whiteList["alignment-baseline"]=false;whiteList["all"]=false;whiteList["anchor-point"]=false;whiteList["animation"]=false;whiteList["animation-delay"]=false;whiteList["animation-direction"]=false;whiteList["animation-duration"]=false;whiteList["animation-fill-mode"]=false;whiteList["animation-iteration-count"]=false;whiteList["animation-name"]=false;whiteList["animation-play-state"]=false;whiteList["animation-timing-function"]=false;whiteList["azimuth"]=false;whiteList["backface-visibility"]=false;whiteList["background"]=true;whiteList["background-attachment"]=true;whiteList["background-clip"]=true;whiteList["background-color"]=true;whiteList["background-image"]=true;whiteList["background-origin"]=true;whiteList["background-position"]=true;whiteList["background-repeat"]=true;whiteList["background-size"]=true;whiteList["baseline-shift"]=false;whiteList["binding"]=false;whiteList["bleed"]=false;whiteList["bookmark-label"]=false;whiteList["bookmark-level"]=false;whiteList["bookmark-state"]=false;whiteList["border"]=true;whiteList["border-bottom"]=true;whiteList["border-bottom-color"]=true;whiteList["border-bottom-left-radius"]=true;whiteList["border-bottom-right-radius"]=true;whiteList["border-bottom-style"]=true;whiteList["border-bottom-width"]=true;whiteList["border-collapse"]=true;whiteList["border-color"]=true;whiteList["border-image"]=true;whiteList["border-image-outset"]=true;whiteList["border-image-repeat"]=true;whiteList["border-image-slice"]=true;whiteList["border-image-source"]=true;whiteList["border-image-width"]=true;whiteList["border-left"]=true;whiteList["border-left-color"]=true;whiteList["border-left-style"]=true;whiteList["border-left-width"]=true;whiteList["border-radius"]=true;whiteList["border-right"]=true;whiteList["border-right-color"]=true;whiteList["border-right-style"]=true;whiteList["border-right-width"]=true;whiteList["border-spacing"]=true;whiteList["border-style"]=true;whiteList["border-top"]=true;whiteList["border-top-color"]=true;whiteList["border-top-left-radius"]=true;whiteList["border-top-right-radius"]=true;whiteList["border-top-style"]=true;whiteList["border-top-width"]=true;whiteList["border-width"]=true;whiteList["bottom"]=false;whiteList["box-decoration-break"]=true;whiteList["box-shadow"]=true;whiteList["box-sizing"]=true;whiteList["box-snap"]=true;whiteList["box-suppress"]=true;whiteList["break-after"]=true;whiteList["break-before"]=true;whiteList["break-inside"]=true;whiteList["caption-side"]=false;whiteList["chains"]=false;whiteList["clear"]=true;whiteList["clip"]=false;whiteList["clip-path"]=false;whiteList["clip-rule"]=false;whiteList["color"]=true;whiteList["color-interpolation-filters"]=true;whiteList["column-count"]=false;whiteList["column-fill"]=false;whiteList["column-gap"]=false;whiteList["column-rule"]=false;whiteList["column-rule-color"]=false;whiteList["column-rule-style"]=false;whiteList["column-rule-width"]=false;whiteList["column-span"]=false;whiteList["column-width"]=false;whiteList["columns"]=false;whiteList["contain"]=false;whiteList["content"]=false;whiteList["counter-increment"]=false;whiteList["counter-reset"]=false;whiteList["counter-set"]=false;whiteList["crop"]=false;whiteList["cue"]=false;whiteList["cue-after"]=false;whiteList["cue-before"]=false;whiteList["cursor"]=false;whiteList["direction"]=false;whiteList["display"]=true;whiteList["display-inside"]=true;whiteList["display-list"]=true;whiteList["display-outside"]=true;whiteList["dominant-baseline"]=false;whiteList["elevation"]=false;whiteList["empty-cells"]=false;whiteList["filter"]=false;whiteList["flex"]=false;whiteList["flex-basis"]=false;whiteList["flex-direction"]=false;whiteList["flex-flow"]=false;whiteList["flex-grow"]=false;whiteList["flex-shrink"]=false;whiteList["flex-wrap"]=false;whiteList["float"]=false;whiteList["float-offset"]=false;whiteList["flood-color"]=false;whiteList["flood-opacity"]=false;whiteList["flow-from"]=false;whiteList["flow-into"]=false;whiteList["font"]=true;whiteList["font-family"]=true;whiteList["font-feature-settings"]=true;whiteList["font-kerning"]=true;whiteList["font-language-override"]=true;whiteList["font-size"]=true;whiteList["font-size-adjust"]=true;whiteList["font-stretch"]=true;whiteList["font-style"]=true;whiteList["font-synthesis"]=true;whiteList["font-variant"]=true;whiteList["font-variant-alternates"]=true;whiteList["font-variant-caps"]=true;whiteList["font-variant-east-asian"]=true;whiteList["font-variant-ligatures"]=true;whiteList["font-variant-numeric"]=true;whiteList["font-variant-position"]=true;whiteList["font-weight"]=true;whiteList["grid"]=false;whiteList["grid-area"]=false;whiteList["grid-auto-columns"]=false;whiteList["grid-auto-flow"]=false;whiteList["grid-auto-rows"]=false;whiteList["grid-column"]=false;whiteList["grid-column-end"]=false;whiteList["grid-column-start"]=false;whiteList["grid-row"]=false;whiteList["grid-row-end"]=false;whiteList["grid-row-start"]=false;whiteList["grid-template"]=false;whiteList["grid-template-areas"]=false;whiteList["grid-template-columns"]=false;whiteList["grid-template-rows"]=false;whiteList["hanging-punctuation"]=false;whiteList["height"]=true;whiteList["hyphens"]=false;whiteList["icon"]=false;whiteList["image-orientation"]=false;whiteList["image-resolution"]=false;whiteList["ime-mode"]=false;whiteList["initial-letters"]=false;whiteList["inline-box-align"]=false;whiteList["justify-content"]=false;whiteList["justify-items"]=false;whiteList["justify-self"]=false;whiteList["left"]=false;whiteList["letter-spacing"]=true;whiteList["lighting-color"]=true;whiteList["line-box-contain"]=false;whiteList["line-break"]=false;whiteList["line-grid"]=false;whiteList["line-height"]=false;whiteList["line-snap"]=false;whiteList["line-stacking"]=false;whiteList["line-stacking-ruby"]=false;whiteList["line-stacking-shift"]=false;whiteList["line-stacking-strategy"]=false;whiteList["list-style"]=true;whiteList["list-style-image"]=true;whiteList["list-style-position"]=true;whiteList["list-style-type"]=true;whiteList["margin"]=true;whiteList["margin-bottom"]=true;whiteList["margin-left"]=true;whiteList["margin-right"]=true;whiteList["margin-top"]=true;whiteList["marker-offset"]=false;whiteList["marker-side"]=false;whiteList["marks"]=false;whiteList["mask"]=false;whiteList["mask-box"]=false;whiteList["mask-box-outset"]=false;whiteList["mask-box-repeat"]=false;whiteList["mask-box-slice"]=false;whiteList["mask-box-source"]=false;whiteList["mask-box-width"]=false;whiteList["mask-clip"]=false;whiteList["mask-image"]=false;whiteList["mask-origin"]=false;whiteList["mask-position"]=false;whiteList["mask-repeat"]=false;whiteList["mask-size"]=false;whiteList["mask-source-type"]=false;whiteList["mask-type"]=false;whiteList["max-height"]=true;whiteList["max-lines"]=false;whiteList["max-width"]=true;whiteList["min-height"]=true;whiteList["min-width"]=true;whiteList["move-to"]=false;whiteList["nav-down"]=false;whiteList["nav-index"]=false;whiteList["nav-left"]=false;whiteList["nav-right"]=false;whiteList["nav-up"]=false;whiteList["object-fit"]=false;whiteList["object-position"]=false;whiteList["opacity"]=false;whiteList["order"]=false;whiteList["orphans"]=false;whiteList["outline"]=false;whiteList["outline-color"]=false;whiteList["outline-offset"]=false;whiteList["outline-style"]=false;whiteList["outline-width"]=false;whiteList["overflow"]=false;whiteList["overflow-wrap"]=false;whiteList["overflow-x"]=false;whiteList["overflow-y"]=false;whiteList["padding"]=true;whiteList["padding-bottom"]=true;whiteList["padding-left"]=true;whiteList["padding-right"]=true;whiteList["padding-top"]=true;whiteList["page"]=false;whiteList["page-break-after"]=false;whiteList["page-break-before"]=false;whiteList["page-break-inside"]=false;whiteList["page-policy"]=false;whiteList["pause"]=false;whiteList["pause-after"]=false;whiteList["pause-before"]=false;whiteList["perspective"]=false;whiteList["perspective-origin"]=false;whiteList["pitch"]=false;whiteList["pitch-range"]=false;whiteList["play-during"]=false;whiteList["position"]=false;whiteList["presentation-level"]=false;whiteList["quotes"]=false;whiteList["region-fragment"]=false;whiteList["resize"]=false;whiteList["rest"]=false;whiteList["rest-after"]=false;whiteList["rest-before"]=false;whiteList["richness"]=false;whiteList["right"]=false;whiteList["rotation"]=false;whiteList["rotation-point"]=false;whiteList["ruby-align"]=false;whiteList["ruby-merge"]=false;whiteList["ruby-position"]=false;whiteList["shape-image-threshold"]=false;whiteList["shape-outside"]=false;whiteList["shape-margin"]=false;whiteList["size"]=false;whiteList["speak"]=false;whiteList["speak-as"]=false;whiteList["speak-header"]=false;whiteList["speak-numeral"]=false;whiteList["speak-punctuation"]=false;whiteList["speech-rate"]=false;whiteList["stress"]=false;whiteList["string-set"]=false;whiteList["tab-size"]=false;whiteList["table-layout"]=false;whiteList["text-align"]=true;whiteList["text-align-last"]=true;whiteList["text-combine-upright"]=true;whiteList["text-decoration"]=true;whiteList["text-decoration-color"]=true;whiteList["text-decoration-line"]=true;whiteList["text-decoration-skip"]=true;whiteList["text-decoration-style"]=true;whiteList["text-emphasis"]=true;whiteList["text-emphasis-color"]=true;whiteList["text-emphasis-position"]=true;whiteList["text-emphasis-style"]=true;whiteList["text-height"]=true;whiteList["text-indent"]=true;whiteList["text-justify"]=true;whiteList["text-orientation"]=true;whiteList["text-overflow"]=true;whiteList["text-shadow"]=true;whiteList["text-space-collapse"]=true;whiteList["text-transform"]=true;whiteList["text-underline-position"]=true;whiteList["text-wrap"]=true;whiteList["top"]=false;whiteList["transform"]=false;whiteList["transform-origin"]=false;whiteList["transform-style"]=false;whiteList["transition"]=false;whiteList["transition-delay"]=false;whiteList["transition-duration"]=false;whiteList["transition-property"]=false;whiteList["transition-timing-function"]=false;whiteList["unicode-bidi"]=false;whiteList["vertical-align"]=false;whiteList["visibility"]=false;whiteList["voice-balance"]=false;whiteList["voice-duration"]=false;whiteList["voice-family"]=false;whiteList["voice-pitch"]=false;whiteList["voice-range"]=false;whiteList["voice-rate"]=false;whiteList["voice-stress"]=false;whiteList["voice-volume"]=false;whiteList["volume"]=false;whiteList["white-space"]=false;whiteList["widows"]=false;whiteList["width"]=true;whiteList["will-change"]=false;whiteList["word-break"]=true;whiteList["word-spacing"]=true;whiteList["word-wrap"]=true;whiteList["wrap-flow"]=false;whiteList["wrap-through"]=false;whiteList["writing-mode"]=false;whiteList["z-index"]=false;return whiteList}function onAttr(name,value,options){}function onIgnoreAttr(name,value,options){}var REGEXP_URL_JAVASCRIPT=/javascript\s*\:/gim;function safeAttrValue(name,value){if(REGEXP_URL_JAVASCRIPT.test(value))return"";return value}exports.whiteList=getDefaultWhiteList();exports.getDefaultWhiteList=getDefaultWhiteList;exports.onAttr=onAttr;exports.onIgnoreAttr=onIgnoreAttr;exports.safeAttrValue=safeAttrValue},{}],8:[function(require,module,exports){var DEFAULT=require("./default");var FilterCSS=require("./css");function filterCSS(html,options){var xss=new FilterCSS(options);return xss.process(html)}exports=module.exports=filterCSS;exports.FilterCSS=FilterCSS;for(var i in DEFAULT)exports[i]=DEFAULT[i];if(typeof window!=="undefined"){window.filterCSS=module.exports}},{"./css":6,"./default":7}],9:[function(require,module,exports){var _=require("./util");function parseStyle(css,onAttr){css=_.trimRight(css);if(css[css.length-1]!==";")css+=";";var cssLength=css.length;var isParenthesisOpen=false;var lastPos=0;var i=0;var retCSS="";function addNewAttr(){if(!isParenthesisOpen){var source=_.trim(css.slice(lastPos,i));var j=source.indexOf(":");if(j!==-1){var name=_.trim(source.slice(0,j));var value=_.trim(source.slice(j+1));if(name){var ret=onAttr(lastPos,retCSS.length,name,value,source);if(ret)retCSS+=ret+"; "}}}lastPos=i+1}for(;i<cssLength;i++){var c=css[i];if(c==="/"&&css[i+1]==="*"){var j=css.indexOf("*/",i+2);if(j===-1)break;i=j+1;lastPos=i+1;isParenthesisOpen=false}else if(c==="("){isParenthesisOpen=true}else if(c===")"){isParenthesisOpen=false}else if(c===";"){if(isParenthesisOpen){}else{addNewAttr()}}else if(c==="\n"){addNewAttr()}}return _.trim(retCSS)}module.exports=parseStyle},{"./util":10}],10:[function(require,module,exports){module.exports={indexOf:function(arr,item){var i,j;if(Array.prototype.indexOf){return arr.indexOf(item)}for(i=0,j=arr.length;i<j;i++){if(arr[i]===item){return i}}return-1},forEach:function(arr,fn,scope){var i,j;if(Array.prototype.forEach){return arr.forEach(fn,scope)}for(i=0,j=arr.length;i<j;i++){fn.call(scope,arr[i],i,arr)}},trim:function(str){if(String.prototype.trim){return str.trim()}return str.replace(/(^\s*)|(\s*$)/g,"")},trimRight:function(str){if(String.prototype.trimRight){return str.trimRight()}return str.replace(/(\s*$)/g,"")}}},{}]},{},[2]);
\ No newline at end of file
diff --git a/node_modules/xss/lib/cli.js b/node_modules/xss/lib/cli.js
new file mode 100644
index 0000000..0f3b062
--- /dev/null
+++ b/node_modules/xss/lib/cli.js
@@ -0,0 +1,45 @@
+/**
+ * command line tool
+ *
+ * @author Zongmin Lei<leizongmin@gmail.com>
+ */
+
+var xss = require("./");
+var readline = require("readline");
+
+var rl = readline.createInterface({
+  input: process.stdin,
+  output: process.stdout,
+});
+
+console.log('Enter a blank line to do xss(), enter "@quit" to exit.\n');
+
+function take(c, n) {
+  var ret = "";
+  for (var i = 0; i < n; i++) {
+    ret += c;
+  }
+  return ret;
+}
+
+function setPrompt(line) {
+  line = line.toString();
+  rl.setPrompt("[" + line + "]" + take(" ", 5 - line.length));
+  rl.prompt();
+}
+
+setPrompt(1);
+
+var html = [];
+rl.on("line", function (line) {
+  if (line === "@quit") return process.exit();
+  if (line === "") {
+    console.log("");
+    console.log(xss(html.join("\r\n")));
+    console.log("");
+    html = [];
+  } else {
+    html.push(line);
+  }
+  setPrompt(html.length + 1);
+});
diff --git a/node_modules/xss/lib/default.js b/node_modules/xss/lib/default.js
new file mode 100644
index 0000000..6495a99
--- /dev/null
+++ b/node_modules/xss/lib/default.js
@@ -0,0 +1,459 @@
+/**
+ * default settings
+ *
+ * @author Zongmin Lei<leizongmin@gmail.com>
+ */
+
+var FilterCSS = require("cssfilter").FilterCSS;
+var getDefaultCSSWhiteList = require("cssfilter").getDefaultWhiteList;
+var _ = require("./util");
+
+function getDefaultWhiteList() {
+  return {
+    a: ["target", "href", "title"],
+    abbr: ["title"],
+    address: [],
+    area: ["shape", "coords", "href", "alt"],
+    article: [],
+    aside: [],
+    audio: [
+      "autoplay",
+      "controls",
+      "crossorigin",
+      "loop",
+      "muted",
+      "preload",
+      "src",
+    ],
+    b: [],
+    bdi: ["dir"],
+    bdo: ["dir"],
+    big: [],
+    blockquote: ["cite"],
+    br: [],
+    caption: [],
+    center: [],
+    cite: [],
+    code: [],
+    col: ["align", "valign", "span", "width"],
+    colgroup: ["align", "valign", "span", "width"],
+    dd: [],
+    del: ["datetime"],
+    details: ["open"],
+    div: [],
+    dl: [],
+    dt: [],
+    em: [],
+    figcaption: [],
+    figure: [],
+    font: ["color", "size", "face"],
+    footer: [],
+    h1: [],
+    h2: [],
+    h3: [],
+    h4: [],
+    h5: [],
+    h6: [],
+    header: [],
+    hr: [],
+    i: [],
+    img: ["src", "alt", "title", "width", "height"],
+    ins: ["datetime"],
+    li: [],
+    mark: [],
+    nav: [],
+    ol: [],
+    p: [],
+    pre: [],
+    s: [],
+    section: [],
+    small: [],
+    span: [],
+    sub: [],
+    summary: [],
+    sup: [],
+    strong: [],
+    strike: [],
+    table: ["width", "border", "align", "valign"],
+    tbody: ["align", "valign"],
+    td: ["width", "rowspan", "colspan", "align", "valign"],
+    tfoot: ["align", "valign"],
+    th: ["width", "rowspan", "colspan", "align", "valign"],
+    thead: ["align", "valign"],
+    tr: ["rowspan", "align", "valign"],
+    tt: [],
+    u: [],
+    ul: [],
+    video: [
+      "autoplay",
+      "controls",
+      "crossorigin",
+      "loop",
+      "muted",
+      "playsinline",
+      "poster",
+      "preload",
+      "src",
+      "height",
+      "width",
+    ],
+  };
+}
+
+var defaultCSSFilter = new FilterCSS();
+
+/**
+ * default onTag function
+ *
+ * @param {String} tag
+ * @param {String} html
+ * @param {Object} options
+ * @return {String}
+ */
+function onTag(tag, html, options) {
+  // do nothing
+}
+
+/**
+ * default onIgnoreTag function
+ *
+ * @param {String} tag
+ * @param {String} html
+ * @param {Object} options
+ * @return {String}
+ */
+function onIgnoreTag(tag, html, options) {
+  // do nothing
+}
+
+/**
+ * default onTagAttr function
+ *
+ * @param {String} tag
+ * @param {String} name
+ * @param {String} value
+ * @return {String}
+ */
+function onTagAttr(tag, name, value) {
+  // do nothing
+}
+
+/**
+ * default onIgnoreTagAttr function
+ *
+ * @param {String} tag
+ * @param {String} name
+ * @param {String} value
+ * @return {String}
+ */
+function onIgnoreTagAttr(tag, name, value) {
+  // do nothing
+}
+
+/**
+ * default escapeHtml function
+ *
+ * @param {String} html
+ */
+function escapeHtml(html) {
+  return html.replace(REGEXP_LT, "&lt;").replace(REGEXP_GT, "&gt;");
+}
+
+/**
+ * default safeAttrValue function
+ *
+ * @param {String} tag
+ * @param {String} name
+ * @param {String} value
+ * @param {Object} cssFilter
+ * @return {String}
+ */
+function safeAttrValue(tag, name, value, cssFilter) {
+  // unescape attribute value firstly
+  value = friendlyAttrValue(value);
+
+  if (name === "href" || name === "src") {
+    // filter `href` and `src` attribute
+    // only allow the value that starts with `http://` | `https://` | `mailto:` | `/` | `#`
+    value = _.trim(value);
+    if (value === "#") return "#";
+    if (
+      !(
+        value.substr(0, 7) === "http://" ||
+        value.substr(0, 8) === "https://" ||
+        value.substr(0, 7) === "mailto:" ||
+        value.substr(0, 4) === "tel:" ||
+        value.substr(0, 11) === "data:image/" ||
+        value.substr(0, 6) === "ftp://" ||
+        value.substr(0, 2) === "./" ||
+        value.substr(0, 3) === "../" ||
+        value[0] === "#" ||
+        value[0] === "/"
+      )
+    ) {
+      return "";
+    }
+  } else if (name === "background") {
+    // filter `background` attribute (maybe no use)
+    // `javascript:`
+    REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;
+    if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {
+      return "";
+    }
+  } else if (name === "style") {
+    // `expression()`
+    REGEXP_DEFAULT_ON_TAG_ATTR_7.lastIndex = 0;
+    if (REGEXP_DEFAULT_ON_TAG_ATTR_7.test(value)) {
+      return "";
+    }
+    // `url()`
+    REGEXP_DEFAULT_ON_TAG_ATTR_8.lastIndex = 0;
+    if (REGEXP_DEFAULT_ON_TAG_ATTR_8.test(value)) {
+      REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;
+      if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {
+        return "";
+      }
+    }
+    if (cssFilter !== false) {
+      cssFilter = cssFilter || defaultCSSFilter;
+      value = cssFilter.process(value);
+    }
+  }
+
+  // escape `<>"` before returns
+  value = escapeAttrValue(value);
+  return value;
+}
+
+// RegExp list
+var REGEXP_LT = /</g;
+var REGEXP_GT = />/g;
+var REGEXP_QUOTE = /"/g;
+var REGEXP_QUOTE_2 = /&quot;/g;
+var REGEXP_ATTR_VALUE_1 = /&#([a-zA-Z0-9]*);?/gim;
+var REGEXP_ATTR_VALUE_COLON = /&colon;?/gim;
+var REGEXP_ATTR_VALUE_NEWLINE = /&newline;?/gim;
+// var REGEXP_DEFAULT_ON_TAG_ATTR_3 = /\/\*|\*\//gm;
+var REGEXP_DEFAULT_ON_TAG_ATTR_4 =
+  /((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi;
+// var REGEXP_DEFAULT_ON_TAG_ATTR_5 = /^[\s"'`]*(d\s*a\s*t\s*a\s*)\:/gi;
+// var REGEXP_DEFAULT_ON_TAG_ATTR_6 = /^[\s"'`]*(d\s*a\s*t\s*a\s*)\:\s*image\//gi;
+var REGEXP_DEFAULT_ON_TAG_ATTR_7 =
+  /e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi;
+var REGEXP_DEFAULT_ON_TAG_ATTR_8 = /u\s*r\s*l\s*\(.*/gi;
+
+/**
+ * escape double quote
+ *
+ * @param {String} str
+ * @return {String} str
+ */
+function escapeQuote(str) {
+  return str.replace(REGEXP_QUOTE, "&quot;");
+}
+
+/**
+ * unescape double quote
+ *
+ * @param {String} str
+ * @return {String} str
+ */
+function unescapeQuote(str) {
+  return str.replace(REGEXP_QUOTE_2, '"');
+}
+
+/**
+ * escape html entities
+ *
+ * @param {String} str
+ * @return {String}
+ */
+function escapeHtmlEntities(str) {
+  return str.replace(REGEXP_ATTR_VALUE_1, function replaceUnicode(str, code) {
+    return code[0] === "x" || code[0] === "X"
+      ? String.fromCharCode(parseInt(code.substr(1), 16))
+      : String.fromCharCode(parseInt(code, 10));
+  });
+}
+
+/**
+ * escape html5 new danger entities
+ *
+ * @param {String} str
+ * @return {String}
+ */
+function escapeDangerHtml5Entities(str) {
+  return str
+    .replace(REGEXP_ATTR_VALUE_COLON, ":")
+    .replace(REGEXP_ATTR_VALUE_NEWLINE, " ");
+}
+
+/**
+ * clear nonprintable characters
+ *
+ * @param {String} str
+ * @return {String}
+ */
+function clearNonPrintableCharacter(str) {
+  var str2 = "";
+  for (var i = 0, len = str.length; i < len; i++) {
+    str2 += str.charCodeAt(i) < 32 ? " " : str.charAt(i);
+  }
+  return _.trim(str2);
+}
+
+/**
+ * get friendly attribute value
+ *
+ * @param {String} str
+ * @return {String}
+ */
+function friendlyAttrValue(str) {
+  str = unescapeQuote(str);
+  str = escapeHtmlEntities(str);
+  str = escapeDangerHtml5Entities(str);
+  str = clearNonPrintableCharacter(str);
+  return str;
+}
+
+/**
+ * unescape attribute value
+ *
+ * @param {String} str
+ * @return {String}
+ */
+function escapeAttrValue(str) {
+  str = escapeQuote(str);
+  str = escapeHtml(str);
+  return str;
+}
+
+/**
+ * `onIgnoreTag` function for removing all the tags that are not in whitelist
+ */
+function onIgnoreTagStripAll() {
+  return "";
+}
+
+/**
+ * remove tag body
+ * specify a `tags` list, if the tag is not in the `tags` list then process by the specify function (optional)
+ *
+ * @param {array} tags
+ * @param {function} next
+ */
+function StripTagBody(tags, next) {
+  if (typeof next !== "function") {
+    next = function () {};
+  }
+
+  var isRemoveAllTag = !Array.isArray(tags);
+  function isRemoveTag(tag) {
+    if (isRemoveAllTag) return true;
+    return _.indexOf(tags, tag) !== -1;
+  }
+
+  var removeList = [];
+  var posStart = false;
+
+  return {
+    onIgnoreTag: function (tag, html, options) {
+      if (isRemoveTag(tag)) {
+        if (options.isClosing) {
+          var ret = "[/removed]";
+          var end = options.position + ret.length;
+          removeList.push([
+            posStart !== false ? posStart : options.position,
+            end,
+          ]);
+          posStart = false;
+          return ret;
+        } else {
+          if (!posStart) {
+            posStart = options.position;
+          }
+          return "[removed]";
+        }
+      } else {
+        return next(tag, html, options);
+      }
+    },
+    remove: function (html) {
+      var rethtml = "";
+      var lastPos = 0;
+      _.forEach(removeList, function (pos) {
+        rethtml += html.slice(lastPos, pos[0]);
+        lastPos = pos[1];
+      });
+      rethtml += html.slice(lastPos);
+      return rethtml;
+    },
+  };
+}
+
+/**
+ * remove html comments
+ *
+ * @param {String} html
+ * @return {String}
+ */
+function stripCommentTag(html) {
+  var retHtml = "";
+  var lastPos = 0;
+  while (lastPos < html.length) {
+    var i = html.indexOf("<!--", lastPos);
+    if (i === -1) {
+      retHtml += html.slice(lastPos);
+      break;
+    }
+    retHtml += html.slice(lastPos, i);
+    var j = html.indexOf("-->", i);
+    if (j === -1) {
+      break;
+    }
+    lastPos = j + 3;
+  }
+  return retHtml;
+}
+
+/**
+ * remove invisible characters
+ *
+ * @param {String} html
+ * @return {String}
+ */
+function stripBlankChar(html) {
+  var chars = html.split("");
+  chars = chars.filter(function (char) {
+    var c = char.charCodeAt(0);
+    if (c === 127) return false;
+    if (c <= 31) {
+      if (c === 10 || c === 13) return true;
+      return false;
+    }
+    return true;
+  });
+  return chars.join("");
+}
+
+exports.whiteList = getDefaultWhiteList();
+exports.getDefaultWhiteList = getDefaultWhiteList;
+exports.onTag = onTag;
+exports.onIgnoreTag = onIgnoreTag;
+exports.onTagAttr = onTagAttr;
+exports.onIgnoreTagAttr = onIgnoreTagAttr;
+exports.safeAttrValue = safeAttrValue;
+exports.escapeHtml = escapeHtml;
+exports.escapeQuote = escapeQuote;
+exports.unescapeQuote = unescapeQuote;
+exports.escapeHtmlEntities = escapeHtmlEntities;
+exports.escapeDangerHtml5Entities = escapeDangerHtml5Entities;
+exports.clearNonPrintableCharacter = clearNonPrintableCharacter;
+exports.friendlyAttrValue = friendlyAttrValue;
+exports.escapeAttrValue = escapeAttrValue;
+exports.onIgnoreTagStripAll = onIgnoreTagStripAll;
+exports.StripTagBody = StripTagBody;
+exports.stripCommentTag = stripCommentTag;
+exports.stripBlankChar = stripBlankChar;
+exports.cssFilter = defaultCSSFilter;
+exports.getDefaultCSSWhiteList = getDefaultCSSWhiteList;
diff --git a/node_modules/xss/lib/index.js b/node_modules/xss/lib/index.js
new file mode 100644
index 0000000..1861a4d
--- /dev/null
+++ b/node_modules/xss/lib/index.js
@@ -0,0 +1,51 @@
+/**
+ * xss
+ *
+ * @author Zongmin Lei<leizongmin@gmail.com>
+ */
+
+var DEFAULT = require("./default");
+var parser = require("./parser");
+var FilterXSS = require("./xss");
+
+/**
+ * filter xss function
+ *
+ * @param {String} html
+ * @param {Object} options { whiteList, onTag, onTagAttr, onIgnoreTag, onIgnoreTagAttr, safeAttrValue, escapeHtml }
+ * @return {String}
+ */
+function filterXSS(html, options) {
+  var xss = new FilterXSS(options);
+  return xss.process(html);
+}
+
+exports = module.exports = filterXSS;
+exports.filterXSS = filterXSS;
+exports.FilterXSS = FilterXSS;
+
+(function () {
+  for (var i in DEFAULT) {
+    exports[i] = DEFAULT[i];
+  }
+  for (var j in parser) {
+    exports[j] = parser[j];
+  }
+})();
+
+// using `xss` on the browser, output `filterXSS` to the globals
+if (typeof window !== "undefined") {
+  window.filterXSS = module.exports;
+}
+
+// using `xss` on the WebWorker, output `filterXSS` to the globals
+function isWorkerEnv() {
+  return (
+    typeof self !== "undefined" &&
+    typeof DedicatedWorkerGlobalScope !== "undefined" &&
+    self instanceof DedicatedWorkerGlobalScope
+  );
+}
+if (isWorkerEnv()) {
+  self.filterXSS = module.exports;
+}
diff --git a/node_modules/xss/lib/parser.js b/node_modules/xss/lib/parser.js
new file mode 100644
index 0000000..8d147b5
--- /dev/null
+++ b/node_modules/xss/lib/parser.js
@@ -0,0 +1,257 @@
+/**
+ * Simple HTML Parser
+ *
+ * @author Zongmin Lei<leizongmin@gmail.com>
+ */
+
+var _ = require("./util");
+
+/**
+ * get tag name
+ *
+ * @param {String} html e.g. '<a hef="#">'
+ * @return {String}
+ */
+function getTagName(html) {
+  var i = _.spaceIndex(html);
+  var tagName;
+  if (i === -1) {
+    tagName = html.slice(1, -1);
+  } else {
+    tagName = html.slice(1, i + 1);
+  }
+  tagName = _.trim(tagName).toLowerCase();
+  if (tagName.slice(0, 1) === "/") tagName = tagName.slice(1);
+  if (tagName.slice(-1) === "/") tagName = tagName.slice(0, -1);
+  return tagName;
+}
+
+/**
+ * is close tag?
+ *
+ * @param {String} html 如:'<a hef="#">'
+ * @return {Boolean}
+ */
+function isClosing(html) {
+  return html.slice(0, 2) === "</";
+}
+
+/**
+ * parse input html and returns processed html
+ *
+ * @param {String} html
+ * @param {Function} onTag e.g. function (sourcePosition, position, tag, html, isClosing)
+ * @param {Function} escapeHtml
+ * @return {String}
+ */
+function parseTag(html, onTag, escapeHtml) {
+  "use strict";
+
+  var rethtml = "";
+  var lastPos = 0;
+  var tagStart = false;
+  var quoteStart = false;
+  var currentPos = 0;
+  var len = html.length;
+  var currentTagName = "";
+  var currentHtml = "";
+
+  chariterator: for (currentPos = 0; currentPos < len; currentPos++) {
+    var c = html.charAt(currentPos);
+    if (tagStart === false) {
+      if (c === "<") {
+        tagStart = currentPos;
+        continue;
+      }
+    } else {
+      if (quoteStart === false) {
+        if (c === "<") {
+          rethtml += escapeHtml(html.slice(lastPos, currentPos));
+          tagStart = currentPos;
+          lastPos = currentPos;
+          continue;
+        }
+        if (c === ">" || currentPos === len - 1) {
+          rethtml += escapeHtml(html.slice(lastPos, tagStart));
+          currentHtml = html.slice(tagStart, currentPos + 1);
+          currentTagName = getTagName(currentHtml);
+          rethtml += onTag(
+            tagStart,
+            rethtml.length,
+            currentTagName,
+            currentHtml,
+            isClosing(currentHtml)
+          );
+          lastPos = currentPos + 1;
+          tagStart = false;
+          continue;
+        }
+        if (c === '"' || c === "'") {
+          var i = 1;
+          var ic = html.charAt(currentPos - i);
+
+          while (ic.trim() === "" || ic === "=") {
+            if (ic === "=") {
+              quoteStart = c;
+              continue chariterator;
+            }
+            ic = html.charAt(currentPos - ++i);
+          }
+        }
+      } else {
+        if (c === quoteStart) {
+          quoteStart = false;
+          continue;
+        }
+      }
+    }
+  }
+  if (lastPos < len) {
+    rethtml += escapeHtml(html.substr(lastPos));
+  }
+
+  return rethtml;
+}
+
+var REGEXP_ILLEGAL_ATTR_NAME = /[^a-zA-Z0-9\\_:.-]/gim;
+
+/**
+ * parse input attributes and returns processed attributes
+ *
+ * @param {String} html e.g. `href="#" target="_blank"`
+ * @param {Function} onAttr e.g. `function (name, value)`
+ * @return {String}
+ */
+function parseAttr(html, onAttr) {
+  "use strict";
+
+  var lastPos = 0;
+  var lastMarkPos = 0;
+  var retAttrs = [];
+  var tmpName = false;
+  var len = html.length;
+
+  function addAttr(name, value) {
+    name = _.trim(name);
+    name = name.replace(REGEXP_ILLEGAL_ATTR_NAME, "").toLowerCase();
+    if (name.length < 1) return;
+    var ret = onAttr(name, value || "");
+    if (ret) retAttrs.push(ret);
+  }
+
+  // 逐个分析字符
+  for (var i = 0; i < len; i++) {
+    var c = html.charAt(i);
+    var v, j;
+    if (tmpName === false && c === "=") {
+      tmpName = html.slice(lastPos, i);
+      lastPos = i + 1;
+      lastMarkPos = html.charAt(lastPos) === '"' || html.charAt(lastPos) === "'" ? lastPos : findNextQuotationMark(html, i + 1);
+      continue;
+    }
+    if (tmpName !== false) {
+      if (
+        i === lastMarkPos
+      ) {
+        j = html.indexOf(c, i + 1);
+        if (j === -1) {
+          break;
+        } else {
+          v = _.trim(html.slice(lastMarkPos + 1, j));
+          addAttr(tmpName, v);
+          tmpName = false;
+          i = j;
+          lastPos = i + 1;
+          continue;
+        }
+      }
+    }
+    if (/\s|\n|\t/.test(c)) {
+      html = html.replace(/\s|\n|\t/g, " ");
+      if (tmpName === false) {
+        j = findNextEqual(html, i);
+        if (j === -1) {
+          v = _.trim(html.slice(lastPos, i));
+          addAttr(v);
+          tmpName = false;
+          lastPos = i + 1;
+          continue;
+        } else {
+          i = j - 1;
+          continue;
+        }
+      } else {
+        j = findBeforeEqual(html, i - 1);
+        if (j === -1) {
+          v = _.trim(html.slice(lastPos, i));
+          v = stripQuoteWrap(v);
+          addAttr(tmpName, v);
+          tmpName = false;
+          lastPos = i + 1;
+          continue;
+        } else {
+          continue;
+        }
+      }
+    }
+  }
+
+  if (lastPos < html.length) {
+    if (tmpName === false) {
+      addAttr(html.slice(lastPos));
+    } else {
+      addAttr(tmpName, stripQuoteWrap(_.trim(html.slice(lastPos))));
+    }
+  }
+
+  return _.trim(retAttrs.join(" "));
+}
+
+function findNextEqual(str, i) {
+  for (; i < str.length; i++) {
+    var c = str[i];
+    if (c === " ") continue;
+    if (c === "=") return i;
+    return -1;
+  }
+}
+
+function findNextQuotationMark(str, i) {
+  for (; i < str.length; i++) {
+    var c = str[i];
+    if (c === " ") continue;
+    if (c === "'" || c === '"') return i;
+    return -1;
+  }
+}
+
+function findBeforeEqual(str, i) {
+  for (; i > 0; i--) {
+    var c = str[i];
+    if (c === " ") continue;
+    if (c === "=") return i;
+    return -1;
+  }
+}
+
+function isQuoteWrapString(text) {
+  if (
+    (text[0] === '"' && text[text.length - 1] === '"') ||
+    (text[0] === "'" && text[text.length - 1] === "'")
+  ) {
+    return true;
+  } else {
+    return false;
+  }
+}
+
+function stripQuoteWrap(text) {
+  if (isQuoteWrapString(text)) {
+    return text.substr(1, text.length - 2);
+  } else {
+    return text;
+  }
+}
+
+exports.parseTag = parseTag;
+exports.parseAttr = parseAttr;
diff --git a/node_modules/xss/lib/util.js b/node_modules/xss/lib/util.js
new file mode 100644
index 0000000..8f4b35e
--- /dev/null
+++ b/node_modules/xss/lib/util.js
@@ -0,0 +1,34 @@
+module.exports = {
+  indexOf: function (arr, item) {
+    var i, j;
+    if (Array.prototype.indexOf) {
+      return arr.indexOf(item);
+    }
+    for (i = 0, j = arr.length; i < j; i++) {
+      if (arr[i] === item) {
+        return i;
+      }
+    }
+    return -1;
+  },
+  forEach: function (arr, fn, scope) {
+    var i, j;
+    if (Array.prototype.forEach) {
+      return arr.forEach(fn, scope);
+    }
+    for (i = 0, j = arr.length; i < j; i++) {
+      fn.call(scope, arr[i], i, arr);
+    }
+  },
+  trim: function (str) {
+    if (String.prototype.trim) {
+      return str.trim();
+    }
+    return str.replace(/(^\s*)|(\s*$)/g, "");
+  },
+  spaceIndex: function (str) {
+    var reg = /\s|\n|\t/;
+    var match = reg.exec(str);
+    return match ? match.index : -1;
+  },
+};
diff --git a/node_modules/xss/lib/xss.js b/node_modules/xss/lib/xss.js
new file mode 100644
index 0000000..ed81049
--- /dev/null
+++ b/node_modules/xss/lib/xss.js
@@ -0,0 +1,229 @@
+/**
+ * filter xss
+ *
+ * @author Zongmin Lei<leizongmin@gmail.com>
+ */
+
+var FilterCSS = require("cssfilter").FilterCSS;
+var DEFAULT = require("./default");
+var parser = require("./parser");
+var parseTag = parser.parseTag;
+var parseAttr = parser.parseAttr;
+var _ = require("./util");
+
+/**
+ * returns `true` if the input value is `undefined` or `null`
+ *
+ * @param {Object} obj
+ * @return {Boolean}
+ */
+function isNull(obj) {
+  return obj === undefined || obj === null;
+}
+
+/**
+ * get attributes for a tag
+ *
+ * @param {String} html
+ * @return {Object}
+ *   - {String} html
+ *   - {Boolean} closing
+ */
+function getAttrs(html) {
+  var i = _.spaceIndex(html);
+  if (i === -1) {
+    return {
+      html: "",
+      closing: html[html.length - 2] === "/",
+    };
+  }
+  html = _.trim(html.slice(i + 1, -1));
+  var isClosing = html[html.length - 1] === "/";
+  if (isClosing) html = _.trim(html.slice(0, -1));
+  return {
+    html: html,
+    closing: isClosing,
+  };
+}
+
+/**
+ * shallow copy
+ *
+ * @param {Object} obj
+ * @return {Object}
+ */
+function shallowCopyObject(obj) {
+  var ret = {};
+  for (var i in obj) {
+    ret[i] = obj[i];
+  }
+  return ret;
+}
+
+function keysToLowerCase(obj) {
+  var ret = {};
+  for (var i in obj) {
+    if (Array.isArray(obj[i])) {
+      ret[i.toLowerCase()] = obj[i].map(function (item) {
+        return item.toLowerCase();
+      });
+    } else {
+      ret[i.toLowerCase()] = obj[i];
+    }
+  }
+  return ret;
+}
+
+/**
+ * FilterXSS class
+ *
+ * @param {Object} options
+ *        whiteList (or allowList), onTag, onTagAttr, onIgnoreTag,
+ *        onIgnoreTagAttr, safeAttrValue, escapeHtml
+ *        stripIgnoreTagBody, allowCommentTag, stripBlankChar
+ *        css{whiteList, onAttr, onIgnoreAttr} `css=false` means don't use `cssfilter`
+ */
+function FilterXSS(options) {
+  options = shallowCopyObject(options || {});
+
+  if (options.stripIgnoreTag) {
+    if (options.onIgnoreTag) {
+      console.error(
+        'Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'
+      );
+    }
+    options.onIgnoreTag = DEFAULT.onIgnoreTagStripAll;
+  }
+  if (options.whiteList || options.allowList) {
+    options.whiteList = keysToLowerCase(options.whiteList || options.allowList);
+  } else {
+    options.whiteList = DEFAULT.whiteList;
+  }
+
+  options.onTag = options.onTag || DEFAULT.onTag;
+  options.onTagAttr = options.onTagAttr || DEFAULT.onTagAttr;
+  options.onIgnoreTag = options.onIgnoreTag || DEFAULT.onIgnoreTag;
+  options.onIgnoreTagAttr = options.onIgnoreTagAttr || DEFAULT.onIgnoreTagAttr;
+  options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;
+  options.escapeHtml = options.escapeHtml || DEFAULT.escapeHtml;
+  this.options = options;
+
+  if (options.css === false) {
+    this.cssFilter = false;
+  } else {
+    options.css = options.css || {};
+    this.cssFilter = new FilterCSS(options.css);
+  }
+}
+
+/**
+ * start process and returns result
+ *
+ * @param {String} html
+ * @return {String}
+ */
+FilterXSS.prototype.process = function (html) {
+  // compatible with the input
+  html = html || "";
+  html = html.toString();
+  if (!html) return "";
+
+  var me = this;
+  var options = me.options;
+  var whiteList = options.whiteList;
+  var onTag = options.onTag;
+  var onIgnoreTag = options.onIgnoreTag;
+  var onTagAttr = options.onTagAttr;
+  var onIgnoreTagAttr = options.onIgnoreTagAttr;
+  var safeAttrValue = options.safeAttrValue;
+  var escapeHtml = options.escapeHtml;
+  var cssFilter = me.cssFilter;
+
+  // remove invisible characters
+  if (options.stripBlankChar) {
+    html = DEFAULT.stripBlankChar(html);
+  }
+
+  // remove html comments
+  if (!options.allowCommentTag) {
+    html = DEFAULT.stripCommentTag(html);
+  }
+
+  // if enable stripIgnoreTagBody
+  var stripIgnoreTagBody = false;
+  if (options.stripIgnoreTagBody) {
+    stripIgnoreTagBody = DEFAULT.StripTagBody(
+      options.stripIgnoreTagBody,
+      onIgnoreTag
+    );
+    onIgnoreTag = stripIgnoreTagBody.onIgnoreTag;
+  }
+
+  var retHtml = parseTag(
+    html,
+    function (sourcePosition, position, tag, html, isClosing) {
+      var info = {
+        sourcePosition: sourcePosition,
+        position: position,
+        isClosing: isClosing,
+        isWhite: Object.prototype.hasOwnProperty.call(whiteList, tag),
+      };
+
+      // call `onTag()`
+      var ret = onTag(tag, html, info);
+      if (!isNull(ret)) return ret;
+
+      if (info.isWhite) {
+        if (info.isClosing) {
+          return "</" + tag + ">";
+        }
+
+        var attrs = getAttrs(html);
+        var whiteAttrList = whiteList[tag];
+        var attrsHtml = parseAttr(attrs.html, function (name, value) {
+          // call `onTagAttr()`
+          var isWhiteAttr = _.indexOf(whiteAttrList, name) !== -1;
+          var ret = onTagAttr(tag, name, value, isWhiteAttr);
+          if (!isNull(ret)) return ret;
+
+          if (isWhiteAttr) {
+            // call `safeAttrValue()`
+            value = safeAttrValue(tag, name, value, cssFilter);
+            if (value) {
+              return name + '="' + value + '"';
+            } else {
+              return name;
+            }
+          } else {
+            // call `onIgnoreTagAttr()`
+            ret = onIgnoreTagAttr(tag, name, value, isWhiteAttr);
+            if (!isNull(ret)) return ret;
+            return;
+          }
+        });
+
+        // build new tag html
+        html = "<" + tag;
+        if (attrsHtml) html += " " + attrsHtml;
+        if (attrs.closing) html += " /";
+        html += ">";
+        return html;
+      } else {
+        // call `onIgnoreTag()`
+        ret = onIgnoreTag(tag, html, info);
+        if (!isNull(ret)) return ret;
+        return escapeHtml(html);
+      }
+    },
+    escapeHtml
+  );
+
+  // if enable stripIgnoreTagBody
+  if (stripIgnoreTagBody) {
+    retHtml = stripIgnoreTagBody.remove(retHtml);
+  }
+
+  return retHtml;
+};
+
+module.exports = FilterXSS;
diff --git a/node_modules/xss/package.json b/node_modules/xss/package.json
new file mode 100644
index 0000000..3201288
--- /dev/null
+++ b/node_modules/xss/package.json
@@ -0,0 +1,65 @@
+{
+  "name": "xss",
+  "main": "./lib/index.js",
+  "typings": "./typings/xss.d.ts",
+  "version": "1.0.14",
+  "description": "Sanitize untrusted HTML (to prevent XSS) with a configuration specified by a Whitelist",
+  "author": "Zongmin Lei <leizongmin@gmail.com> (http://ucdok.com)",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/leizongmin/js-xss.git"
+  },
+  "engines": {
+    "node": ">= 0.10.0"
+  },
+  "dependencies": {
+    "commander": "^2.20.3",
+    "cssfilter": "0.0.10"
+  },
+  "devDependencies": {
+    "browserify": "^17.0.0",
+    "coveralls": "^3.1.1",
+    "debug": "^4.3.4",
+    "eslint": "^8.16.0",
+    "mocha": "^8.4.0",
+    "nyc": "^15.1.0",
+    "uglify-js": "^3.15.5"
+  },
+  "files": [
+    "lib",
+    "bin/xss",
+    "dist",
+    "typings/*.d.ts"
+  ],
+  "bin": {
+    "xss": "./bin/xss"
+  },
+  "scripts": {
+    "lint": "eslint lib/**",
+    "test": "export DEBUG=xss:* && mocha -t 5000",
+    "test-cov": "nyc --reporter=lcov mocha --exit \"test/*.js\" && nyc report",
+    "coveralls": "cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js",
+    "build": "./bin/build",
+    "prepublish": "npm run test && npm run build"
+  },
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/leizongmin/js-xss/issues"
+  },
+  "homepage": "https://github.com/leizongmin/js-xss",
+  "keywords": [
+    "sanitization",
+    "xss",
+    "sanitize",
+    "sanitisation",
+    "input",
+    "security",
+    "escape",
+    "encode",
+    "filter",
+    "validator",
+    "html",
+    "injection",
+    "whitelist"
+  ]
+}
diff --git a/node_modules/xss/typings/xss.d.ts b/node_modules/xss/typings/xss.d.ts
new file mode 100644
index 0000000..f55d44a
--- /dev/null
+++ b/node_modules/xss/typings/xss.d.ts
@@ -0,0 +1,203 @@
+/**
+ * xss
+ *
+ * @author Zongmin Lei<leizongmin@gmail.com>
+ */
+
+declare module "xss" {
+  global {
+    function filterXSS(html: string, options?: IFilterXSSOptions): string;
+
+    namespace XSS {
+      export interface IFilterXSSOptions {
+        allowList?: IWhiteList;
+        whiteList?: IWhiteList;
+        onTag?: OnTagHandler;
+        onTagAttr?: OnTagAttrHandler;
+        onIgnoreTag?: OnTagHandler;
+        onIgnoreTagAttr?: OnTagAttrHandler;
+        safeAttrValue?: SafeAttrValueHandler;
+        escapeHtml?: EscapeHandler;
+        stripIgnoreTag?: boolean;
+        stripIgnoreTagBody?: boolean | string[];
+        allowCommentTag?: boolean;
+        stripBlankChar?: boolean;
+        css?: {} | boolean;
+      }
+
+      interface IWhiteList extends Record<string, string[] | undefined> {
+        a?: string[];
+        abbr?: string[];
+        address?: string[];
+        area?: string[];
+        article?: string[];
+        aside?: string[];
+        audio?: string[];
+        b?: string[];
+        bdi?: string[];
+        bdo?: string[];
+        big?: string[];
+        blockquote?: string[];
+        br?: string[];
+        caption?: string[];
+        center?: string[];
+        cite?: string[];
+        code?: string[];
+        col?: string[];
+        colgroup?: string[];
+        dd?: string[];
+        del?: string[];
+        details?: string[];
+        div?: string[];
+        dl?: string[];
+        dt?: string[];
+        em?: string[];
+        figure?: string[];
+        figcaption?: string[];
+        font?: string[];
+        footer?: string[];
+        h1?: string[];
+        h2?: string[];
+        h3?: string[];
+        h4?: string[];
+        h5?: string[];
+        h6?: string[];
+        header?: string[];
+        hr?: string[];
+        i?: string[];
+        img?: string[];
+        ins?: string[];
+        li?: string[];
+        mark?: string[];
+        nav?: string[];
+        ol?: string[];
+        p?: string[];
+        pre?: string[];
+        s?: string[];
+        section?: string[];
+        small?: string[];
+        span?: string[];
+        sub?: string[];
+        sup?: string[];
+        strong?: string[];
+        strike?: string[];
+        summary?: string[];
+        table?: string[];
+        tbody?: string[];
+        td?: string[];
+        tfoot?: string[];
+        th?: string[];
+        thead?: string[];
+        tr?: string[];
+        tt?: string[];
+        u?: string[];
+        ul?: string[];
+        video?: string[];
+      }
+
+      type OnTagHandler = (
+        tag: string,
+        html: string,
+        options: {
+          sourcePosition?: number;
+          position?: number;
+          isClosing?: boolean;
+          isWhite?: boolean;
+        }
+      ) => string | void;
+
+      type OnTagAttrHandler = (
+        tag: string,
+        name: string,
+        value: string,
+        isWhiteAttr: boolean
+      ) => string | void;
+
+      type SafeAttrValueHandler = (
+        tag: string,
+        name: string,
+        value: string,
+        cssFilter: ICSSFilter
+      ) => string;
+
+      type EscapeHandler = (str: string) => string;
+
+      interface ICSSFilter {
+        process(value: string): string;
+      }
+    }
+  }
+  export interface IFilterXSSOptions extends XSS.IFilterXSSOptions {}
+
+  export interface IWhiteList extends XSS.IWhiteList {}
+
+  export type OnTagHandler = XSS.OnTagHandler;
+
+  export type OnTagAttrHandler = XSS.OnTagAttrHandler;
+
+  export type SafeAttrValueHandler = XSS.SafeAttrValueHandler;
+
+  export type EscapeHandler = XSS.EscapeHandler;
+
+  export interface ICSSFilter extends XSS.ICSSFilter {}
+
+  export function StripTagBody(
+    tags: string[],
+    next: () => void
+  ): {
+    onIgnoreTag(
+      tag: string,
+      html: string,
+      options: {
+        position: number;
+        isClosing: boolean;
+      }
+    ): string;
+    remove(html: string): string;
+  };
+
+  export class FilterXSS {
+    constructor(options?: IFilterXSSOptions);
+    process(html: string): string;
+  }
+
+  export function filterXSS(html: string, options?: IFilterXSSOptions): string;
+  export function parseTag(
+    html: string,
+    onTag: (
+      sourcePosition: number,
+      position: number,
+      tag: string,
+      html: string,
+      isClosing: boolean
+    ) => string,
+    escapeHtml: EscapeHandler
+  ): string;
+  export function parseAttr(
+    html: string,
+    onAttr: (name: string, value: string) => string
+  ): string;
+  export const whiteList: IWhiteList;
+  export function getDefaultWhiteList(): IWhiteList;
+  export const onTag: OnTagHandler;
+  export const onIgnoreTag: OnTagHandler;
+  export const onTagAttr: OnTagAttrHandler;
+  export const onIgnoreTagAttr: OnTagAttrHandler;
+  export const safeAttrValue: SafeAttrValueHandler;
+  export const escapeHtml: EscapeHandler;
+  export const escapeQuote: EscapeHandler;
+  export const unescapeQuote: EscapeHandler;
+  export const escapeHtmlEntities: EscapeHandler;
+  export const escapeDangerHtml5Entities: EscapeHandler;
+  export const clearNonPrintableCharacter: EscapeHandler;
+  export const friendlyAttrValue: EscapeHandler;
+  export const escapeAttrValue: EscapeHandler;
+  export function onIgnoreTagStripAll(): string;
+  export const stripCommentTag: EscapeHandler;
+  export const stripBlankChar: EscapeHandler;
+  export const cssFilter: ICSSFilter;
+  export function getDefaultCSSWhiteList(): ICSSFilter;
+
+  const xss: (html: string, options?: IFilterXSSOptions) => string;
+  export default xss;
+}
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..2633e54
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,45 @@
+{
+  "name": "PC问答",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "": {
+      "dependencies": {
+        "mavon-editor": "^3.0.1"
+      }
+    },
+    "node_modules/commander": {
+      "version": "2.20.3",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+    },
+    "node_modules/cssfilter": {
+      "version": "0.0.10",
+      "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz",
+      "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw=="
+    },
+    "node_modules/mavon-editor": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/mavon-editor/-/mavon-editor-3.0.1.tgz",
+      "integrity": "sha512-973cYCwv+AB+fcecsU6Ua6UXATxDMaY0Q7QzKQ/GmRW1sg+3DolZDnCGXth7XHDgrmqKTO57N42fVYujt0wfFw==",
+      "dependencies": {
+        "xss": "^1.0.10"
+      }
+    },
+    "node_modules/xss": {
+      "version": "1.0.14",
+      "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.14.tgz",
+      "integrity": "sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==",
+      "dependencies": {
+        "commander": "^2.20.3",
+        "cssfilter": "0.0.10"
+      },
+      "bin": {
+        "xss": "bin/xss"
+      },
+      "engines": {
+        "node": ">= 0.10.0"
+      }
+    }
+  }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..333f5f4
--- /dev/null
+++ b/package.json
@@ -0,0 +1,5 @@
+{
+  "dependencies": {
+    "mavon-editor": "^3.0.1"
+  }
+}