blob: 3994f66908cf0d3c9ab937f996d65ef57d36222e [file] [edit]
// Copyright (c) project authors. All rights reserved.
// Licensed under the MIT license.
// See LICENSE file in the project root for details.
import 'utils.dart';
// TODO(jmesserly): fix up the const lists. For the bigger ones, we need faster
// lookup than linear search "contains". In the Python code they were
// frozensets.
final String? eof = null;
class ReparseException implements Exception {
final String message;
ReparseException(this.message);
@override
String toString() => 'ReparseException: $message';
}
// TODO(jmesserly): assuming the programmatic name is not important, it would be
// good to make these "static const" fields on an ErrorMessage class.
/// Error messages emitted by `HtmlParser`.
///
/// The values use Python style string formatting, as implemented by
/// [formatStr]. That function only supports the subset of format functionality
/// used here.
const Map<String, String> errorMessages = {
'null-character': 'Null character in input stream, replaced with U+FFFD.',
'invalid-codepoint': 'Invalid codepoint in stream.',
'incorrectly-placed-solidus': 'Solidus (/) incorrectly placed in tag.',
'incorrect-cr-newline-entity':
'Incorrect CR newline entity, replaced with LF.',
'illegal-windows-1252-entity':
'Entity used with illegal number (windows-1252 reference).',
'cant-convert-numeric-entity':
"Numeric entity couldn't be converted to character "
'(codepoint U+%(charAsInt)08x).',
'illegal-codepoint-for-numeric-entity':
'Numeric entity represents an illegal codepoint: '
'U+%(charAsInt)08x.',
'numeric-entity-without-semicolon': "Numeric entity didn't end with ';'.",
'expected-numeric-entity-but-got-eof':
'Numeric entity expected. Got end of file instead.',
'expected-numeric-entity': 'Numeric entity expected but none found.',
'named-entity-without-semicolon': "Named entity didn't end with ';'.",
'expected-named-entity': 'Named entity expected. Got none.',
'attributes-in-end-tag': 'End tag contains unexpected attributes.',
'self-closing-flag-on-end-tag':
'End tag contains unexpected self-closing flag.',
'expected-tag-name-but-got-right-bracket':
"Expected tag name. Got '>' instead.",
'expected-tag-name-but-got-question-mark':
"Expected tag name. Got '?' instead. (HTML doesn't "
'support processing instructions.)',
'expected-tag-name': 'Expected tag name. Got something else instead',
'expected-closing-tag-but-got-right-bracket':
"Expected closing tag. Got '>' instead. Ignoring '</>'.",
'expected-closing-tag-but-got-eof':
'Expected closing tag. Unexpected end of file.',
'expected-closing-tag-but-got-char':
"Expected closing tag. Unexpected character '%(data)s' found.",
'eof-in-tag-name': 'Unexpected end of file in the tag name.',
'expected-attribute-name-but-got-eof':
'Unexpected end of file. Expected attribute name instead.',
'eof-in-attribute-name': 'Unexpected end of file in attribute name.',
'invalid-character-in-attribute-name': 'Invalid character in attribute name',
'duplicate-attribute': 'Dropped duplicate attribute on tag.',
'expected-end-of-tag-name-but-got-eof':
'Unexpected end of file. Expected = or end of tag.',
'expected-attribute-value-but-got-eof':
'Unexpected end of file. Expected attribute value.',
'expected-attribute-value-but-got-right-bracket':
"Expected attribute value. Got '>' instead.",
'equals-in-unquoted-attribute-value': 'Unexpected = in unquoted attribute',
'unexpected-character-in-unquoted-attribute-value':
'Unexpected character in unquoted attribute',
'invalid-character-after-attribute-name':
'Unexpected character after attribute name.',
'unexpected-character-after-attribute-value':
'Unexpected character after attribute value.',
'eof-in-attribute-value-double-quote':
'Unexpected end of file in attribute value (".',
'eof-in-attribute-value-single-quote':
"Unexpected end of file in attribute value (').",
'eof-in-attribute-value-no-quotes':
'Unexpected end of file in attribute value.',
'unexpected-EOF-after-solidus-in-tag':
'Unexpected end of file in tag. Expected >',
'unexpected-character-after-soldius-in-tag':
'Unexpected character after / in tag. Expected >',
'expected-dashes-or-doctype': "Expected '--' or 'DOCTYPE'. Not found.",
'unexpected-bang-after-double-dash-in-comment':
'Unexpected ! after -- in comment',
'unexpected-space-after-double-dash-in-comment':
'Unexpected space after -- in comment',
'incorrect-comment': 'Incorrect comment.',
'eof-in-comment': 'Unexpected end of file in comment.',
'eof-in-comment-end-dash': 'Unexpected end of file in comment (-)',
'unexpected-dash-after-double-dash-in-comment':
"Unexpected '-' after '--' found in comment.",
'eof-in-comment-double-dash': 'Unexpected end of file in comment (--).',
'eof-in-comment-end-space-state': 'Unexpected end of file in comment.',
'eof-in-comment-end-bang-state': 'Unexpected end of file in comment.',
'unexpected-char-in-comment': 'Unexpected character in comment found.',
'need-space-after-doctype': "No space after literal string 'DOCTYPE'.",
'expected-doctype-name-but-got-right-bracket':
'Unexpected > character. Expected DOCTYPE name.',
'expected-doctype-name-but-got-eof':
'Unexpected end of file. Expected DOCTYPE name.',
'eof-in-doctype-name': 'Unexpected end of file in DOCTYPE name.',
'eof-in-doctype': 'Unexpected end of file in DOCTYPE.',
'expected-space-or-right-bracket-in-doctype':
"Expected space or '>'. Got '%(data)s'",
'unexpected-end-of-doctype': 'Unexpected end of DOCTYPE.',
'unexpected-char-in-doctype': 'Unexpected character in DOCTYPE.',
'eof-in-innerhtml': 'XXX innerHTML EOF',
'unexpected-doctype': 'Unexpected DOCTYPE. Ignored.',
'non-html-root': 'html needs to be the first start tag.',
'expected-doctype-but-got-eof': 'Unexpected End of file. Expected DOCTYPE.',
'unknown-doctype': 'Erroneous DOCTYPE.',
'expected-doctype-but-got-chars':
'Unexpected non-space characters. Expected DOCTYPE.',
'expected-doctype-but-got-start-tag':
'Unexpected start tag (%(name)s). Expected DOCTYPE.',
'expected-doctype-but-got-end-tag':
'Unexpected end tag (%(name)s). Expected DOCTYPE.',
'end-tag-after-implied-root':
'Unexpected end tag (%(name)s) after the (implied) root element.',
'expected-named-closing-tag-but-got-eof':
'Unexpected end of file. Expected end tag (%(name)s).',
'two-heads-are-not-better-than-one':
'Unexpected start tag head in existing head. Ignored.',
'unexpected-end-tag': 'Unexpected end tag (%(name)s). Ignored.',
'unexpected-start-tag-out-of-my-head':
'Unexpected start tag (%(name)s) that can be in head. Moved.',
'unexpected-start-tag': 'Unexpected start tag (%(name)s).',
'missing-end-tag': 'Missing end tag (%(name)s).',
'missing-end-tags': 'Missing end tags (%(name)s).',
'unexpected-start-tag-implies-end-tag':
'Unexpected start tag (%(startName)s) '
'implies end tag (%(endName)s).',
'unexpected-start-tag-treated-as':
'Unexpected start tag (%(originalName)s). Treated as %(newName)s.',
'deprecated-tag': "Unexpected start tag %(name)s. Don't use it!",
'unexpected-start-tag-ignored': 'Unexpected start tag %(name)s. Ignored.',
'expected-one-end-tag-but-got-another': 'Unexpected end tag (%(gotName)s). '
'Missing end tag (%(expectedName)s).',
'end-tag-too-early':
'End tag (%(name)s) seen too early. Expected other end tag.',
'end-tag-too-early-named':
'Unexpected end tag (%(gotName)s). Expected end tag (%(expectedName)s).',
'end-tag-too-early-ignored': 'End tag (%(name)s) seen too early. Ignored.',
'adoption-agency-1.1': 'End tag (%(name)s) violates step 1, '
'paragraph 1 of the adoption agency algorithm.',
'adoption-agency-1.2': 'End tag (%(name)s) violates step 1, '
'paragraph 2 of the adoption agency algorithm.',
'adoption-agency-1.3': 'End tag (%(name)s) violates step 1, '
'paragraph 3 of the adoption agency algorithm.',
'unexpected-end-tag-treated-as':
'Unexpected end tag (%(originalName)s). Treated as %(newName)s.',
'no-end-tag': 'This element (%(name)s) has no end tag.',
'unexpected-implied-end-tag-in-table':
'Unexpected implied end tag (%(name)s) in the table phase.',
'unexpected-implied-end-tag-in-table-body':
'Unexpected implied end tag (%(name)s) in the table body phase.',
'unexpected-char-implies-table-voodoo': 'Unexpected non-space characters in '
'table context caused voodoo mode.',
'unexpected-hidden-input-in-table':
'Unexpected input with type hidden in table context.',
'unexpected-form-in-table': 'Unexpected form in table context.',
'unexpected-start-tag-implies-table-voodoo':
'Unexpected start tag (%(name)s) in '
'table context caused voodoo mode.',
'unexpected-end-tag-implies-table-voodoo': 'Unexpected end tag (%(name)s) in '
'table context caused voodoo mode.',
'unexpected-cell-in-table-body': 'Unexpected table cell start tag (%(name)s) '
'in the table body phase.',
'unexpected-cell-end-tag': 'Got table cell end tag (%(name)s) '
'while required end tags are missing.',
'unexpected-end-tag-in-table-body':
'Unexpected end tag (%(name)s) in the table body phase. Ignored.',
'unexpected-implied-end-tag-in-table-row':
'Unexpected implied end tag (%(name)s) in the table row phase.',
'unexpected-end-tag-in-table-row':
'Unexpected end tag (%(name)s) in the table row phase. Ignored.',
'unexpected-select-in-select':
'Unexpected select start tag in the select phase '
'treated as select end tag.',
'unexpected-input-in-select':
'Unexpected input start tag in the select phase.',
'unexpected-start-tag-in-select':
'Unexpected start tag token (%(name)s in the select phase. '
'Ignored.',
'unexpected-end-tag-in-select':
'Unexpected end tag (%(name)s) in the select phase. Ignored.',
'unexpected-table-element-start-tag-in-select-in-table':
'Unexpected table element start tag (%(name)s) in the select in table phase.',
'unexpected-table-element-end-tag-in-select-in-table':
'Unexpected table element end tag (%(name)s) in the select in table phase.',
'unexpected-char-after-body':
'Unexpected non-space characters in the after body phase.',
'unexpected-start-tag-after-body': 'Unexpected start tag token (%(name)s)'
' in the after body phase.',
'unexpected-end-tag-after-body': 'Unexpected end tag token (%(name)s)'
' in the after body phase.',
'unexpected-char-in-frameset':
'Unexpected characters in the frameset phase. Characters ignored.',
'unexpected-start-tag-in-frameset': 'Unexpected start tag token (%(name)s)'
' in the frameset phase. Ignored.',
'unexpected-frameset-in-frameset-innerhtml':
'Unexpected end tag token (frameset) '
'in the frameset phase (innerHTML).',
'unexpected-end-tag-in-frameset': 'Unexpected end tag token (%(name)s)'
' in the frameset phase. Ignored.',
'unexpected-char-after-frameset': 'Unexpected non-space characters in the '
'after frameset phase. Ignored.',
'unexpected-start-tag-after-frameset': 'Unexpected start tag (%(name)s)'
' in the after frameset phase. Ignored.',
'unexpected-end-tag-after-frameset': 'Unexpected end tag (%(name)s)'
' in the after frameset phase. Ignored.',
'unexpected-end-tag-after-body-innerhtml':
'Unexpected end tag after body(innerHtml)',
'expected-eof-but-got-char':
'Unexpected non-space characters. Expected end of file.',
'expected-eof-but-got-start-tag': 'Unexpected start tag (%(name)s)'
'. Expected end of file.',
'expected-eof-but-got-end-tag': 'Unexpected end tag (%(name)s)'
'. Expected end of file.',
'eof-in-table': 'Unexpected end of file. Expected table content.',
'eof-in-select': 'Unexpected end of file. Expected select content.',
'eof-in-frameset': 'Unexpected end of file. Expected frameset content.',
'eof-in-script-in-script': 'Unexpected end of file. Expected script content.',
'eof-in-foreign-lands': 'Unexpected end of file. Expected foreign content',
'non-void-element-with-trailing-solidus':
'Trailing solidus not allowed on element %(name)s',
'unexpected-html-element-in-foreign-content':
'Element %(name)s not allowed in a non-html context',
'unexpected-end-tag-before-html':
'Unexpected end tag (%(name)s) before html.',
'undefined-error': 'Undefined error (this sucks and should be fixed)',
};
class Namespaces {
static const html = 'http://www.w3.org/1999/xhtml';
static const mathml = 'http://www.w3.org/1998/Math/MathML';
static const svg = 'http://www.w3.org/2000/svg';
static const xlink = 'http://www.w3.org/1999/xlink';
static const xml = 'http://www.w3.org/XML/1998/namespace';
static const xmlns = 'http://www.w3.org/2000/xmlns/';
Namespaces._();
static String? getPrefix(String? url) {
return switch (url) {
html => 'html',
mathml => 'math',
svg => 'svg',
xlink => 'xlink',
xml => 'xml',
xmlns => 'xmlns',
_ => null
};
}
}
const scopingElements = {
(Namespaces.html, 'applet'),
(Namespaces.html, 'caption'),
(Namespaces.html, 'html'),
(Namespaces.html, 'marquee'),
(Namespaces.html, 'object'),
(Namespaces.html, 'table'),
(Namespaces.html, 'td'),
(Namespaces.html, 'th'),
(Namespaces.mathml, 'mi'),
(Namespaces.mathml, 'mo'),
(Namespaces.mathml, 'mn'),
(Namespaces.mathml, 'ms'),
(Namespaces.mathml, 'mtext'),
(Namespaces.mathml, 'annotation-xml'),
(Namespaces.svg, 'foreignObject'),
(Namespaces.svg, 'desc'),
(Namespaces.svg, 'title')
};
const specialElements = {
(Namespaces.html, 'address'),
(Namespaces.html, 'applet'),
(Namespaces.html, 'area'),
(Namespaces.html, 'article'),
(Namespaces.html, 'aside'),
(Namespaces.html, 'base'),
(Namespaces.html, 'basefont'),
(Namespaces.html, 'bgsound'),
(Namespaces.html, 'blockquote'),
(Namespaces.html, 'body'),
(Namespaces.html, 'br'),
(Namespaces.html, 'button'),
(Namespaces.html, 'caption'),
(Namespaces.html, 'center'),
(Namespaces.html, 'col'),
(Namespaces.html, 'colgroup'),
(Namespaces.html, 'command'),
(Namespaces.html, 'dd'),
(Namespaces.html, 'details'),
(Namespaces.html, 'dir'),
(Namespaces.html, 'div'),
(Namespaces.html, 'dl'),
(Namespaces.html, 'dt'),
(Namespaces.html, 'embed'),
(Namespaces.html, 'fieldset'),
(Namespaces.html, 'figure'),
(Namespaces.html, 'footer'),
(Namespaces.html, 'form'),
(Namespaces.html, 'frame'),
(Namespaces.html, 'frameset'),
(Namespaces.html, 'h1'),
(Namespaces.html, 'h2'),
(Namespaces.html, 'h3'),
(Namespaces.html, 'h4'),
(Namespaces.html, 'h5'),
(Namespaces.html, 'h6'),
(Namespaces.html, 'head'),
(Namespaces.html, 'header'),
(Namespaces.html, 'hr'),
(Namespaces.html, 'html'),
(Namespaces.html, 'iframe'),
// Note that image is commented out in the spec as "this isn't an
// element that can end up on the stack, so it doesn't matter,"
(Namespaces.html, 'image'),
(Namespaces.html, 'img'),
(Namespaces.html, 'input'),
(Namespaces.html, 'isindex'),
(Namespaces.html, 'li'),
(Namespaces.html, 'link'),
(Namespaces.html, 'listing'),
(Namespaces.html, 'marquee'),
(Namespaces.html, 'men'),
(Namespaces.html, 'meta'),
(Namespaces.html, 'nav'),
(Namespaces.html, 'noembed'),
(Namespaces.html, 'noframes'),
(Namespaces.html, 'noscript'),
(Namespaces.html, 'object'),
(Namespaces.html, 'ol'),
(Namespaces.html, 'p'),
(Namespaces.html, 'param'),
(Namespaces.html, 'plaintext'),
(Namespaces.html, 'pre'),
(Namespaces.html, 'script'),
(Namespaces.html, 'section'),
(Namespaces.html, 'select'),
(Namespaces.html, 'style'),
(Namespaces.html, 'table'),
(Namespaces.html, 'tbody'),
(Namespaces.html, 'td'),
(Namespaces.html, 'textarea'),
(Namespaces.html, 'tfoot'),
(Namespaces.html, 'th'),
(Namespaces.html, 'thead'),
(Namespaces.html, 'title'),
(Namespaces.html, 'tr'),
(Namespaces.html, 'ul'),
(Namespaces.html, 'wbr'),
(Namespaces.html, 'xmp'),
(Namespaces.svg, 'foreignObject')
};
const htmlIntegrationPointElements = {
(Namespaces.mathml, 'annotaion-xml'),
(Namespaces.svg, 'foreignObject'),
(Namespaces.svg, 'desc'),
(Namespaces.svg, 'title')
};
const mathmlTextIntegrationPointElements = {
(Namespaces.mathml, 'mi'),
(Namespaces.mathml, 'mo'),
(Namespaces.mathml, 'mn'),
(Namespaces.mathml, 'ms'),
(Namespaces.mathml, 'mtext')
};
abstract final class Charcode {
static const int nul = 0x00;
/// '\t'
static const int tab = 0x09;
/// '\n'
static const int lineFeed = 0x0A;
static const int formFeed = 0x0C;
/// '\r'
static const int carriageReturn = 0x0D;
/// ' '
static const int space = 0x20;
/// '"'
static const int doubleQuote = 0x22;
/// '&'
static const int ampersand = 0x26;
/// "'"
static const int singleQuote = 0x27;
/// '-'
static const int hyphen = 0x2D;
/// 0
static const int zero = 0x30;
/// '<'
static const int lessThan = 0x3C;
/// '='
static const int equals = 0x3D;
/// '>'
static const int greaterThan = 0x3E;
/// A
static const int upperA = 0x41;
/// Z
static const int upperZ = 0x5A;
/// '`'
static const int graveAccent = 0x60;
/// a
static const int lowerA = 0x61;
/// z
static const int lowerZ = 0x7A;
}
const spaceCharacters = {
Charcode.space,
Charcode.lineFeed,
Charcode.carriageReturn,
Charcode.tab,
Charcode.formFeed
};
bool isWhitespace(String? char) {
if (char == null) return false;
return isWhitespaceCC(char.codeUnitAt(0));
}
bool isWhitespaceCC(int charCode) {
switch (charCode) {
case Charcode.tab:
case Charcode.lineFeed:
case Charcode.formFeed:
case Charcode.carriageReturn:
case Charcode.space:
return true;
}
return false;
}
const tableInsertModeElements = {'table', 'tbody', 'tfoot', 'thead', 'tr'};
bool isLetterOrDigit(String? char) => isLetter(char) || isDigit(char);
// Note: this is intentially ASCII only
bool isLetter(String? char) {
if (char == null) return false;
final cc = char.codeUnitAt(0);
return cc >= Charcode.lowerA && cc <= Charcode.lowerZ ||
cc >= Charcode.upperA && cc <= Charcode.upperZ;
}
bool isDigit(String? char) {
if (char == null) return false;
final cc = char.codeUnitAt(0);
return cc >= Charcode.zero && cc < Charcode.zero + 10;
}
bool isHexDigit(String? char) {
if (char == null) return false;
switch (char.codeUnitAt(0)) {
case 48:
case 49:
case 50:
case 51:
case 52: // '0' - '4'
case 53:
case 54:
case 55:
case 56:
case 57: // '5' - '9'
case 65:
case 66:
case 67:
case 68:
case 69:
case 70: // 'A' - 'F'
case 97:
case 98:
case 99:
case 100:
case 101:
case 102: // 'a' - 'f'
return true;
}
return false;
}
extension AsciiUpperToLower on String {
/// Converts ASCII characters to lowercase.
///
/// Unlike [String.toLowerCase] does not touch non-ASCII characters.
String toAsciiLowerCase() {
if (codeUnits.any(_isUpperCaseCode)) {
return String.fromCharCodes(codeUnits.map(_asciiToLower));
}
return this;
}
static bool _isUpperCaseCode(int c) =>
c >= Charcode.upperA && c <= Charcode.upperZ;
static int _asciiToLower(int c) =>
_isUpperCaseCode(c) ? c + Charcode.lowerA - Charcode.upperA : c;
}
// Heading elements need to be ordered
const headingElementsList = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];
const headingElements = {'h1', 'h2', 'h3', 'h4', 'h5', 'h6'};
const cdataElements = {'title', 'textarea'};
const rcdataElements = {
'style',
'script',
'xmp',
'iframe',
'noembed',
'noframes',
'noscript'
};
const Map<String, String> entities = {
'AElig': '\xc6',
'AElig;': '\xc6',
'AMP': '&',
'AMP;': '&',
'Aacute': '\xc1',
'Aacute;': '\xc1',
'Abreve;': '\u0102',
'Acirc': '\xc2',
'Acirc;': '\xc2',
'Acy;': '\u0410',
'Afr;': '\u{01d504}',
'Agrave': '\xc0',
'Agrave;': '\xc0',
'Alpha;': '\u0391',
'Amacr;': '\u0100',
'And;': '\u2a53',
'Aogon;': '\u0104',
'Aopf;': '\u{01d538}',
'ApplyFunction;': '\u2061',
'Aring': '\xc5',
'Aring;': '\xc5',
'Ascr;': '\u{01d49c}',
'Assign;': '\u2254',
'Atilde': '\xc3',
'Atilde;': '\xc3',
'Auml': '\xc4',
'Auml;': '\xc4',
'Backslash;': '\u2216',
'Barv;': '\u2ae7',
'Barwed;': '\u2306',
'Bcy;': '\u0411',
'Because;': '\u2235',
'Bernoullis;': '\u212c',
'Beta;': '\u0392',
'Bfr;': '\u{01d505}',
'Bopf;': '\u{01d539}',
'Breve;': '\u02d8',
'Bscr;': '\u212c',
'Bumpeq;': '\u224e',
'CHcy;': '\u0427',
'COPY': '\xa9',
'COPY;': '\xa9',
'Cacute;': '\u0106',
'Cap;': '\u22d2',
'CapitalDifferentialD;': '\u2145',
'Cayleys;': '\u212d',
'Ccaron;': '\u010c',
'Ccedil': '\xc7',
'Ccedil;': '\xc7',
'Ccirc;': '\u0108',
'Cconint;': '\u2230',
'Cdot;': '\u010a',
'Cedilla;': '\xb8',
'CenterDot;': '\xb7',
'Cfr;': '\u212d',
'Chi;': '\u03a7',
'CircleDot;': '\u2299',
'CircleMinus;': '\u2296',
'CirclePlus;': '\u2295',
'CircleTimes;': '\u2297',
'ClockwiseContourIntegral;': '\u2232',
'CloseCurlyDoubleQuote;': '\u201d',
'CloseCurlyQuote;': '\u2019',
'Colon;': '\u2237',
'Colone;': '\u2a74',
'Congruent;': '\u2261',
'Conint;': '\u222f',
'ContourIntegral;': '\u222e',
'Copf;': '\u2102',
'Coproduct;': '\u2210',
'CounterClockwiseContourIntegral;': '\u2233',
'Cross;': '\u2a2f',
'Cscr;': '\u{01d49e}',
'Cup;': '\u22d3',
'CupCap;': '\u224d',
'DD;': '\u2145',
'DDotrahd;': '\u2911',
'DJcy;': '\u0402',
'DScy;': '\u0405',
'DZcy;': '\u040f',
'Dagger;': '\u2021',
'Darr;': '\u21a1',
'Dashv;': '\u2ae4',
'Dcaron;': '\u010e',
'Dcy;': '\u0414',
'Del;': '\u2207',
'Delta;': '\u0394',
'Dfr;': '\u{01d507}',
'DiacriticalAcute;': '\xb4',
'DiacriticalDot;': '\u02d9',
'DiacriticalDoubleAcute;': '\u02dd',
'DiacriticalGrave;': '`',
'DiacriticalTilde;': '\u02dc',
'Diamond;': '\u22c4',
'DifferentialD;': '\u2146',
'Dopf;': '\u{01d53b}',
'Dot;': '\xa8',
'DotDot;': '\u20dc',
'DotEqual;': '\u2250',
'DoubleContourIntegral;': '\u222f',
'DoubleDot;': '\xa8',
'DoubleDownArrow;': '\u21d3',
'DoubleLeftArrow;': '\u21d0',
'DoubleLeftRightArrow;': '\u21d4',
'DoubleLeftTee;': '\u2ae4',
'DoubleLongLeftArrow;': '\u27f8',
'DoubleLongLeftRightArrow;': '\u27fa',
'DoubleLongRightArrow;': '\u27f9',
'DoubleRightArrow;': '\u21d2',
'DoubleRightTee;': '\u22a8',
'DoubleUpArrow;': '\u21d1',
'DoubleUpDownArrow;': '\u21d5',
'DoubleVerticalBar;': '\u2225',
'DownArrow;': '\u2193',
'DownArrowBar;': '\u2913',
'DownArrowUpArrow;': '\u21f5',
'DownBreve;': '\u0311',
'DownLeftRightVector;': '\u2950',
'DownLeftTeeVector;': '\u295e',
'DownLeftVector;': '\u21bd',
'DownLeftVectorBar;': '\u2956',
'DownRightTeeVector;': '\u295f',
'DownRightVector;': '\u21c1',
'DownRightVectorBar;': '\u2957',
'DownTee;': '\u22a4',
'DownTeeArrow;': '\u21a7',
'Downarrow;': '\u21d3',
'Dscr;': '\u{01d49f}',
'Dstrok;': '\u0110',
'ENG;': '\u014a',
'ETH': '\xd0',
'ETH;': '\xd0',
'Eacute': '\xc9',
'Eacute;': '\xc9',
'Ecaron;': '\u011a',
'Ecirc': '\xca',
'Ecirc;': '\xca',
'Ecy;': '\u042d',
'Edot;': '\u0116',
'Efr;': '\u{01d508}',
'Egrave': '\xc8',
'Egrave;': '\xc8',
'Element;': '\u2208',
'Emacr;': '\u0112',
'EmptySmallSquare;': '\u25fb',
'EmptyVerySmallSquare;': '\u25ab',
'Eogon;': '\u0118',
'Eopf;': '\u{01d53c}',
'Epsilon;': '\u0395',
'Equal;': '\u2a75',
'EqualTilde;': '\u2242',
'Equilibrium;': '\u21cc',
'Escr;': '\u2130',
'Esim;': '\u2a73',
'Eta;': '\u0397',
'Euml': '\xcb',
'Euml;': '\xcb',
'Exists;': '\u2203',
'ExponentialE;': '\u2147',
'Fcy;': '\u0424',
'Ffr;': '\u{01d509}',
'FilledSmallSquare;': '\u25fc',
'FilledVerySmallSquare;': '\u25aa',
'Fopf;': '\u{01d53d}',
'ForAll;': '\u2200',
'Fouriertrf;': '\u2131',
'Fscr;': '\u2131',
'GJcy;': '\u0403',
'GT': '>',
'GT;': '>',
'Gamma;': '\u0393',
'Gammad;': '\u03dc',
'Gbreve;': '\u011e',
'Gcedil;': '\u0122',
'Gcirc;': '\u011c',
'Gcy;': '\u0413',
'Gdot;': '\u0120',
'Gfr;': '\u{01d50a}',
'Gg;': '\u22d9',
'Gopf;': '\u{01d53e}',
'GreaterEqual;': '\u2265',
'GreaterEqualLess;': '\u22db',
'GreaterFullEqual;': '\u2267',
'GreaterGreater;': '\u2aa2',
'GreaterLess;': '\u2277',
'GreaterSlantEqual;': '\u2a7e',
'GreaterTilde;': '\u2273',
'Gscr;': '\u{01d4a2}',
'Gt;': '\u226b',
'HARDcy;': '\u042a',
'Hacek;': '\u02c7',
'Hat;': '^',
'Hcirc;': '\u0124',
'Hfr;': '\u210c',
'HilbertSpace;': '\u210b',
'Hopf;': '\u210d',
'HorizontalLine;': '\u2500',
'Hscr;': '\u210b',
'Hstrok;': '\u0126',
'HumpDownHump;': '\u224e',
'HumpEqual;': '\u224f',
'IEcy;': '\u0415',
'IJlig;': '\u0132',
'IOcy;': '\u0401',
'Iacute': '\xcd',
'Iacute;': '\xcd',
'Icirc': '\xce',
'Icirc;': '\xce',
'Icy;': '\u0418',
'Idot;': '\u0130',
'Ifr;': '\u2111',
'Igrave': '\xcc',
'Igrave;': '\xcc',
'Im;': '\u2111',
'Imacr;': '\u012a',
'ImaginaryI;': '\u2148',
'Implies;': '\u21d2',
'Int;': '\u222c',
'Integral;': '\u222b',
'Intersection;': '\u22c2',
'InvisibleComma;': '\u2063',
'InvisibleTimes;': '\u2062',
'Iogon;': '\u012e',
'Iopf;': '\u{01d540}',
'Iota;': '\u0399',
'Iscr;': '\u2110',
'Itilde;': '\u0128',
'Iukcy;': '\u0406',
'Iuml': '\xcf',
'Iuml;': '\xcf',
'Jcirc;': '\u0134',
'Jcy;': '\u0419',
'Jfr;': '\u{01d50d}',
'Jopf;': '\u{01d541}',
'Jscr;': '\u{01d4a5}',
'Jsercy;': '\u0408',
'Jukcy;': '\u0404',
'KHcy;': '\u0425',
'KJcy;': '\u040c',
'Kappa;': '\u039a',
'Kcedil;': '\u0136',
'Kcy;': '\u041a',
'Kfr;': '\u{01d50e}',
'Kopf;': '\u{01d542}',
'Kscr;': '\u{01d4a6}',
'LJcy;': '\u0409',
'LT': '<',
'LT;': '<',
'Lacute;': '\u0139',
'Lambda;': '\u039b',
'Lang;': '\u27ea',
'Laplacetrf;': '\u2112',
'Larr;': '\u219e',
'Lcaron;': '\u013d',
'Lcedil;': '\u013b',
'Lcy;': '\u041b',
'LeftAngleBracket;': '\u27e8',
'LeftArrow;': '\u2190',
'LeftArrowBar;': '\u21e4',
'LeftArrowRightArrow;': '\u21c6',
'LeftCeiling;': '\u2308',
'LeftDoubleBracket;': '\u27e6',
'LeftDownTeeVector;': '\u2961',
'LeftDownVector;': '\u21c3',
'LeftDownVectorBar;': '\u2959',
'LeftFloor;': '\u230a',
'LeftRightArrow;': '\u2194',
'LeftRightVector;': '\u294e',
'LeftTee;': '\u22a3',
'LeftTeeArrow;': '\u21a4',
'LeftTeeVector;': '\u295a',
'LeftTriangle;': '\u22b2',
'LeftTriangleBar;': '\u29cf',
'LeftTriangleEqual;': '\u22b4',
'LeftUpDownVector;': '\u2951',
'LeftUpTeeVector;': '\u2960',
'LeftUpVector;': '\u21bf',
'LeftUpVectorBar;': '\u2958',
'LeftVector;': '\u21bc',
'LeftVectorBar;': '\u2952',
'Leftarrow;': '\u21d0',
'Leftrightarrow;': '\u21d4',
'LessEqualGreater;': '\u22da',
'LessFullEqual;': '\u2266',
'LessGreater;': '\u2276',
'LessLess;': '\u2aa1',
'LessSlantEqual;': '\u2a7d',
'LessTilde;': '\u2272',
'Lfr;': '\u{01d50f}',
'Ll;': '\u22d8',
'Lleftarrow;': '\u21da',
'Lmidot;': '\u013f',
'LongLeftArrow;': '\u27f5',
'LongLeftRightArrow;': '\u27f7',
'LongRightArrow;': '\u27f6',
'Longleftarrow;': '\u27f8',
'Longleftrightarrow;': '\u27fa',
'Longrightarrow;': '\u27f9',
'Lopf;': '\u{01d543}',
'LowerLeftArrow;': '\u2199',
'LowerRightArrow;': '\u2198',
'Lscr;': '\u2112',
'Lsh;': '\u21b0',
'Lstrok;': '\u0141',
'Lt;': '\u226a',
'Map;': '\u2905',
'Mcy;': '\u041c',
'MediumSpace;': '\u205f',
'Mellintrf;': '\u2133',
'Mfr;': '\u{01d510}',
'MinusPlus;': '\u2213',
'Mopf;': '\u{01d544}',
'Mscr;': '\u2133',
'Mu;': '\u039c',
'NJcy;': '\u040a',
'Nacute;': '\u0143',
'Ncaron;': '\u0147',
'Ncedil;': '\u0145',
'Ncy;': '\u041d',
'NegativeMediumSpace;': '\u200b',
'NegativeThickSpace;': '\u200b',
'NegativeThinSpace;': '\u200b',
'NegativeVeryThinSpace;': '\u200b',
'NestedGreaterGreater;': '\u226b',
'NestedLessLess;': '\u226a',
'NewLine;': '\n',
'Nfr;': '\u{01d511}',
'NoBreak;': '\u2060',
'NonBreakingSpace;': '\xa0',
'Nopf;': '\u2115',
'Not;': '\u2aec',
'NotCongruent;': '\u2262',
'NotCupCap;': '\u226d',
'NotDoubleVerticalBar;': '\u2226',
'NotElement;': '\u2209',
'NotEqual;': '\u2260',
'NotEqualTilde;': '\u2242\u0338',
'NotExists;': '\u2204',
'NotGreater;': '\u226f',
'NotGreaterEqual;': '\u2271',
'NotGreaterFullEqual;': '\u2267\u0338',
'NotGreaterGreater;': '\u226b\u0338',
'NotGreaterLess;': '\u2279',
'NotGreaterSlantEqual;': '\u2a7e\u0338',
'NotGreaterTilde;': '\u2275',
'NotHumpDownHump;': '\u224e\u0338',
'NotHumpEqual;': '\u224f\u0338',
'NotLeftTriangle;': '\u22ea',
'NotLeftTriangleBar;': '\u29cf\u0338',
'NotLeftTriangleEqual;': '\u22ec',
'NotLess;': '\u226e',
'NotLessEqual;': '\u2270',
'NotLessGreater;': '\u2278',
'NotLessLess;': '\u226a\u0338',
'NotLessSlantEqual;': '\u2a7d\u0338',
'NotLessTilde;': '\u2274',
'NotNestedGreaterGreater;': '\u2aa2\u0338',
'NotNestedLessLess;': '\u2aa1\u0338',
'NotPrecedes;': '\u2280',
'NotPrecedesEqual;': '\u2aaf\u0338',
'NotPrecedesSlantEqual;': '\u22e0',
'NotReverseElement;': '\u220c',
'NotRightTriangle;': '\u22eb',
'NotRightTriangleBar;': '\u29d0\u0338',
'NotRightTriangleEqual;': '\u22ed',
'NotSquareSubset;': '\u228f\u0338',
'NotSquareSubsetEqual;': '\u22e2',
'NotSquareSuperset;': '\u2290\u0338',
'NotSquareSupersetEqual;': '\u22e3',
'NotSubset;': '\u2282\u20d2',
'NotSubsetEqual;': '\u2288',
'NotSucceeds;': '\u2281',
'NotSucceedsEqual;': '\u2ab0\u0338',
'NotSucceedsSlantEqual;': '\u22e1',
'NotSucceedsTilde;': '\u227f\u0338',
'NotSuperset;': '\u2283\u20d2',
'NotSupersetEqual;': '\u2289',
'NotTilde;': '\u2241',
'NotTildeEqual;': '\u2244',
'NotTildeFullEqual;': '\u2247',
'NotTildeTilde;': '\u2249',
'NotVerticalBar;': '\u2224',
'Nscr;': '\u{01d4a9}',
'Ntilde': '\xd1',
'Ntilde;': '\xd1',
'Nu;': '\u039d',
'OElig;': '\u0152',
'Oacute': '\xd3',
'Oacute;': '\xd3',
'Ocirc': '\xd4',
'Ocirc;': '\xd4',
'Ocy;': '\u041e',
'Odblac;': '\u0150',
'Ofr;': '\u{01d512}',
'Ograve': '\xd2',
'Ograve;': '\xd2',
'Omacr;': '\u014c',
'Omega;': '\u03a9',
'Omicron;': '\u039f',
'Oopf;': '\u{01d546}',
'OpenCurlyDoubleQuote;': '\u201c',
'OpenCurlyQuote;': '\u2018',
'Or;': '\u2a54',
'Oscr;': '\u{01d4aa}',
'Oslash': '\xd8',
'Oslash;': '\xd8',
'Otilde': '\xd5',
'Otilde;': '\xd5',
'Otimes;': '\u2a37',
'Ouml': '\xd6',
'Ouml;': '\xd6',
'OverBar;': '\u203e',
'OverBrace;': '\u23de',
'OverBracket;': '\u23b4',
'OverParenthesis;': '\u23dc',
'PartialD;': '\u2202',
'Pcy;': '\u041f',
'Pfr;': '\u{01d513}',
'Phi;': '\u03a6',
'Pi;': '\u03a0',
'PlusMinus;': '\xb1',
'Poincareplane;': '\u210c',
'Popf;': '\u2119',
'Pr;': '\u2abb',
'Precedes;': '\u227a',
'PrecedesEqual;': '\u2aaf',
'PrecedesSlantEqual;': '\u227c',
'PrecedesTilde;': '\u227e',
'Prime;': '\u2033',
'Product;': '\u220f',
'Proportion;': '\u2237',
'Proportional;': '\u221d',
'Pscr;': '\u{01d4ab}',
'Psi;': '\u03a8',
'QUOT': '"',
'QUOT;': '"',
'Qfr;': '\u{01d514}',
'Qopf;': '\u211a',
'Qscr;': '\u{01d4ac}',
'RBarr;': '\u2910',
'REG': '\xae',
'REG;': '\xae',
'Racute;': '\u0154',
'Rang;': '\u27eb',
'Rarr;': '\u21a0',
'Rarrtl;': '\u2916',
'Rcaron;': '\u0158',
'Rcedil;': '\u0156',
'Rcy;': '\u0420',
'Re;': '\u211c',
'ReverseElement;': '\u220b',
'ReverseEquilibrium;': '\u21cb',
'ReverseUpEquilibrium;': '\u296f',
'Rfr;': '\u211c',
'Rho;': '\u03a1',
'RightAngleBracket;': '\u27e9',
'RightArrow;': '\u2192',
'RightArrowBar;': '\u21e5',
'RightArrowLeftArrow;': '\u21c4',
'RightCeiling;': '\u2309',
'RightDoubleBracket;': '\u27e7',
'RightDownTeeVector;': '\u295d',
'RightDownVector;': '\u21c2',
'RightDownVectorBar;': '\u2955',
'RightFloor;': '\u230b',
'RightTee;': '\u22a2',
'RightTeeArrow;': '\u21a6',
'RightTeeVector;': '\u295b',
'RightTriangle;': '\u22b3',
'RightTriangleBar;': '\u29d0',
'RightTriangleEqual;': '\u22b5',
'RightUpDownVector;': '\u294f',
'RightUpTeeVector;': '\u295c',
'RightUpVector;': '\u21be',
'RightUpVectorBar;': '\u2954',
'RightVector;': '\u21c0',
'RightVectorBar;': '\u2953',
'Rightarrow;': '\u21d2',
'Ropf;': '\u211d',
'RoundImplies;': '\u2970',
'Rrightarrow;': '\u21db',
'Rscr;': '\u211b',
'Rsh;': '\u21b1',
'RuleDelayed;': '\u29f4',
'SHCHcy;': '\u0429',
'SHcy;': '\u0428',
'SOFTcy;': '\u042c',
'Sacute;': '\u015a',
'Sc;': '\u2abc',
'Scaron;': '\u0160',
'Scedil;': '\u015e',
'Scirc;': '\u015c',
'Scy;': '\u0421',
'Sfr;': '\u{01d516}',
'ShortDownArrow;': '\u2193',
'ShortLeftArrow;': '\u2190',
'ShortRightArrow;': '\u2192',
'ShortUpArrow;': '\u2191',
'Sigma;': '\u03a3',
'SmallCircle;': '\u2218',
'Sopf;': '\u{01d54a}',
'Sqrt;': '\u221a',
'Square;': '\u25a1',
'SquareIntersection;': '\u2293',
'SquareSubset;': '\u228f',
'SquareSubsetEqual;': '\u2291',
'SquareSuperset;': '\u2290',
'SquareSupersetEqual;': '\u2292',
'SquareUnion;': '\u2294',
'Sscr;': '\u{01d4ae}',
'Star;': '\u22c6',
'Sub;': '\u22d0',
'Subset;': '\u22d0',
'SubsetEqual;': '\u2286',
'Succeeds;': '\u227b',
'SucceedsEqual;': '\u2ab0',
'SucceedsSlantEqual;': '\u227d',
'SucceedsTilde;': '\u227f',
'SuchThat;': '\u220b',
'Sum;': '\u2211',
'Sup;': '\u22d1',
'Superset;': '\u2283',
'SupersetEqual;': '\u2287',
'Supset;': '\u22d1',
'THORN': '\xde',
'THORN;': '\xde',
'TRADE;': '\u2122',
'TSHcy;': '\u040b',
'TScy;': '\u0426',
'Tab;': '\t',
'Tau;': '\u03a4',
'Tcaron;': '\u0164',
'Tcedil;': '\u0162',
'Tcy;': '\u0422',
'Tfr;': '\u{01d517}',
'Therefore;': '\u2234',
'Theta;': '\u0398',
'ThickSpace;': '\u205f\u200a',
'ThinSpace;': '\u2009',
'Tilde;': '\u223c',
'TildeEqual;': '\u2243',
'TildeFullEqual;': '\u2245',
'TildeTilde;': '\u2248',
'Topf;': '\u{01d54b}',
'TripleDot;': '\u20db',
'Tscr;': '\u{01d4af}',
'Tstrok;': '\u0166',
'Uacute': '\xda',
'Uacute;': '\xda',
'Uarr;': '\u219f',
'Uarrocir;': '\u2949',
'Ubrcy;': '\u040e',
'Ubreve;': '\u016c',
'Ucirc': '\xdb',
'Ucirc;': '\xdb',
'Ucy;': '\u0423',
'Udblac;': '\u0170',
'Ufr;': '\u{01d518}',
'Ugrave': '\xd9',
'Ugrave;': '\xd9',
'Umacr;': '\u016a',
'UnderBar;': '_',
'UnderBrace;': '\u23df',
'UnderBracket;': '\u23b5',
'UnderParenthesis;': '\u23dd',
'Union;': '\u22c3',
'UnionPlus;': '\u228e',
'Uogon;': '\u0172',
'Uopf;': '\u{01d54c}',
'UpArrow;': '\u2191',
'UpArrowBar;': '\u2912',
'UpArrowDownArrow;': '\u21c5',
'UpDownArrow;': '\u2195',
'UpEquilibrium;': '\u296e',
'UpTee;': '\u22a5',
'UpTeeArrow;': '\u21a5',
'Uparrow;': '\u21d1',
'Updownarrow;': '\u21d5',
'UpperLeftArrow;': '\u2196',
'UpperRightArrow;': '\u2197',
'Upsi;': '\u03d2',
'Upsilon;': '\u03a5',
'Uring;': '\u016e',
'Uscr;': '\u{01d4b0}',
'Utilde;': '\u0168',
'Uuml': '\xdc',
'Uuml;': '\xdc',
'VDash;': '\u22ab',
'Vbar;': '\u2aeb',
'Vcy;': '\u0412',
'Vdash;': '\u22a9',
'Vdashl;': '\u2ae6',
'Vee;': '\u22c1',
'Verbar;': '\u2016',
'Vert;': '\u2016',
'VerticalBar;': '\u2223',
'VerticalLine;': '|',
'VerticalSeparator;': '\u2758',
'VerticalTilde;': '\u2240',
'VeryThinSpace;': '\u200a',
'Vfr;': '\u{01d519}',
'Vopf;': '\u{01d54d}',
'Vscr;': '\u{01d4b1}',
'Vvdash;': '\u22aa',
'Wcirc;': '\u0174',
'Wedge;': '\u22c0',
'Wfr;': '\u{01d51a}',
'Wopf;': '\u{01d54e}',
'Wscr;': '\u{01d4b2}',
'Xfr;': '\u{01d51b}',
'Xi;': '\u039e',
'Xopf;': '\u{01d54f}',
'Xscr;': '\u{01d4b3}',
'YAcy;': '\u042f',
'YIcy;': '\u0407',
'YUcy;': '\u042e',
'Yacute': '\xdd',
'Yacute;': '\xdd',
'Ycirc;': '\u0176',
'Ycy;': '\u042b',
'Yfr;': '\u{01d51c}',
'Yopf;': '\u{01d550}',
'Yscr;': '\u{01d4b4}',
'Yuml;': '\u0178',
'ZHcy;': '\u0416',
'Zacute;': '\u0179',
'Zcaron;': '\u017d',
'Zcy;': '\u0417',
'Zdot;': '\u017b',
'ZeroWidthSpace;': '\u200b',
'Zeta;': '\u0396',
'Zfr;': '\u2128',
'Zopf;': '\u2124',
'Zscr;': '\u{01d4b5}',
'aacute': '\xe1',
'aacute;': '\xe1',
'abreve;': '\u0103',
'ac;': '\u223e',
'acE;': '\u223e\u0333',
'acd;': '\u223f',
'acirc': '\xe2',
'acirc;': '\xe2',
'acute': '\xb4',
'acute;': '\xb4',
'acy;': '\u0430',
'aelig': '\xe6',
'aelig;': '\xe6',
'af;': '\u2061',
'afr;': '\u{01d51e}',
'agrave': '\xe0',
'agrave;': '\xe0',
'alefsym;': '\u2135',
'aleph;': '\u2135',
'alpha;': '\u03b1',
'amacr;': '\u0101',
'amalg;': '\u2a3f',
'amp': '&',
'amp;': '&',
'and;': '\u2227',
'andand;': '\u2a55',
'andd;': '\u2a5c',
'andslope;': '\u2a58',
'andv;': '\u2a5a',
'ang;': '\u2220',
'ange;': '\u29a4',
'angle;': '\u2220',
'angmsd;': '\u2221',
'angmsdaa;': '\u29a8',
'angmsdab;': '\u29a9',
'angmsdac;': '\u29aa',
'angmsdad;': '\u29ab',
'angmsdae;': '\u29ac',
'angmsdaf;': '\u29ad',
'angmsdag;': '\u29ae',
'angmsdah;': '\u29af',
'angrt;': '\u221f',
'angrtvb;': '\u22be',
'angrtvbd;': '\u299d',
'angsph;': '\u2222',
'angst;': '\xc5',
'angzarr;': '\u237c',
'aogon;': '\u0105',
'aopf;': '\u{01d552}',
'ap;': '\u2248',
'apE;': '\u2a70',
'apacir;': '\u2a6f',
'ape;': '\u224a',
'apid;': '\u224b',
'apos;': "'",
'approx;': '\u2248',
'approxeq;': '\u224a',
'aring': '\xe5',
'aring;': '\xe5',
'ascr;': '\u{01d4b6}',
'ast;': '*',
'asymp;': '\u2248',
'asympeq;': '\u224d',
'atilde': '\xe3',
'atilde;': '\xe3',
'auml': '\xe4',
'auml;': '\xe4',
'awconint;': '\u2233',
'awint;': '\u2a11',
'bNot;': '\u2aed',
'backcong;': '\u224c',
'backepsilon;': '\u03f6',
'backprime;': '\u2035',
'backsim;': '\u223d',
'backsimeq;': '\u22cd',
'barvee;': '\u22bd',
'barwed;': '\u2305',
'barwedge;': '\u2305',
'bbrk;': '\u23b5',
'bbrktbrk;': '\u23b6',
'bcong;': '\u224c',
'bcy;': '\u0431',
'bdquo;': '\u201e',
'becaus;': '\u2235',
'because;': '\u2235',
'bemptyv;': '\u29b0',
'bepsi;': '\u03f6',
'bernou;': '\u212c',
'beta;': '\u03b2',
'beth;': '\u2136',
'between;': '\u226c',
'bfr;': '\u{01d51f}',
'bigcap;': '\u22c2',
'bigcirc;': '\u25ef',
'bigcup;': '\u22c3',
'bigodot;': '\u2a00',
'bigoplus;': '\u2a01',
'bigotimes;': '\u2a02',
'bigsqcup;': '\u2a06',
'bigstar;': '\u2605',
'bigtriangledown;': '\u25bd',
'bigtriangleup;': '\u25b3',
'biguplus;': '\u2a04',
'bigvee;': '\u22c1',
'bigwedge;': '\u22c0',
'bkarow;': '\u290d',
'blacklozenge;': '\u29eb',
'blacksquare;': '\u25aa',
'blacktriangle;': '\u25b4',
'blacktriangledown;': '\u25be',
'blacktriangleleft;': '\u25c2',
'blacktriangleright;': '\u25b8',
'blank;': '\u2423',
'blk12;': '\u2592',
'blk14;': '\u2591',
'blk34;': '\u2593',
'block;': '\u2588',
'bne;': '=\u20e5',
'bnequiv;': '\u2261\u20e5',
'bnot;': '\u2310',
'bopf;': '\u{01d553}',
'bot;': '\u22a5',
'bottom;': '\u22a5',
'bowtie;': '\u22c8',
'boxDL;': '\u2557',
'boxDR;': '\u2554',
'boxDl;': '\u2556',
'boxDr;': '\u2553',
'boxH;': '\u2550',
'boxHD;': '\u2566',
'boxHU;': '\u2569',
'boxHd;': '\u2564',
'boxHu;': '\u2567',
'boxUL;': '\u255d',
'boxUR;': '\u255a',
'boxUl;': '\u255c',
'boxUr;': '\u2559',
'boxV;': '\u2551',
'boxVH;': '\u256c',
'boxVL;': '\u2563',
'boxVR;': '\u2560',
'boxVh;': '\u256b',
'boxVl;': '\u2562',
'boxVr;': '\u255f',
'boxbox;': '\u29c9',
'boxdL;': '\u2555',
'boxdR;': '\u2552',
'boxdl;': '\u2510',
'boxdr;': '\u250c',
'boxh;': '\u2500',
'boxhD;': '\u2565',
'boxhU;': '\u2568',
'boxhd;': '\u252c',
'boxhu;': '\u2534',
'boxminus;': '\u229f',
'boxplus;': '\u229e',
'boxtimes;': '\u22a0',
'boxuL;': '\u255b',
'boxuR;': '\u2558',
'boxul;': '\u2518',
'boxur;': '\u2514',
'boxv;': '\u2502',
'boxvH;': '\u256a',
'boxvL;': '\u2561',
'boxvR;': '\u255e',
'boxvh;': '\u253c',
'boxvl;': '\u2524',
'boxvr;': '\u251c',
'bprime;': '\u2035',
'breve;': '\u02d8',
'brvbar': '\xa6',
'brvbar;': '\xa6',
'bscr;': '\u{01d4b7}',
'bsemi;': '\u204f',
'bsim;': '\u223d',
'bsime;': '\u22cd',
'bsol;': '\\',
'bsolb;': '\u29c5',
'bsolhsub;': '\u27c8',
'bull;': '\u2022',
'bullet;': '\u2022',
'bump;': '\u224e',
'bumpE;': '\u2aae',
'bumpe;': '\u224f',
'bumpeq;': '\u224f',
'cacute;': '\u0107',
'cap;': '\u2229',
'capand;': '\u2a44',
'capbrcup;': '\u2a49',
'capcap;': '\u2a4b',
'capcup;': '\u2a47',
'capdot;': '\u2a40',
'caps;': '\u2229\ufe00',
'caret;': '\u2041',
'caron;': '\u02c7',
'ccaps;': '\u2a4d',
'ccaron;': '\u010d',
'ccedil': '\xe7',
'ccedil;': '\xe7',
'ccirc;': '\u0109',
'ccups;': '\u2a4c',
'ccupssm;': '\u2a50',
'cdot;': '\u010b',
'cedil': '\xb8',
'cedil;': '\xb8',
'cemptyv;': '\u29b2',
'cent': '\xa2',
'cent;': '\xa2',
'centerdot;': '\xb7',
'cfr;': '\u{01d520}',
'chcy;': '\u0447',
'check;': '\u2713',
'checkmark;': '\u2713',
'chi;': '\u03c7',
'cir;': '\u25cb',
'cirE;': '\u29c3',
'circ;': '\u02c6',
'circeq;': '\u2257',
'circlearrowleft;': '\u21ba',
'circlearrowright;': '\u21bb',
'circledR;': '\xae',
'circledS;': '\u24c8',
'circledast;': '\u229b',
'circledcirc;': '\u229a',
'circleddash;': '\u229d',
'cire;': '\u2257',
'cirfnint;': '\u2a10',
'cirmid;': '\u2aef',
'cirscir;': '\u29c2',
'clubs;': '\u2663',
'clubsuit;': '\u2663',
'colon;': ':',
'colone;': '\u2254',
'coloneq;': '\u2254',
'comma;': ',',
'commat;': '@',
'comp;': '\u2201',
'compfn;': '\u2218',
'complement;': '\u2201',
'complexes;': '\u2102',
'cong;': '\u2245',
'congdot;': '\u2a6d',
'conint;': '\u222e',
'copf;': '\u{01d554}',
'coprod;': '\u2210',
'copy': '\xa9',
'copy;': '\xa9',
'copysr;': '\u2117',
'crarr;': '\u21b5',
'cross;': '\u2717',
'cscr;': '\u{01d4b8}',
'csub;': '\u2acf',
'csube;': '\u2ad1',
'csup;': '\u2ad0',
'csupe;': '\u2ad2',
'ctdot;': '\u22ef',
'cudarrl;': '\u2938',
'cudarrr;': '\u2935',
'cuepr;': '\u22de',
'cuesc;': '\u22df',
'cularr;': '\u21b6',
'cularrp;': '\u293d',
'cup;': '\u222a',
'cupbrcap;': '\u2a48',
'cupcap;': '\u2a46',
'cupcup;': '\u2a4a',
'cupdot;': '\u228d',
'cupor;': '\u2a45',
'cups;': '\u222a\ufe00',
'curarr;': '\u21b7',
'curarrm;': '\u293c',
'curlyeqprec;': '\u22de',
'curlyeqsucc;': '\u22df',
'curlyvee;': '\u22ce',
'curlywedge;': '\u22cf',
'curren': '\xa4',
'curren;': '\xa4',
'curvearrowleft;': '\u21b6',
'curvearrowright;': '\u21b7',
'cuvee;': '\u22ce',
'cuwed;': '\u22cf',
'cwconint;': '\u2232',
'cwint;': '\u2231',
'cylcty;': '\u232d',
'dArr;': '\u21d3',
'dHar;': '\u2965',
'dagger;': '\u2020',
'daleth;': '\u2138',
'darr;': '\u2193',
'dash;': '\u2010',
'dashv;': '\u22a3',
'dbkarow;': '\u290f',
'dblac;': '\u02dd',
'dcaron;': '\u010f',
'dcy;': '\u0434',
'dd;': '\u2146',
'ddagger;': '\u2021',
'ddarr;': '\u21ca',
'ddotseq;': '\u2a77',
'deg': '\xb0',
'deg;': '\xb0',
'delta;': '\u03b4',
'demptyv;': '\u29b1',
'dfisht;': '\u297f',
'dfr;': '\u{01d521}',
'dharl;': '\u21c3',
'dharr;': '\u21c2',
'diam;': '\u22c4',
'diamond;': '\u22c4',
'diamondsuit;': '\u2666',
'diams;': '\u2666',
'die;': '\xa8',
'digamma;': '\u03dd',
'disin;': '\u22f2',
'div;': '\xf7',
'divide': '\xf7',
'divide;': '\xf7',
'divideontimes;': '\u22c7',
'divonx;': '\u22c7',
'djcy;': '\u0452',
'dlcorn;': '\u231e',
'dlcrop;': '\u230d',
'dollar;': '\$',
'dopf;': '\u{01d555}',
'dot;': '\u02d9',
'doteq;': '\u2250',
'doteqdot;': '\u2251',
'dotminus;': '\u2238',
'dotplus;': '\u2214',
'dotsquare;': '\u22a1',
'doublebarwedge;': '\u2306',
'downarrow;': '\u2193',
'downdownarrows;': '\u21ca',
'downharpoonleft;': '\u21c3',
'downharpoonright;': '\u21c2',
'drbkarow;': '\u2910',
'drcorn;': '\u231f',
'drcrop;': '\u230c',
'dscr;': '\u{01d4b9}',
'dscy;': '\u0455',
'dsol;': '\u29f6',
'dstrok;': '\u0111',
'dtdot;': '\u22f1',
'dtri;': '\u25bf',
'dtrif;': '\u25be',
'duarr;': '\u21f5',
'duhar;': '\u296f',
'dwangle;': '\u29a6',
'dzcy;': '\u045f',
'dzigrarr;': '\u27ff',
'eDDot;': '\u2a77',
'eDot;': '\u2251',
'eacute': '\xe9',
'eacute;': '\xe9',
'easter;': '\u2a6e',
'ecaron;': '\u011b',
'ecir;': '\u2256',
'ecirc': '\xea',
'ecirc;': '\xea',
'ecolon;': '\u2255',
'ecy;': '\u044d',
'edot;': '\u0117',
'ee;': '\u2147',
'efDot;': '\u2252',
'efr;': '\u{01d522}',
'eg;': '\u2a9a',
'egrave': '\xe8',
'egrave;': '\xe8',
'egs;': '\u2a96',
'egsdot;': '\u2a98',
'el;': '\u2a99',
'elinters;': '\u23e7',
'ell;': '\u2113',
'els;': '\u2a95',
'elsdot;': '\u2a97',
'emacr;': '\u0113',
'empty;': '\u2205',
'emptyset;': '\u2205',
'emptyv;': '\u2205',
'emsp13;': '\u2004',
'emsp14;': '\u2005',
'emsp;': '\u2003',
'eng;': '\u014b',
'ensp;': '\u2002',
'eogon;': '\u0119',
'eopf;': '\u{01d556}',
'epar;': '\u22d5',
'eparsl;': '\u29e3',
'eplus;': '\u2a71',
'epsi;': '\u03b5',
'epsilon;': '\u03b5',
'epsiv;': '\u03f5',
'eqcirc;': '\u2256',
'eqcolon;': '\u2255',
'eqsim;': '\u2242',
'eqslantgtr;': '\u2a96',
'eqslantless;': '\u2a95',
'equals;': '=',
'equest;': '\u225f',
'equiv;': '\u2261',
'equivDD;': '\u2a78',
'eqvparsl;': '\u29e5',
'erDot;': '\u2253',
'erarr;': '\u2971',
'escr;': '\u212f',
'esdot;': '\u2250',
'esim;': '\u2242',
'eta;': '\u03b7',
'eth': '\xf0',
'eth;': '\xf0',
'euml': '\xeb',
'euml;': '\xeb',
'euro;': '\u20ac',
'excl;': '!',
'exist;': '\u2203',
'expectation;': '\u2130',
'exponentiale;': '\u2147',
'fallingdotseq;': '\u2252',
'fcy;': '\u0444',
'female;': '\u2640',
'ffilig;': '\ufb03',
'fflig;': '\ufb00',
'ffllig;': '\ufb04',
'ffr;': '\u{01d523}',
'filig;': '\ufb01',
'fjlig;': 'fj',
'flat;': '\u266d',
'fllig;': '\ufb02',
'fltns;': '\u25b1',
'fnof;': '\u0192',
'fopf;': '\u{01d557}',
'forall;': '\u2200',
'fork;': '\u22d4',
'forkv;': '\u2ad9',
'fpartint;': '\u2a0d',
'frac12': '\xbd',
'frac12;': '\xbd',
'frac13;': '\u2153',
'frac14': '\xbc',
'frac14;': '\xbc',
'frac15;': '\u2155',
'frac16;': '\u2159',
'frac18;': '\u215b',
'frac23;': '\u2154',
'frac25;': '\u2156',
'frac34': '\xbe',
'frac34;': '\xbe',
'frac35;': '\u2157',
'frac38;': '\u215c',
'frac45;': '\u2158',
'frac56;': '\u215a',
'frac58;': '\u215d',
'frac78;': '\u215e',
'frasl;': '\u2044',
'frown;': '\u2322',
'fscr;': '\u{01d4bb}',
'gE;': '\u2267',
'gEl;': '\u2a8c',
'gacute;': '\u01f5',
'gamma;': '\u03b3',
'gammad;': '\u03dd',
'gap;': '\u2a86',
'gbreve;': '\u011f',
'gcirc;': '\u011d',
'gcy;': '\u0433',
'gdot;': '\u0121',
'ge;': '\u2265',
'gel;': '\u22db',
'geq;': '\u2265',
'geqq;': '\u2267',
'geqslant;': '\u2a7e',
'ges;': '\u2a7e',
'gescc;': '\u2aa9',
'gesdot;': '\u2a80',
'gesdoto;': '\u2a82',
'gesdotol;': '\u2a84',
'gesl;': '\u22db\ufe00',
'gesles;': '\u2a94',
'gfr;': '\u{01d524}',
'gg;': '\u226b',
'ggg;': '\u22d9',
'gimel;': '\u2137',
'gjcy;': '\u0453',
'gl;': '\u2277',
'glE;': '\u2a92',
'gla;': '\u2aa5',
'glj;': '\u2aa4',
'gnE;': '\u2269',
'gnap;': '\u2a8a',
'gnapprox;': '\u2a8a',
'gne;': '\u2a88',
'gneq;': '\u2a88',
'gneqq;': '\u2269',
'gnsim;': '\u22e7',
'gopf;': '\u{01d558}',
'grave;': '`',
'gscr;': '\u210a',
'gsim;': '\u2273',
'gsime;': '\u2a8e',
'gsiml;': '\u2a90',
'gt': '>',
'gt;': '>',
'gtcc;': '\u2aa7',
'gtcir;': '\u2a7a',
'gtdot;': '\u22d7',
'gtlPar;': '\u2995',
'gtquest;': '\u2a7c',
'gtrapprox;': '\u2a86',
'gtrarr;': '\u2978',
'gtrdot;': '\u22d7',
'gtreqless;': '\u22db',
'gtreqqless;': '\u2a8c',
'gtrless;': '\u2277',
'gtrsim;': '\u2273',
'gvertneqq;': '\u2269\ufe00',
'gvnE;': '\u2269\ufe00',
'hArr;': '\u21d4',
'hairsp;': '\u200a',
'half;': '\xbd',
'hamilt;': '\u210b',
'hardcy;': '\u044a',
'harr;': '\u2194',
'harrcir;': '\u2948',
'harrw;': '\u21ad',
'hbar;': '\u210f',
'hcirc;': '\u0125',
'hearts;': '\u2665',
'heartsuit;': '\u2665',
'hellip;': '\u2026',
'hercon;': '\u22b9',
'hfr;': '\u{01d525}',
'hksearow;': '\u2925',
'hkswarow;': '\u2926',
'hoarr;': '\u21ff',
'homtht;': '\u223b',
'hookleftarrow;': '\u21a9',
'hookrightarrow;': '\u21aa',
'hopf;': '\u{01d559}',
'horbar;': '\u2015',
'hscr;': '\u{01d4bd}',
'hslash;': '\u210f',
'hstrok;': '\u0127',
'hybull;': '\u2043',
'hyphen;': '\u2010',
'iacute': '\xed',
'iacute;': '\xed',
'ic;': '\u2063',
'icirc': '\xee',
'icirc;': '\xee',
'icy;': '\u0438',
'iecy;': '\u0435',
'iexcl': '\xa1',
'iexcl;': '\xa1',
'iff;': '\u21d4',
'ifr;': '\u{01d526}',
'igrave': '\xec',
'igrave;': '\xec',
'ii;': '\u2148',
'iiiint;': '\u2a0c',
'iiint;': '\u222d',
'iinfin;': '\u29dc',
'iiota;': '\u2129',
'ijlig;': '\u0133',
'imacr;': '\u012b',
'image;': '\u2111',
'imagline;': '\u2110',
'imagpart;': '\u2111',
'imath;': '\u0131',
'imof;': '\u22b7',
'imped;': '\u01b5',
'in;': '\u2208',
'incare;': '\u2105',
'infin;': '\u221e',
'infintie;': '\u29dd',
'inodot;': '\u0131',
'int;': '\u222b',
'intcal;': '\u22ba',
'integers;': '\u2124',
'intercal;': '\u22ba',
'intlarhk;': '\u2a17',
'intprod;': '\u2a3c',
'iocy;': '\u0451',
'iogon;': '\u012f',
'iopf;': '\u{01d55a}',
'iota;': '\u03b9',
'iprod;': '\u2a3c',
'iquest': '\xbf',
'iquest;': '\xbf',
'iscr;': '\u{01d4be}',
'isin;': '\u2208',
'isinE;': '\u22f9',
'isindot;': '\u22f5',
'isins;': '\u22f4',
'isinsv;': '\u22f3',
'isinv;': '\u2208',
'it;': '\u2062',
'itilde;': '\u0129',
'iukcy;': '\u0456',
'iuml': '\xef',
'iuml;': '\xef',
'jcirc;': '\u0135',
'jcy;': '\u0439',
'jfr;': '\u{01d527}',
'jmath;': '\u0237',
'jopf;': '\u{01d55b}',
'jscr;': '\u{01d4bf}',
'jsercy;': '\u0458',
'jukcy;': '\u0454',
'kappa;': '\u03ba',
'kappav;': '\u03f0',
'kcedil;': '\u0137',
'kcy;': '\u043a',
'kfr;': '\u{01d528}',
'kgreen;': '\u0138',
'khcy;': '\u0445',
'kjcy;': '\u045c',
'kopf;': '\u{01d55c}',
'kscr;': '\u{01d4c0}',
'lAarr;': '\u21da',
'lArr;': '\u21d0',
'lAtail;': '\u291b',
'lBarr;': '\u290e',
'lE;': '\u2266',
'lEg;': '\u2a8b',
'lHar;': '\u2962',
'lacute;': '\u013a',
'laemptyv;': '\u29b4',
'lagran;': '\u2112',
'lambda;': '\u03bb',
'lang;': '\u27e8',
'langd;': '\u2991',
'langle;': '\u27e8',
'lap;': '\u2a85',
'laquo': '\xab',
'laquo;': '\xab',
'larr;': '\u2190',
'larrb;': '\u21e4',
'larrbfs;': '\u291f',
'larrfs;': '\u291d',
'larrhk;': '\u21a9',
'larrlp;': '\u21ab',
'larrpl;': '\u2939',
'larrsim;': '\u2973',
'larrtl;': '\u21a2',
'lat;': '\u2aab',
'latail;': '\u2919',
'late;': '\u2aad',
'lates;': '\u2aad\ufe00',
'lbarr;': '\u290c',
'lbbrk;': '\u2772',
'lbrace;': '{',
'lbrack;': '[',
'lbrke;': '\u298b',
'lbrksld;': '\u298f',
'lbrkslu;': '\u298d',
'lcaron;': '\u013e',
'lcedil;': '\u013c',
'lceil;': '\u2308',
'lcub;': '{',
'lcy;': '\u043b',
'ldca;': '\u2936',
'ldquo;': '\u201c',
'ldquor;': '\u201e',
'ldrdhar;': '\u2967',
'ldrushar;': '\u294b',
'ldsh;': '\u21b2',
'le;': '\u2264',
'leftarrow;': '\u2190',
'leftarrowtail;': '\u21a2',
'leftharpoondown;': '\u21bd',
'leftharpoonup;': '\u21bc',
'leftleftarrows;': '\u21c7',
'leftrightarrow;': '\u2194',
'leftrightarrows;': '\u21c6',
'leftrightharpoons;': '\u21cb',
'leftrightsquigarrow;': '\u21ad',
'leftthreetimes;': '\u22cb',
'leg;': '\u22da',
'leq;': '\u2264',
'leqq;': '\u2266',
'leqslant;': '\u2a7d',
'les;': '\u2a7d',
'lescc;': '\u2aa8',
'lesdot;': '\u2a7f',
'lesdoto;': '\u2a81',
'lesdotor;': '\u2a83',
'lesg;': '\u22da\ufe00',
'lesges;': '\u2a93',
'lessapprox;': '\u2a85',
'lessdot;': '\u22d6',
'lesseqgtr;': '\u22da',
'lesseqqgtr;': '\u2a8b',
'lessgtr;': '\u2276',
'lesssim;': '\u2272',
'lfisht;': '\u297c',
'lfloor;': '\u230a',
'lfr;': '\u{01d529}',
'lg;': '\u2276',
'lgE;': '\u2a91',
'lhard;': '\u21bd',
'lharu;': '\u21bc',
'lharul;': '\u296a',
'lhblk;': '\u2584',
'ljcy;': '\u0459',
'll;': '\u226a',
'llarr;': '\u21c7',
'llcorner;': '\u231e',
'llhard;': '\u296b',
'lltri;': '\u25fa',
'lmidot;': '\u0140',
'lmoust;': '\u23b0',
'lmoustache;': '\u23b0',
'lnE;': '\u2268',
'lnap;': '\u2a89',
'lnapprox;': '\u2a89',
'lne;': '\u2a87',
'lneq;': '\u2a87',
'lneqq;': '\u2268',
'lnsim;': '\u22e6',
'loang;': '\u27ec',
'loarr;': '\u21fd',
'lobrk;': '\u27e6',
'longleftarrow;': '\u27f5',
'longleftrightarrow;': '\u27f7',
'longmapsto;': '\u27fc',
'longrightarrow;': '\u27f6',
'looparrowleft;': '\u21ab',
'looparrowright;': '\u21ac',
'lopar;': '\u2985',
'lopf;': '\u{01d55d}',
'loplus;': '\u2a2d',
'lotimes;': '\u2a34',
'lowast;': '\u2217',
'lowbar;': '_',
'loz;': '\u25ca',
'lozenge;': '\u25ca',
'lozf;': '\u29eb',
'lpar;': '(',
'lparlt;': '\u2993',
'lrarr;': '\u21c6',
'lrcorner;': '\u231f',
'lrhar;': '\u21cb',
'lrhard;': '\u296d',
'lrm;': '\u200e',
'lrtri;': '\u22bf',
'lsaquo;': '\u2039',
'lscr;': '\u{01d4c1}',
'lsh;': '\u21b0',
'lsim;': '\u2272',
'lsime;': '\u2a8d',
'lsimg;': '\u2a8f',
'lsqb;': '[',
'lsquo;': '\u2018',
'lsquor;': '\u201a',
'lstrok;': '\u0142',
'lt': '<',
'lt;': '<',
'ltcc;': '\u2aa6',
'ltcir;': '\u2a79',
'ltdot;': '\u22d6',
'lthree;': '\u22cb',
'ltimes;': '\u22c9',
'ltlarr;': '\u2976',
'ltquest;': '\u2a7b',
'ltrPar;': '\u2996',
'ltri;': '\u25c3',
'ltrie;': '\u22b4',
'ltrif;': '\u25c2',
'lurdshar;': '\u294a',
'luruhar;': '\u2966',
'lvertneqq;': '\u2268\ufe00',
'lvnE;': '\u2268\ufe00',
'mDDot;': '\u223a',
'macr': '\xaf',
'macr;': '\xaf',
'male;': '\u2642',
'malt;': '\u2720',
'maltese;': '\u2720',
'map;': '\u21a6',
'mapsto;': '\u21a6',
'mapstodown;': '\u21a7',
'mapstoleft;': '\u21a4',
'mapstoup;': '\u21a5',
'marker;': '\u25ae',
'mcomma;': '\u2a29',
'mcy;': '\u043c',
'mdash;': '\u2014',
'measuredangle;': '\u2221',
'mfr;': '\u{01d52a}',
'mho;': '\u2127',
'micro': '\xb5',
'micro;': '\xb5',
'mid;': '\u2223',
'midast;': '*',
'midcir;': '\u2af0',
'middot': '\xb7',
'middot;': '\xb7',
'minus;': '\u2212',
'minusb;': '\u229f',
'minusd;': '\u2238',
'minusdu;': '\u2a2a',
'mlcp;': '\u2adb',
'mldr;': '\u2026',
'mnplus;': '\u2213',
'models;': '\u22a7',
'mopf;': '\u{01d55e}',
'mp;': '\u2213',
'mscr;': '\u{01d4c2}',
'mstpos;': '\u223e',
'mu;': '\u03bc',
'multimap;': '\u22b8',
'mumap;': '\u22b8',
'nGg;': '\u22d9\u0338',
'nGt;': '\u226b\u20d2',
'nGtv;': '\u226b\u0338',
'nLeftarrow;': '\u21cd',
'nLeftrightarrow;': '\u21ce',
'nLl;': '\u22d8\u0338',
'nLt;': '\u226a\u20d2',
'nLtv;': '\u226a\u0338',
'nRightarrow;': '\u21cf',
'nVDash;': '\u22af',
'nVdash;': '\u22ae',
'nabla;': '\u2207',
'nacute;': '\u0144',
'nang;': '\u2220\u20d2',
'nap;': '\u2249',
'napE;': '\u2a70\u0338',
'napid;': '\u224b\u0338',
'napos;': '\u0149',
'napprox;': '\u2249',
'natur;': '\u266e',
'natural;': '\u266e',
'naturals;': '\u2115',
'nbsp': '\xa0',
'nbsp;': '\xa0',
'nbump;': '\u224e\u0338',
'nbumpe;': '\u224f\u0338',
'ncap;': '\u2a43',
'ncaron;': '\u0148',
'ncedil;': '\u0146',
'ncong;': '\u2247',
'ncongdot;': '\u2a6d\u0338',
'ncup;': '\u2a42',
'ncy;': '\u043d',
'ndash;': '\u2013',
'ne;': '\u2260',
'neArr;': '\u21d7',
'nearhk;': '\u2924',
'nearr;': '\u2197',
'nearrow;': '\u2197',
'nedot;': '\u2250\u0338',
'nequiv;': '\u2262',
'nesear;': '\u2928',
'nesim;': '\u2242\u0338',
'nexist;': '\u2204',
'nexists;': '\u2204',
'nfr;': '\u{01d52b}',
'ngE;': '\u2267\u0338',
'nge;': '\u2271',
'ngeq;': '\u2271',
'ngeqq;': '\u2267\u0338',
'ngeqslant;': '\u2a7e\u0338',
'nges;': '\u2a7e\u0338',
'ngsim;': '\u2275',
'ngt;': '\u226f',
'ngtr;': '\u226f',
'nhArr;': '\u21ce',
'nharr;': '\u21ae',
'nhpar;': '\u2af2',
'ni;': '\u220b',
'nis;': '\u22fc',
'nisd;': '\u22fa',
'niv;': '\u220b',
'njcy;': '\u045a',
'nlArr;': '\u21cd',
'nlE;': '\u2266\u0338',
'nlarr;': '\u219a',
'nldr;': '\u2025',
'nle;': '\u2270',
'nleftarrow;': '\u219a',
'nleftrightarrow;': '\u21ae',
'nleq;': '\u2270',
'nleqq;': '\u2266\u0338',
'nleqslant;': '\u2a7d\u0338',
'nles;': '\u2a7d\u0338',
'nless;': '\u226e',
'nlsim;': '\u2274',
'nlt;': '\u226e',
'nltri;': '\u22ea',
'nltrie;': '\u22ec',
'nmid;': '\u2224',
'nopf;': '\u{01d55f}',
'not': '\xac',
'not;': '\xac',
'notin;': '\u2209',
'notinE;': '\u22f9\u0338',
'notindot;': '\u22f5\u0338',
'notinva;': '\u2209',
'notinvb;': '\u22f7',
'notinvc;': '\u22f6',
'notni;': '\u220c',
'notniva;': '\u220c',
'notnivb;': '\u22fe',
'notnivc;': '\u22fd',
'npar;': '\u2226',
'nparallel;': '\u2226',
'nparsl;': '\u2afd\u20e5',
'npart;': '\u2202\u0338',
'npolint;': '\u2a14',
'npr;': '\u2280',
'nprcue;': '\u22e0',
'npre;': '\u2aaf\u0338',
'nprec;': '\u2280',
'npreceq;': '\u2aaf\u0338',
'nrArr;': '\u21cf',
'nrarr;': '\u219b',
'nrarrc;': '\u2933\u0338',
'nrarrw;': '\u219d\u0338',
'nrightarrow;': '\u219b',
'nrtri;': '\u22eb',
'nrtrie;': '\u22ed',
'nsc;': '\u2281',
'nsccue;': '\u22e1',
'nsce;': '\u2ab0\u0338',
'nscr;': '\u{01d4c3}',
'nshortmid;': '\u2224',
'nshortparallel;': '\u2226',
'nsim;': '\u2241',
'nsime;': '\u2244',
'nsimeq;': '\u2244',
'nsmid;': '\u2224',
'nspar;': '\u2226',
'nsqsube;': '\u22e2',
'nsqsupe;': '\u22e3',
'nsub;': '\u2284',
'nsubE;': '\u2ac5\u0338',
'nsube;': '\u2288',
'nsubset;': '\u2282\u20d2',
'nsubseteq;': '\u2288',
'nsubseteqq;': '\u2ac5\u0338',
'nsucc;': '\u2281',
'nsucceq;': '\u2ab0\u0338',
'nsup;': '\u2285',
'nsupE;': '\u2ac6\u0338',
'nsupe;': '\u2289',
'nsupset;': '\u2283\u20d2',
'nsupseteq;': '\u2289',
'nsupseteqq;': '\u2ac6\u0338',
'ntgl;': '\u2279',
'ntilde': '\xf1',
'ntilde;': '\xf1',
'ntlg;': '\u2278',
'ntriangleleft;': '\u22ea',
'ntrianglelefteq;': '\u22ec',
'ntriangleright;': '\u22eb',
'ntrianglerighteq;': '\u22ed',
'nu;': '\u03bd',
'num;': '#',
'numero;': '\u2116',
'numsp;': '\u2007',
'nvDash;': '\u22ad',
'nvHarr;': '\u2904',
'nvap;': '\u224d\u20d2',
'nvdash;': '\u22ac',
'nvge;': '\u2265\u20d2',
'nvgt;': '>\u20d2',
'nvinfin;': '\u29de',
'nvlArr;': '\u2902',
'nvle;': '\u2264\u20d2',
'nvlt;': '<\u20d2',
'nvltrie;': '\u22b4\u20d2',
'nvrArr;': '\u2903',
'nvrtrie;': '\u22b5\u20d2',
'nvsim;': '\u223c\u20d2',
'nwArr;': '\u21d6',
'nwarhk;': '\u2923',
'nwarr;': '\u2196',
'nwarrow;': '\u2196',
'nwnear;': '\u2927',
'oS;': '\u24c8',
'oacute': '\xf3',
'oacute;': '\xf3',
'oast;': '\u229b',
'ocir;': '\u229a',
'ocirc': '\xf4',
'ocirc;': '\xf4',
'ocy;': '\u043e',
'odash;': '\u229d',
'odblac;': '\u0151',
'odiv;': '\u2a38',
'odot;': '\u2299',
'odsold;': '\u29bc',
'oelig;': '\u0153',
'ofcir;': '\u29bf',
'ofr;': '\u{01d52c}',
'ogon;': '\u02db',
'ograve': '\xf2',
'ograve;': '\xf2',
'ogt;': '\u29c1',
'ohbar;': '\u29b5',
'ohm;': '\u03a9',
'oint;': '\u222e',
'olarr;': '\u21ba',
'olcir;': '\u29be',
'olcross;': '\u29bb',
'oline;': '\u203e',
'olt;': '\u29c0',
'omacr;': '\u014d',
'omega;': '\u03c9',
'omicron;': '\u03bf',
'omid;': '\u29b6',
'ominus;': '\u2296',
'oopf;': '\u{01d560}',
'opar;': '\u29b7',
'operp;': '\u29b9',
'oplus;': '\u2295',
'or;': '\u2228',
'orarr;': '\u21bb',
'ord;': '\u2a5d',
'order;': '\u2134',
'orderof;': '\u2134',
'ordf': '\xaa',
'ordf;': '\xaa',
'ordm': '\xba',
'ordm;': '\xba',
'origof;': '\u22b6',
'oror;': '\u2a56',
'orslope;': '\u2a57',
'orv;': '\u2a5b',
'oscr;': '\u2134',
'oslash': '\xf8',
'oslash;': '\xf8',
'osol;': '\u2298',
'otilde': '\xf5',
'otilde;': '\xf5',
'otimes;': '\u2297',
'otimesas;': '\u2a36',
'ouml': '\xf6',
'ouml;': '\xf6',
'ovbar;': '\u233d',
'par;': '\u2225',
'para': '\xb6',
'para;': '\xb6',
'parallel;': '\u2225',
'parsim;': '\u2af3',
'parsl;': '\u2afd',
'part;': '\u2202',
'pcy;': '\u043f',
'percnt;': '%',
'period;': '.',
'permil;': '\u2030',
'perp;': '\u22a5',
'pertenk;': '\u2031',
'pfr;': '\u{01d52d}',
'phi;': '\u03c6',
'phiv;': '\u03d5',
'phmmat;': '\u2133',
'phone;': '\u260e',
'pi;': '\u03c0',
'pitchfork;': '\u22d4',
'piv;': '\u03d6',
'planck;': '\u210f',
'planckh;': '\u210e',
'plankv;': '\u210f',
'plus;': '+',
'plusacir;': '\u2a23',
'plusb;': '\u229e',
'pluscir;': '\u2a22',
'plusdo;': '\u2214',
'plusdu;': '\u2a25',
'pluse;': '\u2a72',
'plusmn': '\xb1',
'plusmn;': '\xb1',
'plussim;': '\u2a26',
'plustwo;': '\u2a27',
'pm;': '\xb1',
'pointint;': '\u2a15',
'popf;': '\u{01d561}',
'pound': '\xa3',
'pound;': '\xa3',
'pr;': '\u227a',
'prE;': '\u2ab3',
'prap;': '\u2ab7',
'prcue;': '\u227c',
'pre;': '\u2aaf',
'prec;': '\u227a',
'precapprox;': '\u2ab7',
'preccurlyeq;': '\u227c',
'preceq;': '\u2aaf',
'precnapprox;': '\u2ab9',
'precneqq;': '\u2ab5',
'precnsim;': '\u22e8',
'precsim;': '\u227e',
'prime;': '\u2032',
'primes;': '\u2119',
'prnE;': '\u2ab5',
'prnap;': '\u2ab9',
'prnsim;': '\u22e8',
'prod;': '\u220f',
'profalar;': '\u232e',
'profline;': '\u2312',
'profsurf;': '\u2313',
'prop;': '\u221d',
'propto;': '\u221d',
'prsim;': '\u227e',
'prurel;': '\u22b0',
'pscr;': '\u{01d4c5}',
'psi;': '\u03c8',
'puncsp;': '\u2008',
'qfr;': '\u{01d52e}',
'qint;': '\u2a0c',
'qopf;': '\u{01d562}',
'qprime;': '\u2057',
'qscr;': '\u{01d4c6}',
'quaternions;': '\u210d',
'quatint;': '\u2a16',
'quest;': '?',
'questeq;': '\u225f',
'quot': '"',
'quot;': '"',
'rAarr;': '\u21db',
'rArr;': '\u21d2',
'rAtail;': '\u291c',
'rBarr;': '\u290f',
'rHar;': '\u2964',
'race;': '\u223d\u0331',
'racute;': '\u0155',
'radic;': '\u221a',
'raemptyv;': '\u29b3',
'rang;': '\u27e9',
'rangd;': '\u2992',
'range;': '\u29a5',
'rangle;': '\u27e9',
'raquo': '\xbb',
'raquo;': '\xbb',
'rarr;': '\u2192',
'rarrap;': '\u2975',
'rarrb;': '\u21e5',
'rarrbfs;': '\u2920',
'rarrc;': '\u2933',
'rarrfs;': '\u291e',
'rarrhk;': '\u21aa',
'rarrlp;': '\u21ac',
'rarrpl;': '\u2945',
'rarrsim;': '\u2974',
'rarrtl;': '\u21a3',
'rarrw;': '\u219d',
'ratail;': '\u291a',
'ratio;': '\u2236',
'rationals;': '\u211a',
'rbarr;': '\u290d',
'rbbrk;': '\u2773',
'rbrace;': '}',
'rbrack;': ']',
'rbrke;': '\u298c',
'rbrksld;': '\u298e',
'rbrkslu;': '\u2990',
'rcaron;': '\u0159',
'rcedil;': '\u0157',
'rceil;': '\u2309',
'rcub;': '}',
'rcy;': '\u0440',
'rdca;': '\u2937',
'rdldhar;': '\u2969',
'rdquo;': '\u201d',
'rdquor;': '\u201d',
'rdsh;': '\u21b3',
'real;': '\u211c',
'realine;': '\u211b',
'realpart;': '\u211c',
'reals;': '\u211d',
'rect;': '\u25ad',
'reg': '\xae',
'reg;': '\xae',
'rfisht;': '\u297d',
'rfloor;': '\u230b',
'rfr;': '\u{01d52f}',
'rhard;': '\u21c1',
'rharu;': '\u21c0',
'rharul;': '\u296c',
'rho;': '\u03c1',
'rhov;': '\u03f1',
'rightarrow;': '\u2192',
'rightarrowtail;': '\u21a3',
'rightharpoondown;': '\u21c1',
'rightharpoonup;': '\u21c0',
'rightleftarrows;': '\u21c4',
'rightleftharpoons;': '\u21cc',
'rightrightarrows;': '\u21c9',
'rightsquigarrow;': '\u219d',
'rightthreetimes;': '\u22cc',
'ring;': '\u02da',
'risingdotseq;': '\u2253',
'rlarr;': '\u21c4',
'rlhar;': '\u21cc',
'rlm;': '\u200f',
'rmoust;': '\u23b1',
'rmoustache;': '\u23b1',
'rnmid;': '\u2aee',
'roang;': '\u27ed',
'roarr;': '\u21fe',
'robrk;': '\u27e7',
'ropar;': '\u2986',
'ropf;': '\u{01d563}',
'roplus;': '\u2a2e',
'rotimes;': '\u2a35',
'rpar;': ')',
'rpargt;': '\u2994',
'rppolint;': '\u2a12',
'rrarr;': '\u21c9',
'rsaquo;': '\u203a',
'rscr;': '\u{01d4c7}',
'rsh;': '\u21b1',
'rsqb;': ']',
'rsquo;': '\u2019',
'rsquor;': '\u2019',
'rthree;': '\u22cc',
'rtimes;': '\u22ca',
'rtri;': '\u25b9',
'rtrie;': '\u22b5',
'rtrif;': '\u25b8',
'rtriltri;': '\u29ce',
'ruluhar;': '\u2968',
'rx;': '\u211e',
'sacute;': '\u015b',
'sbquo;': '\u201a',
'sc;': '\u227b',
'scE;': '\u2ab4',
'scap;': '\u2ab8',
'scaron;': '\u0161',
'sccue;': '\u227d',
'sce;': '\u2ab0',
'scedil;': '\u015f',
'scirc;': '\u015d',
'scnE;': '\u2ab6',
'scnap;': '\u2aba',
'scnsim;': '\u22e9',
'scpolint;': '\u2a13',
'scsim;': '\u227f',
'scy;': '\u0441',
'sdot;': '\u22c5',
'sdotb;': '\u22a1',
'sdote;': '\u2a66',
'seArr;': '\u21d8',
'searhk;': '\u2925',
'searr;': '\u2198',
'searrow;': '\u2198',
'sect': '\xa7',
'sect;': '\xa7',
'semi;': ';',
'seswar;': '\u2929',
'setminus;': '\u2216',
'setmn;': '\u2216',
'sext;': '\u2736',
'sfr;': '\u{01d530}',
'sfrown;': '\u2322',
'sharp;': '\u266f',
'shchcy;': '\u0449',
'shcy;': '\u0448',
'shortmid;': '\u2223',
'shortparallel;': '\u2225',
'shy': '\xad',
'shy;': '\xad',
'sigma;': '\u03c3',
'sigmaf;': '\u03c2',
'sigmav;': '\u03c2',
'sim;': '\u223c',
'simdot;': '\u2a6a',
'sime;': '\u2243',
'simeq;': '\u2243',
'simg;': '\u2a9e',
'simgE;': '\u2aa0',
'siml;': '\u2a9d',
'simlE;': '\u2a9f',
'simne;': '\u2246',
'simplus;': '\u2a24',
'simrarr;': '\u2972',
'slarr;': '\u2190',
'smallsetminus;': '\u2216',
'smashp;': '\u2a33',
'smeparsl;': '\u29e4',
'smid;': '\u2223',
'smile;': '\u2323',
'smt;': '\u2aaa',
'smte;': '\u2aac',
'smtes;': '\u2aac\ufe00',
'softcy;': '\u044c',
'sol;': '/',
'solb;': '\u29c4',
'solbar;': '\u233f',
'sopf;': '\u{01d564}',
'spades;': '\u2660',
'spadesuit;': '\u2660',
'spar;': '\u2225',
'sqcap;': '\u2293',
'sqcaps;': '\u2293\ufe00',
'sqcup;': '\u2294',
'sqcups;': '\u2294\ufe00',
'sqsub;': '\u228f',
'sqsube;': '\u2291',
'sqsubset;': '\u228f',
'sqsubseteq;': '\u2291',
'sqsup;': '\u2290',
'sqsupe;': '\u2292',
'sqsupset;': '\u2290',
'sqsupseteq;': '\u2292',
'squ;': '\u25a1',
'square;': '\u25a1',
'squarf;': '\u25aa',
'squf;': '\u25aa',
'srarr;': '\u2192',
'sscr;': '\u{01d4c8}',
'ssetmn;': '\u2216',
'ssmile;': '\u2323',
'sstarf;': '\u22c6',
'star;': '\u2606',
'starf;': '\u2605',
'straightepsilon;': '\u03f5',
'straightphi;': '\u03d5',
'strns;': '\xaf',
'sub;': '\u2282',
'subE;': '\u2ac5',
'subdot;': '\u2abd',
'sube;': '\u2286',
'subedot;': '\u2ac3',
'submult;': '\u2ac1',
'subnE;': '\u2acb',
'subne;': '\u228a',
'subplus;': '\u2abf',
'subrarr;': '\u2979',
'subset;': '\u2282',
'subseteq;': '\u2286',
'subseteqq;': '\u2ac5',
'subsetneq;': '\u228a',
'subsetneqq;': '\u2acb',
'subsim;': '\u2ac7',
'subsub;': '\u2ad5',
'subsup;': '\u2ad3',
'succ;': '\u227b',
'succapprox;': '\u2ab8',
'succcurlyeq;': '\u227d',
'succeq;': '\u2ab0',
'succnapprox;': '\u2aba',
'succneqq;': '\u2ab6',
'succnsim;': '\u22e9',
'succsim;': '\u227f',
'sum;': '\u2211',
'sung;': '\u266a',
'sup1': '\xb9',
'sup1;': '\xb9',
'sup2': '\xb2',
'sup2;': '\xb2',
'sup3': '\xb3',
'sup3;': '\xb3',
'sup;': '\u2283',
'supE;': '\u2ac6',
'supdot;': '\u2abe',
'supdsub;': '\u2ad8',
'supe;': '\u2287',
'supedot;': '\u2ac4',
'suphsol;': '\u27c9',
'suphsub;': '\u2ad7',
'suplarr;': '\u297b',
'supmult;': '\u2ac2',
'supnE;': '\u2acc',
'supne;': '\u228b',
'supplus;': '\u2ac0',
'supset;': '\u2283',
'supseteq;': '\u2287',
'supseteqq;': '\u2ac6',
'supsetneq;': '\u228b',
'supsetneqq;': '\u2acc',
'supsim;': '\u2ac8',
'supsub;': '\u2ad4',
'supsup;': '\u2ad6',
'swArr;': '\u21d9',
'swarhk;': '\u2926',
'swarr;': '\u2199',
'swarrow;': '\u2199',
'swnwar;': '\u292a',
'szlig': '\xdf',
'szlig;': '\xdf',
'target;': '\u2316',
'tau;': '\u03c4',
'tbrk;': '\u23b4',
'tcaron;': '\u0165',
'tcedil;': '\u0163',
'tcy;': '\u0442',
'tdot;': '\u20db',
'telrec;': '\u2315',
'tfr;': '\u{01d531}',
'there4;': '\u2234',
'therefore;': '\u2234',
'theta;': '\u03b8',
'thetasym;': '\u03d1',
'thetav;': '\u03d1',
'thickapprox;': '\u2248',
'thicksim;': '\u223c',
'thinsp;': '\u2009',
'thkap;': '\u2248',
'thksim;': '\u223c',
'thorn': '\xfe',
'thorn;': '\xfe',
'tilde;': '\u02dc',
'times': '\xd7',
'times;': '\xd7',
'timesb;': '\u22a0',
'timesbar;': '\u2a31',
'timesd;': '\u2a30',
'tint;': '\u222d',
'toea;': '\u2928',
'top;': '\u22a4',
'topbot;': '\u2336',
'topcir;': '\u2af1',
'topf;': '\u{01d565}',
'topfork;': '\u2ada',
'tosa;': '\u2929',
'tprime;': '\u2034',
'trade;': '\u2122',
'triangle;': '\u25b5',
'triangledown;': '\u25bf',
'triangleleft;': '\u25c3',
'trianglelefteq;': '\u22b4',
'triangleq;': '\u225c',
'triangleright;': '\u25b9',
'trianglerighteq;': '\u22b5',
'tridot;': '\u25ec',
'trie;': '\u225c',
'triminus;': '\u2a3a',
'triplus;': '\u2a39',
'trisb;': '\u29cd',
'tritime;': '\u2a3b',
'trpezium;': '\u23e2',
'tscr;': '\u{01d4c9}',
'tscy;': '\u0446',
'tshcy;': '\u045b',
'tstrok;': '\u0167',
'twixt;': '\u226c',
'twoheadleftarrow;': '\u219e',
'twoheadrightarrow;': '\u21a0',
'uArr;': '\u21d1',
'uHar;': '\u2963',
'uacute': '\xfa',
'uacute;': '\xfa',
'uarr;': '\u2191',
'ubrcy;': '\u045e',
'ubreve;': '\u016d',
'ucirc': '\xfb',
'ucirc;': '\xfb',
'ucy;': '\u0443',
'udarr;': '\u21c5',
'udblac;': '\u0171',
'udhar;': '\u296e',
'ufisht;': '\u297e',
'ufr;': '\u{01d532}',
'ugrave': '\xf9',
'ugrave;': '\xf9',
'uharl;': '\u21bf',
'uharr;': '\u21be',
'uhblk;': '\u2580',
'ulcorn;': '\u231c',
'ulcorner;': '\u231c',
'ulcrop;': '\u230f',
'ultri;': '\u25f8',
'umacr;': '\u016b',
'uml': '\xa8',
'uml;': '\xa8',
'uogon;': '\u0173',
'uopf;': '\u{01d566}',
'uparrow;': '\u2191',
'updownarrow;': '\u2195',
'upharpoonleft;': '\u21bf',
'upharpoonright;': '\u21be',
'uplus;': '\u228e',
'upsi;': '\u03c5',
'upsih;': '\u03d2',
'upsilon;': '\u03c5',
'upuparrows;': '\u21c8',
'urcorn;': '\u231d',
'urcorner;': '\u231d',
'urcrop;': '\u230e',
'uring;': '\u016f',
'urtri;': '\u25f9',
'uscr;': '\u{01d4ca}',
'utdot;': '\u22f0',
'utilde;': '\u0169',
'utri;': '\u25b5',
'utrif;': '\u25b4',
'uuarr;': '\u21c8',
'uuml': '\xfc',
'uuml;': '\xfc',
'uwangle;': '\u29a7',
'vArr;': '\u21d5',
'vBar;': '\u2ae8',
'vBarv;': '\u2ae9',
'vDash;': '\u22a8',
'vangrt;': '\u299c',
'varepsilon;': '\u03f5',
'varkappa;': '\u03f0',
'varnothing;': '\u2205',
'varphi;': '\u03d5',
'varpi;': '\u03d6',
'varpropto;': '\u221d',
'varr;': '\u2195',
'varrho;': '\u03f1',
'varsigma;': '\u03c2',
'varsubsetneq;': '\u228a\ufe00',
'varsubsetneqq;': '\u2acb\ufe00',
'varsupsetneq;': '\u228b\ufe00',
'varsupsetneqq;': '\u2acc\ufe00',
'vartheta;': '\u03d1',
'vartriangleleft;': '\u22b2',
'vartriangleright;': '\u22b3',
'vcy;': '\u0432',
'vdash;': '\u22a2',
'vee;': '\u2228',
'veebar;': '\u22bb',
'veeeq;': '\u225a',
'vellip;': '\u22ee',
'verbar;': '|',
'vert;': '|',
'vfr;': '\u{01d533}',
'vltri;': '\u22b2',
'vnsub;': '\u2282\u20d2',
'vnsup;': '\u2283\u20d2',
'vopf;': '\u{01d567}',
'vprop;': '\u221d',
'vrtri;': '\u22b3',
'vscr;': '\u{01d4cb}',
'vsubnE;': '\u2acb\ufe00',
'vsubne;': '\u228a\ufe00',
'vsupnE;': '\u2acc\ufe00',
'vsupne;': '\u228b\ufe00',
'vzigzag;': '\u299a',
'wcirc;': '\u0175',
'wedbar;': '\u2a5f',
'wedge;': '\u2227',
'wedgeq;': '\u2259',
'weierp;': '\u2118',
'wfr;': '\u{01d534}',
'wopf;': '\u{01d568}',
'wp;': '\u2118',
'wr;': '\u2240',
'wreath;': '\u2240',
'wscr;': '\u{01d4cc}',
'xcap;': '\u22c2',
'xcirc;': '\u25ef',
'xcup;': '\u22c3',
'xdtri;': '\u25bd',
'xfr;': '\u{01d535}',
'xhArr;': '\u27fa',
'xharr;': '\u27f7',
'xi;': '\u03be',
'xlArr;': '\u27f8',
'xlarr;': '\u27f5',
'xmap;': '\u27fc',
'xnis;': '\u22fb',
'xodot;': '\u2a00',
'xopf;': '\u{01d569}',
'xoplus;': '\u2a01',
'xotime;': '\u2a02',
'xrArr;': '\u27f9',
'xrarr;': '\u27f6',
'xscr;': '\u{01d4cd}',
'xsqcup;': '\u2a06',
'xuplus;': '\u2a04',
'xutri;': '\u25b3',
'xvee;': '\u22c1',
'xwedge;': '\u22c0',
'yacute': '\xfd',
'yacute;': '\xfd',
'yacy;': '\u044f',
'ycirc;': '\u0177',
'ycy;': '\u044b',
'yen': '\xa5',
'yen;': '\xa5',
'yfr;': '\u{01d536}',
'yicy;': '\u0457',
'yopf;': '\u{01d56a}',
'yscr;': '\u{01d4ce}',
'yucy;': '\u044e',
'yuml': '\xff',
'yuml;': '\xff',
'zacute;': '\u017a',
'zcaron;': '\u017e',
'zcy;': '\u0437',
'zdot;': '\u017c',
'zeetrf;': '\u2128',
'zeta;': '\u03b6',
'zfr;': '\u{01d537}',
'zhcy;': '\u0436',
'zigrarr;': '\u21dd',
'zopf;': '\u{01d56b}',
'zscr;': '\u{01d4cf}',
'zwj;': '\u200d',
'zwnj;': '\u200c',
};
const Map<int, String> replacementCharacters = {
0x00: '\uFFFD',
0x0d: '\u000D',
0x80: '\u20AC',
0x81: '\u0081',
0x82: '\u201A',
0x83: '\u0192',
0x84: '\u201E',
0x85: '\u2026',
0x86: '\u2020',
0x87: '\u2021',
0x88: '\u02C6',
0x89: '\u2030',
0x8A: '\u0160',
0x8B: '\u2039',
0x8C: '\u0152',
0x8D: '\u008D',
0x8E: '\u017D',
0x8F: '\u008F',
0x90: '\u0090',
0x91: '\u2018',
0x92: '\u2019',
0x93: '\u201C',
0x94: '\u201D',
0x95: '\u2022',
0x96: '\u2013',
0x97: '\u2014',
0x98: '\u02DC',
0x99: '\u2122',
0x9A: '\u0161',
0x9B: '\u203A',
0x9C: '\u0153',
0x9D: '\u009D',
0x9E: '\u017E',
0x9F: '\u0178'
};
const Map<String, String> encodings = {
'437': 'cp437',
'850': 'cp850',
'852': 'cp852',
'855': 'cp855',
'857': 'cp857',
'860': 'cp860',
'861': 'cp861',
'862': 'cp862',
'863': 'cp863',
'865': 'cp865',
'866': 'cp866',
'869': 'cp869',
'ansix341968': 'ascii',
'ansix341986': 'ascii',
'arabic': 'iso8859-6',
'ascii': 'ascii',
'asmo708': 'iso8859-6',
'big5': 'big5',
'big5hkscs': 'big5hkscs',
'chinese': 'gbk',
'cp037': 'cp037',
'cp1026': 'cp1026',
'cp154': 'ptcp154',
'cp367': 'ascii',
'cp424': 'cp424',
'cp437': 'cp437',
'cp500': 'cp500',
'cp775': 'cp775',
'cp819': 'windows-1252',
'cp850': 'cp850',
'cp852': 'cp852',
'cp855': 'cp855',
'cp857': 'cp857',
'cp860': 'cp860',
'cp861': 'cp861',
'cp862': 'cp862',
'cp863': 'cp863',
'cp864': 'cp864',
'cp865': 'cp865',
'cp866': 'cp866',
'cp869': 'cp869',
'cp936': 'gbk',
'cpgr': 'cp869',
'cpis': 'cp861',
'csascii': 'ascii',
'csbig5': 'big5',
'cseuckr': 'cp949',
'cseucpkdfmtjapanese': 'euc_jp',
'csgb2312': 'gbk',
'cshproman8': 'hp-roman8',
'csibm037': 'cp037',
'csibm1026': 'cp1026',
'csibm424': 'cp424',
'csibm500': 'cp500',
'csibm855': 'cp855',
'csibm857': 'cp857',
'csibm860': 'cp860',
'csibm861': 'cp861',
'csibm863': 'cp863',
'csibm864': 'cp864',
'csibm865': 'cp865',
'csibm866': 'cp866',
'csibm869': 'cp869',
'csiso2022jp': 'iso2022_jp',
'csiso2022jp2': 'iso2022_jp_2',
'csiso2022kr': 'iso2022_kr',
'csiso58gb231280': 'gbk',
'csisolatin1': 'windows-1252',
'csisolatin2': 'iso8859-2',
'csisolatin3': 'iso8859-3',
'csisolatin4': 'iso8859-4',
'csisolatin5': 'windows-1254',
'csisolatin6': 'iso8859-10',
'csisolatinarabic': 'iso8859-6',
'csisolatincyrillic': 'iso8859-5',
'csisolatingreek': 'iso8859-7',
'csisolatinhebrew': 'iso8859-8',
'cskoi8r': 'koi8-r',
'csksc56011987': 'cp949',
'cspc775baltic': 'cp775',
'cspc850multilingual': 'cp850',
'cspc862latinhebrew': 'cp862',
'cspc8codepage437': 'cp437',
'cspcp852': 'cp852',
'csptcp154': 'ptcp154',
'csshiftjis': 'shift_jis',
'csunicode11utf7': 'utf-7',
'cyrillic': 'iso8859-5',
'cyrillicasian': 'ptcp154',
'ebcdiccpbe': 'cp500',
'ebcdiccpca': 'cp037',
'ebcdiccpch': 'cp500',
'ebcdiccphe': 'cp424',
'ebcdiccpnl': 'cp037',
'ebcdiccpus': 'cp037',
'ebcdiccpwt': 'cp037',
'ecma114': 'iso8859-6',
'ecma118': 'iso8859-7',
'elot928': 'iso8859-7',
'eucjp': 'euc_jp',
'euckr': 'cp949',
'extendedunixcodepackedformatforjapanese': 'euc_jp',
'gb18030': 'gb18030',
'gb2312': 'gbk',
'gb231280': 'gbk',
'gbk': 'gbk',
'greek': 'iso8859-7',
'greek8': 'iso8859-7',
'hebrew': 'iso8859-8',
'hproman8': 'hp-roman8',
'hzgb2312': 'hz',
'ibm037': 'cp037',
'ibm1026': 'cp1026',
'ibm367': 'ascii',
'ibm424': 'cp424',
'ibm437': 'cp437',
'ibm500': 'cp500',
'ibm775': 'cp775',
'ibm819': 'windows-1252',
'ibm850': 'cp850',
'ibm852': 'cp852',
'ibm855': 'cp855',
'ibm857': 'cp857',
'ibm860': 'cp860',
'ibm861': 'cp861',
'ibm862': 'cp862',
'ibm863': 'cp863',
'ibm864': 'cp864',
'ibm865': 'cp865',
'ibm866': 'cp866',
'ibm869': 'cp869',
'iso2022jp': 'iso2022_jp',
'iso2022jp2': 'iso2022_jp_2',
'iso2022kr': 'iso2022_kr',
'iso646irv1991': 'ascii',
'iso646us': 'ascii',
'iso88591': 'windows-1252',
'iso885910': 'iso8859-10',
'iso8859101992': 'iso8859-10',
'iso885911987': 'windows-1252',
'iso885913': 'iso8859-13',
'iso885914': 'iso8859-14',
'iso8859141998': 'iso8859-14',
'iso885915': 'iso8859-15',
'iso885916': 'iso8859-16',
'iso8859162001': 'iso8859-16',
'iso88592': 'iso8859-2',
'iso885921987': 'iso8859-2',
'iso88593': 'iso8859-3',
'iso885931988': 'iso8859-3',
'iso88594': 'iso8859-4',
'iso885941988': 'iso8859-4',
'iso88595': 'iso8859-5',
'iso885951988': 'iso8859-5',
'iso88596': 'iso8859-6',
'iso885961987': 'iso8859-6',
'iso88597': 'iso8859-7',
'iso885971987': 'iso8859-7',
'iso88598': 'iso8859-8',
'iso885981988': 'iso8859-8',
'iso88599': 'windows-1254',
'iso885991989': 'windows-1254',
'isoceltic': 'iso8859-14',
'isoir100': 'windows-1252',
'isoir101': 'iso8859-2',
'isoir109': 'iso8859-3',
'isoir110': 'iso8859-4',
'isoir126': 'iso8859-7',
'isoir127': 'iso8859-6',
'isoir138': 'iso8859-8',
'isoir144': 'iso8859-5',
'isoir148': 'windows-1254',
'isoir149': 'cp949',
'isoir157': 'iso8859-10',
'isoir199': 'iso8859-14',
'isoir226': 'iso8859-16',
'isoir58': 'gbk',
'isoir6': 'ascii',
'koi8r': 'koi8-r',
'koi8u': 'koi8-u',
'korean': 'cp949',
'ksc5601': 'cp949',
'ksc56011987': 'cp949',
'ksc56011989': 'cp949',
'l1': 'windows-1252',
'l10': 'iso8859-16',
'l2': 'iso8859-2',
'l3': 'iso8859-3',
'l4': 'iso8859-4',
'l5': 'windows-1254',
'l6': 'iso8859-10',
'l8': 'iso8859-14',
'latin1': 'windows-1252',
'latin10': 'iso8859-16',
'latin2': 'iso8859-2',
'latin3': 'iso8859-3',
'latin4': 'iso8859-4',
'latin5': 'windows-1254',
'latin6': 'iso8859-10',
'latin8': 'iso8859-14',
'latin9': 'iso8859-15',
'ms936': 'gbk',
'mskanji': 'shift_jis',
'pt154': 'ptcp154',
'ptcp154': 'ptcp154',
'r8': 'hp-roman8',
'roman8': 'hp-roman8',
'shiftjis': 'shift_jis',
'tis620': 'cp874',
'unicode11utf7': 'utf-7',
'us': 'ascii',
'usascii': 'ascii',
'utf16': 'utf-16',
'utf16be': 'utf-16-be',
'utf16le': 'utf-16-le',
'utf8': 'utf-8',
'windows1250': 'cp1250',
'windows1251': 'cp1251',
'windows1252': 'cp1252',
'windows1253': 'cp1253',
'windows1254': 'cp1254',
'windows1255': 'cp1255',
'windows1256': 'cp1256',
'windows1257': 'cp1257',
'windows1258': 'cp1258',
'windows936': 'gbk',
'x-x-big5': 'big5'
};
const asciiCharacters = [
'\u0000',
'\u0001',
'\u0002',
'\u0003',
'\u0004',
'\u0005',
'\u0006',
'\u0007',
'\u0008',
'\u0009',
'\u000a',
'\u000b',
'\u000c',
'\u000d',
'\u000e',
'\u000f',
'\u0010',
'\u0011',
'\u0012',
'\u0013',
'\u0014',
'\u0015',
'\u0016',
'\u0017',
'\u0018',
'\u0019',
'\u001a',
'\u001b',
'\u001c',
'\u001d',
'\u001e',
'\u001f',
'\u0020',
'\u0021',
'\u0022',
'\u0023',
'\u0024',
'\u0025',
'\u0026',
'\u0027',
'\u0028',
'\u0029',
'\u002a',
'\u002b',
'\u002c',
'\u002d',
'\u002e',
'\u002f',
'\u0030',
'\u0031',
'\u0032',
'\u0033',
'\u0034',
'\u0035',
'\u0036',
'\u0037',
'\u0038',
'\u0039',
'\u003a',
'\u003b',
'\u003c',
'\u003d',
'\u003e',
'\u003f',
'\u0040',
'\u0041',
'\u0042',
'\u0043',
'\u0044',
'\u0045',
'\u0046',
'\u0047',
'\u0048',
'\u0049',
'\u004a',
'\u004b',
'\u004c',
'\u004d',
'\u004e',
'\u004f',
'\u0050',
'\u0051',
'\u0052',
'\u0053',
'\u0054',
'\u0055',
'\u0056',
'\u0057',
'\u0058',
'\u0059',
'\u005a',
'\u005b',
'\u005c',
'\u005d',
'\u005e',
'\u005f',
'\u0060',
'\u0061',
'\u0062',
'\u0063',
'\u0064',
'\u0065',
'\u0066',
'\u0067',
'\u0068',
'\u0069',
'\u006a',
'\u006b',
'\u006c',
'\u006d',
'\u006e',
'\u006f',
'\u0070',
'\u0071',
'\u0072',
'\u0073',
'\u0074',
'\u0075',
'\u0076',
'\u0077',
'\u0078',
'\u0079',
'\u007a',
'\u007b',
'\u007c',
'\u007d',
'\u007e',
'\u007f',
'\u0080',
'\u0081',
'\u0082',
'\u0083',
'\u0084',
'\u0085',
'\u0086',
'\u0087',
'\u0088',
'\u0089',
'\u008a',
'\u008b',
'\u008c',
'\u008d',
'\u008e',
'\u008f',
'\u0090',
'\u0091',
'\u0092',
'\u0093',
'\u0094',
'\u0095',
'\u0096',
'\u0097',
'\u0098',
'\u0099',
'\u009a',
'\u009b',
'\u009c',
'\u009d',
'\u009e',
'\u009f',
'\u00a0',
'\u00a1',
'\u00a2',
'\u00a3',
'\u00a4',
'\u00a5',
'\u00a6',
'\u00a7',
'\u00a8',
'\u00a9',
'\u00aa',
'\u00ab',
'\u00ac',
'\u00ad',
'\u00ae',
'\u00af',
'\u00b0',
'\u00b1',
'\u00b2',
'\u00b3',
'\u00b4',
'\u00b5',
'\u00b6',
'\u00b7',
'\u00b8',
'\u00b9',
'\u00ba',
'\u00bb',
'\u00bc',
'\u00bd',
'\u00be',
'\u00bf',
'\u00c0',
'\u00c1',
'\u00c2',
'\u00c3',
'\u00c4',
'\u00c5',
'\u00c6',
'\u00c7',
'\u00c8',
'\u00c9',
'\u00ca',
'\u00cb',
'\u00cc',
'\u00cd',
'\u00ce',
'\u00cf',
'\u00d0',
'\u00d1',
'\u00d2',
'\u00d3',
'\u00d4',
'\u00d5',
'\u00d6',
'\u00d7',
'\u00d8',
'\u00d9',
'\u00da',
'\u00db',
'\u00dc',
'\u00dd',
'\u00de',
'\u00df',
'\u00e0',
'\u00e1',
'\u00e2',
'\u00e3',
'\u00e4',
'\u00e5',
'\u00e6',
'\u00e7',
'\u00e8',
'\u00e9',
'\u00ea',
'\u00eb',
'\u00ec',
'\u00ed',
'\u00ee',
'\u00ef',
'\u00f0',
'\u00f1',
'\u00f2',
'\u00f3',
'\u00f4',
'\u00f5',
'\u00f6',
'\u00f7',
'\u00f8',
'\u00f9',
'\u00fa',
'\u00fb',
'\u00fc',
'\u00fd',
'\u00fe',
'\u00ff'
];