diff options
author | monster <monster@ydb.tech> | 2022-07-07 14:41:37 +0300 |
---|---|---|
committer | monster <monster@ydb.tech> | 2022-07-07 14:41:37 +0300 |
commit | 06e5c21a835c0e923506c4ff27929f34e00761c2 (patch) | |
tree | 75efcbc6854ef9bd476eb8bf00cc5c900da436a2 /library/cpp/html | |
parent | 03f024c4412e3aa613bb543cf1660176320ba8f4 (diff) | |
download | ydb-06e5c21a835c0e923506c4ff27929f34e00761c2.tar.gz |
fix ya.make
Diffstat (limited to 'library/cpp/html')
-rw-r--r-- | library/cpp/html/entity/decoder.h | 17 | ||||
-rw-r--r-- | library/cpp/html/entity/decoder.rl6 | 1575 | ||||
-rw-r--r-- | library/cpp/html/entity/htmlentity.cpp | 546 | ||||
-rw-r--r-- | library/cpp/html/entity/htmlentity.h | 84 |
4 files changed, 2222 insertions, 0 deletions
diff --git a/library/cpp/html/entity/decoder.h b/library/cpp/html/entity/decoder.h new file mode 100644 index 00000000000..64bee648b9f --- /dev/null +++ b/library/cpp/html/entity/decoder.h @@ -0,0 +1,17 @@ +#pragma once + +#include <util/generic/string.h> + +struct TEntity { + size_t Len; + wchar32 Codepoint1; + wchar32 Codepoint2; +}; + +constexpr size_t MaxNamedEntityLength = 32; //CounterClockwiseContourIntegral; + +//! Find if string prefix may be considered as entity name. +//! (';' is a part of entity name) +//! @param inp - a pointer after '&'. +//! @param len - inspected string leng (may be more than simple entity). +bool DecodeNamedEntity(const unsigned char* inp, size_t len, TEntity*); diff --git a/library/cpp/html/entity/decoder.rl6 b/library/cpp/html/entity/decoder.rl6 new file mode 100644 index 00000000000..227e8ca5316 --- /dev/null +++ b/library/cpp/html/entity/decoder.rl6 @@ -0,0 +1,1575 @@ +#include <library/cpp/html/entity/decoder.h> + +#include <util/system/yassert.h> + +%%{ + machine TEntExtractor; + alphtype unsigned char; + + main := |* + ('AElig;' | 'AElig') { ent->Codepoint1 = 198; fbreak;}; + ('AMP' | 'amp' | 'AMP;' | 'amp;') { ent->Codepoint1 = 38; fbreak;}; + ('Aacute' | 'Aacute;') { ent->Codepoint1 = 193; fbreak;}; + ('Abreve;') { ent->Codepoint1 = 258; fbreak;}; + ('Acirc' | 'Acirc;') { ent->Codepoint1 = 194; fbreak;}; + ('Acy;') { ent->Codepoint1 = 1040; fbreak;}; + ('Afr;') { ent->Codepoint1 = 120068; fbreak;}; + ('Agrave;' | 'Agrave') { ent->Codepoint1 = 192; fbreak;}; + ('Alpha;') { ent->Codepoint1 = 913; fbreak;}; + ('Amacr;') { ent->Codepoint1 = 256; fbreak;}; + ('And;') { ent->Codepoint1 = 10835; fbreak;}; + ('Aogon;') { ent->Codepoint1 = 260; fbreak;}; + ('Aopf;') { ent->Codepoint1 = 120120; fbreak;}; + ('ApplyFunction;' | 'af;') { ent->Codepoint1 = 8289; fbreak;}; + ('Aring;' | 'Aring' | 'angst;') { ent->Codepoint1 = 197; fbreak;}; + ('Ascr;') { ent->Codepoint1 = 119964; fbreak;}; + ('Assign;' | 'colone;' | 'coloneq;') { ent->Codepoint1 = 8788; fbreak;}; + ('Atilde;' | 'Atilde') { ent->Codepoint1 = 195; fbreak;}; + ('Auml;' | 'Auml') { ent->Codepoint1 = 196; fbreak;}; + ('Barv;') { ent->Codepoint1 = 10983; fbreak;}; + ('Bcy;') { ent->Codepoint1 = 1041; fbreak;}; + ('Because;' | 'because;' | 'becaus;') { ent->Codepoint1 = 8757; fbreak;}; + ('Beta;') { ent->Codepoint1 = 914; fbreak;}; + ('Bfr;') { ent->Codepoint1 = 120069; fbreak;}; + ('Bopf;') { ent->Codepoint1 = 120121; fbreak;}; + ('Breve;' | 'breve;') { ent->Codepoint1 = 728; fbreak;}; + ('Bscr;' | 'bernou;' | 'Bernoullis;') { ent->Codepoint1 = 8492; fbreak;}; + ('CHcy;') { ent->Codepoint1 = 1063; fbreak;}; + ('COPY;' | 'copy;' | 'copy' | 'COPY') { ent->Codepoint1 = 169; fbreak;}; + ('Cacute;') { ent->Codepoint1 = 262; fbreak;}; + ('Cap;') { ent->Codepoint1 = 8914; fbreak;}; + ('CapitalDifferentialD;' | 'DD;') { ent->Codepoint1 = 8517; fbreak;}; + ('Cayleys;' | 'Cfr;') { ent->Codepoint1 = 8493; fbreak;}; + ('Ccaron;') { ent->Codepoint1 = 268; fbreak;}; + ('Ccedil;' | 'Ccedil') { ent->Codepoint1 = 199; fbreak;}; + ('Ccirc;') { ent->Codepoint1 = 264; fbreak;}; + ('Cconint;') { ent->Codepoint1 = 8752; fbreak;}; + ('Cdot;') { ent->Codepoint1 = 266; fbreak;}; + ('Chi;') { ent->Codepoint1 = 935; fbreak;}; + ('CircleDot;' | 'odot;') { ent->Codepoint1 = 8857; fbreak;}; + ('CircleMinus;' | 'ominus;') { ent->Codepoint1 = 8854; fbreak;}; + ('CirclePlus;' | 'oplus;') { ent->Codepoint1 = 8853; fbreak;}; + ('CircleTimes;' | 'otimes;') { ent->Codepoint1 = 8855; fbreak;}; + ('Colon;' | 'Proportion;') { ent->Codepoint1 = 8759; fbreak;}; + ('Colone;') { ent->Codepoint1 = 10868; fbreak;}; + ('Congruent;' | 'equiv;') { ent->Codepoint1 = 8801; fbreak;}; + ('Coproduct;' | 'coprod;') { ent->Codepoint1 = 8720; fbreak;}; + ('CounterClockwiseContourIntegral;' | 'awconint;') { ent->Codepoint1 = 8755; fbreak;}; + ('Cross;') { ent->Codepoint1 = 10799; fbreak;}; + ('Cscr;') { ent->Codepoint1 = 119966; fbreak;}; + ('Cup;') { ent->Codepoint1 = 8915; fbreak;}; + ('DDotrahd;') { ent->Codepoint1 = 10513; fbreak;}; + ('DJcy;') { ent->Codepoint1 = 1026; fbreak;}; + ('DScy;') { ent->Codepoint1 = 1029; fbreak;}; + ('DZcy;') { ent->Codepoint1 = 1039; fbreak;}; + ('Dagger;' | 'ddagger;') { ent->Codepoint1 = 8225; fbreak;}; + ('Darr;') { ent->Codepoint1 = 8609; fbreak;}; + ('Dashv;' | 'DoubleLeftTee;') { ent->Codepoint1 = 10980; fbreak;}; + ('Dcaron;') { ent->Codepoint1 = 270; fbreak;}; + ('Dcy;') { ent->Codepoint1 = 1044; fbreak;}; + ('Del;' | 'nabla;') { ent->Codepoint1 = 8711; fbreak;}; + ('Delta;') { ent->Codepoint1 = 916; fbreak;}; + ('Dfr;') { ent->Codepoint1 = 120071; fbreak;}; + ('DiacriticalGrave;' | 'grave;') { ent->Codepoint1 = 96; fbreak;}; + ('DiacriticalTilde;' | 'tilde;') { ent->Codepoint1 = 732; fbreak;}; + ('DifferentialD;' | 'dd;') { ent->Codepoint1 = 8518; fbreak;}; + ('Dopf;') { ent->Codepoint1 = 120123; fbreak;}; + ('DotDot;') { ent->Codepoint1 = 8412; fbreak;}; + ('DoubleContourIntegral;' | 'Conint;') { ent->Codepoint1 = 8751; fbreak;}; + ('DoubleLongRightArrow;' | 'Longrightarrow;' | 'xrArr;') { ent->Codepoint1 = 10233; fbreak;}; + ('DoubleUpArrow;' | 'uArr;' | 'Uparrow;') { ent->Codepoint1 = 8657; fbreak;}; + ('DoubleUpDownArrow;' | 'vArr;' | 'Updownarrow;') { ent->Codepoint1 = 8661; fbreak;}; + ('DoubleVerticalBar;' | 'parallel;' | 'spar;' | 'shortparallel;' | 'par;') { ent->Codepoint1 = 8741; fbreak;}; + ('DownArrowBar;') { ent->Codepoint1 = 10515; fbreak;}; + ('DownArrowUpArrow;' | 'duarr;') { ent->Codepoint1 = 8693; fbreak;}; + ('DownBreve;') { ent->Codepoint1 = 785; fbreak;}; + ('DownLeftRightVector;') { ent->Codepoint1 = 10576; fbreak;}; + ('DownLeftTeeVector;') { ent->Codepoint1 = 10590; fbreak;}; + ('DownLeftVectorBar;') { ent->Codepoint1 = 10582; fbreak;}; + ('DownRightTeeVector;') { ent->Codepoint1 = 10591; fbreak;}; + ('DownRightVector;' | 'rhard;' | 'rightharpoondown;') { ent->Codepoint1 = 8641; fbreak;}; + ('DownRightVectorBar;') { ent->Codepoint1 = 10583; fbreak;}; + ('DownTee;' | 'top;') { ent->Codepoint1 = 8868; fbreak;}; + ('Dscr;') { ent->Codepoint1 = 119967; fbreak;}; + ('Dstrok;') { ent->Codepoint1 = 272; fbreak;}; + ('ENG;') { ent->Codepoint1 = 330; fbreak;}; + ('ETH' | 'ETH;') { ent->Codepoint1 = 208; fbreak;}; + ('Eacute;' | 'Eacute') { ent->Codepoint1 = 201; fbreak;}; + ('Ecaron;') { ent->Codepoint1 = 282; fbreak;}; + ('Ecirc' | 'Ecirc;') { ent->Codepoint1 = 202; fbreak;}; + ('Ecy;') { ent->Codepoint1 = 1069; fbreak;}; + ('Edot;') { ent->Codepoint1 = 278; fbreak;}; + ('Efr;') { ent->Codepoint1 = 120072; fbreak;}; + ('Egrave;' | 'Egrave') { ent->Codepoint1 = 200; fbreak;}; + ('Emacr;') { ent->Codepoint1 = 274; fbreak;}; + ('EmptySmallSquare;') { ent->Codepoint1 = 9723; fbreak;}; + ('EmptyVerySmallSquare;') { ent->Codepoint1 = 9643; fbreak;}; + ('Eogon;') { ent->Codepoint1 = 280; fbreak;}; + ('Eopf;') { ent->Codepoint1 = 120124; fbreak;}; + ('Epsilon;') { ent->Codepoint1 = 917; fbreak;}; + ('Equal;') { ent->Codepoint1 = 10869; fbreak;}; + ('Esim;') { ent->Codepoint1 = 10867; fbreak;}; + ('Eta;') { ent->Codepoint1 = 919; fbreak;}; + ('Euml' | 'Euml;') { ent->Codepoint1 = 203; fbreak;}; + ('Exists;' | 'exist;') { ent->Codepoint1 = 8707; fbreak;}; + ('Fcy;') { ent->Codepoint1 = 1060; fbreak;}; + ('Ffr;') { ent->Codepoint1 = 120073; fbreak;}; + ('FilledSmallSquare;') { ent->Codepoint1 = 9724; fbreak;}; + ('FilledVerySmallSquare;' | 'blacksquare;' | 'squf;' | 'squarf;') { ent->Codepoint1 = 9642; fbreak;}; + ('Fopf;') { ent->Codepoint1 = 120125; fbreak;}; + ('Fouriertrf;' | 'Fscr;') { ent->Codepoint1 = 8497; fbreak;}; + ('GJcy;') { ent->Codepoint1 = 1027; fbreak;}; + ('GT;' | 'gt;' | 'gt' | 'GT') { ent->Codepoint1 = 62; fbreak;}; + ('Gamma;') { ent->Codepoint1 = 915; fbreak;}; + ('Gammad;') { ent->Codepoint1 = 988; fbreak;}; + ('Gbreve;') { ent->Codepoint1 = 286; fbreak;}; + ('Gcedil;') { ent->Codepoint1 = 290; fbreak;}; + ('Gcirc;') { ent->Codepoint1 = 284; fbreak;}; + ('Gcy;') { ent->Codepoint1 = 1043; fbreak;}; + ('Gdot;') { ent->Codepoint1 = 288; fbreak;}; + ('Gfr;') { ent->Codepoint1 = 120074; fbreak;}; + ('Gopf;') { ent->Codepoint1 = 120126; fbreak;}; + ('GreaterFullEqual;' | 'geqq;' | 'gE;') { ent->Codepoint1 = 8807; fbreak;}; + ('GreaterGreater;') { ent->Codepoint1 = 10914; fbreak;}; + ('GreaterLess;' | 'gtrless;' | 'gl;') { ent->Codepoint1 = 8823; fbreak;}; + ('GreaterSlantEqual;' | 'ges;' | 'geqslant;') { ent->Codepoint1 = 10878; fbreak;}; + ('Gscr;') { ent->Codepoint1 = 119970; fbreak;}; + ('HARDcy;') { ent->Codepoint1 = 1066; fbreak;}; + ('Hacek;' | 'caron;') { ent->Codepoint1 = 711; fbreak;}; + ('Hat;') { ent->Codepoint1 = 94; fbreak;}; + ('Hcirc;') { ent->Codepoint1 = 292; fbreak;}; + ('Hopf;' | 'quaternions;') { ent->Codepoint1 = 8461; fbreak;}; + ('HorizontalLine;' | 'boxh;') { ent->Codepoint1 = 9472; fbreak;}; + ('Hstrok;') { ent->Codepoint1 = 294; fbreak;}; + ('HumpDownHump;' | 'Bumpeq;' | 'bump;') { ent->Codepoint1 = 8782; fbreak;}; + ('IEcy;') { ent->Codepoint1 = 1045; fbreak;}; + ('IJlig;') { ent->Codepoint1 = 306; fbreak;}; + ('IOcy;') { ent->Codepoint1 = 1025; fbreak;}; + ('Iacute' | 'Iacute;') { ent->Codepoint1 = 205; fbreak;}; + ('Icirc' | 'Icirc;') { ent->Codepoint1 = 206; fbreak;}; + ('Icy;') { ent->Codepoint1 = 1048; fbreak;}; + ('Idot;') { ent->Codepoint1 = 304; fbreak;}; + ('Ifr;' | 'imagpart;' | 'Im;' | 'image;') { ent->Codepoint1 = 8465; fbreak;}; + ('Igrave;' | 'Igrave') { ent->Codepoint1 = 204; fbreak;}; + ('Imacr;') { ent->Codepoint1 = 298; fbreak;}; + ('Implies;' | 'DoubleRightArrow;' | 'rArr;' | 'Rightarrow;') { ent->Codepoint1 = 8658; fbreak;}; + ('Int;') { ent->Codepoint1 = 8748; fbreak;}; + ('Integral;' | 'int;') { ent->Codepoint1 = 8747; fbreak;}; + ('InvisibleComma;' | 'ic;') { ent->Codepoint1 = 8291; fbreak;}; + ('InvisibleTimes;' | 'it;') { ent->Codepoint1 = 8290; fbreak;}; + ('Iogon;') { ent->Codepoint1 = 302; fbreak;}; + ('Iopf;') { ent->Codepoint1 = 120128; fbreak;}; + ('Iota;') { ent->Codepoint1 = 921; fbreak;}; + ('Iscr;' | 'imagline;') { ent->Codepoint1 = 8464; fbreak;}; + ('Itilde;') { ent->Codepoint1 = 296; fbreak;}; + ('Iukcy;') { ent->Codepoint1 = 1030; fbreak;}; + ('Iuml' | 'Iuml;') { ent->Codepoint1 = 207; fbreak;}; + ('Jcirc;') { ent->Codepoint1 = 308; fbreak;}; + ('Jcy;') { ent->Codepoint1 = 1049; fbreak;}; + ('Jfr;') { ent->Codepoint1 = 120077; fbreak;}; + ('Jopf;') { ent->Codepoint1 = 120129; fbreak;}; + ('Jscr;') { ent->Codepoint1 = 119973; fbreak;}; + ('Jsercy;') { ent->Codepoint1 = 1032; fbreak;}; + ('Jukcy;') { ent->Codepoint1 = 1028; fbreak;}; + ('KHcy;') { ent->Codepoint1 = 1061; fbreak;}; + ('KJcy;') { ent->Codepoint1 = 1036; fbreak;}; + ('Kappa;') { ent->Codepoint1 = 922; fbreak;}; + ('Kcedil;') { ent->Codepoint1 = 310; fbreak;}; + ('Kcy;') { ent->Codepoint1 = 1050; fbreak;}; + ('Kfr;') { ent->Codepoint1 = 120078; fbreak;}; + ('Kopf;') { ent->Codepoint1 = 120130; fbreak;}; + ('Kscr;') { ent->Codepoint1 = 119974; fbreak;}; + ('LJcy;') { ent->Codepoint1 = 1033; fbreak;}; + ('LT;' | 'lt' | 'LT' | 'lt;') { ent->Codepoint1 = 60; fbreak;}; + ('Lacute;') { ent->Codepoint1 = 313; fbreak;}; + ('Lambda;') { ent->Codepoint1 = 923; fbreak;}; + ('Lang;') { ent->Codepoint1 = 10218; fbreak;}; + ('Larr;' | 'twoheadleftarrow;') { ent->Codepoint1 = 8606; fbreak;}; + ('Lcaron;') { ent->Codepoint1 = 317; fbreak;}; + ('Lcedil;') { ent->Codepoint1 = 315; fbreak;}; + ('Lcy;') { ent->Codepoint1 = 1051; fbreak;}; + ('LeftArrow;' | 'slarr;' | 'larr;' | 'ShortLeftArrow;' | 'leftarrow;') { ent->Codepoint1 = 8592; fbreak;}; + ('LeftArrowRightArrow;' | 'leftrightarrows;' | 'lrarr;') { ent->Codepoint1 = 8646; fbreak;}; + ('LeftDoubleBracket;' | 'lobrk;') { ent->Codepoint1 = 10214; fbreak;}; + ('LeftDownTeeVector;') { ent->Codepoint1 = 10593; fbreak;}; + ('LeftDownVector;' | 'downharpoonleft;' | 'dharl;') { ent->Codepoint1 = 8643; fbreak;}; + ('LeftDownVectorBar;') { ent->Codepoint1 = 10585; fbreak;}; + ('LeftFloor;' | 'lfloor;') { ent->Codepoint1 = 8970; fbreak;}; + ('LeftRightVector;') { ent->Codepoint1 = 10574; fbreak;}; + ('LeftTee;' | 'dashv;') { ent->Codepoint1 = 8867; fbreak;}; + ('LeftTeeArrow;' | 'mapstoleft;') { ent->Codepoint1 = 8612; fbreak;}; + ('LeftTeeVector;') { ent->Codepoint1 = 10586; fbreak;}; + ('LeftTriangle;' | 'vartriangleleft;' | 'vltri;') { ent->Codepoint1 = 8882; fbreak;}; + ('LeftTriangleBar;') { ent->Codepoint1 = 10703; fbreak;}; + ('LeftTriangleEqual;' | 'ltrie;' | 'trianglelefteq;') { ent->Codepoint1 = 8884; fbreak;}; + ('LeftUpDownVector;') { ent->Codepoint1 = 10577; fbreak;}; + ('LeftUpTeeVector;') { ent->Codepoint1 = 10592; fbreak;}; + ('LeftUpVector;' | 'upharpoonleft;' | 'uharl;') { ent->Codepoint1 = 8639; fbreak;}; + ('LeftUpVectorBar;') { ent->Codepoint1 = 10584; fbreak;}; + ('LeftVectorBar;') { ent->Codepoint1 = 10578; fbreak;}; + ('Leftarrow;' | 'lArr;' | 'DoubleLeftArrow;') { ent->Codepoint1 = 8656; fbreak;}; + ('Leftrightarrow;' | 'hArr;' | 'iff;' | 'DoubleLeftRightArrow;') { ent->Codepoint1 = 8660; fbreak;}; + ('LessFullEqual;' | 'lE;' | 'leqq;') { ent->Codepoint1 = 8806; fbreak;}; + ('LessGreater;' | 'lessgtr;' | 'lg;') { ent->Codepoint1 = 8822; fbreak;}; + ('LessLess;') { ent->Codepoint1 = 10913; fbreak;}; + ('Lfr;') { ent->Codepoint1 = 120079; fbreak;}; + ('Ll;') { ent->Codepoint1 = 8920; fbreak;}; + ('Lleftarrow;' | 'lAarr;') { ent->Codepoint1 = 8666; fbreak;}; + ('Lmidot;') { ent->Codepoint1 = 319; fbreak;}; + ('LongRightArrow;' | 'xrarr;' | 'longrightarrow;') { ent->Codepoint1 = 10230; fbreak;}; + ('Lopf;') { ent->Codepoint1 = 120131; fbreak;}; + ('LowerLeftArrow;' | 'swarrow;' | 'swarr;') { ent->Codepoint1 = 8601; fbreak;}; + ('LowerRightArrow;' | 'searr;' | 'searrow;') { ent->Codepoint1 = 8600; fbreak;}; + ('Lscr;' | 'Laplacetrf;' | 'lagran;') { ent->Codepoint1 = 8466; fbreak;}; + ('Lsh;' | 'lsh;') { ent->Codepoint1 = 8624; fbreak;}; + ('Lstrok;') { ent->Codepoint1 = 321; fbreak;}; + ('Lt;' | 'll;' | 'NestedLessLess;') { ent->Codepoint1 = 8810; fbreak;}; + ('Map;') { ent->Codepoint1 = 10501; fbreak;}; + ('Mcy;') { ent->Codepoint1 = 1052; fbreak;}; + ('MediumSpace;') { ent->Codepoint1 = 8287; fbreak;}; + ('Mfr;') { ent->Codepoint1 = 120080; fbreak;}; + ('MinusPlus;' | 'mp;' | 'mnplus;') { ent->Codepoint1 = 8723; fbreak;}; + ('Mopf;') { ent->Codepoint1 = 120132; fbreak;}; + ('Mu;') { ent->Codepoint1 = 924; fbreak;}; + ('NJcy;') { ent->Codepoint1 = 1034; fbreak;}; + ('Nacute;') { ent->Codepoint1 = 323; fbreak;}; + ('Ncaron;') { ent->Codepoint1 = 327; fbreak;}; + ('Ncedil;') { ent->Codepoint1 = 325; fbreak;}; + ('Ncy;') { ent->Codepoint1 = 1053; fbreak;}; + ('NegativeVeryThinSpace;' | 'NegativeMediumSpace;' | 'ZeroWidthSpace;' | 'NegativeThinSpace;' | 'NegativeThickSpace;') { ent->Codepoint1 = 8203; fbreak;}; + ('NewLine;') { ent->Codepoint1 = 10; fbreak;}; + ('Nfr;') { ent->Codepoint1 = 120081; fbreak;}; + ('NoBreak;') { ent->Codepoint1 = 8288; fbreak;}; + ('Nopf;' | 'naturals;') { ent->Codepoint1 = 8469; fbreak;}; + ('Not;') { ent->Codepoint1 = 10988; fbreak;}; + ('NotCupCap;') { ent->Codepoint1 = 8813; fbreak;}; + ('NotElement;' | 'notin;' | 'notinva;') { ent->Codepoint1 = 8713; fbreak;}; + ('NotEqual;' | 'ne;') { ent->Codepoint1 = 8800; fbreak;}; + ('NotExists;' | 'nexists;' | 'nexist;') { ent->Codepoint1 = 8708; fbreak;}; + ('NotLess;' | 'nlt;' | 'nless;') { ent->Codepoint1 = 8814; fbreak;}; + ('NotLessEqual;' | 'nleq;' | 'nle;') { ent->Codepoint1 = 8816; fbreak;}; + ('NotLessGreater;' | 'ntlg;') { ent->Codepoint1 = 8824; fbreak;}; + ('NotLessTilde;' | 'nlsim;') { ent->Codepoint1 = 8820; fbreak;}; + ('NotPrecedesSlantEqual;' | 'nprcue;') { ent->Codepoint1 = 8928; fbreak;}; + ('NotRightTriangle;' | 'ntriangleright;' | 'nrtri;') { ent->Codepoint1 = 8939; fbreak;}; + ('NotSquareSubsetEqual;' | 'nsqsube;') { ent->Codepoint1 = 8930; fbreak;}; + ('NotSquareSupersetEqual;' | 'nsqsupe;') { ent->Codepoint1 = 8931; fbreak;}; + ('NotSucceeds;' | 'nsc;' | 'nsucc;') { ent->Codepoint1 = 8833; fbreak;}; + ('NotSucceedsSlantEqual;' | 'nsccue;') { ent->Codepoint1 = 8929; fbreak;}; + ('NotSupersetEqual;' | 'nsupseteq;' | 'nsupe;') { ent->Codepoint1 = 8841; fbreak;}; + ('NotVerticalBar;' | 'nsmid;' | 'nshortmid;' | 'nmid;') { ent->Codepoint1 = 8740; fbreak;}; + ('Nscr;') { ent->Codepoint1 = 119977; fbreak;}; + ('Ntilde;' | 'Ntilde') { ent->Codepoint1 = 209; fbreak;}; + ('Nu;') { ent->Codepoint1 = 925; fbreak;}; + ('OElig;') { ent->Codepoint1 = 338; fbreak;}; + ('Oacute' | 'Oacute;') { ent->Codepoint1 = 211; fbreak;}; + ('Ocirc' | 'Ocirc;') { ent->Codepoint1 = 212; fbreak;}; + ('Ocy;') { ent->Codepoint1 = 1054; fbreak;}; + ('Odblac;') { ent->Codepoint1 = 336; fbreak;}; + ('Ofr;') { ent->Codepoint1 = 120082; fbreak;}; + ('Ograve' | 'Ograve;') { ent->Codepoint1 = 210; fbreak;}; + ('Omacr;') { ent->Codepoint1 = 332; fbreak;}; + ('Omega;' | 'ohm;') { ent->Codepoint1 = 937; fbreak;}; + ('Omicron;') { ent->Codepoint1 = 927; fbreak;}; + ('Oopf;') { ent->Codepoint1 = 120134; fbreak;}; + ('OpenCurlyDoubleQuote;' | 'ldquo;') { ent->Codepoint1 = 8220; fbreak;}; + ('Or;') { ent->Codepoint1 = 10836; fbreak;}; + ('Oscr;') { ent->Codepoint1 = 119978; fbreak;}; + ('Oslash' | 'Oslash;') { ent->Codepoint1 = 216; fbreak;}; + ('Otilde;' | 'Otilde') { ent->Codepoint1 = 213; fbreak;}; + ('Otimes;') { ent->Codepoint1 = 10807; fbreak;}; + ('Ouml' | 'Ouml;') { ent->Codepoint1 = 214; fbreak;}; + ('OverBar;' | 'oline;') { ent->Codepoint1 = 8254; fbreak;}; + ('OverBrace;') { ent->Codepoint1 = 9182; fbreak;}; + ('OverParenthesis;') { ent->Codepoint1 = 9180; fbreak;}; + ('Pcy;') { ent->Codepoint1 = 1055; fbreak;}; + ('Pfr;') { ent->Codepoint1 = 120083; fbreak;}; + ('Phi;') { ent->Codepoint1 = 934; fbreak;}; + ('Pi;') { ent->Codepoint1 = 928; fbreak;}; + ('Poincareplane;' | 'Hfr;') { ent->Codepoint1 = 8460; fbreak;}; + ('Pr;') { ent->Codepoint1 = 10939; fbreak;}; + ('PrecedesEqual;' | 'pre;' | 'preceq;') { ent->Codepoint1 = 10927; fbreak;}; + ('PrecedesTilde;' | 'prsim;' | 'precsim;') { ent->Codepoint1 = 8830; fbreak;}; + ('Prime;') { ent->Codepoint1 = 8243; fbreak;}; + ('Pscr;') { ent->Codepoint1 = 119979; fbreak;}; + ('Psi;') { ent->Codepoint1 = 936; fbreak;}; + ('QUOT' | 'quot' | 'quot;' | 'QUOT;') { ent->Codepoint1 = 34; fbreak;}; + ('Qfr;') { ent->Codepoint1 = 120084; fbreak;}; + ('Qopf;' | 'rationals;') { ent->Codepoint1 = 8474; fbreak;}; + ('Qscr;') { ent->Codepoint1 = 119980; fbreak;}; + ('RBarr;' | 'drbkarow;') { ent->Codepoint1 = 10512; fbreak;}; + ('Racute;') { ent->Codepoint1 = 340; fbreak;}; + ('Rang;') { ent->Codepoint1 = 10219; fbreak;}; + ('Rarrtl;') { ent->Codepoint1 = 10518; fbreak;}; + ('Rcaron;') { ent->Codepoint1 = 344; fbreak;}; + ('Rcedil;') { ent->Codepoint1 = 342; fbreak;}; + ('Rcy;') { ent->Codepoint1 = 1056; fbreak;}; + ('Re;' | 'real;' | 'realpart;' | 'Rfr;') { ent->Codepoint1 = 8476; fbreak;}; + ('ReverseUpEquilibrium;' | 'duhar;') { ent->Codepoint1 = 10607; fbreak;}; + ('Rho;') { ent->Codepoint1 = 929; fbreak;}; + ('RightAngleBracket;' | 'rangle;' | 'rang;') { ent->Codepoint1 = 10217; fbreak;}; + ('RightArrow;' | 'rarr;' | 'ShortRightArrow;' | 'rightarrow;' | 'srarr;') { ent->Codepoint1 = 8594; fbreak;}; + ('RightArrowBar;' | 'rarrb;') { ent->Codepoint1 = 8677; fbreak;}; + ('RightCeiling;' | 'rceil;') { ent->Codepoint1 = 8969; fbreak;}; + ('RightDoubleBracket;' | 'robrk;') { ent->Codepoint1 = 10215; fbreak;}; + ('RightDownTeeVector;') { ent->Codepoint1 = 10589; fbreak;}; + ('RightDownVectorBar;') { ent->Codepoint1 = 10581; fbreak;}; + ('RightFloor;' | 'rfloor;') { ent->Codepoint1 = 8971; fbreak;}; + ('RightTee;' | 'vdash;') { ent->Codepoint1 = 8866; fbreak;}; + ('RightTeeArrow;' | 'map;' | 'mapsto;') { ent->Codepoint1 = 8614; fbreak;}; + ('RightTeeVector;') { ent->Codepoint1 = 10587; fbreak;}; + ('RightTriangleBar;') { ent->Codepoint1 = 10704; fbreak;}; + ('RightUpDownVector;') { ent->Codepoint1 = 10575; fbreak;}; + ('RightUpTeeVector;') { ent->Codepoint1 = 10588; fbreak;}; + ('RightUpVectorBar;') { ent->Codepoint1 = 10580; fbreak;}; + ('RightVectorBar;') { ent->Codepoint1 = 10579; fbreak;}; + ('RoundImplies;') { ent->Codepoint1 = 10608; fbreak;}; + ('RuleDelayed;') { ent->Codepoint1 = 10740; fbreak;}; + ('SHCHcy;') { ent->Codepoint1 = 1065; fbreak;}; + ('SHcy;') { ent->Codepoint1 = 1064; fbreak;}; + ('SOFTcy;') { ent->Codepoint1 = 1068; fbreak;}; + ('Sacute;') { ent->Codepoint1 = 346; fbreak;}; + ('Sc;') { ent->Codepoint1 = 10940; fbreak;}; + ('Scaron;') { ent->Codepoint1 = 352; fbreak;}; + ('Scedil;') { ent->Codepoint1 = 350; fbreak;}; + ('Scirc;') { ent->Codepoint1 = 348; fbreak;}; + ('Scy;') { ent->Codepoint1 = 1057; fbreak;}; + ('Sfr;') { ent->Codepoint1 = 120086; fbreak;}; + ('Sigma;') { ent->Codepoint1 = 931; fbreak;}; + ('Sopf;') { ent->Codepoint1 = 120138; fbreak;}; + ('Sqrt;' | 'radic;') { ent->Codepoint1 = 8730; fbreak;}; + ('Square;' | 'square;' | 'squ;') { ent->Codepoint1 = 9633; fbreak;}; + ('SquareIntersection;' | 'sqcap;') { ent->Codepoint1 = 8851; fbreak;}; + ('SquareSubset;' | 'sqsubset;' | 'sqsub;') { ent->Codepoint1 = 8847; fbreak;}; + ('SquareSubsetEqual;' | 'sqsube;' | 'sqsubseteq;') { ent->Codepoint1 = 8849; fbreak;}; + ('SquareUnion;' | 'sqcup;') { ent->Codepoint1 = 8852; fbreak;}; + ('Sscr;') { ent->Codepoint1 = 119982; fbreak;}; + ('Star;' | 'sstarf;') { ent->Codepoint1 = 8902; fbreak;}; + ('Sub;' | 'Subset;') { ent->Codepoint1 = 8912; fbreak;}; + ('SubsetEqual;' | 'subseteq;' | 'sube;') { ent->Codepoint1 = 8838; fbreak;}; + ('Succeeds;' | 'sc;' | 'succ;') { ent->Codepoint1 = 8827; fbreak;}; + ('SucceedsEqual;' | 'succeq;' | 'sce;') { ent->Codepoint1 = 10928; fbreak;}; + ('SucceedsSlantEqual;' | 'succcurlyeq;' | 'sccue;') { ent->Codepoint1 = 8829; fbreak;}; + ('SucceedsTilde;' | 'succsim;' | 'scsim;') { ent->Codepoint1 = 8831; fbreak;}; + ('Sup;' | 'Supset;') { ent->Codepoint1 = 8913; fbreak;}; + ('SupersetEqual;' | 'supseteq;' | 'supe;') { ent->Codepoint1 = 8839; fbreak;}; + ('THORN' | 'THORN;') { ent->Codepoint1 = 222; fbreak;}; + ('TRADE;' | 'trade;') { ent->Codepoint1 = 8482; fbreak;}; + ('TSHcy;') { ent->Codepoint1 = 1035; fbreak;}; + ('TScy;') { ent->Codepoint1 = 1062; fbreak;}; + ('Tab;') { ent->Codepoint1 = 9; fbreak;}; + ('Tau;') { ent->Codepoint1 = 932; fbreak;}; + ('Tcaron;') { ent->Codepoint1 = 356; fbreak;}; + ('Tcedil;') { ent->Codepoint1 = 354; fbreak;}; + ('Tcy;') { ent->Codepoint1 = 1058; fbreak;}; + ('Tfr;') { ent->Codepoint1 = 120087; fbreak;}; + ('Therefore;' | 'there4;' | 'therefore;') { ent->Codepoint1 = 8756; fbreak;}; + ('Theta;') { ent->Codepoint1 = 920; fbreak;}; + ('TildeFullEqual;' | 'cong;') { ent->Codepoint1 = 8773; fbreak;}; + ('TildeTilde;' | 'thkap;' | 'approx;' | 'ap;' | 'asymp;' | 'thickapprox;') { ent->Codepoint1 = 8776; fbreak;}; + ('Topf;') { ent->Codepoint1 = 120139; fbreak;}; + ('Tscr;') { ent->Codepoint1 = 119983; fbreak;}; + ('Tstrok;') { ent->Codepoint1 = 358; fbreak;}; + ('Uacute' | 'Uacute;') { ent->Codepoint1 = 218; fbreak;}; + ('Uarr;') { ent->Codepoint1 = 8607; fbreak;}; + ('Uarrocir;') { ent->Codepoint1 = 10569; fbreak;}; + ('Ubrcy;') { ent->Codepoint1 = 1038; fbreak;}; + ('Ubreve;') { ent->Codepoint1 = 364; fbreak;}; + ('Ucirc' | 'Ucirc;') { ent->Codepoint1 = 219; fbreak;}; + ('Ucy;') { ent->Codepoint1 = 1059; fbreak;}; + ('Udblac;') { ent->Codepoint1 = 368; fbreak;}; + ('Ufr;') { ent->Codepoint1 = 120088; fbreak;}; + ('Ugrave' | 'Ugrave;') { ent->Codepoint1 = 217; fbreak;}; + ('Umacr;') { ent->Codepoint1 = 362; fbreak;}; + ('UnderBrace;') { ent->Codepoint1 = 9183; fbreak;}; + ('UnderBracket;' | 'bbrk;') { ent->Codepoint1 = 9141; fbreak;}; + ('UnderParenthesis;') { ent->Codepoint1 = 9181; fbreak;}; + ('Union;' | 'xcup;' | 'bigcup;') { ent->Codepoint1 = 8899; fbreak;}; + ('Uogon;') { ent->Codepoint1 = 370; fbreak;}; + ('Uopf;') { ent->Codepoint1 = 120140; fbreak;}; + ('UpArrowBar;') { ent->Codepoint1 = 10514; fbreak;}; + ('UpArrowDownArrow;' | 'udarr;') { ent->Codepoint1 = 8645; fbreak;}; + ('UpDownArrow;' | 'varr;' | 'updownarrow;') { ent->Codepoint1 = 8597; fbreak;}; + ('Upsilon;') { ent->Codepoint1 = 933; fbreak;}; + ('Uring;') { ent->Codepoint1 = 366; fbreak;}; + ('Uscr;') { ent->Codepoint1 = 119984; fbreak;}; + ('Utilde;') { ent->Codepoint1 = 360; fbreak;}; + ('Uuml;' | 'Uuml') { ent->Codepoint1 = 220; fbreak;}; + ('VDash;') { ent->Codepoint1 = 8875; fbreak;}; + ('Vbar;') { ent->Codepoint1 = 10987; fbreak;}; + ('Vcy;') { ent->Codepoint1 = 1042; fbreak;}; + ('Vdash;') { ent->Codepoint1 = 8873; fbreak;}; + ('Vdashl;') { ent->Codepoint1 = 10982; fbreak;}; + ('Vee;' | 'bigvee;' | 'xvee;') { ent->Codepoint1 = 8897; fbreak;}; + ('Verbar;' | 'Vert;') { ent->Codepoint1 = 8214; fbreak;}; + ('VerticalLine;' | 'verbar;' | 'vert;') { ent->Codepoint1 = 124; fbreak;}; + ('VerticalSeparator;') { ent->Codepoint1 = 10072; fbreak;}; + ('VerticalTilde;' | 'wreath;' | 'wr;') { ent->Codepoint1 = 8768; fbreak;}; + ('VeryThinSpace;' | 'hairsp;') { ent->Codepoint1 = 8202; fbreak;}; + ('Vfr;') { ent->Codepoint1 = 120089; fbreak;}; + ('Vopf;') { ent->Codepoint1 = 120141; fbreak;}; + ('Vscr;') { ent->Codepoint1 = 119985; fbreak;}; + ('Vvdash;') { ent->Codepoint1 = 8874; fbreak;}; + ('Wcirc;') { ent->Codepoint1 = 372; fbreak;}; + ('Wedge;' | 'bigwedge;' | 'xwedge;') { ent->Codepoint1 = 8896; fbreak;}; + ('Wfr;') { ent->Codepoint1 = 120090; fbreak;}; + ('Wopf;') { ent->Codepoint1 = 120142; fbreak;}; + ('Wscr;') { ent->Codepoint1 = 119986; fbreak;}; + ('Xfr;') { ent->Codepoint1 = 120091; fbreak;}; + ('Xi;') { ent->Codepoint1 = 926; fbreak;}; + ('Xopf;') { ent->Codepoint1 = 120143; fbreak;}; + ('Xscr;') { ent->Codepoint1 = 119987; fbreak;}; + ('YAcy;') { ent->Codepoint1 = 1071; fbreak;}; + ('YIcy;') { ent->Codepoint1 = 1031; fbreak;}; + ('YUcy;') { ent->Codepoint1 = 1070; fbreak;}; + ('Yacute' | 'Yacute;') { ent->Codepoint1 = 221; fbreak;}; + ('Ycirc;') { ent->Codepoint1 = 374; fbreak;}; + ('Ycy;') { ent->Codepoint1 = 1067; fbreak;}; + ('Yfr;') { ent->Codepoint1 = 120092; fbreak;}; + ('Yopf;') { ent->Codepoint1 = 120144; fbreak;}; + ('Yscr;') { ent->Codepoint1 = 119988; fbreak;}; + ('Yuml;') { ent->Codepoint1 = 376; fbreak;}; + ('ZHcy;') { ent->Codepoint1 = 1046; fbreak;}; + ('Zacute;') { ent->Codepoint1 = 377; fbreak;}; + ('Zcaron;') { ent->Codepoint1 = 381; fbreak;}; + ('Zcy;') { ent->Codepoint1 = 1047; fbreak;}; + ('Zdot;') { ent->Codepoint1 = 379; fbreak;}; + ('Zeta;') { ent->Codepoint1 = 918; fbreak;}; + ('Zopf;' | 'integers;') { ent->Codepoint1 = 8484; fbreak;}; + ('Zscr;') { ent->Codepoint1 = 119989; fbreak;}; + ('aacute;' | 'aacute') { ent->Codepoint1 = 225; fbreak;}; + ('abreve;') { ent->Codepoint1 = 259; fbreak;}; + ('acd;') { ent->Codepoint1 = 8767; fbreak;}; + ('acirc' | 'acirc;') { ent->Codepoint1 = 226; fbreak;}; + ('acute;' | 'acute' | 'DiacriticalAcute;') { ent->Codepoint1 = 180; fbreak;}; + ('acy;') { ent->Codepoint1 = 1072; fbreak;}; + ('aelig' | 'aelig;') { ent->Codepoint1 = 230; fbreak;}; + ('afr;') { ent->Codepoint1 = 120094; fbreak;}; + ('agrave;' | 'agrave') { ent->Codepoint1 = 224; fbreak;}; + ('aleph;' | 'alefsym;') { ent->Codepoint1 = 8501; fbreak;}; + ('alpha;') { ent->Codepoint1 = 945; fbreak;}; + ('amacr;') { ent->Codepoint1 = 257; fbreak;}; + ('amalg;') { ent->Codepoint1 = 10815; fbreak;}; + ('andand;') { ent->Codepoint1 = 10837; fbreak;}; + ('andd;') { ent->Codepoint1 = 10844; fbreak;}; + ('andslope;') { ent->Codepoint1 = 10840; fbreak;}; + ('andv;') { ent->Codepoint1 = 10842; fbreak;}; + ('ang;' | 'angle;') { ent->Codepoint1 = 8736; fbreak;}; + ('ange;') { ent->Codepoint1 = 10660; fbreak;}; + ('angmsdaa;') { ent->Codepoint1 = 10664; fbreak;}; + ('angmsdab;') { ent->Codepoint1 = 10665; fbreak;}; + ('angmsdac;') { ent->Codepoint1 = 10666; fbreak;}; + ('angmsdad;') { ent->Codepoint1 = 10667; fbreak;}; + ('angmsdae;') { ent->Codepoint1 = 10668; fbreak;}; + ('angmsdaf;') { ent->Codepoint1 = 10669; fbreak;}; + ('angmsdag;') { ent->Codepoint1 = 10670; fbreak;}; + ('angmsdah;') { ent->Codepoint1 = 10671; fbreak;}; + ('angrt;') { ent->Codepoint1 = 8735; fbreak;}; + ('angrtvb;') { ent->Codepoint1 = 8894; fbreak;}; + ('angrtvbd;') { ent->Codepoint1 = 10653; fbreak;}; + ('angsph;') { ent->Codepoint1 = 8738; fbreak;}; + ('angzarr;') { ent->Codepoint1 = 9084; fbreak;}; + ('aogon;') { ent->Codepoint1 = 261; fbreak;}; + ('aopf;') { ent->Codepoint1 = 120146; fbreak;}; + ('apE;') { ent->Codepoint1 = 10864; fbreak;}; + ('apacir;') { ent->Codepoint1 = 10863; fbreak;}; + ('apid;') { ent->Codepoint1 = 8779; fbreak;}; + ('apos;') { ent->Codepoint1 = 39; fbreak;}; + ('approxeq;' | 'ape;') { ent->Codepoint1 = 8778; fbreak;}; + ('aring' | 'aring;') { ent->Codepoint1 = 229; fbreak;}; + ('ascr;') { ent->Codepoint1 = 119990; fbreak;}; + ('asympeq;' | 'CupCap;') { ent->Codepoint1 = 8781; fbreak;}; + ('atilde;' | 'atilde') { ent->Codepoint1 = 227; fbreak;}; + ('auml' | 'auml;') { ent->Codepoint1 = 228; fbreak;}; + ('awint;') { ent->Codepoint1 = 10769; fbreak;}; + ('bNot;') { ent->Codepoint1 = 10989; fbreak;}; + ('backprime;' | 'bprime;') { ent->Codepoint1 = 8245; fbreak;}; + ('backsimeq;' | 'bsime;') { ent->Codepoint1 = 8909; fbreak;}; + ('barvee;') { ent->Codepoint1 = 8893; fbreak;}; + ('barwedge;' | 'barwed;') { ent->Codepoint1 = 8965; fbreak;}; + ('bbrktbrk;') { ent->Codepoint1 = 9142; fbreak;}; + ('bcong;' | 'backcong;') { ent->Codepoint1 = 8780; fbreak;}; + ('bcy;') { ent->Codepoint1 = 1073; fbreak;}; + ('bdquo;' | 'ldquor;') { ent->Codepoint1 = 8222; fbreak;}; + ('bemptyv;') { ent->Codepoint1 = 10672; fbreak;}; + ('bepsi;' | 'backepsilon;') { ent->Codepoint1 = 1014; fbreak;}; + ('beta;') { ent->Codepoint1 = 946; fbreak;}; + ('beth;') { ent->Codepoint1 = 8502; fbreak;}; + ('bfr;') { ent->Codepoint1 = 120095; fbreak;}; + ('bigcap;' | 'Intersection;' | 'xcap;') { ent->Codepoint1 = 8898; fbreak;}; + ('bigodot;' | 'xodot;') { ent->Codepoint1 = 10752; fbreak;}; + ('bigotimes;' | 'xotime;') { ent->Codepoint1 = 10754; fbreak;}; + ('bigsqcup;' | 'xsqcup;') { ent->Codepoint1 = 10758; fbreak;}; + ('bigstar;' | 'starf;') { ent->Codepoint1 = 9733; fbreak;}; + ('bigtriangledown;' | 'xdtri;') { ent->Codepoint1 = 9661; fbreak;}; + ('bigtriangleup;' | 'xutri;') { ent->Codepoint1 = 9651; fbreak;}; + ('blacklozenge;' | 'lozf;') { ent->Codepoint1 = 10731; fbreak;}; + ('blacktriangle;' | 'utrif;') { ent->Codepoint1 = 9652; fbreak;}; + ('blacktriangledown;' | 'dtrif;') { ent->Codepoint1 = 9662; fbreak;}; + ('blank;') { ent->Codepoint1 = 9251; fbreak;}; + ('blk12;') { ent->Codepoint1 = 9618; fbreak;}; + ('blk14;') { ent->Codepoint1 = 9617; fbreak;}; + ('blk34;') { ent->Codepoint1 = 9619; fbreak;}; + ('block;') { ent->Codepoint1 = 9608; fbreak;}; + ('bnot;') { ent->Codepoint1 = 8976; fbreak;}; + ('bopf;') { ent->Codepoint1 = 120147; fbreak;}; + ('bowtie;') { ent->Codepoint1 = 8904; fbreak;}; + ('boxDL;') { ent->Codepoint1 = 9559; fbreak;}; + ('boxDR;') { ent->Codepoint1 = 9556; fbreak;}; + ('boxDl;') { ent->Codepoint1 = 9558; fbreak;}; + ('boxDr;') { ent->Codepoint1 = 9555; fbreak;}; + ('boxH;') { ent->Codepoint1 = 9552; fbreak;}; + ('boxHD;') { ent->Codepoint1 = 9574; fbreak;}; + ('boxHU;') { ent->Codepoint1 = 9577; fbreak;}; + ('boxHd;') { ent->Codepoint1 = 9572; fbreak;}; + ('boxHu;') { ent->Codepoint1 = 9575; fbreak;}; + ('boxUL;') { ent->Codepoint1 = 9565; fbreak;}; + ('boxUR;') { ent->Codepoint1 = 9562; fbreak;}; + ('boxUl;') { ent->Codepoint1 = 9564; fbreak;}; + ('boxUr;') { ent->Codepoint1 = 9561; fbreak;}; + ('boxV;') { ent->Codepoint1 = 9553; fbreak;}; + ('boxVH;') { ent->Codepoint1 = 9580; fbreak;}; + ('boxVL;') { ent->Codepoint1 = 9571; fbreak;}; + ('boxVR;') { ent->Codepoint1 = 9568; fbreak;}; + ('boxVh;') { ent->Codepoint1 = 9579; fbreak;}; + ('boxVl;') { ent->Codepoint1 = 9570; fbreak;}; + ('boxVr;') { ent->Codepoint1 = 9567; fbreak;}; + ('boxbox;') { ent->Codepoint1 = 10697; fbreak;}; + ('boxdL;') { ent->Codepoint1 = 9557; fbreak;}; + ('boxdR;') { ent->Codepoint1 = 9554; fbreak;}; + ('boxdl;') { ent->Codepoint1 = 9488; fbreak;}; + ('boxdr;') { ent->Codepoint1 = 9484; fbreak;}; + ('boxhD;') { ent->Codepoint1 = 9573; fbreak;}; + ('boxhU;') { ent->Codepoint1 = 9576; fbreak;}; + ('boxhd;') { ent->Codepoint1 = 9516; fbreak;}; + ('boxhu;') { ent->Codepoint1 = 9524; fbreak;}; + ('boxminus;' | 'minusb;') { ent->Codepoint1 = 8863; fbreak;}; + ('boxtimes;' | 'timesb;') { ent->Codepoint1 = 8864; fbreak;}; + ('boxuL;') { ent->Codepoint1 = 9563; fbreak;}; + ('boxuR;') { ent->Codepoint1 = 9560; fbreak;}; + ('boxul;') { ent->Codepoint1 = 9496; fbreak;}; + ('boxur;') { ent->Codepoint1 = 9492; fbreak;}; + ('boxv;') { ent->Codepoint1 = 9474; fbreak;}; + ('boxvH;') { ent->Codepoint1 = 9578; fbreak;}; + ('boxvL;') { ent->Codepoint1 = 9569; fbreak;}; + ('boxvR;') { ent->Codepoint1 = 9566; fbreak;}; + ('boxvh;') { ent->Codepoint1 = 9532; fbreak;}; + ('boxvl;') { ent->Codepoint1 = 9508; fbreak;}; + ('boxvr;') { ent->Codepoint1 = 9500; fbreak;}; + ('brvbar;' | 'brvbar') { ent->Codepoint1 = 166; fbreak;}; + ('bscr;') { ent->Codepoint1 = 119991; fbreak;}; + ('bsemi;') { ent->Codepoint1 = 8271; fbreak;}; + ('bsim;' | 'backsim;') { ent->Codepoint1 = 8765; fbreak;}; + ('bsol;') { ent->Codepoint1 = 92; fbreak;}; + ('bsolb;') { ent->Codepoint1 = 10693; fbreak;}; + ('bsolhsub;') { ent->Codepoint1 = 10184; fbreak;}; + ('bull;' | 'bullet;') { ent->Codepoint1 = 8226; fbreak;}; + ('bumpE;') { ent->Codepoint1 = 10926; fbreak;}; + ('bumpeq;' | 'bumpe;' | 'HumpEqual;') { ent->Codepoint1 = 8783; fbreak;}; + ('cacute;') { ent->Codepoint1 = 263; fbreak;}; + ('cap;') { ent->Codepoint1 = 8745; fbreak;}; + ('capand;') { ent->Codepoint1 = 10820; fbreak;}; + ('capbrcup;') { ent->Codepoint1 = 10825; fbreak;}; + ('capcap;') { ent->Codepoint1 = 10827; fbreak;}; + ('capcup;') { ent->Codepoint1 = 10823; fbreak;}; + ('capdot;') { ent->Codepoint1 = 10816; fbreak;}; + ('caret;') { ent->Codepoint1 = 8257; fbreak;}; + ('ccaps;') { ent->Codepoint1 = 10829; fbreak;}; + ('ccaron;') { ent->Codepoint1 = 269; fbreak;}; + ('ccedil' | 'ccedil;') { ent->Codepoint1 = 231; fbreak;}; + ('ccirc;') { ent->Codepoint1 = 265; fbreak;}; + ('ccups;') { ent->Codepoint1 = 10828; fbreak;}; + ('ccupssm;') { ent->Codepoint1 = 10832; fbreak;}; + ('cdot;') { ent->Codepoint1 = 267; fbreak;}; + ('cedil' | 'Cedilla;' | 'cedil;') { ent->Codepoint1 = 184; fbreak;}; + ('cemptyv;') { ent->Codepoint1 = 10674; fbreak;}; + ('cent;' | 'cent') { ent->Codepoint1 = 162; fbreak;}; + ('cfr;') { ent->Codepoint1 = 120096; fbreak;}; + ('chcy;') { ent->Codepoint1 = 1095; fbreak;}; + ('check;' | 'checkmark;') { ent->Codepoint1 = 10003; fbreak;}; + ('chi;') { ent->Codepoint1 = 967; fbreak;}; + ('cir;') { ent->Codepoint1 = 9675; fbreak;}; + ('cirE;') { ent->Codepoint1 = 10691; fbreak;}; + ('circ;') { ent->Codepoint1 = 710; fbreak;}; + ('circlearrowright;' | 'orarr;') { ent->Codepoint1 = 8635; fbreak;}; + ('circledS;' | 'oS;') { ent->Codepoint1 = 9416; fbreak;}; + ('circledcirc;' | 'ocir;') { ent->Codepoint1 = 8858; fbreak;}; + ('cire;' | 'circeq;') { ent->Codepoint1 = 8791; fbreak;}; + ('cirfnint;') { ent->Codepoint1 = 10768; fbreak;}; + ('cirmid;') { ent->Codepoint1 = 10991; fbreak;}; + ('cirscir;') { ent->Codepoint1 = 10690; fbreak;}; + ('clubsuit;' | 'clubs;') { ent->Codepoint1 = 9827; fbreak;}; + ('colon;') { ent->Codepoint1 = 58; fbreak;}; + ('comma;') { ent->Codepoint1 = 44; fbreak;}; + ('commat;') { ent->Codepoint1 = 64; fbreak;}; + ('comp;' | 'complement;') { ent->Codepoint1 = 8705; fbreak;}; + ('compfn;' | 'SmallCircle;') { ent->Codepoint1 = 8728; fbreak;}; + ('complexes;' | 'Copf;') { ent->Codepoint1 = 8450; fbreak;}; + ('congdot;') { ent->Codepoint1 = 10861; fbreak;}; + ('conint;' | 'ContourIntegral;' | 'oint;') { ent->Codepoint1 = 8750; fbreak;}; + ('copf;') { ent->Codepoint1 = 120148; fbreak;}; + ('copysr;') { ent->Codepoint1 = 8471; fbreak;}; + ('crarr;') { ent->Codepoint1 = 8629; fbreak;}; + ('cross;') { ent->Codepoint1 = 10007; fbreak;}; + ('cscr;') { ent->Codepoint1 = 119992; fbreak;}; + ('csub;') { ent->Codepoint1 = 10959; fbreak;}; + ('csube;') { ent->Codepoint1 = 10961; fbreak;}; + ('csup;') { ent->Codepoint1 = 10960; fbreak;}; + ('csupe;') { ent->Codepoint1 = 10962; fbreak;}; + ('ctdot;') { ent->Codepoint1 = 8943; fbreak;}; + ('cudarrl;') { ent->Codepoint1 = 10552; fbreak;}; + ('cudarrr;') { ent->Codepoint1 = 10549; fbreak;}; + ('cuesc;' | 'curlyeqsucc;') { ent->Codepoint1 = 8927; fbreak;}; + ('cularrp;') { ent->Codepoint1 = 10557; fbreak;}; + ('cup;') { ent->Codepoint1 = 8746; fbreak;}; + ('cupbrcap;') { ent->Codepoint1 = 10824; fbreak;}; + ('cupcap;') { ent->Codepoint1 = 10822; fbreak;}; + ('cupcup;') { ent->Codepoint1 = 10826; fbreak;}; + ('cupdot;') { ent->Codepoint1 = 8845; fbreak;}; + ('cupor;') { ent->Codepoint1 = 10821; fbreak;}; + ('curarr;' | 'curvearrowright;') { ent->Codepoint1 = 8631; fbreak;}; + ('curarrm;') { ent->Codepoint1 = 10556; fbreak;}; + ('curlyeqprec;' | 'cuepr;') { ent->Codepoint1 = 8926; fbreak;}; + ('curren' | 'curren;') { ent->Codepoint1 = 164; fbreak;}; + ('curvearrowleft;' | 'cularr;') { ent->Codepoint1 = 8630; fbreak;}; + ('cuvee;' | 'curlyvee;') { ent->Codepoint1 = 8910; fbreak;}; + ('cuwed;' | 'curlywedge;') { ent->Codepoint1 = 8911; fbreak;}; + ('cwconint;' | 'ClockwiseContourIntegral;') { ent->Codepoint1 = 8754; fbreak;}; + ('cwint;') { ent->Codepoint1 = 8753; fbreak;}; + ('cylcty;') { ent->Codepoint1 = 9005; fbreak;}; + ('dArr;' | 'DoubleDownArrow;' | 'Downarrow;') { ent->Codepoint1 = 8659; fbreak;}; + ('dHar;') { ent->Codepoint1 = 10597; fbreak;}; + ('dagger;') { ent->Codepoint1 = 8224; fbreak;}; + ('daleth;') { ent->Codepoint1 = 8504; fbreak;}; + ('dash;' | 'hyphen;') { ent->Codepoint1 = 8208; fbreak;}; + ('dbkarow;' | 'rBarr;') { ent->Codepoint1 = 10511; fbreak;}; + ('dblac;' | 'DiacriticalDoubleAcute;') { ent->Codepoint1 = 733; fbreak;}; + ('dcaron;') { ent->Codepoint1 = 271; fbreak;}; + ('dcy;') { ent->Codepoint1 = 1076; fbreak;}; + ('deg;' | 'deg') { ent->Codepoint1 = 176; fbreak;}; + ('delta;') { ent->Codepoint1 = 948; fbreak;}; + ('demptyv;') { ent->Codepoint1 = 10673; fbreak;}; + ('dfisht;') { ent->Codepoint1 = 10623; fbreak;}; + ('dfr;') { ent->Codepoint1 = 120097; fbreak;}; + ('dharr;' | 'RightDownVector;' | 'downharpoonright;') { ent->Codepoint1 = 8642; fbreak;}; + ('diamond;' | 'Diamond;' | 'diam;') { ent->Codepoint1 = 8900; fbreak;}; + ('diamondsuit;' | 'diams;') { ent->Codepoint1 = 9830; fbreak;}; + ('digamma;' | 'gammad;') { ent->Codepoint1 = 989; fbreak;}; + ('disin;') { ent->Codepoint1 = 8946; fbreak;}; + ('divide;' | 'div;' | 'divide') { ent->Codepoint1 = 247; fbreak;}; + ('divideontimes;' | 'divonx;') { ent->Codepoint1 = 8903; fbreak;}; + ('djcy;') { ent->Codepoint1 = 1106; fbreak;}; + ('dlcrop;') { ent->Codepoint1 = 8973; fbreak;}; + ('dollar;') { ent->Codepoint1 = 36; fbreak;}; + ('dopf;') { ent->Codepoint1 = 120149; fbreak;}; + ('dot;' | 'DiacriticalDot;') { ent->Codepoint1 = 729; fbreak;}; + ('doteqdot;' | 'eDot;') { ent->Codepoint1 = 8785; fbreak;}; + ('dotminus;' | 'minusd;') { ent->Codepoint1 = 8760; fbreak;}; + ('dotplus;' | 'plusdo;') { ent->Codepoint1 = 8724; fbreak;}; + ('doublebarwedge;' | 'Barwed;') { ent->Codepoint1 = 8966; fbreak;}; + ('downarrow;' | 'ShortDownArrow;' | 'DownArrow;' | 'darr;') { ent->Codepoint1 = 8595; fbreak;}; + ('downdownarrows;' | 'ddarr;') { ent->Codepoint1 = 8650; fbreak;}; + ('drcorn;' | 'lrcorner;') { ent->Codepoint1 = 8991; fbreak;}; + ('drcrop;') { ent->Codepoint1 = 8972; fbreak;}; + ('dscr;') { ent->Codepoint1 = 119993; fbreak;}; + ('dscy;') { ent->Codepoint1 = 1109; fbreak;}; + ('dsol;') { ent->Codepoint1 = 10742; fbreak;}; + ('dstrok;') { ent->Codepoint1 = 273; fbreak;}; + ('dtdot;') { ent->Codepoint1 = 8945; fbreak;}; + ('dtri;' | 'triangledown;') { ent->Codepoint1 = 9663; fbreak;}; + ('dwangle;') { ent->Codepoint1 = 10662; fbreak;}; + ('dzcy;') { ent->Codepoint1 = 1119; fbreak;}; + ('dzigrarr;') { ent->Codepoint1 = 10239; fbreak;}; + ('eDDot;' | 'ddotseq;') { ent->Codepoint1 = 10871; fbreak;}; + ('eacute;' | 'eacute') { ent->Codepoint1 = 233; fbreak;}; + ('easter;') { ent->Codepoint1 = 10862; fbreak;}; + ('ecaron;') { ent->Codepoint1 = 283; fbreak;}; + ('ecirc;' | 'ecirc') { ent->Codepoint1 = 234; fbreak;}; + ('ecolon;' | 'eqcolon;') { ent->Codepoint1 = 8789; fbreak;}; + ('ecy;') { ent->Codepoint1 = 1101; fbreak;}; + ('edot;') { ent->Codepoint1 = 279; fbreak;}; + ('ee;' | 'exponentiale;' | 'ExponentialE;') { ent->Codepoint1 = 8519; fbreak;}; + ('efr;') { ent->Codepoint1 = 120098; fbreak;}; + ('eg;') { ent->Codepoint1 = 10906; fbreak;}; + ('egrave;' | 'egrave') { ent->Codepoint1 = 232; fbreak;}; + ('egsdot;') { ent->Codepoint1 = 10904; fbreak;}; + ('el;') { ent->Codepoint1 = 10905; fbreak;}; + ('elinters;') { ent->Codepoint1 = 9191; fbreak;}; + ('ell;') { ent->Codepoint1 = 8467; fbreak;}; + ('elsdot;') { ent->Codepoint1 = 10903; fbreak;}; + ('emacr;') { ent->Codepoint1 = 275; fbreak;}; + ('emsp13;') { ent->Codepoint1 = 8196; fbreak;}; + ('emsp14;') { ent->Codepoint1 = 8197; fbreak;}; + ('emsp;') { ent->Codepoint1 = 8195; fbreak;}; + ('eng;') { ent->Codepoint1 = 331; fbreak;}; + ('ensp;') { ent->Codepoint1 = 8194; fbreak;}; + ('eogon;') { ent->Codepoint1 = 281; fbreak;}; + ('eopf;') { ent->Codepoint1 = 120150; fbreak;}; + ('epar;') { ent->Codepoint1 = 8917; fbreak;}; + ('eparsl;') { ent->Codepoint1 = 10723; fbreak;}; + ('eplus;') { ent->Codepoint1 = 10865; fbreak;}; + ('epsi;' | 'epsilon;') { ent->Codepoint1 = 949; fbreak;}; + ('eqcirc;' | 'ecir;') { ent->Codepoint1 = 8790; fbreak;}; + ('eqslantgtr;' | 'egs;') { ent->Codepoint1 = 10902; fbreak;}; + ('eqslantless;' | 'els;') { ent->Codepoint1 = 10901; fbreak;}; + ('equals;') { ent->Codepoint1 = 61; fbreak;}; + ('equivDD;') { ent->Codepoint1 = 10872; fbreak;}; + ('eqvparsl;') { ent->Codepoint1 = 10725; fbreak;}; + ('erarr;') { ent->Codepoint1 = 10609; fbreak;}; + ('escr;') { ent->Codepoint1 = 8495; fbreak;}; + ('esdot;' | 'DotEqual;' | 'doteq;') { ent->Codepoint1 = 8784; fbreak;}; + ('esim;' | 'EqualTilde;' | 'eqsim;') { ent->Codepoint1 = 8770; fbreak;}; + ('eta;') { ent->Codepoint1 = 951; fbreak;}; + ('eth' | 'eth;') { ent->Codepoint1 = 240; fbreak;}; + ('euml' | 'euml;') { ent->Codepoint1 = 235; fbreak;}; + ('euro;') { ent->Codepoint1 = 8364; fbreak;}; + ('excl;') { ent->Codepoint1 = 33; fbreak;}; + ('expectation;' | 'Escr;') { ent->Codepoint1 = 8496; fbreak;}; + ('fallingdotseq;' | 'efDot;') { ent->Codepoint1 = 8786; fbreak;}; + ('fcy;') { ent->Codepoint1 = 1092; fbreak;}; + ('female;') { ent->Codepoint1 = 9792; fbreak;}; + ('ffilig;') { ent->Codepoint1 = 64259; fbreak;}; + ('fflig;') { ent->Codepoint1 = 64256; fbreak;}; + ('ffllig;') { ent->Codepoint1 = 64260; fbreak;}; + ('ffr;') { ent->Codepoint1 = 120099; fbreak;}; + ('filig;') { ent->Codepoint1 = 64257; fbreak;}; + ('flat;') { ent->Codepoint1 = 9837; fbreak;}; + ('fllig;') { ent->Codepoint1 = 64258; fbreak;}; + ('fltns;') { ent->Codepoint1 = 9649; fbreak;}; + ('fnof;') { ent->Codepoint1 = 402; fbreak;}; + ('fopf;') { ent->Codepoint1 = 120151; fbreak;}; + ('forall;' | 'ForAll;') { ent->Codepoint1 = 8704; fbreak;}; + ('fork;' | 'pitchfork;') { ent->Codepoint1 = 8916; fbreak;}; + ('forkv;') { ent->Codepoint1 = 10969; fbreak;}; + ('fpartint;') { ent->Codepoint1 = 10765; fbreak;}; + ('frac13;') { ent->Codepoint1 = 8531; fbreak;}; + ('frac14' | 'frac14;') { ent->Codepoint1 = 188; fbreak;}; + ('frac15;') { ent->Codepoint1 = 8533; fbreak;}; + ('frac16;') { ent->Codepoint1 = 8537; fbreak;}; + ('frac18;') { ent->Codepoint1 = 8539; fbreak;}; + ('frac23;') { ent->Codepoint1 = 8532; fbreak;}; + ('frac25;') { ent->Codepoint1 = 8534; fbreak;}; + ('frac34' | 'frac34;') { ent->Codepoint1 = 190; fbreak;}; + ('frac35;') { ent->Codepoint1 = 8535; fbreak;}; + ('frac38;') { ent->Codepoint1 = 8540; fbreak;}; + ('frac45;') { ent->Codepoint1 = 8536; fbreak;}; + ('frac56;') { ent->Codepoint1 = 8538; fbreak;}; + ('frac58;') { ent->Codepoint1 = 8541; fbreak;}; + ('frac78;') { ent->Codepoint1 = 8542; fbreak;}; + ('frasl;') { ent->Codepoint1 = 8260; fbreak;}; + ('frown;' | 'sfrown;') { ent->Codepoint1 = 8994; fbreak;}; + ('fscr;') { ent->Codepoint1 = 119995; fbreak;}; + ('gacute;') { ent->Codepoint1 = 501; fbreak;}; + ('gamma;') { ent->Codepoint1 = 947; fbreak;}; + ('gbreve;') { ent->Codepoint1 = 287; fbreak;}; + ('gcirc;') { ent->Codepoint1 = 285; fbreak;}; + ('gcy;') { ent->Codepoint1 = 1075; fbreak;}; + ('gdot;') { ent->Codepoint1 = 289; fbreak;}; + ('ge;' | 'GreaterEqual;' | 'geq;') { ent->Codepoint1 = 8805; fbreak;}; + ('gescc;') { ent->Codepoint1 = 10921; fbreak;}; + ('gesdot;') { ent->Codepoint1 = 10880; fbreak;}; + ('gesdoto;') { ent->Codepoint1 = 10882; fbreak;}; + ('gesdotol;') { ent->Codepoint1 = 10884; fbreak;}; + ('gesles;') { ent->Codepoint1 = 10900; fbreak;}; + ('gfr;') { ent->Codepoint1 = 120100; fbreak;}; + ('gg;' | 'Gt;' | 'NestedGreaterGreater;') { ent->Codepoint1 = 8811; fbreak;}; + ('ggg;' | 'Gg;') { ent->Codepoint1 = 8921; fbreak;}; + ('gimel;') { ent->Codepoint1 = 8503; fbreak;}; + ('gjcy;') { ent->Codepoint1 = 1107; fbreak;}; + ('glE;') { ent->Codepoint1 = 10898; fbreak;}; + ('gla;') { ent->Codepoint1 = 10917; fbreak;}; + ('glj;') { ent->Codepoint1 = 10916; fbreak;}; + ('gnE;' | 'gneqq;') { ent->Codepoint1 = 8809; fbreak;}; + ('gnapprox;' | 'gnap;') { ent->Codepoint1 = 10890; fbreak;}; + ('gne;' | 'gneq;') { ent->Codepoint1 = 10888; fbreak;}; + ('gnsim;') { ent->Codepoint1 = 8935; fbreak;}; + ('gopf;') { ent->Codepoint1 = 120152; fbreak;}; + ('gscr;') { ent->Codepoint1 = 8458; fbreak;}; + ('gsim;' | 'GreaterTilde;' | 'gtrsim;') { ent->Codepoint1 = 8819; fbreak;}; + ('gsime;') { ent->Codepoint1 = 10894; fbreak;}; + ('gsiml;') { ent->Codepoint1 = 10896; fbreak;}; + ('gtcc;') { ent->Codepoint1 = 10919; fbreak;}; + ('gtcir;') { ent->Codepoint1 = 10874; fbreak;}; + ('gtdot;' | 'gtrdot;') { ent->Codepoint1 = 8919; fbreak;}; + ('gtlPar;') { ent->Codepoint1 = 10645; fbreak;}; + ('gtquest;') { ent->Codepoint1 = 10876; fbreak;}; + ('gtrapprox;' | 'gap;') { ent->Codepoint1 = 10886; fbreak;}; + ('gtrarr;') { ent->Codepoint1 = 10616; fbreak;}; + ('gtreqless;' | 'GreaterEqualLess;' | 'gel;') { ent->Codepoint1 = 8923; fbreak;}; + ('gtreqqless;' | 'gEl;') { ent->Codepoint1 = 10892; fbreak;}; + ('half;' | 'frac12;' | 'frac12') { ent->Codepoint1 = 189; fbreak;}; + ('hamilt;' | 'Hscr;' | 'HilbertSpace;') { ent->Codepoint1 = 8459; fbreak;}; + ('hardcy;') { ent->Codepoint1 = 1098; fbreak;}; + ('harrcir;') { ent->Codepoint1 = 10568; fbreak;}; + ('harrw;' | 'leftrightsquigarrow;') { ent->Codepoint1 = 8621; fbreak;}; + ('hbar;' | 'planck;' | 'hslash;' | 'plankv;') { ent->Codepoint1 = 8463; fbreak;}; + ('hcirc;') { ent->Codepoint1 = 293; fbreak;}; + ('hearts;' | 'heartsuit;') { ent->Codepoint1 = 9829; fbreak;}; + ('hellip;' | 'mldr;') { ent->Codepoint1 = 8230; fbreak;}; + ('hercon;') { ent->Codepoint1 = 8889; fbreak;}; + ('hfr;') { ent->Codepoint1 = 120101; fbreak;}; + ('hoarr;') { ent->Codepoint1 = 8703; fbreak;}; + ('homtht;') { ent->Codepoint1 = 8763; fbreak;}; + ('hopf;') { ent->Codepoint1 = 120153; fbreak;}; + ('horbar;') { ent->Codepoint1 = 8213; fbreak;}; + ('hscr;') { ent->Codepoint1 = 119997; fbreak;}; + ('hstrok;') { ent->Codepoint1 = 295; fbreak;}; + ('hybull;') { ent->Codepoint1 = 8259; fbreak;}; + ('iacute;' | 'iacute') { ent->Codepoint1 = 237; fbreak;}; + ('icirc' | 'icirc;') { ent->Codepoint1 = 238; fbreak;}; + ('icy;') { ent->Codepoint1 = 1080; fbreak;}; + ('iecy;') { ent->Codepoint1 = 1077; fbreak;}; + ('iexcl' | 'iexcl;') { ent->Codepoint1 = 161; fbreak;}; + ('ifr;') { ent->Codepoint1 = 120102; fbreak;}; + ('igrave;' | 'igrave') { ent->Codepoint1 = 236; fbreak;}; + ('ii;' | 'ImaginaryI;') { ent->Codepoint1 = 8520; fbreak;}; + ('iiiint;' | 'qint;') { ent->Codepoint1 = 10764; fbreak;}; + ('iiint;' | 'tint;') { ent->Codepoint1 = 8749; fbreak;}; + ('iinfin;') { ent->Codepoint1 = 10716; fbreak;}; + ('iiota;') { ent->Codepoint1 = 8489; fbreak;}; + ('ijlig;') { ent->Codepoint1 = 307; fbreak;}; + ('imacr;') { ent->Codepoint1 = 299; fbreak;}; + ('imath;' | 'inodot;') { ent->Codepoint1 = 305; fbreak;}; + ('imof;') { ent->Codepoint1 = 8887; fbreak;}; + ('imped;') { ent->Codepoint1 = 437; fbreak;}; + ('incare;') { ent->Codepoint1 = 8453; fbreak;}; + ('infin;') { ent->Codepoint1 = 8734; fbreak;}; + ('infintie;') { ent->Codepoint1 = 10717; fbreak;}; + ('intcal;' | 'intercal;') { ent->Codepoint1 = 8890; fbreak;}; + ('intlarhk;') { ent->Codepoint1 = 10775; fbreak;}; + ('intprod;' | 'iprod;') { ent->Codepoint1 = 10812; fbreak;}; + ('iocy;') { ent->Codepoint1 = 1105; fbreak;}; + ('iogon;') { ent->Codepoint1 = 303; fbreak;}; + ('iopf;') { ent->Codepoint1 = 120154; fbreak;}; + ('iota;') { ent->Codepoint1 = 953; fbreak;}; + ('iquest' | 'iquest;') { ent->Codepoint1 = 191; fbreak;}; + ('iscr;') { ent->Codepoint1 = 119998; fbreak;}; + ('isinE;') { ent->Codepoint1 = 8953; fbreak;}; + ('isindot;') { ent->Codepoint1 = 8949; fbreak;}; + ('isins;') { ent->Codepoint1 = 8948; fbreak;}; + ('isinsv;') { ent->Codepoint1 = 8947; fbreak;}; + ('isinv;' | 'isin;' | 'in;' | 'Element;') { ent->Codepoint1 = 8712; fbreak;}; + ('itilde;') { ent->Codepoint1 = 297; fbreak;}; + ('iukcy;') { ent->Codepoint1 = 1110; fbreak;}; + ('iuml' | 'iuml;') { ent->Codepoint1 = 239; fbreak;}; + ('jcirc;') { ent->Codepoint1 = 309; fbreak;}; + ('jcy;') { ent->Codepoint1 = 1081; fbreak;}; + ('jfr;') { ent->Codepoint1 = 120103; fbreak;}; + ('jmath;') { ent->Codepoint1 = 567; fbreak;}; + ('jopf;') { ent->Codepoint1 = 120155; fbreak;}; + ('jscr;') { ent->Codepoint1 = 119999; fbreak;}; + ('jsercy;') { ent->Codepoint1 = 1112; fbreak;}; + ('jukcy;') { ent->Codepoint1 = 1108; fbreak;}; + ('kappa;') { ent->Codepoint1 = 954; fbreak;}; + ('kcedil;') { ent->Codepoint1 = 311; fbreak;}; + ('kcy;') { ent->Codepoint1 = 1082; fbreak;}; + ('kfr;') { ent->Codepoint1 = 120104; fbreak;}; + ('kgreen;') { ent->Codepoint1 = 312; fbreak;}; + ('khcy;') { ent->Codepoint1 = 1093; fbreak;}; + ('kjcy;') { ent->Codepoint1 = 1116; fbreak;}; + ('kopf;') { ent->Codepoint1 = 120156; fbreak;}; + ('kscr;') { ent->Codepoint1 = 120000; fbreak;}; + ('lAtail;') { ent->Codepoint1 = 10523; fbreak;}; + ('lBarr;') { ent->Codepoint1 = 10510; fbreak;}; + ('lEg;' | 'lesseqqgtr;') { ent->Codepoint1 = 10891; fbreak;}; + ('lHar;') { ent->Codepoint1 = 10594; fbreak;}; + ('lacute;') { ent->Codepoint1 = 314; fbreak;}; + ('laemptyv;') { ent->Codepoint1 = 10676; fbreak;}; + ('lambda;') { ent->Codepoint1 = 955; fbreak;}; + ('langd;') { ent->Codepoint1 = 10641; fbreak;}; + ('langle;' | 'LeftAngleBracket;' | 'lang;') { ent->Codepoint1 = 10216; fbreak;}; + ('laquo' | 'laquo;') { ent->Codepoint1 = 171; fbreak;}; + ('larrb;' | 'LeftArrowBar;') { ent->Codepoint1 = 8676; fbreak;}; + ('larrbfs;') { ent->Codepoint1 = 10527; fbreak;}; + ('larrfs;') { ent->Codepoint1 = 10525; fbreak;}; + ('larrhk;' | 'hookleftarrow;') { ent->Codepoint1 = 8617; fbreak;}; + ('larrpl;') { ent->Codepoint1 = 10553; fbreak;}; + ('larrsim;') { ent->Codepoint1 = 10611; fbreak;}; + ('larrtl;' | 'leftarrowtail;') { ent->Codepoint1 = 8610; fbreak;}; + ('lat;') { ent->Codepoint1 = 10923; fbreak;}; + ('latail;') { ent->Codepoint1 = 10521; fbreak;}; + ('late;') { ent->Codepoint1 = 10925; fbreak;}; + ('lbarr;') { ent->Codepoint1 = 10508; fbreak;}; + ('lbbrk;') { ent->Codepoint1 = 10098; fbreak;}; + ('lbrace;' | 'lcub;') { ent->Codepoint1 = 123; fbreak;}; + ('lbrack;' | 'lsqb;') { ent->Codepoint1 = 91; fbreak;}; + ('lbrke;') { ent->Codepoint1 = 10635; fbreak;}; + ('lbrksld;') { ent->Codepoint1 = 10639; fbreak;}; + ('lbrkslu;') { ent->Codepoint1 = 10637; fbreak;}; + ('lcaron;') { ent->Codepoint1 = 318; fbreak;}; + ('lcedil;') { ent->Codepoint1 = 316; fbreak;}; + ('lceil;' | 'LeftCeiling;') { ent->Codepoint1 = 8968; fbreak;}; + ('lcy;') { ent->Codepoint1 = 1083; fbreak;}; + ('ldca;') { ent->Codepoint1 = 10550; fbreak;}; + ('ldrdhar;') { ent->Codepoint1 = 10599; fbreak;}; + ('ldrushar;') { ent->Codepoint1 = 10571; fbreak;}; + ('ldsh;') { ent->Codepoint1 = 8626; fbreak;}; + ('leftharpoonup;' | 'LeftVector;' | 'lharu;') { ent->Codepoint1 = 8636; fbreak;}; + ('leftrightarrow;' | 'LeftRightArrow;' | 'harr;') { ent->Codepoint1 = 8596; fbreak;}; + ('leftthreetimes;' | 'lthree;') { ent->Codepoint1 = 8907; fbreak;}; + ('leq;' | 'le;') { ent->Codepoint1 = 8804; fbreak;}; + ('leqslant;' | 'les;' | 'LessSlantEqual;') { ent->Codepoint1 = 10877; fbreak;}; + ('lescc;') { ent->Codepoint1 = 10920; fbreak;}; + ('lesdot;') { ent->Codepoint1 = 10879; fbreak;}; + ('lesdoto;') { ent->Codepoint1 = 10881; fbreak;}; + ('lesdotor;') { ent->Codepoint1 = 10883; fbreak;}; + ('lesges;') { ent->Codepoint1 = 10899; fbreak;}; + ('lessapprox;' | 'lap;') { ent->Codepoint1 = 10885; fbreak;}; + ('lesseqgtr;' | 'leg;' | 'LessEqualGreater;') { ent->Codepoint1 = 8922; fbreak;}; + ('lfisht;') { ent->Codepoint1 = 10620; fbreak;}; + ('lfr;') { ent->Codepoint1 = 120105; fbreak;}; + ('lgE;') { ent->Codepoint1 = 10897; fbreak;}; + ('lhard;' | 'DownLeftVector;' | 'leftharpoondown;') { ent->Codepoint1 = 8637; fbreak;}; + ('lharul;') { ent->Codepoint1 = 10602; fbreak;}; + ('lhblk;') { ent->Codepoint1 = 9604; fbreak;}; + ('ljcy;') { ent->Codepoint1 = 1113; fbreak;}; + ('llarr;' | 'leftleftarrows;') { ent->Codepoint1 = 8647; fbreak;}; + ('llcorner;' | 'dlcorn;') { ent->Codepoint1 = 8990; fbreak;}; + ('llhard;') { ent->Codepoint1 = 10603; fbreak;}; + ('lltri;') { ent->Codepoint1 = 9722; fbreak;}; + ('lmidot;') { ent->Codepoint1 = 320; fbreak;}; + ('lmoustache;' | 'lmoust;') { ent->Codepoint1 = 9136; fbreak;}; + ('lnE;' | 'lneqq;') { ent->Codepoint1 = 8808; fbreak;}; + ('lnapprox;' | 'lnap;') { ent->Codepoint1 = 10889; fbreak;}; + ('lneq;' | 'lne;') { ent->Codepoint1 = 10887; fbreak;}; + ('lnsim;') { ent->Codepoint1 = 8934; fbreak;}; + ('loang;') { ent->Codepoint1 = 10220; fbreak;}; + ('loarr;') { ent->Codepoint1 = 8701; fbreak;}; + ('looparrowleft;' | 'larrlp;') { ent->Codepoint1 = 8619; fbreak;}; + ('lopar;') { ent->Codepoint1 = 10629; fbreak;}; + ('lopf;') { ent->Codepoint1 = 120157; fbreak;}; + ('loplus;') { ent->Codepoint1 = 10797; fbreak;}; + ('lotimes;') { ent->Codepoint1 = 10804; fbreak;}; + ('lowast;') { ent->Codepoint1 = 8727; fbreak;}; + ('lowbar;' | 'UnderBar;') { ent->Codepoint1 = 95; fbreak;}; + ('loz;' | 'lozenge;') { ent->Codepoint1 = 9674; fbreak;}; + ('lpar;') { ent->Codepoint1 = 40; fbreak;}; + ('lparlt;') { ent->Codepoint1 = 10643; fbreak;}; + ('lrhar;' | 'leftrightharpoons;' | 'ReverseEquilibrium;') { ent->Codepoint1 = 8651; fbreak;}; + ('lrhard;') { ent->Codepoint1 = 10605; fbreak;}; + ('lrm;') { ent->Codepoint1 = 8206; fbreak;}; + ('lrtri;') { ent->Codepoint1 = 8895; fbreak;}; + ('lsaquo;') { ent->Codepoint1 = 8249; fbreak;}; + ('lscr;') { ent->Codepoint1 = 120001; fbreak;}; + ('lsim;' | 'lesssim;' | 'LessTilde;') { ent->Codepoint1 = 8818; fbreak;}; + ('lsime;') { ent->Codepoint1 = 10893; fbreak;}; + ('lsimg;') { ent->Codepoint1 = 10895; fbreak;}; + ('lsquo;' | 'OpenCurlyQuote;') { ent->Codepoint1 = 8216; fbreak;}; + ('lstrok;') { ent->Codepoint1 = 322; fbreak;}; + ('ltcc;') { ent->Codepoint1 = 10918; fbreak;}; + ('ltcir;') { ent->Codepoint1 = 10873; fbreak;}; + ('ltdot;' | 'lessdot;') { ent->Codepoint1 = 8918; fbreak;}; + ('ltimes;') { ent->Codepoint1 = 8905; fbreak;}; + ('ltlarr;') { ent->Codepoint1 = 10614; fbreak;}; + ('ltquest;') { ent->Codepoint1 = 10875; fbreak;}; + ('ltrPar;') { ent->Codepoint1 = 10646; fbreak;}; + ('ltrif;' | 'blacktriangleleft;') { ent->Codepoint1 = 9666; fbreak;}; + ('lurdshar;') { ent->Codepoint1 = 10570; fbreak;}; + ('luruhar;') { ent->Codepoint1 = 10598; fbreak;}; + ('mDDot;') { ent->Codepoint1 = 8762; fbreak;}; + ('macr;' | 'strns;' | 'macr') { ent->Codepoint1 = 175; fbreak;}; + ('male;') { ent->Codepoint1 = 9794; fbreak;}; + ('malt;' | 'maltese;') { ent->Codepoint1 = 10016; fbreak;}; + ('mapstodown;' | 'DownTeeArrow;') { ent->Codepoint1 = 8615; fbreak;}; + ('mapstoup;' | 'UpTeeArrow;') { ent->Codepoint1 = 8613; fbreak;}; + ('marker;') { ent->Codepoint1 = 9646; fbreak;}; + ('mcomma;') { ent->Codepoint1 = 10793; fbreak;}; + ('mcy;') { ent->Codepoint1 = 1084; fbreak;}; + ('mdash;') { ent->Codepoint1 = 8212; fbreak;}; + ('measuredangle;' | 'angmsd;') { ent->Codepoint1 = 8737; fbreak;}; + ('mfr;') { ent->Codepoint1 = 120106; fbreak;}; + ('mho;') { ent->Codepoint1 = 8487; fbreak;}; + ('micro' | 'micro;') { ent->Codepoint1 = 181; fbreak;}; + ('midast;' | 'ast;') { ent->Codepoint1 = 42; fbreak;}; + ('midcir;') { ent->Codepoint1 = 10992; fbreak;}; + ('middot' | 'centerdot;' | 'CenterDot;' | 'middot;') { ent->Codepoint1 = 183; fbreak;}; + ('minus;') { ent->Codepoint1 = 8722; fbreak;}; + ('minusdu;') { ent->Codepoint1 = 10794; fbreak;}; + ('mlcp;') { ent->Codepoint1 = 10971; fbreak;}; + ('models;') { ent->Codepoint1 = 8871; fbreak;}; + ('mopf;') { ent->Codepoint1 = 120158; fbreak;}; + ('mscr;') { ent->Codepoint1 = 120002; fbreak;}; + ('mstpos;' | 'ac;') { ent->Codepoint1 = 8766; fbreak;}; + ('mu;') { ent->Codepoint1 = 956; fbreak;}; + ('mumap;' | 'multimap;') { ent->Codepoint1 = 8888; fbreak;}; + ('nLeftarrow;' | 'nlArr;') { ent->Codepoint1 = 8653; fbreak;}; + ('nRightarrow;' | 'nrArr;') { ent->Codepoint1 = 8655; fbreak;}; + ('nVDash;') { ent->Codepoint1 = 8879; fbreak;}; + ('nVdash;') { ent->Codepoint1 = 8878; fbreak;}; + ('nacute;') { ent->Codepoint1 = 324; fbreak;}; + ('nap;' | 'napprox;' | 'NotTildeTilde;') { ent->Codepoint1 = 8777; fbreak;}; + ('napos;') { ent->Codepoint1 = 329; fbreak;}; + ('natur;' | 'natural;') { ent->Codepoint1 = 9838; fbreak;}; + ('nbsp;' | 'NonBreakingSpace;' | 'nbsp') { ent->Codepoint1 = 160; fbreak;}; + ('ncap;') { ent->Codepoint1 = 10819; fbreak;}; + ('ncaron;') { ent->Codepoint1 = 328; fbreak;}; + ('ncedil;') { ent->Codepoint1 = 326; fbreak;}; + ('ncong;' | 'NotTildeFullEqual;') { ent->Codepoint1 = 8775; fbreak;}; + ('ncup;') { ent->Codepoint1 = 10818; fbreak;}; + ('ncy;') { ent->Codepoint1 = 1085; fbreak;}; + ('ndash;') { ent->Codepoint1 = 8211; fbreak;}; + ('neArr;') { ent->Codepoint1 = 8663; fbreak;}; + ('nearhk;') { ent->Codepoint1 = 10532; fbreak;}; + ('nearr;' | 'nearrow;' | 'UpperRightArrow;') { ent->Codepoint1 = 8599; fbreak;}; + ('nequiv;' | 'NotCongruent;') { ent->Codepoint1 = 8802; fbreak;}; + ('nfr;') { ent->Codepoint1 = 120107; fbreak;}; + ('nge;' | 'NotGreaterEqual;' | 'ngeq;') { ent->Codepoint1 = 8817; fbreak;}; + ('ngsim;' | 'NotGreaterTilde;') { ent->Codepoint1 = 8821; fbreak;}; + ('ngtr;' | 'ngt;' | 'NotGreater;') { ent->Codepoint1 = 8815; fbreak;}; + ('nhArr;' | 'nLeftrightarrow;') { ent->Codepoint1 = 8654; fbreak;}; + ('nhpar;') { ent->Codepoint1 = 10994; fbreak;}; + ('nis;') { ent->Codepoint1 = 8956; fbreak;}; + ('nisd;') { ent->Codepoint1 = 8954; fbreak;}; + ('niv;' | 'ni;' | 'ReverseElement;' | 'SuchThat;') { ent->Codepoint1 = 8715; fbreak;}; + ('njcy;') { ent->Codepoint1 = 1114; fbreak;}; + ('nlarr;' | 'nleftarrow;') { ent->Codepoint1 = 8602; fbreak;}; + ('nldr;') { ent->Codepoint1 = 8229; fbreak;}; + ('nleftrightarrow;' | 'nharr;') { ent->Codepoint1 = 8622; fbreak;}; + ('nopf;') { ent->Codepoint1 = 120159; fbreak;}; + ('not' | 'not;') { ent->Codepoint1 = 172; fbreak;}; + ('notinvb;') { ent->Codepoint1 = 8951; fbreak;}; + ('notinvc;') { ent->Codepoint1 = 8950; fbreak;}; + ('notniva;' | 'NotReverseElement;' | 'notni;') { ent->Codepoint1 = 8716; fbreak;}; + ('notnivb;') { ent->Codepoint1 = 8958; fbreak;}; + ('notnivc;') { ent->Codepoint1 = 8957; fbreak;}; + ('npar;' | 'nparallel;' | 'nspar;' | 'nshortparallel;' | 'NotDoubleVerticalBar;') { ent->Codepoint1 = 8742; fbreak;}; + ('npolint;') { ent->Codepoint1 = 10772; fbreak;}; + ('nprec;' | 'npr;' | 'NotPrecedes;') { ent->Codepoint1 = 8832; fbreak;}; + ('nrightarrow;' | 'nrarr;') { ent->Codepoint1 = 8603; fbreak;}; + ('nrtrie;' | 'ntrianglerighteq;' | 'NotRightTriangleEqual;') { ent->Codepoint1 = 8941; fbreak;}; + ('nscr;') { ent->Codepoint1 = 120003; fbreak;}; + ('nsim;' | 'NotTilde;') { ent->Codepoint1 = 8769; fbreak;}; + ('nsime;' | 'NotTildeEqual;' | 'nsimeq;') { ent->Codepoint1 = 8772; fbreak;}; + ('nsub;') { ent->Codepoint1 = 8836; fbreak;}; + ('nsubseteq;' | 'nsube;' | 'NotSubsetEqual;') { ent->Codepoint1 = 8840; fbreak;}; + ('nsup;') { ent->Codepoint1 = 8837; fbreak;}; + ('ntgl;' | 'NotGreaterLess;') { ent->Codepoint1 = 8825; fbreak;}; + ('ntilde;' | 'ntilde') { ent->Codepoint1 = 241; fbreak;}; + ('ntriangleleft;' | 'nltri;' | 'NotLeftTriangle;') { ent->Codepoint1 = 8938; fbreak;}; + ('ntrianglelefteq;' | 'nltrie;' | 'NotLeftTriangleEqual;') { ent->Codepoint1 = 8940; fbreak;}; + ('nu;') { ent->Codepoint1 = 957; fbreak;}; + ('num;') { ent->Codepoint1 = 35; fbreak;}; + ('numero;') { ent->Codepoint1 = 8470; fbreak;}; + ('numsp;') { ent->Codepoint1 = 8199; fbreak;}; + ('nvDash;') { ent->Codepoint1 = 8877; fbreak;}; + ('nvHarr;') { ent->Codepoint1 = 10500; fbreak;}; + ('nvdash;') { ent->Codepoint1 = 8876; fbreak;}; + ('nvinfin;') { ent->Codepoint1 = 10718; fbreak;}; + ('nvlArr;') { ent->Codepoint1 = 10498; fbreak;}; + ('nvrArr;') { ent->Codepoint1 = 10499; fbreak;}; + ('nwArr;') { ent->Codepoint1 = 8662; fbreak;}; + ('nwarhk;') { ent->Codepoint1 = 10531; fbreak;}; + ('nwarr;' | 'UpperLeftArrow;' | 'nwarrow;') { ent->Codepoint1 = 8598; fbreak;}; + ('nwnear;') { ent->Codepoint1 = 10535; fbreak;}; + ('oacute' | 'oacute;') { ent->Codepoint1 = 243; fbreak;}; + ('oast;' | 'circledast;') { ent->Codepoint1 = 8859; fbreak;}; + ('ocirc;' | 'ocirc') { ent->Codepoint1 = 244; fbreak;}; + ('ocy;') { ent->Codepoint1 = 1086; fbreak;}; + ('odash;' | 'circleddash;') { ent->Codepoint1 = 8861; fbreak;}; + ('odblac;') { ent->Codepoint1 = 337; fbreak;}; + ('odiv;') { ent->Codepoint1 = 10808; fbreak;}; + ('odsold;') { ent->Codepoint1 = 10684; fbreak;}; + ('oelig;') { ent->Codepoint1 = 339; fbreak;}; + ('ofcir;') { ent->Codepoint1 = 10687; fbreak;}; + ('ofr;') { ent->Codepoint1 = 120108; fbreak;}; + ('ogon;') { ent->Codepoint1 = 731; fbreak;}; + ('ograve' | 'ograve;') { ent->Codepoint1 = 242; fbreak;}; + ('ogt;') { ent->Codepoint1 = 10689; fbreak;}; + ('ohbar;') { ent->Codepoint1 = 10677; fbreak;}; + ('olarr;' | 'circlearrowleft;') { ent->Codepoint1 = 8634; fbreak;}; + ('olcir;') { ent->Codepoint1 = 10686; fbreak;}; + ('olcross;') { ent->Codepoint1 = 10683; fbreak;}; + ('olt;') { ent->Codepoint1 = 10688; fbreak;}; + ('omacr;') { ent->Codepoint1 = 333; fbreak;}; + ('omega;') { ent->Codepoint1 = 969; fbreak;}; + ('omicron;') { ent->Codepoint1 = 959; fbreak;}; + ('omid;') { ent->Codepoint1 = 10678; fbreak;}; + ('oopf;') { ent->Codepoint1 = 120160; fbreak;}; + ('opar;') { ent->Codepoint1 = 10679; fbreak;}; + ('operp;') { ent->Codepoint1 = 10681; fbreak;}; + ('ord;') { ent->Codepoint1 = 10845; fbreak;}; + ('orderof;' | 'oscr;' | 'order;') { ent->Codepoint1 = 8500; fbreak;}; + ('ordf;' | 'ordf') { ent->Codepoint1 = 170; fbreak;}; + ('ordm' | 'ordm;') { ent->Codepoint1 = 186; fbreak;}; + ('origof;') { ent->Codepoint1 = 8886; fbreak;}; + ('oror;') { ent->Codepoint1 = 10838; fbreak;}; + ('orslope;') { ent->Codepoint1 = 10839; fbreak;}; + ('orv;') { ent->Codepoint1 = 10843; fbreak;}; + ('oslash;' | 'oslash') { ent->Codepoint1 = 248; fbreak;}; + ('osol;') { ent->Codepoint1 = 8856; fbreak;}; + ('otilde;' | 'otilde') { ent->Codepoint1 = 245; fbreak;}; + ('otimesas;') { ent->Codepoint1 = 10806; fbreak;}; + ('ouml;' | 'ouml') { ent->Codepoint1 = 246; fbreak;}; + ('ovbar;') { ent->Codepoint1 = 9021; fbreak;}; + ('para;' | 'para') { ent->Codepoint1 = 182; fbreak;}; + ('parsim;') { ent->Codepoint1 = 10995; fbreak;}; + ('parsl;') { ent->Codepoint1 = 11005; fbreak;}; + ('part;' | 'PartialD;') { ent->Codepoint1 = 8706; fbreak;}; + ('pcy;') { ent->Codepoint1 = 1087; fbreak;}; + ('percnt;') { ent->Codepoint1 = 37; fbreak;}; + ('period;') { ent->Codepoint1 = 46; fbreak;}; + ('permil;') { ent->Codepoint1 = 8240; fbreak;}; + ('perp;' | 'UpTee;' | 'bot;' | 'bottom;') { ent->Codepoint1 = 8869; fbreak;}; + ('pertenk;') { ent->Codepoint1 = 8241; fbreak;}; + ('pfr;') { ent->Codepoint1 = 120109; fbreak;}; + ('phi;') { ent->Codepoint1 = 966; fbreak;}; + ('phiv;' | 'varphi;' | 'straightphi;') { ent->Codepoint1 = 981; fbreak;}; + ('phmmat;' | 'Mellintrf;' | 'Mscr;') { ent->Codepoint1 = 8499; fbreak;}; + ('phone;') { ent->Codepoint1 = 9742; fbreak;}; + ('pi;') { ent->Codepoint1 = 960; fbreak;}; + ('planckh;') { ent->Codepoint1 = 8462; fbreak;}; + ('plus;') { ent->Codepoint1 = 43; fbreak;}; + ('plusacir;') { ent->Codepoint1 = 10787; fbreak;}; + ('plusb;' | 'boxplus;') { ent->Codepoint1 = 8862; fbreak;}; + ('pluscir;') { ent->Codepoint1 = 10786; fbreak;}; + ('plusdu;') { ent->Codepoint1 = 10789; fbreak;}; + ('pluse;') { ent->Codepoint1 = 10866; fbreak;}; + ('plussim;') { ent->Codepoint1 = 10790; fbreak;}; + ('plustwo;') { ent->Codepoint1 = 10791; fbreak;}; + ('pm;' | 'plusmn' | 'PlusMinus;' | 'plusmn;') { ent->Codepoint1 = 177; fbreak;}; + ('pointint;') { ent->Codepoint1 = 10773; fbreak;}; + ('popf;') { ent->Codepoint1 = 120161; fbreak;}; + ('pound;' | 'pound') { ent->Codepoint1 = 163; fbreak;}; + ('prE;') { ent->Codepoint1 = 10931; fbreak;}; + ('prec;' | 'Precedes;' | 'pr;') { ent->Codepoint1 = 8826; fbreak;}; + ('precapprox;' | 'prap;') { ent->Codepoint1 = 10935; fbreak;}; + ('preccurlyeq;' | 'prcue;' | 'PrecedesSlantEqual;') { ent->Codepoint1 = 8828; fbreak;}; + ('prime;') { ent->Codepoint1 = 8242; fbreak;}; + ('primes;' | 'Popf;') { ent->Codepoint1 = 8473; fbreak;}; + ('prnE;' | 'precneqq;') { ent->Codepoint1 = 10933; fbreak;}; + ('prnap;' | 'precnapprox;') { ent->Codepoint1 = 10937; fbreak;}; + ('prnsim;' | 'precnsim;') { ent->Codepoint1 = 8936; fbreak;}; + ('prod;' | 'Product;') { ent->Codepoint1 = 8719; fbreak;}; + ('profalar;') { ent->Codepoint1 = 9006; fbreak;}; + ('profline;') { ent->Codepoint1 = 8978; fbreak;}; + ('profsurf;') { ent->Codepoint1 = 8979; fbreak;}; + ('prurel;') { ent->Codepoint1 = 8880; fbreak;}; + ('pscr;') { ent->Codepoint1 = 120005; fbreak;}; + ('psi;') { ent->Codepoint1 = 968; fbreak;}; + ('puncsp;') { ent->Codepoint1 = 8200; fbreak;}; + ('qfr;') { ent->Codepoint1 = 120110; fbreak;}; + ('qopf;') { ent->Codepoint1 = 120162; fbreak;}; + ('qprime;') { ent->Codepoint1 = 8279; fbreak;}; + ('qscr;') { ent->Codepoint1 = 120006; fbreak;}; + ('quatint;') { ent->Codepoint1 = 10774; fbreak;}; + ('quest;') { ent->Codepoint1 = 63; fbreak;}; + ('questeq;' | 'equest;') { ent->Codepoint1 = 8799; fbreak;}; + ('rAarr;' | 'Rrightarrow;') { ent->Codepoint1 = 8667; fbreak;}; + ('rAtail;') { ent->Codepoint1 = 10524; fbreak;}; + ('rHar;') { ent->Codepoint1 = 10596; fbreak;}; + ('racute;') { ent->Codepoint1 = 341; fbreak;}; + ('raemptyv;') { ent->Codepoint1 = 10675; fbreak;}; + ('rangd;') { ent->Codepoint1 = 10642; fbreak;}; + ('range;') { ent->Codepoint1 = 10661; fbreak;}; + ('raquo;' | 'raquo') { ent->Codepoint1 = 187; fbreak;}; + ('rarrap;') { ent->Codepoint1 = 10613; fbreak;}; + ('rarrbfs;') { ent->Codepoint1 = 10528; fbreak;}; + ('rarrc;') { ent->Codepoint1 = 10547; fbreak;}; + ('rarrfs;') { ent->Codepoint1 = 10526; fbreak;}; + ('rarrhk;' | 'hookrightarrow;') { ent->Codepoint1 = 8618; fbreak;}; + ('rarrlp;' | 'looparrowright;') { ent->Codepoint1 = 8620; fbreak;}; + ('rarrpl;') { ent->Codepoint1 = 10565; fbreak;}; + ('rarrsim;') { ent->Codepoint1 = 10612; fbreak;}; + ('rarrw;' | 'rightsquigarrow;') { ent->Codepoint1 = 8605; fbreak;}; + ('ratail;') { ent->Codepoint1 = 10522; fbreak;}; + ('ratio;') { ent->Codepoint1 = 8758; fbreak;}; + ('rbarr;' | 'bkarow;') { ent->Codepoint1 = 10509; fbreak;}; + ('rbbrk;') { ent->Codepoint1 = 10099; fbreak;}; + ('rbrke;') { ent->Codepoint1 = 10636; fbreak;}; + ('rbrksld;') { ent->Codepoint1 = 10638; fbreak;}; + ('rbrkslu;') { ent->Codepoint1 = 10640; fbreak;}; + ('rcaron;') { ent->Codepoint1 = 345; fbreak;}; + ('rcedil;') { ent->Codepoint1 = 343; fbreak;}; + ('rcub;' | 'rbrace;') { ent->Codepoint1 = 125; fbreak;}; + ('rcy;') { ent->Codepoint1 = 1088; fbreak;}; + ('rdca;') { ent->Codepoint1 = 10551; fbreak;}; + ('rdldhar;') { ent->Codepoint1 = 10601; fbreak;}; + ('rdquo;' | 'CloseCurlyDoubleQuote;' | 'rdquor;') { ent->Codepoint1 = 8221; fbreak;}; + ('rdsh;') { ent->Codepoint1 = 8627; fbreak;}; + ('realine;' | 'Rscr;') { ent->Codepoint1 = 8475; fbreak;}; + ('reals;' | 'Ropf;') { ent->Codepoint1 = 8477; fbreak;}; + ('rect;') { ent->Codepoint1 = 9645; fbreak;}; + ('reg' | 'reg;' | 'REG;' | 'REG' | 'circledR;') { ent->Codepoint1 = 174; fbreak;}; + ('rfisht;') { ent->Codepoint1 = 10621; fbreak;}; + ('rfr;') { ent->Codepoint1 = 120111; fbreak;}; + ('rharul;') { ent->Codepoint1 = 10604; fbreak;}; + ('rho;') { ent->Codepoint1 = 961; fbreak;}; + ('rightarrowtail;' | 'rarrtl;') { ent->Codepoint1 = 8611; fbreak;}; + ('rightharpoonup;' | 'rharu;' | 'RightVector;') { ent->Codepoint1 = 8640; fbreak;}; + ('rightleftarrows;' | 'rlarr;' | 'RightArrowLeftArrow;') { ent->Codepoint1 = 8644; fbreak;}; + ('rightleftharpoons;' | 'Equilibrium;' | 'rlhar;') { ent->Codepoint1 = 8652; fbreak;}; + ('ring;') { ent->Codepoint1 = 730; fbreak;}; + ('risingdotseq;' | 'erDot;') { ent->Codepoint1 = 8787; fbreak;}; + ('rlm;') { ent->Codepoint1 = 8207; fbreak;}; + ('rmoustache;' | 'rmoust;') { ent->Codepoint1 = 9137; fbreak;}; + ('rnmid;') { ent->Codepoint1 = 10990; fbreak;}; + ('roang;') { ent->Codepoint1 = 10221; fbreak;}; + ('roarr;') { ent->Codepoint1 = 8702; fbreak;}; + ('ropar;') { ent->Codepoint1 = 10630; fbreak;}; + ('ropf;') { ent->Codepoint1 = 120163; fbreak;}; + ('roplus;') { ent->Codepoint1 = 10798; fbreak;}; + ('rotimes;') { ent->Codepoint1 = 10805; fbreak;}; + ('rpar;') { ent->Codepoint1 = 41; fbreak;}; + ('rpargt;') { ent->Codepoint1 = 10644; fbreak;}; + ('rppolint;') { ent->Codepoint1 = 10770; fbreak;}; + ('rrarr;' | 'rightrightarrows;') { ent->Codepoint1 = 8649; fbreak;}; + ('rsaquo;') { ent->Codepoint1 = 8250; fbreak;}; + ('rscr;') { ent->Codepoint1 = 120007; fbreak;}; + ('rsh;' | 'Rsh;') { ent->Codepoint1 = 8625; fbreak;}; + ('rsqb;' | 'rbrack;') { ent->Codepoint1 = 93; fbreak;}; + ('rsquo;' | 'rsquor;' | 'CloseCurlyQuote;') { ent->Codepoint1 = 8217; fbreak;}; + ('rthree;' | 'rightthreetimes;') { ent->Codepoint1 = 8908; fbreak;}; + ('rtimes;') { ent->Codepoint1 = 8906; fbreak;}; + ('rtrif;' | 'blacktriangleright;') { ent->Codepoint1 = 9656; fbreak;}; + ('rtriltri;') { ent->Codepoint1 = 10702; fbreak;}; + ('ruluhar;') { ent->Codepoint1 = 10600; fbreak;}; + ('rx;') { ent->Codepoint1 = 8478; fbreak;}; + ('sacute;') { ent->Codepoint1 = 347; fbreak;}; + ('sbquo;' | 'lsquor;') { ent->Codepoint1 = 8218; fbreak;}; + ('scE;') { ent->Codepoint1 = 10932; fbreak;}; + ('scaron;') { ent->Codepoint1 = 353; fbreak;}; + ('scedil;') { ent->Codepoint1 = 351; fbreak;}; + ('scirc;') { ent->Codepoint1 = 349; fbreak;}; + ('scnE;' | 'succneqq;') { ent->Codepoint1 = 10934; fbreak;}; + ('scnap;' | 'succnapprox;') { ent->Codepoint1 = 10938; fbreak;}; + ('scpolint;') { ent->Codepoint1 = 10771; fbreak;}; + ('scy;') { ent->Codepoint1 = 1089; fbreak;}; + ('sdot;') { ent->Codepoint1 = 8901; fbreak;}; + ('sdotb;' | 'dotsquare;') { ent->Codepoint1 = 8865; fbreak;}; + ('sdote;') { ent->Codepoint1 = 10854; fbreak;}; + ('seArr;') { ent->Codepoint1 = 8664; fbreak;}; + ('searhk;' | 'hksearow;') { ent->Codepoint1 = 10533; fbreak;}; + ('sect' | 'sect;') { ent->Codepoint1 = 167; fbreak;}; + ('semi;') { ent->Codepoint1 = 59; fbreak;}; + ('seswar;' | 'tosa;') { ent->Codepoint1 = 10537; fbreak;}; + ('setminus;' | 'ssetmn;' | 'Backslash;' | 'smallsetminus;' | 'setmn;') { ent->Codepoint1 = 8726; fbreak;}; + ('sext;') { ent->Codepoint1 = 10038; fbreak;}; + ('sfr;') { ent->Codepoint1 = 120112; fbreak;}; + ('sharp;') { ent->Codepoint1 = 9839; fbreak;}; + ('shchcy;') { ent->Codepoint1 = 1097; fbreak;}; + ('shcy;') { ent->Codepoint1 = 1096; fbreak;}; + ('shy;' | 'shy') { ent->Codepoint1 = 173; fbreak;}; + ('sigma;') { ent->Codepoint1 = 963; fbreak;}; + ('simdot;') { ent->Codepoint1 = 10858; fbreak;}; + ('simeq;' | 'TildeEqual;' | 'sime;') { ent->Codepoint1 = 8771; fbreak;}; + ('simg;') { ent->Codepoint1 = 10910; fbreak;}; + ('simgE;') { ent->Codepoint1 = 10912; fbreak;}; + ('siml;') { ent->Codepoint1 = 10909; fbreak;}; + ('simlE;') { ent->Codepoint1 = 10911; fbreak;}; + ('simne;') { ent->Codepoint1 = 8774; fbreak;}; + ('simplus;') { ent->Codepoint1 = 10788; fbreak;}; + ('simrarr;') { ent->Codepoint1 = 10610; fbreak;}; + ('smashp;') { ent->Codepoint1 = 10803; fbreak;}; + ('smeparsl;') { ent->Codepoint1 = 10724; fbreak;}; + ('smid;' | 'shortmid;' | 'VerticalBar;' | 'mid;') { ent->Codepoint1 = 8739; fbreak;}; + ('smile;' | 'ssmile;') { ent->Codepoint1 = 8995; fbreak;}; + ('smt;') { ent->Codepoint1 = 10922; fbreak;}; + ('smte;') { ent->Codepoint1 = 10924; fbreak;}; + ('softcy;') { ent->Codepoint1 = 1100; fbreak;}; + ('sol;') { ent->Codepoint1 = 47; fbreak;}; + ('solb;') { ent->Codepoint1 = 10692; fbreak;}; + ('solbar;') { ent->Codepoint1 = 9023; fbreak;}; + ('sopf;') { ent->Codepoint1 = 120164; fbreak;}; + ('spades;' | 'spadesuit;') { ent->Codepoint1 = 9824; fbreak;}; + ('sqsupset;' | 'sqsup;' | 'SquareSuperset;') { ent->Codepoint1 = 8848; fbreak;}; + ('sqsupseteq;' | 'sqsupe;' | 'SquareSupersetEqual;') { ent->Codepoint1 = 8850; fbreak;}; + ('sscr;') { ent->Codepoint1 = 120008; fbreak;}; + ('star;') { ent->Codepoint1 = 9734; fbreak;}; + ('straightepsilon;' | 'varepsilon;' | 'epsiv;') { ent->Codepoint1 = 1013; fbreak;}; + ('sub;' | 'subset;') { ent->Codepoint1 = 8834; fbreak;}; + ('subE;' | 'subseteqq;') { ent->Codepoint1 = 10949; fbreak;}; + ('subdot;') { ent->Codepoint1 = 10941; fbreak;}; + ('subedot;') { ent->Codepoint1 = 10947; fbreak;}; + ('submult;') { ent->Codepoint1 = 10945; fbreak;}; + ('subnE;' | 'subsetneqq;') { ent->Codepoint1 = 10955; fbreak;}; + ('subne;' | 'subsetneq;') { ent->Codepoint1 = 8842; fbreak;}; + ('subplus;') { ent->Codepoint1 = 10943; fbreak;}; + ('subrarr;') { ent->Codepoint1 = 10617; fbreak;}; + ('subsim;') { ent->Codepoint1 = 10951; fbreak;}; + ('subsub;') { ent->Codepoint1 = 10965; fbreak;}; + ('subsup;') { ent->Codepoint1 = 10963; fbreak;}; + ('succapprox;' | 'scap;') { ent->Codepoint1 = 10936; fbreak;}; + ('succnsim;' | 'scnsim;') { ent->Codepoint1 = 8937; fbreak;}; + ('sum;' | 'Sum;') { ent->Codepoint1 = 8721; fbreak;}; + ('sung;') { ent->Codepoint1 = 9834; fbreak;}; + ('sup1' | 'sup1;') { ent->Codepoint1 = 185; fbreak;}; + ('sup2' | 'sup2;') { ent->Codepoint1 = 178; fbreak;}; + ('sup3' | 'sup3;') { ent->Codepoint1 = 179; fbreak;}; + ('sup;' | 'Superset;' | 'supset;') { ent->Codepoint1 = 8835; fbreak;}; + ('supE;' | 'supseteqq;') { ent->Codepoint1 = 10950; fbreak;}; + ('supdot;') { ent->Codepoint1 = 10942; fbreak;}; + ('supdsub;') { ent->Codepoint1 = 10968; fbreak;}; + ('supedot;') { ent->Codepoint1 = 10948; fbreak;}; + ('suphsol;') { ent->Codepoint1 = 10185; fbreak;}; + ('suphsub;') { ent->Codepoint1 = 10967; fbreak;}; + ('suplarr;') { ent->Codepoint1 = 10619; fbreak;}; + ('supmult;') { ent->Codepoint1 = 10946; fbreak;}; + ('supnE;' | 'supsetneqq;') { ent->Codepoint1 = 10956; fbreak;}; + ('supne;' | 'supsetneq;') { ent->Codepoint1 = 8843; fbreak;}; + ('supplus;') { ent->Codepoint1 = 10944; fbreak;}; + ('supsim;') { ent->Codepoint1 = 10952; fbreak;}; + ('supsub;') { ent->Codepoint1 = 10964; fbreak;}; + ('supsup;') { ent->Codepoint1 = 10966; fbreak;}; + ('swArr;') { ent->Codepoint1 = 8665; fbreak;}; + ('swarhk;' | 'hkswarow;') { ent->Codepoint1 = 10534; fbreak;}; + ('swnwar;') { ent->Codepoint1 = 10538; fbreak;}; + ('szlig;' | 'szlig') { ent->Codepoint1 = 223; fbreak;}; + ('target;') { ent->Codepoint1 = 8982; fbreak;}; + ('tau;') { ent->Codepoint1 = 964; fbreak;}; + ('tbrk;' | 'OverBracket;') { ent->Codepoint1 = 9140; fbreak;}; + ('tcaron;') { ent->Codepoint1 = 357; fbreak;}; + ('tcedil;') { ent->Codepoint1 = 355; fbreak;}; + ('tcy;') { ent->Codepoint1 = 1090; fbreak;}; + ('tdot;' | 'TripleDot;') { ent->Codepoint1 = 8411; fbreak;}; + ('telrec;') { ent->Codepoint1 = 8981; fbreak;}; + ('tfr;') { ent->Codepoint1 = 120113; fbreak;}; + ('theta;') { ent->Codepoint1 = 952; fbreak;}; + ('thetasym;' | 'vartheta;' | 'thetav;') { ent->Codepoint1 = 977; fbreak;}; + ('thicksim;' | 'sim;' | 'Tilde;' | 'thksim;') { ent->Codepoint1 = 8764; fbreak;}; + ('thinsp;' | 'ThinSpace;') { ent->Codepoint1 = 8201; fbreak;}; + ('thorn' | 'thorn;') { ent->Codepoint1 = 254; fbreak;}; + ('times' | 'times;') { ent->Codepoint1 = 215; fbreak;}; + ('timesbar;') { ent->Codepoint1 = 10801; fbreak;}; + ('timesd;') { ent->Codepoint1 = 10800; fbreak;}; + ('toea;' | 'nesear;') { ent->Codepoint1 = 10536; fbreak;}; + ('topbot;') { ent->Codepoint1 = 9014; fbreak;}; + ('topcir;') { ent->Codepoint1 = 10993; fbreak;}; + ('topf;') { ent->Codepoint1 = 120165; fbreak;}; + ('topfork;') { ent->Codepoint1 = 10970; fbreak;}; + ('tprime;') { ent->Codepoint1 = 8244; fbreak;}; + ('triangle;' | 'utri;') { ent->Codepoint1 = 9653; fbreak;}; + ('triangleleft;' | 'ltri;') { ent->Codepoint1 = 9667; fbreak;}; + ('triangleright;' | 'rtri;') { ent->Codepoint1 = 9657; fbreak;}; + ('trianglerighteq;' | 'rtrie;' | 'RightTriangleEqual;') { ent->Codepoint1 = 8885; fbreak;}; + ('tridot;') { ent->Codepoint1 = 9708; fbreak;}; + ('trie;' | 'triangleq;') { ent->Codepoint1 = 8796; fbreak;}; + ('triminus;') { ent->Codepoint1 = 10810; fbreak;}; + ('triplus;') { ent->Codepoint1 = 10809; fbreak;}; + ('trisb;') { ent->Codepoint1 = 10701; fbreak;}; + ('tritime;') { ent->Codepoint1 = 10811; fbreak;}; + ('trpezium;') { ent->Codepoint1 = 9186; fbreak;}; + ('tscr;') { ent->Codepoint1 = 120009; fbreak;}; + ('tscy;') { ent->Codepoint1 = 1094; fbreak;}; + ('tshcy;') { ent->Codepoint1 = 1115; fbreak;}; + ('tstrok;') { ent->Codepoint1 = 359; fbreak;}; + ('twixt;' | 'between;') { ent->Codepoint1 = 8812; fbreak;}; + ('twoheadrightarrow;' | 'Rarr;') { ent->Codepoint1 = 8608; fbreak;}; + ('uHar;') { ent->Codepoint1 = 10595; fbreak;}; + ('uacute' | 'uacute;') { ent->Codepoint1 = 250; fbreak;}; + ('ubrcy;') { ent->Codepoint1 = 1118; fbreak;}; + ('ubreve;') { ent->Codepoint1 = 365; fbreak;}; + ('ucirc' | 'ucirc;') { ent->Codepoint1 = 251; fbreak;}; + ('ucy;') { ent->Codepoint1 = 1091; fbreak;}; + ('udblac;') { ent->Codepoint1 = 369; fbreak;}; + ('udhar;' | 'UpEquilibrium;') { ent->Codepoint1 = 10606; fbreak;}; + ('ufisht;') { ent->Codepoint1 = 10622; fbreak;}; + ('ufr;') { ent->Codepoint1 = 120114; fbreak;}; + ('ugrave' | 'ugrave;') { ent->Codepoint1 = 249; fbreak;}; + ('uharr;' | 'upharpoonright;' | 'RightUpVector;') { ent->Codepoint1 = 8638; fbreak;}; + ('uhblk;') { ent->Codepoint1 = 9600; fbreak;}; + ('ulcorner;' | 'ulcorn;') { ent->Codepoint1 = 8988; fbreak;}; + ('ulcrop;') { ent->Codepoint1 = 8975; fbreak;}; + ('ultri;') { ent->Codepoint1 = 9720; fbreak;}; + ('umacr;') { ent->Codepoint1 = 363; fbreak;}; + ('uml' | 'uml;' | 'Dot;' | 'DoubleDot;' | 'die;') { ent->Codepoint1 = 168; fbreak;}; + ('uogon;') { ent->Codepoint1 = 371; fbreak;}; + ('uopf;') { ent->Codepoint1 = 120166; fbreak;}; + ('uparrow;' | 'UpArrow;' | 'uarr;' | 'ShortUpArrow;') { ent->Codepoint1 = 8593; fbreak;}; + ('uplus;' | 'UnionPlus;') { ent->Codepoint1 = 8846; fbreak;}; + ('upsih;' | 'Upsi;') { ent->Codepoint1 = 978; fbreak;}; + ('upsilon;' | 'upsi;') { ent->Codepoint1 = 965; fbreak;}; + ('urcorn;' | 'urcorner;') { ent->Codepoint1 = 8989; fbreak;}; + ('urcrop;') { ent->Codepoint1 = 8974; fbreak;}; + ('uring;') { ent->Codepoint1 = 367; fbreak;}; + ('urtri;') { ent->Codepoint1 = 9721; fbreak;}; + ('uscr;') { ent->Codepoint1 = 120010; fbreak;}; + ('utdot;') { ent->Codepoint1 = 8944; fbreak;}; + ('utilde;') { ent->Codepoint1 = 361; fbreak;}; + ('uuarr;' | 'upuparrows;') { ent->Codepoint1 = 8648; fbreak;}; + ('uuml;' | 'uuml') { ent->Codepoint1 = 252; fbreak;}; + ('uwangle;') { ent->Codepoint1 = 10663; fbreak;}; + ('vBar;') { ent->Codepoint1 = 10984; fbreak;}; + ('vBarv;') { ent->Codepoint1 = 10985; fbreak;}; + ('vDash;' | 'DoubleRightTee;') { ent->Codepoint1 = 8872; fbreak;}; + ('vangrt;') { ent->Codepoint1 = 10652; fbreak;}; + ('varkappa;' | 'kappav;') { ent->Codepoint1 = 1008; fbreak;}; + ('varnothing;' | 'empty;' | 'emptyset;' | 'emptyv;') { ent->Codepoint1 = 8709; fbreak;}; + ('varpi;' | 'piv;') { ent->Codepoint1 = 982; fbreak;}; + ('varrho;' | 'rhov;') { ent->Codepoint1 = 1009; fbreak;}; + ('varsigma;' | 'sigmaf;' | 'sigmav;') { ent->Codepoint1 = 962; fbreak;}; + ('vartriangleright;' | 'RightTriangle;' | 'vrtri;') { ent->Codepoint1 = 8883; fbreak;}; + ('vcy;') { ent->Codepoint1 = 1074; fbreak;}; + ('vee;' | 'or;') { ent->Codepoint1 = 8744; fbreak;}; + ('veebar;') { ent->Codepoint1 = 8891; fbreak;}; + ('veeeq;') { ent->Codepoint1 = 8794; fbreak;}; + ('vellip;') { ent->Codepoint1 = 8942; fbreak;}; + ('vfr;') { ent->Codepoint1 = 120115; fbreak;}; + ('vopf;') { ent->Codepoint1 = 120167; fbreak;}; + ('vprop;' | 'propto;' | 'Proportional;' | 'prop;' | 'varpropto;') { ent->Codepoint1 = 8733; fbreak;}; + ('vscr;') { ent->Codepoint1 = 120011; fbreak;}; + ('vzigzag;') { ent->Codepoint1 = 10650; fbreak;}; + ('wcirc;') { ent->Codepoint1 = 373; fbreak;}; + ('wedbar;') { ent->Codepoint1 = 10847; fbreak;}; + ('wedge;' | 'and;') { ent->Codepoint1 = 8743; fbreak;}; + ('wedgeq;') { ent->Codepoint1 = 8793; fbreak;}; + ('wfr;') { ent->Codepoint1 = 120116; fbreak;}; + ('wopf;') { ent->Codepoint1 = 120168; fbreak;}; + ('wp;' | 'weierp;') { ent->Codepoint1 = 8472; fbreak;}; + ('wscr;') { ent->Codepoint1 = 120012; fbreak;}; + ('xcirc;' | 'bigcirc;') { ent->Codepoint1 = 9711; fbreak;}; + ('xfr;') { ent->Codepoint1 = 120117; fbreak;}; + ('xhArr;' | 'DoubleLongLeftRightArrow;' | 'Longleftrightarrow;') { ent->Codepoint1 = 10234; fbreak;}; + ('xharr;' | 'LongLeftRightArrow;' | 'longleftrightarrow;') { ent->Codepoint1 = 10231; fbreak;}; + ('xi;') { ent->Codepoint1 = 958; fbreak;}; + ('xlArr;' | 'DoubleLongLeftArrow;' | 'Longleftarrow;') { ent->Codepoint1 = 10232; fbreak;}; + ('xlarr;' | 'longleftarrow;' | 'LongLeftArrow;') { ent->Codepoint1 = 10229; fbreak;}; + ('xmap;' | 'longmapsto;') { ent->Codepoint1 = 10236; fbreak;}; + ('xnis;') { ent->Codepoint1 = 8955; fbreak;}; + ('xopf;') { ent->Codepoint1 = 120169; fbreak;}; + ('xoplus;' | 'bigoplus;') { ent->Codepoint1 = 10753; fbreak;}; + ('xscr;') { ent->Codepoint1 = 120013; fbreak;}; + ('xuplus;' | 'biguplus;') { ent->Codepoint1 = 10756; fbreak;}; + ('yacute;' | 'yacute') { ent->Codepoint1 = 253; fbreak;}; + ('yacy;') { ent->Codepoint1 = 1103; fbreak;}; + ('ycirc;') { ent->Codepoint1 = 375; fbreak;}; + ('ycy;') { ent->Codepoint1 = 1099; fbreak;}; + ('yen;' | 'yen') { ent->Codepoint1 = 165; fbreak;}; + ('yfr;') { ent->Codepoint1 = 120118; fbreak;}; + ('yicy;') { ent->Codepoint1 = 1111; fbreak;}; + ('yopf;') { ent->Codepoint1 = 120170; fbreak;}; + ('yscr;') { ent->Codepoint1 = 120014; fbreak;}; + ('yucy;') { ent->Codepoint1 = 1102; fbreak;}; + ('yuml' | 'yuml;') { ent->Codepoint1 = 255; fbreak;}; + ('zacute;') { ent->Codepoint1 = 378; fbreak;}; + ('zcaron;') { ent->Codepoint1 = 382; fbreak;}; + ('zcy;') { ent->Codepoint1 = 1079; fbreak;}; + ('zdot;') { ent->Codepoint1 = 380; fbreak;}; + ('zeetrf;' | 'Zfr;') { ent->Codepoint1 = 8488; fbreak;}; + ('zeta;') { ent->Codepoint1 = 950; fbreak;}; + ('zfr;') { ent->Codepoint1 = 120119; fbreak;}; + ('zhcy;') { ent->Codepoint1 = 1078; fbreak;}; + ('zigrarr;') { ent->Codepoint1 = 8669; fbreak;}; + ('zopf;') { ent->Codepoint1 = 120171; fbreak;}; + ('zscr;') { ent->Codepoint1 = 120015; fbreak;}; + ('zwj;') { ent->Codepoint1 = 8205; fbreak;}; + ('zwnj;') { ent->Codepoint1 = 8204; fbreak;}; + ('NotEqualTilde;') { ent->Codepoint1 = 8770; ent->Codepoint2 = 824; fbreak;}; + ('NotGreaterFullEqual;') { ent->Codepoint1 = 8807; ent->Codepoint2 = 824; fbreak;}; + ('NotGreaterGreater;') { ent->Codepoint1 = 8811; ent->Codepoint2 = 824; fbreak;}; + ('NotGreaterSlantEqual;') { ent->Codepoint1 = 10878; ent->Codepoint2 = 824; fbreak;}; + ('NotHumpDownHump;') { ent->Codepoint1 = 8782; ent->Codepoint2 = 824; fbreak;}; + ('NotHumpEqual;') { ent->Codepoint1 = 8783; ent->Codepoint2 = 824; fbreak;}; + ('NotLeftTriangleBar;') { ent->Codepoint1 = 10703; ent->Codepoint2 = 824; fbreak;}; + ('NotLessLess;') { ent->Codepoint1 = 8810; ent->Codepoint2 = 824; fbreak;}; + ('NotLessSlantEqual;') { ent->Codepoint1 = 10877; ent->Codepoint2 = 824; fbreak;}; + ('NotNestedGreaterGreater;') { ent->Codepoint1 = 10914; ent->Codepoint2 = 824; fbreak;}; + ('NotNestedLessLess;') { ent->Codepoint1 = 10913; ent->Codepoint2 = 824; fbreak;}; + ('NotPrecedesEqual;') { ent->Codepoint1 = 10927; ent->Codepoint2 = 824; fbreak;}; + ('NotRightTriangleBar;') { ent->Codepoint1 = 10704; ent->Codepoint2 = 824; fbreak;}; + ('NotSquareSubset;') { ent->Codepoint1 = 8847; ent->Codepoint2 = 824; fbreak;}; + ('NotSquareSuperset;') { ent->Codepoint1 = 8848; ent->Codepoint2 = 824; fbreak;}; + ('NotSubset;') { ent->Codepoint1 = 8834; ent->Codepoint2 = 8402; fbreak;}; + ('NotSucceedsEqual;') { ent->Codepoint1 = 10928; ent->Codepoint2 = 824; fbreak;}; + ('NotSucceedsTilde;') { ent->Codepoint1 = 8831; ent->Codepoint2 = 824; fbreak;}; + ('NotSuperset;') { ent->Codepoint1 = 8835; ent->Codepoint2 = 8402; fbreak;}; + ('ThickSpace;') { ent->Codepoint1 = 8287; ent->Codepoint2 = 8202; fbreak;}; + ('acE;') { ent->Codepoint1 = 8766; ent->Codepoint2 = 819; fbreak;}; + ('bne;') { ent->Codepoint1 = 61; ent->Codepoint2 = 8421; fbreak;}; + ('bnequiv;') { ent->Codepoint1 = 8801; ent->Codepoint2 = 8421; fbreak;}; + ('caps;') { ent->Codepoint1 = 8745; ent->Codepoint2 = 65024; fbreak;}; + ('cups;') { ent->Codepoint1 = 8746; ent->Codepoint2 = 65024; fbreak;}; + ('fjlig;') { ent->Codepoint1 = 102; ent->Codepoint2 = 106; fbreak;}; + ('gesl;') { ent->Codepoint1 = 8923; ent->Codepoint2 = 65024; fbreak;}; + ('gvertneqq;') { ent->Codepoint1 = 8809; ent->Codepoint2 = 65024; fbreak;}; + ('gvnE;') { ent->Codepoint1 = 8809; ent->Codepoint2 = 65024; fbreak;}; + ('lates;') { ent->Codepoint1 = 10925; ent->Codepoint2 = 65024; fbreak;}; + ('lesg;') { ent->Codepoint1 = 8922; ent->Codepoint2 = 65024; fbreak;}; + ('lvertneqq;') { ent->Codepoint1 = 8808; ent->Codepoint2 = 65024; fbreak;}; + ('lvnE;') { ent->Codepoint1 = 8808; ent->Codepoint2 = 65024; fbreak;}; + ('nGg;') { ent->Codepoint1 = 8921; ent->Codepoint2 = 824; fbreak;}; + ('nGt;') { ent->Codepoint1 = 8811; ent->Codepoint2 = 8402; fbreak;}; + ('nGtv;') { ent->Codepoint1 = 8811; ent->Codepoint2 = 824; fbreak;}; + ('nLl;') { ent->Codepoint1 = 8920; ent->Codepoint2 = 824; fbreak;}; + ('nLt;') { ent->Codepoint1 = 8810; ent->Codepoint2 = 8402; fbreak;}; + ('nLtv;') { ent->Codepoint1 = 8810; ent->Codepoint2 = 824; fbreak;}; + ('nang;') { ent->Codepoint1 = 8736; ent->Codepoint2 = 8402; fbreak;}; + ('napE;') { ent->Codepoint1 = 10864; ent->Codepoint2 = 824; fbreak;}; + ('napid;') { ent->Codepoint1 = 8779; ent->Codepoint2 = 824; fbreak;}; + ('nbump;') { ent->Codepoint1 = 8782; ent->Codepoint2 = 824; fbreak;}; + ('nbumpe;') { ent->Codepoint1 = 8783; ent->Codepoint2 = 824; fbreak;}; + ('ncongdot;') { ent->Codepoint1 = 10861; ent->Codepoint2 = 824; fbreak;}; + ('nedot;') { ent->Codepoint1 = 8784; ent->Codepoint2 = 824; fbreak;}; + ('nesim;') { ent->Codepoint1 = 8770; ent->Codepoint2 = 824; fbreak;}; + ('ngE;') { ent->Codepoint1 = 8807; ent->Codepoint2 = 824; fbreak;}; + ('ngeqq;') { ent->Codepoint1 = 8807; ent->Codepoint2 = 824; fbreak;}; + ('ngeqslant;') { ent->Codepoint1 = 10878; ent->Codepoint2 = 824; fbreak;}; + ('nges;') { ent->Codepoint1 = 10878; ent->Codepoint2 = 824; fbreak;}; + ('nlE;') { ent->Codepoint1 = 8806; ent->Codepoint2 = 824; fbreak;}; + ('nleqq;') { ent->Codepoint1 = 8806; ent->Codepoint2 = 824; fbreak;}; + ('nleqslant;') { ent->Codepoint1 = 10877; ent->Codepoint2 = 824; fbreak;}; + ('nles;') { ent->Codepoint1 = 10877; ent->Codepoint2 = 824; fbreak;}; + ('notinE;') { ent->Codepoint1 = 8953; ent->Codepoint2 = 824; fbreak;}; + ('notindot;') { ent->Codepoint1 = 8949; ent->Codepoint2 = 824; fbreak;}; + ('nparsl;') { ent->Codepoint1 = 11005; ent->Codepoint2 = 8421; fbreak;}; + ('npart;') { ent->Codepoint1 = 8706; ent->Codepoint2 = 824; fbreak;}; + ('npre;') { ent->Codepoint1 = 10927; ent->Codepoint2 = 824; fbreak;}; + ('npreceq;') { ent->Codepoint1 = 10927; ent->Codepoint2 = 824; fbreak;}; + ('nrarrc;') { ent->Codepoint1 = 10547; ent->Codepoint2 = 824; fbreak;}; + ('nrarrw;') { ent->Codepoint1 = 8605; ent->Codepoint2 = 824; fbreak;}; + ('nsce;') { ent->Codepoint1 = 10928; ent->Codepoint2 = 824; fbreak;}; + ('nsubE;') { ent->Codepoint1 = 10949; ent->Codepoint2 = 824; fbreak;}; + ('nsubset;') { ent->Codepoint1 = 8834; ent->Codepoint2 = 8402; fbreak;}; + ('nsubseteqq;') { ent->Codepoint1 = 10949; ent->Codepoint2 = 824; fbreak;}; + ('nsucceq;') { ent->Codepoint1 = 10928; ent->Codepoint2 = 824; fbreak;}; + ('nsupE;') { ent->Codepoint1 = 10950; ent->Codepoint2 = 824; fbreak;}; + ('nsupset;') { ent->Codepoint1 = 8835; ent->Codepoint2 = 8402; fbreak;}; + ('nsupseteqq;') { ent->Codepoint1 = 10950; ent->Codepoint2 = 824; fbreak;}; + ('nvap;') { ent->Codepoint1 = 8781; ent->Codepoint2 = 8402; fbreak;}; + ('nvge;') { ent->Codepoint1 = 8805; ent->Codepoint2 = 8402; fbreak;}; + ('nvgt;') { ent->Codepoint1 = 62; ent->Codepoint2 = 8402; fbreak;}; + ('nvle;') { ent->Codepoint1 = 8804; ent->Codepoint2 = 8402; fbreak;}; + ('nvlt;') { ent->Codepoint1 = 60; ent->Codepoint2 = 8402; fbreak;}; + ('nvltrie;') { ent->Codepoint1 = 8884; ent->Codepoint2 = 8402; fbreak;}; + ('nvrtrie;') { ent->Codepoint1 = 8885; ent->Codepoint2 = 8402; fbreak;}; + ('nvsim;') { ent->Codepoint1 = 8764; ent->Codepoint2 = 8402; fbreak;}; + ('race;') { ent->Codepoint1 = 8765; ent->Codepoint2 = 817; fbreak;}; + ('smtes;') { ent->Codepoint1 = 10924; ent->Codepoint2 = 65024; fbreak;}; + ('sqcaps;') { ent->Codepoint1 = 8851; ent->Codepoint2 = 65024; fbreak;}; + ('sqcups;') { ent->Codepoint1 = 8852; ent->Codepoint2 = 65024; fbreak;}; + ('varsubsetneq;') { ent->Codepoint1 = 8842; ent->Codepoint2 = 65024; fbreak;}; + ('varsubsetneqq;') { ent->Codepoint1 = 10955; ent->Codepoint2 = 65024; fbreak;}; + ('varsupsetneq;') { ent->Codepoint1 = 8843; ent->Codepoint2 = 65024; fbreak;}; + ('varsupsetneqq;') { ent->Codepoint1 = 10956; ent->Codepoint2 = 65024; fbreak;}; + ('vnsub;') { ent->Codepoint1 = 8834; ent->Codepoint2 = 8402; fbreak;}; + ('vnsup;') { ent->Codepoint1 = 8835; ent->Codepoint2 = 8402; fbreak;}; + ('vsubnE;') { ent->Codepoint1 = 10955; ent->Codepoint2 = 65024; fbreak;}; + ('vsubne;') { ent->Codepoint1 = 8842; ent->Codepoint2 = 65024; fbreak;}; + ('vsupnE;') { ent->Codepoint1 = 10956; ent->Codepoint2 = 65024; fbreak;}; + ('vsupne;') { ent->Codepoint1 = 8843; ent->Codepoint2 = 65024; fbreak;}; + *|; + + write data; +}%% + +bool DecodeNamedEntity(const unsigned char* inp, size_t len, TEntity* ent) { + int cs; + int act; + const unsigned char *ts, *te; + %% write init; + + const unsigned char* p = inp; + const unsigned char* pe = p + len; + const unsigned char *eof = pe; + + ent->Len = 0; + ent->Codepoint1 = 0; + ent->Codepoint2 = 0; + + %% write exec; + ent->Len = te - ts; + if (ent->Codepoint1 == 0) { + return false; + } + + return true; +} diff --git a/library/cpp/html/entity/htmlentity.cpp b/library/cpp/html/entity/htmlentity.cpp new file mode 100644 index 00000000000..c3508eac950 --- /dev/null +++ b/library/cpp/html/entity/htmlentity.cpp @@ -0,0 +1,546 @@ +#include "htmlentity.h" + +#include <util/string/util.h> +#include <util/system/defaults.h> +#include <library/cpp/charset/recyr.hh> +#include <library/cpp/charset/codepage.h> +#include <util/charset/utf8.h> +#include <util/string/strspn.h> +#include <util/string/hex.h> +#include <util/generic/hash_set.h> + +#define isalpha(c) ('a' <= (c) && (c) <= 'z' || 'A' <= (c) && (c) <= 'Z') +#define isdigit(c) ('0' <= (c) && (c) <= '9') +#define isalnum(c) (isalpha(c) || isdigit(c)) + +#define TEST_CHAR_AT_IMPL(condition, i, len) ((i < (len)) && (condition(s[i]))) +#define TEST_CHAR_AT(condition, i) TEST_CHAR_AT_IMPL(condition, i, len) + +static const ui32 UNICODE_BORDER = 0x10FFFF; + +enum EPureType { + PT_SEMIC, // Semicolumn shoud always present + PT_HTML5, + PT_HTML5_ATTR +}; + +// http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#consume-a-character-reference (anything else comments) +template <EPureType PURE> +static inline bool PureCondition(const char* afterEntityStr, size_t len) { + if (PURE == PT_HTML5) + return true; + + const char* s = afterEntityStr; + if (PURE == PT_SEMIC) { + return TEST_CHAR_AT(';' ==, 0); + } else { + return TEST_CHAR_AT(';' ==, 0) || !(TEST_CHAR_AT('=' ==, 1) || TEST_CHAR_AT(isalnum, 1)); + } +} + +template <EPureType PURE> +inline static bool DetectEntity(const unsigned char* const str, size_t len, TEntity* entity) { + if (len == 0) + return 0; + + Y_ASSERT(str[0] == '&'); + + if (DecodeNamedEntity(str + 1, len - 1, entity)) { // exclude '&' + if (PureCondition<PURE>((const char*)str + entity->Len, len - entity->Len)) { + entity->Len += 1; // add '&' + Y_ASSERT(entity->Len <= len); + return true; + } + } + + return false; +} + +static size_t DetectNumber(const char* inputStr, size_t len, wchar32* codepoint) { + if (len < 2) + return 0; + + Y_ASSERT(inputStr[0] == '#'); + + static TCompactStrSpn DIGITS("0123456789"); + + const char* digitEnd = DIGITS.FindFirstNotOf<const char*>(inputStr + 1, inputStr + len); + + if (digitEnd == inputStr + 1) + return 0; + + *codepoint = inputStr[1] - '0'; + for (auto sym = inputStr + 2; sym != digitEnd; ++sym) { + if (*codepoint < UNICODE_BORDER) + *codepoint = *codepoint * 10 + (*sym - '0'); + } + + return digitEnd - inputStr; +} + +static size_t DetectXNumber(const char* inputStr, size_t len, wchar32* codepoint) { + if (len < 3) + return 0; + + Y_ASSERT(inputStr[0] == '#'); + Y_ASSERT(inputStr[1] == 'x' || inputStr[1] == 'X'); + + static TCompactStrSpn XDIGITS("0123456789ABCDEFabcdef"); + + const char* digitEnd = XDIGITS.FindFirstNotOf<const char*>(inputStr + 2, inputStr + len); + + if (digitEnd == inputStr + 2) + return 0; + + *codepoint = Char2Digit(inputStr[2]); + for (const char* sym = inputStr + 3; sym != digitEnd; ++sym) { + if (*codepoint < UNICODE_BORDER) + *codepoint = *codepoint * 16 + Char2Digit(*sym); + } + + return digitEnd - inputStr; +} + +/////////////////////////////////////////////////////////////////////////////// + +static inline void FixBadNumber(wchar32* c) { + if (*c == 0) + *c = BROKEN_RUNE; + + if ((0xD800 <= *c && *c <= 0xDFFF) || *c > UNICODE_BORDER) { + *c = BROKEN_RUNE; + } + + if (128 <= *c && *c < 160) + *c = CodePageByCharset(CODES_ASCII)->unicode[*c]; + + // I don't know what does it mean and what the reason. + if (0xF000 <= *c && *c < 0xF100) // UNKNOWN PLANE + *c = '\x20'; +} + +template <EPureType PURE> +static inline size_t DoNumber(const unsigned char* const s, size_t len, wchar32* c) { + Y_ASSERT(s[0] == '#'); + + size_t clen = 0; + + if (s[1] == 'x' || s[1] == 'X') + clen = DetectXNumber((const char*)s, len, c); + else + clen = DetectNumber((const char*)s, len, c); + + if (clen != 0) { + if (!PureCondition<PURE>((const char*)s + clen, len - clen)) { + return 0; + } + + FixBadNumber(c); + return clen + TEST_CHAR_AT(';' ==, clen); + } + + return 0; +} + +static inline size_t DoSymbol(ECharset cp, const unsigned char* const s, size_t len, wchar32* c) { + size_t written = 0; + size_t clen = 0; + RECODE_RESULT res = RecodeToUnicode(cp, (const char*)s, c, len, 1, clen, written); + bool error = !(res == RECODE_OK || res == RECODE_EOOUTPUT); + if (error || clen == 0) + clen = 1; + if (error || written == 0) + *c = BROKEN_RUNE; + + return clen; +} + +/////////////////////////////////////////////////////////////////////////////// + +template <EPureType PURE> +inline bool HtTryDecodeEntityT(const unsigned char* const s, size_t len, TEntity* entity) { + Y_ASSERT(len != 0); + Y_ASSERT(s[0] == '&'); + + if (len > 2) { + if (isalpha(s[1])) { + return DetectEntity<PURE>(s, len, entity); + } + + if (s[1] == '#') { + entity->Codepoint2 = 0; + entity->Len = DoNumber<PURE>(s + 1, len - 1, &(entity->Codepoint1)); + if (entity->Len != 0) { + entity->Len += 1; // Add '&' + Y_ASSERT(entity->Len <= len); + return true; + } + } + } + + return false; +} + +template <EPureType PURE> +inline bool HtTryDecodeEntityT(const TStringBuf& str, TEntity* entity) { + return HtTryDecodeEntityT<PURE>((const unsigned char*)str.data(), str.length(), entity); +} + +bool HtTryDecodeEntity(const char* str, size_t len, TEntity* entity) { + return HtTryDecodeEntityT<PT_HTML5>((const unsigned char*)str, len, entity); +} + +/////////////////////////////////////////////////////////////////////////////// + +// the string is in ASCII-compatible encoding, so entities are found as-is +TStringBuf HtTryEntDecodeAsciiCompat(const TStringBuf& src, char* dst, size_t dstlen, ECharset cpsrc) { + const char* const dstbeg = dst; + const char* const dstend = dstbeg + dstlen; + + TStringBuf out; + TStringBuf str(src); + + for (size_t curpos = 0, nwr = 0;;) { + const size_t nxtpos = str.find('&', curpos); + const TStringBuf tail = str.SubStr(nxtpos); + + if (tail.empty()) { + if (dstbeg == dst) { // we haven't written anything + out = src; + break; + } + if (dst + str.length() <= dstend) { // sufficient space + memmove(dst, str.data(), str.length()); + out = TStringBuf(dstbeg, dst - dstbeg + str.length()); + } + break; + } + + if (dst + nxtpos >= dstend) // insufficient space + break; + + TEntity entity; + if (!HtTryDecodeEntityT<PT_HTML5>(tail, &entity)) { + ++curpos; + continue; + } + + memmove(dst, str.data(), nxtpos); + dst += nxtpos; + + if (RECODE_OK != RecodeFromUnicode(cpsrc, entity.Codepoint1, dst, dstend - dst, nwr)) + break; + + dst += nwr; + + if (entity.Codepoint2 != 0) { + if (RECODE_OK != RecodeFromUnicode(cpsrc, entity.Codepoint2, dst, dstend - dst, nwr)) + break; + dst += nwr; + } + + str = tail.SubStr(entity.Len); + curpos = 0; + } + + return out; +} + +// the string is in ASCII-compatible encoding, so entities are found as-is +// however, the target encoding is potentially different +TStringBuf HtTryEntDecodeAsciiCompat(const TStringBuf& src, char* dst, size_t dstlen, ECharset cpsrc, ECharset cpdst) { + if (cpsrc == cpdst) + return HtTryEntDecodeAsciiCompat(src, dst, dstlen, cpsrc); + + const char* const dstbeg = dst; + const char* const dstend = dstbeg + dstlen; + + TStringBuf out; + TStringBuf str(src); + + for (size_t curpos = 0, nrd, nwr;;) { + const size_t nxtpos = str.find('&', curpos); + const TStringBuf tail = str.SubStr(nxtpos); + + if (tail.empty()) { + if (RECODE_OK == Recode(cpsrc, cpdst, str.data(), dst, str.length(), dstend - dst, nrd, nwr)) + out = TStringBuf(dstbeg, dst - dstbeg + nwr); + break; + } + + TEntity entity; + if (!HtTryDecodeEntityT<PT_HTML5>(tail, &entity)) { + ++curpos; + continue; + } + + if (RECODE_OK != Recode(cpsrc, cpdst, str.data(), dst, nxtpos, dstend - dst, nrd, nwr)) + break; + dst += nwr; + + if (RECODE_OK != RecodeFromUnicode(cpsrc, entity.Codepoint1, dst, dstend - dst, nwr)) + break; + + dst += nwr; + + if (entity.Codepoint2 != 0) { + if (RECODE_OK != RecodeFromUnicode(cpsrc, entity.Codepoint2, dst, dstend - dst, nwr)) + break; + dst += nwr; + } + + str = tail.SubStr(entity.Len); + curpos = 0; + } + + return out; +} + +/////////////////////////////////////////////////////////////////////////////// + +template <EPureType PURE> +inline static std::pair<wchar32, wchar32> HtEntDecodeStepT(ECharset cp, const unsigned char*& s, size_t len, unsigned char** map, bool old = false) { + if (len == 0) + return std::make_pair(0, 0); + + TEntity entity = {0, 0, 0}; + if (s[0] == '&') { + if (!HtTryDecodeEntityT<PURE>(s, len, &entity) || (entity.Codepoint2 != 0 && old)) { + entity.Len = 1; + entity.Codepoint1 = '&'; + } + } else { + entity.Len = DoSymbol(cp, s, len, &(entity.Codepoint1)); + } + + Y_ASSERT(entity.Len <= len); + s += entity.Len; + + if (map && *map) + *(*map)++ = (unsigned char)entity.Len; + + return std::make_pair(entity.Codepoint1, entity.Codepoint2); +} + +std::pair<wchar32, wchar32> HtEntDecodeStep(ECharset cp, const unsigned char*& str, size_t len, unsigned char** map) { + return HtEntDecodeStepT<PT_HTML5>(cp, str, len, map); +} + +std::pair<wchar32, wchar32> HtEntPureDecodeStep(ECharset cp, const unsigned char*& str, size_t len, unsigned char** map) { + return HtEntDecodeStepT<PT_SEMIC>(cp, str, len, map); +} + +wchar32 HtEntOldDecodeStep(ECharset cp, const unsigned char*& str, size_t len, unsigned char** map) { + return HtEntDecodeStepT<PT_HTML5>(cp, str, len, map, true).first; +} + +wchar32 HtEntOldPureDecodeStep(ECharset cp, const unsigned char*& str, size_t len, unsigned char** map) { + return HtEntDecodeStepT<PT_SEMIC>(cp, str, len, map, true).first; +} + +/////////////////////////////////////////////////////////////////////////////// + +size_t HtEntDecode(ECharset cp, const char* str, size_t len, wchar32* buf, size_t buflen, unsigned char* map) { + const unsigned char* s = (const unsigned char*)str; + const unsigned char* end = (const unsigned char*)(str + len); + size_t ret = 0; + while (s < end & ret < buflen) { + const auto codepoints = HtEntDecodeStep(cp, s, end - s, &map); + *buf++ = codepoints.first; + ret++; + if (codepoints.second != 0 && ret < buflen) { + *buf++ = codepoints.second; + ret++; + } + } + return ret; +} + +static const THashSet<ECharset> nonCompliant = { + CODES_UNKNOWNPLANE, + CODES_CP864, + CODES_ISO646_CN, + CODES_ISO646_JP, + CODES_JISX0201, + CODES_TCVN, + CODES_TDS565, + CODES_VISCII}; + +static bool IsAsciiCompliant(ECharset dc) { + return nonCompliant.count(dc) == 0 && (SingleByteCodepage(dc) || dc == CODES_UTF8); +} + +const ui32 LOW_CHAR_COUNT = 0x80; + +class TNotRecoded { +public: + bool Flags[LOW_CHAR_COUNT << 1]; + bool AsciiCharsets[CODES_MAX]; + +public: + TNotRecoded() { + memset(&Flags[0], true, LOW_CHAR_COUNT * sizeof(bool)); + memset(&Flags[LOW_CHAR_COUNT], false, LOW_CHAR_COUNT * sizeof(bool)); + Flags[(ui8)'&'] = false; + Flags[0x7E] = false; + Flags[0x5C] = false; + for (ui32 c = 0; c < CODES_MAX; c++) { + AsciiCharsets[c] = IsAsciiCompliant((ECharset)c); + } + } + + bool NotRecoded(unsigned char c) const noexcept { + return Flags[static_cast<ui8>(c)]; + } + + bool AsciiComliant(ECharset c) const noexcept { + return (static_cast<int>(c) >= 0) ? AsciiCharsets[c] : false; + } +}; + +const TNotRecoded NotRecoded; + +template <EPureType PURE> +static size_t HtEntDecodeToUtf8T(ECharset cp, + const char* src, size_t srclen, + char* dst, size_t dstlen) { + const unsigned char* srcptr = reinterpret_cast<const unsigned char*>(src); + unsigned char* dstptr = reinterpret_cast<unsigned char*>(dst); + const unsigned char* const dstbeg = dstptr; + const unsigned char* const srcend = srcptr + srclen; + const unsigned char* const dstend = dstbeg + dstlen; + bool asciiCompl = NotRecoded.AsciiComliant(cp); + for (size_t len = 0; srcptr < srcend;) { + if (asciiCompl && NotRecoded.NotRecoded(*srcptr)) { + if (Y_UNLIKELY(dstptr >= dstend)) { + return 0; + } + *dstptr++ = *srcptr++; + continue; + } + const auto runes = HtEntDecodeStepT<PURE>(cp, srcptr, srcend - srcptr, nullptr); + if (RECODE_OK != SafeWriteUTF8Char(runes.first, len, dstptr, dstend)) + return 0; + dstptr += len; + + if (runes.second != 0) { + if (RECODE_OK != SafeWriteUTF8Char(runes.second, len, dstptr, dstend)) + return 0; + dstptr += len; + } + } + return dstptr - dstbeg; +} + +size_t HtEntDecodeToUtf8(ECharset cp, + const char* src, size_t srclen, + char* dst, size_t dstlen) { + return HtEntDecodeToUtf8T<PT_HTML5>(cp, src, srclen, dst, dstlen); +} + +size_t HtDecodeAttrToUtf8(ECharset cp, + const char* src, size_t srclen, + char* dst, size_t dstlen) { + return HtEntDecodeToUtf8T<PT_HTML5_ATTR>(cp, src, srclen, dst, dstlen); +} + +size_t HtEntDecodeToChar(ECharset cp, const char* str, size_t len, wchar16* dst, unsigned char* m) { + const unsigned char* s = reinterpret_cast<const unsigned char*>(str); + const unsigned char* end = reinterpret_cast<const unsigned char*>(str + len); + wchar16* startDst = dst; + bool asciiCompl = NotRecoded.AsciiComliant(cp); + while (s < end) { + if (asciiCompl && NotRecoded.NotRecoded(*s)) { + *dst++ = *s++; + continue; + } + const auto codepoints = HtEntDecodeStep(cp, s, end - s, &m); + const size_t len2 = WriteSymbol(codepoints.first, dst); + if (codepoints.second != 0) + WriteSymbol(codepoints.second, dst); + + if (m != nullptr && len2 > 1) + *(m++) = 0; + } + return dst - startDst; +} + +bool HtLinkDecode(const char* in, char* out, size_t buflen, size_t& written, ECharset cp) { + return HtLinkDecode(TStringBuf(in, strlen(in)), out, buflen, written, cp); +} + +bool HtLinkDecode(const TStringBuf& in, char* out, size_t buflen, size_t& written, ECharset cp) { + static const char XDIGIT[] = "0123456789ABCDEFabcdef"; + + written = 0; + size_t elen = 0; + const char* inpEnd = in.data() + in.size(); + bool asciiCompl = NotRecoded.AsciiComliant(cp); + + for (const char* p = in.data(); p < inpEnd && *p; p += elen) { + bool isEntity = false; + wchar32 charval = (unsigned char)*p; + elen = 1; + + if (*p == '&') { + TEntity entity; + if (HtTryDecodeEntityT<PT_SEMIC>((const unsigned char*)p, inpEnd - p, &entity) && entity.Codepoint2 == 0) { + elen = entity.Len; + charval = entity.Codepoint1; + isEntity = true; + } else { + charval = '&'; + elen = 1; + } + } + + if (cp != CODES_UNKNOWN && !isEntity) { + if (asciiCompl && NotRecoded.NotRecoded(*p)) { + charval = *p; + } else { + DoSymbol(cp, reinterpret_cast<const unsigned char*>(p), 6, &charval); + if (charval == BROKEN_RUNE) + return false; + } + isEntity = true; + } + + if (charval <= 0x20 || charval >= 0x7F) { + if (isEntity && charval >= 0x7F) { + const size_t BUFLEN = 4; // 4 max length of UTF8 encoded character + unsigned char buf[BUFLEN]; + size_t len = 0; + if (SafeWriteUTF8Char(charval, len, buf, buf + BUFLEN) != RECODE_OK) // actually always OK + return false; + const size_t n = len * 3; + if (written + n < buflen) { + for (size_t i = 0; i < len; ++i) { + out[written++] = '%'; + out[written++] = XDIGIT[buf[i] >> 4]; + out[written++] = XDIGIT[buf[i] & 15]; + } + } else + return false; // ERROR_SMALL_BUFFER + } else { + if (written + 3 > buflen) + return false; // ERROR_SMALL_BUFFER + + unsigned char ch = *p; + if (isEntity) { + ch = charval; + } + out[written++] = '%'; + out[written++] = XDIGIT[ch >> 4]; + out[written++] = XDIGIT[ch & 15]; + } + } else { + if (written + 1 < buflen) { + out[written++] = (unsigned char)charval; + } else { + return false; // ERROR_SMALL_BUFFER + } + } + } + + return true; +} diff --git a/library/cpp/html/entity/htmlentity.h b/library/cpp/html/entity/htmlentity.h new file mode 100644 index 00000000000..0da2167d285 --- /dev/null +++ b/library/cpp/html/entity/htmlentity.h @@ -0,0 +1,84 @@ +#pragma once + +#include "decoder.h" + +#include <util/system/defaults.h> +#include <library/cpp/charset/doccodes.h> +#include <util/generic/strbuf.h> +#include <utility> + +/******************************************************/ +/* direct decoding actions */ +/******************************************************/ + +//! Try decode named or numeric entity using general html5 standard rules. +//! @param str - string started with '&'. +bool HtTryDecodeEntity(const char* str, size_t len, TEntity* entity); + +/******************************************************/ +/* step by step actions */ +/******************************************************/ + +// NOTE: Some entities have two codepoinst, if entity has one codepoint +// then the second wchar32 in pair is zero. +// Decodes with html5 standard rules. +std::pair<wchar32, wchar32> HtEntDecodeStep(ECharset cp, const unsigned char*& s, size_t len, unsigned char** map); + +// Decodes assuming that ';' should always present after entity. +std::pair<wchar32, wchar32> HtEntPureDecodeStep(ECharset cp, const unsigned char*& s, size_t len, unsigned char** map); + +// Similar with HtEntDecodeStep, but do not decodes named entities with two codepoints. +// Use HtEntDecodeStep and HtEntPureDecodeStep instead. +wchar32 HtEntOldDecodeStep(ECharset cp, const unsigned char*& s, size_t len, unsigned char** map); +wchar32 HtEntOldPureDecodeStep(ECharset cp, const unsigned char*& s, size_t len, unsigned char** map); + +/******************************************************/ +/* complete actions */ +/******************************************************/ + +// Try decode str using general html5 standard rules. +// Stops when str or buffer finish. +size_t HtEntDecode(ECharset cp, const char* str, size_t len, wchar32* buffer, size_t buflen, unsigned char* char_lengthes = nullptr); + +size_t HtEntDecodeToUtf8(ECharset cp, const char* src, size_t srclen, char* dst, size_t dstlen); + +// Special rules for attributes decoding +// http://www.whatwg.org/specs/web-apps/current-work/multipage/syntax.html#character-reference-in-attribute-value-state +size_t HtDecodeAttrToUtf8(ECharset cp, const char* src, size_t srclen, char* dst, size_t dstlen); + +size_t HtEntDecodeToChar(ECharset cp, const char* str, size_t len, wchar16* buffer, unsigned char* char_lengthes = nullptr); + +/** + * decode HTML entities if any + * @param src input buffer + * @param dst output buffer + * @param dstlen output buffer length + * @param cpsrc input buffer encoding, ascii-compatible + * @param cpdst output buffer encoding, if different from cpsrc + * @return src if no entities and encodings are the same (dst remains untouched) + * NULL if dst was not sufficiently long + * dst-based output buffer with decoded string + * @note entities must be pure, with the terminating ";" + */ +TStringBuf HtTryEntDecodeAsciiCompat(const TStringBuf& src, char* dst, size_t dstlen, ECharset cpsrc = CODES_UTF8); +TStringBuf HtTryEntDecodeAsciiCompat(const TStringBuf& src, char* dst, size_t dstlen, ECharset cpsrc, ECharset cpdst); + +//! decodes HTML entities and converts non-ASCII characters to unicode, then converts unicode to UTF8 and percent-encodes +//! @param text zero-terminated text of link +//! @param buffer buffer receiving UTF8 percent-encoded text of link +//! @param buflen length of output buffer +//! @param cp code page object used to convert non-ASCII characters +//! @note HTML entities directly converted into unicode characters, non-ASCII characters +//! converted into unicode using code page object if it is passed to the function, +//! then unicode characters converted to UTF8 and percent-encoded, +//! percent-encoded text in the link copied into output buffer as is +bool HtLinkDecode(const char* text, char* buffer, size_t buflen, size_t& written, ECharset cp = CODES_UNKNOWN); +bool HtLinkDecode(const TStringBuf& text, char* buffer, size_t buflen, size_t& written, ECharset cp = CODES_UNKNOWN); + +static inline bool HtLinkDecode(const char* text, char* buffer, size_t buflen, ECharset cp = CODES_UNKNOWN) { + size_t written; + const bool ok = HtLinkDecode(text, buffer, buflen, written, cp); + if (ok) + buffer[written] = '\x00'; + return ok; +} |