8000 minify/html/table.go at master · randomcrab/minify · GitHub
[go: up one dir, main page]

Skip to content

Latest commit

 

History

History
1345 lines (1337 loc) · 55.8 KB

table.go

File metadata and controls

1345 lines (1337 loc) · 55.8 KB
package html
type traits uint16
const (
normalTag traits = 1 << iota
rawTag
nonPhrasingTag
objectTag
omitPTag // omit p end tag if it is followed by this start tag
keepPTag // keep p end tag if it is followed by this end tag
)
const (
booleanAttr traits = 1 << iota
caselessAttr
urlAttr
trimAttr
)
var tagMap = map[Hash]traits{
A: keepPTag,
Abbr: normalTag,
Address: nonPhrasingTag | omitPTag,
Area: normalTag,
Article: nonPhrasingTag | omitPTag,
Aside: nonPhrasingTag | omitPTag,
Audio: objectTag | keepPTag,
B: normalTag,
Base: normalTag,
Bb: normalTag,
Bdi: normalTag,
Bdo: normalTag,
Blockquote: nonPhrasingTag | omitPTag,
Body: nonPhrasingTag,
Br: nonPhrasingTag,
Button: objectTag,
Canvas: objectTag,
Caption: nonPhrasingTag,
Cite: normalTag,
Code: normalTag,
Col: nonPhrasingTag,
Colgroup: nonPhrasingTag,
Data: normalTag,
Datalist: normalTag,
Dd: nonPhrasingTag,
Del: keepPTag,
Details: omitPTag,
Dfn: normalTag,
Dialog: normalTag,
Div: nonPhrasingTag | omitPTag,
Dl: nonPhrasingTag | omitPTag,
Dt: nonPhrasingTag,
Em: normalTag,
Embed: nonPhrasingTag,
Fieldset: nonPhrasingTag | omitPTag,
Figcaption: nonPhrasingTag | omitPTag,
Figure: nonPhrasingTag | omitPTag,
Footer: nonPhrasingTag | omitPTag,
Form: nonPhrasingTag | omitPTag,
H1: nonPhrasingTag | omitPTag,
H2: nonPhrasingTag | omitPTag,
H3: nonPhrasingTag | omitPTag,
H4: nonPhrasingTag | omitPTag,
H5: nonPhrasingTag | omitPTag,
H6: nonPhrasingTag | omitPTag,
Head: nonPhrasingTag,
Header: nonPhrasingTag | omitPTag,
Hgroup: nonPhrasingTag,
Hr: nonPhrasingTag | omitPTag,
Html: nonPhrasingTag,
I: normalTag,
Iframe: rawTag | objectTag,
Img: objectTag,
Input: objectTag,
Ins: keepPTag,
Kbd: normalTag,
Label: normalTag,
Legend: normalTag,
Li: nonPhrasingTag,
Link: normalTag,
Main: nonPhrasingTag | omitPTag,
Map: keepPTag,
Mark: normalTag,
Math: rawTag,
Menu: omitPTag,
Meta: nonPhrasingTag,
Meter: objectTag,
Nav: nonPhrasingTag | omitPTag,
Noscript: nonPhrasingTag | keepPTag,
Object: objectTag,
Ol: nonPhrasingTag | omitPTag,
Optgroup: normalTag,
Option: normalTag,
Output: nonPhrasingTag,
P: nonPhrasingTag | omitPTag,
Param: normalTag,
Picture: objectTag,
Pre: nonPhrasingTag | omitPTag,
Progress: objectTag,
Q: objectTag,
Rp: normalTag,
Rt: normalTag,
Ruby: normalTag,
S: normalTag,
Samp: normalTag,
Script: rawTag,
Section: nonPhrasingTag | omitPTag,
Select: objectTag,
Slot: normalTag,
Small: normalTag,
Source: normalTag,
Span: normalTag,
Strong: normalTag,
Style: rawTag | nonPhrasingTag,
Sub: normalTag,
Summary: normalTag,
Sup: normalTag,
Svg: rawTag | objectTag,
Table: nonPhrasingTag | omitPTag,
Tbody: nonPhrasingTag,
Td: nonPhrasingTag,
Template: normalTag,
Textarea: rawTag | objectTag,
Tfoot: nonPhrasingTag,
Th: nonPhrasingTag,
Thead: nonPhrasingTag,
Time: normalTag,
Title: nonPhrasingTag,
Tr: nonPhrasingTag,
Track: normalTag,
U: normalTag,
Ul: nonPhrasingTag | omitPTag,
Var: normalTag,
Video: objectTag | keepPTag,
Wbr: normalTag,
}
var attrMap = map[Hash]traits{
Accept: caselessAttr,
Accept_Charset: caselessAttr,
Action: urlAttr,
Align: caselessAttr,
Alink: caselessAttr,
Allowfullscreen: booleanAttr,
Async: booleanAttr,
Autofocus: booleanAttr,
Autoplay: booleanAttr,
Axis: caselessAttr,
Background: urlAttr,
Bgcolor: caselessAttr,
Charset: caselessAttr,
Checked: booleanAttr,
Cite: urlAttr,
Class: trimAttr,
Classid: urlAttr,
Clear: caselessAttr,
Codebase: urlAttr,
Codetype: caselessAttr,
Color: caselessAttr,
Cols: trimAttr,
Colspan: trimAttr,
Compact: booleanAttr,
Controls: booleanAttr,
Data: urlAttr,
Declare: booleanAttr,
Default: booleanAttr,
DefaultChecked: booleanAttr,
DefaultMuted: booleanAttr,
DefaultSelected: booleanAttr,
Defer: booleanAttr,
Dir: caselessAttr,
Disabled: booleanAttr,
Enabled: booleanAttr,
Enctype: caselessAttr,
Face: caselessAttr,
Formaction: urlAttr,
Formnovalidate: booleanAttr,
Frame: caselessAttr,
Hidden: booleanAttr,
Href: urlAttr,
Hreflang: caselessAttr,
Http_Equiv: caselessAttr,
Icon: urlAttr,
Inert: booleanAttr,
Ismap: booleanAttr,
Itemscope: booleanAttr,
Lang: caselessAttr,
Language: caselessAttr,
Link: caselessAttr,
Longdesc: urlAttr,
Manifest: urlAttr,
Maxlength: trimAttr,
Media: caselessAttr | trimAttr,
Method: caselessAttr,
Multiple: booleanAttr,
Muted: booleanAttr,
Nohref: booleanAttr,
Noresize: booleanAttr,
Noshade: booleanAttr,
Novalidate: booleanAttr,
Nowrap: booleanAttr,
Open: booleanAttr,
Pauseonexit: booleanAttr,
Poster: urlAttr,
Profile: urlAttr,
Readonly: booleanAttr,
Rel: caselessAttr,
Required: booleanAttr,
Rev: caselessAttr,
Reversed: booleanAttr,
Rows: trimAttr,
Rowspan: trimAttr,
Rules: caselessAttr,
Scope: caselessAttr,
Scoped: booleanAttr,
Scrolling: caselessAttr,
Seamless: booleanAttr,
Selected: booleanAttr,
Shape: caselessAttr,
Size: trimAttr,
Sortable: booleanAttr,
Span: trimAttr,
Src: urlAttr,
Srcset: trimAttr,
Tabindex: trimAttr,
Target: caselessAttr,
Text: caselessAttr,
Translate: booleanAttr,
Truespeed: booleanAttr,
Type: caselessAttr,
Typemustmatch: booleanAttr,
Undeterminate: booleanAttr,
Usemap: urlAttr,
Valign: caselessAttr,
Valuetype: caselessAttr,
Vlink: caselessAttr,
Visible: booleanAttr,
Xmlns: urlAttr,
}
var jsMimetypes = map[string]bool{
"text/javascript": true,
"application/javascript": true,
}
// Entities are all named character entities.
var EntitiesMap = map[string][]byte{
"AElig": []byte("&#198;"),
"AMP": []byte("&"),
"Aacute": []byte("&#193;"),
"Abreve": []byte("&#258;"),
"Acirc": []byte("&#194;"),
"Agrave": []byte("&#192;"),
"Alpha": []byte("&#913;"),
"Amacr": []byte("&#256;"),
"Aogon": []byte("&#260;"),
"ApplyFunction": []byte("&af;"),
"Aring": []byte("&#197;"),
"Assign": []byte("&#8788;"),
"Atilde": []byte("&#195;"),
"Backslash": []byte("&#8726;"),
"Barwed": []byte("&#8966;"),
"Because": []byte("&#8757;"),
"Bernoullis": []byte("&Bscr;"),
"Breve": []byte("&#728;"),
"Bumpeq": []byte("&bump;"),
"Cacute": []byte("&#262;"),
"CapitalDifferentialD": []byte("&DD;"),
"Cayleys": []byte("&Cfr;"),
"Ccaron": []byte("&#268;"),
"Ccedil": []byte("&#199;"),
"Ccirc": []byte("&#264;"),
"Cconint": []byte("&#8752;"),
"Cedilla": []byte("&#184;"),
"CenterDot": []byte("&#183;"),
"CircleDot": []byte("&odot;"),
"CircleMinus": []byte("&#8854;"),
"CirclePlus": []byte("&#8853;"),
"CircleTimes": []byte("&#8855;"),
"ClockwiseContourIntegral": []byte("&#8754;"),
"CloseCurlyDoubleQuote": []byte("&#8221;"),
"CloseCurlyQuote": []byte("&#8217;"),
"Congruent": []byte("&#8801;"),
"Conint": []byte("&#8751;"),
"ContourIntegral": []byte("&oint;"),
"Coproduct": []byte("&#8720;"),
"CounterClockwiseContourIntegral": []byte("&#8755;"),
"CupCap": []byte("&#8781;"),
"DDotrahd": []byte("&#10513;"),
"Dagger": []byte("&#8225;"),
"Dcaron": []byte("&#270;"),
"Delta": []byte("&#916;"),
"DiacriticalAcute": []byte("&#180;"),
"DiacriticalDot": []byte("&dot;"),
"DiacriticalDoubleAcute": []byte("&#733;"),
"DiacriticalGrave": []byte("`"),
"DiacriticalTilde": []byte("&#732;"),
"Diamond": []byte("&diam;"),
"DifferentialD": []byte("&dd;"),
"DotDot": []byte("&#8412;"),
"DotEqual": []byte("&#8784;"),
"DoubleContourIntegral": []byte("&#8751;"),
"DoubleDot": []byte("&Dot;"),
"DoubleDownArrow": []byte("&dArr;"),
"DoubleLeftArrow": []byte("&lArr;"),
"DoubleLeftRightArrow": []byte("&iff;"),
"DoubleLeftTee": []byte("&Dashv;"),
"DoubleLongLeftArrow": []byte("&xlArr;"),
"DoubleLongLeftRightArrow": []byte("&xhArr;"),
"DoubleLongRightArrow": []byte("&xrArr;"),
"DoubleRightArrow": []byte("&rArr;"),
"DoubleRightTee": []byte("&#8872;"),
"DoubleUpArrow": []byte("&uArr;"),
"DoubleUpDownArrow": []byte("&vArr;"),
"DoubleVerticalBar": []byte("&par;"),
"DownArrow": []byte("&darr;"),
"DownArrowBar": []byte("&#10515;"),
"DownArrowUpArrow": []byte("&#8693;"),
"DownBreve": []byte("&#785;"),
"DownLeftRightVector": []byte("&#10576;"),
"DownLeftTeeVector": []byte("&#10590;"),
"DownLeftVector": []byte("&#8637;"),
"DownLeftVectorBar": []byte("&#10582;"),
"DownRightTeeVector": []byte("&#10591;"),
"DownRightVector": []byte("&#8641;"),
"DownRightVectorBar": []byte("&#10583;"),
"DownTee": []byte("&top;"),
"DownTeeArrow": []byte("&#8615;"),
"Downarrow": []byte("&dArr;"),
"Dstrok": []byte("&#272;"),
"Eacute": []byte("&#201;"),
"Ecaron": []byte("&#282;"),
"Ecirc": []byte("&#202;"),
"Egrave": []byte("&#200;"),
"Element": []byte("&in;"),
"Emacr": []byte("&#274;"),
"EmptySmallSquare": []byte("&#9723;"),
"EmptyVerySmallSquare": []byte("&#9643;"),
"Eogon": []byte("&#280;"),
"Epsilon": []byte("&#917;"),
"EqualTilde": []byte("&esim;"),
"Equilibrium": []byte("&#8652;"),
"Exists": []byte("&#8707;"),
"ExponentialE": []byte("&ee;"),
"FilledSmallSquare": []byte("&#9724;"),
"FilledVerySmallSquare": []byte("&squf;"),
"ForAll": []byte("&#8704;"),
"Fouriertrf": []byte("&Fscr;"),
"GT": []byte(">"),
"Gamma": []byte("&#915;"),
"Gammad": []byte("&#988;"),
"Gbreve": []byte("&#286;"),
"Gcedil": []byte("&#290;"),
"Gcirc": []byte("&#284;"),
"GreaterEqual": []byte("&ge;"),
"GreaterEqualLess": []byte("&gel;"),
"GreaterFullEqual": []byte("&gE;"),
"GreaterGreater": []byte("&#10914;"),
"GreaterLess": []byte("&gl;"),
"GreaterSlantEqual": []byte("&ges;"),
"GreaterTilde": []byte("&gsim;"),
"HARDcy": []byte("&#1066;"),
"Hacek": []byte("&#711;"),
"Hat": []byte("^"),
"Hcirc": []byte("&#292;"),
"HilbertSpace": []byte("&Hscr;"),
"HorizontalLine": []byte("&boxh;"),
"Hstrok": []byte("&#294;"),
"HumpDownHump": []byte("&bump;"),
"HumpEqual": []byte("&#8783;"),
"IJlig": []byte("&#306;"),
"Iacute": []byte("&#205;"),
"Icirc": []byte("&#206;"),
"Ifr": []byte("&Im;"),
"Igrave": []byte("&#204;"),
"Imacr": []byte("&#298;"),
"ImaginaryI": []byte("&ii;"),
"Implies": []byte("&rArr;"),
"Integral": []byte("&int;"),
"Intersection": []byte("&xcap;"),
"InvisibleComma": []byte("&ic;"),
"InvisibleTimes": []byte("&it;"),
"Iogon": []byte("&#302;"),
"Itilde": []byte("&#296;"),
"Jcirc": []byte("&#308;"),
"Jsercy": []byte("&#1032;"),
"Kappa": []byte("&#922;"),
"Kcedil": []byte("&#310;"),
"LT": []byte("<"),
"Lacute": []byte("&#313;"),
"Lambda": []byte("&#923;"),
"Laplacetrf": []byte("&Lscr;"),
"Lcaron": []byte("&#317;"),
"Lcedil": []byte("&#315;"),
"LeftAngleBracket": []byte("&lang;"),
"LeftArrow": []byte("&larr;"),
"LeftArrowBar": []byte("&#8676;"),
"LeftArrowRightArrow": []byte("&#8646;"),
"LeftCeiling": []byte("&#8968;"),
"LeftDoubleBracket": []byte("&lobrk;"),
"LeftDownTeeVector": []byte("&#10593;"),
"LeftDownVector": []byte("&#8643;"),
"LeftDownVectorBar": []byte("&#10585;"),
"LeftFloor": []byte("&#8970;"),
"LeftRightArrow": []byte("&harr;"),
"LeftRightVector": []byte("&#10574;"),
"LeftTee": []byte("&#8867;"),
"LeftTeeArrow": []byte("&#8612;"),
"LeftTeeVector": []byte("&#10586;"),
"LeftTriangle": []byte("&#8882;"),
"LeftTriangleBar": []byte("&#10703;"),
"LeftTriangleEqual": []byte("&#8884;"),
"LeftUpDownVector": []byte("&#10577;"),
"LeftUpTeeVector": []byte("&#10592;"),
"LeftUpVector": []byte("&#8639;"),
"LeftUpVectorBar": []byte("&#10584;"),
"LeftVector": []byte("&#8636;"),
"LeftVectorBar": []byte("&#10578;"),
"Leftarrow": []byte("&lArr;"),
"Leftrightarrow": []byte("&iff;"),
"LessEqualGreater": []byte("&leg;"),
"LessFullEqual": []byte("&lE;"),
"LessGreater": []byte("&lg;"),
"LessLess": []byte("&#10913;"),
"LessSlantEqual": []byte("&les;"),
"LessTilde": []byte("&lsim;"),
"Lleftarrow": []byte("&#8666;"),
"Lmidot": []byte("&#319;"),
"LongLeftArrow": []byte("&xlarr;"),
"LongLeftRightArrow": []byte("&xharr;"),
"LongRightArrow": []byte("&xrarr;"),
"Longleftarrow": []byte("&xlArr;"),
"Longleftrightarrow": []byte("&xhArr;"),
"Longrightarrow": []byte("&xrArr;"),
"LowerLeftArrow": []byte("&#8601;"),
"LowerRightArrow": []byte("&#8600;"),
"Lstrok": []byte("&#321;"),
"MediumSpace": []byte("&#8287;"),
"Mellintrf": []byte("&Mscr;"),
"MinusPlus": []byte("&mp;"),
"Nacute": []byte("&#323;"),
"Ncaron": []byte("&#327;"),
"Ncedil": []byte("&#325;"),
"NegativeMediumSpace": []byte("&#8203;"),
"NegativeThickSpace": []byte("&#8203;"),
"NegativeThinSpace": []byte("&#8203;"),
"NegativeVeryThinSpace": []byte("&#8203;"),
"NestedGreaterGreater": []byte("&Gt;"),
"NestedLessLess": []byte("&Lt;"),
"NewLine": []byte("\n"),
"NoBreak": []byte("&#8288;"),
"NonBreakingSpace": []byte("&#160;"),
"NotCongruent": []byte("&#8802;"),
"NotCupCap": []byte("&#8813;"),
"NotDoubleVerticalBar": []byte("&npar;"),
"NotElement": []byte("&#8713;"),
"NotEqual": []byte("&ne;"),
"NotExists": []byte("&#8708;"),
"NotGreater": []byte("&ngt;"),
"NotGreaterEqual": []byte("&nge;"),
"NotGreaterLess": []byte("&ntgl;"),
"NotGreaterTilde": []byte("&#8821;"),
"NotLeftTriangle": []byte("&#8938;"),
"NotLeftTriangleEqual": []byte("&#8940;"),
"NotLess": []byte("&nlt;"),
"NotLessEqual": []byte("&nle;"),
"NotLessGreater": []byte("&ntlg;"),
"NotLessTilde": []byte("&#8820;"),
"NotPrecedes": []byte("&npr;"),
"NotPrecedesSlantEqual": []byte("&#8928;"),
"NotReverseElement": []byte("&#8716;"),
"NotRightTriangle": []byte("&#8939;"),
"NotRightTriangleEqual": []byte("&#8941;"),
"NotSquareSubsetEqual": []byte("&#8930;"),
"NotSquareSupersetEqual": []byte("&#8931;"),
"NotSubsetEqual": []byte("&#8840;"),
"NotSucceeds": []byte("&nsc;"),
"NotSucceedsSlantEqual": []byte("&#8929;"),
"NotSupersetEqual": []byte("&#8841;"),
"NotTilde": []byte("&nsim;"),
"NotTildeEqual": []byte("&#8772;"),
"NotTildeFullEqual": []byte("&#8775;"),
"NotTildeTilde": []byte("&nap;"),
"NotVerticalBar": []byte("&nmid;"),
"Ntilde": []byte("&#209;"),
"OElig": []byte("&#338;"),
"Oacute": []byte("&#211;"),
"Ocirc": []byte("&#212;"),
"Odblac": []byte("&#336;"),
"Ograve": []byte("&#210;"),
"Omacr": []byte("&#332;"),
"Omega": []byte("&ohm;"),
"Omicron": []byte("&#927;"),
"OpenCurlyDoubleQuote": []byte("&#8220;"),
"OpenCurlyQuote": []byte("&#8216;"),
"Oslash": []byte("&#216;"),
"Otilde": []byte("&#213;"),
"OverBar": []byte("&#8254;"),
"OverBrace": []byte("&#9182;"),
"OverBracket": []byte("&tbrk;"),
"OverParenthesis": []byte("&#9180;"),
"PartialD": []byte("&part;"),
"PlusMinus": []byte("&pm;"),
"Poincareplane": []byte("&Hfr;"),
"Precedes": []byte("&pr;"),
"PrecedesEqual": []byte("&pre;"),
"PrecedesSlantEqual": []byte("&#8828;"),
"PrecedesTilde": []byte("&#8830;"),
"Product": []byte("&prod;"),
"Proportion": []byte("&#8759;"),
"Proportional": []byte("&prop;"),
"QUOT": []byte("\""),
"Racute": []byte("&#340;"),
"Rcaron": []byte("&#344;"),
"Rcedil": []byte("&#342;"),
"ReverseElement": []byte("&ni;"),
"ReverseEquilibrium": []byte("&#8651;"),
"ReverseUpEquilibrium": []byte("&duhar;"),
"Rfr": []byte("&Re;"),
"RightAngleBracket": []byte("&rang;"),
"RightArrow": []byte("&rarr;"),
"RightArrowBar": []byte("&#8677;"),
"RightArrowLeftArrow": []byte("&#8644;"),
"RightCeiling": []byte("&#8969;"),
"RightDoubleBracket": []byte("&robrk;"),
"RightDownTeeVector": []byte("&#10589;"),
"RightDownVector": []byte("&#8642;"),
"RightDownVectorBar": []byte("&#10581;"),
"RightFloor": []byte("&#8971;"),
"RightTee": []byte("&#8866;"),
"RightTeeArrow": []byte("&map;"),
"RightTeeVector": []byte("&#10587;"),
"RightTriangle": []byte("&#8883;"),
"RightTriangleBar": []byte("&#10704;"),
"RightTriangleEqual": []byte("&#8885;"),
"RightUpDownVector": []byte("&#10575;"),
"RightUpTeeVector": []byte("&#10588;"),
"RightUpVector": []byte("&#8638;"),
"RightUpVectorBar": []byte("&#10580;"),
"RightVector": []byte("&#8640;"),
"RightVectorBar": []byte("&#10579;"),
"Rightarrow": []byte("&rArr;"),
"RoundImplies": []byte("&#10608;"),
"Rrightarrow": []byte("&#8667;"),
"RuleDelayed": []byte("&#10740;"),
"SHCHcy": []byte("&#1065;"),
"SOFTcy": []byte("&#1068;"),
"Sacute": []byte("&#346;"),
"Scaron": []byte("&#352;"),
"Scedil": []byte("&#350;"),
"Scirc": []byte("&#348;"),
"ShortDownArrow": []byte("&darr;"),
"ShortLeftArrow": []byte("&larr;"),
"ShortRightArrow": []byte("&rarr;"),
"ShortUpArrow": []byte("&uarr;"),
"Sigma": []byte("&#931;"),
"SmallCircle": []byte("&#8728;"),
"Square": []byte("&squ;"),
"SquareIntersection": []byte("&#8851;"),
"SquareSubset": []byte("&#8847;"),
"SquareSubsetEqual": []byte("&#8849;"),
"SquareSuperset": []byte("&#8848;"),
"SquareSupersetEqual": []byte("&#8850;"),
"SquareUnion": []byte("&#8852;"),
"Subset": []byte("&Sub;"),
"SubsetEqual": []byte("&sube;"),
"Succeeds": []byte("&sc;"),
"SucceedsEqual": []byte("&sce;"),
"SucceedsSlantEqual": []byte("&#8829;"),
"SucceedsTilde": []byte("&#8831;"),
"SuchThat": []byte("&ni;"),
"Superset": []byte("&sup;"),
"SupersetEqual": []byte("&supe;"),
"Supset": []byte("&Sup;"),
"THORN": []byte("&#222;"),
"Tab": []byte(" "),
"Tcaron": []byte("&#356;"),
"Tcedil": []byte("&#354;"),
"Therefore": []byte("&#8756;"),
"Theta": []byte("&#920;"),
"ThinSpace": []byte("&#8201;"),
"Tilde": []byte("&sim;"),
"TildeEqual": []byte("&sime;"),
"TildeFullEqual": []byte("&cong;"),
"TildeTilde": []byte("&ap;"),
"TripleDot": []byte("&tdot;"),
"Tstrok": []byte("&#358;"),
"Uacute": []byte("&#218;"),
"Uarrocir": []byte("&#10569;"),
"Ubreve": []byte("&#364;"),
"Ucirc": []byte("&#219;"),
"Udblac": []byte("&#368;"),
"Ugrave": []byte("&#217;"),
"Umacr": []byte("&#362;"),
"UnderBar": []byte("_"),
"UnderBrace": []byte("&#9183;"),
"UnderBracket": []byte("&bbrk;"),
"UnderParenthesis": []byte("&#9181;"),
"Union": []byte("&xcup;"),
"UnionPlus": []byte("&#8846;"),
"Uogon": []byte("&#370;"),
"UpArrow": []byte("&uarr;"),
"UpArrowBar": []byte("&#10514;"),
"UpArrowDownArrow": []byte("&#8645;"),
"UpDownArrow": []byte("&varr;"),
"UpEquilibrium": []byte("&udhar;"),
"UpTee": []byte("&bot;"),
"UpTeeArrow": []byte("&#8613;"),
"Uparrow": []byte("&uArr;"),
"Updownarrow": []byte("&vArr;"),
"UpperLeftArrow": []byte("&#8598;"),
"UpperRightArrow": []byte("&#8599;"),
"Upsilon": []byte("&#933;"),
"Uring": []byte("&#366;"),
"Utilde": []byte("&#360;"),
"Verbar": []byte("&Vert;"),
"VerticalBar": []byte("&mid;"),
"VerticalLine": []byte("|"),
"VerticalSeparator": []byte("&#10072;"),
"VerticalTilde": []byte("&wr;"),
"VeryThinSpace": []byte("&#8202;"),
"Vvdash": []byte("&#8874;"),
"Wcirc": []byte("&#372;"),
"Yacute": []byte("&#221;"),
"Ycirc": []byte("&#374;"),
"Zacute": []byte("&#377;"),
"Zcaron": []byte("&#381;"),
"ZeroWidthSpace": []byte("&#8203;"),
"aacute": []byte("&#225;"),
"abreve": []byte("&#259;"),
"acirc": []byte("&#226;"),
"acute": []byte("&#180;"),
"aelig": []byte("&#230;"),
"agrave": []byte("&#224;"),
"alefsym": []byte("&#8501;"),
"alpha": []byte("&#945;"),
"amacr": []byte("&#257;"),
"amp": []byte("&"),
"andslope": []byte("&#10840;"),
"angle": []byte("&ang;"),
"angmsd": []byte("&#8737;"),
"angmsdaa": []byte("&#10664;"),
"angmsdab": []byte("&#10665;"),
"angmsdac": []byte("&#10666;"),
"angmsdad": []byte("&#10667;"),
"angmsdae": []byte("&#10668;"),
"angmsdaf": []byte("&#10669;"),
"angmsdag": []byte("&#10670;"),
"angmsdah": []byte("&#10671;"),
"angrtvb": []byte("&#8894;"),
"angrtvbd": []byte("&#10653;"),
"angsph": []byte("&#8738;"),
"angst": []byte("&#197;"),
"angzarr": []byte("&#9084;"),
"aogon": []byte("&#261;"),
"apos": []byte("'"),
"approx": []byte("&ap;"),
"approxeq": []byte("&ape;"),
"aring": []byte("&#229;"),
"ast": []byte("*"),
"asymp": []byte("&ap;"),
"asympeq": []byte("&#8781;"),
"atilde": []byte("&#227;"),
"awconint": []byte("&#8755;"),
"backcong": []byte("&#8780;"),
"backepsilon": []byte("&#1014;"),
"backprime": []byte("&#8245;"),
"backsim": []byte("&bsim;"),
"backsimeq": []byte("&#8909;"),
"barvee": []byte("&#8893;"),
"barwed": []byte("&#8965;"),
"barwedge": []byte("&#8965;"),
"bbrktbrk": []byte("&#9142;"),
"becaus": []byte("&#8757;"),
"because": []byte("&#8757;"),
"bemptyv": []byte("&#10672;"),
"bernou": []byte("&Bscr;"),
"between": []byte("&#8812;"),
"bigcap": []byte("&xcap;"),
"bigcirc": []byte("&#9711;"),
"bigcup": []byte("&xcup;"),
"bigodot": []byte("&xodot;"),
"bigoplus": []byte("&#10753;"),
"bigotimes": []byte("&#10754;"),
"bigsqcup": []byte("&#10758;"),
"bigstar": []byte("&#9733;"),
"bigtriangledown": []byte("&#9661;"),
"bigtriangleup": []byte("&#9651;"),
"biguplus": []byte("&#10756;"),
"bigvee": []byte("&Vee;"),
"bigwedge": []byte("&#8896;"),
"bkarow": []byte("&rbarr;"),
"blacklozenge": []byte("&lozf;"),
"blacksquare": []byte("&squf;"),
"blacktriangle": []byte("&#9652;"),
"blacktriangledown": []byte("&#9662;"),
"blacktriangleleft": []byte("&#9666;"),
"blacktriangleright": []byte("&#9656;"),
"bottom": []byte("&bot;"),
"bowtie": []byte("&#8904;"),
"boxminus": []byte("&#8863;"),
"boxplus": []byte("&#8862;"),
"boxtimes": []byte("&#8864;"),
"bprime": []byte("&#8245;"),
"breve": []byte("&#728;"),
"brvbar": []byte("&#166;"),
"bsol": []byte("\\"),
"bsolhsub": []byte("&#10184;"),
"bullet": []byte("&bull;"),
"bumpeq": []byte("&#8783;"),
"cacute": []byte("&#263;"),
"capbrcup": []byte("&#10825;"),
"caron": []byte("&#711;"),
"ccaron": []byte("&#269;"),
"ccedil": []byte("&#231;"),
"ccirc": []byte("&#265;"),
"ccupssm": []byte("&#10832;"),
"cedil": []byte("&#184;"),
"cemptyv": []byte("&#10674;"),
"centerdot": []byte("&#183;"),
"checkmark": []byte("&check;"),
"circeq": []byte("&cire;"),
"circlearrowleft": []byte("&#8634;"),
"circlearrowright": []byte("&#8635;"),
"circledR": []byte("&REG;"),
"circledS": []byte("&oS;"),
"circledast": []byte("&oast;"),
"circledcirc": []byte("&ocir;"),
"circleddash": []byte("&#8861;"),
"cirfnint": []byte("&#10768;"),
"cirscir": []byte("&#10690;"),
"clubsuit": []byte("&#9827;"),
"colon": []byte(":"),
"colone": []byte("&#8788;"),
"coloneq": []byte("&#8788;"),
"comma": []byte(","),
"commat": []byte("@"),
"compfn": []byte("&#8728;"),
"complement": []byte("&comp;"),
"complexes": []byte("&Copf;"),
"congdot": []byte("&#10861;"),
"conint": []byte("&oint;"),
"coprod": []byte("&#8720;"),
"copysr": []byte("&#8471;"),
"cudarrl": []byte("&#10552;"),
"cudarrr": []byte("&#10549;"),
"cularr": []byte("&#8630;"),
"cularrp": []byte("&#10557;"),
"cupbrcap": []byte("&#10824;"),
"cupdot": []byte("&#8845;"),
"curarr": []byte("&#8631;"),
"curarrm": []byte("&#10556;"),
"curlyeqprec": []byte("&#8926;"),
"curlyeqsucc": []byte("&#8927;"),
"curlyvee": []byte("&#8910;"),
"curlywedge": []byte("&#8911;"),
"curren": []byte("&#164;"),
"curvearrowleft": []byte("&#8630;"),
"curvearrowright": []byte("&#8631;"),
"cwconint": []byte("&#8754;"),
"cylcty": []byte("&#9005;"),
"dagger": []byte("&#8224;"),
"daleth": []byte("&#8504;"),
"dbkarow": []byte("&rBarr;"),
"dblac": []byte("&#733;"),
"dcaron": []byte("&#271;"),
"ddagger": []byte("&#8225;"),
"ddotseq": []byte("&eDDot;"),
"delta": []byte("&#948;"),
"demptyv": []byte("&#10673;"),
"diamond": []byte("&diam;"),
"diamondsuit": []byte("&#9830;"),
"digamma": []byte("&#989;"),
"divide": []byte("&div;"),
"divideontimes": []byte("&#8903;"),
"divonx": []byte("&#8903;"),
"dlcorn": []byte("&#8990;"),
"dlcrop": []byte("&#8973;"),
"dollar": []byte("$"),
"doteqdot": []byte("&eDot;"),
"dotminus": []byte("&#8760;"),
"dotplus": []byte("&#8724;"),
"dotsquare": []byte("&#8865;"),
"doublebarwedge": []byte("&#8966;"),
"downarrow": []byte("&darr;"),
"downdownarrows": []byte("&#8650;"),
"downharpoonleft": []byte("&#8643;"),
"downharpoonright": []byte("&#8642;"),
"drbkarow": []byte("&RBarr;"),
"drcorn": []byte("&#8991;"),
"drcrop": []byte("&#8972;"),
"dstrok": []byte("&#273;"),
"dwangle": []byte("&#10662;"),
"dzigrarr": []byte("&#10239;"),
"eacute": []byte("&#233;"),
"ecaron": []byte("&#283;"),
"ecirc": []byte("&#234;"),
"ecolon": []byte("&#8789;"),
"egrave": []byte("&#232;"),
"elinters": []byte("&#9191;"),
"emacr": []byte("&#275;"),
"emptyset": []byte("&#8709;"),
"emptyv": []byte("&#8709;"),
"emsp13": []byte("&#8196;"),
"emsp14": []byte("&#8197;"),
"eogon": []byte("&#281;"),
"epsilon": []byte("&#949;"),
"eqcirc": []byte("&ecir;"),
"eqcolon": []byte("&#8789;"),
"eqsim": []byte("&esim;"),
"eqslantgtr": []byte("&egs;"),
"eqslantless": []byte("&els;"),
"equals": []byte("="),
"equest": []byte("&#8799;"),
"equivDD": []byte("&#10872;"),
"eqvparsl": []byte("&#10725;"),
"excl": []byte("!"),
"expectation": []byte("&Escr;"),
"exponentiale": []byte("&ee;"),
"fallingdotseq": []byte("&#8786;"),
"female": []byte("&#9792;"),
"forall": []byte("&#8704;"),
"fpartint": []byte("&#10765;"),
"frac12": []byte("&#189;"),
"frac13": []byte("&#8531;"),
"frac14": []byte("&#188;"),
"frac15": []byte("&#8533;"),
"frac16": []byte("&#8537;"),
"frac18": []byte("&#8539;"),
"frac23": []byte("&#8532;"),
"frac25": []byte("&#8534;"),
"frac34": []byte("&#190;"),
"frac35": []byte("&#8535;"),
"frac38": []byte("&#8540;"),
"frac45": []byte("&#8536;"),
"frac56": []byte("&#8538;"),
"frac58": []byte("&#8541;"),
"frac78": []byte("&#8542;"),
"gacute": []byte("&#501;"),
"gamma": []byte("&#947;"),
"gammad": []byte("&#989;"),
"gbreve": []byte("&#287;"),
"gcirc": []byte("&#285;"),
"geq": []byte("&ge;"),
"geqq": []byte("&gE;"),
"geqslant": []byte("&ges;"),
"gesdoto": []byte("&#10882;"),
"gesdotol": []byte("&#10884;"),
"ggg": []byte("&Gg;"),
"gnapprox": []byte("&gnap;"),
"gneq": []byte("&gne;"),
"gneqq": []byte("&gnE;"),
"grave": []byte("`"),
"gt": []byte(">"),
"gtquest": []byte("&#10876;"),
"gtrapprox": []byte("&gap;"),
"gtrdot": []byte("&#8919;"),
"gtreqless": []byte("&gel;"),
"gtreqqless": []byte("&gEl;"),
"gtrless": []byte("&gl;"),
"gtrsim": []byte("&gsim;"),
"hArr": []byte("&iff;"),
"hairsp": []byte("&#8202;"),
"hamilt": []byte("&Hscr;"),
"hardcy": []byte("&#1098;"),
"harrcir": []byte("&#10568;"),
"hcirc": []byte("&#293;"),
"hearts": []byte("&#9829;"),
"heartsuit": []byte("&#9829;"),
"hellip": []byte("&mldr;"),
"hercon": []byte("&#8889;"),
"hksearow": []byte("&#10533;"),
"hkswarow": []byte("&#10534;"),
"homtht": []byte("&#8763;"),
"hookleftarrow": []byte("&#8617;"),
"hookrightarrow": []byte("&#8618;"),
"horbar": []byte("&#8213;"),
"hslash": []byte("&hbar;"),
"hstrok": []byte("&#295;"),
"hybull": []byte("&#8259;"),
"hyphen": []byte("&dash;"),
"iacute": []byte("&#237;"),
"icirc": []byte("&#238;"),
"iexcl": []byte("&#161;"),
"igrave": []byte("&#236;"),
"iiiint": []byte("&qint;"),
"iiint": []byte("&tint;"),
"ijlig": []byte("&#307;"),
"imacr": []byte("&#299;"),
"image": []byte("&Im;"),
"imagline": []byte("&Iscr;"),
"imagpart": []byte("&Im;"),
"imath": []byte("&#305;"),
"imped": []byte("&#437;"),
"incare": []byte("&#8453;"),
"infintie": []byte("&#10717;"),
"inodot": []byte("&#305;"),
"intcal": []byte("&#8890;"),
"integers": []byte("&Zopf;"),
"intercal": []byte("&#8890;"),
"intlarhk": []byte("&#10775;"),
"intprod": []byte("&iprod;"),
"iogon": []byte("&#303;"),
"iquest": []byte("&#191;"),
"isin": []byte("&in;"),
"isindot": []byte("&#8949;"),
"isinsv": []byte("&#8947;"),
"isinv": []byte("&in;"),
"itilde": []byte("&#297;"),
"jcirc": []byte("&#309;"),
"jmath": []byte("&#567;"),
"jsercy": []byte("&#1112;"),
"kappa": []byte("&#954;"),
"kappav": []byte("&#1008;"),
"kcedil": []byte("&#311;"),
"kgreen": []byte("&#312;"),
"lacute": []byte("&#314;"),
"laemptyv": []byte("&#10676;"),
"lagran": []byte("&Lscr;"),
"lambda": []byte("&#955;"),
"langle": []byte("&lang;"),
"laquo": []byte("&#171;"),
"larrbfs": []byte("&#10527;"),
"larrhk": []byte("&#8617;"),
"larrlp": []byte("&#8619;"),
"larrsim": []byte("&#10611;"),
"larrtl": []byte("&#8610;"),
"lbrace": []byte("{"),
"lbrack": []byte("["),
"lbrksld": []byte("&#10639;"),
"lbrkslu": []byte("&#10637;"),
"lcaron": []byte("&#318;"),
"lcedil": []byte("&#316;"),
"lcub": []byte("{"),
"ldquor": []byte("&#8222;"),
"ldrdhar": []byte("&#10599;"),
"ldrushar": []byte("&#10571;"),
"leftarrow": []byte("&larr;"),
"leftarrowtail": []byte("&#8610;"),
"leftharpoondown": []byte("&#8637;"),
"leftharpoonup": []byte("&#8636;"),
"leftleftarrows": []byte("&#8647;"),
"leftrightarrow": []byte("&harr;"),
"leftrightarrows": []byte("&#8646;"),
"leftrightharpoons": []byte("&#8651;"),
"leftrightsquigarrow": []byte("&#8621;"),
"leftthreetimes": []byte("&#8907;"),
"leq": []byte("&le;"),
"leqq": []byte("&lE;"),
"leqslant": []byte("&les;"),
"lesdoto": []byte("&#10881;"),
"lesdotor": []byte("&#10883;"),
"lessapprox": []byte("&lap;"),
"lessdot": []byte("&#8918;"),
"lesseqgtr": []byte("&leg;"),
"lesseqqgtr": []byte("&lEg;"),
"lessgtr": []byte("&lg;"),
"lesssim": []byte("&lsim;"),
"lfloor": []byte("&#8970;"),
"llcorner": []byte("&#8990;"),
"lmidot": []byte("&#320;"),
"lmoust": []byte("&#9136;"),
"lmoustache": []byte("&#9136;"),
"lnapprox": []byte("&lnap;"),
"lneq": []byte("&lne;"),
"lneqq": []byte("&lnE;"),
"longleftarrow": []byte("&xlarr;"),
"longleftrightarrow": []byte("&xharr;"),
"longmapsto": []byte("&xmap;"),
"longrightarrow": []byte("&xrarr;"),
"looparrowleft": []byte("&#8619;"),
"looparrowright": []byte("&#8620;"),
"lotimes": []byte("&#10804;"),
"lowast": []byte("&#8727;"),
"lowbar": []byte("_"),
"lozenge": []byte("&loz;"),
"lpar": []byte("("),
"lrcorner": []byte("&#8991;"),
"lsaquo": []byte("&#8249;"),
"lsqb": []byte("["),
"lsquor": []byte("&#8218;"),
"lstrok": []byte("&#322;"),
"lt": []byte("<"),
"lthree": []byte("&#8907;"),
"ltimes": []byte("&#8905;"),
"ltquest": []byte("&#10875;"),
"lurdshar": []byte("&#10570;"),
"luruhar": []byte("&#10598;"),
"maltese": []byte("&malt;"),
"mapsto": []byte("&map;"),
"mapstodown": []byte("&#8615;"),
"mapstoleft": []byte("&#8612;"),
"mapstoup": []byte("&#8613;"),
"marker": []byte("&#9646;"),
"measuredangle": []byte("&#8737;"),
"micro": []byte("&#181;"),
"midast": []byte("*"),
"middot": []byte("&#183;"),
"minusb": []byte("&#8863;"),
0