package HTML::HTML5::Entities;

use 5.008001;
use base qw[Exporter];
use strict;
use utf8;

BEGIN {
	$HTML::HTML5::Entities::AUTHORITY = 'cpan:TOBYINK';
	$HTML::HTML5::Entities::VERSION   = '0.004';
}

our (%entity2char, %char2entity, $hex, $default_unsafe_characters, @EXPORT, @EXPORT_OK);

BEGIN
{
	$hex       = 1;
	@EXPORT    = qw(encode_entities decode_entities _decode_entities);
	@EXPORT_OK = qw(%entity2char %char2entity encode_entities_numeric num_entity);
	
	$default_unsafe_characters = qr/[^\w\n\r\t !\#\$%\(-;=?-~]/x;

	%entity2char = (
		"AElig" => "\306",
		"AElig;" => "\306",
		"AMP" => "&",
		"AMP;" => "&",
		"Aacute" => "\301",
		"Aacute;" => "\301",
		"Abreve;" => "\x{102}",
		"Acirc" => "\302",
		"Acirc;" => "\302",
		"Acy;" => "\x{410}",
		"Afr;" => "\x{1d504}",
		"Agrave" => "\300",
		"Agrave;" => "\300",
		"Alpha;" => "\x{391}",
		"Amacr;" => "\x{100}",
		"And;" => "\x{2a53}",
		"Aogon;" => "\x{104}",
		"Aopf;" => "\x{1d538}",
		"ApplyFunction;" => "\x{2061}",
		"Aring" => "\305",
		"Aring;" => "\305",
		"Ascr;" => "\x{1d49c}",
		"Assign;" => "\x{2254}",
		"Atilde" => "\303",
		"Atilde;" => "\303",
		"Auml" => "\304",
		"Auml;" => "\304",
		"Backslash;" => "\x{2216}",
		"Barv;" => "\x{2ae7}",
		"Barwed;" => "\x{2306}",
		"Bcy;" => "\x{411}",
		"Because;" => "\x{2235}",
		"Bernoullis;" => "\x{212c}",
		"Beta;" => "\x{392}",
		"Bfr;" => "\x{1d505}",
		"Bopf;" => "\x{1d539}",
		"Breve;" => "\x{2d8}",
		"Bscr;" => "\x{212c}",
		"Bumpeq;" => "\x{224e}",
		"CHcy;" => "\x{427}",
		"COPY" => "\251",
		"COPY;" => "\251",
		"Cacute;" => "\x{106}",
		"Cap;" => "\x{22d2}",
		"CapitalDifferentialD;" => "\x{2145}",
		"Cayleys;" => "\x{212d}",
		"Ccaron;" => "\x{10c}",
		"Ccedil" => "\307",
		"Ccedil;" => "\307",
		"Ccirc;" => "\x{108}",
		"Cconint;" => "\x{2230}",
		"Cdot;" => "\x{10a}",
		"Cedilla;" => "\270",
		"CenterDot;" => "\267",
		"Cfr;" => "\x{212d}",
		"Chi;" => "\x{3a7}",
		"CircleDot;" => "\x{2299}",
		"CircleMinus;" => "\x{2296}",
		"CirclePlus;" => "\x{2295}",
		"CircleTimes;" => "\x{2297}",
		"ClockwiseContourIntegral;" => "\x{2232}",
		"CloseCurlyDoubleQuote;" => "\x{201d}",
		"CloseCurlyQuote;" => "\x{2019}",
		"Colon;" => "\x{2237}",
		"Colone;" => "\x{2a74}",
		"Congruent;" => "\x{2261}",
		"Conint;" => "\x{222f}",
		"ContourIntegral;" => "\x{222e}",
		"Copf;" => "\x{2102}",
		"Coproduct;" => "\x{2210}",
		"CounterClockwiseContourIntegral;" => "\x{2233}",
		"Cross;" => "\x{2a2f}",
		"Cscr;" => "\x{1d49e}",
		"Cup;" => "\x{22d3}",
		"CupCap;" => "\x{224d}",
		"DD;" => "\x{2145}",
		"DDotrahd;" => "\x{2911}",
		"DJcy;" => "\x{402}",
		"DScy;" => "\x{405}",
		"DZcy;" => "\x{40f}",
		"Dagger;" => "\x{2021}",
		"Darr;" => "\x{21a1}",
		"Dashv;" => "\x{2ae4}",
		"Dcaron;" => "\x{10e}",
		"Dcy;" => "\x{414}",
		"Del;" => "\x{2207}",
		"Delta;" => "\x{394}",
		"Dfr;" => "\x{1d507}",
		"DiacriticalAcute;" => "\264",
		"DiacriticalDot;" => "\x{2d9}",
		"DiacriticalDoubleAcute;" => "\x{2dd}",
		"DiacriticalGrave;" => "`",
		"DiacriticalTilde;" => "\x{2dc}",
		"Diamond;" => "\x{22c4}",
		"DifferentialD;" => "\x{2146}",
		"Dopf;" => "\x{1d53b}",
		"Dot;" => "\250",
		"DotDot;" => "\x{20dc}",
		"DotEqual;" => "\x{2250}",
		"DoubleContourIntegral;" => "\x{222f}",
		"DoubleDot;" => "\250",
		"DoubleDownArrow;" => "\x{21d3}",
		"DoubleLeftArrow;" => "\x{21d0}",
		"DoubleLeftRightArrow;" => "\x{21d4}",
		"DoubleLeftTee;" => "\x{2ae4}",
		"DoubleLongLeftArrow;" => "\x{27f8}",
		"DoubleLongLeftRightArrow;" => "\x{27fa}",
		"DoubleLongRightArrow;" => "\x{27f9}",
		"DoubleRightArrow;" => "\x{21d2}",
		"DoubleRightTee;" => "\x{22a8}",
		"DoubleUpArrow;" => "\x{21d1}",
		"DoubleUpDownArrow;" => "\x{21d5}",
		"DoubleVerticalBar;" => "\x{2225}",
		"DownArrow;" => "\x{2193}",
		"DownArrowBar;" => "\x{2913}",
		"DownArrowUpArrow;" => "\x{21f5}",
		"DownBreve;" => "\x{311}",
		"DownLeftRightVector;" => "\x{2950}",
		"DownLeftTeeVector;" => "\x{295e}",
		"DownLeftVector;" => "\x{21bd}",
		"DownLeftVectorBar;" => "\x{2956}",
		"DownRightTeeVector;" => "\x{295f}",
		"DownRightVector;" => "\x{21c1}",
		"DownRightVectorBar;" => "\x{2957}",
		"DownTee;" => "\x{22a4}",
		"DownTeeArrow;" => "\x{21a7}",
		"Downarrow;" => "\x{21d3}",
		"Dscr;" => "\x{1d49f}",
		"Dstrok;" => "\x{110}",
		"ENG;" => "\x{14a}",
		"ETH" => "\320",
		"ETH;" => "\320",
		"Eacute" => "\311",
		"Eacute;" => "\311",
		"Ecaron;" => "\x{11a}",
		"Ecirc" => "\312",
		"Ecirc;" => "\312",
		"Ecy;" => "\x{42d}",
		"Edot;" => "\x{116}",
		"Efr;" => "\x{1d508}",
		"Egrave" => "\310",
		"Egrave;" => "\310",
		"Element;" => "\x{2208}",
		"Emacr;" => "\x{112}",
		"EmptySmallSquare;" => "\x{25fb}",
		"EmptyVerySmallSquare;" => "\x{25ab}",
		"Eogon;" => "\x{118}",
		"Eopf;" => "\x{1d53c}",
		"Epsilon;" => "\x{395}",
		"Equal;" => "\x{2a75}",
		"EqualTilde;" => "\x{2242}",
		"Equilibrium;" => "\x{21cc}",
		"Escr;" => "\x{2130}",
		"Esim;" => "\x{2a73}",
		"Eta;" => "\x{397}",
		"Euml" => "\313",
		"Euml;" => "\313",
		"Exists;" => "\x{2203}",
		"ExponentialE;" => "\x{2147}",
		"Fcy;" => "\x{424}",
		"Ffr;" => "\x{1d509}",
		"FilledSmallSquare;" => "\x{25fc}",
		"FilledVerySmallSquare;" => "\x{25aa}",
		"Fopf;" => "\x{1d53d}",
		"ForAll;" => "\x{2200}",
		"Fouriertrf;" => "\x{2131}",
		"Fscr;" => "\x{2131}",
		"GJcy;" => "\x{403}",
		"GT" => ">",
		"GT;" => ">",
		"Gamma;" => "\x{393}",
		"Gammad;" => "\x{3dc}",
		"Gbreve;" => "\x{11e}",
		"Gcedil;" => "\x{122}",
		"Gcirc;" => "\x{11c}",
		"Gcy;" => "\x{413}",
		"Gdot;" => "\x{120}",
		"Gfr;" => "\x{1d50a}",
		"Gg;" => "\x{22d9}",
		"Gopf;" => "\x{1d53e}",
		"GreaterEqual;" => "\x{2265}",
		"GreaterEqualLess;" => "\x{22db}",
		"GreaterFullEqual;" => "\x{2267}",
		"GreaterGreater;" => "\x{2aa2}",
		"GreaterLess;" => "\x{2277}",
		"GreaterSlantEqual;" => "\x{2a7e}",
		"GreaterTilde;" => "\x{2273}",
		"Gscr;" => "\x{1d4a2}",
		"Gt;" => "\x{226b}",
		"HARDcy;" => "\x{42a}",
		"Hacek;" => "\x{2c7}",
		"Hat;" => "^",
		"Hcirc;" => "\x{124}",
		"Hfr;" => "\x{210c}",
		"HilbertSpace;" => "\x{210b}",
		"Hopf;" => "\x{210d}",
		"HorizontalLine;" => "\x{2500}",
		"Hscr;" => "\x{210b}",
		"Hstrok;" => "\x{126}",
		"HumpDownHump;" => "\x{224e}",
		"HumpEqual;" => "\x{224f}",
		"IEcy;" => "\x{415}",
		"IJlig;" => "\x{132}",
		"IOcy;" => "\x{401}",
		"Iacute" => "\315",
		"Iacute;" => "\315",
		"Icirc" => "\316",
		"Icirc;" => "\316",
		"Icy;" => "\x{418}",
		"Idot;" => "\x{130}",
		"Ifr;" => "\x{2111}",
		"Igrave" => "\314",
		"Igrave;" => "\314",
		"Im;" => "\x{2111}",
		"Imacr;" => "\x{12a}",
		"ImaginaryI;" => "\x{2148}",
		"Implies;" => "\x{21d2}",
		"Int;" => "\x{222c}",
		"Integral;" => "\x{222b}",
		"Intersection;" => "\x{22c2}",
		"InvisibleComma;" => "\x{2063}",
		"InvisibleTimes;" => "\x{2062}",
		"Iogon;" => "\x{12e}",
		"Iopf;" => "\x{1d540}",
		"Iota;" => "\x{399}",
		"Iscr;" => "\x{2110}",
		"Itilde;" => "\x{128}",
		"Iukcy;" => "\x{406}",
		"Iuml" => "\317",
		"Iuml;" => "\317",
		"Jcirc;" => "\x{134}",
		"Jcy;" => "\x{419}",
		"Jfr;" => "\x{1d50d}",
		"Jopf;" => "\x{1d541}",
		"Jscr;" => "\x{1d4a5}",
		"Jsercy;" => "\x{408}",
		"Jukcy;" => "\x{404}",
		"KHcy;" => "\x{425}",
		"KJcy;" => "\x{40c}",
		"Kappa;" => "\x{39a}",
		"Kcedil;" => "\x{136}",
		"Kcy;" => "\x{41a}",
		"Kfr;" => "\x{1d50e}",
		"Kopf;" => "\x{1d542}",
		"Kscr;" => "\x{1d4a6}",
		"LJcy;" => "\x{409}",
		"LT" => "<",
		"LT;" => "<",
		"Lacute;" => "\x{139}",
		"Lambda;" => "\x{39b}",
		"Lang;" => "\x{27ea}",
		"Laplacetrf;" => "\x{2112}",
		"Larr;" => "\x{219e}",
		"Lcaron;" => "\x{13d}",
		"Lcedil;" => "\x{13b}",
		"Lcy;" => "\x{41b}",
		"LeftAngleBracket;" => "\x{27e8}",
		"LeftArrow;" => "\x{2190}",
		"LeftArrowBar;" => "\x{21e4}",
		"LeftArrowRightArrow;" => "\x{21c6}",
		"LeftCeiling;" => "\x{2308}",
		"LeftDoubleBracket;" => "\x{27e6}",
		"LeftDownTeeVector;" => "\x{2961}",
		"LeftDownVector;" => "\x{21c3}",
		"LeftDownVectorBar;" => "\x{2959}",
		"LeftFloor;" => "\x{230a}",
		"LeftRightArrow;" => "\x{2194}",
		"LeftRightVector;" => "\x{294e}",
		"LeftTee;" => "\x{22a3}",
		"LeftTeeArrow;" => "\x{21a4}",
		"LeftTeeVector;" => "\x{295a}",
		"LeftTriangle;" => "\x{22b2}",
		"LeftTriangleBar;" => "\x{29cf}",
		"LeftTriangleEqual;" => "\x{22b4}",
		"LeftUpDownVector;" => "\x{2951}",
		"LeftUpTeeVector;" => "\x{2960}",
		"LeftUpVector;" => "\x{21bf}",
		"LeftUpVectorBar;" => "\x{2958}",
		"LeftVector;" => "\x{21bc}",
		"LeftVectorBar;" => "\x{2952}",
		"Leftarrow;" => "\x{21d0}",
		"Leftrightarrow;" => "\x{21d4}",
		"LessEqualGreater;" => "\x{22da}",
		"LessFullEqual;" => "\x{2266}",
		"LessGreater;" => "\x{2276}",
		"LessLess;" => "\x{2aa1}",
		"LessSlantEqual;" => "\x{2a7d}",
		"LessTilde;" => "\x{2272}",
		"Lfr;" => "\x{1d50f}",
		"Ll;" => "\x{22d8}",
		"Lleftarrow;" => "\x{21da}",
		"Lmidot;" => "\x{13f}",
		"LongLeftArrow;" => "\x{27f5}",
		"LongLeftRightArrow;" => "\x{27f7}",
		"LongRightArrow;" => "\x{27f6}",
		"Longleftarrow;" => "\x{27f8}",
		"Longleftrightarrow;" => "\x{27fa}",
		"Longrightarrow;" => "\x{27f9}",
		"Lopf;" => "\x{1d543}",
		"LowerLeftArrow;" => "\x{2199}",
		"LowerRightArrow;" => "\x{2198}",
		"Lscr;" => "\x{2112}",
		"Lsh;" => "\x{21b0}",
		"Lstrok;" => "\x{141}",
		"Lt;" => "\x{226a}",
		"Map;" => "\x{2905}",
		"Mcy;" => "\x{41c}",
		"MediumSpace;" => "\x{205f}",
		"Mellintrf;" => "\x{2133}",
		"Mfr;" => "\x{1d510}",
		"MinusPlus;" => "\x{2213}",
		"Mopf;" => "\x{1d544}",
		"Mscr;" => "\x{2133}",
		"Mu;" => "\x{39c}",
		"NJcy;" => "\x{40a}",
		"Nacute;" => "\x{143}",
		"Ncaron;" => "\x{147}",
		"Ncedil;" => "\x{145}",
		"Ncy;" => "\x{41d}",
		"NegativeMediumSpace;" => "\x{200b}",
		"NegativeThickSpace;" => "\x{200b}",
		"NegativeThinSpace;" => "\x{200b}",
		"NegativeVeryThinSpace;" => "\x{200b}",
		"NestedGreaterGreater;" => "\x{226b}",
		"NestedLessLess;" => "\x{226a}",
		"NewLine;" => "\n",
		"Nfr;" => "\x{1d511}",
		"NoBreak;" => "\x{2060}",
		"NonBreakingSpace;" => "\240",
		"Nopf;" => "\x{2115}",
		"Not;" => "\x{2aec}",
		"NotCongruent;" => "\x{2262}",
		"NotCupCap;" => "\x{226d}",
		"NotDoubleVerticalBar;" => "\x{2226}",
		"NotElement;" => "\x{2209}",
		"NotEqual;" => "\x{2260}",
		"NotEqualTilde;" => "\x{2242}\x{338}",
		"NotExists;" => "\x{2204}",
		"NotGreater;" => "\x{226f}",
		"NotGreaterEqual;" => "\x{2271}",
		"NotGreaterFullEqual;" => "\x{2267}\x{338}",
		"NotGreaterGreater;" => "\x{226b}\x{338}",
		"NotGreaterLess;" => "\x{2279}",
		"NotGreaterSlantEqual;" => "\x{2a7e}\x{338}",
		"NotGreaterTilde;" => "\x{2275}",
		"NotHumpDownHump;" => "\x{224e}\x{338}",
		"NotHumpEqual;" => "\x{224f}\x{338}",
		"NotLeftTriangle;" => "\x{22ea}",
		"NotLeftTriangleBar;" => "\x{29cf}\x{338}",
		"NotLeftTriangleEqual;" => "\x{22ec}",
		"NotLess;" => "\x{226e}",
		"NotLessEqual;" => "\x{2270}",
		"NotLessGreater;" => "\x{2278}",
		"NotLessLess;" => "\x{226a}\x{338}",
		"NotLessSlantEqual;" => "\x{2a7d}\x{338}",
		"NotLessTilde;" => "\x{2274}",
		"NotNestedGreaterGreater;" => "\x{2aa2}\x{338}",
		"NotNestedLessLess;" => "\x{2aa1}\x{338}",
		"NotPrecedes;" => "\x{2280}",
		"NotPrecedesEqual;" => "\x{2aaf}\x{338}",
		"NotPrecedesSlantEqual;" => "\x{22e0}",
		"NotReverseElement;" => "\x{220c}",
		"NotRightTriangle;" => "\x{22eb}",
		"NotRightTriangleBar;" => "\x{29d0}\x{338}",
		"NotRightTriangleEqual;" => "\x{22ed}",
		"NotSquareSubset;" => "\x{228f}\x{338}",
		"NotSquareSubsetEqual;" => "\x{22e2}",
		"NotSquareSuperset;" => "\x{2290}\x{338}",
		"NotSquareSupersetEqual;" => "\x{22e3}",
		"NotSubset;" => "\x{2282}\x{20d2}",
		"NotSubsetEqual;" => "\x{2288}",
		"NotSucceeds;" => "\x{2281}",
		"NotSucceedsEqual;" => "\x{2ab0}\x{338}",
		"NotSucceedsSlantEqual;" => "\x{22e1}",
		"NotSucceedsTilde;" => "\x{227f}\x{338}",
		"NotSuperset;" => "\x{2283}\x{20d2}",
		"NotSupersetEqual;" => "\x{2289}",
		"NotTilde;" => "\x{2241}",
		"NotTildeEqual;" => "\x{2244}",
		"NotTildeFullEqual;" => "\x{2247}",
		"NotTildeTilde;" => "\x{2249}",
		"NotVerticalBar;" => "\x{2224}",
		"Nscr;" => "\x{1d4a9}",
		"Ntilde" => "\321",
		"Ntilde;" => "\321",
		"Nu;" => "\x{39d}",
		"OElig;" => "\x{152}",
		"Oacute" => "\323",
		"Oacute;" => "\323",
		"Ocirc" => "\324",
		"Ocirc;" => "\324",
		"Ocy;" => "\x{41e}",
		"Odblac;" => "\x{150}",
		"Ofr;" => "\x{1d512}",
		"Ograve" => "\322",
		"Ograve;" => "\322",
		"Omacr;" => "\x{14c}",
		"Omega;" => "\x{3a9}",
		"Omicron;" => "\x{39f}",
		"Oopf;" => "\x{1d546}",
		"OpenCurlyDoubleQuote;" => "\x{201c}",
		"OpenCurlyQuote;" => "\x{2018}",
		"Or;" => "\x{2a54}",
		"Oscr;" => "\x{1d4aa}",
		"Oslash" => "\330",
		"Oslash;" => "\330",
		"Otilde" => "\325",
		"Otilde;" => "\325",
		"Otimes;" => "\x{2a37}",
		"Ouml" => "\326",
		"Ouml;" => "\326",
		"OverBar;" => "\x{203e}",
		"OverBrace;" => "\x{23de}",
		"OverBracket;" => "\x{23b4}",
		"OverParenthesis;" => "\x{23dc}",
		"PartialD;" => "\x{2202}",
		"Pcy;" => "\x{41f}",
		"Pfr;" => "\x{1d513}",
		"Phi;" => "\x{3a6}",
		"Pi;" => "\x{3a0}",
		"PlusMinus;" => "\261",
		"Poincareplane;" => "\x{210c}",
		"Popf;" => "\x{2119}",
		"Pr;" => "\x{2abb}",
		"Precedes;" => "\x{227a}",
		"PrecedesEqual;" => "\x{2aaf}",
		"PrecedesSlantEqual;" => "\x{227c}",
		"PrecedesTilde;" => "\x{227e}",
		"Prime;" => "\x{2033}",
		"Product;" => "\x{220f}",
		"Proportion;" => "\x{2237}",
		"Proportional;" => "\x{221d}",
		"Pscr;" => "\x{1d4ab}",
		"Psi;" => "\x{3a8}",
		"QUOT" => "\"",
		"QUOT;" => "\"",
		"Qfr;" => "\x{1d514}",
		"Qopf;" => "\x{211a}",
		"Qscr;" => "\x{1d4ac}",
		"RBarr;" => "\x{2910}",
		"REG" => "\256",
		"REG;" => "\256",
		"Racute;" => "\x{154}",
		"Rang;" => "\x{27eb}",
		"Rarr;" => "\x{21a0}",
		"Rarrtl;" => "\x{2916}",
		"Rcaron;" => "\x{158}",
		"Rcedil;" => "\x{156}",
		"Rcy;" => "\x{420}",
		"Re;" => "\x{211c}",
		"ReverseElement;" => "\x{220b}",
		"ReverseEquilibrium;" => "\x{21cb}",
		"ReverseUpEquilibrium;" => "\x{296f}",
		"Rfr;" => "\x{211c}",
		"Rho;" => "\x{3a1}",
		"RightAngleBracket;" => "\x{27e9}",
		"RightArrow;" => "\x{2192}",
		"RightArrowBar;" => "\x{21e5}",
		"RightArrowLeftArrow;" => "\x{21c4}",
		"RightCeiling;" => "\x{2309}",
		"RightDoubleBracket;" => "\x{27e7}",
		"RightDownTeeVector;" => "\x{295d}",
		"RightDownVector;" => "\x{21c2}",
		"RightDownVectorBar;" => "\x{2955}",
		"RightFloor;" => "\x{230b}",
		"RightTee;" => "\x{22a2}",
		"RightTeeArrow;" => "\x{21a6}",
		"RightTeeVector;" => "\x{295b}",
		"RightTriangle;" => "\x{22b3}",
		"RightTriangleBar;" => "\x{29d0}",
		"RightTriangleEqual;" => "\x{22b5}",
		"RightUpDownVector;" => "\x{294f}",
		"RightUpTeeVector;" => "\x{295c}",
		"RightUpVector;" => "\x{21be}",
		"RightUpVectorBar;" => "\x{2954}",
		"RightVector;" => "\x{21c0}",
		"RightVectorBar;" => "\x{2953}",
		"Rightarrow;" => "\x{21d2}",
		"Ropf;" => "\x{211d}",
		"RoundImplies;" => "\x{2970}",
		"Rrightarrow;" => "\x{21db}",
		"Rscr;" => "\x{211b}",
		"Rsh;" => "\x{21b1}",
		"RuleDelayed;" => "\x{29f4}",
		"SHCHcy;" => "\x{429}",
		"SHcy;" => "\x{428}",
		"SOFTcy;" => "\x{42c}",
		"Sacute;" => "\x{15a}",
		"Sc;" => "\x{2abc}",
		"Scaron;" => "\x{160}",
		"Scedil;" => "\x{15e}",
		"Scirc;" => "\x{15c}",
		"Scy;" => "\x{421}",
		"Sfr;" => "\x{1d516}",
		"ShortDownArrow;" => "\x{2193}",
		"ShortLeftArrow;" => "\x{2190}",
		"ShortRightArrow;" => "\x{2192}",
		"ShortUpArrow;" => "\x{2191}",
		"Sigma;" => "\x{3a3}",
		"SmallCircle;" => "\x{2218}",
		"Sopf;" => "\x{1d54a}",
		"Sqrt;" => "\x{221a}",
		"Square;" => "\x{25a1}",
		"SquareIntersection;" => "\x{2293}",
		"SquareSubset;" => "\x{228f}",
		"SquareSubsetEqual;" => "\x{2291}",
		"SquareSuperset;" => "\x{2290}",
		"SquareSupersetEqual;" => "\x{2292}",
		"SquareUnion;" => "\x{2294}",
		"Sscr;" => "\x{1d4ae}",
		"Star;" => "\x{22c6}",
		"Sub;" => "\x{22d0}",
		"Subset;" => "\x{22d0}",
		"SubsetEqual;" => "\x{2286}",
		"Succeeds;" => "\x{227b}",
		"SucceedsEqual;" => "\x{2ab0}",
		"SucceedsSlantEqual;" => "\x{227d}",
		"SucceedsTilde;" => "\x{227f}",
		"SuchThat;" => "\x{220b}",
		"Sum;" => "\x{2211}",
		"Sup;" => "\x{22d1}",
		"Superset;" => "\x{2283}",
		"SupersetEqual;" => "\x{2287}",
		"Supset;" => "\x{22d1}",
		"THORN" => "\336",
		"THORN;" => "\336",
		"TRADE;" => "\x{2122}",
		"TSHcy;" => "\x{40b}",
		"TScy;" => "\x{426}",
		"Tab;" => "\t",
		"Tau;" => "\x{3a4}",
		"Tcaron;" => "\x{164}",
		"Tcedil;" => "\x{162}",
		"Tcy;" => "\x{422}",
		"Tfr;" => "\x{1d517}",
		"Therefore;" => "\x{2234}",
		"Theta;" => "\x{398}",
		"ThickSpace;" => "\x{205f}\x{200a}",
		"ThinSpace;" => "\x{2009}",
		"Tilde;" => "\x{223c}",
		"TildeEqual;" => "\x{2243}",
		"TildeFullEqual;" => "\x{2245}",
		"TildeTilde;" => "\x{2248}",
		"Topf;" => "\x{1d54b}",
		"TripleDot;" => "\x{20db}",
		"Tscr;" => "\x{1d4af}",
		"Tstrok;" => "\x{166}",
		"Uacute" => "\332",
		"Uacute;" => "\332",
		"Uarr;" => "\x{219f}",
		"Uarrocir;" => "\x{2949}",
		"Ubrcy;" => "\x{40e}",
		"Ubreve;" => "\x{16c}",
		"Ucirc" => "\333",
		"Ucirc;" => "\333",
		"Ucy;" => "\x{423}",
		"Udblac;" => "\x{170}",
		"Ufr;" => "\x{1d518}",
		"Ugrave" => "\331",
		"Ugrave;" => "\331",
		"Umacr;" => "\x{16a}",
		"UnderBar;" => "_",
		"UnderBrace;" => "\x{23df}",
		"UnderBracket;" => "\x{23b5}",
		"UnderParenthesis;" => "\x{23dd}",
		"Union;" => "\x{22c3}",
		"UnionPlus;" => "\x{228e}",
		"Uogon;" => "\x{172}",
		"Uopf;" => "\x{1d54c}",
		"UpArrow;" => "\x{2191}",
		"UpArrowBar;" => "\x{2912}",
		"UpArrowDownArrow;" => "\x{21c5}",
		"UpDownArrow;" => "\x{2195}",
		"UpEquilibrium;" => "\x{296e}",
		"UpTee;" => "\x{22a5}",
		"UpTeeArrow;" => "\x{21a5}",
		"Uparrow;" => "\x{21d1}",
		"Updownarrow;" => "\x{21d5}",
		"UpperLeftArrow;" => "\x{2196}",
		"UpperRightArrow;" => "\x{2197}",
		"Upsi;" => "\x{3d2}",
		"Upsilon;" => "\x{3a5}",
		"Uring;" => "\x{16e}",
		"Uscr;" => "\x{1d4b0}",
		"Utilde;" => "\x{168}",
		"Uuml" => "\334",
		"Uuml;" => "\334",
		"VDash;" => "\x{22ab}",
		"Vbar;" => "\x{2aeb}",
		"Vcy;" => "\x{412}",
		"Vdash;" => "\x{22a9}",
		"Vdashl;" => "\x{2ae6}",
		"Vee;" => "\x{22c1}",
		"Verbar;" => "\x{2016}",
		"Vert;" => "\x{2016}",
		"VerticalBar;" => "\x{2223}",
		"VerticalLine;" => "|",
		"VerticalSeparator;" => "\x{2758}",
		"VerticalTilde;" => "\x{2240}",
		"VeryThinSpace;" => "\x{200a}",
		"Vfr;" => "\x{1d519}",
		"Vopf;" => "\x{1d54d}",
		"Vscr;" => "\x{1d4b1}",
		"Vvdash;" => "\x{22aa}",
		"Wcirc;" => "\x{174}",
		"Wedge;" => "\x{22c0}",
		"Wfr;" => "\x{1d51a}",
		"Wopf;" => "\x{1d54e}",
		"Wscr;" => "\x{1d4b2}",
		"Xfr;" => "\x{1d51b}",
		"Xi;" => "\x{39e}",
		"Xopf;" => "\x{1d54f}",
		"Xscr;" => "\x{1d4b3}",
		"YAcy;" => "\x{42f}",
		"YIcy;" => "\x{407}",
		"YUcy;" => "\x{42e}",
		"Yacute" => "\335",
		"Yacute;" => "\335",
		"Ycirc;" => "\x{176}",
		"Ycy;" => "\x{42b}",
		"Yfr;" => "\x{1d51c}",
		"Yopf;" => "\x{1d550}",
		"Yscr;" => "\x{1d4b4}",
		"Yuml;" => "\x{178}",
		"ZHcy;" => "\x{416}",
		"Zacute;" => "\x{179}",
		"Zcaron;" => "\x{17d}",
		"Zcy;" => "\x{417}",
		"Zdot;" => "\x{17b}",
		"ZeroWidthSpace;" => "\x{200b}",
		"Zeta;" => "\x{396}",
		"Zfr;" => "\x{2128}",
		"Zopf;" => "\x{2124}",
		"Zscr;" => "\x{1d4b5}",
		"aacute" => "\341",
		"aacute;" => "\341",
		"abreve;" => "\x{103}",
		"ac;" => "\x{223e}",
		"acE;" => "\x{223e}\x{333}",
		"acd;" => "\x{223f}",
		"acirc" => "\342",
		"acirc;" => "\342",
		"acute" => "\264",
		"acute;" => "\264",
		"acy;" => "\x{430}",
		"aelig" => "\346",
		"aelig;" => "\346",
		"af;" => "\x{2061}",
		"afr;" => "\x{1d51e}",
		"agrave" => "\340",
		"agrave;" => "\340",
		"alefsym;" => "\x{2135}",
		"aleph;" => "\x{2135}",
		"alpha;" => "\x{3b1}",
		"amacr;" => "\x{101}",
		"amalg;" => "\x{2a3f}",
		"amp" => "&",
		"amp;" => "&",
		"and;" => "\x{2227}",
		"andand;" => "\x{2a55}",
		"andd;" => "\x{2a5c}",
		"andslope;" => "\x{2a58}",
		"andv;" => "\x{2a5a}",
		"ang;" => "\x{2220}",
		"ange;" => "\x{29a4}",
		"angle;" => "\x{2220}",
		"angmsd;" => "\x{2221}",
		"angmsdaa;" => "\x{29a8}",
		"angmsdab;" => "\x{29a9}",
		"angmsdac;" => "\x{29aa}",
		"angmsdad;" => "\x{29ab}",
		"angmsdae;" => "\x{29ac}",
		"angmsdaf;" => "\x{29ad}",
		"angmsdag;" => "\x{29ae}",
		"angmsdah;" => "\x{29af}",
		"angrt;" => "\x{221f}",
		"angrtvb;" => "\x{22be}",
		"angrtvbd;" => "\x{299d}",
		"angsph;" => "\x{2222}",
		"angst;" => "\305",
		"angzarr;" => "\x{237c}",
		"aogon;" => "\x{105}",
		"aopf;" => "\x{1d552}",
		"ap;" => "\x{2248}",
		"apE;" => "\x{2a70}",
		"apacir;" => "\x{2a6f}",
		"ape;" => "\x{224a}",
		"apid;" => "\x{224b}",
		"apos;" => "'",
		"approx;" => "\x{2248}",
		"approxeq;" => "\x{224a}",
		"aring" => "\345",
		"aring;" => "\345",
		"ascr;" => "\x{1d4b6}",
		"ast;" => "*",
		"asymp;" => "\x{2248}",
		"asympeq;" => "\x{224d}",
		"atilde" => "\343",
		"atilde;" => "\343",
		"auml" => "\344",
		"auml;" => "\344",
		"awconint;" => "\x{2233}",
		"awint;" => "\x{2a11}",
		"bNot;" => "\x{2aed}",
		"backcong;" => "\x{224c}",
		"backepsilon;" => "\x{3f6}",
		"backprime;" => "\x{2035}",
		"backsim;" => "\x{223d}",
		"backsimeq;" => "\x{22cd}",
		"barvee;" => "\x{22bd}",
		"barwed;" => "\x{2305}",
		"barwedge;" => "\x{2305}",
		"bbrk;" => "\x{23b5}",
		"bbrktbrk;" => "\x{23b6}",
		"bcong;" => "\x{224c}",
		"bcy;" => "\x{431}",
		"bdquo;" => "\x{201e}",
		"becaus;" => "\x{2235}",
		"because;" => "\x{2235}",
		"bemptyv;" => "\x{29b0}",
		"bepsi;" => "\x{3f6}",
		"bernou;" => "\x{212c}",
		"beta;" => "\x{3b2}",
		"beth;" => "\x{2136}",
		"between;" => "\x{226c}",
		"bfr;" => "\x{1d51f}",
		"bigcap;" => "\x{22c2}",
		"bigcirc;" => "\x{25ef}",
		"bigcup;" => "\x{22c3}",
		"bigodot;" => "\x{2a00}",
		"bigoplus;" => "\x{2a01}",
		"bigotimes;" => "\x{2a02}",
		"bigsqcup;" => "\x{2a06}",
		"bigstar;" => "\x{2605}",
		"bigtriangledown;" => "\x{25bd}",
		"bigtriangleup;" => "\x{25b3}",
		"biguplus;" => "\x{2a04}",
		"bigvee;" => "\x{22c1}",
		"bigwedge;" => "\x{22c0}",
		"bkarow;" => "\x{290d}",
		"blacklozenge;" => "\x{29eb}",
		"blacksquare;" => "\x{25aa}",
		"blacktriangle;" => "\x{25b4}",
		"blacktriangledown;" => "\x{25be}",
		"blacktriangleleft;" => "\x{25c2}",
		"blacktriangleright;" => "\x{25b8}",
		"blank;" => "\x{2423}",
		"blk12;" => "\x{2592}",
		"blk14;" => "\x{2591}",
		"blk34;" => "\x{2593}",
		"block;" => "\x{2588}",
		"bne;" => "=\x{20e5}",
		"bnequiv;" => "\x{2261}\x{20e5}",
		"bnot;" => "\x{2310}",
		"bopf;" => "\x{1d553}",
		"bot;" => "\x{22a5}",
		"bottom;" => "\x{22a5}",
		"bowtie;" => "\x{22c8}",
		"boxDL;" => "\x{2557}",
		"boxDR;" => "\x{2554}",
		"boxDl;" => "\x{2556}",
		"boxDr;" => "\x{2553}",
		"boxH;" => "\x{2550}",
		"boxHD;" => "\x{2566}",
		"boxHU;" => "\x{2569}",
		"boxHd;" => "\x{2564}",
		"boxHu;" => "\x{2567}",
		"boxUL;" => "\x{255d}",
		"boxUR;" => "\x{255a}",
		"boxUl;" => "\x{255c}",
		"boxUr;" => "\x{2559}",
		"boxV;" => "\x{2551}",
		"boxVH;" => "\x{256c}",
		"boxVL;" => "\x{2563}",
		"boxVR;" => "\x{2560}",
		"boxVh;" => "\x{256b}",
		"boxVl;" => "\x{2562}",
		"boxVr;" => "\x{255f}",
		"boxbox;" => "\x{29c9}",
		"boxdL;" => "\x{2555}",
		"boxdR;" => "\x{2552}",
		"boxdl;" => "\x{2510}",
		"boxdr;" => "\x{250c}",
		"boxh;" => "\x{2500}",
		"boxhD;" => "\x{2565}",
		"boxhU;" => "\x{2568}",
		"boxhd;" => "\x{252c}",
		"boxhu;" => "\x{2534}",
		"boxminus;" => "\x{229f}",
		"boxplus;" => "\x{229e}",
		"boxtimes;" => "\x{22a0}",
		"boxuL;" => "\x{255b}",
		"boxuR;" => "\x{2558}",
		"boxul;" => "\x{2518}",
		"boxur;" => "\x{2514}",
		"boxv;" => "\x{2502}",
		"boxvH;" => "\x{256a}",
		"boxvL;" => "\x{2561}",
		"boxvR;" => "\x{255e}",
		"boxvh;" => "\x{253c}",
		"boxvl;" => "\x{2524}",
		"boxvr;" => "\x{251c}",
		"bprime;" => "\x{2035}",
		"breve;" => "\x{2d8}",
		"brvbar" => "\246",
		"brvbar;" => "\246",
		"bscr;" => "\x{1d4b7}",
		"bsemi;" => "\x{204f}",
		"bsim;" => "\x{223d}",
		"bsime;" => "\x{22cd}",
		"bsol;" => "\\",
		"bsolb;" => "\x{29c5}",
		"bsolhsub;" => "\x{27c8}",
		"bull;" => "\x{2022}",
		"bullet;" => "\x{2022}",
		"bump;" => "\x{224e}",
		"bumpE;" => "\x{2aae}",
		"bumpe;" => "\x{224f}",
		"bumpeq;" => "\x{224f}",
		"cacute;" => "\x{107}",
		"cap;" => "\x{2229}",
		"capand;" => "\x{2a44}",
		"capbrcup;" => "\x{2a49}",
		"capcap;" => "\x{2a4b}",
		"capcup;" => "\x{2a47}",
		"capdot;" => "\x{2a40}",
		"caps;" => "\x{2229}\x{fe00}",
		"caret;" => "\x{2041}",
		"caron;" => "\x{2c7}",
		"ccaps;" => "\x{2a4d}",
		"ccaron;" => "\x{10d}",
		"ccedil" => "\347",
		"ccedil;" => "\347",
		"ccirc;" => "\x{109}",
		"ccups;" => "\x{2a4c}",
		"ccupssm;" => "\x{2a50}",
		"cdot;" => "\x{10b}",
		"cedil" => "\270",
		"cedil;" => "\270",
		"cemptyv;" => "\x{29b2}",
		"cent" => "\242",
		"cent;" => "\242",
		"centerdot;" => "\267",
		"cfr;" => "\x{1d520}",
		"chcy;" => "\x{447}",
		"check;" => "\x{2713}",
		"checkmark;" => "\x{2713}",
		"chi;" => "\x{3c7}",
		"cir;" => "\x{25cb}",
		"cirE;" => "\x{29c3}",
		"circ;" => "\x{2c6}",
		"circeq;" => "\x{2257}",
		"circlearrowleft;" => "\x{21ba}",
		"circlearrowright;" => "\x{21bb}",
		"circledR;" => "\256",
		"circledS;" => "\x{24c8}",
		"circledast;" => "\x{229b}",
		"circledcirc;" => "\x{229a}",
		"circleddash;" => "\x{229d}",
		"cire;" => "\x{2257}",
		"cirfnint;" => "\x{2a10}",
		"cirmid;" => "\x{2aef}",
		"cirscir;" => "\x{29c2}",
		"clubs;" => "\x{2663}",
		"clubsuit;" => "\x{2663}",
		"colon;" => ":",
		"colone;" => "\x{2254}",
		"coloneq;" => "\x{2254}",
		"comma;" => ",",
		"commat;" => "\@",
		"comp;" => "\x{2201}",
		"compfn;" => "\x{2218}",
		"complement;" => "\x{2201}",
		"complexes;" => "\x{2102}",
		"cong;" => "\x{2245}",
		"congdot;" => "\x{2a6d}",
		"conint;" => "\x{222e}",
		"copf;" => "\x{1d554}",
		"coprod;" => "\x{2210}",
		"copy" => "\251",
		"copy;" => "\251",
		"copysr;" => "\x{2117}",
		"crarr;" => "\x{21b5}",
		"cross;" => "\x{2717}",
		"cscr;" => "\x{1d4b8}",
		"csub;" => "\x{2acf}",
		"csube;" => "\x{2ad1}",
		"csup;" => "\x{2ad0}",
		"csupe;" => "\x{2ad2}",
		"ctdot;" => "\x{22ef}",
		"cudarrl;" => "\x{2938}",
		"cudarrr;" => "\x{2935}",
		"cuepr;" => "\x{22de}",
		"cuesc;" => "\x{22df}",
		"cularr;" => "\x{21b6}",
		"cularrp;" => "\x{293d}",
		"cup;" => "\x{222a}",
		"cupbrcap;" => "\x{2a48}",
		"cupcap;" => "\x{2a46}",
		"cupcup;" => "\x{2a4a}",
		"cupdot;" => "\x{228d}",
		"cupor;" => "\x{2a45}",
		"cups;" => "\x{222a}\x{fe00}",
		"curarr;" => "\x{21b7}",
		"curarrm;" => "\x{293c}",
		"curlyeqprec;" => "\x{22de}",
		"curlyeqsucc;" => "\x{22df}",
		"curlyvee;" => "\x{22ce}",
		"curlywedge;" => "\x{22cf}",
		"curren" => "\244",
		"curren;" => "\244",
		"curvearrowleft;" => "\x{21b6}",
		"curvearrowright;" => "\x{21b7}",
		"cuvee;" => "\x{22ce}",
		"cuwed;" => "\x{22cf}",
		"cwconint;" => "\x{2232}",
		"cwint;" => "\x{2231}",
		"cylcty;" => "\x{232d}",
		"dArr;" => "\x{21d3}",
		"dHar;" => "\x{2965}",
		"dagger;" => "\x{2020}",
		"daleth;" => "\x{2138}",
		"darr;" => "\x{2193}",
		"dash;" => "\x{2010}",
		"dashv;" => "\x{22a3}",
		"dbkarow;" => "\x{290f}",
		"dblac;" => "\x{2dd}",
		"dcaron;" => "\x{10f}",
		"dcy;" => "\x{434}",
		"dd;" => "\x{2146}",
		"ddagger;" => "\x{2021}",
		"ddarr;" => "\x{21ca}",
		"ddotseq;" => "\x{2a77}",
		"deg" => "\260",
		"deg;" => "\260",
		"delta;" => "\x{3b4}",
		"demptyv;" => "\x{29b1}",
		"dfisht;" => "\x{297f}",
		"dfr;" => "\x{1d521}",
		"dharl;" => "\x{21c3}",
		"dharr;" => "\x{21c2}",
		"diam;" => "\x{22c4}",
		"diamond;" => "\x{22c4}",
		"diamondsuit;" => "\x{2666}",
		"diams;" => "\x{2666}",
		"die;" => "\250",
		"digamma;" => "\x{3dd}",
		"disin;" => "\x{22f2}",
		"div;" => "\367",
		"divide" => "\367",
		"divide;" => "\367",
		"divideontimes;" => "\x{22c7}",
		"divonx;" => "\x{22c7}",
		"djcy;" => "\x{452}",
		"dlcorn;" => "\x{231e}",
		"dlcrop;" => "\x{230d}",
		"dollar;" => "\$",
		"dopf;" => "\x{1d555}",
		"dot;" => "\x{2d9}",
		"doteq;" => "\x{2250}",
		"doteqdot;" => "\x{2251}",
		"dotminus;" => "\x{2238}",
		"dotplus;" => "\x{2214}",
		"dotsquare;" => "\x{22a1}",
		"doublebarwedge;" => "\x{2306}",
		"downarrow;" => "\x{2193}",
		"downdownarrows;" => "\x{21ca}",
		"downharpoonleft;" => "\x{21c3}",
		"downharpoonright;" => "\x{21c2}",
		"drbkarow;" => "\x{2910}",
		"drcorn;" => "\x{231f}",
		"drcrop;" => "\x{230c}",
		"dscr;" => "\x{1d4b9}",
		"dscy;" => "\x{455}",
		"dsol;" => "\x{29f6}",
		"dstrok;" => "\x{111}",
		"dtdot;" => "\x{22f1}",
		"dtri;" => "\x{25bf}",
		"dtrif;" => "\x{25be}",
		"duarr;" => "\x{21f5}",
		"duhar;" => "\x{296f}",
		"dwangle;" => "\x{29a6}",
		"dzcy;" => "\x{45f}",
		"dzigrarr;" => "\x{27ff}",
		"eDDot;" => "\x{2a77}",
		"eDot;" => "\x{2251}",
		"eacute" => "\351",
		"eacute;" => "\351",
		"easter;" => "\x{2a6e}",
		"ecaron;" => "\x{11b}",
		"ecir;" => "\x{2256}",
		"ecirc" => "\352",
		"ecirc;" => "\352",
		"ecolon;" => "\x{2255}",
		"ecy;" => "\x{44d}",
		"edot;" => "\x{117}",
		"ee;" => "\x{2147}",
		"efDot;" => "\x{2252}",
		"efr;" => "\x{1d522}",
		"eg;" => "\x{2a9a}",
		"egrave" => "\350",
		"egrave;" => "\350",
		"egs;" => "\x{2a96}",
		"egsdot;" => "\x{2a98}",
		"el;" => "\x{2a99}",
		"elinters;" => "\x{23e7}",
		"ell;" => "\x{2113}",
		"els;" => "\x{2a95}",
		"elsdot;" => "\x{2a97}",
		"emacr;" => "\x{113}",
		"empty;" => "\x{2205}",
		"emptyset;" => "\x{2205}",
		"emptyv;" => "\x{2205}",
		"emsp13;" => "\x{2004}",
		"emsp14;" => "\x{2005}",
		"emsp;" => "\x{2003}",
		"eng;" => "\x{14b}",
		"ensp;" => "\x{2002}",
		"eogon;" => "\x{119}",
		"eopf;" => "\x{1d556}",
		"epar;" => "\x{22d5}",
		"eparsl;" => "\x{29e3}",
		"eplus;" => "\x{2a71}",
		"epsi;" => "\x{3b5}",
		"epsilon;" => "\x{3b5}",
		"epsiv;" => "\x{3f5}",
		"eqcirc;" => "\x{2256}",
		"eqcolon;" => "\x{2255}",
		"eqsim;" => "\x{2242}",
		"eqslantgtr;" => "\x{2a96}",
		"eqslantless;" => "\x{2a95}",
		"equals;" => "=",
		"equest;" => "\x{225f}",
		"equiv;" => "\x{2261}",
		"equivDD;" => "\x{2a78}",
		"eqvparsl;" => "\x{29e5}",
		"erDot;" => "\x{2253}",
		"erarr;" => "\x{2971}",
		"escr;" => "\x{212f}",
		"esdot;" => "\x{2250}",
		"esim;" => "\x{2242}",
		"eta;" => "\x{3b7}",
		"eth" => "\360",
		"eth;" => "\360",
		"euml" => "\353",
		"euml;" => "\353",
		"euro;" => "\x{20ac}",
		"excl;" => "!",
		"exist;" => "\x{2203}",
		"expectation;" => "\x{2130}",
		"exponentiale;" => "\x{2147}",
		"fallingdotseq;" => "\x{2252}",
		"fcy;" => "\x{444}",
		"female;" => "\x{2640}",
		"ffilig;" => "\x{fb03}",
		"fflig;" => "\x{fb00}",
		"ffllig;" => "\x{fb04}",
		"ffr;" => "\x{1d523}",
		"filig;" => "\x{fb01}",
		"fjlig;" => "fj",
		"flat;" => "\x{266d}",
		"fllig;" => "\x{fb02}",
		"fltns;" => "\x{25b1}",
		"fnof;" => "\x{192}",
		"fopf;" => "\x{1d557}",
		"forall;" => "\x{2200}",
		"fork;" => "\x{22d4}",
		"forkv;" => "\x{2ad9}",
		"fpartint;" => "\x{2a0d}",
		"frac12" => "\275",
		"frac12;" => "\275",
		"frac13;" => "\x{2153}",
		"frac14" => "\274",
		"frac14;" => "\274",
		"frac15;" => "\x{2155}",
		"frac16;" => "\x{2159}",
		"frac18;" => "\x{215b}",
		"frac23;" => "\x{2154}",
		"frac25;" => "\x{2156}",
		"frac34" => "\276",
		"frac34;" => "\276",
		"frac35;" => "\x{2157}",
		"frac38;" => "\x{215c}",
		"frac45;" => "\x{2158}",
		"frac56;" => "\x{215a}",
		"frac58;" => "\x{215d}",
		"frac78;" => "\x{215e}",
		"frasl;" => "\x{2044}",
		"frown;" => "\x{2322}",
		"fscr;" => "\x{1d4bb}",
		"gE;" => "\x{2267}",
		"gEl;" => "\x{2a8c}",
		"gacute;" => "\x{1f5}",
		"gamma;" => "\x{3b3}",
		"gammad;" => "\x{3dd}",
		"gap;" => "\x{2a86}",
		"gbreve;" => "\x{11f}",
		"gcirc;" => "\x{11d}",
		"gcy;" => "\x{433}",
		"gdot;" => "\x{121}",
		"ge;" => "\x{2265}",
		"gel;" => "\x{22db}",
		"geq;" => "\x{2265}",
		"geqq;" => "\x{2267}",
		"geqslant;" => "\x{2a7e}",
		"ges;" => "\x{2a7e}",
		"gescc;" => "\x{2aa9}",
		"gesdot;" => "\x{2a80}",
		"gesdoto;" => "\x{2a82}",
		"gesdotol;" => "\x{2a84}",
		"gesl;" => "\x{22db}\x{fe00}",
		"gesles;" => "\x{2a94}",
		"gfr;" => "\x{1d524}",
		"gg;" => "\x{226b}",
		"ggg;" => "\x{22d9}",
		"gimel;" => "\x{2137}",
		"gjcy;" => "\x{453}",
		"gl;" => "\x{2277}",
		"glE;" => "\x{2a92}",
		"gla;" => "\x{2aa5}",
		"glj;" => "\x{2aa4}",
		"gnE;" => "\x{2269}",
		"gnap;" => "\x{2a8a}",
		"gnapprox;" => "\x{2a8a}",
		"gne;" => "\x{2a88}",
		"gneq;" => "\x{2a88}",
		"gneqq;" => "\x{2269}",
		"gnsim;" => "\x{22e7}",
		"gopf;" => "\x{1d558}",
		"grave;" => "`",
		"gscr;" => "\x{210a}",
		"gsim;" => "\x{2273}",
		"gsime;" => "\x{2a8e}",
		"gsiml;" => "\x{2a90}",
		"gt" => ">",
		"gt;" => ">",
		"gtcc;" => "\x{2aa7}",
		"gtcir;" => "\x{2a7a}",
		"gtdot;" => "\x{22d7}",
		"gtlPar;" => "\x{2995}",
		"gtquest;" => "\x{2a7c}",
		"gtrapprox;" => "\x{2a86}",
		"gtrarr;" => "\x{2978}",
		"gtrdot;" => "\x{22d7}",
		"gtreqless;" => "\x{22db}",
		"gtreqqless;" => "\x{2a8c}",
		"gtrless;" => "\x{2277}",
		"gtrsim;" => "\x{2273}",
		"gvertneqq;" => "\x{2269}\x{fe00}",
		"gvnE;" => "\x{2269}\x{fe00}",
		"hArr;" => "\x{21d4}",
		"hairsp;" => "\x{200a}",
		"half;" => "\275",
		"hamilt;" => "\x{210b}",
		"hardcy;" => "\x{44a}",
		"harr;" => "\x{2194}",
		"harrcir;" => "\x{2948}",
		"harrw;" => "\x{21ad}",
		"hbar;" => "\x{210f}",
		"hcirc;" => "\x{125}",
		"hearts;" => "\x{2665}",
		"heartsuit;" => "\x{2665}",
		"hellip;" => "\x{2026}",
		"hercon;" => "\x{22b9}",
		"hfr;" => "\x{1d525}",
		"hksearow;" => "\x{2925}",
		"hkswarow;" => "\x{2926}",
		"hoarr;" => "\x{21ff}",
		"homtht;" => "\x{223b}",
		"hookleftarrow;" => "\x{21a9}",
		"hookrightarrow;" => "\x{21aa}",
		"hopf;" => "\x{1d559}",
		"horbar;" => "\x{2015}",
		"hscr;" => "\x{1d4bd}",
		"hslash;" => "\x{210f}",
		"hstrok;" => "\x{127}",
		"hybull;" => "\x{2043}",
		"hyphen;" => "\x{2010}",
		"iacute" => "\355",
		"iacute;" => "\355",
		"ic;" => "\x{2063}",
		"icirc" => "\356",
		"icirc;" => "\356",
		"icy;" => "\x{438}",
		"iecy;" => "\x{435}",
		"iexcl" => "\241",
		"iexcl;" => "\241",
		"iff;" => "\x{21d4}",
		"ifr;" => "\x{1d526}",
		"igrave" => "\354",
		"igrave;" => "\354",
		"ii;" => "\x{2148}",
		"iiiint;" => "\x{2a0c}",
		"iiint;" => "\x{222d}",
		"iinfin;" => "\x{29dc}",
		"iiota;" => "\x{2129}",
		"ijlig;" => "\x{133}",
		"imacr;" => "\x{12b}",
		"image;" => "\x{2111}",
		"imagline;" => "\x{2110}",
		"imagpart;" => "\x{2111}",
		"imath;" => "\x{131}",
		"imof;" => "\x{22b7}",
		"imped;" => "\x{1b5}",
		"in;" => "\x{2208}",
		"incare;" => "\x{2105}",
		"infin;" => "\x{221e}",
		"infintie;" => "\x{29dd}",
		"inodot;" => "\x{131}",
		"int;" => "\x{222b}",
		"intcal;" => "\x{22ba}",
		"integers;" => "\x{2124}",
		"intercal;" => "\x{22ba}",
		"intlarhk;" => "\x{2a17}",
		"intprod;" => "\x{2a3c}",
		"iocy;" => "\x{451}",
		"iogon;" => "\x{12f}",
		"iopf;" => "\x{1d55a}",
		"iota;" => "\x{3b9}",
		"iprod;" => "\x{2a3c}",
		"iquest" => "\277",
		"iquest;" => "\277",
		"iscr;" => "\x{1d4be}",
		"isin;" => "\x{2208}",
		"isinE;" => "\x{22f9}",
		"isindot;" => "\x{22f5}",
		"isins;" => "\x{22f4}",
		"isinsv;" => "\x{22f3}",
		"isinv;" => "\x{2208}",
		"it;" => "\x{2062}",
		"itilde;" => "\x{129}",
		"iukcy;" => "\x{456}",
		"iuml" => "\357",
		"iuml;" => "\357",
		"jcirc;" => "\x{135}",
		"jcy;" => "\x{439}",
		"jfr;" => "\x{1d527}",
		"jmath;" => "\x{237}",
		"jopf;" => "\x{1d55b}",
		"jscr;" => "\x{1d4bf}",
		"jsercy;" => "\x{458}",
		"jukcy;" => "\x{454}",
		"kappa;" => "\x{3ba}",
		"kappav;" => "\x{3f0}",
		"kcedil;" => "\x{137}",
		"kcy;" => "\x{43a}",
		"kfr;" => "\x{1d528}",
		"kgreen;" => "\x{138}",
		"khcy;" => "\x{445}",
		"kjcy;" => "\x{45c}",
		"kopf;" => "\x{1d55c}",
		"kscr;" => "\x{1d4c0}",
		"lAarr;" => "\x{21da}",
		"lArr;" => "\x{21d0}",
		"lAtail;" => "\x{291b}",
		"lBarr;" => "\x{290e}",
		"lE;" => "\x{2266}",
		"lEg;" => "\x{2a8b}",
		"lHar;" => "\x{2962}",
		"lacute;" => "\x{13a}",
		"laemptyv;" => "\x{29b4}",
		"lagran;" => "\x{2112}",
		"lambda;" => "\x{3bb}",
		"lang;" => "\x{27e8}",
		"langd;" => "\x{2991}",
		"langle;" => "\x{27e8}",
		"lap;" => "\x{2a85}",
		"laquo" => "\253",
		"laquo;" => "\253",
		"larr;" => "\x{2190}",
		"larrb;" => "\x{21e4}",
		"larrbfs;" => "\x{291f}",
		"larrfs;" => "\x{291d}",
		"larrhk;" => "\x{21a9}",
		"larrlp;" => "\x{21ab}",
		"larrpl;" => "\x{2939}",
		"larrsim;" => "\x{2973}",
		"larrtl;" => "\x{21a2}",
		"lat;" => "\x{2aab}",
		"latail;" => "\x{2919}",
		"late;" => "\x{2aad}",
		"lates;" => "\x{2aad}\x{fe00}",
		"lbarr;" => "\x{290c}",
		"lbbrk;" => "\x{2772}",
		"lbrace;" => "{",
		"lbrack;" => "[",
		"lbrke;" => "\x{298b}",
		"lbrksld;" => "\x{298f}",
		"lbrkslu;" => "\x{298d}",
		"lcaron;" => "\x{13e}",
		"lcedil;" => "\x{13c}",
		"lceil;" => "\x{2308}",
		"lcub;" => "{",
		"lcy;" => "\x{43b}",
		"ldca;" => "\x{2936}",
		"ldquo;" => "\x{201c}",
		"ldquor;" => "\x{201e}",
		"ldrdhar;" => "\x{2967}",
		"ldrushar;" => "\x{294b}",
		"ldsh;" => "\x{21b2}",
		"le;" => "\x{2264}",
		"leftarrow;" => "\x{2190}",
		"leftarrowtail;" => "\x{21a2}",
		"leftharpoondown;" => "\x{21bd}",
		"leftharpoonup;" => "\x{21bc}",
		"leftleftarrows;" => "\x{21c7}",
		"leftrightarrow;" => "\x{2194}",
		"leftrightarrows;" => "\x{21c6}",
		"leftrightharpoons;" => "\x{21cb}",
		"leftrightsquigarrow;" => "\x{21ad}",
		"leftthreetimes;" => "\x{22cb}",
		"leg;" => "\x{22da}",
		"leq;" => "\x{2264}",
		"leqq;" => "\x{2266}",
		"leqslant;" => "\x{2a7d}",
		"les;" => "\x{2a7d}",
		"lescc;" => "\x{2aa8}",
		"lesdot;" => "\x{2a7f}",
		"lesdoto;" => "\x{2a81}",
		"lesdotor;" => "\x{2a83}",
		"lesg;" => "\x{22da}\x{fe00}",
		"lesges;" => "\x{2a93}",
		"lessapprox;" => "\x{2a85}",
		"lessdot;" => "\x{22d6}",
		"lesseqgtr;" => "\x{22da}",
		"lesseqqgtr;" => "\x{2a8b}",
		"lessgtr;" => "\x{2276}",
		"lesssim;" => "\x{2272}",
		"lfisht;" => "\x{297c}",
		"lfloor;" => "\x{230a}",
		"lfr;" => "\x{1d529}",
		"lg;" => "\x{2276}",
		"lgE;" => "\x{2a91}",
		"lhard;" => "\x{21bd}",
		"lharu;" => "\x{21bc}",
		"lharul;" => "\x{296a}",
		"lhblk;" => "\x{2584}",
		"ljcy;" => "\x{459}",
		"ll;" => "\x{226a}",
		"llarr;" => "\x{21c7}",
		"llcorner;" => "\x{231e}",
		"llhard;" => "\x{296b}",
		"lltri;" => "\x{25fa}",
		"lmidot;" => "\x{140}",
		"lmoust;" => "\x{23b0}",
		"lmoustache;" => "\x{23b0}",
		"lnE;" => "\x{2268}",
		"lnap;" => "\x{2a89}",
		"lnapprox;" => "\x{2a89}",
		"lne;" => "\x{2a87}",
		"lneq;" => "\x{2a87}",
		"lneqq;" => "\x{2268}",
		"lnsim;" => "\x{22e6}",
		"loang;" => "\x{27ec}",
		"loarr;" => "\x{21fd}",
		"lobrk;" => "\x{27e6}",
		"longleftarrow;" => "\x{27f5}",
		"longleftrightarrow;" => "\x{27f7}",
		"longmapsto;" => "\x{27fc}",
		"longrightarrow;" => "\x{27f6}",
		"looparrowleft;" => "\x{21ab}",
		"looparrowright;" => "\x{21ac}",
		"lopar;" => "\x{2985}",
		"lopf;" => "\x{1d55d}",
		"loplus;" => "\x{2a2d}",
		"lotimes;" => "\x{2a34}",
		"lowast;" => "\x{2217}",
		"lowbar;" => "_",
		"loz;" => "\x{25ca}",
		"lozenge;" => "\x{25ca}",
		"lozf;" => "\x{29eb}",
		"lpar;" => "(",
		"lparlt;" => "\x{2993}",
		"lrarr;" => "\x{21c6}",
		"lrcorner;" => "\x{231f}",
		"lrhar;" => "\x{21cb}",
		"lrhard;" => "\x{296d}",
		"lrm;" => "\x{200e}",
		"lrtri;" => "\x{22bf}",
		"lsaquo;" => "\x{2039}",
		"lscr;" => "\x{1d4c1}",
		"lsh;" => "\x{21b0}",
		"lsim;" => "\x{2272}",
		"lsime;" => "\x{2a8d}",
		"lsimg;" => "\x{2a8f}",
		"lsqb;" => "[",
		"lsquo;" => "\x{2018}",
		"lsquor;" => "\x{201a}",
		"lstrok;" => "\x{142}",
		"lt" => "<",
		"lt;" => "<",
		"ltcc;" => "\x{2aa6}",
		"ltcir;" => "\x{2a79}",
		"ltdot;" => "\x{22d6}",
		"lthree;" => "\x{22cb}",
		"ltimes;" => "\x{22c9}",
		"ltlarr;" => "\x{2976}",
		"ltquest;" => "\x{2a7b}",
		"ltrPar;" => "\x{2996}",
		"ltri;" => "\x{25c3}",
		"ltrie;" => "\x{22b4}",
		"ltrif;" => "\x{25c2}",
		"lurdshar;" => "\x{294a}",
		"luruhar;" => "\x{2966}",
		"lvertneqq;" => "\x{2268}\x{fe00}",
		"lvnE;" => "\x{2268}\x{fe00}",
		"mDDot;" => "\x{223a}",
		"macr" => "\257",
		"macr;" => "\257",
		"male;" => "\x{2642}",
		"malt;" => "\x{2720}",
		"maltese;" => "\x{2720}",
		"map;" => "\x{21a6}",
		"mapsto;" => "\x{21a6}",
		"mapstodown;" => "\x{21a7}",
		"mapstoleft;" => "\x{21a4}",
		"mapstoup;" => "\x{21a5}",
		"marker;" => "\x{25ae}",
		"mcomma;" => "\x{2a29}",
		"mcy;" => "\x{43c}",
		"mdash;" => "\x{2014}",
		"measuredangle;" => "\x{2221}",
		"mfr;" => "\x{1d52a}",
		"mho;" => "\x{2127}",
		"micro" => "\265",
		"micro;" => "\265",
		"mid;" => "\x{2223}",
		"midast;" => "*",
		"midcir;" => "\x{2af0}",
		"middot" => "\267",
		"middot;" => "\267",
		"minus;" => "\x{2212}",
		"minusb;" => "\x{229f}",
		"minusd;" => "\x{2238}",
		"minusdu;" => "\x{2a2a}",
		"mlcp;" => "\x{2adb}",
		"mldr;" => "\x{2026}",
		"mnplus;" => "\x{2213}",
		"models;" => "\x{22a7}",
		"mopf;" => "\x{1d55e}",
		"mp;" => "\x{2213}",
		"mscr;" => "\x{1d4c2}",
		"mstpos;" => "\x{223e}",
		"mu;" => "\x{3bc}",
		"multimap;" => "\x{22b8}",
		"mumap;" => "\x{22b8}",
		"nGg;" => "\x{22d9}\x{338}",
		"nGt;" => "\x{226b}\x{20d2}",
		"nGtv;" => "\x{226b}\x{338}",
		"nLeftarrow;" => "\x{21cd}",
		"nLeftrightarrow;" => "\x{21ce}",
		"nLl;" => "\x{22d8}\x{338}",
		"nLt;" => "\x{226a}\x{20d2}",
		"nLtv;" => "\x{226a}\x{338}",
		"nRightarrow;" => "\x{21cf}",
		"nVDash;" => "\x{22af}",
		"nVdash;" => "\x{22ae}",
		"nabla;" => "\x{2207}",
		"nacute;" => "\x{144}",
		"nang;" => "\x{2220}\x{20d2}",
		"nap;" => "\x{2249}",
		"napE;" => "\x{2a70}\x{338}",
		"napid;" => "\x{224b}\x{338}",
		"napos;" => "\x{149}",
		"napprox;" => "\x{2249}",
		"natur;" => "\x{266e}",
		"natural;" => "\x{266e}",
		"naturals;" => "\x{2115}",
		"nbsp" => "\240",
		"nbsp;" => "\240",
		"nbump;" => "\x{224e}\x{338}",
		"nbumpe;" => "\x{224f}\x{338}",
		"ncap;" => "\x{2a43}",
		"ncaron;" => "\x{148}",
		"ncedil;" => "\x{146}",
		"ncong;" => "\x{2247}",
		"ncongdot;" => "\x{2a6d}\x{338}",
		"ncup;" => "\x{2a42}",
		"ncy;" => "\x{43d}",
		"ndash;" => "\x{2013}",
		"ne;" => "\x{2260}",
		"neArr;" => "\x{21d7}",
		"nearhk;" => "\x{2924}",
		"nearr;" => "\x{2197}",
		"nearrow;" => "\x{2197}",
		"nedot;" => "\x{2250}\x{338}",
		"nequiv;" => "\x{2262}",
		"nesear;" => "\x{2928}",
		"nesim;" => "\x{2242}\x{338}",
		"nexist;" => "\x{2204}",
		"nexists;" => "\x{2204}",
		"nfr;" => "\x{1d52b}",
		"ngE;" => "\x{2267}\x{338}",
		"nge;" => "\x{2271}",
		"ngeq;" => "\x{2271}",
		"ngeqq;" => "\x{2267}\x{338}",
		"ngeqslant;" => "\x{2a7e}\x{338}",
		"nges;" => "\x{2a7e}\x{338}",
		"ngsim;" => "\x{2275}",
		"ngt;" => "\x{226f}",
		"ngtr;" => "\x{226f}",
		"nhArr;" => "\x{21ce}",
		"nharr;" => "\x{21ae}",
		"nhpar;" => "\x{2af2}",
		"ni;" => "\x{220b}",
		"nis;" => "\x{22fc}",
		"nisd;" => "\x{22fa}",
		"niv;" => "\x{220b}",
		"njcy;" => "\x{45a}",
		"nlArr;" => "\x{21cd}",
		"nlE;" => "\x{2266}\x{338}",
		"nlarr;" => "\x{219a}",
		"nldr;" => "\x{2025}",
		"nle;" => "\x{2270}",
		"nleftarrow;" => "\x{219a}",
		"nleftrightarrow;" => "\x{21ae}",
		"nleq;" => "\x{2270}",
		"nleqq;" => "\x{2266}\x{338}",
		"nleqslant;" => "\x{2a7d}\x{338}",
		"nles;" => "\x{2a7d}\x{338}",
		"nless;" => "\x{226e}",
		"nlsim;" => "\x{2274}",
		"nlt;" => "\x{226e}",
		"nltri;" => "\x{22ea}",
		"nltrie;" => "\x{22ec}",
		"nmid;" => "\x{2224}",
		"nopf;" => "\x{1d55f}",
		"not" => "\254",
		"not;" => "\254",
		"notin;" => "\x{2209}",
		"notinE;" => "\x{22f9}\x{338}",
		"notindot;" => "\x{22f5}\x{338}",
		"notinva;" => "\x{2209}",
		"notinvb;" => "\x{22f7}",
		"notinvc;" => "\x{22f6}",
		"notni;" => "\x{220c}",
		"notniva;" => "\x{220c}",
		"notnivb;" => "\x{22fe}",
		"notnivc;" => "\x{22fd}",
		"npar;" => "\x{2226}",
		"nparallel;" => "\x{2226}",
		"nparsl;" => "\x{2afd}\x{20e5}",
		"npart;" => "\x{2202}\x{338}",
		"npolint;" => "\x{2a14}",
		"npr;" => "\x{2280}",
		"nprcue;" => "\x{22e0}",
		"npre;" => "\x{2aaf}\x{338}",
		"nprec;" => "\x{2280}",
		"npreceq;" => "\x{2aaf}\x{338}",
		"nrArr;" => "\x{21cf}",
		"nrarr;" => "\x{219b}",
		"nrarrc;" => "\x{2933}\x{338}",
		"nrarrw;" => "\x{219d}\x{338}",
		"nrightarrow;" => "\x{219b}",
		"nrtri;" => "\x{22eb}",
		"nrtrie;" => "\x{22ed}",
		"nsc;" => "\x{2281}",
		"nsccue;" => "\x{22e1}",
		"nsce;" => "\x{2ab0}\x{338}",
		"nscr;" => "\x{1d4c3}",
		"nshortmid;" => "\x{2224}",
		"nshortparallel;" => "\x{2226}",
		"nsim;" => "\x{2241}",
		"nsime;" => "\x{2244}",
		"nsimeq;" => "\x{2244}",
		"nsmid;" => "\x{2224}",
		"nspar;" => "\x{2226}",
		"nsqsube;" => "\x{22e2}",
		"nsqsupe;" => "\x{22e3}",
		"nsub;" => "\x{2284}",
		"nsubE;" => "\x{2ac5}\x{338}",
		"nsube;" => "\x{2288}",
		"nsubset;" => "\x{2282}\x{20d2}",
		"nsubseteq;" => "\x{2288}",
		"nsubseteqq;" => "\x{2ac5}\x{338}",
		"nsucc;" => "\x{2281}",
		"nsucceq;" => "\x{2ab0}\x{338}",
		"nsup;" => "\x{2285}",
		"nsupE;" => "\x{2ac6}\x{338}",
		"nsupe;" => "\x{2289}",
		"nsupset;" => "\x{2283}\x{20d2}",
		"nsupseteq;" => "\x{2289}",
		"nsupseteqq;" => "\x{2ac6}\x{338}",
		"ntgl;" => "\x{2279}",
		"ntilde" => "\361",
		"ntilde;" => "\361",
		"ntlg;" => "\x{2278}",
		"ntriangleleft;" => "\x{22ea}",
		"ntrianglelefteq;" => "\x{22ec}",
		"ntriangleright;" => "\x{22eb}",
		"ntrianglerighteq;" => "\x{22ed}",
		"nu;" => "\x{3bd}",
		"num;" => "#",
		"numero;" => "\x{2116}",
		"numsp;" => "\x{2007}",
		"nvDash;" => "\x{22ad}",
		"nvHarr;" => "\x{2904}",
		"nvap;" => "\x{224d}\x{20d2}",
		"nvdash;" => "\x{22ac}",
		"nvge;" => "\x{2265}\x{20d2}",
		"nvgt;" => ">\x{20d2}",
		"nvinfin;" => "\x{29de}",
		"nvlArr;" => "\x{2902}",
		"nvle;" => "\x{2264}\x{20d2}",
		"nvlt;" => "<\x{20d2}",
		"nvltrie;" => "\x{22b4}\x{20d2}",
		"nvrArr;" => "\x{2903}",
		"nvrtrie;" => "\x{22b5}\x{20d2}",
		"nvsim;" => "\x{223c}\x{20d2}",
		"nwArr;" => "\x{21d6}",
		"nwarhk;" => "\x{2923}",
		"nwarr;" => "\x{2196}",
		"nwarrow;" => "\x{2196}",
		"nwnear;" => "\x{2927}",
		"oS;" => "\x{24c8}",
		"oacute" => "\363",
		"oacute;" => "\363",
		"oast;" => "\x{229b}",
		"ocir;" => "\x{229a}",
		"ocirc" => "\364",
		"ocirc;" => "\364",
		"ocy;" => "\x{43e}",
		"odash;" => "\x{229d}",
		"odblac;" => "\x{151}",
		"odiv;" => "\x{2a38}",
		"odot;" => "\x{2299}",
		"odsold;" => "\x{29bc}",
		"oelig;" => "\x{153}",
		"ofcir;" => "\x{29bf}",
		"ofr;" => "\x{1d52c}",
		"ogon;" => "\x{2db}",
		"ograve" => "\362",
		"ograve;" => "\362",
		"ogt;" => "\x{29c1}",
		"ohbar;" => "\x{29b5}",
		"ohm;" => "\x{3a9}",
		"oint;" => "\x{222e}",
		"olarr;" => "\x{21ba}",
		"olcir;" => "\x{29be}",
		"olcross;" => "\x{29bb}",
		"oline;" => "\x{203e}",
		"olt;" => "\x{29c0}",
		"omacr;" => "\x{14d}",
		"omega;" => "\x{3c9}",
		"omicron;" => "\x{3bf}",
		"omid;" => "\x{29b6}",
		"ominus;" => "\x{2296}",
		"oopf;" => "\x{1d560}",
		"opar;" => "\x{29b7}",
		"operp;" => "\x{29b9}",
		"oplus;" => "\x{2295}",
		"or;" => "\x{2228}",
		"orarr;" => "\x{21bb}",
		"ord;" => "\x{2a5d}",
		"order;" => "\x{2134}",
		"orderof;" => "\x{2134}",
		"ordf" => "\252",
		"ordf;" => "\252",
		"ordm" => "\272",
		"ordm;" => "\272",
		"origof;" => "\x{22b6}",
		"oror;" => "\x{2a56}",
		"orslope;" => "\x{2a57}",
		"orv;" => "\x{2a5b}",
		"oscr;" => "\x{2134}",
		"oslash" => "\370",
		"oslash;" => "\370",
		"osol;" => "\x{2298}",
		"otilde" => "\365",
		"otilde;" => "\365",
		"otimes;" => "\x{2297}",
		"otimesas;" => "\x{2a36}",
		"ouml" => "\366",
		"ouml;" => "\366",
		"ovbar;" => "\x{233d}",
		"par;" => "\x{2225}",
		"para" => "\266",
		"para;" => "\266",
		"parallel;" => "\x{2225}",
		"parsim;" => "\x{2af3}",
		"parsl;" => "\x{2afd}",
		"part;" => "\x{2202}",
		"pcy;" => "\x{43f}",
		"percnt;" => "%",
		"period;" => ".",
		"permil;" => "\x{2030}",
		"perp;" => "\x{22a5}",
		"pertenk;" => "\x{2031}",
		"pfr;" => "\x{1d52d}",
		"phi;" => "\x{3c6}",
		"phiv;" => "\x{3c5}",
		"phmmat;" => "\x{2133}",
		"phone;" => "\x{260e}",
		"pi;" => "\x{3c0}",
		"pitchfork;" => "\x{22d4}",
		"piv;" => "\x{3d6}",
		"planck;" => "\x{210f}",
		"planckh;" => "\x{210e}",
		"plankv;" => "\x{210f}",
		"plus;" => "+",
		"plusacir;" => "\x{2a23}",
		"plusb;" => "\x{229e}",
		"pluscir;" => "\x{2a22}",
		"plusdo;" => "\x{2214}",
		"plusdu;" => "\x{2a25}",
		"pluse;" => "\x{2a72}",
		"plusmn" => "\261",
		"plusmn;" => "\261",
		"plussim;" => "\x{2a26}",
		"plustwo;" => "\x{2a27}",
		"pm;" => "\261",
		"pointint;" => "\x{2a15}",
		"popf;" => "\x{1d561}",
		"pound" => "\243",
		"pound;" => "\243",
		"pr;" => "\x{227a}",
		"prE;" => "\x{2ab3}",
		"prap;" => "\x{2ab7}",
		"prcue;" => "\x{227c}",
		"pre;" => "\x{2aaf}",
		"prec;" => "\x{227a}",
		"precapprox;" => "\x{2ab7}",
		"preccurlyeq;" => "\x{227c}",
		"preceq;" => "\x{2aaf}",
		"precnapprox;" => "\x{2ab9}",
		"precneqq;" => "\x{2ab5}",
		"precnsim;" => "\x{22e8}",
		"precsim;" => "\x{227e}",
		"prime;" => "\x{2032}",
		"primes;" => "\x{2119}",
		"prnE;" => "\x{2ab5}",
		"prnap;" => "\x{2ab9}",
		"prnsim;" => "\x{22e8}",
		"prod;" => "\x{220f}",
		"profalar;" => "\x{232e}",
		"profline;" => "\x{2312}",
		"profsurf;" => "\x{2313}",
		"prop;" => "\x{221d}",
		"propto;" => "\x{221d}",
		"prsim;" => "\x{227e}",
		"prurel;" => "\x{22b0}",
		"pscr;" => "\x{1d4c5}",
		"psi;" => "\x{3c8}",
		"puncsp;" => "\x{2008}",
		"qfr;" => "\x{1d52e}",
		"qint;" => "\x{2a0c}",
		"qopf;" => "\x{1d562}",
		"qprime;" => "\x{2057}",
		"qscr;" => "\x{1d4c6}",
		"quaternions;" => "\x{210d}",
		"quatint;" => "\x{2a16}",
		"quest;" => "?",
		"questeq;" => "\x{225f}",
		"quot" => "\"",
		"quot;" => "\"",
		"rAarr;" => "\x{21db}",
		"rArr;" => "\x{21d2}",
		"rAtail;" => "\x{291c}",
		"rBarr;" => "\x{290f}",
		"rHar;" => "\x{2964}",
		"race;" => "\x{223d}\x{331}",
		"racute;" => "\x{155}",
		"radic;" => "\x{221a}",
		"raemptyv;" => "\x{29b3}",
		"rang;" => "\x{27e9}",
		"rangd;" => "\x{2992}",
		"range;" => "\x{29a5}",
		"rangle;" => "\x{27e9}",
		"raquo" => "\273",
		"raquo;" => "\273",
		"rarr;" => "\x{2192}",
		"rarrap;" => "\x{2975}",
		"rarrb;" => "\x{21e5}",
		"rarrbfs;" => "\x{2920}",
		"rarrc;" => "\x{2933}",
		"rarrfs;" => "\x{291e}",
		"rarrhk;" => "\x{21aa}",
		"rarrlp;" => "\x{21ac}",
		"rarrpl;" => "\x{2945}",
		"rarrsim;" => "\x{2974}",
		"rarrtl;" => "\x{21a3}",
		"rarrw;" => "\x{219d}",
		"ratail;" => "\x{291a}",
		"ratio;" => "\x{2236}",
		"rationals;" => "\x{211a}",
		"rbarr;" => "\x{290d}",
		"rbbrk;" => "\x{2773}",
		"rbrace;" => "}",
		"rbrack;" => "]",
		"rbrke;" => "\x{298c}",
		"rbrksld;" => "\x{298e}",
		"rbrkslu;" => "\x{2990}",
		"rcaron;" => "\x{159}",
		"rcedil;" => "\x{157}",
		"rceil;" => "\x{2309}",
		"rcub;" => "}",
		"rcy;" => "\x{440}",
		"rdca;" => "\x{2937}",
		"rdldhar;" => "\x{2969}",
		"rdquo;" => "\x{201d}",
		"rdquor;" => "\x{201d}",
		"rdsh;" => "\x{21b3}",
		"real;" => "\x{211c}",
		"realine;" => "\x{211b}",
		"realpart;" => "\x{211c}",
		"reals;" => "\x{211d}",
		"rect;" => "\x{25ad}",
		"reg" => "\256",
		"reg;" => "\256",
		"rfisht;" => "\x{297d}",
		"rfloor;" => "\x{230b}",
		"rfr;" => "\x{1d52f}",
		"rhard;" => "\x{21c1}",
		"rharu;" => "\x{21c0}",
		"rharul;" => "\x{296c}",
		"rho;" => "\x{3c1}",
		"rhov;" => "\x{3f1}",
		"rightarrow;" => "\x{2192}",
		"rightarrowtail;" => "\x{21a3}",
		"rightharpoondown;" => "\x{21c1}",
		"rightharpoonup;" => "\x{21c0}",
		"rightleftarrows;" => "\x{21c4}",
		"rightleftharpoons;" => "\x{21cc}",
		"rightrightarrows;" => "\x{21c9}",
		"rightsquigarrow;" => "\x{219d}",
		"rightthreetimes;" => "\x{22cc}",
		"ring;" => "\x{2da}",
		"risingdotseq;" => "\x{2253}",
		"rlarr;" => "\x{21c4}",
		"rlhar;" => "\x{21cc}",
		"rlm;" => "\x{200f}",
		"rmoust;" => "\x{23b1}",
		"rmoustache;" => "\x{23b1}",
		"rnmid;" => "\x{2aee}",
		"roang;" => "\x{27ed}",
		"roarr;" => "\x{21fe}",
		"robrk;" => "\x{27e7}",
		"ropar;" => "\x{2986}",
		"ropf;" => "\x{1d563}",
		"roplus;" => "\x{2a2e}",
		"rotimes;" => "\x{2a35}",
		"rpar;" => ")",
		"rpargt;" => "\x{2994}",
		"rppolint;" => "\x{2a12}",
		"rrarr;" => "\x{21c9}",
		"rsaquo;" => "\x{203a}",
		"rscr;" => "\x{1d4c7}",
		"rsh;" => "\x{21b1}",
		"rsqb;" => "]",
		"rsquo;" => "\x{2019}",
		"rsquor;" => "\x{2019}",
		"rthree;" => "\x{22cc}",
		"rtimes;" => "\x{22ca}",
		"rtri;" => "\x{25b9}",
		"rtrie;" => "\x{22b5}",
		"rtrif;" => "\x{25b8}",
		"rtriltri;" => "\x{29ce}",
		"ruluhar;" => "\x{2968}",
		"rx;" => "\x{211e}",
		"sacute;" => "\x{15b}",
		"sbquo;" => "\x{201a}",
		"sc;" => "\x{227b}",
		"scE;" => "\x{2ab4}",
		"scap;" => "\x{2ab8}",
		"scaron;" => "\x{161}",
		"sccue;" => "\x{227d}",
		"sce;" => "\x{2ab0}",
		"scedil;" => "\x{15f}",
		"scirc;" => "\x{15d}",
		"scnE;" => "\x{2ab6}",
		"scnap;" => "\x{2aba}",
		"scnsim;" => "\x{22e9}",
		"scpolint;" => "\x{2a13}",
		"scsim;" => "\x{227f}",
		"scy;" => "\x{441}",
		"sdot;" => "\x{22c5}",
		"sdotb;" => "\x{22a1}",
		"sdote;" => "\x{2a66}",
		"seArr;" => "\x{21d8}",
		"searhk;" => "\x{2925}",
		"searr;" => "\x{2198}",
		"searrow;" => "\x{2198}",
		"sect" => "\247",
		"sect;" => "\247",
		"semi;" => ";",
		"seswar;" => "\x{2929}",
		"setminus;" => "\x{2216}",
		"setmn;" => "\x{2216}",
		"sext;" => "\x{2736}",
		"sfr;" => "\x{1d530}",
		"sfrown;" => "\x{2322}",
		"sharp;" => "\x{266f}",
		"shchcy;" => "\x{449}",
		"shcy;" => "\x{448}",
		"shortmid;" => "\x{2223}",
		"shortparallel;" => "\x{2225}",
		"shy" => "\255",
		"shy;" => "\255",
		"sigma;" => "\x{3c3}",
		"sigmaf;" => "\x{3c2}",
		"sigmav;" => "\x{3c2}",
		"sim;" => "\x{223c}",
		"simdot;" => "\x{2a6a}",
		"sime;" => "\x{2243}",
		"simeq;" => "\x{2243}",
		"simg;" => "\x{2a9e}",
		"simgE;" => "\x{2aa0}",
		"siml;" => "\x{2a9d}",
		"simlE;" => "\x{2a9f}",
		"simne;" => "\x{2246}",
		"simplus;" => "\x{2a24}",
		"simrarr;" => "\x{2972}",
		"slarr;" => "\x{2190}",
		"smallsetminus;" => "\x{2216}",
		"smashp;" => "\x{2a33}",
		"smeparsl;" => "\x{29e4}",
		"smid;" => "\x{2223}",
		"smile;" => "\x{2323}",
		"smt;" => "\x{2aaa}",
		"smte;" => "\x{2aac}",
		"smtes;" => "\x{2aac}\x{fe00}",
		"softcy;" => "\x{44c}",
		"sol;" => "/",
		"solb;" => "\x{29c4}",
		"solbar;" => "\x{233f}",
		"sopf;" => "\x{1d564}",
		"spades;" => "\x{2660}",
		"spadesuit;" => "\x{2660}",
		"spar;" => "\x{2225}",
		"sqcap;" => "\x{2293}",
		"sqcaps;" => "\x{2293}\x{fe00}",
		"sqcup;" => "\x{2294}",
		"sqcups;" => "\x{2294}\x{fe00}",
		"sqsub;" => "\x{228f}",
		"sqsube;" => "\x{2291}",
		"sqsubset;" => "\x{228f}",
		"sqsubseteq;" => "\x{2291}",
		"sqsup;" => "\x{2290}",
		"sqsupe;" => "\x{2292}",
		"sqsupset;" => "\x{2290}",
		"sqsupseteq;" => "\x{2292}",
		"squ;" => "\x{25a1}",
		"square;" => "\x{25a1}",
		"squarf;" => "\x{25aa}",
		"squf;" => "\x{25aa}",
		"srarr;" => "\x{2192}",
		"sscr;" => "\x{1d4c8}",
		"ssetmn;" => "\x{2216}",
		"ssmile;" => "\x{2323}",
		"sstarf;" => "\x{22c6}",
		"star;" => "\x{2606}",
		"starf;" => "\x{2605}",
		"straightepsilon;" => "\x{3f5}",
		"straightphi;" => "\x{3d5}",
		"strns;" => "\257",
		"sub;" => "\x{2282}",
		"subE;" => "\x{2ac5}",
		"subdot;" => "\x{2abd}",
		"sube;" => "\x{2286}",
		"subedot;" => "\x{2ac3}",
		"submult;" => "\x{2ac1}",
		"subnE;" => "\x{2acb}",
		"subne;" => "\x{228a}",
		"subplus;" => "\x{2abf}",
		"subrarr;" => "\x{2979}",
		"subset;" => "\x{2282}",
		"subseteq;" => "\x{2286}",
		"subseteqq;" => "\x{2ac5}",
		"subsetneq;" => "\x{228a}",
		"subsetneqq;" => "\x{2acb}",
		"subsim;" => "\x{2ac7}",
		"subsub;" => "\x{2ad5}",
		"subsup;" => "\x{2ad3}",
		"succ;" => "\x{227b}",
		"succapprox;" => "\x{2ab8}",
		"succcurlyeq;" => "\x{227d}",
		"succeq;" => "\x{2ab0}",
		"succnapprox;" => "\x{2aba}",
		"succneqq;" => "\x{2ab6}",
		"succnsim;" => "\x{22e9}",
		"succsim;" => "\x{227f}",
		"sum;" => "\x{2211}",
		"sung;" => "\x{266a}",
		"sup1" => "\271",
		"sup1;" => "\271",
		"sup2" => "\262",
		"sup2;" => "\262",
		"sup3" => "\263",
		"sup3;" => "\263",
		"sup;" => "\x{2283}",
		"supE;" => "\x{2ac6}",
		"supdot;" => "\x{2abe}",
		"supdsub;" => "\x{2ad8}",
		"supe;" => "\x{2287}",
		"supedot;" => "\x{2ac4}",
		"suphsol;" => "\x{27c9}",
		"suphsub;" => "\x{2ad7}",
		"suplarr;" => "\x{297b}",
		"supmult;" => "\x{2ac2}",
		"supnE;" => "\x{2acc}",
		"supne;" => "\x{228b}",
		"supplus;" => "\x{2ac0}",
		"supset;" => "\x{2283}",
		"supseteq;" => "\x{2287}",
		"supseteqq;" => "\x{2ac6}",
		"supsetneq;" => "\x{228b}",
		"supsetneqq;" => "\x{2acc}",
		"supsim;" => "\x{2ac8}",
		"supsub;" => "\x{2ad4}",
		"supsup;" => "\x{2ad6}",
		"swArr;" => "\x{21d9}",
		"swarhk;" => "\x{2926}",
		"swarr;" => "\x{2199}",
		"swarrow;" => "\x{2199}",
		"swnwar;" => "\x{292a}",
		"szlig" => "\337",
		"szlig;" => "\337",
		"target;" => "\x{2316}",
		"tau;" => "\x{3c4}",
		"tbrk;" => "\x{23b4}",
		"tcaron;" => "\x{165}",
		"tcedil;" => "\x{163}",
		"tcy;" => "\x{442}",
		"tdot;" => "\x{20db}",
		"telrec;" => "\x{2315}",
		"tfr;" => "\x{1d531}",
		"there4;" => "\x{2234}",
		"therefore;" => "\x{2234}",
		"theta;" => "\x{3b8}",
		"thetasym;" => "\x{3d1}",
		"thetav;" => "\x{3d1}",
		"thickapprox;" => "\x{2248}",
		"thicksim;" => "\x{223c}",
		"thinsp;" => "\x{2009}",
		"thkap;" => "\x{2248}",
		"thksim;" => "\x{223c}",
		"thorn" => "\376",
		"thorn;" => "\376",
		"tilde;" => "\x{2dc}",
		"times" => "\327",
		"times;" => "\327",
		"timesb;" => "\x{22a0}",
		"timesbar;" => "\x{2a31}",
		"timesd;" => "\x{2a30}",
		"tint;" => "\x{222d}",
		"toea;" => "\x{2928}",
		"top;" => "\x{22a4}",
		"topbot;" => "\x{2336}",
		"topcir;" => "\x{2af1}",
		"topf;" => "\x{1d565}",
		"topfork;" => "\x{2ada}",
		"tosa;" => "\x{2929}",
		"tprime;" => "\x{2034}",
		"trade;" => "\x{2122}",
		"triangle;" => "\x{25b5}",
		"triangledown;" => "\x{25bf}",
		"triangleleft;" => "\x{25c3}",
		"trianglelefteq;" => "\x{22b4}",
		"triangleq;" => "\x{225c}",
		"triangleright;" => "\x{25b9}",
		"trianglerighteq;" => "\x{22b5}",
		"tridot;" => "\x{25ec}",
		"trie;" => "\x{225c}",
		"triminus;" => "\x{2a3a}",
		"triplus;" => "\x{2a39}",
		"trisb;" => "\x{29cd}",
		"tritime;" => "\x{2a3b}",
		"trpezium;" => "\x{23e2}",
		"tscr;" => "\x{1d4c9}",
		"tscy;" => "\x{446}",
		"tshcy;" => "\x{45b}",
		"tstrok;" => "\x{167}",
		"twixt;" => "\x{226c}",
		"twoheadleftarrow;" => "\x{219e}",
		"twoheadrightarrow;" => "\x{21a0}",
		"uArr;" => "\x{21d1}",
		"uHar;" => "\x{2963}",
		"uacute" => "\372",
		"uacute;" => "\372",
		"uarr;" => "\x{2191}",
		"ubrcy;" => "\x{45e}",
		"ubreve;" => "\x{16d}",
		"ucirc" => "\373",
		"ucirc;" => "\373",
		"ucy;" => "\x{443}",
		"udarr;" => "\x{21c5}",
		"udblac;" => "\x{171}",
		"udhar;" => "\x{296e}",
		"ufisht;" => "\x{297e}",
		"ufr;" => "\x{1d532}",
		"ugrave" => "\371",
		"ugrave;" => "\371",
		"uharl;" => "\x{21bf}",
		"uharr;" => "\x{21be}",
		"uhblk;" => "\x{2580}",
		"ulcorn;" => "\x{231c}",
		"ulcorner;" => "\x{231c}",
		"ulcrop;" => "\x{230f}",
		"ultri;" => "\x{25f8}",
		"umacr;" => "\x{16b}",
		"uml" => "\250",
		"uml;" => "\250",
		"uogon;" => "\x{173}",
		"uopf;" => "\x{1d566}",
		"uparrow;" => "\x{2191}",
		"updownarrow;" => "\x{2195}",
		"upharpoonleft;" => "\x{21bf}",
		"upharpoonright;" => "\x{21be}",
		"uplus;" => "\x{228e}",
		"upsi;" => "\x{3c5}",
		"upsih;" => "\x{3d2}",
		"upsilon;" => "\x{3c5}",
		"upuparrows;" => "\x{21c8}",
		"urcorn;" => "\x{231d}",
		"urcorner;" => "\x{231d}",
		"urcrop;" => "\x{230e}",
		"uring;" => "\x{16f}",
		"urtri;" => "\x{25f9}",
		"uscr;" => "\x{1d4ca}",
		"utdot;" => "\x{22f0}",
		"utilde;" => "\x{169}",
		"utri;" => "\x{25b5}",
		"utrif;" => "\x{25b4}",
		"uuarr;" => "\x{21c8}",
		"uuml" => "\374",
		"uuml;" => "\374",
		"uwangle;" => "\x{29a7}",
		"vArr;" => "\x{21d5}",
		"vBar;" => "\x{2ae8}",
		"vBarv;" => "\x{2ae9}",
		"vDash;" => "\x{22a8}",
		"vangrt;" => "\x{299c}",
		"varepsilon;" => "\x{3f5}",
		"varkappa;" => "\x{3f0}",
		"varnothing;" => "\x{2205}",
		"varphi;" => "\x{3d5}",
		"varpi;" => "\x{3d6}",
		"varpropto;" => "\x{221d}",
		"varr;" => "\x{2195}",
		"varrho;" => "\x{3f1}",
		"varsigma;" => "\x{3c2}",
		"varsubsetneq;" => "\x{228a}\x{fe00}",
		"varsubsetneqq;" => "\x{2acb}\x{fe00}",
		"varsupsetneq;" => "\x{228b}\x{fe00}",
		"varsupsetneqq;" => "\x{2acc}\x{fe00}",
		"vartheta;" => "\x{3d1}",
		"vartriangleleft;" => "\x{22b2}",
		"vartriangleright;" => "\x{22b3}",
		"vcy;" => "\x{432}",
		"vdash;" => "\x{22a2}",
		"vee;" => "\x{2228}",
		"veebar;" => "\x{22bb}",
		"veeeq;" => "\x{225a}",
		"vellip;" => "\x{22ee}",
		"verbar;" => "|",
		"vert;" => "|",
		"vfr;" => "\x{1d533}",
		"vltri;" => "\x{22b2}",
		"vnsub;" => "\x{2282}\x{20d2}",
		"vnsup;" => "\x{2283}\x{20d2}",
		"vopf;" => "\x{1d567}",
		"vprop;" => "\x{221d}",
		"vrtri;" => "\x{22b3}",
		"vscr;" => "\x{1d4cb}",
		"vsubnE;" => "\x{2acb}\x{fe00}",
		"vsubne;" => "\x{228a}\x{fe00}",
		"vsupnE;" => "\x{2acc}\x{fe00}",
		"vsupne;" => "\x{228b}\x{fe00}",
		"vzigzag;" => "\x{299a}",
		"wcirc;" => "\x{175}",
		"wedbar;" => "\x{2a5f}",
		"wedge;" => "\x{2227}",
		"wedgeq;" => "\x{2259}",
		"weierp;" => "\x{2118}",
		"wfr;" => "\x{1d534}",
		"wopf;" => "\x{1d568}",
		"wp;" => "\x{2118}",
		"wr;" => "\x{2240}",
		"wreath;" => "\x{2240}",
		"wscr;" => "\x{1d4cc}",
		"xcap;" => "\x{22c2}",
		"xcirc;" => "\x{25ef}",
		"xcup;" => "\x{22c3}",
		"xdtri;" => "\x{25bd}",
		"xfr;" => "\x{1d535}",
		"xhArr;" => "\x{27fa}",
		"xharr;" => "\x{27f7}",
		"xi;" => "\x{3be}",
		"xlArr;" => "\x{27f8}",
		"xlarr;" => "\x{27f5}",
		"xmap;" => "\x{27fc}",
		"xnis;" => "\x{22fb}",
		"xodot;" => "\x{2a00}",
		"xopf;" => "\x{1d569}",
		"xoplus;" => "\x{2a01}",
		"xotime;" => "\x{2a02}",
		"xrArr;" => "\x{27f9}",
		"xrarr;" => "\x{27f6}",
		"xscr;" => "\x{1d4cd}",
		"xsqcup;" => "\x{2a06}",
		"xuplus;" => "\x{2a04}",
		"xutri;" => "\x{25b3}",
		"xvee;" => "\x{22c1}",
		"xwedge;" => "\x{22c0}",
		"yacute" => "\375",
		"yacute;" => "\375",
		"yacy;" => "\x{44f}",
		"ycirc;" => "\x{177}",
		"ycy;" => "\x{44b}",
		"yen" => "\245",
		"yen;" => "\245",
		"yfr;" => "\x{1d536}",
		"yicy;" => "\x{457}",
		"yopf;" => "\x{1d56a}",
		"yscr;" => "\x{1d4ce}",
		"yucy;" => "\x{44e}",
		"yuml" => "\377",
		"yuml;" => "\377",
		"zacute;" => "\x{17a}",
		"zcaron;" => "\x{17e}",
		"zcy;" => "\x{437}",
		"zdot;" => "\x{17c}",
		"zeetrf;" => "\x{2128}",
		"zeta;" => "\x{3b6}",
		"zfr;" => "\x{1d537}",
		"zhcy;" => "\x{436}",
		"zigrarr;" => "\x{21dd}",
		"zopf;" => "\x{1d56b}",
		"zscr;" => "\x{1d4cf}",
		"zwj;" => "\x{200d}",
		"zwnj;" => "\x{200c}",
		);

	%char2entity = (
		"\x{00a0}"  => '&nbsp;',
		"\x{00a1}"  => '&iexcl;',
		"\x{00a2}"  => '&cent;',
		"\x{00a3}"  => '&pound;',
		"\x{00a4}"  => '&curren;',
		"\x{00a5}"  => '&yen;',
		"\x{00a6}"  => '&brvbar;',
		"\x{00a7}"  => '&sect;',
		"\x{00a8}"  => '&uml;',
		"\x{00a9}"  => '&copy;',
		"\x{00aa}"  => '&ordf;',
		"\x{00ab}"  => '&laquo;',
		"\x{00ac}"  => '&not;',
		"\x{00ad}"  => '&shy;',
		"\x{00ae}"  => '&reg;',
		"\x{00af}"  => '&macr;',
		"\x{00b0}"  => '&deg;',
		"\x{00b1}"  => '&plusmn;',
		"\x{00b2}"  => '&sup2;',
		"\x{00b3}"  => '&sup3;',
		"\x{00b4}"  => '&acute;',
		"\x{00b5}"  => '&micro;',
		"\x{00b6}"  => '&para;',
		"\x{00b7}"  => '&middot;',
		"\x{00b8}"  => '&cedil;',
		"\x{00b9}"  => '&sup1;',
		"\x{00ba}"  => '&ordm;',
		"\x{00bb}"  => '&raquo;',
		"\x{00bc}"  => '&frac14;',
		"\x{00bd}"  => '&frac12;',
		"\x{00be}"  => '&frac34;',
		"\x{00bf}"  => '&iquest;',
		"\x{00c0}"  => '&Agrave;',
		"\x{00c1}"  => '&Aacute;',
		"\x{00c2}"  => '&Acirc;',
		"\x{00c3}"  => '&Atilde;',
		"\x{00c4}"  => '&Auml;',
		"\x{00c5}"  => '&Aring;',
		"\x{00c6}"  => '&AElig;',
		"\x{00c7}"  => '&Ccedil;',
		"\x{00c8}"  => '&Egrave;',
		"\x{00c9}"  => '&Eacute;',
		"\x{00ca}"  => '&Ecirc;',
		"\x{00cb}"  => '&Euml;',
		"\x{00cc}"  => '&Igrave;',
		"\x{00cd}"  => '&Iacute;',
		"\x{00ce}"  => '&Icirc;',
		"\x{00cf}"  => '&Iuml;',
		"\x{00d0}"  => '&ETH;',
		"\x{00d1}"  => '&Ntilde;',
		"\x{00d2}"  => '&Ograve;',
		"\x{00d3}"  => '&Oacute;',
		"\x{00d4}"  => '&Ocirc;',
		"\x{00d5}"  => '&Otilde;',
		"\x{00d6}"  => '&Ouml;',
		"\x{00d7}"  => '&times;',
		"\x{00d8}"  => '&Oslash;',
		"\x{00d9}"  => '&Ugrave;',
		"\x{00da}"  => '&Uacute;',
		"\x{00db}"  => '&Ucirc;',
		"\x{00dc}"  => '&Uuml;',
		"\x{00dd}"  => '&Yacute;',
		"\x{00de}"  => '&THORN;',
		"\x{00df}"  => '&szlig;',
		"\x{00e0}"  => '&agrave;',
		"\x{00e1}"  => '&aacute;',
		"\x{00e2}"  => '&acirc;',
		"\x{00e3}"  => '&atilde;',
		"\x{00e4}"  => '&auml;',
		"\x{00e5}"  => '&aring;',
		"\x{00e6}"  => '&aelig;',
		"\x{00e7}"  => '&ccedil;',
		"\x{00e8}"  => '&egrave;',
		"\x{00e9}"  => '&eacute;',
		"\x{00ea}"  => '&ecirc;',
		"\x{00eb}"  => '&euml;',
		"\x{00ec}"  => '&igrave;',
		"\x{00ed}"  => '&iacute;',
		"\x{00ee}"  => '&icirc;',
		"\x{00ef}"  => '&iuml;',
		"\x{00f0}"  => '&eth;',
		"\x{00f1}"  => '&ntilde;',
		"\x{00f2}"  => '&ograve;',
		"\x{00f3}"  => '&oacute;',
		"\x{00f4}"  => '&ocirc;',
		"\x{00f5}"  => '&otilde;',
		"\x{00f6}"  => '&ouml;',
		"\x{00f7}"  => '&divide;',
		"\x{00f8}"  => '&oslash;',
		"\x{00f9}"  => '&ugrave;',
		"\x{00fa}"  => '&uacute;',
		"\x{00fb}"  => '&ucirc;',
		"\x{00fc}"  => '&uuml;',
		"\x{00fd}"  => '&yacute;',
		"\x{00fe}"  => '&thorn;',
		"\x{00ff}"  => '&yuml;',
		"\x{0026}"  => '&amp;',
		"\x{0022}"  => '&quot;',
		"\x{003c}"  => '&lt;',
		"\x{003e}"  => '&gt;',
		"\x{0152}"  => '&OElig;',
		"\x{0153}"  => '&oelig;',
		"\x{0160}"  => '&Scaron;',
		"\x{0161}"  => '&scaron;',
		"\x{0178}"  => '&Yuml;',
		"\x{02c6}"  => '&circ;',
		"\x{02dc}"  => '&tilde;',
		"\x{2002}"  => '&ensp;',
		"\x{2003}"  => '&emsp;',
		"\x{2009}"  => '&thinsp;',
		"\x{200c}"  => '&zwnj;',
		"\x{200d}"  => '&zwj;',
		"\x{200e}"  => '&lrm;',
		"\x{200f}"  => '&rlm;',
		"\x{2013}"  => '&ndash;',
		"\x{2014}"  => '&mdash;',
		"\x{2018}"  => '&lsquo;',
		"\x{2019}"  => '&rsquo;',
		"\x{201a}"  => '&sbquo;',
		"\x{201c}"  => '&ldquo;',
		"\x{201d}"  => '&rdquo;',
		"\x{201e}"  => '&bdquo;',
		"\x{2020}"  => '&dagger;',
		"\x{2021}"  => '&Dagger;',
		"\x{2030}"  => '&permil;',
		"\x{2039}"  => '&lsaquo;',
		"\x{203a}"  => '&rsaquo;',
		"\x{20ac}"  => '&euro;',
		"\x{0192}"  => '&fnof;',
		"\x{0391}"  => '&Alpha;',
		"\x{0392}"  => '&Beta;',
		"\x{0393}"  => '&Gamma;',
		"\x{0394}"  => '&Delta;',
		"\x{0395}"  => '&Epsilon;',
		"\x{0396}"  => '&Zeta;',
		"\x{0397}"  => '&Eta;',
		"\x{0398}"  => '&Theta;',
		"\x{0399}"  => '&Iota;',
		"\x{039a}"  => '&Kappa;',
		"\x{039b}"  => '&Lambda;',
		"\x{039c}"  => '&Mu;',
		"\x{039d}"  => '&Nu;',
		"\x{039e}"  => '&Xi;',
		"\x{039f}"  => '&Omicron;',
		"\x{03a0}"  => '&Pi;',
		"\x{03a1}"  => '&Rho;',
		"\x{03a3}"  => '&Sigma;',
		"\x{03a4}"  => '&Tau;',
		"\x{03a5}"  => '&Upsilon;',
		"\x{03a6}"  => '&Phi;',
		"\x{03a7}"  => '&Chi;',
		"\x{03a8}"  => '&Psi;',
		"\x{03a9}"  => '&Omega;',
		"\x{03b1}"  => '&alpha;',
		"\x{03b2}"  => '&beta;',
		"\x{03b3}"  => '&gamma;',
		"\x{03b4}"  => '&delta;',
		"\x{03b5}"  => '&epsilon;',
		"\x{03b6}"  => '&zeta;',
		"\x{03b7}"  => '&eta;',
		"\x{03b8}"  => '&theta;',
		"\x{03b9}"  => '&iota;',
		"\x{03ba}"  => '&kappa;',
		"\x{03bb}"  => '&lambda;',
		"\x{03bc}"  => '&mu;',
		"\x{03bd}"  => '&nu;',
		"\x{03be}"  => '&xi;',
		"\x{03bf}"  => '&omicron;',
		"\x{03c0}"  => '&pi;',
		"\x{03c1}"  => '&rho;',
		"\x{03c2}"  => '&sigmaf;',
		"\x{03c3}"  => '&sigma;',
		"\x{03c4}"  => '&tau;',
		"\x{03c5}"  => '&upsilon;',
		"\x{03c6}"  => '&phi;',
		"\x{03c7}"  => '&chi;',
		"\x{03c8}"  => '&psi;',
		"\x{03c9}"  => '&omega;',
		"\x{03d1}"  => '&thetasym;',
		"\x{03d2}"  => '&upsih;',
		"\x{03d6}"  => '&piv;',
		"\x{2022}"  => '&bull;',
		"\x{2026}"  => '&hellip;',
		"\x{2032}"  => '&prime;',
		"\x{2033}"  => '&Prime;',
		"\x{203e}"  => '&oline;',
		"\x{2044}"  => '&frasl;',
		"\x{2118}"  => '&weierp;',
		"\x{2111}"  => '&image;',
		"\x{211c}"  => '&real;',
		"\x{2122}"  => '&trade;',
		"\x{2135}"  => '&alefsym;',
		"\x{2190}"  => '&larr;',
		"\x{2191}"  => '&uarr;',
		"\x{2192}"  => '&rarr;',
		"\x{2193}"  => '&darr;',
		"\x{2194}"  => '&harr;',
		"\x{21b5}"  => '&crarr;',
		"\x{21d0}"  => '&lArr;',
		"\x{21d1}"  => '&uArr;',
		"\x{21d2}"  => '&rArr;',
		"\x{21d3}"  => '&dArr;',
		"\x{21d4}"  => '&hArr;',
		"\x{2200}"  => '&forall;',
		"\x{2202}"  => '&part;',
		"\x{2203}"  => '&exist;',
		"\x{2205}"  => '&empty;',
		"\x{2207}"  => '&nabla;',
		"\x{2208}"  => '&isin;',
		"\x{2209}"  => '&notin;',
		"\x{220b}"  => '&ni;',
		"\x{220f}"  => '&prod;',
		"\x{2211}"  => '&sum;',
		"\x{2212}"  => '&minus;',
		"\x{2217}"  => '&lowast;',
		"\x{221a}"  => '&radic;',
		"\x{221d}"  => '&prop;',
		"\x{221e}"  => '&infin;',
		"\x{2220}"  => '&ang;',
		"\x{2227}"  => '&and;',
		"\x{2228}"  => '&or;',
		"\x{2229}"  => '&cap;',
		"\x{222a}"  => '&cup;',
		"\x{222b}"  => '&int;',
		"\x{2234}"  => '&there4;',
		"\x{223c}"  => '&sim;',
		"\x{2245}"  => '&cong;',
		"\x{2248}"  => '&asymp;',
		"\x{2260}"  => '&ne;',
		"\x{2261}"  => '&equiv;',
		"\x{2264}"  => '&le;',
		"\x{2265}"  => '&ge;',
		"\x{2282}"  => '&sub;',
		"\x{2283}"  => '&sup;',
		"\x{2284}"  => '&nsub;',
		"\x{2286}"  => '&sube;',
		"\x{2287}"  => '&supe;',
		"\x{2295}"  => '&oplus;',
		"\x{2297}"  => '&otimes;',
		"\x{22a5}"  => '&perp;',
		"\x{22c5}"  => '&sdot;',
		"\x{2308}"  => '&lceil;',
		"\x{2309}"  => '&rceil;',
		"\x{230a}"  => '&lfloor;',
		"\x{230b}"  => '&rfloor;',
		"\x{2329}"  => '&lang;',
		"\x{232a}"  => '&rang;',
		"\x{25ca}"  => '&loz;',
		"\x{2660}"  => '&spades;',
		"\x{2663}"  => '&clubs;',
		"\x{2665}"  => '&hearts;',
		"\x{2666}"  => '&diams;',
		);	
}

sub decode_entities ($@)
{
	my $array;
	if (defined wantarray)
	{
		$array = [@_]; # copy
	}
	else
	{
		$array = \@_;  # modify in-place
	}

	my $c;
	for (@$array)
	{
		s/
			&(
				(?:
					\#(\d+)  |  \#[xX]([0-9a-fA-F]+)  |  (\w+)
				)
				;?
			)
		/
			if (defined $2)
				{ chr($2); }
			elsif (defined $3)
				{ chr(hex $3); }
			else
				{ $entity2char{"$4;"} || "&$1"; }
		/xeg;
	}

	wantarray ? @$array : $array->[0];
}

sub _decode_entities ($$;$)
{
	my $ref = \$_[0];
	my %map = %{ $_[1] || {} };

	$$ref =~ s/
			(&
				(?:
					\#(\d+)  |  \#[xX]([0-9a-fA-F]+)  |  (\w+)
				)
				;?
			)
		/
			if (defined $2)
				{ chr($2); }
			elsif (defined $3)
				{ chr(hex $3); }
			elsif (defined $_[2] and $_[2])
				{ $map{$4} || _search_entity($4, \%map); }
			else
				{ $map{$4} || $1; }
		/xeg;

	return $$ref;
}

sub _search_entity
{
	my ($ent, $map) = @_;
	my $remainder = '';
	
	while (length $ent)
	{
		return $map->{$ent} . $remainder
			if defined $map->{$ent};
		
		$remainder = substr($ent, -1) . $remainder;
		$ent       = substr($ent, 0, -1);
	}
	
	$remainder;
}

sub encode_entities ($;$)
{
	return undef unless defined $_[0];
	
	my $ref;
	if (defined wantarray)
	{
		my $x = $_[0];
		$ref = \$x;     # copy
	}
	else
	{
		$ref = \$_[0];  # modify in-place
	}

	my $unsafe_characters = defined $_[1] ? $_[1] : $default_unsafe_characters;
	my $regexp = ref $unsafe_characters eq 'Regexp'
		? $unsafe_characters
		: "[".quotemeta($unsafe_characters)."]";
	
	$$ref =~ s[ ($regexp) ][ $char2entity{$1}||num_entity($1) ]gex;

	return $$ref;
}

sub encode_entities_numeric
{
	local %char2entity;
	return &encode_entities;
}

sub num_entity
{
	sprintf $hex ? '&#x%x;' : '&#%d;', ord($_[0]);
}

*decode = \&decode_entities;
*encode = \&encode_entities;
*encode_numeric = \&encode_entities_numeric;
*encode_numerically = \&encode_entities_numeric;

1;

__END__

=head1 NAME

HTML::HTML5::Entities - drop-in replacement for HTML::Entities

=head1 SYNOPSIS

 use HTML::Entities;
 
 my $enc = encode_entities('fish & chips');
 print "$enc\n";   # fish &amp; chips
 
 my $dec = decode_entities($enc);
 print "$dec\n";   # fish & chips

=head1 DESCRIPTION

This is a drop-in replacement for L<HTML::Entities>, providing the character
entities defined in HTML5. Some caveats:

=over

=item * The implementation is pure perl, hence in some cases slower, especially decoding.

=item * It will not work in Perl < 5.8.1.

=back

=head2 Functions

=over

=item C<< decode_entities($string, ...) >>

This routine replaces HTML entities found in the C<< $string >> with the
corresponding Unicode character. If multiple strings are provided as
arguments they are each decoded separately and the same number of strings
are returned.

If called in void context the arguments are decoded in-place.

This routine is exported by default.

=item C<< _decode_entities($string, \%entity2char) >>

=item C<< _decode_entities($string, \%entity2char, $expand_prefix) >>

This will in-place replace HTML entities in C<< $string >>. The
C<< %entity2char >> hash must be provided. Named entities not found in
the C<< %entity2char >> hash are left alone. Numeric entities are always
expanded.

If C<< $expand_prefix >> is TRUE then entities without trailing ";" in
C<< %entity2char >> will even be expanded as a prefix of a longer
unrecognized name.

 $string = "foo&nbspbar";
 _decode_entities($string, { nb => "@", nbsp => "\xA0" }, 1);
 print $string;  # will print "foo bar"

This routine is exported by default.

=item C<< encode_entities($string) >>

=item C<< encode_entities($string, $unsafe_chars) >>

This routine replaces unsafe characters in C<< $string >> with their
entity representation. A second argument can be given to specify which
characters to consider unsafe (i.e., which to escape). This may be a
regular expression.

If called in void context the string is encoded in-place.

This routine is exported by default.

=item C<< encode_entities_numeric($string) >>

This routine works just like encode_entities, except that the
replacement entities are always numeric.

This routine is not exported by default.

=item C<< num_entity($string) >>

Given a single character string, encodes it as a numeric entity.

This routine is not exported by default.

=back

The following functions cannot be exported. They behave the same as the
exportable functions.

=over

=item C<< HTML::Entities::decode($string, ...) >>

=item C<< HTML::Entities::encode($string) >>

=item C<< HTML::Entities::encode($string, $unsafe_characters) >>

=item C<< HTML::Entities::encode_numeric($string) >>

=item C<< HTML::Entities::encode_numeric($string, $unsafe_characters) >>

=item C<< HTML::Entities::encode_numerically($string) >>

=item C<< HTML::Entities::encode_numerically($string, $unsafe_characters) >>

=back

=head2 Variables

=over

=item C<< $HTML::HTML5::Entities::hex >>

This variable controls whether numeric entities will use hexadecimal or
decimal notation. It is TRUE (hexadecimal) by default, but can be set to
FALSE.

It only affects the encoding functions. Decoding always understands both
notations.

=item C<< %HTML::HTML5::Entities::char2entity >>

=item C<< %HTML::HTML5::Entities::entity2char >>

There contain the mapping from all characters to the corresponding entities
(and vice versa, respectively). These variables may be exported.

Note that C<< %char2entity >> is a more conservative set of mappings, intended to
be safe for serialising strings to HTML4, HTML5 and XHTML 1.x. And for
hysterical raisins, C<< %entity2char >> does not include the leading ampersands,
while C<< %char2entity >> does.

=back

=head1 BUGS

Please report any bugs to
L<http://rt.cpan.org/Dist/Display.html?Queue=HTML-HTML5-Entities>.

=head1 SEE ALSO

L<HTML::Entities>, L<HTML::HTML5::Parser>, L<HTML::HTML5::Writer>.

=head1 AUTHOR

Toby Inkster E<lt>tobyink@cpan.orgE<gt>.

=head1 COPYRIGHT AND LICENCE

=head2 Encoding and Decoding Functions

Copyright (c) 1995-2006 by Gisle Aas.

Copyright (c) 2012 by Toby Inkster.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=head2 Entity Tables

Copyright (c) 2004-2007 by Apple Computer Inc, Mozilla Foundation,
and Opera Software ASA.

Copyright (c) 2007-2011 by Wakaba <w@suika.fam.cx>.

Copyright (c) 2009-2012 by Toby Inkster <tobyink@cpan.org>.

=head1 DISCLAIMER OF WARRANTIES

THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.