Commit 94daf87335

Andrew Kelley <andrew@ziglang.org>
2024-02-28 21:29:56
no
1 parent 40e6424
Changed files (2)
lib/docs/commonmark.js
@@ -1,10270 +0,0 @@
-/* commonmark 0.30.0 https://github.com/commonmark/commonmark.js @license BSD3 */
-(function (global, factory) {
-    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
-    typeof define === 'function' && define.amd ? define(['exports'], factory) :
-    (global = global || self, factory(global.commonmark = {}));
-}(this, (function (exports) { 'use strict';
-
-    function isContainer(node) {
-        switch (node._type) {
-            case "document":
-            case "block_quote":
-            case "list":
-            case "item":
-            case "paragraph":
-            case "heading":
-            case "emph":
-            case "strong":
-            case "link":
-            case "image":
-            case "custom_inline":
-            case "custom_block":
-                return true;
-            default:
-                return false;
-        }
-    }
-
-    var resumeAt = function(node, entering) {
-        this.current = node;
-        this.entering = entering === true;
-    };
-
-    var next = function() {
-        var cur = this.current;
-        var entering = this.entering;
-
-        if (cur === null) {
-            return null;
-        }
-
-        var container = isContainer(cur);
-
-        if (entering && container) {
-            if (cur._firstChild) {
-                this.current = cur._firstChild;
-                this.entering = true;
-            } else {
-                // stay on node but exit
-                this.entering = false;
-            }
-        } else if (cur === this.root) {
-            this.current = null;
-        } else if (cur._next === null) {
-            this.current = cur._parent;
-            this.entering = false;
-        } else {
-            this.current = cur._next;
-            this.entering = true;
-        }
-
-        return { entering: entering, node: cur };
-    };
-
-    var NodeWalker = function(root) {
-        return {
-            current: root,
-            root: root,
-            entering: true,
-            next: next,
-            resumeAt: resumeAt
-        };
-    };
-
-    var Node = function(nodeType, sourcepos) {
-        this._type = nodeType;
-        this._parent = null;
-        this._firstChild = null;
-        this._lastChild = null;
-        this._prev = null;
-        this._next = null;
-        this._sourcepos = sourcepos;
-        this._lastLineBlank = false;
-        this._lastLineChecked = false;
-        this._open = true;
-        this._string_content = null;
-        this._literal = null;
-        this._listData = {};
-        this._info = null;
-        this._destination = null;
-        this._title = null;
-        this._isFenced = false;
-        this._fenceChar = null;
-        this._fenceLength = 0;
-        this._fenceOffset = null;
-        this._level = null;
-        this._onEnter = null;
-        this._onExit = null;
-    };
-
-    var proto = Node.prototype;
-
-    Object.defineProperty(proto, "isContainer", {
-        get: function() {
-            return isContainer(this);
-        }
-    });
-
-    Object.defineProperty(proto, "type", {
-        get: function() {
-            return this._type;
-        }
-    });
-
-    Object.defineProperty(proto, "firstChild", {
-        get: function() {
-            return this._firstChild;
-        }
-    });
-
-    Object.defineProperty(proto, "lastChild", {
-        get: function() {
-            return this._lastChild;
-        }
-    });
-
-    Object.defineProperty(proto, "next", {
-        get: function() {
-            return this._next;
-        }
-    });
-
-    Object.defineProperty(proto, "prev", {
-        get: function() {
-            return this._prev;
-        }
-    });
-
-    Object.defineProperty(proto, "parent", {
-        get: function() {
-            return this._parent;
-        }
-    });
-
-    Object.defineProperty(proto, "sourcepos", {
-        get: function() {
-            return this._sourcepos;
-        }
-    });
-
-    Object.defineProperty(proto, "literal", {
-        get: function() {
-            return this._literal;
-        },
-        set: function(s) {
-            this._literal = s;
-        }
-    });
-
-    Object.defineProperty(proto, "destination", {
-        get: function() {
-            return this._destination;
-        },
-        set: function(s) {
-            this._destination = s;
-        }
-    });
-
-    Object.defineProperty(proto, "title", {
-        get: function() {
-            return this._title;
-        },
-        set: function(s) {
-            this._title = s;
-        }
-    });
-
-    Object.defineProperty(proto, "info", {
-        get: function() {
-            return this._info;
-        },
-        set: function(s) {
-            this._info = s;
-        }
-    });
-
-    Object.defineProperty(proto, "level", {
-        get: function() {
-            return this._level;
-        },
-        set: function(s) {
-            this._level = s;
-        }
-    });
-
-    Object.defineProperty(proto, "listType", {
-        get: function() {
-            return this._listData.type;
-        },
-        set: function(t) {
-            this._listData.type = t;
-        }
-    });
-
-    Object.defineProperty(proto, "listTight", {
-        get: function() {
-            return this._listData.tight;
-        },
-        set: function(t) {
-            this._listData.tight = t;
-        }
-    });
-
-    Object.defineProperty(proto, "listStart", {
-        get: function() {
-            return this._listData.start;
-        },
-        set: function(n) {
-            this._listData.start = n;
-        }
-    });
-
-    Object.defineProperty(proto, "listDelimiter", {
-        get: function() {
-            return this._listData.delimiter;
-        },
-        set: function(delim) {
-            this._listData.delimiter = delim;
-        }
-    });
-
-    Object.defineProperty(proto, "onEnter", {
-        get: function() {
-            return this._onEnter;
-        },
-        set: function(s) {
-            this._onEnter = s;
-        }
-    });
-
-    Object.defineProperty(proto, "onExit", {
-        get: function() {
-            return this._onExit;
-        },
-        set: function(s) {
-            this._onExit = s;
-        }
-    });
-
-    Node.prototype.appendChild = function(child) {
-        child.unlink();
-        child._parent = this;
-        if (this._lastChild) {
-            this._lastChild._next = child;
-            child._prev = this._lastChild;
-            this._lastChild = child;
-        } else {
-            this._firstChild = child;
-            this._lastChild = child;
-        }
-    };
-
-    Node.prototype.prependChild = function(child) {
-        child.unlink();
-        child._parent = this;
-        if (this._firstChild) {
-            this._firstChild._prev = child;
-            child._next = this._firstChild;
-            this._firstChild = child;
-        } else {
-            this._firstChild = child;
-            this._lastChild = child;
-        }
-    };
-
-    Node.prototype.unlink = function() {
-        if (this._prev) {
-            this._prev._next = this._next;
-        } else if (this._parent) {
-            this._parent._firstChild = this._next;
-        }
-        if (this._next) {
-            this._next._prev = this._prev;
-        } else if (this._parent) {
-            this._parent._lastChild = this._prev;
-        }
-        this._parent = null;
-        this._next = null;
-        this._prev = null;
-    };
-
-    Node.prototype.insertAfter = function(sibling) {
-        sibling.unlink();
-        sibling._next = this._next;
-        if (sibling._next) {
-            sibling._next._prev = sibling;
-        }
-        sibling._prev = this;
-        this._next = sibling;
-        sibling._parent = this._parent;
-        if (!sibling._next) {
-            sibling._parent._lastChild = sibling;
-        }
-    };
-
-    Node.prototype.insertBefore = function(sibling) {
-        sibling.unlink();
-        sibling._prev = this._prev;
-        if (sibling._prev) {
-            sibling._prev._next = sibling;
-        }
-        sibling._next = this;
-        this._prev = sibling;
-        sibling._parent = this._parent;
-        if (!sibling._prev) {
-            sibling._parent._firstChild = sibling;
-        }
-    };
-
-    Node.prototype.walker = function() {
-        var walker = new NodeWalker(this);
-        return walker;
-    };
-
-    /* Example of use of walker:
-
-     var walker = w.walker();
-     var event;
-
-     while (event = walker.next()) {
-     console.log(event.entering, event.node.type);
-     }
-
-     */
-
-    var encodeCache = {};
-
-
-    // Create a lookup array where anything but characters in `chars` string
-    // and alphanumeric chars is percent-encoded.
-    //
-    function getEncodeCache(exclude) {
-      var i, ch, cache = encodeCache[exclude];
-      if (cache) { return cache; }
-
-      cache = encodeCache[exclude] = [];
-
-      for (i = 0; i < 128; i++) {
-        ch = String.fromCharCode(i);
-
-        if (/^[0-9a-z]$/i.test(ch)) {
-          // always allow unencoded alphanumeric characters
-          cache.push(ch);
-        } else {
-          cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));
-        }
-      }
-
-      for (i = 0; i < exclude.length; i++) {
-        cache[exclude.charCodeAt(i)] = exclude[i];
-      }
-
-      return cache;
-    }
-
-
-    // Encode unsafe characters with percent-encoding, skipping already
-    // encoded sequences.
-    //
-    //  - string       - string to encode
-    //  - exclude      - list of characters to ignore (in addition to a-zA-Z0-9)
-    //  - keepEscaped  - don't encode '%' in a correct escape sequence (default: true)
-    //
-    function encode(string, exclude, keepEscaped) {
-      var i, l, code, nextCode, cache,
-          result = '';
-
-      if (typeof exclude !== 'string') {
-        // encode(string, keepEscaped)
-        keepEscaped  = exclude;
-        exclude = encode.defaultChars;
-      }
-
-      if (typeof keepEscaped === 'undefined') {
-        keepEscaped = true;
-      }
-
-      cache = getEncodeCache(exclude);
-
-      for (i = 0, l = string.length; i < l; i++) {
-        code = string.charCodeAt(i);
-
-        if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {
-          if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {
-            result += string.slice(i, i + 3);
-            i += 2;
-            continue;
-          }
-        }
-
-        if (code < 128) {
-          result += cache[code];
-          continue;
-        }
-
-        if (code >= 0xD800 && code <= 0xDFFF) {
-          if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {
-            nextCode = string.charCodeAt(i + 1);
-            if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {
-              result += encodeURIComponent(string[i] + string[i + 1]);
-              i++;
-              continue;
-            }
-          }
-          result += '%EF%BF%BD';
-          continue;
-        }
-
-        result += encodeURIComponent(string[i]);
-      }
-
-      return result;
-    }
-
-    encode.defaultChars   = ";/?:@&=+$,-_.!~*'()#";
-    encode.componentChars = "-_.!~*'()";
-
-
-    var encode_1 = encode;
-
-    var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
-
-    function unwrapExports (x) {
-    	return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
-    }
-
-    function createCommonjsModule(fn, module) {
-    	return module = { exports: {} }, fn(module, module.exports), module.exports;
-    }
-
-    function getCjsExportFromNamespace (n) {
-    	return n && n['default'] || n;
-    }
-
-    var Aacute = "ร";
-    var aacute = "รก";
-    var Abreve = "ฤ‚";
-    var abreve = "ฤƒ";
-    var ac = "โˆพ";
-    var acd = "โˆฟ";
-    var acE = "โˆพฬณ";
-    var Acirc = "ร‚";
-    var acirc = "รข";
-    var acute = "ยด";
-    var Acy = "ะ";
-    var acy = "ะฐ";
-    var AElig = "ร†";
-    var aelig = "รฆ";
-    var af = "โก";
-    var Afr = "๐”„";
-    var afr = "๐”ž";
-    var Agrave = "ร€";
-    var agrave = "ร ";
-    var alefsym = "โ„ต";
-    var aleph = "โ„ต";
-    var Alpha = "ฮ‘";
-    var alpha = "ฮฑ";
-    var Amacr = "ฤ€";
-    var amacr = "ฤ";
-    var amalg = "โจฟ";
-    var amp = "&";
-    var AMP = "&";
-    var andand = "โฉ•";
-    var And = "โฉ“";
-    var and = "โˆง";
-    var andd = "โฉœ";
-    var andslope = "โฉ˜";
-    var andv = "โฉš";
-    var ang = "โˆ ";
-    var ange = "โฆค";
-    var angle = "โˆ ";
-    var angmsdaa = "โฆจ";
-    var angmsdab = "โฆฉ";
-    var angmsdac = "โฆช";
-    var angmsdad = "โฆซ";
-    var angmsdae = "โฆฌ";
-    var angmsdaf = "โฆญ";
-    var angmsdag = "โฆฎ";
-    var angmsdah = "โฆฏ";
-    var angmsd = "โˆก";
-    var angrt = "โˆŸ";
-    var angrtvb = "โŠพ";
-    var angrtvbd = "โฆ";
-    var angsph = "โˆข";
-    var angst = "ร…";
-    var angzarr = "โผ";
-    var Aogon = "ฤ„";
-    var aogon = "ฤ…";
-    var Aopf = "๐”ธ";
-    var aopf = "๐•’";
-    var apacir = "โฉฏ";
-    var ap = "โ‰ˆ";
-    var apE = "โฉฐ";
-    var ape = "โ‰Š";
-    var apid = "โ‰‹";
-    var apos = "'";
-    var ApplyFunction = "โก";
-    var approx = "โ‰ˆ";
-    var approxeq = "โ‰Š";
-    var Aring = "ร…";
-    var aring = "รฅ";
-    var Ascr = "๐’œ";
-    var ascr = "๐’ถ";
-    var Assign = "โ‰”";
-    var ast = "*";
-    var asymp = "โ‰ˆ";
-    var asympeq = "โ‰";
-    var Atilde = "รƒ";
-    var atilde = "รฃ";
-    var Auml = "ร„";
-    var auml = "รค";
-    var awconint = "โˆณ";
-    var awint = "โจ‘";
-    var backcong = "โ‰Œ";
-    var backepsilon = "ฯถ";
-    var backprime = "โ€ต";
-    var backsim = "โˆฝ";
-    var backsimeq = "โ‹";
-    var Backslash = "โˆ–";
-    var Barv = "โซง";
-    var barvee = "โŠฝ";
-    var barwed = "โŒ…";
-    var Barwed = "โŒ†";
-    var barwedge = "โŒ…";
-    var bbrk = "โŽต";
-    var bbrktbrk = "โŽถ";
-    var bcong = "โ‰Œ";
-    var Bcy = "ะ‘";
-    var bcy = "ะฑ";
-    var bdquo = "โ€ž";
-    var becaus = "โˆต";
-    var because = "โˆต";
-    var Because = "โˆต";
-    var bemptyv = "โฆฐ";
-    var bepsi = "ฯถ";
-    var bernou = "โ„ฌ";
-    var Bernoullis = "โ„ฌ";
-    var Beta = "ฮ’";
-    var beta = "ฮฒ";
-    var beth = "โ„ถ";
-    var between = "โ‰ฌ";
-    var Bfr = "๐”…";
-    var bfr = "๐”Ÿ";
-    var bigcap = "โ‹‚";
-    var bigcirc = "โ—ฏ";
-    var bigcup = "โ‹ƒ";
-    var bigodot = "โจ€";
-    var bigoplus = "โจ";
-    var bigotimes = "โจ‚";
-    var bigsqcup = "โจ†";
-    var bigstar = "โ˜…";
-    var bigtriangledown = "โ–ฝ";
-    var bigtriangleup = "โ–ณ";
-    var biguplus = "โจ„";
-    var bigvee = "โ‹";
-    var bigwedge = "โ‹€";
-    var bkarow = "โค";
-    var blacklozenge = "โงซ";
-    var blacksquare = "โ–ช";
-    var blacktriangle = "โ–ด";
-    var blacktriangledown = "โ–พ";
-    var blacktriangleleft = "โ—‚";
-    var blacktriangleright = "โ–ธ";
-    var blank = "โฃ";
-    var blk12 = "โ–’";
-    var blk14 = "โ–‘";
-    var blk34 = "โ–“";
-    var block = "โ–ˆ";
-    var bne = "=โƒฅ";
-    var bnequiv = "โ‰กโƒฅ";
-    var bNot = "โซญ";
-    var bnot = "โŒ";
-    var Bopf = "๐”น";
-    var bopf = "๐•“";
-    var bot = "โŠฅ";
-    var bottom = "โŠฅ";
-    var bowtie = "โ‹ˆ";
-    var boxbox = "โง‰";
-    var boxdl = "โ”";
-    var boxdL = "โ••";
-    var boxDl = "โ•–";
-    var boxDL = "โ•—";
-    var boxdr = "โ”Œ";
-    var boxdR = "โ•’";
-    var boxDr = "โ•“";
-    var boxDR = "โ•”";
-    var boxh = "โ”€";
-    var boxH = "โ•";
-    var boxhd = "โ”ฌ";
-    var boxHd = "โ•ค";
-    var boxhD = "โ•ฅ";
-    var boxHD = "โ•ฆ";
-    var boxhu = "โ”ด";
-    var boxHu = "โ•ง";
-    var boxhU = "โ•จ";
-    var boxHU = "โ•ฉ";
-    var boxminus = "โŠŸ";
-    var boxplus = "โŠž";
-    var boxtimes = "โŠ ";
-    var boxul = "โ”˜";
-    var boxuL = "โ•›";
-    var boxUl = "โ•œ";
-    var boxUL = "โ•";
-    var boxur = "โ””";
-    var boxuR = "โ•˜";
-    var boxUr = "โ•™";
-    var boxUR = "โ•š";
-    var boxv = "โ”‚";
-    var boxV = "โ•‘";
-    var boxvh = "โ”ผ";
-    var boxvH = "โ•ช";
-    var boxVh = "โ•ซ";
-    var boxVH = "โ•ฌ";
-    var boxvl = "โ”ค";
-    var boxvL = "โ•ก";
-    var boxVl = "โ•ข";
-    var boxVL = "โ•ฃ";
-    var boxvr = "โ”œ";
-    var boxvR = "โ•ž";
-    var boxVr = "โ•Ÿ";
-    var boxVR = "โ• ";
-    var bprime = "โ€ต";
-    var breve = "ห˜";
-    var Breve = "ห˜";
-    var brvbar = "ยฆ";
-    var bscr = "๐’ท";
-    var Bscr = "โ„ฌ";
-    var bsemi = "โ";
-    var bsim = "โˆฝ";
-    var bsime = "โ‹";
-    var bsolb = "โง…";
-    var bsol = "\\";
-    var bsolhsub = "โŸˆ";
-    var bull = "โ€ข";
-    var bullet = "โ€ข";
-    var bump = "โ‰Ž";
-    var bumpE = "โชฎ";
-    var bumpe = "โ‰";
-    var Bumpeq = "โ‰Ž";
-    var bumpeq = "โ‰";
-    var Cacute = "ฤ†";
-    var cacute = "ฤ‡";
-    var capand = "โฉ„";
-    var capbrcup = "โฉ‰";
-    var capcap = "โฉ‹";
-    var cap = "โˆฉ";
-    var Cap = "โ‹’";
-    var capcup = "โฉ‡";
-    var capdot = "โฉ€";
-    var CapitalDifferentialD = "โ……";
-    var caps = "โˆฉ๏ธ€";
-    var caret = "โ";
-    var caron = "ห‡";
-    var Cayleys = "โ„ญ";
-    var ccaps = "โฉ";
-    var Ccaron = "ฤŒ";
-    var ccaron = "ฤ";
-    var Ccedil = "ร‡";
-    var ccedil = "รง";
-    var Ccirc = "ฤˆ";
-    var ccirc = "ฤ‰";
-    var Cconint = "โˆฐ";
-    var ccups = "โฉŒ";
-    var ccupssm = "โฉ";
-    var Cdot = "ฤŠ";
-    var cdot = "ฤ‹";
-    var cedil = "ยธ";
-    var Cedilla = "ยธ";
-    var cemptyv = "โฆฒ";
-    var cent = "ยข";
-    var centerdot = "ยท";
-    var CenterDot = "ยท";
-    var cfr = "๐” ";
-    var Cfr = "โ„ญ";
-    var CHcy = "ะง";
-    var chcy = "ั‡";
-    var check = "โœ“";
-    var checkmark = "โœ“";
-    var Chi = "ฮง";
-    var chi = "ฯ‡";
-    var circ = "ห†";
-    var circeq = "โ‰—";
-    var circlearrowleft = "โ†บ";
-    var circlearrowright = "โ†ป";
-    var circledast = "โŠ›";
-    var circledcirc = "โŠš";
-    var circleddash = "โŠ";
-    var CircleDot = "โŠ™";
-    var circledR = "ยฎ";
-    var circledS = "โ“ˆ";
-    var CircleMinus = "โŠ–";
-    var CirclePlus = "โŠ•";
-    var CircleTimes = "โŠ—";
-    var cir = "โ—‹";
-    var cirE = "โงƒ";
-    var cire = "โ‰—";
-    var cirfnint = "โจ";
-    var cirmid = "โซฏ";
-    var cirscir = "โง‚";
-    var ClockwiseContourIntegral = "โˆฒ";
-    var CloseCurlyDoubleQuote = "โ€";
-    var CloseCurlyQuote = "โ€™";
-    var clubs = "โ™ฃ";
-    var clubsuit = "โ™ฃ";
-    var colon = ":";
-    var Colon = "โˆท";
-    var Colone = "โฉด";
-    var colone = "โ‰”";
-    var coloneq = "โ‰”";
-    var comma = ",";
-    var commat = "@";
-    var comp = "โˆ";
-    var compfn = "โˆ˜";
-    var complement = "โˆ";
-    var complexes = "โ„‚";
-    var cong = "โ‰…";
-    var congdot = "โฉญ";
-    var Congruent = "โ‰ก";
-    var conint = "โˆฎ";
-    var Conint = "โˆฏ";
-    var ContourIntegral = "โˆฎ";
-    var copf = "๐•”";
-    var Copf = "โ„‚";
-    var coprod = "โˆ";
-    var Coproduct = "โˆ";
-    var copy = "ยฉ";
-    var COPY = "ยฉ";
-    var copysr = "โ„—";
-    var CounterClockwiseContourIntegral = "โˆณ";
-    var crarr = "โ†ต";
-    var cross = "โœ—";
-    var Cross = "โจฏ";
-    var Cscr = "๐’ž";
-    var cscr = "๐’ธ";
-    var csub = "โซ";
-    var csube = "โซ‘";
-    var csup = "โซ";
-    var csupe = "โซ’";
-    var ctdot = "โ‹ฏ";
-    var cudarrl = "โคธ";
-    var cudarrr = "โคต";
-    var cuepr = "โ‹ž";
-    var cuesc = "โ‹Ÿ";
-    var cularr = "โ†ถ";
-    var cularrp = "โคฝ";
-    var cupbrcap = "โฉˆ";
-    var cupcap = "โฉ†";
-    var CupCap = "โ‰";
-    var cup = "โˆช";
-    var Cup = "โ‹“";
-    var cupcup = "โฉŠ";
-    var cupdot = "โŠ";
-    var cupor = "โฉ…";
-    var cups = "โˆช๏ธ€";
-    var curarr = "โ†ท";
-    var curarrm = "โคผ";
-    var curlyeqprec = "โ‹ž";
-    var curlyeqsucc = "โ‹Ÿ";
-    var curlyvee = "โ‹Ž";
-    var curlywedge = "โ‹";
-    var curren = "ยค";
-    var curvearrowleft = "โ†ถ";
-    var curvearrowright = "โ†ท";
-    var cuvee = "โ‹Ž";
-    var cuwed = "โ‹";
-    var cwconint = "โˆฒ";
-    var cwint = "โˆฑ";
-    var cylcty = "โŒญ";
-    var dagger = "โ€ ";
-    var Dagger = "โ€ก";
-    var daleth = "โ„ธ";
-    var darr = "โ†“";
-    var Darr = "โ†ก";
-    var dArr = "โ‡“";
-    var dash = "โ€";
-    var Dashv = "โซค";
-    var dashv = "โŠฃ";
-    var dbkarow = "โค";
-    var dblac = "ห";
-    var Dcaron = "ฤŽ";
-    var dcaron = "ฤ";
-    var Dcy = "ะ”";
-    var dcy = "ะด";
-    var ddagger = "โ€ก";
-    var ddarr = "โ‡Š";
-    var DD = "โ……";
-    var dd = "โ…†";
-    var DDotrahd = "โค‘";
-    var ddotseq = "โฉท";
-    var deg = "ยฐ";
-    var Del = "โˆ‡";
-    var Delta = "ฮ”";
-    var delta = "ฮด";
-    var demptyv = "โฆฑ";
-    var dfisht = "โฅฟ";
-    var Dfr = "๐”‡";
-    var dfr = "๐”ก";
-    var dHar = "โฅฅ";
-    var dharl = "โ‡ƒ";
-    var dharr = "โ‡‚";
-    var DiacriticalAcute = "ยด";
-    var DiacriticalDot = "ห™";
-    var DiacriticalDoubleAcute = "ห";
-    var DiacriticalGrave = "`";
-    var DiacriticalTilde = "หœ";
-    var diam = "โ‹„";
-    var diamond = "โ‹„";
-    var Diamond = "โ‹„";
-    var diamondsuit = "โ™ฆ";
-    var diams = "โ™ฆ";
-    var die = "ยจ";
-    var DifferentialD = "โ…†";
-    var digamma = "ฯ";
-    var disin = "โ‹ฒ";
-    var div = "รท";
-    var divide = "รท";
-    var divideontimes = "โ‹‡";
-    var divonx = "โ‹‡";
-    var DJcy = "ะ‚";
-    var djcy = "ั’";
-    var dlcorn = "โŒž";
-    var dlcrop = "โŒ";
-    var dollar = "$";
-    var Dopf = "๐”ป";
-    var dopf = "๐••";
-    var Dot = "ยจ";
-    var dot = "ห™";
-    var DotDot = "โƒœ";
-    var doteq = "โ‰";
-    var doteqdot = "โ‰‘";
-    var DotEqual = "โ‰";
-    var dotminus = "โˆธ";
-    var dotplus = "โˆ”";
-    var dotsquare = "โŠก";
-    var doublebarwedge = "โŒ†";
-    var DoubleContourIntegral = "โˆฏ";
-    var DoubleDot = "ยจ";
-    var DoubleDownArrow = "โ‡“";
-    var DoubleLeftArrow = "โ‡";
-    var DoubleLeftRightArrow = "โ‡”";
-    var DoubleLeftTee = "โซค";
-    var DoubleLongLeftArrow = "โŸธ";
-    var DoubleLongLeftRightArrow = "โŸบ";
-    var DoubleLongRightArrow = "โŸน";
-    var DoubleRightArrow = "โ‡’";
-    var DoubleRightTee = "โŠจ";
-    var DoubleUpArrow = "โ‡‘";
-    var DoubleUpDownArrow = "โ‡•";
-    var DoubleVerticalBar = "โˆฅ";
-    var DownArrowBar = "โค“";
-    var downarrow = "โ†“";
-    var DownArrow = "โ†“";
-    var Downarrow = "โ‡“";
-    var DownArrowUpArrow = "โ‡ต";
-    var DownBreve = "ฬ‘";
-    var downdownarrows = "โ‡Š";
-    var downharpoonleft = "โ‡ƒ";
-    var downharpoonright = "โ‡‚";
-    var DownLeftRightVector = "โฅ";
-    var DownLeftTeeVector = "โฅž";
-    var DownLeftVectorBar = "โฅ–";
-    var DownLeftVector = "โ†ฝ";
-    var DownRightTeeVector = "โฅŸ";
-    var DownRightVectorBar = "โฅ—";
-    var DownRightVector = "โ‡";
-    var DownTeeArrow = "โ†ง";
-    var DownTee = "โŠค";
-    var drbkarow = "โค";
-    var drcorn = "โŒŸ";
-    var drcrop = "โŒŒ";
-    var Dscr = "๐’Ÿ";
-    var dscr = "๐’น";
-    var DScy = "ะ…";
-    var dscy = "ั•";
-    var dsol = "โงถ";
-    var Dstrok = "ฤ";
-    var dstrok = "ฤ‘";
-    var dtdot = "โ‹ฑ";
-    var dtri = "โ–ฟ";
-    var dtrif = "โ–พ";
-    var duarr = "โ‡ต";
-    var duhar = "โฅฏ";
-    var dwangle = "โฆฆ";
-    var DZcy = "ะ";
-    var dzcy = "ัŸ";
-    var dzigrarr = "โŸฟ";
-    var Eacute = "ร‰";
-    var eacute = "รฉ";
-    var easter = "โฉฎ";
-    var Ecaron = "ฤš";
-    var ecaron = "ฤ›";
-    var Ecirc = "รŠ";
-    var ecirc = "รช";
-    var ecir = "โ‰–";
-    var ecolon = "โ‰•";
-    var Ecy = "ะญ";
-    var ecy = "ั";
-    var eDDot = "โฉท";
-    var Edot = "ฤ–";
-    var edot = "ฤ—";
-    var eDot = "โ‰‘";
-    var ee = "โ…‡";
-    var efDot = "โ‰’";
-    var Efr = "๐”ˆ";
-    var efr = "๐”ข";
-    var eg = "โชš";
-    var Egrave = "รˆ";
-    var egrave = "รจ";
-    var egs = "โช–";
-    var egsdot = "โช˜";
-    var el = "โช™";
-    var Element = "โˆˆ";
-    var elinters = "โง";
-    var ell = "โ„“";
-    var els = "โช•";
-    var elsdot = "โช—";
-    var Emacr = "ฤ’";
-    var emacr = "ฤ“";
-    var empty = "โˆ…";
-    var emptyset = "โˆ…";
-    var EmptySmallSquare = "โ—ป";
-    var emptyv = "โˆ…";
-    var EmptyVerySmallSquare = "โ–ซ";
-    var emsp13 = "โ€„";
-    var emsp14 = "โ€…";
-    var emsp = "โ€ƒ";
-    var ENG = "ลŠ";
-    var eng = "ล‹";
-    var ensp = "โ€‚";
-    var Eogon = "ฤ˜";
-    var eogon = "ฤ™";
-    var Eopf = "๐”ผ";
-    var eopf = "๐•–";
-    var epar = "โ‹•";
-    var eparsl = "โงฃ";
-    var eplus = "โฉฑ";
-    var epsi = "ฮต";
-    var Epsilon = "ฮ•";
-    var epsilon = "ฮต";
-    var epsiv = "ฯต";
-    var eqcirc = "โ‰–";
-    var eqcolon = "โ‰•";
-    var eqsim = "โ‰‚";
-    var eqslantgtr = "โช–";
-    var eqslantless = "โช•";
-    var Equal = "โฉต";
-    var equals = "=";
-    var EqualTilde = "โ‰‚";
-    var equest = "โ‰Ÿ";
-    var Equilibrium = "โ‡Œ";
-    var equiv = "โ‰ก";
-    var equivDD = "โฉธ";
-    var eqvparsl = "โงฅ";
-    var erarr = "โฅฑ";
-    var erDot = "โ‰“";
-    var escr = "โ„ฏ";
-    var Escr = "โ„ฐ";
-    var esdot = "โ‰";
-    var Esim = "โฉณ";
-    var esim = "โ‰‚";
-    var Eta = "ฮ—";
-    var eta = "ฮท";
-    var ETH = "ร";
-    var eth = "รฐ";
-    var Euml = "ร‹";
-    var euml = "รซ";
-    var euro = "โ‚ฌ";
-    var excl = "!";
-    var exist = "โˆƒ";
-    var Exists = "โˆƒ";
-    var expectation = "โ„ฐ";
-    var exponentiale = "โ…‡";
-    var ExponentialE = "โ…‡";
-    var fallingdotseq = "โ‰’";
-    var Fcy = "ะค";
-    var fcy = "ั„";
-    var female = "โ™€";
-    var ffilig = "๏ฌƒ";
-    var fflig = "๏ฌ€";
-    var ffllig = "๏ฌ„";
-    var Ffr = "๐”‰";
-    var ffr = "๐”ฃ";
-    var filig = "๏ฌ";
-    var FilledSmallSquare = "โ—ผ";
-    var FilledVerySmallSquare = "โ–ช";
-    var fjlig = "fj";
-    var flat = "โ™ญ";
-    var fllig = "๏ฌ‚";
-    var fltns = "โ–ฑ";
-    var fnof = "ฦ’";
-    var Fopf = "๐”ฝ";
-    var fopf = "๐•—";
-    var forall = "โˆ€";
-    var ForAll = "โˆ€";
-    var fork = "โ‹”";
-    var forkv = "โซ™";
-    var Fouriertrf = "โ„ฑ";
-    var fpartint = "โจ";
-    var frac12 = "ยฝ";
-    var frac13 = "โ…“";
-    var frac14 = "ยผ";
-    var frac15 = "โ…•";
-    var frac16 = "โ…™";
-    var frac18 = "โ…›";
-    var frac23 = "โ…”";
-    var frac25 = "โ…–";
-    var frac34 = "ยพ";
-    var frac35 = "โ…—";
-    var frac38 = "โ…œ";
-    var frac45 = "โ…˜";
-    var frac56 = "โ…š";
-    var frac58 = "โ…";
-    var frac78 = "โ…ž";
-    var frasl = "โ„";
-    var frown = "โŒข";
-    var fscr = "๐’ป";
-    var Fscr = "โ„ฑ";
-    var gacute = "วต";
-    var Gamma = "ฮ“";
-    var gamma = "ฮณ";
-    var Gammad = "ฯœ";
-    var gammad = "ฯ";
-    var gap = "โช†";
-    var Gbreve = "ฤž";
-    var gbreve = "ฤŸ";
-    var Gcedil = "ฤข";
-    var Gcirc = "ฤœ";
-    var gcirc = "ฤ";
-    var Gcy = "ะ“";
-    var gcy = "ะณ";
-    var Gdot = "ฤ ";
-    var gdot = "ฤก";
-    var ge = "โ‰ฅ";
-    var gE = "โ‰ง";
-    var gEl = "โชŒ";
-    var gel = "โ‹›";
-    var geq = "โ‰ฅ";
-    var geqq = "โ‰ง";
-    var geqslant = "โฉพ";
-    var gescc = "โชฉ";
-    var ges = "โฉพ";
-    var gesdot = "โช€";
-    var gesdoto = "โช‚";
-    var gesdotol = "โช„";
-    var gesl = "โ‹›๏ธ€";
-    var gesles = "โช”";
-    var Gfr = "๐”Š";
-    var gfr = "๐”ค";
-    var gg = "โ‰ซ";
-    var Gg = "โ‹™";
-    var ggg = "โ‹™";
-    var gimel = "โ„ท";
-    var GJcy = "ะƒ";
-    var gjcy = "ั“";
-    var gla = "โชฅ";
-    var gl = "โ‰ท";
-    var glE = "โช’";
-    var glj = "โชค";
-    var gnap = "โชŠ";
-    var gnapprox = "โชŠ";
-    var gne = "โชˆ";
-    var gnE = "โ‰ฉ";
-    var gneq = "โชˆ";
-    var gneqq = "โ‰ฉ";
-    var gnsim = "โ‹ง";
-    var Gopf = "๐”พ";
-    var gopf = "๐•˜";
-    var grave = "`";
-    var GreaterEqual = "โ‰ฅ";
-    var GreaterEqualLess = "โ‹›";
-    var GreaterFullEqual = "โ‰ง";
-    var GreaterGreater = "โชข";
-    var GreaterLess = "โ‰ท";
-    var GreaterSlantEqual = "โฉพ";
-    var GreaterTilde = "โ‰ณ";
-    var Gscr = "๐’ข";
-    var gscr = "โ„Š";
-    var gsim = "โ‰ณ";
-    var gsime = "โชŽ";
-    var gsiml = "โช";
-    var gtcc = "โชง";
-    var gtcir = "โฉบ";
-    var gt = ">";
-    var GT = ">";
-    var Gt = "โ‰ซ";
-    var gtdot = "โ‹—";
-    var gtlPar = "โฆ•";
-    var gtquest = "โฉผ";
-    var gtrapprox = "โช†";
-    var gtrarr = "โฅธ";
-    var gtrdot = "โ‹—";
-    var gtreqless = "โ‹›";
-    var gtreqqless = "โชŒ";
-    var gtrless = "โ‰ท";
-    var gtrsim = "โ‰ณ";
-    var gvertneqq = "โ‰ฉ๏ธ€";
-    var gvnE = "โ‰ฉ๏ธ€";
-    var Hacek = "ห‡";
-    var hairsp = "โ€Š";
-    var half = "ยฝ";
-    var hamilt = "โ„‹";
-    var HARDcy = "ะช";
-    var hardcy = "ัŠ";
-    var harrcir = "โฅˆ";
-    var harr = "โ†”";
-    var hArr = "โ‡”";
-    var harrw = "โ†ญ";
-    var Hat = "^";
-    var hbar = "โ„";
-    var Hcirc = "ฤค";
-    var hcirc = "ฤฅ";
-    var hearts = "โ™ฅ";
-    var heartsuit = "โ™ฅ";
-    var hellip = "โ€ฆ";
-    var hercon = "โŠน";
-    var hfr = "๐”ฅ";
-    var Hfr = "โ„Œ";
-    var HilbertSpace = "โ„‹";
-    var hksearow = "โคฅ";
-    var hkswarow = "โคฆ";
-    var hoarr = "โ‡ฟ";
-    var homtht = "โˆป";
-    var hookleftarrow = "โ†ฉ";
-    var hookrightarrow = "โ†ช";
-    var hopf = "๐•™";
-    var Hopf = "โ„";
-    var horbar = "โ€•";
-    var HorizontalLine = "โ”€";
-    var hscr = "๐’ฝ";
-    var Hscr = "โ„‹";
-    var hslash = "โ„";
-    var Hstrok = "ฤฆ";
-    var hstrok = "ฤง";
-    var HumpDownHump = "โ‰Ž";
-    var HumpEqual = "โ‰";
-    var hybull = "โƒ";
-    var hyphen = "โ€";
-    var Iacute = "ร";
-    var iacute = "รญ";
-    var ic = "โฃ";
-    var Icirc = "รŽ";
-    var icirc = "รฎ";
-    var Icy = "ะ˜";
-    var icy = "ะธ";
-    var Idot = "ฤฐ";
-    var IEcy = "ะ•";
-    var iecy = "ะต";
-    var iexcl = "ยก";
-    var iff = "โ‡”";
-    var ifr = "๐”ฆ";
-    var Ifr = "โ„‘";
-    var Igrave = "รŒ";
-    var igrave = "รฌ";
-    var ii = "โ…ˆ";
-    var iiiint = "โจŒ";
-    var iiint = "โˆญ";
-    var iinfin = "โงœ";
-    var iiota = "โ„ฉ";
-    var IJlig = "ฤฒ";
-    var ijlig = "ฤณ";
-    var Imacr = "ฤช";
-    var imacr = "ฤซ";
-    var image = "โ„‘";
-    var ImaginaryI = "โ…ˆ";
-    var imagline = "โ„";
-    var imagpart = "โ„‘";
-    var imath = "ฤฑ";
-    var Im = "โ„‘";
-    var imof = "โŠท";
-    var imped = "ฦต";
-    var Implies = "โ‡’";
-    var incare = "โ„…";
-    var infin = "โˆž";
-    var infintie = "โง";
-    var inodot = "ฤฑ";
-    var intcal = "โŠบ";
-    var int = "โˆซ";
-    var Int = "โˆฌ";
-    var integers = "โ„ค";
-    var Integral = "โˆซ";
-    var intercal = "โŠบ";
-    var Intersection = "โ‹‚";
-    var intlarhk = "โจ—";
-    var intprod = "โจผ";
-    var InvisibleComma = "โฃ";
-    var InvisibleTimes = "โข";
-    var IOcy = "ะ";
-    var iocy = "ั‘";
-    var Iogon = "ฤฎ";
-    var iogon = "ฤฏ";
-    var Iopf = "๐•€";
-    var iopf = "๐•š";
-    var Iota = "ฮ™";
-    var iota = "ฮน";
-    var iprod = "โจผ";
-    var iquest = "ยฟ";
-    var iscr = "๐’พ";
-    var Iscr = "โ„";
-    var isin = "โˆˆ";
-    var isindot = "โ‹ต";
-    var isinE = "โ‹น";
-    var isins = "โ‹ด";
-    var isinsv = "โ‹ณ";
-    var isinv = "โˆˆ";
-    var it = "โข";
-    var Itilde = "ฤจ";
-    var itilde = "ฤฉ";
-    var Iukcy = "ะ†";
-    var iukcy = "ั–";
-    var Iuml = "ร";
-    var iuml = "รฏ";
-    var Jcirc = "ฤด";
-    var jcirc = "ฤต";
-    var Jcy = "ะ™";
-    var jcy = "ะน";
-    var Jfr = "๐”";
-    var jfr = "๐”ง";
-    var jmath = "ศท";
-    var Jopf = "๐•";
-    var jopf = "๐•›";
-    var Jscr = "๐’ฅ";
-    var jscr = "๐’ฟ";
-    var Jsercy = "ะˆ";
-    var jsercy = "ั˜";
-    var Jukcy = "ะ„";
-    var jukcy = "ั”";
-    var Kappa = "ฮš";
-    var kappa = "ฮบ";
-    var kappav = "ฯฐ";
-    var Kcedil = "ฤถ";
-    var kcedil = "ฤท";
-    var Kcy = "ะš";
-    var kcy = "ะบ";
-    var Kfr = "๐”Ž";
-    var kfr = "๐”จ";
-    var kgreen = "ฤธ";
-    var KHcy = "ะฅ";
-    var khcy = "ั…";
-    var KJcy = "ะŒ";
-    var kjcy = "ัœ";
-    var Kopf = "๐•‚";
-    var kopf = "๐•œ";
-    var Kscr = "๐’ฆ";
-    var kscr = "๐“€";
-    var lAarr = "โ‡š";
-    var Lacute = "ฤน";
-    var lacute = "ฤบ";
-    var laemptyv = "โฆด";
-    var lagran = "โ„’";
-    var Lambda = "ฮ›";
-    var lambda = "ฮป";
-    var lang = "โŸจ";
-    var Lang = "โŸช";
-    var langd = "โฆ‘";
-    var langle = "โŸจ";
-    var lap = "โช…";
-    var Laplacetrf = "โ„’";
-    var laquo = "ยซ";
-    var larrb = "โ‡ค";
-    var larrbfs = "โคŸ";
-    var larr = "โ†";
-    var Larr = "โ†ž";
-    var lArr = "โ‡";
-    var larrfs = "โค";
-    var larrhk = "โ†ฉ";
-    var larrlp = "โ†ซ";
-    var larrpl = "โคน";
-    var larrsim = "โฅณ";
-    var larrtl = "โ†ข";
-    var latail = "โค™";
-    var lAtail = "โค›";
-    var lat = "โชซ";
-    var late = "โชญ";
-    var lates = "โชญ๏ธ€";
-    var lbarr = "โคŒ";
-    var lBarr = "โคŽ";
-    var lbbrk = "โฒ";
-    var lbrace = "{";
-    var lbrack = "[";
-    var lbrke = "โฆ‹";
-    var lbrksld = "โฆ";
-    var lbrkslu = "โฆ";
-    var Lcaron = "ฤฝ";
-    var lcaron = "ฤพ";
-    var Lcedil = "ฤป";
-    var lcedil = "ฤผ";
-    var lceil = "โŒˆ";
-    var lcub = "{";
-    var Lcy = "ะ›";
-    var lcy = "ะป";
-    var ldca = "โคถ";
-    var ldquo = "โ€œ";
-    var ldquor = "โ€ž";
-    var ldrdhar = "โฅง";
-    var ldrushar = "โฅ‹";
-    var ldsh = "โ†ฒ";
-    var le = "โ‰ค";
-    var lE = "โ‰ฆ";
-    var LeftAngleBracket = "โŸจ";
-    var LeftArrowBar = "โ‡ค";
-    var leftarrow = "โ†";
-    var LeftArrow = "โ†";
-    var Leftarrow = "โ‡";
-    var LeftArrowRightArrow = "โ‡†";
-    var leftarrowtail = "โ†ข";
-    var LeftCeiling = "โŒˆ";
-    var LeftDoubleBracket = "โŸฆ";
-    var LeftDownTeeVector = "โฅก";
-    var LeftDownVectorBar = "โฅ™";
-    var LeftDownVector = "โ‡ƒ";
-    var LeftFloor = "โŒŠ";
-    var leftharpoondown = "โ†ฝ";
-    var leftharpoonup = "โ†ผ";
-    var leftleftarrows = "โ‡‡";
-    var leftrightarrow = "โ†”";
-    var LeftRightArrow = "โ†”";
-    var Leftrightarrow = "โ‡”";
-    var leftrightarrows = "โ‡†";
-    var leftrightharpoons = "โ‡‹";
-    var leftrightsquigarrow = "โ†ญ";
-    var LeftRightVector = "โฅŽ";
-    var LeftTeeArrow = "โ†ค";
-    var LeftTee = "โŠฃ";
-    var LeftTeeVector = "โฅš";
-    var leftthreetimes = "โ‹‹";
-    var LeftTriangleBar = "โง";
-    var LeftTriangle = "โŠฒ";
-    var LeftTriangleEqual = "โŠด";
-    var LeftUpDownVector = "โฅ‘";
-    var LeftUpTeeVector = "โฅ ";
-    var LeftUpVectorBar = "โฅ˜";
-    var LeftUpVector = "โ†ฟ";
-    var LeftVectorBar = "โฅ’";
-    var LeftVector = "โ†ผ";
-    var lEg = "โช‹";
-    var leg = "โ‹š";
-    var leq = "โ‰ค";
-    var leqq = "โ‰ฆ";
-    var leqslant = "โฉฝ";
-    var lescc = "โชจ";
-    var les = "โฉฝ";
-    var lesdot = "โฉฟ";
-    var lesdoto = "โช";
-    var lesdotor = "โชƒ";
-    var lesg = "โ‹š๏ธ€";
-    var lesges = "โช“";
-    var lessapprox = "โช…";
-    var lessdot = "โ‹–";
-    var lesseqgtr = "โ‹š";
-    var lesseqqgtr = "โช‹";
-    var LessEqualGreater = "โ‹š";
-    var LessFullEqual = "โ‰ฆ";
-    var LessGreater = "โ‰ถ";
-    var lessgtr = "โ‰ถ";
-    var LessLess = "โชก";
-    var lesssim = "โ‰ฒ";
-    var LessSlantEqual = "โฉฝ";
-    var LessTilde = "โ‰ฒ";
-    var lfisht = "โฅผ";
-    var lfloor = "โŒŠ";
-    var Lfr = "๐”";
-    var lfr = "๐”ฉ";
-    var lg = "โ‰ถ";
-    var lgE = "โช‘";
-    var lHar = "โฅข";
-    var lhard = "โ†ฝ";
-    var lharu = "โ†ผ";
-    var lharul = "โฅช";
-    var lhblk = "โ–„";
-    var LJcy = "ะ‰";
-    var ljcy = "ั™";
-    var llarr = "โ‡‡";
-    var ll = "โ‰ช";
-    var Ll = "โ‹˜";
-    var llcorner = "โŒž";
-    var Lleftarrow = "โ‡š";
-    var llhard = "โฅซ";
-    var lltri = "โ—บ";
-    var Lmidot = "ฤฟ";
-    var lmidot = "ล€";
-    var lmoustache = "โŽฐ";
-    var lmoust = "โŽฐ";
-    var lnap = "โช‰";
-    var lnapprox = "โช‰";
-    var lne = "โช‡";
-    var lnE = "โ‰จ";
-    var lneq = "โช‡";
-    var lneqq = "โ‰จ";
-    var lnsim = "โ‹ฆ";
-    var loang = "โŸฌ";
-    var loarr = "โ‡ฝ";
-    var lobrk = "โŸฆ";
-    var longleftarrow = "โŸต";
-    var LongLeftArrow = "โŸต";
-    var Longleftarrow = "โŸธ";
-    var longleftrightarrow = "โŸท";
-    var LongLeftRightArrow = "โŸท";
-    var Longleftrightarrow = "โŸบ";
-    var longmapsto = "โŸผ";
-    var longrightarrow = "โŸถ";
-    var LongRightArrow = "โŸถ";
-    var Longrightarrow = "โŸน";
-    var looparrowleft = "โ†ซ";
-    var looparrowright = "โ†ฌ";
-    var lopar = "โฆ…";
-    var Lopf = "๐•ƒ";
-    var lopf = "๐•";
-    var loplus = "โจญ";
-    var lotimes = "โจด";
-    var lowast = "โˆ—";
-    var lowbar = "_";
-    var LowerLeftArrow = "โ†™";
-    var LowerRightArrow = "โ†˜";
-    var loz = "โ—Š";
-    var lozenge = "โ—Š";
-    var lozf = "โงซ";
-    var lpar = "(";
-    var lparlt = "โฆ“";
-    var lrarr = "โ‡†";
-    var lrcorner = "โŒŸ";
-    var lrhar = "โ‡‹";
-    var lrhard = "โฅญ";
-    var lrm = "โ€Ž";
-    var lrtri = "โŠฟ";
-    var lsaquo = "โ€น";
-    var lscr = "๐“";
-    var Lscr = "โ„’";
-    var lsh = "โ†ฐ";
-    var Lsh = "โ†ฐ";
-    var lsim = "โ‰ฒ";
-    var lsime = "โช";
-    var lsimg = "โช";
-    var lsqb = "[";
-    var lsquo = "โ€˜";
-    var lsquor = "โ€š";
-    var Lstrok = "ล";
-    var lstrok = "ล‚";
-    var ltcc = "โชฆ";
-    var ltcir = "โฉน";
-    var lt = "<";
-    var LT = "<";
-    var Lt = "โ‰ช";
-    var ltdot = "โ‹–";
-    var lthree = "โ‹‹";
-    var ltimes = "โ‹‰";
-    var ltlarr = "โฅถ";
-    var ltquest = "โฉป";
-    var ltri = "โ—ƒ";
-    var ltrie = "โŠด";
-    var ltrif = "โ—‚";
-    var ltrPar = "โฆ–";
-    var lurdshar = "โฅŠ";
-    var luruhar = "โฅฆ";
-    var lvertneqq = "โ‰จ๏ธ€";
-    var lvnE = "โ‰จ๏ธ€";
-    var macr = "ยฏ";
-    var male = "โ™‚";
-    var malt = "โœ ";
-    var maltese = "โœ ";
-    var map = "โ†ฆ";
-    var mapsto = "โ†ฆ";
-    var mapstodown = "โ†ง";
-    var mapstoleft = "โ†ค";
-    var mapstoup = "โ†ฅ";
-    var marker = "โ–ฎ";
-    var mcomma = "โจฉ";
-    var Mcy = "ะœ";
-    var mcy = "ะผ";
-    var mdash = "โ€”";
-    var mDDot = "โˆบ";
-    var measuredangle = "โˆก";
-    var MediumSpace = "โŸ";
-    var Mellintrf = "โ„ณ";
-    var Mfr = "๐”";
-    var mfr = "๐”ช";
-    var mho = "โ„ง";
-    var micro = "ยต";
-    var midast = "*";
-    var midcir = "โซฐ";
-    var mid = "โˆฃ";
-    var middot = "ยท";
-    var minusb = "โŠŸ";
-    var minus = "โˆ’";
-    var minusd = "โˆธ";
-    var minusdu = "โจช";
-    var MinusPlus = "โˆ“";
-    var mlcp = "โซ›";
-    var mldr = "โ€ฆ";
-    var mnplus = "โˆ“";
-    var models = "โŠง";
-    var Mopf = "๐•„";
-    var mopf = "๐•ž";
-    var mp = "โˆ“";
-    var mscr = "๐“‚";
-    var Mscr = "โ„ณ";
-    var mstpos = "โˆพ";
-    var Mu = "ฮœ";
-    var mu = "ฮผ";
-    var multimap = "โŠธ";
-    var mumap = "โŠธ";
-    var nabla = "โˆ‡";
-    var Nacute = "ลƒ";
-    var nacute = "ล„";
-    var nang = "โˆ โƒ’";
-    var nap = "โ‰‰";
-    var napE = "โฉฐฬธ";
-    var napid = "โ‰‹ฬธ";
-    var napos = "ล‰";
-    var napprox = "โ‰‰";
-    var natural = "โ™ฎ";
-    var naturals = "โ„•";
-    var natur = "โ™ฎ";
-    var nbsp = "ย ";
-    var nbump = "โ‰Žฬธ";
-    var nbumpe = "โ‰ฬธ";
-    var ncap = "โฉƒ";
-    var Ncaron = "ล‡";
-    var ncaron = "ลˆ";
-    var Ncedil = "ล…";
-    var ncedil = "ล†";
-    var ncong = "โ‰‡";
-    var ncongdot = "โฉญฬธ";
-    var ncup = "โฉ‚";
-    var Ncy = "ะ";
-    var ncy = "ะฝ";
-    var ndash = "โ€“";
-    var nearhk = "โคค";
-    var nearr = "โ†—";
-    var neArr = "โ‡—";
-    var nearrow = "โ†—";
-    var ne = "โ‰ ";
-    var nedot = "โ‰ฬธ";
-    var NegativeMediumSpace = "โ€‹";
-    var NegativeThickSpace = "โ€‹";
-    var NegativeThinSpace = "โ€‹";
-    var NegativeVeryThinSpace = "โ€‹";
-    var nequiv = "โ‰ข";
-    var nesear = "โคจ";
-    var nesim = "โ‰‚ฬธ";
-    var NestedGreaterGreater = "โ‰ซ";
-    var NestedLessLess = "โ‰ช";
-    var NewLine = "\n";
-    var nexist = "โˆ„";
-    var nexists = "โˆ„";
-    var Nfr = "๐”‘";
-    var nfr = "๐”ซ";
-    var ngE = "โ‰งฬธ";
-    var nge = "โ‰ฑ";
-    var ngeq = "โ‰ฑ";
-    var ngeqq = "โ‰งฬธ";
-    var ngeqslant = "โฉพฬธ";
-    var nges = "โฉพฬธ";
-    var nGg = "โ‹™ฬธ";
-    var ngsim = "โ‰ต";
-    var nGt = "โ‰ซโƒ’";
-    var ngt = "โ‰ฏ";
-    var ngtr = "โ‰ฏ";
-    var nGtv = "โ‰ซฬธ";
-    var nharr = "โ†ฎ";
-    var nhArr = "โ‡Ž";
-    var nhpar = "โซฒ";
-    var ni = "โˆ‹";
-    var nis = "โ‹ผ";
-    var nisd = "โ‹บ";
-    var niv = "โˆ‹";
-    var NJcy = "ะŠ";
-    var njcy = "ัš";
-    var nlarr = "โ†š";
-    var nlArr = "โ‡";
-    var nldr = "โ€ฅ";
-    var nlE = "โ‰ฆฬธ";
-    var nle = "โ‰ฐ";
-    var nleftarrow = "โ†š";
-    var nLeftarrow = "โ‡";
-    var nleftrightarrow = "โ†ฎ";
-    var nLeftrightarrow = "โ‡Ž";
-    var nleq = "โ‰ฐ";
-    var nleqq = "โ‰ฆฬธ";
-    var nleqslant = "โฉฝฬธ";
-    var nles = "โฉฝฬธ";
-    var nless = "โ‰ฎ";
-    var nLl = "โ‹˜ฬธ";
-    var nlsim = "โ‰ด";
-    var nLt = "โ‰ชโƒ’";
-    var nlt = "โ‰ฎ";
-    var nltri = "โ‹ช";
-    var nltrie = "โ‹ฌ";
-    var nLtv = "โ‰ชฬธ";
-    var nmid = "โˆค";
-    var NoBreak = "โ ";
-    var NonBreakingSpace = "ย ";
-    var nopf = "๐•Ÿ";
-    var Nopf = "โ„•";
-    var Not = "โซฌ";
-    var not = "ยฌ";
-    var NotCongruent = "โ‰ข";
-    var NotCupCap = "โ‰ญ";
-    var NotDoubleVerticalBar = "โˆฆ";
-    var NotElement = "โˆ‰";
-    var NotEqual = "โ‰ ";
-    var NotEqualTilde = "โ‰‚ฬธ";
-    var NotExists = "โˆ„";
-    var NotGreater = "โ‰ฏ";
-    var NotGreaterEqual = "โ‰ฑ";
-    var NotGreaterFullEqual = "โ‰งฬธ";
-    var NotGreaterGreater = "โ‰ซฬธ";
-    var NotGreaterLess = "โ‰น";
-    var NotGreaterSlantEqual = "โฉพฬธ";
-    var NotGreaterTilde = "โ‰ต";
-    var NotHumpDownHump = "โ‰Žฬธ";
-    var NotHumpEqual = "โ‰ฬธ";
-    var notin = "โˆ‰";
-    var notindot = "โ‹ตฬธ";
-    var notinE = "โ‹นฬธ";
-    var notinva = "โˆ‰";
-    var notinvb = "โ‹ท";
-    var notinvc = "โ‹ถ";
-    var NotLeftTriangleBar = "โงฬธ";
-    var NotLeftTriangle = "โ‹ช";
-    var NotLeftTriangleEqual = "โ‹ฌ";
-    var NotLess = "โ‰ฎ";
-    var NotLessEqual = "โ‰ฐ";
-    var NotLessGreater = "โ‰ธ";
-    var NotLessLess = "โ‰ชฬธ";
-    var NotLessSlantEqual = "โฉฝฬธ";
-    var NotLessTilde = "โ‰ด";
-    var NotNestedGreaterGreater = "โชขฬธ";
-    var NotNestedLessLess = "โชกฬธ";
-    var notni = "โˆŒ";
-    var notniva = "โˆŒ";
-    var notnivb = "โ‹พ";
-    var notnivc = "โ‹ฝ";
-    var NotPrecedes = "โŠ€";
-    var NotPrecedesEqual = "โชฏฬธ";
-    var NotPrecedesSlantEqual = "โ‹ ";
-    var NotReverseElement = "โˆŒ";
-    var NotRightTriangleBar = "โงฬธ";
-    var NotRightTriangle = "โ‹ซ";
-    var NotRightTriangleEqual = "โ‹ญ";
-    var NotSquareSubset = "โŠฬธ";
-    var NotSquareSubsetEqual = "โ‹ข";
-    var NotSquareSuperset = "โАฬธ";
-    var NotSquareSupersetEqual = "โ‹ฃ";
-    var NotSubset = "โŠ‚โƒ’";
-    var NotSubsetEqual = "โŠˆ";
-    var NotSucceeds = "โЁ";
-    var NotSucceedsEqual = "โชฐฬธ";
-    var NotSucceedsSlantEqual = "โ‹ก";
-    var NotSucceedsTilde = "โ‰ฟฬธ";
-    var NotSuperset = "โŠƒโƒ’";
-    var NotSupersetEqual = "โЉ";
-    var NotTilde = "โ‰";
-    var NotTildeEqual = "โ‰„";
-    var NotTildeFullEqual = "โ‰‡";
-    var NotTildeTilde = "โ‰‰";
-    var NotVerticalBar = "โˆค";
-    var nparallel = "โˆฆ";
-    var npar = "โˆฆ";
-    var nparsl = "โซฝโƒฅ";
-    var npart = "โˆ‚ฬธ";
-    var npolint = "โจ”";
-    var npr = "โŠ€";
-    var nprcue = "โ‹ ";
-    var nprec = "โŠ€";
-    var npreceq = "โชฏฬธ";
-    var npre = "โชฏฬธ";
-    var nrarrc = "โคณฬธ";
-    var nrarr = "โ†›";
-    var nrArr = "โ‡";
-    var nrarrw = "โ†ฬธ";
-    var nrightarrow = "โ†›";
-    var nRightarrow = "โ‡";
-    var nrtri = "โ‹ซ";
-    var nrtrie = "โ‹ญ";
-    var nsc = "โЁ";
-    var nsccue = "โ‹ก";
-    var nsce = "โชฐฬธ";
-    var Nscr = "๐’ฉ";
-    var nscr = "๐“ƒ";
-    var nshortmid = "โˆค";
-    var nshortparallel = "โˆฆ";
-    var nsim = "โ‰";
-    var nsime = "โ‰„";
-    var nsimeq = "โ‰„";
-    var nsmid = "โˆค";
-    var nspar = "โˆฆ";
-    var nsqsube = "โ‹ข";
-    var nsqsupe = "โ‹ฃ";
-    var nsub = "โŠ„";
-    var nsubE = "โซ…ฬธ";
-    var nsube = "โŠˆ";
-    var nsubset = "โŠ‚โƒ’";
-    var nsubseteq = "โŠˆ";
-    var nsubseteqq = "โซ…ฬธ";
-    var nsucc = "โЁ";
-    var nsucceq = "โชฐฬธ";
-    var nsup = "โŠ…";
-    var nsupE = "โซ†ฬธ";
-    var nsupe = "โЉ";
-    var nsupset = "โŠƒโƒ’";
-    var nsupseteq = "โЉ";
-    var nsupseteqq = "โซ†ฬธ";
-    var ntgl = "โ‰น";
-    var Ntilde = "ร‘";
-    var ntilde = "รฑ";
-    var ntlg = "โ‰ธ";
-    var ntriangleleft = "โ‹ช";
-    var ntrianglelefteq = "โ‹ฌ";
-    var ntriangleright = "โ‹ซ";
-    var ntrianglerighteq = "โ‹ญ";
-    var Nu = "ฮ";
-    var nu = "ฮฝ";
-    var num = "#";
-    var numero = "โ„–";
-    var numsp = "โ€‡";
-    var nvap = "โ‰โƒ’";
-    var nvdash = "โŠฌ";
-    var nvDash = "โŠญ";
-    var nVdash = "โŠฎ";
-    var nVDash = "โŠฏ";
-    var nvge = "โ‰ฅโƒ’";
-    var nvgt = ">โƒ’";
-    var nvHarr = "โค„";
-    var nvinfin = "โงž";
-    var nvlArr = "โค‚";
-    var nvle = "โ‰คโƒ’";
-    var nvlt = "<โƒ’";
-    var nvltrie = "โŠดโƒ’";
-    var nvrArr = "โคƒ";
-    var nvrtrie = "โŠตโƒ’";
-    var nvsim = "โˆผโƒ’";
-    var nwarhk = "โคฃ";
-    var nwarr = "โ†–";
-    var nwArr = "โ‡–";
-    var nwarrow = "โ†–";
-    var nwnear = "โคง";
-    var Oacute = "ร“";
-    var oacute = "รณ";
-    var oast = "โŠ›";
-    var Ocirc = "ร”";
-    var ocirc = "รด";
-    var ocir = "โŠš";
-    var Ocy = "ะž";
-    var ocy = "ะพ";
-    var odash = "โŠ";
-    var Odblac = "ล";
-    var odblac = "ล‘";
-    var odiv = "โจธ";
-    var odot = "โŠ™";
-    var odsold = "โฆผ";
-    var OElig = "ล’";
-    var oelig = "ล“";
-    var ofcir = "โฆฟ";
-    var Ofr = "๐”’";
-    var ofr = "๐”ฌ";
-    var ogon = "ห›";
-    var Ograve = "ร’";
-    var ograve = "รฒ";
-    var ogt = "โง";
-    var ohbar = "โฆต";
-    var ohm = "ฮฉ";
-    var oint = "โˆฎ";
-    var olarr = "โ†บ";
-    var olcir = "โฆพ";
-    var olcross = "โฆป";
-    var oline = "โ€พ";
-    var olt = "โง€";
-    var Omacr = "ลŒ";
-    var omacr = "ล";
-    var Omega = "ฮฉ";
-    var omega = "ฯ‰";
-    var Omicron = "ฮŸ";
-    var omicron = "ฮฟ";
-    var omid = "โฆถ";
-    var ominus = "โŠ–";
-    var Oopf = "๐•†";
-    var oopf = "๐• ";
-    var opar = "โฆท";
-    var OpenCurlyDoubleQuote = "โ€œ";
-    var OpenCurlyQuote = "โ€˜";
-    var operp = "โฆน";
-    var oplus = "โŠ•";
-    var orarr = "โ†ป";
-    var Or = "โฉ”";
-    var or = "โˆจ";
-    var ord = "โฉ";
-    var order = "โ„ด";
-    var orderof = "โ„ด";
-    var ordf = "ยช";
-    var ordm = "ยบ";
-    var origof = "โŠถ";
-    var oror = "โฉ–";
-    var orslope = "โฉ—";
-    var orv = "โฉ›";
-    var oS = "โ“ˆ";
-    var Oscr = "๐’ช";
-    var oscr = "โ„ด";
-    var Oslash = "ร˜";
-    var oslash = "รธ";
-    var osol = "โŠ˜";
-    var Otilde = "ร•";
-    var otilde = "รต";
-    var otimesas = "โจถ";
-    var Otimes = "โจท";
-    var otimes = "โŠ—";
-    var Ouml = "ร–";
-    var ouml = "รถ";
-    var ovbar = "โŒฝ";
-    var OverBar = "โ€พ";
-    var OverBrace = "โž";
-    var OverBracket = "โŽด";
-    var OverParenthesis = "โœ";
-    var para = "ยถ";
-    var parallel = "โˆฅ";
-    var par = "โˆฅ";
-    var parsim = "โซณ";
-    var parsl = "โซฝ";
-    var part = "โˆ‚";
-    var PartialD = "โˆ‚";
-    var Pcy = "ะŸ";
-    var pcy = "ะฟ";
-    var percnt = "%";
-    var period = ".";
-    var permil = "โ€ฐ";
-    var perp = "โŠฅ";
-    var pertenk = "โ€ฑ";
-    var Pfr = "๐”“";
-    var pfr = "๐”ญ";
-    var Phi = "ฮฆ";
-    var phi = "ฯ†";
-    var phiv = "ฯ•";
-    var phmmat = "โ„ณ";
-    var phone = "โ˜Ž";
-    var Pi = "ฮ ";
-    var pi = "ฯ€";
-    var pitchfork = "โ‹”";
-    var piv = "ฯ–";
-    var planck = "โ„";
-    var planckh = "โ„Ž";
-    var plankv = "โ„";
-    var plusacir = "โจฃ";
-    var plusb = "โŠž";
-    var pluscir = "โจข";
-    var plus = "+";
-    var plusdo = "โˆ”";
-    var plusdu = "โจฅ";
-    var pluse = "โฉฒ";
-    var PlusMinus = "ยฑ";
-    var plusmn = "ยฑ";
-    var plussim = "โจฆ";
-    var plustwo = "โจง";
-    var pm = "ยฑ";
-    var Poincareplane = "โ„Œ";
-    var pointint = "โจ•";
-    var popf = "๐•ก";
-    var Popf = "โ„™";
-    var pound = "ยฃ";
-    var prap = "โชท";
-    var Pr = "โชป";
-    var pr = "โ‰บ";
-    var prcue = "โ‰ผ";
-    var precapprox = "โชท";
-    var prec = "โ‰บ";
-    var preccurlyeq = "โ‰ผ";
-    var Precedes = "โ‰บ";
-    var PrecedesEqual = "โชฏ";
-    var PrecedesSlantEqual = "โ‰ผ";
-    var PrecedesTilde = "โ‰พ";
-    var preceq = "โชฏ";
-    var precnapprox = "โชน";
-    var precneqq = "โชต";
-    var precnsim = "โ‹จ";
-    var pre = "โชฏ";
-    var prE = "โชณ";
-    var precsim = "โ‰พ";
-    var prime = "โ€ฒ";
-    var Prime = "โ€ณ";
-    var primes = "โ„™";
-    var prnap = "โชน";
-    var prnE = "โชต";
-    var prnsim = "โ‹จ";
-    var prod = "โˆ";
-    var Product = "โˆ";
-    var profalar = "โŒฎ";
-    var profline = "โŒ’";
-    var profsurf = "โŒ“";
-    var prop = "โˆ";
-    var Proportional = "โˆ";
-    var Proportion = "โˆท";
-    var propto = "โˆ";
-    var prsim = "โ‰พ";
-    var prurel = "โŠฐ";
-    var Pscr = "๐’ซ";
-    var pscr = "๐“…";
-    var Psi = "ฮจ";
-    var psi = "ฯˆ";
-    var puncsp = "โ€ˆ";
-    var Qfr = "๐””";
-    var qfr = "๐”ฎ";
-    var qint = "โจŒ";
-    var qopf = "๐•ข";
-    var Qopf = "โ„š";
-    var qprime = "โ—";
-    var Qscr = "๐’ฌ";
-    var qscr = "๐“†";
-    var quaternions = "โ„";
-    var quatint = "โจ–";
-    var quest = "?";
-    var questeq = "โ‰Ÿ";
-    var quot = "\"";
-    var QUOT = "\"";
-    var rAarr = "โ‡›";
-    var race = "โˆฝฬฑ";
-    var Racute = "ล”";
-    var racute = "ล•";
-    var radic = "โˆš";
-    var raemptyv = "โฆณ";
-    var rang = "โŸฉ";
-    var Rang = "โŸซ";
-    var rangd = "โฆ’";
-    var range = "โฆฅ";
-    var rangle = "โŸฉ";
-    var raquo = "ยป";
-    var rarrap = "โฅต";
-    var rarrb = "โ‡ฅ";
-    var rarrbfs = "โค ";
-    var rarrc = "โคณ";
-    var rarr = "โ†’";
-    var Rarr = "โ† ";
-    var rArr = "โ‡’";
-    var rarrfs = "โคž";
-    var rarrhk = "โ†ช";
-    var rarrlp = "โ†ฌ";
-    var rarrpl = "โฅ…";
-    var rarrsim = "โฅด";
-    var Rarrtl = "โค–";
-    var rarrtl = "โ†ฃ";
-    var rarrw = "โ†";
-    var ratail = "โคš";
-    var rAtail = "โคœ";
-    var ratio = "โˆถ";
-    var rationals = "โ„š";
-    var rbarr = "โค";
-    var rBarr = "โค";
-    var RBarr = "โค";
-    var rbbrk = "โณ";
-    var rbrace = "}";
-    var rbrack = "]";
-    var rbrke = "โฆŒ";
-    var rbrksld = "โฆŽ";
-    var rbrkslu = "โฆ";
-    var Rcaron = "ล˜";
-    var rcaron = "ล™";
-    var Rcedil = "ล–";
-    var rcedil = "ล—";
-    var rceil = "โŒ‰";
-    var rcub = "}";
-    var Rcy = "ะ ";
-    var rcy = "ั€";
-    var rdca = "โคท";
-    var rdldhar = "โฅฉ";
-    var rdquo = "โ€";
-    var rdquor = "โ€";
-    var rdsh = "โ†ณ";
-    var real = "โ„œ";
-    var realine = "โ„›";
-    var realpart = "โ„œ";
-    var reals = "โ„";
-    var Re = "โ„œ";
-    var rect = "โ–ญ";
-    var reg = "ยฎ";
-    var REG = "ยฎ";
-    var ReverseElement = "โˆ‹";
-    var ReverseEquilibrium = "โ‡‹";
-    var ReverseUpEquilibrium = "โฅฏ";
-    var rfisht = "โฅฝ";
-    var rfloor = "โŒ‹";
-    var rfr = "๐”ฏ";
-    var Rfr = "โ„œ";
-    var rHar = "โฅค";
-    var rhard = "โ‡";
-    var rharu = "โ‡€";
-    var rharul = "โฅฌ";
-    var Rho = "ฮก";
-    var rho = "ฯ";
-    var rhov = "ฯฑ";
-    var RightAngleBracket = "โŸฉ";
-    var RightArrowBar = "โ‡ฅ";
-    var rightarrow = "โ†’";
-    var RightArrow = "โ†’";
-    var Rightarrow = "โ‡’";
-    var RightArrowLeftArrow = "โ‡„";
-    var rightarrowtail = "โ†ฃ";
-    var RightCeiling = "โŒ‰";
-    var RightDoubleBracket = "โŸง";
-    var RightDownTeeVector = "โฅ";
-    var RightDownVectorBar = "โฅ•";
-    var RightDownVector = "โ‡‚";
-    var RightFloor = "โŒ‹";
-    var rightharpoondown = "โ‡";
-    var rightharpoonup = "โ‡€";
-    var rightleftarrows = "โ‡„";
-    var rightleftharpoons = "โ‡Œ";
-    var rightrightarrows = "โ‡‰";
-    var rightsquigarrow = "โ†";
-    var RightTeeArrow = "โ†ฆ";
-    var RightTee = "โŠข";
-    var RightTeeVector = "โฅ›";
-    var rightthreetimes = "โ‹Œ";
-    var RightTriangleBar = "โง";
-    var RightTriangle = "โŠณ";
-    var RightTriangleEqual = "โŠต";
-    var RightUpDownVector = "โฅ";
-    var RightUpTeeVector = "โฅœ";
-    var RightUpVectorBar = "โฅ”";
-    var RightUpVector = "โ†พ";
-    var RightVectorBar = "โฅ“";
-    var RightVector = "โ‡€";
-    var ring = "หš";
-    var risingdotseq = "โ‰“";
-    var rlarr = "โ‡„";
-    var rlhar = "โ‡Œ";
-    var rlm = "โ€";
-    var rmoustache = "โŽฑ";
-    var rmoust = "โŽฑ";
-    var rnmid = "โซฎ";
-    var roang = "โŸญ";
-    var roarr = "โ‡พ";
-    var robrk = "โŸง";
-    var ropar = "โฆ†";
-    var ropf = "๐•ฃ";
-    var Ropf = "โ„";
-    var roplus = "โจฎ";
-    var rotimes = "โจต";
-    var RoundImplies = "โฅฐ";
-    var rpar = ")";
-    var rpargt = "โฆ”";
-    var rppolint = "โจ’";
-    var rrarr = "โ‡‰";
-    var Rrightarrow = "โ‡›";
-    var rsaquo = "โ€บ";
-    var rscr = "๐“‡";
-    var Rscr = "โ„›";
-    var rsh = "โ†ฑ";
-    var Rsh = "โ†ฑ";
-    var rsqb = "]";
-    var rsquo = "โ€™";
-    var rsquor = "โ€™";
-    var rthree = "โ‹Œ";
-    var rtimes = "โ‹Š";
-    var rtri = "โ–น";
-    var rtrie = "โŠต";
-    var rtrif = "โ–ธ";
-    var rtriltri = "โงŽ";
-    var RuleDelayed = "โงด";
-    var ruluhar = "โฅจ";
-    var rx = "โ„ž";
-    var Sacute = "ลš";
-    var sacute = "ล›";
-    var sbquo = "โ€š";
-    var scap = "โชธ";
-    var Scaron = "ล ";
-    var scaron = "ลก";
-    var Sc = "โชผ";
-    var sc = "โ‰ป";
-    var sccue = "โ‰ฝ";
-    var sce = "โชฐ";
-    var scE = "โชด";
-    var Scedil = "ลž";
-    var scedil = "ลŸ";
-    var Scirc = "ลœ";
-    var scirc = "ล";
-    var scnap = "โชบ";
-    var scnE = "โชถ";
-    var scnsim = "โ‹ฉ";
-    var scpolint = "โจ“";
-    var scsim = "โ‰ฟ";
-    var Scy = "ะก";
-    var scy = "ั";
-    var sdotb = "โŠก";
-    var sdot = "โ‹…";
-    var sdote = "โฉฆ";
-    var searhk = "โคฅ";
-    var searr = "โ†˜";
-    var seArr = "โ‡˜";
-    var searrow = "โ†˜";
-    var sect = "ยง";
-    var semi = ";";
-    var seswar = "โคฉ";
-    var setminus = "โˆ–";
-    var setmn = "โˆ–";
-    var sext = "โœถ";
-    var Sfr = "๐”–";
-    var sfr = "๐”ฐ";
-    var sfrown = "โŒข";
-    var sharp = "โ™ฏ";
-    var SHCHcy = "ะฉ";
-    var shchcy = "ั‰";
-    var SHcy = "ะจ";
-    var shcy = "ัˆ";
-    var ShortDownArrow = "โ†“";
-    var ShortLeftArrow = "โ†";
-    var shortmid = "โˆฃ";
-    var shortparallel = "โˆฅ";
-    var ShortRightArrow = "โ†’";
-    var ShortUpArrow = "โ†‘";
-    var shy = "ยญ";
-    var Sigma = "ฮฃ";
-    var sigma = "ฯƒ";
-    var sigmaf = "ฯ‚";
-    var sigmav = "ฯ‚";
-    var sim = "โˆผ";
-    var simdot = "โฉช";
-    var sime = "โ‰ƒ";
-    var simeq = "โ‰ƒ";
-    var simg = "โชž";
-    var simgE = "โช ";
-    var siml = "โช";
-    var simlE = "โชŸ";
-    var simne = "โ‰†";
-    var simplus = "โจค";
-    var simrarr = "โฅฒ";
-    var slarr = "โ†";
-    var SmallCircle = "โˆ˜";
-    var smallsetminus = "โˆ–";
-    var smashp = "โจณ";
-    var smeparsl = "โงค";
-    var smid = "โˆฃ";
-    var smile = "โŒฃ";
-    var smt = "โชช";
-    var smte = "โชฌ";
-    var smtes = "โชฌ๏ธ€";
-    var SOFTcy = "ะฌ";
-    var softcy = "ัŒ";
-    var solbar = "โŒฟ";
-    var solb = "โง„";
-    var sol = "/";
-    var Sopf = "๐•Š";
-    var sopf = "๐•ค";
-    var spades = "โ™ ";
-    var spadesuit = "โ™ ";
-    var spar = "โˆฅ";
-    var sqcap = "โŠ“";
-    var sqcaps = "โŠ“๏ธ€";
-    var sqcup = "โŠ”";
-    var sqcups = "โŠ”๏ธ€";
-    var Sqrt = "โˆš";
-    var sqsub = "โŠ";
-    var sqsube = "โŠ‘";
-    var sqsubset = "โŠ";
-    var sqsubseteq = "โŠ‘";
-    var sqsup = "โА";
-    var sqsupe = "โŠ’";
-    var sqsupset = "โА";
-    var sqsupseteq = "โŠ’";
-    var square = "โ–ก";
-    var Square = "โ–ก";
-    var SquareIntersection = "โŠ“";
-    var SquareSubset = "โŠ";
-    var SquareSubsetEqual = "โŠ‘";
-    var SquareSuperset = "โА";
-    var SquareSupersetEqual = "โŠ’";
-    var SquareUnion = "โŠ”";
-    var squarf = "โ–ช";
-    var squ = "โ–ก";
-    var squf = "โ–ช";
-    var srarr = "โ†’";
-    var Sscr = "๐’ฎ";
-    var sscr = "๐“ˆ";
-    var ssetmn = "โˆ–";
-    var ssmile = "โŒฃ";
-    var sstarf = "โ‹†";
-    var Star = "โ‹†";
-    var star = "โ˜†";
-    var starf = "โ˜…";
-    var straightepsilon = "ฯต";
-    var straightphi = "ฯ•";
-    var strns = "ยฏ";
-    var sub = "โŠ‚";
-    var Sub = "โ‹";
-    var subdot = "โชฝ";
-    var subE = "โซ…";
-    var sube = "โІ";
-    var subedot = "โซƒ";
-    var submult = "โซ";
-    var subnE = "โซ‹";
-    var subne = "โŠŠ";
-    var subplus = "โชฟ";
-    var subrarr = "โฅน";
-    var subset = "โŠ‚";
-    var Subset = "โ‹";
-    var subseteq = "โІ";
-    var subseteqq = "โซ…";
-    var SubsetEqual = "โІ";
-    var subsetneq = "โŠŠ";
-    var subsetneqq = "โซ‹";
-    var subsim = "โซ‡";
-    var subsub = "โซ•";
-    var subsup = "โซ“";
-    var succapprox = "โชธ";
-    var succ = "โ‰ป";
-    var succcurlyeq = "โ‰ฝ";
-    var Succeeds = "โ‰ป";
-    var SucceedsEqual = "โชฐ";
-    var SucceedsSlantEqual = "โ‰ฝ";
-    var SucceedsTilde = "โ‰ฟ";
-    var succeq = "โชฐ";
-    var succnapprox = "โชบ";
-    var succneqq = "โชถ";
-    var succnsim = "โ‹ฉ";
-    var succsim = "โ‰ฟ";
-    var SuchThat = "โˆ‹";
-    var sum = "โˆ‘";
-    var Sum = "โˆ‘";
-    var sung = "โ™ช";
-    var sup1 = "ยน";
-    var sup2 = "ยฒ";
-    var sup3 = "ยณ";
-    var sup = "โŠƒ";
-    var Sup = "โ‹‘";
-    var supdot = "โชพ";
-    var supdsub = "โซ˜";
-    var supE = "โซ†";
-    var supe = "โЇ";
-    var supedot = "โซ„";
-    var Superset = "โŠƒ";
-    var SupersetEqual = "โЇ";
-    var suphsol = "โŸ‰";
-    var suphsub = "โซ—";
-    var suplarr = "โฅป";
-    var supmult = "โซ‚";
-    var supnE = "โซŒ";
-    var supne = "โŠ‹";
-    var supplus = "โซ€";
-    var supset = "โŠƒ";
-    var Supset = "โ‹‘";
-    var supseteq = "โЇ";
-    var supseteqq = "โซ†";
-    var supsetneq = "โŠ‹";
-    var supsetneqq = "โซŒ";
-    var supsim = "โซˆ";
-    var supsub = "โซ”";
-    var supsup = "โซ–";
-    var swarhk = "โคฆ";
-    var swarr = "โ†™";
-    var swArr = "โ‡™";
-    var swarrow = "โ†™";
-    var swnwar = "โคช";
-    var szlig = "รŸ";
-    var Tab = "\t";
-    var target = "โŒ–";
-    var Tau = "ฮค";
-    var tau = "ฯ„";
-    var tbrk = "โŽด";
-    var Tcaron = "ลค";
-    var tcaron = "ลฅ";
-    var Tcedil = "ลข";
-    var tcedil = "ลฃ";
-    var Tcy = "ะข";
-    var tcy = "ั‚";
-    var tdot = "โƒ›";
-    var telrec = "โŒ•";
-    var Tfr = "๐”—";
-    var tfr = "๐”ฑ";
-    var there4 = "โˆด";
-    var therefore = "โˆด";
-    var Therefore = "โˆด";
-    var Theta = "ฮ˜";
-    var theta = "ฮธ";
-    var thetasym = "ฯ‘";
-    var thetav = "ฯ‘";
-    var thickapprox = "โ‰ˆ";
-    var thicksim = "โˆผ";
-    var ThickSpace = "โŸโ€Š";
-    var ThinSpace = "โ€‰";
-    var thinsp = "โ€‰";
-    var thkap = "โ‰ˆ";
-    var thksim = "โˆผ";
-    var THORN = "รž";
-    var thorn = "รพ";
-    var tilde = "หœ";
-    var Tilde = "โˆผ";
-    var TildeEqual = "โ‰ƒ";
-    var TildeFullEqual = "โ‰…";
-    var TildeTilde = "โ‰ˆ";
-    var timesbar = "โจฑ";
-    var timesb = "โŠ ";
-    var times = "ร—";
-    var timesd = "โจฐ";
-    var tint = "โˆญ";
-    var toea = "โคจ";
-    var topbot = "โŒถ";
-    var topcir = "โซฑ";
-    var top = "โŠค";
-    var Topf = "๐•‹";
-    var topf = "๐•ฅ";
-    var topfork = "โซš";
-    var tosa = "โคฉ";
-    var tprime = "โ€ด";
-    var trade = "โ„ข";
-    var TRADE = "โ„ข";
-    var triangle = "โ–ต";
-    var triangledown = "โ–ฟ";
-    var triangleleft = "โ—ƒ";
-    var trianglelefteq = "โŠด";
-    var triangleq = "โ‰œ";
-    var triangleright = "โ–น";
-    var trianglerighteq = "โŠต";
-    var tridot = "โ—ฌ";
-    var trie = "โ‰œ";
-    var triminus = "โจบ";
-    var TripleDot = "โƒ›";
-    var triplus = "โจน";
-    var trisb = "โง";
-    var tritime = "โจป";
-    var trpezium = "โข";
-    var Tscr = "๐’ฏ";
-    var tscr = "๐“‰";
-    var TScy = "ะฆ";
-    var tscy = "ั†";
-    var TSHcy = "ะ‹";
-    var tshcy = "ั›";
-    var Tstrok = "ลฆ";
-    var tstrok = "ลง";
-    var twixt = "โ‰ฌ";
-    var twoheadleftarrow = "โ†ž";
-    var twoheadrightarrow = "โ† ";
-    var Uacute = "รš";
-    var uacute = "รบ";
-    var uarr = "โ†‘";
-    var Uarr = "โ†Ÿ";
-    var uArr = "โ‡‘";
-    var Uarrocir = "โฅ‰";
-    var Ubrcy = "ะŽ";
-    var ubrcy = "ัž";
-    var Ubreve = "ลฌ";
-    var ubreve = "ลญ";
-    var Ucirc = "ร›";
-    var ucirc = "รป";
-    var Ucy = "ะฃ";
-    var ucy = "ัƒ";
-    var udarr = "โ‡…";
-    var Udblac = "ลฐ";
-    var udblac = "ลฑ";
-    var udhar = "โฅฎ";
-    var ufisht = "โฅพ";
-    var Ufr = "๐”˜";
-    var ufr = "๐”ฒ";
-    var Ugrave = "ร™";
-    var ugrave = "รน";
-    var uHar = "โฅฃ";
-    var uharl = "โ†ฟ";
-    var uharr = "โ†พ";
-    var uhblk = "โ–€";
-    var ulcorn = "โŒœ";
-    var ulcorner = "โŒœ";
-    var ulcrop = "โŒ";
-    var ultri = "โ—ธ";
-    var Umacr = "ลช";
-    var umacr = "ลซ";
-    var uml = "ยจ";
-    var UnderBar = "_";
-    var UnderBrace = "โŸ";
-    var UnderBracket = "โŽต";
-    var UnderParenthesis = "โ";
-    var Union = "โ‹ƒ";
-    var UnionPlus = "โŠŽ";
-    var Uogon = "ลฒ";
-    var uogon = "ลณ";
-    var Uopf = "๐•Œ";
-    var uopf = "๐•ฆ";
-    var UpArrowBar = "โค’";
-    var uparrow = "โ†‘";
-    var UpArrow = "โ†‘";
-    var Uparrow = "โ‡‘";
-    var UpArrowDownArrow = "โ‡…";
-    var updownarrow = "โ†•";
-    var UpDownArrow = "โ†•";
-    var Updownarrow = "โ‡•";
-    var UpEquilibrium = "โฅฎ";
-    var upharpoonleft = "โ†ฟ";
-    var upharpoonright = "โ†พ";
-    var uplus = "โŠŽ";
-    var UpperLeftArrow = "โ†–";
-    var UpperRightArrow = "โ†—";
-    var upsi = "ฯ…";
-    var Upsi = "ฯ’";
-    var upsih = "ฯ’";
-    var Upsilon = "ฮฅ";
-    var upsilon = "ฯ…";
-    var UpTeeArrow = "โ†ฅ";
-    var UpTee = "โŠฅ";
-    var upuparrows = "โ‡ˆ";
-    var urcorn = "โŒ";
-    var urcorner = "โŒ";
-    var urcrop = "โŒŽ";
-    var Uring = "ลฎ";
-    var uring = "ลฏ";
-    var urtri = "โ—น";
-    var Uscr = "๐’ฐ";
-    var uscr = "๐“Š";
-    var utdot = "โ‹ฐ";
-    var Utilde = "ลจ";
-    var utilde = "ลฉ";
-    var utri = "โ–ต";
-    var utrif = "โ–ด";
-    var uuarr = "โ‡ˆ";
-    var Uuml = "รœ";
-    var uuml = "รผ";
-    var uwangle = "โฆง";
-    var vangrt = "โฆœ";
-    var varepsilon = "ฯต";
-    var varkappa = "ฯฐ";
-    var varnothing = "โˆ…";
-    var varphi = "ฯ•";
-    var varpi = "ฯ–";
-    var varpropto = "โˆ";
-    var varr = "โ†•";
-    var vArr = "โ‡•";
-    var varrho = "ฯฑ";
-    var varsigma = "ฯ‚";
-    var varsubsetneq = "โŠŠ๏ธ€";
-    var varsubsetneqq = "โซ‹๏ธ€";
-    var varsupsetneq = "โŠ‹๏ธ€";
-    var varsupsetneqq = "โซŒ๏ธ€";
-    var vartheta = "ฯ‘";
-    var vartriangleleft = "โŠฒ";
-    var vartriangleright = "โŠณ";
-    var vBar = "โซจ";
-    var Vbar = "โซซ";
-    var vBarv = "โซฉ";
-    var Vcy = "ะ’";
-    var vcy = "ะฒ";
-    var vdash = "โŠข";
-    var vDash = "โŠจ";
-    var Vdash = "โŠฉ";
-    var VDash = "โŠซ";
-    var Vdashl = "โซฆ";
-    var veebar = "โŠป";
-    var vee = "โˆจ";
-    var Vee = "โ‹";
-    var veeeq = "โ‰š";
-    var vellip = "โ‹ฎ";
-    var verbar = "|";
-    var Verbar = "โ€–";
-    var vert = "|";
-    var Vert = "โ€–";
-    var VerticalBar = "โˆฃ";
-    var VerticalLine = "|";
-    var VerticalSeparator = "โ˜";
-    var VerticalTilde = "โ‰€";
-    var VeryThinSpace = "โ€Š";
-    var Vfr = "๐”™";
-    var vfr = "๐”ณ";
-    var vltri = "โŠฒ";
-    var vnsub = "โŠ‚โƒ’";
-    var vnsup = "โŠƒโƒ’";
-    var Vopf = "๐•";
-    var vopf = "๐•ง";
-    var vprop = "โˆ";
-    var vrtri = "โŠณ";
-    var Vscr = "๐’ฑ";
-    var vscr = "๐“‹";
-    var vsubnE = "โซ‹๏ธ€";
-    var vsubne = "โŠŠ๏ธ€";
-    var vsupnE = "โซŒ๏ธ€";
-    var vsupne = "โŠ‹๏ธ€";
-    var Vvdash = "โŠช";
-    var vzigzag = "โฆš";
-    var Wcirc = "ลด";
-    var wcirc = "ลต";
-    var wedbar = "โฉŸ";
-    var wedge = "โˆง";
-    var Wedge = "โ‹€";
-    var wedgeq = "โ‰™";
-    var weierp = "โ„˜";
-    var Wfr = "๐”š";
-    var wfr = "๐”ด";
-    var Wopf = "๐•Ž";
-    var wopf = "๐•จ";
-    var wp = "โ„˜";
-    var wr = "โ‰€";
-    var wreath = "โ‰€";
-    var Wscr = "๐’ฒ";
-    var wscr = "๐“Œ";
-    var xcap = "โ‹‚";
-    var xcirc = "โ—ฏ";
-    var xcup = "โ‹ƒ";
-    var xdtri = "โ–ฝ";
-    var Xfr = "๐”›";
-    var xfr = "๐”ต";
-    var xharr = "โŸท";
-    var xhArr = "โŸบ";
-    var Xi = "ฮž";
-    var xi = "ฮพ";
-    var xlarr = "โŸต";
-    var xlArr = "โŸธ";
-    var xmap = "โŸผ";
-    var xnis = "โ‹ป";
-    var xodot = "โจ€";
-    var Xopf = "๐•";
-    var xopf = "๐•ฉ";
-    var xoplus = "โจ";
-    var xotime = "โจ‚";
-    var xrarr = "โŸถ";
-    var xrArr = "โŸน";
-    var Xscr = "๐’ณ";
-    var xscr = "๐“";
-    var xsqcup = "โจ†";
-    var xuplus = "โจ„";
-    var xutri = "โ–ณ";
-    var xvee = "โ‹";
-    var xwedge = "โ‹€";
-    var Yacute = "ร";
-    var yacute = "รฝ";
-    var YAcy = "ะฏ";
-    var yacy = "ั";
-    var Ycirc = "ลถ";
-    var ycirc = "ลท";
-    var Ycy = "ะซ";
-    var ycy = "ั‹";
-    var yen = "ยฅ";
-    var Yfr = "๐”œ";
-    var yfr = "๐”ถ";
-    var YIcy = "ะ‡";
-    var yicy = "ั—";
-    var Yopf = "๐•";
-    var yopf = "๐•ช";
-    var Yscr = "๐’ด";
-    var yscr = "๐“Ž";
-    var YUcy = "ะฎ";
-    var yucy = "ัŽ";
-    var yuml = "รฟ";
-    var Yuml = "ลธ";
-    var Zacute = "ลน";
-    var zacute = "ลบ";
-    var Zcaron = "ลฝ";
-    var zcaron = "ลพ";
-    var Zcy = "ะ—";
-    var zcy = "ะท";
-    var Zdot = "ลป";
-    var zdot = "ลผ";
-    var zeetrf = "โ„จ";
-    var ZeroWidthSpace = "โ€‹";
-    var Zeta = "ฮ–";
-    var zeta = "ฮถ";
-    var zfr = "๐”ท";
-    var Zfr = "โ„จ";
-    var ZHcy = "ะ–";
-    var zhcy = "ะถ";
-    var zigrarr = "โ‡";
-    var zopf = "๐•ซ";
-    var Zopf = "โ„ค";
-    var Zscr = "๐’ต";
-    var zscr = "๐“";
-    var zwj = "โ€";
-    var zwnj = "โ€Œ";
-    var entities = {
-    	Aacute: Aacute,
-    	aacute: aacute,
-    	Abreve: Abreve,
-    	abreve: abreve,
-    	ac: ac,
-    	acd: acd,
-    	acE: acE,
-    	Acirc: Acirc,
-    	acirc: acirc,
-    	acute: acute,
-    	Acy: Acy,
-    	acy: acy,
-    	AElig: AElig,
-    	aelig: aelig,
-    	af: af,
-    	Afr: Afr,
-    	afr: afr,
-    	Agrave: Agrave,
-    	agrave: agrave,
-    	alefsym: alefsym,
-    	aleph: aleph,
-    	Alpha: Alpha,
-    	alpha: alpha,
-    	Amacr: Amacr,
-    	amacr: amacr,
-    	amalg: amalg,
-    	amp: amp,
-    	AMP: AMP,
-    	andand: andand,
-    	And: And,
-    	and: and,
-    	andd: andd,
-    	andslope: andslope,
-    	andv: andv,
-    	ang: ang,
-    	ange: ange,
-    	angle: angle,
-    	angmsdaa: angmsdaa,
-    	angmsdab: angmsdab,
-    	angmsdac: angmsdac,
-    	angmsdad: angmsdad,
-    	angmsdae: angmsdae,
-    	angmsdaf: angmsdaf,
-    	angmsdag: angmsdag,
-    	angmsdah: angmsdah,
-    	angmsd: angmsd,
-    	angrt: angrt,
-    	angrtvb: angrtvb,
-    	angrtvbd: angrtvbd,
-    	angsph: angsph,
-    	angst: angst,
-    	angzarr: angzarr,
-    	Aogon: Aogon,
-    	aogon: aogon,
-    	Aopf: Aopf,
-    	aopf: aopf,
-    	apacir: apacir,
-    	ap: ap,
-    	apE: apE,
-    	ape: ape,
-    	apid: apid,
-    	apos: apos,
-    	ApplyFunction: ApplyFunction,
-    	approx: approx,
-    	approxeq: approxeq,
-    	Aring: Aring,
-    	aring: aring,
-    	Ascr: Ascr,
-    	ascr: ascr,
-    	Assign: Assign,
-    	ast: ast,
-    	asymp: asymp,
-    	asympeq: asympeq,
-    	Atilde: Atilde,
-    	atilde: atilde,
-    	Auml: Auml,
-    	auml: auml,
-    	awconint: awconint,
-    	awint: awint,
-    	backcong: backcong,
-    	backepsilon: backepsilon,
-    	backprime: backprime,
-    	backsim: backsim,
-    	backsimeq: backsimeq,
-    	Backslash: Backslash,
-    	Barv: Barv,
-    	barvee: barvee,
-    	barwed: barwed,
-    	Barwed: Barwed,
-    	barwedge: barwedge,
-    	bbrk: bbrk,
-    	bbrktbrk: bbrktbrk,
-    	bcong: bcong,
-    	Bcy: Bcy,
-    	bcy: bcy,
-    	bdquo: bdquo,
-    	becaus: becaus,
-    	because: because,
-    	Because: Because,
-    	bemptyv: bemptyv,
-    	bepsi: bepsi,
-    	bernou: bernou,
-    	Bernoullis: Bernoullis,
-    	Beta: Beta,
-    	beta: beta,
-    	beth: beth,
-    	between: between,
-    	Bfr: Bfr,
-    	bfr: bfr,
-    	bigcap: bigcap,
-    	bigcirc: bigcirc,
-    	bigcup: bigcup,
-    	bigodot: bigodot,
-    	bigoplus: bigoplus,
-    	bigotimes: bigotimes,
-    	bigsqcup: bigsqcup,
-    	bigstar: bigstar,
-    	bigtriangledown: bigtriangledown,
-    	bigtriangleup: bigtriangleup,
-    	biguplus: biguplus,
-    	bigvee: bigvee,
-    	bigwedge: bigwedge,
-    	bkarow: bkarow,
-    	blacklozenge: blacklozenge,
-    	blacksquare: blacksquare,
-    	blacktriangle: blacktriangle,
-    	blacktriangledown: blacktriangledown,
-    	blacktriangleleft: blacktriangleleft,
-    	blacktriangleright: blacktriangleright,
-    	blank: blank,
-    	blk12: blk12,
-    	blk14: blk14,
-    	blk34: blk34,
-    	block: block,
-    	bne: bne,
-    	bnequiv: bnequiv,
-    	bNot: bNot,
-    	bnot: bnot,
-    	Bopf: Bopf,
-    	bopf: bopf,
-    	bot: bot,
-    	bottom: bottom,
-    	bowtie: bowtie,
-    	boxbox: boxbox,
-    	boxdl: boxdl,
-    	boxdL: boxdL,
-    	boxDl: boxDl,
-    	boxDL: boxDL,
-    	boxdr: boxdr,
-    	boxdR: boxdR,
-    	boxDr: boxDr,
-    	boxDR: boxDR,
-    	boxh: boxh,
-    	boxH: boxH,
-    	boxhd: boxhd,
-    	boxHd: boxHd,
-    	boxhD: boxhD,
-    	boxHD: boxHD,
-    	boxhu: boxhu,
-    	boxHu: boxHu,
-    	boxhU: boxhU,
-    	boxHU: boxHU,
-    	boxminus: boxminus,
-    	boxplus: boxplus,
-    	boxtimes: boxtimes,
-    	boxul: boxul,
-    	boxuL: boxuL,
-    	boxUl: boxUl,
-    	boxUL: boxUL,
-    	boxur: boxur,
-    	boxuR: boxuR,
-    	boxUr: boxUr,
-    	boxUR: boxUR,
-    	boxv: boxv,
-    	boxV: boxV,
-    	boxvh: boxvh,
-    	boxvH: boxvH,
-    	boxVh: boxVh,
-    	boxVH: boxVH,
-    	boxvl: boxvl,
-    	boxvL: boxvL,
-    	boxVl: boxVl,
-    	boxVL: boxVL,
-    	boxvr: boxvr,
-    	boxvR: boxvR,
-    	boxVr: boxVr,
-    	boxVR: boxVR,
-    	bprime: bprime,
-    	breve: breve,
-    	Breve: Breve,
-    	brvbar: brvbar,
-    	bscr: bscr,
-    	Bscr: Bscr,
-    	bsemi: bsemi,
-    	bsim: bsim,
-    	bsime: bsime,
-    	bsolb: bsolb,
-    	bsol: bsol,
-    	bsolhsub: bsolhsub,
-    	bull: bull,
-    	bullet: bullet,
-    	bump: bump,
-    	bumpE: bumpE,
-    	bumpe: bumpe,
-    	Bumpeq: Bumpeq,
-    	bumpeq: bumpeq,
-    	Cacute: Cacute,
-    	cacute: cacute,
-    	capand: capand,
-    	capbrcup: capbrcup,
-    	capcap: capcap,
-    	cap: cap,
-    	Cap: Cap,
-    	capcup: capcup,
-    	capdot: capdot,
-    	CapitalDifferentialD: CapitalDifferentialD,
-    	caps: caps,
-    	caret: caret,
-    	caron: caron,
-    	Cayleys: Cayleys,
-    	ccaps: ccaps,
-    	Ccaron: Ccaron,
-    	ccaron: ccaron,
-    	Ccedil: Ccedil,
-    	ccedil: ccedil,
-    	Ccirc: Ccirc,
-    	ccirc: ccirc,
-    	Cconint: Cconint,
-    	ccups: ccups,
-    	ccupssm: ccupssm,
-    	Cdot: Cdot,
-    	cdot: cdot,
-    	cedil: cedil,
-    	Cedilla: Cedilla,
-    	cemptyv: cemptyv,
-    	cent: cent,
-    	centerdot: centerdot,
-    	CenterDot: CenterDot,
-    	cfr: cfr,
-    	Cfr: Cfr,
-    	CHcy: CHcy,
-    	chcy: chcy,
-    	check: check,
-    	checkmark: checkmark,
-    	Chi: Chi,
-    	chi: chi,
-    	circ: circ,
-    	circeq: circeq,
-    	circlearrowleft: circlearrowleft,
-    	circlearrowright: circlearrowright,
-    	circledast: circledast,
-    	circledcirc: circledcirc,
-    	circleddash: circleddash,
-    	CircleDot: CircleDot,
-    	circledR: circledR,
-    	circledS: circledS,
-    	CircleMinus: CircleMinus,
-    	CirclePlus: CirclePlus,
-    	CircleTimes: CircleTimes,
-    	cir: cir,
-    	cirE: cirE,
-    	cire: cire,
-    	cirfnint: cirfnint,
-    	cirmid: cirmid,
-    	cirscir: cirscir,
-    	ClockwiseContourIntegral: ClockwiseContourIntegral,
-    	CloseCurlyDoubleQuote: CloseCurlyDoubleQuote,
-    	CloseCurlyQuote: CloseCurlyQuote,
-    	clubs: clubs,
-    	clubsuit: clubsuit,
-    	colon: colon,
-    	Colon: Colon,
-    	Colone: Colone,
-    	colone: colone,
-    	coloneq: coloneq,
-    	comma: comma,
-    	commat: commat,
-    	comp: comp,
-    	compfn: compfn,
-    	complement: complement,
-    	complexes: complexes,
-    	cong: cong,
-    	congdot: congdot,
-    	Congruent: Congruent,
-    	conint: conint,
-    	Conint: Conint,
-    	ContourIntegral: ContourIntegral,
-    	copf: copf,
-    	Copf: Copf,
-    	coprod: coprod,
-    	Coproduct: Coproduct,
-    	copy: copy,
-    	COPY: COPY,
-    	copysr: copysr,
-    	CounterClockwiseContourIntegral: CounterClockwiseContourIntegral,
-    	crarr: crarr,
-    	cross: cross,
-    	Cross: Cross,
-    	Cscr: Cscr,
-    	cscr: cscr,
-    	csub: csub,
-    	csube: csube,
-    	csup: csup,
-    	csupe: csupe,
-    	ctdot: ctdot,
-    	cudarrl: cudarrl,
-    	cudarrr: cudarrr,
-    	cuepr: cuepr,
-    	cuesc: cuesc,
-    	cularr: cularr,
-    	cularrp: cularrp,
-    	cupbrcap: cupbrcap,
-    	cupcap: cupcap,
-    	CupCap: CupCap,
-    	cup: cup,
-    	Cup: Cup,
-    	cupcup: cupcup,
-    	cupdot: cupdot,
-    	cupor: cupor,
-    	cups: cups,
-    	curarr: curarr,
-    	curarrm: curarrm,
-    	curlyeqprec: curlyeqprec,
-    	curlyeqsucc: curlyeqsucc,
-    	curlyvee: curlyvee,
-    	curlywedge: curlywedge,
-    	curren: curren,
-    	curvearrowleft: curvearrowleft,
-    	curvearrowright: curvearrowright,
-    	cuvee: cuvee,
-    	cuwed: cuwed,
-    	cwconint: cwconint,
-    	cwint: cwint,
-    	cylcty: cylcty,
-    	dagger: dagger,
-    	Dagger: Dagger,
-    	daleth: daleth,
-    	darr: darr,
-    	Darr: Darr,
-    	dArr: dArr,
-    	dash: dash,
-    	Dashv: Dashv,
-    	dashv: dashv,
-    	dbkarow: dbkarow,
-    	dblac: dblac,
-    	Dcaron: Dcaron,
-    	dcaron: dcaron,
-    	Dcy: Dcy,
-    	dcy: dcy,
-    	ddagger: ddagger,
-    	ddarr: ddarr,
-    	DD: DD,
-    	dd: dd,
-    	DDotrahd: DDotrahd,
-    	ddotseq: ddotseq,
-    	deg: deg,
-    	Del: Del,
-    	Delta: Delta,
-    	delta: delta,
-    	demptyv: demptyv,
-    	dfisht: dfisht,
-    	Dfr: Dfr,
-    	dfr: dfr,
-    	dHar: dHar,
-    	dharl: dharl,
-    	dharr: dharr,
-    	DiacriticalAcute: DiacriticalAcute,
-    	DiacriticalDot: DiacriticalDot,
-    	DiacriticalDoubleAcute: DiacriticalDoubleAcute,
-    	DiacriticalGrave: DiacriticalGrave,
-    	DiacriticalTilde: DiacriticalTilde,
-    	diam: diam,
-    	diamond: diamond,
-    	Diamond: Diamond,
-    	diamondsuit: diamondsuit,
-    	diams: diams,
-    	die: die,
-    	DifferentialD: DifferentialD,
-    	digamma: digamma,
-    	disin: disin,
-    	div: div,
-    	divide: divide,
-    	divideontimes: divideontimes,
-    	divonx: divonx,
-    	DJcy: DJcy,
-    	djcy: djcy,
-    	dlcorn: dlcorn,
-    	dlcrop: dlcrop,
-    	dollar: dollar,
-    	Dopf: Dopf,
-    	dopf: dopf,
-    	Dot: Dot,
-    	dot: dot,
-    	DotDot: DotDot,
-    	doteq: doteq,
-    	doteqdot: doteqdot,
-    	DotEqual: DotEqual,
-    	dotminus: dotminus,
-    	dotplus: dotplus,
-    	dotsquare: dotsquare,
-    	doublebarwedge: doublebarwedge,
-    	DoubleContourIntegral: DoubleContourIntegral,
-    	DoubleDot: DoubleDot,
-    	DoubleDownArrow: DoubleDownArrow,
-    	DoubleLeftArrow: DoubleLeftArrow,
-    	DoubleLeftRightArrow: DoubleLeftRightArrow,
-    	DoubleLeftTee: DoubleLeftTee,
-    	DoubleLongLeftArrow: DoubleLongLeftArrow,
-    	DoubleLongLeftRightArrow: DoubleLongLeftRightArrow,
-    	DoubleLongRightArrow: DoubleLongRightArrow,
-    	DoubleRightArrow: DoubleRightArrow,
-    	DoubleRightTee: DoubleRightTee,
-    	DoubleUpArrow: DoubleUpArrow,
-    	DoubleUpDownArrow: DoubleUpDownArrow,
-    	DoubleVerticalBar: DoubleVerticalBar,
-    	DownArrowBar: DownArrowBar,
-    	downarrow: downarrow,
-    	DownArrow: DownArrow,
-    	Downarrow: Downarrow,
-    	DownArrowUpArrow: DownArrowUpArrow,
-    	DownBreve: DownBreve,
-    	downdownarrows: downdownarrows,
-    	downharpoonleft: downharpoonleft,
-    	downharpoonright: downharpoonright,
-    	DownLeftRightVector: DownLeftRightVector,
-    	DownLeftTeeVector: DownLeftTeeVector,
-    	DownLeftVectorBar: DownLeftVectorBar,
-    	DownLeftVector: DownLeftVector,
-    	DownRightTeeVector: DownRightTeeVector,
-    	DownRightVectorBar: DownRightVectorBar,
-    	DownRightVector: DownRightVector,
-    	DownTeeArrow: DownTeeArrow,
-    	DownTee: DownTee,
-    	drbkarow: drbkarow,
-    	drcorn: drcorn,
-    	drcrop: drcrop,
-    	Dscr: Dscr,
-    	dscr: dscr,
-    	DScy: DScy,
-    	dscy: dscy,
-    	dsol: dsol,
-    	Dstrok: Dstrok,
-    	dstrok: dstrok,
-    	dtdot: dtdot,
-    	dtri: dtri,
-    	dtrif: dtrif,
-    	duarr: duarr,
-    	duhar: duhar,
-    	dwangle: dwangle,
-    	DZcy: DZcy,
-    	dzcy: dzcy,
-    	dzigrarr: dzigrarr,
-    	Eacute: Eacute,
-    	eacute: eacute,
-    	easter: easter,
-    	Ecaron: Ecaron,
-    	ecaron: ecaron,
-    	Ecirc: Ecirc,
-    	ecirc: ecirc,
-    	ecir: ecir,
-    	ecolon: ecolon,
-    	Ecy: Ecy,
-    	ecy: ecy,
-    	eDDot: eDDot,
-    	Edot: Edot,
-    	edot: edot,
-    	eDot: eDot,
-    	ee: ee,
-    	efDot: efDot,
-    	Efr: Efr,
-    	efr: efr,
-    	eg: eg,
-    	Egrave: Egrave,
-    	egrave: egrave,
-    	egs: egs,
-    	egsdot: egsdot,
-    	el: el,
-    	Element: Element,
-    	elinters: elinters,
-    	ell: ell,
-    	els: els,
-    	elsdot: elsdot,
-    	Emacr: Emacr,
-    	emacr: emacr,
-    	empty: empty,
-    	emptyset: emptyset,
-    	EmptySmallSquare: EmptySmallSquare,
-    	emptyv: emptyv,
-    	EmptyVerySmallSquare: EmptyVerySmallSquare,
-    	emsp13: emsp13,
-    	emsp14: emsp14,
-    	emsp: emsp,
-    	ENG: ENG,
-    	eng: eng,
-    	ensp: ensp,
-    	Eogon: Eogon,
-    	eogon: eogon,
-    	Eopf: Eopf,
-    	eopf: eopf,
-    	epar: epar,
-    	eparsl: eparsl,
-    	eplus: eplus,
-    	epsi: epsi,
-    	Epsilon: Epsilon,
-    	epsilon: epsilon,
-    	epsiv: epsiv,
-    	eqcirc: eqcirc,
-    	eqcolon: eqcolon,
-    	eqsim: eqsim,
-    	eqslantgtr: eqslantgtr,
-    	eqslantless: eqslantless,
-    	Equal: Equal,
-    	equals: equals,
-    	EqualTilde: EqualTilde,
-    	equest: equest,
-    	Equilibrium: Equilibrium,
-    	equiv: equiv,
-    	equivDD: equivDD,
-    	eqvparsl: eqvparsl,
-    	erarr: erarr,
-    	erDot: erDot,
-    	escr: escr,
-    	Escr: Escr,
-    	esdot: esdot,
-    	Esim: Esim,
-    	esim: esim,
-    	Eta: Eta,
-    	eta: eta,
-    	ETH: ETH,
-    	eth: eth,
-    	Euml: Euml,
-    	euml: euml,
-    	euro: euro,
-    	excl: excl,
-    	exist: exist,
-    	Exists: Exists,
-    	expectation: expectation,
-    	exponentiale: exponentiale,
-    	ExponentialE: ExponentialE,
-    	fallingdotseq: fallingdotseq,
-    	Fcy: Fcy,
-    	fcy: fcy,
-    	female: female,
-    	ffilig: ffilig,
-    	fflig: fflig,
-    	ffllig: ffllig,
-    	Ffr: Ffr,
-    	ffr: ffr,
-    	filig: filig,
-    	FilledSmallSquare: FilledSmallSquare,
-    	FilledVerySmallSquare: FilledVerySmallSquare,
-    	fjlig: fjlig,
-    	flat: flat,
-    	fllig: fllig,
-    	fltns: fltns,
-    	fnof: fnof,
-    	Fopf: Fopf,
-    	fopf: fopf,
-    	forall: forall,
-    	ForAll: ForAll,
-    	fork: fork,
-    	forkv: forkv,
-    	Fouriertrf: Fouriertrf,
-    	fpartint: fpartint,
-    	frac12: frac12,
-    	frac13: frac13,
-    	frac14: frac14,
-    	frac15: frac15,
-    	frac16: frac16,
-    	frac18: frac18,
-    	frac23: frac23,
-    	frac25: frac25,
-    	frac34: frac34,
-    	frac35: frac35,
-    	frac38: frac38,
-    	frac45: frac45,
-    	frac56: frac56,
-    	frac58: frac58,
-    	frac78: frac78,
-    	frasl: frasl,
-    	frown: frown,
-    	fscr: fscr,
-    	Fscr: Fscr,
-    	gacute: gacute,
-    	Gamma: Gamma,
-    	gamma: gamma,
-    	Gammad: Gammad,
-    	gammad: gammad,
-    	gap: gap,
-    	Gbreve: Gbreve,
-    	gbreve: gbreve,
-    	Gcedil: Gcedil,
-    	Gcirc: Gcirc,
-    	gcirc: gcirc,
-    	Gcy: Gcy,
-    	gcy: gcy,
-    	Gdot: Gdot,
-    	gdot: gdot,
-    	ge: ge,
-    	gE: gE,
-    	gEl: gEl,
-    	gel: gel,
-    	geq: geq,
-    	geqq: geqq,
-    	geqslant: geqslant,
-    	gescc: gescc,
-    	ges: ges,
-    	gesdot: gesdot,
-    	gesdoto: gesdoto,
-    	gesdotol: gesdotol,
-    	gesl: gesl,
-    	gesles: gesles,
-    	Gfr: Gfr,
-    	gfr: gfr,
-    	gg: gg,
-    	Gg: Gg,
-    	ggg: ggg,
-    	gimel: gimel,
-    	GJcy: GJcy,
-    	gjcy: gjcy,
-    	gla: gla,
-    	gl: gl,
-    	glE: glE,
-    	glj: glj,
-    	gnap: gnap,
-    	gnapprox: gnapprox,
-    	gne: gne,
-    	gnE: gnE,
-    	gneq: gneq,
-    	gneqq: gneqq,
-    	gnsim: gnsim,
-    	Gopf: Gopf,
-    	gopf: gopf,
-    	grave: grave,
-    	GreaterEqual: GreaterEqual,
-    	GreaterEqualLess: GreaterEqualLess,
-    	GreaterFullEqual: GreaterFullEqual,
-    	GreaterGreater: GreaterGreater,
-    	GreaterLess: GreaterLess,
-    	GreaterSlantEqual: GreaterSlantEqual,
-    	GreaterTilde: GreaterTilde,
-    	Gscr: Gscr,
-    	gscr: gscr,
-    	gsim: gsim,
-    	gsime: gsime,
-    	gsiml: gsiml,
-    	gtcc: gtcc,
-    	gtcir: gtcir,
-    	gt: gt,
-    	GT: GT,
-    	Gt: Gt,
-    	gtdot: gtdot,
-    	gtlPar: gtlPar,
-    	gtquest: gtquest,
-    	gtrapprox: gtrapprox,
-    	gtrarr: gtrarr,
-    	gtrdot: gtrdot,
-    	gtreqless: gtreqless,
-    	gtreqqless: gtreqqless,
-    	gtrless: gtrless,
-    	gtrsim: gtrsim,
-    	gvertneqq: gvertneqq,
-    	gvnE: gvnE,
-    	Hacek: Hacek,
-    	hairsp: hairsp,
-    	half: half,
-    	hamilt: hamilt,
-    	HARDcy: HARDcy,
-    	hardcy: hardcy,
-    	harrcir: harrcir,
-    	harr: harr,
-    	hArr: hArr,
-    	harrw: harrw,
-    	Hat: Hat,
-    	hbar: hbar,
-    	Hcirc: Hcirc,
-    	hcirc: hcirc,
-    	hearts: hearts,
-    	heartsuit: heartsuit,
-    	hellip: hellip,
-    	hercon: hercon,
-    	hfr: hfr,
-    	Hfr: Hfr,
-    	HilbertSpace: HilbertSpace,
-    	hksearow: hksearow,
-    	hkswarow: hkswarow,
-    	hoarr: hoarr,
-    	homtht: homtht,
-    	hookleftarrow: hookleftarrow,
-    	hookrightarrow: hookrightarrow,
-    	hopf: hopf,
-    	Hopf: Hopf,
-    	horbar: horbar,
-    	HorizontalLine: HorizontalLine,
-    	hscr: hscr,
-    	Hscr: Hscr,
-    	hslash: hslash,
-    	Hstrok: Hstrok,
-    	hstrok: hstrok,
-    	HumpDownHump: HumpDownHump,
-    	HumpEqual: HumpEqual,
-    	hybull: hybull,
-    	hyphen: hyphen,
-    	Iacute: Iacute,
-    	iacute: iacute,
-    	ic: ic,
-    	Icirc: Icirc,
-    	icirc: icirc,
-    	Icy: Icy,
-    	icy: icy,
-    	Idot: Idot,
-    	IEcy: IEcy,
-    	iecy: iecy,
-    	iexcl: iexcl,
-    	iff: iff,
-    	ifr: ifr,
-    	Ifr: Ifr,
-    	Igrave: Igrave,
-    	igrave: igrave,
-    	ii: ii,
-    	iiiint: iiiint,
-    	iiint: iiint,
-    	iinfin: iinfin,
-    	iiota: iiota,
-    	IJlig: IJlig,
-    	ijlig: ijlig,
-    	Imacr: Imacr,
-    	imacr: imacr,
-    	image: image,
-    	ImaginaryI: ImaginaryI,
-    	imagline: imagline,
-    	imagpart: imagpart,
-    	imath: imath,
-    	Im: Im,
-    	imof: imof,
-    	imped: imped,
-    	Implies: Implies,
-    	incare: incare,
-    	"in": "โˆˆ",
-    	infin: infin,
-    	infintie: infintie,
-    	inodot: inodot,
-    	intcal: intcal,
-    	int: int,
-    	Int: Int,
-    	integers: integers,
-    	Integral: Integral,
-    	intercal: intercal,
-    	Intersection: Intersection,
-    	intlarhk: intlarhk,
-    	intprod: intprod,
-    	InvisibleComma: InvisibleComma,
-    	InvisibleTimes: InvisibleTimes,
-    	IOcy: IOcy,
-    	iocy: iocy,
-    	Iogon: Iogon,
-    	iogon: iogon,
-    	Iopf: Iopf,
-    	iopf: iopf,
-    	Iota: Iota,
-    	iota: iota,
-    	iprod: iprod,
-    	iquest: iquest,
-    	iscr: iscr,
-    	Iscr: Iscr,
-    	isin: isin,
-    	isindot: isindot,
-    	isinE: isinE,
-    	isins: isins,
-    	isinsv: isinsv,
-    	isinv: isinv,
-    	it: it,
-    	Itilde: Itilde,
-    	itilde: itilde,
-    	Iukcy: Iukcy,
-    	iukcy: iukcy,
-    	Iuml: Iuml,
-    	iuml: iuml,
-    	Jcirc: Jcirc,
-    	jcirc: jcirc,
-    	Jcy: Jcy,
-    	jcy: jcy,
-    	Jfr: Jfr,
-    	jfr: jfr,
-    	jmath: jmath,
-    	Jopf: Jopf,
-    	jopf: jopf,
-    	Jscr: Jscr,
-    	jscr: jscr,
-    	Jsercy: Jsercy,
-    	jsercy: jsercy,
-    	Jukcy: Jukcy,
-    	jukcy: jukcy,
-    	Kappa: Kappa,
-    	kappa: kappa,
-    	kappav: kappav,
-    	Kcedil: Kcedil,
-    	kcedil: kcedil,
-    	Kcy: Kcy,
-    	kcy: kcy,
-    	Kfr: Kfr,
-    	kfr: kfr,
-    	kgreen: kgreen,
-    	KHcy: KHcy,
-    	khcy: khcy,
-    	KJcy: KJcy,
-    	kjcy: kjcy,
-    	Kopf: Kopf,
-    	kopf: kopf,
-    	Kscr: Kscr,
-    	kscr: kscr,
-    	lAarr: lAarr,
-    	Lacute: Lacute,
-    	lacute: lacute,
-    	laemptyv: laemptyv,
-    	lagran: lagran,
-    	Lambda: Lambda,
-    	lambda: lambda,
-    	lang: lang,
-    	Lang: Lang,
-    	langd: langd,
-    	langle: langle,
-    	lap: lap,
-    	Laplacetrf: Laplacetrf,
-    	laquo: laquo,
-    	larrb: larrb,
-    	larrbfs: larrbfs,
-    	larr: larr,
-    	Larr: Larr,
-    	lArr: lArr,
-    	larrfs: larrfs,
-    	larrhk: larrhk,
-    	larrlp: larrlp,
-    	larrpl: larrpl,
-    	larrsim: larrsim,
-    	larrtl: larrtl,
-    	latail: latail,
-    	lAtail: lAtail,
-    	lat: lat,
-    	late: late,
-    	lates: lates,
-    	lbarr: lbarr,
-    	lBarr: lBarr,
-    	lbbrk: lbbrk,
-    	lbrace: lbrace,
-    	lbrack: lbrack,
-    	lbrke: lbrke,
-    	lbrksld: lbrksld,
-    	lbrkslu: lbrkslu,
-    	Lcaron: Lcaron,
-    	lcaron: lcaron,
-    	Lcedil: Lcedil,
-    	lcedil: lcedil,
-    	lceil: lceil,
-    	lcub: lcub,
-    	Lcy: Lcy,
-    	lcy: lcy,
-    	ldca: ldca,
-    	ldquo: ldquo,
-    	ldquor: ldquor,
-    	ldrdhar: ldrdhar,
-    	ldrushar: ldrushar,
-    	ldsh: ldsh,
-    	le: le,
-    	lE: lE,
-    	LeftAngleBracket: LeftAngleBracket,
-    	LeftArrowBar: LeftArrowBar,
-    	leftarrow: leftarrow,
-    	LeftArrow: LeftArrow,
-    	Leftarrow: Leftarrow,
-    	LeftArrowRightArrow: LeftArrowRightArrow,
-    	leftarrowtail: leftarrowtail,
-    	LeftCeiling: LeftCeiling,
-    	LeftDoubleBracket: LeftDoubleBracket,
-    	LeftDownTeeVector: LeftDownTeeVector,
-    	LeftDownVectorBar: LeftDownVectorBar,
-    	LeftDownVector: LeftDownVector,
-    	LeftFloor: LeftFloor,
-    	leftharpoondown: leftharpoondown,
-    	leftharpoonup: leftharpoonup,
-    	leftleftarrows: leftleftarrows,
-    	leftrightarrow: leftrightarrow,
-    	LeftRightArrow: LeftRightArrow,
-    	Leftrightarrow: Leftrightarrow,
-    	leftrightarrows: leftrightarrows,
-    	leftrightharpoons: leftrightharpoons,
-    	leftrightsquigarrow: leftrightsquigarrow,
-    	LeftRightVector: LeftRightVector,
-    	LeftTeeArrow: LeftTeeArrow,
-    	LeftTee: LeftTee,
-    	LeftTeeVector: LeftTeeVector,
-    	leftthreetimes: leftthreetimes,
-    	LeftTriangleBar: LeftTriangleBar,
-    	LeftTriangle: LeftTriangle,
-    	LeftTriangleEqual: LeftTriangleEqual,
-    	LeftUpDownVector: LeftUpDownVector,
-    	LeftUpTeeVector: LeftUpTeeVector,
-    	LeftUpVectorBar: LeftUpVectorBar,
-    	LeftUpVector: LeftUpVector,
-    	LeftVectorBar: LeftVectorBar,
-    	LeftVector: LeftVector,
-    	lEg: lEg,
-    	leg: leg,
-    	leq: leq,
-    	leqq: leqq,
-    	leqslant: leqslant,
-    	lescc: lescc,
-    	les: les,
-    	lesdot: lesdot,
-    	lesdoto: lesdoto,
-    	lesdotor: lesdotor,
-    	lesg: lesg,
-    	lesges: lesges,
-    	lessapprox: lessapprox,
-    	lessdot: lessdot,
-    	lesseqgtr: lesseqgtr,
-    	lesseqqgtr: lesseqqgtr,
-    	LessEqualGreater: LessEqualGreater,
-    	LessFullEqual: LessFullEqual,
-    	LessGreater: LessGreater,
-    	lessgtr: lessgtr,
-    	LessLess: LessLess,
-    	lesssim: lesssim,
-    	LessSlantEqual: LessSlantEqual,
-    	LessTilde: LessTilde,
-    	lfisht: lfisht,
-    	lfloor: lfloor,
-    	Lfr: Lfr,
-    	lfr: lfr,
-    	lg: lg,
-    	lgE: lgE,
-    	lHar: lHar,
-    	lhard: lhard,
-    	lharu: lharu,
-    	lharul: lharul,
-    	lhblk: lhblk,
-    	LJcy: LJcy,
-    	ljcy: ljcy,
-    	llarr: llarr,
-    	ll: ll,
-    	Ll: Ll,
-    	llcorner: llcorner,
-    	Lleftarrow: Lleftarrow,
-    	llhard: llhard,
-    	lltri: lltri,
-    	Lmidot: Lmidot,
-    	lmidot: lmidot,
-    	lmoustache: lmoustache,
-    	lmoust: lmoust,
-    	lnap: lnap,
-    	lnapprox: lnapprox,
-    	lne: lne,
-    	lnE: lnE,
-    	lneq: lneq,
-    	lneqq: lneqq,
-    	lnsim: lnsim,
-    	loang: loang,
-    	loarr: loarr,
-    	lobrk: lobrk,
-    	longleftarrow: longleftarrow,
-    	LongLeftArrow: LongLeftArrow,
-    	Longleftarrow: Longleftarrow,
-    	longleftrightarrow: longleftrightarrow,
-    	LongLeftRightArrow: LongLeftRightArrow,
-    	Longleftrightarrow: Longleftrightarrow,
-    	longmapsto: longmapsto,
-    	longrightarrow: longrightarrow,
-    	LongRightArrow: LongRightArrow,
-    	Longrightarrow: Longrightarrow,
-    	looparrowleft: looparrowleft,
-    	looparrowright: looparrowright,
-    	lopar: lopar,
-    	Lopf: Lopf,
-    	lopf: lopf,
-    	loplus: loplus,
-    	lotimes: lotimes,
-    	lowast: lowast,
-    	lowbar: lowbar,
-    	LowerLeftArrow: LowerLeftArrow,
-    	LowerRightArrow: LowerRightArrow,
-    	loz: loz,
-    	lozenge: lozenge,
-    	lozf: lozf,
-    	lpar: lpar,
-    	lparlt: lparlt,
-    	lrarr: lrarr,
-    	lrcorner: lrcorner,
-    	lrhar: lrhar,
-    	lrhard: lrhard,
-    	lrm: lrm,
-    	lrtri: lrtri,
-    	lsaquo: lsaquo,
-    	lscr: lscr,
-    	Lscr: Lscr,
-    	lsh: lsh,
-    	Lsh: Lsh,
-    	lsim: lsim,
-    	lsime: lsime,
-    	lsimg: lsimg,
-    	lsqb: lsqb,
-    	lsquo: lsquo,
-    	lsquor: lsquor,
-    	Lstrok: Lstrok,
-    	lstrok: lstrok,
-    	ltcc: ltcc,
-    	ltcir: ltcir,
-    	lt: lt,
-    	LT: LT,
-    	Lt: Lt,
-    	ltdot: ltdot,
-    	lthree: lthree,
-    	ltimes: ltimes,
-    	ltlarr: ltlarr,
-    	ltquest: ltquest,
-    	ltri: ltri,
-    	ltrie: ltrie,
-    	ltrif: ltrif,
-    	ltrPar: ltrPar,
-    	lurdshar: lurdshar,
-    	luruhar: luruhar,
-    	lvertneqq: lvertneqq,
-    	lvnE: lvnE,
-    	macr: macr,
-    	male: male,
-    	malt: malt,
-    	maltese: maltese,
-    	"Map": "โค…",
-    	map: map,
-    	mapsto: mapsto,
-    	mapstodown: mapstodown,
-    	mapstoleft: mapstoleft,
-    	mapstoup: mapstoup,
-    	marker: marker,
-    	mcomma: mcomma,
-    	Mcy: Mcy,
-    	mcy: mcy,
-    	mdash: mdash,
-    	mDDot: mDDot,
-    	measuredangle: measuredangle,
-    	MediumSpace: MediumSpace,
-    	Mellintrf: Mellintrf,
-    	Mfr: Mfr,
-    	mfr: mfr,
-    	mho: mho,
-    	micro: micro,
-    	midast: midast,
-    	midcir: midcir,
-    	mid: mid,
-    	middot: middot,
-    	minusb: minusb,
-    	minus: minus,
-    	minusd: minusd,
-    	minusdu: minusdu,
-    	MinusPlus: MinusPlus,
-    	mlcp: mlcp,
-    	mldr: mldr,
-    	mnplus: mnplus,
-    	models: models,
-    	Mopf: Mopf,
-    	mopf: mopf,
-    	mp: mp,
-    	mscr: mscr,
-    	Mscr: Mscr,
-    	mstpos: mstpos,
-    	Mu: Mu,
-    	mu: mu,
-    	multimap: multimap,
-    	mumap: mumap,
-    	nabla: nabla,
-    	Nacute: Nacute,
-    	nacute: nacute,
-    	nang: nang,
-    	nap: nap,
-    	napE: napE,
-    	napid: napid,
-    	napos: napos,
-    	napprox: napprox,
-    	natural: natural,
-    	naturals: naturals,
-    	natur: natur,
-    	nbsp: nbsp,
-    	nbump: nbump,
-    	nbumpe: nbumpe,
-    	ncap: ncap,
-    	Ncaron: Ncaron,
-    	ncaron: ncaron,
-    	Ncedil: Ncedil,
-    	ncedil: ncedil,
-    	ncong: ncong,
-    	ncongdot: ncongdot,
-    	ncup: ncup,
-    	Ncy: Ncy,
-    	ncy: ncy,
-    	ndash: ndash,
-    	nearhk: nearhk,
-    	nearr: nearr,
-    	neArr: neArr,
-    	nearrow: nearrow,
-    	ne: ne,
-    	nedot: nedot,
-    	NegativeMediumSpace: NegativeMediumSpace,
-    	NegativeThickSpace: NegativeThickSpace,
-    	NegativeThinSpace: NegativeThinSpace,
-    	NegativeVeryThinSpace: NegativeVeryThinSpace,
-    	nequiv: nequiv,
-    	nesear: nesear,
-    	nesim: nesim,
-    	NestedGreaterGreater: NestedGreaterGreater,
-    	NestedLessLess: NestedLessLess,
-    	NewLine: NewLine,
-    	nexist: nexist,
-    	nexists: nexists,
-    	Nfr: Nfr,
-    	nfr: nfr,
-    	ngE: ngE,
-    	nge: nge,
-    	ngeq: ngeq,
-    	ngeqq: ngeqq,
-    	ngeqslant: ngeqslant,
-    	nges: nges,
-    	nGg: nGg,
-    	ngsim: ngsim,
-    	nGt: nGt,
-    	ngt: ngt,
-    	ngtr: ngtr,
-    	nGtv: nGtv,
-    	nharr: nharr,
-    	nhArr: nhArr,
-    	nhpar: nhpar,
-    	ni: ni,
-    	nis: nis,
-    	nisd: nisd,
-    	niv: niv,
-    	NJcy: NJcy,
-    	njcy: njcy,
-    	nlarr: nlarr,
-    	nlArr: nlArr,
-    	nldr: nldr,
-    	nlE: nlE,
-    	nle: nle,
-    	nleftarrow: nleftarrow,
-    	nLeftarrow: nLeftarrow,
-    	nleftrightarrow: nleftrightarrow,
-    	nLeftrightarrow: nLeftrightarrow,
-    	nleq: nleq,
-    	nleqq: nleqq,
-    	nleqslant: nleqslant,
-    	nles: nles,
-    	nless: nless,
-    	nLl: nLl,
-    	nlsim: nlsim,
-    	nLt: nLt,
-    	nlt: nlt,
-    	nltri: nltri,
-    	nltrie: nltrie,
-    	nLtv: nLtv,
-    	nmid: nmid,
-    	NoBreak: NoBreak,
-    	NonBreakingSpace: NonBreakingSpace,
-    	nopf: nopf,
-    	Nopf: Nopf,
-    	Not: Not,
-    	not: not,
-    	NotCongruent: NotCongruent,
-    	NotCupCap: NotCupCap,
-    	NotDoubleVerticalBar: NotDoubleVerticalBar,
-    	NotElement: NotElement,
-    	NotEqual: NotEqual,
-    	NotEqualTilde: NotEqualTilde,
-    	NotExists: NotExists,
-    	NotGreater: NotGreater,
-    	NotGreaterEqual: NotGreaterEqual,
-    	NotGreaterFullEqual: NotGreaterFullEqual,
-    	NotGreaterGreater: NotGreaterGreater,
-    	NotGreaterLess: NotGreaterLess,
-    	NotGreaterSlantEqual: NotGreaterSlantEqual,
-    	NotGreaterTilde: NotGreaterTilde,
-    	NotHumpDownHump: NotHumpDownHump,
-    	NotHumpEqual: NotHumpEqual,
-    	notin: notin,
-    	notindot: notindot,
-    	notinE: notinE,
-    	notinva: notinva,
-    	notinvb: notinvb,
-    	notinvc: notinvc,
-    	NotLeftTriangleBar: NotLeftTriangleBar,
-    	NotLeftTriangle: NotLeftTriangle,
-    	NotLeftTriangleEqual: NotLeftTriangleEqual,
-    	NotLess: NotLess,
-    	NotLessEqual: NotLessEqual,
-    	NotLessGreater: NotLessGreater,
-    	NotLessLess: NotLessLess,
-    	NotLessSlantEqual: NotLessSlantEqual,
-    	NotLessTilde: NotLessTilde,
-    	NotNestedGreaterGreater: NotNestedGreaterGreater,
-    	NotNestedLessLess: NotNestedLessLess,
-    	notni: notni,
-    	notniva: notniva,
-    	notnivb: notnivb,
-    	notnivc: notnivc,
-    	NotPrecedes: NotPrecedes,
-    	NotPrecedesEqual: NotPrecedesEqual,
-    	NotPrecedesSlantEqual: NotPrecedesSlantEqual,
-    	NotReverseElement: NotReverseElement,
-    	NotRightTriangleBar: NotRightTriangleBar,
-    	NotRightTriangle: NotRightTriangle,
-    	NotRightTriangleEqual: NotRightTriangleEqual,
-    	NotSquareSubset: NotSquareSubset,
-    	NotSquareSubsetEqual: NotSquareSubsetEqual,
-    	NotSquareSuperset: NotSquareSuperset,
-    	NotSquareSupersetEqual: NotSquareSupersetEqual,
-    	NotSubset: NotSubset,
-    	NotSubsetEqual: NotSubsetEqual,
-    	NotSucceeds: NotSucceeds,
-    	NotSucceedsEqual: NotSucceedsEqual,
-    	NotSucceedsSlantEqual: NotSucceedsSlantEqual,
-    	NotSucceedsTilde: NotSucceedsTilde,
-    	NotSuperset: NotSuperset,
-    	NotSupersetEqual: NotSupersetEqual,
-    	NotTilde: NotTilde,
-    	NotTildeEqual: NotTildeEqual,
-    	NotTildeFullEqual: NotTildeFullEqual,
-    	NotTildeTilde: NotTildeTilde,
-    	NotVerticalBar: NotVerticalBar,
-    	nparallel: nparallel,
-    	npar: npar,
-    	nparsl: nparsl,
-    	npart: npart,
-    	npolint: npolint,
-    	npr: npr,
-    	nprcue: nprcue,
-    	nprec: nprec,
-    	npreceq: npreceq,
-    	npre: npre,
-    	nrarrc: nrarrc,
-    	nrarr: nrarr,
-    	nrArr: nrArr,
-    	nrarrw: nrarrw,
-    	nrightarrow: nrightarrow,
-    	nRightarrow: nRightarrow,
-    	nrtri: nrtri,
-    	nrtrie: nrtrie,
-    	nsc: nsc,
-    	nsccue: nsccue,
-    	nsce: nsce,
-    	Nscr: Nscr,
-    	nscr: nscr,
-    	nshortmid: nshortmid,
-    	nshortparallel: nshortparallel,
-    	nsim: nsim,
-    	nsime: nsime,
-    	nsimeq: nsimeq,
-    	nsmid: nsmid,
-    	nspar: nspar,
-    	nsqsube: nsqsube,
-    	nsqsupe: nsqsupe,
-    	nsub: nsub,
-    	nsubE: nsubE,
-    	nsube: nsube,
-    	nsubset: nsubset,
-    	nsubseteq: nsubseteq,
-    	nsubseteqq: nsubseteqq,
-    	nsucc: nsucc,
-    	nsucceq: nsucceq,
-    	nsup: nsup,
-    	nsupE: nsupE,
-    	nsupe: nsupe,
-    	nsupset: nsupset,
-    	nsupseteq: nsupseteq,
-    	nsupseteqq: nsupseteqq,
-    	ntgl: ntgl,
-    	Ntilde: Ntilde,
-    	ntilde: ntilde,
-    	ntlg: ntlg,
-    	ntriangleleft: ntriangleleft,
-    	ntrianglelefteq: ntrianglelefteq,
-    	ntriangleright: ntriangleright,
-    	ntrianglerighteq: ntrianglerighteq,
-    	Nu: Nu,
-    	nu: nu,
-    	num: num,
-    	numero: numero,
-    	numsp: numsp,
-    	nvap: nvap,
-    	nvdash: nvdash,
-    	nvDash: nvDash,
-    	nVdash: nVdash,
-    	nVDash: nVDash,
-    	nvge: nvge,
-    	nvgt: nvgt,
-    	nvHarr: nvHarr,
-    	nvinfin: nvinfin,
-    	nvlArr: nvlArr,
-    	nvle: nvle,
-    	nvlt: nvlt,
-    	nvltrie: nvltrie,
-    	nvrArr: nvrArr,
-    	nvrtrie: nvrtrie,
-    	nvsim: nvsim,
-    	nwarhk: nwarhk,
-    	nwarr: nwarr,
-    	nwArr: nwArr,
-    	nwarrow: nwarrow,
-    	nwnear: nwnear,
-    	Oacute: Oacute,
-    	oacute: oacute,
-    	oast: oast,
-    	Ocirc: Ocirc,
-    	ocirc: ocirc,
-    	ocir: ocir,
-    	Ocy: Ocy,
-    	ocy: ocy,
-    	odash: odash,
-    	Odblac: Odblac,
-    	odblac: odblac,
-    	odiv: odiv,
-    	odot: odot,
-    	odsold: odsold,
-    	OElig: OElig,
-    	oelig: oelig,
-    	ofcir: ofcir,
-    	Ofr: Ofr,
-    	ofr: ofr,
-    	ogon: ogon,
-    	Ograve: Ograve,
-    	ograve: ograve,
-    	ogt: ogt,
-    	ohbar: ohbar,
-    	ohm: ohm,
-    	oint: oint,
-    	olarr: olarr,
-    	olcir: olcir,
-    	olcross: olcross,
-    	oline: oline,
-    	olt: olt,
-    	Omacr: Omacr,
-    	omacr: omacr,
-    	Omega: Omega,
-    	omega: omega,
-    	Omicron: Omicron,
-    	omicron: omicron,
-    	omid: omid,
-    	ominus: ominus,
-    	Oopf: Oopf,
-    	oopf: oopf,
-    	opar: opar,
-    	OpenCurlyDoubleQuote: OpenCurlyDoubleQuote,
-    	OpenCurlyQuote: OpenCurlyQuote,
-    	operp: operp,
-    	oplus: oplus,
-    	orarr: orarr,
-    	Or: Or,
-    	or: or,
-    	ord: ord,
-    	order: order,
-    	orderof: orderof,
-    	ordf: ordf,
-    	ordm: ordm,
-    	origof: origof,
-    	oror: oror,
-    	orslope: orslope,
-    	orv: orv,
-    	oS: oS,
-    	Oscr: Oscr,
-    	oscr: oscr,
-    	Oslash: Oslash,
-    	oslash: oslash,
-    	osol: osol,
-    	Otilde: Otilde,
-    	otilde: otilde,
-    	otimesas: otimesas,
-    	Otimes: Otimes,
-    	otimes: otimes,
-    	Ouml: Ouml,
-    	ouml: ouml,
-    	ovbar: ovbar,
-    	OverBar: OverBar,
-    	OverBrace: OverBrace,
-    	OverBracket: OverBracket,
-    	OverParenthesis: OverParenthesis,
-    	para: para,
-    	parallel: parallel,
-    	par: par,
-    	parsim: parsim,
-    	parsl: parsl,
-    	part: part,
-    	PartialD: PartialD,
-    	Pcy: Pcy,
-    	pcy: pcy,
-    	percnt: percnt,
-    	period: period,
-    	permil: permil,
-    	perp: perp,
-    	pertenk: pertenk,
-    	Pfr: Pfr,
-    	pfr: pfr,
-    	Phi: Phi,
-    	phi: phi,
-    	phiv: phiv,
-    	phmmat: phmmat,
-    	phone: phone,
-    	Pi: Pi,
-    	pi: pi,
-    	pitchfork: pitchfork,
-    	piv: piv,
-    	planck: planck,
-    	planckh: planckh,
-    	plankv: plankv,
-    	plusacir: plusacir,
-    	plusb: plusb,
-    	pluscir: pluscir,
-    	plus: plus,
-    	plusdo: plusdo,
-    	plusdu: plusdu,
-    	pluse: pluse,
-    	PlusMinus: PlusMinus,
-    	plusmn: plusmn,
-    	plussim: plussim,
-    	plustwo: plustwo,
-    	pm: pm,
-    	Poincareplane: Poincareplane,
-    	pointint: pointint,
-    	popf: popf,
-    	Popf: Popf,
-    	pound: pound,
-    	prap: prap,
-    	Pr: Pr,
-    	pr: pr,
-    	prcue: prcue,
-    	precapprox: precapprox,
-    	prec: prec,
-    	preccurlyeq: preccurlyeq,
-    	Precedes: Precedes,
-    	PrecedesEqual: PrecedesEqual,
-    	PrecedesSlantEqual: PrecedesSlantEqual,
-    	PrecedesTilde: PrecedesTilde,
-    	preceq: preceq,
-    	precnapprox: precnapprox,
-    	precneqq: precneqq,
-    	precnsim: precnsim,
-    	pre: pre,
-    	prE: prE,
-    	precsim: precsim,
-    	prime: prime,
-    	Prime: Prime,
-    	primes: primes,
-    	prnap: prnap,
-    	prnE: prnE,
-    	prnsim: prnsim,
-    	prod: prod,
-    	Product: Product,
-    	profalar: profalar,
-    	profline: profline,
-    	profsurf: profsurf,
-    	prop: prop,
-    	Proportional: Proportional,
-    	Proportion: Proportion,
-    	propto: propto,
-    	prsim: prsim,
-    	prurel: prurel,
-    	Pscr: Pscr,
-    	pscr: pscr,
-    	Psi: Psi,
-    	psi: psi,
-    	puncsp: puncsp,
-    	Qfr: Qfr,
-    	qfr: qfr,
-    	qint: qint,
-    	qopf: qopf,
-    	Qopf: Qopf,
-    	qprime: qprime,
-    	Qscr: Qscr,
-    	qscr: qscr,
-    	quaternions: quaternions,
-    	quatint: quatint,
-    	quest: quest,
-    	questeq: questeq,
-    	quot: quot,
-    	QUOT: QUOT,
-    	rAarr: rAarr,
-    	race: race,
-    	Racute: Racute,
-    	racute: racute,
-    	radic: radic,
-    	raemptyv: raemptyv,
-    	rang: rang,
-    	Rang: Rang,
-    	rangd: rangd,
-    	range: range,
-    	rangle: rangle,
-    	raquo: raquo,
-    	rarrap: rarrap,
-    	rarrb: rarrb,
-    	rarrbfs: rarrbfs,
-    	rarrc: rarrc,
-    	rarr: rarr,
-    	Rarr: Rarr,
-    	rArr: rArr,
-    	rarrfs: rarrfs,
-    	rarrhk: rarrhk,
-    	rarrlp: rarrlp,
-    	rarrpl: rarrpl,
-    	rarrsim: rarrsim,
-    	Rarrtl: Rarrtl,
-    	rarrtl: rarrtl,
-    	rarrw: rarrw,
-    	ratail: ratail,
-    	rAtail: rAtail,
-    	ratio: ratio,
-    	rationals: rationals,
-    	rbarr: rbarr,
-    	rBarr: rBarr,
-    	RBarr: RBarr,
-    	rbbrk: rbbrk,
-    	rbrace: rbrace,
-    	rbrack: rbrack,
-    	rbrke: rbrke,
-    	rbrksld: rbrksld,
-    	rbrkslu: rbrkslu,
-    	Rcaron: Rcaron,
-    	rcaron: rcaron,
-    	Rcedil: Rcedil,
-    	rcedil: rcedil,
-    	rceil: rceil,
-    	rcub: rcub,
-    	Rcy: Rcy,
-    	rcy: rcy,
-    	rdca: rdca,
-    	rdldhar: rdldhar,
-    	rdquo: rdquo,
-    	rdquor: rdquor,
-    	rdsh: rdsh,
-    	real: real,
-    	realine: realine,
-    	realpart: realpart,
-    	reals: reals,
-    	Re: Re,
-    	rect: rect,
-    	reg: reg,
-    	REG: REG,
-    	ReverseElement: ReverseElement,
-    	ReverseEquilibrium: ReverseEquilibrium,
-    	ReverseUpEquilibrium: ReverseUpEquilibrium,
-    	rfisht: rfisht,
-    	rfloor: rfloor,
-    	rfr: rfr,
-    	Rfr: Rfr,
-    	rHar: rHar,
-    	rhard: rhard,
-    	rharu: rharu,
-    	rharul: rharul,
-    	Rho: Rho,
-    	rho: rho,
-    	rhov: rhov,
-    	RightAngleBracket: RightAngleBracket,
-    	RightArrowBar: RightArrowBar,
-    	rightarrow: rightarrow,
-    	RightArrow: RightArrow,
-    	Rightarrow: Rightarrow,
-    	RightArrowLeftArrow: RightArrowLeftArrow,
-    	rightarrowtail: rightarrowtail,
-    	RightCeiling: RightCeiling,
-    	RightDoubleBracket: RightDoubleBracket,
-    	RightDownTeeVector: RightDownTeeVector,
-    	RightDownVectorBar: RightDownVectorBar,
-    	RightDownVector: RightDownVector,
-    	RightFloor: RightFloor,
-    	rightharpoondown: rightharpoondown,
-    	rightharpoonup: rightharpoonup,
-    	rightleftarrows: rightleftarrows,
-    	rightleftharpoons: rightleftharpoons,
-    	rightrightarrows: rightrightarrows,
-    	rightsquigarrow: rightsquigarrow,
-    	RightTeeArrow: RightTeeArrow,
-    	RightTee: RightTee,
-    	RightTeeVector: RightTeeVector,
-    	rightthreetimes: rightthreetimes,
-    	RightTriangleBar: RightTriangleBar,
-    	RightTriangle: RightTriangle,
-    	RightTriangleEqual: RightTriangleEqual,
-    	RightUpDownVector: RightUpDownVector,
-    	RightUpTeeVector: RightUpTeeVector,
-    	RightUpVectorBar: RightUpVectorBar,
-    	RightUpVector: RightUpVector,
-    	RightVectorBar: RightVectorBar,
-    	RightVector: RightVector,
-    	ring: ring,
-    	risingdotseq: risingdotseq,
-    	rlarr: rlarr,
-    	rlhar: rlhar,
-    	rlm: rlm,
-    	rmoustache: rmoustache,
-    	rmoust: rmoust,
-    	rnmid: rnmid,
-    	roang: roang,
-    	roarr: roarr,
-    	robrk: robrk,
-    	ropar: ropar,
-    	ropf: ropf,
-    	Ropf: Ropf,
-    	roplus: roplus,
-    	rotimes: rotimes,
-    	RoundImplies: RoundImplies,
-    	rpar: rpar,
-    	rpargt: rpargt,
-    	rppolint: rppolint,
-    	rrarr: rrarr,
-    	Rrightarrow: Rrightarrow,
-    	rsaquo: rsaquo,
-    	rscr: rscr,
-    	Rscr: Rscr,
-    	rsh: rsh,
-    	Rsh: Rsh,
-    	rsqb: rsqb,
-    	rsquo: rsquo,
-    	rsquor: rsquor,
-    	rthree: rthree,
-    	rtimes: rtimes,
-    	rtri: rtri,
-    	rtrie: rtrie,
-    	rtrif: rtrif,
-    	rtriltri: rtriltri,
-    	RuleDelayed: RuleDelayed,
-    	ruluhar: ruluhar,
-    	rx: rx,
-    	Sacute: Sacute,
-    	sacute: sacute,
-    	sbquo: sbquo,
-    	scap: scap,
-    	Scaron: Scaron,
-    	scaron: scaron,
-    	Sc: Sc,
-    	sc: sc,
-    	sccue: sccue,
-    	sce: sce,
-    	scE: scE,
-    	Scedil: Scedil,
-    	scedil: scedil,
-    	Scirc: Scirc,
-    	scirc: scirc,
-    	scnap: scnap,
-    	scnE: scnE,
-    	scnsim: scnsim,
-    	scpolint: scpolint,
-    	scsim: scsim,
-    	Scy: Scy,
-    	scy: scy,
-    	sdotb: sdotb,
-    	sdot: sdot,
-    	sdote: sdote,
-    	searhk: searhk,
-    	searr: searr,
-    	seArr: seArr,
-    	searrow: searrow,
-    	sect: sect,
-    	semi: semi,
-    	seswar: seswar,
-    	setminus: setminus,
-    	setmn: setmn,
-    	sext: sext,
-    	Sfr: Sfr,
-    	sfr: sfr,
-    	sfrown: sfrown,
-    	sharp: sharp,
-    	SHCHcy: SHCHcy,
-    	shchcy: shchcy,
-    	SHcy: SHcy,
-    	shcy: shcy,
-    	ShortDownArrow: ShortDownArrow,
-    	ShortLeftArrow: ShortLeftArrow,
-    	shortmid: shortmid,
-    	shortparallel: shortparallel,
-    	ShortRightArrow: ShortRightArrow,
-    	ShortUpArrow: ShortUpArrow,
-    	shy: shy,
-    	Sigma: Sigma,
-    	sigma: sigma,
-    	sigmaf: sigmaf,
-    	sigmav: sigmav,
-    	sim: sim,
-    	simdot: simdot,
-    	sime: sime,
-    	simeq: simeq,
-    	simg: simg,
-    	simgE: simgE,
-    	siml: siml,
-    	simlE: simlE,
-    	simne: simne,
-    	simplus: simplus,
-    	simrarr: simrarr,
-    	slarr: slarr,
-    	SmallCircle: SmallCircle,
-    	smallsetminus: smallsetminus,
-    	smashp: smashp,
-    	smeparsl: smeparsl,
-    	smid: smid,
-    	smile: smile,
-    	smt: smt,
-    	smte: smte,
-    	smtes: smtes,
-    	SOFTcy: SOFTcy,
-    	softcy: softcy,
-    	solbar: solbar,
-    	solb: solb,
-    	sol: sol,
-    	Sopf: Sopf,
-    	sopf: sopf,
-    	spades: spades,
-    	spadesuit: spadesuit,
-    	spar: spar,
-    	sqcap: sqcap,
-    	sqcaps: sqcaps,
-    	sqcup: sqcup,
-    	sqcups: sqcups,
-    	Sqrt: Sqrt,
-    	sqsub: sqsub,
-    	sqsube: sqsube,
-    	sqsubset: sqsubset,
-    	sqsubseteq: sqsubseteq,
-    	sqsup: sqsup,
-    	sqsupe: sqsupe,
-    	sqsupset: sqsupset,
-    	sqsupseteq: sqsupseteq,
-    	square: square,
-    	Square: Square,
-    	SquareIntersection: SquareIntersection,
-    	SquareSubset: SquareSubset,
-    	SquareSubsetEqual: SquareSubsetEqual,
-    	SquareSuperset: SquareSuperset,
-    	SquareSupersetEqual: SquareSupersetEqual,
-    	SquareUnion: SquareUnion,
-    	squarf: squarf,
-    	squ: squ,
-    	squf: squf,
-    	srarr: srarr,
-    	Sscr: Sscr,
-    	sscr: sscr,
-    	ssetmn: ssetmn,
-    	ssmile: ssmile,
-    	sstarf: sstarf,
-    	Star: Star,
-    	star: star,
-    	starf: starf,
-    	straightepsilon: straightepsilon,
-    	straightphi: straightphi,
-    	strns: strns,
-    	sub: sub,
-    	Sub: Sub,
-    	subdot: subdot,
-    	subE: subE,
-    	sube: sube,
-    	subedot: subedot,
-    	submult: submult,
-    	subnE: subnE,
-    	subne: subne,
-    	subplus: subplus,
-    	subrarr: subrarr,
-    	subset: subset,
-    	Subset: Subset,
-    	subseteq: subseteq,
-    	subseteqq: subseteqq,
-    	SubsetEqual: SubsetEqual,
-    	subsetneq: subsetneq,
-    	subsetneqq: subsetneqq,
-    	subsim: subsim,
-    	subsub: subsub,
-    	subsup: subsup,
-    	succapprox: succapprox,
-    	succ: succ,
-    	succcurlyeq: succcurlyeq,
-    	Succeeds: Succeeds,
-    	SucceedsEqual: SucceedsEqual,
-    	SucceedsSlantEqual: SucceedsSlantEqual,
-    	SucceedsTilde: SucceedsTilde,
-    	succeq: succeq,
-    	succnapprox: succnapprox,
-    	succneqq: succneqq,
-    	succnsim: succnsim,
-    	succsim: succsim,
-    	SuchThat: SuchThat,
-    	sum: sum,
-    	Sum: Sum,
-    	sung: sung,
-    	sup1: sup1,
-    	sup2: sup2,
-    	sup3: sup3,
-    	sup: sup,
-    	Sup: Sup,
-    	supdot: supdot,
-    	supdsub: supdsub,
-    	supE: supE,
-    	supe: supe,
-    	supedot: supedot,
-    	Superset: Superset,
-    	SupersetEqual: SupersetEqual,
-    	suphsol: suphsol,
-    	suphsub: suphsub,
-    	suplarr: suplarr,
-    	supmult: supmult,
-    	supnE: supnE,
-    	supne: supne,
-    	supplus: supplus,
-    	supset: supset,
-    	Supset: Supset,
-    	supseteq: supseteq,
-    	supseteqq: supseteqq,
-    	supsetneq: supsetneq,
-    	supsetneqq: supsetneqq,
-    	supsim: supsim,
-    	supsub: supsub,
-    	supsup: supsup,
-    	swarhk: swarhk,
-    	swarr: swarr,
-    	swArr: swArr,
-    	swarrow: swarrow,
-    	swnwar: swnwar,
-    	szlig: szlig,
-    	Tab: Tab,
-    	target: target,
-    	Tau: Tau,
-    	tau: tau,
-    	tbrk: tbrk,
-    	Tcaron: Tcaron,
-    	tcaron: tcaron,
-    	Tcedil: Tcedil,
-    	tcedil: tcedil,
-    	Tcy: Tcy,
-    	tcy: tcy,
-    	tdot: tdot,
-    	telrec: telrec,
-    	Tfr: Tfr,
-    	tfr: tfr,
-    	there4: there4,
-    	therefore: therefore,
-    	Therefore: Therefore,
-    	Theta: Theta,
-    	theta: theta,
-    	thetasym: thetasym,
-    	thetav: thetav,
-    	thickapprox: thickapprox,
-    	thicksim: thicksim,
-    	ThickSpace: ThickSpace,
-    	ThinSpace: ThinSpace,
-    	thinsp: thinsp,
-    	thkap: thkap,
-    	thksim: thksim,
-    	THORN: THORN,
-    	thorn: thorn,
-    	tilde: tilde,
-    	Tilde: Tilde,
-    	TildeEqual: TildeEqual,
-    	TildeFullEqual: TildeFullEqual,
-    	TildeTilde: TildeTilde,
-    	timesbar: timesbar,
-    	timesb: timesb,
-    	times: times,
-    	timesd: timesd,
-    	tint: tint,
-    	toea: toea,
-    	topbot: topbot,
-    	topcir: topcir,
-    	top: top,
-    	Topf: Topf,
-    	topf: topf,
-    	topfork: topfork,
-    	tosa: tosa,
-    	tprime: tprime,
-    	trade: trade,
-    	TRADE: TRADE,
-    	triangle: triangle,
-    	triangledown: triangledown,
-    	triangleleft: triangleleft,
-    	trianglelefteq: trianglelefteq,
-    	triangleq: triangleq,
-    	triangleright: triangleright,
-    	trianglerighteq: trianglerighteq,
-    	tridot: tridot,
-    	trie: trie,
-    	triminus: triminus,
-    	TripleDot: TripleDot,
-    	triplus: triplus,
-    	trisb: trisb,
-    	tritime: tritime,
-    	trpezium: trpezium,
-    	Tscr: Tscr,
-    	tscr: tscr,
-    	TScy: TScy,
-    	tscy: tscy,
-    	TSHcy: TSHcy,
-    	tshcy: tshcy,
-    	Tstrok: Tstrok,
-    	tstrok: tstrok,
-    	twixt: twixt,
-    	twoheadleftarrow: twoheadleftarrow,
-    	twoheadrightarrow: twoheadrightarrow,
-    	Uacute: Uacute,
-    	uacute: uacute,
-    	uarr: uarr,
-    	Uarr: Uarr,
-    	uArr: uArr,
-    	Uarrocir: Uarrocir,
-    	Ubrcy: Ubrcy,
-    	ubrcy: ubrcy,
-    	Ubreve: Ubreve,
-    	ubreve: ubreve,
-    	Ucirc: Ucirc,
-    	ucirc: ucirc,
-    	Ucy: Ucy,
-    	ucy: ucy,
-    	udarr: udarr,
-    	Udblac: Udblac,
-    	udblac: udblac,
-    	udhar: udhar,
-    	ufisht: ufisht,
-    	Ufr: Ufr,
-    	ufr: ufr,
-    	Ugrave: Ugrave,
-    	ugrave: ugrave,
-    	uHar: uHar,
-    	uharl: uharl,
-    	uharr: uharr,
-    	uhblk: uhblk,
-    	ulcorn: ulcorn,
-    	ulcorner: ulcorner,
-    	ulcrop: ulcrop,
-    	ultri: ultri,
-    	Umacr: Umacr,
-    	umacr: umacr,
-    	uml: uml,
-    	UnderBar: UnderBar,
-    	UnderBrace: UnderBrace,
-    	UnderBracket: UnderBracket,
-    	UnderParenthesis: UnderParenthesis,
-    	Union: Union,
-    	UnionPlus: UnionPlus,
-    	Uogon: Uogon,
-    	uogon: uogon,
-    	Uopf: Uopf,
-    	uopf: uopf,
-    	UpArrowBar: UpArrowBar,
-    	uparrow: uparrow,
-    	UpArrow: UpArrow,
-    	Uparrow: Uparrow,
-    	UpArrowDownArrow: UpArrowDownArrow,
-    	updownarrow: updownarrow,
-    	UpDownArrow: UpDownArrow,
-    	Updownarrow: Updownarrow,
-    	UpEquilibrium: UpEquilibrium,
-    	upharpoonleft: upharpoonleft,
-    	upharpoonright: upharpoonright,
-    	uplus: uplus,
-    	UpperLeftArrow: UpperLeftArrow,
-    	UpperRightArrow: UpperRightArrow,
-    	upsi: upsi,
-    	Upsi: Upsi,
-    	upsih: upsih,
-    	Upsilon: Upsilon,
-    	upsilon: upsilon,
-    	UpTeeArrow: UpTeeArrow,
-    	UpTee: UpTee,
-    	upuparrows: upuparrows,
-    	urcorn: urcorn,
-    	urcorner: urcorner,
-    	urcrop: urcrop,
-    	Uring: Uring,
-    	uring: uring,
-    	urtri: urtri,
-    	Uscr: Uscr,
-    	uscr: uscr,
-    	utdot: utdot,
-    	Utilde: Utilde,
-    	utilde: utilde,
-    	utri: utri,
-    	utrif: utrif,
-    	uuarr: uuarr,
-    	Uuml: Uuml,
-    	uuml: uuml,
-    	uwangle: uwangle,
-    	vangrt: vangrt,
-    	varepsilon: varepsilon,
-    	varkappa: varkappa,
-    	varnothing: varnothing,
-    	varphi: varphi,
-    	varpi: varpi,
-    	varpropto: varpropto,
-    	varr: varr,
-    	vArr: vArr,
-    	varrho: varrho,
-    	varsigma: varsigma,
-    	varsubsetneq: varsubsetneq,
-    	varsubsetneqq: varsubsetneqq,
-    	varsupsetneq: varsupsetneq,
-    	varsupsetneqq: varsupsetneqq,
-    	vartheta: vartheta,
-    	vartriangleleft: vartriangleleft,
-    	vartriangleright: vartriangleright,
-    	vBar: vBar,
-    	Vbar: Vbar,
-    	vBarv: vBarv,
-    	Vcy: Vcy,
-    	vcy: vcy,
-    	vdash: vdash,
-    	vDash: vDash,
-    	Vdash: Vdash,
-    	VDash: VDash,
-    	Vdashl: Vdashl,
-    	veebar: veebar,
-    	vee: vee,
-    	Vee: Vee,
-    	veeeq: veeeq,
-    	vellip: vellip,
-    	verbar: verbar,
-    	Verbar: Verbar,
-    	vert: vert,
-    	Vert: Vert,
-    	VerticalBar: VerticalBar,
-    	VerticalLine: VerticalLine,
-    	VerticalSeparator: VerticalSeparator,
-    	VerticalTilde: VerticalTilde,
-    	VeryThinSpace: VeryThinSpace,
-    	Vfr: Vfr,
-    	vfr: vfr,
-    	vltri: vltri,
-    	vnsub: vnsub,
-    	vnsup: vnsup,
-    	Vopf: Vopf,
-    	vopf: vopf,
-    	vprop: vprop,
-    	vrtri: vrtri,
-    	Vscr: Vscr,
-    	vscr: vscr,
-    	vsubnE: vsubnE,
-    	vsubne: vsubne,
-    	vsupnE: vsupnE,
-    	vsupne: vsupne,
-    	Vvdash: Vvdash,
-    	vzigzag: vzigzag,
-    	Wcirc: Wcirc,
-    	wcirc: wcirc,
-    	wedbar: wedbar,
-    	wedge: wedge,
-    	Wedge: Wedge,
-    	wedgeq: wedgeq,
-    	weierp: weierp,
-    	Wfr: Wfr,
-    	wfr: wfr,
-    	Wopf: Wopf,
-    	wopf: wopf,
-    	wp: wp,
-    	wr: wr,
-    	wreath: wreath,
-    	Wscr: Wscr,
-    	wscr: wscr,
-    	xcap: xcap,
-    	xcirc: xcirc,
-    	xcup: xcup,
-    	xdtri: xdtri,
-    	Xfr: Xfr,
-    	xfr: xfr,
-    	xharr: xharr,
-    	xhArr: xhArr,
-    	Xi: Xi,
-    	xi: xi,
-    	xlarr: xlarr,
-    	xlArr: xlArr,
-    	xmap: xmap,
-    	xnis: xnis,
-    	xodot: xodot,
-    	Xopf: Xopf,
-    	xopf: xopf,
-    	xoplus: xoplus,
-    	xotime: xotime,
-    	xrarr: xrarr,
-    	xrArr: xrArr,
-    	Xscr: Xscr,
-    	xscr: xscr,
-    	xsqcup: xsqcup,
-    	xuplus: xuplus,
-    	xutri: xutri,
-    	xvee: xvee,
-    	xwedge: xwedge,
-    	Yacute: Yacute,
-    	yacute: yacute,
-    	YAcy: YAcy,
-    	yacy: yacy,
-    	Ycirc: Ycirc,
-    	ycirc: ycirc,
-    	Ycy: Ycy,
-    	ycy: ycy,
-    	yen: yen,
-    	Yfr: Yfr,
-    	yfr: yfr,
-    	YIcy: YIcy,
-    	yicy: yicy,
-    	Yopf: Yopf,
-    	yopf: yopf,
-    	Yscr: Yscr,
-    	yscr: yscr,
-    	YUcy: YUcy,
-    	yucy: yucy,
-    	yuml: yuml,
-    	Yuml: Yuml,
-    	Zacute: Zacute,
-    	zacute: zacute,
-    	Zcaron: Zcaron,
-    	zcaron: zcaron,
-    	Zcy: Zcy,
-    	zcy: zcy,
-    	Zdot: Zdot,
-    	zdot: zdot,
-    	zeetrf: zeetrf,
-    	ZeroWidthSpace: ZeroWidthSpace,
-    	Zeta: Zeta,
-    	zeta: zeta,
-    	zfr: zfr,
-    	Zfr: Zfr,
-    	ZHcy: ZHcy,
-    	zhcy: zhcy,
-    	zigrarr: zigrarr,
-    	zopf: zopf,
-    	Zopf: Zopf,
-    	Zscr: Zscr,
-    	zscr: zscr,
-    	zwj: zwj,
-    	zwnj: zwnj
-    };
-
-    var entities$1 = /*#__PURE__*/Object.freeze({
-        __proto__: null,
-        Aacute: Aacute,
-        aacute: aacute,
-        Abreve: Abreve,
-        abreve: abreve,
-        ac: ac,
-        acd: acd,
-        acE: acE,
-        Acirc: Acirc,
-        acirc: acirc,
-        acute: acute,
-        Acy: Acy,
-        acy: acy,
-        AElig: AElig,
-        aelig: aelig,
-        af: af,
-        Afr: Afr,
-        afr: afr,
-        Agrave: Agrave,
-        agrave: agrave,
-        alefsym: alefsym,
-        aleph: aleph,
-        Alpha: Alpha,
-        alpha: alpha,
-        Amacr: Amacr,
-        amacr: amacr,
-        amalg: amalg,
-        amp: amp,
-        AMP: AMP,
-        andand: andand,
-        And: And,
-        and: and,
-        andd: andd,
-        andslope: andslope,
-        andv: andv,
-        ang: ang,
-        ange: ange,
-        angle: angle,
-        angmsdaa: angmsdaa,
-        angmsdab: angmsdab,
-        angmsdac: angmsdac,
-        angmsdad: angmsdad,
-        angmsdae: angmsdae,
-        angmsdaf: angmsdaf,
-        angmsdag: angmsdag,
-        angmsdah: angmsdah,
-        angmsd: angmsd,
-        angrt: angrt,
-        angrtvb: angrtvb,
-        angrtvbd: angrtvbd,
-        angsph: angsph,
-        angst: angst,
-        angzarr: angzarr,
-        Aogon: Aogon,
-        aogon: aogon,
-        Aopf: Aopf,
-        aopf: aopf,
-        apacir: apacir,
-        ap: ap,
-        apE: apE,
-        ape: ape,
-        apid: apid,
-        apos: apos,
-        ApplyFunction: ApplyFunction,
-        approx: approx,
-        approxeq: approxeq,
-        Aring: Aring,
-        aring: aring,
-        Ascr: Ascr,
-        ascr: ascr,
-        Assign: Assign,
-        ast: ast,
-        asymp: asymp,
-        asympeq: asympeq,
-        Atilde: Atilde,
-        atilde: atilde,
-        Auml: Auml,
-        auml: auml,
-        awconint: awconint,
-        awint: awint,
-        backcong: backcong,
-        backepsilon: backepsilon,
-        backprime: backprime,
-        backsim: backsim,
-        backsimeq: backsimeq,
-        Backslash: Backslash,
-        Barv: Barv,
-        barvee: barvee,
-        barwed: barwed,
-        Barwed: Barwed,
-        barwedge: barwedge,
-        bbrk: bbrk,
-        bbrktbrk: bbrktbrk,
-        bcong: bcong,
-        Bcy: Bcy,
-        bcy: bcy,
-        bdquo: bdquo,
-        becaus: becaus,
-        because: because,
-        Because: Because,
-        bemptyv: bemptyv,
-        bepsi: bepsi,
-        bernou: bernou,
-        Bernoullis: Bernoullis,
-        Beta: Beta,
-        beta: beta,
-        beth: beth,
-        between: between,
-        Bfr: Bfr,
-        bfr: bfr,
-        bigcap: bigcap,
-        bigcirc: bigcirc,
-        bigcup: bigcup,
-        bigodot: bigodot,
-        bigoplus: bigoplus,
-        bigotimes: bigotimes,
-        bigsqcup: bigsqcup,
-        bigstar: bigstar,
-        bigtriangledown: bigtriangledown,
-        bigtriangleup: bigtriangleup,
-        biguplus: biguplus,
-        bigvee: bigvee,
-        bigwedge: bigwedge,
-        bkarow: bkarow,
-        blacklozenge: blacklozenge,
-        blacksquare: blacksquare,
-        blacktriangle: blacktriangle,
-        blacktriangledown: blacktriangledown,
-        blacktriangleleft: blacktriangleleft,
-        blacktriangleright: blacktriangleright,
-        blank: blank,
-        blk12: blk12,
-        blk14: blk14,
-        blk34: blk34,
-        block: block,
-        bne: bne,
-        bnequiv: bnequiv,
-        bNot: bNot,
-        bnot: bnot,
-        Bopf: Bopf,
-        bopf: bopf,
-        bot: bot,
-        bottom: bottom,
-        bowtie: bowtie,
-        boxbox: boxbox,
-        boxdl: boxdl,
-        boxdL: boxdL,
-        boxDl: boxDl,
-        boxDL: boxDL,
-        boxdr: boxdr,
-        boxdR: boxdR,
-        boxDr: boxDr,
-        boxDR: boxDR,
-        boxh: boxh,
-        boxH: boxH,
-        boxhd: boxhd,
-        boxHd: boxHd,
-        boxhD: boxhD,
-        boxHD: boxHD,
-        boxhu: boxhu,
-        boxHu: boxHu,
-        boxhU: boxhU,
-        boxHU: boxHU,
-        boxminus: boxminus,
-        boxplus: boxplus,
-        boxtimes: boxtimes,
-        boxul: boxul,
-        boxuL: boxuL,
-        boxUl: boxUl,
-        boxUL: boxUL,
-        boxur: boxur,
-        boxuR: boxuR,
-        boxUr: boxUr,
-        boxUR: boxUR,
-        boxv: boxv,
-        boxV: boxV,
-        boxvh: boxvh,
-        boxvH: boxvH,
-        boxVh: boxVh,
-        boxVH: boxVH,
-        boxvl: boxvl,
-        boxvL: boxvL,
-        boxVl: boxVl,
-        boxVL: boxVL,
-        boxvr: boxvr,
-        boxvR: boxvR,
-        boxVr: boxVr,
-        boxVR: boxVR,
-        bprime: bprime,
-        breve: breve,
-        Breve: Breve,
-        brvbar: brvbar,
-        bscr: bscr,
-        Bscr: Bscr,
-        bsemi: bsemi,
-        bsim: bsim,
-        bsime: bsime,
-        bsolb: bsolb,
-        bsol: bsol,
-        bsolhsub: bsolhsub,
-        bull: bull,
-        bullet: bullet,
-        bump: bump,
-        bumpE: bumpE,
-        bumpe: bumpe,
-        Bumpeq: Bumpeq,
-        bumpeq: bumpeq,
-        Cacute: Cacute,
-        cacute: cacute,
-        capand: capand,
-        capbrcup: capbrcup,
-        capcap: capcap,
-        cap: cap,
-        Cap: Cap,
-        capcup: capcup,
-        capdot: capdot,
-        CapitalDifferentialD: CapitalDifferentialD,
-        caps: caps,
-        caret: caret,
-        caron: caron,
-        Cayleys: Cayleys,
-        ccaps: ccaps,
-        Ccaron: Ccaron,
-        ccaron: ccaron,
-        Ccedil: Ccedil,
-        ccedil: ccedil,
-        Ccirc: Ccirc,
-        ccirc: ccirc,
-        Cconint: Cconint,
-        ccups: ccups,
-        ccupssm: ccupssm,
-        Cdot: Cdot,
-        cdot: cdot,
-        cedil: cedil,
-        Cedilla: Cedilla,
-        cemptyv: cemptyv,
-        cent: cent,
-        centerdot: centerdot,
-        CenterDot: CenterDot,
-        cfr: cfr,
-        Cfr: Cfr,
-        CHcy: CHcy,
-        chcy: chcy,
-        check: check,
-        checkmark: checkmark,
-        Chi: Chi,
-        chi: chi,
-        circ: circ,
-        circeq: circeq,
-        circlearrowleft: circlearrowleft,
-        circlearrowright: circlearrowright,
-        circledast: circledast,
-        circledcirc: circledcirc,
-        circleddash: circleddash,
-        CircleDot: CircleDot,
-        circledR: circledR,
-        circledS: circledS,
-        CircleMinus: CircleMinus,
-        CirclePlus: CirclePlus,
-        CircleTimes: CircleTimes,
-        cir: cir,
-        cirE: cirE,
-        cire: cire,
-        cirfnint: cirfnint,
-        cirmid: cirmid,
-        cirscir: cirscir,
-        ClockwiseContourIntegral: ClockwiseContourIntegral,
-        CloseCurlyDoubleQuote: CloseCurlyDoubleQuote,
-        CloseCurlyQuote: CloseCurlyQuote,
-        clubs: clubs,
-        clubsuit: clubsuit,
-        colon: colon,
-        Colon: Colon,
-        Colone: Colone,
-        colone: colone,
-        coloneq: coloneq,
-        comma: comma,
-        commat: commat,
-        comp: comp,
-        compfn: compfn,
-        complement: complement,
-        complexes: complexes,
-        cong: cong,
-        congdot: congdot,
-        Congruent: Congruent,
-        conint: conint,
-        Conint: Conint,
-        ContourIntegral: ContourIntegral,
-        copf: copf,
-        Copf: Copf,
-        coprod: coprod,
-        Coproduct: Coproduct,
-        copy: copy,
-        COPY: COPY,
-        copysr: copysr,
-        CounterClockwiseContourIntegral: CounterClockwiseContourIntegral,
-        crarr: crarr,
-        cross: cross,
-        Cross: Cross,
-        Cscr: Cscr,
-        cscr: cscr,
-        csub: csub,
-        csube: csube,
-        csup: csup,
-        csupe: csupe,
-        ctdot: ctdot,
-        cudarrl: cudarrl,
-        cudarrr: cudarrr,
-        cuepr: cuepr,
-        cuesc: cuesc,
-        cularr: cularr,
-        cularrp: cularrp,
-        cupbrcap: cupbrcap,
-        cupcap: cupcap,
-        CupCap: CupCap,
-        cup: cup,
-        Cup: Cup,
-        cupcup: cupcup,
-        cupdot: cupdot,
-        cupor: cupor,
-        cups: cups,
-        curarr: curarr,
-        curarrm: curarrm,
-        curlyeqprec: curlyeqprec,
-        curlyeqsucc: curlyeqsucc,
-        curlyvee: curlyvee,
-        curlywedge: curlywedge,
-        curren: curren,
-        curvearrowleft: curvearrowleft,
-        curvearrowright: curvearrowright,
-        cuvee: cuvee,
-        cuwed: cuwed,
-        cwconint: cwconint,
-        cwint: cwint,
-        cylcty: cylcty,
-        dagger: dagger,
-        Dagger: Dagger,
-        daleth: daleth,
-        darr: darr,
-        Darr: Darr,
-        dArr: dArr,
-        dash: dash,
-        Dashv: Dashv,
-        dashv: dashv,
-        dbkarow: dbkarow,
-        dblac: dblac,
-        Dcaron: Dcaron,
-        dcaron: dcaron,
-        Dcy: Dcy,
-        dcy: dcy,
-        ddagger: ddagger,
-        ddarr: ddarr,
-        DD: DD,
-        dd: dd,
-        DDotrahd: DDotrahd,
-        ddotseq: ddotseq,
-        deg: deg,
-        Del: Del,
-        Delta: Delta,
-        delta: delta,
-        demptyv: demptyv,
-        dfisht: dfisht,
-        Dfr: Dfr,
-        dfr: dfr,
-        dHar: dHar,
-        dharl: dharl,
-        dharr: dharr,
-        DiacriticalAcute: DiacriticalAcute,
-        DiacriticalDot: DiacriticalDot,
-        DiacriticalDoubleAcute: DiacriticalDoubleAcute,
-        DiacriticalGrave: DiacriticalGrave,
-        DiacriticalTilde: DiacriticalTilde,
-        diam: diam,
-        diamond: diamond,
-        Diamond: Diamond,
-        diamondsuit: diamondsuit,
-        diams: diams,
-        die: die,
-        DifferentialD: DifferentialD,
-        digamma: digamma,
-        disin: disin,
-        div: div,
-        divide: divide,
-        divideontimes: divideontimes,
-        divonx: divonx,
-        DJcy: DJcy,
-        djcy: djcy,
-        dlcorn: dlcorn,
-        dlcrop: dlcrop,
-        dollar: dollar,
-        Dopf: Dopf,
-        dopf: dopf,
-        Dot: Dot,
-        dot: dot,
-        DotDot: DotDot,
-        doteq: doteq,
-        doteqdot: doteqdot,
-        DotEqual: DotEqual,
-        dotminus: dotminus,
-        dotplus: dotplus,
-        dotsquare: dotsquare,
-        doublebarwedge: doublebarwedge,
-        DoubleContourIntegral: DoubleContourIntegral,
-        DoubleDot: DoubleDot,
-        DoubleDownArrow: DoubleDownArrow,
-        DoubleLeftArrow: DoubleLeftArrow,
-        DoubleLeftRightArrow: DoubleLeftRightArrow,
-        DoubleLeftTee: DoubleLeftTee,
-        DoubleLongLeftArrow: DoubleLongLeftArrow,
-        DoubleLongLeftRightArrow: DoubleLongLeftRightArrow,
-        DoubleLongRightArrow: DoubleLongRightArrow,
-        DoubleRightArrow: DoubleRightArrow,
-        DoubleRightTee: DoubleRightTee,
-        DoubleUpArrow: DoubleUpArrow,
-        DoubleUpDownArrow: DoubleUpDownArrow,
-        DoubleVerticalBar: DoubleVerticalBar,
-        DownArrowBar: DownArrowBar,
-        downarrow: downarrow,
-        DownArrow: DownArrow,
-        Downarrow: Downarrow,
-        DownArrowUpArrow: DownArrowUpArrow,
-        DownBreve: DownBreve,
-        downdownarrows: downdownarrows,
-        downharpoonleft: downharpoonleft,
-        downharpoonright: downharpoonright,
-        DownLeftRightVector: DownLeftRightVector,
-        DownLeftTeeVector: DownLeftTeeVector,
-        DownLeftVectorBar: DownLeftVectorBar,
-        DownLeftVector: DownLeftVector,
-        DownRightTeeVector: DownRightTeeVector,
-        DownRightVectorBar: DownRightVectorBar,
-        DownRightVector: DownRightVector,
-        DownTeeArrow: DownTeeArrow,
-        DownTee: DownTee,
-        drbkarow: drbkarow,
-        drcorn: drcorn,
-        drcrop: drcrop,
-        Dscr: Dscr,
-        dscr: dscr,
-        DScy: DScy,
-        dscy: dscy,
-        dsol: dsol,
-        Dstrok: Dstrok,
-        dstrok: dstrok,
-        dtdot: dtdot,
-        dtri: dtri,
-        dtrif: dtrif,
-        duarr: duarr,
-        duhar: duhar,
-        dwangle: dwangle,
-        DZcy: DZcy,
-        dzcy: dzcy,
-        dzigrarr: dzigrarr,
-        Eacute: Eacute,
-        eacute: eacute,
-        easter: easter,
-        Ecaron: Ecaron,
-        ecaron: ecaron,
-        Ecirc: Ecirc,
-        ecirc: ecirc,
-        ecir: ecir,
-        ecolon: ecolon,
-        Ecy: Ecy,
-        ecy: ecy,
-        eDDot: eDDot,
-        Edot: Edot,
-        edot: edot,
-        eDot: eDot,
-        ee: ee,
-        efDot: efDot,
-        Efr: Efr,
-        efr: efr,
-        eg: eg,
-        Egrave: Egrave,
-        egrave: egrave,
-        egs: egs,
-        egsdot: egsdot,
-        el: el,
-        Element: Element,
-        elinters: elinters,
-        ell: ell,
-        els: els,
-        elsdot: elsdot,
-        Emacr: Emacr,
-        emacr: emacr,
-        empty: empty,
-        emptyset: emptyset,
-        EmptySmallSquare: EmptySmallSquare,
-        emptyv: emptyv,
-        EmptyVerySmallSquare: EmptyVerySmallSquare,
-        emsp13: emsp13,
-        emsp14: emsp14,
-        emsp: emsp,
-        ENG: ENG,
-        eng: eng,
-        ensp: ensp,
-        Eogon: Eogon,
-        eogon: eogon,
-        Eopf: Eopf,
-        eopf: eopf,
-        epar: epar,
-        eparsl: eparsl,
-        eplus: eplus,
-        epsi: epsi,
-        Epsilon: Epsilon,
-        epsilon: epsilon,
-        epsiv: epsiv,
-        eqcirc: eqcirc,
-        eqcolon: eqcolon,
-        eqsim: eqsim,
-        eqslantgtr: eqslantgtr,
-        eqslantless: eqslantless,
-        Equal: Equal,
-        equals: equals,
-        EqualTilde: EqualTilde,
-        equest: equest,
-        Equilibrium: Equilibrium,
-        equiv: equiv,
-        equivDD: equivDD,
-        eqvparsl: eqvparsl,
-        erarr: erarr,
-        erDot: erDot,
-        escr: escr,
-        Escr: Escr,
-        esdot: esdot,
-        Esim: Esim,
-        esim: esim,
-        Eta: Eta,
-        eta: eta,
-        ETH: ETH,
-        eth: eth,
-        Euml: Euml,
-        euml: euml,
-        euro: euro,
-        excl: excl,
-        exist: exist,
-        Exists: Exists,
-        expectation: expectation,
-        exponentiale: exponentiale,
-        ExponentialE: ExponentialE,
-        fallingdotseq: fallingdotseq,
-        Fcy: Fcy,
-        fcy: fcy,
-        female: female,
-        ffilig: ffilig,
-        fflig: fflig,
-        ffllig: ffllig,
-        Ffr: Ffr,
-        ffr: ffr,
-        filig: filig,
-        FilledSmallSquare: FilledSmallSquare,
-        FilledVerySmallSquare: FilledVerySmallSquare,
-        fjlig: fjlig,
-        flat: flat,
-        fllig: fllig,
-        fltns: fltns,
-        fnof: fnof,
-        Fopf: Fopf,
-        fopf: fopf,
-        forall: forall,
-        ForAll: ForAll,
-        fork: fork,
-        forkv: forkv,
-        Fouriertrf: Fouriertrf,
-        fpartint: fpartint,
-        frac12: frac12,
-        frac13: frac13,
-        frac14: frac14,
-        frac15: frac15,
-        frac16: frac16,
-        frac18: frac18,
-        frac23: frac23,
-        frac25: frac25,
-        frac34: frac34,
-        frac35: frac35,
-        frac38: frac38,
-        frac45: frac45,
-        frac56: frac56,
-        frac58: frac58,
-        frac78: frac78,
-        frasl: frasl,
-        frown: frown,
-        fscr: fscr,
-        Fscr: Fscr,
-        gacute: gacute,
-        Gamma: Gamma,
-        gamma: gamma,
-        Gammad: Gammad,
-        gammad: gammad,
-        gap: gap,
-        Gbreve: Gbreve,
-        gbreve: gbreve,
-        Gcedil: Gcedil,
-        Gcirc: Gcirc,
-        gcirc: gcirc,
-        Gcy: Gcy,
-        gcy: gcy,
-        Gdot: Gdot,
-        gdot: gdot,
-        ge: ge,
-        gE: gE,
-        gEl: gEl,
-        gel: gel,
-        geq: geq,
-        geqq: geqq,
-        geqslant: geqslant,
-        gescc: gescc,
-        ges: ges,
-        gesdot: gesdot,
-        gesdoto: gesdoto,
-        gesdotol: gesdotol,
-        gesl: gesl,
-        gesles: gesles,
-        Gfr: Gfr,
-        gfr: gfr,
-        gg: gg,
-        Gg: Gg,
-        ggg: ggg,
-        gimel: gimel,
-        GJcy: GJcy,
-        gjcy: gjcy,
-        gla: gla,
-        gl: gl,
-        glE: glE,
-        glj: glj,
-        gnap: gnap,
-        gnapprox: gnapprox,
-        gne: gne,
-        gnE: gnE,
-        gneq: gneq,
-        gneqq: gneqq,
-        gnsim: gnsim,
-        Gopf: Gopf,
-        gopf: gopf,
-        grave: grave,
-        GreaterEqual: GreaterEqual,
-        GreaterEqualLess: GreaterEqualLess,
-        GreaterFullEqual: GreaterFullEqual,
-        GreaterGreater: GreaterGreater,
-        GreaterLess: GreaterLess,
-        GreaterSlantEqual: GreaterSlantEqual,
-        GreaterTilde: GreaterTilde,
-        Gscr: Gscr,
-        gscr: gscr,
-        gsim: gsim,
-        gsime: gsime,
-        gsiml: gsiml,
-        gtcc: gtcc,
-        gtcir: gtcir,
-        gt: gt,
-        GT: GT,
-        Gt: Gt,
-        gtdot: gtdot,
-        gtlPar: gtlPar,
-        gtquest: gtquest,
-        gtrapprox: gtrapprox,
-        gtrarr: gtrarr,
-        gtrdot: gtrdot,
-        gtreqless: gtreqless,
-        gtreqqless: gtreqqless,
-        gtrless: gtrless,
-        gtrsim: gtrsim,
-        gvertneqq: gvertneqq,
-        gvnE: gvnE,
-        Hacek: Hacek,
-        hairsp: hairsp,
-        half: half,
-        hamilt: hamilt,
-        HARDcy: HARDcy,
-        hardcy: hardcy,
-        harrcir: harrcir,
-        harr: harr,
-        hArr: hArr,
-        harrw: harrw,
-        Hat: Hat,
-        hbar: hbar,
-        Hcirc: Hcirc,
-        hcirc: hcirc,
-        hearts: hearts,
-        heartsuit: heartsuit,
-        hellip: hellip,
-        hercon: hercon,
-        hfr: hfr,
-        Hfr: Hfr,
-        HilbertSpace: HilbertSpace,
-        hksearow: hksearow,
-        hkswarow: hkswarow,
-        hoarr: hoarr,
-        homtht: homtht,
-        hookleftarrow: hookleftarrow,
-        hookrightarrow: hookrightarrow,
-        hopf: hopf,
-        Hopf: Hopf,
-        horbar: horbar,
-        HorizontalLine: HorizontalLine,
-        hscr: hscr,
-        Hscr: Hscr,
-        hslash: hslash,
-        Hstrok: Hstrok,
-        hstrok: hstrok,
-        HumpDownHump: HumpDownHump,
-        HumpEqual: HumpEqual,
-        hybull: hybull,
-        hyphen: hyphen,
-        Iacute: Iacute,
-        iacute: iacute,
-        ic: ic,
-        Icirc: Icirc,
-        icirc: icirc,
-        Icy: Icy,
-        icy: icy,
-        Idot: Idot,
-        IEcy: IEcy,
-        iecy: iecy,
-        iexcl: iexcl,
-        iff: iff,
-        ifr: ifr,
-        Ifr: Ifr,
-        Igrave: Igrave,
-        igrave: igrave,
-        ii: ii,
-        iiiint: iiiint,
-        iiint: iiint,
-        iinfin: iinfin,
-        iiota: iiota,
-        IJlig: IJlig,
-        ijlig: ijlig,
-        Imacr: Imacr,
-        imacr: imacr,
-        image: image,
-        ImaginaryI: ImaginaryI,
-        imagline: imagline,
-        imagpart: imagpart,
-        imath: imath,
-        Im: Im,
-        imof: imof,
-        imped: imped,
-        Implies: Implies,
-        incare: incare,
-        infin: infin,
-        infintie: infintie,
-        inodot: inodot,
-        intcal: intcal,
-        int: int,
-        Int: Int,
-        integers: integers,
-        Integral: Integral,
-        intercal: intercal,
-        Intersection: Intersection,
-        intlarhk: intlarhk,
-        intprod: intprod,
-        InvisibleComma: InvisibleComma,
-        InvisibleTimes: InvisibleTimes,
-        IOcy: IOcy,
-        iocy: iocy,
-        Iogon: Iogon,
-        iogon: iogon,
-        Iopf: Iopf,
-        iopf: iopf,
-        Iota: Iota,
-        iota: iota,
-        iprod: iprod,
-        iquest: iquest,
-        iscr: iscr,
-        Iscr: Iscr,
-        isin: isin,
-        isindot: isindot,
-        isinE: isinE,
-        isins: isins,
-        isinsv: isinsv,
-        isinv: isinv,
-        it: it,
-        Itilde: Itilde,
-        itilde: itilde,
-        Iukcy: Iukcy,
-        iukcy: iukcy,
-        Iuml: Iuml,
-        iuml: iuml,
-        Jcirc: Jcirc,
-        jcirc: jcirc,
-        Jcy: Jcy,
-        jcy: jcy,
-        Jfr: Jfr,
-        jfr: jfr,
-        jmath: jmath,
-        Jopf: Jopf,
-        jopf: jopf,
-        Jscr: Jscr,
-        jscr: jscr,
-        Jsercy: Jsercy,
-        jsercy: jsercy,
-        Jukcy: Jukcy,
-        jukcy: jukcy,
-        Kappa: Kappa,
-        kappa: kappa,
-        kappav: kappav,
-        Kcedil: Kcedil,
-        kcedil: kcedil,
-        Kcy: Kcy,
-        kcy: kcy,
-        Kfr: Kfr,
-        kfr: kfr,
-        kgreen: kgreen,
-        KHcy: KHcy,
-        khcy: khcy,
-        KJcy: KJcy,
-        kjcy: kjcy,
-        Kopf: Kopf,
-        kopf: kopf,
-        Kscr: Kscr,
-        kscr: kscr,
-        lAarr: lAarr,
-        Lacute: Lacute,
-        lacute: lacute,
-        laemptyv: laemptyv,
-        lagran: lagran,
-        Lambda: Lambda,
-        lambda: lambda,
-        lang: lang,
-        Lang: Lang,
-        langd: langd,
-        langle: langle,
-        lap: lap,
-        Laplacetrf: Laplacetrf,
-        laquo: laquo,
-        larrb: larrb,
-        larrbfs: larrbfs,
-        larr: larr,
-        Larr: Larr,
-        lArr: lArr,
-        larrfs: larrfs,
-        larrhk: larrhk,
-        larrlp: larrlp,
-        larrpl: larrpl,
-        larrsim: larrsim,
-        larrtl: larrtl,
-        latail: latail,
-        lAtail: lAtail,
-        lat: lat,
-        late: late,
-        lates: lates,
-        lbarr: lbarr,
-        lBarr: lBarr,
-        lbbrk: lbbrk,
-        lbrace: lbrace,
-        lbrack: lbrack,
-        lbrke: lbrke,
-        lbrksld: lbrksld,
-        lbrkslu: lbrkslu,
-        Lcaron: Lcaron,
-        lcaron: lcaron,
-        Lcedil: Lcedil,
-        lcedil: lcedil,
-        lceil: lceil,
-        lcub: lcub,
-        Lcy: Lcy,
-        lcy: lcy,
-        ldca: ldca,
-        ldquo: ldquo,
-        ldquor: ldquor,
-        ldrdhar: ldrdhar,
-        ldrushar: ldrushar,
-        ldsh: ldsh,
-        le: le,
-        lE: lE,
-        LeftAngleBracket: LeftAngleBracket,
-        LeftArrowBar: LeftArrowBar,
-        leftarrow: leftarrow,
-        LeftArrow: LeftArrow,
-        Leftarrow: Leftarrow,
-        LeftArrowRightArrow: LeftArrowRightArrow,
-        leftarrowtail: leftarrowtail,
-        LeftCeiling: LeftCeiling,
-        LeftDoubleBracket: LeftDoubleBracket,
-        LeftDownTeeVector: LeftDownTeeVector,
-        LeftDownVectorBar: LeftDownVectorBar,
-        LeftDownVector: LeftDownVector,
-        LeftFloor: LeftFloor,
-        leftharpoondown: leftharpoondown,
-        leftharpoonup: leftharpoonup,
-        leftleftarrows: leftleftarrows,
-        leftrightarrow: leftrightarrow,
-        LeftRightArrow: LeftRightArrow,
-        Leftrightarrow: Leftrightarrow,
-        leftrightarrows: leftrightarrows,
-        leftrightharpoons: leftrightharpoons,
-        leftrightsquigarrow: leftrightsquigarrow,
-        LeftRightVector: LeftRightVector,
-        LeftTeeArrow: LeftTeeArrow,
-        LeftTee: LeftTee,
-        LeftTeeVector: LeftTeeVector,
-        leftthreetimes: leftthreetimes,
-        LeftTriangleBar: LeftTriangleBar,
-        LeftTriangle: LeftTriangle,
-        LeftTriangleEqual: LeftTriangleEqual,
-        LeftUpDownVector: LeftUpDownVector,
-        LeftUpTeeVector: LeftUpTeeVector,
-        LeftUpVectorBar: LeftUpVectorBar,
-        LeftUpVector: LeftUpVector,
-        LeftVectorBar: LeftVectorBar,
-        LeftVector: LeftVector,
-        lEg: lEg,
-        leg: leg,
-        leq: leq,
-        leqq: leqq,
-        leqslant: leqslant,
-        lescc: lescc,
-        les: les,
-        lesdot: lesdot,
-        lesdoto: lesdoto,
-        lesdotor: lesdotor,
-        lesg: lesg,
-        lesges: lesges,
-        lessapprox: lessapprox,
-        lessdot: lessdot,
-        lesseqgtr: lesseqgtr,
-        lesseqqgtr: lesseqqgtr,
-        LessEqualGreater: LessEqualGreater,
-        LessFullEqual: LessFullEqual,
-        LessGreater: LessGreater,
-        lessgtr: lessgtr,
-        LessLess: LessLess,
-        lesssim: lesssim,
-        LessSlantEqual: LessSlantEqual,
-        LessTilde: LessTilde,
-        lfisht: lfisht,
-        lfloor: lfloor,
-        Lfr: Lfr,
-        lfr: lfr,
-        lg: lg,
-        lgE: lgE,
-        lHar: lHar,
-        lhard: lhard,
-        lharu: lharu,
-        lharul: lharul,
-        lhblk: lhblk,
-        LJcy: LJcy,
-        ljcy: ljcy,
-        llarr: llarr,
-        ll: ll,
-        Ll: Ll,
-        llcorner: llcorner,
-        Lleftarrow: Lleftarrow,
-        llhard: llhard,
-        lltri: lltri,
-        Lmidot: Lmidot,
-        lmidot: lmidot,
-        lmoustache: lmoustache,
-        lmoust: lmoust,
-        lnap: lnap,
-        lnapprox: lnapprox,
-        lne: lne,
-        lnE: lnE,
-        lneq: lneq,
-        lneqq: lneqq,
-        lnsim: lnsim,
-        loang: loang,
-        loarr: loarr,
-        lobrk: lobrk,
-        longleftarrow: longleftarrow,
-        LongLeftArrow: LongLeftArrow,
-        Longleftarrow: Longleftarrow,
-        longleftrightarrow: longleftrightarrow,
-        LongLeftRightArrow: LongLeftRightArrow,
-        Longleftrightarrow: Longleftrightarrow,
-        longmapsto: longmapsto,
-        longrightarrow: longrightarrow,
-        LongRightArrow: LongRightArrow,
-        Longrightarrow: Longrightarrow,
-        looparrowleft: looparrowleft,
-        looparrowright: looparrowright,
-        lopar: lopar,
-        Lopf: Lopf,
-        lopf: lopf,
-        loplus: loplus,
-        lotimes: lotimes,
-        lowast: lowast,
-        lowbar: lowbar,
-        LowerLeftArrow: LowerLeftArrow,
-        LowerRightArrow: LowerRightArrow,
-        loz: loz,
-        lozenge: lozenge,
-        lozf: lozf,
-        lpar: lpar,
-        lparlt: lparlt,
-        lrarr: lrarr,
-        lrcorner: lrcorner,
-        lrhar: lrhar,
-        lrhard: lrhard,
-        lrm: lrm,
-        lrtri: lrtri,
-        lsaquo: lsaquo,
-        lscr: lscr,
-        Lscr: Lscr,
-        lsh: lsh,
-        Lsh: Lsh,
-        lsim: lsim,
-        lsime: lsime,
-        lsimg: lsimg,
-        lsqb: lsqb,
-        lsquo: lsquo,
-        lsquor: lsquor,
-        Lstrok: Lstrok,
-        lstrok: lstrok,
-        ltcc: ltcc,
-        ltcir: ltcir,
-        lt: lt,
-        LT: LT,
-        Lt: Lt,
-        ltdot: ltdot,
-        lthree: lthree,
-        ltimes: ltimes,
-        ltlarr: ltlarr,
-        ltquest: ltquest,
-        ltri: ltri,
-        ltrie: ltrie,
-        ltrif: ltrif,
-        ltrPar: ltrPar,
-        lurdshar: lurdshar,
-        luruhar: luruhar,
-        lvertneqq: lvertneqq,
-        lvnE: lvnE,
-        macr: macr,
-        male: male,
-        malt: malt,
-        maltese: maltese,
-        map: map,
-        mapsto: mapsto,
-        mapstodown: mapstodown,
-        mapstoleft: mapstoleft,
-        mapstoup: mapstoup,
-        marker: marker,
-        mcomma: mcomma,
-        Mcy: Mcy,
-        mcy: mcy,
-        mdash: mdash,
-        mDDot: mDDot,
-        measuredangle: measuredangle,
-        MediumSpace: MediumSpace,
-        Mellintrf: Mellintrf,
-        Mfr: Mfr,
-        mfr: mfr,
-        mho: mho,
-        micro: micro,
-        midast: midast,
-        midcir: midcir,
-        mid: mid,
-        middot: middot,
-        minusb: minusb,
-        minus: minus,
-        minusd: minusd,
-        minusdu: minusdu,
-        MinusPlus: MinusPlus,
-        mlcp: mlcp,
-        mldr: mldr,
-        mnplus: mnplus,
-        models: models,
-        Mopf: Mopf,
-        mopf: mopf,
-        mp: mp,
-        mscr: mscr,
-        Mscr: Mscr,
-        mstpos: mstpos,
-        Mu: Mu,
-        mu: mu,
-        multimap: multimap,
-        mumap: mumap,
-        nabla: nabla,
-        Nacute: Nacute,
-        nacute: nacute,
-        nang: nang,
-        nap: nap,
-        napE: napE,
-        napid: napid,
-        napos: napos,
-        napprox: napprox,
-        natural: natural,
-        naturals: naturals,
-        natur: natur,
-        nbsp: nbsp,
-        nbump: nbump,
-        nbumpe: nbumpe,
-        ncap: ncap,
-        Ncaron: Ncaron,
-        ncaron: ncaron,
-        Ncedil: Ncedil,
-        ncedil: ncedil,
-        ncong: ncong,
-        ncongdot: ncongdot,
-        ncup: ncup,
-        Ncy: Ncy,
-        ncy: ncy,
-        ndash: ndash,
-        nearhk: nearhk,
-        nearr: nearr,
-        neArr: neArr,
-        nearrow: nearrow,
-        ne: ne,
-        nedot: nedot,
-        NegativeMediumSpace: NegativeMediumSpace,
-        NegativeThickSpace: NegativeThickSpace,
-        NegativeThinSpace: NegativeThinSpace,
-        NegativeVeryThinSpace: NegativeVeryThinSpace,
-        nequiv: nequiv,
-        nesear: nesear,
-        nesim: nesim,
-        NestedGreaterGreater: NestedGreaterGreater,
-        NestedLessLess: NestedLessLess,
-        NewLine: NewLine,
-        nexist: nexist,
-        nexists: nexists,
-        Nfr: Nfr,
-        nfr: nfr,
-        ngE: ngE,
-        nge: nge,
-        ngeq: ngeq,
-        ngeqq: ngeqq,
-        ngeqslant: ngeqslant,
-        nges: nges,
-        nGg: nGg,
-        ngsim: ngsim,
-        nGt: nGt,
-        ngt: ngt,
-        ngtr: ngtr,
-        nGtv: nGtv,
-        nharr: nharr,
-        nhArr: nhArr,
-        nhpar: nhpar,
-        ni: ni,
-        nis: nis,
-        nisd: nisd,
-        niv: niv,
-        NJcy: NJcy,
-        njcy: njcy,
-        nlarr: nlarr,
-        nlArr: nlArr,
-        nldr: nldr,
-        nlE: nlE,
-        nle: nle,
-        nleftarrow: nleftarrow,
-        nLeftarrow: nLeftarrow,
-        nleftrightarrow: nleftrightarrow,
-        nLeftrightarrow: nLeftrightarrow,
-        nleq: nleq,
-        nleqq: nleqq,
-        nleqslant: nleqslant,
-        nles: nles,
-        nless: nless,
-        nLl: nLl,
-        nlsim: nlsim,
-        nLt: nLt,
-        nlt: nlt,
-        nltri: nltri,
-        nltrie: nltrie,
-        nLtv: nLtv,
-        nmid: nmid,
-        NoBreak: NoBreak,
-        NonBreakingSpace: NonBreakingSpace,
-        nopf: nopf,
-        Nopf: Nopf,
-        Not: Not,
-        not: not,
-        NotCongruent: NotCongruent,
-        NotCupCap: NotCupCap,
-        NotDoubleVerticalBar: NotDoubleVerticalBar,
-        NotElement: NotElement,
-        NotEqual: NotEqual,
-        NotEqualTilde: NotEqualTilde,
-        NotExists: NotExists,
-        NotGreater: NotGreater,
-        NotGreaterEqual: NotGreaterEqual,
-        NotGreaterFullEqual: NotGreaterFullEqual,
-        NotGreaterGreater: NotGreaterGreater,
-        NotGreaterLess: NotGreaterLess,
-        NotGreaterSlantEqual: NotGreaterSlantEqual,
-        NotGreaterTilde: NotGreaterTilde,
-        NotHumpDownHump: NotHumpDownHump,
-        NotHumpEqual: NotHumpEqual,
-        notin: notin,
-        notindot: notindot,
-        notinE: notinE,
-        notinva: notinva,
-        notinvb: notinvb,
-        notinvc: notinvc,
-        NotLeftTriangleBar: NotLeftTriangleBar,
-        NotLeftTriangle: NotLeftTriangle,
-        NotLeftTriangleEqual: NotLeftTriangleEqual,
-        NotLess: NotLess,
-        NotLessEqual: NotLessEqual,
-        NotLessGreater: NotLessGreater,
-        NotLessLess: NotLessLess,
-        NotLessSlantEqual: NotLessSlantEqual,
-        NotLessTilde: NotLessTilde,
-        NotNestedGreaterGreater: NotNestedGreaterGreater,
-        NotNestedLessLess: NotNestedLessLess,
-        notni: notni,
-        notniva: notniva,
-        notnivb: notnivb,
-        notnivc: notnivc,
-        NotPrecedes: NotPrecedes,
-        NotPrecedesEqual: NotPrecedesEqual,
-        NotPrecedesSlantEqual: NotPrecedesSlantEqual,
-        NotReverseElement: NotReverseElement,
-        NotRightTriangleBar: NotRightTriangleBar,
-        NotRightTriangle: NotRightTriangle,
-        NotRightTriangleEqual: NotRightTriangleEqual,
-        NotSquareSubset: NotSquareSubset,
-        NotSquareSubsetEqual: NotSquareSubsetEqual,
-        NotSquareSuperset: NotSquareSuperset,
-        NotSquareSupersetEqual: NotSquareSupersetEqual,
-        NotSubset: NotSubset,
-        NotSubsetEqual: NotSubsetEqual,
-        NotSucceeds: NotSucceeds,
-        NotSucceedsEqual: NotSucceedsEqual,
-        NotSucceedsSlantEqual: NotSucceedsSlantEqual,
-        NotSucceedsTilde: NotSucceedsTilde,
-        NotSuperset: NotSuperset,
-        NotSupersetEqual: NotSupersetEqual,
-        NotTilde: NotTilde,
-        NotTildeEqual: NotTildeEqual,
-        NotTildeFullEqual: NotTildeFullEqual,
-        NotTildeTilde: NotTildeTilde,
-        NotVerticalBar: NotVerticalBar,
-        nparallel: nparallel,
-        npar: npar,
-        nparsl: nparsl,
-        npart: npart,
-        npolint: npolint,
-        npr: npr,
-        nprcue: nprcue,
-        nprec: nprec,
-        npreceq: npreceq,
-        npre: npre,
-        nrarrc: nrarrc,
-        nrarr: nrarr,
-        nrArr: nrArr,
-        nrarrw: nrarrw,
-        nrightarrow: nrightarrow,
-        nRightarrow: nRightarrow,
-        nrtri: nrtri,
-        nrtrie: nrtrie,
-        nsc: nsc,
-        nsccue: nsccue,
-        nsce: nsce,
-        Nscr: Nscr,
-        nscr: nscr,
-        nshortmid: nshortmid,
-        nshortparallel: nshortparallel,
-        nsim: nsim,
-        nsime: nsime,
-        nsimeq: nsimeq,
-        nsmid: nsmid,
-        nspar: nspar,
-        nsqsube: nsqsube,
-        nsqsupe: nsqsupe,
-        nsub: nsub,
-        nsubE: nsubE,
-        nsube: nsube,
-        nsubset: nsubset,
-        nsubseteq: nsubseteq,
-        nsubseteqq: nsubseteqq,
-        nsucc: nsucc,
-        nsucceq: nsucceq,
-        nsup: nsup,
-        nsupE: nsupE,
-        nsupe: nsupe,
-        nsupset: nsupset,
-        nsupseteq: nsupseteq,
-        nsupseteqq: nsupseteqq,
-        ntgl: ntgl,
-        Ntilde: Ntilde,
-        ntilde: ntilde,
-        ntlg: ntlg,
-        ntriangleleft: ntriangleleft,
-        ntrianglelefteq: ntrianglelefteq,
-        ntriangleright: ntriangleright,
-        ntrianglerighteq: ntrianglerighteq,
-        Nu: Nu,
-        nu: nu,
-        num: num,
-        numero: numero,
-        numsp: numsp,
-        nvap: nvap,
-        nvdash: nvdash,
-        nvDash: nvDash,
-        nVdash: nVdash,
-        nVDash: nVDash,
-        nvge: nvge,
-        nvgt: nvgt,
-        nvHarr: nvHarr,
-        nvinfin: nvinfin,
-        nvlArr: nvlArr,
-        nvle: nvle,
-        nvlt: nvlt,
-        nvltrie: nvltrie,
-        nvrArr: nvrArr,
-        nvrtrie: nvrtrie,
-        nvsim: nvsim,
-        nwarhk: nwarhk,
-        nwarr: nwarr,
-        nwArr: nwArr,
-        nwarrow: nwarrow,
-        nwnear: nwnear,
-        Oacute: Oacute,
-        oacute: oacute,
-        oast: oast,
-        Ocirc: Ocirc,
-        ocirc: ocirc,
-        ocir: ocir,
-        Ocy: Ocy,
-        ocy: ocy,
-        odash: odash,
-        Odblac: Odblac,
-        odblac: odblac,
-        odiv: odiv,
-        odot: odot,
-        odsold: odsold,
-        OElig: OElig,
-        oelig: oelig,
-        ofcir: ofcir,
-        Ofr: Ofr,
-        ofr: ofr,
-        ogon: ogon,
-        Ograve: Ograve,
-        ograve: ograve,
-        ogt: ogt,
-        ohbar: ohbar,
-        ohm: ohm,
-        oint: oint,
-        olarr: olarr,
-        olcir: olcir,
-        olcross: olcross,
-        oline: oline,
-        olt: olt,
-        Omacr: Omacr,
-        omacr: omacr,
-        Omega: Omega,
-        omega: omega,
-        Omicron: Omicron,
-        omicron: omicron,
-        omid: omid,
-        ominus: ominus,
-        Oopf: Oopf,
-        oopf: oopf,
-        opar: opar,
-        OpenCurlyDoubleQuote: OpenCurlyDoubleQuote,
-        OpenCurlyQuote: OpenCurlyQuote,
-        operp: operp,
-        oplus: oplus,
-        orarr: orarr,
-        Or: Or,
-        or: or,
-        ord: ord,
-        order: order,
-        orderof: orderof,
-        ordf: ordf,
-        ordm: ordm,
-        origof: origof,
-        oror: oror,
-        orslope: orslope,
-        orv: orv,
-        oS: oS,
-        Oscr: Oscr,
-        oscr: oscr,
-        Oslash: Oslash,
-        oslash: oslash,
-        osol: osol,
-        Otilde: Otilde,
-        otilde: otilde,
-        otimesas: otimesas,
-        Otimes: Otimes,
-        otimes: otimes,
-        Ouml: Ouml,
-        ouml: ouml,
-        ovbar: ovbar,
-        OverBar: OverBar,
-        OverBrace: OverBrace,
-        OverBracket: OverBracket,
-        OverParenthesis: OverParenthesis,
-        para: para,
-        parallel: parallel,
-        par: par,
-        parsim: parsim,
-        parsl: parsl,
-        part: part,
-        PartialD: PartialD,
-        Pcy: Pcy,
-        pcy: pcy,
-        percnt: percnt,
-        period: period,
-        permil: permil,
-        perp: perp,
-        pertenk: pertenk,
-        Pfr: Pfr,
-        pfr: pfr,
-        Phi: Phi,
-        phi: phi,
-        phiv: phiv,
-        phmmat: phmmat,
-        phone: phone,
-        Pi: Pi,
-        pi: pi,
-        pitchfork: pitchfork,
-        piv: piv,
-        planck: planck,
-        planckh: planckh,
-        plankv: plankv,
-        plusacir: plusacir,
-        plusb: plusb,
-        pluscir: pluscir,
-        plus: plus,
-        plusdo: plusdo,
-        plusdu: plusdu,
-        pluse: pluse,
-        PlusMinus: PlusMinus,
-        plusmn: plusmn,
-        plussim: plussim,
-        plustwo: plustwo,
-        pm: pm,
-        Poincareplane: Poincareplane,
-        pointint: pointint,
-        popf: popf,
-        Popf: Popf,
-        pound: pound,
-        prap: prap,
-        Pr: Pr,
-        pr: pr,
-        prcue: prcue,
-        precapprox: precapprox,
-        prec: prec,
-        preccurlyeq: preccurlyeq,
-        Precedes: Precedes,
-        PrecedesEqual: PrecedesEqual,
-        PrecedesSlantEqual: PrecedesSlantEqual,
-        PrecedesTilde: PrecedesTilde,
-        preceq: preceq,
-        precnapprox: precnapprox,
-        precneqq: precneqq,
-        precnsim: precnsim,
-        pre: pre,
-        prE: prE,
-        precsim: precsim,
-        prime: prime,
-        Prime: Prime,
-        primes: primes,
-        prnap: prnap,
-        prnE: prnE,
-        prnsim: prnsim,
-        prod: prod,
-        Product: Product,
-        profalar: profalar,
-        profline: profline,
-        profsurf: profsurf,
-        prop: prop,
-        Proportional: Proportional,
-        Proportion: Proportion,
-        propto: propto,
-        prsim: prsim,
-        prurel: prurel,
-        Pscr: Pscr,
-        pscr: pscr,
-        Psi: Psi,
-        psi: psi,
-        puncsp: puncsp,
-        Qfr: Qfr,
-        qfr: qfr,
-        qint: qint,
-        qopf: qopf,
-        Qopf: Qopf,
-        qprime: qprime,
-        Qscr: Qscr,
-        qscr: qscr,
-        quaternions: quaternions,
-        quatint: quatint,
-        quest: quest,
-        questeq: questeq,
-        quot: quot,
-        QUOT: QUOT,
-        rAarr: rAarr,
-        race: race,
-        Racute: Racute,
-        racute: racute,
-        radic: radic,
-        raemptyv: raemptyv,
-        rang: rang,
-        Rang: Rang,
-        rangd: rangd,
-        range: range,
-        rangle: rangle,
-        raquo: raquo,
-        rarrap: rarrap,
-        rarrb: rarrb,
-        rarrbfs: rarrbfs,
-        rarrc: rarrc,
-        rarr: rarr,
-        Rarr: Rarr,
-        rArr: rArr,
-        rarrfs: rarrfs,
-        rarrhk: rarrhk,
-        rarrlp: rarrlp,
-        rarrpl: rarrpl,
-        rarrsim: rarrsim,
-        Rarrtl: Rarrtl,
-        rarrtl: rarrtl,
-        rarrw: rarrw,
-        ratail: ratail,
-        rAtail: rAtail,
-        ratio: ratio,
-        rationals: rationals,
-        rbarr: rbarr,
-        rBarr: rBarr,
-        RBarr: RBarr,
-        rbbrk: rbbrk,
-        rbrace: rbrace,
-        rbrack: rbrack,
-        rbrke: rbrke,
-        rbrksld: rbrksld,
-        rbrkslu: rbrkslu,
-        Rcaron: Rcaron,
-        rcaron: rcaron,
-        Rcedil: Rcedil,
-        rcedil: rcedil,
-        rceil: rceil,
-        rcub: rcub,
-        Rcy: Rcy,
-        rcy: rcy,
-        rdca: rdca,
-        rdldhar: rdldhar,
-        rdquo: rdquo,
-        rdquor: rdquor,
-        rdsh: rdsh,
-        real: real,
-        realine: realine,
-        realpart: realpart,
-        reals: reals,
-        Re: Re,
-        rect: rect,
-        reg: reg,
-        REG: REG,
-        ReverseElement: ReverseElement,
-        ReverseEquilibrium: ReverseEquilibrium,
-        ReverseUpEquilibrium: ReverseUpEquilibrium,
-        rfisht: rfisht,
-        rfloor: rfloor,
-        rfr: rfr,
-        Rfr: Rfr,
-        rHar: rHar,
-        rhard: rhard,
-        rharu: rharu,
-        rharul: rharul,
-        Rho: Rho,
-        rho: rho,
-        rhov: rhov,
-        RightAngleBracket: RightAngleBracket,
-        RightArrowBar: RightArrowBar,
-        rightarrow: rightarrow,
-        RightArrow: RightArrow,
-        Rightarrow: Rightarrow,
-        RightArrowLeftArrow: RightArrowLeftArrow,
-        rightarrowtail: rightarrowtail,
-        RightCeiling: RightCeiling,
-        RightDoubleBracket: RightDoubleBracket,
-        RightDownTeeVector: RightDownTeeVector,
-        RightDownVectorBar: RightDownVectorBar,
-        RightDownVector: RightDownVector,
-        RightFloor: RightFloor,
-        rightharpoondown: rightharpoondown,
-        rightharpoonup: rightharpoonup,
-        rightleftarrows: rightleftarrows,
-        rightleftharpoons: rightleftharpoons,
-        rightrightarrows: rightrightarrows,
-        rightsquigarrow: rightsquigarrow,
-        RightTeeArrow: RightTeeArrow,
-        RightTee: RightTee,
-        RightTeeVector: RightTeeVector,
-        rightthreetimes: rightthreetimes,
-        RightTriangleBar: RightTriangleBar,
-        RightTriangle: RightTriangle,
-        RightTriangleEqual: RightTriangleEqual,
-        RightUpDownVector: RightUpDownVector,
-        RightUpTeeVector: RightUpTeeVector,
-        RightUpVectorBar: RightUpVectorBar,
-        RightUpVector: RightUpVector,
-        RightVectorBar: RightVectorBar,
-        RightVector: RightVector,
-        ring: ring,
-        risingdotseq: risingdotseq,
-        rlarr: rlarr,
-        rlhar: rlhar,
-        rlm: rlm,
-        rmoustache: rmoustache,
-        rmoust: rmoust,
-        rnmid: rnmid,
-        roang: roang,
-        roarr: roarr,
-        robrk: robrk,
-        ropar: ropar,
-        ropf: ropf,
-        Ropf: Ropf,
-        roplus: roplus,
-        rotimes: rotimes,
-        RoundImplies: RoundImplies,
-        rpar: rpar,
-        rpargt: rpargt,
-        rppolint: rppolint,
-        rrarr: rrarr,
-        Rrightarrow: Rrightarrow,
-        rsaquo: rsaquo,
-        rscr: rscr,
-        Rscr: Rscr,
-        rsh: rsh,
-        Rsh: Rsh,
-        rsqb: rsqb,
-        rsquo: rsquo,
-        rsquor: rsquor,
-        rthree: rthree,
-        rtimes: rtimes,
-        rtri: rtri,
-        rtrie: rtrie,
-        rtrif: rtrif,
-        rtriltri: rtriltri,
-        RuleDelayed: RuleDelayed,
-        ruluhar: ruluhar,
-        rx: rx,
-        Sacute: Sacute,
-        sacute: sacute,
-        sbquo: sbquo,
-        scap: scap,
-        Scaron: Scaron,
-        scaron: scaron,
-        Sc: Sc,
-        sc: sc,
-        sccue: sccue,
-        sce: sce,
-        scE: scE,
-        Scedil: Scedil,
-        scedil: scedil,
-        Scirc: Scirc,
-        scirc: scirc,
-        scnap: scnap,
-        scnE: scnE,
-        scnsim: scnsim,
-        scpolint: scpolint,
-        scsim: scsim,
-        Scy: Scy,
-        scy: scy,
-        sdotb: sdotb,
-        sdot: sdot,
-        sdote: sdote,
-        searhk: searhk,
-        searr: searr,
-        seArr: seArr,
-        searrow: searrow,
-        sect: sect,
-        semi: semi,
-        seswar: seswar,
-        setminus: setminus,
-        setmn: setmn,
-        sext: sext,
-        Sfr: Sfr,
-        sfr: sfr,
-        sfrown: sfrown,
-        sharp: sharp,
-        SHCHcy: SHCHcy,
-        shchcy: shchcy,
-        SHcy: SHcy,
-        shcy: shcy,
-        ShortDownArrow: ShortDownArrow,
-        ShortLeftArrow: ShortLeftArrow,
-        shortmid: shortmid,
-        shortparallel: shortparallel,
-        ShortRightArrow: ShortRightArrow,
-        ShortUpArrow: ShortUpArrow,
-        shy: shy,
-        Sigma: Sigma,
-        sigma: sigma,
-        sigmaf: sigmaf,
-        sigmav: sigmav,
-        sim: sim,
-        simdot: simdot,
-        sime: sime,
-        simeq: simeq,
-        simg: simg,
-        simgE: simgE,
-        siml: siml,
-        simlE: simlE,
-        simne: simne,
-        simplus: simplus,
-        simrarr: simrarr,
-        slarr: slarr,
-        SmallCircle: SmallCircle,
-        smallsetminus: smallsetminus,
-        smashp: smashp,
-        smeparsl: smeparsl,
-        smid: smid,
-        smile: smile,
-        smt: smt,
-        smte: smte,
-        smtes: smtes,
-        SOFTcy: SOFTcy,
-        softcy: softcy,
-        solbar: solbar,
-        solb: solb,
-        sol: sol,
-        Sopf: Sopf,
-        sopf: sopf,
-        spades: spades,
-        spadesuit: spadesuit,
-        spar: spar,
-        sqcap: sqcap,
-        sqcaps: sqcaps,
-        sqcup: sqcup,
-        sqcups: sqcups,
-        Sqrt: Sqrt,
-        sqsub: sqsub,
-        sqsube: sqsube,
-        sqsubset: sqsubset,
-        sqsubseteq: sqsubseteq,
-        sqsup: sqsup,
-        sqsupe: sqsupe,
-        sqsupset: sqsupset,
-        sqsupseteq: sqsupseteq,
-        square: square,
-        Square: Square,
-        SquareIntersection: SquareIntersection,
-        SquareSubset: SquareSubset,
-        SquareSubsetEqual: SquareSubsetEqual,
-        SquareSuperset: SquareSuperset,
-        SquareSupersetEqual: SquareSupersetEqual,
-        SquareUnion: SquareUnion,
-        squarf: squarf,
-        squ: squ,
-        squf: squf,
-        srarr: srarr,
-        Sscr: Sscr,
-        sscr: sscr,
-        ssetmn: ssetmn,
-        ssmile: ssmile,
-        sstarf: sstarf,
-        Star: Star,
-        star: star,
-        starf: starf,
-        straightepsilon: straightepsilon,
-        straightphi: straightphi,
-        strns: strns,
-        sub: sub,
-        Sub: Sub,
-        subdot: subdot,
-        subE: subE,
-        sube: sube,
-        subedot: subedot,
-        submult: submult,
-        subnE: subnE,
-        subne: subne,
-        subplus: subplus,
-        subrarr: subrarr,
-        subset: subset,
-        Subset: Subset,
-        subseteq: subseteq,
-        subseteqq: subseteqq,
-        SubsetEqual: SubsetEqual,
-        subsetneq: subsetneq,
-        subsetneqq: subsetneqq,
-        subsim: subsim,
-        subsub: subsub,
-        subsup: subsup,
-        succapprox: succapprox,
-        succ: succ,
-        succcurlyeq: succcurlyeq,
-        Succeeds: Succeeds,
-        SucceedsEqual: SucceedsEqual,
-        SucceedsSlantEqual: SucceedsSlantEqual,
-        SucceedsTilde: SucceedsTilde,
-        succeq: succeq,
-        succnapprox: succnapprox,
-        succneqq: succneqq,
-        succnsim: succnsim,
-        succsim: succsim,
-        SuchThat: SuchThat,
-        sum: sum,
-        Sum: Sum,
-        sung: sung,
-        sup1: sup1,
-        sup2: sup2,
-        sup3: sup3,
-        sup: sup,
-        Sup: Sup,
-        supdot: supdot,
-        supdsub: supdsub,
-        supE: supE,
-        supe: supe,
-        supedot: supedot,
-        Superset: Superset,
-        SupersetEqual: SupersetEqual,
-        suphsol: suphsol,
-        suphsub: suphsub,
-        suplarr: suplarr,
-        supmult: supmult,
-        supnE: supnE,
-        supne: supne,
-        supplus: supplus,
-        supset: supset,
-        Supset: Supset,
-        supseteq: supseteq,
-        supseteqq: supseteqq,
-        supsetneq: supsetneq,
-        supsetneqq: supsetneqq,
-        supsim: supsim,
-        supsub: supsub,
-        supsup: supsup,
-        swarhk: swarhk,
-        swarr: swarr,
-        swArr: swArr,
-        swarrow: swarrow,
-        swnwar: swnwar,
-        szlig: szlig,
-        Tab: Tab,
-        target: target,
-        Tau: Tau,
-        tau: tau,
-        tbrk: tbrk,
-        Tcaron: Tcaron,
-        tcaron: tcaron,
-        Tcedil: Tcedil,
-        tcedil: tcedil,
-        Tcy: Tcy,
-        tcy: tcy,
-        tdot: tdot,
-        telrec: telrec,
-        Tfr: Tfr,
-        tfr: tfr,
-        there4: there4,
-        therefore: therefore,
-        Therefore: Therefore,
-        Theta: Theta,
-        theta: theta,
-        thetasym: thetasym,
-        thetav: thetav,
-        thickapprox: thickapprox,
-        thicksim: thicksim,
-        ThickSpace: ThickSpace,
-        ThinSpace: ThinSpace,
-        thinsp: thinsp,
-        thkap: thkap,
-        thksim: thksim,
-        THORN: THORN,
-        thorn: thorn,
-        tilde: tilde,
-        Tilde: Tilde,
-        TildeEqual: TildeEqual,
-        TildeFullEqual: TildeFullEqual,
-        TildeTilde: TildeTilde,
-        timesbar: timesbar,
-        timesb: timesb,
-        times: times,
-        timesd: timesd,
-        tint: tint,
-        toea: toea,
-        topbot: topbot,
-        topcir: topcir,
-        top: top,
-        Topf: Topf,
-        topf: topf,
-        topfork: topfork,
-        tosa: tosa,
-        tprime: tprime,
-        trade: trade,
-        TRADE: TRADE,
-        triangle: triangle,
-        triangledown: triangledown,
-        triangleleft: triangleleft,
-        trianglelefteq: trianglelefteq,
-        triangleq: triangleq,
-        triangleright: triangleright,
-        trianglerighteq: trianglerighteq,
-        tridot: tridot,
-        trie: trie,
-        triminus: triminus,
-        TripleDot: TripleDot,
-        triplus: triplus,
-        trisb: trisb,
-        tritime: tritime,
-        trpezium: trpezium,
-        Tscr: Tscr,
-        tscr: tscr,
-        TScy: TScy,
-        tscy: tscy,
-        TSHcy: TSHcy,
-        tshcy: tshcy,
-        Tstrok: Tstrok,
-        tstrok: tstrok,
-        twixt: twixt,
-        twoheadleftarrow: twoheadleftarrow,
-        twoheadrightarrow: twoheadrightarrow,
-        Uacute: Uacute,
-        uacute: uacute,
-        uarr: uarr,
-        Uarr: Uarr,
-        uArr: uArr,
-        Uarrocir: Uarrocir,
-        Ubrcy: Ubrcy,
-        ubrcy: ubrcy,
-        Ubreve: Ubreve,
-        ubreve: ubreve,
-        Ucirc: Ucirc,
-        ucirc: ucirc,
-        Ucy: Ucy,
-        ucy: ucy,
-        udarr: udarr,
-        Udblac: Udblac,
-        udblac: udblac,
-        udhar: udhar,
-        ufisht: ufisht,
-        Ufr: Ufr,
-        ufr: ufr,
-        Ugrave: Ugrave,
-        ugrave: ugrave,
-        uHar: uHar,
-        uharl: uharl,
-        uharr: uharr,
-        uhblk: uhblk,
-        ulcorn: ulcorn,
-        ulcorner: ulcorner,
-        ulcrop: ulcrop,
-        ultri: ultri,
-        Umacr: Umacr,
-        umacr: umacr,
-        uml: uml,
-        UnderBar: UnderBar,
-        UnderBrace: UnderBrace,
-        UnderBracket: UnderBracket,
-        UnderParenthesis: UnderParenthesis,
-        Union: Union,
-        UnionPlus: UnionPlus,
-        Uogon: Uogon,
-        uogon: uogon,
-        Uopf: Uopf,
-        uopf: uopf,
-        UpArrowBar: UpArrowBar,
-        uparrow: uparrow,
-        UpArrow: UpArrow,
-        Uparrow: Uparrow,
-        UpArrowDownArrow: UpArrowDownArrow,
-        updownarrow: updownarrow,
-        UpDownArrow: UpDownArrow,
-        Updownarrow: Updownarrow,
-        UpEquilibrium: UpEquilibrium,
-        upharpoonleft: upharpoonleft,
-        upharpoonright: upharpoonright,
-        uplus: uplus,
-        UpperLeftArrow: UpperLeftArrow,
-        UpperRightArrow: UpperRightArrow,
-        upsi: upsi,
-        Upsi: Upsi,
-        upsih: upsih,
-        Upsilon: Upsilon,
-        upsilon: upsilon,
-        UpTeeArrow: UpTeeArrow,
-        UpTee: UpTee,
-        upuparrows: upuparrows,
-        urcorn: urcorn,
-        urcorner: urcorner,
-        urcrop: urcrop,
-        Uring: Uring,
-        uring: uring,
-        urtri: urtri,
-        Uscr: Uscr,
-        uscr: uscr,
-        utdot: utdot,
-        Utilde: Utilde,
-        utilde: utilde,
-        utri: utri,
-        utrif: utrif,
-        uuarr: uuarr,
-        Uuml: Uuml,
-        uuml: uuml,
-        uwangle: uwangle,
-        vangrt: vangrt,
-        varepsilon: varepsilon,
-        varkappa: varkappa,
-        varnothing: varnothing,
-        varphi: varphi,
-        varpi: varpi,
-        varpropto: varpropto,
-        varr: varr,
-        vArr: vArr,
-        varrho: varrho,
-        varsigma: varsigma,
-        varsubsetneq: varsubsetneq,
-        varsubsetneqq: varsubsetneqq,
-        varsupsetneq: varsupsetneq,
-        varsupsetneqq: varsupsetneqq,
-        vartheta: vartheta,
-        vartriangleleft: vartriangleleft,
-        vartriangleright: vartriangleright,
-        vBar: vBar,
-        Vbar: Vbar,
-        vBarv: vBarv,
-        Vcy: Vcy,
-        vcy: vcy,
-        vdash: vdash,
-        vDash: vDash,
-        Vdash: Vdash,
-        VDash: VDash,
-        Vdashl: Vdashl,
-        veebar: veebar,
-        vee: vee,
-        Vee: Vee,
-        veeeq: veeeq,
-        vellip: vellip,
-        verbar: verbar,
-        Verbar: Verbar,
-        vert: vert,
-        Vert: Vert,
-        VerticalBar: VerticalBar,
-        VerticalLine: VerticalLine,
-        VerticalSeparator: VerticalSeparator,
-        VerticalTilde: VerticalTilde,
-        VeryThinSpace: VeryThinSpace,
-        Vfr: Vfr,
-        vfr: vfr,
-        vltri: vltri,
-        vnsub: vnsub,
-        vnsup: vnsup,
-        Vopf: Vopf,
-        vopf: vopf,
-        vprop: vprop,
-        vrtri: vrtri,
-        Vscr: Vscr,
-        vscr: vscr,
-        vsubnE: vsubnE,
-        vsubne: vsubne,
-        vsupnE: vsupnE,
-        vsupne: vsupne,
-        Vvdash: Vvdash,
-        vzigzag: vzigzag,
-        Wcirc: Wcirc,
-        wcirc: wcirc,
-        wedbar: wedbar,
-        wedge: wedge,
-        Wedge: Wedge,
-        wedgeq: wedgeq,
-        weierp: weierp,
-        Wfr: Wfr,
-        wfr: wfr,
-        Wopf: Wopf,
-        wopf: wopf,
-        wp: wp,
-        wr: wr,
-        wreath: wreath,
-        Wscr: Wscr,
-        wscr: wscr,
-        xcap: xcap,
-        xcirc: xcirc,
-        xcup: xcup,
-        xdtri: xdtri,
-        Xfr: Xfr,
-        xfr: xfr,
-        xharr: xharr,
-        xhArr: xhArr,
-        Xi: Xi,
-        xi: xi,
-        xlarr: xlarr,
-        xlArr: xlArr,
-        xmap: xmap,
-        xnis: xnis,
-        xodot: xodot,
-        Xopf: Xopf,
-        xopf: xopf,
-        xoplus: xoplus,
-        xotime: xotime,
-        xrarr: xrarr,
-        xrArr: xrArr,
-        Xscr: Xscr,
-        xscr: xscr,
-        xsqcup: xsqcup,
-        xuplus: xuplus,
-        xutri: xutri,
-        xvee: xvee,
-        xwedge: xwedge,
-        Yacute: Yacute,
-        yacute: yacute,
-        YAcy: YAcy,
-        yacy: yacy,
-        Ycirc: Ycirc,
-        ycirc: ycirc,
-        Ycy: Ycy,
-        ycy: ycy,
-        yen: yen,
-        Yfr: Yfr,
-        yfr: yfr,
-        YIcy: YIcy,
-        yicy: yicy,
-        Yopf: Yopf,
-        yopf: yopf,
-        Yscr: Yscr,
-        yscr: yscr,
-        YUcy: YUcy,
-        yucy: yucy,
-        yuml: yuml,
-        Yuml: Yuml,
-        Zacute: Zacute,
-        zacute: zacute,
-        Zcaron: Zcaron,
-        zcaron: zcaron,
-        Zcy: Zcy,
-        zcy: zcy,
-        Zdot: Zdot,
-        zdot: zdot,
-        zeetrf: zeetrf,
-        ZeroWidthSpace: ZeroWidthSpace,
-        Zeta: Zeta,
-        zeta: zeta,
-        zfr: zfr,
-        Zfr: Zfr,
-        ZHcy: ZHcy,
-        zhcy: zhcy,
-        zigrarr: zigrarr,
-        zopf: zopf,
-        Zopf: Zopf,
-        Zscr: Zscr,
-        zscr: zscr,
-        zwj: zwj,
-        zwnj: zwnj,
-        'default': entities
-    });
-
-    var Aacute$1 = "ร";
-    var aacute$1 = "รก";
-    var Acirc$1 = "ร‚";
-    var acirc$1 = "รข";
-    var acute$1 = "ยด";
-    var AElig$1 = "ร†";
-    var aelig$1 = "รฆ";
-    var Agrave$1 = "ร€";
-    var agrave$1 = "ร ";
-    var amp$1 = "&";
-    var AMP$1 = "&";
-    var Aring$1 = "ร…";
-    var aring$1 = "รฅ";
-    var Atilde$1 = "รƒ";
-    var atilde$1 = "รฃ";
-    var Auml$1 = "ร„";
-    var auml$1 = "รค";
-    var brvbar$1 = "ยฆ";
-    var Ccedil$1 = "ร‡";
-    var ccedil$1 = "รง";
-    var cedil$1 = "ยธ";
-    var cent$1 = "ยข";
-    var copy$1 = "ยฉ";
-    var COPY$1 = "ยฉ";
-    var curren$1 = "ยค";
-    var deg$1 = "ยฐ";
-    var divide$1 = "รท";
-    var Eacute$1 = "ร‰";
-    var eacute$1 = "รฉ";
-    var Ecirc$1 = "รŠ";
-    var ecirc$1 = "รช";
-    var Egrave$1 = "รˆ";
-    var egrave$1 = "รจ";
-    var ETH$1 = "ร";
-    var eth$1 = "รฐ";
-    var Euml$1 = "ร‹";
-    var euml$1 = "รซ";
-    var frac12$1 = "ยฝ";
-    var frac14$1 = "ยผ";
-    var frac34$1 = "ยพ";
-    var gt$1 = ">";
-    var GT$1 = ">";
-    var Iacute$1 = "ร";
-    var iacute$1 = "รญ";
-    var Icirc$1 = "รŽ";
-    var icirc$1 = "รฎ";
-    var iexcl$1 = "ยก";
-    var Igrave$1 = "รŒ";
-    var igrave$1 = "รฌ";
-    var iquest$1 = "ยฟ";
-    var Iuml$1 = "ร";
-    var iuml$1 = "รฏ";
-    var laquo$1 = "ยซ";
-    var lt$1 = "<";
-    var LT$1 = "<";
-    var macr$1 = "ยฏ";
-    var micro$1 = "ยต";
-    var middot$1 = "ยท";
-    var nbsp$1 = "ย ";
-    var not$1 = "ยฌ";
-    var Ntilde$1 = "ร‘";
-    var ntilde$1 = "รฑ";
-    var Oacute$1 = "ร“";
-    var oacute$1 = "รณ";
-    var Ocirc$1 = "ร”";
-    var ocirc$1 = "รด";
-    var Ograve$1 = "ร’";
-    var ograve$1 = "รฒ";
-    var ordf$1 = "ยช";
-    var ordm$1 = "ยบ";
-    var Oslash$1 = "ร˜";
-    var oslash$1 = "รธ";
-    var Otilde$1 = "ร•";
-    var otilde$1 = "รต";
-    var Ouml$1 = "ร–";
-    var ouml$1 = "รถ";
-    var para$1 = "ยถ";
-    var plusmn$1 = "ยฑ";
-    var pound$1 = "ยฃ";
-    var quot$1 = "\"";
-    var QUOT$1 = "\"";
-    var raquo$1 = "ยป";
-    var reg$1 = "ยฎ";
-    var REG$1 = "ยฎ";
-    var sect$1 = "ยง";
-    var shy$1 = "ยญ";
-    var sup1$1 = "ยน";
-    var sup2$1 = "ยฒ";
-    var sup3$1 = "ยณ";
-    var szlig$1 = "รŸ";
-    var THORN$1 = "รž";
-    var thorn$1 = "รพ";
-    var times$1 = "ร—";
-    var Uacute$1 = "รš";
-    var uacute$1 = "รบ";
-    var Ucirc$1 = "ร›";
-    var ucirc$1 = "รป";
-    var Ugrave$1 = "ร™";
-    var ugrave$1 = "รน";
-    var uml$1 = "ยจ";
-    var Uuml$1 = "รœ";
-    var uuml$1 = "รผ";
-    var Yacute$1 = "ร";
-    var yacute$1 = "รฝ";
-    var yen$1 = "ยฅ";
-    var yuml$1 = "รฟ";
-    var legacy = {
-    	Aacute: Aacute$1,
-    	aacute: aacute$1,
-    	Acirc: Acirc$1,
-    	acirc: acirc$1,
-    	acute: acute$1,
-    	AElig: AElig$1,
-    	aelig: aelig$1,
-    	Agrave: Agrave$1,
-    	agrave: agrave$1,
-    	amp: amp$1,
-    	AMP: AMP$1,
-    	Aring: Aring$1,
-    	aring: aring$1,
-    	Atilde: Atilde$1,
-    	atilde: atilde$1,
-    	Auml: Auml$1,
-    	auml: auml$1,
-    	brvbar: brvbar$1,
-    	Ccedil: Ccedil$1,
-    	ccedil: ccedil$1,
-    	cedil: cedil$1,
-    	cent: cent$1,
-    	copy: copy$1,
-    	COPY: COPY$1,
-    	curren: curren$1,
-    	deg: deg$1,
-    	divide: divide$1,
-    	Eacute: Eacute$1,
-    	eacute: eacute$1,
-    	Ecirc: Ecirc$1,
-    	ecirc: ecirc$1,
-    	Egrave: Egrave$1,
-    	egrave: egrave$1,
-    	ETH: ETH$1,
-    	eth: eth$1,
-    	Euml: Euml$1,
-    	euml: euml$1,
-    	frac12: frac12$1,
-    	frac14: frac14$1,
-    	frac34: frac34$1,
-    	gt: gt$1,
-    	GT: GT$1,
-    	Iacute: Iacute$1,
-    	iacute: iacute$1,
-    	Icirc: Icirc$1,
-    	icirc: icirc$1,
-    	iexcl: iexcl$1,
-    	Igrave: Igrave$1,
-    	igrave: igrave$1,
-    	iquest: iquest$1,
-    	Iuml: Iuml$1,
-    	iuml: iuml$1,
-    	laquo: laquo$1,
-    	lt: lt$1,
-    	LT: LT$1,
-    	macr: macr$1,
-    	micro: micro$1,
-    	middot: middot$1,
-    	nbsp: nbsp$1,
-    	not: not$1,
-    	Ntilde: Ntilde$1,
-    	ntilde: ntilde$1,
-    	Oacute: Oacute$1,
-    	oacute: oacute$1,
-    	Ocirc: Ocirc$1,
-    	ocirc: ocirc$1,
-    	Ograve: Ograve$1,
-    	ograve: ograve$1,
-    	ordf: ordf$1,
-    	ordm: ordm$1,
-    	Oslash: Oslash$1,
-    	oslash: oslash$1,
-    	Otilde: Otilde$1,
-    	otilde: otilde$1,
-    	Ouml: Ouml$1,
-    	ouml: ouml$1,
-    	para: para$1,
-    	plusmn: plusmn$1,
-    	pound: pound$1,
-    	quot: quot$1,
-    	QUOT: QUOT$1,
-    	raquo: raquo$1,
-    	reg: reg$1,
-    	REG: REG$1,
-    	sect: sect$1,
-    	shy: shy$1,
-    	sup1: sup1$1,
-    	sup2: sup2$1,
-    	sup3: sup3$1,
-    	szlig: szlig$1,
-    	THORN: THORN$1,
-    	thorn: thorn$1,
-    	times: times$1,
-    	Uacute: Uacute$1,
-    	uacute: uacute$1,
-    	Ucirc: Ucirc$1,
-    	ucirc: ucirc$1,
-    	Ugrave: Ugrave$1,
-    	ugrave: ugrave$1,
-    	uml: uml$1,
-    	Uuml: Uuml$1,
-    	uuml: uuml$1,
-    	Yacute: Yacute$1,
-    	yacute: yacute$1,
-    	yen: yen$1,
-    	yuml: yuml$1
-    };
-
-    var legacy$1 = /*#__PURE__*/Object.freeze({
-        __proto__: null,
-        Aacute: Aacute$1,
-        aacute: aacute$1,
-        Acirc: Acirc$1,
-        acirc: acirc$1,
-        acute: acute$1,
-        AElig: AElig$1,
-        aelig: aelig$1,
-        Agrave: Agrave$1,
-        agrave: agrave$1,
-        amp: amp$1,
-        AMP: AMP$1,
-        Aring: Aring$1,
-        aring: aring$1,
-        Atilde: Atilde$1,
-        atilde: atilde$1,
-        Auml: Auml$1,
-        auml: auml$1,
-        brvbar: brvbar$1,
-        Ccedil: Ccedil$1,
-        ccedil: ccedil$1,
-        cedil: cedil$1,
-        cent: cent$1,
-        copy: copy$1,
-        COPY: COPY$1,
-        curren: curren$1,
-        deg: deg$1,
-        divide: divide$1,
-        Eacute: Eacute$1,
-        eacute: eacute$1,
-        Ecirc: Ecirc$1,
-        ecirc: ecirc$1,
-        Egrave: Egrave$1,
-        egrave: egrave$1,
-        ETH: ETH$1,
-        eth: eth$1,
-        Euml: Euml$1,
-        euml: euml$1,
-        frac12: frac12$1,
-        frac14: frac14$1,
-        frac34: frac34$1,
-        gt: gt$1,
-        GT: GT$1,
-        Iacute: Iacute$1,
-        iacute: iacute$1,
-        Icirc: Icirc$1,
-        icirc: icirc$1,
-        iexcl: iexcl$1,
-        Igrave: Igrave$1,
-        igrave: igrave$1,
-        iquest: iquest$1,
-        Iuml: Iuml$1,
-        iuml: iuml$1,
-        laquo: laquo$1,
-        lt: lt$1,
-        LT: LT$1,
-        macr: macr$1,
-        micro: micro$1,
-        middot: middot$1,
-        nbsp: nbsp$1,
-        not: not$1,
-        Ntilde: Ntilde$1,
-        ntilde: ntilde$1,
-        Oacute: Oacute$1,
-        oacute: oacute$1,
-        Ocirc: Ocirc$1,
-        ocirc: ocirc$1,
-        Ograve: Ograve$1,
-        ograve: ograve$1,
-        ordf: ordf$1,
-        ordm: ordm$1,
-        Oslash: Oslash$1,
-        oslash: oslash$1,
-        Otilde: Otilde$1,
-        otilde: otilde$1,
-        Ouml: Ouml$1,
-        ouml: ouml$1,
-        para: para$1,
-        plusmn: plusmn$1,
-        pound: pound$1,
-        quot: quot$1,
-        QUOT: QUOT$1,
-        raquo: raquo$1,
-        reg: reg$1,
-        REG: REG$1,
-        sect: sect$1,
-        shy: shy$1,
-        sup1: sup1$1,
-        sup2: sup2$1,
-        sup3: sup3$1,
-        szlig: szlig$1,
-        THORN: THORN$1,
-        thorn: thorn$1,
-        times: times$1,
-        Uacute: Uacute$1,
-        uacute: uacute$1,
-        Ucirc: Ucirc$1,
-        ucirc: ucirc$1,
-        Ugrave: Ugrave$1,
-        ugrave: ugrave$1,
-        uml: uml$1,
-        Uuml: Uuml$1,
-        uuml: uuml$1,
-        Yacute: Yacute$1,
-        yacute: yacute$1,
-        yen: yen$1,
-        yuml: yuml$1,
-        'default': legacy
-    });
-
-    var amp$2 = "&";
-    var apos$1 = "'";
-    var gt$2 = ">";
-    var lt$2 = "<";
-    var quot$2 = "\"";
-    var xml = {
-    	amp: amp$2,
-    	apos: apos$1,
-    	gt: gt$2,
-    	lt: lt$2,
-    	quot: quot$2
-    };
-
-    var xml$1 = /*#__PURE__*/Object.freeze({
-        __proto__: null,
-        amp: amp$2,
-        apos: apos$1,
-        gt: gt$2,
-        lt: lt$2,
-        quot: quot$2,
-        'default': xml
-    });
-
-    var decode = {
-    	"0": 65533,
-    	"128": 8364,
-    	"130": 8218,
-    	"131": 402,
-    	"132": 8222,
-    	"133": 8230,
-    	"134": 8224,
-    	"135": 8225,
-    	"136": 710,
-    	"137": 8240,
-    	"138": 352,
-    	"139": 8249,
-    	"140": 338,
-    	"142": 381,
-    	"145": 8216,
-    	"146": 8217,
-    	"147": 8220,
-    	"148": 8221,
-    	"149": 8226,
-    	"150": 8211,
-    	"151": 8212,
-    	"152": 732,
-    	"153": 8482,
-    	"154": 353,
-    	"155": 8250,
-    	"156": 339,
-    	"158": 382,
-    	"159": 376
-    };
-
-    var decode$1 = /*#__PURE__*/Object.freeze({
-        __proto__: null,
-        'default': decode
-    });
-
-    var require$$0 = getCjsExportFromNamespace(decode$1);
-
-    var decode_codepoint = createCommonjsModule(function (module, exports) {
-    var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
-        return (mod && mod.__esModule) ? mod : { "default": mod };
-    };
-    Object.defineProperty(exports, "__esModule", { value: true });
-    var decode_json_1 = __importDefault(require$$0);
-    // modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119
-    function decodeCodePoint(codePoint) {
-        if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
-            return "\uFFFD";
-        }
-        if (codePoint in decode_json_1.default) {
-            codePoint = decode_json_1.default[codePoint];
-        }
-        var output = "";
-        if (codePoint > 0xffff) {
-            codePoint -= 0x10000;
-            output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);
-            codePoint = 0xdc00 | (codePoint & 0x3ff);
-        }
-        output += String.fromCharCode(codePoint);
-        return output;
-    }
-    exports.default = decodeCodePoint;
-    });
-
-    unwrapExports(decode_codepoint);
-
-    var require$$1 = getCjsExportFromNamespace(entities$1);
-
-    var require$$1$1 = getCjsExportFromNamespace(legacy$1);
-
-    var require$$0$1 = getCjsExportFromNamespace(xml$1);
-
-    var decode$2 = createCommonjsModule(function (module, exports) {
-    var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
-        return (mod && mod.__esModule) ? mod : { "default": mod };
-    };
-    Object.defineProperty(exports, "__esModule", { value: true });
-    exports.decodeHTML = exports.decodeHTMLStrict = exports.decodeXML = void 0;
-    var entities_json_1 = __importDefault(require$$1);
-    var legacy_json_1 = __importDefault(require$$1$1);
-    var xml_json_1 = __importDefault(require$$0$1);
-    var decode_codepoint_1 = __importDefault(decode_codepoint);
-    exports.decodeXML = getStrictDecoder(xml_json_1.default);
-    exports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);
-    function getStrictDecoder(map) {
-        var keys = Object.keys(map).join("|");
-        var replace = getReplacer(map);
-        keys += "|#[xX][\\da-fA-F]+|#\\d+";
-        var re = new RegExp("&(?:" + keys + ");", "g");
-        return function (str) { return String(str).replace(re, replace); };
-    }
-    var sorter = function (a, b) { return (a < b ? 1 : -1); };
-    exports.decodeHTML = (function () {
-        var legacy = Object.keys(legacy_json_1.default).sort(sorter);
-        var keys = Object.keys(entities_json_1.default).sort(sorter);
-        for (var i = 0, j = 0; i < keys.length; i++) {
-            if (legacy[j] === keys[i]) {
-                keys[i] += ";?";
-                j++;
-            }
-            else {
-                keys[i] += ";";
-            }
-        }
-        var re = new RegExp("&(?:" + keys.join("|") + "|#[xX][\\da-fA-F]+;?|#\\d+;?)", "g");
-        var replace = getReplacer(entities_json_1.default);
-        function replacer(str) {
-            if (str.substr(-1) !== ";")
-                str += ";";
-            return replace(str);
-        }
-        //TODO consider creating a merged map
-        return function (str) { return String(str).replace(re, replacer); };
-    })();
-    function getReplacer(map) {
-        return function replace(str) {
-            if (str.charAt(1) === "#") {
-                var secondChar = str.charAt(2);
-                if (secondChar === "X" || secondChar === "x") {
-                    return decode_codepoint_1.default(parseInt(str.substr(3), 16));
-                }
-                return decode_codepoint_1.default(parseInt(str.substr(2), 10));
-            }
-            return map[str.slice(1, -1)];
-        };
-    }
-    });
-
-    unwrapExports(decode$2);
-    var decode_1 = decode$2.decodeHTML;
-    var decode_2 = decode$2.decodeHTMLStrict;
-    var decode_3 = decode$2.decodeXML;
-
-    var encode$1 = createCommonjsModule(function (module, exports) {
-    var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
-        return (mod && mod.__esModule) ? mod : { "default": mod };
-    };
-    Object.defineProperty(exports, "__esModule", { value: true });
-    exports.escape = exports.encodeHTML = exports.encodeXML = void 0;
-    var xml_json_1 = __importDefault(require$$0$1);
-    var inverseXML = getInverseObj(xml_json_1.default);
-    var xmlReplacer = getInverseReplacer(inverseXML);
-    exports.encodeXML = getInverse(inverseXML, xmlReplacer);
-    var entities_json_1 = __importDefault(require$$1);
-    var inverseHTML = getInverseObj(entities_json_1.default);
-    var htmlReplacer = getInverseReplacer(inverseHTML);
-    exports.encodeHTML = getInverse(inverseHTML, htmlReplacer);
-    function getInverseObj(obj) {
-        return Object.keys(obj)
-            .sort()
-            .reduce(function (inverse, name) {
-            inverse[obj[name]] = "&" + name + ";";
-            return inverse;
-        }, {});
-    }
-    function getInverseReplacer(inverse) {
-        var single = [];
-        var multiple = [];
-        for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {
-            var k = _a[_i];
-            if (k.length === 1) {
-                // Add value to single array
-                single.push("\\" + k);
-            }
-            else {
-                // Add value to multiple array
-                multiple.push(k);
-            }
-        }
-        // Add ranges to single characters.
-        single.sort();
-        for (var start = 0; start < single.length - 1; start++) {
-            // Find the end of a run of characters
-            var end = start;
-            while (end < single.length - 1 &&
-                single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) {
-                end += 1;
-            }
-            var count = 1 + end - start;
-            // We want to replace at least three characters
-            if (count < 3)
-                continue;
-            single.splice(start, count, single[start] + "-" + single[end]);
-        }
-        multiple.unshift("[" + single.join("") + "]");
-        return new RegExp(multiple.join("|"), "g");
-    }
-    var reNonASCII = /(?:[\x80-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g;
-    function singleCharReplacer(c) {
-        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
-        return "&#x" + c.codePointAt(0).toString(16).toUpperCase() + ";";
-    }
-    function getInverse(inverse, re) {
-        return function (data) {
-            return data
-                .replace(re, function (name) { return inverse[name]; })
-                .replace(reNonASCII, singleCharReplacer);
-        };
-    }
-    var reXmlChars = getInverseReplacer(inverseXML);
-    function escape(data) {
-        return data
-            .replace(reXmlChars, singleCharReplacer)
-            .replace(reNonASCII, singleCharReplacer);
-    }
-    exports.escape = escape;
-    });
-
-    unwrapExports(encode$1);
-    var encode_1$1 = encode$1.escape;
-    var encode_2 = encode$1.encodeHTML;
-    var encode_3 = encode$1.encodeXML;
-
-    var lib = createCommonjsModule(function (module, exports) {
-    Object.defineProperty(exports, "__esModule", { value: true });
-    exports.encode = exports.decodeStrict = exports.decode = void 0;
-
-
-    /**
-     * Decodes a string with entities.
-     *
-     * @param data String to decode.
-     * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.
-     */
-    function decode(data, level) {
-        return (!level || level <= 0 ? decode$2.decodeXML : decode$2.decodeHTML)(data);
-    }
-    exports.decode = decode;
-    /**
-     * Decodes a string with entities. Does not allow missing trailing semicolons for entities.
-     *
-     * @param data String to decode.
-     * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.
-     */
-    function decodeStrict(data, level) {
-        return (!level || level <= 0 ? decode$2.decodeXML : decode$2.decodeHTMLStrict)(data);
-    }
-    exports.decodeStrict = decodeStrict;
-    /**
-     * Encodes a string with entities.
-     *
-     * @param data String to encode.
-     * @param level Optional level to encode at. 0 = XML, 1 = HTML. Default is 0.
-     */
-    function encode(data, level) {
-        return (!level || level <= 0 ? encode$1.encodeXML : encode$1.encodeHTML)(data);
-    }
-    exports.encode = encode;
-    var encode_2 = encode$1;
-    Object.defineProperty(exports, "encodeXML", { enumerable: true, get: function () { return encode_2.encodeXML; } });
-    Object.defineProperty(exports, "encodeHTML", { enumerable: true, get: function () { return encode_2.encodeHTML; } });
-    Object.defineProperty(exports, "escape", { enumerable: true, get: function () { return encode_2.escape; } });
-    // Legacy aliases
-    Object.defineProperty(exports, "encodeHTML4", { enumerable: true, get: function () { return encode_2.encodeHTML; } });
-    Object.defineProperty(exports, "encodeHTML5", { enumerable: true, get: function () { return encode_2.encodeHTML; } });
-    var decode_2 = decode$2;
-    Object.defineProperty(exports, "decodeXML", { enumerable: true, get: function () { return decode_2.decodeXML; } });
-    Object.defineProperty(exports, "decodeHTML", { enumerable: true, get: function () { return decode_2.decodeHTML; } });
-    Object.defineProperty(exports, "decodeHTMLStrict", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });
-    // Legacy aliases
-    Object.defineProperty(exports, "decodeHTML4", { enumerable: true, get: function () { return decode_2.decodeHTML; } });
-    Object.defineProperty(exports, "decodeHTML5", { enumerable: true, get: function () { return decode_2.decodeHTML; } });
-    Object.defineProperty(exports, "decodeHTML4Strict", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });
-    Object.defineProperty(exports, "decodeHTML5Strict", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });
-    Object.defineProperty(exports, "decodeXMLStrict", { enumerable: true, get: function () { return decode_2.decodeXML; } });
-    });
-
-    unwrapExports(lib);
-    var lib_1 = lib.encode;
-    var lib_2 = lib.decodeStrict;
-    var lib_3 = lib.decode;
-    var lib_4 = lib.encodeXML;
-    var lib_5 = lib.encodeHTML;
-    var lib_6 = lib.encodeHTML4;
-    var lib_7 = lib.encodeHTML5;
-    var lib_8 = lib.decodeXML;
-    var lib_9 = lib.decodeHTML;
-    var lib_10 = lib.decodeHTMLStrict;
-    var lib_11 = lib.decodeHTML4;
-    var lib_12 = lib.decodeHTML5;
-    var lib_13 = lib.decodeHTML4Strict;
-    var lib_14 = lib.decodeHTML5Strict;
-    var lib_15 = lib.decodeXMLStrict;
-
-    var C_BACKSLASH = 92;
-
-    var ENTITY = "&(?:#x[a-f0-9]{1,6}|#[0-9]{1,7}|[a-z][a-z0-9]{1,31});";
-
-    var TAGNAME = "[A-Za-z][A-Za-z0-9-]*";
-    var ATTRIBUTENAME = "[a-zA-Z_:][a-zA-Z0-9:._-]*";
-    var UNQUOTEDVALUE = "[^\"'=<>`\\x00-\\x20]+";
-    var SINGLEQUOTEDVALUE = "'[^']*'";
-    var DOUBLEQUOTEDVALUE = '"[^"]*"';
-    var ATTRIBUTEVALUE =
-        "(?:" +
-        UNQUOTEDVALUE +
-        "|" +
-        SINGLEQUOTEDVALUE +
-        "|" +
-        DOUBLEQUOTEDVALUE +
-        ")";
-    var ATTRIBUTEVALUESPEC = "(?:" + "\\s*=" + "\\s*" + ATTRIBUTEVALUE + ")";
-    var ATTRIBUTE = "(?:" + "\\s+" + ATTRIBUTENAME + ATTRIBUTEVALUESPEC + "?)";
-    var OPENTAG = "<" + TAGNAME + ATTRIBUTE + "*" + "\\s*/?>";
-    var CLOSETAG = "</" + TAGNAME + "\\s*[>]";
-    var HTMLCOMMENT = "<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->";
-    var PROCESSINGINSTRUCTION = "[<][?][\\s\\S]*?[?][>]";
-    var DECLARATION = "<![A-Z]+" + "\\s+[^>]*>";
-    var CDATA = "<!\\[CDATA\\[[\\s\\S]*?\\]\\]>";
-    var HTMLTAG =
-        "(?:" +
-        OPENTAG +
-        "|" +
-        CLOSETAG +
-        "|" +
-        HTMLCOMMENT +
-        "|" +
-        PROCESSINGINSTRUCTION +
-        "|" +
-        DECLARATION +
-        "|" +
-        CDATA +
-        ")";
-    var reHtmlTag = new RegExp("^" + HTMLTAG);
-
-    var reBackslashOrAmp = /[\\&]/;
-
-    var ESCAPABLE = "[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^_`{|}~-]";
-
-    var reEntityOrEscapedChar = new RegExp("\\\\" + ESCAPABLE + "|" + ENTITY, "gi");
-
-    var XMLSPECIAL = '[&<>"]';
-
-    var reXmlSpecial = new RegExp(XMLSPECIAL, "g");
-
-    var unescapeChar = function(s) {
-        if (s.charCodeAt(0) === C_BACKSLASH) {
-            return s.charAt(1);
-        } else {
-            return lib_9(s);
-        }
-    };
-
-    // Replace entities and backslash escapes with literal characters.
-    var unescapeString = function(s) {
-        if (reBackslashOrAmp.test(s)) {
-            return s.replace(reEntityOrEscapedChar, unescapeChar);
-        } else {
-            return s;
-        }
-    };
-
-    var normalizeURI = function(uri) {
-        try {
-            return encode_1(uri);
-        } catch (err) {
-            return uri;
-        }
-    };
-
-    var replaceUnsafeChar = function(s) {
-        switch (s) {
-            case "&":
-                return "&amp;";
-            case "<":
-                return "&lt;";
-            case ">":
-                return "&gt;";
-            case '"':
-                return "&quot;";
-            default:
-                return s;
-        }
-    };
-
-    var escapeXml = function(s) {
-        if (reXmlSpecial.test(s)) {
-            return s.replace(reXmlSpecial, replaceUnsafeChar);
-        } else {
-            return s;
-        }
-    };
-
-    // derived from https://github.com/mathiasbynens/String.fromCodePoint
-    /*! http://mths.be/fromcodepoint v0.2.1 by @mathias */
-
-    var _fromCodePoint;
-
-    function fromCodePoint(_) {
-        return _fromCodePoint(_);
-    }
-
-    if (String.fromCodePoint) {
-        _fromCodePoint = function(_) {
-            try {
-                return String.fromCodePoint(_);
-            } catch (e) {
-                if (e instanceof RangeError) {
-                    return String.fromCharCode(0xfffd);
-                }
-                throw e;
-            }
-        };
-    } else {
-        var stringFromCharCode = String.fromCharCode;
-        var floor = Math.floor;
-        _fromCodePoint = function() {
-            var MAX_SIZE = 0x4000;
-            var codeUnits = [];
-            var highSurrogate;
-            var lowSurrogate;
-            var index = -1;
-            var length = arguments.length;
-            if (!length) {
-                return "";
-            }
-            var result = "";
-            while (++index < length) {
-                var codePoint = Number(arguments[index]);
-                if (
-                    !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`
-                    codePoint < 0 || // not a valid Unicode code point
-                    codePoint > 0x10ffff || // not a valid Unicode code point
-                    floor(codePoint) !== codePoint // not an integer
-                ) {
-                    return String.fromCharCode(0xfffd);
-                }
-                if (codePoint <= 0xffff) {
-                    // BMP code point
-                    codeUnits.push(codePoint);
-                } else {
-                    // Astral code point; split in surrogate halves
-                    // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
-                    codePoint -= 0x10000;
-                    highSurrogate = (codePoint >> 10) + 0xd800;
-                    lowSurrogate = (codePoint % 0x400) + 0xdc00;
-                    codeUnits.push(highSurrogate, lowSurrogate);
-                }
-                if (index + 1 === length || codeUnits.length > MAX_SIZE) {
-                    result += stringFromCharCode.apply(null, codeUnits);
-                    codeUnits.length = 0;
-                }
-            }
-            return result;
-        };
-    }
-
-    /*! http://mths.be/repeat v0.2.0 by @mathias */
-    if (!String.prototype.repeat) {
-    	(function() {
-    		var defineProperty = (function() {
-    			// IE 8 only supports `Object.defineProperty` on DOM elements
-    			try {
-    				var object = {};
-    				var $defineProperty = Object.defineProperty;
-    				var result = $defineProperty(object, object, object) && $defineProperty;
-    			} catch(error) {}
-    			return result;
-    		}());
-    		var repeat = function(count) {
-    			if (this == null) {
-    				throw TypeError();
-    			}
-    			var string = String(this);
-    			// `ToInteger`
-    			var n = count ? Number(count) : 0;
-    			if (n != n) { // better `isNaN`
-    				n = 0;
-    			}
-    			// Account for out-of-bounds indices
-    			if (n < 0 || n == Infinity) {
-    				throw RangeError();
-    			}
-    			var result = '';
-    			while (n) {
-    				if (n % 2 == 1) {
-    					result += string;
-    				}
-    				if (n > 1) {
-    					string += string;
-    				}
-    				n >>= 1;
-    			}
-    			return result;
-    		};
-    		if (defineProperty) {
-    			defineProperty(String.prototype, 'repeat', {
-    				'value': repeat,
-    				'configurable': true,
-    				'writable': true
-    			});
-    		} else {
-    			String.prototype.repeat = repeat;
-    		}
-    	}());
-    }
-
-    var normalizeURI$1 = normalizeURI;
-    var unescapeString$1 = unescapeString;
-
-    // Constants for character codes:
-
-    var C_NEWLINE = 10;
-    var C_ASTERISK = 42;
-    var C_UNDERSCORE = 95;
-    var C_BACKTICK = 96;
-    var C_OPEN_BRACKET = 91;
-    var C_CLOSE_BRACKET = 93;
-    var C_LESSTHAN = 60;
-    var C_BANG = 33;
-    var C_BACKSLASH$1 = 92;
-    var C_AMPERSAND = 38;
-    var C_OPEN_PAREN = 40;
-    var C_CLOSE_PAREN = 41;
-    var C_COLON = 58;
-    var C_SINGLEQUOTE = 39;
-    var C_DOUBLEQUOTE = 34;
-
-    // Some regexps used in inline parser:
-
-    var ESCAPABLE$1 = ESCAPABLE;
-    var ESCAPED_CHAR = "\\\\" + ESCAPABLE$1;
-
-    var ENTITY$1 = ENTITY;
-    var reHtmlTag$1 = reHtmlTag;
-
-    var rePunctuation = new RegExp(
-        /^[!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~\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\u0AF0\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-\u2E42\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]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDF3C-\uDF3E]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]/
-    );
-
-    var reLinkTitle = new RegExp(
-        '^(?:"(' +
-            ESCAPED_CHAR +
-            '|[^"\\x00])*"' +
-            "|" +
-            "'(" +
-            ESCAPED_CHAR +
-            "|[^'\\x00])*'" +
-            "|" +
-            "\\((" +
-            ESCAPED_CHAR +
-            "|[^()\\x00])*\\))"
-    );
-
-    var reLinkDestinationBraces = /^(?:<(?:[^<>\n\\\x00]|\\.)*>)/;
-
-    var reEscapable = new RegExp("^" + ESCAPABLE$1);
-
-    var reEntityHere = new RegExp("^" + ENTITY$1, "i");
-
-    var reTicks = /`+/;
-
-    var reTicksHere = /^`+/;
-
-    var reEllipses = /\.\.\./g;
-
-    var reDash = /--+/g;
-
-    var reEmailAutolink = /^<([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])?)*)>/;
-
-    var reAutolink = /^<[A-Za-z][A-Za-z0-9.+-]{1,31}:[^<>\x00-\x20]*>/i;
-
-    var reSpnl = /^ *(?:\n *)?/;
-
-    var reWhitespaceChar = /^[ \t\n\x0b\x0c\x0d]/;
-
-    var reUnicodeWhitespaceChar = /^\s/;
-
-    var reFinalSpace = / *$/;
-
-    var reInitialSpace = /^ */;
-
-    var reSpaceAtEndOfLine = /^ *(?:\n|$)/;
-
-    var reLinkLabel = /^\[(?:[^\\\[\]]|\\.){0,1000}\]/s;
-
-    // Matches a string of non-special characters.
-    var reMain = /^[^\n`\[\]\\!<&*_'"]+/m;
-
-    var text = function(s) {
-        var node = new Node("text");
-        node._literal = s;
-        return node;
-    };
-
-    // normalize a reference in reference link (remove []s, trim,
-    // collapse internal space, unicode case fold.
-    // See commonmark/commonmark.js#168.
-    var normalizeReference = function(string) {
-        return string
-            .slice(1, string.length - 1)
-            .trim()
-            .replace(/[ \t\r\n]+/, " ")
-            .toLowerCase()
-            .toUpperCase();
-    };
-
-    // INLINE PARSER
-
-    // These are methods of an InlineParser object, defined below.
-    // An InlineParser keeps track of a subject (a string to be
-    // parsed) and a position in that subject.
-
-    // If re matches at current position in the subject, advance
-    // position in subject and return the match; otherwise return null.
-    var match = function(re) {
-        var m = re.exec(this.subject.slice(this.pos));
-        if (m === null) {
-            return null;
-        } else {
-            this.pos += m.index + m[0].length;
-            return m[0];
-        }
-    };
-
-    // Returns the code for the character at the current subject position, or -1
-    // there are no more characters.
-    var peek = function() {
-        if (this.pos < this.subject.length) {
-            return this.subject.charCodeAt(this.pos);
-        } else {
-            return -1;
-        }
-    };
-
-    // Parse zero or more space characters, including at most one newline
-    var spnl = function() {
-        this.match(reSpnl);
-        return true;
-    };
-
-    // All of the parsers below try to match something at the current position
-    // in the subject.  If they succeed in matching anything, they
-    // return the inline matched, advancing the subject.
-
-    // Attempt to parse backticks, adding either a backtick code span or a
-    // literal sequence of backticks.
-    var parseBackticks = function(block) {
-        var ticks = this.match(reTicksHere);
-        if (ticks === null) {
-            return false;
-        }
-        var afterOpenTicks = this.pos;
-        var matched;
-        var node;
-        var contents;
-        while ((matched = this.match(reTicks)) !== null) {
-            if (matched === ticks) {
-                node = new Node("code");
-                contents = this.subject
-                    .slice(afterOpenTicks, this.pos - ticks.length)
-                    .replace(/\n/gm, " ");
-                if (
-                    contents.length > 0 &&
-                    contents.match(/[^ ]/) !== null &&
-                    contents[0] == " " &&
-                    contents[contents.length - 1] == " "
-                ) {
-                    node._literal = contents.slice(1, contents.length - 1);
-                } else {
-                    node._literal = contents;
-                }
-                const doc = this.options.autoDoc;
-                if (doc) {
-                    const decl_hash = doc.detectDeclPath(contents);
-                    if (decl_hash) {
-                        var l = new Node("link");
-                        l.destination = decl_hash;
-                        l.appendChild(node);
-                        node = l;
-                    }
-                }
-                block.appendChild(node);
-                return true;
-            }
-        }
-        // If we got here, we didn't match a closing backtick sequence.
-        this.pos = afterOpenTicks;
-        block.appendChild(text(ticks));
-        return true;
-    };
-
-    // Parse a backslash-escaped special character, adding either the escaped
-    // character, a hard line break (if the backslash is followed by a newline),
-    // or a literal backslash to the block's children.  Assumes current character
-    // is a backslash.
-    var parseBackslash = function(block) {
-        var subj = this.subject;
-        var node;
-        this.pos += 1;
-        if (this.peek() === C_NEWLINE) {
-            this.pos += 1;
-            node = new Node("linebreak");
-            block.appendChild(node);
-        } else if (reEscapable.test(subj.charAt(this.pos))) {
-            block.appendChild(text(subj.charAt(this.pos)));
-            this.pos += 1;
-        } else {
-            block.appendChild(text("\\"));
-        }
-        return true;
-    };
-
-    // Attempt to parse an autolink (URL or email in pointy brackets).
-    var parseAutolink = function(block) {
-        var m;
-        var dest;
-        var node;
-        if ((m = this.match(reEmailAutolink))) {
-            dest = m.slice(1, m.length - 1);
-            node = new Node("link");
-            node._destination = normalizeURI$1("mailto:" + dest);
-            node._title = "";
-            node.appendChild(text(dest));
-            block.appendChild(node);
-            return true;
-        } else if ((m = this.match(reAutolink))) {
-            dest = m.slice(1, m.length - 1);
-            node = new Node("link");
-            node._destination = normalizeURI$1(dest);
-            node._title = "";
-            node.appendChild(text(dest));
-            block.appendChild(node);
-            return true;
-        } else {
-            return false;
-        }
-    };
-
-    // Attempt to parse a raw HTML tag.
-    var parseHtmlTag = function(block) {
-        var m = this.match(reHtmlTag$1);
-        if (m === null) {
-            return false;
-        } else {
-            var node = new Node("html_inline");
-            node._literal = m;
-            block.appendChild(node);
-            return true;
-        }
-    };
-
-    // Scan a sequence of characters with code cc, and return information about
-    // the number of delimiters and whether they are positioned such that
-    // they can open and/or close emphasis or strong emphasis.  A utility
-    // function for strong/emph parsing.
-    var scanDelims = function(cc) {
-        var numdelims = 0;
-        var char_before, char_after, cc_after;
-        var startpos = this.pos;
-        var left_flanking, right_flanking, can_open, can_close;
-        var after_is_whitespace,
-            after_is_punctuation,
-            before_is_whitespace,
-            before_is_punctuation;
-
-        if (cc === C_SINGLEQUOTE || cc === C_DOUBLEQUOTE) {
-            numdelims++;
-            this.pos++;
-        } else {
-            while (this.peek() === cc) {
-                numdelims++;
-                this.pos++;
-            }
-        }
-
-        if (numdelims === 0) {
-            return null;
-        }
-
-        char_before = startpos === 0 ? "\n" : this.subject.charAt(startpos - 1);
-
-        cc_after = this.peek();
-        if (cc_after === -1) {
-            char_after = "\n";
-        } else {
-            char_after = fromCodePoint(cc_after);
-        }
-
-        after_is_whitespace = reUnicodeWhitespaceChar.test(char_after);
-        after_is_punctuation = rePunctuation.test(char_after);
-        before_is_whitespace = reUnicodeWhitespaceChar.test(char_before);
-        before_is_punctuation = rePunctuation.test(char_before);
-
-        left_flanking =
-            !after_is_whitespace &&
-            (!after_is_punctuation ||
-                before_is_whitespace ||
-                before_is_punctuation);
-        right_flanking =
-            !before_is_whitespace &&
-            (!before_is_punctuation || after_is_whitespace || after_is_punctuation);
-        if (cc === C_UNDERSCORE) {
-            can_open = left_flanking && (!right_flanking || before_is_punctuation);
-            can_close = right_flanking && (!left_flanking || after_is_punctuation);
-        } else if (cc === C_SINGLEQUOTE || cc === C_DOUBLEQUOTE) {
-            can_open = left_flanking && !right_flanking;
-            can_close = right_flanking;
-        } else {
-            can_open = left_flanking;
-            can_close = right_flanking;
-        }
-        this.pos = startpos;
-        return { numdelims: numdelims, can_open: can_open, can_close: can_close };
-    };
-
-    // Handle a delimiter marker for emphasis or a quote.
-    var handleDelim = function(cc, block) {
-        var res = this.scanDelims(cc);
-        if (!res) {
-            return false;
-        }
-        var numdelims = res.numdelims;
-        var startpos = this.pos;
-        var contents;
-
-        this.pos += numdelims;
-        if (cc === C_SINGLEQUOTE) {
-            contents = "\u2019";
-        } else if (cc === C_DOUBLEQUOTE) {
-            contents = "\u201C";
-        } else {
-            contents = this.subject.slice(startpos, this.pos);
-        }
-        var node = text(contents);
-        block.appendChild(node);
-
-        // Add entry to stack for this opener
-        if (
-            (res.can_open || res.can_close) &&
-            (this.options.smart || (cc !== C_SINGLEQUOTE && cc !== C_DOUBLEQUOTE))
-        ) {
-            this.delimiters = {
-                cc: cc,
-                numdelims: numdelims,
-                origdelims: numdelims,
-                node: node,
-                previous: this.delimiters,
-                next: null,
-                can_open: res.can_open,
-                can_close: res.can_close
-            };
-            if (this.delimiters.previous !== null) {
-                this.delimiters.previous.next = this.delimiters;
-            }
-        }
-
-        return true;
-    };
-
-    var removeDelimiter = function(delim) {
-        if (delim.previous !== null) {
-            delim.previous.next = delim.next;
-        }
-        if (delim.next === null) {
-            // top of stack
-            this.delimiters = delim.previous;
-        } else {
-            delim.next.previous = delim.previous;
-        }
-    };
-
-    var removeDelimitersBetween = function(bottom, top) {
-        if (bottom.next !== top) {
-            bottom.next = top;
-            top.previous = bottom;
-        }
-    };
-
-    var processEmphasis = function(stack_bottom) {
-        var opener, closer, old_closer;
-        var opener_inl, closer_inl;
-        var tempstack;
-        var use_delims;
-        var tmp, next;
-        var opener_found;
-        var openers_bottom = [];
-        var openers_bottom_index;
-        var odd_match = false;
-
-        for (var i = 0; i < 8; i++) {
-            openers_bottom[i] = stack_bottom;
-        }
-        // find first closer above stack_bottom:
-        closer = this.delimiters;
-        while (closer !== null && closer.previous !== stack_bottom) {
-            closer = closer.previous;
-        }
-        // move forward, looking for closers, and handling each
-        while (closer !== null) {
-            var closercc = closer.cc;
-            if (!closer.can_close) {
-                closer = closer.next;
-            } else {
-                // found emphasis closer. now look back for first matching opener:
-                opener = closer.previous;
-                opener_found = false;
-                switch (closercc) {
-                   case C_SINGLEQUOTE:
-                     openers_bottom_index = 0;
-                     break;
-                   case C_DOUBLEQUOTE:
-                     openers_bottom_index = 1;
-                     break;
-                   case C_UNDERSCORE:
-                     openers_bottom_index = 2;
-                     break;
-                   case C_ASTERISK:
-                     openers_bottom_index = 3 + (closer.can_open ? 3 : 0)
-                                              + (closer.origdelims % 3);
-                     break;
-                }
-                while (
-                    opener !== null &&
-                    opener !== stack_bottom &&
-                    opener !== openers_bottom[openers_bottom_index]
-                ) {
-                    odd_match =
-                        (closer.can_open || opener.can_close) &&
-                        closer.origdelims % 3 !== 0 &&
-                        (opener.origdelims + closer.origdelims) % 3 === 0;
-                    if (opener.cc === closer.cc && opener.can_open && !odd_match) {
-                        opener_found = true;
-                        break;
-                    }
-                    opener = opener.previous;
-                }
-                old_closer = closer;
-
-                if (closercc === C_ASTERISK || closercc === C_UNDERSCORE) {
-                    if (!opener_found) {
-                        closer = closer.next;
-                    } else {
-                        // calculate actual number of delimiters used from closer
-                        use_delims =
-                            closer.numdelims >= 2 && opener.numdelims >= 2 ? 2 : 1;
-
-                        opener_inl = opener.node;
-                        closer_inl = closer.node;
-
-                        // remove used delimiters from stack elts and inlines
-                        opener.numdelims -= use_delims;
-                        closer.numdelims -= use_delims;
-                        opener_inl._literal = opener_inl._literal.slice(
-                            0,
-                            opener_inl._literal.length - use_delims
-                        );
-                        closer_inl._literal = closer_inl._literal.slice(
-                            0,
-                            closer_inl._literal.length - use_delims
-                        );
-
-                        // build contents for new emph element
-                        var emph = new Node(use_delims === 1 ? "emph" : "strong");
-
-                        tmp = opener_inl._next;
-                        while (tmp && tmp !== closer_inl) {
-                            next = tmp._next;
-                            tmp.unlink();
-                            emph.appendChild(tmp);
-                            tmp = next;
-                        }
-
-                        opener_inl.insertAfter(emph);
-
-                        // remove elts between opener and closer in delimiters stack
-                        removeDelimitersBetween(opener, closer);
-
-                        // if opener has 0 delims, remove it and the inline
-                        if (opener.numdelims === 0) {
-                            opener_inl.unlink();
-                            this.removeDelimiter(opener);
-                        }
-
-                        if (closer.numdelims === 0) {
-                            closer_inl.unlink();
-                            tempstack = closer.next;
-                            this.removeDelimiter(closer);
-                            closer = tempstack;
-                        }
-                    }
-                } else if (closercc === C_SINGLEQUOTE) {
-                    closer.node._literal = "\u2019";
-                    if (opener_found) {
-                        opener.node._literal = "\u2018";
-                    }
-                    closer = closer.next;
-                } else if (closercc === C_DOUBLEQUOTE) {
-                    closer.node._literal = "\u201D";
-                    if (opener_found) {
-                        opener.node.literal = "\u201C";
-                    }
-                    closer = closer.next;
-                }
-                if (!opener_found) {
-                    // Set lower bound for future searches for openers:
-                    openers_bottom[openers_bottom_index] =
-                        old_closer.previous;
-                    if (!old_closer.can_open) {
-                        // We can remove a closer that can't be an opener,
-                        // once we've seen there's no matching opener:
-                        this.removeDelimiter(old_closer);
-                    }
-                }
-            }
-        }
-
-        // remove all delimiters
-        while (this.delimiters !== null && this.delimiters !== stack_bottom) {
-            this.removeDelimiter(this.delimiters);
-        }
-    };
-
-    // Attempt to parse link title (sans quotes), returning the string
-    // or null if no match.
-    var parseLinkTitle = function() {
-        var title = this.match(reLinkTitle);
-        if (title === null) {
-            return null;
-        } else {
-            // chop off quotes from title and unescape:
-            return unescapeString$1(title.substr(1, title.length - 2));
-        }
-    };
-
-    // Attempt to parse link destination, returning the string or
-    // null if no match.
-    var parseLinkDestination = function() {
-        var res = this.match(reLinkDestinationBraces);
-        if (res === null) {
-            if (this.peek() === C_LESSTHAN) {
-                return null;
-            }
-            // TODO handrolled parser; res should be null or the string
-            var savepos = this.pos;
-            var openparens = 0;
-            var c;
-            while ((c = this.peek()) !== -1) {
-                if (
-                    c === C_BACKSLASH$1 &&
-                    reEscapable.test(this.subject.charAt(this.pos + 1))
-                ) {
-                    this.pos += 1;
-                    if (this.peek() !== -1) {
-                        this.pos += 1;
-                    }
-                } else if (c === C_OPEN_PAREN) {
-                    this.pos += 1;
-                    openparens += 1;
-                } else if (c === C_CLOSE_PAREN) {
-                    if (openparens < 1) {
-                        break;
-                    } else {
-                        this.pos += 1;
-                        openparens -= 1;
-                    }
-                } else if (reWhitespaceChar.exec(fromCodePoint(c)) !== null) {
-                    break;
-                } else {
-                    this.pos += 1;
-                }
-            }
-            if (this.pos === savepos && c !== C_CLOSE_PAREN) {
-                return null;
-            }
-            if (openparens !== 0) {
-                return null;
-            }
-            res = this.subject.substr(savepos, this.pos - savepos);
-            return normalizeURI$1(unescapeString$1(res));
-        } else {
-            // chop off surrounding <..>:
-            return normalizeURI$1(unescapeString$1(res.substr(1, res.length - 2)));
-        }
-    };
-
-    // Attempt to parse a link label, returning number of characters parsed.
-    var parseLinkLabel = function() {
-        var m = this.match(reLinkLabel);
-        if (m === null || m.length > 1001) {
-            return 0;
-        } else {
-            return m.length;
-        }
-    };
-
-    // Add open bracket to delimiter stack and add a text node to block's children.
-    var parseOpenBracket = function(block) {
-        var startpos = this.pos;
-        this.pos += 1;
-
-        var node = text("[");
-        block.appendChild(node);
-
-        // Add entry to stack for this opener
-        this.addBracket(node, startpos, false);
-        return true;
-    };
-
-    // IF next character is [, and ! delimiter to delimiter stack and
-    // add a text node to block's children.  Otherwise just add a text node.
-    var parseBang = function(block) {
-        var startpos = this.pos;
-        this.pos += 1;
-        if (this.peek() === C_OPEN_BRACKET) {
-            this.pos += 1;
-
-            var node = text("![");
-            block.appendChild(node);
-
-            // Add entry to stack for this opener
-            this.addBracket(node, startpos + 1, true);
-        } else {
-            block.appendChild(text("!"));
-        }
-        return true;
-    };
-
-    // Try to match close bracket against an opening in the delimiter
-    // stack.  Add either a link or image, or a plain [ character,
-    // to block's children.  If there is a matching delimiter,
-    // remove it from the delimiter stack.
-    var parseCloseBracket = function(block) {
-        var startpos;
-        var is_image;
-        var dest;
-        var title;
-        var matched = false;
-        var reflabel;
-        var opener;
-
-        this.pos += 1;
-        startpos = this.pos;
-
-        // get last [ or ![
-        opener = this.brackets;
-
-        if (opener === null) {
-            // no matched opener, just return a literal
-            block.appendChild(text("]"));
-            return true;
-        }
-
-        if (!opener.active) {
-            // no matched opener, just return a literal
-            block.appendChild(text("]"));
-            // take opener off brackets stack
-            this.removeBracket();
-            return true;
-        }
-
-        // If we got here, open is a potential opener
-        is_image = opener.image;
-
-        // Check to see if we have a link/image
-
-        var savepos = this.pos;
-
-        // Inline link?
-        if (this.peek() === C_OPEN_PAREN) {
-            this.pos++;
-            if (
-                this.spnl() &&
-                (dest = this.parseLinkDestination()) !== null &&
-                this.spnl() &&
-                // make sure there's a space before the title:
-                ((reWhitespaceChar.test(this.subject.charAt(this.pos - 1)) &&
-                    (title = this.parseLinkTitle())) ||
-                    true) &&
-                this.spnl() &&
-                this.peek() === C_CLOSE_PAREN
-            ) {
-                this.pos += 1;
-                matched = true;
-            } else {
-                this.pos = savepos;
-            }
-        }
-
-        if (!matched) {
-            // Next, see if there's a link label
-            var beforelabel = this.pos;
-            var n = this.parseLinkLabel();
-            if (n > 2) {
-                reflabel = this.subject.slice(beforelabel, beforelabel + n);
-            } else if (!opener.bracketAfter) {
-                // Empty or missing second label means to use the first label as the reference.
-                // The reference must not contain a bracket. If we know there's a bracket, we don't even bother checking it.
-                reflabel = this.subject.slice(opener.index, startpos);
-            }
-            if (n === 0) {
-                // If shortcut reference link, rewind before spaces we skipped.
-                this.pos = savepos;
-            }
-
-            if (reflabel) {
-                // lookup rawlabel in refmap
-                var link = this.refmap[normalizeReference(reflabel)];
-                if (link) {
-                    dest = link.destination;
-                    title = link.title;
-                    matched = true;
-                }
-            }
-        }
-
-        if (matched) {
-            var node = new Node(is_image ? "image" : "link");
-            node._destination = dest;
-            node._title = title || "";
-
-            var tmp, next;
-            tmp = opener.node._next;
-            while (tmp) {
-                next = tmp._next;
-                tmp.unlink();
-                node.appendChild(tmp);
-                tmp = next;
-            }
-            block.appendChild(node);
-            this.processEmphasis(opener.previousDelimiter);
-            this.removeBracket();
-            opener.node.unlink();
-
-            // We remove this bracket and processEmphasis will remove later delimiters.
-            // Now, for a link, we also deactivate earlier link openers.
-            // (no links in links)
-            if (!is_image) {
-                opener = this.brackets;
-                while (opener !== null) {
-                    if (!opener.image) {
-                        opener.active = false; // deactivate this opener
-                    }
-                    opener = opener.previous;
-                }
-            }
-
-            return true;
-        } else {
-            // no match
-
-            this.removeBracket(); // remove this opener from stack
-            this.pos = startpos;
-            block.appendChild(text("]"));
-            return true;
-        }
-    };
-
-    var addBracket = function(node, index, image) {
-        if (this.brackets !== null) {
-            this.brackets.bracketAfter = true;
-        }
-        this.brackets = {
-            node: node,
-            previous: this.brackets,
-            previousDelimiter: this.delimiters,
-            index: index,
-            image: image,
-            active: true
-        };
-    };
-
-    var removeBracket = function() {
-        this.brackets = this.brackets.previous;
-    };
-
-    // Attempt to parse an entity.
-    var parseEntity = function(block) {
-        var m;
-        if ((m = this.match(reEntityHere))) {
-            block.appendChild(text(lib_9(m)));
-            return true;
-        } else {
-            return false;
-        }
-    };
-
-    // Parse a run of ordinary characters, or a single character with
-    // a special meaning in markdown, as a plain string.
-    var parseString = function(block) {
-        var m;
-        if ((m = this.match(reMain))) {
-            if (this.options.smart) {
-                block.appendChild(
-                    text(
-                        m
-                            .replace(reEllipses, "\u2026")
-                            .replace(reDash, function(chars) {
-                                var enCount = 0;
-                                var emCount = 0;
-                                if (chars.length % 3 === 0) {
-                                    // If divisible by 3, use all em dashes
-                                    emCount = chars.length / 3;
-                                } else if (chars.length % 2 === 0) {
-                                    // If divisible by 2, use all en dashes
-                                    enCount = chars.length / 2;
-                                } else if (chars.length % 3 === 2) {
-                                    // If 2 extra dashes, use en dash for last 2; em dashes for rest
-                                    enCount = 1;
-                                    emCount = (chars.length - 2) / 3;
-                                } else {
-                                    // Use en dashes for last 4 hyphens; em dashes for rest
-                                    enCount = 2;
-                                    emCount = (chars.length - 4) / 3;
-                                }
-                                return (
-                                    "\u2014".repeat(emCount) +
-                                    "\u2013".repeat(enCount)
-                                );
-                            })
-                    )
-                );
-            } else {
-                block.appendChild(text(m));
-            }
-            return true;
-        } else {
-            return false;
-        }
-    };
-
-    // Parse a newline.  If it was preceded by two spaces, return a hard
-    // line break; otherwise a soft line break.
-    var parseNewline = function(block) {
-        this.pos += 1; // assume we're at a \n
-        // check previous node for trailing spaces
-        var lastc = block._lastChild;
-        if (
-            lastc &&
-            lastc.type === "text" &&
-            lastc._literal[lastc._literal.length - 1] === " "
-        ) {
-            var hardbreak = lastc._literal[lastc._literal.length - 2] === " ";
-            lastc._literal = lastc._literal.replace(reFinalSpace, "");
-            block.appendChild(new Node(hardbreak ? "linebreak" : "softbreak"));
-        } else {
-            block.appendChild(new Node("softbreak"));
-        }
-        this.match(reInitialSpace); // gobble leading spaces in next line
-        return true;
-    };
-
-    // Attempt to parse a link reference, modifying refmap.
-    var parseReference = function(s, refmap) {
-        this.subject = s;
-        this.pos = 0;
-        var rawlabel;
-        var dest;
-        var title;
-        var matchChars;
-        var startpos = this.pos;
-
-        // label:
-        matchChars = this.parseLinkLabel();
-        if (matchChars === 0) {
-            return 0;
-        } else {
-            rawlabel = this.subject.substr(0, matchChars);
-        }
-
-        // colon:
-        if (this.peek() === C_COLON) {
-            this.pos++;
-        } else {
-            this.pos = startpos;
-            return 0;
-        }
-
-        //  link url
-        this.spnl();
-
-        dest = this.parseLinkDestination();
-        if (dest === null) {
-            this.pos = startpos;
-            return 0;
-        }
-
-        var beforetitle = this.pos;
-        this.spnl();
-        if (this.pos !== beforetitle) {
-            title = this.parseLinkTitle();
-        }
-        if (title === null) {
-            title = "";
-            // rewind before spaces
-            this.pos = beforetitle;
-        }
-
-        // make sure we're at line end:
-        var atLineEnd = true;
-        if (this.match(reSpaceAtEndOfLine) === null) {
-            if (title === "") {
-                atLineEnd = false;
-            } else {
-                // the potential title we found is not at the line end,
-                // but it could still be a legal link reference if we
-                // discard the title
-                title = "";
-                // rewind before spaces
-                this.pos = beforetitle;
-                // and instead check if the link URL is at the line end
-                atLineEnd = this.match(reSpaceAtEndOfLine) !== null;
-            }
-        }
-
-        if (!atLineEnd) {
-            this.pos = startpos;
-            return 0;
-        }
-
-        var normlabel = normalizeReference(rawlabel);
-        if (normlabel === "") {
-            // label must contain non-whitespace characters
-            this.pos = startpos;
-            return 0;
-        }
-
-        if (!refmap[normlabel]) {
-            refmap[normlabel] = { destination: dest, title: title };
-        }
-        return this.pos - startpos;
-    };
-
-    // Parse the next inline element in subject, advancing subject position.
-    // On success, add the result to block's children and return true.
-    // On failure, return false.
-    var parseInline = function(block) {
-        var res = false;
-        var c = this.peek();
-        if (c === -1) {
-            return false;
-        }
-        switch (c) {
-            case C_NEWLINE:
-                res = this.parseNewline(block);
-                break;
-            case C_BACKSLASH$1:
-                res = this.parseBackslash(block);
-                break;
-            case C_BACKTICK:
-                res = this.parseBackticks(block);
-                break;
-            case C_ASTERISK:
-            case C_UNDERSCORE:
-                res = this.handleDelim(c, block);
-                break;
-            case C_SINGLEQUOTE:
-            case C_DOUBLEQUOTE:
-                res = this.options.smart && this.handleDelim(c, block);
-                break;
-            case C_OPEN_BRACKET:
-                res = this.parseOpenBracket(block);
-                break;
-            case C_BANG:
-                res = this.parseBang(block);
-                break;
-            case C_CLOSE_BRACKET:
-                res = this.parseCloseBracket(block);
-                break;
-            case C_LESSTHAN:
-                res = this.parseAutolink(block) || this.parseHtmlTag(block);
-                break;
-            case C_AMPERSAND:
-                res = this.parseEntity(block);
-                break;
-            default:
-                res = this.parseString(block);
-                break;
-        }
-        if (!res) {
-            this.pos += 1;
-            block.appendChild(text(fromCodePoint(c)));
-        }
-
-        return true;
-    };
-
-    // Parse string content in block into inline children,
-    // using refmap to resolve references.
-    var parseInlines = function(block) {
-        this.subject = block._string_content.trim();
-        this.pos = 0;
-        this.delimiters = null;
-        this.brackets = null;
-        while (this.parseInline(block)) {}
-        block._string_content = null; // allow raw string to be garbage collected
-        this.processEmphasis(null);
-    };
-
-    // The InlineParser object.
-    function InlineParser(options) {
-        return {
-            subject: "",
-            delimiters: null, // used by handleDelim method
-            brackets: null,
-            pos: 0,
-            refmap: {},
-            match: match,
-            peek: peek,
-            spnl: spnl,
-            parseBackticks: parseBackticks,
-            parseBackslash: parseBackslash,
-            parseAutolink: parseAutolink,
-            parseHtmlTag: parseHtmlTag,
-            scanDelims: scanDelims,
-            handleDelim: handleDelim,
-            parseLinkTitle: parseLinkTitle,
-            parseLinkDestination: parseLinkDestination,
-            parseLinkLabel: parseLinkLabel,
-            parseOpenBracket: parseOpenBracket,
-            parseBang: parseBang,
-            parseCloseBracket: parseCloseBracket,
-            addBracket: addBracket,
-            removeBracket: removeBracket,
-            parseEntity: parseEntity,
-            parseString: parseString,
-            parseNewline: parseNewline,
-            parseReference: parseReference,
-            parseInline: parseInline,
-            processEmphasis: processEmphasis,
-            removeDelimiter: removeDelimiter,
-            options: options || {},
-            parse: parseInlines
-        };
-    }
-
-    var CODE_INDENT = 4;
-
-    var C_TAB = 9;
-    var C_NEWLINE$1 = 10;
-    var C_GREATERTHAN = 62;
-    var C_LESSTHAN$1 = 60;
-    var C_SPACE = 32;
-    var C_OPEN_BRACKET$1 = 91;
-
-    var reHtmlBlockOpen = [
-        /./, // dummy for 0
-        /^<(?:script|pre|textarea|style)(?:\s|>|$)/i,
-        /^<!--/,
-        /^<[?]/,
-        /^<![A-Z]/,
-        /^<!\[CDATA\[/,
-        /^<[/]?(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[123456]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(?:\s|[/]?[>]|$)/i,
-        new RegExp("^(?:" + OPENTAG + "|" + CLOSETAG + ")\\s*$", "i")
-    ];
-
-    var reHtmlBlockClose = [
-        /./, // dummy for 0
-        /<\/(?:script|pre|textarea|style)>/i,
-        /-->/,
-        /\?>/,
-        />/,
-        /\]\]>/
-    ];
-
-    var reThematicBreak = /^(?:\*[ \t]*){3,}$|^(?:_[ \t]*){3,}$|^(?:-[ \t]*){3,}$/;
-
-    var reMaybeSpecial = /^[#`~*+_=<>0-9-]/;
-
-    var reNonSpace = /[^ \t\f\v\r\n]/;
-
-    var reBulletListMarker = /^[*+-]/;
-
-    var reOrderedListMarker = /^(\d{1,9})([.)])/;
-
-    var reATXHeadingMarker = /^#{1,6}(?:[ \t]+|$)/;
-
-    var reCodeFence = /^`{3,}(?!.*`)|^~{3,}/;
-
-    var reClosingCodeFence = /^(?:`{3,}|~{3,})(?= *$)/;
-
-    var reSetextHeadingLine = /^(?:=+|-+)[ \t]*$/;
-
-    var reLineEnding = /\r\n|\n|\r/;
-
-    // Returns true if string contains only space characters.
-    var isBlank = function(s) {
-        return !reNonSpace.test(s);
-    };
-
-    var isSpaceOrTab = function(c) {
-        return c === C_SPACE || c === C_TAB;
-    };
-
-    var peek$1 = function(ln, pos) {
-        if (pos < ln.length) {
-            return ln.charCodeAt(pos);
-        } else {
-            return -1;
-        }
-    };
-
-    // DOC PARSER
-
-    // These are methods of a Parser object, defined below.
-
-    // Returns true if block ends with a blank line, descending if needed
-    // into lists and sublists.
-    var endsWithBlankLine = function(block) {
-        while (block) {
-            if (block._lastLineBlank) {
-                return true;
-            }
-            var t = block.type;
-            if (!block._lastLineChecked && (t === "list" || t === "item")) {
-                block._lastLineChecked = true;
-                block = block._lastChild;
-            } else {
-                block._lastLineChecked = true;
-                break;
-            }
-        }
-        return false;
-    };
-
-    // Add a line to the block at the tip.  We assume the tip
-    // can accept lines -- that check should be done before calling this.
-    var addLine = function() {
-        if (this.partiallyConsumedTab) {
-            this.offset += 1; // skip over tab
-            // add space characters:
-            var charsToTab = 4 - (this.column % 4);
-            this.tip._string_content += " ".repeat(charsToTab);
-        }
-        this.tip._string_content += this.currentLine.slice(this.offset) + "\n";
-    };
-
-    // Add block of type tag as a child of the tip.  If the tip can't
-    // accept children, close and finalize it and try its parent,
-    // and so on til we find a block that can accept children.
-    var addChild = function(tag, offset) {
-        while (!this.blocks[this.tip.type].canContain(tag)) {
-            this.finalize(this.tip, this.lineNumber - 1);
-        }
-
-        var column_number = offset + 1; // offset 0 = column 1
-        var newBlock = new Node(tag, [
-            [this.lineNumber, column_number],
-            [0, 0]
-        ]);
-        newBlock._string_content = "";
-        this.tip.appendChild(newBlock);
-        this.tip = newBlock;
-        return newBlock;
-    };
-
-    // Parse a list marker and return data on the marker (type,
-    // start, delimiter, bullet character, padding) or null.
-    var parseListMarker = function(parser, container) {
-        var rest = parser.currentLine.slice(parser.nextNonspace);
-        var match;
-        var nextc;
-        var spacesStartCol;
-        var spacesStartOffset;
-        var data = {
-            type: null,
-            tight: true, // lists are tight by default
-            bulletChar: null,
-            start: null,
-            delimiter: null,
-            padding: null,
-            markerOffset: parser.indent
-        };
-        if (parser.indent >= 4) {
-            return null;
-        }
-        if ((match = rest.match(reBulletListMarker))) {
-            data.type = "bullet";
-            data.bulletChar = match[0][0];
-        } else if (
-            (match = rest.match(reOrderedListMarker)) &&
-            (container.type !== "paragraph" || match[1] == 1)
-        ) {
-            data.type = "ordered";
-            data.start = parseInt(match[1]);
-            data.delimiter = match[2];
-        } else {
-            return null;
-        }
-        // make sure we have spaces after
-        nextc = peek$1(parser.currentLine, parser.nextNonspace + match[0].length);
-        if (!(nextc === -1 || nextc === C_TAB || nextc === C_SPACE)) {
-            return null;
-        }
-
-        // if it interrupts paragraph, make sure first line isn't blank
-        if (
-            container.type === "paragraph" &&
-            !parser.currentLine
-                .slice(parser.nextNonspace + match[0].length)
-                .match(reNonSpace)
-        ) {
-            return null;
-        }
-
-        // we've got a match! advance offset and calculate padding
-        parser.advanceNextNonspace(); // to start of marker
-        parser.advanceOffset(match[0].length, true); // to end of marker
-        spacesStartCol = parser.column;
-        spacesStartOffset = parser.offset;
-        do {
-            parser.advanceOffset(1, true);
-            nextc = peek$1(parser.currentLine, parser.offset);
-        } while (parser.column - spacesStartCol < 5 && isSpaceOrTab(nextc));
-        var blank_item = peek$1(parser.currentLine, parser.offset) === -1;
-        var spaces_after_marker = parser.column - spacesStartCol;
-        if (spaces_after_marker >= 5 || spaces_after_marker < 1 || blank_item) {
-            data.padding = match[0].length + 1;
-            parser.column = spacesStartCol;
-            parser.offset = spacesStartOffset;
-            if (isSpaceOrTab(peek$1(parser.currentLine, parser.offset))) {
-                parser.advanceOffset(1, true);
-            }
-        } else {
-            data.padding = match[0].length + spaces_after_marker;
-        }
-        return data;
-    };
-
-    // Returns true if the two list items are of the same type,
-    // with the same delimiter and bullet character.  This is used
-    // in agglomerating list items into lists.
-    var listsMatch = function(list_data, item_data) {
-        return (
-            list_data.type === item_data.type &&
-            list_data.delimiter === item_data.delimiter &&
-            list_data.bulletChar === item_data.bulletChar
-        );
-    };
-
-    // Finalize and close any unmatched blocks.
-    var closeUnmatchedBlocks = function() {
-        if (!this.allClosed) {
-            // finalize any blocks not matched
-            while (this.oldtip !== this.lastMatchedContainer) {
-                var parent = this.oldtip._parent;
-                this.finalize(this.oldtip, this.lineNumber - 1);
-                this.oldtip = parent;
-            }
-            this.allClosed = true;
-        }
-    };
-
-    // 'finalize' is run when the block is closed.
-    // 'continue' is run to check whether the block is continuing
-    // at a certain line and offset (e.g. whether a block quote
-    // contains a `>`.  It returns 0 for matched, 1 for not matched,
-    // and 2 for "we've dealt with this line completely, go to next."
-    var blocks = {
-        document: {
-            continue: function() {
-                return 0;
-            },
-            finalize: function() {
-                return;
-            },
-            canContain: function(t) {
-                return t !== "item";
-            },
-            acceptsLines: false
-        },
-        list: {
-            continue: function() {
-                return 0;
-            },
-            finalize: function(parser, block) {
-                var item = block._firstChild;
-                while (item) {
-                    // check for non-final list item ending with blank line:
-                    if (endsWithBlankLine(item) && item._next) {
-                        block._listData.tight = false;
-                        break;
-                    }
-                    // recurse into children of list item, to see if there are
-                    // spaces between any of them:
-                    var subitem = item._firstChild;
-                    while (subitem) {
-                        if (
-                            endsWithBlankLine(subitem) &&
-                            (item._next || subitem._next)
-                        ) {
-                            block._listData.tight = false;
-                            break;
-                        }
-                        subitem = subitem._next;
-                    }
-                    item = item._next;
-                }
-            },
-            canContain: function(t) {
-                return t === "item";
-            },
-            acceptsLines: false
-        },
-        block_quote: {
-            continue: function(parser) {
-                var ln = parser.currentLine;
-                if (
-                    !parser.indented &&
-                    peek$1(ln, parser.nextNonspace) === C_GREATERTHAN
-                ) {
-                    parser.advanceNextNonspace();
-                    parser.advanceOffset(1, false);
-                    if (isSpaceOrTab(peek$1(ln, parser.offset))) {
-                        parser.advanceOffset(1, true);
-                    }
-                } else {
-                    return 1;
-                }
-                return 0;
-            },
-            finalize: function() {
-                return;
-            },
-            canContain: function(t) {
-                return t !== "item";
-            },
-            acceptsLines: false
-        },
-        item: {
-            continue: function(parser, container) {
-                if (parser.blank) {
-                    if (container._firstChild == null) {
-                        // Blank line after empty list item
-                        return 1;
-                    } else {
-                        parser.advanceNextNonspace();
-                    }
-                } else if (
-                    parser.indent >=
-                    container._listData.markerOffset + container._listData.padding
-                ) {
-                    parser.advanceOffset(
-                        container._listData.markerOffset +
-                            container._listData.padding,
-                        true
-                    );
-                } else {
-                    return 1;
-                }
-                return 0;
-            },
-            finalize: function() {
-                return;
-            },
-            canContain: function(t) {
-                return t !== "item";
-            },
-            acceptsLines: false
-        },
-        heading: {
-            continue: function() {
-                // a heading can never container > 1 line, so fail to match:
-                return 1;
-            },
-            finalize: function() {
-                return;
-            },
-            canContain: function() {
-                return false;
-            },
-            acceptsLines: false
-        },
-        thematic_break: {
-            continue: function() {
-                // a thematic break can never container > 1 line, so fail to match:
-                return 1;
-            },
-            finalize: function() {
-                return;
-            },
-            canContain: function() {
-                return false;
-            },
-            acceptsLines: false
-        },
-        code_block: {
-            continue: function(parser, container) {
-                var ln = parser.currentLine;
-                var indent = parser.indent;
-                if (container._isFenced) {
-                    // fenced
-                    var match =
-                        indent <= 3 &&
-                        ln.charAt(parser.nextNonspace) === container._fenceChar &&
-                        ln.slice(parser.nextNonspace).match(reClosingCodeFence);
-                    if (match && match[0].length >= container._fenceLength) {
-                        // closing fence - we're at end of line, so we can return
-                        parser.lastLineLength =
-                            parser.offset + indent + match[0].length;
-                        parser.finalize(container, parser.lineNumber);
-                        return 2;
-                    } else {
-                        // skip optional spaces of fence offset
-                        var i = container._fenceOffset;
-                        while (i > 0 && isSpaceOrTab(peek$1(ln, parser.offset))) {
-                            parser.advanceOffset(1, true);
-                            i--;
-                        }
-                    }
-                } else {
-                    // indented
-                    if (indent >= CODE_INDENT) {
-                        parser.advanceOffset(CODE_INDENT, true);
-                    } else if (parser.blank) {
-                        parser.advanceNextNonspace();
-                    } else {
-                        return 1;
-                    }
-                }
-                return 0;
-            },
-            finalize: function(parser, block) {
-                if (block._isFenced) {
-                    // fenced
-                    // first line becomes info string
-                    var content = block._string_content;
-                    var newlinePos = content.indexOf("\n");
-                    var firstLine = content.slice(0, newlinePos);
-                    var rest = content.slice(newlinePos + 1);
-                    block.info = unescapeString(firstLine.trim());
-                    block._literal = rest;
-                } else {
-                    // indented
-                    block._literal = block._string_content.replace(
-                        /(\n *)+$/,
-                        "\n"
-                    );
-                }
-                block._string_content = null; // allow GC
-            },
-            canContain: function() {
-                return false;
-            },
-            acceptsLines: true
-        },
-        html_block: {
-            continue: function(parser, container) {
-                return parser.blank &&
-                    (container._htmlBlockType === 6 ||
-                        container._htmlBlockType === 7)
-                    ? 1
-                    : 0;
-            },
-            finalize: function(parser, block) {
-                block._literal = block._string_content.replace(/(\n *)+$/, "");
-                block._string_content = null; // allow GC
-            },
-            canContain: function() {
-                return false;
-            },
-            acceptsLines: true
-        },
-        paragraph: {
-            continue: function(parser) {
-                return parser.blank ? 1 : 0;
-            },
-            finalize: function(parser, block) {
-                var pos;
-                var hasReferenceDefs = false;
-
-                // try parsing the beginning as link reference definitions:
-                while (
-                    peek$1(block._string_content, 0) === C_OPEN_BRACKET$1 &&
-                    (pos = parser.inlineParser.parseReference(
-                        block._string_content,
-                        parser.refmap
-                    ))
-                ) {
-                    block._string_content = block._string_content.slice(pos);
-                    hasReferenceDefs = true;
-                }
-                if (hasReferenceDefs && isBlank(block._string_content)) {
-                    block.unlink();
-                }
-            },
-            canContain: function() {
-                return false;
-            },
-            acceptsLines: true
-        }
-    };
-
-    // block start functions.  Return values:
-    // 0 = no match
-    // 1 = matched container, keep going
-    // 2 = matched leaf, no more block starts
-    var blockStarts = [
-        // block quote
-        function(parser) {
-            if (
-                !parser.indented &&
-                peek$1(parser.currentLine, parser.nextNonspace) === C_GREATERTHAN
-            ) {
-                parser.advanceNextNonspace();
-                parser.advanceOffset(1, false);
-                // optional following space
-                if (isSpaceOrTab(peek$1(parser.currentLine, parser.offset))) {
-                    parser.advanceOffset(1, true);
-                }
-                parser.closeUnmatchedBlocks();
-                parser.addChild("block_quote", parser.nextNonspace);
-                return 1;
-            } else {
-                return 0;
-            }
-        },
-
-        // ATX heading
-        function(parser) {
-            var match;
-            if (
-                !parser.indented &&
-                (match = parser.currentLine
-                    .slice(parser.nextNonspace)
-                    .match(reATXHeadingMarker))
-            ) {
-                parser.advanceNextNonspace();
-                parser.advanceOffset(match[0].length, false);
-                parser.closeUnmatchedBlocks();
-                var container = parser.addChild("heading", parser.nextNonspace);
-                container.level = match[0].trim().length; // number of #s
-                // remove trailing ###s:
-                container._string_content = parser.currentLine
-                    .slice(parser.offset)
-                    .replace(/^[ \t]*#+[ \t]*$/, "")
-                    .replace(/[ \t]+#+[ \t]*$/, "");
-                parser.advanceOffset(parser.currentLine.length - parser.offset);
-                return 2;
-            } else {
-                return 0;
-            }
-        },
-
-        // Fenced code block
-        function(parser) {
-            var match;
-            if (
-                !parser.indented &&
-                (match = parser.currentLine
-                    .slice(parser.nextNonspace)
-                    .match(reCodeFence))
-            ) {
-                var fenceLength = match[0].length;
-                parser.closeUnmatchedBlocks();
-                var container = parser.addChild("code_block", parser.nextNonspace);
-                container._isFenced = true;
-                container._fenceLength = fenceLength;
-                container._fenceChar = match[0][0];
-                container._fenceOffset = parser.indent;
-                parser.advanceNextNonspace();
-                parser.advanceOffset(fenceLength, false);
-                return 2;
-            } else {
-                return 0;
-            }
-        },
-
-        // HTML block
-        function(parser, container) {
-            if (
-                !parser.indented &&
-                peek$1(parser.currentLine, parser.nextNonspace) === C_LESSTHAN$1
-            ) {
-                var s = parser.currentLine.slice(parser.nextNonspace);
-                var blockType;
-
-                for (blockType = 1; blockType <= 7; blockType++) {
-                    if (
-                        reHtmlBlockOpen[blockType].test(s) &&
-                        (blockType < 7 || (container.type !== "paragraph" &&
-                         !(!parser.allClosed && !parser.blank &&
-                           parser.tip.type === "paragraph") // maybe lazy
-                        ))
-                    ) {
-                        parser.closeUnmatchedBlocks();
-                        // We don't adjust parser.offset;
-                        // spaces are part of the HTML block:
-                        var b = parser.addChild("html_block", parser.offset);
-                        b._htmlBlockType = blockType;
-                        return 2;
-                    }
-                }
-            }
-
-            return 0;
-        },
-
-        // Setext heading
-        function(parser, container) {
-            var match;
-            if (
-                !parser.indented &&
-                container.type === "paragraph" &&
-                (match = parser.currentLine
-                    .slice(parser.nextNonspace)
-                    .match(reSetextHeadingLine))
-            ) {
-                parser.closeUnmatchedBlocks();
-                // resolve reference link definitiosn
-                var pos;
-                while (
-                    peek$1(container._string_content, 0) === C_OPEN_BRACKET$1 &&
-                    (pos = parser.inlineParser.parseReference(
-                        container._string_content,
-                        parser.refmap
-                    ))
-                ) {
-                    container._string_content = container._string_content.slice(
-                        pos
-                    );
-                }
-                if (container._string_content.length > 0) {
-                    var heading = new Node("heading", container.sourcepos);
-                    heading.level = match[0][0] === "=" ? 1 : 2;
-                    heading._string_content = container._string_content;
-                    container.insertAfter(heading);
-                    container.unlink();
-                    parser.tip = heading;
-                    parser.advanceOffset(
-                        parser.currentLine.length - parser.offset,
-                        false
-                    );
-                    return 2;
-                } else {
-                    return 0;
-                }
-            } else {
-                return 0;
-            }
-        },
-
-        // thematic break
-        function(parser) {
-            if (
-                !parser.indented &&
-                reThematicBreak.test(parser.currentLine.slice(parser.nextNonspace))
-            ) {
-                parser.closeUnmatchedBlocks();
-                parser.addChild("thematic_break", parser.nextNonspace);
-                parser.advanceOffset(
-                    parser.currentLine.length - parser.offset,
-                    false
-                );
-                return 2;
-            } else {
-                return 0;
-            }
-        },
-
-        // list item
-        function(parser, container) {
-            var data;
-
-            if (
-                (!parser.indented || container.type === "list") &&
-                (data = parseListMarker(parser, container))
-            ) {
-                parser.closeUnmatchedBlocks();
-
-                // add the list if needed
-                if (
-                    parser.tip.type !== "list" ||
-                    !listsMatch(container._listData, data)
-                ) {
-                    container = parser.addChild("list", parser.nextNonspace);
-                    container._listData = data;
-                }
-
-                // add the list item
-                container = parser.addChild("item", parser.nextNonspace);
-                container._listData = data;
-                return 1;
-            } else {
-                return 0;
-            }
-        },
-
-        // indented code block
-        function(parser) {
-            if (
-                parser.indented &&
-                parser.tip.type !== "paragraph" &&
-                !parser.blank
-            ) {
-                // indented code
-                parser.advanceOffset(CODE_INDENT, true);
-                parser.closeUnmatchedBlocks();
-                parser.addChild("code_block", parser.offset);
-                return 2;
-            } else {
-                return 0;
-            }
-        }
-    ];
-
-    var advanceOffset = function(count, columns) {
-        var currentLine = this.currentLine;
-        var charsToTab, charsToAdvance;
-        var c;
-        while (count > 0 && (c = currentLine[this.offset])) {
-            if (c === "\t") {
-                charsToTab = 4 - (this.column % 4);
-                if (columns) {
-                    this.partiallyConsumedTab = charsToTab > count;
-                    charsToAdvance = charsToTab > count ? count : charsToTab;
-                    this.column += charsToAdvance;
-                    this.offset += this.partiallyConsumedTab ? 0 : 1;
-                    count -= charsToAdvance;
-                } else {
-                    this.partiallyConsumedTab = false;
-                    this.column += charsToTab;
-                    this.offset += 1;
-                    count -= 1;
-                }
-            } else {
-                this.partiallyConsumedTab = false;
-                this.offset += 1;
-                this.column += 1; // assume ascii; block starts are ascii
-                count -= 1;
-            }
-        }
-    };
-
-    var advanceNextNonspace = function() {
-        this.offset = this.nextNonspace;
-        this.column = this.nextNonspaceColumn;
-        this.partiallyConsumedTab = false;
-    };
-
-    var findNextNonspace = function() {
-        var currentLine = this.currentLine;
-        var i = this.offset;
-        var cols = this.column;
-        var c;
-
-        while ((c = currentLine.charAt(i)) !== "") {
-            if (c === " ") {
-                i++;
-                cols++;
-            } else if (c === "\t") {
-                i++;
-                cols += 4 - (cols % 4);
-            } else {
-                break;
-            }
-        }
-        this.blank = c === "\n" || c === "\r" || c === "";
-        this.nextNonspace = i;
-        this.nextNonspaceColumn = cols;
-        this.indent = this.nextNonspaceColumn - this.column;
-        this.indented = this.indent >= CODE_INDENT;
-    };
-
-    // Analyze a line of text and update the document appropriately.
-    // We parse markdown text by calling this on each line of input,
-    // then finalizing the document.
-    var incorporateLine = function(ln) {
-        var all_matched = true;
-        var t;
-
-        var container = this.doc;
-        this.oldtip = this.tip;
-        this.offset = 0;
-        this.column = 0;
-        this.blank = false;
-        this.partiallyConsumedTab = false;
-        this.lineNumber += 1;
-
-        // replace NUL characters for security
-        if (ln.indexOf("\u0000") !== -1) {
-            ln = ln.replace(/\0/g, "\uFFFD");
-        }
-
-        this.currentLine = ln;
-
-        // For each containing block, try to parse the associated line start.
-        // Bail out on failure: container will point to the last matching block.
-        // Set all_matched to false if not all containers match.
-        var lastChild;
-        while ((lastChild = container._lastChild) && lastChild._open) {
-            container = lastChild;
-
-            this.findNextNonspace();
-
-            switch (this.blocks[container.type].continue(this, container)) {
-                case 0: // we've matched, keep going
-                    break;
-                case 1: // we've failed to match a block
-                    all_matched = false;
-                    break;
-                case 2: // we've hit end of line for fenced code close and can return
-                    return;
-                default:
-                    throw "continue returned illegal value, must be 0, 1, or 2";
-            }
-            if (!all_matched) {
-                container = container._parent; // back up to last matching block
-                break;
-            }
-        }
-
-        this.allClosed = container === this.oldtip;
-        this.lastMatchedContainer = container;
-
-        var matchedLeaf =
-            container.type !== "paragraph" && blocks[container.type].acceptsLines;
-        var starts = this.blockStarts;
-        var startsLen = starts.length;
-        // Unless last matched container is a code block, try new container starts,
-        // adding children to the last matched container:
-        while (!matchedLeaf) {
-            this.findNextNonspace();
-
-            // this is a little performance optimization:
-            if (
-                !this.indented &&
-                !reMaybeSpecial.test(ln.slice(this.nextNonspace))
-            ) {
-                this.advanceNextNonspace();
-                break;
-            }
-
-            var i = 0;
-            while (i < startsLen) {
-                var res = starts[i](this, container);
-                if (res === 1) {
-                    container = this.tip;
-                    break;
-                } else if (res === 2) {
-                    container = this.tip;
-                    matchedLeaf = true;
-                    break;
-                } else {
-                    i++;
-                }
-            }
-
-            if (i === startsLen) {
-                // nothing matched
-                this.advanceNextNonspace();
-                break;
-            }
-        }
-
-        // What remains at the offset is a text line.  Add the text to the
-        // appropriate container.
-
-        // First check for a lazy paragraph continuation:
-        if (!this.allClosed && !this.blank && this.tip.type === "paragraph") {
-            // lazy paragraph continuation
-            this.addLine();
-        } else {
-            // not a lazy continuation
-
-            // finalize any blocks not matched
-            this.closeUnmatchedBlocks();
-            if (this.blank && container.lastChild) {
-                container.lastChild._lastLineBlank = true;
-            }
-
-            t = container.type;
-
-            // Block quote lines are never blank as they start with >
-            // and we don't count blanks in fenced code for purposes of tight/loose
-            // lists or breaking out of lists.  We also don't set _lastLineBlank
-            // on an empty list item, or if we just closed a fenced block.
-            var lastLineBlank =
-                this.blank &&
-                !(
-                    t === "block_quote" ||
-                    (t === "code_block" && container._isFenced) ||
-                    (t === "item" &&
-                        !container._firstChild &&
-                        container.sourcepos[0][0] === this.lineNumber)
-                );
-
-            // propagate lastLineBlank up through parents:
-            var cont = container;
-            while (cont) {
-                cont._lastLineBlank = lastLineBlank;
-                cont = cont._parent;
-            }
-
-            if (this.blocks[t].acceptsLines) {
-                this.addLine();
-                // if HtmlBlock, check for end condition
-                if (
-                    t === "html_block" &&
-                    container._htmlBlockType >= 1 &&
-                    container._htmlBlockType <= 5 &&
-                    reHtmlBlockClose[container._htmlBlockType].test(
-                        this.currentLine.slice(this.offset)
-                    )
-                ) {
-                    this.lastLineLength = ln.length;
-                    this.finalize(container, this.lineNumber);
-                }
-            } else if (this.offset < ln.length && !this.blank) {
-                // create paragraph container for line
-                container = this.addChild("paragraph", this.offset);
-                this.advanceNextNonspace();
-                this.addLine();
-            }
-        }
-        this.lastLineLength = ln.length;
-    };
-
-    // Finalize a block.  Close it and do any necessary postprocessing,
-    // e.g. creating string_content from strings, setting the 'tight'
-    // or 'loose' status of a list, and parsing the beginnings
-    // of paragraphs for reference definitions.  Reset the tip to the
-    // parent of the closed block.
-    var finalize = function(block, lineNumber) {
-        var above = block._parent;
-        block._open = false;
-        block.sourcepos[1] = [lineNumber, this.lastLineLength];
-
-        this.blocks[block.type].finalize(this, block);
-
-        this.tip = above;
-    };
-
-    // Walk through a block & children recursively, parsing string content
-    // into inline content where appropriate.
-    var processInlines = function(block) {
-        var node, event, t;
-        var walker = block.walker();
-        this.inlineParser.refmap = this.refmap;
-        this.inlineParser.options = this.options;
-        while ((event = walker.next())) {
-            node = event.node;
-            t = node.type;
-            if (!event.entering && (t === "paragraph" || t === "heading")) {
-                this.inlineParser.parse(node);
-            }
-        }
-    };
-
-    var Document = function() {
-        var doc = new Node("document", [
-            [1, 1],
-            [0, 0]
-        ]);
-        return doc;
-    };
-
-    // The main parsing function.  Returns a parsed document AST.
-    var parse = function(input) {
-        this.doc = new Document();
-        this.tip = this.doc;
-        this.refmap = {};
-        this.lineNumber = 0;
-        this.lastLineLength = 0;
-        this.offset = 0;
-        this.column = 0;
-        this.lastMatchedContainer = this.doc;
-        this.currentLine = "";
-        if (this.options.time) {
-            console.time("preparing input");
-        }
-        var lines = input.split(reLineEnding);
-        var len = lines.length;
-        if (input.charCodeAt(input.length - 1) === C_NEWLINE$1) {
-            // ignore last blank line created by final newline
-            len -= 1;
-        }
-        if (this.options.time) {
-            console.timeEnd("preparing input");
-        }
-        if (this.options.time) {
-            console.time("block parsing");
-        }
-        for (var i = 0; i < len; i++) {
-            this.incorporateLine(lines[i]);
-        }
-        while (this.tip) {
-            this.finalize(this.tip, len);
-        }
-        if (this.options.time) {
-            console.timeEnd("block parsing");
-        }
-        if (this.options.time) {
-            console.time("inline parsing");
-        }
-        this.processInlines(this.doc);
-        if (this.options.time) {
-            console.timeEnd("inline parsing");
-        }
-        return this.doc;
-    };
-
-    // The Parser object.
-    function Parser(options) {
-        return {
-            doc: new Document(),
-            blocks: blocks,
-            blockStarts: blockStarts,
-            tip: this.doc,
-            oldtip: this.doc,
-            currentLine: "",
-            lineNumber: 0,
-            offset: 0,
-            column: 0,
-            nextNonspace: 0,
-            nextNonspaceColumn: 0,
-            indent: 0,
-            indented: false,
-            blank: false,
-            partiallyConsumedTab: false,
-            allClosed: true,
-            lastMatchedContainer: this.doc,
-            refmap: {},
-            lastLineLength: 0,
-            inlineParser: new InlineParser(options),
-            findNextNonspace: findNextNonspace,
-            advanceOffset: advanceOffset,
-            advanceNextNonspace: advanceNextNonspace,
-            addLine: addLine,
-            addChild: addChild,
-            incorporateLine: incorporateLine,
-            finalize: finalize,
-            processInlines: processInlines,
-            closeUnmatchedBlocks: closeUnmatchedBlocks,
-            parse: parse,
-            options: options || {}
-        };
-    }
-
-    function Renderer() {}
-
-    /**
-     *  Walks the AST and calls member methods for each Node type.
-     *
-     *  @param ast {Node} The root of the abstract syntax tree.
-     */
-    function render(ast) {
-        var walker = ast.walker(),
-            event,
-            type;
-
-        this.buffer = "";
-        this.lastOut = "\n";
-        this.heading_count = 0;
-
-        while ((event = walker.next())) {
-            type = event.node.type;
-            if (this[type]) {
-                this[type](event.node, event.entering);
-            }
-        }
-        return this.buffer;
-    }
-
-    /**
-     *  Concatenate a literal string to the buffer.
-     *
-     *  @param str {String} The string to concatenate.
-     */
-    function lit(str) {
-        this.buffer += str;
-        this.lastOut = str;
-    }
-
-    /**
-     *  Output a newline to the buffer.
-     */
-    function cr() {
-        if (this.lastOut !== "\n") {
-            this.lit("\n");
-        }
-    }
-
-    /**
-     *  Concatenate a string to the buffer possibly escaping the content.
-     *
-     *  Concrete renderer implementations should override this method.
-     *
-     *  @param str {String} The string to concatenate.
-     */
-    function out(str) {
-        this.lit(str);
-    }
-
-    /**
-     *  Escape a string for the target renderer.
-     *
-     *  Abstract function that should be implemented by concrete
-     *  renderer implementations.
-     *
-     *  @param str {String} The string to escape.
-     */
-    function esc(str) {
-        return str;
-    }
-
-    Renderer.prototype.render = render;
-    Renderer.prototype.out = out;
-    Renderer.prototype.lit = lit;
-    Renderer.prototype.cr = cr;
-    Renderer.prototype.esc = esc;
-
-    var reUnsafeProtocol = /^javascript:|vbscript:|file:|data:/i;
-    var reSafeDataProtocol = /^data:image\/(?:png|gif|jpeg|webp)/i;
-
-    var potentiallyUnsafe = function(url) {
-        return reUnsafeProtocol.test(url) && !reSafeDataProtocol.test(url);
-    };
-
-    // Helper function to produce an HTML tag.
-    function tag(name, attrs, selfclosing) {
-        if (this.disableTags > 0) {
-            return;
-        }
-        this.buffer += "<" + name;
-        if (attrs && attrs.length > 0) {
-            var i = 0;
-            var attrib;
-            while ((attrib = attrs[i]) !== undefined) {
-                this.buffer += " " + attrib[0] + '="' + attrib[1] + '"';
-                i++;
-            }
-        }
-        if (selfclosing) {
-            this.buffer += " /";
-        }
-        this.buffer += ">";
-        this.lastOut = ">";
-    }
-
-    function HtmlRenderer(options) {
-        options = options || {};
-        // by default, soft breaks are rendered as newlines in HTML
-        options.softbreak = options.softbreak || "\n";
-        // set to "<br />" to make them hard breaks
-        // set to " " if you want to ignore line wrapping in source
-        this.esc = options.esc || escapeXml;
-        // escape html with a custom function
-        // else use escapeXml
-
-        this.disableTags = 0;
-        this.lastOut = "\n";
-        this.options = options;
-    }
-
-    /* Node methods */
-
-    function text$1(node) {
-        this.out(node.literal);
-    }
-
-    function softbreak() {
-        this.lit(this.options.softbreak);
-    }
-
-    function linebreak() {
-        this.tag("br", [], true);
-        this.cr();
-    }
-
-    function link(node, entering) {
-        var attrs = this.attrs(node);
-        if (entering) {
-            if (!(this.options.safe && potentiallyUnsafe(node.destination))) {
-                attrs.push(["href", this.esc(node.destination)]);
-            }
-            if (node.title) {
-                attrs.push(["title", this.esc(node.title)]);
-            }
-            this.tag("a", attrs);
-        } else {
-            this.tag("/a");
-        }
-    }
-
-    function image$1(node, entering) {
-        if (entering) {
-            if (this.disableTags === 0) {
-                if (this.options.safe && potentiallyUnsafe(node.destination)) {
-                    this.lit('<img src="" alt="');
-                } else {
-                    this.lit('<img src="' + this.esc(node.destination) + '" alt="');
-                }
-            }
-            this.disableTags += 1;
-        } else {
-            this.disableTags -= 1;
-            if (this.disableTags === 0) {
-                if (node.title) {
-                    this.lit('" title="' + this.esc(node.title));
-                }
-                this.lit('" />');
-            }
-        }
-    }
-
-    function emph(node, entering) {
-        this.tag(entering ? "em" : "/em");
-    }
-
-    function strong(node, entering) {
-        this.tag(entering ? "strong" : "/strong");
-    }
-
-    function paragraph(node, entering) {
-        var grandparent = node.parent.parent,
-            attrs = this.attrs(node);
-        if (grandparent !== null && grandparent.type === "list") {
-            if (grandparent.listTight) {
-                return;
-            }
-        }
-        if (entering) {
-            this.cr();
-            this.tag("p", attrs);
-        } else {
-            this.tag("/p");
-            this.cr();
-        }
-    }
-
-    function heading(node, entering) {
-        var tagname = "h" + node.level,
-            attrs = this.attrs(node);
-        if (entering) {
-            if (node.level != 1) {
-                attrs.push(["id", ":" + this.heading_count]);
-                this.heading_count += 1;
-            }
-            this.cr();
-            this.tag(tagname, attrs);
-        } else {
-            this.tag("/" + tagname);
-            this.cr();
-        }
-    }
-
-    function code(node) {
-        this.tag("code");
-        this.out(node.literal);
-        this.tag("/code");
-    }
-
-    function code_block(node) {
-        var info_words = node.info ? node.info.split(/\s+/) : [],
-            attrs = this.attrs(node);
-        if (info_words.length > 0 && info_words[0].length > 0) {
-            attrs.push(["class", "language-" + this.esc(info_words[0])]);
-        }
-        this.cr();
-        this.tag("pre");
-        this.tag("code", attrs);
-        this.out(node.literal);
-        this.tag("/code");
-        this.tag("/pre");
-        this.cr();
-    }
-
-    function thematic_break(node) {
-        var attrs = this.attrs(node);
-        this.cr();
-        this.tag("hr", attrs, true);
-        this.cr();
-    }
-
-    function block_quote(node, entering) {
-        var attrs = this.attrs(node);
-        if (entering) {
-            this.cr();
-            this.tag("blockquote", attrs);
-            this.cr();
-        } else {
-            this.cr();
-            this.tag("/blockquote");
-            this.cr();
-        }
-    }
-
-    function list(node, entering) {
-        var tagname = node.listType === "bullet" ? "ul" : "ol",
-            attrs = this.attrs(node);
-
-        if (entering) {
-            var start = node.listStart;
-            if (start !== null && start !== 1) {
-                attrs.push(["start", start.toString()]);
-            }
-            this.cr();
-            this.tag(tagname, attrs);
-            this.cr();
-        } else {
-            this.cr();
-            this.tag("/" + tagname);
-            this.cr();
-        }
-    }
-
-    function item(node, entering) {
-        var attrs = this.attrs(node);
-        if (entering) {
-            this.tag("li", attrs);
-        } else {
-            this.tag("/li");
-            this.cr();
-        }
-    }
-
-    function html_inline(node) {
-        if (this.options.safe) {
-            this.lit("<!-- raw HTML omitted -->");
-        } else {
-            this.lit(node.literal);
-        }
-    }
-
-    function html_block(node) {
-        this.cr();
-        if (this.options.safe) {
-            this.lit("<!-- raw HTML omitted -->");
-        } else {
-            this.lit(node.literal);
-        }
-        this.cr();
-    }
-
-    function custom_inline(node, entering) {
-        if (entering && node.onEnter) {
-            this.lit(node.onEnter);
-        } else if (!entering && node.onExit) {
-            this.lit(node.onExit);
-        }
-    }
-
-    function custom_block(node, entering) {
-        this.cr();
-        if (entering && node.onEnter) {
-            this.lit(node.onEnter);
-        } else if (!entering && node.onExit) {
-            this.lit(node.onExit);
-        }
-        this.cr();
-    }
-
-    /* Helper methods */
-
-    function out$1(s) {
-        this.lit(this.esc(s));
-    }
-
-    function attrs(node) {
-        var att = [];
-        if (this.options.sourcepos) {
-            var pos = node.sourcepos;
-            if (pos) {
-                att.push([
-                    "data-sourcepos",
-                    String(pos[0][0]) +
-                        ":" +
-                        String(pos[0][1]) +
-                        "-" +
-                        String(pos[1][0]) +
-                        ":" +
-                        String(pos[1][1])
-                ]);
-            }
-        }
-        return att;
-    }
-
-    // quick browser-compatible inheritance
-    HtmlRenderer.prototype = Object.create(Renderer.prototype);
-
-    HtmlRenderer.prototype.text = text$1;
-    HtmlRenderer.prototype.html_inline = html_inline;
-    HtmlRenderer.prototype.html_block = html_block;
-    HtmlRenderer.prototype.softbreak = softbreak;
-    HtmlRenderer.prototype.linebreak = linebreak;
-    HtmlRenderer.prototype.link = link;
-    HtmlRenderer.prototype.image = image$1;
-    HtmlRenderer.prototype.emph = emph;
-    HtmlRenderer.prototype.strong = strong;
-    HtmlRenderer.prototype.paragraph = paragraph;
-    HtmlRenderer.prototype.heading = heading;
-    HtmlRenderer.prototype.code = code;
-    HtmlRenderer.prototype.code_block = code_block;
-    HtmlRenderer.prototype.thematic_break = thematic_break;
-    HtmlRenderer.prototype.block_quote = block_quote;
-    HtmlRenderer.prototype.list = list;
-    HtmlRenderer.prototype.item = item;
-    HtmlRenderer.prototype.custom_inline = custom_inline;
-    HtmlRenderer.prototype.custom_block = custom_block;
-
-    HtmlRenderer.prototype.esc = escapeXml;
-
-    HtmlRenderer.prototype.out = out$1;
-    HtmlRenderer.prototype.tag = tag;
-    HtmlRenderer.prototype.attrs = attrs;
-
-    var reXMLTag = /\<[^>]*\>/;
-
-    function toTagName(s) {
-        return s.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase();
-    }
-
-    function XmlRenderer(options) {
-        options = options || {};
-
-        this.disableTags = 0;
-        this.lastOut = "\n";
-
-        this.indentLevel = 0;
-        this.indent = "  ";
-        
-        this.esc = options.esc || escapeXml;
-        // escape html with a custom function
-        // else use escapeXml
-
-        this.options = options;
-    }
-
-    function render$1(ast) {
-        this.buffer = "";
-
-        var attrs;
-        var tagname;
-        var walker = ast.walker();
-        var event, node, entering;
-        var container;
-        var selfClosing;
-        var nodetype;
-
-        var options = this.options;
-
-        if (options.time) {
-            console.time("rendering");
-        }
-
-        this.buffer += '<?xml version="1.0" encoding="UTF-8"?>\n';
-        this.buffer += '<!DOCTYPE document SYSTEM "CommonMark.dtd">\n';
-
-        while ((event = walker.next())) {
-            entering = event.entering;
-            node = event.node;
-            nodetype = node.type;
-
-            container = node.isContainer;
-
-            selfClosing =
-                nodetype === "thematic_break" ||
-                nodetype === "linebreak" ||
-                nodetype === "softbreak";
-
-            tagname = toTagName(nodetype);
-
-            if (entering) {
-                attrs = [];
-
-                switch (nodetype) {
-                    case "document":
-                        attrs.push(["xmlns", "http://commonmark.org/xml/1.0"]);
-                        break;
-                    case "list":
-                        if (node.listType !== null) {
-                            attrs.push(["type", node.listType.toLowerCase()]);
-                        }
-                        if (node.listStart !== null) {
-                            attrs.push(["start", String(node.listStart)]);
-                        }
-                        if (node.listTight !== null) {
-                            attrs.push([
-                                "tight",
-                                node.listTight ? "true" : "false"
-                            ]);
-                        }
-                        var delim = node.listDelimiter;
-                        if (delim !== null) {
-                            var delimword = "";
-                            if (delim === ".") {
-                                delimword = "period";
-                            } else {
-                                delimword = "paren";
-                            }
-                            attrs.push(["delimiter", delimword]);
-                        }
-                        break;
-                    case "code_block":
-                        if (node.info) {
-                            attrs.push(["info", node.info]);
-                        }
-                        break;
-                    case "heading":
-                        attrs.push(["level", String(node.level)]);
-                        break;
-                    case "link":
-                    case "image":
-                        attrs.push(["destination", node.destination]);
-                        attrs.push(["title", node.title]);
-                        break;
-                    case "custom_inline":
-                    case "custom_block":
-                        attrs.push(["on_enter", node.onEnter]);
-                        attrs.push(["on_exit", node.onExit]);
-                        break;
-                }
-                if (options.sourcepos) {
-                    var pos = node.sourcepos;
-                    if (pos) {
-                        attrs.push([
-                            "sourcepos",
-                            String(pos[0][0]) +
-                                ":" +
-                                String(pos[0][1]) +
-                                "-" +
-                                String(pos[1][0]) +
-                                ":" +
-                                String(pos[1][1])
-                        ]);
-                    }
-                }
-
-                this.cr();
-                this.out(this.tag(tagname, attrs, selfClosing));
-                if (container) {
-                    this.indentLevel += 1;
-                } else if (!container && !selfClosing) {
-                    var lit = node.literal;
-                    if (lit) {
-                        this.out(this.esc(lit));
-                    }
-                    this.out(this.tag("/" + tagname));
-                }
-            } else {
-                this.indentLevel -= 1;
-                this.cr();
-                this.out(this.tag("/" + tagname));
-            }
-        }
-        if (options.time) {
-            console.timeEnd("rendering");
-        }
-        this.buffer += "\n";
-        return this.buffer;
-    }
-
-    function out$2(s) {
-        if (this.disableTags > 0) {
-            this.buffer += s.replace(reXMLTag, "");
-        } else {
-            this.buffer += s;
-        }
-        this.lastOut = s;
-    }
-
-    function cr$1() {
-        if (this.lastOut !== "\n") {
-            this.buffer += "\n";
-            this.lastOut = "\n";
-            for (var i = this.indentLevel; i > 0; i--) {
-                this.buffer += this.indent;
-            }
-        }
-    }
-
-    // Helper function to produce an XML tag.
-    function tag$1(name, attrs, selfclosing) {
-        var result = "<" + name;
-        if (attrs && attrs.length > 0) {
-            var i = 0;
-            var attrib;
-            while ((attrib = attrs[i]) !== undefined) {
-                result += " " + attrib[0] + '="' + this.esc(attrib[1]) + '"';
-                i++;
-            }
-        }
-        if (selfclosing) {
-            result += " /";
-        }
-        result += ">";
-        return result;
-    }
-
-    // quick browser-compatible inheritance
-    XmlRenderer.prototype = Object.create(Renderer.prototype);
-
-    XmlRenderer.prototype.render = render$1;
-    XmlRenderer.prototype.out = out$2;
-    XmlRenderer.prototype.cr = cr$1;
-    XmlRenderer.prototype.tag = tag$1;
-    XmlRenderer.prototype.esc = escapeXml;
-
-    exports.HtmlRenderer = HtmlRenderer;
-    exports.Node = Node;
-    exports.Parser = Parser;
-    exports.Renderer = Renderer;
-    exports.XmlRenderer = XmlRenderer;
-
-    Object.defineProperty(exports, '__esModule', { value: true });
-
-})));
lib/docs/ziglexer.js
@@ -1,2147 +0,0 @@
-'use strict';
-
-const Tag = {
-    whitespace: "whitespace",
-    invalid: "invalid",
-    identifier: "identifier",
-    string_literal: "string_literal",
-    multiline_string_literal_line: "multiline_string_literal_line",
-    char_literal: "char_literal",
-    eof: "eof",
-    builtin: "builtin",
-    number_literal: "number_literal",
-    doc_comment: "doc_comment",
-    container_doc_comment: "container_doc_comment",
-    line_comment: "line_comment",
-    invalid_periodasterisks: "invalid_periodasterisks",
-    bang: "bang",
-    pipe: "pipe",
-    pipe_pipe: "pipe_pipe",
-    pipe_equal: "pipe_equal",
-    equal: "equal",
-    equal_equal: "equal_equal",
-    equal_angle_bracket_right: "equal_angle_bracket_right",
-    bang_equal: "bang_equal",
-    l_paren: "l_paren",
-    r_paren: "r_paren",
-    semicolon: "semicolon",
-    percent: "percent",
-    percent_equal: "percent_equal",
-    l_brace: "l_brace",
-    r_brace: "r_brace",
-    l_bracket: "l_bracket",
-    r_bracket: "r_bracket",
-    period: "period",
-    period_asterisk: "period_asterisk",
-    ellipsis2: "ellipsis2",
-    ellipsis3: "ellipsis3",
-    caret: "caret",
-    caret_equal: "caret_equal",
-    plus: "plus",
-    plus_plus: "plus_plus",
-    plus_equal: "plus_equal",
-    plus_percent: "plus_percent",
-    plus_percent_equal: "plus_percent_equal",
-    plus_pipe: "plus_pipe",
-    plus_pipe_equal: "plus_pipe_equal",
-    minus: "minus",
-    minus_equal: "minus_equal",
-    minus_percent: "minus_percent",
-    minus_percent_equal: "minus_percent_equal",
-    minus_pipe: "minus_pipe",
-    minus_pipe_equal: "minus_pipe_equal",
-    asterisk: "asterisk",
-    asterisk_equal: "asterisk_equal",
-    asterisk_asterisk: "asterisk_asterisk",
-    asterisk_percent: "asterisk_percent",
-    asterisk_percent_equal: "asterisk_percent_equal",
-    asterisk_pipe: "asterisk_pipe",
-    asterisk_pipe_equal: "asterisk_pipe_equal",
-    arrow: "arrow",
-    colon: "colon",
-    slash: "slash",
-    slash_equal: "slash_equal",
-    comma: "comma",
-    ampersand: "ampersand",
-    ampersand_equal: "ampersand_equal",
-    question_mark: "question_mark",
-    angle_bracket_left: "angle_bracket_left",
-    angle_bracket_left_equal: "angle_bracket_left_equal",
-    angle_bracket_angle_bracket_left: "angle_bracket_angle_bracket_left",
-    angle_bracket_angle_bracket_left_equal: "angle_bracket_angle_bracket_left_equal",
-    angle_bracket_angle_bracket_left_pipe: "angle_bracket_angle_bracket_left_pipe",
-    angle_bracket_angle_bracket_left_pipe_equal: "angle_bracket_angle_bracket_left_pipe_equal",
-    angle_bracket_right: "angle_bracket_right",
-    angle_bracket_right_equal: "angle_bracket_right_equal",
-    angle_bracket_angle_bracket_right: "angle_bracket_angle_bracket_right",
-    angle_bracket_angle_bracket_right_equal: "angle_bracket_angle_bracket_right_equal",
-    tilde: "tilde",
-    keyword_addrspace: "keyword_addrspace",
-    keyword_align: "keyword_align",
-    keyword_allowzero: "keyword_allowzero",
-    keyword_and: "keyword_and",
-    keyword_anyframe: "keyword_anyframe",
-    keyword_anytype: "keyword_anytype",
-    keyword_asm: "keyword_asm",
-    keyword_async: "keyword_async",
-    keyword_await: "keyword_await",
-    keyword_break: "keyword_break",
-    keyword_callconv: "keyword_callconv",
-    keyword_catch: "keyword_catch",
-    keyword_comptime: "keyword_comptime",
-    keyword_const: "keyword_const",
-    keyword_continue: "keyword_continue",
-    keyword_defer: "keyword_defer",
-    keyword_else: "keyword_else",
-    keyword_enum: "keyword_enum",
-    keyword_errdefer: "keyword_errdefer",
-    keyword_error: "keyword_error",
-    keyword_export: "keyword_export",
-    keyword_extern: "keyword_extern",
-    keyword_fn: "keyword_fn",
-    keyword_for: "keyword_for",
-    keyword_if: "keyword_if",
-    keyword_inline: "keyword_inline",
-    keyword_noalias: "keyword_noalias",
-    keyword_noinline: "keyword_noinline",
-    keyword_nosuspend: "keyword_nosuspend",
-    keyword_opaque: "keyword_opaque",
-    keyword_or: "keyword_or",
-    keyword_orelse: "keyword_orelse",
-    keyword_packed: "keyword_packed",
-    keyword_pub: "keyword_pub",
-    keyword_resume: "keyword_resume",
-    keyword_return: "keyword_return",
-    keyword_linksection: "keyword_linksection",
-    keyword_struct: "keyword_struct",
-    keyword_suspend: "keyword_suspend",
-    keyword_switch: "keyword_switch",
-    keyword_test: "keyword_test",
-    keyword_threadlocal: "keyword_threadlocal",
-    keyword_try: "keyword_try",
-    keyword_union: "keyword_union",
-    keyword_unreachable: "keyword_unreachable",
-    keyword_usingnamespace: "keyword_usingnamespace",
-    keyword_var: "keyword_var",
-    keyword_volatile: "keyword_volatile",
-    keyword_while: "keyword_while"
-}
-
-const Tok = {
-    const: { src: "const", tag: Tag.keyword_const },
-    var: { src: "var", tag: Tag.keyword_var },
-    colon: { src: ":", tag: Tag.colon },
-    eql: { src: "=", tag: Tag.equals },
-    space: { src: " ", tag: Tag.whitespace },
-    tab: { src: "    ", tag: Tag.whitespace },
-    enter: { src: "\n", tag: Tag.whitespace },
-    semi: { src: ";", tag: Tag.semicolon },
-    l_bracket: { src: "[", tag: Tag.l_bracket },
-    r_bracket: { src: "]", tag: Tag.r_bracket },
-    l_brace: { src: "{", tag: Tag.l_brace },
-    r_brace: { src: "}", tag: Tag.r_brace },
-    l_paren: { src: "(", tag: Tag.l_paren },
-    r_paren: { src: ")", tag: Tag.r_paren },
-    period: { src: ".", tag: Tag.period },
-    comma: { src: ",", tag: Tag.comma },
-    question_mark: { src: "?", tag: Tag.question_mark },
-    asterisk: { src: "*", tag: Tag.asterisk },
-    identifier: (name) => { return { src: name, tag: Tag.identifier } },
-};
-
-
-const State = {
-    start: 0,
-    identifier: 1,
-    builtin: 2,
-    string_literal: 3,
-    string_literal_backslash: 4,
-    multiline_string_literal_line: 5,
-    char_literal: 6,
-    char_literal_backslash: 7,
-    char_literal_hex_escape: 8,
-    char_literal_unicode_escape_saw_u: 9,
-    char_literal_unicode_escape: 10,
-    char_literal_unicode_invalid: 11,
-    char_literal_unicode: 12,
-    char_literal_end: 13,
-    backslash: 14,
-    equal: 15,
-    bang: 16,
-    pipe: 17,
-    minus: 18,
-    minus_percent: 19,
-    minus_pipe: 20,
-    asterisk: 21,
-    asterisk_percent: 22,
-    asterisk_pipe: 23,
-    slash: 24,
-    line_comment_start: 25,
-    line_comment: 26,
-    doc_comment_start: 27,
-    doc_comment: 28,
-    int: 29,
-    int_exponent: 30,
-    int_period: 31,
-    float: 32,
-    float_exponent: 33,
-    ampersand: 34,
-    caret: 35,
-    percent: 36,
-    plus: 37,
-    plus_percent: 38,
-    plus_pipe: 39,
-    angle_bracket_left: 40,
-    angle_bracket_angle_bracket_left: 41,
-    angle_bracket_angle_bracket_left_pipe: 42,
-    angle_bracket_right: 43,
-    angle_bracket_angle_bracket_right: 44,
-    period: 45,
-    period_2: 46,
-    period_asterisk: 47,
-    saw_at_sign: 48,
-    whitespace: 49,
-}
-
-const keywords = {
-    "addrspace": Tag.keyword_addrspace,
-    "align": Tag.keyword_align,
-    "allowzero": Tag.keyword_allowzero,
-    "and": Tag.keyword_and,
-    "anyframe": Tag.keyword_anyframe,
-    "anytype": Tag.keyword_anytype,
-    "asm": Tag.keyword_asm,
-    "async": Tag.keyword_async,
-    "await": Tag.keyword_await,
-    "break": Tag.keyword_break,
-    "callconv": Tag.keyword_callconv,
-    "catch": Tag.keyword_catch,
-    "comptime": Tag.keyword_comptime,
-    "const": Tag.keyword_const,
-    "continue": Tag.keyword_continue,
-    "defer": Tag.keyword_defer,
-    "else": Tag.keyword_else,
-    "enum": Tag.keyword_enum,
-    "errdefer": Tag.keyword_errdefer,
-    "error": Tag.keyword_error,
-    "export": Tag.keyword_export,
-    "extern": Tag.keyword_extern,
-    "fn": Tag.keyword_fn,
-    "for": Tag.keyword_for,
-    "if": Tag.keyword_if,
-    "inline": Tag.keyword_inline,
-    "noalias": Tag.keyword_noalias,
-    "noinline": Tag.keyword_noinline,
-    "nosuspend": Tag.keyword_nosuspend,
-    "opaque": Tag.keyword_opaque,
-    "or": Tag.keyword_or,
-    "orelse": Tag.keyword_orelse,
-    "packed": Tag.keyword_packed,
-    "pub": Tag.keyword_pub,
-    "resume": Tag.keyword_resume,
-    "return": Tag.keyword_return,
-    "linksection": Tag.keyword_linksection,
-    "struct": Tag.keyword_struct,
-    "suspend": Tag.keyword_suspend,
-    "switch": Tag.keyword_switch,
-    "test": Tag.keyword_test,
-    "threadlocal": Tag.keyword_threadlocal,
-    "try": Tag.keyword_try,
-    "union": Tag.keyword_union,
-    "unreachable": Tag.keyword_unreachable,
-    "usingnamespace": Tag.keyword_usingnamespace,
-    "var": Tag.keyword_var,
-    "volatile": Tag.keyword_volatile,
-    "while": Tag.keyword_while,
-};
-
-function make_token(tag, start, end) {
-    return {
-        tag: tag,
-        loc: {
-            start: start,
-            end: end
-        }
-    }
-
-}
-
-function dump_tokens(tokens, raw_source) {
-
-    //TODO: this is not very fast
-    function find_tag_key(tag) {
-        for (const [key, value] of Object.entries(Tag)) {
-            if (value == tag) return key;
-        }
-    }
-
-    for (let i = 0; i < tokens.length; i++) {
-        const tok = tokens[i];
-        const z = raw_source.substring(tok.loc.start, tok.loc.end).toLowerCase();
-        console.log(`${find_tag_key(tok.tag)} "${tok.tag}" '${z}'`)
-    }
-}
-
-function* Tokenizer(raw_source) {
-    let tokenizer = new InnerTokenizer(raw_source);
-    while (true) {
-        let t = tokenizer.next(); 
-        if (t.tag == Tag.eof) 
-            return;
-        
-        t.src = raw_source.slice(t.loc.start, t.loc.end);
-        
-        yield t;
-    }
-
-}
-function InnerTokenizer(raw_source) {
-    this.index = 0;
-    this.flag = false;
-
-    this.seen_escape_digits = undefined;
-    this.remaining_code_units = undefined;
-
-    this.next = () => {
-        let state = State.start;
-
-        var result = {
-            tag: -1,
-            loc: {
-                start: this.index,
-                end: undefined,
-            },
-            src: undefined,
-        };
-
-        //having a while (true) loop seems like a bad idea the loop should never
-        //take more iterations than twice the length of the source code
-        const MAX_ITERATIONS = raw_source.length * 2;
-        let iterations = 0;
-
-        while (iterations <= MAX_ITERATIONS) {
-
-            if (this.flag) {
-                return make_token(Tag.eof, this.index - 2, this.index - 2);
-            }
-            iterations += 1; // avoid death loops
-
-            var c = raw_source[this.index];
-
-            if (c === undefined) {
-                c = ' '; // push the last token
-                this.flag = true;
-            }
-
-            switch (state) {
-                case State.start:
-                    switch (c) {
-                        case 0: {
-                            if (this.index != raw_source.length) {
-                                result.tag = Tag.invalid;
-                                result.loc.start = this.index;
-                                this.index += 1;
-                                result.loc.end = this.index;
-                                return result;
-                            }
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                        case ' ':
-                        case '\n':
-                        case '\t':
-                        case '\r': {
-                            state = State.whitespace;
-                            result.tag = Tag.whitespace;
-                            result.loc.start = this.index;
-                            break;
-                        }
-                        case '"': {
-                            state = State.string_literal;
-                            result.tag = Tag.string_literal;
-                            break;
-                        }
-                        case '\'': {
-                            state = State.char_literal;
-                            break;
-                        }
-                        case 'a':
-                        case 'b':
-                        case 'c':
-                        case 'd':
-                        case 'e':
-                        case 'f':
-                        case 'g':
-                        case 'h':
-                        case 'i':
-                        case 'j':
-                        case 'k':
-                        case 'l':
-                        case 'm':
-                        case 'n':
-                        case 'o':
-                        case 'p':
-                        case 'q':
-                        case 'r':
-                        case 's':
-                        case 't':
-                        case 'u':
-                        case 'v':
-                        case 'w':
-                        case 'x':
-                        case 'y':
-                        case 'z':
-                        case 'A':
-                        case 'B':
-                        case 'C':
-                        case 'D':
-                        case 'E':
-                        case 'F':
-                        case 'G':
-                        case 'H':
-                        case 'I':
-                        case 'J':
-                        case 'K':
-                        case 'L':
-                        case 'M':
-                        case 'N':
-                        case 'O':
-                        case 'P':
-                        case 'Q':
-                        case 'R':
-                        case 'S':
-                        case 'T':
-                        case 'U':
-                        case 'V':
-                        case 'W':
-                        case 'X':
-                        case 'Y':
-                        case 'Z':
-                        case '_': {
-                            state = State.identifier;
-                            result.tag = Tag.identifier;
-                            break;
-                        }
-                        case '@': {
-                            state = State.saw_at_sign;
-                            break;
-                        }
-                        case '=': {
-                            state = State.equal;
-                            break;
-                        }
-                        case '!': {
-                            state = State.bang;
-                            break;
-                        }
-                        case '|': {
-                            state = State.pipe;
-                            break;
-                        }
-                        case '(': {
-                            result.tag = Tag.l_paren;
-                            this.index += 1;
-                            result.loc.end = this.index;
-
-                            return result;
-                            
-                        }
-                        case ')': {
-                            result.tag = Tag.r_paren;
-                            this.index += 1; result.loc.end = this.index;
-                            return result;
-                            
-                        }
-                        case '[': {
-                            result.tag = Tag.l_bracket;
-                            this.index += 1; result.loc.end = this.index;
-                            return result;
-                            
-                        }
-                        case ']': {
-                            result.tag = Tag.r_bracket;
-                            this.index += 1; result.loc.end = this.index;
-                            return result;
-                            
-                        }
-                        case ';': {
-                            result.tag = Tag.semicolon;
-                            this.index += 1; result.loc.end = this.index;
-                            return result;
-                            
-                        }
-                        case ',': {
-                            result.tag = Tag.comma;
-                            this.index += 1; result.loc.end = this.index;
-                            return result;
-                            
-                        }
-                        case '?': {
-                            result.tag = Tag.question_mark;
-                            this.index += 1; result.loc.end = this.index;
-                            return result;
-                            
-                        }
-                        case ':': {
-                            result.tag = Tag.colon;
-                            this.index += 1; result.loc.end = this.index;
-                            return result;
-                            
-                        }
-                        case '%': {
-                            state = State.percent; break;
-                        }
-                        case '*': {
-                            state = State.asterisk; break;
-                        }
-                        case '+': {
-                            state = State.plus; break;
-                        }
-                        case '<': {
-                            state = State.angle_bracket_left; break;
-                        }
-                        case '>': {
-                            state = State.angle_bracket_right; break;
-                        }
-                        case '^': {
-                            state = State.caret; break;
-                        }
-                        case '\\': {
-                            state = State.backslash;
-                            result.tag = Tag.multiline_string_literal_line; break;
-                        }
-                        case '{': {
-                            result.tag = Tag.l_brace;
-                            this.index += 1; result.loc.end = this.index;
-                            return result;
-                            
-                        }
-                        case '}': {
-                            result.tag = Tag.r_brace;
-                            this.index += 1; result.loc.end = this.index;
-                            return result;
-                            
-                        }
-                        case '~': {
-                            result.tag = Tag.tilde;
-                            this.index += 1; result.loc.end = this.index;
-                            return result;
-                            
-                        }
-                        case '.': {
-                            state = State.period; break;
-                        }
-                        case '-': {
-                            state = State.minus; break;
-                        }
-                        case '/': {
-                            state = State.slash; break;
-                        }
-                        case '&': {
-                            state = State.ampersand; break;
-                        }
-                        case '0':
-                        case '1':
-                        case '2':
-                        case '3':
-                        case '4':
-                        case '5':
-                        case '6':
-                        case '7':
-                        case '8':
-                        case '9':
-                            {
-                                state = State.int;
-                                result.tag = Tag.number_literal; break;
-                            }
-                        default: {
-                            result.tag = Tag.invalid;
-                            result.loc.end = this.index;
-                            this.index += 1;
-                            return result;
-                        }
-                    }
-                    break;
-                case State.saw_at_sign:
-                    switch (c) {
-                        case '"': {
-                            result.tag = Tag.identifier;
-                            state = State.string_literal; break;
-                        }
-                        case 'a':
-                        case 'b':
-                        case 'c':
-                        case 'd':
-                        case 'e':
-                        case 'f':
-                        case 'g':
-                        case 'h':
-                        case 'i':
-                        case 'j':
-                        case 'k':
-                        case 'l':
-                        case 'm':
-                        case 'n':
-                        case 'o':
-                        case 'p':
-                        case 'q':
-                        case 'r':
-                        case 's':
-                        case 't':
-                        case 'u':
-                        case 'v':
-                        case 'w':
-                        case 'x':
-                        case 'y':
-                        case 'z':
-                        case 'A':
-                        case 'B':
-                        case 'C':
-                        case 'D':
-                        case 'E':
-                        case 'F':
-                        case 'G':
-                        case 'H':
-                        case 'I':
-                        case 'J':
-                        case 'K':
-                        case 'L':
-                        case 'M':
-                        case 'N':
-                        case 'O':
-                        case 'P':
-                        case 'Q':
-                        case 'R':
-                        case 'S':
-                        case 'T':
-                        case 'U':
-                        case 'V':
-                        case 'W':
-                        case 'X':
-                        case 'Y':
-                        case 'Z':
-                        case '_': {
-                            state = State.builtin;
-                            result.tag = Tag.builtin;
-                            break;
-                        }
-                        default: {
-                            result.tag = Tag.invalid;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                    }
-                    break;
-                case State.ampersand:
-                    switch (c) {
-                        case '=': {
-                            result.tag = Tag.ampersand_equal;
-                            this.index += 1; result.loc.end = this.index;
-                            return result;
-                        }
-                        default: {
-                            result.tag = Tag.ampersand; result.loc.end = this.index;
-                            return result;
-                        }
-                    }
-                    break;
-                case State.asterisk: switch (c) {
-                    case '=': {
-                        result.tag = Tag.asterisk_equal;
-                        this.index += 1; result.loc.end = this.index;
-                        return result;
-                    }
-                    case '*': {
-                        result.tag = Tag.asterisk_asterisk;
-                        this.index += 1; result.loc.end = this.index;
-                        return result;
-                    }
-                    case '%': {
-                        state = State.asterisk_percent; break;
-                    }
-                    case '|': {
-                        state = State.asterisk_pipe; break;
-                    }
-                    default: {
-                        result.tag = Tag.asterisk;
-                        result.loc.end = this.index;
-                        return result;
-                    }
-                }
-                    break;
-                case State.asterisk_percent:
-                    switch (c) {
-                        case '=': {
-                            result.tag = Tag.asterisk_percent_equal;
-                            this.index += 1; result.loc.end = this.index;
-                            return result;
-                        }
-                        default: {
-                            result.tag = Tag.asterisk_percent;
-                            result.loc.end = this.index;
-                            return result; 
-                        }
-                    }
-                    break;
-                case State.asterisk_pipe:
-                    switch (c) {
-                        case '=': {
-                            result.tag = Tag.asterisk_pipe_equal;
-                            this.index += 1; result.loc.end = this.index;
-                            return result;
-                        }
-                        default: {
-                            result.tag = Tag.asterisk_pipe; result.loc.end = this.index;
-                            return result;
-                        }
-                    }
-                    break;
-                case State.percent:
-                    switch (c) {
-                        case '=': {
-                            result.tag = Tag.percent_equal;
-                            this.index += 1; result.loc.end = this.index;
-                            return result;
-                        }
-                        default: {
-                            result.tag = Tag.percent; result.loc.end = this.index;
-                            return result;
-                        }
-                    }
-                    break;
-                case State.plus:
-                    switch (c) {
-                        case '=': {
-                            result.tag = Tag.plus_equal;
-                            this.index += 1; result.loc.end = this.index;
-                            return result;
-                        }
-                        case '+': {
-                            result.tag = Tag.plus_plus;
-                            this.index += 1; result.loc.end = this.index;
-                            return result;
-                        }
-                        case '%': {
-                            state = State.plus_percent; break;
-                        }
-                        case '|': {
-                            state = State.plus_pipe; break;
-                        }
-                        default: {
-                            result.tag = Tag.plus; result.loc.end = this.index;
-                            return result;
-                        }
-                    }
-                    break;
-                case State.plus_percent:
-                    switch (c) {
-                        case '=': {
-                            result.tag = Tag.plus_percent_equal;
-                            this.index += 1; result.loc.end = this.index;
-                            return result;
-                        }
-                        default: {
-                            result.tag = Tag.plus_percent; result.loc.end = this.index;
-                            return result;
-                        }
-                    }
-                    break;
-                case State.plus_pipe:
-                    switch (c) {
-                        case '=': {
-                            result.tag = Tag.plus_pipe_equal;
-                            this.index += 1; result.loc.end = this.index;
-                            return result;
-                        }
-                        default: {
-                            result.tag = Tag.plus_pipe; result.loc.end = this.index;
-                            return result;
-                        }
-                    }
-                    break;
-                case State.caret:
-                    switch (c) {
-                        case '=': {
-                            result.tag = Tag.caret_equal;
-                            this.index += 1; result.loc.end = this.index;
-                            return result;
-                        }
-                        default: {
-                            result.tag = Tag.caret; result.loc.end = this.index;
-                            return result;
-                        }
-                    }
-                    break;
-                case State.identifier:
-                    switch (c) {
-                        case 'a':
-                        case 'b':
-                        case 'c':
-                        case 'd':
-                        case 'e':
-                        case 'f':
-                        case 'g':
-                        case 'h':
-                        case 'i':
-                        case 'j':
-                        case 'k':
-                        case 'l':
-                        case 'm':
-                        case 'n':
-                        case 'o':
-                        case 'p':
-                        case 'q':
-                        case 'r':
-                        case 's':
-                        case 't':
-                        case 'u':
-                        case 'v':
-                        case 'w':
-                        case 'x':
-                        case 'y':
-                        case 'z':
-                        case 'A':
-                        case 'B':
-                        case 'C':
-                        case 'D':
-                        case 'E':
-                        case 'F':
-                        case 'G':
-                        case 'H':
-                        case 'I':
-                        case 'J':
-                        case 'K':
-                        case 'L':
-                        case 'M':
-                        case 'N':
-                        case 'O':
-                        case 'P':
-                        case 'Q':
-                        case 'R':
-                        case 'S':
-                        case 'T':
-                        case 'U':
-                        case 'V':
-                        case 'W':
-                        case 'X':
-                        case 'Y':
-                        case 'Z':
-                        case '_':
-                        case '0':
-                        case '1':
-                        case '2':
-                        case '3':
-                        case '4':
-                        case '5':
-                        case '6':
-                        case '7':
-                        case '8':
-                        case '9': break;
-                        default: {
-                            // if (Token.getKeyword(buffer[result.loc.start..this.index])) | tag | {
-                            const z = raw_source.substring(result.loc.start, this.index);
-                            if (z in keywords) {
-                                result.tag = keywords[z];
-                            }
-                            result.loc.end = this.index;
-                            return result; 
-                        }
-
-
-                    }
-                    break;
-                case State.builtin: switch (c) {
-                    case 'a':
-                    case 'b':
-                    case 'c':
-                    case 'd':
-                    case 'e':
-                    case 'f':
-                    case 'g':
-                    case 'h':
-                    case 'i':
-                    case 'j':
-                    case 'k':
-                    case 'l':
-                    case 'm':
-                    case 'n':
-                    case 'o':
-                    case 'p':
-                    case 'q':
-                    case 'r':
-                    case 's':
-                    case 't':
-                    case 'u':
-                    case 'v':
-                    case 'w':
-                    case 'x':
-                    case 'y':
-                    case 'z':
-                    case 'A':
-                    case 'B':
-                    case 'C':
-                    case 'D':
-                    case 'E':
-                    case 'F':
-                    case 'G':
-                    case 'H':
-                    case 'I':
-                    case 'J':
-                    case 'K':
-                    case 'L':
-                    case 'M':
-                    case 'N':
-                    case 'O':
-                    case 'P':
-                    case 'Q':
-                    case 'R':
-                    case 'S':
-                    case 'T':
-                    case 'U':
-                    case 'V':
-                    case 'W':
-                    case 'X':
-                    case 'Y':
-                    case 'Z':
-                    case '_':
-                    case '0':
-                    case '1':
-                    case '2':
-                    case '3':
-                    case '4':
-                    case '5':
-                    case '6':
-                    case '7':
-                    case '8':
-                    case '9': break;
-                    default: result.loc.end = this.index;
-                        return result;
-                }
-                    break;
-                case State.backslash:
-                    switch (c) {
-                        case '\\': {
-                            state = State.multiline_string_literal_line;
-                            break;
-                        }
-                        default: {
-                            result.tag = Tag.invalid;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                    }
-                    break;
-                case State.string_literal:
-                    switch (c) {
-                        case '\\': {
-                            state = State.string_literal_backslash; break;
-                        }
-                        case '"': {
-                            this.index += 1;
-                            result.loc.end = this.index;
-
-                            return result; 
-                        }
-                        case 0: {
-                            //TODO: PORT
-                            // if (this.index == buffer.len) {
-                            //     result.tag = .invalid;
-                            //     break;
-                            // } else {
-                            //     checkLiteralCharacter();
-                            // }
-                            result.loc.end = this.index;
-                            return result; 
-                        }
-                        case '\n': {
-                            result.tag = Tag.invalid;
-                            result.loc.end = this.index;
-                            return result; 
-                        }
-                        //TODO: PORT
-                        //default: checkLiteralCharacter(),
-                    }
-                    break;
-                case State.string_literal_backslash:
-                    switch (c) {
-                        case 0:
-                        case '\n': {
-                            result.tag = Tag.invalid;
-                            result.loc.end = this.index;
-                            return result; 
-                        }
-                        default: {
-                            state = State.string_literal; break;
-                        }
-                    }
-                    break;
-                case State.char_literal: switch (c) {
-                    case 0: {
-                        result.tag = Tag.invalid;
-                        result.loc.end = this.index;
-                        return result; 
-                    }
-                    case '\\': {
-                        state = State.char_literal_backslash;
-                        break;
-                    }
-                    //TODO: PORT
-                    // '\'', 0x80...0xbf, 0xf8...0xff => {
-                    //     result.tag = .invalid;
-                    //     break;
-                    // },
-                    // 0xc0...0xdf => { // 110xxxxx
-                    //     this.remaining_code_units = 1;
-                    //     state = .char_literal_unicode;
-                    // },
-                    // 0xe0...0xef => { // 1110xxxx
-                    //     this.remaining_code_units = 2;
-                    //     state = .char_literal_unicode;
-                    // },
-                    // 0xf0...0xf7 => { // 11110xxx
-                    //     this.remaining_code_units = 3;
-                    //     state = .char_literal_unicode;
-                    // },
-
-                    // case 0x80:
-                    // case 0x81:
-                    // case 0x82:
-                    // case 0x83:
-                    // case 0x84:
-                    // case 0x85:
-                    // case 0x86:
-                    // case 0x87:
-                    // case 0x88:
-                    // case 0x89:
-                    // case 0x8a:
-                    // case 0x8b:
-                    // case 0x8c:
-                    // case 0x8d:
-                    // case 0x8e:
-                    // case 0x8f:
-                    // case 0x90:
-                    // case 0x91:
-                    // case 0x92:
-                    // case 0x93:
-                    // case 0x94:
-                    // case 0x95:
-                    // case 0x96:
-                    // case 0x97:
-                    // case 0x98:
-                    // case 0x99:
-                    // case 0x9a:
-                    // case 0x9b:
-                    // case 0x9c:
-                    // case 0x9d:
-                    // case 0x9e:
-                    // case 0x9f:
-                    // case 0xa0:
-                    // case 0xa1:
-                    // case 0xa2:
-                    // case 0xa3:
-                    // case 0xa4:
-                    // case 0xa5:
-                    // case 0xa6:
-                    // case 0xa7:
-                    // case 0xa8:
-                    // case 0xa9:
-                    // case 0xaa:
-                    // case 0xab:
-                    // case 0xac:
-                    // case 0xad:
-                    // case 0xae:
-                    // case 0xaf:
-                    // case 0xb0:
-                    // case 0xb1:
-                    // case 0xb2:
-                    // case 0xb3:
-                    // case 0xb4:
-                    // case 0xb5:
-                    // case 0xb6:
-                    // case 0xb7:
-                    // case 0xb8:
-                    // case 0xb9:
-                    // case 0xba:
-                    // case 0xbb:
-                    // case 0xbc:
-                    // case 0xbd:
-                    // case 0xbe:
-                    // case 0xbf:
-                    // case 0xf8:
-                    // case 0xf9:
-                    // case 0xfa:
-                    // case 0xfb:
-                    // case 0xfc:
-                    // case 0xfd:
-                    // case 0xfe:
-                    // case 0xff:
-                    //     result.tag = .invalid;
-                    //     break;
-                    // case 0xc0:
-                    // case 0xc1:
-                    // case 0xc2:
-                    // case 0xc3:
-                    // case 0xc4:
-                    // case 0xc5:
-                    // case 0xc6:
-                    // case 0xc7:
-                    // case 0xc8:
-                    // case 0xc9:
-                    // case 0xca:
-                    // case 0xcb:
-                    // case 0xcc:
-                    // case 0xcd:
-                    // case 0xce:
-                    // case 0xcf:
-                    // case 0xd0:
-                    // case 0xd1:
-                    // case 0xd2:
-                    // case 0xd3:
-                    // case 0xd4:
-                    // case 0xd5:
-                    // case 0xd6:
-                    // case 0xd7:
-                    // case 0xd8:
-                    // case 0xd9:
-                    // case 0xda:
-                    // case 0xdb:
-                    // case 0xdc:
-                    // case 0xdd:
-                    // case 0xde:
-                    // case 0xdf:
-                    //     this.remaining_code_units = 1;
-                    //     state = .char_literal_unicode;
-                    // case 0xe0:
-                    // case 0xe1:
-                    // case 0xe2:
-                    // case 0xe3:
-                    // case 0xe4:
-                    // case 0xe5:
-                    // case 0xe6:
-                    // case 0xe7:
-                    // case 0xe8:
-                    // case 0xe9:
-                    // case 0xea:
-                    // case 0xeb:
-                    // case 0xec:
-                    // case 0xed:
-                    // case 0xee:
-                    // case 0xef:
-                    //     this.remaining_code_units = 2;
-                    //     state = .char_literal_unicode;
-                    // case 0xf0:
-                    // case 0xf1:
-                    // case 0xf2:
-                    // case 0xf3:
-                    // case 0xf4:
-                    // case 0xf5:
-                    // case 0xf6:
-                    // case 0xf7:
-                    //     this.remaining_code_units = 3;
-                    //     state = .char_literal_unicode;
-
-                    case '\n': {
-                        result.tag = Tag.invalid;
-                        result.loc.end = this.index;
-                        return result; 
-                    }
-                    default: {
-                        state = State.char_literal_end; break;
-                    }
-                }
-                    break;
-                case State.char_literal_backslash:
-                    switch (c) {
-                        case 0:
-                        case '\n': {
-                            result.tag = Tag.invalid;
-                            result.loc.end = this.index;
-                            return result; 
-                        }
-                        case 'x': {
-                            state = State.char_literal_hex_escape;
-                            this.seen_escape_digits = 0; break;
-                        }
-                        case 'u': {
-                            state = State.char_literal_unicode_escape_saw_u; break;
-                        }
-                        default: {
-                            state = State.char_literal_end; break;
-                        }
-                    }
-                    break;
-                case State.char_literal_hex_escape:
-                    switch (c) {
-                        case '0':
-                        case '1':
-                        case '2':
-                        case '3':
-                        case '4':
-                        case '5':
-                        case '6':
-                        case '7':
-                        case '8':
-                        case '9':
-                        case 'a':
-                        case 'b':
-                        case 'c':
-                        case 'd':
-                        case 'e':
-                        case 'f':
-                        case 'A':
-                        case 'B':
-                        case 'C':
-                        case 'D':
-                        case 'E':
-                        case 'F': {
-                            this.seen_escape_digits += 1;
-                            if (this.seen_escape_digits == 2) {
-                                state = State.char_literal_end;
-                            } break;
-                        }
-                        default: {
-                            result.tag = Tag.invalid;
-                            esult.loc.end = this.index;
-                            return result;
-                        }
-                    }
-                    break;
-                case State.char_literal_unicode_escape_saw_u:
-                    switch (c) {
-                        case 0: {
-                            result.tag = Tag.invalid;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                        case '{': {
-                            state = State.char_literal_unicode_escape; break;
-                        }
-                        default: {
-                            result.tag = Tag.invalid;
-                            state = State.char_literal_unicode_invalid; break;
-                        }
-                    }
-                    break;
-                case State.char_literal_unicode_escape:
-                    switch (c) {
-                        case 0: {
-                            result.tag = Tag.invalid;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                        case '0':
-                        case '1':
-                        case '2':
-                        case '3':
-                        case '4':
-                        case '5':
-                        case '6':
-                        case '7':
-                        case '8':
-                        case '9':
-                        case 'a':
-                        case 'b':
-                        case 'c':
-                        case 'd':
-                        case 'e':
-                        case 'f':
-                        case 'A':
-                        case 'B':
-                        case 'C':
-                        case 'D':
-                        case 'E':
-                        case 'F': break;
-                        case '}': {
-                            state = State.char_literal_end; // too many/few digits handled later
-                            break;
-                        }
-                        default: {
-                            result.tag = Tag.invalid;
-                            state = State.char_literal_unicode_invalid; break;
-                        }
-                    }
-                    break;
-                case State.char_literal_unicode_invalid:
-                    switch (c) {
-                        // Keep consuming characters until an obvious stopping point.
-                        // This consolidates e.g. `u{0ab1Q}` into a single invalid token
-                        // instead of creating the tokens `u{0ab1`, `Q`, `}`
-                        case 'a':
-                        case 'b':
-                        case 'c':
-                        case 'd':
-                        case 'e':
-                        case 'f':
-                        case 'g':
-                        case 'h':
-                        case 'i':
-                        case 'j':
-                        case 'k':
-                        case 'l':
-                        case 'm':
-                        case 'n':
-                        case 'o':
-                        case 'p':
-                        case 'q':
-                        case 'r':
-                        case 's':
-                        case 't':
-                        case 'u':
-                        case 'v':
-                        case 'w':
-                        case 'x':
-                        case 'y':
-                        case 'z':
-                        case 'A':
-                        case 'B':
-                        case 'C':
-                        case 'D':
-                        case 'E':
-                        case 'F':
-                        case 'G':
-                        case 'H':
-                        case 'I':
-                        case 'J':
-                        case 'K':
-                        case 'L':
-                        case 'M':
-                        case 'N':
-                        case 'O':
-                        case 'P':
-                        case 'Q':
-                        case 'R':
-                        case 'S':
-                        case 'T':
-                        case 'U':
-                        case 'V':
-                        case 'W':
-                        case 'X':
-                        case 'Y':
-                        case 'Z':
-                        case '}':
-                        case '0':
-                        case '1':
-                        case '2':
-                        case '3':
-                        case '4':
-                        case '5':
-                        case '6':
-                        case '7':
-                        case '8':
-                        case '9': break;
-                        default: break;
-                    }
-                    break;
-                case State.char_literal_end:
-                    switch (c) {
-                        case '\'': {
-                            result.tag = Tag.char_literal;
-                            this.index += 1;
-                            result.loc.end = this.index;
-                            return result; 
-                        }
-                        default: {
-                            result.tag = Tag.invalid;
-                            result.loc.end = this.index;
-                            return result; 
-                        }
-                    }
-                    break;
-                case State.char_literal_unicode:
-                    switch (c) {
-                        // 0x80...0xbf => {
-                        //         this.remaining_code_units -= 1;
-                        //         if (this.remaining_code_units == 0) {
-                        //             state = .char_literal_end;
-                        //         }
-                        //     },
-                        default: {
-                            result.tag = Tag.invalid;
-                            result.loc.end = this.index;
-                            return result; 
-                        }
-                    }
-                    break;
-                case State.multiline_string_literal_line:
-                    switch (c) {
-                        case 0:
-                            result.loc.end = this.index;
-                            return result;
-                        case '\n': {
-
-                            this.index += 1;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                        case '\t': break;
-                        //TODO: PORT
-                        //default: checkLiteralCharacter(),
-
-                    }
-                    break;
-                case State.bang:
-                    switch (c) {
-                        case '=': {
-                            result.tag = Tag.bang_equal;
-                            this.index += 1;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                        default: {
-                            result.tag = Tag.bang;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                    }
-                    break;
-                case State.pipe:
-                    switch (c) {
-                        case '=': {
-                            result.tag = Tag.pipe_equal;
-                            this.index += 1;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                        case '|': {
-                            result.tag = Tag.pipe_pipe;
-                            this.index += 1;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                        default: {
-                            result.tag = Tag.pipe;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                    }
-                    break;
-                case State.equal: switch (c) {
-                    case '=': {
-                        result.tag = Tag.equal_equal;
-                        this.index += 1;
-                        result.loc.end = this.index;
-                        return result;
-                    }
-                    case '>': {
-                        result.tag = Tag.equal_angle_bracket_right;
-                        this.index += 1;
-                        result.loc.end = this.index;
-                        return result;
-                    }
-                    default: {
-                        result.tag = Tag.equal;
-                        result.loc.end = this.index;
-                        return result;
-                    }
-                }
-                    break;
-                case State.minus: switch (c) {
-                    case '>': {
-                        result.tag = Tag.arrow;
-                        this.index += 1;
-                        result.loc.end = this.index;
-                        return result;
-                    }
-                    case '=': {
-                        result.tag = Tag.minus_equal;
-                        this.index += 1;
-                        result.loc.end = this.index;
-                        return result;
-                    }
-                    case '%': {
-                        state = State.minus_percent; break;
-                    }
-                    case '|': {
-                        state = State.minus_pipe; break;
-                    }
-                    default: {
-                        result.tag = Tag.minus;
-                        result.loc.end = this.index;
-                        return result;
-                    }
-                }
-                    break;
-                case State.minus_percent:
-                    switch (c) {
-                        case '=': {
-                            result.tag = Tag.minus_percent_equal;
-                            this.index += 1;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                        default: {
-                            result.tag = Tag.minus_percent;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                    }
-                    break;
-                case State.minus_pipe:
-                    switch (c) {
-                        case '=': {
-                            result.tag = Tag.minus_pipe_equal;
-                            this.index += 1;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                        default: {
-                            result.tag = Tag.minus_pipe;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                    }
-                    break;
-                case State.angle_bracket_left:
-                    switch (c) {
-                        case '<': {
-                            state = State.angle_bracket_angle_bracket_left; break;
-                        }
-                        case '=': {
-                            result.tag = Tag.angle_bracket_left_equal;
-                            this.index += 1;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                        default: {
-                            result.tag = Tag.angle_bracket_left;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                    }
-                    break;
-                case State.angle_bracket_angle_bracket_left:
-                    switch (c) {
-                        case '=': {
-                            result.tag = Tag.angle_bracket_angle_bracket_left_equal;
-                            this.index += 1;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                        case '|': {
-                            state = State.angle_bracket_angle_bracket_left_pipe;
-                        }
-                        default: {
-                            result.tag = Tag.angle_bracket_angle_bracket_left;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                    }
-                    break;
-                case State.angle_bracket_angle_bracket_left_pipe:
-                    switch (c) {
-                        case '=': {
-                            result.tag = Tag.angle_bracket_angle_bracket_left_pipe_equal;
-                            this.index += 1;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                        default: {
-                            result.tag = Tag.angle_bracket_angle_bracket_left_pipe;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                    }
-                    break;
-                case State.angle_bracket_right:
-                    switch (c) {
-                        case '>': {
-                            state = State.angle_bracket_angle_bracket_right; break;
-                        }
-                        case '=': {
-                            result.tag = Tag.angle_bracket_right_equal;
-                            this.index += 1;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                        default: {
-                            result.tag = Tag.angle_bracket_right;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                    }
-                    break;
-                case State.angle_bracket_angle_bracket_right:
-                    switch (c) {
-                        case '=': {
-                            result.tag = Tag.angle_bracket_angle_bracket_right_equal;
-                            this.index += 1;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                        default: {
-                            result.tag = Tag.angle_bracket_angle_bracket_right;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                    }
-                    break;
-                case State.period:
-                    switch (c) {
-                        case '.': {
-                            state = State.period_2; break;
-                        }
-                        case '*': {
-                            state = State.period_asterisk; break;
-                        }
-                        default: {
-                            result.tag = Tag.period;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                    }
-                    break;
-                case State.period_2:
-                    switch (c) {
-                        case '.': {
-                            result.tag = Tag.ellipsis3;
-                            this.index += 1;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                        default: {
-                            result.tag = Tag.ellipsis2;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                    }
-                    break;
-                case State.period_asterisk:
-                    switch (c) {
-                        case '*': {
-                            result.tag = Tag.invalid_periodasterisks;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                        default: {
-                            result.tag = Tag.period_asterisk;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                    }
-                    break;
-                case State.slash:
-                    switch (c) {
-                        case '/': {
-                            state = State.line_comment_start;
-                            break;
-                        }
-                        case '=': {
-                            result.tag = Tag.slash_equal;
-                            this.index += 1;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                        default: {
-                            result.tag = Tag.slash;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                    } break;
-                case State.line_comment_start:
-                    switch (c) {
-                        case 0: {
-                            if (this.index != raw_source.length) {
-                                result.tag = Tag.invalid;
-                                this.index += 1;
-                            }
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                        case '/': {
-                            state = State.doc_comment_start; break;
-                        }
-                        case '!': {
-                            result.tag = Tag.container_doc_comment;
-                            state = State.doc_comment; break;
-                        }
-                        case '\n': {
-                            state = State.start;
-                            result.loc.start = this.index + 1; break;
-                        }
-                        case '\t':
-                            state = State.line_comment; break;
-                        default: {
-                            state = State.line_comment;
-                            //TODO: PORT
-                            //checkLiteralCharacter();
-                            break;
-                        }
-                    } break;
-                case State.doc_comment_start:
-                    switch (c) {
-                        case '/': {
-                            state = State.line_comment; break;
-                        }
-                        case 0:
-                        case '\n':
-                            {
-                                result.tag = Tag.doc_comment;
-                                result.loc.end = this.index;
-                                return result;
-                            }
-                        case '\t': {
-                            state = State.doc_comment;
-                            result.tag = Tag.doc_comment; break;
-                        }
-                        default: {
-                            state = State.doc_comment;
-                            result.tag = Tag.doc_comment;
-                            //TODO: PORT
-                            //checkLiteralCharacter();
-                            break;
-                        }
-                    } break;
-                case State.line_comment:
-                    switch (c) {
-                        case 0: {
-                            if (this.index != raw_source.length) {
-                                result.tag = Tag.invalid;
-                                this.index += 1;
-                            }
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                        case '\n': {
-                            result.tag = Tag.line_comment;
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                        case '\t': break;
-                        //TODO: PORT
-                        //default: checkLiteralCharacter(),
-                    } break;
-                case State.doc_comment:
-                    switch (c) {
-                        case 0://
-                        case '\n':
-                            result.loc.end = this.index;
-                            return result;
-                        case '\t': break;
-                        //TODOL PORT
-                        // default: checkLiteralCharacter(),
-                        default:
-                            break;
-                    } break;
-                case State.int:
-                    switch (c) {
-                        case '.':
-                            state = State.int_period;
-                            break;
-                        case '_':
-                        case 'a':
-                        case 'b':
-                        case 'c':
-                        case 'd':
-                        case 'f':
-                        case 'g':
-                        case 'h':
-                        case 'i':
-                        case 'j':
-                        case 'k':
-                        case 'l':
-                        case 'm':
-                        case 'n':
-                        case 'o':
-                        case 'q':
-                        case 'r':
-                        case 's':
-                        case 't':
-                        case 'u':
-                        case 'v':
-                        case 'w':
-                        case 'x':
-                        case 'y':
-                        case 'z':
-                        case 'A':
-                        case 'B':
-                        case 'C':
-                        case 'D':
-                        case 'F':
-                        case 'G':
-                        case 'H':
-                        case 'I':
-                        case 'J':
-                        case 'K':
-                        case 'L':
-                        case 'M':
-                        case 'N':
-                        case 'O':
-                        case 'Q':
-                        case 'R':
-                        case 'S':
-                        case 'T':
-                        case 'U':
-                        case 'V':
-                        case 'W':
-                        case 'X':
-                        case 'Y':
-                        case 'Z':
-                        case '0':
-                        case '1':
-                        case '2':
-                        case '3':
-                        case '4':
-                        case '5':
-                        case '6':
-                        case '7':
-                        case '8':
-                        case '9':
-                            break;
-                        case 'e':
-                        case 'E':
-                        case 'p':
-                        case 'P':
-                            state = State.int_exponent;
-                            break;
-                        default: result.loc.end = this.index;
-                            return result;
-                    } break;
-                case State.int_exponent:
-                    switch (c) {
-                        case '-':
-                        case '+':
-                            {
-                                ``
-                                state = State.float; break;
-                            }
-                        default: {
-                            this.index -= 1;
-                            state = State.int; break;
-                        }
-                    } break;
-                case State.int_period: switch (c) {
-                    case '_':
-                    case 'a':
-                    case 'b':
-                    case 'c':
-                    case 'd':
-                    case 'f':
-                    case 'g':
-                    case 'h':
-                    case 'i':
-                    case 'j':
-                    case 'k':
-                    case 'l':
-                    case 'm':
-                    case 'n':
-                    case 'o':
-                    case 'q':
-                    case 'r':
-                    case 's':
-                    case 't':
-                    case 'u':
-                    case 'v':
-                    case 'w':
-                    case 'x':
-                    case 'y':
-                    case 'z':
-                    case 'A':
-                    case 'B':
-                    case 'C':
-                    case 'D':
-                    case 'F':
-                    case 'G':
-                    case 'H':
-                    case 'I':
-                    case 'J':
-                    case 'K':
-                    case 'L':
-                    case 'M':
-                    case 'N':
-                    case 'O':
-                    case 'Q':
-                    case 'R':
-                    case 'S':
-                    case 'T':
-                    case 'U':
-                    case 'V':
-                    case 'W':
-                    case 'X':
-                    case 'Y':
-                    case 'Z':
-                    case '0':
-                    case '1':
-                    case '2':
-                    case '3':
-                    case '4':
-                    case '5':
-                    case '6':
-                    case '7':
-                    case '8':
-                    case '9': {
-                        state = State.float; break;
-                    }
-                    case 'e':
-                    case 'E':
-                    case 'p':
-                    case 'P':
-                        state = State.float_exponent; break;
-                    default: {
-                        this.index -= 1;
-                        result.loc.end = this.index;
-                        return result;
-                    }
-                } break;
-                case State.float:
-                    switch (c) {
-                        case '_':
-                        case 'a':
-                        case 'b':
-                        case 'c':
-                        case 'd':
-                        case 'f':
-                        case 'g':
-                        case 'h':
-                        case 'i':
-                        case 'j':
-                        case 'k':
-                        case 'l':
-                        case 'm':
-                        case 'n':
-                        case 'o':
-                        case 'q':
-                        case 'r':
-                        case 's':
-                        case 't':
-                        case 'u':
-                        case 'v':
-                        case 'w':
-                        case 'x':
-                        case 'y':
-                        case 'z':
-                        case 'A':
-                        case 'B':
-                        case 'C':
-                        case 'D':
-                        case 'F':
-                        case 'G':
-                        case 'H':
-                        case 'I':
-                        case 'J':
-                        case 'K':
-                        case 'L':
-                        case 'M':
-                        case 'N':
-                        case 'O':
-                        case 'Q':
-                        case 'R':
-                        case 'S':
-                        case 'T':
-                        case 'U':
-                        case 'V':
-                        case 'W':
-                        case 'X':
-                        case 'Y':
-                        case 'Z':
-                        case '0':
-                        case '1':
-                        case '2':
-                        case '3':
-                        case '4':
-                        case '5':
-                        case '6':
-                        case '7':
-                        case '8':
-                        case '9':
-                            break;
-
-                        case 'e':
-                        case 'E':
-                        case 'p':
-                        case 'P':
-                            state = State.float_exponent; break;
-                        default: result.loc.end = this.index;
-                            return result;
-                    } break;
-                case State.float_exponent:
-                    switch (c) {
-                        case '-':
-                        case '+':
-                            state = State.float; break;
-                        default: {
-                            this.index -= 1;
-                            state = State.float; break;
-                        }
-                    }
-                    break;
-
-                case State.whitespace:
-                    switch(c) {
-                        case ' ':
-                        case '\n':
-                        case '\t':
-                        case '\r': {
-                            break;
-                        }
-                        default: {
-                            result.loc.end = this.index;
-                            return result;
-                        }
-                   }
-            }
-            this.index += 1;
-        }
-
-        //TODO: PORT
-        // if (result.tag == Tag.eof) {
-        //     if (pending_invalid_token) | token | {
-        //         pending_invalid_token = null;
-        //         return token;
-        //     }
-        //     result.loc.start = sindex;
-        // }
-
-        result.loc.end = this.index;
-        return result;
-
-    }
-}
-
-
-const builtin_types = [
-    "f16",          "f32",     "f64",        "f80",          "f128",
-    "c_longdouble", "c_short", "c_ushort",   "c_int",        "c_uint",
-    "c_long",       "c_ulong", "c_longlong", "c_ulonglong",  "c_char",
-    "anyopaque",    "void",    "bool",       "isize",        "usize",
-    "noreturn",     "type",    "anyerror",   "comptime_int", "comptime_float",
-];
-
-function isSimpleType(typeName) {
-    return builtin_types.includes(typeName) || isIntType(typeName);
-}
-
-function isIntType(typeName) {
-    if (typeName[0] != 'u' && typeName[0] != 'i') return false;
-    let i = 1;
-    if (i == typeName.length) return false;
-    for (; i < typeName.length; i += 1) {
-        if (typeName[i] < '0' || typeName[i] > '9') return false;
-    }
-    return true;
-}
-
-function isSpecialIndentifier(identifier) {
-    return ["null", "true", "false", ,"undefined"].includes(identifier);
-}
-
-//const fs = require('fs');
-//const src = fs.readFileSync("../std/c.zig", 'utf8');
-//console.log(generate_html_for_src(src));
-
-
-// gist for zig_lexer_test code: https://gist.github.com/Myvar/2684ba4fb86b975274629d6f21eddc7b
-// // Just for testing not to commit in pr
-// var isNode = new Function("try {return this===global;}catch(e){return false;}");
-// if (isNode()) {
-
-
-//     //const s = "const std = @import(\"std\");";
-//     //const toksa = tokenize_zig_source(s);
-//     //dump_tokens(toksa, s);
-//     //console.log(JSON.stringify(toksa));
-
-//     const fs = require('fs');
-
-//     function testFile(fileName) {
-//         //console.log(fileName);
-//         var exec = require('child_process').execFileSync;
-//         var passed = true;
-//         const zig_data = exec('./zig_lexer_test', [fileName]);
-//         const data = fs.readFileSync(fileName, 'utf8');
-
-//         const toks = tokenize_zig_source(data);
-//         const a_json = toks;
-
-//         // dump_tokens(a_json, data);
-//         // return;
-
-//         const b_json = JSON.parse(zig_data.toString());
-
-//         if (a_json.length !== b_json.length) {
-//             console.log("FAILED a and be is not the same length");
-//             passed = false;
-//             //return;
-//         }
-
-//         let len = a_json.length;
-//         if (len >= b_json.length) len = b_json.length;
-
-//         for (let i = 0; i < len; i++) {
-//             const a = a_json[i];
-//             const b = b_json[i];
-
-//             // console.log(a.tag + " == " + b.tag);
-
-//             if (a.tag !== b.tag) {
-
-//                 // console.log("Around here:");
-//                 // console.log(
-//                 //     data.substring(b_json[i - 2].loc.start, b_json[i - 2].loc.end),
-//                 //     data.substring(b_json[i - 1].loc.start, b_json[i - 1].loc.end),
-//                 //     data.substring(b_json[i].loc.start, b_json[i].loc.end),
-//                 //     data.substring(b_json[i + 1].loc.start, b_json[i + 1].loc.end),
-//                 //     data.substring(b_json[i + 2].loc.start, b_json[i + 2].loc.end),
-//                 // );
-
-//                 console.log("TAG: a != b");
-//                 console.log("js", a.tag);
-//                 console.log("zig", b.tag);
-//                 passed = false;
-//                 return;
-//             }
-
-//             if (a.tag !== Tag.eof && a.loc.start !== b.loc.start) {
-//                 console.log("START: a != b");
-
-//                 console.log("js",  "\"" + data.substring(a_json[i ].loc.start, a_json[i].loc.end) + "\"");
-//                 console.log("zig",  "\"" + data.substring(b_json[i ].loc.start, b_json[i].loc.end) + "\"");
-
-
-//                 passed = false;
-//                 return;
-//             }
-
-//             // if (a.tag !== Tag.eof && a.loc.end !== b.loc.end) {
-//             //     console.log("END: a != b");
-//             //     // console.log("Around here:");
-//             //     // console.log(
-//             //     //    // data.substring(b_json[i - 2].loc.start, b_json[i - 2].loc.end),
-//             //     //    // data.substring(b_json[i - 1].loc.start, b_json[i - 1].loc.end),
-//             //     //     data.substring(b_json[i ].loc.start, b_json[i].loc.end),
-//             //     //    // data.substring(b_json[i + 1].loc.start, b_json[i + 1].loc.end),
-//             //     //    // data.substring(b_json[i + 2].loc.start, b_json[i + 2].loc.end),
-//             //     // );
-//             //     console.log("js",  "\"" + data.substring(a_json[i ].loc.start, a_json[i].loc.end) + "\"");
-//             //     console.log("zig",  "\"" + data.substring(b_json[i ].loc.start, b_json[i].loc.end) + "\"");
-//             //     passed = false;
-//             //     return;
-//             // }
-//         }
-//         return passed;
-//     }
-//     var path = require('path');
-//     function fromDir(startPath, filter) {
-//         if (!fs.existsSync(startPath)) {
-//             console.log("no dir ", startPath);
-//             return;
-//         }
-//         var files = fs.readdirSync(startPath);
-//         for (var i = 0; i < files.length; i++) {
-//             var filename = path.join(startPath, files[i]);
-//             var stat = fs.lstatSync(filename);
-//             if (stat.isDirectory()) {
-//                 fromDir(filename, filter); //recurse
-//             } else if (filename.endsWith(filter)) {
-//                 try {
-//                     console.log('-- TESTING: ', filename);
-//                     console.log("\t\t", testFile(filename));
-//                 }
-//                 catch {
-//                 }
-//             };
-//         };
-//     };
-//       fromDir('../std', '.zig');
-//     //console.log(testFile("/home/myvar/code/zig/lib/std/fmt/errol.zig"));
-//     //console.log(testFile("test.zig"));
-// }
\ No newline at end of file