|
|
'use strict'; |
|
|
|
|
|
Object.defineProperty(exports, '__esModule', { value: true }); |
|
|
|
|
|
var compilerCore = require('@vue/compiler-core'); |
|
|
var shared = require('@vue/shared'); |
|
|
|
|
|
const V_MODEL_RADIO = Symbol(`vModelRadio` ); |
|
|
const V_MODEL_CHECKBOX = Symbol(`vModelCheckbox` ); |
|
|
const V_MODEL_TEXT = Symbol(`vModelText` ); |
|
|
const V_MODEL_SELECT = Symbol(`vModelSelect` ); |
|
|
const V_MODEL_DYNAMIC = Symbol(`vModelDynamic` ); |
|
|
const V_ON_WITH_MODIFIERS = Symbol(`vOnModifiersGuard` ); |
|
|
const V_ON_WITH_KEYS = Symbol(`vOnKeysGuard` ); |
|
|
const V_SHOW = Symbol(`vShow` ); |
|
|
const TRANSITION = Symbol(`Transition` ); |
|
|
const TRANSITION_GROUP = Symbol(`TransitionGroup` ); |
|
|
compilerCore.registerRuntimeHelpers({ |
|
|
[V_MODEL_RADIO]: `vModelRadio`, |
|
|
[V_MODEL_CHECKBOX]: `vModelCheckbox`, |
|
|
[V_MODEL_TEXT]: `vModelText`, |
|
|
[V_MODEL_SELECT]: `vModelSelect`, |
|
|
[V_MODEL_DYNAMIC]: `vModelDynamic`, |
|
|
[V_ON_WITH_MODIFIERS]: `withModifiers`, |
|
|
[V_ON_WITH_KEYS]: `withKeys`, |
|
|
[V_SHOW]: `vShow`, |
|
|
[TRANSITION]: `Transition`, |
|
|
[TRANSITION_GROUP]: `TransitionGroup` |
|
|
}); |
|
|
|
|
|
var namedCharacterReferences = { |
|
|
GT: ">", |
|
|
gt: ">", |
|
|
LT: "<", |
|
|
lt: "<", |
|
|
"ac;": "∾", |
|
|
"af;": "", |
|
|
AMP: "&", |
|
|
amp: "&", |
|
|
"ap;": "≈", |
|
|
"DD;": "ⅅ", |
|
|
"dd;": "ⅆ", |
|
|
deg: "°", |
|
|
"ee;": "ⅇ", |
|
|
"eg;": "⪚", |
|
|
"el;": "⪙", |
|
|
ETH: "Ð", |
|
|
eth: "ð", |
|
|
"gE;": "≧", |
|
|
"ge;": "≥", |
|
|
"Gg;": "⋙", |
|
|
"gg;": "≫", |
|
|
"gl;": "≷", |
|
|
"GT;": ">", |
|
|
"Gt;": "≫", |
|
|
"gt;": ">", |
|
|
"ic;": "", |
|
|
"ii;": "ⅈ", |
|
|
"Im;": "ℑ", |
|
|
"in;": "∈", |
|
|
"it;": "", |
|
|
"lE;": "≦", |
|
|
"le;": "≤", |
|
|
"lg;": "≶", |
|
|
"Ll;": "⋘", |
|
|
"ll;": "≪", |
|
|
"LT;": "<", |
|
|
"Lt;": "≪", |
|
|
"lt;": "<", |
|
|
"mp;": "∓", |
|
|
"Mu;": "Μ", |
|
|
"mu;": "μ", |
|
|
"ne;": "≠", |
|
|
"ni;": "∋", |
|
|
not: "¬", |
|
|
"Nu;": "Ν", |
|
|
"nu;": "ν", |
|
|
"Or;": "⩔", |
|
|
"or;": "∨", |
|
|
"oS;": "Ⓢ", |
|
|
"Pi;": "Π", |
|
|
"pi;": "π", |
|
|
"pm;": "±", |
|
|
"Pr;": "⪻", |
|
|
"pr;": "≺", |
|
|
"Re;": "ℜ", |
|
|
REG: "®", |
|
|
reg: "®", |
|
|
"rx;": "℞", |
|
|
"Sc;": "⪼", |
|
|
"sc;": "≻", |
|
|
shy: "", |
|
|
uml: "¨", |
|
|
"wp;": "℘", |
|
|
"wr;": "≀", |
|
|
"Xi;": "Ξ", |
|
|
"xi;": "ξ", |
|
|
yen: "¥", |
|
|
"acd;": "∿", |
|
|
"acE;": "∾̳", |
|
|
"Acy;": "А", |
|
|
"acy;": "а", |
|
|
"Afr;": "𝔄", |
|
|
"afr;": "𝔞", |
|
|
"AMP;": "&", |
|
|
"amp;": "&", |
|
|
"And;": "⩓", |
|
|
"and;": "∧", |
|
|
"ang;": "∠", |
|
|
"apE;": "⩰", |
|
|
"ape;": "≊", |
|
|
"ast;": "*", |
|
|
Auml: "Ä", |
|
|
auml: "ä", |
|
|
"Bcy;": "Б", |
|
|
"bcy;": "б", |
|
|
"Bfr;": "𝔅", |
|
|
"bfr;": "𝔟", |
|
|
"bne;": "=⃥", |
|
|
"bot;": "⊥", |
|
|
"Cap;": "⋒", |
|
|
"cap;": "∩", |
|
|
cent: "¢", |
|
|
"Cfr;": "ℭ", |
|
|
"cfr;": "𝔠", |
|
|
"Chi;": "Χ", |
|
|
"chi;": "χ", |
|
|
"cir;": "○", |
|
|
COPY: "©", |
|
|
copy: "©", |
|
|
"Cup;": "⋓", |
|
|
"cup;": "∪", |
|
|
"Dcy;": "Д", |
|
|
"dcy;": "д", |
|
|
"deg;": "°", |
|
|
"Del;": "∇", |
|
|
"Dfr;": "𝔇", |
|
|
"dfr;": "𝔡", |
|
|
"die;": "¨", |
|
|
"div;": "÷", |
|
|
"Dot;": "¨", |
|
|
"dot;": "˙", |
|
|
"Ecy;": "Э", |
|
|
"ecy;": "э", |
|
|
"Efr;": "𝔈", |
|
|
"efr;": "𝔢", |
|
|
"egs;": "⪖", |
|
|
"ell;": "ℓ", |
|
|
"els;": "⪕", |
|
|
"ENG;": "Ŋ", |
|
|
"eng;": "ŋ", |
|
|
"Eta;": "Η", |
|
|
"eta;": "η", |
|
|
"ETH;": "Ð", |
|
|
"eth;": "ð", |
|
|
Euml: "Ë", |
|
|
euml: "ë", |
|
|
"Fcy;": "Ф", |
|
|
"fcy;": "ф", |
|
|
"Ffr;": "𝔉", |
|
|
"ffr;": "𝔣", |
|
|
"gap;": "⪆", |
|
|
"Gcy;": "Г", |
|
|
"gcy;": "г", |
|
|
"gEl;": "⪌", |
|
|
"gel;": "⋛", |
|
|
"geq;": "≥", |
|
|
"ges;": "⩾", |
|
|
"Gfr;": "𝔊", |
|
|
"gfr;": "𝔤", |
|
|
"ggg;": "⋙", |
|
|
"gla;": "⪥", |
|
|
"glE;": "⪒", |
|
|
"glj;": "⪤", |
|
|
"gnE;": "≩", |
|
|
"gne;": "⪈", |
|
|
"Hat;": "^", |
|
|
"Hfr;": "ℌ", |
|
|
"hfr;": "𝔥", |
|
|
"Icy;": "И", |
|
|
"icy;": "и", |
|
|
"iff;": "⇔", |
|
|
"Ifr;": "ℑ", |
|
|
"ifr;": "𝔦", |
|
|
"Int;": "∬", |
|
|
"int;": "∫", |
|
|
Iuml: "Ï", |
|
|
iuml: "ï", |
|
|
"Jcy;": "Й", |
|
|
"jcy;": "й", |
|
|
"Jfr;": "𝔍", |
|
|
"jfr;": "𝔧", |
|
|
"Kcy;": "К", |
|
|
"kcy;": "к", |
|
|
"Kfr;": "𝔎", |
|
|
"kfr;": "𝔨", |
|
|
"lap;": "⪅", |
|
|
"lat;": "⪫", |
|
|
"Lcy;": "Л", |
|
|
"lcy;": "л", |
|
|
"lEg;": "⪋", |
|
|
"leg;": "⋚", |
|
|
"leq;": "≤", |
|
|
"les;": "⩽", |
|
|
"Lfr;": "𝔏", |
|
|
"lfr;": "𝔩", |
|
|
"lgE;": "⪑", |
|
|
"lnE;": "≨", |
|
|
"lne;": "⪇", |
|
|
"loz;": "◊", |
|
|
"lrm;": "", |
|
|
"Lsh;": "↰", |
|
|
"lsh;": "↰", |
|
|
macr: "¯", |
|
|
"Map;": "⤅", |
|
|
"map;": "↦", |
|
|
"Mcy;": "М", |
|
|
"mcy;": "м", |
|
|
"Mfr;": "𝔐", |
|
|
"mfr;": "𝔪", |
|
|
"mho;": "℧", |
|
|
"mid;": "∣", |
|
|
"nap;": "≉", |
|
|
nbsp: " ", |
|
|
"Ncy;": "Н", |
|
|
"ncy;": "н", |
|
|
"Nfr;": "𝔑", |
|
|
"nfr;": "𝔫", |
|
|
"ngE;": "≧̸", |
|
|
"nge;": "≱", |
|
|
"nGg;": "⋙̸", |
|
|
"nGt;": "≫⃒", |
|
|
"ngt;": "≯", |
|
|
"nis;": "⋼", |
|
|
"niv;": "∋", |
|
|
"nlE;": "≦̸", |
|
|
"nle;": "≰", |
|
|
"nLl;": "⋘̸", |
|
|
"nLt;": "≪⃒", |
|
|
"nlt;": "≮", |
|
|
"Not;": "⫬", |
|
|
"not;": "¬", |
|
|
"npr;": "⊀", |
|
|
"nsc;": "⊁", |
|
|
"num;": "#", |
|
|
"Ocy;": "О", |
|
|
"ocy;": "о", |
|
|
"Ofr;": "𝔒", |
|
|
"ofr;": "𝔬", |
|
|
"ogt;": "⧁", |
|
|
"ohm;": "Ω", |
|
|
"olt;": "⧀", |
|
|
"ord;": "⩝", |
|
|
ordf: "ª", |
|
|
ordm: "º", |
|
|
"orv;": "⩛", |
|
|
Ouml: "Ö", |
|
|
ouml: "ö", |
|
|
"par;": "∥", |
|
|
para: "¶", |
|
|
"Pcy;": "П", |
|
|
"pcy;": "п", |
|
|
"Pfr;": "𝔓", |
|
|
"pfr;": "𝔭", |
|
|
"Phi;": "Φ", |
|
|
"phi;": "φ", |
|
|
"piv;": "ϖ", |
|
|
"prE;": "⪳", |
|
|
"pre;": "⪯", |
|
|
"Psi;": "Ψ", |
|
|
"psi;": "ψ", |
|
|
"Qfr;": "𝔔", |
|
|
"qfr;": "𝔮", |
|
|
QUOT: "\"", |
|
|
quot: "\"", |
|
|
"Rcy;": "Р", |
|
|
"rcy;": "р", |
|
|
"REG;": "®", |
|
|
"reg;": "®", |
|
|
"Rfr;": "ℜ", |
|
|
"rfr;": "𝔯", |
|
|
"Rho;": "Ρ", |
|
|
"rho;": "ρ", |
|
|
"rlm;": "", |
|
|
"Rsh;": "↱", |
|
|
"rsh;": "↱", |
|
|
"scE;": "⪴", |
|
|
"sce;": "⪰", |
|
|
"Scy;": "С", |
|
|
"scy;": "с", |
|
|
sect: "§", |
|
|
"Sfr;": "𝔖", |
|
|
"sfr;": "𝔰", |
|
|
"shy;": "", |
|
|
"sim;": "∼", |
|
|
"smt;": "⪪", |
|
|
"sol;": "/", |
|
|
"squ;": "□", |
|
|
"Sub;": "⋐", |
|
|
"sub;": "⊂", |
|
|
"Sum;": "∑", |
|
|
"sum;": "∑", |
|
|
"Sup;": "⋑", |
|
|
"sup;": "⊃", |
|
|
sup1: "¹", |
|
|
sup2: "²", |
|
|
sup3: "³", |
|
|
"Tab;": "\t", |
|
|
"Tau;": "Τ", |
|
|
"tau;": "τ", |
|
|
"Tcy;": "Т", |
|
|
"tcy;": "т", |
|
|
"Tfr;": "𝔗", |
|
|
"tfr;": "𝔱", |
|
|
"top;": "⊤", |
|
|
"Ucy;": "У", |
|
|
"ucy;": "у", |
|
|
"Ufr;": "𝔘", |
|
|
"ufr;": "𝔲", |
|
|
"uml;": "¨", |
|
|
Uuml: "Ü", |
|
|
uuml: "ü", |
|
|
"Vcy;": "В", |
|
|
"vcy;": "в", |
|
|
"Vee;": "⋁", |
|
|
"vee;": "∨", |
|
|
"Vfr;": "𝔙", |
|
|
"vfr;": "𝔳", |
|
|
"Wfr;": "𝔚", |
|
|
"wfr;": "𝔴", |
|
|
"Xfr;": "𝔛", |
|
|
"xfr;": "𝔵", |
|
|
"Ycy;": "Ы", |
|
|
"ycy;": "ы", |
|
|
"yen;": "¥", |
|
|
"Yfr;": "𝔜", |
|
|
"yfr;": "𝔶", |
|
|
yuml: "ÿ", |
|
|
"Zcy;": "З", |
|
|
"zcy;": "з", |
|
|
"Zfr;": "ℨ", |
|
|
"zfr;": "𝔷", |
|
|
"zwj;": "", |
|
|
Acirc: "Â", |
|
|
acirc: "â", |
|
|
acute: "´", |
|
|
AElig: "Æ", |
|
|
aelig: "æ", |
|
|
"andd;": "⩜", |
|
|
"andv;": "⩚", |
|
|
"ange;": "⦤", |
|
|
"Aopf;": "𝔸", |
|
|
"aopf;": "𝕒", |
|
|
"apid;": "≋", |
|
|
"apos;": "'", |
|
|
Aring: "Å", |
|
|
aring: "å", |
|
|
"Ascr;": "𝒜", |
|
|
"ascr;": "𝒶", |
|
|
"Auml;": "Ä", |
|
|
"auml;": "ä", |
|
|
"Barv;": "⫧", |
|
|
"bbrk;": "⎵", |
|
|
"Beta;": "Β", |
|
|
"beta;": "β", |
|
|
"beth;": "ℶ", |
|
|
"bNot;": "⫭", |
|
|
"bnot;": "⌐", |
|
|
"Bopf;": "𝔹", |
|
|
"bopf;": "𝕓", |
|
|
"boxH;": "═", |
|
|
"boxh;": "─", |
|
|
"boxV;": "║", |
|
|
"boxv;": "│", |
|
|
"Bscr;": "ℬ", |
|
|
"bscr;": "𝒷", |
|
|
"bsim;": "∽", |
|
|
"bsol;": "\\", |
|
|
"bull;": "•", |
|
|
"bump;": "≎", |
|
|
"caps;": "∩︀", |
|
|
"Cdot;": "Ċ", |
|
|
"cdot;": "ċ", |
|
|
cedil: "¸", |
|
|
"cent;": "¢", |
|
|
"CHcy;": "Ч", |
|
|
"chcy;": "ч", |
|
|
"circ;": "ˆ", |
|
|
"cirE;": "⧃", |
|
|
"cire;": "≗", |
|
|
"comp;": "∁", |
|
|
"cong;": "≅", |
|
|
"Copf;": "ℂ", |
|
|
"copf;": "𝕔", |
|
|
"COPY;": "©", |
|
|
"copy;": "©", |
|
|
"Cscr;": "𝒞", |
|
|
"cscr;": "𝒸", |
|
|
"csub;": "⫏", |
|
|
"csup;": "⫐", |
|
|
"cups;": "∪︀", |
|
|
"Darr;": "↡", |
|
|
"dArr;": "⇓", |
|
|
"darr;": "↓", |
|
|
"dash;": "‐", |
|
|
"dHar;": "⥥", |
|
|
"diam;": "⋄", |
|
|
"DJcy;": "Ђ", |
|
|
"djcy;": "ђ", |
|
|
"Dopf;": "𝔻", |
|
|
"dopf;": "𝕕", |
|
|
"Dscr;": "𝒟", |
|
|
"dscr;": "𝒹", |
|
|
"DScy;": "Ѕ", |
|
|
"dscy;": "ѕ", |
|
|
"dsol;": "⧶", |
|
|
"dtri;": "▿", |
|
|
"DZcy;": "Џ", |
|
|
"dzcy;": "џ", |
|
|
"ecir;": "≖", |
|
|
Ecirc: "Ê", |
|
|
ecirc: "ê", |
|
|
"Edot;": "Ė", |
|
|
"eDot;": "≑", |
|
|
"edot;": "ė", |
|
|
"emsp;": " ", |
|
|
"ensp;": " ", |
|
|
"Eopf;": "𝔼", |
|
|
"eopf;": "𝕖", |
|
|
"epar;": "⋕", |
|
|
"epsi;": "ε", |
|
|
"Escr;": "ℰ", |
|
|
"escr;": "ℯ", |
|
|
"Esim;": "⩳", |
|
|
"esim;": "≂", |
|
|
"Euml;": "Ë", |
|
|
"euml;": "ë", |
|
|
"euro;": "€", |
|
|
"excl;": "!", |
|
|
"flat;": "♭", |
|
|
"fnof;": "ƒ", |
|
|
"Fopf;": "𝔽", |
|
|
"fopf;": "𝕗", |
|
|
"fork;": "⋔", |
|
|
"Fscr;": "ℱ", |
|
|
"fscr;": "𝒻", |
|
|
"Gdot;": "Ġ", |
|
|
"gdot;": "ġ", |
|
|
"geqq;": "≧", |
|
|
"gesl;": "⋛︀", |
|
|
"GJcy;": "Ѓ", |
|
|
"gjcy;": "ѓ", |
|
|
"gnap;": "⪊", |
|
|
"gneq;": "⪈", |
|
|
"Gopf;": "𝔾", |
|
|
"gopf;": "𝕘", |
|
|
"Gscr;": "𝒢", |
|
|
"gscr;": "ℊ", |
|
|
"gsim;": "≳", |
|
|
"gtcc;": "⪧", |
|
|
"gvnE;": "≩︀", |
|
|
"half;": "½", |
|
|
"hArr;": "⇔", |
|
|
"harr;": "↔", |
|
|
"hbar;": "ℏ", |
|
|
"Hopf;": "ℍ", |
|
|
"hopf;": "𝕙", |
|
|
"Hscr;": "ℋ", |
|
|
"hscr;": "𝒽", |
|
|
Icirc: "Î", |
|
|
icirc: "î", |
|
|
"Idot;": "İ", |
|
|
"IEcy;": "Е", |
|
|
"iecy;": "е", |
|
|
iexcl: "¡", |
|
|
"imof;": "⊷", |
|
|
"IOcy;": "Ё", |
|
|
"iocy;": "ё", |
|
|
"Iopf;": "𝕀", |
|
|
"iopf;": "𝕚", |
|
|
"Iota;": "Ι", |
|
|
"iota;": "ι", |
|
|
"Iscr;": "ℐ", |
|
|
"iscr;": "𝒾", |
|
|
"isin;": "∈", |
|
|
"Iuml;": "Ï", |
|
|
"iuml;": "ï", |
|
|
"Jopf;": "𝕁", |
|
|
"jopf;": "𝕛", |
|
|
"Jscr;": "𝒥", |
|
|
"jscr;": "𝒿", |
|
|
"KHcy;": "Х", |
|
|
"khcy;": "х", |
|
|
"KJcy;": "Ќ", |
|
|
"kjcy;": "ќ", |
|
|
"Kopf;": "𝕂", |
|
|
"kopf;": "𝕜", |
|
|
"Kscr;": "𝒦", |
|
|
"kscr;": "𝓀", |
|
|
"Lang;": "⟪", |
|
|
"lang;": "⟨", |
|
|
laquo: "«", |
|
|
"Larr;": "↞", |
|
|
"lArr;": "⇐", |
|
|
"larr;": "←", |
|
|
"late;": "⪭", |
|
|
"lcub;": "{", |
|
|
"ldca;": "⤶", |
|
|
"ldsh;": "↲", |
|
|
"leqq;": "≦", |
|
|
"lesg;": "⋚︀", |
|
|
"lHar;": "⥢", |
|
|
"LJcy;": "Љ", |
|
|
"ljcy;": "љ", |
|
|
"lnap;": "⪉", |
|
|
"lneq;": "⪇", |
|
|
"Lopf;": "𝕃", |
|
|
"lopf;": "𝕝", |
|
|
"lozf;": "⧫", |
|
|
"lpar;": "(", |
|
|
"Lscr;": "ℒ", |
|
|
"lscr;": "𝓁", |
|
|
"lsim;": "≲", |
|
|
"lsqb;": "[", |
|
|
"ltcc;": "⪦", |
|
|
"ltri;": "◃", |
|
|
"lvnE;": "≨︀", |
|
|
"macr;": "¯", |
|
|
"male;": "♂", |
|
|
"malt;": "✠", |
|
|
micro: "µ", |
|
|
"mlcp;": "⫛", |
|
|
"mldr;": "…", |
|
|
"Mopf;": "𝕄", |
|
|
"mopf;": "𝕞", |
|
|
"Mscr;": "ℳ", |
|
|
"mscr;": "𝓂", |
|
|
"nang;": "∠⃒", |
|
|
"napE;": "⩰̸", |
|
|
"nbsp;": " ", |
|
|
"ncap;": "⩃", |
|
|
"ncup;": "⩂", |
|
|
"ngeq;": "≱", |
|
|
"nges;": "⩾̸", |
|
|
"ngtr;": "≯", |
|
|
"nGtv;": "≫̸", |
|
|
"nisd;": "⋺", |
|
|
"NJcy;": "Њ", |
|
|
"njcy;": "њ", |
|
|
"nldr;": "‥", |
|
|
"nleq;": "≰", |
|
|
"nles;": "⩽̸", |
|
|
"nLtv;": "≪̸", |
|
|
"nmid;": "∤", |
|
|
"Nopf;": "ℕ", |
|
|
"nopf;": "𝕟", |
|
|
"npar;": "∦", |
|
|
"npre;": "⪯̸", |
|
|
"nsce;": "⪰̸", |
|
|
"Nscr;": "𝒩", |
|
|
"nscr;": "𝓃", |
|
|
"nsim;": "≁", |
|
|
"nsub;": "⊄", |
|
|
"nsup;": "⊅", |
|
|
"ntgl;": "≹", |
|
|
"ntlg;": "≸", |
|
|
"nvap;": "≍⃒", |
|
|
"nvge;": "≥⃒", |
|
|
"nvgt;": ">⃒", |
|
|
"nvle;": "≤⃒", |
|
|
"nvlt;": "<⃒", |
|
|
"oast;": "⊛", |
|
|
"ocir;": "⊚", |
|
|
Ocirc: "Ô", |
|
|
ocirc: "ô", |
|
|
"odiv;": "⨸", |
|
|
"odot;": "⊙", |
|
|
"ogon;": "˛", |
|
|
"oint;": "∮", |
|
|
"omid;": "⦶", |
|
|
"Oopf;": "𝕆", |
|
|
"oopf;": "𝕠", |
|
|
"opar;": "⦷", |
|
|
"ordf;": "ª", |
|
|
"ordm;": "º", |
|
|
"oror;": "⩖", |
|
|
"Oscr;": "𝒪", |
|
|
"oscr;": "ℴ", |
|
|
"osol;": "⊘", |
|
|
"Ouml;": "Ö", |
|
|
"ouml;": "ö", |
|
|
"para;": "¶", |
|
|
"part;": "∂", |
|
|
"perp;": "⊥", |
|
|
"phiv;": "ϕ", |
|
|
"plus;": "+", |
|
|
"Popf;": "ℙ", |
|
|
"popf;": "𝕡", |
|
|
pound: "£", |
|
|
"prap;": "⪷", |
|
|
"prec;": "≺", |
|
|
"prnE;": "⪵", |
|
|
"prod;": "∏", |
|
|
"prop;": "∝", |
|
|
"Pscr;": "𝒫", |
|
|
"pscr;": "𝓅", |
|
|
"qint;": "⨌", |
|
|
"Qopf;": "ℚ", |
|
|
"qopf;": "𝕢", |
|
|
"Qscr;": "𝒬", |
|
|
"qscr;": "𝓆", |
|
|
"QUOT;": "\"", |
|
|
"quot;": "\"", |
|
|
"race;": "∽̱", |
|
|
"Rang;": "⟫", |
|
|
"rang;": "⟩", |
|
|
raquo: "»", |
|
|
"Rarr;": "↠", |
|
|
"rArr;": "⇒", |
|
|
"rarr;": "→", |
|
|
"rcub;": "}", |
|
|
"rdca;": "⤷", |
|
|
"rdsh;": "↳", |
|
|
"real;": "ℜ", |
|
|
"rect;": "▭", |
|
|
"rHar;": "⥤", |
|
|
"rhov;": "ϱ", |
|
|
"ring;": "˚", |
|
|
"Ropf;": "ℝ", |
|
|
"ropf;": "𝕣", |
|
|
"rpar;": ")", |
|
|
"Rscr;": "ℛ", |
|
|
"rscr;": "𝓇", |
|
|
"rsqb;": "]", |
|
|
"rtri;": "▹", |
|
|
"scap;": "⪸", |
|
|
"scnE;": "⪶", |
|
|
"sdot;": "⋅", |
|
|
"sect;": "§", |
|
|
"semi;": ";", |
|
|
"sext;": "✶", |
|
|
"SHcy;": "Ш", |
|
|
"shcy;": "ш", |
|
|
"sime;": "≃", |
|
|
"simg;": "⪞", |
|
|
"siml;": "⪝", |
|
|
"smid;": "∣", |
|
|
"smte;": "⪬", |
|
|
"solb;": "⧄", |
|
|
"Sopf;": "𝕊", |
|
|
"sopf;": "𝕤", |
|
|
"spar;": "∥", |
|
|
"Sqrt;": "√", |
|
|
"squf;": "▪", |
|
|
"Sscr;": "𝒮", |
|
|
"sscr;": "𝓈", |
|
|
"Star;": "⋆", |
|
|
"star;": "☆", |
|
|
"subE;": "⫅", |
|
|
"sube;": "⊆", |
|
|
"succ;": "≻", |
|
|
"sung;": "♪", |
|
|
"sup1;": "¹", |
|
|
"sup2;": "²", |
|
|
"sup3;": "³", |
|
|
"supE;": "⫆", |
|
|
"supe;": "⊇", |
|
|
szlig: "ß", |
|
|
"tbrk;": "⎴", |
|
|
"tdot;": "⃛", |
|
|
THORN: "Þ", |
|
|
thorn: "þ", |
|
|
times: "×", |
|
|
"tint;": "∭", |
|
|
"toea;": "⤨", |
|
|
"Topf;": "𝕋", |
|
|
"topf;": "𝕥", |
|
|
"tosa;": "⤩", |
|
|
"trie;": "≜", |
|
|
"Tscr;": "𝒯", |
|
|
"tscr;": "𝓉", |
|
|
"TScy;": "Ц", |
|
|
"tscy;": "ц", |
|
|
"Uarr;": "↟", |
|
|
"uArr;": "⇑", |
|
|
"uarr;": "↑", |
|
|
Ucirc: "Û", |
|
|
ucirc: "û", |
|
|
"uHar;": "⥣", |
|
|
"Uopf;": "𝕌", |
|
|
"uopf;": "𝕦", |
|
|
"Upsi;": "ϒ", |
|
|
"upsi;": "υ", |
|
|
"Uscr;": "𝒰", |
|
|
"uscr;": "𝓊", |
|
|
"utri;": "▵", |
|
|
"Uuml;": "Ü", |
|
|
"uuml;": "ü", |
|
|
"vArr;": "⇕", |
|
|
"varr;": "↕", |
|
|
"Vbar;": "⫫", |
|
|
"vBar;": "⫨", |
|
|
"Vert;": "‖", |
|
|
"vert;": "|", |
|
|
"Vopf;": "𝕍", |
|
|
"vopf;": "𝕧", |
|
|
"Vscr;": "𝒱", |
|
|
"vscr;": "𝓋", |
|
|
"Wopf;": "𝕎", |
|
|
"wopf;": "𝕨", |
|
|
"Wscr;": "𝒲", |
|
|
"wscr;": "𝓌", |
|
|
"xcap;": "⋂", |
|
|
"xcup;": "⋃", |
|
|
"xmap;": "⟼", |
|
|
"xnis;": "⋻", |
|
|
"Xopf;": "𝕏", |
|
|
"xopf;": "𝕩", |
|
|
"Xscr;": "𝒳", |
|
|
"xscr;": "𝓍", |
|
|
"xvee;": "⋁", |
|
|
"YAcy;": "Я", |
|
|
"yacy;": "я", |
|
|
"YIcy;": "Ї", |
|
|
"yicy;": "ї", |
|
|
"Yopf;": "𝕐", |
|
|
"yopf;": "𝕪", |
|
|
"Yscr;": "𝒴", |
|
|
"yscr;": "𝓎", |
|
|
"YUcy;": "Ю", |
|
|
"yucy;": "ю", |
|
|
"Yuml;": "Ÿ", |
|
|
"yuml;": "ÿ", |
|
|
"Zdot;": "Ż", |
|
|
"zdot;": "ż", |
|
|
"Zeta;": "Ζ", |
|
|
"zeta;": "ζ", |
|
|
"ZHcy;": "Ж", |
|
|
"zhcy;": "ж", |
|
|
"Zopf;": "ℤ", |
|
|
"zopf;": "𝕫", |
|
|
"Zscr;": "𝒵", |
|
|
"zscr;": "𝓏", |
|
|
"zwnj;": "", |
|
|
Aacute: "Á", |
|
|
aacute: "á", |
|
|
"Acirc;": "Â", |
|
|
"acirc;": "â", |
|
|
"acute;": "´", |
|
|
"AElig;": "Æ", |
|
|
"aelig;": "æ", |
|
|
Agrave: "À", |
|
|
agrave: "à", |
|
|
"aleph;": "ℵ", |
|
|
"Alpha;": "Α", |
|
|
"alpha;": "α", |
|
|
"Amacr;": "Ā", |
|
|
"amacr;": "ā", |
|
|
"amalg;": "⨿", |
|
|
"angle;": "∠", |
|
|
"angrt;": "∟", |
|
|
"angst;": "Å", |
|
|
"Aogon;": "Ą", |
|
|
"aogon;": "ą", |
|
|
"Aring;": "Å", |
|
|
"aring;": "å", |
|
|
"asymp;": "≈", |
|
|
Atilde: "Ã", |
|
|
atilde: "ã", |
|
|
"awint;": "⨑", |
|
|
"bcong;": "≌", |
|
|
"bdquo;": "„", |
|
|
"bepsi;": "϶", |
|
|
"blank;": "␣", |
|
|
"blk12;": "▒", |
|
|
"blk14;": "░", |
|
|
"blk34;": "▓", |
|
|
"block;": "█", |
|
|
"boxDL;": "╗", |
|
|
"boxDl;": "╖", |
|
|
"boxdL;": "╕", |
|
|
"boxdl;": "┐", |
|
|
"boxDR;": "╔", |
|
|
"boxDr;": "╓", |
|
|
"boxdR;": "╒", |
|
|
"boxdr;": "┌", |
|
|
"boxHD;": "╦", |
|
|
"boxHd;": "╤", |
|
|
"boxhD;": "╥", |
|
|
"boxhd;": "┬", |
|
|
"boxHU;": "╩", |
|
|
"boxHu;": "╧", |
|
|
"boxhU;": "╨", |
|
|
"boxhu;": "┴", |
|
|
"boxUL;": "╝", |
|
|
"boxUl;": "╜", |
|
|
"boxuL;": "╛", |
|
|
"boxul;": "┘", |
|
|
"boxUR;": "╚", |
|
|
"boxUr;": "╙", |
|
|
"boxuR;": "╘", |
|
|
"boxur;": "└", |
|
|
"boxVH;": "╬", |
|
|
"boxVh;": "╫", |
|
|
"boxvH;": "╪", |
|
|
"boxvh;": "┼", |
|
|
"boxVL;": "╣", |
|
|
"boxVl;": "╢", |
|
|
"boxvL;": "╡", |
|
|
"boxvl;": "┤", |
|
|
"boxVR;": "╠", |
|
|
"boxVr;": "╟", |
|
|
"boxvR;": "╞", |
|
|
"boxvr;": "├", |
|
|
"Breve;": "˘", |
|
|
"breve;": "˘", |
|
|
brvbar: "¦", |
|
|
"bsemi;": "⁏", |
|
|
"bsime;": "⋍", |
|
|
"bsolb;": "⧅", |
|
|
"bumpE;": "⪮", |
|
|
"bumpe;": "≏", |
|
|
"caret;": "⁁", |
|
|
"caron;": "ˇ", |
|
|
"ccaps;": "⩍", |
|
|
Ccedil: "Ç", |
|
|
ccedil: "ç", |
|
|
"Ccirc;": "Ĉ", |
|
|
"ccirc;": "ĉ", |
|
|
"ccups;": "⩌", |
|
|
"cedil;": "¸", |
|
|
"check;": "✓", |
|
|
"clubs;": "♣", |
|
|
"Colon;": "∷", |
|
|
"colon;": ":", |
|
|
"comma;": ",", |
|
|
"crarr;": "↵", |
|
|
"Cross;": "⨯", |
|
|
"cross;": "✗", |
|
|
"csube;": "⫑", |
|
|
"csupe;": "⫒", |
|
|
"ctdot;": "⋯", |
|
|
"cuepr;": "⋞", |
|
|
"cuesc;": "⋟", |
|
|
"cupor;": "⩅", |
|
|
curren: "¤", |
|
|
"cuvee;": "⋎", |
|
|
"cuwed;": "⋏", |
|
|
"cwint;": "∱", |
|
|
"Dashv;": "⫤", |
|
|
"dashv;": "⊣", |
|
|
"dblac;": "˝", |
|
|
"ddarr;": "⇊", |
|
|
"Delta;": "Δ", |
|
|
"delta;": "δ", |
|
|
"dharl;": "⇃", |
|
|
"dharr;": "⇂", |
|
|
"diams;": "♦", |
|
|
"disin;": "⋲", |
|
|
divide: "÷", |
|
|
"doteq;": "≐", |
|
|
"dtdot;": "⋱", |
|
|
"dtrif;": "▾", |
|
|
"duarr;": "⇵", |
|
|
"duhar;": "⥯", |
|
|
Eacute: "É", |
|
|
eacute: "é", |
|
|
"Ecirc;": "Ê", |
|
|
"ecirc;": "ê", |
|
|
"eDDot;": "⩷", |
|
|
"efDot;": "≒", |
|
|
Egrave: "È", |
|
|
egrave: "è", |
|
|
"Emacr;": "Ē", |
|
|
"emacr;": "ē", |
|
|
"empty;": "∅", |
|
|
"Eogon;": "Ę", |
|
|
"eogon;": "ę", |
|
|
"eplus;": "⩱", |
|
|
"epsiv;": "ϵ", |
|
|
"eqsim;": "≂", |
|
|
"Equal;": "⩵", |
|
|
"equiv;": "≡", |
|
|
"erarr;": "⥱", |
|
|
"erDot;": "≓", |
|
|
"esdot;": "≐", |
|
|
"exist;": "∃", |
|
|
"fflig;": "ff", |
|
|
"filig;": "fi", |
|
|
"fjlig;": "fj", |
|
|
"fllig;": "fl", |
|
|
"fltns;": "▱", |
|
|
"forkv;": "⫙", |
|
|
frac12: "½", |
|
|
frac14: "¼", |
|
|
frac34: "¾", |
|
|
"frasl;": "⁄", |
|
|
"frown;": "⌢", |
|
|
"Gamma;": "Γ", |
|
|
"gamma;": "γ", |
|
|
"Gcirc;": "Ĝ", |
|
|
"gcirc;": "ĝ", |
|
|
"gescc;": "⪩", |
|
|
"gimel;": "ℷ", |
|
|
"gneqq;": "≩", |
|
|
"gnsim;": "⋧", |
|
|
"grave;": "`", |
|
|
"gsime;": "⪎", |
|
|
"gsiml;": "⪐", |
|
|
"gtcir;": "⩺", |
|
|
"gtdot;": "⋗", |
|
|
"Hacek;": "ˇ", |
|
|
"harrw;": "↭", |
|
|
"Hcirc;": "Ĥ", |
|
|
"hcirc;": "ĥ", |
|
|
"hoarr;": "⇿", |
|
|
Iacute: "Í", |
|
|
iacute: "í", |
|
|
"Icirc;": "Î", |
|
|
"icirc;": "î", |
|
|
"iexcl;": "¡", |
|
|
Igrave: "Ì", |
|
|
igrave: "ì", |
|
|
"iiint;": "∭", |
|
|
"iiota;": "℩", |
|
|
"IJlig;": "IJ", |
|
|
"ijlig;": "ij", |
|
|
"Imacr;": "Ī", |
|
|
"imacr;": "ī", |
|
|
"image;": "ℑ", |
|
|
"imath;": "ı", |
|
|
"imped;": "Ƶ", |
|
|
"infin;": "∞", |
|
|
"Iogon;": "Į", |
|
|
"iogon;": "į", |
|
|
"iprod;": "⨼", |
|
|
iquest: "¿", |
|
|
"isinE;": "⋹", |
|
|
"isins;": "⋴", |
|
|
"isinv;": "∈", |
|
|
"Iukcy;": "І", |
|
|
"iukcy;": "і", |
|
|
"Jcirc;": "Ĵ", |
|
|
"jcirc;": "ĵ", |
|
|
"jmath;": "ȷ", |
|
|
"Jukcy;": "Є", |
|
|
"jukcy;": "є", |
|
|
"Kappa;": "Κ", |
|
|
"kappa;": "κ", |
|
|
"lAarr;": "⇚", |
|
|
"langd;": "⦑", |
|
|
"laquo;": "«", |
|
|
"larrb;": "⇤", |
|
|
"lates;": "⪭︀", |
|
|
"lBarr;": "⤎", |
|
|
"lbarr;": "⤌", |
|
|
"lbbrk;": "❲", |
|
|
"lbrke;": "⦋", |
|
|
"lceil;": "⌈", |
|
|
"ldquo;": "“", |
|
|
"lescc;": "⪨", |
|
|
"lhard;": "↽", |
|
|
"lharu;": "↼", |
|
|
"lhblk;": "▄", |
|
|
"llarr;": "⇇", |
|
|
"lltri;": "◺", |
|
|
"lneqq;": "≨", |
|
|
"lnsim;": "⋦", |
|
|
"loang;": "⟬", |
|
|
"loarr;": "⇽", |
|
|
"lobrk;": "⟦", |
|
|
"lopar;": "⦅", |
|
|
"lrarr;": "⇆", |
|
|
"lrhar;": "⇋", |
|
|
"lrtri;": "⊿", |
|
|
"lsime;": "⪍", |
|
|
"lsimg;": "⪏", |
|
|
"lsquo;": "‘", |
|
|
"ltcir;": "⩹", |
|
|
"ltdot;": "⋖", |
|
|
"ltrie;": "⊴", |
|
|
"ltrif;": "◂", |
|
|
"mdash;": "—", |
|
|
"mDDot;": "∺", |
|
|
"micro;": "µ", |
|
|
middot: "·", |
|
|
"minus;": "−", |
|
|
"mumap;": "⊸", |
|
|
"nabla;": "∇", |
|
|
"napid;": "≋̸", |
|
|
"napos;": "ʼn", |
|
|
"natur;": "♮", |
|
|
"nbump;": "≎̸", |
|
|
"ncong;": "≇", |
|
|
"ndash;": "–", |
|
|
"neArr;": "⇗", |
|
|
"nearr;": "↗", |
|
|
"nedot;": "≐̸", |
|
|
"nesim;": "≂̸", |
|
|
"ngeqq;": "≧̸", |
|
|
"ngsim;": "≵", |
|
|
"nhArr;": "⇎", |
|
|
"nharr;": "↮", |
|
|
"nhpar;": "⫲", |
|
|
"nlArr;": "⇍", |
|
|
"nlarr;": "↚", |
|
|
"nleqq;": "≦̸", |
|
|
"nless;": "≮", |
|
|
"nlsim;": "≴", |
|
|
"nltri;": "⋪", |
|
|
"notin;": "∉", |
|
|
"notni;": "∌", |
|
|
"npart;": "∂̸", |
|
|
"nprec;": "⊀", |
|
|
"nrArr;": "⇏", |
|
|
"nrarr;": "↛", |
|
|
"nrtri;": "⋫", |
|
|
"nsime;": "≄", |
|
|
"nsmid;": "∤", |
|
|
"nspar;": "∦", |
|
|
"nsubE;": "⫅̸", |
|
|
"nsube;": "⊈", |
|
|
"nsucc;": "⊁", |
|
|
"nsupE;": "⫆̸", |
|
|
"nsupe;": "⊉", |
|
|
Ntilde: "Ñ", |
|
|
ntilde: "ñ", |
|
|
"numsp;": " ", |
|
|
"nvsim;": "∼⃒", |
|
|
"nwArr;": "⇖", |
|
|
"nwarr;": "↖", |
|
|
Oacute: "Ó", |
|
|
oacute: "ó", |
|
|
"Ocirc;": "Ô", |
|
|
"ocirc;": "ô", |
|
|
"odash;": "⊝", |
|
|
"OElig;": "Œ", |
|
|
"oelig;": "œ", |
|
|
"ofcir;": "⦿", |
|
|
Ograve: "Ò", |
|
|
ograve: "ò", |
|
|
"ohbar;": "⦵", |
|
|
"olarr;": "↺", |
|
|
"olcir;": "⦾", |
|
|
"oline;": "‾", |
|
|
"Omacr;": "Ō", |
|
|
"omacr;": "ō", |
|
|
"Omega;": "Ω", |
|
|
"omega;": "ω", |
|
|
"operp;": "⦹", |
|
|
"oplus;": "⊕", |
|
|
"orarr;": "↻", |
|
|
"order;": "ℴ", |
|
|
Oslash: "Ø", |
|
|
oslash: "ø", |
|
|
Otilde: "Õ", |
|
|
otilde: "õ", |
|
|
"ovbar;": "⌽", |
|
|
"parsl;": "⫽", |
|
|
"phone;": "☎", |
|
|
"plusb;": "⊞", |
|
|
"pluse;": "⩲", |
|
|
plusmn: "±", |
|
|
"pound;": "£", |
|
|
"prcue;": "≼", |
|
|
"Prime;": "″", |
|
|
"prime;": "′", |
|
|
"prnap;": "⪹", |
|
|
"prsim;": "≾", |
|
|
"quest;": "?", |
|
|
"rAarr;": "⇛", |
|
|
"radic;": "√", |
|
|
"rangd;": "⦒", |
|
|
"range;": "⦥", |
|
|
"raquo;": "»", |
|
|
"rarrb;": "⇥", |
|
|
"rarrc;": "⤳", |
|
|
"rarrw;": "↝", |
|
|
"ratio;": "∶", |
|
|
"RBarr;": "⤐", |
|
|
"rBarr;": "⤏", |
|
|
"rbarr;": "⤍", |
|
|
"rbbrk;": "❳", |
|
|
"rbrke;": "⦌", |
|
|
"rceil;": "⌉", |
|
|
"rdquo;": "”", |
|
|
"reals;": "ℝ", |
|
|
"rhard;": "⇁", |
|
|
"rharu;": "⇀", |
|
|
"rlarr;": "⇄", |
|
|
"rlhar;": "⇌", |
|
|
"rnmid;": "⫮", |
|
|
"roang;": "⟭", |
|
|
"roarr;": "⇾", |
|
|
"robrk;": "⟧", |
|
|
"ropar;": "⦆", |
|
|
"rrarr;": "⇉", |
|
|
"rsquo;": "’", |
|
|
"rtrie;": "⊵", |
|
|
"rtrif;": "▸", |
|
|
"sbquo;": "‚", |
|
|
"sccue;": "≽", |
|
|
"Scirc;": "Ŝ", |
|
|
"scirc;": "ŝ", |
|
|
"scnap;": "⪺", |
|
|
"scsim;": "≿", |
|
|
"sdotb;": "⊡", |
|
|
"sdote;": "⩦", |
|
|
"seArr;": "⇘", |
|
|
"searr;": "↘", |
|
|
"setmn;": "∖", |
|
|
"sharp;": "♯", |
|
|
"Sigma;": "Σ", |
|
|
"sigma;": "σ", |
|
|
"simeq;": "≃", |
|
|
"simgE;": "⪠", |
|
|
"simlE;": "⪟", |
|
|
"simne;": "≆", |
|
|
"slarr;": "←", |
|
|
"smile;": "⌣", |
|
|
"smtes;": "⪬︀", |
|
|
"sqcap;": "⊓", |
|
|
"sqcup;": "⊔", |
|
|
"sqsub;": "⊏", |
|
|
"sqsup;": "⊐", |
|
|
"srarr;": "→", |
|
|
"starf;": "★", |
|
|
"strns;": "¯", |
|
|
"subnE;": "⫋", |
|
|
"subne;": "⊊", |
|
|
"supnE;": "⫌", |
|
|
"supne;": "⊋", |
|
|
"swArr;": "⇙", |
|
|
"swarr;": "↙", |
|
|
"szlig;": "ß", |
|
|
"Theta;": "Θ", |
|
|
"theta;": "θ", |
|
|
"thkap;": "≈", |
|
|
"THORN;": "Þ", |
|
|
"thorn;": "þ", |
|
|
"Tilde;": "∼", |
|
|
"tilde;": "˜", |
|
|
"times;": "×", |
|
|
"TRADE;": "™", |
|
|
"trade;": "™", |
|
|
"trisb;": "⧍", |
|
|
"TSHcy;": "Ћ", |
|
|
"tshcy;": "ћ", |
|
|
"twixt;": "≬", |
|
|
Uacute: "Ú", |
|
|
uacute: "ú", |
|
|
"Ubrcy;": "Ў", |
|
|
"ubrcy;": "ў", |
|
|
"Ucirc;": "Û", |
|
|
"ucirc;": "û", |
|
|
"udarr;": "⇅", |
|
|
"udhar;": "⥮", |
|
|
Ugrave: "Ù", |
|
|
ugrave: "ù", |
|
|
"uharl;": "↿", |
|
|
"uharr;": "↾", |
|
|
"uhblk;": "▀", |
|
|
"ultri;": "◸", |
|
|
"Umacr;": "Ū", |
|
|
"umacr;": "ū", |
|
|
"Union;": "⋃", |
|
|
"Uogon;": "Ų", |
|
|
"uogon;": "ų", |
|
|
"uplus;": "⊎", |
|
|
"upsih;": "ϒ", |
|
|
"UpTee;": "⊥", |
|
|
"Uring;": "Ů", |
|
|
"uring;": "ů", |
|
|
"urtri;": "◹", |
|
|
"utdot;": "⋰", |
|
|
"utrif;": "▴", |
|
|
"uuarr;": "⇈", |
|
|
"varpi;": "ϖ", |
|
|
"vBarv;": "⫩", |
|
|
"VDash;": "⊫", |
|
|
"Vdash;": "⊩", |
|
|
"vDash;": "⊨", |
|
|
"vdash;": "⊢", |
|
|
"veeeq;": "≚", |
|
|
"vltri;": "⊲", |
|
|
"vnsub;": "⊂⃒", |
|
|
"vnsup;": "⊃⃒", |
|
|
"vprop;": "∝", |
|
|
"vrtri;": "⊳", |
|
|
"Wcirc;": "Ŵ", |
|
|
"wcirc;": "ŵ", |
|
|
"Wedge;": "⋀", |
|
|
"wedge;": "∧", |
|
|
"xcirc;": "◯", |
|
|
"xdtri;": "▽", |
|
|
"xhArr;": "⟺", |
|
|
"xharr;": "⟷", |
|
|
"xlArr;": "⟸", |
|
|
"xlarr;": "⟵", |
|
|
"xodot;": "⨀", |
|
|
"xrArr;": "⟹", |
|
|
"xrarr;": "⟶", |
|
|
"xutri;": "△", |
|
|
Yacute: "Ý", |
|
|
yacute: "ý", |
|
|
"Ycirc;": "Ŷ", |
|
|
"ycirc;": "ŷ", |
|
|
"Aacute;": "Á", |
|
|
"aacute;": "á", |
|
|
"Abreve;": "Ă", |
|
|
"abreve;": "ă", |
|
|
"Agrave;": "À", |
|
|
"agrave;": "à", |
|
|
"andand;": "⩕", |
|
|
"angmsd;": "∡", |
|
|
"angsph;": "∢", |
|
|
"apacir;": "⩯", |
|
|
"approx;": "≈", |
|
|
"Assign;": "≔", |
|
|
"Atilde;": "Ã", |
|
|
"atilde;": "ã", |
|
|
"barvee;": "⊽", |
|
|
"Barwed;": "⌆", |
|
|
"barwed;": "⌅", |
|
|
"becaus;": "∵", |
|
|
"bernou;": "ℬ", |
|
|
"bigcap;": "⋂", |
|
|
"bigcup;": "⋃", |
|
|
"bigvee;": "⋁", |
|
|
"bkarow;": "⤍", |
|
|
"bottom;": "⊥", |
|
|
"bowtie;": "⋈", |
|
|
"boxbox;": "⧉", |
|
|
"bprime;": "‵", |
|
|
"brvbar;": "¦", |
|
|
"bullet;": "•", |
|
|
"Bumpeq;": "≎", |
|
|
"bumpeq;": "≏", |
|
|
"Cacute;": "Ć", |
|
|
"cacute;": "ć", |
|
|
"capand;": "⩄", |
|
|
"capcap;": "⩋", |
|
|
"capcup;": "⩇", |
|
|
"capdot;": "⩀", |
|
|
"Ccaron;": "Č", |
|
|
"ccaron;": "č", |
|
|
"Ccedil;": "Ç", |
|
|
"ccedil;": "ç", |
|
|
"circeq;": "≗", |
|
|
"cirmid;": "⫯", |
|
|
"Colone;": "⩴", |
|
|
"colone;": "≔", |
|
|
"commat;": "@", |
|
|
"compfn;": "∘", |
|
|
"Conint;": "∯", |
|
|
"conint;": "∮", |
|
|
"coprod;": "∐", |
|
|
"copysr;": "℗", |
|
|
"cularr;": "↶", |
|
|
"CupCap;": "≍", |
|
|
"cupcap;": "⩆", |
|
|
"cupcup;": "⩊", |
|
|
"cupdot;": "⊍", |
|
|
"curarr;": "↷", |
|
|
"curren;": "¤", |
|
|
"cylcty;": "⌭", |
|
|
"Dagger;": "‡", |
|
|
"dagger;": "†", |
|
|
"daleth;": "ℸ", |
|
|
"Dcaron;": "Ď", |
|
|
"dcaron;": "ď", |
|
|
"dfisht;": "⥿", |
|
|
"divide;": "÷", |
|
|
"divonx;": "⋇", |
|
|
"dlcorn;": "⌞", |
|
|
"dlcrop;": "⌍", |
|
|
"dollar;": "$", |
|
|
"DotDot;": "⃜", |
|
|
"drcorn;": "⌟", |
|
|
"drcrop;": "⌌", |
|
|
"Dstrok;": "Đ", |
|
|
"dstrok;": "đ", |
|
|
"Eacute;": "É", |
|
|
"eacute;": "é", |
|
|
"easter;": "⩮", |
|
|
"Ecaron;": "Ě", |
|
|
"ecaron;": "ě", |
|
|
"ecolon;": "≕", |
|
|
"Egrave;": "È", |
|
|
"egrave;": "è", |
|
|
"egsdot;": "⪘", |
|
|
"elsdot;": "⪗", |
|
|
"emptyv;": "∅", |
|
|
"emsp13;": " ", |
|
|
"emsp14;": " ", |
|
|
"eparsl;": "⧣", |
|
|
"eqcirc;": "≖", |
|
|
"equals;": "=", |
|
|
"equest;": "≟", |
|
|
"Exists;": "∃", |
|
|
"female;": "♀", |
|
|
"ffilig;": "ffi", |
|
|
"ffllig;": "ffl", |
|
|
"ForAll;": "∀", |
|
|
"forall;": "∀", |
|
|
"frac12;": "½", |
|
|
"frac13;": "⅓", |
|
|
"frac14;": "¼", |
|
|
"frac15;": "⅕", |
|
|
"frac16;": "⅙", |
|
|
"frac18;": "⅛", |
|
|
"frac23;": "⅔", |
|
|
"frac25;": "⅖", |
|
|
"frac34;": "¾", |
|
|
"frac35;": "⅗", |
|
|
"frac38;": "⅜", |
|
|
"frac45;": "⅘", |
|
|
"frac56;": "⅚", |
|
|
"frac58;": "⅝", |
|
|
"frac78;": "⅞", |
|
|
"gacute;": "ǵ", |
|
|
"Gammad;": "Ϝ", |
|
|
"gammad;": "ϝ", |
|
|
"Gbreve;": "Ğ", |
|
|
"gbreve;": "ğ", |
|
|
"Gcedil;": "Ģ", |
|
|
"gesdot;": "⪀", |
|
|
"gesles;": "⪔", |
|
|
"gtlPar;": "⦕", |
|
|
"gtrarr;": "⥸", |
|
|
"gtrdot;": "⋗", |
|
|
"gtrsim;": "≳", |
|
|
"hairsp;": " ", |
|
|
"hamilt;": "ℋ", |
|
|
"HARDcy;": "Ъ", |
|
|
"hardcy;": "ъ", |
|
|
"hearts;": "♥", |
|
|
"hellip;": "…", |
|
|
"hercon;": "⊹", |
|
|
"homtht;": "∻", |
|
|
"horbar;": "―", |
|
|
"hslash;": "ℏ", |
|
|
"Hstrok;": "Ħ", |
|
|
"hstrok;": "ħ", |
|
|
"hybull;": "⁃", |
|
|
"hyphen;": "‐", |
|
|
"Iacute;": "Í", |
|
|
"iacute;": "í", |
|
|
"Igrave;": "Ì", |
|
|
"igrave;": "ì", |
|
|
"iiiint;": "⨌", |
|
|
"iinfin;": "⧜", |
|
|
"incare;": "℅", |
|
|
"inodot;": "ı", |
|
|
"intcal;": "⊺", |
|
|
"iquest;": "¿", |
|
|
"isinsv;": "⋳", |
|
|
"Itilde;": "Ĩ", |
|
|
"itilde;": "ĩ", |
|
|
"Jsercy;": "Ј", |
|
|
"jsercy;": "ј", |
|
|
"kappav;": "ϰ", |
|
|
"Kcedil;": "Ķ", |
|
|
"kcedil;": "ķ", |
|
|
"kgreen;": "ĸ", |
|
|
"Lacute;": "Ĺ", |
|
|
"lacute;": "ĺ", |
|
|
"lagran;": "ℒ", |
|
|
"Lambda;": "Λ", |
|
|
"lambda;": "λ", |
|
|
"langle;": "⟨", |
|
|
"larrfs;": "⤝", |
|
|
"larrhk;": "↩", |
|
|
"larrlp;": "↫", |
|
|
"larrpl;": "⤹", |
|
|
"larrtl;": "↢", |
|
|
"lAtail;": "⤛", |
|
|
"latail;": "⤙", |
|
|
"lbrace;": "{", |
|
|
"lbrack;": "[", |
|
|
"Lcaron;": "Ľ", |
|
|
"lcaron;": "ľ", |
|
|
"Lcedil;": "Ļ", |
|
|
"lcedil;": "ļ", |
|
|
"ldquor;": "„", |
|
|
"lesdot;": "⩿", |
|
|
"lesges;": "⪓", |
|
|
"lfisht;": "⥼", |
|
|
"lfloor;": "⌊", |
|
|
"lharul;": "⥪", |
|
|
"llhard;": "⥫", |
|
|
"Lmidot;": "Ŀ", |
|
|
"lmidot;": "ŀ", |
|
|
"lmoust;": "⎰", |
|
|
"loplus;": "⨭", |
|
|
"lowast;": "∗", |
|
|
"lowbar;": "_", |
|
|
"lparlt;": "⦓", |
|
|
"lrhard;": "⥭", |
|
|
"lsaquo;": "‹", |
|
|
"lsquor;": "‚", |
|
|
"Lstrok;": "Ł", |
|
|
"lstrok;": "ł", |
|
|
"lthree;": "⋋", |
|
|
"ltimes;": "⋉", |
|
|
"ltlarr;": "⥶", |
|
|
"ltrPar;": "⦖", |
|
|
"mapsto;": "↦", |
|
|
"marker;": "▮", |
|
|
"mcomma;": "⨩", |
|
|
"midast;": "*", |
|
|
"midcir;": "⫰", |
|
|
"middot;": "·", |
|
|
"minusb;": "⊟", |
|
|
"minusd;": "∸", |
|
|
"mnplus;": "∓", |
|
|
"models;": "⊧", |
|
|
"mstpos;": "∾", |
|
|
"Nacute;": "Ń", |
|
|
"nacute;": "ń", |
|
|
"nbumpe;": "≏̸", |
|
|
"Ncaron;": "Ň", |
|
|
"ncaron;": "ň", |
|
|
"Ncedil;": "Ņ", |
|
|
"ncedil;": "ņ", |
|
|
"nearhk;": "⤤", |
|
|
"nequiv;": "≢", |
|
|
"nesear;": "⤨", |
|
|
"nexist;": "∄", |
|
|
"nltrie;": "⋬", |
|
|
"notinE;": "⋹̸", |
|
|
"nparsl;": "⫽⃥", |
|
|
"nprcue;": "⋠", |
|
|
"nrarrc;": "⤳̸", |
|
|
"nrarrw;": "↝̸", |
|
|
"nrtrie;": "⋭", |
|
|
"nsccue;": "⋡", |
|
|
"nsimeq;": "≄", |
|
|
"Ntilde;": "Ñ", |
|
|
"ntilde;": "ñ", |
|
|
"numero;": "№", |
|
|
"nVDash;": "⊯", |
|
|
"nVdash;": "⊮", |
|
|
"nvDash;": "⊭", |
|
|
"nvdash;": "⊬", |
|
|
"nvHarr;": "⤄", |
|
|
"nvlArr;": "⤂", |
|
|
"nvrArr;": "⤃", |
|
|
"nwarhk;": "⤣", |
|
|
"nwnear;": "⤧", |
|
|
"Oacute;": "Ó", |
|
|
"oacute;": "ó", |
|
|
"Odblac;": "Ő", |
|
|
"odblac;": "ő", |
|
|
"odsold;": "⦼", |
|
|
"Ograve;": "Ò", |
|
|
"ograve;": "ò", |
|
|
"ominus;": "⊖", |
|
|
"origof;": "⊶", |
|
|
"Oslash;": "Ø", |
|
|
"oslash;": "ø", |
|
|
"Otilde;": "Õ", |
|
|
"otilde;": "õ", |
|
|
"Otimes;": "⨷", |
|
|
"otimes;": "⊗", |
|
|
"parsim;": "⫳", |
|
|
"percnt;": "%", |
|
|
"period;": ".", |
|
|
"permil;": "‰", |
|
|
"phmmat;": "ℳ", |
|
|
"planck;": "ℏ", |
|
|
"plankv;": "ℏ", |
|
|
"plusdo;": "∔", |
|
|
"plusdu;": "⨥", |
|
|
"plusmn;": "±", |
|
|
"preceq;": "⪯", |
|
|
"primes;": "ℙ", |
|
|
"prnsim;": "⋨", |
|
|
"propto;": "∝", |
|
|
"prurel;": "⊰", |
|
|
"puncsp;": " ", |
|
|
"qprime;": "⁗", |
|
|
"Racute;": "Ŕ", |
|
|
"racute;": "ŕ", |
|
|
"rangle;": "⟩", |
|
|
"rarrap;": "⥵", |
|
|
"rarrfs;": "⤞", |
|
|
"rarrhk;": "↪", |
|
|
"rarrlp;": "↬", |
|
|
"rarrpl;": "⥅", |
|
|
"Rarrtl;": "⤖", |
|
|
"rarrtl;": "↣", |
|
|
"rAtail;": "⤜", |
|
|
"ratail;": "⤚", |
|
|
"rbrace;": "}", |
|
|
"rbrack;": "]", |
|
|
"Rcaron;": "Ř", |
|
|
"rcaron;": "ř", |
|
|
"Rcedil;": "Ŗ", |
|
|
"rcedil;": "ŗ", |
|
|
"rdquor;": "”", |
|
|
"rfisht;": "⥽", |
|
|
"rfloor;": "⌋", |
|
|
"rharul;": "⥬", |
|
|
"rmoust;": "⎱", |
|
|
"roplus;": "⨮", |
|
|
"rpargt;": "⦔", |
|
|
"rsaquo;": "›", |
|
|
"rsquor;": "’", |
|
|
"rthree;": "⋌", |
|
|
"rtimes;": "⋊", |
|
|
"Sacute;": "Ś", |
|
|
"sacute;": "ś", |
|
|
"Scaron;": "Š", |
|
|
"scaron;": "š", |
|
|
"Scedil;": "Ş", |
|
|
"scedil;": "ş", |
|
|
"scnsim;": "⋩", |
|
|
"searhk;": "⤥", |
|
|
"seswar;": "⤩", |
|
|
"sfrown;": "⌢", |
|
|
"SHCHcy;": "Щ", |
|
|
"shchcy;": "щ", |
|
|
"sigmaf;": "ς", |
|
|
"sigmav;": "ς", |
|
|
"simdot;": "⩪", |
|
|
"smashp;": "⨳", |
|
|
"SOFTcy;": "Ь", |
|
|
"softcy;": "ь", |
|
|
"solbar;": "⌿", |
|
|
"spades;": "♠", |
|
|
"sqcaps;": "⊓︀", |
|
|
"sqcups;": "⊔︀", |
|
|
"sqsube;": "⊑", |
|
|
"sqsupe;": "⊒", |
|
|
"Square;": "□", |
|
|
"square;": "□", |
|
|
"squarf;": "▪", |
|
|
"ssetmn;": "∖", |
|
|
"ssmile;": "⌣", |
|
|
"sstarf;": "⋆", |
|
|
"subdot;": "⪽", |
|
|
"Subset;": "⋐", |
|
|
"subset;": "⊂", |
|
|
"subsim;": "⫇", |
|
|
"subsub;": "⫕", |
|
|
"subsup;": "⫓", |
|
|
"succeq;": "⪰", |
|
|
"supdot;": "⪾", |
|
|
"Supset;": "⋑", |
|
|
"supset;": "⊃", |
|
|
"supsim;": "⫈", |
|
|
"supsub;": "⫔", |
|
|
"supsup;": "⫖", |
|
|
"swarhk;": "⤦", |
|
|
"swnwar;": "⤪", |
|
|
"target;": "⌖", |
|
|
"Tcaron;": "Ť", |
|
|
"tcaron;": "ť", |
|
|
"Tcedil;": "Ţ", |
|
|
"tcedil;": "ţ", |
|
|
"telrec;": "⌕", |
|
|
"there4;": "∴", |
|
|
"thetav;": "ϑ", |
|
|
"thinsp;": " ", |
|
|
"thksim;": "∼", |
|
|
"timesb;": "⊠", |
|
|
"timesd;": "⨰", |
|
|
"topbot;": "⌶", |
|
|
"topcir;": "⫱", |
|
|
"tprime;": "‴", |
|
|
"tridot;": "◬", |
|
|
"Tstrok;": "Ŧ", |
|
|
"tstrok;": "ŧ", |
|
|
"Uacute;": "Ú", |
|
|
"uacute;": "ú", |
|
|
"Ubreve;": "Ŭ", |
|
|
"ubreve;": "ŭ", |
|
|
"Udblac;": "Ű", |
|
|
"udblac;": "ű", |
|
|
"ufisht;": "⥾", |
|
|
"Ugrave;": "Ù", |
|
|
"ugrave;": "ù", |
|
|
"ulcorn;": "⌜", |
|
|
"ulcrop;": "⌏", |
|
|
"urcorn;": "⌝", |
|
|
"urcrop;": "⌎", |
|
|
"Utilde;": "Ũ", |
|
|
"utilde;": "ũ", |
|
|
"vangrt;": "⦜", |
|
|
"varphi;": "ϕ", |
|
|
"varrho;": "ϱ", |
|
|
"Vdashl;": "⫦", |
|
|
"veebar;": "⊻", |
|
|
"vellip;": "⋮", |
|
|
"Verbar;": "‖", |
|
|
"verbar;": "|", |
|
|
"vsubnE;": "⫋︀", |
|
|
"vsubne;": "⊊︀", |
|
|
"vsupnE;": "⫌︀", |
|
|
"vsupne;": "⊋︀", |
|
|
"Vvdash;": "⊪", |
|
|
"wedbar;": "⩟", |
|
|
"wedgeq;": "≙", |
|
|
"weierp;": "℘", |
|
|
"wreath;": "≀", |
|
|
"xoplus;": "⨁", |
|
|
"xotime;": "⨂", |
|
|
"xsqcup;": "⨆", |
|
|
"xuplus;": "⨄", |
|
|
"xwedge;": "⋀", |
|
|
"Yacute;": "Ý", |
|
|
"yacute;": "ý", |
|
|
"Zacute;": "Ź", |
|
|
"zacute;": "ź", |
|
|
"Zcaron;": "Ž", |
|
|
"zcaron;": "ž", |
|
|
"zeetrf;": "ℨ", |
|
|
"alefsym;": "ℵ", |
|
|
"angrtvb;": "⊾", |
|
|
"angzarr;": "⍼", |
|
|
"asympeq;": "≍", |
|
|
"backsim;": "∽", |
|
|
"Because;": "∵", |
|
|
"because;": "∵", |
|
|
"bemptyv;": "⦰", |
|
|
"between;": "≬", |
|
|
"bigcirc;": "◯", |
|
|
"bigodot;": "⨀", |
|
|
"bigstar;": "★", |
|
|
"bnequiv;": "≡⃥", |
|
|
"boxplus;": "⊞", |
|
|
"Cayleys;": "ℭ", |
|
|
"Cconint;": "∰", |
|
|
"ccupssm;": "⩐", |
|
|
"Cedilla;": "¸", |
|
|
"cemptyv;": "⦲", |
|
|
"cirscir;": "⧂", |
|
|
"coloneq;": "≔", |
|
|
"congdot;": "⩭", |
|
|
"cudarrl;": "⤸", |
|
|
"cudarrr;": "⤵", |
|
|
"cularrp;": "⤽", |
|
|
"curarrm;": "⤼", |
|
|
"dbkarow;": "⤏", |
|
|
"ddagger;": "‡", |
|
|
"ddotseq;": "⩷", |
|
|
"demptyv;": "⦱", |
|
|
"Diamond;": "⋄", |
|
|
"diamond;": "⋄", |
|
|
"digamma;": "ϝ", |
|
|
"dotplus;": "∔", |
|
|
"DownTee;": "⊤", |
|
|
"dwangle;": "⦦", |
|
|
"Element;": "∈", |
|
|
"Epsilon;": "Ε", |
|
|
"epsilon;": "ε", |
|
|
"eqcolon;": "≕", |
|
|
"equivDD;": "⩸", |
|
|
"gesdoto;": "⪂", |
|
|
"gtquest;": "⩼", |
|
|
"gtrless;": "≷", |
|
|
"harrcir;": "⥈", |
|
|
"Implies;": "⇒", |
|
|
"intprod;": "⨼", |
|
|
"isindot;": "⋵", |
|
|
"larrbfs;": "⤟", |
|
|
"larrsim;": "⥳", |
|
|
"lbrksld;": "⦏", |
|
|
"lbrkslu;": "⦍", |
|
|
"ldrdhar;": "⥧", |
|
|
"LeftTee;": "⊣", |
|
|
"lesdoto;": "⪁", |
|
|
"lessdot;": "⋖", |
|
|
"lessgtr;": "≶", |
|
|
"lesssim;": "≲", |
|
|
"lotimes;": "⨴", |
|
|
"lozenge;": "◊", |
|
|
"ltquest;": "⩻", |
|
|
"luruhar;": "⥦", |
|
|
"maltese;": "✠", |
|
|
"minusdu;": "⨪", |
|
|
"napprox;": "≉", |
|
|
"natural;": "♮", |
|
|
"nearrow;": "↗", |
|
|
"NewLine;": "\n", |
|
|
"nexists;": "∄", |
|
|
"NoBreak;": "", |
|
|
"notinva;": "∉", |
|
|
"notinvb;": "⋷", |
|
|
"notinvc;": "⋶", |
|
|
"NotLess;": "≮", |
|
|
"notniva;": "∌", |
|
|
"notnivb;": "⋾", |
|
|
"notnivc;": "⋽", |
|
|
"npolint;": "⨔", |
|
|
"npreceq;": "⪯̸", |
|
|
"nsqsube;": "⋢", |
|
|
"nsqsupe;": "⋣", |
|
|
"nsubset;": "⊂⃒", |
|
|
"nsucceq;": "⪰̸", |
|
|
"nsupset;": "⊃⃒", |
|
|
"nvinfin;": "⧞", |
|
|
"nvltrie;": "⊴⃒", |
|
|
"nvrtrie;": "⊵⃒", |
|
|
"nwarrow;": "↖", |
|
|
"olcross;": "⦻", |
|
|
"Omicron;": "Ο", |
|
|
"omicron;": "ο", |
|
|
"orderof;": "ℴ", |
|
|
"orslope;": "⩗", |
|
|
"OverBar;": "‾", |
|
|
"pertenk;": "‱", |
|
|
"planckh;": "ℎ", |
|
|
"pluscir;": "⨢", |
|
|
"plussim;": "⨦", |
|
|
"plustwo;": "⨧", |
|
|
"precsim;": "≾", |
|
|
"Product;": "∏", |
|
|
"quatint;": "⨖", |
|
|
"questeq;": "≟", |
|
|
"rarrbfs;": "⤠", |
|
|
"rarrsim;": "⥴", |
|
|
"rbrksld;": "⦎", |
|
|
"rbrkslu;": "⦐", |
|
|
"rdldhar;": "⥩", |
|
|
"realine;": "ℛ", |
|
|
"rotimes;": "⨵", |
|
|
"ruluhar;": "⥨", |
|
|
"searrow;": "↘", |
|
|
"simplus;": "⨤", |
|
|
"simrarr;": "⥲", |
|
|
"subedot;": "⫃", |
|
|
"submult;": "⫁", |
|
|
"subplus;": "⪿", |
|
|
"subrarr;": "⥹", |
|
|
"succsim;": "≿", |
|
|
"supdsub;": "⫘", |
|
|
"supedot;": "⫄", |
|
|
"suphsol;": "⟉", |
|
|
"suphsub;": "⫗", |
|
|
"suplarr;": "⥻", |
|
|
"supmult;": "⫂", |
|
|
"supplus;": "⫀", |
|
|
"swarrow;": "↙", |
|
|
"topfork;": "⫚", |
|
|
"triplus;": "⨹", |
|
|
"tritime;": "⨻", |
|
|
"UpArrow;": "↑", |
|
|
"Uparrow;": "⇑", |
|
|
"uparrow;": "↑", |
|
|
"Upsilon;": "Υ", |
|
|
"upsilon;": "υ", |
|
|
"uwangle;": "⦧", |
|
|
"vzigzag;": "⦚", |
|
|
"zigrarr;": "⇝", |
|
|
"andslope;": "⩘", |
|
|
"angmsdaa;": "⦨", |
|
|
"angmsdab;": "⦩", |
|
|
"angmsdac;": "⦪", |
|
|
"angmsdad;": "⦫", |
|
|
"angmsdae;": "⦬", |
|
|
"angmsdaf;": "⦭", |
|
|
"angmsdag;": "⦮", |
|
|
"angmsdah;": "⦯", |
|
|
"angrtvbd;": "⦝", |
|
|
"approxeq;": "≊", |
|
|
"awconint;": "∳", |
|
|
"backcong;": "≌", |
|
|
"barwedge;": "⌅", |
|
|
"bbrktbrk;": "⎶", |
|
|
"bigoplus;": "⨁", |
|
|
"bigsqcup;": "⨆", |
|
|
"biguplus;": "⨄", |
|
|
"bigwedge;": "⋀", |
|
|
"boxminus;": "⊟", |
|
|
"boxtimes;": "⊠", |
|
|
"bsolhsub;": "⟈", |
|
|
"capbrcup;": "⩉", |
|
|
"circledR;": "®", |
|
|
"circledS;": "Ⓢ", |
|
|
"cirfnint;": "⨐", |
|
|
"clubsuit;": "♣", |
|
|
"cupbrcap;": "⩈", |
|
|
"curlyvee;": "⋎", |
|
|
"cwconint;": "∲", |
|
|
"DDotrahd;": "⤑", |
|
|
"doteqdot;": "≑", |
|
|
"DotEqual;": "≐", |
|
|
"dotminus;": "∸", |
|
|
"drbkarow;": "⤐", |
|
|
"dzigrarr;": "⟿", |
|
|
"elinters;": "⏧", |
|
|
"emptyset;": "∅", |
|
|
"eqvparsl;": "⧥", |
|
|
"fpartint;": "⨍", |
|
|
"geqslant;": "⩾", |
|
|
"gesdotol;": "⪄", |
|
|
"gnapprox;": "⪊", |
|
|
"hksearow;": "⤥", |
|
|
"hkswarow;": "⤦", |
|
|
"imagline;": "ℐ", |
|
|
"imagpart;": "ℑ", |
|
|
"infintie;": "⧝", |
|
|
"integers;": "ℤ", |
|
|
"Integral;": "∫", |
|
|
"intercal;": "⊺", |
|
|
"intlarhk;": "⨗", |
|
|
"laemptyv;": "⦴", |
|
|
"ldrushar;": "⥋", |
|
|
"leqslant;": "⩽", |
|
|
"lesdotor;": "⪃", |
|
|
"LessLess;": "⪡", |
|
|
"llcorner;": "⌞", |
|
|
"lnapprox;": "⪉", |
|
|
"lrcorner;": "⌟", |
|
|
"lurdshar;": "⥊", |
|
|
"mapstoup;": "↥", |
|
|
"multimap;": "⊸", |
|
|
"naturals;": "ℕ", |
|
|
"ncongdot;": "⩭̸", |
|
|
"NotEqual;": "≠", |
|
|
"notindot;": "⋵̸", |
|
|
"NotTilde;": "≁", |
|
|
"otimesas;": "⨶", |
|
|
"parallel;": "∥", |
|
|
"PartialD;": "∂", |
|
|
"plusacir;": "⨣", |
|
|
"pointint;": "⨕", |
|
|
"Precedes;": "≺", |
|
|
"precneqq;": "⪵", |
|
|
"precnsim;": "⋨", |
|
|
"profalar;": "⌮", |
|
|
"profline;": "⌒", |
|
|
"profsurf;": "⌓", |
|
|
"raemptyv;": "⦳", |
|
|
"realpart;": "ℜ", |
|
|
"RightTee;": "⊢", |
|
|
"rppolint;": "⨒", |
|
|
"rtriltri;": "⧎", |
|
|
"scpolint;": "⨓", |
|
|
"setminus;": "∖", |
|
|
"shortmid;": "∣", |
|
|
"smeparsl;": "⧤", |
|
|
"sqsubset;": "⊏", |
|
|
"sqsupset;": "⊐", |
|
|
"subseteq;": "⊆", |
|
|
"Succeeds;": "≻", |
|
|
"succneqq;": "⪶", |
|
|
"succnsim;": "⋩", |
|
|
"SuchThat;": "∋", |
|
|
"Superset;": "⊃", |
|
|
"supseteq;": "⊇", |
|
|
"thetasym;": "ϑ", |
|
|
"thicksim;": "∼", |
|
|
"timesbar;": "⨱", |
|
|
"triangle;": "▵", |
|
|
"triminus;": "⨺", |
|
|
"trpezium;": "⏢", |
|
|
"Uarrocir;": "⥉", |
|
|
"ulcorner;": "⌜", |
|
|
"UnderBar;": "_", |
|
|
"urcorner;": "⌝", |
|
|
"varkappa;": "ϰ", |
|
|
"varsigma;": "ς", |
|
|
"vartheta;": "ϑ", |
|
|
"backprime;": "‵", |
|
|
"backsimeq;": "⋍", |
|
|
"Backslash;": "∖", |
|
|
"bigotimes;": "⨂", |
|
|
"CenterDot;": "·", |
|
|
"centerdot;": "·", |
|
|
"checkmark;": "✓", |
|
|
"CircleDot;": "⊙", |
|
|
"complexes;": "ℂ", |
|
|
"Congruent;": "≡", |
|
|
"Coproduct;": "∐", |
|
|
"dotsquare;": "⊡", |
|
|
"DoubleDot;": "¨", |
|
|
"DownArrow;": "↓", |
|
|
"Downarrow;": "⇓", |
|
|
"downarrow;": "↓", |
|
|
"DownBreve;": "̑", |
|
|
"gtrapprox;": "⪆", |
|
|
"gtreqless;": "⋛", |
|
|
"gvertneqq;": "≩︀", |
|
|
"heartsuit;": "♥", |
|
|
"HumpEqual;": "≏", |
|
|
"LeftArrow;": "←", |
|
|
"Leftarrow;": "⇐", |
|
|
"leftarrow;": "←", |
|
|
"LeftFloor;": "⌊", |
|
|
"lesseqgtr;": "⋚", |
|
|
"LessTilde;": "≲", |
|
|
"lvertneqq;": "≨︀", |
|
|
"Mellintrf;": "ℳ", |
|
|
"MinusPlus;": "∓", |
|
|
"ngeqslant;": "⩾̸", |
|
|
"nleqslant;": "⩽̸", |
|
|
"NotCupCap;": "≭", |
|
|
"NotExists;": "∄", |
|
|
"NotSubset;": "⊂⃒", |
|
|
"nparallel;": "∦", |
|
|
"nshortmid;": "∤", |
|
|
"nsubseteq;": "⊈", |
|
|
"nsupseteq;": "⊉", |
|
|
"OverBrace;": "⏞", |
|
|
"pitchfork;": "⋔", |
|
|
"PlusMinus;": "±", |
|
|
"rationals;": "ℚ", |
|
|
"spadesuit;": "♠", |
|
|
"subseteqq;": "⫅", |
|
|
"subsetneq;": "⊊", |
|
|
"supseteqq;": "⫆", |
|
|
"supsetneq;": "⊋", |
|
|
"Therefore;": "∴", |
|
|
"therefore;": "∴", |
|
|
"ThinSpace;": " ", |
|
|
"triangleq;": "≜", |
|
|
"TripleDot;": "⃛", |
|
|
"UnionPlus;": "⊎", |
|
|
"varpropto;": "∝", |
|
|
"Bernoullis;": "ℬ", |
|
|
"circledast;": "⊛", |
|
|
"CirclePlus;": "⊕", |
|
|
"complement;": "∁", |
|
|
"curlywedge;": "⋏", |
|
|
"eqslantgtr;": "⪖", |
|
|
"EqualTilde;": "≂", |
|
|
"Fouriertrf;": "ℱ", |
|
|
"gtreqqless;": "⪌", |
|
|
"ImaginaryI;": "ⅈ", |
|
|
"Laplacetrf;": "ℒ", |
|
|
"LeftVector;": "↼", |
|
|
"lessapprox;": "⪅", |
|
|
"lesseqqgtr;": "⪋", |
|
|
"Lleftarrow;": "⇚", |
|
|
"lmoustache;": "⎰", |
|
|
"longmapsto;": "⟼", |
|
|
"mapstodown;": "↧", |
|
|
"mapstoleft;": "↤", |
|
|
"nLeftarrow;": "⇍", |
|
|
"nleftarrow;": "↚", |
|
|
"NotElement;": "∉", |
|
|
"NotGreater;": "≯", |
|
|
"nsubseteqq;": "⫅̸", |
|
|
"nsupseteqq;": "⫆̸", |
|
|
"precapprox;": "⪷", |
|
|
"Proportion;": "∷", |
|
|
"RightArrow;": "→", |
|
|
"Rightarrow;": "⇒", |
|
|
"rightarrow;": "→", |
|
|
"RightFloor;": "⌋", |
|
|
"rmoustache;": "⎱", |
|
|
"sqsubseteq;": "⊑", |
|
|
"sqsupseteq;": "⊒", |
|
|
"subsetneqq;": "⫋", |
|
|
"succapprox;": "⪸", |
|
|
"supsetneqq;": "⫌", |
|
|
"ThickSpace;": " ", |
|
|
"TildeEqual;": "≃", |
|
|
"TildeTilde;": "≈", |
|
|
"UnderBrace;": "⏟", |
|
|
"UpArrowBar;": "⤒", |
|
|
"UpTeeArrow;": "↥", |
|
|
"upuparrows;": "⇈", |
|
|
"varepsilon;": "ϵ", |
|
|
"varnothing;": "∅", |
|
|
"backepsilon;": "϶", |
|
|
"blacksquare;": "▪", |
|
|
"circledcirc;": "⊚", |
|
|
"circleddash;": "⊝", |
|
|
"CircleMinus;": "⊖", |
|
|
"CircleTimes;": "⊗", |
|
|
"curlyeqprec;": "⋞", |
|
|
"curlyeqsucc;": "⋟", |
|
|
"diamondsuit;": "♦", |
|
|
"eqslantless;": "⪕", |
|
|
"Equilibrium;": "⇌", |
|
|
"expectation;": "ℰ", |
|
|
"GreaterLess;": "≷", |
|
|
"LeftCeiling;": "⌈", |
|
|
"LessGreater;": "≶", |
|
|
"MediumSpace;": " ", |
|
|
"NotLessLess;": "≪̸", |
|
|
"NotPrecedes;": "⊀", |
|
|
"NotSucceeds;": "⊁", |
|
|
"NotSuperset;": "⊃⃒", |
|
|
"nRightarrow;": "⇏", |
|
|
"nrightarrow;": "↛", |
|
|
"OverBracket;": "⎴", |
|
|
"preccurlyeq;": "≼", |
|
|
"precnapprox;": "⪹", |
|
|
"quaternions;": "ℍ", |
|
|
"RightVector;": "⇀", |
|
|
"Rrightarrow;": "⇛", |
|
|
"RuleDelayed;": "⧴", |
|
|
"SmallCircle;": "∘", |
|
|
"SquareUnion;": "⊔", |
|
|
"straightphi;": "ϕ", |
|
|
"SubsetEqual;": "⊆", |
|
|
"succcurlyeq;": "≽", |
|
|
"succnapprox;": "⪺", |
|
|
"thickapprox;": "≈", |
|
|
"UpDownArrow;": "↕", |
|
|
"Updownarrow;": "⇕", |
|
|
"updownarrow;": "↕", |
|
|
"VerticalBar;": "∣", |
|
|
"blacklozenge;": "⧫", |
|
|
"DownArrowBar;": "⤓", |
|
|
"DownTeeArrow;": "↧", |
|
|
"ExponentialE;": "ⅇ", |
|
|
"exponentiale;": "ⅇ", |
|
|
"GreaterEqual;": "≥", |
|
|
"GreaterTilde;": "≳", |
|
|
"HilbertSpace;": "ℋ", |
|
|
"HumpDownHump;": "≎", |
|
|
"Intersection;": "⋂", |
|
|
"LeftArrowBar;": "⇤", |
|
|
"LeftTeeArrow;": "↤", |
|
|
"LeftTriangle;": "⊲", |
|
|
"LeftUpVector;": "↿", |
|
|
"NotCongruent;": "≢", |
|
|
"NotHumpEqual;": "≏̸", |
|
|
"NotLessEqual;": "≰", |
|
|
"NotLessTilde;": "≴", |
|
|
"Proportional;": "∝", |
|
|
"RightCeiling;": "⌉", |
|
|
"risingdotseq;": "≓", |
|
|
"RoundImplies;": "⥰", |
|
|
"ShortUpArrow;": "↑", |
|
|
"SquareSubset;": "⊏", |
|
|
"triangledown;": "▿", |
|
|
"triangleleft;": "◃", |
|
|
"UnderBracket;": "⎵", |
|
|
"varsubsetneq;": "⊊︀", |
|
|
"varsupsetneq;": "⊋︀", |
|
|
"VerticalLine;": "|", |
|
|
"ApplyFunction;": "", |
|
|
"bigtriangleup;": "△", |
|
|
"blacktriangle;": "▴", |
|
|
"DifferentialD;": "ⅆ", |
|
|
"divideontimes;": "⋇", |
|
|
"DoubleLeftTee;": "⫤", |
|
|
"DoubleUpArrow;": "⇑", |
|
|
"fallingdotseq;": "≒", |
|
|
"hookleftarrow;": "↩", |
|
|
"leftarrowtail;": "↢", |
|
|
"leftharpoonup;": "↼", |
|
|
"LeftTeeVector;": "⥚", |
|
|
"LeftVectorBar;": "⥒", |
|
|
"LessFullEqual;": "≦", |
|
|
"LongLeftArrow;": "⟵", |
|
|
"Longleftarrow;": "⟸", |
|
|
"longleftarrow;": "⟵", |
|
|
"looparrowleft;": "↫", |
|
|
"measuredangle;": "∡", |
|
|
"NotEqualTilde;": "≂̸", |
|
|
"NotTildeEqual;": "≄", |
|
|
"NotTildeTilde;": "≉", |
|
|
"ntriangleleft;": "⋪", |
|
|
"Poincareplane;": "ℌ", |
|
|
"PrecedesEqual;": "⪯", |
|
|
"PrecedesTilde;": "≾", |
|
|
"RightArrowBar;": "⇥", |
|
|
"RightTeeArrow;": "↦", |
|
|
"RightTriangle;": "⊳", |
|
|
"RightUpVector;": "↾", |
|
|
"shortparallel;": "∥", |
|
|
"smallsetminus;": "∖", |
|
|
"SucceedsEqual;": "⪰", |
|
|
"SucceedsTilde;": "≿", |
|
|
"SupersetEqual;": "⊇", |
|
|
"triangleright;": "▹", |
|
|
"UpEquilibrium;": "⥮", |
|
|
"upharpoonleft;": "↿", |
|
|
"varsubsetneqq;": "⫋︀", |
|
|
"varsupsetneqq;": "⫌︀", |
|
|
"VerticalTilde;": "≀", |
|
|
"VeryThinSpace;": " ", |
|
|
"curvearrowleft;": "↶", |
|
|
"DiacriticalDot;": "˙", |
|
|
"doublebarwedge;": "⌆", |
|
|
"DoubleRightTee;": "⊨", |
|
|
"downdownarrows;": "⇊", |
|
|
"DownLeftVector;": "↽", |
|
|
"GreaterGreater;": "⪢", |
|
|
"hookrightarrow;": "↪", |
|
|
"HorizontalLine;": "─", |
|
|
"InvisibleComma;": "", |
|
|
"InvisibleTimes;": "", |
|
|
"LeftDownVector;": "⇃", |
|
|
"leftleftarrows;": "⇇", |
|
|
"LeftRightArrow;": "↔", |
|
|
"Leftrightarrow;": "⇔", |
|
|
"leftrightarrow;": "↔", |
|
|
"leftthreetimes;": "⋋", |
|
|
"LessSlantEqual;": "⩽", |
|
|
"LongRightArrow;": "⟶", |
|
|
"Longrightarrow;": "⟹", |
|
|
"longrightarrow;": "⟶", |
|
|
"looparrowright;": "↬", |
|
|
"LowerLeftArrow;": "↙", |
|
|
"NestedLessLess;": "≪", |
|
|
"NotGreaterLess;": "≹", |
|
|
"NotLessGreater;": "≸", |
|
|
"NotSubsetEqual;": "⊈", |
|
|
"NotVerticalBar;": "∤", |
|
|
"nshortparallel;": "∦", |
|
|
"ntriangleright;": "⋫", |
|
|
"OpenCurlyQuote;": "‘", |
|
|
"ReverseElement;": "∋", |
|
|
"rightarrowtail;": "↣", |
|
|
"rightharpoonup;": "⇀", |
|
|
"RightTeeVector;": "⥛", |
|
|
"RightVectorBar;": "⥓", |
|
|
"ShortDownArrow;": "↓", |
|
|
"ShortLeftArrow;": "←", |
|
|
"SquareSuperset;": "⊐", |
|
|
"TildeFullEqual;": "≅", |
|
|
"trianglelefteq;": "⊴", |
|
|
"upharpoonright;": "↾", |
|
|
"UpperLeftArrow;": "↖", |
|
|
"ZeroWidthSpace;": "", |
|
|
"bigtriangledown;": "▽", |
|
|
"circlearrowleft;": "↺", |
|
|
"CloseCurlyQuote;": "’", |
|
|
"ContourIntegral;": "∮", |
|
|
"curvearrowright;": "↷", |
|
|
"DoubleDownArrow;": "⇓", |
|
|
"DoubleLeftArrow;": "⇐", |
|
|
"downharpoonleft;": "⇃", |
|
|
"DownRightVector;": "⇁", |
|
|
"leftharpoondown;": "↽", |
|
|
"leftrightarrows;": "⇆", |
|
|
"LeftRightVector;": "⥎", |
|
|
"LeftTriangleBar;": "⧏", |
|
|
"LeftUpTeeVector;": "⥠", |
|
|
"LeftUpVectorBar;": "⥘", |
|
|
"LowerRightArrow;": "↘", |
|
|
"nLeftrightarrow;": "⇎", |
|
|
"nleftrightarrow;": "↮", |
|
|
"NotGreaterEqual;": "≱", |
|
|
"NotGreaterTilde;": "≵", |
|
|
"NotHumpDownHump;": "≎̸", |
|
|
"NotLeftTriangle;": "⋪", |
|
|
"NotSquareSubset;": "⊏̸", |
|
|
"ntrianglelefteq;": "⋬", |
|
|
"OverParenthesis;": "⏜", |
|
|
"RightDownVector;": "⇂", |
|
|
"rightleftarrows;": "⇄", |
|
|
"rightsquigarrow;": "↝", |
|
|
"rightthreetimes;": "⋌", |
|
|
"ShortRightArrow;": "→", |
|
|
"straightepsilon;": "ϵ", |
|
|
"trianglerighteq;": "⊵", |
|
|
"UpperRightArrow;": "↗", |
|
|
"vartriangleleft;": "⊲", |
|
|
"circlearrowright;": "↻", |
|
|
"DiacriticalAcute;": "´", |
|
|
"DiacriticalGrave;": "`", |
|
|
"DiacriticalTilde;": "˜", |
|
|
"DoubleRightArrow;": "⇒", |
|
|
"DownArrowUpArrow;": "⇵", |
|
|
"downharpoonright;": "⇂", |
|
|
"EmptySmallSquare;": "◻", |
|
|
"GreaterEqualLess;": "⋛", |
|
|
"GreaterFullEqual;": "≧", |
|
|
"LeftAngleBracket;": "⟨", |
|
|
"LeftUpDownVector;": "⥑", |
|
|
"LessEqualGreater;": "⋚", |
|
|
"NonBreakingSpace;": " ", |
|
|
"NotPrecedesEqual;": "⪯̸", |
|
|
"NotRightTriangle;": "⋫", |
|
|
"NotSucceedsEqual;": "⪰̸", |
|
|
"NotSucceedsTilde;": "≿̸", |
|
|
"NotSupersetEqual;": "⊉", |
|
|
"ntrianglerighteq;": "⋭", |
|
|
"rightharpoondown;": "⇁", |
|
|
"rightrightarrows;": "⇉", |
|
|
"RightTriangleBar;": "⧐", |
|
|
"RightUpTeeVector;": "⥜", |
|
|
"RightUpVectorBar;": "⥔", |
|
|
"twoheadleftarrow;": "↞", |
|
|
"UnderParenthesis;": "⏝", |
|
|
"UpArrowDownArrow;": "⇅", |
|
|
"vartriangleright;": "⊳", |
|
|
"blacktriangledown;": "▾", |
|
|
"blacktriangleleft;": "◂", |
|
|
"DoubleUpDownArrow;": "⇕", |
|
|
"DoubleVerticalBar;": "∥", |
|
|
"DownLeftTeeVector;": "⥞", |
|
|
"DownLeftVectorBar;": "⥖", |
|
|
"FilledSmallSquare;": "◼", |
|
|
"GreaterSlantEqual;": "⩾", |
|
|
"LeftDoubleBracket;": "⟦", |
|
|
"LeftDownTeeVector;": "⥡", |
|
|
"LeftDownVectorBar;": "⥙", |
|
|
"leftrightharpoons;": "⇋", |
|
|
"LeftTriangleEqual;": "⊴", |
|
|
"NegativeThinSpace;": "", |
|
|
"NotGreaterGreater;": "≫̸", |
|
|
"NotLessSlantEqual;": "⩽̸", |
|
|
"NotNestedLessLess;": "⪡̸", |
|
|
"NotReverseElement;": "∌", |
|
|
"NotSquareSuperset;": "⊐̸", |
|
|
"NotTildeFullEqual;": "≇", |
|
|
"RightAngleBracket;": "⟩", |
|
|
"rightleftharpoons;": "⇌", |
|
|
"RightUpDownVector;": "⥏", |
|
|
"SquareSubsetEqual;": "⊑", |
|
|
"twoheadrightarrow;": "↠", |
|
|
"VerticalSeparator;": "❘", |
|
|
"blacktriangleright;": "▸", |
|
|
"DownRightTeeVector;": "⥟", |
|
|
"DownRightVectorBar;": "⥗", |
|
|
"LongLeftRightArrow;": "⟷", |
|
|
"Longleftrightarrow;": "⟺", |
|
|
"longleftrightarrow;": "⟷", |
|
|
"NegativeThickSpace;": "", |
|
|
"NotLeftTriangleBar;": "⧏̸", |
|
|
"PrecedesSlantEqual;": "≼", |
|
|
"ReverseEquilibrium;": "⇋", |
|
|
"RightDoubleBracket;": "⟧", |
|
|
"RightDownTeeVector;": "⥝", |
|
|
"RightDownVectorBar;": "⥕", |
|
|
"RightTriangleEqual;": "⊵", |
|
|
"SquareIntersection;": "⊓", |
|
|
"SucceedsSlantEqual;": "≽", |
|
|
"DoubleLongLeftArrow;": "⟸", |
|
|
"DownLeftRightVector;": "⥐", |
|
|
"LeftArrowRightArrow;": "⇆", |
|
|
"leftrightsquigarrow;": "↭", |
|
|
"NegativeMediumSpace;": "", |
|
|
"NotGreaterFullEqual;": "≧̸", |
|
|
"NotRightTriangleBar;": "⧐̸", |
|
|
"RightArrowLeftArrow;": "⇄", |
|
|
"SquareSupersetEqual;": "⊒", |
|
|
"CapitalDifferentialD;": "ⅅ", |
|
|
"DoubleLeftRightArrow;": "⇔", |
|
|
"DoubleLongRightArrow;": "⟹", |
|
|
"EmptyVerySmallSquare;": "▫", |
|
|
"NestedGreaterGreater;": "≫", |
|
|
"NotDoubleVerticalBar;": "∦", |
|
|
"NotGreaterSlantEqual;": "⩾̸", |
|
|
"NotLeftTriangleEqual;": "⋬", |
|
|
"NotSquareSubsetEqual;": "⋢", |
|
|
"OpenCurlyDoubleQuote;": "“", |
|
|
"ReverseUpEquilibrium;": "⥯", |
|
|
"CloseCurlyDoubleQuote;": "”", |
|
|
"DoubleContourIntegral;": "∯", |
|
|
"FilledVerySmallSquare;": "▪", |
|
|
"NegativeVeryThinSpace;": "", |
|
|
"NotPrecedesSlantEqual;": "⋠", |
|
|
"NotRightTriangleEqual;": "⋭", |
|
|
"NotSucceedsSlantEqual;": "⋡", |
|
|
"DiacriticalDoubleAcute;": "˝", |
|
|
"NotSquareSupersetEqual;": "⋣", |
|
|
"NotNestedGreaterGreater;": "⪢̸", |
|
|
"ClockwiseContourIntegral;": "∲", |
|
|
"DoubleLongLeftRightArrow;": "⟺", |
|
|
"CounterClockwiseContourIntegral;": "∳" |
|
|
}; |
|
|
|
|
|
// lazy compute this to make this file tree-shakable for browser |
|
|
let maxCRNameLength; |
|
|
const decodeHtml = (rawText, asAttr) => { |
|
|
let offset = 0; |
|
|
const end = rawText.length; |
|
|
let decodedText = ''; |
|
|
function advance(length) { |
|
|
offset += length; |
|
|
rawText = rawText.slice(length); |
|
|
} |
|
|
while (offset < end) { |
|
|
const head = /&(?:#x?)?/i.exec(rawText); |
|
|
if (!head || offset + head.index >= end) { |
|
|
const remaining = end - offset; |
|
|
decodedText += rawText.slice(0, remaining); |
|
|
advance(remaining); |
|
|
break; |
|
|
} |
|
|
// Advance to the "&". |
|
|
decodedText += rawText.slice(0, head.index); |
|
|
advance(head.index); |
|
|
if (head[0] === '&') { |
|
|
// Named character reference. |
|
|
let name = ''; |
|
|
let value = undefined; |
|
|
if (/[0-9a-z]/i.test(rawText[1])) { |
|
|
if (!maxCRNameLength) { |
|
|
maxCRNameLength = Object.keys(namedCharacterReferences).reduce((max, name) => Math.max(max, name.length), 0); |
|
|
} |
|
|
for (let length = maxCRNameLength; !value && length > 0; --length) { |
|
|
name = rawText.slice(1, 1 + length); |
|
|
value = namedCharacterReferences[name]; |
|
|
} |
|
|
if (value) { |
|
|
const semi = name.endsWith(';'); |
|
|
if (asAttr && |
|
|
!semi && |
|
|
/[=a-z0-9]/i.test(rawText[name.length + 1] || '')) { |
|
|
decodedText += '&' + name; |
|
|
advance(1 + name.length); |
|
|
} |
|
|
else { |
|
|
decodedText += value; |
|
|
advance(1 + name.length); |
|
|
} |
|
|
} |
|
|
else { |
|
|
decodedText += '&' + name; |
|
|
advance(1 + name.length); |
|
|
} |
|
|
} |
|
|
else { |
|
|
decodedText += '&'; |
|
|
advance(1); |
|
|
} |
|
|
} |
|
|
else { |
|
|
// Numeric character reference. |
|
|
const hex = head[0] === '&#x'; |
|
|
const pattern = hex ? /^&#x([0-9a-f]+);?/i : /^&#([0-9]+);?/; |
|
|
const body = pattern.exec(rawText); |
|
|
if (!body) { |
|
|
decodedText += head[0]; |
|
|
advance(head[0].length); |
|
|
} |
|
|
else { |
|
|
// https://html.spec.whatwg.org/multipage/parsing.html#numeric-character-reference-end-state |
|
|
let cp = Number.parseInt(body[1], hex ? 16 : 10); |
|
|
if (cp === 0) { |
|
|
cp = 0xfffd; |
|
|
} |
|
|
else if (cp > 0x10ffff) { |
|
|
cp = 0xfffd; |
|
|
} |
|
|
else if (cp >= 0xd800 && cp <= 0xdfff) { |
|
|
cp = 0xfffd; |
|
|
} |
|
|
else if ((cp >= 0xfdd0 && cp <= 0xfdef) || (cp & 0xfffe) === 0xfffe) ; |
|
|
else if ((cp >= 0x01 && cp <= 0x08) || |
|
|
cp === 0x0b || |
|
|
(cp >= 0x0d && cp <= 0x1f) || |
|
|
(cp >= 0x7f && cp <= 0x9f)) { |
|
|
cp = CCR_REPLACEMENTS[cp] || cp; |
|
|
} |
|
|
decodedText += String.fromCodePoint(cp); |
|
|
advance(body[0].length); |
|
|
} |
|
|
} |
|
|
} |
|
|
return decodedText; |
|
|
}; |
|
|
// https://html.spec.whatwg.org/multipage/parsing.html#numeric-character-reference-end-state |
|
|
const CCR_REPLACEMENTS = { |
|
|
0x80: 0x20ac, |
|
|
0x82: 0x201a, |
|
|
0x83: 0x0192, |
|
|
0x84: 0x201e, |
|
|
0x85: 0x2026, |
|
|
0x86: 0x2020, |
|
|
0x87: 0x2021, |
|
|
0x88: 0x02c6, |
|
|
0x89: 0x2030, |
|
|
0x8a: 0x0160, |
|
|
0x8b: 0x2039, |
|
|
0x8c: 0x0152, |
|
|
0x8e: 0x017d, |
|
|
0x91: 0x2018, |
|
|
0x92: 0x2019, |
|
|
0x93: 0x201c, |
|
|
0x94: 0x201d, |
|
|
0x95: 0x2022, |
|
|
0x96: 0x2013, |
|
|
0x97: 0x2014, |
|
|
0x98: 0x02dc, |
|
|
0x99: 0x2122, |
|
|
0x9a: 0x0161, |
|
|
0x9b: 0x203a, |
|
|
0x9c: 0x0153, |
|
|
0x9e: 0x017e, |
|
|
0x9f: 0x0178 |
|
|
}; |
|
|
|
|
|
const isRawTextContainer = /*#__PURE__*/ shared.makeMap('style,iframe,script,noscript', true); |
|
|
const parserOptions = { |
|
|
isVoidTag: shared.isVoidTag, |
|
|
isNativeTag: tag => shared.isHTMLTag(tag) || shared.isSVGTag(tag), |
|
|
isPreTag: tag => tag === 'pre', |
|
|
decodeEntities: decodeHtml, |
|
|
isBuiltInComponent: (tag) => { |
|
|
if (compilerCore.isBuiltInType(tag, `Transition`)) { |
|
|
return TRANSITION; |
|
|
} |
|
|
else if (compilerCore.isBuiltInType(tag, `TransitionGroup`)) { |
|
|
return TRANSITION_GROUP; |
|
|
} |
|
|
}, |
|
|
// https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher |
|
|
getNamespace(tag, parent) { |
|
|
let ns = parent ? parent.ns : 0 /* HTML */; |
|
|
if (parent && ns === 2 /* MATH_ML */) { |
|
|
if (parent.tag === 'annotation-xml') { |
|
|
if (tag === 'svg') { |
|
|
return 1 /* SVG */; |
|
|
} |
|
|
if (parent.props.some(a => a.type === 6 /* ATTRIBUTE */ && |
|
|
a.name === 'encoding' && |
|
|
a.value != null && |
|
|
(a.value.content === 'text/html' || |
|
|
a.value.content === 'application/xhtml+xml'))) { |
|
|
ns = 0 /* HTML */; |
|
|
} |
|
|
} |
|
|
else if (/^m(?:[ions]|text)$/.test(parent.tag) && |
|
|
tag !== 'mglyph' && |
|
|
tag !== 'malignmark') { |
|
|
ns = 0 /* HTML */; |
|
|
} |
|
|
} |
|
|
else if (parent && ns === 1 /* SVG */) { |
|
|
if (parent.tag === 'foreignObject' || |
|
|
parent.tag === 'desc' || |
|
|
parent.tag === 'title') { |
|
|
ns = 0 /* HTML */; |
|
|
} |
|
|
} |
|
|
if (ns === 0 /* HTML */) { |
|
|
if (tag === 'svg') { |
|
|
return 1 /* SVG */; |
|
|
} |
|
|
if (tag === 'math') { |
|
|
return 2 /* MATH_ML */; |
|
|
} |
|
|
} |
|
|
return ns; |
|
|
}, |
|
|
// https://html.spec.whatwg.org/multipage/parsing.html#parsing-html-fragments |
|
|
getTextMode({ tag, ns }) { |
|
|
if (ns === 0 /* HTML */) { |
|
|
if (tag === 'textarea' || tag === 'title') { |
|
|
return 1 /* RCDATA */; |
|
|
} |
|
|
if (isRawTextContainer(tag)) { |
|
|
return 2 /* RAWTEXT */; |
|
|
} |
|
|
} |
|
|
return 0 /* DATA */; |
|
|
} |
|
|
}; |
|
|
|
|
|
// Parse inline CSS strings for static style attributes into an object. |
|
|
// This is a NodeTransform since it works on the static `style` attribute and |
|
|
// converts it into a dynamic equivalent: |
|
|
// style="color: red" -> :style='{ "color": "red" }' |
|
|
// It is then processed by `transformElement` and included in the generated |
|
|
// props. |
|
|
const transformStyle = node => { |
|
|
if (node.type === 1 /* ELEMENT */) { |
|
|
node.props.forEach((p, i) => { |
|
|
if (p.type === 6 /* ATTRIBUTE */ && p.name === 'style' && p.value) { |
|
|
// replace p with an expression node |
|
|
node.props[i] = { |
|
|
type: 7 /* DIRECTIVE */, |
|
|
name: `bind`, |
|
|
arg: compilerCore.createSimpleExpression(`style`, true, p.loc), |
|
|
exp: parseInlineCSS(p.value.content, p.loc), |
|
|
modifiers: [], |
|
|
loc: p.loc |
|
|
}; |
|
|
} |
|
|
}); |
|
|
} |
|
|
}; |
|
|
const parseInlineCSS = (cssText, loc) => { |
|
|
const normalized = shared.parseStringStyle(cssText); |
|
|
return compilerCore.createSimpleExpression(JSON.stringify(normalized), false, loc, 3 /* CAN_STRINGIFY */); |
|
|
}; |
|
|
|
|
|
function createDOMCompilerError(code, loc) { |
|
|
return compilerCore.createCompilerError(code, loc, DOMErrorMessages ); |
|
|
} |
|
|
const DOMErrorMessages = { |
|
|
[50 /* X_V_HTML_NO_EXPRESSION */]: `v-html is missing expression.`, |
|
|
[51 /* X_V_HTML_WITH_CHILDREN */]: `v-html will override element children.`, |
|
|
[52 /* X_V_TEXT_NO_EXPRESSION */]: `v-text is missing expression.`, |
|
|
[53 /* X_V_TEXT_WITH_CHILDREN */]: `v-text will override element children.`, |
|
|
[54 /* X_V_MODEL_ON_INVALID_ELEMENT */]: `v-model can only be used on <input>, <textarea> and <select> elements.`, |
|
|
[55 /* X_V_MODEL_ARG_ON_ELEMENT */]: `v-model argument is not supported on plain elements.`, |
|
|
[56 /* X_V_MODEL_ON_FILE_INPUT_ELEMENT */]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`, |
|
|
[57 /* X_V_MODEL_UNNECESSARY_VALUE */]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`, |
|
|
[58 /* X_V_SHOW_NO_EXPRESSION */]: `v-show is missing expression.`, |
|
|
[59 /* X_TRANSITION_INVALID_CHILDREN */]: `<Transition> expects exactly one child element or component.`, |
|
|
[60 /* X_IGNORED_SIDE_EFFECT_TAG */]: `Tags with side effect (<script> and <style>) are ignored in client component templates.` |
|
|
}; |
|
|
|
|
|
const transformVHtml = (dir, node, context) => { |
|
|
const { exp, loc } = dir; |
|
|
if (!exp) { |
|
|
context.onError(createDOMCompilerError(50 /* X_V_HTML_NO_EXPRESSION */, loc)); |
|
|
} |
|
|
if (node.children.length) { |
|
|
context.onError(createDOMCompilerError(51 /* X_V_HTML_WITH_CHILDREN */, loc)); |
|
|
node.children.length = 0; |
|
|
} |
|
|
return { |
|
|
props: [ |
|
|
compilerCore.createObjectProperty(compilerCore.createSimpleExpression(`innerHTML`, true, loc), exp || compilerCore.createSimpleExpression('', true)) |
|
|
] |
|
|
}; |
|
|
}; |
|
|
|
|
|
const transformVText = (dir, node, context) => { |
|
|
const { exp, loc } = dir; |
|
|
if (!exp) { |
|
|
context.onError(createDOMCompilerError(52 /* X_V_TEXT_NO_EXPRESSION */, loc)); |
|
|
} |
|
|
if (node.children.length) { |
|
|
context.onError(createDOMCompilerError(53 /* X_V_TEXT_WITH_CHILDREN */, loc)); |
|
|
node.children.length = 0; |
|
|
} |
|
|
return { |
|
|
props: [ |
|
|
compilerCore.createObjectProperty(compilerCore.createSimpleExpression(`textContent`, true), exp |
|
|
? compilerCore.getConstantType(exp, context) > 0 |
|
|
? exp |
|
|
: compilerCore.createCallExpression(context.helperString(compilerCore.TO_DISPLAY_STRING), [exp], loc) |
|
|
: compilerCore.createSimpleExpression('', true)) |
|
|
] |
|
|
}; |
|
|
}; |
|
|
|
|
|
const transformModel = (dir, node, context) => { |
|
|
const baseResult = compilerCore.transformModel(dir, node, context); |
|
|
// base transform has errors OR component v-model (only need props) |
|
|
if (!baseResult.props.length || node.tagType === 1 /* COMPONENT */) { |
|
|
return baseResult; |
|
|
} |
|
|
if (dir.arg) { |
|
|
context.onError(createDOMCompilerError(55 /* X_V_MODEL_ARG_ON_ELEMENT */, dir.arg.loc)); |
|
|
} |
|
|
function checkDuplicatedValue() { |
|
|
const value = compilerCore.findProp(node, 'value'); |
|
|
if (value) { |
|
|
context.onError(createDOMCompilerError(57 /* X_V_MODEL_UNNECESSARY_VALUE */, value.loc)); |
|
|
} |
|
|
} |
|
|
const { tag } = node; |
|
|
const isCustomElement = context.isCustomElement(tag); |
|
|
if (tag === 'input' || |
|
|
tag === 'textarea' || |
|
|
tag === 'select' || |
|
|
isCustomElement) { |
|
|
let directiveToUse = V_MODEL_TEXT; |
|
|
let isInvalidType = false; |
|
|
if (tag === 'input' || isCustomElement) { |
|
|
const type = compilerCore.findProp(node, `type`); |
|
|
if (type) { |
|
|
if (type.type === 7 /* DIRECTIVE */) { |
|
|
// :type="foo" |
|
|
directiveToUse = V_MODEL_DYNAMIC; |
|
|
} |
|
|
else if (type.value) { |
|
|
switch (type.value.content) { |
|
|
case 'radio': |
|
|
directiveToUse = V_MODEL_RADIO; |
|
|
break; |
|
|
case 'checkbox': |
|
|
directiveToUse = V_MODEL_CHECKBOX; |
|
|
break; |
|
|
case 'file': |
|
|
isInvalidType = true; |
|
|
context.onError(createDOMCompilerError(56 /* X_V_MODEL_ON_FILE_INPUT_ELEMENT */, dir.loc)); |
|
|
break; |
|
|
default: |
|
|
// text type |
|
|
checkDuplicatedValue(); |
|
|
break; |
|
|
} |
|
|
} |
|
|
} |
|
|
else if (compilerCore.hasDynamicKeyVBind(node)) { |
|
|
// element has bindings with dynamic keys, which can possibly contain |
|
|
// "type". |
|
|
directiveToUse = V_MODEL_DYNAMIC; |
|
|
} |
|
|
else { |
|
|
// text type |
|
|
checkDuplicatedValue(); |
|
|
} |
|
|
} |
|
|
else if (tag === 'select') { |
|
|
directiveToUse = V_MODEL_SELECT; |
|
|
} |
|
|
else { |
|
|
// textarea |
|
|
checkDuplicatedValue(); |
|
|
} |
|
|
// inject runtime directive |
|
|
// by returning the helper symbol via needRuntime |
|
|
// the import will replaced a resolveDirective call. |
|
|
if (!isInvalidType) { |
|
|
baseResult.needRuntime = context.helper(directiveToUse); |
|
|
} |
|
|
} |
|
|
else { |
|
|
context.onError(createDOMCompilerError(54 /* X_V_MODEL_ON_INVALID_ELEMENT */, dir.loc)); |
|
|
} |
|
|
// native vmodel doesn't need the `modelValue` props since they are also |
|
|
// passed to the runtime as `binding.value`. removing it reduces code size. |
|
|
baseResult.props = baseResult.props.filter(p => !(p.key.type === 4 /* SIMPLE_EXPRESSION */ && |
|
|
p.key.content === 'modelValue')); |
|
|
return baseResult; |
|
|
}; |
|
|
|
|
|
const isEventOptionModifier = /*#__PURE__*/ shared.makeMap(`passive,once,capture`); |
|
|
const isNonKeyModifier = /*#__PURE__*/ shared.makeMap( |
|
|
// event propagation management |
|
|
`stop,prevent,self,` + |
|
|
// system modifiers + exact |
|
|
`ctrl,shift,alt,meta,exact,` + |
|
|
// mouse |
|
|
`middle`); |
|
|
// left & right could be mouse or key modifiers based on event type |
|
|
const maybeKeyModifier = /*#__PURE__*/ shared.makeMap('left,right'); |
|
|
const isKeyboardEvent = /*#__PURE__*/ shared.makeMap(`onkeyup,onkeydown,onkeypress`, true); |
|
|
const resolveModifiers = (key, modifiers, context, loc) => { |
|
|
const keyModifiers = []; |
|
|
const nonKeyModifiers = []; |
|
|
const eventOptionModifiers = []; |
|
|
for (let i = 0; i < modifiers.length; i++) { |
|
|
const modifier = modifiers[i]; |
|
|
if (modifier === 'native' && |
|
|
compilerCore.checkCompatEnabled("COMPILER_V_ON_NATIVE" /* COMPILER_V_ON_NATIVE */, context, loc)) { |
|
|
eventOptionModifiers.push(modifier); |
|
|
} |
|
|
else if (isEventOptionModifier(modifier)) { |
|
|
// eventOptionModifiers: modifiers for addEventListener() options, |
|
|
// e.g. .passive & .capture |
|
|
eventOptionModifiers.push(modifier); |
|
|
} |
|
|
else { |
|
|
// runtimeModifiers: modifiers that needs runtime guards |
|
|
if (maybeKeyModifier(modifier)) { |
|
|
if (compilerCore.isStaticExp(key)) { |
|
|
if (isKeyboardEvent(key.content)) { |
|
|
keyModifiers.push(modifier); |
|
|
} |
|
|
else { |
|
|
nonKeyModifiers.push(modifier); |
|
|
} |
|
|
} |
|
|
else { |
|
|
keyModifiers.push(modifier); |
|
|
nonKeyModifiers.push(modifier); |
|
|
} |
|
|
} |
|
|
else { |
|
|
if (isNonKeyModifier(modifier)) { |
|
|
nonKeyModifiers.push(modifier); |
|
|
} |
|
|
else { |
|
|
keyModifiers.push(modifier); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
return { |
|
|
keyModifiers, |
|
|
nonKeyModifiers, |
|
|
eventOptionModifiers |
|
|
}; |
|
|
}; |
|
|
const transformClick = (key, event) => { |
|
|
const isStaticClick = compilerCore.isStaticExp(key) && key.content.toLowerCase() === 'onclick'; |
|
|
return isStaticClick |
|
|
? compilerCore.createSimpleExpression(event, true) |
|
|
: key.type !== 4 /* SIMPLE_EXPRESSION */ |
|
|
? compilerCore.createCompoundExpression([ |
|
|
`(`, |
|
|
key, |
|
|
`) === "onClick" ? "${event}" : (`, |
|
|
key, |
|
|
`)` |
|
|
]) |
|
|
: key; |
|
|
}; |
|
|
const transformOn = (dir, node, context) => { |
|
|
return compilerCore.transformOn(dir, node, context, baseResult => { |
|
|
const { modifiers } = dir; |
|
|
if (!modifiers.length) |
|
|
return baseResult; |
|
|
let { key, value: handlerExp } = baseResult.props[0]; |
|
|
const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc); |
|
|
// normalize click.right and click.middle since they don't actually fire |
|
|
if (nonKeyModifiers.includes('right')) { |
|
|
key = transformClick(key, `onContextmenu`); |
|
|
} |
|
|
if (nonKeyModifiers.includes('middle')) { |
|
|
key = transformClick(key, `onMouseup`); |
|
|
} |
|
|
if (nonKeyModifiers.length) { |
|
|
handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [ |
|
|
handlerExp, |
|
|
JSON.stringify(nonKeyModifiers) |
|
|
]); |
|
|
} |
|
|
if (keyModifiers.length && |
|
|
// if event name is dynamic, always wrap with keys guard |
|
|
(!compilerCore.isStaticExp(key) || isKeyboardEvent(key.content))) { |
|
|
handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_KEYS), [ |
|
|
handlerExp, |
|
|
JSON.stringify(keyModifiers) |
|
|
]); |
|
|
} |
|
|
if (eventOptionModifiers.length) { |
|
|
const modifierPostfix = eventOptionModifiers.map(shared.capitalize).join(''); |
|
|
key = compilerCore.isStaticExp(key) |
|
|
? compilerCore.createSimpleExpression(`${key.content}${modifierPostfix}`, true) |
|
|
: compilerCore.createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]); |
|
|
} |
|
|
return { |
|
|
props: [compilerCore.createObjectProperty(key, handlerExp)] |
|
|
}; |
|
|
}); |
|
|
}; |
|
|
|
|
|
const transformShow = (dir, node, context) => { |
|
|
const { exp, loc } = dir; |
|
|
if (!exp) { |
|
|
context.onError(createDOMCompilerError(58 /* X_V_SHOW_NO_EXPRESSION */, loc)); |
|
|
} |
|
|
return { |
|
|
props: [], |
|
|
needRuntime: context.helper(V_SHOW) |
|
|
}; |
|
|
}; |
|
|
|
|
|
const transformTransition = (node, context) => { |
|
|
if (node.type === 1 /* ELEMENT */ && |
|
|
node.tagType === 1 /* COMPONENT */) { |
|
|
const component = context.isBuiltInComponent(node.tag); |
|
|
if (component === TRANSITION) { |
|
|
return () => { |
|
|
if (!node.children.length) { |
|
|
return; |
|
|
} |
|
|
// warn multiple transition children |
|
|
if (hasMultipleChildren(node)) { |
|
|
context.onError(createDOMCompilerError(59 /* X_TRANSITION_INVALID_CHILDREN */, { |
|
|
start: node.children[0].loc.start, |
|
|
end: node.children[node.children.length - 1].loc.end, |
|
|
source: '' |
|
|
})); |
|
|
} |
|
|
// check if it's s single child w/ v-show |
|
|
// if yes, inject "persisted: true" to the transition props |
|
|
const child = node.children[0]; |
|
|
if (child.type === 1 /* ELEMENT */) { |
|
|
for (const p of child.props) { |
|
|
if (p.type === 7 /* DIRECTIVE */ && p.name === 'show') { |
|
|
node.props.push({ |
|
|
type: 6 /* ATTRIBUTE */, |
|
|
name: 'persisted', |
|
|
value: undefined, |
|
|
loc: node.loc |
|
|
}); |
|
|
} |
|
|
} |
|
|
} |
|
|
}; |
|
|
} |
|
|
} |
|
|
}; |
|
|
function hasMultipleChildren(node) { |
|
|
// #1352 filter out potential comment nodes. |
|
|
const children = (node.children = node.children.filter(c => c.type !== 3 /* COMMENT */ && |
|
|
!(c.type === 2 /* TEXT */ && !c.content.trim()))); |
|
|
const child = children[0]; |
|
|
return (children.length !== 1 || |
|
|
child.type === 11 /* FOR */ || |
|
|
(child.type === 9 /* IF */ && child.branches.some(hasMultipleChildren))); |
|
|
} |
|
|
|
|
|
/** |
|
|
* This module is Node-only. |
|
|
*/ |
|
|
/** |
|
|
* Regex for replacing placeholders for embedded constant variables |
|
|
* (e.g. import URL string constants generated by compiler-sfc) |
|
|
*/ |
|
|
const expReplaceRE = /__VUE_EXP_START__(.*?)__VUE_EXP_END__/g; |
|
|
/** |
|
|
* Turn eligible hoisted static trees into stringified static nodes, e.g. |
|
|
* |
|
|
* ```js |
|
|
* const _hoisted_1 = createStaticVNode(`<div class="foo">bar</div>`) |
|
|
* ``` |
|
|
* |
|
|
* A single static vnode can contain stringified content for **multiple** |
|
|
* consecutive nodes (element and plain text), called a "chunk". |
|
|
* `@vue/runtime-dom` will create the content via innerHTML in a hidden |
|
|
* container element and insert all the nodes in place. The call must also |
|
|
* provide the number of nodes contained in the chunk so that during hydration |
|
|
* we can know how many nodes the static vnode should adopt. |
|
|
* |
|
|
* The optimization scans a children list that contains hoisted nodes, and |
|
|
* tries to find the largest chunk of consecutive hoisted nodes before running |
|
|
* into a non-hoisted node or the end of the list. A chunk is then converted |
|
|
* into a single static vnode and replaces the hoisted expression of the first |
|
|
* node in the chunk. Other nodes in the chunk are considered "merged" and |
|
|
* therefore removed from both the hoist list and the children array. |
|
|
* |
|
|
* This optimization is only performed in Node.js. |
|
|
*/ |
|
|
const stringifyStatic = (children, context, parent) => { |
|
|
// bail stringification for slot content |
|
|
if (context.scopes.vSlot > 0) { |
|
|
return; |
|
|
} |
|
|
let nc = 0; // current node count |
|
|
let ec = 0; // current element with binding count |
|
|
const currentChunk = []; |
|
|
const stringifyCurrentChunk = (currentIndex) => { |
|
|
if (nc >= 20 /* NODE_COUNT */ || |
|
|
ec >= 5 /* ELEMENT_WITH_BINDING_COUNT */) { |
|
|
// combine all currently eligible nodes into a single static vnode call |
|
|
const staticCall = compilerCore.createCallExpression(context.helper(compilerCore.CREATE_STATIC), [ |
|
|
JSON.stringify(currentChunk.map(node => stringifyNode(node, context)).join('')).replace(expReplaceRE, `" + $1 + "`), |
|
|
// the 2nd argument indicates the number of DOM nodes this static vnode |
|
|
// will insert / hydrate |
|
|
String(currentChunk.length) |
|
|
]); |
|
|
// replace the first node's hoisted expression with the static vnode call |
|
|
replaceHoist(currentChunk[0], staticCall, context); |
|
|
if (currentChunk.length > 1) { |
|
|
for (let i = 1; i < currentChunk.length; i++) { |
|
|
// for the merged nodes, set their hoisted expression to null |
|
|
replaceHoist(currentChunk[i], null, context); |
|
|
} |
|
|
// also remove merged nodes from children |
|
|
const deleteCount = currentChunk.length - 1; |
|
|
children.splice(currentIndex - currentChunk.length + 1, deleteCount); |
|
|
return deleteCount; |
|
|
} |
|
|
} |
|
|
return 0; |
|
|
}; |
|
|
let i = 0; |
|
|
for (; i < children.length; i++) { |
|
|
const child = children[i]; |
|
|
const hoisted = getHoistedNode(child); |
|
|
if (hoisted) { |
|
|
// presence of hoisted means child must be a stringifiable node |
|
|
const node = child; |
|
|
const result = analyzeNode(node); |
|
|
if (result) { |
|
|
// node is stringifiable, record state |
|
|
nc += result[0]; |
|
|
ec += result[1]; |
|
|
currentChunk.push(node); |
|
|
continue; |
|
|
} |
|
|
} |
|
|
// we only reach here if we ran into a node that is not stringifiable |
|
|
// check if currently analyzed nodes meet criteria for stringification. |
|
|
// adjust iteration index |
|
|
i -= stringifyCurrentChunk(i); |
|
|
// reset state |
|
|
nc = 0; |
|
|
ec = 0; |
|
|
currentChunk.length = 0; |
|
|
} |
|
|
// in case the last node was also stringifiable |
|
|
stringifyCurrentChunk(i); |
|
|
}; |
|
|
const getHoistedNode = (node) => ((node.type === 1 /* ELEMENT */ && node.tagType === 0 /* ELEMENT */) || |
|
|
node.type == 12 /* TEXT_CALL */) && |
|
|
node.codegenNode && |
|
|
node.codegenNode.type === 4 /* SIMPLE_EXPRESSION */ && |
|
|
node.codegenNode.hoisted; |
|
|
const dataAriaRE = /^(data|aria)-/; |
|
|
const isStringifiableAttr = (name, ns) => { |
|
|
return ((ns === 0 /* HTML */ |
|
|
? shared.isKnownHtmlAttr(name) |
|
|
: ns === 1 /* SVG */ |
|
|
? shared.isKnownSvgAttr(name) |
|
|
: false) || dataAriaRE.test(name)); |
|
|
}; |
|
|
const replaceHoist = (node, replacement, context) => { |
|
|
const hoistToReplace = node.codegenNode.hoisted; |
|
|
context.hoists[context.hoists.indexOf(hoistToReplace)] = replacement; |
|
|
}; |
|
|
const isNonStringifiable = /*#__PURE__*/ shared.makeMap(`caption,thead,tr,th,tbody,td,tfoot,colgroup,col`); |
|
|
/** |
|
|
* for a hoisted node, analyze it and return: |
|
|
* - false: bailed (contains non-stringifiable props or runtime constant) |
|
|
* - [nc, ec] where |
|
|
* - nc is the number of nodes inside |
|
|
* - ec is the number of element with bindings inside |
|
|
*/ |
|
|
function analyzeNode(node) { |
|
|
if (node.type === 1 /* ELEMENT */ && isNonStringifiable(node.tag)) { |
|
|
return false; |
|
|
} |
|
|
if (node.type === 12 /* TEXT_CALL */) { |
|
|
return [1, 0]; |
|
|
} |
|
|
let nc = 1; // node count |
|
|
let ec = node.props.length > 0 ? 1 : 0; // element w/ binding count |
|
|
let bailed = false; |
|
|
const bail = () => { |
|
|
bailed = true; |
|
|
return false; |
|
|
}; |
|
|
// TODO: check for cases where using innerHTML will result in different |
|
|
// output compared to imperative node insertions. |
|
|
// probably only need to check for most common case |
|
|
// i.e. non-phrasing-content tags inside `<p>` |
|
|
function walk(node) { |
|
|
for (let i = 0; i < node.props.length; i++) { |
|
|
const p = node.props[i]; |
|
|
// bail on non-attr bindings |
|
|
if (p.type === 6 /* ATTRIBUTE */ && |
|
|
!isStringifiableAttr(p.name, node.ns)) { |
|
|
return bail(); |
|
|
} |
|
|
if (p.type === 7 /* DIRECTIVE */ && p.name === 'bind') { |
|
|
// bail on non-attr bindings |
|
|
if (p.arg && |
|
|
(p.arg.type === 8 /* COMPOUND_EXPRESSION */ || |
|
|
(p.arg.isStatic && !isStringifiableAttr(p.arg.content, node.ns)))) { |
|
|
return bail(); |
|
|
} |
|
|
if (p.exp && |
|
|
(p.exp.type === 8 /* COMPOUND_EXPRESSION */ || |
|
|
p.exp.constType < 3 /* CAN_STRINGIFY */)) { |
|
|
return bail(); |
|
|
} |
|
|
} |
|
|
} |
|
|
for (let i = 0; i < node.children.length; i++) { |
|
|
nc++; |
|
|
const child = node.children[i]; |
|
|
if (child.type === 1 /* ELEMENT */) { |
|
|
if (child.props.length > 0) { |
|
|
ec++; |
|
|
} |
|
|
walk(child); |
|
|
if (bailed) { |
|
|
return false; |
|
|
} |
|
|
} |
|
|
} |
|
|
return true; |
|
|
} |
|
|
return walk(node) ? [nc, ec] : false; |
|
|
} |
|
|
function stringifyNode(node, context) { |
|
|
if (shared.isString(node)) { |
|
|
return node; |
|
|
} |
|
|
if (shared.isSymbol(node)) { |
|
|
return ``; |
|
|
} |
|
|
switch (node.type) { |
|
|
case 1 /* ELEMENT */: |
|
|
return stringifyElement(node, context); |
|
|
case 2 /* TEXT */: |
|
|
return shared.escapeHtml(node.content); |
|
|
case 3 /* COMMENT */: |
|
|
return `<!--${shared.escapeHtml(node.content)}-->`; |
|
|
case 5 /* INTERPOLATION */: |
|
|
return shared.escapeHtml(shared.toDisplayString(evaluateConstant(node.content))); |
|
|
case 8 /* COMPOUND_EXPRESSION */: |
|
|
return shared.escapeHtml(evaluateConstant(node)); |
|
|
case 12 /* TEXT_CALL */: |
|
|
return stringifyNode(node.content, context); |
|
|
default: |
|
|
// static trees will not contain if/for nodes |
|
|
return ''; |
|
|
} |
|
|
} |
|
|
function stringifyElement(node, context) { |
|
|
let res = `<${node.tag}`; |
|
|
let innerHTML = ''; |
|
|
for (let i = 0; i < node.props.length; i++) { |
|
|
const p = node.props[i]; |
|
|
if (p.type === 6 /* ATTRIBUTE */) { |
|
|
res += ` ${p.name}`; |
|
|
if (p.value) { |
|
|
res += `="${shared.escapeHtml(p.value.content)}"`; |
|
|
} |
|
|
} |
|
|
else if (p.type === 7 /* DIRECTIVE */) { |
|
|
if (p.name === 'bind') { |
|
|
const exp = p.exp; |
|
|
if (exp.content[0] === '_') { |
|
|
// internally generated string constant references |
|
|
// e.g. imported URL strings via compiler-sfc transformAssetUrl plugin |
|
|
res += ` ${p.arg.content}="__VUE_EXP_START__${exp.content}__VUE_EXP_END__"`; |
|
|
continue; |
|
|
} |
|
|
// constant v-bind, e.g. :foo="1" |
|
|
let evaluated = evaluateConstant(exp); |
|
|
if (evaluated != null) { |
|
|
const arg = p.arg && p.arg.content; |
|
|
if (arg === 'class') { |
|
|
evaluated = shared.normalizeClass(evaluated); |
|
|
} |
|
|
else if (arg === 'style') { |
|
|
evaluated = shared.stringifyStyle(shared.normalizeStyle(evaluated)); |
|
|
} |
|
|
res += ` ${p.arg.content}="${shared.escapeHtml(evaluated)}"`; |
|
|
} |
|
|
} |
|
|
else if (p.name === 'html') { |
|
|
// #5439 v-html with constant value |
|
|
// not sure why would anyone do this but it can happen |
|
|
innerHTML = evaluateConstant(p.exp); |
|
|
} |
|
|
else if (p.name === 'text') { |
|
|
innerHTML = shared.escapeHtml(shared.toDisplayString(evaluateConstant(p.exp))); |
|
|
} |
|
|
} |
|
|
} |
|
|
if (context.scopeId) { |
|
|
res += ` ${context.scopeId}`; |
|
|
} |
|
|
res += `>`; |
|
|
if (innerHTML) { |
|
|
res += innerHTML; |
|
|
} |
|
|
else { |
|
|
for (let i = 0; i < node.children.length; i++) { |
|
|
res += stringifyNode(node.children[i], context); |
|
|
} |
|
|
} |
|
|
if (!shared.isVoidTag(node.tag)) { |
|
|
res += `</${node.tag}>`; |
|
|
} |
|
|
return res; |
|
|
} |
|
|
// __UNSAFE__ |
|
|
// Reason: eval. |
|
|
// It's technically safe to eval because only constant expressions are possible |
|
|
// here, e.g. `{{ 1 }}` or `{{ 'foo' }}` |
|
|
// in addition, constant exps bail on presence of parens so you can't even |
|
|
// run JSFuck in here. But we mark it unsafe for security review purposes. |
|
|
// (see compiler-core/src/transforms/transformExpression) |
|
|
function evaluateConstant(exp) { |
|
|
if (exp.type === 4 /* SIMPLE_EXPRESSION */) { |
|
|
return new Function(`return ${exp.content}`)(); |
|
|
} |
|
|
else { |
|
|
// compound |
|
|
let res = ``; |
|
|
exp.children.forEach(c => { |
|
|
if (shared.isString(c) || shared.isSymbol(c)) { |
|
|
return; |
|
|
} |
|
|
if (c.type === 2 /* TEXT */) { |
|
|
res += c.content; |
|
|
} |
|
|
else if (c.type === 5 /* INTERPOLATION */) { |
|
|
res += shared.toDisplayString(evaluateConstant(c.content)); |
|
|
} |
|
|
else { |
|
|
res += evaluateConstant(c); |
|
|
} |
|
|
}); |
|
|
return res; |
|
|
} |
|
|
} |
|
|
|
|
|
const ignoreSideEffectTags = (node, context) => { |
|
|
if (node.type === 1 /* ELEMENT */ && |
|
|
node.tagType === 0 /* ELEMENT */ && |
|
|
(node.tag === 'script' || node.tag === 'style')) { |
|
|
context.onError(createDOMCompilerError(60 /* X_IGNORED_SIDE_EFFECT_TAG */, node.loc)); |
|
|
context.removeNode(); |
|
|
} |
|
|
}; |
|
|
|
|
|
const DOMNodeTransforms = [ |
|
|
transformStyle, |
|
|
...([transformTransition] ) |
|
|
]; |
|
|
const DOMDirectiveTransforms = { |
|
|
cloak: compilerCore.noopDirectiveTransform, |
|
|
html: transformVHtml, |
|
|
text: transformVText, |
|
|
model: transformModel, |
|
|
on: transformOn, |
|
|
show: transformShow |
|
|
}; |
|
|
function compile(template, options = {}) { |
|
|
return compilerCore.baseCompile(template, shared.extend({}, parserOptions, options, { |
|
|
nodeTransforms: [ |
|
|
// ignore <script> and <tag> |
|
|
// this is not put inside DOMNodeTransforms because that list is used |
|
|
// by compiler-ssr to generate vnode fallback branches |
|
|
ignoreSideEffectTags, |
|
|
...DOMNodeTransforms, |
|
|
...(options.nodeTransforms || []) |
|
|
], |
|
|
directiveTransforms: shared.extend({}, DOMDirectiveTransforms, options.directiveTransforms || {}), |
|
|
transformHoist: stringifyStatic |
|
|
})); |
|
|
} |
|
|
function parse(template, options = {}) { |
|
|
return compilerCore.baseParse(template, shared.extend({}, parserOptions, options)); |
|
|
} |
|
|
|
|
|
Object.keys(compilerCore).forEach(function (k) { |
|
|
if (k !== 'default') exports[k] = compilerCore[k]; |
|
|
}); |
|
|
exports.DOMDirectiveTransforms = DOMDirectiveTransforms; |
|
|
exports.DOMNodeTransforms = DOMNodeTransforms; |
|
|
exports.TRANSITION = TRANSITION; |
|
|
exports.TRANSITION_GROUP = TRANSITION_GROUP; |
|
|
exports.V_MODEL_CHECKBOX = V_MODEL_CHECKBOX; |
|
|
exports.V_MODEL_DYNAMIC = V_MODEL_DYNAMIC; |
|
|
exports.V_MODEL_RADIO = V_MODEL_RADIO; |
|
|
exports.V_MODEL_SELECT = V_MODEL_SELECT; |
|
|
exports.V_MODEL_TEXT = V_MODEL_TEXT; |
|
|
exports.V_ON_WITH_KEYS = V_ON_WITH_KEYS; |
|
|
exports.V_ON_WITH_MODIFIERS = V_ON_WITH_MODIFIERS; |
|
|
exports.V_SHOW = V_SHOW; |
|
|
exports.compile = compile; |
|
|
exports.createDOMCompilerError = createDOMCompilerError; |
|
|
exports.parse = parse; |
|
|
exports.parserOptions = parserOptions; |
|
|
exports.transformStyle = transformStyle;
|
|
|
|