summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRupinder Singh Khokhar <rsk1coder99@gmail.com>2014-06-12 19:21:59 (GMT)
committer Rupinder Singh Khokhar <rsk1coder99@gmail.com>2014-07-09 04:34:05 (GMT)
commita501b83d9be45e80b59fc8eca8e1816f467b4662 (patch)
tree949a6ffdc0df6bfe925cc622aeadcea56778273f
parent34f1fae56766782ad5142db64879b348c01060bb (diff)
downloadlibhubbub-a501b83d9be45e80b59fc8eca8e1816f467b4662.tar.gz
libhubbub-a501b83d9be45e80b59fc8eca8e1816f467b4662.tar.bz2
Updating Named Entities API in tokeniser
-rw-r--r--build/Entities4370
-rw-r--r--build/make-entities.pl27
-rw-r--r--src/tokeniser/entities.c19
-rw-r--r--src/tokeniser/entities.h2
-rw-r--r--src/tokeniser/tokeniser.c99
-rw-r--r--test/data/tokeniser2/INDEX2
-rw-r--r--test/entities.c2
7 files changed, 2327 insertions, 2194 deletions
diff --git a/build/Entities b/build/Entities
index f067008..2c64826 100644
--- a/build/Entities
+++ b/build/Entities
@@ -2,2141 +2,2235 @@
# Note, some entities are allowed to omit their trailing semicolon, which is
# why most entities here have semicolons after them.
-# Entity Code
-Aacute; 0x000C1
-Aacute 0x000C1
-aacute; 0x000E1
-aacute 0x000E1
-Abreve; 0x00102
-abreve; 0x00103
-ac; 0x0223E
-acd; 0x0223F
-Acirc; 0x000C2
-Acirc 0x000C2
-acirc; 0x000E2
-acirc 0x000E2
-acute; 0x000B4
-acute 0x000B4
-Acy; 0x00410
-acy; 0x00430
-AElig; 0x000C6
-AElig 0x000C6
-aelig; 0x000E6
-aelig 0x000E6
-af; 0x02061
-Afr; 0x1D504
-afr; 0x1D51E
-Agrave; 0x000C0
-Agrave 0x000C0
-agrave; 0x000E0
-agrave 0x000E0
-alefsym; 0x02135
-aleph; 0x02135
-Alpha; 0x00391
-alpha; 0x003B1
-Amacr; 0x00100
-amacr; 0x00101
-amalg; 0x02A3F
-amp; 0x00026
-amp 0x00026
-AMP; 0x00026
-AMP 0x00026
-and; 0x02227
-And; 0x02A53
-andand; 0x02A55
-andd; 0x02A5C
-andslope; 0x02A58
-andv; 0x02A5A
-ang; 0x02220
-ange; 0x029A4
-angle; 0x02220
-angmsd; 0x02221
-angmsdaa; 0x029A8
-angmsdab; 0x029A9
-angmsdac; 0x029AA
-angmsdad; 0x029AB
-angmsdae; 0x029AC
-angmsdaf; 0x029AD
-angmsdag; 0x029AE
-angmsdah; 0x029AF
-angrt; 0x0221F
-angrtvb; 0x022BE
-angrtvbd; 0x0299D
-angsph; 0x02222
-angst; 0x0212B
-angzarr; 0x0237C
-Aogon; 0x00104
-aogon; 0x00105
-Aopf; 0x1D538
-aopf; 0x1D552
-ap; 0x02248
-apacir; 0x02A6F
-ape; 0x0224A
-apE; 0x02A70
-apid; 0x0224B
-apos; 0x00027
-ApplyFunction; 0x02061
-approx; 0x02248
-approxeq; 0x0224A
-Aring; 0x000C5
-Aring 0x000C5
-aring; 0x000E5
-aring 0x000E5
-Ascr; 0x1D49C
-ascr; 0x1D4B6
-Assign; 0x02254
-ast; 0x0002A
-asymp; 0x02248
-asympeq; 0x0224D
-Atilde; 0x000C3
-Atilde 0x000C3
-atilde; 0x000E3
-atilde 0x000E3
-Auml; 0x000C4
-Auml 0x000C4
-auml; 0x000E4
-auml 0x000E4
-awconint; 0x02233
-awint; 0x02A11
-backcong; 0x0224C
-backepsilon; 0x003F6
-backprime; 0x02035
-backsim; 0x0223D
-backsimeq; 0x022CD
-Backslash; 0x02216
-Barv; 0x02AE7
-barvee; 0x022BD
-barwed; 0x02305
-Barwed; 0x02306
-barwedge; 0x02305
-bbrk; 0x023B5
-bbrktbrk; 0x023B6
-bcong; 0x0224C
-Bcy; 0x00411
-bcy; 0x00431
-bdquo; 0x0201E
-becaus; 0x02235
-because; 0x02235
-Because; 0x02235
-bemptyv; 0x029B0
-bepsi; 0x003F6
-bernou; 0x0212C
-Bernoullis; 0x0212C
-Beta; 0x00392
-beta; 0x003B2
-beth; 0x02136
-between; 0x0226C
-Bfr; 0x1D505
-bfr; 0x1D51F
-bigcap; 0x022C2
-bigcirc; 0x025EF
-bigcup; 0x022C3
-bigodot; 0x02A00
-bigoplus; 0x02A01
-bigotimes; 0x02A02
-bigsqcup; 0x02A06
-bigstar; 0x02605
-bigtriangledown; 0x025BD
-bigtriangleup; 0x025B3
-biguplus; 0x02A04
-bigvee; 0x022C1
-bigwedge; 0x022C0
-bkarow; 0x0290D
-blacklozenge; 0x029EB
-blacksquare; 0x025AA
-blacktriangle; 0x025B4
-blacktriangledown; 0x025BE
-blacktriangleleft; 0x025C2
-blacktriangleright; 0x025B8
-blank; 0x02423
-blk12; 0x02592
-blk14; 0x02591
-blk34; 0x02593
-block; 0x02588
-bnot; 0x02310
-bNot; 0x02AED
-Bopf; 0x1D539
-bopf; 0x1D553
-bot; 0x022A5
-bottom; 0x022A5
-bowtie; 0x022C8
-boxbox; 0x029C9
-boxdl; 0x02510
-boxdL; 0x02555
-boxDl; 0x02556
-boxDL; 0x02557
-boxdr; 0x0250C
-boxdR; 0x02552
-boxDr; 0x02553
-boxDR; 0x02554
-boxh; 0x02500
-boxH; 0x02550
-boxhd; 0x0252C
-boxHd; 0x02564
-boxhD; 0x02565
-boxHD; 0x02566
-boxhu; 0x02534
-boxHu; 0x02567
-boxhU; 0x02568
-boxHU; 0x02569
-boxminus; 0x0229F
-boxplus; 0x0229E
-boxtimes; 0x022A0
-boxul; 0x02518
-boxuL; 0x0255B
-boxUl; 0x0255C
-boxUL; 0x0255D
-boxur; 0x02514
-boxuR; 0x02558
-boxUr; 0x02559
-boxUR; 0x0255A
-boxv; 0x02502
-boxV; 0x02551
-boxvh; 0x0253C
-boxvH; 0x0256A
-boxVh; 0x0256B
-boxVH; 0x0256C
-boxvl; 0x02524
-boxvL; 0x02561
-boxVl; 0x02562
-boxVL; 0x02563
-boxvr; 0x0251C
-boxvR; 0x0255E
-boxVr; 0x0255F
-boxVR; 0x02560
-bprime; 0x02035
-breve; 0x002D8
-Breve; 0x002D8
-brvbar; 0x000A6
-brvbar 0x000A6
-Bscr; 0x0212C
-bscr; 0x1D4B7
-bsemi; 0x0204F
-bsim; 0x0223D
-bsime; 0x022CD
-bsol; 0x0005C
-bsolb; 0x029C5
-bull; 0x02022
-bullet; 0x02022
-bump; 0x0224E
-bumpe; 0x0224F
-bumpE; 0x02AAE
-Bumpeq; 0x0224E
-bumpeq; 0x0224F
-Cacute; 0x00106
-cacute; 0x00107
-cap; 0x02229
-Cap; 0x022D2
-capand; 0x02A44
-capbrcup; 0x02A49
-capcap; 0x02A4B
-capcup; 0x02A47
-capdot; 0x02A40
-CapitalDifferentialD; 0x02145
-caret; 0x02041
-caron; 0x002C7
-Cayleys; 0x0212D
-ccaps; 0x02A4D
-Ccaron; 0x0010C
-ccaron; 0x0010D
-Ccedil; 0x000C7
-Ccedil 0x000C7
-ccedil; 0x000E7
-ccedil 0x000E7
-Ccirc; 0x00108
-ccirc; 0x00109
-Cconint; 0x02230
-ccups; 0x02A4C
-ccupssm; 0x02A50
-Cdot; 0x0010A
-cdot; 0x0010B
-cedil; 0x000B8
-cedil 0x000B8
-Cedilla; 0x000B8
-cemptyv; 0x029B2
-cent; 0x000A2
-cent 0x000A2
-centerdot; 0x000B7
-CenterDot; 0x000B7
-Cfr; 0x0212D
-cfr; 0x1D520
-CHcy; 0x00427
-chcy; 0x00447
-check; 0x02713
-checkmark; 0x02713
-Chi; 0x003A7
-chi; 0x003C7
-cir; 0x025CB
-circ; 0x002C6
-circeq; 0x02257
-circlearrowleft; 0x021BA
-circlearrowright; 0x021BB
-circledast; 0x0229B
-circledcirc; 0x0229A
-circleddash; 0x0229D
-CircleDot; 0x02299
-circledR; 0x000AE
-circledS; 0x024C8
-CircleMinus; 0x02296
-CirclePlus; 0x02295
-CircleTimes; 0x02297
-cire; 0x02257
-cirE; 0x029C3
-cirfnint; 0x02A10
-cirmid; 0x02AEF
-cirscir; 0x029C2
-ClockwiseContourIntegral; 0x02232
-CloseCurlyDoubleQuote; 0x0201D
-CloseCurlyQuote; 0x02019
-clubs; 0x02663
-clubsuit; 0x02663
-colon; 0x0003A
-Colon; 0x02237
-colone; 0x02254
-Colone; 0x02A74
-coloneq; 0x02254
-comma; 0x0002C
-commat; 0x00040
-comp; 0x02201
-compfn; 0x02218
-complement; 0x02201
-complexes; 0x02102
-cong; 0x02245
-congdot; 0x02A6D
-Congruent; 0x02261
-conint; 0x0222E
-Conint; 0x0222F
-ContourIntegral; 0x0222E
-Copf; 0x02102
-copf; 0x1D554
-coprod; 0x02210
-Coproduct; 0x02210
-copy; 0x000A9
-copy 0x000A9
-COPY; 0x000A9
-COPY 0x000A9
-copysr; 0x02117
-CounterClockwiseContourIntegral; 0x02233
-crarr; 0x021B5
-cross; 0x02717
-Cross; 0x02A2F
-Cscr; 0x1D49E
-cscr; 0x1D4B8
-csub; 0x02ACF
-csube; 0x02AD1
-csup; 0x02AD0
-csupe; 0x02AD2
-ctdot; 0x022EF
-cudarrl; 0x02938
-cudarrr; 0x02935
-cuepr; 0x022DE
-cuesc; 0x022DF
-cularr; 0x021B6
-cularrp; 0x0293D
-cup; 0x0222A
-Cup; 0x022D3
-cupbrcap; 0x02A48
-CupCap; 0x0224D
-cupcap; 0x02A46
-cupcup; 0x02A4A
-cupdot; 0x0228D
-cupor; 0x02A45
-curarr; 0x021B7
-curarrm; 0x0293C
-curlyeqprec; 0x022DE
-curlyeqsucc; 0x022DF
-curlyvee; 0x022CE
-curlywedge; 0x022CF
-curren; 0x000A4
-curren 0x000A4
-curvearrowleft; 0x021B6
-curvearrowright; 0x021B7
-cuvee; 0x022CE
-cuwed; 0x022CF
-cwconint; 0x02232
-cwint; 0x02231
-cylcty; 0x0232D
-dagger; 0x02020
-Dagger; 0x02021
-daleth; 0x02138
-darr; 0x02193
-Darr; 0x021A1
-dArr; 0x021D3
-dash; 0x02010
-dashv; 0x022A3
-Dashv; 0x02AE4
-dbkarow; 0x0290F
-dblac; 0x002DD
-Dcaron; 0x0010E
-dcaron; 0x0010F
-Dcy; 0x00414
-dcy; 0x00434
-DD; 0x02145
-dd; 0x02146
-ddagger; 0x02021
-ddarr; 0x021CA
-DDotrahd; 0x02911
-ddotseq; 0x02A77
-deg; 0x000B0
-deg 0x000B0
-Del; 0x02207
-Delta; 0x00394
-delta; 0x003B4
-demptyv; 0x029B1
-dfisht; 0x0297F
-Dfr; 0x1D507
-dfr; 0x1D521
-dHar; 0x02965
-dharl; 0x021C3
-dharr; 0x021C2
-DiacriticalAcute; 0x000B4
-DiacriticalDot; 0x002D9
-DiacriticalDoubleAcute; 0x002DD
-DiacriticalGrave; 0x00060
-DiacriticalTilde; 0x002DC
-diam; 0x022C4
-diamond; 0x022C4
-Diamond; 0x022C4
-diamondsuit; 0x02666
-diams; 0x02666
-die; 0x000A8
-DifferentialD; 0x02146
-digamma; 0x003DD
-disin; 0x022F2
-div; 0x000F7
-divide; 0x000F7
-divide 0x000F7
-divideontimes; 0x022C7
-divonx; 0x022C7
-DJcy; 0x00402
-djcy; 0x00452
-dlcorn; 0x0231E
-dlcrop; 0x0230D
-dollar; 0x00024
-Dopf; 0x1D53B
-dopf; 0x1D555
-Dot; 0x000A8
-dot; 0x002D9
-DotDot; 0x020DC
-doteq; 0x02250
-doteqdot; 0x02251
-DotEqual; 0x02250
-dotminus; 0x02238
-dotplus; 0x02214
-dotsquare; 0x022A1
-doublebarwedge; 0x02306
-DoubleContourIntegral; 0x0222F
-DoubleDot; 0x000A8
-DoubleDownArrow; 0x021D3
-DoubleLeftArrow; 0x021D0
-DoubleLeftRightArrow; 0x021D4
-DoubleLeftTee; 0x02AE4
-DoubleLongLeftArrow; 0x027F8
-DoubleLongLeftRightArrow; 0x027FA
-DoubleLongRightArrow; 0x027F9
-DoubleRightArrow; 0x021D2
-DoubleRightTee; 0x022A8
-DoubleUpArrow; 0x021D1
-DoubleUpDownArrow; 0x021D5
-DoubleVerticalBar; 0x02225
-downarrow; 0x02193
-DownArrow; 0x02193
-Downarrow; 0x021D3
-DownArrowBar; 0x02913
-DownArrowUpArrow; 0x021F5
-DownBreve; 0x00311
-downdownarrows; 0x021CA
-downharpoonleft; 0x021C3
-downharpoonright; 0x021C2
-DownLeftRightVector; 0x02950
-DownLeftTeeVector; 0x0295E
-DownLeftVector; 0x021BD
-DownLeftVectorBar; 0x02956
-DownRightTeeVector; 0x0295F
-DownRightVector; 0x021C1
-DownRightVectorBar; 0x02957
-DownTee; 0x022A4
-DownTeeArrow; 0x021A7
-drbkarow; 0x02910
-drcorn; 0x0231F
-drcrop; 0x0230C
-Dscr; 0x1D49F
-dscr; 0x1D4B9
-DScy; 0x00405
-dscy; 0x00455
-dsol; 0x029F6
-Dstrok; 0x00110
-dstrok; 0x00111
-dtdot; 0x022F1
-dtri; 0x025BF
-dtrif; 0x025BE
-duarr; 0x021F5
-duhar; 0x0296F
-dwangle; 0x029A6
-DZcy; 0x0040F
-dzcy; 0x0045F
-dzigrarr; 0x027FF
-Eacute; 0x000C9
-Eacute 0x000C9
-eacute; 0x000E9
-eacute 0x000E9
-easter; 0x02A6E
-Ecaron; 0x0011A
-ecaron; 0x0011B
-ecir; 0x02256
-Ecirc; 0x000CA
-Ecirc 0x000CA
-ecirc; 0x000EA
-ecirc 0x000EA
-ecolon; 0x02255
-Ecy; 0x0042D
-ecy; 0x0044D
-eDDot; 0x02A77
-Edot; 0x00116
-edot; 0x00117
-eDot; 0x02251
-ee; 0x02147
-efDot; 0x02252
-Efr; 0x1D508
-efr; 0x1D522
-eg; 0x02A9A
-Egrave; 0x000C8
-Egrave 0x000C8
-egrave; 0x000E8
-egrave 0x000E8
-egs; 0x02A96
-egsdot; 0x02A98
-el; 0x02A99
-Element; 0x02208
-elinters; 0x023E7
-ell; 0x02113
-els; 0x02A95
-elsdot; 0x02A97
-Emacr; 0x00112
-emacr; 0x00113
-empty; 0x02205
-emptyset; 0x02205
-EmptySmallSquare; 0x025FB
-emptyv; 0x02205
-EmptyVerySmallSquare; 0x025AB
-emsp; 0x02003
-emsp13; 0x02004
-emsp14; 0x02005
-ENG; 0x0014A
-eng; 0x0014B
-ensp; 0x02002
-Eogon; 0x00118
-eogon; 0x00119
-Eopf; 0x1D53C
-eopf; 0x1D556
-epar; 0x022D5
-eparsl; 0x029E3
-eplus; 0x02A71
-epsi; 0x003F5
-Epsilon; 0x00395
-epsilon; 0x003B5
-epsiv; 0x003B5
-eqcirc; 0x02256
-eqcolon; 0x02255
-eqsim; 0x02242
-eqslantgtr; 0x02A96
-eqslantless; 0x02A95
-Equal; 0x02A75
-equals; 0x0003D
-EqualTilde; 0x02242
-equest; 0x0225F
-Equilibrium; 0x021CC
-equiv; 0x02261
-equivDD; 0x02A78
-eqvparsl; 0x029E5
-erarr; 0x02971
-erDot; 0x02253
-escr; 0x0212F
-Escr; 0x02130
-esdot; 0x02250
-esim; 0x02242
-Esim; 0x02A73
-Eta; 0x00397
-eta; 0x003B7
-ETH; 0x000D0
-ETH 0x000D0
-eth; 0x000F0
-eth 0x000F0
-Euml; 0x000CB
-Euml 0x000CB
-euml; 0x000EB
-euml 0x000EB
-euro; 0x020AC
-excl; 0x00021
-exist; 0x02203
-Exists; 0x02203
-expectation; 0x02130
-exponentiale; 0x02147
-ExponentialE; 0x02147
-fallingdotseq; 0x02252
-Fcy; 0x00424
-fcy; 0x00444
-female; 0x02640
-ffilig; 0x0FB03
-fflig; 0x0FB00
-ffllig; 0x0FB04
-Ffr; 0x1D509
-ffr; 0x1D523
-filig; 0x0FB01
-FilledSmallSquare; 0x025FC
-FilledVerySmallSquare; 0x025AA
-flat; 0x0266D
-fllig; 0x0FB02
-fltns; 0x025B1
-fnof; 0x00192
-Fopf; 0x1D53D
-fopf; 0x1D557
-forall; 0x02200
-ForAll; 0x02200
-fork; 0x022D4
-forkv; 0x02AD9
-Fouriertrf; 0x02131
-fpartint; 0x02A0D
-frac12; 0x000BD
-frac12 0x000BD
-frac13; 0x02153
-frac14; 0x000BC
-frac14 0x000BC
-frac15; 0x02155
-frac16; 0x02159
-frac18; 0x0215B
-frac23; 0x02154
-frac25; 0x02156
-frac34; 0x000BE
-frac34 0x000BE
-frac35; 0x02157
-frac38; 0x0215C
-frac45; 0x02158
-frac56; 0x0215A
-frac58; 0x0215D
-frac78; 0x0215E
-frasl; 0x02044
-frown; 0x02322
-Fscr; 0x02131
-fscr; 0x1D4BB
-gacute; 0x001F5
-Gamma; 0x00393
-gamma; 0x003B3
-Gammad; 0x003DC
-gammad; 0x003DD
-gap; 0x02A86
-Gbreve; 0x0011E
-gbreve; 0x0011F
-Gcedil; 0x00122
-Gcirc; 0x0011C
-gcirc; 0x0011D
-Gcy; 0x00413
-gcy; 0x00433
-Gdot; 0x00120
-gdot; 0x00121
-ge; 0x02265
-gE; 0x02267
-gel; 0x022DB
-gEl; 0x02A8C
-geq; 0x02265
-geqq; 0x02267
-geqslant; 0x02A7E
-ges; 0x02A7E
-gescc; 0x02AA9
-gesdot; 0x02A80
-gesdoto; 0x02A82
-gesdotol; 0x02A84
-gesles; 0x02A94
-Gfr; 0x1D50A
-gfr; 0x1D524
-gg; 0x0226B
-Gg; 0x022D9
-ggg; 0x022D9
-gimel; 0x02137
-GJcy; 0x00403
-gjcy; 0x00453
-gl; 0x02277
-gla; 0x02AA5
-glE; 0x02A92
-glj; 0x02AA4
-gnap; 0x02A8A
-gnapprox; 0x02A8A
-gnE; 0x02269
-gne; 0x02A88
-gneq; 0x02A88
-gneqq; 0x02269
-gnsim; 0x022E7
-Gopf; 0x1D53E
-gopf; 0x1D558
-grave; 0x00060
-GreaterEqual; 0x02265
-GreaterEqualLess; 0x022DB
-GreaterFullEqual; 0x02267
-GreaterGreater; 0x02AA2
-GreaterLess; 0x02277
-GreaterSlantEqual; 0x02A7E
-GreaterTilde; 0x02273
-gscr; 0x0210A
-Gscr; 0x1D4A2
-gsim; 0x02273
-gsime; 0x02A8E
-gsiml; 0x02A90
-gt; 0x0003E
-gt 0x0003E
-GT; 0x0003E
-GT 0x0003E
-Gt; 0x0226B
-gtcc; 0x02AA7
-gtcir; 0x02A7A
-gtdot; 0x022D7
-gtlPar; 0x02995
-gtquest; 0x02A7C
-gtrapprox; 0x02A86
-gtrarr; 0x02978
-gtrdot; 0x022D7
-gtreqless; 0x022DB
-gtreqqless; 0x02A8C
-gtrless; 0x02277
-gtrsim; 0x02273
-Hacek; 0x002C7
-hairsp; 0x0200A
-half; 0x000BD
-hamilt; 0x0210B
-HARDcy; 0x0042A
-hardcy; 0x0044A
-harr; 0x02194
-hArr; 0x021D4
-harrcir; 0x02948
-harrw; 0x021AD
-Hat; 0x0005E
-hbar; 0x0210F
-Hcirc; 0x00124
-hcirc; 0x00125
-hearts; 0x02665
-heartsuit; 0x02665
-hellip; 0x02026
-hercon; 0x022B9
-Hfr; 0x0210C
-hfr; 0x1D525
-HilbertSpace; 0x0210B
-hksearow; 0x02925
-hkswarow; 0x02926
-hoarr; 0x021FF
-homtht; 0x0223B
-hookleftarrow; 0x021A9
-hookrightarrow; 0x021AA
-Hopf; 0x0210D
-hopf; 0x1D559
-horbar; 0x02015
-HorizontalLine; 0x02500
-Hscr; 0x0210B
-hscr; 0x1D4BD
-hslash; 0x0210F
-Hstrok; 0x00126
-hstrok; 0x00127
-HumpDownHump; 0x0224E
-HumpEqual; 0x0224F
-hybull; 0x02043
-hyphen; 0x02010
-Iacute; 0x000CD
-Iacute 0x000CD
-iacute; 0x000ED
-iacute 0x000ED
-ic; 0x02063
-Icirc; 0x000CE
-Icirc 0x000CE
-icirc; 0x000EE
-icirc 0x000EE
-Icy; 0x00418
-icy; 0x00438
-Idot; 0x00130
-IEcy; 0x00415
-iecy; 0x00435
-iexcl; 0x000A1
-iexcl 0x000A1
-iff; 0x021D4
-Ifr; 0x02111
-ifr; 0x1D526
-Igrave; 0x000CC
-Igrave 0x000CC
-igrave; 0x000EC
-igrave 0x000EC
-ii; 0x02148
-iiiint; 0x02A0C
-iiint; 0x0222D
-iinfin; 0x029DC
-iiota; 0x02129
-IJlig; 0x00132
-ijlig; 0x00133
-Im; 0x02111
-Imacr; 0x0012A
-imacr; 0x0012B
-image; 0x02111
-ImaginaryI; 0x02148
-imagline; 0x02110
-imagpart; 0x02111
-imath; 0x00131
-imof; 0x022B7
-imped; 0x001B5
-Implies; 0x021D2
-in; 0x02208
-incare; 0x02105
-infin; 0x0221E
-infintie; 0x029DD
-inodot; 0x00131
-int; 0x0222B
-Int; 0x0222C
-intcal; 0x022BA
-integers; 0x02124
-Integral; 0x0222B
-intercal; 0x022BA
-Intersection; 0x022C2
-intlarhk; 0x02A17
-intprod; 0x02A3C
-InvisibleComma; 0x02063
-InvisibleTimes; 0x02062
-IOcy; 0x00401
-iocy; 0x00451
-Iogon; 0x0012E
-iogon; 0x0012F
-Iopf; 0x1D540
-iopf; 0x1D55A
-Iota; 0x00399
-iota; 0x003B9
-iprod; 0x02A3C
-iquest; 0x000BF
-iquest 0x000BF
-Iscr; 0x02110
-iscr; 0x1D4BE
-isin; 0x02208
-isindot; 0x022F5
-isinE; 0x022F9
-isins; 0x022F4
-isinsv; 0x022F3
-isinv; 0x02208
-it; 0x02062
-Itilde; 0x00128
-itilde; 0x00129
-Iukcy; 0x00406
-iukcy; 0x00456
-Iuml; 0x000CF
-Iuml 0x000CF
-iuml; 0x000EF
-iuml 0x000EF
-Jcirc; 0x00134
-jcirc; 0x00135
-Jcy; 0x00419
-jcy; 0x00439
-Jfr; 0x1D50D
-jfr; 0x1D527
-jmath; 0x00237
-Jopf; 0x1D541
-jopf; 0x1D55B
-Jscr; 0x1D4A5
-jscr; 0x1D4BF
-Jsercy; 0x00408
-jsercy; 0x00458
-Jukcy; 0x00404
-jukcy; 0x00454
-Kappa; 0x0039A
-kappa; 0x003BA
-kappav; 0x003F0
-Kcedil; 0x00136
-kcedil; 0x00137
-Kcy; 0x0041A
-kcy; 0x0043A
-Kfr; 0x1D50E
-kfr; 0x1D528
-kgreen; 0x00138
-KHcy; 0x00425
-khcy; 0x00445
-KJcy; 0x0040C
-kjcy; 0x0045C
-Kopf; 0x1D542
-kopf; 0x1D55C
-Kscr; 0x1D4A6
-kscr; 0x1D4C0
-lAarr; 0x021DA
-Lacute; 0x00139
-lacute; 0x0013A
-laemptyv; 0x029B4
-lagran; 0x02112
-Lambda; 0x0039B
-lambda; 0x003BB
-lang; 0x027E8
-Lang; 0x027EA
-langd; 0x02991
-langle; 0x027E8
-lap; 0x02A85
-Laplacetrf; 0x02112
-laquo; 0x000AB
-laquo 0x000AB
-larr; 0x02190
-Larr; 0x0219E
-lArr; 0x021D0
-larrb; 0x021E4
-larrbfs; 0x0291F
-larrfs; 0x0291D
-larrhk; 0x021A9
-larrlp; 0x021AB
-larrpl; 0x02939
-larrsim; 0x02973
-larrtl; 0x021A2
-lat; 0x02AAB
-latail; 0x02919
-lAtail; 0x0291B
-late; 0x02AAD
-lbarr; 0x0290C
-lBarr; 0x0290E
-lbbrk; 0x02772
-lbrace; 0x0007B
-lbrack; 0x0005B
-lbrke; 0x0298B
-lbrksld; 0x0298F
-lbrkslu; 0x0298D
-Lcaron; 0x0013D
-lcaron; 0x0013E
-Lcedil; 0x0013B
-lcedil; 0x0013C
-lceil; 0x02308
-lcub; 0x0007B
-Lcy; 0x0041B
-lcy; 0x0043B
-ldca; 0x02936
-ldquo; 0x0201C
-ldquor; 0x0201E
-ldrdhar; 0x02967
-ldrushar; 0x0294B
-ldsh; 0x021B2
-le; 0x02264
-lE; 0x02266
-LeftAngleBracket; 0x027E8
-leftarrow; 0x02190
-LeftArrow; 0x02190
-Leftarrow; 0x021D0
-LeftArrowBar; 0x021E4
-LeftArrowRightArrow; 0x021C6
-leftarrowtail; 0x021A2
-LeftCeiling; 0x02308
-LeftDoubleBracket; 0x027E6
-LeftDownTeeVector; 0x02961
-LeftDownVector; 0x021C3
-LeftDownVectorBar; 0x02959
-LeftFloor; 0x0230A
-leftharpoondown; 0x021BD
-leftharpoonup; 0x021BC
-leftleftarrows; 0x021C7
-leftrightarrow; 0x02194
-LeftRightArrow; 0x02194
-Leftrightarrow; 0x021D4
-leftrightarrows; 0x021C6
-leftrightharpoons; 0x021CB
-leftrightsquigarrow; 0x021AD
-LeftRightVector; 0x0294E
-LeftTee; 0x022A3
-LeftTeeArrow; 0x021A4
-LeftTeeVector; 0x0295A
-leftthreetimes; 0x022CB
-LeftTriangle; 0x022B2
-LeftTriangleBar; 0x029CF
-LeftTriangleEqual; 0x022B4
-LeftUpDownVector; 0x02951
-LeftUpTeeVector; 0x02960
-LeftUpVector; 0x021BF
-LeftUpVectorBar; 0x02958
-LeftVector; 0x021BC
-LeftVectorBar; 0x02952
-leg; 0x022DA
-lEg; 0x02A8B
-leq; 0x02264
-leqq; 0x02266
-leqslant; 0x02A7D
-les; 0x02A7D
-lescc; 0x02AA8
-lesdot; 0x02A7F
-lesdoto; 0x02A81
-lesdotor; 0x02A83
-lesges; 0x02A93
-lessapprox; 0x02A85
-lessdot; 0x022D6
-lesseqgtr; 0x022DA
-lesseqqgtr; 0x02A8B
-LessEqualGreater; 0x022DA
-LessFullEqual; 0x02266
-LessGreater; 0x02276
-lessgtr; 0x02276
-LessLess; 0x02AA1
-lesssim; 0x02272
-LessSlantEqual; 0x02A7D
-LessTilde; 0x02272
-lfisht; 0x0297C
-lfloor; 0x0230A
-Lfr; 0x1D50F
-lfr; 0x1D529
-lg; 0x02276
-lgE; 0x02A91
-lHar; 0x02962
-lhard; 0x021BD
-lharu; 0x021BC
-lharul; 0x0296A
-lhblk; 0x02584
-LJcy; 0x00409
-ljcy; 0x00459
-ll; 0x0226A
-Ll; 0x022D8
-llarr; 0x021C7
-llcorner; 0x0231E
-Lleftarrow; 0x021DA
-llhard; 0x0296B
-lltri; 0x025FA
-Lmidot; 0x0013F
-lmidot; 0x00140
-lmoust; 0x023B0
-lmoustache; 0x023B0
-lnap; 0x02A89
-lnapprox; 0x02A89
-lnE; 0x02268
-lne; 0x02A87
-lneq; 0x02A87
-lneqq; 0x02268
-lnsim; 0x022E6
-loang; 0x027EC
-loarr; 0x021FD
-lobrk; 0x027E6
-longleftarrow; 0x027F5
-LongLeftArrow; 0x027F5
-Longleftarrow; 0x027F8
-longleftrightarrow; 0x027F7
-LongLeftRightArrow; 0x027F7
-Longleftrightarrow; 0x027FA
-longmapsto; 0x027FC
-longrightarrow; 0x027F6
-LongRightArrow; 0x027F6
-Longrightarrow; 0x027F9
-looparrowleft; 0x021AB
-looparrowright; 0x021AC
-lopar; 0x02985
-Lopf; 0x1D543
-lopf; 0x1D55D
-loplus; 0x02A2D
-lotimes; 0x02A34
-lowast; 0x02217
-lowbar; 0x0005F
-LowerLeftArrow; 0x02199
-LowerRightArrow; 0x02198
-loz; 0x025CA
-lozenge; 0x025CA
-lozf; 0x029EB
-lpar; 0x00028
-lparlt; 0x02993
-lrarr; 0x021C6
-lrcorner; 0x0231F
-lrhar; 0x021CB
-lrhard; 0x0296D
-lrm; 0x0200E
-lrtri; 0x022BF
-lsaquo; 0x02039
-Lscr; 0x02112
-lscr; 0x1D4C1
-lsh; 0x021B0
-Lsh; 0x021B0
-lsim; 0x02272
-lsime; 0x02A8D
-lsimg; 0x02A8F
-lsqb; 0x0005B
-lsquo; 0x02018
-lsquor; 0x0201A
-Lstrok; 0x00141
-lstrok; 0x00142
-lt; 0x0003C
-lt 0x0003C
-LT; 0x0003C
-LT 0x0003C
-Lt; 0x0226A
-ltcc; 0x02AA6
-ltcir; 0x02A79
-ltdot; 0x022D6
-lthree; 0x022CB
-ltimes; 0x022C9
-ltlarr; 0x02976
-ltquest; 0x02A7B
-ltri; 0x025C3
-ltrie; 0x022B4
-ltrif; 0x025C2
-ltrPar; 0x02996
-lurdshar; 0x0294A
-luruhar; 0x02966
-macr; 0x000AF
-macr 0x000AF
-male; 0x02642
-malt; 0x02720
-maltese; 0x02720
-map; 0x021A6
-Map; 0x02905
-mapsto; 0x021A6
-mapstodown; 0x021A7
-mapstoleft; 0x021A4
-mapstoup; 0x021A5
-marker; 0x025AE
-mcomma; 0x02A29
-Mcy; 0x0041C
-mcy; 0x0043C
-mdash; 0x02014
-mDDot; 0x0223A
-measuredangle; 0x02221
-MediumSpace; 0x0205F
-Mellintrf; 0x02133
-Mfr; 0x1D510
-mfr; 0x1D52A
-mho; 0x02127
-micro; 0x000B5
-micro 0x000B5
-mid; 0x02223
-midast; 0x0002A
-midcir; 0x02AF0
-middot; 0x000B7
-middot 0x000B7
-minus; 0x02212
-minusb; 0x0229F
-minusd; 0x02238
-minusdu; 0x02A2A
-MinusPlus; 0x02213
-mlcp; 0x02ADB
-mldr; 0x02026
-mnplus; 0x02213
-models; 0x022A7
-Mopf; 0x1D544
-mopf; 0x1D55E
-mp; 0x02213
-Mscr; 0x02133
-mscr; 0x1D4C2
-mstpos; 0x0223E
-Mu; 0x0039C
-mu; 0x003BC
-multimap; 0x022B8
-mumap; 0x022B8
-nabla; 0x02207
-Nacute; 0x00143
-nacute; 0x00144
-nap; 0x02249
-napos; 0x00149
-napprox; 0x02249
-natur; 0x0266E
-natural; 0x0266E
-naturals; 0x02115
-nbsp; 0x000A0
-nbsp 0x000A0
-ncap; 0x02A43
-Ncaron; 0x00147
-ncaron; 0x00148
-Ncedil; 0x00145
-ncedil; 0x00146
-ncong; 0x02247
-ncup; 0x02A42
-Ncy; 0x0041D
-ncy; 0x0043D
-ndash; 0x02013
-ne; 0x02260
-nearhk; 0x02924
-nearr; 0x02197
-neArr; 0x021D7
-nearrow; 0x02197
-NegativeMediumSpace; 0x0200B
-NegativeThickSpace; 0x0200B
-NegativeThinSpace; 0x0200B
-NegativeVeryThinSpace; 0x0200B
-nequiv; 0x02262
-nesear; 0x02928
-NestedGreaterGreater; 0x0226B
-NestedLessLess; 0x0226A
-NewLine; 0x0000A
-nexist; 0x02204
-nexists; 0x02204
-Nfr; 0x1D511
-nfr; 0x1D52B
-nge; 0x02271
-ngeq; 0x02271
-ngsim; 0x02275
-ngt; 0x0226F
-ngtr; 0x0226F
-nharr; 0x021AE
-nhArr; 0x021CE
-nhpar; 0x02AF2
-ni; 0x0220B
-nis; 0x022FC
-nisd; 0x022FA
-niv; 0x0220B
-NJcy; 0x0040A
-njcy; 0x0045A
-nlarr; 0x0219A
-nlArr; 0x021CD
-nldr; 0x02025
-nle; 0x02270
-nleftarrow; 0x0219A
-nLeftarrow; 0x021CD
-nleftrightarrow; 0x021AE
-nLeftrightarrow; 0x021CE
-nleq; 0x02270
-nless; 0x0226E
-nlsim; 0x02274
-nlt; 0x0226E
-nltri; 0x022EA
-nltrie; 0x022EC
-nmid; 0x02224
-NoBreak; 0x02060
-NonBreakingSpace; 0x000A0
-Nopf; 0x02115
-nopf; 0x1D55F
-not; 0x000AC
-not 0x000AC
-Not; 0x02AEC
-NotCongruent; 0x02262
-NotCupCap; 0x0226D
-NotDoubleVerticalBar; 0x02226
-NotElement; 0x02209
-NotEqual; 0x02260
-NotExists; 0x02204
-NotGreater; 0x0226F
-NotGreaterEqual; 0x02271
-NotGreaterLess; 0x02279
-NotGreaterTilde; 0x02275
-notin; 0x02209
-notinva; 0x02209
-notinvb; 0x022F7
-notinvc; 0x022F6
-NotLeftTriangle; 0x022EA
-NotLeftTriangleEqual; 0x022EC
-NotLess; 0x0226E
-NotLessEqual; 0x02270
-NotLessGreater; 0x02278
-NotLessTilde; 0x02274
-notni; 0x0220C
-notniva; 0x0220C
-notnivb; 0x022FE
-notnivc; 0x022FD
-NotPrecedes; 0x02280
-NotPrecedesSlantEqual; 0x022E0
-NotReverseElement; 0x0220C
-NotRightTriangle; 0x022EB
-NotRightTriangleEqual; 0x022ED
-NotSquareSubsetEqual; 0x022E2
-NotSquareSupersetEqual; 0x022E3
-NotSubsetEqual; 0x02288
-NotSucceeds; 0x02281
-NotSucceedsSlantEqual; 0x022E1
-NotSupersetEqual; 0x02289
-NotTilde; 0x02241
-NotTildeEqual; 0x02244
-NotTildeFullEqual; 0x02247
-NotTildeTilde; 0x02249
-NotVerticalBar; 0x02224
-npar; 0x02226
-nparallel; 0x02226
-npolint; 0x02A14
-npr; 0x02280
-nprcue; 0x022E0
-nprec; 0x02280
-nrarr; 0x0219B
-nrArr; 0x021CF
-nrightarrow; 0x0219B
-nRightarrow; 0x021CF
-nrtri; 0x022EB
-nrtrie; 0x022ED
-nsc; 0x02281
-nsccue; 0x022E1
-Nscr; 0x1D4A9
-nscr; 0x1D4C3
-nshortmid; 0x02224
-nshortparallel; 0x02226
-nsim; 0x02241
-nsime; 0x02244
-nsimeq; 0x02244
-nsmid; 0x02224
-nspar; 0x02226
-nsqsube; 0x022E2
-nsqsupe; 0x022E3
-nsub; 0x02284
-nsube; 0x02288
-nsubseteq; 0x02288
-nsucc; 0x02281
-nsup; 0x02285
-nsupe; 0x02289
-nsupseteq; 0x02289
-ntgl; 0x02279
-Ntilde; 0x000D1
-Ntilde 0x000D1
-ntilde; 0x000F1
-ntilde 0x000F1
-ntlg; 0x02278
-ntriangleleft; 0x022EA
-ntrianglelefteq; 0x022EC
-ntriangleright; 0x022EB
-ntrianglerighteq; 0x022ED
-Nu; 0x0039D
-nu; 0x003BD
-num; 0x00023
-numero; 0x02116
-numsp; 0x02007
-nvdash; 0x022AC
-nvDash; 0x022AD
-nVdash; 0x022AE
-nVDash; 0x022AF
-nvHarr; 0x02904
-nvinfin; 0x029DE
-nvlArr; 0x02902
-nvrArr; 0x02903
-nwarhk; 0x02923
-nwarr; 0x02196
-nwArr; 0x021D6
-nwarrow; 0x02196
-nwnear; 0x02927
-Oacute; 0x000D3
-Oacute 0x000D3
-oacute; 0x000F3
-oacute 0x000F3
-oast; 0x0229B
-ocir; 0x0229A
-Ocirc; 0x000D4
-Ocirc 0x000D4
-ocirc; 0x000F4
-ocirc 0x000F4
-Ocy; 0x0041E
-ocy; 0x0043E
-odash; 0x0229D
-Odblac; 0x00150
-odblac; 0x00151
-odiv; 0x02A38
-odot; 0x02299
-odsold; 0x029BC
-OElig; 0x00152
-oelig; 0x00153
-ofcir; 0x029BF
-Ofr; 0x1D512
-ofr; 0x1D52C
-ogon; 0x002DB
-Ograve; 0x000D2
-Ograve 0x000D2
-ograve; 0x000F2
-ograve 0x000F2
-ogt; 0x029C1
-ohbar; 0x029B5
-ohm; 0x02126
-oint; 0x0222E
-olarr; 0x021BA
-olcir; 0x029BE
-olcross; 0x029BB
-oline; 0x0203E
-olt; 0x029C0
-Omacr; 0x0014C
-omacr; 0x0014D
-Omega; 0x003A9
-omega; 0x003C9
-Omicron; 0x0039F
-omicron; 0x003BF
-omid; 0x029B6
-ominus; 0x02296
-Oopf; 0x1D546
-oopf; 0x1D560
-opar; 0x029B7
-OpenCurlyDoubleQuote; 0x0201C
-OpenCurlyQuote; 0x02018
-operp; 0x029B9
-oplus; 0x02295
-or; 0x02228
-Or; 0x02A54
-orarr; 0x021BB
-ord; 0x02A5D
-order; 0x02134
-orderof; 0x02134
-ordf; 0x000AA
-ordf 0x000AA
-ordm; 0x000BA
-ordm 0x000BA
-origof; 0x022B6
-oror; 0x02A56
-orslope; 0x02A57
-orv; 0x02A5B
-oS; 0x024C8
-oscr; 0x02134
-Oscr; 0x1D4AA
-Oslash; 0x000D8
-Oslash 0x000D8
-oslash; 0x000F8
-oslash 0x000F8
-osol; 0x02298
-Otilde; 0x000D5
-Otilde 0x000D5
-otilde; 0x000F5
-otilde 0x000F5
-otimes; 0x02297
-Otimes; 0x02A37
-otimesas; 0x02A36
-Ouml; 0x000D6
-Ouml 0x000D6
-ouml; 0x000F6
-ouml 0x000F6
-ovbar; 0x0233D
-OverBar; 0x000AF
-OverBrace; 0x023DE
-OverBracket; 0x023B4
-OverParenthesis; 0x023DC
-par; 0x02225
-para; 0x000B6
-para 0x000B6
-parallel; 0x02225
-parsim; 0x02AF3
-parsl; 0x02AFD
-part; 0x02202
-PartialD; 0x02202
-Pcy; 0x0041F
-pcy; 0x0043F
-percnt; 0x00025
-period; 0x0002E
-permil; 0x02030
-perp; 0x022A5
-pertenk; 0x02031
-Pfr; 0x1D513
-pfr; 0x1D52D
-Phi; 0x003A6
-phi; 0x003C6
-phiv; 0x003C6
-phmmat; 0x02133
-phone; 0x0260E
-Pi; 0x003A0
-pi; 0x003C0
-pitchfork; 0x022D4
-piv; 0x003D6
-planck; 0x0210F
-planckh; 0x0210E
-plankv; 0x0210F
-plus; 0x0002B
-plusacir; 0x02A23
-plusb; 0x0229E
-pluscir; 0x02A22
-plusdo; 0x02214
-plusdu; 0x02A25
-pluse; 0x02A72
-PlusMinus; 0x000B1
-plusmn; 0x000B1
-plusmn 0x000B1
-plussim; 0x02A26
-plustwo; 0x02A27
-pm; 0x000B1
-Poincareplane; 0x0210C
-pointint; 0x02A15
-Popf; 0x02119
-popf; 0x1D561
-pound; 0x000A3
-pound 0x000A3
-pr; 0x0227A
-Pr; 0x02ABB
-prap; 0x02AB7
-prcue; 0x0227C
-pre; 0x02AAF
-prE; 0x02AB3
-prec; 0x0227A
-precapprox; 0x02AB7
-preccurlyeq; 0x0227C
-Precedes; 0x0227A
-PrecedesEqual; 0x02AAF
-PrecedesSlantEqual; 0x0227C
-PrecedesTilde; 0x0227E
-preceq; 0x02AAF
-precnapprox; 0x02AB9
-precneqq; 0x02AB5
-precnsim; 0x022E8
-precsim; 0x0227E
-prime; 0x02032
-Prime; 0x02033
-primes; 0x02119
-prnap; 0x02AB9
-prnE; 0x02AB5
-prnsim; 0x022E8
-prod; 0x0220F
-Product; 0x0220F
-profalar; 0x0232E
-profline; 0x02312
-profsurf; 0x02313
-prop; 0x0221D
-Proportion; 0x02237
-Proportional; 0x0221D
-propto; 0x0221D
-prsim; 0x0227E
-prurel; 0x022B0
-Pscr; 0x1D4AB
-pscr; 0x1D4C5
-Psi; 0x003A8
-psi; 0x003C8
-puncsp; 0x02008
-Qfr; 0x1D514
-qfr; 0x1D52E
-qint; 0x02A0C
-Qopf; 0x0211A
-qopf; 0x1D562
-qprime; 0x02057
-Qscr; 0x1D4AC
-qscr; 0x1D4C6
-quaternions; 0x0210D
-quatint; 0x02A16
-quest; 0x0003F
-questeq; 0x0225F
-quot; 0x00022
-quot 0x00022
-QUOT; 0x00022
-QUOT 0x00022
-rAarr; 0x021DB
-race; 0x029DA
-Racute; 0x00154
-racute; 0x00155
-radic; 0x0221A
-raemptyv; 0x029B3
-rang; 0x027E9
-Rang; 0x027EB
-rangd; 0x02992
-range; 0x029A5
-rangle; 0x027E9
-raquo; 0x000BB
-raquo 0x000BB
-rarr; 0x02192
-Rarr; 0x021A0
-rArr; 0x021D2
-rarrap; 0x02975
-rarrb; 0x021E5
-rarrbfs; 0x02920
-rarrc; 0x02933
-rarrfs; 0x0291E
-rarrhk; 0x021AA
-rarrlp; 0x021AC
-rarrpl; 0x02945
-rarrsim; 0x02974
-rarrtl; 0x021A3
-Rarrtl; 0x02916
-rarrw; 0x0219D
-ratail; 0x0291A
-rAtail; 0x0291C
-ratio; 0x02236
-rationals; 0x0211A
-rbarr; 0x0290D
-rBarr; 0x0290F
-RBarr; 0x02910
-rbbrk; 0x02773
-rbrace; 0x0007D
-rbrack; 0x0005D
-rbrke; 0x0298C
-rbrksld; 0x0298E
-rbrkslu; 0x02990
-Rcaron; 0x00158
-rcaron; 0x00159
-Rcedil; 0x00156
-rcedil; 0x00157
-rceil; 0x02309
-rcub; 0x0007D
-Rcy; 0x00420
-rcy; 0x00440
-rdca; 0x02937
-rdldhar; 0x02969
-rdquo; 0x0201D
-rdquor; 0x0201D
-rdsh; 0x021B3
-Re; 0x0211C
-real; 0x0211C
-realine; 0x0211B
-realpart; 0x0211C
-reals; 0x0211D
-rect; 0x025AD
-reg; 0x000AE
-reg 0x000AE
-REG; 0x000AE
-REG 0x000AE
-ReverseElement; 0x0220B
-ReverseEquilibrium; 0x021CB
-ReverseUpEquilibrium; 0x0296F
-rfisht; 0x0297D
-rfloor; 0x0230B
-Rfr; 0x0211C
-rfr; 0x1D52F
-rHar; 0x02964
-rhard; 0x021C1
-rharu; 0x021C0
-rharul; 0x0296C
-Rho; 0x003A1
-rho; 0x003C1
-rhov; 0x003F1
-RightAngleBracket; 0x027E9
-rightarrow; 0x02192
-RightArrow; 0x02192
-Rightarrow; 0x021D2
-RightArrowBar; 0x021E5
-RightArrowLeftArrow; 0x021C4
-rightarrowtail; 0x021A3
-RightCeiling; 0x02309
-RightDoubleBracket; 0x027E7
-RightDownTeeVector; 0x0295D
-RightDownVector; 0x021C2
-RightDownVectorBar; 0x02955
-RightFloor; 0x0230B
-rightharpoondown; 0x021C1
-rightharpoonup; 0x021C0
-rightleftarrows; 0x021C4
-rightleftharpoons; 0x021CC
-rightrightarrows; 0x021C9
-rightsquigarrow; 0x0219D
-RightTee; 0x022A2
-RightTeeArrow; 0x021A6
-RightTeeVector; 0x0295B
-rightthreetimes; 0x022CC
-RightTriangle; 0x022B3
-RightTriangleBar; 0x029D0
-RightTriangleEqual; 0x022B5
-RightUpDownVector; 0x0294F
-RightUpTeeVector; 0x0295C
-RightUpVector; 0x021BE
-RightUpVectorBar; 0x02954
-RightVector; 0x021C0
-RightVectorBar; 0x02953
-ring; 0x002DA
-risingdotseq; 0x02253
-rlarr; 0x021C4
-rlhar; 0x021CC
-rlm; 0x0200F
-rmoust; 0x023B1
-rmoustache; 0x023B1
-rnmid; 0x02AEE
-roang; 0x027ED
-roarr; 0x021FE
-robrk; 0x027E7
-ropar; 0x02986
-Ropf; 0x0211D
-ropf; 0x1D563
-roplus; 0x02A2E
-rotimes; 0x02A35
-RoundImplies; 0x02970
-rpar; 0x00029
-rpargt; 0x02994
-rppolint; 0x02A12
-rrarr; 0x021C9
-Rrightarrow; 0x021DB
-rsaquo; 0x0203A
-Rscr; 0x0211B
-rscr; 0x1D4C7
-rsh; 0x021B1
-Rsh; 0x021B1
-rsqb; 0x0005D
-rsquo; 0x02019
-rsquor; 0x02019
-rthree; 0x022CC
-rtimes; 0x022CA
-rtri; 0x025B9
-rtrie; 0x022B5
-rtrif; 0x025B8
-rtriltri; 0x029CE
-RuleDelayed; 0x029F4
-ruluhar; 0x02968
-rx; 0x0211E
-Sacute; 0x0015A
-sacute; 0x0015B
-sbquo; 0x0201A
-sc; 0x0227B
-Sc; 0x02ABC
-scap; 0x02AB8
-Scaron; 0x00160
-scaron; 0x00161
-sccue; 0x0227D
-sce; 0x02AB0
-scE; 0x02AB4
-Scedil; 0x0015E
-scedil; 0x0015F
-Scirc; 0x0015C
-scirc; 0x0015D
-scnap; 0x02ABA
-scnE; 0x02AB6
-scnsim; 0x022E9
-scpolint; 0x02A13
-scsim; 0x0227F
-Scy; 0x00421
-scy; 0x00441
-sdot; 0x022C5
-sdotb; 0x022A1
-sdote; 0x02A66
-searhk; 0x02925
-searr; 0x02198
-seArr; 0x021D8
-searrow; 0x02198
-sect; 0x000A7
-sect 0x000A7
-semi; 0x0003B
-seswar; 0x02929
-setminus; 0x02216
-setmn; 0x02216
-sext; 0x02736
-Sfr; 0x1D516
-sfr; 0x1D530
-sfrown; 0x02322
-sharp; 0x0266F
-SHCHcy; 0x00429
-shchcy; 0x00449
-SHcy; 0x00428
-shcy; 0x00448
-ShortDownArrow; 0x02193
-ShortLeftArrow; 0x02190
-shortmid; 0x02223
-shortparallel; 0x02225
-ShortRightArrow; 0x02192
-ShortUpArrow; 0x02191
-shy; 0x000AD
-shy 0x000AD
-Sigma; 0x003A3
-sigma; 0x003C3
-sigmaf; 0x003C2
-sigmav; 0x003C2
-sim; 0x0223C
-simdot; 0x02A6A
-sime; 0x02243
-simeq; 0x02243
-simg; 0x02A9E
-simgE; 0x02AA0
-siml; 0x02A9D
-simlE; 0x02A9F
-simne; 0x02246
-simplus; 0x02A24
-simrarr; 0x02972
-slarr; 0x02190
-SmallCircle; 0x02218
-smallsetminus; 0x02216
-smashp; 0x02A33
-smeparsl; 0x029E4
-smid; 0x02223
-smile; 0x02323
-smt; 0x02AAA
-smte; 0x02AAC
-SOFTcy; 0x0042C
-softcy; 0x0044C
-sol; 0x0002F
-solb; 0x029C4
-solbar; 0x0233F
-Sopf; 0x1D54A
-sopf; 0x1D564
-spades; 0x02660
-spadesuit; 0x02660
-spar; 0x02225
-sqcap; 0x02293
-sqcup; 0x02294
-Sqrt; 0x0221A
-sqsub; 0x0228F
-sqsube; 0x02291
-sqsubset; 0x0228F
-sqsubseteq; 0x02291
-sqsup; 0x02290
-sqsupe; 0x02292
-sqsupset; 0x02290
-sqsupseteq; 0x02292
-squ; 0x025A1
-square; 0x025A1
-Square; 0x025A1
-SquareIntersection; 0x02293
-SquareSubset; 0x0228F
-SquareSubsetEqual; 0x02291
-SquareSuperset; 0x02290
-SquareSupersetEqual; 0x02292
-SquareUnion; 0x02294
-squarf; 0x025AA
-squf; 0x025AA
-srarr; 0x02192
-Sscr; 0x1D4AE
-sscr; 0x1D4C8
-ssetmn; 0x02216
-ssmile; 0x02323
-sstarf; 0x022C6
-Star; 0x022C6
-star; 0x02606
-starf; 0x02605
-straightepsilon; 0x003F5
-straightphi; 0x003D5
-strns; 0x000AF
-sub; 0x02282
-Sub; 0x022D0
-subdot; 0x02ABD
-sube; 0x02286
-subE; 0x02AC5
-subedot; 0x02AC3
-submult; 0x02AC1
-subne; 0x0228A
-subnE; 0x02ACB
-subplus; 0x02ABF
-subrarr; 0x02979
-subset; 0x02282
-Subset; 0x022D0
-subseteq; 0x02286
-subseteqq; 0x02AC5
-SubsetEqual; 0x02286
-subsetneq; 0x0228A
-subsetneqq; 0x02ACB
-subsim; 0x02AC7
-subsub; 0x02AD5
-subsup; 0x02AD3
-succ; 0x0227B
-succapprox; 0x02AB8
-succcurlyeq; 0x0227D
-Succeeds; 0x0227B
-SucceedsEqual; 0x02AB0
-SucceedsSlantEqual; 0x0227D
-SucceedsTilde; 0x0227F
-succeq; 0x02AB0
-succnapprox; 0x02ABA
-succneqq; 0x02AB6
-succnsim; 0x022E9
-succsim; 0x0227F
-SuchThat; 0x0220B
-sum; 0x02211
-Sum; 0x02211
-sung; 0x0266A
-sup; 0x02283
-Sup; 0x022D1
-sup1; 0x000B9
-sup1 0x000B9
-sup2; 0x000B2
-sup2 0x000B2
-sup3; 0x000B3
-sup3 0x000B3
-supdot; 0x02ABE
-supdsub; 0x02AD8
-supe; 0x02287
-supE; 0x02AC6
-supedot; 0x02AC4
-Superset; 0x02283
-SupersetEqual; 0x02287
-suphsub; 0x02AD7
-suplarr; 0x0297B
-supmult; 0x02AC2
-supne; 0x0228B
-supnE; 0x02ACC
-supplus; 0x02AC0
-supset; 0x02283
-Supset; 0x022D1
-supseteq; 0x02287
-supseteqq; 0x02AC6
-supsetneq; 0x0228B
-supsetneqq; 0x02ACC
-supsim; 0x02AC8
-supsub; 0x02AD4
-supsup; 0x02AD6
-swarhk; 0x02926
-swarr; 0x02199
-swArr; 0x021D9
-swarrow; 0x02199
-swnwar; 0x0292A
-szlig; 0x000DF
-szlig 0x000DF
-Tab; 0x00009
-target; 0x02316
-Tau; 0x003A4
-tau; 0x003C4
-tbrk; 0x023B4
-Tcaron; 0x00164
-tcaron; 0x00165
-Tcedil; 0x00162
-tcedil; 0x00163
-Tcy; 0x00422
-tcy; 0x00442
-tdot; 0x020DB
-telrec; 0x02315
-Tfr; 0x1D517
-tfr; 0x1D531
-there4; 0x02234
-therefore; 0x02234
-Therefore; 0x02234
-Theta; 0x00398
-theta; 0x003B8
-thetasym; 0x003D1
-thetav; 0x003D1
-thickapprox; 0x02248
-thicksim; 0x0223C
-thinsp; 0x02009
-ThinSpace; 0x02009
-thkap; 0x02248
-thksim; 0x0223C
-THORN; 0x000DE
-THORN 0x000DE
-thorn; 0x000FE
-thorn 0x000FE
-tilde; 0x002DC
-Tilde; 0x0223C
-TildeEqual; 0x02243
-TildeFullEqual; 0x02245
-TildeTilde; 0x02248
-times; 0x000D7
-times 0x000D7
-timesb; 0x022A0
-timesbar; 0x02A31
-timesd; 0x02A30
-tint; 0x0222D
-toea; 0x02928
-top; 0x022A4
-topbot; 0x02336
-topcir; 0x02AF1
-Topf; 0x1D54B
-topf; 0x1D565
-topfork; 0x02ADA
-tosa; 0x02929
-tprime; 0x02034
-trade; 0x02122
-TRADE; 0x02122
-triangle; 0x025B5
-triangledown; 0x025BF
-triangleleft; 0x025C3
-trianglelefteq; 0x022B4
-triangleq; 0x0225C
-triangleright; 0x025B9
-trianglerighteq; 0x022B5
-tridot; 0x025EC
-trie; 0x0225C
-triminus; 0x02A3A
-TripleDot; 0x020DB
-triplus; 0x02A39
-trisb; 0x029CD
-tritime; 0x02A3B
-trpezium; 0x023E2
-Tscr; 0x1D4AF
-tscr; 0x1D4C9
-TScy; 0x00426
-tscy; 0x00446
-TSHcy; 0x0040B
-tshcy; 0x0045B
-Tstrok; 0x00166
-tstrok; 0x00167
-twixt; 0x0226C
-twoheadleftarrow; 0x0219E
-twoheadrightarrow; 0x021A0
-Uacute; 0x000DA
-Uacute 0x000DA
-uacute; 0x000FA
-uacute 0x000FA
-uarr; 0x02191
-Uarr; 0x0219F
-uArr; 0x021D1
-Uarrocir; 0x02949
-Ubrcy; 0x0040E
-ubrcy; 0x0045E
-Ubreve; 0x0016C
-ubreve; 0x0016D
-Ucirc; 0x000DB
-Ucirc 0x000DB
-ucirc; 0x000FB
-ucirc 0x000FB
-Ucy; 0x00423
-ucy; 0x00443
-udarr; 0x021C5
-Udblac; 0x00170
-udblac; 0x00171
-udhar; 0x0296E
-ufisht; 0x0297E
-Ufr; 0x1D518
-ufr; 0x1D532
-Ugrave; 0x000D9
-Ugrave 0x000D9
-ugrave; 0x000F9
-ugrave 0x000F9
-uHar; 0x02963
-uharl; 0x021BF
-uharr; 0x021BE
-uhblk; 0x02580
-ulcorn; 0x0231C
-ulcorner; 0x0231C
-ulcrop; 0x0230F
-ultri; 0x025F8
-Umacr; 0x0016A
-umacr; 0x0016B
-uml; 0x000A8
-uml 0x000A8
-UnderBar; 0x00332
-UnderBrace; 0x023DF
-UnderBracket; 0x023B5
-UnderParenthesis; 0x023DD
-Union; 0x022C3
-UnionPlus; 0x0228E
-Uogon; 0x00172
-uogon; 0x00173
-Uopf; 0x1D54C
-uopf; 0x1D566
-uparrow; 0x02191
-UpArrow; 0x02191
-Uparrow; 0x021D1
-UpArrowBar; 0x02912
-UpArrowDownArrow; 0x021C5
-updownarrow; 0x02195
-UpDownArrow; 0x02195
-Updownarrow; 0x021D5
-UpEquilibrium; 0x0296E
-upharpoonleft; 0x021BF
-upharpoonright; 0x021BE
-uplus; 0x0228E
-UpperLeftArrow; 0x02196
-UpperRightArrow; 0x02197
-upsi; 0x003C5
-Upsi; 0x003D2
-upsih; 0x003D2
-Upsilon; 0x003A5
-upsilon; 0x003C5
-UpTee; 0x022A5
-UpTeeArrow; 0x021A5
-upuparrows; 0x021C8
-urcorn; 0x0231D
-urcorner; 0x0231D
-urcrop; 0x0230E
-Uring; 0x0016E
-uring; 0x0016F
-urtri; 0x025F9
-Uscr; 0x1D4B0
-uscr; 0x1D4CA
-utdot; 0x022F0
-Utilde; 0x00168
-utilde; 0x00169
-utri; 0x025B5
-utrif; 0x025B4
-uuarr; 0x021C8
-Uuml; 0x000DC
-Uuml 0x000DC
-uuml; 0x000FC
-uuml 0x000FC
-uwangle; 0x029A7
-vangrt; 0x0299C
-varepsilon; 0x003B5
-varkappa; 0x003F0
-varnothing; 0x02205
-varphi; 0x003C6
-varpi; 0x003D6
-varpropto; 0x0221D
-varr; 0x02195
-vArr; 0x021D5
-varrho; 0x003F1
-varsigma; 0x003C2
-vartheta; 0x003D1
-vartriangleleft; 0x022B2
-vartriangleright; 0x022B3
-vBar; 0x02AE8
-Vbar; 0x02AEB
-vBarv; 0x02AE9
-Vcy; 0x00412
-vcy; 0x00432
-vdash; 0x022A2
-vDash; 0x022A8
-Vdash; 0x022A9
-VDash; 0x022AB
-Vdashl; 0x02AE6
-vee; 0x02228
-Vee; 0x022C1
-veebar; 0x022BB
-veeeq; 0x0225A
-vellip; 0x022EE
-verbar; 0x0007C
-Verbar; 0x02016
-vert; 0x0007C
-Vert; 0x02016
-VerticalBar; 0x02223
-VerticalLine; 0x0007C
-VerticalSeparator; 0x02758
-VerticalTilde; 0x02240
-VeryThinSpace; 0x0200A
-Vfr; 0x1D519
-vfr; 0x1D533
-vltri; 0x022B2
-Vopf; 0x1D54D
-vopf; 0x1D567
-vprop; 0x0221D
-vrtri; 0x022B3
-Vscr; 0x1D4B1
-vscr; 0x1D4CB
-Vvdash; 0x022AA
-vzigzag; 0x0299A
-Wcirc; 0x00174
-wcirc; 0x00175
-wedbar; 0x02A5F
-wedge; 0x02227
-Wedge; 0x022C0
-wedgeq; 0x02259
-weierp; 0x02118
-Wfr; 0x1D51A
-wfr; 0x1D534
-Wopf; 0x1D54E
-wopf; 0x1D568
-wp; 0x02118
-wr; 0x02240
-wreath; 0x02240
-Wscr; 0x1D4B2
-wscr; 0x1D4CC
-xcap; 0x022C2
-xcirc; 0x025EF
-xcup; 0x022C3
-xdtri; 0x025BD
-Xfr; 0x1D51B
-xfr; 0x1D535
-xharr; 0x027F7
-xhArr; 0x027FA
-Xi; 0x0039E
-xi; 0x003BE
-xlarr; 0x027F5
-xlArr; 0x027F8
-xmap; 0x027FC
-xnis; 0x022FB
-xodot; 0x02A00
-Xopf; 0x1D54F
-xopf; 0x1D569
-xoplus; 0x02A01
-xotime; 0x02A02
-xrarr; 0x027F6
-xrArr; 0x027F9
-Xscr; 0x1D4B3
-xscr; 0x1D4CD
-xsqcup; 0x02A06
-xuplus; 0x02A04
-xutri; 0x025B3
-xvee; 0x022C1
-xwedge; 0x022C0
-Yacute; 0x000DD
-Yacute 0x000DD
-yacute; 0x000FD
-yacute 0x000FD
-YAcy; 0x0042F
-yacy; 0x0044F
-Ycirc; 0x00176
-ycirc; 0x00177
-Ycy; 0x0042B
-ycy; 0x0044B
-yen; 0x000A5
-yen 0x000A5
-Yfr; 0x1D51C
-yfr; 0x1D536
-YIcy; 0x00407
-yicy; 0x00457
-Yopf; 0x1D550
-yopf; 0x1D56A
-Yscr; 0x1D4B4
-yscr; 0x1D4CE
-YUcy; 0x0042E
-yucy; 0x0044E
-yuml; 0x000FF
-yuml 0x000FF
-Yuml; 0x00178
-Zacute; 0x00179
-zacute; 0x0017A
-Zcaron; 0x0017D
-zcaron; 0x0017E
-Zcy; 0x00417
-zcy; 0x00437
-Zdot; 0x0017B
-zdot; 0x0017C
-zeetrf; 0x02128
-ZeroWidthSpace; 0x0200B
-Zeta; 0x00396
-zeta; 0x003B6
-Zfr; 0x02128
-zfr; 0x1D537
-ZHcy; 0x00416
-zhcy; 0x00436
-zigrarr; 0x021DD
-Zopf; 0x02124
-zopf; 0x1D56B
-Zscr; 0x1D4B5
-zscr; 0x1D4CF
-zwj; 0x0200D
-zwnj; 0x0200C
+# Entity Code
+Aacute; 0x000C1
+Aacute 0x000C1
+aacute; 0x000E1
+aacute 0x000E1
+Abreve; 0x00102
+abreve; 0x00103
+ac; 0x0223E
+acd; 0x0223F
+acE; 0x0223E 0x00333
+Acirc; 0x000C2
+Acirc 0x000C2
+acirc; 0x000E2
+acirc 0x000E2
+acute; 0x000B4
+acute 0x000B4
+Acy; 0x00410
+acy; 0x00430
+AElig; 0x000C6
+AElig 0x000C6
+aelig; 0x000E6
+aelig 0x000E6
+af; 0x02061
+Afr; 0x1D504
+afr; 0x1D51E
+Agrave; 0x000C0
+Agrave 0x000C0
+agrave; 0x000E0
+agrave 0x000E0
+alefsym; 0x02135
+aleph; 0x02135
+Alpha; 0x00391
+alpha; 0x003B1
+Amacr; 0x00100
+amacr; 0x00101
+amalg; 0x02A3F
+amp; 0x00026
+amp 0x00026
+AMP; 0x00026
+AMP 0x00026
+and; 0x02227
+And; 0x02A53
+andand; 0x02A55
+andd; 0x02A5C
+andslope; 0x02A58
+andv; 0x02A5A
+ang; 0x02220
+ange; 0x029A4
+angle; 0x02220
+angmsd; 0x02221
+angmsdaa; 0x029A8
+angmsdab; 0x029A9
+angmsdac; 0x029AA
+angmsdad; 0x029AB
+angmsdae; 0x029AC
+angmsdaf; 0x029AD
+angmsdag; 0x029AE
+angmsdah; 0x029AF
+angrt; 0x0221F
+angrtvb; 0x022BE
+angrtvbd; 0x0299D
+angsph; 0x02222
+angst; 0x000C5
+angzarr; 0x0237C
+Aogon; 0x00104
+aogon; 0x00105
+Aopf; 0x1D538
+aopf; 0x1D552
+ap; 0x02248
+apacir; 0x02A6F
+ape; 0x0224A
+apE; 0x02A70
+apid; 0x0224B
+apos; 0x00027
+ApplyFunction; 0x02061
+approx; 0x02248
+approxeq; 0x0224A
+Aring; 0x000C5
+Aring 0x000C5
+aring; 0x000E5
+aring 0x000E5
+Ascr; 0x1D49C
+ascr; 0x1D4B6
+Assign; 0x02254
+ast; 0x0002A
+asymp; 0x02248
+asympeq; 0x0224D
+Atilde; 0x000C3
+Atilde 0x000C3
+atilde; 0x000E3
+atilde 0x000E3
+Auml; 0x000C4
+Auml 0x000C4
+auml; 0x000E4
+auml 0x000E4
+awconint; 0x02233
+awint; 0x02A11
+backcong; 0x0224C
+backepsilon; 0x003F6
+backprime; 0x02035
+backsim; 0x0223D
+backsimeq; 0x022CD
+Backslash; 0x02216
+Barv; 0x02AE7
+barvee; 0x022BD
+barwed; 0x02305
+Barwed; 0x02306
+barwedge; 0x02305
+bbrk; 0x023B5
+bbrktbrk; 0x023B6
+bcong; 0x0224C
+Bcy; 0x00411
+bcy; 0x00431
+bdquo; 0x0201E
+becaus; 0x02235
+because; 0x02235
+Because; 0x02235
+bemptyv; 0x029B0
+bepsi; 0x003F6
+bernou; 0x0212C
+Bernoullis; 0x0212C
+Beta; 0x00392
+beta; 0x003B2
+beth; 0x02136
+between; 0x0226C
+Bfr; 0x1D505
+bfr; 0x1D51F
+bigcap; 0x022C2
+bigcirc; 0x025EF
+bigcup; 0x022C3
+bigodot; 0x02A00
+bigoplus; 0x02A01
+bigotimes; 0x02A02
+bigsqcup; 0x02A06
+bigstar; 0x02605
+bigtriangledown; 0x025BD
+bigtriangleup; 0x025B3
+biguplus; 0x02A04
+bigvee; 0x022C1
+bigwedge; 0x022C0
+bkarow; 0x0290D
+blacklozenge; 0x029EB
+blacksquare; 0x025AA
+blacktriangle; 0x025B4
+blacktriangledown; 0x025BE
+blacktriangleleft; 0x025C2
+blacktriangleright; 0x025B8
+blank; 0x02423
+blk12; 0x02592
+blk14; 0x02591
+blk34; 0x02593
+block; 0x02588
+bne; 0x0003D 0x020E5
+bnequiv; 0x02261 0x020E5
+bnot; 0x02310
+bNot; 0x02AED
+Bopf; 0x1D539
+bopf; 0x1D553
+bot; 0x022A5
+bottom; 0x022A5
+bowtie; 0x022C8
+boxbox; 0x029C9
+boxdl; 0x02510
+boxdL; 0x02555
+boxDl; 0x02556
+boxDL; 0x02557
+boxdr; 0x0250C
+boxdR; 0x02552
+boxDr; 0x02553
+boxDR; 0x02554
+boxh; 0x02500
+boxH; 0x02550
+boxhd; 0x0252C
+boxHd; 0x02564
+boxhD; 0x02565
+boxHD; 0x02566
+boxhu; 0x02534
+boxHu; 0x02567
+boxhU; 0x02568
+boxHU; 0x02569
+boxminus; 0x0229F
+boxplus; 0x0229E
+boxtimes; 0x022A0
+boxul; 0x02518
+boxuL; 0x0255B
+boxUl; 0x0255C
+boxUL; 0x0255D
+boxur; 0x02514
+boxuR; 0x02558
+boxUr; 0x02559
+boxUR; 0x0255A
+boxv; 0x02502
+boxV; 0x02551
+boxvh; 0x0253C
+boxvH; 0x0256A
+boxVh; 0x0256B
+boxVH; 0x0256C
+boxvl; 0x02524
+boxvL; 0x02561
+boxVl; 0x02562
+boxVL; 0x02563
+boxvr; 0x0251C
+boxvR; 0x0255E
+boxVr; 0x0255F
+boxVR; 0x02560
+bprime; 0x02035
+breve; 0x002D8
+Breve; 0x002D8
+brvbar; 0x000A6
+brvbar 0x000A6
+Bscr; 0x0212C
+bscr; 0x1D4B7
+bsemi; 0x0204F
+bsim; 0x0223D
+bsime; 0x022CD
+bsol; 0x0005C
+bsolb; 0x029C5
+bsolhsub; 0x027C8
+bull; 0x02022
+bullet; 0x02022
+bump; 0x0224E
+bumpe; 0x0224F
+bumpE; 0x02AAE
+Bumpeq; 0x0224E
+bumpeq; 0x0224F
+Cacute; 0x00106
+cacute; 0x00107
+cap; 0x02229
+Cap; 0x022D2
+capand; 0x02A44
+capbrcup; 0x02A49
+capcap; 0x02A4B
+capcup; 0x02A47
+capdot; 0x02A40
+CapitalDifferentialD; 0x02145
+caps; 0x02229 0x0FE00
+caret; 0x02041
+caron; 0x002C7
+Cayleys; 0x0212D
+ccaps; 0x02A4D
+Ccaron; 0x0010C
+ccaron; 0x0010D
+Ccedil; 0x000C7
+Ccedil 0x000C7
+ccedil; 0x000E7
+ccedil 0x000E7
+Ccirc; 0x00108
+ccirc; 0x00109
+Cconint; 0x02230
+ccups; 0x02A4C
+ccupssm; 0x02A50
+Cdot; 0x0010A
+cdot; 0x0010B
+cedil; 0x000B8
+cedil 0x000B8
+Cedilla; 0x000B8
+cemptyv; 0x029B2
+cent; 0x000A2
+cent 0x000A2
+centerdot; 0x000B7
+CenterDot; 0x000B7
+Cfr; 0x0212D
+cfr; 0x1D520
+CHcy; 0x00427
+chcy; 0x00447
+check; 0x02713
+checkmark; 0x02713
+Chi; 0x003A7
+chi; 0x003C7
+cir; 0x025CB
+circ; 0x002C6
+circeq; 0x02257
+circlearrowleft; 0x021BA
+circlearrowright; 0x021BB
+circledast; 0x0229B
+circledcirc; 0x0229A
+circleddash; 0x0229D
+CircleDot; 0x02299
+circledR; 0x000AE
+circledS; 0x024C8
+CircleMinus; 0x02296
+CirclePlus; 0x02295
+CircleTimes; 0x02297
+cire; 0x02257
+cirE; 0x029C3
+cirfnint; 0x02A10
+cirmid; 0x02AEF
+cirscir; 0x029C2
+ClockwiseContourIntegral; 0x02232
+CloseCurlyDoubleQuote; 0x0201D
+CloseCurlyQuote; 0x02019
+clubs; 0x02663
+clubsuit; 0x02663
+colon; 0x0003A
+Colon; 0x02237
+colone; 0x02254
+Colone; 0x02A74
+coloneq; 0x02254
+comma; 0x0002C
+commat; 0x00040
+comp; 0x02201
+compfn; 0x02218
+complement; 0x02201
+complexes; 0x02102
+cong; 0x02245
+congdot; 0x02A6D
+Congruent; 0x02261
+conint; 0x0222E
+Conint; 0x0222F
+ContourIntegral; 0x0222E
+Copf; 0x02102
+copf; 0x1D554
+coprod; 0x02210
+Coproduct; 0x02210
+copy; 0x000A9
+copy 0x000A9
+COPY; 0x000A9
+COPY 0x000A9
+copysr; 0x02117
+CounterClockwiseContourIntegral; 0x02233
+crarr; 0x021B5
+cross; 0x02717
+Cross; 0x02A2F
+Cscr; 0x1D49E
+cscr; 0x1D4B8
+csub; 0x02ACF
+csube; 0x02AD1
+csup; 0x02AD0
+csupe; 0x02AD2
+ctdot; 0x022EF
+cudarrl; 0x02938
+cudarrr; 0x02935
+cuepr; 0x022DE
+cuesc; 0x022DF
+cularr; 0x021B6
+cularrp; 0x0293D
+cup; 0x0222A
+Cup; 0x022D3
+cupbrcap; 0x02A48
+CupCap; 0x0224D
+cupcap; 0x02A46
+cupcup; 0x02A4A
+cupdot; 0x0228D
+cupor; 0x02A45
+cups; 0x0222A 0x0FE00
+curarr; 0x021B7
+curarrm; 0x0293C
+curlyeqprec; 0x022DE
+curlyeqsucc; 0x022DF
+curlyvee; 0x022CE
+curlywedge; 0x022CF
+curren; 0x000A4
+curren 0x000A4
+curvearrowleft; 0x021B6
+curvearrowright; 0x021B7
+cuvee; 0x022CE
+cuwed; 0x022CF
+cwconint; 0x02232
+cwint; 0x02231
+cylcty; 0x0232D
+dagger; 0x02020
+Dagger; 0x02021
+daleth; 0x02138
+darr; 0x02193
+Darr; 0x021A1
+dArr; 0x021D3
+dash; 0x02010
+dashv; 0x022A3
+Dashv; 0x02AE4
+dbkarow; 0x0290F
+dblac; 0x002DD
+Dcaron; 0x0010E
+dcaron; 0x0010F
+Dcy; 0x00414
+dcy; 0x00434
+DD; 0x02145
+dd; 0x02146
+ddagger; 0x02021
+ddarr; 0x021CA
+DDotrahd; 0x02911
+ddotseq; 0x02A77
+deg; 0x000B0
+deg 0x000B0
+Del; 0x02207
+Delta; 0x00394
+delta; 0x003B4
+demptyv; 0x029B1
+dfisht; 0x0297F
+Dfr; 0x1D507
+dfr; 0x1D521
+dHar; 0x02965
+dharl; 0x021C3
+dharr; 0x021C2
+DiacriticalAcute; 0x000B4
+DiacriticalDot; 0x002D9
+DiacriticalDoubleAcute; 0x002DD
+DiacriticalGrave; 0x00060
+DiacriticalTilde; 0x002DC
+diam; 0x022C4
+diamond; 0x022C4
+Diamond; 0x022C4
+diamondsuit; 0x02666
+diams; 0x02666
+die; 0x000A8
+DifferentialD; 0x02146
+digamma; 0x003DD
+disin; 0x022F2
+div; 0x000F7
+divide; 0x000F7
+divide 0x000F7
+divideontimes; 0x022C7
+divonx; 0x022C7
+DJcy; 0x00402
+djcy; 0x00452
+dlcorn; 0x0231E
+dlcrop; 0x0230D
+dollar; 0x00024
+Dopf; 0x1D53B
+dopf; 0x1D555
+Dot; 0x000A8
+dot; 0x002D9
+DotDot; 0x020DC
+doteq; 0x02250
+doteqdot; 0x02251
+DotEqual; 0x02250
+dotminus; 0x02238
+dotplus; 0x02214
+dotsquare; 0x022A1
+doublebarwedge; 0x02306
+DoubleContourIntegral; 0x0222F
+DoubleDot; 0x000A8
+DoubleDownArrow; 0x021D3
+DoubleLeftArrow; 0x021D0
+DoubleLeftRightArrow; 0x021D4
+DoubleLeftTee; 0x02AE4
+DoubleLongLeftArrow; 0x027F8
+DoubleLongLeftRightArrow; 0x027FA
+DoubleLongRightArrow; 0x027F9
+DoubleRightArrow; 0x021D2
+DoubleRightTee; 0x022A8
+DoubleUpArrow; 0x021D1
+DoubleUpDownArrow; 0x021D5
+DoubleVerticalBar; 0x02225
+downarrow; 0x02193
+DownArrow; 0x02193
+Downarrow; 0x021D3
+DownArrowBar; 0x02913
+DownArrowUpArrow; 0x021F5
+DownBreve; 0x00311
+downdownarrows; 0x021CA
+downharpoonleft; 0x021C3
+downharpoonright; 0x021C2
+DownLeftRightVector; 0x02950
+DownLeftTeeVector; 0x0295E
+DownLeftVector; 0x021BD
+DownLeftVectorBar; 0x02956
+DownRightTeeVector; 0x0295F
+DownRightVector; 0x021C1
+DownRightVectorBar; 0x02957
+DownTee; 0x022A4
+DownTeeArrow; 0x021A7
+drbkarow; 0x02910
+drcorn; 0x0231F
+drcrop; 0x0230C
+Dscr; 0x1D49F
+dscr; 0x1D4B9
+DScy; 0x00405
+dscy; 0x00455
+dsol; 0x029F6
+Dstrok; 0x00110
+dstrok; 0x00111
+dtdot; 0x022F1
+dtri; 0x025BF
+dtrif; 0x025BE
+duarr; 0x021F5
+duhar; 0x0296F
+dwangle; 0x029A6
+DZcy; 0x0040F
+dzcy; 0x0045F
+dzigrarr; 0x027FF
+Eacute; 0x000C9
+Eacute 0x000C9
+eacute; 0x000E9
+eacute 0x000E9
+easter; 0x02A6E
+Ecaron; 0x0011A
+ecaron; 0x0011B
+ecir; 0x02256
+Ecirc; 0x000CA
+Ecirc 0x000CA
+ecirc; 0x000EA
+ecirc 0x000EA
+ecolon; 0x02255
+Ecy; 0x0042D
+ecy; 0x0044D
+eDDot; 0x02A77
+Edot; 0x00116
+edot; 0x00117
+eDot; 0x02251
+ee; 0x02147
+efDot; 0x02252
+Efr; 0x1D508
+efr; 0x1D522
+eg; 0x02A9A
+Egrave; 0x000C8
+Egrave 0x000C8
+egrave; 0x000E8
+egrave 0x000E8
+egs; 0x02A96
+egsdot; 0x02A98
+el; 0x02A99
+Element; 0x02208
+elinters; 0x023E7
+ell; 0x02113
+els; 0x02A95
+elsdot; 0x02A97
+Emacr; 0x00112
+emacr; 0x00113
+empty; 0x02205
+emptyset; 0x02205
+EmptySmallSquare; 0x025FB
+emptyv; 0x02205
+EmptyVerySmallSquare; 0x025AB
+emsp; 0x02003
+emsp13; 0x02004
+emsp14; 0x02005
+ENG; 0x0014A
+eng; 0x0014B
+ensp; 0x02002
+Eogon; 0x00118
+eogon; 0x00119
+Eopf; 0x1D53C
+eopf; 0x1D556
+epar; 0x022D5
+eparsl; 0x029E3
+eplus; 0x02A71
+epsi; 0x003B5
+Epsilon; 0x00395
+epsilon; 0x003B5
+epsiv; 0x003F5
+eqcirc; 0x02256
+eqcolon; 0x02255
+eqsim; 0x02242
+eqslantgtr; 0x02A96
+eqslantless; 0x02A95
+Equal; 0x02A75
+equals; 0x0003D
+EqualTilde; 0x02242
+equest; 0x0225F
+Equilibrium; 0x021CC
+equiv; 0x02261
+equivDD; 0x02A78
+eqvparsl; 0x029E5
+erarr; 0x02971
+erDot; 0x02253
+escr; 0x0212F
+Escr; 0x02130
+esdot; 0x02250
+esim; 0x02242
+Esim; 0x02A73
+Eta; 0x00397
+eta; 0x003B7
+ETH; 0x000D0
+ETH 0x000D0
+eth; 0x000F0
+eth 0x000F0
+Euml; 0x000CB
+Euml 0x000CB
+euml; 0x000EB
+euml 0x000EB
+euro; 0x020AC
+excl; 0x00021
+exist; 0x02203
+Exists; 0x02203
+expectation; 0x02130
+exponentiale; 0x02147
+ExponentialE; 0x02147
+fallingdotseq; 0x02252
+Fcy; 0x00424
+fcy; 0x00444
+female; 0x02640
+ffilig; 0x0FB03
+fflig; 0x0FB00
+ffllig; 0x0FB04
+Ffr; 0x1D509
+ffr; 0x1D523
+filig; 0x0FB01
+FilledSmallSquare; 0x025FC
+FilledVerySmallSquare; 0x025AA
+fjlig; 0x00066 0x0006A
+flat; 0x0266D
+fllig; 0x0FB02
+fltns; 0x025B1
+fnof; 0x00192
+Fopf; 0x1D53D
+fopf; 0x1D557
+forall; 0x02200
+ForAll; 0x02200
+fork; 0x022D4
+forkv; 0x02AD9
+Fouriertrf; 0x02131
+fpartint; 0x02A0D
+frac12; 0x000BD
+frac12 0x000BD
+frac13; 0x02153
+frac14; 0x000BC
+frac14 0x000BC
+frac15; 0x02155
+frac16; 0x02159
+frac18; 0x0215B
+frac23; 0x02154
+frac25; 0x02156
+frac34; 0x000BE
+frac34 0x000BE
+frac35; 0x02157
+frac38; 0x0215C
+frac45; 0x02158
+frac56; 0x0215A
+frac58; 0x0215D
+frac78; 0x0215E
+frasl; 0x02044
+frown; 0x02322
+Fscr; 0x02131
+fscr; 0x1D4BB
+gacute; 0x001F5
+Gamma; 0x00393
+gamma; 0x003B3
+Gammad; 0x003DC
+gammad; 0x003DD
+gap; 0x02A86
+Gbreve; 0x0011E
+gbreve; 0x0011F
+Gcedil; 0x00122
+Gcirc; 0x0011C
+gcirc; 0x0011D
+Gcy; 0x00413
+gcy; 0x00433
+Gdot; 0x00120
+gdot; 0x00121
+ge; 0x02265
+gE; 0x02267
+gel; 0x022DB
+gEl; 0x02A8C
+geq; 0x02265
+geqq; 0x02267
+geqslant; 0x02A7E
+ges; 0x02A7E
+gescc; 0x02AA9
+gesdot; 0x02A80
+gesdoto; 0x02A82
+gesdotol; 0x02A84
+gesl; 0x022DB 0x0FE00
+gesles; 0x02A94
+Gfr; 0x1D50A
+gfr; 0x1D524
+gg; 0x0226B
+Gg; 0x022D9
+ggg; 0x022D9
+gimel; 0x02137
+GJcy; 0x00403
+gjcy; 0x00453
+gl; 0x02277
+gla; 0x02AA5
+glE; 0x02A92
+glj; 0x02AA4
+gnap; 0x02A8A
+gnapprox; 0x02A8A
+gnE; 0x02269
+gne; 0x02A88
+gneq; 0x02A88
+gneqq; 0x02269
+gnsim; 0x022E7
+Gopf; 0x1D53E
+gopf; 0x1D558
+grave; 0x00060
+GreaterEqual; 0x02265
+GreaterEqualLess; 0x022DB
+GreaterFullEqual; 0x02267
+GreaterGreater; 0x02AA2
+GreaterLess; 0x02277
+GreaterSlantEqual; 0x02A7E
+GreaterTilde; 0x02273
+gscr; 0x0210A
+Gscr; 0x1D4A2
+gsim; 0x02273
+gsime; 0x02A8E
+gsiml; 0x02A90
+gt; 0x0003E
+gt 0x0003E
+GT; 0x0003E
+GT 0x0003E
+Gt; 0x0226B
+gtcc; 0x02AA7
+gtcir; 0x02A7A
+gtdot; 0x022D7
+gtlPar; 0x02995
+gtquest; 0x02A7C
+gtrapprox; 0x02A86
+gtrarr; 0x02978
+gtrdot; 0x022D7
+gtreqless; 0x022DB
+gtreqqless; 0x02A8C
+gtrless; 0x02277
+gtrsim; 0x02273
+gvertneqq; 0x02269 0x0FE00
+gvnE; 0x02269 0x0FE00
+Hacek; 0x002C7
+hairsp; 0x0200A
+half; 0x000BD
+hamilt; 0x0210B
+HARDcy; 0x0042A
+hardcy; 0x0044A
+harr; 0x02194
+hArr; 0x021D4
+harrcir; 0x02948
+harrw; 0x021AD
+Hat; 0x0005E
+hbar; 0x0210F
+Hcirc; 0x00124
+hcirc; 0x00125
+hearts; 0x02665
+heartsuit; 0x02665
+hellip; 0x02026
+hercon; 0x022B9
+Hfr; 0x0210C
+hfr; 0x1D525
+HilbertSpace; 0x0210B
+hksearow; 0x02925
+hkswarow; 0x02926
+hoarr; 0x021FF
+homtht; 0x0223B
+hookleftarrow; 0x021A9
+hookrightarrow; 0x021AA
+Hopf; 0x0210D
+hopf; 0x1D559
+horbar; 0x02015
+HorizontalLine; 0x02500
+Hscr; 0x0210B
+hscr; 0x1D4BD
+hslash; 0x0210F
+Hstrok; 0x00126
+hstrok; 0x00127
+HumpDownHump; 0x0224E
+HumpEqual; 0x0224F
+hybull; 0x02043
+hyphen; 0x02010
+Iacute; 0x000CD
+Iacute 0x000CD
+iacute; 0x000ED
+iacute 0x000ED
+ic; 0x02063
+Icirc; 0x000CE
+Icirc 0x000CE
+icirc; 0x000EE
+icirc 0x000EE
+Icy; 0x00418
+icy; 0x00438
+Idot; 0x00130
+IEcy; 0x00415
+iecy; 0x00435
+iexcl; 0x000A1
+iexcl 0x000A1
+iff; 0x021D4
+Ifr; 0x02111
+ifr; 0x1D526
+Igrave; 0x000CC
+Igrave 0x000CC
+igrave; 0x000EC
+igrave 0x000EC
+ii; 0x02148
+iiiint; 0x02A0C
+iiint; 0x0222D
+iinfin; 0x029DC
+iiota; 0x02129
+IJlig; 0x00132
+ijlig; 0x00133
+Im; 0x02111
+Imacr; 0x0012A
+imacr; 0x0012B
+image; 0x02111
+ImaginaryI; 0x02148
+imagline; 0x02110
+imagpart; 0x02111
+imath; 0x00131
+imof; 0x022B7
+imped; 0x001B5
+Implies; 0x021D2
+in; 0x02208
+incare; 0x02105
+infin; 0x0221E
+infintie; 0x029DD
+inodot; 0x00131
+int; 0x0222B
+Int; 0x0222C
+intcal; 0x022BA
+integers; 0x02124
+Integral; 0x0222B
+intercal; 0x022BA
+Intersection; 0x022C2
+intlarhk; 0x02A17
+intprod; 0x02A3C
+InvisibleComma; 0x02063
+InvisibleTimes; 0x02062
+IOcy; 0x00401
+iocy; 0x00451
+Iogon; 0x0012E
+iogon; 0x0012F
+Iopf; 0x1D540
+iopf; 0x1D55A
+Iota; 0x00399
+iota; 0x003B9
+iprod; 0x02A3C
+iquest; 0x000BF
+iquest 0x000BF
+Iscr; 0x02110
+iscr; 0x1D4BE
+isin; 0x02208
+isindot; 0x022F5
+isinE; 0x022F9
+isins; 0x022F4
+isinsv; 0x022F3
+isinv; 0x02208
+it; 0x02062
+Itilde; 0x00128
+itilde; 0x00129
+Iukcy; 0x00406
+iukcy; 0x00456
+Iuml; 0x000CF
+Iuml 0x000CF
+iuml; 0x000EF
+iuml 0x000EF
+Jcirc; 0x00134
+jcirc; 0x00135
+Jcy; 0x00419
+jcy; 0x00439
+Jfr; 0x1D50D
+jfr; 0x1D527
+jmath; 0x00237
+Jopf; 0x1D541
+jopf; 0x1D55B
+Jscr; 0x1D4A5
+jscr; 0x1D4BF
+Jsercy; 0x00408
+jsercy; 0x00458
+Jukcy; 0x00404
+jukcy; 0x00454
+Kappa; 0x0039A
+kappa; 0x003BA
+kappav; 0x003F0
+Kcedil; 0x00136
+kcedil; 0x00137
+Kcy; 0x0041A
+kcy; 0x0043A
+Kfr; 0x1D50E
+kfr; 0x1D528
+kgreen; 0x00138
+KHcy; 0x00425
+khcy; 0x00445
+KJcy; 0x0040C
+kjcy; 0x0045C
+Kopf; 0x1D542
+kopf; 0x1D55C
+Kscr; 0x1D4A6
+kscr; 0x1D4C0
+lAarr; 0x021DA
+Lacute; 0x00139
+lacute; 0x0013A
+laemptyv; 0x029B4
+lagran; 0x02112
+Lambda; 0x0039B
+lambda; 0x003BB
+lang; 0x027E8
+Lang; 0x027EA
+langd; 0x02991
+langle; 0x027E8
+lap; 0x02A85
+Laplacetrf; 0x02112
+laquo; 0x000AB
+laquo 0x000AB
+larr; 0x02190
+Larr; 0x0219E
+lArr; 0x021D0
+larrb; 0x021E4
+larrbfs; 0x0291F
+larrfs; 0x0291D
+larrhk; 0x021A9
+larrlp; 0x021AB
+larrpl; 0x02939
+larrsim; 0x02973
+larrtl; 0x021A2
+lat; 0x02AAB
+latail; 0x02919
+lAtail; 0x0291B
+late; 0x02AAD
+lates; 0x02AAD 0x0FE00
+lbarr; 0x0290C
+lBarr; 0x0290E
+lbbrk; 0x02772
+lbrace; 0x0007B
+lbrack; 0x0005B
+lbrke; 0x0298B
+lbrksld; 0x0298F
+lbrkslu; 0x0298D
+Lcaron; 0x0013D
+lcaron; 0x0013E
+Lcedil; 0x0013B
+lcedil; 0x0013C
+lceil; 0x02308
+lcub; 0x0007B
+Lcy; 0x0041B
+lcy; 0x0043B
+ldca; 0x02936
+ldquo; 0x0201C
+ldquor; 0x0201E
+ldrdhar; 0x02967
+ldrushar; 0x0294B
+ldsh; 0x021B2
+le; 0x02264
+lE; 0x02266
+LeftAngleBracket; 0x027E8
+leftarrow; 0x02190
+LeftArrow; 0x02190
+Leftarrow; 0x021D0
+LeftArrowBar; 0x021E4
+LeftArrowRightArrow; 0x021C6
+leftarrowtail; 0x021A2
+LeftCeiling; 0x02308
+LeftDoubleBracket; 0x027E6
+LeftDownTeeVector; 0x02961
+LeftDownVector; 0x021C3
+LeftDownVectorBar; 0x02959
+LeftFloor; 0x0230A
+leftharpoondown; 0x021BD
+leftharpoonup; 0x021BC
+leftleftarrows; 0x021C7
+leftrightarrow; 0x02194
+LeftRightArrow; 0x02194
+Leftrightarrow; 0x021D4
+leftrightarrows; 0x021C6
+leftrightharpoons; 0x021CB
+leftrightsquigarrow; 0x021AD
+LeftRightVector; 0x0294E
+LeftTee; 0x022A3
+LeftTeeArrow; 0x021A4
+LeftTeeVector; 0x0295A
+leftthreetimes; 0x022CB
+LeftTriangle; 0x022B2
+LeftTriangleBar; 0x029CF
+LeftTriangleEqual; 0x022B4
+LeftUpDownVector; 0x02951
+LeftUpTeeVector; 0x02960
+LeftUpVector; 0x021BF
+LeftUpVectorBar; 0x02958
+LeftVector; 0x021BC
+LeftVectorBar; 0x02952
+leg; 0x022DA
+lEg; 0x02A8B
+leq; 0x02264
+leqq; 0x02266
+leqslant; 0x02A7D
+les; 0x02A7D
+lescc; 0x02AA8
+lesdot; 0x02A7F
+lesdoto; 0x02A81
+lesdotor; 0x02A83
+lesg; 0x022DA 0x0FE00
+lesges; 0x02A93
+lessapprox; 0x02A85
+lessdot; 0x022D6
+lesseqgtr; 0x022DA
+lesseqqgtr; 0x02A8B
+LessEqualGreater; 0x022DA
+LessFullEqual; 0x02266
+LessGreater; 0x02276
+lessgtr; 0x02276
+LessLess; 0x02AA1
+lesssim; 0x02272
+LessSlantEqual; 0x02A7D
+LessTilde; 0x02272
+lfisht; 0x0297C
+lfloor; 0x0230A
+Lfr; 0x1D50F
+lfr; 0x1D529
+lg; 0x02276
+lgE; 0x02A91
+lHar; 0x02962
+lhard; 0x021BD
+lharu; 0x021BC
+lharul; 0x0296A
+lhblk; 0x02584
+LJcy; 0x00409
+ljcy; 0x00459
+ll; 0x0226A
+Ll; 0x022D8
+llarr; 0x021C7
+llcorner; 0x0231E
+Lleftarrow; 0x021DA
+llhard; 0x0296B
+lltri; 0x025FA
+Lmidot; 0x0013F
+lmidot; 0x00140
+lmoust; 0x023B0
+lmoustache; 0x023B0
+lnap; 0x02A89
+lnapprox; 0x02A89
+lnE; 0x02268
+lne; 0x02A87
+lneq; 0x02A87
+lneqq; 0x02268
+lnsim; 0x022E6
+loang; 0x027EC
+loarr; 0x021FD
+lobrk; 0x027E6
+longleftarrow; 0x027F5
+LongLeftArrow; 0x027F5
+Longleftarrow; 0x027F8
+longleftrightarrow; 0x027F7
+LongLeftRightArrow; 0x027F7
+Longleftrightarrow; 0x027FA
+longmapsto; 0x027FC
+longrightarrow; 0x027F6
+LongRightArrow; 0x027F6
+Longrightarrow; 0x027F9
+looparrowleft; 0x021AB
+looparrowright; 0x021AC
+lopar; 0x02985
+Lopf; 0x1D543
+lopf; 0x1D55D
+loplus; 0x02A2D
+lotimes; 0x02A34
+lowast; 0x02217
+lowbar; 0x0005F
+LowerLeftArrow; 0x02199
+LowerRightArrow; 0x02198
+loz; 0x025CA
+lozenge; 0x025CA
+lozf; 0x029EB
+lpar; 0x00028
+lparlt; 0x02993
+lrarr; 0x021C6
+lrcorner; 0x0231F
+lrhar; 0x021CB
+lrhard; 0x0296D
+lrm; 0x0200E
+lrtri; 0x022BF
+lsaquo; 0x02039
+Lscr; 0x02112
+lscr; 0x1D4C1
+lsh; 0x021B0
+Lsh; 0x021B0
+lsim; 0x02272
+lsime; 0x02A8D
+lsimg; 0x02A8F
+lsqb; 0x0005B
+lsquo; 0x02018
+lsquor; 0x0201A
+Lstrok; 0x00141
+lstrok; 0x00142
+lt; 0x0003C
+lt 0x0003C
+LT; 0x0003C
+LT 0x0003C
+Lt; 0x0226A
+ltcc; 0x02AA6
+ltcir; 0x02A79
+ltdot; 0x022D6
+lthree; 0x022CB
+ltimes; 0x022C9
+ltlarr; 0x02976
+ltquest; 0x02A7B
+ltri; 0x025C3
+ltrie; 0x022B4
+ltrif; 0x025C2
+ltrPar; 0x02996
+lurdshar; 0x0294A
+luruhar; 0x02966
+lvertneqq; 0x02268 0x0FE00
+lvnE; 0x02268 0x0FE00
+macr; 0x000AF
+macr 0x000AF
+male; 0x02642
+malt; 0x02720
+maltese; 0x02720
+map; 0x021A6
+Map; 0x02905
+mapsto; 0x021A6
+mapstodown; 0x021A7
+mapstoleft; 0x021A4
+mapstoup; 0x021A5
+marker; 0x025AE
+mcomma; 0x02A29
+Mcy; 0x0041C
+mcy; 0x0043C
+mdash; 0x02014
+mDDot; 0x0223A
+measuredangle; 0x02221
+MediumSpace; 0x0205F
+Mellintrf; 0x02133
+Mfr; 0x1D510
+mfr; 0x1D52A
+mho; 0x02127
+micro; 0x000B5
+micro 0x000B5
+mid; 0x02223
+midast; 0x0002A
+midcir; 0x02AF0
+middot; 0x000B7
+middot 0x000B7
+minus; 0x02212
+minusb; 0x0229F
+minusd; 0x02238
+minusdu; 0x02A2A
+MinusPlus; 0x02213
+mlcp; 0x02ADB
+mldr; 0x02026
+mnplus; 0x02213
+models; 0x022A7
+Mopf; 0x1D544
+mopf; 0x1D55E
+mp; 0x02213
+Mscr; 0x02133
+mscr; 0x1D4C2
+mstpos; 0x0223E
+Mu; 0x0039C
+mu; 0x003BC
+multimap; 0x022B8
+mumap; 0x022B8
+nabla; 0x02207
+Nacute; 0x00143
+nacute; 0x00144
+nang; 0x02220 0x020D2
+nap; 0x02249
+napE; 0x02A70 0x00338
+napid; 0x0224B 0x00338
+napos; 0x00149
+napprox; 0x02249
+natur; 0x0266E
+natural; 0x0266E
+naturals; 0x02115
+nbsp; 0x000A0
+nbsp 0x000A0
+nbump; 0x0224E 0x00338
+nbumpe; 0x0224F 0x00338
+ncap; 0x02A43
+Ncaron; 0x00147
+ncaron; 0x00148
+Ncedil; 0x00145
+ncedil; 0x00146
+ncong; 0x02247
+ncongdot; 0x02A6D 0x00338
+ncup; 0x02A42
+Ncy; 0x0041D
+ncy; 0x0043D
+ndash; 0x02013
+ne; 0x02260
+nearhk; 0x02924
+nearr; 0x02197
+neArr; 0x021D7
+nearrow; 0x02197
+nedot; 0x02250 0x00338
+NegativeMediumSpace; 0x0200B
+NegativeThickSpace; 0x0200B
+NegativeThinSpace; 0x0200B
+NegativeVeryThinSpace; 0x0200B
+nequiv; 0x02262
+nesear; 0x02928
+nesim; 0x02242 0x00338
+NestedGreaterGreater; 0x0226B
+NestedLessLess; 0x0226A
+NewLine; 0x0000A
+nexist; 0x02204
+nexists; 0x02204
+Nfr; 0x1D511
+nfr; 0x1D52B
+ngE; 0x02267 0x00338
+nge; 0x02271
+ngeq; 0x02271
+ngeqq; 0x02267 0x00338
+ngeqslant; 0x02A7E 0x00338
+nges; 0x02A7E 0x00338
+nGg; 0x022D9 0x00338
+ngsim; 0x02275
+nGt; 0x0226B 0x020D2
+ngt; 0x0226F
+ngtr; 0x0226F
+nGtv; 0x0226B 0x00338
+nharr; 0x021AE
+nhArr; 0x021CE
+nhpar; 0x02AF2
+ni; 0x0220B
+nis; 0x022FC
+nisd; 0x022FA
+niv; 0x0220B
+NJcy; 0x0040A
+njcy; 0x0045A
+nlarr; 0x0219A
+nlArr; 0x021CD
+nldr; 0x02025
+nlE; 0x02266 0x00338
+nle; 0x02270
+nleftarrow; 0x0219A
+nLeftarrow; 0x021CD
+nleftrightarrow; 0x021AE
+nLeftrightarrow; 0x021CE
+nleq; 0x02270
+nleqq; 0x02266 0x00338
+nleqslant; 0x02A7D 0x00338
+nles; 0x02A7D 0x00338
+nless; 0x0226E
+nLl; 0x022D8 0x00338
+nlsim; 0x02274
+nLt; 0x0226A 0x020D2
+nlt; 0x0226E
+nltri; 0x022EA
+nltrie; 0x022EC
+nLtv; 0x0226A 0x00338
+nmid; 0x02224
+NoBreak; 0x02060
+NonBreakingSpace; 0x000A0
+Nopf; 0x02115
+nopf; 0x1D55F
+not; 0x000AC
+not 0x000AC
+Not; 0x02AEC
+NotCongruent; 0x02262
+NotCupCap; 0x0226D
+NotDoubleVerticalBar; 0x02226
+NotElement; 0x02209
+NotEqual; 0x02260
+NotEqualTilde; 0x02242 0x00338
+NotExists; 0x02204
+NotGreater; 0x0226F
+NotGreaterEqual; 0x02271
+NotGreaterFullEqual; 0x02267 0x00338
+NotGreaterGreater; 0x0226B 0x00338
+NotGreaterLess; 0x02279
+NotGreaterSlantEqual; 0x02A7E 0x00338
+NotGreaterTilde; 0x02275
+NotHumpDownHump; 0x0224E 0x00338
+NotHumpEqual; 0x0224F 0x00338
+notin; 0x02209
+notindot; 0x022F5 0x00338
+notinE; 0x022F9 0x00338
+notinva; 0x02209
+notinvb; 0x022F7
+notinvc; 0x022F6
+NotLeftTriangle; 0x022EA
+NotLeftTriangleBar; 0x029CF 0x00338
+NotLeftTriangleEqual; 0x022EC
+NotLess; 0x0226E
+NotLessEqual; 0x02270
+NotLessGreater; 0x02278
+NotLessLess; 0x0226A 0x00338
+NotLessSlantEqual; 0x02A7D 0x00338
+NotLessTilde; 0x02274
+NotNestedGreaterGreater; 0x02AA2 0x00338
+NotNestedLessLess; 0x02AA1 0x00338
+notni; 0x0220C
+notniva; 0x0220C
+notnivb; 0x022FE
+notnivc; 0x022FD
+NotPrecedes; 0x02280
+NotPrecedesEqual; 0x02AAF 0x00338
+NotPrecedesSlantEqual; 0x022E0
+NotReverseElement; 0x0220C
+NotRightTriangle; 0x022EB
+NotRightTriangleBar; 0x029D0 0x00338
+NotRightTriangleEqual; 0x022ED
+NotSquareSubset; 0x0228F 0x00338
+NotSquareSubsetEqual; 0x022E2
+NotSquareSuperset; 0x02290 0x00338
+NotSquareSupersetEqual; 0x022E3
+NotSubset; 0x02282 0x020D2
+NotSubsetEqual; 0x02288
+NotSucceeds; 0x02281
+NotSucceedsEqual; 0x02AB0 0x00338
+NotSucceedsSlantEqual; 0x022E1
+NotSucceedsTilde; 0x0227F 0x00338
+NotSuperset; 0x02283 0x020D2
+NotSupersetEqual; 0x02289
+NotTilde; 0x02241
+NotTildeEqual; 0x02244
+NotTildeFullEqual; 0x02247
+NotTildeTilde; 0x02249
+NotVerticalBar; 0x02224
+npar; 0x02226
+nparallel; 0x02226
+nparsl; 0x02AFD 0x020E5
+npart; 0x02202 0x00338
+npolint; 0x02A14
+npr; 0x02280
+nprcue; 0x022E0
+npre; 0x02AAF 0x00338
+nprec; 0x02280
+npreceq; 0x02AAF 0x00338
+nrarr; 0x0219B
+nrArr; 0x021CF
+nrarrc; 0x02933 0x00338
+nrarrw; 0x0219D 0x00338
+nrightarrow; 0x0219B
+nRightarrow; 0x021CF
+nrtri; 0x022EB
+nrtrie; 0x022ED
+nsc; 0x02281
+nsccue; 0x022E1
+nsce; 0x02AB0 0x00338
+Nscr; 0x1D4A9
+nscr; 0x1D4C3
+nshortmid; 0x02224
+nshortparallel; 0x02226
+nsim; 0x02241
+nsime; 0x02244
+nsimeq; 0x02244
+nsmid; 0x02224
+nspar; 0x02226
+nsqsube; 0x022E2
+nsqsupe; 0x022E3
+nsub; 0x02284
+nsube; 0x02288
+nsubE; 0x02AC5 0x00338
+nsubset; 0x02282 0x020D2
+nsubseteq; 0x02288
+nsubseteqq; 0x02AC5 0x00338
+nsucc; 0x02281
+nsucceq; 0x02AB0 0x00338
+nsup; 0x02285
+nsupe; 0x02289
+nsupE; 0x02AC6 0x00338
+nsupset; 0x02283 0x020D2
+nsupseteq; 0x02289
+nsupseteqq; 0x02AC6 0x00338
+ntgl; 0x02279
+Ntilde; 0x000D1
+Ntilde 0x000D1
+ntilde; 0x000F1
+ntilde 0x000F1
+ntlg; 0x02278
+ntriangleleft; 0x022EA
+ntrianglelefteq; 0x022EC
+ntriangleright; 0x022EB
+ntrianglerighteq; 0x022ED
+Nu; 0x0039D
+nu; 0x003BD
+num; 0x00023
+numero; 0x02116
+numsp; 0x02007
+nvap; 0x0224D 0x020D2
+nvdash; 0x022AC
+nvDash; 0x022AD
+nVdash; 0x022AE
+nVDash; 0x022AF
+nvge; 0x02265 0x020D2
+nvgt; 0x0003E 0x020D2
+nvHarr; 0x02904
+nvinfin; 0x029DE
+nvlArr; 0x02902
+nvle; 0x02264 0x020D2
+nvlt; 0x0003C 0x020D2
+nvltrie; 0x022B4 0x020D2
+nvrArr; 0x02903
+nvrtrie; 0x022B5 0x020D2
+nvsim; 0x0223C 0x020D2
+nwarhk; 0x02923
+nwarr; 0x02196
+nwArr; 0x021D6
+nwarrow; 0x02196
+nwnear; 0x02927
+Oacute; 0x000D3
+Oacute 0x000D3
+oacute; 0x000F3
+oacute 0x000F3
+oast; 0x0229B
+ocir; 0x0229A
+Ocirc; 0x000D4
+Ocirc 0x000D4
+ocirc; 0x000F4
+ocirc 0x000F4
+Ocy; 0x0041E
+ocy; 0x0043E
+odash; 0x0229D
+Odblac; 0x00150
+odblac; 0x00151
+odiv; 0x02A38
+odot; 0x02299
+odsold; 0x029BC
+OElig; 0x00152
+oelig; 0x00153
+ofcir; 0x029BF
+Ofr; 0x1D512
+ofr; 0x1D52C
+ogon; 0x002DB
+Ograve; 0x000D2
+Ograve 0x000D2
+ograve; 0x000F2
+ograve 0x000F2
+ogt; 0x029C1
+ohbar; 0x029B5
+ohm; 0x003A9
+oint; 0x0222E
+olarr; 0x021BA
+olcir; 0x029BE
+olcross; 0x029BB
+oline; 0x0203E
+olt; 0x029C0
+Omacr; 0x0014C
+omacr; 0x0014D
+Omega; 0x003A9
+omega; 0x003C9
+Omicron; 0x0039F
+omicron; 0x003BF
+omid; 0x029B6
+ominus; 0x02296
+Oopf; 0x1D546
+oopf; 0x1D560
+opar; 0x029B7
+OpenCurlyDoubleQuote; 0x0201C
+OpenCurlyQuote; 0x02018
+operp; 0x029B9
+oplus; 0x02295
+or; 0x02228
+Or; 0x02A54
+orarr; 0x021BB
+ord; 0x02A5D
+order; 0x02134
+orderof; 0x02134
+ordf; 0x000AA
+ordf 0x000AA
+ordm; 0x000BA
+ordm 0x000BA
+origof; 0x022B6
+oror; 0x02A56
+orslope; 0x02A57
+orv; 0x02A5B
+oS; 0x024C8
+oscr; 0x02134
+Oscr; 0x1D4AA
+Oslash; 0x000D8
+Oslash 0x000D8
+oslash; 0x000F8
+oslash 0x000F8
+osol; 0x02298
+Otilde; 0x000D5
+Otilde 0x000D5
+otilde; 0x000F5
+otilde 0x000F5
+otimes; 0x02297
+Otimes; 0x02A37
+otimesas; 0x02A36
+Ouml; 0x000D6
+Ouml 0x000D6
+ouml; 0x000F6
+ouml 0x000F6
+ovbar; 0x0233D
+OverBar; 0x0203E
+OverBrace; 0x023DE
+OverBracket; 0x023B4
+OverParenthesis; 0x023DC
+par; 0x02225
+para; 0x000B6
+para 0x000B6
+parallel; 0x02225
+parsim; 0x02AF3
+parsl; 0x02AFD
+part; 0x02202
+PartialD; 0x02202
+Pcy; 0x0041F
+pcy; 0x0043F
+percnt; 0x00025
+period; 0x0002E
+permil; 0x02030
+perp; 0x022A5
+pertenk; 0x02031
+Pfr; 0x1D513
+pfr; 0x1D52D
+Phi; 0x003A6
+phi; 0x003C6
+phiv; 0x003D5
+phmmat; 0x02133
+phone; 0x0260E
+Pi; 0x003A0
+pi; 0x003C0
+pitchfork; 0x022D4
+piv; 0x003D6
+planck; 0x0210F
+planckh; 0x0210E
+plankv; 0x0210F
+plus; 0x0002B
+plusacir; 0x02A23
+plusb; 0x0229E
+pluscir; 0x02A22
+plusdo; 0x02214
+plusdu; 0x02A25
+pluse; 0x02A72
+PlusMinus; 0x000B1
+plusmn; 0x000B1
+plusmn 0x000B1
+plussim; 0x02A26
+plustwo; 0x02A27
+pm; 0x000B1
+Poincareplane; 0x0210C
+pointint; 0x02A15
+Popf; 0x02119
+popf; 0x1D561
+pound; 0x000A3
+pound 0x000A3
+pr; 0x0227A
+Pr; 0x02ABB
+prap; 0x02AB7
+prcue; 0x0227C
+pre; 0x02AAF
+prE; 0x02AB3
+prec; 0x0227A
+precapprox; 0x02AB7
+preccurlyeq; 0x0227C
+Precedes; 0x0227A
+PrecedesEqual; 0x02AAF
+PrecedesSlantEqual; 0x0227C
+PrecedesTilde; 0x0227E
+preceq; 0x02AAF
+precnapprox; 0x02AB9
+precneqq; 0x02AB5
+precnsim; 0x022E8
+precsim; 0x0227E
+prime; 0x02032
+Prime; 0x02033
+primes; 0x02119
+prnap; 0x02AB9
+prnE; 0x02AB5
+prnsim; 0x022E8
+prod; 0x0220F
+Product; 0x0220F
+profalar; 0x0232E
+profline; 0x02312
+profsurf; 0x02313
+prop; 0x0221D
+Proportion; 0x02237
+Proportional; 0x0221D
+propto; 0x0221D
+prsim; 0x0227E
+prurel; 0x022B0
+Pscr; 0x1D4AB
+pscr; 0x1D4C5
+Psi; 0x003A8
+psi; 0x003C8
+puncsp; 0x02008
+Qfr; 0x1D514
+qfr; 0x1D52E
+qint; 0x02A0C
+Qopf; 0x0211A
+qopf; 0x1D562
+qprime; 0x02057
+Qscr; 0x1D4AC
+qscr; 0x1D4C6
+quaternions; 0x0210D
+quatint; 0x02A16
+quest; 0x0003F
+questeq; 0x0225F
+quot; 0x00022
+quot 0x00022
+QUOT; 0x00022
+QUOT 0x00022
+rAarr; 0x021DB
+race; 0x0223D 0x00331
+Racute; 0x00154
+racute; 0x00155
+radic; 0x0221A
+raemptyv; 0x029B3
+rang; 0x027E9
+Rang; 0x027EB
+rangd; 0x02992
+range; 0x029A5
+rangle; 0x027E9
+raquo; 0x000BB
+raquo 0x000BB
+rarr; 0x02192
+Rarr; 0x021A0
+rArr; 0x021D2
+rarrap; 0x02975
+rarrb; 0x021E5
+rarrbfs; 0x02920
+rarrc; 0x02933
+rarrfs; 0x0291E
+rarrhk; 0x021AA
+rarrlp; 0x021AC
+rarrpl; 0x02945
+rarrsim; 0x02974
+rarrtl; 0x021A3
+Rarrtl; 0x02916
+rarrw; 0x0219D
+ratail; 0x0291A
+rAtail; 0x0291C
+ratio; 0x02236
+rationals; 0x0211A
+rbarr; 0x0290D
+rBarr; 0x0290F
+RBarr; 0x02910
+rbbrk; 0x02773
+rbrace; 0x0007D
+rbrack; 0x0005D
+rbrke; 0x0298C
+rbrksld; 0x0298E
+rbrkslu; 0x02990
+Rcaron; 0x00158
+rcaron; 0x00159
+Rcedil; 0x00156
+rcedil; 0x00157
+rceil; 0x02309
+rcub; 0x0007D
+Rcy; 0x00420
+rcy; 0x00440
+rdca; 0x02937
+rdldhar; 0x02969
+rdquo; 0x0201D
+rdquor; 0x0201D
+rdsh; 0x021B3
+Re; 0x0211C
+real; 0x0211C
+realine; 0x0211B
+realpart; 0x0211C
+reals; 0x0211D
+rect; 0x025AD
+reg; 0x000AE
+reg 0x000AE
+REG; 0x000AE
+REG 0x000AE
+ReverseElement; 0x0220B
+ReverseEquilibrium; 0x021CB
+ReverseUpEquilibrium; 0x0296F
+rfisht; 0x0297D
+rfloor; 0x0230B
+Rfr; 0x0211C
+rfr; 0x1D52F
+rHar; 0x02964
+rhard; 0x021C1
+rharu; 0x021C0
+rharul; 0x0296C
+Rho; 0x003A1
+rho; 0x003C1
+rhov; 0x003F1
+RightAngleBracket; 0x027E9
+rightarrow; 0x02192
+RightArrow; 0x02192
+Rightarrow; 0x021D2
+RightArrowBar; 0x021E5
+RightArrowLeftArrow; 0x021C4
+rightarrowtail; 0x021A3
+RightCeiling; 0x02309
+RightDoubleBracket; 0x027E7
+RightDownTeeVector; 0x0295D
+RightDownVector; 0x021C2
+RightDownVectorBar; 0x02955
+RightFloor; 0x0230B
+rightharpoondown; 0x021C1
+rightharpoonup; 0x021C0
+rightleftarrows; 0x021C4
+rightleftharpoons; 0x021CC
+rightrightarrows; 0x021C9
+rightsquigarrow; 0x0219D
+RightTee; 0x022A2
+RightTeeArrow; 0x021A6
+RightTeeVector; 0x0295B
+rightthreetimes; 0x022CC
+RightTriangle; 0x022B3
+RightTriangleBar; 0x029D0
+RightTriangleEqual; 0x022B5
+RightUpDownVector; 0x0294F
+RightUpTeeVector; 0x0295C
+RightUpVector; 0x021BE
+RightUpVectorBar; 0x02954
+RightVector; 0x021C0
+RightVectorBar; 0x02953
+ring; 0x002DA
+risingdotseq; 0x02253
+rlarr; 0x021C4
+rlhar; 0x021CC
+rlm; 0x0200F
+rmoust; 0x023B1
+rmoustache; 0x023B1
+rnmid; 0x02AEE
+roang; 0x027ED
+roarr; 0x021FE
+robrk; 0x027E7
+ropar; 0x02986
+Ropf; 0x0211D
+ropf; 0x1D563
+roplus; 0x02A2E
+rotimes; 0x02A35
+RoundImplies; 0x02970
+rpar; 0x00029
+rpargt; 0x02994
+rppolint; 0x02A12
+rrarr; 0x021C9
+Rrightarrow; 0x021DB
+rsaquo; 0x0203A
+Rscr; 0x0211B
+rscr; 0x1D4C7
+rsh; 0x021B1
+Rsh; 0x021B1
+rsqb; 0x0005D
+rsquo; 0x02019
+rsquor; 0x02019
+rthree; 0x022CC
+rtimes; 0x022CA
+rtri; 0x025B9
+rtrie; 0x022B5
+rtrif; 0x025B8
+rtriltri; 0x029CE
+RuleDelayed; 0x029F4
+ruluhar; 0x02968
+rx; 0x0211E
+Sacute; 0x0015A
+sacute; 0x0015B
+sbquo; 0x0201A
+sc; 0x0227B
+Sc; 0x02ABC
+scap; 0x02AB8
+Scaron; 0x00160
+scaron; 0x00161
+sccue; 0x0227D
+sce; 0x02AB0
+scE; 0x02AB4
+Scedil; 0x0015E
+scedil; 0x0015F
+Scirc; 0x0015C
+scirc; 0x0015D
+scnap; 0x02ABA
+scnE; 0x02AB6
+scnsim; 0x022E9
+scpolint; 0x02A13
+scsim; 0x0227F
+Scy; 0x00421
+scy; 0x00441
+sdot; 0x022C5
+sdotb; 0x022A1
+sdote; 0x02A66
+searhk; 0x02925
+searr; 0x02198
+seArr; 0x021D8
+searrow; 0x02198
+sect; 0x000A7
+sect 0x000A7
+semi; 0x0003B
+seswar; 0x02929
+setminus; 0x02216
+setmn; 0x02216
+sext; 0x02736
+Sfr; 0x1D516
+sfr; 0x1D530
+sfrown; 0x02322
+sharp; 0x0266F
+SHCHcy; 0x00429
+shchcy; 0x00449
+SHcy; 0x00428
+shcy; 0x00448
+ShortDownArrow; 0x02193
+ShortLeftArrow; 0x02190
+shortmid; 0x02223
+shortparallel; 0x02225
+ShortRightArrow; 0x02192
+ShortUpArrow; 0x02191
+shy; 0x000AD
+shy 0x000AD
+Sigma; 0x003A3
+sigma; 0x003C3
+sigmaf; 0x003C2
+sigmav; 0x003C2
+sim; 0x0223C
+simdot; 0x02A6A
+sime; 0x02243
+simeq; 0x02243
+simg; 0x02A9E
+simgE; 0x02AA0
+siml; 0x02A9D
+simlE; 0x02A9F
+simne; 0x02246
+simplus; 0x02A24
+simrarr; 0x02972
+slarr; 0x02190
+SmallCircle; 0x02218
+smallsetminus; 0x02216
+smashp; 0x02A33
+smeparsl; 0x029E4
+smid; 0x02223
+smile; 0x02323
+smt; 0x02AAA
+smte; 0x02AAC
+smtes; 0x02AAC 0x0FE00
+SOFTcy; 0x0042C
+softcy; 0x0044C
+sol; 0x0002F
+solb; 0x029C4
+solbar; 0x0233F
+Sopf; 0x1D54A
+sopf; 0x1D564
+spades; 0x02660
+spadesuit; 0x02660
+spar; 0x02225
+sqcap; 0x02293
+sqcaps; 0x02293 0x0FE00
+sqcup; 0x02294
+sqcups; 0x02294 0x0FE00
+Sqrt; 0x0221A
+sqsub; 0x0228F
+sqsube; 0x02291
+sqsubset; 0x0228F
+sqsubseteq; 0x02291
+sqsup; 0x02290
+sqsupe; 0x02292
+sqsupset; 0x02290
+sqsupseteq; 0x02292
+squ; 0x025A1
+square; 0x025A1
+Square; 0x025A1
+SquareIntersection; 0x02293
+SquareSubset; 0x0228F
+SquareSubsetEqual; 0x02291
+SquareSuperset; 0x02290
+SquareSupersetEqual; 0x02292
+SquareUnion; 0x02294
+squarf; 0x025AA
+squf; 0x025AA
+srarr; 0x02192
+Sscr; 0x1D4AE
+sscr; 0x1D4C8
+ssetmn; 0x02216
+ssmile; 0x02323
+sstarf; 0x022C6
+Star; 0x022C6
+star; 0x02606
+starf; 0x02605
+straightepsilon; 0x003F5
+straightphi; 0x003D5
+strns; 0x000AF
+sub; 0x02282
+Sub; 0x022D0
+subdot; 0x02ABD
+sube; 0x02286
+subE; 0x02AC5
+subedot; 0x02AC3
+submult; 0x02AC1
+subne; 0x0228A
+subnE; 0x02ACB
+subplus; 0x02ABF
+subrarr; 0x02979
+subset; 0x02282
+Subset; 0x022D0
+subseteq; 0x02286
+subseteqq; 0x02AC5
+SubsetEqual; 0x02286
+subsetneq; 0x0228A
+subsetneqq; 0x02ACB
+subsim; 0x02AC7
+subsub; 0x02AD5
+subsup; 0x02AD3
+succ; 0x0227B
+succapprox; 0x02AB8
+succcurlyeq; 0x0227D
+Succeeds; 0x0227B
+SucceedsEqual; 0x02AB0
+SucceedsSlantEqual; 0x0227D
+SucceedsTilde; 0x0227F
+succeq; 0x02AB0
+succnapprox; 0x02ABA
+succneqq; 0x02AB6
+succnsim; 0x022E9
+succsim; 0x0227F
+SuchThat; 0x0220B
+sum; 0x02211
+Sum; 0x02211
+sung; 0x0266A
+sup; 0x02283
+Sup; 0x022D1
+sup1; 0x000B9
+sup1 0x000B9
+sup2; 0x000B2
+sup2 0x000B2
+sup3; 0x000B3
+sup3 0x000B3
+supdot; 0x02ABE
+supdsub; 0x02AD8
+supe; 0x02287
+supE; 0x02AC6
+supedot; 0x02AC4
+Superset; 0x02283
+SupersetEqual; 0x02287
+suphsol; 0x027C9
+suphsub; 0x02AD7
+suplarr; 0x0297B
+supmult; 0x02AC2
+supne; 0x0228B
+supnE; 0x02ACC
+supplus; 0x02AC0
+supset; 0x02283
+Supset; 0x022D1
+supseteq; 0x02287
+supseteqq; 0x02AC6
+supsetneq; 0x0228B
+supsetneqq; 0x02ACC
+supsim; 0x02AC8
+supsub; 0x02AD4
+supsup; 0x02AD6
+swarhk; 0x02926
+swarr; 0x02199
+swArr; 0x021D9
+swarrow; 0x02199
+swnwar; 0x0292A
+szlig; 0x000DF
+szlig 0x000DF
+Tab; 0x00009
+target; 0x02316
+Tau; 0x003A4
+tau; 0x003C4
+tbrk; 0x023B4
+Tcaron; 0x00164
+tcaron; 0x00165
+Tcedil; 0x00162
+tcedil; 0x00163
+Tcy; 0x00422
+tcy; 0x00442
+tdot; 0x020DB
+telrec; 0x02315
+Tfr; 0x1D517
+tfr; 0x1D531
+there4; 0x02234
+therefore; 0x02234
+Therefore; 0x02234
+Theta; 0x00398
+theta; 0x003B8
+thetasym; 0x003D1
+thetav; 0x003D1
+thickapprox; 0x02248
+thicksim; 0x0223C
+ThickSpace; 0x0205F 0x0200A
+thinsp; 0x02009
+ThinSpace; 0x02009
+thkap; 0x02248
+thksim; 0x0223C
+THORN; 0x000DE
+THORN 0x000DE
+thorn; 0x000FE
+thorn 0x000FE
+tilde; 0x002DC
+Tilde; 0x0223C
+TildeEqual; 0x02243
+TildeFullEqual; 0x02245
+TildeTilde; 0x02248
+times; 0x000D7
+times 0x000D7
+timesb; 0x022A0
+timesbar; 0x02A31
+timesd; 0x02A30
+tint; 0x0222D
+toea; 0x02928
+top; 0x022A4
+topbot; 0x02336
+topcir; 0x02AF1
+Topf; 0x1D54B
+topf; 0x1D565
+topfork; 0x02ADA
+tosa; 0x02929
+tprime; 0x02034
+trade; 0x02122
+TRADE; 0x02122
+triangle; 0x025B5
+triangledown; 0x025BF
+triangleleft; 0x025C3
+trianglelefteq; 0x022B4
+triangleq; 0x0225C
+triangleright; 0x025B9
+trianglerighteq; 0x022B5
+tridot; 0x025EC
+trie; 0x0225C
+triminus; 0x02A3A
+TripleDot; 0x020DB
+triplus; 0x02A39
+trisb; 0x029CD
+tritime; 0x02A3B
+trpezium; 0x023E2
+Tscr; 0x1D4AF
+tscr; 0x1D4C9
+TScy; 0x00426
+tscy; 0x00446
+TSHcy; 0x0040B
+tshcy; 0x0045B
+Tstrok; 0x00166
+tstrok; 0x00167
+twixt; 0x0226C
+twoheadleftarrow; 0x0219E
+twoheadrightarrow; 0x021A0
+Uacute; 0x000DA
+Uacute 0x000DA
+uacute; 0x000FA
+uacute 0x000FA
+uarr; 0x02191
+Uarr; 0x0219F
+uArr; 0x021D1
+Uarrocir; 0x02949
+Ubrcy; 0x0040E
+ubrcy; 0x0045E
+Ubreve; 0x0016C
+ubreve; 0x0016D
+Ucirc; 0x000DB
+Ucirc 0x000DB
+ucirc; 0x000FB
+ucirc 0x000FB
+Ucy; 0x00423
+ucy; 0x00443
+udarr; 0x021C5
+Udblac; 0x00170
+udblac; 0x00171
+udhar; 0x0296E
+ufisht; 0x0297E
+Ufr; 0x1D518
+ufr; 0x1D532
+Ugrave; 0x000D9
+Ugrave 0x000D9
+ugrave; 0x000F9
+ugrave 0x000F9
+uHar; 0x02963
+uharl; 0x021BF
+uharr; 0x021BE
+uhblk; 0x02580
+ulcorn; 0x0231C
+ulcorner; 0x0231C
+ulcrop; 0x0230F
+ultri; 0x025F8
+Umacr; 0x0016A
+umacr; 0x0016B
+uml; 0x000A8
+uml 0x000A8
+UnderBar; 0x0005F
+UnderBrace; 0x023DF
+UnderBracket; 0x023B5
+UnderParenthesis; 0x023DD
+Union; 0x022C3
+UnionPlus; 0x0228E
+Uogon; 0x00172
+uogon; 0x00173
+Uopf; 0x1D54C
+uopf; 0x1D566
+uparrow; 0x02191
+UpArrow; 0x02191
+Uparrow; 0x021D1
+UpArrowBar; 0x02912
+UpArrowDownArrow; 0x021C5
+updownarrow; 0x02195
+UpDownArrow; 0x02195
+Updownarrow; 0x021D5
+UpEquilibrium; 0x0296E
+upharpoonleft; 0x021BF
+upharpoonright; 0x021BE
+uplus; 0x0228E
+UpperLeftArrow; 0x02196
+UpperRightArrow; 0x02197
+upsi; 0x003C5
+Upsi; 0x003D2
+upsih; 0x003D2
+Upsilon; 0x003A5
+upsilon; 0x003C5
+UpTee; 0x022A5
+UpTeeArrow; 0x021A5
+upuparrows; 0x021C8
+urcorn; 0x0231D
+urcorner; 0x0231D
+urcrop; 0x0230E
+Uring; 0x0016E
+uring; 0x0016F
+urtri; 0x025F9
+Uscr; 0x1D4B0
+uscr; 0x1D4CA
+utdot; 0x022F0
+Utilde; 0x00168
+utilde; 0x00169
+utri; 0x025B5
+utrif; 0x025B4
+uuarr; 0x021C8
+Uuml; 0x000DC
+Uuml 0x000DC
+uuml; 0x000FC
+uuml 0x000FC
+uwangle; 0x029A7
+vangrt; 0x0299C
+varepsilon; 0x003F5
+varkappa; 0x003F0
+varnothing; 0x02205
+varphi; 0x003D5
+varpi; 0x003D6
+varpropto; 0x0221D
+varr; 0x02195
+vArr; 0x021D5
+varrho; 0x003F1
+varsigma; 0x003C2
+varsubsetneq; 0x0228A 0x0FE00
+varsubsetneqq; 0x02ACB 0x0FE00
+varsupsetneq; 0x0228B 0x0FE00
+varsupsetneqq; 0x02ACC 0x0FE00
+vartheta; 0x003D1
+vartriangleleft; 0x022B2
+vartriangleright; 0x022B3
+vBar; 0x02AE8
+Vbar; 0x02AEB
+vBarv; 0x02AE9
+Vcy; 0x00412
+vcy; 0x00432
+vdash; 0x022A2
+vDash; 0x022A8
+Vdash; 0x022A9
+VDash; 0x022AB
+Vdashl; 0x02AE6
+vee; 0x02228
+Vee; 0x022C1
+veebar; 0x022BB
+veeeq; 0x0225A
+vellip; 0x022EE
+verbar; 0x0007C
+Verbar; 0x02016
+vert; 0x0007C
+Vert; 0x02016
+VerticalBar; 0x02223
+VerticalLine; 0x0007C
+VerticalSeparator; 0x02758
+VerticalTilde; 0x02240
+VeryThinSpace; 0x0200A
+Vfr; 0x1D519
+vfr; 0x1D533
+vltri; 0x022B2
+vnsub; 0x02282 0x020D2
+vnsup; 0x02283 0x020D2
+Vopf; 0x1D54D
+vopf; 0x1D567
+vprop; 0x0221D
+vrtri; 0x022B3
+Vscr; 0x1D4B1
+vscr; 0x1D4CB
+vsubne; 0x0228A 0x0FE00
+vsubnE; 0x02ACB 0x0FE00
+vsupne; 0x0228B 0x0FE00
+vsupnE; 0x02ACC 0x0FE00
+Vvdash; 0x022AA
+vzigzag; 0x0299A
+Wcirc; 0x00174
+wcirc; 0x00175
+wedbar; 0x02A5F
+wedge; 0x02227
+Wedge; 0x022C0
+wedgeq; 0x02259
+weierp; 0x02118
+Wfr; 0x1D51A
+wfr; 0x1D534
+Wopf; 0x1D54E
+wopf; 0x1D568
+wp; 0x02118
+wr; 0x02240
+wreath; 0x02240
+Wscr; 0x1D4B2
+wscr; 0x1D4CC
+xcap; 0x022C2
+xcirc; 0x025EF
+xcup; 0x022C3
+xdtri; 0x025BD
+Xfr; 0x1D51B
+xfr; 0x1D535
+xharr; 0x027F7
+xhArr; 0x027FA
+Xi; 0x0039E
+xi; 0x003BE
+xlarr; 0x027F5
+xlArr; 0x027F8
+xmap; 0x027FC
+xnis; 0x022FB
+xodot; 0x02A00
+Xopf; 0x1D54F
+xopf; 0x1D569
+xoplus; 0x02A01
+xotime; 0x02A02
+xrarr; 0x027F6
+xrArr; 0x027F9
+Xscr; 0x1D4B3
+xscr; 0x1D4CD
+xsqcup; 0x02A06
+xuplus; 0x02A04
+xutri; 0x025B3
+xvee; 0x022C1
+xwedge; 0x022C0
+Yacute; 0x000DD
+Yacute 0x000DD
+yacute; 0x000FD
+yacute 0x000FD
+YAcy; 0x0042F
+yacy; 0x0044F
+Ycirc; 0x00176
+ycirc; 0x00177
+Ycy; 0x0042B
+ycy; 0x0044B
+yen; 0x000A5
+yen 0x000A5
+Yfr; 0x1D51C
+yfr; 0x1D536
+YIcy; 0x00407
+yicy; 0x00457
+Yopf; 0x1D550
+yopf; 0x1D56A
+Yscr; 0x1D4B4
+yscr; 0x1D4CE
+YUcy; 0x0042E
+yucy; 0x0044E
+yuml; 0x000FF
+yuml 0x000FF
+Yuml; 0x00178
+Zacute; 0x00179
+zacute; 0x0017A
+Zcaron; 0x0017D
+zcaron; 0x0017E
+Zcy; 0x00417
+zcy; 0x00437
+Zdot; 0x0017B
+zdot; 0x0017C
+zeetrf; 0x02128
+ZeroWidthSpace; 0x0200B
+Zeta; 0x00396
+zeta; 0x003B6
+Zfr; 0x02128
+zfr; 0x1D537
+ZHcy; 0x00416
+zhcy; 0x00436
+zigrarr; 0x021DD
+Zopf; 0x02124
+zopf; 0x1D56B
+Zscr; 0x1D4B5
+zscr; 0x1D4CF
+zwj; 0x0200D
+zwnj; 0x0200C
diff --git a/build/make-entities.pl b/build/make-entities.pl
index 7492052..ff4113f 100644
--- a/build/make-entities.pl
+++ b/build/make-entities.pl
@@ -4,8 +4,10 @@
# http://www.opensource.org/licenses/mit-license.php
# Copyright 2010 Daniel Silverstone <dsilvers@netsurf-browser.org>
# John-Mark Bell <jmb@netsurf-browser.org>
+# Rupinder Singh Khokhar <rsk1coder99@gmail.com>
use strict;
+use Encode;
use constant ENTITIES_FILE => 'build/Entities';
use constant ENTITIES_INC => 'src/tokeniser/entities.inc';
@@ -21,8 +23,25 @@ while (my $line = <INFILE>) {
next if ($line eq '');
my @elements = split /\s+/, $line;
my $entity = shift @elements;
- my $code = shift @elements;
- $entities{$entity} = $code;
+ my $len = 0;
+ my $code="";
+ while (@elements) {
+ my $ucs4 = hex(shift(@elements));
+ my $utf8 = Encode::encode_utf8(pack('U', $ucs4));
+ $len += length($utf8);
+ if ($ucs4 < 0x20 || $ucs4 == 0x22 ||
+ $ucs4 == 0x27 || $ucs4 == 0x5C ||
+ $ucs4 >= 0x7f) {
+ # Unsafe, or non-ASCII: emit escaped
+ for my $octet (unpack('C*', $utf8)) {
+ $code = $code . sprintf("\\x%02x", $octet);
+ }
+ } else {
+ # Safe: emit value
+ $code = $code . $utf8;
+ }
+ }
+ $entities{$entity} = "(const uint8_t *)\"$code\",$len";
}
close(INFILE);
@@ -113,9 +132,9 @@ foreach my $node (@nodelist) {
$split = ord($split) if ($split ne '');
$split = 0 if ($split eq '');
- $value = "0" unless defined($value);
+ $value = "NULL,0" unless defined($value);
- $output .= "\t{ $split, $lt, $eq, $gt, $value },\n";
+ $output .= "\t{ $split, $lt, $eq, $gt, {$value} },\n";
}
$output .= "};\n\n";
diff --git a/src/tokeniser/entities.c b/src/tokeniser/entities.c
index ac47d80..298b2cf 100644
--- a/src/tokeniser/entities.c
+++ b/src/tokeniser/entities.c
@@ -7,15 +7,20 @@
#include "utils/utils.h"
#include "tokeniser/entities.h"
+/**
+ * UTF-8 encoding of U+FFFD REPLACEMENT CHARACTER
+ */
+static const uint8_t u_fffd[3] = { '\xEF', '\xBF', '\xBD' };
+static const hubbub_string u_fffd_str = { u_fffd, sizeof(u_fffd) };
/** Node in our entity tree */
typedef struct hubbub_entity_node {
- /* Do not reorder this without fixing make-entities.pl */
+ /* Do not reorder this without fixing make-entities.pl */
uint8_t split; /**< Data to split on */
int32_t lt; /**< Subtree for data less than split */
int32_t eq; /**< Subtree for data equal to split */
int32_t gt; /**< Subtree for data greater than split */
- uint32_t value; /**< Data for this node */
+ hubbub_string value; /**< Data for this node */
} hubbub_entity_node;
#include "entities.inc"
@@ -38,7 +43,7 @@ typedef struct hubbub_entity_node {
* is found.
*/
static hubbub_error hubbub_entity_tree_search_step(uint8_t c,
- uint32_t *result, int32_t *context)
+ hubbub_string *result, int32_t *context)
{
bool match = false;
int32_t p;
@@ -63,7 +68,7 @@ static hubbub_error hubbub_entity_tree_search_step(uint8_t c,
match = true;
*result = dict[dict[p].eq].value;
p = dict[p].eq;
- } else if (dict[p].value != 0) {
+ } else if (dict[p].value.ptr != NULL) {
match = true;
*result = dict[p].value;
p = dict[p].eq;
@@ -100,13 +105,13 @@ static hubbub_error hubbub_entity_tree_search_step(uint8_t c,
* The location pointed to by ::result will be set to U+FFFD unless a match
* is found.
*/
-hubbub_error hubbub_entities_search_step(uint8_t c, uint32_t *result,
+hubbub_error hubbub_entities_search_step(uint8_t c, hubbub_string *result,
int32_t *context)
{
if (result == NULL)
return HUBBUB_BADPARM;
- *result = 0xFFFD;
-
+ *result = u_fffd_str;
+
return hubbub_entity_tree_search_step(c, result, context);
}
diff --git a/src/tokeniser/entities.h b/src/tokeniser/entities.h
index 0703b37..a8b9bbf 100644
--- a/src/tokeniser/entities.h
+++ b/src/tokeniser/entities.h
@@ -14,7 +14,7 @@
#include <hubbub/functypes.h>
/* Step-wise search for an entity in the dictionary */
-hubbub_error hubbub_entities_search_step(uint8_t c, uint32_t *result,
+hubbub_error hubbub_entities_search_step(uint8_t c, hubbub_string *result,
int32_t *context);
#endif
diff --git a/src/tokeniser/tokeniser.c b/src/tokeniser/tokeniser.c
index a7e67a1..7355f80 100644
--- a/src/tokeniser/tokeniser.c
+++ b/src/tokeniser/tokeniser.c
@@ -4,6 +4,7 @@
* http://www.opensource.org/licenses/mit-license.php
* Copyright 2007 John-Mark Bell <jmb@netsurf-browser.org>
* Copyright 2008 Andrew Sidwell <takkaria@netsurf-browser.org>
+ * Copyright 2014 Rupinder Singh Khokhar <rsk1coder99@gmail.com>
*/
#include <assert.h>
#include <stdbool.h>
@@ -128,7 +129,7 @@ typedef struct hubbub_tokeniser_context {
struct {
size_t offset; /**< Offset in buffer */
uint32_t length; /**< Length of entity */
- uint32_t codepoint; /**< UCS4 codepoint */
+ hubbub_string codepoint; /**< UTF-8 codepoint */
bool complete; /**< True if match complete */
uint32_t poss_length; /**< Optimistic length
@@ -147,6 +148,12 @@ typedef struct hubbub_tokeniser_context {
* numeric entity value */
hubbub_tokeniser_state return_state; /**< State we were
* called from */
+ union {
+ uint32_t ucs4; /**<UCS-4 value for numeric
+ * entity*/
+ uint8_t numeric_buf[6]; /**<UTF-8 value for numeric
+ * entity */
+ } numeric_state;
} match_entity; /**< Entity matching state */
struct {
@@ -810,19 +817,12 @@ hubbub_error hubbub_tokeniser_handle_character_reference_data(
} else {
hubbub_token token;
- uint8_t utf8[6];
- uint8_t *utf8ptr = utf8;
- size_t len = sizeof(utf8);
-
token.type = HUBBUB_TOKEN_CHARACTER;
-
- if (tokeniser->context.match_entity.codepoint) {
- parserutils_charset_utf8_from_ucs4(
- tokeniser->context.match_entity.codepoint,
- &utf8ptr, &len);
-
- token.data.character.ptr = utf8;
- token.data.character.len = sizeof(utf8) - len;
+ if (tokeniser->context.match_entity.codepoint.ptr != NULL) {
+ token.data.character.ptr =
+ tokeniser->context.match_entity.codepoint.ptr;
+ token.data.character.len =
+ tokeniser->context.match_entity.codepoint.len;
hubbub_tokeniser_emit_token(tokeniser, &token);
@@ -833,6 +833,7 @@ hubbub_error hubbub_tokeniser_handle_character_reference_data(
} else {
parserutils_error error;
const uint8_t *cptr = NULL;
+ size_t len;
error = parserutils_inputstream_peek(
tokeniser->input,
@@ -1607,23 +1608,17 @@ hubbub_error hubbub_tokeniser_handle_character_reference_in_attribute_value(
hubbub_attribute *attr = &ctag->attributes[
ctag->n_attributes - 1];
- uint8_t utf8[6];
- uint8_t *utf8ptr = utf8;
- size_t len = sizeof(utf8);
-
- if (tokeniser->context.match_entity.codepoint) {
- parserutils_charset_utf8_from_ucs4(
- tokeniser->context.match_entity.codepoint,
- &utf8ptr, &len);
-
- COLLECT_MS(attr->value, utf8, sizeof(utf8) - len);
+ if (tokeniser->context.match_entity.codepoint.ptr != NULL) {
+ COLLECT_MS(attr->value,
+ tokeniser->context.match_entity.codepoint.ptr,
+ tokeniser->context.match_entity.codepoint.len);
/* +1 for the ampersand */
tokeniser->context.pending +=
tokeniser->context.match_entity.length
+ 1;
} else {
- size_t len = 0;
+ size_t len;
const uint8_t *cptr = NULL;
parserutils_error error;
@@ -2899,7 +2894,9 @@ hubbub_error hubbub_tokeniser_consume_character_reference(
if (error != PARSERUTILS_OK) {
if (error == PARSERUTILS_EOF) {
tokeniser->context.match_entity.complete = true;
- tokeniser->context.match_entity.codepoint = 0;
+ tokeniser->context.match_entity.codepoint.len = 0;
+ tokeniser->context.match_entity.codepoint.ptr = NULL;
+ tokeniser->context.match_entity.numeric_state.ucs4 = 0;
return HUBBUB_OK;
} else {
return hubbub_error_from_parserutils_error(error);
@@ -2913,13 +2910,15 @@ hubbub_error hubbub_tokeniser_consume_character_reference(
tokeniser->context.match_entity.poss_length = 0;
tokeniser->context.match_entity.length = 0;
tokeniser->context.match_entity.base = 0;
- tokeniser->context.match_entity.codepoint = 0;
tokeniser->context.match_entity.had_data = false;
tokeniser->context.match_entity.return_state = tokeniser->state;
tokeniser->context.match_entity.complete = false;
tokeniser->context.match_entity.overflow = false;
tokeniser->context.match_entity.context = -1;
tokeniser->context.match_entity.prev_len = len;
+ tokeniser->context.match_entity.numeric_state.ucs4 = 0;
+ tokeniser->context.match_entity.codepoint.ptr = NULL;
+ tokeniser->context.match_entity.codepoint.len = 0;
/* Reset allowed character for future calls */
tokeniser->context.allowed_char = '\0';
@@ -2928,7 +2927,6 @@ hubbub_error hubbub_tokeniser_consume_character_reference(
c == '<' || c == '&' ||
(allowed_char && c == allowed_char)) {
tokeniser->context.match_entity.complete = true;
- tokeniser->context.match_entity.codepoint = 0;
} else if (c == '#') {
tokeniser->context.match_entity.length += len;
tokeniser->state = STATE_NUMBERED_ENTITY;
@@ -2975,22 +2973,22 @@ hubbub_error hubbub_tokeniser_handle_numbered_entity(
if (ctx->match_entity.base == 10 &&
('0' <= c && c <= '9')) {
ctx->match_entity.had_data = true;
- ctx->match_entity.codepoint =
- ctx->match_entity.codepoint * 10 + (c - '0');
-
+ ctx->match_entity.numeric_state.ucs4 =
+ ctx->match_entity.numeric_state.ucs4 * 10 + (c - '0');
ctx->match_entity.length += len;
} else if (ctx->match_entity.base == 16 &&
(('0' <= c && c <= '9') ||
('A' <= (c & ~0x20) &&
(c & ~0x20) <= 'F'))) {
ctx->match_entity.had_data = true;
- ctx->match_entity.codepoint *= 16;
+ ctx->match_entity.numeric_state.ucs4 *= 16;
if ('0' <= c && c <= '9') {
- ctx->match_entity.codepoint += (c - '0');
+ ctx->match_entity.numeric_state.ucs4 +=
+ (c-'0');
} else {
- ctx->match_entity.codepoint +=
- ((c & ~0x20) - 'A' + 10);
+ ctx->match_entity.numeric_state.ucs4 +=
+ ((c & ~0x20) - 'A' + 10);
}
ctx->match_entity.length += len;
@@ -2998,7 +2996,7 @@ hubbub_error hubbub_tokeniser_handle_numbered_entity(
break;
}
- if (ctx->match_entity.codepoint >= 0x10FFFF) {
+ if (ctx->match_entity.numeric_state.ucs4 >= 0x10FFFF) {
ctx->match_entity.overflow = true;
}
}
@@ -3014,7 +3012,8 @@ hubbub_error hubbub_tokeniser_handle_numbered_entity(
/* Had data, so calculate final codepoint */
if (ctx->match_entity.had_data) {
- uint32_t cp = ctx->match_entity.codepoint;
+ uint32_t cp =
+ ctx->match_entity.numeric_state.ucs4;
if (0x80 <= cp && cp <= 0x9F) {
cp = cp1252Table[cp - 0x80];
@@ -3031,8 +3030,22 @@ hubbub_error hubbub_tokeniser_handle_numbered_entity(
* in the loop above to avoid overflow */
cp = 0xFFFD;
}
+ ctx->match_entity.numeric_state.ucs4 = cp;
+
+ /*Convert UCS-4 to UTF-8*/
+ uint8_t *utf8_ptr=
+ (ctx->match_entity.numeric_state.numeric_buf);
+ size_t buf_len=
+ sizeof(ctx->match_entity.numeric_state.numeric_buf);
+ parserutils_charset_utf8_from_ucs4(
+ ctx->match_entity.numeric_state.ucs4,
+ &utf8_ptr,
+ &buf_len);
+ ctx->match_entity.codepoint.ptr=
+ (ctx->match_entity.numeric_state.numeric_buf);
+ ctx->match_entity.codepoint.len=
+ sizeof(ctx->match_entity.numeric_state.numeric_buf)-buf_len;
- ctx->match_entity.codepoint = cp;
}
/* Flag completion */
@@ -3056,11 +3069,10 @@ hubbub_error hubbub_tokeniser_handle_named_entity(hubbub_tokeniser *tokeniser)
ctx->match_entity.offset +
ctx->match_entity.poss_length,
&cptr, &len)) == PARSERUTILS_OK) {
- uint32_t cp;
+ hubbub_string cp;
uint8_t c = *cptr;
hubbub_error error;
-
if (c > 0x7F) {
/* Entity names are ASCII only */
break;
@@ -3119,14 +3131,17 @@ hubbub_error hubbub_tokeniser_handle_named_entity(hubbub_tokeniser *tokeniser)
error == PARSERUTILS_EOF);
if (error == PARSERUTILS_EOF) {
- ctx->match_entity.codepoint = 0;
+ ctx->match_entity.codepoint.len = 0;
+ ctx->match_entity.codepoint.ptr = NULL;
}
c = *cptr;
if ((0x0030 <= c && c <= 0x0039) ||
(0x0041 <= c && c <= 0x005A) ||
- (0x0061 <= c && c <= 0x007A)) {
- ctx->match_entity.codepoint = 0;
+ (0x0061 <= c && c <= 0x007A) ||
+ c == '=') {
+ ctx->match_entity.codepoint.len = 0;
+ ctx->match_entity.codepoint.ptr = NULL;
}
}
}
diff --git a/test/data/tokeniser2/INDEX b/test/data/tokeniser2/INDEX
index 67475c4..57c0cad 100644
--- a/test/data/tokeniser2/INDEX
+++ b/test/data/tokeniser2/INDEX
@@ -14,7 +14,7 @@ test1.test html5lib tests (part 1)
cdata.test CDATA section tests
#regression.test Regression tests
#domjs.test NA
-#namedEntities.test html5lib named entities tests
+namedEntities.test html5lib named entities tests
#pendingSpecChanges.test NA
#unicodeCharsProblematic.test NA
#xmlViolation.test NA
diff --git a/test/entities.c b/test/entities.c
index f730f17..51efc95 100644
--- a/test/entities.c
+++ b/test/entities.c
@@ -4,7 +4,7 @@
int main(int argc, char **argv)
{
- uint32_t result;
+ hubbub_string result;
int32_t context = -1;
UNUSED(argc);