md4c

C Markdown parser. Fast. SAX-like interface. Compliant to CommonMark specification.
git clone https://noulin.net/git/md4c.git
Log | Files | Refs | README | LICENSE

commit 87b41e1aba93c29f0ea378fbd923a3ebf42ce974
parent a284a382ea5026c456e3cf52834c525adf619fbc
Author: Martin Mitas <mity@morous.org>
Date:   Fri,  7 Oct 2016 20:39:42 +0200

Implement entities.

Diffstat:
MREADME.md | 2+-
Mmd2html/CMakeLists.txt | 2+-
Amd2html/entity.c | 2170+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Amd2html/entity.h | 35+++++++++++++++++++++++++++++++++++
Mmd2html/md2html.c | 131+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------
Mmd4c/md4c.c | 111++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
Mmd4c/md4c.h | 12++++++++++++
7 files changed, 2436 insertions(+), 27 deletions(-)

diff --git a/README.md b/README.md @@ -98,7 +98,7 @@ more or less forms our to do list. - **Inlines:** - [x] 6.1 Backslash escapes - - [ ] 6.2 Entity and numeric character references + - [x] 6.2 Entity and numeric character references - [x] 6.3 Code spans - [ ] 6.4 Emphasis and strong emphasis - [ ] 6.5 Links diff --git a/md2html/CMakeLists.txt b/md2html/CMakeLists.txt @@ -1,5 +1,5 @@ include_directories("${PROJECT_SOURCE_DIR}/md4c") -add_executable(md2html cmdline.c cmdline.h md2html.c) +add_executable(md2html cmdline.c cmdline.h entity.c entity.h md2html.c) target_link_libraries(md2html md4c) diff --git a/md2html/entity.c b/md2html/entity.c @@ -0,0 +1,2170 @@ + +#include "entity.h" +#include <string.h> + + +struct entity { + const char* verbatim; + unsigned char utf8_bytes[8]; +}; + + +/* The table is generated from https://html.spec.whatwg.org/entities.json */ +static const struct entity entity_table[] = { + { "&AElig;", { 195, 134, 0 } }, + { "&AMP;", { 38, 0 } }, + { "&Aacute;", { 195, 129, 0 } }, + { "&Abreve;", { 196, 130, 0 } }, + { "&Acirc;", { 195, 130, 0 } }, + { "&Acy;", { 208, 144, 0 } }, + { "&Afr;", { 240, 157, 148, 132, 0 } }, + { "&Agrave;", { 195, 128, 0 } }, + { "&Alpha;", { 206, 145, 0 } }, + { "&Amacr;", { 196, 128, 0 } }, + { "&And;", { 226, 169, 147, 0 } }, + { "&Aogon;", { 196, 132, 0 } }, + { "&Aopf;", { 240, 157, 148, 184, 0 } }, + { "&ApplyFunction;", { 226, 129, 161, 0 } }, + { "&Aring;", { 195, 133, 0 } }, + { "&Ascr;", { 240, 157, 146, 156, 0 } }, + { "&Assign;", { 226, 137, 148, 0 } }, + { "&Atilde;", { 195, 131, 0 } }, + { "&Auml;", { 195, 132, 0 } }, + { "&Backslash;", { 226, 136, 150, 0 } }, + { "&Barv;", { 226, 171, 167, 0 } }, + { "&Barwed;", { 226, 140, 134, 0 } }, + { "&Bcy;", { 208, 145, 0 } }, + { "&Because;", { 226, 136, 181, 0 } }, + { "&Bernoullis;", { 226, 132, 172, 0 } }, + { "&Beta;", { 206, 146, 0 } }, + { "&Bfr;", { 240, 157, 148, 133, 0 } }, + { "&Bopf;", { 240, 157, 148, 185, 0 } }, + { "&Breve;", { 203, 152, 0 } }, + { "&Bscr;", { 226, 132, 172, 0 } }, + { "&Bumpeq;", { 226, 137, 142, 0 } }, + { "&CHcy;", { 208, 167, 0 } }, + { "&COPY;", { 194, 169, 0 } }, + { "&Cacute;", { 196, 134, 0 } }, + { "&Cap;", { 226, 139, 146, 0 } }, + { "&CapitalDifferentialD;", { 226, 133, 133, 0 } }, + { "&Cayleys;", { 226, 132, 173, 0 } }, + { "&Ccaron;", { 196, 140, 0 } }, + { "&Ccedil;", { 195, 135, 0 } }, + { "&Ccirc;", { 196, 136, 0 } }, + { "&Cconint;", { 226, 136, 176, 0 } }, + { "&Cdot;", { 196, 138, 0 } }, + { "&Cedilla;", { 194, 184, 0 } }, + { "&CenterDot;", { 194, 183, 0 } }, + { "&Cfr;", { 226, 132, 173, 0 } }, + { "&Chi;", { 206, 167, 0 } }, + { "&CircleDot;", { 226, 138, 153, 0 } }, + { "&CircleMinus;", { 226, 138, 150, 0 } }, + { "&CirclePlus;", { 226, 138, 149, 0 } }, + { "&CircleTimes;", { 226, 138, 151, 0 } }, + { "&ClockwiseContourIntegral;", { 226, 136, 178, 0 } }, + { "&CloseCurlyDoubleQuote;", { 226, 128, 157, 0 } }, + { "&CloseCurlyQuote;", { 226, 128, 153, 0 } }, + { "&Colon;", { 226, 136, 183, 0 } }, + { "&Colone;", { 226, 169, 180, 0 } }, + { "&Congruent;", { 226, 137, 161, 0 } }, + { "&Conint;", { 226, 136, 175, 0 } }, + { "&ContourIntegral;", { 226, 136, 174, 0 } }, + { "&Copf;", { 226, 132, 130, 0 } }, + { "&Coproduct;", { 226, 136, 144, 0 } }, + { "&CounterClockwiseContourIntegral;", { 226, 136, 179, 0 } }, + { "&Cross;", { 226, 168, 175, 0 } }, + { "&Cscr;", { 240, 157, 146, 158, 0 } }, + { "&Cup;", { 226, 139, 147, 0 } }, + { "&CupCap;", { 226, 137, 141, 0 } }, + { "&DD;", { 226, 133, 133, 0 } }, + { "&DDotrahd;", { 226, 164, 145, 0 } }, + { "&DJcy;", { 208, 130, 0 } }, + { "&DScy;", { 208, 133, 0 } }, + { "&DZcy;", { 208, 143, 0 } }, + { "&Dagger;", { 226, 128, 161, 0 } }, + { "&Darr;", { 226, 134, 161, 0 } }, + { "&Dashv;", { 226, 171, 164, 0 } }, + { "&Dcaron;", { 196, 142, 0 } }, + { "&Dcy;", { 208, 148, 0 } }, + { "&Del;", { 226, 136, 135, 0 } }, + { "&Delta;", { 206, 148, 0 } }, + { "&Dfr;", { 240, 157, 148, 135, 0 } }, + { "&DiacriticalAcute;", { 194, 180, 0 } }, + { "&DiacriticalDot;", { 203, 153, 0 } }, + { "&DiacriticalDoubleAcute;", { 203, 157, 0 } }, + { "&DiacriticalGrave;", { 96, 0 } }, + { "&DiacriticalTilde;", { 203, 156, 0 } }, + { "&Diamond;", { 226, 139, 132, 0 } }, + { "&DifferentialD;", { 226, 133, 134, 0 } }, + { "&Dopf;", { 240, 157, 148, 187, 0 } }, + { "&Dot;", { 194, 168, 0 } }, + { "&DotDot;", { 226, 131, 156, 0 } }, + { "&DotEqual;", { 226, 137, 144, 0 } }, + { "&DoubleContourIntegral;", { 226, 136, 175, 0 } }, + { "&DoubleDot;", { 194, 168, 0 } }, + { "&DoubleDownArrow;", { 226, 135, 147, 0 } }, + { "&DoubleLeftArrow;", { 226, 135, 144, 0 } }, + { "&DoubleLeftRightArrow;", { 226, 135, 148, 0 } }, + { "&DoubleLeftTee;", { 226, 171, 164, 0 } }, + { "&DoubleLongLeftArrow;", { 226, 159, 184, 0 } }, + { "&DoubleLongLeftRightArrow;", { 226, 159, 186, 0 } }, + { "&DoubleLongRightArrow;", { 226, 159, 185, 0 } }, + { "&DoubleRightArrow;", { 226, 135, 146, 0 } }, + { "&DoubleRightTee;", { 226, 138, 168, 0 } }, + { "&DoubleUpArrow;", { 226, 135, 145, 0 } }, + { "&DoubleUpDownArrow;", { 226, 135, 149, 0 } }, + { "&DoubleVerticalBar;", { 226, 136, 165, 0 } }, + { "&DownArrow;", { 226, 134, 147, 0 } }, + { "&DownArrowBar;", { 226, 164, 147, 0 } }, + { "&DownArrowUpArrow;", { 226, 135, 181, 0 } }, + { "&DownBreve;", { 204, 145, 0 } }, + { "&DownLeftRightVector;", { 226, 165, 144, 0 } }, + { "&DownLeftTeeVector;", { 226, 165, 158, 0 } }, + { "&DownLeftVector;", { 226, 134, 189, 0 } }, + { "&DownLeftVectorBar;", { 226, 165, 150, 0 } }, + { "&DownRightTeeVector;", { 226, 165, 159, 0 } }, + { "&DownRightVector;", { 226, 135, 129, 0 } }, + { "&DownRightVectorBar;", { 226, 165, 151, 0 } }, + { "&DownTee;", { 226, 138, 164, 0 } }, + { "&DownTeeArrow;", { 226, 134, 167, 0 } }, + { "&Downarrow;", { 226, 135, 147, 0 } }, + { "&Dscr;", { 240, 157, 146, 159, 0 } }, + { "&Dstrok;", { 196, 144, 0 } }, + { "&ENG;", { 197, 138, 0 } }, + { "&ETH;", { 195, 144, 0 } }, + { "&Eacute;", { 195, 137, 0 } }, + { "&Ecaron;", { 196, 154, 0 } }, + { "&Ecirc;", { 195, 138, 0 } }, + { "&Ecy;", { 208, 173, 0 } }, + { "&Edot;", { 196, 150, 0 } }, + { "&Efr;", { 240, 157, 148, 136, 0 } }, + { "&Egrave;", { 195, 136, 0 } }, + { "&Element;", { 226, 136, 136, 0 } }, + { "&Emacr;", { 196, 146, 0 } }, + { "&EmptySmallSquare;", { 226, 151, 187, 0 } }, + { "&EmptyVerySmallSquare;", { 226, 150, 171, 0 } }, + { "&Eogon;", { 196, 152, 0 } }, + { "&Eopf;", { 240, 157, 148, 188, 0 } }, + { "&Epsilon;", { 206, 149, 0 } }, + { "&Equal;", { 226, 169, 181, 0 } }, + { "&EqualTilde;", { 226, 137, 130, 0 } }, + { "&Equilibrium;", { 226, 135, 140, 0 } }, + { "&Escr;", { 226, 132, 176, 0 } }, + { "&Esim;", { 226, 169, 179, 0 } }, + { "&Eta;", { 206, 151, 0 } }, + { "&Euml;", { 195, 139, 0 } }, + { "&Exists;", { 226, 136, 131, 0 } }, + { "&ExponentialE;", { 226, 133, 135, 0 } }, + { "&Fcy;", { 208, 164, 0 } }, + { "&Ffr;", { 240, 157, 148, 137, 0 } }, + { "&FilledSmallSquare;", { 226, 151, 188, 0 } }, + { "&FilledVerySmallSquare;", { 226, 150, 170, 0 } }, + { "&Fopf;", { 240, 157, 148, 189, 0 } }, + { "&ForAll;", { 226, 136, 128, 0 } }, + { "&Fouriertrf;", { 226, 132, 177, 0 } }, + { "&Fscr;", { 226, 132, 177, 0 } }, + { "&GJcy;", { 208, 131, 0 } }, + { "&GT;", { 62, 0 } }, + { "&Gamma;", { 206, 147, 0 } }, + { "&Gammad;", { 207, 156, 0 } }, + { "&Gbreve;", { 196, 158, 0 } }, + { "&Gcedil;", { 196, 162, 0 } }, + { "&Gcirc;", { 196, 156, 0 } }, + { "&Gcy;", { 208, 147, 0 } }, + { "&Gdot;", { 196, 160, 0 } }, + { "&Gfr;", { 240, 157, 148, 138, 0 } }, + { "&Gg;", { 226, 139, 153, 0 } }, + { "&Gopf;", { 240, 157, 148, 190, 0 } }, + { "&GreaterEqual;", { 226, 137, 165, 0 } }, + { "&GreaterEqualLess;", { 226, 139, 155, 0 } }, + { "&GreaterFullEqual;", { 226, 137, 167, 0 } }, + { "&GreaterGreater;", { 226, 170, 162, 0 } }, + { "&GreaterLess;", { 226, 137, 183, 0 } }, + { "&GreaterSlantEqual;", { 226, 169, 190, 0 } }, + { "&GreaterTilde;", { 226, 137, 179, 0 } }, + { "&Gscr;", { 240, 157, 146, 162, 0 } }, + { "&Gt;", { 226, 137, 171, 0 } }, + { "&HARDcy;", { 208, 170, 0 } }, + { "&Hacek;", { 203, 135, 0 } }, + { "&Hat;", { 94, 0 } }, + { "&Hcirc;", { 196, 164, 0 } }, + { "&Hfr;", { 226, 132, 140, 0 } }, + { "&HilbertSpace;", { 226, 132, 139, 0 } }, + { "&Hopf;", { 226, 132, 141, 0 } }, + { "&HorizontalLine;", { 226, 148, 128, 0 } }, + { "&Hscr;", { 226, 132, 139, 0 } }, + { "&Hstrok;", { 196, 166, 0 } }, + { "&HumpDownHump;", { 226, 137, 142, 0 } }, + { "&HumpEqual;", { 226, 137, 143, 0 } }, + { "&IEcy;", { 208, 149, 0 } }, + { "&IJlig;", { 196, 178, 0 } }, + { "&IOcy;", { 208, 129, 0 } }, + { "&Iacute;", { 195, 141, 0 } }, + { "&Icirc;", { 195, 142, 0 } }, + { "&Icy;", { 208, 152, 0 } }, + { "&Idot;", { 196, 176, 0 } }, + { "&Ifr;", { 226, 132, 145, 0 } }, + { "&Igrave;", { 195, 140, 0 } }, + { "&Im;", { 226, 132, 145, 0 } }, + { "&Imacr;", { 196, 170, 0 } }, + { "&ImaginaryI;", { 226, 133, 136, 0 } }, + { "&Implies;", { 226, 135, 146, 0 } }, + { "&Int;", { 226, 136, 172, 0 } }, + { "&Integral;", { 226, 136, 171, 0 } }, + { "&Intersection;", { 226, 139, 130, 0 } }, + { "&InvisibleComma;", { 226, 129, 163, 0 } }, + { "&InvisibleTimes;", { 226, 129, 162, 0 } }, + { "&Iogon;", { 196, 174, 0 } }, + { "&Iopf;", { 240, 157, 149, 128, 0 } }, + { "&Iota;", { 206, 153, 0 } }, + { "&Iscr;", { 226, 132, 144, 0 } }, + { "&Itilde;", { 196, 168, 0 } }, + { "&Iukcy;", { 208, 134, 0 } }, + { "&Iuml;", { 195, 143, 0 } }, + { "&Jcirc;", { 196, 180, 0 } }, + { "&Jcy;", { 208, 153, 0 } }, + { "&Jfr;", { 240, 157, 148, 141, 0 } }, + { "&Jopf;", { 240, 157, 149, 129, 0 } }, + { "&Jscr;", { 240, 157, 146, 165, 0 } }, + { "&Jsercy;", { 208, 136, 0 } }, + { "&Jukcy;", { 208, 132, 0 } }, + { "&KHcy;", { 208, 165, 0 } }, + { "&KJcy;", { 208, 140, 0 } }, + { "&Kappa;", { 206, 154, 0 } }, + { "&Kcedil;", { 196, 182, 0 } }, + { "&Kcy;", { 208, 154, 0 } }, + { "&Kfr;", { 240, 157, 148, 142, 0 } }, + { "&Kopf;", { 240, 157, 149, 130, 0 } }, + { "&Kscr;", { 240, 157, 146, 166, 0 } }, + { "&LJcy;", { 208, 137, 0 } }, + { "&LT;", { 60, 0 } }, + { "&Lacute;", { 196, 185, 0 } }, + { "&Lambda;", { 206, 155, 0 } }, + { "&Lang;", { 226, 159, 170, 0 } }, + { "&Laplacetrf;", { 226, 132, 146, 0 } }, + { "&Larr;", { 226, 134, 158, 0 } }, + { "&Lcaron;", { 196, 189, 0 } }, + { "&Lcedil;", { 196, 187, 0 } }, + { "&Lcy;", { 208, 155, 0 } }, + { "&LeftAngleBracket;", { 226, 159, 168, 0 } }, + { "&LeftArrow;", { 226, 134, 144, 0 } }, + { "&LeftArrowBar;", { 226, 135, 164, 0 } }, + { "&LeftArrowRightArrow;", { 226, 135, 134, 0 } }, + { "&LeftCeiling;", { 226, 140, 136, 0 } }, + { "&LeftDoubleBracket;", { 226, 159, 166, 0 } }, + { "&LeftDownTeeVector;", { 226, 165, 161, 0 } }, + { "&LeftDownVector;", { 226, 135, 131, 0 } }, + { "&LeftDownVectorBar;", { 226, 165, 153, 0 } }, + { "&LeftFloor;", { 226, 140, 138, 0 } }, + { "&LeftRightArrow;", { 226, 134, 148, 0 } }, + { "&LeftRightVector;", { 226, 165, 142, 0 } }, + { "&LeftTee;", { 226, 138, 163, 0 } }, + { "&LeftTeeArrow;", { 226, 134, 164, 0 } }, + { "&LeftTeeVector;", { 226, 165, 154, 0 } }, + { "&LeftTriangle;", { 226, 138, 178, 0 } }, + { "&LeftTriangleBar;", { 226, 167, 143, 0 } }, + { "&LeftTriangleEqual;", { 226, 138, 180, 0 } }, + { "&LeftUpDownVector;", { 226, 165, 145, 0 } }, + { "&LeftUpTeeVector;", { 226, 165, 160, 0 } }, + { "&LeftUpVector;", { 226, 134, 191, 0 } }, + { "&LeftUpVectorBar;", { 226, 165, 152, 0 } }, + { "&LeftVector;", { 226, 134, 188, 0 } }, + { "&LeftVectorBar;", { 226, 165, 146, 0 } }, + { "&Leftarrow;", { 226, 135, 144, 0 } }, + { "&Leftrightarrow;", { 226, 135, 148, 0 } }, + { "&LessEqualGreater;", { 226, 139, 154, 0 } }, + { "&LessFullEqual;", { 226, 137, 166, 0 } }, + { "&LessGreater;", { 226, 137, 182, 0 } }, + { "&LessLess;", { 226, 170, 161, 0 } }, + { "&LessSlantEqual;", { 226, 169, 189, 0 } }, + { "&LessTilde;", { 226, 137, 178, 0 } }, + { "&Lfr;", { 240, 157, 148, 143, 0 } }, + { "&Ll;", { 226, 139, 152, 0 } }, + { "&Lleftarrow;", { 226, 135, 154, 0 } }, + { "&Lmidot;", { 196, 191, 0 } }, + { "&LongLeftArrow;", { 226, 159, 181, 0 } }, + { "&LongLeftRightArrow;", { 226, 159, 183, 0 } }, + { "&LongRightArrow;", { 226, 159, 182, 0 } }, + { "&Longleftarrow;", { 226, 159, 184, 0 } }, + { "&Longleftrightarrow;", { 226, 159, 186, 0 } }, + { "&Longrightarrow;", { 226, 159, 185, 0 } }, + { "&Lopf;", { 240, 157, 149, 131, 0 } }, + { "&LowerLeftArrow;", { 226, 134, 153, 0 } }, + { "&LowerRightArrow;", { 226, 134, 152, 0 } }, + { "&Lscr;", { 226, 132, 146, 0 } }, + { "&Lsh;", { 226, 134, 176, 0 } }, + { "&Lstrok;", { 197, 129, 0 } }, + { "&Lt;", { 226, 137, 170, 0 } }, + { "&Map;", { 226, 164, 133, 0 } }, + { "&Mcy;", { 208, 156, 0 } }, + { "&MediumSpace;", { 226, 129, 159, 0 } }, + { "&Mellintrf;", { 226, 132, 179, 0 } }, + { "&Mfr;", { 240, 157, 148, 144, 0 } }, + { "&MinusPlus;", { 226, 136, 147, 0 } }, + { "&Mopf;", { 240, 157, 149, 132, 0 } }, + { "&Mscr;", { 226, 132, 179, 0 } }, + { "&Mu;", { 206, 156, 0 } }, + { "&NJcy;", { 208, 138, 0 } }, + { "&Nacute;", { 197, 131, 0 } }, + { "&Ncaron;", { 197, 135, 0 } }, + { "&Ncedil;", { 197, 133, 0 } }, + { "&Ncy;", { 208, 157, 0 } }, + { "&NegativeMediumSpace;", { 226, 128, 139, 0 } }, + { "&NegativeThickSpace;", { 226, 128, 139, 0 } }, + { "&NegativeThinSpace;", { 226, 128, 139, 0 } }, + { "&NegativeVeryThinSpace;", { 226, 128, 139, 0 } }, + { "&NestedGreaterGreater;", { 226, 137, 171, 0 } }, + { "&NestedLessLess;", { 226, 137, 170, 0 } }, + { "&NewLine;", { 10, 0 } }, + { "&Nfr;", { 240, 157, 148, 145, 0 } }, + { "&NoBreak;", { 226, 129, 160, 0 } }, + { "&NonBreakingSpace;", { 194, 160, 0 } }, + { "&Nopf;", { 226, 132, 149, 0 } }, + { "&Not;", { 226, 171, 172, 0 } }, + { "&NotCongruent;", { 226, 137, 162, 0 } }, + { "&NotCupCap;", { 226, 137, 173, 0 } }, + { "&NotDoubleVerticalBar;", { 226, 136, 166, 0 } }, + { "&NotElement;", { 226, 136, 137, 0 } }, + { "&NotEqual;", { 226, 137, 160, 0 } }, + { "&NotEqualTilde;", { 226, 137, 130, 204, 184, 0 } }, + { "&NotExists;", { 226, 136, 132, 0 } }, + { "&NotGreater;", { 226, 137, 175, 0 } }, + { "&NotGreaterEqual;", { 226, 137, 177, 0 } }, + { "&NotGreaterFullEqual;", { 226, 137, 167, 204, 184, 0 } }, + { "&NotGreaterGreater;", { 226, 137, 171, 204, 184, 0 } }, + { "&NotGreaterLess;", { 226, 137, 185, 0 } }, + { "&NotGreaterSlantEqual;", { 226, 169, 190, 204, 184, 0 } }, + { "&NotGreaterTilde;", { 226, 137, 181, 0 } }, + { "&NotHumpDownHump;", { 226, 137, 142, 204, 184, 0 } }, + { "&NotHumpEqual;", { 226, 137, 143, 204, 184, 0 } }, + { "&NotLeftTriangle;", { 226, 139, 170, 0 } }, + { "&NotLeftTriangleBar;", { 226, 167, 143, 204, 184, 0 } }, + { "&NotLeftTriangleEqual;", { 226, 139, 172, 0 } }, + { "&NotLess;", { 226, 137, 174, 0 } }, + { "&NotLessEqual;", { 226, 137, 176, 0 } }, + { "&NotLessGreater;", { 226, 137, 184, 0 } }, + { "&NotLessLess;", { 226, 137, 170, 204, 184, 0 } }, + { "&NotLessSlantEqual;", { 226, 169, 189, 204, 184, 0 } }, + { "&NotLessTilde;", { 226, 137, 180, 0 } }, + { "&NotNestedGreaterGreater;", { 226, 170, 162, 204, 184, 0 } }, + { "&NotNestedLessLess;", { 226, 170, 161, 204, 184, 0 } }, + { "&NotPrecedes;", { 226, 138, 128, 0 } }, + { "&NotPrecedesEqual;", { 226, 170, 175, 204, 184, 0 } }, + { "&NotPrecedesSlantEqual;", { 226, 139, 160, 0 } }, + { "&NotReverseElement;", { 226, 136, 140, 0 } }, + { "&NotRightTriangle;", { 226, 139, 171, 0 } }, + { "&NotRightTriangleBar;", { 226, 167, 144, 204, 184, 0 } }, + { "&NotRightTriangleEqual;", { 226, 139, 173, 0 } }, + { "&NotSquareSubset;", { 226, 138, 143, 204, 184, 0 } }, + { "&NotSquareSubsetEqual;", { 226, 139, 162, 0 } }, + { "&NotSquareSuperset;", { 226, 138, 144, 204, 184, 0 } }, + { "&NotSquareSupersetEqual;", { 226, 139, 163, 0 } }, + { "&NotSubset;", { 226, 138, 130, 226, 131, 146, 0 } }, + { "&NotSubsetEqual;", { 226, 138, 136, 0 } }, + { "&NotSucceeds;", { 226, 138, 129, 0 } }, + { "&NotSucceedsEqual;", { 226, 170, 176, 204, 184, 0 } }, + { "&NotSucceedsSlantEqual;", { 226, 139, 161, 0 } }, + { "&NotSucceedsTilde;", { 226, 137, 191, 204, 184, 0 } }, + { "&NotSuperset;", { 226, 138, 131, 226, 131, 146, 0 } }, + { "&NotSupersetEqual;", { 226, 138, 137, 0 } }, + { "&NotTilde;", { 226, 137, 129, 0 } }, + { "&NotTildeEqual;", { 226, 137, 132, 0 } }, + { "&NotTildeFullEqual;", { 226, 137, 135, 0 } }, + { "&NotTildeTilde;", { 226, 137, 137, 0 } }, + { "&NotVerticalBar;", { 226, 136, 164, 0 } }, + { "&Nscr;", { 240, 157, 146, 169, 0 } }, + { "&Ntilde;", { 195, 145, 0 } }, + { "&Nu;", { 206, 157, 0 } }, + { "&OElig;", { 197, 146, 0 } }, + { "&Oacute;", { 195, 147, 0 } }, + { "&Ocirc;", { 195, 148, 0 } }, + { "&Ocy;", { 208, 158, 0 } }, + { "&Odblac;", { 197, 144, 0 } }, + { "&Ofr;", { 240, 157, 148, 146, 0 } }, + { "&Ograve;", { 195, 146, 0 } }, + { "&Omacr;", { 197, 140, 0 } }, + { "&Omega;", { 206, 169, 0 } }, + { "&Omicron;", { 206, 159, 0 } }, + { "&Oopf;", { 240, 157, 149, 134, 0 } }, + { "&OpenCurlyDoubleQuote;", { 226, 128, 156, 0 } }, + { "&OpenCurlyQuote;", { 226, 128, 152, 0 } }, + { "&Or;", { 226, 169, 148, 0 } }, + { "&Oscr;", { 240, 157, 146, 170, 0 } }, + { "&Oslash;", { 195, 152, 0 } }, + { "&Otilde;", { 195, 149, 0 } }, + { "&Otimes;", { 226, 168, 183, 0 } }, + { "&Ouml;", { 195, 150, 0 } }, + { "&OverBar;", { 226, 128, 190, 0 } }, + { "&OverBrace;", { 226, 143, 158, 0 } }, + { "&OverBracket;", { 226, 142, 180, 0 } }, + { "&OverParenthesis;", { 226, 143, 156, 0 } }, + { "&PartialD;", { 226, 136, 130, 0 } }, + { "&Pcy;", { 208, 159, 0 } }, + { "&Pfr;", { 240, 157, 148, 147, 0 } }, + { "&Phi;", { 206, 166, 0 } }, + { "&Pi;", { 206, 160, 0 } }, + { "&PlusMinus;", { 194, 177, 0 } }, + { "&Poincareplane;", { 226, 132, 140, 0 } }, + { "&Popf;", { 226, 132, 153, 0 } }, + { "&Pr;", { 226, 170, 187, 0 } }, + { "&Precedes;", { 226, 137, 186, 0 } }, + { "&PrecedesEqual;", { 226, 170, 175, 0 } }, + { "&PrecedesSlantEqual;", { 226, 137, 188, 0 } }, + { "&PrecedesTilde;", { 226, 137, 190, 0 } }, + { "&Prime;", { 226, 128, 179, 0 } }, + { "&Product;", { 226, 136, 143, 0 } }, + { "&Proportion;", { 226, 136, 183, 0 } }, + { "&Proportional;", { 226, 136, 157, 0 } }, + { "&Pscr;", { 240, 157, 146, 171, 0 } }, + { "&Psi;", { 206, 168, 0 } }, + { "&QUOT;", { 34, 0 } }, + { "&Qfr;", { 240, 157, 148, 148, 0 } }, + { "&Qopf;", { 226, 132, 154, 0 } }, + { "&Qscr;", { 240, 157, 146, 172, 0 } }, + { "&RBarr;", { 226, 164, 144, 0 } }, + { "&REG;", { 194, 174, 0 } }, + { "&Racute;", { 197, 148, 0 } }, + { "&Rang;", { 226, 159, 171, 0 } }, + { "&Rarr;", { 226, 134, 160, 0 } }, + { "&Rarrtl;", { 226, 164, 150, 0 } }, + { "&Rcaron;", { 197, 152, 0 } }, + { "&Rcedil;", { 197, 150, 0 } }, + { "&Rcy;", { 208, 160, 0 } }, + { "&Re;", { 226, 132, 156, 0 } }, + { "&ReverseElement;", { 226, 136, 139, 0 } }, + { "&ReverseEquilibrium;", { 226, 135, 139, 0 } }, + { "&ReverseUpEquilibrium;", { 226, 165, 175, 0 } }, + { "&Rfr;", { 226, 132, 156, 0 } }, + { "&Rho;", { 206, 161, 0 } }, + { "&RightAngleBracket;", { 226, 159, 169, 0 } }, + { "&RightArrow;", { 226, 134, 146, 0 } }, + { "&RightArrowBar;", { 226, 135, 165, 0 } }, + { "&RightArrowLeftArrow;", { 226, 135, 132, 0 } }, + { "&RightCeiling;", { 226, 140, 137, 0 } }, + { "&RightDoubleBracket;", { 226, 159, 167, 0 } }, + { "&RightDownTeeVector;", { 226, 165, 157, 0 } }, + { "&RightDownVector;", { 226, 135, 130, 0 } }, + { "&RightDownVectorBar;", { 226, 165, 149, 0 } }, + { "&RightFloor;", { 226, 140, 139, 0 } }, + { "&RightTee;", { 226, 138, 162, 0 } }, + { "&RightTeeArrow;", { 226, 134, 166, 0 } }, + { "&RightTeeVector;", { 226, 165, 155, 0 } }, + { "&RightTriangle;", { 226, 138, 179, 0 } }, + { "&RightTriangleBar;", { 226, 167, 144, 0 } }, + { "&RightTriangleEqual;", { 226, 138, 181, 0 } }, + { "&RightUpDownVector;", { 226, 165, 143, 0 } }, + { "&RightUpTeeVector;", { 226, 165, 156, 0 } }, + { "&RightUpVector;", { 226, 134, 190, 0 } }, + { "&RightUpVectorBar;", { 226, 165, 148, 0 } }, + { "&RightVector;", { 226, 135, 128, 0 } }, + { "&RightVectorBar;", { 226, 165, 147, 0 } }, + { "&Rightarrow;", { 226, 135, 146, 0 } }, + { "&Ropf;", { 226, 132, 157, 0 } }, + { "&RoundImplies;", { 226, 165, 176, 0 } }, + { "&Rrightarrow;", { 226, 135, 155, 0 } }, + { "&Rscr;", { 226, 132, 155, 0 } }, + { "&Rsh;", { 226, 134, 177, 0 } }, + { "&RuleDelayed;", { 226, 167, 180, 0 } }, + { "&SHCHcy;", { 208, 169, 0 } }, + { "&SHcy;", { 208, 168, 0 } }, + { "&SOFTcy;", { 208, 172, 0 } }, + { "&Sacute;", { 197, 154, 0 } }, + { "&Sc;", { 226, 170, 188, 0 } }, + { "&Scaron;", { 197, 160, 0 } }, + { "&Scedil;", { 197, 158, 0 } }, + { "&Scirc;", { 197, 156, 0 } }, + { "&Scy;", { 208, 161, 0 } }, + { "&Sfr;", { 240, 157, 148, 150, 0 } }, + { "&ShortDownArrow;", { 226, 134, 147, 0 } }, + { "&ShortLeftArrow;", { 226, 134, 144, 0 } }, + { "&ShortRightArrow;", { 226, 134, 146, 0 } }, + { "&ShortUpArrow;", { 226, 134, 145, 0 } }, + { "&Sigma;", { 206, 163, 0 } }, + { "&SmallCircle;", { 226, 136, 152, 0 } }, + { "&Sopf;", { 240, 157, 149, 138, 0 } }, + { "&Sqrt;", { 226, 136, 154, 0 } }, + { "&Square;", { 226, 150, 161, 0 } }, + { "&SquareIntersection;", { 226, 138, 147, 0 } }, + { "&SquareSubset;", { 226, 138, 143, 0 } }, + { "&SquareSubsetEqual;", { 226, 138, 145, 0 } }, + { "&SquareSuperset;", { 226, 138, 144, 0 } }, + { "&SquareSupersetEqual;", { 226, 138, 146, 0 } }, + { "&SquareUnion;", { 226, 138, 148, 0 } }, + { "&Sscr;", { 240, 157, 146, 174, 0 } }, + { "&Star;", { 226, 139, 134, 0 } }, + { "&Sub;", { 226, 139, 144, 0 } }, + { "&Subset;", { 226, 139, 144, 0 } }, + { "&SubsetEqual;", { 226, 138, 134, 0 } }, + { "&Succeeds;", { 226, 137, 187, 0 } }, + { "&SucceedsEqual;", { 226, 170, 176, 0 } }, + { "&SucceedsSlantEqual;", { 226, 137, 189, 0 } }, + { "&SucceedsTilde;", { 226, 137, 191, 0 } }, + { "&SuchThat;", { 226, 136, 139, 0 } }, + { "&Sum;", { 226, 136, 145, 0 } }, + { "&Sup;", { 226, 139, 145, 0 } }, + { "&Superset;", { 226, 138, 131, 0 } }, + { "&SupersetEqual;", { 226, 138, 135, 0 } }, + { "&Supset;", { 226, 139, 145, 0 } }, + { "&THORN;", { 195, 158, 0 } }, + { "&TRADE;", { 226, 132, 162, 0 } }, + { "&TSHcy;", { 208, 139, 0 } }, + { "&TScy;", { 208, 166, 0 } }, + { "&Tab;", { 9, 0 } }, + { "&Tau;", { 206, 164, 0 } }, + { "&Tcaron;", { 197, 164, 0 } }, + { "&Tcedil;", { 197, 162, 0 } }, + { "&Tcy;", { 208, 162, 0 } }, + { "&Tfr;", { 240, 157, 148, 151, 0 } }, + { "&Therefore;", { 226, 136, 180, 0 } }, + { "&Theta;", { 206, 152, 0 } }, + { "&ThickSpace;", { 226, 129, 159, 226, 128, 138, 0 } }, + { "&ThinSpace;", { 226, 128, 137, 0 } }, + { "&Tilde;", { 226, 136, 188, 0 } }, + { "&TildeEqual;", { 226, 137, 131, 0 } }, + { "&TildeFullEqual;", { 226, 137, 133, 0 } }, + { "&TildeTilde;", { 226, 137, 136, 0 } }, + { "&Topf;", { 240, 157, 149, 139, 0 } }, + { "&TripleDot;", { 226, 131, 155, 0 } }, + { "&Tscr;", { 240, 157, 146, 175, 0 } }, + { "&Tstrok;", { 197, 166, 0 } }, + { "&Uacute;", { 195, 154, 0 } }, + { "&Uarr;", { 226, 134, 159, 0 } }, + { "&Uarrocir;", { 226, 165, 137, 0 } }, + { "&Ubrcy;", { 208, 142, 0 } }, + { "&Ubreve;", { 197, 172, 0 } }, + { "&Ucirc;", { 195, 155, 0 } }, + { "&Ucy;", { 208, 163, 0 } }, + { "&Udblac;", { 197, 176, 0 } }, + { "&Ufr;", { 240, 157, 148, 152, 0 } }, + { "&Ugrave;", { 195, 153, 0 } }, + { "&Umacr;", { 197, 170, 0 } }, + { "&UnderBar;", { 95, 0 } }, + { "&UnderBrace;", { 226, 143, 159, 0 } }, + { "&UnderBracket;", { 226, 142, 181, 0 } }, + { "&UnderParenthesis;", { 226, 143, 157, 0 } }, + { "&Union;", { 226, 139, 131, 0 } }, + { "&UnionPlus;", { 226, 138, 142, 0 } }, + { "&Uogon;", { 197, 178, 0 } }, + { "&Uopf;", { 240, 157, 149, 140, 0 } }, + { "&UpArrow;", { 226, 134, 145, 0 } }, + { "&UpArrowBar;", { 226, 164, 146, 0 } }, + { "&UpArrowDownArrow;", { 226, 135, 133, 0 } }, + { "&UpDownArrow;", { 226, 134, 149, 0 } }, + { "&UpEquilibrium;", { 226, 165, 174, 0 } }, + { "&UpTee;", { 226, 138, 165, 0 } }, + { "&UpTeeArrow;", { 226, 134, 165, 0 } }, + { "&Uparrow;", { 226, 135, 145, 0 } }, + { "&Updownarrow;", { 226, 135, 149, 0 } }, + { "&UpperLeftArrow;", { 226, 134, 150, 0 } }, + { "&UpperRightArrow;", { 226, 134, 151, 0 } }, + { "&Upsi;", { 207, 146, 0 } }, + { "&Upsilon;", { 206, 165, 0 } }, + { "&Uring;", { 197, 174, 0 } }, + { "&Uscr;", { 240, 157, 146, 176, 0 } }, + { "&Utilde;", { 197, 168, 0 } }, + { "&Uuml;", { 195, 156, 0 } }, + { "&VDash;", { 226, 138, 171, 0 } }, + { "&Vbar;", { 226, 171, 171, 0 } }, + { "&Vcy;", { 208, 146, 0 } }, + { "&Vdash;", { 226, 138, 169, 0 } }, + { "&Vdashl;", { 226, 171, 166, 0 } }, + { "&Vee;", { 226, 139, 129, 0 } }, + { "&Verbar;", { 226, 128, 150, 0 } }, + { "&Vert;", { 226, 128, 150, 0 } }, + { "&VerticalBar;", { 226, 136, 163, 0 } }, + { "&VerticalLine;", { 124, 0 } }, + { "&VerticalSeparator;", { 226, 157, 152, 0 } }, + { "&VerticalTilde;", { 226, 137, 128, 0 } }, + { "&VeryThinSpace;", { 226, 128, 138, 0 } }, + { "&Vfr;", { 240, 157, 148, 153, 0 } }, + { "&Vopf;", { 240, 157, 149, 141, 0 } }, + { "&Vscr;", { 240, 157, 146, 177, 0 } }, + { "&Vvdash;", { 226, 138, 170, 0 } }, + { "&Wcirc;", { 197, 180, 0 } }, + { "&Wedge;", { 226, 139, 128, 0 } }, + { "&Wfr;", { 240, 157, 148, 154, 0 } }, + { "&Wopf;", { 240, 157, 149, 142, 0 } }, + { "&Wscr;", { 240, 157, 146, 178, 0 } }, + { "&Xfr;", { 240, 157, 148, 155, 0 } }, + { "&Xi;", { 206, 158, 0 } }, + { "&Xopf;", { 240, 157, 149, 143, 0 } }, + { "&Xscr;", { 240, 157, 146, 179, 0 } }, + { "&YAcy;", { 208, 175, 0 } }, + { "&YIcy;", { 208, 135, 0 } }, + { "&YUcy;", { 208, 174, 0 } }, + { "&Yacute;", { 195, 157, 0 } }, + { "&Ycirc;", { 197, 182, 0 } }, + { "&Ycy;", { 208, 171, 0 } }, + { "&Yfr;", { 240, 157, 148, 156, 0 } }, + { "&Yopf;", { 240, 157, 149, 144, 0 } }, + { "&Yscr;", { 240, 157, 146, 180, 0 } }, + { "&Yuml;", { 197, 184, 0 } }, + { "&ZHcy;", { 208, 150, 0 } }, + { "&Zacute;", { 197, 185, 0 } }, + { "&Zcaron;", { 197, 189, 0 } }, + { "&Zcy;", { 208, 151, 0 } }, + { "&Zdot;", { 197, 187, 0 } }, + { "&ZeroWidthSpace;", { 226, 128, 139, 0 } }, + { "&Zeta;", { 206, 150, 0 } }, + { "&Zfr;", { 226, 132, 168, 0 } }, + { "&Zopf;", { 226, 132, 164, 0 } }, + { "&Zscr;", { 240, 157, 146, 181, 0 } }, + { "&aacute;", { 195, 161, 0 } }, + { "&abreve;", { 196, 131, 0 } }, + { "&ac;", { 226, 136, 190, 0 } }, + { "&acE;", { 226, 136, 190, 204, 179, 0 } }, + { "&acd;", { 226, 136, 191, 0 } }, + { "&acirc;", { 195, 162, 0 } }, + { "&acute;", { 194, 180, 0 } }, + { "&acy;", { 208, 176, 0 } }, + { "&aelig;", { 195, 166, 0 } }, + { "&af;", { 226, 129, 161, 0 } }, + { "&afr;", { 240, 157, 148, 158, 0 } }, + { "&agrave;", { 195, 160, 0 } }, + { "&alefsym;", { 226, 132, 181, 0 } }, + { "&aleph;", { 226, 132, 181, 0 } }, + { "&alpha;", { 206, 177, 0 } }, + { "&amacr;", { 196, 129, 0 } }, + { "&amalg;", { 226, 168, 191, 0 } }, + { "&amp;", { 38, 0 } }, + { "&and;", { 226, 136, 167, 0 } }, + { "&andand;", { 226, 169, 149, 0 } }, + { "&andd;", { 226, 169, 156, 0 } }, + { "&andslope;", { 226, 169, 152, 0 } }, + { "&andv;", { 226, 169, 154, 0 } }, + { "&ang;", { 226, 136, 160, 0 } }, + { "&ange;", { 226, 166, 164, 0 } }, + { "&angle;", { 226, 136, 160, 0 } }, + { "&angmsd;", { 226, 136, 161, 0 } }, + { "&angmsdaa;", { 226, 166, 168, 0 } }, + { "&angmsdab;", { 226, 166, 169, 0 } }, + { "&angmsdac;", { 226, 166, 170, 0 } }, + { "&angmsdad;", { 226, 166, 171, 0 } }, + { "&angmsdae;", { 226, 166, 172, 0 } }, + { "&angmsdaf;", { 226, 166, 173, 0 } }, + { "&angmsdag;", { 226, 166, 174, 0 } }, + { "&angmsdah;", { 226, 166, 175, 0 } }, + { "&angrt;", { 226, 136, 159, 0 } }, + { "&angrtvb;", { 226, 138, 190, 0 } }, + { "&angrtvbd;", { 226, 166, 157, 0 } }, + { "&angsph;", { 226, 136, 162, 0 } }, + { "&angst;", { 195, 133, 0 } }, + { "&angzarr;", { 226, 141, 188, 0 } }, + { "&aogon;", { 196, 133, 0 } }, + { "&aopf;", { 240, 157, 149, 146, 0 } }, + { "&ap;", { 226, 137, 136, 0 } }, + { "&apE;", { 226, 169, 176, 0 } }, + { "&apacir;", { 226, 169, 175, 0 } }, + { "&ape;", { 226, 137, 138, 0 } }, + { "&apid;", { 226, 137, 139, 0 } }, + { "&apos;", { 39, 0 } }, + { "&approx;", { 226, 137, 136, 0 } }, + { "&approxeq;", { 226, 137, 138, 0 } }, + { "&aring;", { 195, 165, 0 } }, + { "&ascr;", { 240, 157, 146, 182, 0 } }, + { "&ast;", { 42, 0 } }, + { "&asymp;", { 226, 137, 136, 0 } }, + { "&asympeq;", { 226, 137, 141, 0 } }, + { "&atilde;", { 195, 163, 0 } }, + { "&auml;", { 195, 164, 0 } }, + { "&awconint;", { 226, 136, 179, 0 } }, + { "&awint;", { 226, 168, 145, 0 } }, + { "&bNot;", { 226, 171, 173, 0 } }, + { "&backcong;", { 226, 137, 140, 0 } }, + { "&backepsilon;", { 207, 182, 0 } }, + { "&backprime;", { 226, 128, 181, 0 } }, + { "&backsim;", { 226, 136, 189, 0 } }, + { "&backsimeq;", { 226, 139, 141, 0 } }, + { "&barvee;", { 226, 138, 189, 0 } }, + { "&barwed;", { 226, 140, 133, 0 } }, + { "&barwedge;", { 226, 140, 133, 0 } }, + { "&bbrk;", { 226, 142, 181, 0 } }, + { "&bbrktbrk;", { 226, 142, 182, 0 } }, + { "&bcong;", { 226, 137, 140, 0 } }, + { "&bcy;", { 208, 177, 0 } }, + { "&bdquo;", { 226, 128, 158, 0 } }, + { "&becaus;", { 226, 136, 181, 0 } }, + { "&because;", { 226, 136, 181, 0 } }, + { "&bemptyv;", { 226, 166, 176, 0 } }, + { "&bepsi;", { 207, 182, 0 } }, + { "&bernou;", { 226, 132, 172, 0 } }, + { "&beta;", { 206, 178, 0 } }, + { "&beth;", { 226, 132, 182, 0 } }, + { "&between;", { 226, 137, 172, 0 } }, + { "&bfr;", { 240, 157, 148, 159, 0 } }, + { "&bigcap;", { 226, 139, 130, 0 } }, + { "&bigcirc;", { 226, 151, 175, 0 } }, + { "&bigcup;", { 226, 139, 131, 0 } }, + { "&bigodot;", { 226, 168, 128, 0 } }, + { "&bigoplus;", { 226, 168, 129, 0 } }, + { "&bigotimes;", { 226, 168, 130, 0 } }, + { "&bigsqcup;", { 226, 168, 134, 0 } }, + { "&bigstar;", { 226, 152, 133, 0 } }, + { "&bigtriangledown;", { 226, 150, 189, 0 } }, + { "&bigtriangleup;", { 226, 150, 179, 0 } }, + { "&biguplus;", { 226, 168, 132, 0 } }, + { "&bigvee;", { 226, 139, 129, 0 } }, + { "&bigwedge;", { 226, 139, 128, 0 } }, + { "&bkarow;", { 226, 164, 141, 0 } }, + { "&blacklozenge;", { 226, 167, 171, 0 } }, + { "&blacksquare;", { 226, 150, 170, 0 } }, + { "&blacktriangle;", { 226, 150, 180, 0 } }, + { "&blacktriangledown;", { 226, 150, 190, 0 } }, + { "&blacktriangleleft;", { 226, 151, 130, 0 } }, + { "&blacktriangleright;", { 226, 150, 184, 0 } }, + { "&blank;", { 226, 144, 163, 0 } }, + { "&blk12;", { 226, 150, 146, 0 } }, + { "&blk14;", { 226, 150, 145, 0 } }, + { "&blk34;", { 226, 150, 147, 0 } }, + { "&block;", { 226, 150, 136, 0 } }, + { "&bne;", { 61, 226, 131, 165, 0 } }, + { "&bnequiv;", { 226, 137, 161, 226, 131, 165, 0 } }, + { "&bnot;", { 226, 140, 144, 0 } }, + { "&bopf;", { 240, 157, 149, 147, 0 } }, + { "&bot;", { 226, 138, 165, 0 } }, + { "&bottom;", { 226, 138, 165, 0 } }, + { "&bowtie;", { 226, 139, 136, 0 } }, + { "&boxDL;", { 226, 149, 151, 0 } }, + { "&boxDR;", { 226, 149, 148, 0 } }, + { "&boxDl;", { 226, 149, 150, 0 } }, + { "&boxDr;", { 226, 149, 147, 0 } }, + { "&boxH;", { 226, 149, 144, 0 } }, + { "&boxHD;", { 226, 149, 166, 0 } }, + { "&boxHU;", { 226, 149, 169, 0 } }, + { "&boxHd;", { 226, 149, 164, 0 } }, + { "&boxHu;", { 226, 149, 167, 0 } }, + { "&boxUL;", { 226, 149, 157, 0 } }, + { "&boxUR;", { 226, 149, 154, 0 } }, + { "&boxUl;", { 226, 149, 156, 0 } }, + { "&boxUr;", { 226, 149, 153, 0 } }, + { "&boxV;", { 226, 149, 145, 0 } }, + { "&boxVH;", { 226, 149, 172, 0 } }, + { "&boxVL;", { 226, 149, 163, 0 } }, + { "&boxVR;", { 226, 149, 160, 0 } }, + { "&boxVh;", { 226, 149, 171, 0 } }, + { "&boxVl;", { 226, 149, 162, 0 } }, + { "&boxVr;", { 226, 149, 159, 0 } }, + { "&boxbox;", { 226, 167, 137, 0 } }, + { "&boxdL;", { 226, 149, 149, 0 } }, + { "&boxdR;", { 226, 149, 146, 0 } }, + { "&boxdl;", { 226, 148, 144, 0 } }, + { "&boxdr;", { 226, 148, 140, 0 } }, + { "&boxh;", { 226, 148, 128, 0 } }, + { "&boxhD;", { 226, 149, 165, 0 } }, + { "&boxhU;", { 226, 149, 168, 0 } }, + { "&boxhd;", { 226, 148, 172, 0 } }, + { "&boxhu;", { 226, 148, 180, 0 } }, + { "&boxminus;", { 226, 138, 159, 0 } }, + { "&boxplus;", { 226, 138, 158, 0 } }, + { "&boxtimes;", { 226, 138, 160, 0 } }, + { "&boxuL;", { 226, 149, 155, 0 } }, + { "&boxuR;", { 226, 149, 152, 0 } }, + { "&boxul;", { 226, 148, 152, 0 } }, + { "&boxur;", { 226, 148, 148, 0 } }, + { "&boxv;", { 226, 148, 130, 0 } }, + { "&boxvH;", { 226, 149, 170, 0 } }, + { "&boxvL;", { 226, 149, 161, 0 } }, + { "&boxvR;", { 226, 149, 158, 0 } }, + { "&boxvh;", { 226, 148, 188, 0 } }, + { "&boxvl;", { 226, 148, 164, 0 } }, + { "&boxvr;", { 226, 148, 156, 0 } }, + { "&bprime;", { 226, 128, 181, 0 } }, + { "&breve;", { 203, 152, 0 } }, + { "&brvbar;", { 194, 166, 0 } }, + { "&bscr;", { 240, 157, 146, 183, 0 } }, + { "&bsemi;", { 226, 129, 143, 0 } }, + { "&bsim;", { 226, 136, 189, 0 } }, + { "&bsime;", { 226, 139, 141, 0 } }, + { "&bsol;", { 92, 0 } }, + { "&bsolb;", { 226, 167, 133, 0 } }, + { "&bsolhsub;", { 226, 159, 136, 0 } }, + { "&bull;", { 226, 128, 162, 0 } }, + { "&bullet;", { 226, 128, 162, 0 } }, + { "&bump;", { 226, 137, 142, 0 } }, + { "&bumpE;", { 226, 170, 174, 0 } }, + { "&bumpe;", { 226, 137, 143, 0 } }, + { "&bumpeq;", { 226, 137, 143, 0 } }, + { "&cacute;", { 196, 135, 0 } }, + { "&cap;", { 226, 136, 169, 0 } }, + { "&capand;", { 226, 169, 132, 0 } }, + { "&capbrcup;", { 226, 169, 137, 0 } }, + { "&capcap;", { 226, 169, 139, 0 } }, + { "&capcup;", { 226, 169, 135, 0 } }, + { "&capdot;", { 226, 169, 128, 0 } }, + { "&caps;", { 226, 136, 169, 239, 184, 128, 0 } }, + { "&caret;", { 226, 129, 129, 0 } }, + { "&caron;", { 203, 135, 0 } }, + { "&ccaps;", { 226, 169, 141, 0 } }, + { "&ccaron;", { 196, 141, 0 } }, + { "&ccedil;", { 195, 167, 0 } }, + { "&ccirc;", { 196, 137, 0 } }, + { "&ccups;", { 226, 169, 140, 0 } }, + { "&ccupssm;", { 226, 169, 144, 0 } }, + { "&cdot;", { 196, 139, 0 } }, + { "&cedil;", { 194, 184, 0 } }, + { "&cemptyv;", { 226, 166, 178, 0 } }, + { "&cent;", { 194, 162, 0 } }, + { "&centerdot;", { 194, 183, 0 } }, + { "&cfr;", { 240, 157, 148, 160, 0 } }, + { "&chcy;", { 209, 135, 0 } }, + { "&check;", { 226, 156, 147, 0 } }, + { "&checkmark;", { 226, 156, 147, 0 } }, + { "&chi;", { 207, 135, 0 } }, + { "&cir;", { 226, 151, 139, 0 } }, + { "&cirE;", { 226, 167, 131, 0 } }, + { "&circ;", { 203, 134, 0 } }, + { "&circeq;", { 226, 137, 151, 0 } }, + { "&circlearrowleft;", { 226, 134, 186, 0 } }, + { "&circlearrowright;", { 226, 134, 187, 0 } }, + { "&circledR;", { 194, 174, 0 } }, + { "&circledS;", { 226, 147, 136, 0 } }, + { "&circledast;", { 226, 138, 155, 0 } }, + { "&circledcirc;", { 226, 138, 154, 0 } }, + { "&circleddash;", { 226, 138, 157, 0 } }, + { "&cire;", { 226, 137, 151, 0 } }, + { "&cirfnint;", { 226, 168, 144, 0 } }, + { "&cirmid;", { 226, 171, 175, 0 } }, + { "&cirscir;", { 226, 167, 130, 0 } }, + { "&clubs;", { 226, 153, 163, 0 } }, + { "&clubsuit;", { 226, 153, 163, 0 } }, + { "&colon;", { 58, 0 } }, + { "&colone;", { 226, 137, 148, 0 } }, + { "&coloneq;", { 226, 137, 148, 0 } }, + { "&comma;", { 44, 0 } }, + { "&commat;", { 64, 0 } }, + { "&comp;", { 226, 136, 129, 0 } }, + { "&compfn;", { 226, 136, 152, 0 } }, + { "&complement;", { 226, 136, 129, 0 } }, + { "&complexes;", { 226, 132, 130, 0 } }, + { "&cong;", { 226, 137, 133, 0 } }, + { "&congdot;", { 226, 169, 173, 0 } }, + { "&conint;", { 226, 136, 174, 0 } }, + { "&copf;", { 240, 157, 149, 148, 0 } }, + { "&coprod;", { 226, 136, 144, 0 } }, + { "&copy;", { 194, 169, 0 } }, + { "&copysr;", { 226, 132, 151, 0 } }, + { "&crarr;", { 226, 134, 181, 0 } }, + { "&cross;", { 226, 156, 151, 0 } }, + { "&cscr;", { 240, 157, 146, 184, 0 } }, + { "&csub;", { 226, 171, 143, 0 } }, + { "&csube;", { 226, 171, 145, 0 } }, + { "&csup;", { 226, 171, 144, 0 } }, + { "&csupe;", { 226, 171, 146, 0 } }, + { "&ctdot;", { 226, 139, 175, 0 } }, + { "&cudarrl;", { 226, 164, 184, 0 } }, + { "&cudarrr;", { 226, 164, 181, 0 } }, + { "&cuepr;", { 226, 139, 158, 0 } }, + { "&cuesc;", { 226, 139, 159, 0 } }, + { "&cularr;", { 226, 134, 182, 0 } }, + { "&cularrp;", { 226, 164, 189, 0 } }, + { "&cup;", { 226, 136, 170, 0 } }, + { "&cupbrcap;", { 226, 169, 136, 0 } }, + { "&cupcap;", { 226, 169, 134, 0 } }, + { "&cupcup;", { 226, 169, 138, 0 } }, + { "&cupdot;", { 226, 138, 141, 0 } }, + { "&cupor;", { 226, 169, 133, 0 } }, + { "&cups;", { 226, 136, 170, 239, 184, 128, 0 } }, + { "&curarr;", { 226, 134, 183, 0 } }, + { "&curarrm;", { 226, 164, 188, 0 } }, + { "&curlyeqprec;", { 226, 139, 158, 0 } }, + { "&curlyeqsucc;", { 226, 139, 159, 0 } }, + { "&curlyvee;", { 226, 139, 142, 0 } }, + { "&curlywedge;", { 226, 139, 143, 0 } }, + { "&curren;", { 194, 164, 0 } }, + { "&curvearrowleft;", { 226, 134, 182, 0 } }, + { "&curvearrowright;", { 226, 134, 183, 0 } }, + { "&cuvee;", { 226, 139, 142, 0 } }, + { "&cuwed;", { 226, 139, 143, 0 } }, + { "&cwconint;", { 226, 136, 178, 0 } }, + { "&cwint;", { 226, 136, 177, 0 } }, + { "&cylcty;", { 226, 140, 173, 0 } }, + { "&dArr;", { 226, 135, 147, 0 } }, + { "&dHar;", { 226, 165, 165, 0 } }, + { "&dagger;", { 226, 128, 160, 0 } }, + { "&daleth;", { 226, 132, 184, 0 } }, + { "&darr;", { 226, 134, 147, 0 } }, + { "&dash;", { 226, 128, 144, 0 } }, + { "&dashv;", { 226, 138, 163, 0 } }, + { "&dbkarow;", { 226, 164, 143, 0 } }, + { "&dblac;", { 203, 157, 0 } }, + { "&dcaron;", { 196, 143, 0 } }, + { "&dcy;", { 208, 180, 0 } }, + { "&dd;", { 226, 133, 134, 0 } }, + { "&ddagger;", { 226, 128, 161, 0 } }, + { "&ddarr;", { 226, 135, 138, 0 } }, + { "&ddotseq;", { 226, 169, 183, 0 } }, + { "&deg;", { 194, 176, 0 } }, + { "&delta;", { 206, 180, 0 } }, + { "&demptyv;", { 226, 166, 177, 0 } }, + { "&dfisht;", { 226, 165, 191, 0 } }, + { "&dfr;", { 240, 157, 148, 161, 0 } }, + { "&dharl;", { 226, 135, 131, 0 } }, + { "&dharr;", { 226, 135, 130, 0 } }, + { "&diam;", { 226, 139, 132, 0 } }, + { "&diamond;", { 226, 139, 132, 0 } }, + { "&diamondsuit;", { 226, 153, 166, 0 } }, + { "&diams;", { 226, 153, 166, 0 } }, + { "&die;", { 194, 168, 0 } }, + { "&digamma;", { 207, 157, 0 } }, + { "&disin;", { 226, 139, 178, 0 } }, + { "&div;", { 195, 183, 0 } }, + { "&divide;", { 195, 183, 0 } }, + { "&divideontimes;", { 226, 139, 135, 0 } }, + { "&divonx;", { 226, 139, 135, 0 } }, + { "&djcy;", { 209, 146, 0 } }, + { "&dlcorn;", { 226, 140, 158, 0 } }, + { "&dlcrop;", { 226, 140, 141, 0 } }, + { "&dollar;", { 36, 0 } }, + { "&dopf;", { 240, 157, 149, 149, 0 } }, + { "&dot;", { 203, 153, 0 } }, + { "&doteq;", { 226, 137, 144, 0 } }, + { "&doteqdot;", { 226, 137, 145, 0 } }, + { "&dotminus;", { 226, 136, 184, 0 } }, + { "&dotplus;", { 226, 136, 148, 0 } }, + { "&dotsquare;", { 226, 138, 161, 0 } }, + { "&doublebarwedge;", { 226, 140, 134, 0 } }, + { "&downarrow;", { 226, 134, 147, 0 } }, + { "&downdownarrows;", { 226, 135, 138, 0 } }, + { "&downharpoonleft;", { 226, 135, 131, 0 } }, + { "&downharpoonright;", { 226, 135, 130, 0 } }, + { "&drbkarow;", { 226, 164, 144, 0 } }, + { "&drcorn;", { 226, 140, 159, 0 } }, + { "&drcrop;", { 226, 140, 140, 0 } }, + { "&dscr;", { 240, 157, 146, 185, 0 } }, + { "&dscy;", { 209, 149, 0 } }, + { "&dsol;", { 226, 167, 182, 0 } }, + { "&dstrok;", { 196, 145, 0 } }, + { "&dtdot;", { 226, 139, 177, 0 } }, + { "&dtri;", { 226, 150, 191, 0 } }, + { "&dtrif;", { 226, 150, 190, 0 } }, + { "&duarr;", { 226, 135, 181, 0 } }, + { "&duhar;", { 226, 165, 175, 0 } }, + { "&dwangle;", { 226, 166, 166, 0 } }, + { "&dzcy;", { 209, 159, 0 } }, + { "&dzigrarr;", { 226, 159, 191, 0 } }, + { "&eDDot;", { 226, 169, 183, 0 } }, + { "&eDot;", { 226, 137, 145, 0 } }, + { "&eacute;", { 195, 169, 0 } }, + { "&easter;", { 226, 169, 174, 0 } }, + { "&ecaron;", { 196, 155, 0 } }, + { "&ecir;", { 226, 137, 150, 0 } }, + { "&ecirc;", { 195, 170, 0 } }, + { "&ecolon;", { 226, 137, 149, 0 } }, + { "&ecy;", { 209, 141, 0 } }, + { "&edot;", { 196, 151, 0 } }, + { "&ee;", { 226, 133, 135, 0 } }, + { "&efDot;", { 226, 137, 146, 0 } }, + { "&efr;", { 240, 157, 148, 162, 0 } }, + { "&eg;", { 226, 170, 154, 0 } }, + { "&egrave;", { 195, 168, 0 } }, + { "&egs;", { 226, 170, 150, 0 } }, + { "&egsdot;", { 226, 170, 152, 0 } }, + { "&el;", { 226, 170, 153, 0 } }, + { "&elinters;", { 226, 143, 167, 0 } }, + { "&ell;", { 226, 132, 147, 0 } }, + { "&els;", { 226, 170, 149, 0 } }, + { "&elsdot;", { 226, 170, 151, 0 } }, + { "&emacr;", { 196, 147, 0 } }, + { "&empty;", { 226, 136, 133, 0 } }, + { "&emptyset;", { 226, 136, 133, 0 } }, + { "&emptyv;", { 226, 136, 133, 0 } }, + { "&emsp;", { 226, 128, 131, 0 } }, + { "&emsp13;", { 226, 128, 132, 0 } }, + { "&emsp14;", { 226, 128, 133, 0 } }, + { "&eng;", { 197, 139, 0 } }, + { "&ensp;", { 226, 128, 130, 0 } }, + { "&eogon;", { 196, 153, 0 } }, + { "&eopf;", { 240, 157, 149, 150, 0 } }, + { "&epar;", { 226, 139, 149, 0 } }, + { "&eparsl;", { 226, 167, 163, 0 } }, + { "&eplus;", { 226, 169, 177, 0 } }, + { "&epsi;", { 206, 181, 0 } }, + { "&epsilon;", { 206, 181, 0 } }, + { "&epsiv;", { 207, 181, 0 } }, + { "&eqcirc;", { 226, 137, 150, 0 } }, + { "&eqcolon;", { 226, 137, 149, 0 } }, + { "&eqsim;", { 226, 137, 130, 0 } }, + { "&eqslantgtr;", { 226, 170, 150, 0 } }, + { "&eqslantless;", { 226, 170, 149, 0 } }, + { "&equals;", { 61, 0 } }, + { "&equest;", { 226, 137, 159, 0 } }, + { "&equiv;", { 226, 137, 161, 0 } }, + { "&equivDD;", { 226, 169, 184, 0 } }, + { "&eqvparsl;", { 226, 167, 165, 0 } }, + { "&erDot;", { 226, 137, 147, 0 } }, + { "&erarr;", { 226, 165, 177, 0 } }, + { "&escr;", { 226, 132, 175, 0 } }, + { "&esdot;", { 226, 137, 144, 0 } }, + { "&esim;", { 226, 137, 130, 0 } }, + { "&eta;", { 206, 183, 0 } }, + { "&eth;", { 195, 176, 0 } }, + { "&euml;", { 195, 171, 0 } }, + { "&euro;", { 226, 130, 172, 0 } }, + { "&excl;", { 33, 0 } }, + { "&exist;", { 226, 136, 131, 0 } }, + { "&expectation;", { 226, 132, 176, 0 } }, + { "&exponentiale;", { 226, 133, 135, 0 } }, + { "&fallingdotseq;", { 226, 137, 146, 0 } }, + { "&fcy;", { 209, 132, 0 } }, + { "&female;", { 226, 153, 128, 0 } }, + { "&ffilig;", { 239, 172, 131, 0 } }, + { "&fflig;", { 239, 172, 128, 0 } }, + { "&ffllig;", { 239, 172, 132, 0 } }, + { "&ffr;", { 240, 157, 148, 163, 0 } }, + { "&filig;", { 239, 172, 129, 0 } }, + { "&fjlig;", { 102, 106, 0 } }, + { "&flat;", { 226, 153, 173, 0 } }, + { "&fllig;", { 239, 172, 130, 0 } }, + { "&fltns;", { 226, 150, 177, 0 } }, + { "&fnof;", { 198, 146, 0 } }, + { "&fopf;", { 240, 157, 149, 151, 0 } }, + { "&forall;", { 226, 136, 128, 0 } }, + { "&fork;", { 226, 139, 148, 0 } }, + { "&forkv;", { 226, 171, 153, 0 } }, + { "&fpartint;", { 226, 168, 141, 0 } }, + { "&frac12;", { 194, 189, 0 } }, + { "&frac13;", { 226, 133, 147, 0 } }, + { "&frac14;", { 194, 188, 0 } }, + { "&frac15;", { 226, 133, 149, 0 } }, + { "&frac16;", { 226, 133, 153, 0 } }, + { "&frac18;", { 226, 133, 155, 0 } }, + { "&frac23;", { 226, 133, 148, 0 } }, + { "&frac25;", { 226, 133, 150, 0 } }, + { "&frac34;", { 194, 190, 0 } }, + { "&frac35;", { 226, 133, 151, 0 } }, + { "&frac38;", { 226, 133, 156, 0 } }, + { "&frac45;", { 226, 133, 152, 0 } }, + { "&frac56;", { 226, 133, 154, 0 } }, + { "&frac58;", { 226, 133, 157, 0 } }, + { "&frac78;", { 226, 133, 158, 0 } }, + { "&frasl;", { 226, 129, 132, 0 } }, + { "&frown;", { 226, 140, 162, 0 } }, + { "&fscr;", { 240, 157, 146, 187, 0 } }, + { "&gE;", { 226, 137, 167, 0 } }, + { "&gEl;", { 226, 170, 140, 0 } }, + { "&gacute;", { 199, 181, 0 } }, + { "&gamma;", { 206, 179, 0 } }, + { "&gammad;", { 207, 157, 0 } }, + { "&gap;", { 226, 170, 134, 0 } }, + { "&gbreve;", { 196, 159, 0 } }, + { "&gcirc;", { 196, 157, 0 } }, + { "&gcy;", { 208, 179, 0 } }, + { "&gdot;", { 196, 161, 0 } }, + { "&ge;", { 226, 137, 165, 0 } }, + { "&gel;", { 226, 139, 155, 0 } }, + { "&geq;", { 226, 137, 165, 0 } }, + { "&geqq;", { 226, 137, 167, 0 } }, + { "&geqslant;", { 226, 169, 190, 0 } }, + { "&ges;", { 226, 169, 190, 0 } }, + { "&gescc;", { 226, 170, 169, 0 } }, + { "&gesdot;", { 226, 170, 128, 0 } }, + { "&gesdoto;", { 226, 170, 130, 0 } }, + { "&gesdotol;", { 226, 170, 132, 0 } }, + { "&gesl;", { 226, 139, 155, 239, 184, 128, 0 } }, + { "&gesles;", { 226, 170, 148, 0 } }, + { "&gfr;", { 240, 157, 148, 164, 0 } }, + { "&gg;", { 226, 137, 171, 0 } }, + { "&ggg;", { 226, 139, 153, 0 } }, + { "&gimel;", { 226, 132, 183, 0 } }, + { "&gjcy;", { 209, 147, 0 } }, + { "&gl;", { 226, 137, 183, 0 } }, + { "&glE;", { 226, 170, 146, 0 } }, + { "&gla;", { 226, 170, 165, 0 } }, + { "&glj;", { 226, 170, 164, 0 } }, + { "&gnE;", { 226, 137, 169, 0 } }, + { "&gnap;", { 226, 170, 138, 0 } }, + { "&gnapprox;", { 226, 170, 138, 0 } }, + { "&gne;", { 226, 170, 136, 0 } }, + { "&gneq;", { 226, 170, 136, 0 } }, + { "&gneqq;", { 226, 137, 169, 0 } }, + { "&gnsim;", { 226, 139, 167, 0 } }, + { "&gopf;", { 240, 157, 149, 152, 0 } }, + { "&grave;", { 96, 0 } }, + { "&gscr;", { 226, 132, 138, 0 } }, + { "&gsim;", { 226, 137, 179, 0 } }, + { "&gsime;", { 226, 170, 142, 0 } }, + { "&gsiml;", { 226, 170, 144, 0 } }, + { "&gt;", { 62, 0 } }, + { "&gtcc;", { 226, 170, 167, 0 } }, + { "&gtcir;", { 226, 169, 186, 0 } }, + { "&gtdot;", { 226, 139, 151, 0 } }, + { "&gtlPar;", { 226, 166, 149, 0 } }, + { "&gtquest;", { 226, 169, 188, 0 } }, + { "&gtrapprox;", { 226, 170, 134, 0 } }, + { "&gtrarr;", { 226, 165, 184, 0 } }, + { "&gtrdot;", { 226, 139, 151, 0 } }, + { "&gtreqless;", { 226, 139, 155, 0 } }, + { "&gtreqqless;", { 226, 170, 140, 0 } }, + { "&gtrless;", { 226, 137, 183, 0 } }, + { "&gtrsim;", { 226, 137, 179, 0 } }, + { "&gvertneqq;", { 226, 137, 169, 239, 184, 128, 0 } }, + { "&gvnE;", { 226, 137, 169, 239, 184, 128, 0 } }, + { "&hArr;", { 226, 135, 148, 0 } }, + { "&hairsp;", { 226, 128, 138, 0 } }, + { "&half;", { 194, 189, 0 } }, + { "&hamilt;", { 226, 132, 139, 0 } }, + { "&hardcy;", { 209, 138, 0 } }, + { "&harr;", { 226, 134, 148, 0 } }, + { "&harrcir;", { 226, 165, 136, 0 } }, + { "&harrw;", { 226, 134, 173, 0 } }, + { "&hbar;", { 226, 132, 143, 0 } }, + { "&hcirc;", { 196, 165, 0 } }, + { "&hearts;", { 226, 153, 165, 0 } }, + { "&heartsuit;", { 226, 153, 165, 0 } }, + { "&hellip;", { 226, 128, 166, 0 } }, + { "&hercon;", { 226, 138, 185, 0 } }, + { "&hfr;", { 240, 157, 148, 165, 0 } }, + { "&hksearow;", { 226, 164, 165, 0 } }, + { "&hkswarow;", { 226, 164, 166, 0 } }, + { "&hoarr;", { 226, 135, 191, 0 } }, + { "&homtht;", { 226, 136, 187, 0 } }, + { "&hookleftarrow;", { 226, 134, 169, 0 } }, + { "&hookrightarrow;", { 226, 134, 170, 0 } }, + { "&hopf;", { 240, 157, 149, 153, 0 } }, + { "&horbar;", { 226, 128, 149, 0 } }, + { "&hscr;", { 240, 157, 146, 189, 0 } }, + { "&hslash;", { 226, 132, 143, 0 } }, + { "&hstrok;", { 196, 167, 0 } }, + { "&hybull;", { 226, 129, 131, 0 } }, + { "&hyphen;", { 226, 128, 144, 0 } }, + { "&iacute;", { 195, 173, 0 } }, + { "&ic;", { 226, 129, 163, 0 } }, + { "&icirc;", { 195, 174, 0 } }, + { "&icy;", { 208, 184, 0 } }, + { "&iecy;", { 208, 181, 0 } }, + { "&iexcl;", { 194, 161, 0 } }, + { "&iff;", { 226, 135, 148, 0 } }, + { "&ifr;", { 240, 157, 148, 166, 0 } }, + { "&igrave;", { 195, 172, 0 } }, + { "&ii;", { 226, 133, 136, 0 } }, + { "&iiiint;", { 226, 168, 140, 0 } }, + { "&iiint;", { 226, 136, 173, 0 } }, + { "&iinfin;", { 226, 167, 156, 0 } }, + { "&iiota;", { 226, 132, 169, 0 } }, + { "&ijlig;", { 196, 179, 0 } }, + { "&imacr;", { 196, 171, 0 } }, + { "&image;", { 226, 132, 145, 0 } }, + { "&imagline;", { 226, 132, 144, 0 } }, + { "&imagpart;", { 226, 132, 145, 0 } }, + { "&imath;", { 196, 177, 0 } }, + { "&imof;", { 226, 138, 183, 0 } }, + { "&imped;", { 198, 181, 0 } }, + { "&in;", { 226, 136, 136, 0 } }, + { "&incare;", { 226, 132, 133, 0 } }, + { "&infin;", { 226, 136, 158, 0 } }, + { "&infintie;", { 226, 167, 157, 0 } }, + { "&inodot;", { 196, 177, 0 } }, + { "&int;", { 226, 136, 171, 0 } }, + { "&intcal;", { 226, 138, 186, 0 } }, + { "&integers;", { 226, 132, 164, 0 } }, + { "&intercal;", { 226, 138, 186, 0 } }, + { "&intlarhk;", { 226, 168, 151, 0 } }, + { "&intprod;", { 226, 168, 188, 0 } }, + { "&iocy;", { 209, 145, 0 } }, + { "&iogon;", { 196, 175, 0 } }, + { "&iopf;", { 240, 157, 149, 154, 0 } }, + { "&iota;", { 206, 185, 0 } }, + { "&iprod;", { 226, 168, 188, 0 } }, + { "&iquest;", { 194, 191, 0 } }, + { "&iscr;", { 240, 157, 146, 190, 0 } }, + { "&isin;", { 226, 136, 136, 0 } }, + { "&isinE;", { 226, 139, 185, 0 } }, + { "&isindot;", { 226, 139, 181, 0 } }, + { "&isins;", { 226, 139, 180, 0 } }, + { "&isinsv;", { 226, 139, 179, 0 } }, + { "&isinv;", { 226, 136, 136, 0 } }, + { "&it;", { 226, 129, 162, 0 } }, + { "&itilde;", { 196, 169, 0 } }, + { "&iukcy;", { 209, 150, 0 } }, + { "&iuml;", { 195, 175, 0 } }, + { "&jcirc;", { 196, 181, 0 } }, + { "&jcy;", { 208, 185, 0 } }, + { "&jfr;", { 240, 157, 148, 167, 0 } }, + { "&jmath;", { 200, 183, 0 } }, + { "&jopf;", { 240, 157, 149, 155, 0 } }, + { "&jscr;", { 240, 157, 146, 191, 0 } }, + { "&jsercy;", { 209, 152, 0 } }, + { "&jukcy;", { 209, 148, 0 } }, + { "&kappa;", { 206, 186, 0 } }, + { "&kappav;", { 207, 176, 0 } }, + { "&kcedil;", { 196, 183, 0 } }, + { "&kcy;", { 208, 186, 0 } }, + { "&kfr;", { 240, 157, 148, 168, 0 } }, + { "&kgreen;", { 196, 184, 0 } }, + { "&khcy;", { 209, 133, 0 } }, + { "&kjcy;", { 209, 156, 0 } }, + { "&kopf;", { 240, 157, 149, 156, 0 } }, + { "&kscr;", { 240, 157, 147, 128, 0 } }, + { "&lAarr;", { 226, 135, 154, 0 } }, + { "&lArr;", { 226, 135, 144, 0 } }, + { "&lAtail;", { 226, 164, 155, 0 } }, + { "&lBarr;", { 226, 164, 142, 0 } }, + { "&lE;", { 226, 137, 166, 0 } }, + { "&lEg;", { 226, 170, 139, 0 } }, + { "&lHar;", { 226, 165, 162, 0 } }, + { "&lacute;", { 196, 186, 0 } }, + { "&laemptyv;", { 226, 166, 180, 0 } }, + { "&lagran;", { 226, 132, 146, 0 } }, + { "&lambda;", { 206, 187, 0 } }, + { "&lang;", { 226, 159, 168, 0 } }, + { "&langd;", { 226, 166, 145, 0 } }, + { "&langle;", { 226, 159, 168, 0 } }, + { "&lap;", { 226, 170, 133, 0 } }, + { "&laquo;", { 194, 171, 0 } }, + { "&larr;", { 226, 134, 144, 0 } }, + { "&larrb;", { 226, 135, 164, 0 } }, + { "&larrbfs;", { 226, 164, 159, 0 } }, + { "&larrfs;", { 226, 164, 157, 0 } }, + { "&larrhk;", { 226, 134, 169, 0 } }, + { "&larrlp;", { 226, 134, 171, 0 } }, + { "&larrpl;", { 226, 164, 185, 0 } }, + { "&larrsim;", { 226, 165, 179, 0 } }, + { "&larrtl;", { 226, 134, 162, 0 } }, + { "&lat;", { 226, 170, 171, 0 } }, + { "&latail;", { 226, 164, 153, 0 } }, + { "&late;", { 226, 170, 173, 0 } }, + { "&lates;", { 226, 170, 173, 239, 184, 128, 0 } }, + { "&lbarr;", { 226, 164, 140, 0 } }, + { "&lbbrk;", { 226, 157, 178, 0 } }, + { "&lbrace;", { 123, 0 } }, + { "&lbrack;", { 91, 0 } }, + { "&lbrke;", { 226, 166, 139, 0 } }, + { "&lbrksld;", { 226, 166, 143, 0 } }, + { "&lbrkslu;", { 226, 166, 141, 0 } }, + { "&lcaron;", { 196, 190, 0 } }, + { "&lcedil;", { 196, 188, 0 } }, + { "&lceil;", { 226, 140, 136, 0 } }, + { "&lcub;", { 123, 0 } }, + { "&lcy;", { 208, 187, 0 } }, + { "&ldca;", { 226, 164, 182, 0 } }, + { "&ldquo;", { 226, 128, 156, 0 } }, + { "&ldquor;", { 226, 128, 158, 0 } }, + { "&ldrdhar;", { 226, 165, 167, 0 } }, + { "&ldrushar;", { 226, 165, 139, 0 } }, + { "&ldsh;", { 226, 134, 178, 0 } }, + { "&le;", { 226, 137, 164, 0 } }, + { "&leftarrow;", { 226, 134, 144, 0 } }, + { "&leftarrowtail;", { 226, 134, 162, 0 } }, + { "&leftharpoondown;", { 226, 134, 189, 0 } }, + { "&leftharpoonup;", { 226, 134, 188, 0 } }, + { "&leftleftarrows;", { 226, 135, 135, 0 } }, + { "&leftrightarrow;", { 226, 134, 148, 0 } }, + { "&leftrightarrows;", { 226, 135, 134, 0 } }, + { "&leftrightharpoons;", { 226, 135, 139, 0 } }, + { "&leftrightsquigarrow;", { 226, 134, 173, 0 } }, + { "&leftthreetimes;", { 226, 139, 139, 0 } }, + { "&leg;", { 226, 139, 154, 0 } }, + { "&leq;", { 226, 137, 164, 0 } }, + { "&leqq;", { 226, 137, 166, 0 } }, + { "&leqslant;", { 226, 169, 189, 0 } }, + { "&les;", { 226, 169, 189, 0 } }, + { "&lescc;", { 226, 170, 168, 0 } }, + { "&lesdot;", { 226, 169, 191, 0 } }, + { "&lesdoto;", { 226, 170, 129, 0 } }, + { "&lesdotor;", { 226, 170, 131, 0 } }, + { "&lesg;", { 226, 139, 154, 239, 184, 128, 0 } }, + { "&lesges;", { 226, 170, 147, 0 } }, + { "&lessapprox;", { 226, 170, 133, 0 } }, + { "&lessdot;", { 226, 139, 150, 0 } }, + { "&lesseqgtr;", { 226, 139, 154, 0 } }, + { "&lesseqqgtr;", { 226, 170, 139, 0 } }, + { "&lessgtr;", { 226, 137, 182, 0 } }, + { "&lesssim;", { 226, 137, 178, 0 } }, + { "&lfisht;", { 226, 165, 188, 0 } }, + { "&lfloor;", { 226, 140, 138, 0 } }, + { "&lfr;", { 240, 157, 148, 169, 0 } }, + { "&lg;", { 226, 137, 182, 0 } }, + { "&lgE;", { 226, 170, 145, 0 } }, + { "&lhard;", { 226, 134, 189, 0 } }, + { "&lharu;", { 226, 134, 188, 0 } }, + { "&lharul;", { 226, 165, 170, 0 } }, + { "&lhblk;", { 226, 150, 132, 0 } }, + { "&ljcy;", { 209, 153, 0 } }, + { "&ll;", { 226, 137, 170, 0 } }, + { "&llarr;", { 226, 135, 135, 0 } }, + { "&llcorner;", { 226, 140, 158, 0 } }, + { "&llhard;", { 226, 165, 171, 0 } }, + { "&lltri;", { 226, 151, 186, 0 } }, + { "&lmidot;", { 197, 128, 0 } }, + { "&lmoust;", { 226, 142, 176, 0 } }, + { "&lmoustache;", { 226, 142, 176, 0 } }, + { "&lnE;", { 226, 137, 168, 0 } }, + { "&lnap;", { 226, 170, 137, 0 } }, + { "&lnapprox;", { 226, 170, 137, 0 } }, + { "&lne;", { 226, 170, 135, 0 } }, + { "&lneq;", { 226, 170, 135, 0 } }, + { "&lneqq;", { 226, 137, 168, 0 } }, + { "&lnsim;", { 226, 139, 166, 0 } }, + { "&loang;", { 226, 159, 172, 0 } }, + { "&loarr;", { 226, 135, 189, 0 } }, + { "&lobrk;", { 226, 159, 166, 0 } }, + { "&longleftarrow;", { 226, 159, 181, 0 } }, + { "&longleftrightarrow;", { 226, 159, 183, 0 } }, + { "&longmapsto;", { 226, 159, 188, 0 } }, + { "&longrightarrow;", { 226, 159, 182, 0 } }, + { "&looparrowleft;", { 226, 134, 171, 0 } }, + { "&looparrowright;", { 226, 134, 172, 0 } }, + { "&lopar;", { 226, 166, 133, 0 } }, + { "&lopf;", { 240, 157, 149, 157, 0 } }, + { "&loplus;", { 226, 168, 173, 0 } }, + { "&lotimes;", { 226, 168, 180, 0 } }, + { "&lowast;", { 226, 136, 151, 0 } }, + { "&lowbar;", { 95, 0 } }, + { "&loz;", { 226, 151, 138, 0 } }, + { "&lozenge;", { 226, 151, 138, 0 } }, + { "&lozf;", { 226, 167, 171, 0 } }, + { "&lpar;", { 40, 0 } }, + { "&lparlt;", { 226, 166, 147, 0 } }, + { "&lrarr;", { 226, 135, 134, 0 } }, + { "&lrcorner;", { 226, 140, 159, 0 } }, + { "&lrhar;", { 226, 135, 139, 0 } }, + { "&lrhard;", { 226, 165, 173, 0 } }, + { "&lrm;", { 226, 128, 142, 0 } }, + { "&lrtri;", { 226, 138, 191, 0 } }, + { "&lsaquo;", { 226, 128, 185, 0 } }, + { "&lscr;", { 240, 157, 147, 129, 0 } }, + { "&lsh;", { 226, 134, 176, 0 } }, + { "&lsim;", { 226, 137, 178, 0 } }, + { "&lsime;", { 226, 170, 141, 0 } }, + { "&lsimg;", { 226, 170, 143, 0 } }, + { "&lsqb;", { 91, 0 } }, + { "&lsquo;", { 226, 128, 152, 0 } }, + { "&lsquor;", { 226, 128, 154, 0 } }, + { "&lstrok;", { 197, 130, 0 } }, + { "&lt;", { 60, 0 } }, + { "&ltcc;", { 226, 170, 166, 0 } }, + { "&ltcir;", { 226, 169, 185, 0 } }, + { "&ltdot;", { 226, 139, 150, 0 } }, + { "&lthree;", { 226, 139, 139, 0 } }, + { "&ltimes;", { 226, 139, 137, 0 } }, + { "&ltlarr;", { 226, 165, 182, 0 } }, + { "&ltquest;", { 226, 169, 187, 0 } }, + { "&ltrPar;", { 226, 166, 150, 0 } }, + { "&ltri;", { 226, 151, 131, 0 } }, + { "&ltrie;", { 226, 138, 180, 0 } }, + { "&ltrif;", { 226, 151, 130, 0 } }, + { "&lurdshar;", { 226, 165, 138, 0 } }, + { "&luruhar;", { 226, 165, 166, 0 } }, + { "&lvertneqq;", { 226, 137, 168, 239, 184, 128, 0 } }, + { "&lvnE;", { 226, 137, 168, 239, 184, 128, 0 } }, + { "&mDDot;", { 226, 136, 186, 0 } }, + { "&macr;", { 194, 175, 0 } }, + { "&male;", { 226, 153, 130, 0 } }, + { "&malt;", { 226, 156, 160, 0 } }, + { "&maltese;", { 226, 156, 160, 0 } }, + { "&map;", { 226, 134, 166, 0 } }, + { "&mapsto;", { 226, 134, 166, 0 } }, + { "&mapstodown;", { 226, 134, 167, 0 } }, + { "&mapstoleft;", { 226, 134, 164, 0 } }, + { "&mapstoup;", { 226, 134, 165, 0 } }, + { "&marker;", { 226, 150, 174, 0 } }, + { "&mcomma;", { 226, 168, 169, 0 } }, + { "&mcy;", { 208, 188, 0 } }, + { "&mdash;", { 226, 128, 148, 0 } }, + { "&measuredangle;", { 226, 136, 161, 0 } }, + { "&mfr;", { 240, 157, 148, 170, 0 } }, + { "&mho;", { 226, 132, 167, 0 } }, + { "&micro;", { 194, 181, 0 } }, + { "&mid;", { 226, 136, 163, 0 } }, + { "&midast;", { 42, 0 } }, + { "&midcir;", { 226, 171, 176, 0 } }, + { "&middot;", { 194, 183, 0 } }, + { "&minus;", { 226, 136, 146, 0 } }, + { "&minusb;", { 226, 138, 159, 0 } }, + { "&minusd;", { 226, 136, 184, 0 } }, + { "&minusdu;", { 226, 168, 170, 0 } }, + { "&mlcp;", { 226, 171, 155, 0 } }, + { "&mldr;", { 226, 128, 166, 0 } }, + { "&mnplus;", { 226, 136, 147, 0 } }, + { "&models;", { 226, 138, 167, 0 } }, + { "&mopf;", { 240, 157, 149, 158, 0 } }, + { "&mp;", { 226, 136, 147, 0 } }, + { "&mscr;", { 240, 157, 147, 130, 0 } }, + { "&mstpos;", { 226, 136, 190, 0 } }, + { "&mu;", { 206, 188, 0 } }, + { "&multimap;", { 226, 138, 184, 0 } }, + { "&mumap;", { 226, 138, 184, 0 } }, + { "&nGg;", { 226, 139, 153, 204, 184, 0 } }, + { "&nGt;", { 226, 137, 171, 226, 131, 146, 0 } }, + { "&nGtv;", { 226, 137, 171, 204, 184, 0 } }, + { "&nLeftarrow;", { 226, 135, 141, 0 } }, + { "&nLeftrightarrow;", { 226, 135, 142, 0 } }, + { "&nLl;", { 226, 139, 152, 204, 184, 0 } }, + { "&nLt;", { 226, 137, 170, 226, 131, 146, 0 } }, + { "&nLtv;", { 226, 137, 170, 204, 184, 0 } }, + { "&nRightarrow;", { 226, 135, 143, 0 } }, + { "&nVDash;", { 226, 138, 175, 0 } }, + { "&nVdash;", { 226, 138, 174, 0 } }, + { "&nabla;", { 226, 136, 135, 0 } }, + { "&nacute;", { 197, 132, 0 } }, + { "&nang;", { 226, 136, 160, 226, 131, 146, 0 } }, + { "&nap;", { 226, 137, 137, 0 } }, + { "&napE;", { 226, 169, 176, 204, 184, 0 } }, + { "&napid;", { 226, 137, 139, 204, 184, 0 } }, + { "&napos;", { 197, 137, 0 } }, + { "&napprox;", { 226, 137, 137, 0 } }, + { "&natur;", { 226, 153, 174, 0 } }, + { "&natural;", { 226, 153, 174, 0 } }, + { "&naturals;", { 226, 132, 149, 0 } }, + { "&nbsp;", { 194, 160, 0 } }, + { "&nbump;", { 226, 137, 142, 204, 184, 0 } }, + { "&nbumpe;", { 226, 137, 143, 204, 184, 0 } }, + { "&ncap;", { 226, 169, 131, 0 } }, + { "&ncaron;", { 197, 136, 0 } }, + { "&ncedil;", { 197, 134, 0 } }, + { "&ncong;", { 226, 137, 135, 0 } }, + { "&ncongdot;", { 226, 169, 173, 204, 184, 0 } }, + { "&ncup;", { 226, 169, 130, 0 } }, + { "&ncy;", { 208, 189, 0 } }, + { "&ndash;", { 226, 128, 147, 0 } }, + { "&ne;", { 226, 137, 160, 0 } }, + { "&neArr;", { 226, 135, 151, 0 } }, + { "&nearhk;", { 226, 164, 164, 0 } }, + { "&nearr;", { 226, 134, 151, 0 } }, + { "&nearrow;", { 226, 134, 151, 0 } }, + { "&nedot;", { 226, 137, 144, 204, 184, 0 } }, + { "&nequiv;", { 226, 137, 162, 0 } }, + { "&nesear;", { 226, 164, 168, 0 } }, + { "&nesim;", { 226, 137, 130, 204, 184, 0 } }, + { "&nexist;", { 226, 136, 132, 0 } }, + { "&nexists;", { 226, 136, 132, 0 } }, + { "&nfr;", { 240, 157, 148, 171, 0 } }, + { "&ngE;", { 226, 137, 167, 204, 184, 0 } }, + { "&nge;", { 226, 137, 177, 0 } }, + { "&ngeq;", { 226, 137, 177, 0 } }, + { "&ngeqq;", { 226, 137, 167, 204, 184, 0 } }, + { "&ngeqslant;", { 226, 169, 190, 204, 184, 0 } }, + { "&nges;", { 226, 169, 190, 204, 184, 0 } }, + { "&ngsim;", { 226, 137, 181, 0 } }, + { "&ngt;", { 226, 137, 175, 0 } }, + { "&ngtr;", { 226, 137, 175, 0 } }, + { "&nhArr;", { 226, 135, 142, 0 } }, + { "&nharr;", { 226, 134, 174, 0 } }, + { "&nhpar;", { 226, 171, 178, 0 } }, + { "&ni;", { 226, 136, 139, 0 } }, + { "&nis;", { 226, 139, 188, 0 } }, + { "&nisd;", { 226, 139, 186, 0 } }, + { "&niv;", { 226, 136, 139, 0 } }, + { "&njcy;", { 209, 154, 0 } }, + { "&nlArr;", { 226, 135, 141, 0 } }, + { "&nlE;", { 226, 137, 166, 204, 184, 0 } }, + { "&nlarr;", { 226, 134, 154, 0 } }, + { "&nldr;", { 226, 128, 165, 0 } }, + { "&nle;", { 226, 137, 176, 0 } }, + { "&nleftarrow;", { 226, 134, 154, 0 } }, + { "&nleftrightarrow;", { 226, 134, 174, 0 } }, + { "&nleq;", { 226, 137, 176, 0 } }, + { "&nleqq;", { 226, 137, 166, 204, 184, 0 } }, + { "&nleqslant;", { 226, 169, 189, 204, 184, 0 } }, + { "&nles;", { 226, 169, 189, 204, 184, 0 } }, + { "&nless;", { 226, 137, 174, 0 } }, + { "&nlsim;", { 226, 137, 180, 0 } }, + { "&nlt;", { 226, 137, 174, 0 } }, + { "&nltri;", { 226, 139, 170, 0 } }, + { "&nltrie;", { 226, 139, 172, 0 } }, + { "&nmid;", { 226, 136, 164, 0 } }, + { "&nopf;", { 240, 157, 149, 159, 0 } }, + { "&not;", { 194, 172, 0 } }, + { "&notin;", { 226, 136, 137, 0 } }, + { "&notinE;", { 226, 139, 185, 204, 184, 0 } }, + { "&notindot;", { 226, 139, 181, 204, 184, 0 } }, + { "&notinva;", { 226, 136, 137, 0 } }, + { "&notinvb;", { 226, 139, 183, 0 } }, + { "&notinvc;", { 226, 139, 182, 0 } }, + { "&notni;", { 226, 136, 140, 0 } }, + { "&notniva;", { 226, 136, 140, 0 } }, + { "&notnivb;", { 226, 139, 190, 0 } }, + { "&notnivc;", { 226, 139, 189, 0 } }, + { "&npar;", { 226, 136, 166, 0 } }, + { "&nparallel;", { 226, 136, 166, 0 } }, + { "&nparsl;", { 226, 171, 189, 226, 131, 165, 0 } }, + { "&npart;", { 226, 136, 130, 204, 184, 0 } }, + { "&npolint;", { 226, 168, 148, 0 } }, + { "&npr;", { 226, 138, 128, 0 } }, + { "&nprcue;", { 226, 139, 160, 0 } }, + { "&npre;", { 226, 170, 175, 204, 184, 0 } }, + { "&nprec;", { 226, 138, 128, 0 } }, + { "&npreceq;", { 226, 170, 175, 204, 184, 0 } }, + { "&nrArr;", { 226, 135, 143, 0 } }, + { "&nrarr;", { 226, 134, 155, 0 } }, + { "&nrarrc;", { 226, 164, 179, 204, 184, 0 } }, + { "&nrarrw;", { 226, 134, 157, 204, 184, 0 } }, + { "&nrightarrow;", { 226, 134, 155, 0 } }, + { "&nrtri;", { 226, 139, 171, 0 } }, + { "&nrtrie;", { 226, 139, 173, 0 } }, + { "&nsc;", { 226, 138, 129, 0 } }, + { "&nsccue;", { 226, 139, 161, 0 } }, + { "&nsce;", { 226, 170, 176, 204, 184, 0 } }, + { "&nscr;", { 240, 157, 147, 131, 0 } }, + { "&nshortmid;", { 226, 136, 164, 0 } }, + { "&nshortparallel;", { 226, 136, 166, 0 } }, + { "&nsim;", { 226, 137, 129, 0 } }, + { "&nsime;", { 226, 137, 132, 0 } }, + { "&nsimeq;", { 226, 137, 132, 0 } }, + { "&nsmid;", { 226, 136, 164, 0 } }, + { "&nspar;", { 226, 136, 166, 0 } }, + { "&nsqsube;", { 226, 139, 162, 0 } }, + { "&nsqsupe;", { 226, 139, 163, 0 } }, + { "&nsub;", { 226, 138, 132, 0 } }, + { "&nsubE;", { 226, 171, 133, 204, 184, 0 } }, + { "&nsube;", { 226, 138, 136, 0 } }, + { "&nsubset;", { 226, 138, 130, 226, 131, 146, 0 } }, + { "&nsubseteq;", { 226, 138, 136, 0 } }, + { "&nsubseteqq;", { 226, 171, 133, 204, 184, 0 } }, + { "&nsucc;", { 226, 138, 129, 0 } }, + { "&nsucceq;", { 226, 170, 176, 204, 184, 0 } }, + { "&nsup;", { 226, 138, 133, 0 } }, + { "&nsupE;", { 226, 171, 134, 204, 184, 0 } }, + { "&nsupe;", { 226, 138, 137, 0 } }, + { "&nsupset;", { 226, 138, 131, 226, 131, 146, 0 } }, + { "&nsupseteq;", { 226, 138, 137, 0 } }, + { "&nsupseteqq;", { 226, 171, 134, 204, 184, 0 } }, + { "&ntgl;", { 226, 137, 185, 0 } }, + { "&ntilde;", { 195, 177, 0 } }, + { "&ntlg;", { 226, 137, 184, 0 } }, + { "&ntriangleleft;", { 226, 139, 170, 0 } }, + { "&ntrianglelefteq;", { 226, 139, 172, 0 } }, + { "&ntriangleright;", { 226, 139, 171, 0 } }, + { "&ntrianglerighteq;", { 226, 139, 173, 0 } }, + { "&nu;", { 206, 189, 0 } }, + { "&num;", { 35, 0 } }, + { "&numero;", { 226, 132, 150, 0 } }, + { "&numsp;", { 226, 128, 135, 0 } }, + { "&nvDash;", { 226, 138, 173, 0 } }, + { "&nvHarr;", { 226, 164, 132, 0 } }, + { "&nvap;", { 226, 137, 141, 226, 131, 146, 0 } }, + { "&nvdash;", { 226, 138, 172, 0 } }, + { "&nvge;", { 226, 137, 165, 226, 131, 146, 0 } }, + { "&nvgt;", { 62, 226, 131, 146, 0 } }, + { "&nvinfin;", { 226, 167, 158, 0 } }, + { "&nvlArr;", { 226, 164, 130, 0 } }, + { "&nvle;", { 226, 137, 164, 226, 131, 146, 0 } }, + { "&nvlt;", { 60, 226, 131, 146, 0 } }, + { "&nvltrie;", { 226, 138, 180, 226, 131, 146, 0 } }, + { "&nvrArr;", { 226, 164, 131, 0 } }, + { "&nvrtrie;", { 226, 138, 181, 226, 131, 146, 0 } }, + { "&nvsim;", { 226, 136, 188, 226, 131, 146, 0 } }, + { "&nwArr;", { 226, 135, 150, 0 } }, + { "&nwarhk;", { 226, 164, 163, 0 } }, + { "&nwarr;", { 226, 134, 150, 0 } }, + { "&nwarrow;", { 226, 134, 150, 0 } }, + { "&nwnear;", { 226, 164, 167, 0 } }, + { "&oS;", { 226, 147, 136, 0 } }, + { "&oacute;", { 195, 179, 0 } }, + { "&oast;", { 226, 138, 155, 0 } }, + { "&ocir;", { 226, 138, 154, 0 } }, + { "&ocirc;", { 195, 180, 0 } }, + { "&ocy;", { 208, 190, 0 } }, + { "&odash;", { 226, 138, 157, 0 } }, + { "&odblac;", { 197, 145, 0 } }, + { "&odiv;", { 226, 168, 184, 0 } }, + { "&odot;", { 226, 138, 153, 0 } }, + { "&odsold;", { 226, 166, 188, 0 } }, + { "&oelig;", { 197, 147, 0 } }, + { "&ofcir;", { 226, 166, 191, 0 } }, + { "&ofr;", { 240, 157, 148, 172, 0 } }, + { "&ogon;", { 203, 155, 0 } }, + { "&ograve;", { 195, 178, 0 } }, + { "&ogt;", { 226, 167, 129, 0 } }, + { "&ohbar;", { 226, 166, 181, 0 } }, + { "&ohm;", { 206, 169, 0 } }, + { "&oint;", { 226, 136, 174, 0 } }, + { "&olarr;", { 226, 134, 186, 0 } }, + { "&olcir;", { 226, 166, 190, 0 } }, + { "&olcross;", { 226, 166, 187, 0 } }, + { "&oline;", { 226, 128, 190, 0 } }, + { "&olt;", { 226, 167, 128, 0 } }, + { "&omacr;", { 197, 141, 0 } }, + { "&omega;", { 207, 137, 0 } }, + { "&omicron;", { 206, 191, 0 } }, + { "&omid;", { 226, 166, 182, 0 } }, + { "&ominus;", { 226, 138, 150, 0 } }, + { "&oopf;", { 240, 157, 149, 160, 0 } }, + { "&opar;", { 226, 166, 183, 0 } }, + { "&operp;", { 226, 166, 185, 0 } }, + { "&oplus;", { 226, 138, 149, 0 } }, + { "&or;", { 226, 136, 168, 0 } }, + { "&orarr;", { 226, 134, 187, 0 } }, + { "&ord;", { 226, 169, 157, 0 } }, + { "&order;", { 226, 132, 180, 0 } }, + { "&orderof;", { 226, 132, 180, 0 } }, + { "&ordf;", { 194, 170, 0 } }, + { "&ordm;", { 194, 186, 0 } }, + { "&origof;", { 226, 138, 182, 0 } }, + { "&oror;", { 226, 169, 150, 0 } }, + { "&orslope;", { 226, 169, 151, 0 } }, + { "&orv;", { 226, 169, 155, 0 } }, + { "&oscr;", { 226, 132, 180, 0 } }, + { "&oslash;", { 195, 184, 0 } }, + { "&osol;", { 226, 138, 152, 0 } }, + { "&otilde;", { 195, 181, 0 } }, + { "&otimes;", { 226, 138, 151, 0 } }, + { "&otimesas;", { 226, 168, 182, 0 } }, + { "&ouml;", { 195, 182, 0 } }, + { "&ovbar;", { 226, 140, 189, 0 } }, + { "&par;", { 226, 136, 165, 0 } }, + { "&para;", { 194, 182, 0 } }, + { "&parallel;", { 226, 136, 165, 0 } }, + { "&parsim;", { 226, 171, 179, 0 } }, + { "&parsl;", { 226, 171, 189, 0 } }, + { "&part;", { 226, 136, 130, 0 } }, + { "&pcy;", { 208, 191, 0 } }, + { "&percnt;", { 37, 0 } }, + { "&period;", { 46, 0 } }, + { "&permil;", { 226, 128, 176, 0 } }, + { "&perp;", { 226, 138, 165, 0 } }, + { "&pertenk;", { 226, 128, 177, 0 } }, + { "&pfr;", { 240, 157, 148, 173, 0 } }, + { "&phi;", { 207, 134, 0 } }, + { "&phiv;", { 207, 149, 0 } }, + { "&phmmat;", { 226, 132, 179, 0 } }, + { "&phone;", { 226, 152, 142, 0 } }, + { "&pi;", { 207, 128, 0 } }, + { "&pitchfork;", { 226, 139, 148, 0 } }, + { "&piv;", { 207, 150, 0 } }, + { "&planck;", { 226, 132, 143, 0 } }, + { "&planckh;", { 226, 132, 142, 0 } }, + { "&plankv;", { 226, 132, 143, 0 } }, + { "&plus;", { 43, 0 } }, + { "&plusacir;", { 226, 168, 163, 0 } }, + { "&plusb;", { 226, 138, 158, 0 } }, + { "&pluscir;", { 226, 168, 162, 0 } }, + { "&plusdo;", { 226, 136, 148, 0 } }, + { "&plusdu;", { 226, 168, 165, 0 } }, + { "&pluse;", { 226, 169, 178, 0 } }, + { "&plusmn;", { 194, 177, 0 } }, + { "&plussim;", { 226, 168, 166, 0 } }, + { "&plustwo;", { 226, 168, 167, 0 } }, + { "&pm;", { 194, 177, 0 } }, + { "&pointint;", { 226, 168, 149, 0 } }, + { "&popf;", { 240, 157, 149, 161, 0 } }, + { "&pound;", { 194, 163, 0 } }, + { "&pr;", { 226, 137, 186, 0 } }, + { "&prE;", { 226, 170, 179, 0 } }, + { "&prap;", { 226, 170, 183, 0 } }, + { "&prcue;", { 226, 137, 188, 0 } }, + { "&pre;", { 226, 170, 175, 0 } }, + { "&prec;", { 226, 137, 186, 0 } }, + { "&precapprox;", { 226, 170, 183, 0 } }, + { "&preccurlyeq;", { 226, 137, 188, 0 } }, + { "&preceq;", { 226, 170, 175, 0 } }, + { "&precnapprox;", { 226, 170, 185, 0 } }, + { "&precneqq;", { 226, 170, 181, 0 } }, + { "&precnsim;", { 226, 139, 168, 0 } }, + { "&precsim;", { 226, 137, 190, 0 } }, + { "&prime;", { 226, 128, 178, 0 } }, + { "&primes;", { 226, 132, 153, 0 } }, + { "&prnE;", { 226, 170, 181, 0 } }, + { "&prnap;", { 226, 170, 185, 0 } }, + { "&prnsim;", { 226, 139, 168, 0 } }, + { "&prod;", { 226, 136, 143, 0 } }, + { "&profalar;", { 226, 140, 174, 0 } }, + { "&profline;", { 226, 140, 146, 0 } }, + { "&profsurf;", { 226, 140, 147, 0 } }, + { "&prop;", { 226, 136, 157, 0 } }, + { "&propto;", { 226, 136, 157, 0 } }, + { "&prsim;", { 226, 137, 190, 0 } }, + { "&prurel;", { 226, 138, 176, 0 } }, + { "&pscr;", { 240, 157, 147, 133, 0 } }, + { "&psi;", { 207, 136, 0 } }, + { "&puncsp;", { 226, 128, 136, 0 } }, + { "&qfr;", { 240, 157, 148, 174, 0 } }, + { "&qint;", { 226, 168, 140, 0 } }, + { "&qopf;", { 240, 157, 149, 162, 0 } }, + { "&qprime;", { 226, 129, 151, 0 } }, + { "&qscr;", { 240, 157, 147, 134, 0 } }, + { "&quaternions;", { 226, 132, 141, 0 } }, + { "&quatint;", { 226, 168, 150, 0 } }, + { "&quest;", { 63, 0 } }, + { "&questeq;", { 226, 137, 159, 0 } }, + { "&quot;", { 34, 0 } }, + { "&rAarr;", { 226, 135, 155, 0 } }, + { "&rArr;", { 226, 135, 146, 0 } }, + { "&rAtail;", { 226, 164, 156, 0 } }, + { "&rBarr;", { 226, 164, 143, 0 } }, + { "&rHar;", { 226, 165, 164, 0 } }, + { "&race;", { 226, 136, 189, 204, 177, 0 } }, + { "&racute;", { 197, 149, 0 } }, + { "&radic;", { 226, 136, 154, 0 } }, + { "&raemptyv;", { 226, 166, 179, 0 } }, + { "&rang;", { 226, 159, 169, 0 } }, + { "&rangd;", { 226, 166, 146, 0 } }, + { "&range;", { 226, 166, 165, 0 } }, + { "&rangle;", { 226, 159, 169, 0 } }, + { "&raquo;", { 194, 187, 0 } }, + { "&rarr;", { 226, 134, 146, 0 } }, + { "&rarrap;", { 226, 165, 181, 0 } }, + { "&rarrb;", { 226, 135, 165, 0 } }, + { "&rarrbfs;", { 226, 164, 160, 0 } }, + { "&rarrc;", { 226, 164, 179, 0 } }, + { "&rarrfs;", { 226, 164, 158, 0 } }, + { "&rarrhk;", { 226, 134, 170, 0 } }, + { "&rarrlp;", { 226, 134, 172, 0 } }, + { "&rarrpl;", { 226, 165, 133, 0 } }, + { "&rarrsim;", { 226, 165, 180, 0 } }, + { "&rarrtl;", { 226, 134, 163, 0 } }, + { "&rarrw;", { 226, 134, 157, 0 } }, + { "&ratail;", { 226, 164, 154, 0 } }, + { "&ratio;", { 226, 136, 182, 0 } }, + { "&rationals;", { 226, 132, 154, 0 } }, + { "&rbarr;", { 226, 164, 141, 0 } }, + { "&rbbrk;", { 226, 157, 179, 0 } }, + { "&rbrace;", { 125, 0 } }, + { "&rbrack;", { 93, 0 } }, + { "&rbrke;", { 226, 166, 140, 0 } }, + { "&rbrksld;", { 226, 166, 142, 0 } }, + { "&rbrkslu;", { 226, 166, 144, 0 } }, + { "&rcaron;", { 197, 153, 0 } }, + { "&rcedil;", { 197, 151, 0 } }, + { "&rceil;", { 226, 140, 137, 0 } }, + { "&rcub;", { 125, 0 } }, + { "&rcy;", { 209, 128, 0 } }, + { "&rdca;", { 226, 164, 183, 0 } }, + { "&rdldhar;", { 226, 165, 169, 0 } }, + { "&rdquo;", { 226, 128, 157, 0 } }, + { "&rdquor;", { 226, 128, 157, 0 } }, + { "&rdsh;", { 226, 134, 179, 0 } }, + { "&real;", { 226, 132, 156, 0 } }, + { "&realine;", { 226, 132, 155, 0 } }, + { "&realpart;", { 226, 132, 156, 0 } }, + { "&reals;", { 226, 132, 157, 0 } }, + { "&rect;", { 226, 150, 173, 0 } }, + { "&reg;", { 194, 174, 0 } }, + { "&rfisht;", { 226, 165, 189, 0 } }, + { "&rfloor;", { 226, 140, 139, 0 } }, + { "&rfr;", { 240, 157, 148, 175, 0 } }, + { "&rhard;", { 226, 135, 129, 0 } }, + { "&rharu;", { 226, 135, 128, 0 } }, + { "&rharul;", { 226, 165, 172, 0 } }, + { "&rho;", { 207, 129, 0 } }, + { "&rhov;", { 207, 177, 0 } }, + { "&rightarrow;", { 226, 134, 146, 0 } }, + { "&rightarrowtail;", { 226, 134, 163, 0 } }, + { "&rightharpoondown;", { 226, 135, 129, 0 } }, + { "&rightharpoonup;", { 226, 135, 128, 0 } }, + { "&rightleftarrows;", { 226, 135, 132, 0 } }, + { "&rightleftharpoons;", { 226, 135, 140, 0 } }, + { "&rightrightarrows;", { 226, 135, 137, 0 } }, + { "&rightsquigarrow;", { 226, 134, 157, 0 } }, + { "&rightthreetimes;", { 226, 139, 140, 0 } }, + { "&ring;", { 203, 154, 0 } }, + { "&risingdotseq;", { 226, 137, 147, 0 } }, + { "&rlarr;", { 226, 135, 132, 0 } }, + { "&rlhar;", { 226, 135, 140, 0 } }, + { "&rlm;", { 226, 128, 143, 0 } }, + { "&rmoust;", { 226, 142, 177, 0 } }, + { "&rmoustache;", { 226, 142, 177, 0 } }, + { "&rnmid;", { 226, 171, 174, 0 } }, + { "&roang;", { 226, 159, 173, 0 } }, + { "&roarr;", { 226, 135, 190, 0 } }, + { "&robrk;", { 226, 159, 167, 0 } }, + { "&ropar;", { 226, 166, 134, 0 } }, + { "&ropf;", { 240, 157, 149, 163, 0 } }, + { "&roplus;", { 226, 168, 174, 0 } }, + { "&rotimes;", { 226, 168, 181, 0 } }, + { "&rpar;", { 41, 0 } }, + { "&rpargt;", { 226, 166, 148, 0 } }, + { "&rppolint;", { 226, 168, 146, 0 } }, + { "&rrarr;", { 226, 135, 137, 0 } }, + { "&rsaquo;", { 226, 128, 186, 0 } }, + { "&rscr;", { 240, 157, 147, 135, 0 } }, + { "&rsh;", { 226, 134, 177, 0 } }, + { "&rsqb;", { 93, 0 } }, + { "&rsquo;", { 226, 128, 153, 0 } }, + { "&rsquor;", { 226, 128, 153, 0 } }, + { "&rthree;", { 226, 139, 140, 0 } }, + { "&rtimes;", { 226, 139, 138, 0 } }, + { "&rtri;", { 226, 150, 185, 0 } }, + { "&rtrie;", { 226, 138, 181, 0 } }, + { "&rtrif;", { 226, 150, 184, 0 } }, + { "&rtriltri;", { 226, 167, 142, 0 } }, + { "&ruluhar;", { 226, 165, 168, 0 } }, + { "&rx;", { 226, 132, 158, 0 } }, + { "&sacute;", { 197, 155, 0 } }, + { "&sbquo;", { 226, 128, 154, 0 } }, + { "&sc;", { 226, 137, 187, 0 } }, + { "&scE;", { 226, 170, 180, 0 } }, + { "&scap;", { 226, 170, 184, 0 } }, + { "&scaron;", { 197, 161, 0 } }, + { "&sccue;", { 226, 137, 189, 0 } }, + { "&sce;", { 226, 170, 176, 0 } }, + { "&scedil;", { 197, 159, 0 } }, + { "&scirc;", { 197, 157, 0 } }, + { "&scnE;", { 226, 170, 182, 0 } }, + { "&scnap;", { 226, 170, 186, 0 } }, + { "&scnsim;", { 226, 139, 169, 0 } }, + { "&scpolint;", { 226, 168, 147, 0 } }, + { "&scsim;", { 226, 137, 191, 0 } }, + { "&scy;", { 209, 129, 0 } }, + { "&sdot;", { 226, 139, 133, 0 } }, + { "&sdotb;", { 226, 138, 161, 0 } }, + { "&sdote;", { 226, 169, 166, 0 } }, + { "&seArr;", { 226, 135, 152, 0 } }, + { "&searhk;", { 226, 164, 165, 0 } }, + { "&searr;", { 226, 134, 152, 0 } }, + { "&searrow;", { 226, 134, 152, 0 } }, + { "&sect;", { 194, 167, 0 } }, + { "&semi;", { 59, 0 } }, + { "&seswar;", { 226, 164, 169, 0 } }, + { "&setminus;", { 226, 136, 150, 0 } }, + { "&setmn;", { 226, 136, 150, 0 } }, + { "&sext;", { 226, 156, 182, 0 } }, + { "&sfr;", { 240, 157, 148, 176, 0 } }, + { "&sfrown;", { 226, 140, 162, 0 } }, + { "&sharp;", { 226, 153, 175, 0 } }, + { "&shchcy;", { 209, 137, 0 } }, + { "&shcy;", { 209, 136, 0 } }, + { "&shortmid;", { 226, 136, 163, 0 } }, + { "&shortparallel;", { 226, 136, 165, 0 } }, + { "&shy;", { 194, 173, 0 } }, + { "&sigma;", { 207, 131, 0 } }, + { "&sigmaf;", { 207, 130, 0 } }, + { "&sigmav;", { 207, 130, 0 } }, + { "&sim;", { 226, 136, 188, 0 } }, + { "&simdot;", { 226, 169, 170, 0 } }, + { "&sime;", { 226, 137, 131, 0 } }, + { "&simeq;", { 226, 137, 131, 0 } }, + { "&simg;", { 226, 170, 158, 0 } }, + { "&simgE;", { 226, 170, 160, 0 } }, + { "&siml;", { 226, 170, 157, 0 } }, + { "&simlE;", { 226, 170, 159, 0 } }, + { "&simne;", { 226, 137, 134, 0 } }, + { "&simplus;", { 226, 168, 164, 0 } }, + { "&simrarr;", { 226, 165, 178, 0 } }, + { "&slarr;", { 226, 134, 144, 0 } }, + { "&smallsetminus;", { 226, 136, 150, 0 } }, + { "&smashp;", { 226, 168, 179, 0 } }, + { "&smeparsl;", { 226, 167, 164, 0 } }, + { "&smid;", { 226, 136, 163, 0 } }, + { "&smile;", { 226, 140, 163, 0 } }, + { "&smt;", { 226, 170, 170, 0 } }, + { "&smte;", { 226, 170, 172, 0 } }, + { "&smtes;", { 226, 170, 172, 239, 184, 128, 0 } }, + { "&softcy;", { 209, 140, 0 } }, + { "&sol;", { 47, 0 } }, + { "&solb;", { 226, 167, 132, 0 } }, + { "&solbar;", { 226, 140, 191, 0 } }, + { "&sopf;", { 240, 157, 149, 164, 0 } }, + { "&spades;", { 226, 153, 160, 0 } }, + { "&spadesuit;", { 226, 153, 160, 0 } }, + { "&spar;", { 226, 136, 165, 0 } }, + { "&sqcap;", { 226, 138, 147, 0 } }, + { "&sqcaps;", { 226, 138, 147, 239, 184, 128, 0 } }, + { "&sqcup;", { 226, 138, 148, 0 } }, + { "&sqcups;", { 226, 138, 148, 239, 184, 128, 0 } }, + { "&sqsub;", { 226, 138, 143, 0 } }, + { "&sqsube;", { 226, 138, 145, 0 } }, + { "&sqsubset;", { 226, 138, 143, 0 } }, + { "&sqsubseteq;", { 226, 138, 145, 0 } }, + { "&sqsup;", { 226, 138, 144, 0 } }, + { "&sqsupe;", { 226, 138, 146, 0 } }, + { "&sqsupset;", { 226, 138, 144, 0 } }, + { "&sqsupseteq;", { 226, 138, 146, 0 } }, + { "&squ;", { 226, 150, 161, 0 } }, + { "&square;", { 226, 150, 161, 0 } }, + { "&squarf;", { 226, 150, 170, 0 } }, + { "&squf;", { 226, 150, 170, 0 } }, + { "&srarr;", { 226, 134, 146, 0 } }, + { "&sscr;", { 240, 157, 147, 136, 0 } }, + { "&ssetmn;", { 226, 136, 150, 0 } }, + { "&ssmile;", { 226, 140, 163, 0 } }, + { "&sstarf;", { 226, 139, 134, 0 } }, + { "&star;", { 226, 152, 134, 0 } }, + { "&starf;", { 226, 152, 133, 0 } }, + { "&straightepsilon;", { 207, 181, 0 } }, + { "&straightphi;", { 207, 149, 0 } }, + { "&strns;", { 194, 175, 0 } }, + { "&sub;", { 226, 138, 130, 0 } }, + { "&subE;", { 226, 171, 133, 0 } }, + { "&subdot;", { 226, 170, 189, 0 } }, + { "&sube;", { 226, 138, 134, 0 } }, + { "&subedot;", { 226, 171, 131, 0 } }, + { "&submult;", { 226, 171, 129, 0 } }, + { "&subnE;", { 226, 171, 139, 0 } }, + { "&subne;", { 226, 138, 138, 0 } }, + { "&subplus;", { 226, 170, 191, 0 } }, + { "&subrarr;", { 226, 165, 185, 0 } }, + { "&subset;", { 226, 138, 130, 0 } }, + { "&subseteq;", { 226, 138, 134, 0 } }, + { "&subseteqq;", { 226, 171, 133, 0 } }, + { "&subsetneq;", { 226, 138, 138, 0 } }, + { "&subsetneqq;", { 226, 171, 139, 0 } }, + { "&subsim;", { 226, 171, 135, 0 } }, + { "&subsub;", { 226, 171, 149, 0 } }, + { "&subsup;", { 226, 171, 147, 0 } }, + { "&succ;", { 226, 137, 187, 0 } }, + { "&succapprox;", { 226, 170, 184, 0 } }, + { "&succcurlyeq;", { 226, 137, 189, 0 } }, + { "&succeq;", { 226, 170, 176, 0 } }, + { "&succnapprox;", { 226, 170, 186, 0 } }, + { "&succneqq;", { 226, 170, 182, 0 } }, + { "&succnsim;", { 226, 139, 169, 0 } }, + { "&succsim;", { 226, 137, 191, 0 } }, + { "&sum;", { 226, 136, 145, 0 } }, + { "&sung;", { 226, 153, 170, 0 } }, + { "&sup;", { 226, 138, 131, 0 } }, + { "&sup1;", { 194, 185, 0 } }, + { "&sup2;", { 194, 178, 0 } }, + { "&sup3;", { 194, 179, 0 } }, + { "&supE;", { 226, 171, 134, 0 } }, + { "&supdot;", { 226, 170, 190, 0 } }, + { "&supdsub;", { 226, 171, 152, 0 } }, + { "&supe;", { 226, 138, 135, 0 } }, + { "&supedot;", { 226, 171, 132, 0 } }, + { "&suphsol;", { 226, 159, 137, 0 } }, + { "&suphsub;", { 226, 171, 151, 0 } }, + { "&suplarr;", { 226, 165, 187, 0 } }, + { "&supmult;", { 226, 171, 130, 0 } }, + { "&supnE;", { 226, 171, 140, 0 } }, + { "&supne;", { 226, 138, 139, 0 } }, + { "&supplus;", { 226, 171, 128, 0 } }, + { "&supset;", { 226, 138, 131, 0 } }, + { "&supseteq;", { 226, 138, 135, 0 } }, + { "&supseteqq;", { 226, 171, 134, 0 } }, + { "&supsetneq;", { 226, 138, 139, 0 } }, + { "&supsetneqq;", { 226, 171, 140, 0 } }, + { "&supsim;", { 226, 171, 136, 0 } }, + { "&supsub;", { 226, 171, 148, 0 } }, + { "&supsup;", { 226, 171, 150, 0 } }, + { "&swArr;", { 226, 135, 153, 0 } }, + { "&swarhk;", { 226, 164, 166, 0 } }, + { "&swarr;", { 226, 134, 153, 0 } }, + { "&swarrow;", { 226, 134, 153, 0 } }, + { "&swnwar;", { 226, 164, 170, 0 } }, + { "&szlig;", { 195, 159, 0 } }, + { "&target;", { 226, 140, 150, 0 } }, + { "&tau;", { 207, 132, 0 } }, + { "&tbrk;", { 226, 142, 180, 0 } }, + { "&tcaron;", { 197, 165, 0 } }, + { "&tcedil;", { 197, 163, 0 } }, + { "&tcy;", { 209, 130, 0 } }, + { "&tdot;", { 226, 131, 155, 0 } }, + { "&telrec;", { 226, 140, 149, 0 } }, + { "&tfr;", { 240, 157, 148, 177, 0 } }, + { "&there4;", { 226, 136, 180, 0 } }, + { "&therefore;", { 226, 136, 180, 0 } }, + { "&theta;", { 206, 184, 0 } }, + { "&thetasym;", { 207, 145, 0 } }, + { "&thetav;", { 207, 145, 0 } }, + { "&thickapprox;", { 226, 137, 136, 0 } }, + { "&thicksim;", { 226, 136, 188, 0 } }, + { "&thinsp;", { 226, 128, 137, 0 } }, + { "&thkap;", { 226, 137, 136, 0 } }, + { "&thksim;", { 226, 136, 188, 0 } }, + { "&thorn;", { 195, 190, 0 } }, + { "&tilde;", { 203, 156, 0 } }, + { "&times;", { 195, 151, 0 } }, + { "&timesb;", { 226, 138, 160, 0 } }, + { "&timesbar;", { 226, 168, 177, 0 } }, + { "&timesd;", { 226, 168, 176, 0 } }, + { "&tint;", { 226, 136, 173, 0 } }, + { "&toea;", { 226, 164, 168, 0 } }, + { "&top;", { 226, 138, 164, 0 } }, + { "&topbot;", { 226, 140, 182, 0 } }, + { "&topcir;", { 226, 171, 177, 0 } }, + { "&topf;", { 240, 157, 149, 165, 0 } }, + { "&topfork;", { 226, 171, 154, 0 } }, + { "&tosa;", { 226, 164, 169, 0 } }, + { "&tprime;", { 226, 128, 180, 0 } }, + { "&trade;", { 226, 132, 162, 0 } }, + { "&triangle;", { 226, 150, 181, 0 } }, + { "&triangledown;", { 226, 150, 191, 0 } }, + { "&triangleleft;", { 226, 151, 131, 0 } }, + { "&trianglelefteq;", { 226, 138, 180, 0 } }, + { "&triangleq;", { 226, 137, 156, 0 } }, + { "&triangleright;", { 226, 150, 185, 0 } }, + { "&trianglerighteq;", { 226, 138, 181, 0 } }, + { "&tridot;", { 226, 151, 172, 0 } }, + { "&trie;", { 226, 137, 156, 0 } }, + { "&triminus;", { 226, 168, 186, 0 } }, + { "&triplus;", { 226, 168, 185, 0 } }, + { "&trisb;", { 226, 167, 141, 0 } }, + { "&tritime;", { 226, 168, 187, 0 } }, + { "&trpezium;", { 226, 143, 162, 0 } }, + { "&tscr;", { 240, 157, 147, 137, 0 } }, + { "&tscy;", { 209, 134, 0 } }, + { "&tshcy;", { 209, 155, 0 } }, + { "&tstrok;", { 197, 167, 0 } }, + { "&twixt;", { 226, 137, 172, 0 } }, + { "&twoheadleftarrow;", { 226, 134, 158, 0 } }, + { "&twoheadrightarrow;", { 226, 134, 160, 0 } }, + { "&uArr;", { 226, 135, 145, 0 } }, + { "&uHar;", { 226, 165, 163, 0 } }, + { "&uacute;", { 195, 186, 0 } }, + { "&uarr;", { 226, 134, 145, 0 } }, + { "&ubrcy;", { 209, 158, 0 } }, + { "&ubreve;", { 197, 173, 0 } }, + { "&ucirc;", { 195, 187, 0 } }, + { "&ucy;", { 209, 131, 0 } }, + { "&udarr;", { 226, 135, 133, 0 } }, + { "&udblac;", { 197, 177, 0 } }, + { "&udhar;", { 226, 165, 174, 0 } }, + { "&ufisht;", { 226, 165, 190, 0 } }, + { "&ufr;", { 240, 157, 148, 178, 0 } }, + { "&ugrave;", { 195, 185, 0 } }, + { "&uharl;", { 226, 134, 191, 0 } }, + { "&uharr;", { 226, 134, 190, 0 } }, + { "&uhblk;", { 226, 150, 128, 0 } }, + { "&ulcorn;", { 226, 140, 156, 0 } }, + { "&ulcorner;", { 226, 140, 156, 0 } }, + { "&ulcrop;", { 226, 140, 143, 0 } }, + { "&ultri;", { 226, 151, 184, 0 } }, + { "&umacr;", { 197, 171, 0 } }, + { "&uml;", { 194, 168, 0 } }, + { "&uogon;", { 197, 179, 0 } }, + { "&uopf;", { 240, 157, 149, 166, 0 } }, + { "&uparrow;", { 226, 134, 145, 0 } }, + { "&updownarrow;", { 226, 134, 149, 0 } }, + { "&upharpoonleft;", { 226, 134, 191, 0 } }, + { "&upharpoonright;", { 226, 134, 190, 0 } }, + { "&uplus;", { 226, 138, 142, 0 } }, + { "&upsi;", { 207, 133, 0 } }, + { "&upsih;", { 207, 146, 0 } }, + { "&upsilon;", { 207, 133, 0 } }, + { "&upuparrows;", { 226, 135, 136, 0 } }, + { "&urcorn;", { 226, 140, 157, 0 } }, + { "&urcorner;", { 226, 140, 157, 0 } }, + { "&urcrop;", { 226, 140, 142, 0 } }, + { "&uring;", { 197, 175, 0 } }, + { "&urtri;", { 226, 151, 185, 0 } }, + { "&uscr;", { 240, 157, 147, 138, 0 } }, + { "&utdot;", { 226, 139, 176, 0 } }, + { "&utilde;", { 197, 169, 0 } }, + { "&utri;", { 226, 150, 181, 0 } }, + { "&utrif;", { 226, 150, 180, 0 } }, + { "&uuarr;", { 226, 135, 136, 0 } }, + { "&uuml;", { 195, 188, 0 } }, + { "&uwangle;", { 226, 166, 167, 0 } }, + { "&vArr;", { 226, 135, 149, 0 } }, + { "&vBar;", { 226, 171, 168, 0 } }, + { "&vBarv;", { 226, 171, 169, 0 } }, + { "&vDash;", { 226, 138, 168, 0 } }, + { "&vangrt;", { 226, 166, 156, 0 } }, + { "&varepsilon;", { 207, 181, 0 } }, + { "&varkappa;", { 207, 176, 0 } }, + { "&varnothing;", { 226, 136, 133, 0 } }, + { "&varphi;", { 207, 149, 0 } }, + { "&varpi;", { 207, 150, 0 } }, + { "&varpropto;", { 226, 136, 157, 0 } }, + { "&varr;", { 226, 134, 149, 0 } }, + { "&varrho;", { 207, 177, 0 } }, + { "&varsigma;", { 207, 130, 0 } }, + { "&varsubsetneq;", { 226, 138, 138, 239, 184, 128, 0 } }, + { "&varsubsetneqq;", { 226, 171, 139, 239, 184, 128, 0 } }, + { "&varsupsetneq;", { 226, 138, 139, 239, 184, 128, 0 } }, + { "&varsupsetneqq;", { 226, 171, 140, 239, 184, 128, 0 } }, + { "&vartheta;", { 207, 145, 0 } }, + { "&vartriangleleft;", { 226, 138, 178, 0 } }, + { "&vartriangleright;", { 226, 138, 179, 0 } }, + { "&vcy;", { 208, 178, 0 } }, + { "&vdash;", { 226, 138, 162, 0 } }, + { "&vee;", { 226, 136, 168, 0 } }, + { "&veebar;", { 226, 138, 187, 0 } }, + { "&veeeq;", { 226, 137, 154, 0 } }, + { "&vellip;", { 226, 139, 174, 0 } }, + { "&verbar;", { 124, 0 } }, + { "&vert;", { 124, 0 } }, + { "&vfr;", { 240, 157, 148, 179, 0 } }, + { "&vltri;", { 226, 138, 178, 0 } }, + { "&vnsub;", { 226, 138, 130, 226, 131, 146, 0 } }, + { "&vnsup;", { 226, 138, 131, 226, 131, 146, 0 } }, + { "&vopf;", { 240, 157, 149, 167, 0 } }, + { "&vprop;", { 226, 136, 157, 0 } }, + { "&vrtri;", { 226, 138, 179, 0 } }, + { "&vscr;", { 240, 157, 147, 139, 0 } }, + { "&vsubnE;", { 226, 171, 139, 239, 184, 128, 0 } }, + { "&vsubne;", { 226, 138, 138, 239, 184, 128, 0 } }, + { "&vsupnE;", { 226, 171, 140, 239, 184, 128, 0 } }, + { "&vsupne;", { 226, 138, 139, 239, 184, 128, 0 } }, + { "&vzigzag;", { 226, 166, 154, 0 } }, + { "&wcirc;", { 197, 181, 0 } }, + { "&wedbar;", { 226, 169, 159, 0 } }, + { "&wedge;", { 226, 136, 167, 0 } }, + { "&wedgeq;", { 226, 137, 153, 0 } }, + { "&weierp;", { 226, 132, 152, 0 } }, + { "&wfr;", { 240, 157, 148, 180, 0 } }, + { "&wopf;", { 240, 157, 149, 168, 0 } }, + { "&wp;", { 226, 132, 152, 0 } }, + { "&wr;", { 226, 137, 128, 0 } }, + { "&wreath;", { 226, 137, 128, 0 } }, + { "&wscr;", { 240, 157, 147, 140, 0 } }, + { "&xcap;", { 226, 139, 130, 0 } }, + { "&xcirc;", { 226, 151, 175, 0 } }, + { "&xcup;", { 226, 139, 131, 0 } }, + { "&xdtri;", { 226, 150, 189, 0 } }, + { "&xfr;", { 240, 157, 148, 181, 0 } }, + { "&xhArr;", { 226, 159, 186, 0 } }, + { "&xharr;", { 226, 159, 183, 0 } }, + { "&xi;", { 206, 190, 0 } }, + { "&xlArr;", { 226, 159, 184, 0 } }, + { "&xlarr;", { 226, 159, 181, 0 } }, + { "&xmap;", { 226, 159, 188, 0 } }, + { "&xnis;", { 226, 139, 187, 0 } }, + { "&xodot;", { 226, 168, 128, 0 } }, + { "&xopf;", { 240, 157, 149, 169, 0 } }, + { "&xoplus;", { 226, 168, 129, 0 } }, + { "&xotime;", { 226, 168, 130, 0 } }, + { "&xrArr;", { 226, 159, 185, 0 } }, + { "&xrarr;", { 226, 159, 182, 0 } }, + { "&xscr;", { 240, 157, 147, 141, 0 } }, + { "&xsqcup;", { 226, 168, 134, 0 } }, + { "&xuplus;", { 226, 168, 132, 0 } }, + { "&xutri;", { 226, 150, 179, 0 } }, + { "&xvee;", { 226, 139, 129, 0 } }, + { "&xwedge;", { 226, 139, 128, 0 } }, + { "&yacute;", { 195, 189, 0 } }, + { "&yacy;", { 209, 143, 0 } }, + { "&ycirc;", { 197, 183, 0 } }, + { "&ycy;", { 209, 139, 0 } }, + { "&yen;", { 194, 165, 0 } }, + { "&yfr;", { 240, 157, 148, 182, 0 } }, + { "&yicy;", { 209, 151, 0 } }, + { "&yopf;", { 240, 157, 149, 170, 0 } }, + { "&yscr;", { 240, 157, 147, 142, 0 } }, + { "&yucy;", { 209, 142, 0 } }, + { "&yuml;", { 195, 191, 0 } }, + { "&zacute;", { 197, 186, 0 } }, + { "&zcaron;", { 197, 190, 0 } }, + { "&zcy;", { 208, 183, 0 } }, + { "&zdot;", { 197, 188, 0 } }, + { "&zeetrf;", { 226, 132, 168, 0 } }, + { "&zeta;", { 206, 182, 0 } }, + { "&zfr;", { 240, 157, 148, 183, 0 } }, + { "&zhcy;", { 208, 182, 0 } }, + { "&zigrarr;", { 226, 135, 157, 0 } }, + { "&zopf;", { 240, 157, 149, 171, 0 } }, + { "&zscr;", { 240, 157, 147, 143, 0 } }, + { "&zwj;", { 226, 128, 141, 0 } }, + { "&zwnj;", { 226, 128, 140, 0 } } +}; + + +struct entity_key { + const char* verbatim; + size_t verbatim_size; +}; + + +static int +entity_cmp(const void* p_key, const void* p_entity) +{ + struct entity_key* key = (struct entity_key*) p_key; + struct entity* ent = (struct entity*) p_entity; + + return strncmp(key->verbatim, ent->verbatim, key->verbatim_size); +} + +const char* +entity_lookup(const char* verbatim, size_t verbatim_size) +{ + struct entity_key key = { verbatim, verbatim_size }; + struct entity* ent; + + ent = bsearch(&key, entity_table, sizeof(entity_table) / sizeof(entity_table[0]), + sizeof(struct entity), entity_cmp); + + if(ent == NULL) + return NULL; + + return (const char*) ent->utf8_bytes; +} diff --git a/md2html/entity.h b/md2html/entity.h @@ -0,0 +1,35 @@ +/* + * MD4C: Markdown parser for C + * (http://github.com/mity/md4c) + * + * Copyright (c) 2016 Martin Mitas + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#ifndef MD2HTML_ENTITY_H +#define MD2HTML_ENTITY_H + +#include <stdlib.h> + + +const char* entity_lookup(const char* verbatim, size_t verbatim_size); + + +#endif /* MD2HTML_ENTITY_H */ diff --git a/md2html/md2html.c b/md2html/md2html.c @@ -31,6 +31,14 @@ #include "md4c.h" #include "cmdline.h" +#include "entity.h" + + +/* Global options. */ +static unsigned renderer_flags = 0; +static int want_fullhtml = 0; +static int want_stat = 0; +static int want_verbatim_entities = 0; /********************************* @@ -121,9 +129,10 @@ membuf_append_escaped(struct membuffer* buf, const char* data, MD_SIZE size) } } -/************************************** - *** HTML renderer implementation *** - **************************************/ + +/***************************************** + *** HTML rendering helper functions *** + *****************************************/ static void open_code_block(struct membuffer* out, const MD_BLOCK_CODE_DETAIL* det) @@ -140,6 +149,95 @@ open_code_block(struct membuffer* out, const MD_BLOCK_CODE_DETAIL* det) MEMBUF_APPEND_LITERAL(out, ">"); } +static unsigned +hex_val(char ch) +{ + if('0' <= ch && ch <= '9') + return ch - '0'; + if('A' <= ch && ch <= 'Z') + return ch - 'A' + 10; + else + return ch - 'a' + 10; +} + +static void +render_utf8_codepoint(struct membuffer* out, unsigned codepoint) +{ + unsigned char utf8[4]; + size_t n; + + if(codepoint <= 0x7f) { + n = 1; + utf8[0] = codepoint; + } else if(codepoint <= 0x7ff) { + n = 2; + utf8[0] = 0xc0 | ((codepoint >> 6) & 0x1f); + utf8[1] = 0x80 + ((codepoint >> 0) & 0x3f); + } else if(codepoint <= 0xffff) { + n = 3; + utf8[0] = 0xe0 | ((codepoint >> 12) & 0xf); + utf8[1] = 0x80 + ((codepoint >> 6) & 0x3f); + utf8[2] = 0x80 + ((codepoint >> 0) & 0x3f); + } else { + n = 4; + utf8[0] = 0xf0 | ((codepoint >> 18) & 0x7); + utf8[1] = 0x80 + ((codepoint >> 12) & 0x3f); + utf8[2] = 0x80 + ((codepoint >> 6) & 0x3f); + utf8[3] = 0x80 + ((codepoint >> 0) & 0x3f); + } + + membuf_append_escaped(out, (char*)utf8, n); +} + +/* Translate entity to its UTF-8 equivalent, or output the verbatim one + * if such entity is unknown (or if the translation is disabled). */ +static void +render_entity(struct membuffer* out, const MD_CHAR* text, MD_SIZE size) +{ + if(want_verbatim_entities) { + membuf_append(out, text, size); + return; + } + + /* We assume UTF-8 output is what is desired. */ + if(size > 3 && text[1] == '#') { + unsigned codepoint = 0; + + if(text[2] == 'x' || text[2] == 'X') { + /* Hexadecimal entity (e.g. "&#x1234abcd;")). */ + int i; + for(i = 3; i < size-1; i++) + codepoint = 16 * codepoint + hex_val(text[i]); + } else { + /* Decimal entity (e.g. "&1234;") */ + int i; + for(i = 2; i < size-1; i++) + codepoint = 10 * codepoint + (text[i] - '0'); + } + + if(codepoint <= 0x10ffff) { /* Max. Unicode codepoint. */ + render_utf8_codepoint(out, codepoint); + return; + } + } else { + /* Named entity (e.g. "&nbsp;". */ + const char* ent; + + ent = entity_lookup(text, size); + if(ent != NULL) { + membuf_append_escaped(out, ent, strlen(ent)); + return; + } + } + + membuf_append_escaped(out, text, size); +} + + +/************************************** + *** HTML renderer implementation *** + **************************************/ + static int enter_block_callback(MD_BLOCKTYPE type, void* detail, void* userdata) { @@ -208,10 +306,11 @@ text_callback(MD_TEXTTYPE type, const MD_CHAR* text, MD_SIZE size, void* userdat struct membuffer* out = (struct membuffer*) userdata; switch(type) { - case MD_TEXT_BR: MEMBUF_APPEND_LITERAL(out, "<br>\n"); break; - case MD_TEXT_SOFTBR: MEMBUF_APPEND_LITERAL(out, "\n"); break; - case MD_TEXT_HTML: membuf_append(out, text, size); break; - default: membuf_append_escaped(out, text, size); break; + case MD_TEXT_BR: MEMBUF_APPEND_LITERAL(out, "<br>\n"); break; + case MD_TEXT_SOFTBR: MEMBUF_APPEND_LITERAL(out, "\n"); break; + case MD_TEXT_HTML: membuf_append(out, text, size); break; + case MD_TEXT_ENTITY: render_entity(out, text, size); break; + default: membuf_append_escaped(out, text, size); break; } return 0; @@ -229,7 +328,7 @@ debug_log_callback(const char* msg, void* userdata) **********************/ static int -process_file(FILE* in, FILE* out, unsigned flags, int fullhtml, int print_stat) +process_file(FILE* in, FILE* out) { MD_RENDERER renderer = { enter_block_callback, @@ -238,7 +337,7 @@ process_file(FILE* in, FILE* out, unsigned flags, int fullhtml, int print_stat) leave_span_callback, text_callback, debug_log_callback, - flags + renderer_flags }; MD_SIZE n; @@ -275,7 +374,7 @@ process_file(FILE* in, FILE* out, unsigned flags, int fullhtml, int print_stat) } /* Write down the document in the HTML format. */ - if(fullhtml) { + if(want_fullhtml) { fprintf(out, "<html>\n"); fprintf(out, "<head>\n"); fprintf(out, "<title></title>\n"); @@ -286,12 +385,12 @@ process_file(FILE* in, FILE* out, unsigned flags, int fullhtml, int print_stat) fwrite(buf_out.data, 1, buf_out.size, out); - if(fullhtml) { + if(want_fullhtml) { fprintf(out, "</body>\n"); fprintf(out, "</html>\n"); } - if(print_stat) { + if(want_stat) { if(t0 != (clock_t)-1 && t1 != (clock_t)-1) { double elapsed = (double)(t1 - t0) / CLOCKS_PER_SEC; if (elapsed < 1) @@ -321,6 +420,7 @@ static const option cmdline_options[] = { { "full-html", 'f', 'f', OPTION_ARG_NONE }, { "stat", 's', 's', OPTION_ARG_NONE }, { "help", 'h', 'h', OPTION_ARG_NONE }, + { "fverbatim-entities", 0, 'E', OPTION_ARG_NONE }, { "fpermissive-atx-headers", 0, 'A', OPTION_ARG_NONE }, { "fno-indented-code", 0, 'I', OPTION_ARG_NONE }, { "fno-html-blocks", 0, 'H', OPTION_ARG_NONE }, @@ -341,6 +441,7 @@ usage(void) " -h, --help display this help and exit\n" "\n" "Markdown dialect options:\n" + " --fverbatim-entities do not translate entities\n" " --fpermissive-atx-headers allow ATX headers without delimiting space\n" " --fno-indented-code disable indented code blocks\n" " --fno-html-blocks disable raw HTML blocks\n" @@ -349,9 +450,6 @@ usage(void) static const char* input_path = NULL; static const char* output_path = NULL; -static unsigned renderer_flags = 0; -static int want_fullhtml = 0; -static int want_stat = 0; static int cmdline_callback(int opt, char const* value, void* data) @@ -371,6 +469,7 @@ cmdline_callback(int opt, char const* value, void* data) case 's': want_stat = 1; break; case 'h': usage(); exit(0); break; + case 'E': want_verbatim_entities = 1; break; case 'A': renderer_flags |= MD_FLAG_PERMISSIVEATXHEADERS; break; case 'I': renderer_flags |= MD_FLAG_NOINDENTEDCODEBLOCKS; break; case 'H': renderer_flags |= MD_FLAG_NOHTMLBLOCKS; break; @@ -412,7 +511,7 @@ main(int argc, char** argv) } } - ret = process_file(in, out, renderer_flags, want_fullhtml, want_stat); + ret = process_file(in, out); if(in != stdin) fclose(in); if(out != stdout) diff --git a/md4c/md4c.c b/md4c/md4c.c @@ -193,7 +193,7 @@ md_log(MD_CTX* ctx, const char* fmt, ...) #define ISLOWER_(ch) (_T('a') <= (ch) && (ch) <= _T('z')) #define ISALPHA_(ch) (ISUPPER_(ch) || ISLOWER_(ch)) #define ISDIGIT_(ch) (_T('0') <= (ch) && (ch) <= _T('9')) -#define ISXDIGIT_(ch) (ISDIGIT_(ch) || (_T('a') < (ch) && (ch) <= _T('f')) || (_T('A') < (ch) && (ch) <= _T('F'))) +#define ISXDIGIT_(ch) (ISDIGIT_(ch) || (_T('a') <= (ch) && (ch) <= _T('f')) || (_T('A') <= (ch) && (ch) <= _T('F'))) #define ISALNUM_(ch) (ISALPHA_(ch) || ISDIGIT_(ch)) #define ISANYOF_(ch, palette) (md_strchr((palette), (ch)) != NULL) @@ -307,6 +307,8 @@ md_str_case_eq(const CHAR* s1, const CHAR* s2, SZ n) * * '\\': Maybe escape sequence. * '`': Maybe code span start/end. + * '&': Maybe start of entity. + * ';': Maybe end of entity. * * Note that not all instances of these chars in the text imply creation of the * structure. Only those which have (or may have, after we see more context) @@ -437,6 +439,23 @@ md_collect_marks(MD_CTX* ctx, const MD_LINE* lines, int n_lines) continue; } + /* A potential entity start. */ + if(ch == _T('&')) { + PUSH(ch, off, off+1, MD_MARK_OPENER); + off++; + continue; + } + + /* A potential entity end. */ + if(ch == _T(';')) { + /* We surely cannot be entity unless previous mark is '&'. */ + if(ctx->n_marks > 0 && ctx->marks[ctx->n_marks-1].ch == _T('&')) { + PUSH(ch, off, off+1, MD_MARK_CLOSER); + off++; + continue; + } + } + off++; } } @@ -452,13 +471,8 @@ abort: } -/* Table of precedence of various span types. */ -static const CHAR* md_precedence_table[] = { - _T("`"), /* Code spans. */ - _T("\\") /* Backslash escapes. */ -}; - - +/* Analyze whether the backtick is really start/end mark of a code span. + * If yes, reset all marks inside of it and setup flags of both marks. */ static void md_analyze_backtick(MD_CTX* ctx, int mark_index, int* p_unresolved_openers) { @@ -499,13 +513,84 @@ md_analyze_backtick(MD_CTX* ctx, int mark_index, int* p_unresolved_openers) opener = ctx->marks[opener].next; } - /* We didn't find any matching opener, remember it as a potential opener. */ + /* We didn't find any matching opener, remember it as a potential opener + * for subsequent '`' marks. */ if(mark->flags & MD_MARK_OPENER) { mark->next = *p_unresolved_openers; *p_unresolved_openers = mark_index; } } +/* Analyze whether the mark '&' starts a HTML entity. + * If so, update its flags as well as flags of corresponding closer ';'. */ +static void +md_analyze_entity(MD_CTX* ctx, int mark_index) +{ + MD_MARK* opener = &ctx->marks[mark_index]; + MD_MARK* closer; + OFF beg, end, off; + + /* Cannot be entity if there is no closer as the next mark. + * (Any other mark between would mean strange character which cannot be + * part of the entity. */ + if(mark_index + 1 >= ctx->n_marks) + return; + + closer = &ctx->marks[mark_index+1]; + if(closer->ch != _T(';')) + return; + + if(CH(opener->end) == _T('#')) { + if(CH(opener->end+1) == _T('x') || CH(opener->end+1) == _T('X')) { + /* It can be only a hexadecimal entity. + * Check it has 1 - 8 hexadecimal digits. */ + beg = opener->end+2; + end = closer->beg; + if(!(1 <= end - beg && end - beg <= 8)) + return; + for(off = beg; off < end; off++) { + if(!ISXDIGIT(off)) + return; + } + } else { + /* It can be only a decimal entity. + * Check it has 1 - 8 decimal digits. */ + beg = opener->end+1; + end = closer->beg; + if(!(1 <= end - beg && end - beg <= 8)) + return; + for(off = beg; off < end; off++) { + if(!ISDIGIT(off)) + return; + } + } + } else { + /* It can be only a named entity. + * Check it starts with letter and 1-47 alnum chars follow. */ + beg = opener->end; + end = closer->beg; + if(!(2 <= end - beg && end - beg <= 48)) + return; + if(!ISALPHA(beg)) + return; + for(off = beg + 1; off < end; off++) { + if(!ISALNUM(off)) + return; + } + } + + /* Mark it as an entity. We actually make a single mark from it, + * i.e. we expand the opener and leave the closer unresolved. */ + opener->end = closer->end; + opener->flags |= MD_MARK_RESOLVED; +} + +/* Table of precedence of various span types. */ +static const CHAR* md_precedence_table[] = { + _T("`"), /* Code spans. */ + _T("&") /* Entities. */ +}; + static void md_analyze_marks(MD_CTX* ctx, int precedence_level) { @@ -537,6 +622,10 @@ md_analyze_marks(MD_CTX* ctx, int precedence_level) case _T('`'): md_analyze_backtick(ctx, i, &code_span_unresolved_openers); break; + + case _T('&'): + md_analyze_entity(ctx, i); + break; } i++; @@ -607,6 +696,10 @@ md_process_inlines(MD_CTX* ctx, const MD_LINE* lines, int n_lines) text_type = MD_TEXT_NORMAL; } break; + + case _T('&'): /* Entity. */ + MD_TEXT(MD_TEXT_ENTITY, STR(mark->beg), mark->end - mark->beg); + break; } off = mark->end; diff --git a/md4c/md4c.h b/md4c/md4c.h @@ -98,6 +98,18 @@ enum MD_TEXTTYPE_tag { /* Normal text. */ MD_TEXT_NORMAL = 0, + /* Entity. + * (a) Named entity, e.g. &nbsp; + * (Note MD4C does not have a lsit of known entities. + * Anything matching the regexp /&[A-Za-z][A-Za-z0-9]{1,47};/ is + * treated as a named entity.) + * (b) Numerical entity, e.g. &#1234; + * (c) Hexadecimal entity, e.g. &#x12AB; + * + * As MD4C is encoding agnostic, application gets the verbatim entity + * text into the MD_RENDERER::text_callback(). */ + MD_TEXT_ENTITY, + /* Line breaks. * Note these are only sent within MD_BLOCK_CODE or MD_BLOCK_HTML. */ MD_TEXT_BR, /* <br> (hard break) */