source: trip-planner-front/node_modules/critters/dist/critters.umd.js@ 6a3a178

Last change on this file since 6a3a178 was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 231.2 KB
Line 
1(function (global, factory) {
2 typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('path'), require('pretty-bytes'), require('parse5'), require('css'), require('chalk')) :
3 typeof define === 'function' && define.amd ? define(['path', 'pretty-bytes', 'parse5', 'css', 'chalk'], factory) :
4 (global = global || self, global.critters = factory(global.path, global.prettyBytes, global.parse5, global.css, global.chalk));
5}(this, (function (path, prettyBytes, parse5, css, chalk) {
6 path = path && Object.prototype.hasOwnProperty.call(path, 'default') ? path['default'] : path;
7 prettyBytes = prettyBytes && Object.prototype.hasOwnProperty.call(prettyBytes, 'default') ? prettyBytes['default'] : prettyBytes;
8 parse5 = parse5 && Object.prototype.hasOwnProperty.call(parse5, 'default') ? parse5['default'] : parse5;
9 css = css && Object.prototype.hasOwnProperty.call(css, 'default') ? css['default'] : css;
10 chalk = chalk && Object.prototype.hasOwnProperty.call(chalk, 'default') ? chalk['default'] : chalk;
11
12 var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
13
14 function createCommonjsModule(fn, basedir, module) {
15 return module = {
16 path: basedir,
17 exports: {},
18 require: function (path, base) {
19 return commonjsRequire();
20 }
21 }, fn(module, module.exports), module.exports;
22 }
23
24 function getCjsExportFromNamespace (n) {
25 return n && n['default'] || n;
26 }
27
28 function commonjsRequire () {
29 throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');
30 }
31
32 //Types of elements found in the DOM
33 var domelementtype = {
34 Text: "text", //Text
35 Directive: "directive", //<? ... ?>
36 Comment: "comment", //<!-- ... -->
37 Script: "script", //<script> tags
38 Style: "style", //<style> tags
39 Tag: "tag", //Any tag
40 CDATA: "cdata", //<![CDATA[ ... ]]>
41 Doctype: "doctype",
42
43 isTag: function(elem){
44 return elem.type === "tag" || elem.type === "script" || elem.type === "style";
45 }
46 };
47
48 var lib = createCommonjsModule(function (module, exports) {
49 Object.defineProperty(exports, "__esModule", { value: true });
50 /**
51 * Tests whether an element is a tag or not.
52 *
53 * @param elem Element to test
54 */
55 function isTag(elem) {
56 return (elem.type === "tag" /* Tag */ ||
57 elem.type === "script" /* Script */ ||
58 elem.type === "style" /* Style */);
59 }
60 exports.isTag = isTag;
61 // Exports for backwards compatibility
62 exports.Text = "text" /* Text */; //Text
63 exports.Directive = "directive" /* Directive */; //<? ... ?>
64 exports.Comment = "comment" /* Comment */; //<!-- ... -->
65 exports.Script = "script" /* Script */; //<script> tags
66 exports.Style = "style" /* Style */; //<style> tags
67 exports.Tag = "tag" /* Tag */; //Any tag
68 exports.CDATA = "cdata" /* CDATA */; //<![CDATA[ ... ]]>
69 exports.Doctype = "doctype" /* Doctype */;
70 });
71
72 var Aacute = "Á";
73 var aacute = "á";
74 var Abreve = "Ă";
75 var abreve = "ă";
76 var ac = "∾";
77 var acd = "∿";
78 var acE = "∾̳";
79 var Acirc = "Â";
80 var acirc = "â";
81 var acute = "´";
82 var Acy = "А";
83 var acy = "а";
84 var AElig = "Æ";
85 var aelig = "æ";
86 var af = "⁡";
87 var Afr = "𝔄";
88 var afr = "𝔞";
89 var Agrave = "À";
90 var agrave = "à";
91 var alefsym = "ℵ";
92 var aleph = "ℵ";
93 var Alpha = "Α";
94 var alpha = "α";
95 var Amacr = "Ā";
96 var amacr = "ā";
97 var amalg = "⨿";
98 var amp = "&";
99 var AMP = "&";
100 var andand = "⩕";
101 var And = "⩓";
102 var and = "∧";
103 var andd = "⩜";
104 var andslope = "⩘";
105 var andv = "⩚";
106 var ang = "∠";
107 var ange = "⦤";
108 var angle = "∠";
109 var angmsdaa = "⦨";
110 var angmsdab = "⦩";
111 var angmsdac = "⦪";
112 var angmsdad = "⦫";
113 var angmsdae = "⦬";
114 var angmsdaf = "⦭";
115 var angmsdag = "⦮";
116 var angmsdah = "⦯";
117 var angmsd = "∡";
118 var angrt = "∟";
119 var angrtvb = "⊾";
120 var angrtvbd = "⦝";
121 var angsph = "∢";
122 var angst = "Å";
123 var angzarr = "⍼";
124 var Aogon = "Ą";
125 var aogon = "ą";
126 var Aopf = "𝔸";
127 var aopf = "𝕒";
128 var apacir = "⩯";
129 var ap = "≈";
130 var apE = "⩰";
131 var ape = "≊";
132 var apid = "≋";
133 var apos = "'";
134 var ApplyFunction = "⁡";
135 var approx = "≈";
136 var approxeq = "≊";
137 var Aring = "Å";
138 var aring = "å";
139 var Ascr = "𝒜";
140 var ascr = "𝒶";
141 var Assign = "≔";
142 var ast = "*";
143 var asymp = "≈";
144 var asympeq = "≍";
145 var Atilde = "Ã";
146 var atilde = "ã";
147 var Auml = "Ä";
148 var auml = "ä";
149 var awconint = "∳";
150 var awint = "⨑";
151 var backcong = "≌";
152 var backepsilon = "϶";
153 var backprime = "‵";
154 var backsim = "∽";
155 var backsimeq = "⋍";
156 var Backslash = "∖";
157 var Barv = "⫧";
158 var barvee = "⊽";
159 var barwed = "⌅";
160 var Barwed = "⌆";
161 var barwedge = "⌅";
162 var bbrk = "⎵";
163 var bbrktbrk = "⎶";
164 var bcong = "≌";
165 var Bcy = "Б";
166 var bcy = "б";
167 var bdquo = "„";
168 var becaus = "∵";
169 var because = "∵";
170 var Because = "∵";
171 var bemptyv = "⦰";
172 var bepsi = "϶";
173 var bernou = "ℬ";
174 var Bernoullis = "ℬ";
175 var Beta = "Β";
176 var beta = "β";
177 var beth = "ℶ";
178 var between = "≬";
179 var Bfr = "𝔅";
180 var bfr = "𝔟";
181 var bigcap = "⋂";
182 var bigcirc = "◯";
183 var bigcup = "⋃";
184 var bigodot = "⨀";
185 var bigoplus = "⨁";
186 var bigotimes = "⨂";
187 var bigsqcup = "⨆";
188 var bigstar = "★";
189 var bigtriangledown = "▽";
190 var bigtriangleup = "△";
191 var biguplus = "⨄";
192 var bigvee = "⋁";
193 var bigwedge = "⋀";
194 var bkarow = "⤍";
195 var blacklozenge = "⧫";
196 var blacksquare = "▪";
197 var blacktriangle = "▴";
198 var blacktriangledown = "▾";
199 var blacktriangleleft = "◂";
200 var blacktriangleright = "▸";
201 var blank = "␣";
202 var blk12 = "▒";
203 var blk14 = "░";
204 var blk34 = "▓";
205 var block = "█";
206 var bne = "=⃥";
207 var bnequiv = "≡⃥";
208 var bNot = "⫭";
209 var bnot = "⌐";
210 var Bopf = "𝔹";
211 var bopf = "𝕓";
212 var bot = "⊥";
213 var bottom = "⊥";
214 var bowtie = "⋈";
215 var boxbox = "⧉";
216 var boxdl = "┐";
217 var boxdL = "╕";
218 var boxDl = "╖";
219 var boxDL = "╗";
220 var boxdr = "┌";
221 var boxdR = "╒";
222 var boxDr = "╓";
223 var boxDR = "╔";
224 var boxh = "─";
225 var boxH = "═";
226 var boxhd = "┬";
227 var boxHd = "╤";
228 var boxhD = "╥";
229 var boxHD = "╦";
230 var boxhu = "┴";
231 var boxHu = "╧";
232 var boxhU = "╨";
233 var boxHU = "╩";
234 var boxminus = "⊟";
235 var boxplus = "⊞";
236 var boxtimes = "⊠";
237 var boxul = "┘";
238 var boxuL = "╛";
239 var boxUl = "╜";
240 var boxUL = "╝";
241 var boxur = "└";
242 var boxuR = "╘";
243 var boxUr = "╙";
244 var boxUR = "╚";
245 var boxv = "│";
246 var boxV = "║";
247 var boxvh = "┼";
248 var boxvH = "╪";
249 var boxVh = "╫";
250 var boxVH = "╬";
251 var boxvl = "┤";
252 var boxvL = "╡";
253 var boxVl = "╢";
254 var boxVL = "╣";
255 var boxvr = "├";
256 var boxvR = "╞";
257 var boxVr = "╟";
258 var boxVR = "╠";
259 var bprime = "‵";
260 var breve = "˘";
261 var Breve = "˘";
262 var brvbar = "¦";
263 var bscr = "𝒷";
264 var Bscr = "ℬ";
265 var bsemi = "⁏";
266 var bsim = "∽";
267 var bsime = "⋍";
268 var bsolb = "⧅";
269 var bsol = "\\";
270 var bsolhsub = "⟈";
271 var bull = "•";
272 var bullet = "•";
273 var bump = "≎";
274 var bumpE = "⪮";
275 var bumpe = "≏";
276 var Bumpeq = "≎";
277 var bumpeq = "≏";
278 var Cacute = "Ć";
279 var cacute = "ć";
280 var capand = "⩄";
281 var capbrcup = "⩉";
282 var capcap = "⩋";
283 var cap = "∩";
284 var Cap = "⋒";
285 var capcup = "⩇";
286 var capdot = "⩀";
287 var CapitalDifferentialD = "ⅅ";
288 var caps = "∩︀";
289 var caret = "⁁";
290 var caron = "ˇ";
291 var Cayleys = "ℭ";
292 var ccaps = "⩍";
293 var Ccaron = "Č";
294 var ccaron = "č";
295 var Ccedil = "Ç";
296 var ccedil = "ç";
297 var Ccirc = "Ĉ";
298 var ccirc = "ĉ";
299 var Cconint = "∰";
300 var ccups = "⩌";
301 var ccupssm = "⩐";
302 var Cdot = "Ċ";
303 var cdot = "ċ";
304 var cedil = "¸";
305 var Cedilla = "¸";
306 var cemptyv = "⦲";
307 var cent = "¢";
308 var centerdot = "·";
309 var CenterDot = "·";
310 var cfr = "𝔠";
311 var Cfr = "ℭ";
312 var CHcy = "Ч";
313 var chcy = "ч";
314 var check = "✓";
315 var checkmark = "✓";
316 var Chi = "Χ";
317 var chi = "χ";
318 var circ = "ˆ";
319 var circeq = "≗";
320 var circlearrowleft = "↺";
321 var circlearrowright = "↻";
322 var circledast = "⊛";
323 var circledcirc = "⊚";
324 var circleddash = "⊝";
325 var CircleDot = "⊙";
326 var circledR = "®";
327 var circledS = "Ⓢ";
328 var CircleMinus = "⊖";
329 var CirclePlus = "⊕";
330 var CircleTimes = "⊗";
331 var cir = "○";
332 var cirE = "⧃";
333 var cire = "≗";
334 var cirfnint = "⨐";
335 var cirmid = "⫯";
336 var cirscir = "⧂";
337 var ClockwiseContourIntegral = "∲";
338 var CloseCurlyDoubleQuote = "”";
339 var CloseCurlyQuote = "’";
340 var clubs = "♣";
341 var clubsuit = "♣";
342 var colon = ":";
343 var Colon = "∷";
344 var Colone = "⩴";
345 var colone = "≔";
346 var coloneq = "≔";
347 var comma = ",";
348 var commat = "@";
349 var comp = "∁";
350 var compfn = "∘";
351 var complement = "∁";
352 var complexes = "ℂ";
353 var cong = "≅";
354 var congdot = "⩭";
355 var Congruent = "≡";
356 var conint = "∮";
357 var Conint = "∯";
358 var ContourIntegral = "∮";
359 var copf = "𝕔";
360 var Copf = "ℂ";
361 var coprod = "∐";
362 var Coproduct = "∐";
363 var copy = "©";
364 var COPY = "©";
365 var copysr = "℗";
366 var CounterClockwiseContourIntegral = "∳";
367 var crarr = "↵";
368 var cross = "✗";
369 var Cross = "⨯";
370 var Cscr = "𝒞";
371 var cscr = "𝒸";
372 var csub = "⫏";
373 var csube = "⫑";
374 var csup = "⫐";
375 var csupe = "⫒";
376 var ctdot = "⋯";
377 var cudarrl = "⤸";
378 var cudarrr = "⤵";
379 var cuepr = "⋞";
380 var cuesc = "⋟";
381 var cularr = "↶";
382 var cularrp = "⤽";
383 var cupbrcap = "⩈";
384 var cupcap = "⩆";
385 var CupCap = "≍";
386 var cup = "∪";
387 var Cup = "⋓";
388 var cupcup = "⩊";
389 var cupdot = "⊍";
390 var cupor = "⩅";
391 var cups = "∪︀";
392 var curarr = "↷";
393 var curarrm = "⤼";
394 var curlyeqprec = "⋞";
395 var curlyeqsucc = "⋟";
396 var curlyvee = "⋎";
397 var curlywedge = "⋏";
398 var curren = "¤";
399 var curvearrowleft = "↶";
400 var curvearrowright = "↷";
401 var cuvee = "⋎";
402 var cuwed = "⋏";
403 var cwconint = "∲";
404 var cwint = "∱";
405 var cylcty = "⌭";
406 var dagger = "†";
407 var Dagger = "‡";
408 var daleth = "ℸ";
409 var darr = "↓";
410 var Darr = "↡";
411 var dArr = "⇓";
412 var dash = "‐";
413 var Dashv = "⫤";
414 var dashv = "⊣";
415 var dbkarow = "⤏";
416 var dblac = "˝";
417 var Dcaron = "Ď";
418 var dcaron = "ď";
419 var Dcy = "Д";
420 var dcy = "д";
421 var ddagger = "‡";
422 var ddarr = "⇊";
423 var DD = "ⅅ";
424 var dd = "ⅆ";
425 var DDotrahd = "⤑";
426 var ddotseq = "⩷";
427 var deg = "°";
428 var Del = "∇";
429 var Delta = "Δ";
430 var delta = "δ";
431 var demptyv = "⦱";
432 var dfisht = "⥿";
433 var Dfr = "𝔇";
434 var dfr = "𝔡";
435 var dHar = "⥥";
436 var dharl = "⇃";
437 var dharr = "⇂";
438 var DiacriticalAcute = "´";
439 var DiacriticalDot = "˙";
440 var DiacriticalDoubleAcute = "˝";
441 var DiacriticalGrave = "`";
442 var DiacriticalTilde = "˜";
443 var diam = "⋄";
444 var diamond = "⋄";
445 var Diamond = "⋄";
446 var diamondsuit = "♦";
447 var diams = "♦";
448 var die = "¨";
449 var DifferentialD = "ⅆ";
450 var digamma = "ϝ";
451 var disin = "⋲";
452 var div = "÷";
453 var divide = "÷";
454 var divideontimes = "⋇";
455 var divonx = "⋇";
456 var DJcy = "Ђ";
457 var djcy = "ђ";
458 var dlcorn = "⌞";
459 var dlcrop = "⌍";
460 var dollar = "$";
461 var Dopf = "𝔻";
462 var dopf = "𝕕";
463 var Dot = "¨";
464 var dot = "˙";
465 var DotDot = "⃜";
466 var doteq = "≐";
467 var doteqdot = "≑";
468 var DotEqual = "≐";
469 var dotminus = "∸";
470 var dotplus = "∔";
471 var dotsquare = "⊡";
472 var doublebarwedge = "⌆";
473 var DoubleContourIntegral = "∯";
474 var DoubleDot = "¨";
475 var DoubleDownArrow = "⇓";
476 var DoubleLeftArrow = "⇐";
477 var DoubleLeftRightArrow = "⇔";
478 var DoubleLeftTee = "⫤";
479 var DoubleLongLeftArrow = "⟸";
480 var DoubleLongLeftRightArrow = "⟺";
481 var DoubleLongRightArrow = "⟹";
482 var DoubleRightArrow = "⇒";
483 var DoubleRightTee = "⊨";
484 var DoubleUpArrow = "⇑";
485 var DoubleUpDownArrow = "⇕";
486 var DoubleVerticalBar = "∥";
487 var DownArrowBar = "⤓";
488 var downarrow = "↓";
489 var DownArrow = "↓";
490 var Downarrow = "⇓";
491 var DownArrowUpArrow = "⇵";
492 var DownBreve = "̑";
493 var downdownarrows = "⇊";
494 var downharpoonleft = "⇃";
495 var downharpoonright = "⇂";
496 var DownLeftRightVector = "⥐";
497 var DownLeftTeeVector = "⥞";
498 var DownLeftVectorBar = "⥖";
499 var DownLeftVector = "↽";
500 var DownRightTeeVector = "⥟";
501 var DownRightVectorBar = "⥗";
502 var DownRightVector = "⇁";
503 var DownTeeArrow = "↧";
504 var DownTee = "⊤";
505 var drbkarow = "⤐";
506 var drcorn = "⌟";
507 var drcrop = "⌌";
508 var Dscr = "𝒟";
509 var dscr = "𝒹";
510 var DScy = "Ѕ";
511 var dscy = "ѕ";
512 var dsol = "⧶";
513 var Dstrok = "Đ";
514 var dstrok = "đ";
515 var dtdot = "⋱";
516 var dtri = "▿";
517 var dtrif = "▾";
518 var duarr = "⇵";
519 var duhar = "⥯";
520 var dwangle = "⦦";
521 var DZcy = "Џ";
522 var dzcy = "џ";
523 var dzigrarr = "⟿";
524 var Eacute = "É";
525 var eacute = "é";
526 var easter = "⩮";
527 var Ecaron = "Ě";
528 var ecaron = "ě";
529 var Ecirc = "Ê";
530 var ecirc = "ê";
531 var ecir = "≖";
532 var ecolon = "≕";
533 var Ecy = "Э";
534 var ecy = "э";
535 var eDDot = "⩷";
536 var Edot = "Ė";
537 var edot = "ė";
538 var eDot = "≑";
539 var ee = "ⅇ";
540 var efDot = "≒";
541 var Efr = "𝔈";
542 var efr = "𝔢";
543 var eg = "⪚";
544 var Egrave = "È";
545 var egrave = "è";
546 var egs = "⪖";
547 var egsdot = "⪘";
548 var el = "⪙";
549 var Element = "∈";
550 var elinters = "⏧";
551 var ell = "ℓ";
552 var els = "⪕";
553 var elsdot = "⪗";
554 var Emacr = "Ē";
555 var emacr = "ē";
556 var empty = "∅";
557 var emptyset = "∅";
558 var EmptySmallSquare = "◻";
559 var emptyv = "∅";
560 var EmptyVerySmallSquare = "▫";
561 var emsp13 = " ";
562 var emsp14 = " ";
563 var emsp = " ";
564 var ENG = "Ŋ";
565 var eng = "ŋ";
566 var ensp = " ";
567 var Eogon = "Ę";
568 var eogon = "ę";
569 var Eopf = "𝔼";
570 var eopf = "𝕖";
571 var epar = "⋕";
572 var eparsl = "⧣";
573 var eplus = "⩱";
574 var epsi = "ε";
575 var Epsilon = "Ε";
576 var epsilon = "ε";
577 var epsiv = "ϵ";
578 var eqcirc = "≖";
579 var eqcolon = "≕";
580 var eqsim = "≂";
581 var eqslantgtr = "⪖";
582 var eqslantless = "⪕";
583 var Equal = "⩵";
584 var equals = "=";
585 var EqualTilde = "≂";
586 var equest = "≟";
587 var Equilibrium = "⇌";
588 var equiv = "≡";
589 var equivDD = "⩸";
590 var eqvparsl = "⧥";
591 var erarr = "⥱";
592 var erDot = "≓";
593 var escr = "ℯ";
594 var Escr = "ℰ";
595 var esdot = "≐";
596 var Esim = "⩳";
597 var esim = "≂";
598 var Eta = "Η";
599 var eta = "η";
600 var ETH = "Ð";
601 var eth = "ð";
602 var Euml = "Ë";
603 var euml = "ë";
604 var euro = "€";
605 var excl = "!";
606 var exist = "∃";
607 var Exists = "∃";
608 var expectation = "ℰ";
609 var exponentiale = "ⅇ";
610 var ExponentialE = "ⅇ";
611 var fallingdotseq = "≒";
612 var Fcy = "Ф";
613 var fcy = "ф";
614 var female = "♀";
615 var ffilig = "ffi";
616 var fflig = "ff";
617 var ffllig = "ffl";
618 var Ffr = "𝔉";
619 var ffr = "𝔣";
620 var filig = "fi";
621 var FilledSmallSquare = "◼";
622 var FilledVerySmallSquare = "▪";
623 var fjlig = "fj";
624 var flat = "♭";
625 var fllig = "fl";
626 var fltns = "▱";
627 var fnof = "ƒ";
628 var Fopf = "𝔽";
629 var fopf = "𝕗";
630 var forall = "∀";
631 var ForAll = "∀";
632 var fork = "⋔";
633 var forkv = "⫙";
634 var Fouriertrf = "ℱ";
635 var fpartint = "⨍";
636 var frac12 = "½";
637 var frac13 = "⅓";
638 var frac14 = "¼";
639 var frac15 = "⅕";
640 var frac16 = "⅙";
641 var frac18 = "⅛";
642 var frac23 = "⅔";
643 var frac25 = "⅖";
644 var frac34 = "¾";
645 var frac35 = "⅗";
646 var frac38 = "⅜";
647 var frac45 = "⅘";
648 var frac56 = "⅚";
649 var frac58 = "⅝";
650 var frac78 = "⅞";
651 var frasl = "⁄";
652 var frown = "⌢";
653 var fscr = "𝒻";
654 var Fscr = "ℱ";
655 var gacute = "ǵ";
656 var Gamma = "Γ";
657 var gamma = "γ";
658 var Gammad = "Ϝ";
659 var gammad = "ϝ";
660 var gap = "⪆";
661 var Gbreve = "Ğ";
662 var gbreve = "ğ";
663 var Gcedil = "Ģ";
664 var Gcirc = "Ĝ";
665 var gcirc = "ĝ";
666 var Gcy = "Г";
667 var gcy = "г";
668 var Gdot = "Ġ";
669 var gdot = "ġ";
670 var ge = "≥";
671 var gE = "≧";
672 var gEl = "⪌";
673 var gel = "⋛";
674 var geq = "≥";
675 var geqq = "≧";
676 var geqslant = "⩾";
677 var gescc = "⪩";
678 var ges = "⩾";
679 var gesdot = "⪀";
680 var gesdoto = "⪂";
681 var gesdotol = "⪄";
682 var gesl = "⋛︀";
683 var gesles = "⪔";
684 var Gfr = "𝔊";
685 var gfr = "𝔤";
686 var gg = "≫";
687 var Gg = "⋙";
688 var ggg = "⋙";
689 var gimel = "ℷ";
690 var GJcy = "Ѓ";
691 var gjcy = "ѓ";
692 var gla = "⪥";
693 var gl = "≷";
694 var glE = "⪒";
695 var glj = "⪤";
696 var gnap = "⪊";
697 var gnapprox = "⪊";
698 var gne = "⪈";
699 var gnE = "≩";
700 var gneq = "⪈";
701 var gneqq = "≩";
702 var gnsim = "⋧";
703 var Gopf = "𝔾";
704 var gopf = "𝕘";
705 var grave = "`";
706 var GreaterEqual = "≥";
707 var GreaterEqualLess = "⋛";
708 var GreaterFullEqual = "≧";
709 var GreaterGreater = "⪢";
710 var GreaterLess = "≷";
711 var GreaterSlantEqual = "⩾";
712 var GreaterTilde = "≳";
713 var Gscr = "𝒢";
714 var gscr = "ℊ";
715 var gsim = "≳";
716 var gsime = "⪎";
717 var gsiml = "⪐";
718 var gtcc = "⪧";
719 var gtcir = "⩺";
720 var gt = ">";
721 var GT = ">";
722 var Gt = "≫";
723 var gtdot = "⋗";
724 var gtlPar = "⦕";
725 var gtquest = "⩼";
726 var gtrapprox = "⪆";
727 var gtrarr = "⥸";
728 var gtrdot = "⋗";
729 var gtreqless = "⋛";
730 var gtreqqless = "⪌";
731 var gtrless = "≷";
732 var gtrsim = "≳";
733 var gvertneqq = "≩︀";
734 var gvnE = "≩︀";
735 var Hacek = "ˇ";
736 var hairsp = " ";
737 var half = "½";
738 var hamilt = "ℋ";
739 var HARDcy = "Ъ";
740 var hardcy = "ъ";
741 var harrcir = "⥈";
742 var harr = "↔";
743 var hArr = "⇔";
744 var harrw = "↭";
745 var Hat = "^";
746 var hbar = "ℏ";
747 var Hcirc = "Ĥ";
748 var hcirc = "ĥ";
749 var hearts = "♥";
750 var heartsuit = "♥";
751 var hellip = "…";
752 var hercon = "⊹";
753 var hfr = "𝔥";
754 var Hfr = "ℌ";
755 var HilbertSpace = "ℋ";
756 var hksearow = "⤥";
757 var hkswarow = "⤦";
758 var hoarr = "⇿";
759 var homtht = "∻";
760 var hookleftarrow = "↩";
761 var hookrightarrow = "↪";
762 var hopf = "𝕙";
763 var Hopf = "ℍ";
764 var horbar = "―";
765 var HorizontalLine = "─";
766 var hscr = "𝒽";
767 var Hscr = "ℋ";
768 var hslash = "ℏ";
769 var Hstrok = "Ħ";
770 var hstrok = "ħ";
771 var HumpDownHump = "≎";
772 var HumpEqual = "≏";
773 var hybull = "⁃";
774 var hyphen = "‐";
775 var Iacute = "Í";
776 var iacute = "í";
777 var ic = "⁣";
778 var Icirc = "Î";
779 var icirc = "î";
780 var Icy = "И";
781 var icy = "и";
782 var Idot = "İ";
783 var IEcy = "Е";
784 var iecy = "е";
785 var iexcl = "¡";
786 var iff = "⇔";
787 var ifr = "𝔦";
788 var Ifr = "ℑ";
789 var Igrave = "Ì";
790 var igrave = "ì";
791 var ii = "ⅈ";
792 var iiiint = "⨌";
793 var iiint = "∭";
794 var iinfin = "⧜";
795 var iiota = "℩";
796 var IJlig = "IJ";
797 var ijlig = "ij";
798 var Imacr = "Ī";
799 var imacr = "ī";
800 var image = "ℑ";
801 var ImaginaryI = "ⅈ";
802 var imagline = "ℐ";
803 var imagpart = "ℑ";
804 var imath = "ı";
805 var Im = "ℑ";
806 var imof = "⊷";
807 var imped = "Ƶ";
808 var Implies = "⇒";
809 var incare = "℅";
810 var infin = "∞";
811 var infintie = "⧝";
812 var inodot = "ı";
813 var intcal = "⊺";
814 var int = "∫";
815 var Int = "∬";
816 var integers = "ℤ";
817 var Integral = "∫";
818 var intercal = "⊺";
819 var Intersection = "⋂";
820 var intlarhk = "⨗";
821 var intprod = "⨼";
822 var InvisibleComma = "⁣";
823 var InvisibleTimes = "⁢";
824 var IOcy = "Ё";
825 var iocy = "ё";
826 var Iogon = "Į";
827 var iogon = "į";
828 var Iopf = "𝕀";
829 var iopf = "𝕚";
830 var Iota = "Ι";
831 var iota = "ι";
832 var iprod = "⨼";
833 var iquest = "¿";
834 var iscr = "𝒾";
835 var Iscr = "ℐ";
836 var isin = "∈";
837 var isindot = "⋵";
838 var isinE = "⋹";
839 var isins = "⋴";
840 var isinsv = "⋳";
841 var isinv = "∈";
842 var it = "⁢";
843 var Itilde = "Ĩ";
844 var itilde = "ĩ";
845 var Iukcy = "І";
846 var iukcy = "і";
847 var Iuml = "Ï";
848 var iuml = "ï";
849 var Jcirc = "Ĵ";
850 var jcirc = "ĵ";
851 var Jcy = "Й";
852 var jcy = "й";
853 var Jfr = "𝔍";
854 var jfr = "𝔧";
855 var jmath = "ȷ";
856 var Jopf = "𝕁";
857 var jopf = "𝕛";
858 var Jscr = "𝒥";
859 var jscr = "𝒿";
860 var Jsercy = "Ј";
861 var jsercy = "ј";
862 var Jukcy = "Є";
863 var jukcy = "є";
864 var Kappa = "Κ";
865 var kappa = "κ";
866 var kappav = "ϰ";
867 var Kcedil = "Ķ";
868 var kcedil = "ķ";
869 var Kcy = "К";
870 var kcy = "к";
871 var Kfr = "𝔎";
872 var kfr = "𝔨";
873 var kgreen = "ĸ";
874 var KHcy = "Х";
875 var khcy = "х";
876 var KJcy = "Ќ";
877 var kjcy = "ќ";
878 var Kopf = "𝕂";
879 var kopf = "𝕜";
880 var Kscr = "𝒦";
881 var kscr = "𝓀";
882 var lAarr = "⇚";
883 var Lacute = "Ĺ";
884 var lacute = "ĺ";
885 var laemptyv = "⦴";
886 var lagran = "ℒ";
887 var Lambda = "Λ";
888 var lambda = "λ";
889 var lang = "⟨";
890 var Lang = "⟪";
891 var langd = "⦑";
892 var langle = "⟨";
893 var lap = "⪅";
894 var Laplacetrf = "ℒ";
895 var laquo = "«";
896 var larrb = "⇤";
897 var larrbfs = "⤟";
898 var larr = "←";
899 var Larr = "↞";
900 var lArr = "⇐";
901 var larrfs = "⤝";
902 var larrhk = "↩";
903 var larrlp = "↫";
904 var larrpl = "⤹";
905 var larrsim = "⥳";
906 var larrtl = "↢";
907 var latail = "⤙";
908 var lAtail = "⤛";
909 var lat = "⪫";
910 var late = "⪭";
911 var lates = "⪭︀";
912 var lbarr = "⤌";
913 var lBarr = "⤎";
914 var lbbrk = "❲";
915 var lbrace = "{";
916 var lbrack = "[";
917 var lbrke = "⦋";
918 var lbrksld = "⦏";
919 var lbrkslu = "⦍";
920 var Lcaron = "Ľ";
921 var lcaron = "ľ";
922 var Lcedil = "Ļ";
923 var lcedil = "ļ";
924 var lceil = "⌈";
925 var lcub = "{";
926 var Lcy = "Л";
927 var lcy = "л";
928 var ldca = "⤶";
929 var ldquo = "“";
930 var ldquor = "„";
931 var ldrdhar = "⥧";
932 var ldrushar = "⥋";
933 var ldsh = "↲";
934 var le = "≤";
935 var lE = "≦";
936 var LeftAngleBracket = "⟨";
937 var LeftArrowBar = "⇤";
938 var leftarrow = "←";
939 var LeftArrow = "←";
940 var Leftarrow = "⇐";
941 var LeftArrowRightArrow = "⇆";
942 var leftarrowtail = "↢";
943 var LeftCeiling = "⌈";
944 var LeftDoubleBracket = "⟦";
945 var LeftDownTeeVector = "⥡";
946 var LeftDownVectorBar = "⥙";
947 var LeftDownVector = "⇃";
948 var LeftFloor = "⌊";
949 var leftharpoondown = "↽";
950 var leftharpoonup = "↼";
951 var leftleftarrows = "⇇";
952 var leftrightarrow = "↔";
953 var LeftRightArrow = "↔";
954 var Leftrightarrow = "⇔";
955 var leftrightarrows = "⇆";
956 var leftrightharpoons = "⇋";
957 var leftrightsquigarrow = "↭";
958 var LeftRightVector = "⥎";
959 var LeftTeeArrow = "↤";
960 var LeftTee = "⊣";
961 var LeftTeeVector = "⥚";
962 var leftthreetimes = "⋋";
963 var LeftTriangleBar = "⧏";
964 var LeftTriangle = "⊲";
965 var LeftTriangleEqual = "⊴";
966 var LeftUpDownVector = "⥑";
967 var LeftUpTeeVector = "⥠";
968 var LeftUpVectorBar = "⥘";
969 var LeftUpVector = "↿";
970 var LeftVectorBar = "⥒";
971 var LeftVector = "↼";
972 var lEg = "⪋";
973 var leg = "⋚";
974 var leq = "≤";
975 var leqq = "≦";
976 var leqslant = "⩽";
977 var lescc = "⪨";
978 var les = "⩽";
979 var lesdot = "⩿";
980 var lesdoto = "⪁";
981 var lesdotor = "⪃";
982 var lesg = "⋚︀";
983 var lesges = "⪓";
984 var lessapprox = "⪅";
985 var lessdot = "⋖";
986 var lesseqgtr = "⋚";
987 var lesseqqgtr = "⪋";
988 var LessEqualGreater = "⋚";
989 var LessFullEqual = "≦";
990 var LessGreater = "≶";
991 var lessgtr = "≶";
992 var LessLess = "⪡";
993 var lesssim = "≲";
994 var LessSlantEqual = "⩽";
995 var LessTilde = "≲";
996 var lfisht = "⥼";
997 var lfloor = "⌊";
998 var Lfr = "𝔏";
999 var lfr = "𝔩";
1000 var lg = "≶";
1001 var lgE = "⪑";
1002 var lHar = "⥢";
1003 var lhard = "↽";
1004 var lharu = "↼";
1005 var lharul = "⥪";
1006 var lhblk = "▄";
1007 var LJcy = "Љ";
1008 var ljcy = "љ";
1009 var llarr = "⇇";
1010 var ll = "≪";
1011 var Ll = "⋘";
1012 var llcorner = "⌞";
1013 var Lleftarrow = "⇚";
1014 var llhard = "⥫";
1015 var lltri = "◺";
1016 var Lmidot = "Ŀ";
1017 var lmidot = "ŀ";
1018 var lmoustache = "⎰";
1019 var lmoust = "⎰";
1020 var lnap = "⪉";
1021 var lnapprox = "⪉";
1022 var lne = "⪇";
1023 var lnE = "≨";
1024 var lneq = "⪇";
1025 var lneqq = "≨";
1026 var lnsim = "⋦";
1027 var loang = "⟬";
1028 var loarr = "⇽";
1029 var lobrk = "⟦";
1030 var longleftarrow = "⟵";
1031 var LongLeftArrow = "⟵";
1032 var Longleftarrow = "⟸";
1033 var longleftrightarrow = "⟷";
1034 var LongLeftRightArrow = "⟷";
1035 var Longleftrightarrow = "⟺";
1036 var longmapsto = "⟼";
1037 var longrightarrow = "⟶";
1038 var LongRightArrow = "⟶";
1039 var Longrightarrow = "⟹";
1040 var looparrowleft = "↫";
1041 var looparrowright = "↬";
1042 var lopar = "⦅";
1043 var Lopf = "𝕃";
1044 var lopf = "𝕝";
1045 var loplus = "⨭";
1046 var lotimes = "⨴";
1047 var lowast = "∗";
1048 var lowbar = "_";
1049 var LowerLeftArrow = "↙";
1050 var LowerRightArrow = "↘";
1051 var loz = "◊";
1052 var lozenge = "◊";
1053 var lozf = "⧫";
1054 var lpar = "(";
1055 var lparlt = "⦓";
1056 var lrarr = "⇆";
1057 var lrcorner = "⌟";
1058 var lrhar = "⇋";
1059 var lrhard = "⥭";
1060 var lrm = "‎";
1061 var lrtri = "⊿";
1062 var lsaquo = "‹";
1063 var lscr = "𝓁";
1064 var Lscr = "ℒ";
1065 var lsh = "↰";
1066 var Lsh = "↰";
1067 var lsim = "≲";
1068 var lsime = "⪍";
1069 var lsimg = "⪏";
1070 var lsqb = "[";
1071 var lsquo = "‘";
1072 var lsquor = "‚";
1073 var Lstrok = "Ł";
1074 var lstrok = "ł";
1075 var ltcc = "⪦";
1076 var ltcir = "⩹";
1077 var lt = "<";
1078 var LT = "<";
1079 var Lt = "≪";
1080 var ltdot = "⋖";
1081 var lthree = "⋋";
1082 var ltimes = "⋉";
1083 var ltlarr = "⥶";
1084 var ltquest = "⩻";
1085 var ltri = "◃";
1086 var ltrie = "⊴";
1087 var ltrif = "◂";
1088 var ltrPar = "⦖";
1089 var lurdshar = "⥊";
1090 var luruhar = "⥦";
1091 var lvertneqq = "≨︀";
1092 var lvnE = "≨︀";
1093 var macr = "¯";
1094 var male = "♂";
1095 var malt = "✠";
1096 var maltese = "✠";
1097 var map = "↦";
1098 var mapsto = "↦";
1099 var mapstodown = "↧";
1100 var mapstoleft = "↤";
1101 var mapstoup = "↥";
1102 var marker = "▮";
1103 var mcomma = "⨩";
1104 var Mcy = "М";
1105 var mcy = "м";
1106 var mdash = "—";
1107 var mDDot = "∺";
1108 var measuredangle = "∡";
1109 var MediumSpace = " ";
1110 var Mellintrf = "ℳ";
1111 var Mfr = "𝔐";
1112 var mfr = "𝔪";
1113 var mho = "℧";
1114 var micro = "µ";
1115 var midast = "*";
1116 var midcir = "⫰";
1117 var mid = "∣";
1118 var middot = "·";
1119 var minusb = "⊟";
1120 var minus = "−";
1121 var minusd = "∸";
1122 var minusdu = "⨪";
1123 var MinusPlus = "∓";
1124 var mlcp = "⫛";
1125 var mldr = "…";
1126 var mnplus = "∓";
1127 var models = "⊧";
1128 var Mopf = "𝕄";
1129 var mopf = "𝕞";
1130 var mp = "∓";
1131 var mscr = "𝓂";
1132 var Mscr = "ℳ";
1133 var mstpos = "∾";
1134 var Mu = "Μ";
1135 var mu = "μ";
1136 var multimap = "⊸";
1137 var mumap = "⊸";
1138 var nabla = "∇";
1139 var Nacute = "Ń";
1140 var nacute = "ń";
1141 var nang = "∠⃒";
1142 var nap = "≉";
1143 var napE = "⩰̸";
1144 var napid = "≋̸";
1145 var napos = "ʼn";
1146 var napprox = "≉";
1147 var natural = "♮";
1148 var naturals = "ℕ";
1149 var natur = "♮";
1150 var nbsp = " ";
1151 var nbump = "≎̸";
1152 var nbumpe = "≏̸";
1153 var ncap = "⩃";
1154 var Ncaron = "Ň";
1155 var ncaron = "ň";
1156 var Ncedil = "Ņ";
1157 var ncedil = "ņ";
1158 var ncong = "≇";
1159 var ncongdot = "⩭̸";
1160 var ncup = "⩂";
1161 var Ncy = "Н";
1162 var ncy = "н";
1163 var ndash = "–";
1164 var nearhk = "⤤";
1165 var nearr = "↗";
1166 var neArr = "⇗";
1167 var nearrow = "↗";
1168 var ne = "≠";
1169 var nedot = "≐̸";
1170 var NegativeMediumSpace = "​";
1171 var NegativeThickSpace = "​";
1172 var NegativeThinSpace = "​";
1173 var NegativeVeryThinSpace = "​";
1174 var nequiv = "≢";
1175 var nesear = "⤨";
1176 var nesim = "≂̸";
1177 var NestedGreaterGreater = "≫";
1178 var NestedLessLess = "≪";
1179 var NewLine = "\n";
1180 var nexist = "∄";
1181 var nexists = "∄";
1182 var Nfr = "𝔑";
1183 var nfr = "𝔫";
1184 var ngE = "≧̸";
1185 var nge = "≱";
1186 var ngeq = "≱";
1187 var ngeqq = "≧̸";
1188 var ngeqslant = "⩾̸";
1189 var nges = "⩾̸";
1190 var nGg = "⋙̸";
1191 var ngsim = "≵";
1192 var nGt = "≫⃒";
1193 var ngt = "≯";
1194 var ngtr = "≯";
1195 var nGtv = "≫̸";
1196 var nharr = "↮";
1197 var nhArr = "⇎";
1198 var nhpar = "⫲";
1199 var ni = "∋";
1200 var nis = "⋼";
1201 var nisd = "⋺";
1202 var niv = "∋";
1203 var NJcy = "Њ";
1204 var njcy = "њ";
1205 var nlarr = "↚";
1206 var nlArr = "⇍";
1207 var nldr = "‥";
1208 var nlE = "≦̸";
1209 var nle = "≰";
1210 var nleftarrow = "↚";
1211 var nLeftarrow = "⇍";
1212 var nleftrightarrow = "↮";
1213 var nLeftrightarrow = "⇎";
1214 var nleq = "≰";
1215 var nleqq = "≦̸";
1216 var nleqslant = "⩽̸";
1217 var nles = "⩽̸";
1218 var nless = "≮";
1219 var nLl = "⋘̸";
1220 var nlsim = "≴";
1221 var nLt = "≪⃒";
1222 var nlt = "≮";
1223 var nltri = "⋪";
1224 var nltrie = "⋬";
1225 var nLtv = "≪̸";
1226 var nmid = "∤";
1227 var NoBreak = "⁠";
1228 var NonBreakingSpace = " ";
1229 var nopf = "𝕟";
1230 var Nopf = "ℕ";
1231 var Not = "⫬";
1232 var not = "¬";
1233 var NotCongruent = "≢";
1234 var NotCupCap = "≭";
1235 var NotDoubleVerticalBar = "∦";
1236 var NotElement = "∉";
1237 var NotEqual = "≠";
1238 var NotEqualTilde = "≂̸";
1239 var NotExists = "∄";
1240 var NotGreater = "≯";
1241 var NotGreaterEqual = "≱";
1242 var NotGreaterFullEqual = "≧̸";
1243 var NotGreaterGreater = "≫̸";
1244 var NotGreaterLess = "≹";
1245 var NotGreaterSlantEqual = "⩾̸";
1246 var NotGreaterTilde = "≵";
1247 var NotHumpDownHump = "≎̸";
1248 var NotHumpEqual = "≏̸";
1249 var notin = "∉";
1250 var notindot = "⋵̸";
1251 var notinE = "⋹̸";
1252 var notinva = "∉";
1253 var notinvb = "⋷";
1254 var notinvc = "⋶";
1255 var NotLeftTriangleBar = "⧏̸";
1256 var NotLeftTriangle = "⋪";
1257 var NotLeftTriangleEqual = "⋬";
1258 var NotLess = "≮";
1259 var NotLessEqual = "≰";
1260 var NotLessGreater = "≸";
1261 var NotLessLess = "≪̸";
1262 var NotLessSlantEqual = "⩽̸";
1263 var NotLessTilde = "≴";
1264 var NotNestedGreaterGreater = "⪢̸";
1265 var NotNestedLessLess = "⪡̸";
1266 var notni = "∌";
1267 var notniva = "∌";
1268 var notnivb = "⋾";
1269 var notnivc = "⋽";
1270 var NotPrecedes = "⊀";
1271 var NotPrecedesEqual = "⪯̸";
1272 var NotPrecedesSlantEqual = "⋠";
1273 var NotReverseElement = "∌";
1274 var NotRightTriangleBar = "⧐̸";
1275 var NotRightTriangle = "⋫";
1276 var NotRightTriangleEqual = "⋭";
1277 var NotSquareSubset = "⊏̸";
1278 var NotSquareSubsetEqual = "⋢";
1279 var NotSquareSuperset = "⊐̸";
1280 var NotSquareSupersetEqual = "⋣";
1281 var NotSubset = "⊂⃒";
1282 var NotSubsetEqual = "⊈";
1283 var NotSucceeds = "⊁";
1284 var NotSucceedsEqual = "⪰̸";
1285 var NotSucceedsSlantEqual = "⋡";
1286 var NotSucceedsTilde = "≿̸";
1287 var NotSuperset = "⊃⃒";
1288 var NotSupersetEqual = "⊉";
1289 var NotTilde = "≁";
1290 var NotTildeEqual = "≄";
1291 var NotTildeFullEqual = "≇";
1292 var NotTildeTilde = "≉";
1293 var NotVerticalBar = "∤";
1294 var nparallel = "∦";
1295 var npar = "∦";
1296 var nparsl = "⫽⃥";
1297 var npart = "∂̸";
1298 var npolint = "⨔";
1299 var npr = "⊀";
1300 var nprcue = "⋠";
1301 var nprec = "⊀";
1302 var npreceq = "⪯̸";
1303 var npre = "⪯̸";
1304 var nrarrc = "⤳̸";
1305 var nrarr = "↛";
1306 var nrArr = "⇏";
1307 var nrarrw = "↝̸";
1308 var nrightarrow = "↛";
1309 var nRightarrow = "⇏";
1310 var nrtri = "⋫";
1311 var nrtrie = "⋭";
1312 var nsc = "⊁";
1313 var nsccue = "⋡";
1314 var nsce = "⪰̸";
1315 var Nscr = "𝒩";
1316 var nscr = "𝓃";
1317 var nshortmid = "∤";
1318 var nshortparallel = "∦";
1319 var nsim = "≁";
1320 var nsime = "≄";
1321 var nsimeq = "≄";
1322 var nsmid = "∤";
1323 var nspar = "∦";
1324 var nsqsube = "⋢";
1325 var nsqsupe = "⋣";
1326 var nsub = "⊄";
1327 var nsubE = "⫅̸";
1328 var nsube = "⊈";
1329 var nsubset = "⊂⃒";
1330 var nsubseteq = "⊈";
1331 var nsubseteqq = "⫅̸";
1332 var nsucc = "⊁";
1333 var nsucceq = "⪰̸";
1334 var nsup = "⊅";
1335 var nsupE = "⫆̸";
1336 var nsupe = "⊉";
1337 var nsupset = "⊃⃒";
1338 var nsupseteq = "⊉";
1339 var nsupseteqq = "⫆̸";
1340 var ntgl = "≹";
1341 var Ntilde = "Ñ";
1342 var ntilde = "ñ";
1343 var ntlg = "≸";
1344 var ntriangleleft = "⋪";
1345 var ntrianglelefteq = "⋬";
1346 var ntriangleright = "⋫";
1347 var ntrianglerighteq = "⋭";
1348 var Nu = "Ν";
1349 var nu = "ν";
1350 var num = "#";
1351 var numero = "№";
1352 var numsp = " ";
1353 var nvap = "≍⃒";
1354 var nvdash = "⊬";
1355 var nvDash = "⊭";
1356 var nVdash = "⊮";
1357 var nVDash = "⊯";
1358 var nvge = "≥⃒";
1359 var nvgt = ">⃒";
1360 var nvHarr = "⤄";
1361 var nvinfin = "⧞";
1362 var nvlArr = "⤂";
1363 var nvle = "≤⃒";
1364 var nvlt = "<⃒";
1365 var nvltrie = "⊴⃒";
1366 var nvrArr = "⤃";
1367 var nvrtrie = "⊵⃒";
1368 var nvsim = "∼⃒";
1369 var nwarhk = "⤣";
1370 var nwarr = "↖";
1371 var nwArr = "⇖";
1372 var nwarrow = "↖";
1373 var nwnear = "⤧";
1374 var Oacute = "Ó";
1375 var oacute = "ó";
1376 var oast = "⊛";
1377 var Ocirc = "Ô";
1378 var ocirc = "ô";
1379 var ocir = "⊚";
1380 var Ocy = "О";
1381 var ocy = "о";
1382 var odash = "⊝";
1383 var Odblac = "Ő";
1384 var odblac = "ő";
1385 var odiv = "⨸";
1386 var odot = "⊙";
1387 var odsold = "⦼";
1388 var OElig = "Œ";
1389 var oelig = "œ";
1390 var ofcir = "⦿";
1391 var Ofr = "𝔒";
1392 var ofr = "𝔬";
1393 var ogon = "˛";
1394 var Ograve = "Ò";
1395 var ograve = "ò";
1396 var ogt = "⧁";
1397 var ohbar = "⦵";
1398 var ohm = "Ω";
1399 var oint = "∮";
1400 var olarr = "↺";
1401 var olcir = "⦾";
1402 var olcross = "⦻";
1403 var oline = "‾";
1404 var olt = "⧀";
1405 var Omacr = "Ō";
1406 var omacr = "ō";
1407 var Omega = "Ω";
1408 var omega = "ω";
1409 var Omicron = "Ο";
1410 var omicron = "ο";
1411 var omid = "⦶";
1412 var ominus = "⊖";
1413 var Oopf = "𝕆";
1414 var oopf = "𝕠";
1415 var opar = "⦷";
1416 var OpenCurlyDoubleQuote = "“";
1417 var OpenCurlyQuote = "‘";
1418 var operp = "⦹";
1419 var oplus = "⊕";
1420 var orarr = "↻";
1421 var Or = "⩔";
1422 var or = "∨";
1423 var ord = "⩝";
1424 var order = "ℴ";
1425 var orderof = "ℴ";
1426 var ordf = "ª";
1427 var ordm = "º";
1428 var origof = "⊶";
1429 var oror = "⩖";
1430 var orslope = "⩗";
1431 var orv = "⩛";
1432 var oS = "Ⓢ";
1433 var Oscr = "𝒪";
1434 var oscr = "ℴ";
1435 var Oslash = "Ø";
1436 var oslash = "ø";
1437 var osol = "⊘";
1438 var Otilde = "Õ";
1439 var otilde = "õ";
1440 var otimesas = "⨶";
1441 var Otimes = "⨷";
1442 var otimes = "⊗";
1443 var Ouml = "Ö";
1444 var ouml = "ö";
1445 var ovbar = "⌽";
1446 var OverBar = "‾";
1447 var OverBrace = "⏞";
1448 var OverBracket = "⎴";
1449 var OverParenthesis = "⏜";
1450 var para = "¶";
1451 var parallel = "∥";
1452 var par = "∥";
1453 var parsim = "⫳";
1454 var parsl = "⫽";
1455 var part = "∂";
1456 var PartialD = "∂";
1457 var Pcy = "П";
1458 var pcy = "п";
1459 var percnt = "%";
1460 var period = ".";
1461 var permil = "‰";
1462 var perp = "⊥";
1463 var pertenk = "‱";
1464 var Pfr = "𝔓";
1465 var pfr = "𝔭";
1466 var Phi = "Φ";
1467 var phi = "φ";
1468 var phiv = "ϕ";
1469 var phmmat = "ℳ";
1470 var phone = "☎";
1471 var Pi = "Π";
1472 var pi = "π";
1473 var pitchfork = "⋔";
1474 var piv = "ϖ";
1475 var planck = "ℏ";
1476 var planckh = "ℎ";
1477 var plankv = "ℏ";
1478 var plusacir = "⨣";
1479 var plusb = "⊞";
1480 var pluscir = "⨢";
1481 var plus = "+";
1482 var plusdo = "∔";
1483 var plusdu = "⨥";
1484 var pluse = "⩲";
1485 var PlusMinus = "±";
1486 var plusmn = "±";
1487 var plussim = "⨦";
1488 var plustwo = "⨧";
1489 var pm = "±";
1490 var Poincareplane = "ℌ";
1491 var pointint = "⨕";
1492 var popf = "𝕡";
1493 var Popf = "ℙ";
1494 var pound = "£";
1495 var prap = "⪷";
1496 var Pr = "⪻";
1497 var pr = "≺";
1498 var prcue = "≼";
1499 var precapprox = "⪷";
1500 var prec = "≺";
1501 var preccurlyeq = "≼";
1502 var Precedes = "≺";
1503 var PrecedesEqual = "⪯";
1504 var PrecedesSlantEqual = "≼";
1505 var PrecedesTilde = "≾";
1506 var preceq = "⪯";
1507 var precnapprox = "⪹";
1508 var precneqq = "⪵";
1509 var precnsim = "⋨";
1510 var pre = "⪯";
1511 var prE = "⪳";
1512 var precsim = "≾";
1513 var prime = "′";
1514 var Prime = "″";
1515 var primes = "ℙ";
1516 var prnap = "⪹";
1517 var prnE = "⪵";
1518 var prnsim = "⋨";
1519 var prod = "∏";
1520 var Product = "∏";
1521 var profalar = "⌮";
1522 var profline = "⌒";
1523 var profsurf = "⌓";
1524 var prop = "∝";
1525 var Proportional = "∝";
1526 var Proportion = "∷";
1527 var propto = "∝";
1528 var prsim = "≾";
1529 var prurel = "⊰";
1530 var Pscr = "𝒫";
1531 var pscr = "𝓅";
1532 var Psi = "Ψ";
1533 var psi = "ψ";
1534 var puncsp = " ";
1535 var Qfr = "𝔔";
1536 var qfr = "𝔮";
1537 var qint = "⨌";
1538 var qopf = "𝕢";
1539 var Qopf = "ℚ";
1540 var qprime = "⁗";
1541 var Qscr = "𝒬";
1542 var qscr = "𝓆";
1543 var quaternions = "ℍ";
1544 var quatint = "⨖";
1545 var quest = "?";
1546 var questeq = "≟";
1547 var quot = "\"";
1548 var QUOT = "\"";
1549 var rAarr = "⇛";
1550 var race = "∽̱";
1551 var Racute = "Ŕ";
1552 var racute = "ŕ";
1553 var radic = "√";
1554 var raemptyv = "⦳";
1555 var rang = "⟩";
1556 var Rang = "⟫";
1557 var rangd = "⦒";
1558 var range = "⦥";
1559 var rangle = "⟩";
1560 var raquo = "»";
1561 var rarrap = "⥵";
1562 var rarrb = "⇥";
1563 var rarrbfs = "⤠";
1564 var rarrc = "⤳";
1565 var rarr = "→";
1566 var Rarr = "↠";
1567 var rArr = "⇒";
1568 var rarrfs = "⤞";
1569 var rarrhk = "↪";
1570 var rarrlp = "↬";
1571 var rarrpl = "⥅";
1572 var rarrsim = "⥴";
1573 var Rarrtl = "⤖";
1574 var rarrtl = "↣";
1575 var rarrw = "↝";
1576 var ratail = "⤚";
1577 var rAtail = "⤜";
1578 var ratio = "∶";
1579 var rationals = "ℚ";
1580 var rbarr = "⤍";
1581 var rBarr = "⤏";
1582 var RBarr = "⤐";
1583 var rbbrk = "❳";
1584 var rbrace = "}";
1585 var rbrack = "]";
1586 var rbrke = "⦌";
1587 var rbrksld = "⦎";
1588 var rbrkslu = "⦐";
1589 var Rcaron = "Ř";
1590 var rcaron = "ř";
1591 var Rcedil = "Ŗ";
1592 var rcedil = "ŗ";
1593 var rceil = "⌉";
1594 var rcub = "}";
1595 var Rcy = "Р";
1596 var rcy = "р";
1597 var rdca = "⤷";
1598 var rdldhar = "⥩";
1599 var rdquo = "”";
1600 var rdquor = "”";
1601 var rdsh = "↳";
1602 var real = "ℜ";
1603 var realine = "ℛ";
1604 var realpart = "ℜ";
1605 var reals = "ℝ";
1606 var Re = "ℜ";
1607 var rect = "▭";
1608 var reg = "®";
1609 var REG = "®";
1610 var ReverseElement = "∋";
1611 var ReverseEquilibrium = "⇋";
1612 var ReverseUpEquilibrium = "⥯";
1613 var rfisht = "⥽";
1614 var rfloor = "⌋";
1615 var rfr = "𝔯";
1616 var Rfr = "ℜ";
1617 var rHar = "⥤";
1618 var rhard = "⇁";
1619 var rharu = "⇀";
1620 var rharul = "⥬";
1621 var Rho = "Ρ";
1622 var rho = "ρ";
1623 var rhov = "ϱ";
1624 var RightAngleBracket = "⟩";
1625 var RightArrowBar = "⇥";
1626 var rightarrow = "→";
1627 var RightArrow = "→";
1628 var Rightarrow = "⇒";
1629 var RightArrowLeftArrow = "⇄";
1630 var rightarrowtail = "↣";
1631 var RightCeiling = "⌉";
1632 var RightDoubleBracket = "⟧";
1633 var RightDownTeeVector = "⥝";
1634 var RightDownVectorBar = "⥕";
1635 var RightDownVector = "⇂";
1636 var RightFloor = "⌋";
1637 var rightharpoondown = "⇁";
1638 var rightharpoonup = "⇀";
1639 var rightleftarrows = "⇄";
1640 var rightleftharpoons = "⇌";
1641 var rightrightarrows = "⇉";
1642 var rightsquigarrow = "↝";
1643 var RightTeeArrow = "↦";
1644 var RightTee = "⊢";
1645 var RightTeeVector = "⥛";
1646 var rightthreetimes = "⋌";
1647 var RightTriangleBar = "⧐";
1648 var RightTriangle = "⊳";
1649 var RightTriangleEqual = "⊵";
1650 var RightUpDownVector = "⥏";
1651 var RightUpTeeVector = "⥜";
1652 var RightUpVectorBar = "⥔";
1653 var RightUpVector = "↾";
1654 var RightVectorBar = "⥓";
1655 var RightVector = "⇀";
1656 var ring = "˚";
1657 var risingdotseq = "≓";
1658 var rlarr = "⇄";
1659 var rlhar = "⇌";
1660 var rlm = "‏";
1661 var rmoustache = "⎱";
1662 var rmoust = "⎱";
1663 var rnmid = "⫮";
1664 var roang = "⟭";
1665 var roarr = "⇾";
1666 var robrk = "⟧";
1667 var ropar = "⦆";
1668 var ropf = "𝕣";
1669 var Ropf = "ℝ";
1670 var roplus = "⨮";
1671 var rotimes = "⨵";
1672 var RoundImplies = "⥰";
1673 var rpar = ")";
1674 var rpargt = "⦔";
1675 var rppolint = "⨒";
1676 var rrarr = "⇉";
1677 var Rrightarrow = "⇛";
1678 var rsaquo = "›";
1679 var rscr = "𝓇";
1680 var Rscr = "ℛ";
1681 var rsh = "↱";
1682 var Rsh = "↱";
1683 var rsqb = "]";
1684 var rsquo = "’";
1685 var rsquor = "’";
1686 var rthree = "⋌";
1687 var rtimes = "⋊";
1688 var rtri = "▹";
1689 var rtrie = "⊵";
1690 var rtrif = "▸";
1691 var rtriltri = "⧎";
1692 var RuleDelayed = "⧴";
1693 var ruluhar = "⥨";
1694 var rx = "℞";
1695 var Sacute = "Ś";
1696 var sacute = "ś";
1697 var sbquo = "‚";
1698 var scap = "⪸";
1699 var Scaron = "Š";
1700 var scaron = "š";
1701 var Sc = "⪼";
1702 var sc = "≻";
1703 var sccue = "≽";
1704 var sce = "⪰";
1705 var scE = "⪴";
1706 var Scedil = "Ş";
1707 var scedil = "ş";
1708 var Scirc = "Ŝ";
1709 var scirc = "ŝ";
1710 var scnap = "⪺";
1711 var scnE = "⪶";
1712 var scnsim = "⋩";
1713 var scpolint = "⨓";
1714 var scsim = "≿";
1715 var Scy = "С";
1716 var scy = "с";
1717 var sdotb = "⊡";
1718 var sdot = "⋅";
1719 var sdote = "⩦";
1720 var searhk = "⤥";
1721 var searr = "↘";
1722 var seArr = "⇘";
1723 var searrow = "↘";
1724 var sect = "§";
1725 var semi = ";";
1726 var seswar = "⤩";
1727 var setminus = "∖";
1728 var setmn = "∖";
1729 var sext = "✶";
1730 var Sfr = "𝔖";
1731 var sfr = "𝔰";
1732 var sfrown = "⌢";
1733 var sharp = "♯";
1734 var SHCHcy = "Щ";
1735 var shchcy = "щ";
1736 var SHcy = "Ш";
1737 var shcy = "ш";
1738 var ShortDownArrow = "↓";
1739 var ShortLeftArrow = "←";
1740 var shortmid = "∣";
1741 var shortparallel = "∥";
1742 var ShortRightArrow = "→";
1743 var ShortUpArrow = "↑";
1744 var shy = "­";
1745 var Sigma = "Σ";
1746 var sigma = "σ";
1747 var sigmaf = "ς";
1748 var sigmav = "ς";
1749 var sim = "∼";
1750 var simdot = "⩪";
1751 var sime = "≃";
1752 var simeq = "≃";
1753 var simg = "⪞";
1754 var simgE = "⪠";
1755 var siml = "⪝";
1756 var simlE = "⪟";
1757 var simne = "≆";
1758 var simplus = "⨤";
1759 var simrarr = "⥲";
1760 var slarr = "←";
1761 var SmallCircle = "∘";
1762 var smallsetminus = "∖";
1763 var smashp = "⨳";
1764 var smeparsl = "⧤";
1765 var smid = "∣";
1766 var smile = "⌣";
1767 var smt = "⪪";
1768 var smte = "⪬";
1769 var smtes = "⪬︀";
1770 var SOFTcy = "Ь";
1771 var softcy = "ь";
1772 var solbar = "⌿";
1773 var solb = "⧄";
1774 var sol = "/";
1775 var Sopf = "𝕊";
1776 var sopf = "𝕤";
1777 var spades = "♠";
1778 var spadesuit = "♠";
1779 var spar = "∥";
1780 var sqcap = "⊓";
1781 var sqcaps = "⊓︀";
1782 var sqcup = "⊔";
1783 var sqcups = "⊔︀";
1784 var Sqrt = "√";
1785 var sqsub = "⊏";
1786 var sqsube = "⊑";
1787 var sqsubset = "⊏";
1788 var sqsubseteq = "⊑";
1789 var sqsup = "⊐";
1790 var sqsupe = "⊒";
1791 var sqsupset = "⊐";
1792 var sqsupseteq = "⊒";
1793 var square = "□";
1794 var Square = "□";
1795 var SquareIntersection = "⊓";
1796 var SquareSubset = "⊏";
1797 var SquareSubsetEqual = "⊑";
1798 var SquareSuperset = "⊐";
1799 var SquareSupersetEqual = "⊒";
1800 var SquareUnion = "⊔";
1801 var squarf = "▪";
1802 var squ = "□";
1803 var squf = "▪";
1804 var srarr = "→";
1805 var Sscr = "𝒮";
1806 var sscr = "𝓈";
1807 var ssetmn = "∖";
1808 var ssmile = "⌣";
1809 var sstarf = "⋆";
1810 var Star = "⋆";
1811 var star = "☆";
1812 var starf = "★";
1813 var straightepsilon = "ϵ";
1814 var straightphi = "ϕ";
1815 var strns = "¯";
1816 var sub = "⊂";
1817 var Sub = "⋐";
1818 var subdot = "⪽";
1819 var subE = "⫅";
1820 var sube = "⊆";
1821 var subedot = "⫃";
1822 var submult = "⫁";
1823 var subnE = "⫋";
1824 var subne = "⊊";
1825 var subplus = "⪿";
1826 var subrarr = "⥹";
1827 var subset = "⊂";
1828 var Subset = "⋐";
1829 var subseteq = "⊆";
1830 var subseteqq = "⫅";
1831 var SubsetEqual = "⊆";
1832 var subsetneq = "⊊";
1833 var subsetneqq = "⫋";
1834 var subsim = "⫇";
1835 var subsub = "⫕";
1836 var subsup = "⫓";
1837 var succapprox = "⪸";
1838 var succ = "≻";
1839 var succcurlyeq = "≽";
1840 var Succeeds = "≻";
1841 var SucceedsEqual = "⪰";
1842 var SucceedsSlantEqual = "≽";
1843 var SucceedsTilde = "≿";
1844 var succeq = "⪰";
1845 var succnapprox = "⪺";
1846 var succneqq = "⪶";
1847 var succnsim = "⋩";
1848 var succsim = "≿";
1849 var SuchThat = "∋";
1850 var sum = "∑";
1851 var Sum = "∑";
1852 var sung = "♪";
1853 var sup1 = "¹";
1854 var sup2 = "²";
1855 var sup3 = "³";
1856 var sup = "⊃";
1857 var Sup = "⋑";
1858 var supdot = "⪾";
1859 var supdsub = "⫘";
1860 var supE = "⫆";
1861 var supe = "⊇";
1862 var supedot = "⫄";
1863 var Superset = "⊃";
1864 var SupersetEqual = "⊇";
1865 var suphsol = "⟉";
1866 var suphsub = "⫗";
1867 var suplarr = "⥻";
1868 var supmult = "⫂";
1869 var supnE = "⫌";
1870 var supne = "⊋";
1871 var supplus = "⫀";
1872 var supset = "⊃";
1873 var Supset = "⋑";
1874 var supseteq = "⊇";
1875 var supseteqq = "⫆";
1876 var supsetneq = "⊋";
1877 var supsetneqq = "⫌";
1878 var supsim = "⫈";
1879 var supsub = "⫔";
1880 var supsup = "⫖";
1881 var swarhk = "⤦";
1882 var swarr = "↙";
1883 var swArr = "⇙";
1884 var swarrow = "↙";
1885 var swnwar = "⤪";
1886 var szlig = "ß";
1887 var Tab = "\t";
1888 var target = "⌖";
1889 var Tau = "Τ";
1890 var tau = "τ";
1891 var tbrk = "⎴";
1892 var Tcaron = "Ť";
1893 var tcaron = "ť";
1894 var Tcedil = "Ţ";
1895 var tcedil = "ţ";
1896 var Tcy = "Т";
1897 var tcy = "т";
1898 var tdot = "⃛";
1899 var telrec = "⌕";
1900 var Tfr = "𝔗";
1901 var tfr = "𝔱";
1902 var there4 = "∴";
1903 var therefore = "∴";
1904 var Therefore = "∴";
1905 var Theta = "Θ";
1906 var theta = "θ";
1907 var thetasym = "ϑ";
1908 var thetav = "ϑ";
1909 var thickapprox = "≈";
1910 var thicksim = "∼";
1911 var ThickSpace = "  ";
1912 var ThinSpace = " ";
1913 var thinsp = " ";
1914 var thkap = "≈";
1915 var thksim = "∼";
1916 var THORN = "Þ";
1917 var thorn = "þ";
1918 var tilde = "˜";
1919 var Tilde = "∼";
1920 var TildeEqual = "≃";
1921 var TildeFullEqual = "≅";
1922 var TildeTilde = "≈";
1923 var timesbar = "⨱";
1924 var timesb = "⊠";
1925 var times = "×";
1926 var timesd = "⨰";
1927 var tint = "∭";
1928 var toea = "⤨";
1929 var topbot = "⌶";
1930 var topcir = "⫱";
1931 var top = "⊤";
1932 var Topf = "𝕋";
1933 var topf = "𝕥";
1934 var topfork = "⫚";
1935 var tosa = "⤩";
1936 var tprime = "‴";
1937 var trade = "™";
1938 var TRADE = "™";
1939 var triangle = "▵";
1940 var triangledown = "▿";
1941 var triangleleft = "◃";
1942 var trianglelefteq = "⊴";
1943 var triangleq = "≜";
1944 var triangleright = "▹";
1945 var trianglerighteq = "⊵";
1946 var tridot = "◬";
1947 var trie = "≜";
1948 var triminus = "⨺";
1949 var TripleDot = "⃛";
1950 var triplus = "⨹";
1951 var trisb = "⧍";
1952 var tritime = "⨻";
1953 var trpezium = "⏢";
1954 var Tscr = "𝒯";
1955 var tscr = "𝓉";
1956 var TScy = "Ц";
1957 var tscy = "ц";
1958 var TSHcy = "Ћ";
1959 var tshcy = "ћ";
1960 var Tstrok = "Ŧ";
1961 var tstrok = "ŧ";
1962 var twixt = "≬";
1963 var twoheadleftarrow = "↞";
1964 var twoheadrightarrow = "↠";
1965 var Uacute = "Ú";
1966 var uacute = "ú";
1967 var uarr = "↑";
1968 var Uarr = "↟";
1969 var uArr = "⇑";
1970 var Uarrocir = "⥉";
1971 var Ubrcy = "Ў";
1972 var ubrcy = "ў";
1973 var Ubreve = "Ŭ";
1974 var ubreve = "ŭ";
1975 var Ucirc = "Û";
1976 var ucirc = "û";
1977 var Ucy = "У";
1978 var ucy = "у";
1979 var udarr = "⇅";
1980 var Udblac = "Ű";
1981 var udblac = "ű";
1982 var udhar = "⥮";
1983 var ufisht = "⥾";
1984 var Ufr = "𝔘";
1985 var ufr = "𝔲";
1986 var Ugrave = "Ù";
1987 var ugrave = "ù";
1988 var uHar = "⥣";
1989 var uharl = "↿";
1990 var uharr = "↾";
1991 var uhblk = "▀";
1992 var ulcorn = "⌜";
1993 var ulcorner = "⌜";
1994 var ulcrop = "⌏";
1995 var ultri = "◸";
1996 var Umacr = "Ū";
1997 var umacr = "ū";
1998 var uml = "¨";
1999 var UnderBar = "_";
2000 var UnderBrace = "⏟";
2001 var UnderBracket = "⎵";
2002 var UnderParenthesis = "⏝";
2003 var Union = "⋃";
2004 var UnionPlus = "⊎";
2005 var Uogon = "Ų";
2006 var uogon = "ų";
2007 var Uopf = "𝕌";
2008 var uopf = "𝕦";
2009 var UpArrowBar = "⤒";
2010 var uparrow = "↑";
2011 var UpArrow = "↑";
2012 var Uparrow = "⇑";
2013 var UpArrowDownArrow = "⇅";
2014 var updownarrow = "↕";
2015 var UpDownArrow = "↕";
2016 var Updownarrow = "⇕";
2017 var UpEquilibrium = "⥮";
2018 var upharpoonleft = "↿";
2019 var upharpoonright = "↾";
2020 var uplus = "⊎";
2021 var UpperLeftArrow = "↖";
2022 var UpperRightArrow = "↗";
2023 var upsi = "υ";
2024 var Upsi = "ϒ";
2025 var upsih = "ϒ";
2026 var Upsilon = "Υ";
2027 var upsilon = "υ";
2028 var UpTeeArrow = "↥";
2029 var UpTee = "⊥";
2030 var upuparrows = "⇈";
2031 var urcorn = "⌝";
2032 var urcorner = "⌝";
2033 var urcrop = "⌎";
2034 var Uring = "Ů";
2035 var uring = "ů";
2036 var urtri = "◹";
2037 var Uscr = "𝒰";
2038 var uscr = "𝓊";
2039 var utdot = "⋰";
2040 var Utilde = "Ũ";
2041 var utilde = "ũ";
2042 var utri = "▵";
2043 var utrif = "▴";
2044 var uuarr = "⇈";
2045 var Uuml = "Ü";
2046 var uuml = "ü";
2047 var uwangle = "⦧";
2048 var vangrt = "⦜";
2049 var varepsilon = "ϵ";
2050 var varkappa = "ϰ";
2051 var varnothing = "∅";
2052 var varphi = "ϕ";
2053 var varpi = "ϖ";
2054 var varpropto = "∝";
2055 var varr = "↕";
2056 var vArr = "⇕";
2057 var varrho = "ϱ";
2058 var varsigma = "ς";
2059 var varsubsetneq = "⊊︀";
2060 var varsubsetneqq = "⫋︀";
2061 var varsupsetneq = "⊋︀";
2062 var varsupsetneqq = "⫌︀";
2063 var vartheta = "ϑ";
2064 var vartriangleleft = "⊲";
2065 var vartriangleright = "⊳";
2066 var vBar = "⫨";
2067 var Vbar = "⫫";
2068 var vBarv = "⫩";
2069 var Vcy = "В";
2070 var vcy = "в";
2071 var vdash = "⊢";
2072 var vDash = "⊨";
2073 var Vdash = "⊩";
2074 var VDash = "⊫";
2075 var Vdashl = "⫦";
2076 var veebar = "⊻";
2077 var vee = "∨";
2078 var Vee = "⋁";
2079 var veeeq = "≚";
2080 var vellip = "⋮";
2081 var verbar = "|";
2082 var Verbar = "‖";
2083 var vert = "|";
2084 var Vert = "‖";
2085 var VerticalBar = "∣";
2086 var VerticalLine = "|";
2087 var VerticalSeparator = "❘";
2088 var VerticalTilde = "≀";
2089 var VeryThinSpace = " ";
2090 var Vfr = "𝔙";
2091 var vfr = "𝔳";
2092 var vltri = "⊲";
2093 var vnsub = "⊂⃒";
2094 var vnsup = "⊃⃒";
2095 var Vopf = "𝕍";
2096 var vopf = "𝕧";
2097 var vprop = "∝";
2098 var vrtri = "⊳";
2099 var Vscr = "𝒱";
2100 var vscr = "𝓋";
2101 var vsubnE = "⫋︀";
2102 var vsubne = "⊊︀";
2103 var vsupnE = "⫌︀";
2104 var vsupne = "⊋︀";
2105 var Vvdash = "⊪";
2106 var vzigzag = "⦚";
2107 var Wcirc = "Ŵ";
2108 var wcirc = "ŵ";
2109 var wedbar = "⩟";
2110 var wedge = "∧";
2111 var Wedge = "⋀";
2112 var wedgeq = "≙";
2113 var weierp = "℘";
2114 var Wfr = "𝔚";
2115 var wfr = "𝔴";
2116 var Wopf = "𝕎";
2117 var wopf = "𝕨";
2118 var wp = "℘";
2119 var wr = "≀";
2120 var wreath = "≀";
2121 var Wscr = "𝒲";
2122 var wscr = "𝓌";
2123 var xcap = "⋂";
2124 var xcirc = "◯";
2125 var xcup = "⋃";
2126 var xdtri = "▽";
2127 var Xfr = "𝔛";
2128 var xfr = "𝔵";
2129 var xharr = "⟷";
2130 var xhArr = "⟺";
2131 var Xi = "Ξ";
2132 var xi = "ξ";
2133 var xlarr = "⟵";
2134 var xlArr = "⟸";
2135 var xmap = "⟼";
2136 var xnis = "⋻";
2137 var xodot = "⨀";
2138 var Xopf = "𝕏";
2139 var xopf = "𝕩";
2140 var xoplus = "⨁";
2141 var xotime = "⨂";
2142 var xrarr = "⟶";
2143 var xrArr = "⟹";
2144 var Xscr = "𝒳";
2145 var xscr = "𝓍";
2146 var xsqcup = "⨆";
2147 var xuplus = "⨄";
2148 var xutri = "△";
2149 var xvee = "⋁";
2150 var xwedge = "⋀";
2151 var Yacute = "Ý";
2152 var yacute = "ý";
2153 var YAcy = "Я";
2154 var yacy = "я";
2155 var Ycirc = "Ŷ";
2156 var ycirc = "ŷ";
2157 var Ycy = "Ы";
2158 var ycy = "ы";
2159 var yen = "¥";
2160 var Yfr = "𝔜";
2161 var yfr = "𝔶";
2162 var YIcy = "Ї";
2163 var yicy = "ї";
2164 var Yopf = "𝕐";
2165 var yopf = "𝕪";
2166 var Yscr = "𝒴";
2167 var yscr = "𝓎";
2168 var YUcy = "Ю";
2169 var yucy = "ю";
2170 var yuml = "ÿ";
2171 var Yuml = "Ÿ";
2172 var Zacute = "Ź";
2173 var zacute = "ź";
2174 var Zcaron = "Ž";
2175 var zcaron = "ž";
2176 var Zcy = "З";
2177 var zcy = "з";
2178 var Zdot = "Ż";
2179 var zdot = "ż";
2180 var zeetrf = "ℨ";
2181 var ZeroWidthSpace = "​";
2182 var Zeta = "Ζ";
2183 var zeta = "ζ";
2184 var zfr = "𝔷";
2185 var Zfr = "ℨ";
2186 var ZHcy = "Ж";
2187 var zhcy = "ж";
2188 var zigrarr = "⇝";
2189 var zopf = "𝕫";
2190 var Zopf = "ℤ";
2191 var Zscr = "𝒵";
2192 var zscr = "𝓏";
2193 var zwj = "‍";
2194 var zwnj = "‌";
2195 var entities = {
2196 Aacute: Aacute,
2197 aacute: aacute,
2198 Abreve: Abreve,
2199 abreve: abreve,
2200 ac: ac,
2201 acd: acd,
2202 acE: acE,
2203 Acirc: Acirc,
2204 acirc: acirc,
2205 acute: acute,
2206 Acy: Acy,
2207 acy: acy,
2208 AElig: AElig,
2209 aelig: aelig,
2210 af: af,
2211 Afr: Afr,
2212 afr: afr,
2213 Agrave: Agrave,
2214 agrave: agrave,
2215 alefsym: alefsym,
2216 aleph: aleph,
2217 Alpha: Alpha,
2218 alpha: alpha,
2219 Amacr: Amacr,
2220 amacr: amacr,
2221 amalg: amalg,
2222 amp: amp,
2223 AMP: AMP,
2224 andand: andand,
2225 And: And,
2226 and: and,
2227 andd: andd,
2228 andslope: andslope,
2229 andv: andv,
2230 ang: ang,
2231 ange: ange,
2232 angle: angle,
2233 angmsdaa: angmsdaa,
2234 angmsdab: angmsdab,
2235 angmsdac: angmsdac,
2236 angmsdad: angmsdad,
2237 angmsdae: angmsdae,
2238 angmsdaf: angmsdaf,
2239 angmsdag: angmsdag,
2240 angmsdah: angmsdah,
2241 angmsd: angmsd,
2242 angrt: angrt,
2243 angrtvb: angrtvb,
2244 angrtvbd: angrtvbd,
2245 angsph: angsph,
2246 angst: angst,
2247 angzarr: angzarr,
2248 Aogon: Aogon,
2249 aogon: aogon,
2250 Aopf: Aopf,
2251 aopf: aopf,
2252 apacir: apacir,
2253 ap: ap,
2254 apE: apE,
2255 ape: ape,
2256 apid: apid,
2257 apos: apos,
2258 ApplyFunction: ApplyFunction,
2259 approx: approx,
2260 approxeq: approxeq,
2261 Aring: Aring,
2262 aring: aring,
2263 Ascr: Ascr,
2264 ascr: ascr,
2265 Assign: Assign,
2266 ast: ast,
2267 asymp: asymp,
2268 asympeq: asympeq,
2269 Atilde: Atilde,
2270 atilde: atilde,
2271 Auml: Auml,
2272 auml: auml,
2273 awconint: awconint,
2274 awint: awint,
2275 backcong: backcong,
2276 backepsilon: backepsilon,
2277 backprime: backprime,
2278 backsim: backsim,
2279 backsimeq: backsimeq,
2280 Backslash: Backslash,
2281 Barv: Barv,
2282 barvee: barvee,
2283 barwed: barwed,
2284 Barwed: Barwed,
2285 barwedge: barwedge,
2286 bbrk: bbrk,
2287 bbrktbrk: bbrktbrk,
2288 bcong: bcong,
2289 Bcy: Bcy,
2290 bcy: bcy,
2291 bdquo: bdquo,
2292 becaus: becaus,
2293 because: because,
2294 Because: Because,
2295 bemptyv: bemptyv,
2296 bepsi: bepsi,
2297 bernou: bernou,
2298 Bernoullis: Bernoullis,
2299 Beta: Beta,
2300 beta: beta,
2301 beth: beth,
2302 between: between,
2303 Bfr: Bfr,
2304 bfr: bfr,
2305 bigcap: bigcap,
2306 bigcirc: bigcirc,
2307 bigcup: bigcup,
2308 bigodot: bigodot,
2309 bigoplus: bigoplus,
2310 bigotimes: bigotimes,
2311 bigsqcup: bigsqcup,
2312 bigstar: bigstar,
2313 bigtriangledown: bigtriangledown,
2314 bigtriangleup: bigtriangleup,
2315 biguplus: biguplus,
2316 bigvee: bigvee,
2317 bigwedge: bigwedge,
2318 bkarow: bkarow,
2319 blacklozenge: blacklozenge,
2320 blacksquare: blacksquare,
2321 blacktriangle: blacktriangle,
2322 blacktriangledown: blacktriangledown,
2323 blacktriangleleft: blacktriangleleft,
2324 blacktriangleright: blacktriangleright,
2325 blank: blank,
2326 blk12: blk12,
2327 blk14: blk14,
2328 blk34: blk34,
2329 block: block,
2330 bne: bne,
2331 bnequiv: bnequiv,
2332 bNot: bNot,
2333 bnot: bnot,
2334 Bopf: Bopf,
2335 bopf: bopf,
2336 bot: bot,
2337 bottom: bottom,
2338 bowtie: bowtie,
2339 boxbox: boxbox,
2340 boxdl: boxdl,
2341 boxdL: boxdL,
2342 boxDl: boxDl,
2343 boxDL: boxDL,
2344 boxdr: boxdr,
2345 boxdR: boxdR,
2346 boxDr: boxDr,
2347 boxDR: boxDR,
2348 boxh: boxh,
2349 boxH: boxH,
2350 boxhd: boxhd,
2351 boxHd: boxHd,
2352 boxhD: boxhD,
2353 boxHD: boxHD,
2354 boxhu: boxhu,
2355 boxHu: boxHu,
2356 boxhU: boxhU,
2357 boxHU: boxHU,
2358 boxminus: boxminus,
2359 boxplus: boxplus,
2360 boxtimes: boxtimes,
2361 boxul: boxul,
2362 boxuL: boxuL,
2363 boxUl: boxUl,
2364 boxUL: boxUL,
2365 boxur: boxur,
2366 boxuR: boxuR,
2367 boxUr: boxUr,
2368 boxUR: boxUR,
2369 boxv: boxv,
2370 boxV: boxV,
2371 boxvh: boxvh,
2372 boxvH: boxvH,
2373 boxVh: boxVh,
2374 boxVH: boxVH,
2375 boxvl: boxvl,
2376 boxvL: boxvL,
2377 boxVl: boxVl,
2378 boxVL: boxVL,
2379 boxvr: boxvr,
2380 boxvR: boxvR,
2381 boxVr: boxVr,
2382 boxVR: boxVR,
2383 bprime: bprime,
2384 breve: breve,
2385 Breve: Breve,
2386 brvbar: brvbar,
2387 bscr: bscr,
2388 Bscr: Bscr,
2389 bsemi: bsemi,
2390 bsim: bsim,
2391 bsime: bsime,
2392 bsolb: bsolb,
2393 bsol: bsol,
2394 bsolhsub: bsolhsub,
2395 bull: bull,
2396 bullet: bullet,
2397 bump: bump,
2398 bumpE: bumpE,
2399 bumpe: bumpe,
2400 Bumpeq: Bumpeq,
2401 bumpeq: bumpeq,
2402 Cacute: Cacute,
2403 cacute: cacute,
2404 capand: capand,
2405 capbrcup: capbrcup,
2406 capcap: capcap,
2407 cap: cap,
2408 Cap: Cap,
2409 capcup: capcup,
2410 capdot: capdot,
2411 CapitalDifferentialD: CapitalDifferentialD,
2412 caps: caps,
2413 caret: caret,
2414 caron: caron,
2415 Cayleys: Cayleys,
2416 ccaps: ccaps,
2417 Ccaron: Ccaron,
2418 ccaron: ccaron,
2419 Ccedil: Ccedil,
2420 ccedil: ccedil,
2421 Ccirc: Ccirc,
2422 ccirc: ccirc,
2423 Cconint: Cconint,
2424 ccups: ccups,
2425 ccupssm: ccupssm,
2426 Cdot: Cdot,
2427 cdot: cdot,
2428 cedil: cedil,
2429 Cedilla: Cedilla,
2430 cemptyv: cemptyv,
2431 cent: cent,
2432 centerdot: centerdot,
2433 CenterDot: CenterDot,
2434 cfr: cfr,
2435 Cfr: Cfr,
2436 CHcy: CHcy,
2437 chcy: chcy,
2438 check: check,
2439 checkmark: checkmark,
2440 Chi: Chi,
2441 chi: chi,
2442 circ: circ,
2443 circeq: circeq,
2444 circlearrowleft: circlearrowleft,
2445 circlearrowright: circlearrowright,
2446 circledast: circledast,
2447 circledcirc: circledcirc,
2448 circleddash: circleddash,
2449 CircleDot: CircleDot,
2450 circledR: circledR,
2451 circledS: circledS,
2452 CircleMinus: CircleMinus,
2453 CirclePlus: CirclePlus,
2454 CircleTimes: CircleTimes,
2455 cir: cir,
2456 cirE: cirE,
2457 cire: cire,
2458 cirfnint: cirfnint,
2459 cirmid: cirmid,
2460 cirscir: cirscir,
2461 ClockwiseContourIntegral: ClockwiseContourIntegral,
2462 CloseCurlyDoubleQuote: CloseCurlyDoubleQuote,
2463 CloseCurlyQuote: CloseCurlyQuote,
2464 clubs: clubs,
2465 clubsuit: clubsuit,
2466 colon: colon,
2467 Colon: Colon,
2468 Colone: Colone,
2469 colone: colone,
2470 coloneq: coloneq,
2471 comma: comma,
2472 commat: commat,
2473 comp: comp,
2474 compfn: compfn,
2475 complement: complement,
2476 complexes: complexes,
2477 cong: cong,
2478 congdot: congdot,
2479 Congruent: Congruent,
2480 conint: conint,
2481 Conint: Conint,
2482 ContourIntegral: ContourIntegral,
2483 copf: copf,
2484 Copf: Copf,
2485 coprod: coprod,
2486 Coproduct: Coproduct,
2487 copy: copy,
2488 COPY: COPY,
2489 copysr: copysr,
2490 CounterClockwiseContourIntegral: CounterClockwiseContourIntegral,
2491 crarr: crarr,
2492 cross: cross,
2493 Cross: Cross,
2494 Cscr: Cscr,
2495 cscr: cscr,
2496 csub: csub,
2497 csube: csube,
2498 csup: csup,
2499 csupe: csupe,
2500 ctdot: ctdot,
2501 cudarrl: cudarrl,
2502 cudarrr: cudarrr,
2503 cuepr: cuepr,
2504 cuesc: cuesc,
2505 cularr: cularr,
2506 cularrp: cularrp,
2507 cupbrcap: cupbrcap,
2508 cupcap: cupcap,
2509 CupCap: CupCap,
2510 cup: cup,
2511 Cup: Cup,
2512 cupcup: cupcup,
2513 cupdot: cupdot,
2514 cupor: cupor,
2515 cups: cups,
2516 curarr: curarr,
2517 curarrm: curarrm,
2518 curlyeqprec: curlyeqprec,
2519 curlyeqsucc: curlyeqsucc,
2520 curlyvee: curlyvee,
2521 curlywedge: curlywedge,
2522 curren: curren,
2523 curvearrowleft: curvearrowleft,
2524 curvearrowright: curvearrowright,
2525 cuvee: cuvee,
2526 cuwed: cuwed,
2527 cwconint: cwconint,
2528 cwint: cwint,
2529 cylcty: cylcty,
2530 dagger: dagger,
2531 Dagger: Dagger,
2532 daleth: daleth,
2533 darr: darr,
2534 Darr: Darr,
2535 dArr: dArr,
2536 dash: dash,
2537 Dashv: Dashv,
2538 dashv: dashv,
2539 dbkarow: dbkarow,
2540 dblac: dblac,
2541 Dcaron: Dcaron,
2542 dcaron: dcaron,
2543 Dcy: Dcy,
2544 dcy: dcy,
2545 ddagger: ddagger,
2546 ddarr: ddarr,
2547 DD: DD,
2548 dd: dd,
2549 DDotrahd: DDotrahd,
2550 ddotseq: ddotseq,
2551 deg: deg,
2552 Del: Del,
2553 Delta: Delta,
2554 delta: delta,
2555 demptyv: demptyv,
2556 dfisht: dfisht,
2557 Dfr: Dfr,
2558 dfr: dfr,
2559 dHar: dHar,
2560 dharl: dharl,
2561 dharr: dharr,
2562 DiacriticalAcute: DiacriticalAcute,
2563 DiacriticalDot: DiacriticalDot,
2564 DiacriticalDoubleAcute: DiacriticalDoubleAcute,
2565 DiacriticalGrave: DiacriticalGrave,
2566 DiacriticalTilde: DiacriticalTilde,
2567 diam: diam,
2568 diamond: diamond,
2569 Diamond: Diamond,
2570 diamondsuit: diamondsuit,
2571 diams: diams,
2572 die: die,
2573 DifferentialD: DifferentialD,
2574 digamma: digamma,
2575 disin: disin,
2576 div: div,
2577 divide: divide,
2578 divideontimes: divideontimes,
2579 divonx: divonx,
2580 DJcy: DJcy,
2581 djcy: djcy,
2582 dlcorn: dlcorn,
2583 dlcrop: dlcrop,
2584 dollar: dollar,
2585 Dopf: Dopf,
2586 dopf: dopf,
2587 Dot: Dot,
2588 dot: dot,
2589 DotDot: DotDot,
2590 doteq: doteq,
2591 doteqdot: doteqdot,
2592 DotEqual: DotEqual,
2593 dotminus: dotminus,
2594 dotplus: dotplus,
2595 dotsquare: dotsquare,
2596 doublebarwedge: doublebarwedge,
2597 DoubleContourIntegral: DoubleContourIntegral,
2598 DoubleDot: DoubleDot,
2599 DoubleDownArrow: DoubleDownArrow,
2600 DoubleLeftArrow: DoubleLeftArrow,
2601 DoubleLeftRightArrow: DoubleLeftRightArrow,
2602 DoubleLeftTee: DoubleLeftTee,
2603 DoubleLongLeftArrow: DoubleLongLeftArrow,
2604 DoubleLongLeftRightArrow: DoubleLongLeftRightArrow,
2605 DoubleLongRightArrow: DoubleLongRightArrow,
2606 DoubleRightArrow: DoubleRightArrow,
2607 DoubleRightTee: DoubleRightTee,
2608 DoubleUpArrow: DoubleUpArrow,
2609 DoubleUpDownArrow: DoubleUpDownArrow,
2610 DoubleVerticalBar: DoubleVerticalBar,
2611 DownArrowBar: DownArrowBar,
2612 downarrow: downarrow,
2613 DownArrow: DownArrow,
2614 Downarrow: Downarrow,
2615 DownArrowUpArrow: DownArrowUpArrow,
2616 DownBreve: DownBreve,
2617 downdownarrows: downdownarrows,
2618 downharpoonleft: downharpoonleft,
2619 downharpoonright: downharpoonright,
2620 DownLeftRightVector: DownLeftRightVector,
2621 DownLeftTeeVector: DownLeftTeeVector,
2622 DownLeftVectorBar: DownLeftVectorBar,
2623 DownLeftVector: DownLeftVector,
2624 DownRightTeeVector: DownRightTeeVector,
2625 DownRightVectorBar: DownRightVectorBar,
2626 DownRightVector: DownRightVector,
2627 DownTeeArrow: DownTeeArrow,
2628 DownTee: DownTee,
2629 drbkarow: drbkarow,
2630 drcorn: drcorn,
2631 drcrop: drcrop,
2632 Dscr: Dscr,
2633 dscr: dscr,
2634 DScy: DScy,
2635 dscy: dscy,
2636 dsol: dsol,
2637 Dstrok: Dstrok,
2638 dstrok: dstrok,
2639 dtdot: dtdot,
2640 dtri: dtri,
2641 dtrif: dtrif,
2642 duarr: duarr,
2643 duhar: duhar,
2644 dwangle: dwangle,
2645 DZcy: DZcy,
2646 dzcy: dzcy,
2647 dzigrarr: dzigrarr,
2648 Eacute: Eacute,
2649 eacute: eacute,
2650 easter: easter,
2651 Ecaron: Ecaron,
2652 ecaron: ecaron,
2653 Ecirc: Ecirc,
2654 ecirc: ecirc,
2655 ecir: ecir,
2656 ecolon: ecolon,
2657 Ecy: Ecy,
2658 ecy: ecy,
2659 eDDot: eDDot,
2660 Edot: Edot,
2661 edot: edot,
2662 eDot: eDot,
2663 ee: ee,
2664 efDot: efDot,
2665 Efr: Efr,
2666 efr: efr,
2667 eg: eg,
2668 Egrave: Egrave,
2669 egrave: egrave,
2670 egs: egs,
2671 egsdot: egsdot,
2672 el: el,
2673 Element: Element,
2674 elinters: elinters,
2675 ell: ell,
2676 els: els,
2677 elsdot: elsdot,
2678 Emacr: Emacr,
2679 emacr: emacr,
2680 empty: empty,
2681 emptyset: emptyset,
2682 EmptySmallSquare: EmptySmallSquare,
2683 emptyv: emptyv,
2684 EmptyVerySmallSquare: EmptyVerySmallSquare,
2685 emsp13: emsp13,
2686 emsp14: emsp14,
2687 emsp: emsp,
2688 ENG: ENG,
2689 eng: eng,
2690 ensp: ensp,
2691 Eogon: Eogon,
2692 eogon: eogon,
2693 Eopf: Eopf,
2694 eopf: eopf,
2695 epar: epar,
2696 eparsl: eparsl,
2697 eplus: eplus,
2698 epsi: epsi,
2699 Epsilon: Epsilon,
2700 epsilon: epsilon,
2701 epsiv: epsiv,
2702 eqcirc: eqcirc,
2703 eqcolon: eqcolon,
2704 eqsim: eqsim,
2705 eqslantgtr: eqslantgtr,
2706 eqslantless: eqslantless,
2707 Equal: Equal,
2708 equals: equals,
2709 EqualTilde: EqualTilde,
2710 equest: equest,
2711 Equilibrium: Equilibrium,
2712 equiv: equiv,
2713 equivDD: equivDD,
2714 eqvparsl: eqvparsl,
2715 erarr: erarr,
2716 erDot: erDot,
2717 escr: escr,
2718 Escr: Escr,
2719 esdot: esdot,
2720 Esim: Esim,
2721 esim: esim,
2722 Eta: Eta,
2723 eta: eta,
2724 ETH: ETH,
2725 eth: eth,
2726 Euml: Euml,
2727 euml: euml,
2728 euro: euro,
2729 excl: excl,
2730 exist: exist,
2731 Exists: Exists,
2732 expectation: expectation,
2733 exponentiale: exponentiale,
2734 ExponentialE: ExponentialE,
2735 fallingdotseq: fallingdotseq,
2736 Fcy: Fcy,
2737 fcy: fcy,
2738 female: female,
2739 ffilig: ffilig,
2740 fflig: fflig,
2741 ffllig: ffllig,
2742 Ffr: Ffr,
2743 ffr: ffr,
2744 filig: filig,
2745 FilledSmallSquare: FilledSmallSquare,
2746 FilledVerySmallSquare: FilledVerySmallSquare,
2747 fjlig: fjlig,
2748 flat: flat,
2749 fllig: fllig,
2750 fltns: fltns,
2751 fnof: fnof,
2752 Fopf: Fopf,
2753 fopf: fopf,
2754 forall: forall,
2755 ForAll: ForAll,
2756 fork: fork,
2757 forkv: forkv,
2758 Fouriertrf: Fouriertrf,
2759 fpartint: fpartint,
2760 frac12: frac12,
2761 frac13: frac13,
2762 frac14: frac14,
2763 frac15: frac15,
2764 frac16: frac16,
2765 frac18: frac18,
2766 frac23: frac23,
2767 frac25: frac25,
2768 frac34: frac34,
2769 frac35: frac35,
2770 frac38: frac38,
2771 frac45: frac45,
2772 frac56: frac56,
2773 frac58: frac58,
2774 frac78: frac78,
2775 frasl: frasl,
2776 frown: frown,
2777 fscr: fscr,
2778 Fscr: Fscr,
2779 gacute: gacute,
2780 Gamma: Gamma,
2781 gamma: gamma,
2782 Gammad: Gammad,
2783 gammad: gammad,
2784 gap: gap,
2785 Gbreve: Gbreve,
2786 gbreve: gbreve,
2787 Gcedil: Gcedil,
2788 Gcirc: Gcirc,
2789 gcirc: gcirc,
2790 Gcy: Gcy,
2791 gcy: gcy,
2792 Gdot: Gdot,
2793 gdot: gdot,
2794 ge: ge,
2795 gE: gE,
2796 gEl: gEl,
2797 gel: gel,
2798 geq: geq,
2799 geqq: geqq,
2800 geqslant: geqslant,
2801 gescc: gescc,
2802 ges: ges,
2803 gesdot: gesdot,
2804 gesdoto: gesdoto,
2805 gesdotol: gesdotol,
2806 gesl: gesl,
2807 gesles: gesles,
2808 Gfr: Gfr,
2809 gfr: gfr,
2810 gg: gg,
2811 Gg: Gg,
2812 ggg: ggg,
2813 gimel: gimel,
2814 GJcy: GJcy,
2815 gjcy: gjcy,
2816 gla: gla,
2817 gl: gl,
2818 glE: glE,
2819 glj: glj,
2820 gnap: gnap,
2821 gnapprox: gnapprox,
2822 gne: gne,
2823 gnE: gnE,
2824 gneq: gneq,
2825 gneqq: gneqq,
2826 gnsim: gnsim,
2827 Gopf: Gopf,
2828 gopf: gopf,
2829 grave: grave,
2830 GreaterEqual: GreaterEqual,
2831 GreaterEqualLess: GreaterEqualLess,
2832 GreaterFullEqual: GreaterFullEqual,
2833 GreaterGreater: GreaterGreater,
2834 GreaterLess: GreaterLess,
2835 GreaterSlantEqual: GreaterSlantEqual,
2836 GreaterTilde: GreaterTilde,
2837 Gscr: Gscr,
2838 gscr: gscr,
2839 gsim: gsim,
2840 gsime: gsime,
2841 gsiml: gsiml,
2842 gtcc: gtcc,
2843 gtcir: gtcir,
2844 gt: gt,
2845 GT: GT,
2846 Gt: Gt,
2847 gtdot: gtdot,
2848 gtlPar: gtlPar,
2849 gtquest: gtquest,
2850 gtrapprox: gtrapprox,
2851 gtrarr: gtrarr,
2852 gtrdot: gtrdot,
2853 gtreqless: gtreqless,
2854 gtreqqless: gtreqqless,
2855 gtrless: gtrless,
2856 gtrsim: gtrsim,
2857 gvertneqq: gvertneqq,
2858 gvnE: gvnE,
2859 Hacek: Hacek,
2860 hairsp: hairsp,
2861 half: half,
2862 hamilt: hamilt,
2863 HARDcy: HARDcy,
2864 hardcy: hardcy,
2865 harrcir: harrcir,
2866 harr: harr,
2867 hArr: hArr,
2868 harrw: harrw,
2869 Hat: Hat,
2870 hbar: hbar,
2871 Hcirc: Hcirc,
2872 hcirc: hcirc,
2873 hearts: hearts,
2874 heartsuit: heartsuit,
2875 hellip: hellip,
2876 hercon: hercon,
2877 hfr: hfr,
2878 Hfr: Hfr,
2879 HilbertSpace: HilbertSpace,
2880 hksearow: hksearow,
2881 hkswarow: hkswarow,
2882 hoarr: hoarr,
2883 homtht: homtht,
2884 hookleftarrow: hookleftarrow,
2885 hookrightarrow: hookrightarrow,
2886 hopf: hopf,
2887 Hopf: Hopf,
2888 horbar: horbar,
2889 HorizontalLine: HorizontalLine,
2890 hscr: hscr,
2891 Hscr: Hscr,
2892 hslash: hslash,
2893 Hstrok: Hstrok,
2894 hstrok: hstrok,
2895 HumpDownHump: HumpDownHump,
2896 HumpEqual: HumpEqual,
2897 hybull: hybull,
2898 hyphen: hyphen,
2899 Iacute: Iacute,
2900 iacute: iacute,
2901 ic: ic,
2902 Icirc: Icirc,
2903 icirc: icirc,
2904 Icy: Icy,
2905 icy: icy,
2906 Idot: Idot,
2907 IEcy: IEcy,
2908 iecy: iecy,
2909 iexcl: iexcl,
2910 iff: iff,
2911 ifr: ifr,
2912 Ifr: Ifr,
2913 Igrave: Igrave,
2914 igrave: igrave,
2915 ii: ii,
2916 iiiint: iiiint,
2917 iiint: iiint,
2918 iinfin: iinfin,
2919 iiota: iiota,
2920 IJlig: IJlig,
2921 ijlig: ijlig,
2922 Imacr: Imacr,
2923 imacr: imacr,
2924 image: image,
2925 ImaginaryI: ImaginaryI,
2926 imagline: imagline,
2927 imagpart: imagpart,
2928 imath: imath,
2929 Im: Im,
2930 imof: imof,
2931 imped: imped,
2932 Implies: Implies,
2933 incare: incare,
2934 "in": "∈",
2935 infin: infin,
2936 infintie: infintie,
2937 inodot: inodot,
2938 intcal: intcal,
2939 int: int,
2940 Int: Int,
2941 integers: integers,
2942 Integral: Integral,
2943 intercal: intercal,
2944 Intersection: Intersection,
2945 intlarhk: intlarhk,
2946 intprod: intprod,
2947 InvisibleComma: InvisibleComma,
2948 InvisibleTimes: InvisibleTimes,
2949 IOcy: IOcy,
2950 iocy: iocy,
2951 Iogon: Iogon,
2952 iogon: iogon,
2953 Iopf: Iopf,
2954 iopf: iopf,
2955 Iota: Iota,
2956 iota: iota,
2957 iprod: iprod,
2958 iquest: iquest,
2959 iscr: iscr,
2960 Iscr: Iscr,
2961 isin: isin,
2962 isindot: isindot,
2963 isinE: isinE,
2964 isins: isins,
2965 isinsv: isinsv,
2966 isinv: isinv,
2967 it: it,
2968 Itilde: Itilde,
2969 itilde: itilde,
2970 Iukcy: Iukcy,
2971 iukcy: iukcy,
2972 Iuml: Iuml,
2973 iuml: iuml,
2974 Jcirc: Jcirc,
2975 jcirc: jcirc,
2976 Jcy: Jcy,
2977 jcy: jcy,
2978 Jfr: Jfr,
2979 jfr: jfr,
2980 jmath: jmath,
2981 Jopf: Jopf,
2982 jopf: jopf,
2983 Jscr: Jscr,
2984 jscr: jscr,
2985 Jsercy: Jsercy,
2986 jsercy: jsercy,
2987 Jukcy: Jukcy,
2988 jukcy: jukcy,
2989 Kappa: Kappa,
2990 kappa: kappa,
2991 kappav: kappav,
2992 Kcedil: Kcedil,
2993 kcedil: kcedil,
2994 Kcy: Kcy,
2995 kcy: kcy,
2996 Kfr: Kfr,
2997 kfr: kfr,
2998 kgreen: kgreen,
2999 KHcy: KHcy,
3000 khcy: khcy,
3001 KJcy: KJcy,
3002 kjcy: kjcy,
3003 Kopf: Kopf,
3004 kopf: kopf,
3005 Kscr: Kscr,
3006 kscr: kscr,
3007 lAarr: lAarr,
3008 Lacute: Lacute,
3009 lacute: lacute,
3010 laemptyv: laemptyv,
3011 lagran: lagran,
3012 Lambda: Lambda,
3013 lambda: lambda,
3014 lang: lang,
3015 Lang: Lang,
3016 langd: langd,
3017 langle: langle,
3018 lap: lap,
3019 Laplacetrf: Laplacetrf,
3020 laquo: laquo,
3021 larrb: larrb,
3022 larrbfs: larrbfs,
3023 larr: larr,
3024 Larr: Larr,
3025 lArr: lArr,
3026 larrfs: larrfs,
3027 larrhk: larrhk,
3028 larrlp: larrlp,
3029 larrpl: larrpl,
3030 larrsim: larrsim,
3031 larrtl: larrtl,
3032 latail: latail,
3033 lAtail: lAtail,
3034 lat: lat,
3035 late: late,
3036 lates: lates,
3037 lbarr: lbarr,
3038 lBarr: lBarr,
3039 lbbrk: lbbrk,
3040 lbrace: lbrace,
3041 lbrack: lbrack,
3042 lbrke: lbrke,
3043 lbrksld: lbrksld,
3044 lbrkslu: lbrkslu,
3045 Lcaron: Lcaron,
3046 lcaron: lcaron,
3047 Lcedil: Lcedil,
3048 lcedil: lcedil,
3049 lceil: lceil,
3050 lcub: lcub,
3051 Lcy: Lcy,
3052 lcy: lcy,
3053 ldca: ldca,
3054 ldquo: ldquo,
3055 ldquor: ldquor,
3056 ldrdhar: ldrdhar,
3057 ldrushar: ldrushar,
3058 ldsh: ldsh,
3059 le: le,
3060 lE: lE,
3061 LeftAngleBracket: LeftAngleBracket,
3062 LeftArrowBar: LeftArrowBar,
3063 leftarrow: leftarrow,
3064 LeftArrow: LeftArrow,
3065 Leftarrow: Leftarrow,
3066 LeftArrowRightArrow: LeftArrowRightArrow,
3067 leftarrowtail: leftarrowtail,
3068 LeftCeiling: LeftCeiling,
3069 LeftDoubleBracket: LeftDoubleBracket,
3070 LeftDownTeeVector: LeftDownTeeVector,
3071 LeftDownVectorBar: LeftDownVectorBar,
3072 LeftDownVector: LeftDownVector,
3073 LeftFloor: LeftFloor,
3074 leftharpoondown: leftharpoondown,
3075 leftharpoonup: leftharpoonup,
3076 leftleftarrows: leftleftarrows,
3077 leftrightarrow: leftrightarrow,
3078 LeftRightArrow: LeftRightArrow,
3079 Leftrightarrow: Leftrightarrow,
3080 leftrightarrows: leftrightarrows,
3081 leftrightharpoons: leftrightharpoons,
3082 leftrightsquigarrow: leftrightsquigarrow,
3083 LeftRightVector: LeftRightVector,
3084 LeftTeeArrow: LeftTeeArrow,
3085 LeftTee: LeftTee,
3086 LeftTeeVector: LeftTeeVector,
3087 leftthreetimes: leftthreetimes,
3088 LeftTriangleBar: LeftTriangleBar,
3089 LeftTriangle: LeftTriangle,
3090 LeftTriangleEqual: LeftTriangleEqual,
3091 LeftUpDownVector: LeftUpDownVector,
3092 LeftUpTeeVector: LeftUpTeeVector,
3093 LeftUpVectorBar: LeftUpVectorBar,
3094 LeftUpVector: LeftUpVector,
3095 LeftVectorBar: LeftVectorBar,
3096 LeftVector: LeftVector,
3097 lEg: lEg,
3098 leg: leg,
3099 leq: leq,
3100 leqq: leqq,
3101 leqslant: leqslant,
3102 lescc: lescc,
3103 les: les,
3104 lesdot: lesdot,
3105 lesdoto: lesdoto,
3106 lesdotor: lesdotor,
3107 lesg: lesg,
3108 lesges: lesges,
3109 lessapprox: lessapprox,
3110 lessdot: lessdot,
3111 lesseqgtr: lesseqgtr,
3112 lesseqqgtr: lesseqqgtr,
3113 LessEqualGreater: LessEqualGreater,
3114 LessFullEqual: LessFullEqual,
3115 LessGreater: LessGreater,
3116 lessgtr: lessgtr,
3117 LessLess: LessLess,
3118 lesssim: lesssim,
3119 LessSlantEqual: LessSlantEqual,
3120 LessTilde: LessTilde,
3121 lfisht: lfisht,
3122 lfloor: lfloor,
3123 Lfr: Lfr,
3124 lfr: lfr,
3125 lg: lg,
3126 lgE: lgE,
3127 lHar: lHar,
3128 lhard: lhard,
3129 lharu: lharu,
3130 lharul: lharul,
3131 lhblk: lhblk,
3132 LJcy: LJcy,
3133 ljcy: ljcy,
3134 llarr: llarr,
3135 ll: ll,
3136 Ll: Ll,
3137 llcorner: llcorner,
3138 Lleftarrow: Lleftarrow,
3139 llhard: llhard,
3140 lltri: lltri,
3141 Lmidot: Lmidot,
3142 lmidot: lmidot,
3143 lmoustache: lmoustache,
3144 lmoust: lmoust,
3145 lnap: lnap,
3146 lnapprox: lnapprox,
3147 lne: lne,
3148 lnE: lnE,
3149 lneq: lneq,
3150 lneqq: lneqq,
3151 lnsim: lnsim,
3152 loang: loang,
3153 loarr: loarr,
3154 lobrk: lobrk,
3155 longleftarrow: longleftarrow,
3156 LongLeftArrow: LongLeftArrow,
3157 Longleftarrow: Longleftarrow,
3158 longleftrightarrow: longleftrightarrow,
3159 LongLeftRightArrow: LongLeftRightArrow,
3160 Longleftrightarrow: Longleftrightarrow,
3161 longmapsto: longmapsto,
3162 longrightarrow: longrightarrow,
3163 LongRightArrow: LongRightArrow,
3164 Longrightarrow: Longrightarrow,
3165 looparrowleft: looparrowleft,
3166 looparrowright: looparrowright,
3167 lopar: lopar,
3168 Lopf: Lopf,
3169 lopf: lopf,
3170 loplus: loplus,
3171 lotimes: lotimes,
3172 lowast: lowast,
3173 lowbar: lowbar,
3174 LowerLeftArrow: LowerLeftArrow,
3175 LowerRightArrow: LowerRightArrow,
3176 loz: loz,
3177 lozenge: lozenge,
3178 lozf: lozf,
3179 lpar: lpar,
3180 lparlt: lparlt,
3181 lrarr: lrarr,
3182 lrcorner: lrcorner,
3183 lrhar: lrhar,
3184 lrhard: lrhard,
3185 lrm: lrm,
3186 lrtri: lrtri,
3187 lsaquo: lsaquo,
3188 lscr: lscr,
3189 Lscr: Lscr,
3190 lsh: lsh,
3191 Lsh: Lsh,
3192 lsim: lsim,
3193 lsime: lsime,
3194 lsimg: lsimg,
3195 lsqb: lsqb,
3196 lsquo: lsquo,
3197 lsquor: lsquor,
3198 Lstrok: Lstrok,
3199 lstrok: lstrok,
3200 ltcc: ltcc,
3201 ltcir: ltcir,
3202 lt: lt,
3203 LT: LT,
3204 Lt: Lt,
3205 ltdot: ltdot,
3206 lthree: lthree,
3207 ltimes: ltimes,
3208 ltlarr: ltlarr,
3209 ltquest: ltquest,
3210 ltri: ltri,
3211 ltrie: ltrie,
3212 ltrif: ltrif,
3213 ltrPar: ltrPar,
3214 lurdshar: lurdshar,
3215 luruhar: luruhar,
3216 lvertneqq: lvertneqq,
3217 lvnE: lvnE,
3218 macr: macr,
3219 male: male,
3220 malt: malt,
3221 maltese: maltese,
3222 "Map": "⤅",
3223 map: map,
3224 mapsto: mapsto,
3225 mapstodown: mapstodown,
3226 mapstoleft: mapstoleft,
3227 mapstoup: mapstoup,
3228 marker: marker,
3229 mcomma: mcomma,
3230 Mcy: Mcy,
3231 mcy: mcy,
3232 mdash: mdash,
3233 mDDot: mDDot,
3234 measuredangle: measuredangle,
3235 MediumSpace: MediumSpace,
3236 Mellintrf: Mellintrf,
3237 Mfr: Mfr,
3238 mfr: mfr,
3239 mho: mho,
3240 micro: micro,
3241 midast: midast,
3242 midcir: midcir,
3243 mid: mid,
3244 middot: middot,
3245 minusb: minusb,
3246 minus: minus,
3247 minusd: minusd,
3248 minusdu: minusdu,
3249 MinusPlus: MinusPlus,
3250 mlcp: mlcp,
3251 mldr: mldr,
3252 mnplus: mnplus,
3253 models: models,
3254 Mopf: Mopf,
3255 mopf: mopf,
3256 mp: mp,
3257 mscr: mscr,
3258 Mscr: Mscr,
3259 mstpos: mstpos,
3260 Mu: Mu,
3261 mu: mu,
3262 multimap: multimap,
3263 mumap: mumap,
3264 nabla: nabla,
3265 Nacute: Nacute,
3266 nacute: nacute,
3267 nang: nang,
3268 nap: nap,
3269 napE: napE,
3270 napid: napid,
3271 napos: napos,
3272 napprox: napprox,
3273 natural: natural,
3274 naturals: naturals,
3275 natur: natur,
3276 nbsp: nbsp,
3277 nbump: nbump,
3278 nbumpe: nbumpe,
3279 ncap: ncap,
3280 Ncaron: Ncaron,
3281 ncaron: ncaron,
3282 Ncedil: Ncedil,
3283 ncedil: ncedil,
3284 ncong: ncong,
3285 ncongdot: ncongdot,
3286 ncup: ncup,
3287 Ncy: Ncy,
3288 ncy: ncy,
3289 ndash: ndash,
3290 nearhk: nearhk,
3291 nearr: nearr,
3292 neArr: neArr,
3293 nearrow: nearrow,
3294 ne: ne,
3295 nedot: nedot,
3296 NegativeMediumSpace: NegativeMediumSpace,
3297 NegativeThickSpace: NegativeThickSpace,
3298 NegativeThinSpace: NegativeThinSpace,
3299 NegativeVeryThinSpace: NegativeVeryThinSpace,
3300 nequiv: nequiv,
3301 nesear: nesear,
3302 nesim: nesim,
3303 NestedGreaterGreater: NestedGreaterGreater,
3304 NestedLessLess: NestedLessLess,
3305 NewLine: NewLine,
3306 nexist: nexist,
3307 nexists: nexists,
3308 Nfr: Nfr,
3309 nfr: nfr,
3310 ngE: ngE,
3311 nge: nge,
3312 ngeq: ngeq,
3313 ngeqq: ngeqq,
3314 ngeqslant: ngeqslant,
3315 nges: nges,
3316 nGg: nGg,
3317 ngsim: ngsim,
3318 nGt: nGt,
3319 ngt: ngt,
3320 ngtr: ngtr,
3321 nGtv: nGtv,
3322 nharr: nharr,
3323 nhArr: nhArr,
3324 nhpar: nhpar,
3325 ni: ni,
3326 nis: nis,
3327 nisd: nisd,
3328 niv: niv,
3329 NJcy: NJcy,
3330 njcy: njcy,
3331 nlarr: nlarr,
3332 nlArr: nlArr,
3333 nldr: nldr,
3334 nlE: nlE,
3335 nle: nle,
3336 nleftarrow: nleftarrow,
3337 nLeftarrow: nLeftarrow,
3338 nleftrightarrow: nleftrightarrow,
3339 nLeftrightarrow: nLeftrightarrow,
3340 nleq: nleq,
3341 nleqq: nleqq,
3342 nleqslant: nleqslant,
3343 nles: nles,
3344 nless: nless,
3345 nLl: nLl,
3346 nlsim: nlsim,
3347 nLt: nLt,
3348 nlt: nlt,
3349 nltri: nltri,
3350 nltrie: nltrie,
3351 nLtv: nLtv,
3352 nmid: nmid,
3353 NoBreak: NoBreak,
3354 NonBreakingSpace: NonBreakingSpace,
3355 nopf: nopf,
3356 Nopf: Nopf,
3357 Not: Not,
3358 not: not,
3359 NotCongruent: NotCongruent,
3360 NotCupCap: NotCupCap,
3361 NotDoubleVerticalBar: NotDoubleVerticalBar,
3362 NotElement: NotElement,
3363 NotEqual: NotEqual,
3364 NotEqualTilde: NotEqualTilde,
3365 NotExists: NotExists,
3366 NotGreater: NotGreater,
3367 NotGreaterEqual: NotGreaterEqual,
3368 NotGreaterFullEqual: NotGreaterFullEqual,
3369 NotGreaterGreater: NotGreaterGreater,
3370 NotGreaterLess: NotGreaterLess,
3371 NotGreaterSlantEqual: NotGreaterSlantEqual,
3372 NotGreaterTilde: NotGreaterTilde,
3373 NotHumpDownHump: NotHumpDownHump,
3374 NotHumpEqual: NotHumpEqual,
3375 notin: notin,
3376 notindot: notindot,
3377 notinE: notinE,
3378 notinva: notinva,
3379 notinvb: notinvb,
3380 notinvc: notinvc,
3381 NotLeftTriangleBar: NotLeftTriangleBar,
3382 NotLeftTriangle: NotLeftTriangle,
3383 NotLeftTriangleEqual: NotLeftTriangleEqual,
3384 NotLess: NotLess,
3385 NotLessEqual: NotLessEqual,
3386 NotLessGreater: NotLessGreater,
3387 NotLessLess: NotLessLess,
3388 NotLessSlantEqual: NotLessSlantEqual,
3389 NotLessTilde: NotLessTilde,
3390 NotNestedGreaterGreater: NotNestedGreaterGreater,
3391 NotNestedLessLess: NotNestedLessLess,
3392 notni: notni,
3393 notniva: notniva,
3394 notnivb: notnivb,
3395 notnivc: notnivc,
3396 NotPrecedes: NotPrecedes,
3397 NotPrecedesEqual: NotPrecedesEqual,
3398 NotPrecedesSlantEqual: NotPrecedesSlantEqual,
3399 NotReverseElement: NotReverseElement,
3400 NotRightTriangleBar: NotRightTriangleBar,
3401 NotRightTriangle: NotRightTriangle,
3402 NotRightTriangleEqual: NotRightTriangleEqual,
3403 NotSquareSubset: NotSquareSubset,
3404 NotSquareSubsetEqual: NotSquareSubsetEqual,
3405 NotSquareSuperset: NotSquareSuperset,
3406 NotSquareSupersetEqual: NotSquareSupersetEqual,
3407 NotSubset: NotSubset,
3408 NotSubsetEqual: NotSubsetEqual,
3409 NotSucceeds: NotSucceeds,
3410 NotSucceedsEqual: NotSucceedsEqual,
3411 NotSucceedsSlantEqual: NotSucceedsSlantEqual,
3412 NotSucceedsTilde: NotSucceedsTilde,
3413 NotSuperset: NotSuperset,
3414 NotSupersetEqual: NotSupersetEqual,
3415 NotTilde: NotTilde,
3416 NotTildeEqual: NotTildeEqual,
3417 NotTildeFullEqual: NotTildeFullEqual,
3418 NotTildeTilde: NotTildeTilde,
3419 NotVerticalBar: NotVerticalBar,
3420 nparallel: nparallel,
3421 npar: npar,
3422 nparsl: nparsl,
3423 npart: npart,
3424 npolint: npolint,
3425 npr: npr,
3426 nprcue: nprcue,
3427 nprec: nprec,
3428 npreceq: npreceq,
3429 npre: npre,
3430 nrarrc: nrarrc,
3431 nrarr: nrarr,
3432 nrArr: nrArr,
3433 nrarrw: nrarrw,
3434 nrightarrow: nrightarrow,
3435 nRightarrow: nRightarrow,
3436 nrtri: nrtri,
3437 nrtrie: nrtrie,
3438 nsc: nsc,
3439 nsccue: nsccue,
3440 nsce: nsce,
3441 Nscr: Nscr,
3442 nscr: nscr,
3443 nshortmid: nshortmid,
3444 nshortparallel: nshortparallel,
3445 nsim: nsim,
3446 nsime: nsime,
3447 nsimeq: nsimeq,
3448 nsmid: nsmid,
3449 nspar: nspar,
3450 nsqsube: nsqsube,
3451 nsqsupe: nsqsupe,
3452 nsub: nsub,
3453 nsubE: nsubE,
3454 nsube: nsube,
3455 nsubset: nsubset,
3456 nsubseteq: nsubseteq,
3457 nsubseteqq: nsubseteqq,
3458 nsucc: nsucc,
3459 nsucceq: nsucceq,
3460 nsup: nsup,
3461 nsupE: nsupE,
3462 nsupe: nsupe,
3463 nsupset: nsupset,
3464 nsupseteq: nsupseteq,
3465 nsupseteqq: nsupseteqq,
3466 ntgl: ntgl,
3467 Ntilde: Ntilde,
3468 ntilde: ntilde,
3469 ntlg: ntlg,
3470 ntriangleleft: ntriangleleft,
3471 ntrianglelefteq: ntrianglelefteq,
3472 ntriangleright: ntriangleright,
3473 ntrianglerighteq: ntrianglerighteq,
3474 Nu: Nu,
3475 nu: nu,
3476 num: num,
3477 numero: numero,
3478 numsp: numsp,
3479 nvap: nvap,
3480 nvdash: nvdash,
3481 nvDash: nvDash,
3482 nVdash: nVdash,
3483 nVDash: nVDash,
3484 nvge: nvge,
3485 nvgt: nvgt,
3486 nvHarr: nvHarr,
3487 nvinfin: nvinfin,
3488 nvlArr: nvlArr,
3489 nvle: nvle,
3490 nvlt: nvlt,
3491 nvltrie: nvltrie,
3492 nvrArr: nvrArr,
3493 nvrtrie: nvrtrie,
3494 nvsim: nvsim,
3495 nwarhk: nwarhk,
3496 nwarr: nwarr,
3497 nwArr: nwArr,
3498 nwarrow: nwarrow,
3499 nwnear: nwnear,
3500 Oacute: Oacute,
3501 oacute: oacute,
3502 oast: oast,
3503 Ocirc: Ocirc,
3504 ocirc: ocirc,
3505 ocir: ocir,
3506 Ocy: Ocy,
3507 ocy: ocy,
3508 odash: odash,
3509 Odblac: Odblac,
3510 odblac: odblac,
3511 odiv: odiv,
3512 odot: odot,
3513 odsold: odsold,
3514 OElig: OElig,
3515 oelig: oelig,
3516 ofcir: ofcir,
3517 Ofr: Ofr,
3518 ofr: ofr,
3519 ogon: ogon,
3520 Ograve: Ograve,
3521 ograve: ograve,
3522 ogt: ogt,
3523 ohbar: ohbar,
3524 ohm: ohm,
3525 oint: oint,
3526 olarr: olarr,
3527 olcir: olcir,
3528 olcross: olcross,
3529 oline: oline,
3530 olt: olt,
3531 Omacr: Omacr,
3532 omacr: omacr,
3533 Omega: Omega,
3534 omega: omega,
3535 Omicron: Omicron,
3536 omicron: omicron,
3537 omid: omid,
3538 ominus: ominus,
3539 Oopf: Oopf,
3540 oopf: oopf,
3541 opar: opar,
3542 OpenCurlyDoubleQuote: OpenCurlyDoubleQuote,
3543 OpenCurlyQuote: OpenCurlyQuote,
3544 operp: operp,
3545 oplus: oplus,
3546 orarr: orarr,
3547 Or: Or,
3548 or: or,
3549 ord: ord,
3550 order: order,
3551 orderof: orderof,
3552 ordf: ordf,
3553 ordm: ordm,
3554 origof: origof,
3555 oror: oror,
3556 orslope: orslope,
3557 orv: orv,
3558 oS: oS,
3559 Oscr: Oscr,
3560 oscr: oscr,
3561 Oslash: Oslash,
3562 oslash: oslash,
3563 osol: osol,
3564 Otilde: Otilde,
3565 otilde: otilde,
3566 otimesas: otimesas,
3567 Otimes: Otimes,
3568 otimes: otimes,
3569 Ouml: Ouml,
3570 ouml: ouml,
3571 ovbar: ovbar,
3572 OverBar: OverBar,
3573 OverBrace: OverBrace,
3574 OverBracket: OverBracket,
3575 OverParenthesis: OverParenthesis,
3576 para: para,
3577 parallel: parallel,
3578 par: par,
3579 parsim: parsim,
3580 parsl: parsl,
3581 part: part,
3582 PartialD: PartialD,
3583 Pcy: Pcy,
3584 pcy: pcy,
3585 percnt: percnt,
3586 period: period,
3587 permil: permil,
3588 perp: perp,
3589 pertenk: pertenk,
3590 Pfr: Pfr,
3591 pfr: pfr,
3592 Phi: Phi,
3593 phi: phi,
3594 phiv: phiv,
3595 phmmat: phmmat,
3596 phone: phone,
3597 Pi: Pi,
3598 pi: pi,
3599 pitchfork: pitchfork,
3600 piv: piv,
3601 planck: planck,
3602 planckh: planckh,
3603 plankv: plankv,
3604 plusacir: plusacir,
3605 plusb: plusb,
3606 pluscir: pluscir,
3607 plus: plus,
3608 plusdo: plusdo,
3609 plusdu: plusdu,
3610 pluse: pluse,
3611 PlusMinus: PlusMinus,
3612 plusmn: plusmn,
3613 plussim: plussim,
3614 plustwo: plustwo,
3615 pm: pm,
3616 Poincareplane: Poincareplane,
3617 pointint: pointint,
3618 popf: popf,
3619 Popf: Popf,
3620 pound: pound,
3621 prap: prap,
3622 Pr: Pr,
3623 pr: pr,
3624 prcue: prcue,
3625 precapprox: precapprox,
3626 prec: prec,
3627 preccurlyeq: preccurlyeq,
3628 Precedes: Precedes,
3629 PrecedesEqual: PrecedesEqual,
3630 PrecedesSlantEqual: PrecedesSlantEqual,
3631 PrecedesTilde: PrecedesTilde,
3632 preceq: preceq,
3633 precnapprox: precnapprox,
3634 precneqq: precneqq,
3635 precnsim: precnsim,
3636 pre: pre,
3637 prE: prE,
3638 precsim: precsim,
3639 prime: prime,
3640 Prime: Prime,
3641 primes: primes,
3642 prnap: prnap,
3643 prnE: prnE,
3644 prnsim: prnsim,
3645 prod: prod,
3646 Product: Product,
3647 profalar: profalar,
3648 profline: profline,
3649 profsurf: profsurf,
3650 prop: prop,
3651 Proportional: Proportional,
3652 Proportion: Proportion,
3653 propto: propto,
3654 prsim: prsim,
3655 prurel: prurel,
3656 Pscr: Pscr,
3657 pscr: pscr,
3658 Psi: Psi,
3659 psi: psi,
3660 puncsp: puncsp,
3661 Qfr: Qfr,
3662 qfr: qfr,
3663 qint: qint,
3664 qopf: qopf,
3665 Qopf: Qopf,
3666 qprime: qprime,
3667 Qscr: Qscr,
3668 qscr: qscr,
3669 quaternions: quaternions,
3670 quatint: quatint,
3671 quest: quest,
3672 questeq: questeq,
3673 quot: quot,
3674 QUOT: QUOT,
3675 rAarr: rAarr,
3676 race: race,
3677 Racute: Racute,
3678 racute: racute,
3679 radic: radic,
3680 raemptyv: raemptyv,
3681 rang: rang,
3682 Rang: Rang,
3683 rangd: rangd,
3684 range: range,
3685 rangle: rangle,
3686 raquo: raquo,
3687 rarrap: rarrap,
3688 rarrb: rarrb,
3689 rarrbfs: rarrbfs,
3690 rarrc: rarrc,
3691 rarr: rarr,
3692 Rarr: Rarr,
3693 rArr: rArr,
3694 rarrfs: rarrfs,
3695 rarrhk: rarrhk,
3696 rarrlp: rarrlp,
3697 rarrpl: rarrpl,
3698 rarrsim: rarrsim,
3699 Rarrtl: Rarrtl,
3700 rarrtl: rarrtl,
3701 rarrw: rarrw,
3702 ratail: ratail,
3703 rAtail: rAtail,
3704 ratio: ratio,
3705 rationals: rationals,
3706 rbarr: rbarr,
3707 rBarr: rBarr,
3708 RBarr: RBarr,
3709 rbbrk: rbbrk,
3710 rbrace: rbrace,
3711 rbrack: rbrack,
3712 rbrke: rbrke,
3713 rbrksld: rbrksld,
3714 rbrkslu: rbrkslu,
3715 Rcaron: Rcaron,
3716 rcaron: rcaron,
3717 Rcedil: Rcedil,
3718 rcedil: rcedil,
3719 rceil: rceil,
3720 rcub: rcub,
3721 Rcy: Rcy,
3722 rcy: rcy,
3723 rdca: rdca,
3724 rdldhar: rdldhar,
3725 rdquo: rdquo,
3726 rdquor: rdquor,
3727 rdsh: rdsh,
3728 real: real,
3729 realine: realine,
3730 realpart: realpart,
3731 reals: reals,
3732 Re: Re,
3733 rect: rect,
3734 reg: reg,
3735 REG: REG,
3736 ReverseElement: ReverseElement,
3737 ReverseEquilibrium: ReverseEquilibrium,
3738 ReverseUpEquilibrium: ReverseUpEquilibrium,
3739 rfisht: rfisht,
3740 rfloor: rfloor,
3741 rfr: rfr,
3742 Rfr: Rfr,
3743 rHar: rHar,
3744 rhard: rhard,
3745 rharu: rharu,
3746 rharul: rharul,
3747 Rho: Rho,
3748 rho: rho,
3749 rhov: rhov,
3750 RightAngleBracket: RightAngleBracket,
3751 RightArrowBar: RightArrowBar,
3752 rightarrow: rightarrow,
3753 RightArrow: RightArrow,
3754 Rightarrow: Rightarrow,
3755 RightArrowLeftArrow: RightArrowLeftArrow,
3756 rightarrowtail: rightarrowtail,
3757 RightCeiling: RightCeiling,
3758 RightDoubleBracket: RightDoubleBracket,
3759 RightDownTeeVector: RightDownTeeVector,
3760 RightDownVectorBar: RightDownVectorBar,
3761 RightDownVector: RightDownVector,
3762 RightFloor: RightFloor,
3763 rightharpoondown: rightharpoondown,
3764 rightharpoonup: rightharpoonup,
3765 rightleftarrows: rightleftarrows,
3766 rightleftharpoons: rightleftharpoons,
3767 rightrightarrows: rightrightarrows,
3768 rightsquigarrow: rightsquigarrow,
3769 RightTeeArrow: RightTeeArrow,
3770 RightTee: RightTee,
3771 RightTeeVector: RightTeeVector,
3772 rightthreetimes: rightthreetimes,
3773 RightTriangleBar: RightTriangleBar,
3774 RightTriangle: RightTriangle,
3775 RightTriangleEqual: RightTriangleEqual,
3776 RightUpDownVector: RightUpDownVector,
3777 RightUpTeeVector: RightUpTeeVector,
3778 RightUpVectorBar: RightUpVectorBar,
3779 RightUpVector: RightUpVector,
3780 RightVectorBar: RightVectorBar,
3781 RightVector: RightVector,
3782 ring: ring,
3783 risingdotseq: risingdotseq,
3784 rlarr: rlarr,
3785 rlhar: rlhar,
3786 rlm: rlm,
3787 rmoustache: rmoustache,
3788 rmoust: rmoust,
3789 rnmid: rnmid,
3790 roang: roang,
3791 roarr: roarr,
3792 robrk: robrk,
3793 ropar: ropar,
3794 ropf: ropf,
3795 Ropf: Ropf,
3796 roplus: roplus,
3797 rotimes: rotimes,
3798 RoundImplies: RoundImplies,
3799 rpar: rpar,
3800 rpargt: rpargt,
3801 rppolint: rppolint,
3802 rrarr: rrarr,
3803 Rrightarrow: Rrightarrow,
3804 rsaquo: rsaquo,
3805 rscr: rscr,
3806 Rscr: Rscr,
3807 rsh: rsh,
3808 Rsh: Rsh,
3809 rsqb: rsqb,
3810 rsquo: rsquo,
3811 rsquor: rsquor,
3812 rthree: rthree,
3813 rtimes: rtimes,
3814 rtri: rtri,
3815 rtrie: rtrie,
3816 rtrif: rtrif,
3817 rtriltri: rtriltri,
3818 RuleDelayed: RuleDelayed,
3819 ruluhar: ruluhar,
3820 rx: rx,
3821 Sacute: Sacute,
3822 sacute: sacute,
3823 sbquo: sbquo,
3824 scap: scap,
3825 Scaron: Scaron,
3826 scaron: scaron,
3827 Sc: Sc,
3828 sc: sc,
3829 sccue: sccue,
3830 sce: sce,
3831 scE: scE,
3832 Scedil: Scedil,
3833 scedil: scedil,
3834 Scirc: Scirc,
3835 scirc: scirc,
3836 scnap: scnap,
3837 scnE: scnE,
3838 scnsim: scnsim,
3839 scpolint: scpolint,
3840 scsim: scsim,
3841 Scy: Scy,
3842 scy: scy,
3843 sdotb: sdotb,
3844 sdot: sdot,
3845 sdote: sdote,
3846 searhk: searhk,
3847 searr: searr,
3848 seArr: seArr,
3849 searrow: searrow,
3850 sect: sect,
3851 semi: semi,
3852 seswar: seswar,
3853 setminus: setminus,
3854 setmn: setmn,
3855 sext: sext,
3856 Sfr: Sfr,
3857 sfr: sfr,
3858 sfrown: sfrown,
3859 sharp: sharp,
3860 SHCHcy: SHCHcy,
3861 shchcy: shchcy,
3862 SHcy: SHcy,
3863 shcy: shcy,
3864 ShortDownArrow: ShortDownArrow,
3865 ShortLeftArrow: ShortLeftArrow,
3866 shortmid: shortmid,
3867 shortparallel: shortparallel,
3868 ShortRightArrow: ShortRightArrow,
3869 ShortUpArrow: ShortUpArrow,
3870 shy: shy,
3871 Sigma: Sigma,
3872 sigma: sigma,
3873 sigmaf: sigmaf,
3874 sigmav: sigmav,
3875 sim: sim,
3876 simdot: simdot,
3877 sime: sime,
3878 simeq: simeq,
3879 simg: simg,
3880 simgE: simgE,
3881 siml: siml,
3882 simlE: simlE,
3883 simne: simne,
3884 simplus: simplus,
3885 simrarr: simrarr,
3886 slarr: slarr,
3887 SmallCircle: SmallCircle,
3888 smallsetminus: smallsetminus,
3889 smashp: smashp,
3890 smeparsl: smeparsl,
3891 smid: smid,
3892 smile: smile,
3893 smt: smt,
3894 smte: smte,
3895 smtes: smtes,
3896 SOFTcy: SOFTcy,
3897 softcy: softcy,
3898 solbar: solbar,
3899 solb: solb,
3900 sol: sol,
3901 Sopf: Sopf,
3902 sopf: sopf,
3903 spades: spades,
3904 spadesuit: spadesuit,
3905 spar: spar,
3906 sqcap: sqcap,
3907 sqcaps: sqcaps,
3908 sqcup: sqcup,
3909 sqcups: sqcups,
3910 Sqrt: Sqrt,
3911 sqsub: sqsub,
3912 sqsube: sqsube,
3913 sqsubset: sqsubset,
3914 sqsubseteq: sqsubseteq,
3915 sqsup: sqsup,
3916 sqsupe: sqsupe,
3917 sqsupset: sqsupset,
3918 sqsupseteq: sqsupseteq,
3919 square: square,
3920 Square: Square,
3921 SquareIntersection: SquareIntersection,
3922 SquareSubset: SquareSubset,
3923 SquareSubsetEqual: SquareSubsetEqual,
3924 SquareSuperset: SquareSuperset,
3925 SquareSupersetEqual: SquareSupersetEqual,
3926 SquareUnion: SquareUnion,
3927 squarf: squarf,
3928 squ: squ,
3929 squf: squf,
3930 srarr: srarr,
3931 Sscr: Sscr,
3932 sscr: sscr,
3933 ssetmn: ssetmn,
3934 ssmile: ssmile,
3935 sstarf: sstarf,
3936 Star: Star,
3937 star: star,
3938 starf: starf,
3939 straightepsilon: straightepsilon,
3940 straightphi: straightphi,
3941 strns: strns,
3942 sub: sub,
3943 Sub: Sub,
3944 subdot: subdot,
3945 subE: subE,
3946 sube: sube,
3947 subedot: subedot,
3948 submult: submult,
3949 subnE: subnE,
3950 subne: subne,
3951 subplus: subplus,
3952 subrarr: subrarr,
3953 subset: subset,
3954 Subset: Subset,
3955 subseteq: subseteq,
3956 subseteqq: subseteqq,
3957 SubsetEqual: SubsetEqual,
3958 subsetneq: subsetneq,
3959 subsetneqq: subsetneqq,
3960 subsim: subsim,
3961 subsub: subsub,
3962 subsup: subsup,
3963 succapprox: succapprox,
3964 succ: succ,
3965 succcurlyeq: succcurlyeq,
3966 Succeeds: Succeeds,
3967 SucceedsEqual: SucceedsEqual,
3968 SucceedsSlantEqual: SucceedsSlantEqual,
3969 SucceedsTilde: SucceedsTilde,
3970 succeq: succeq,
3971 succnapprox: succnapprox,
3972 succneqq: succneqq,
3973 succnsim: succnsim,
3974 succsim: succsim,
3975 SuchThat: SuchThat,
3976 sum: sum,
3977 Sum: Sum,
3978 sung: sung,
3979 sup1: sup1,
3980 sup2: sup2,
3981 sup3: sup3,
3982 sup: sup,
3983 Sup: Sup,
3984 supdot: supdot,
3985 supdsub: supdsub,
3986 supE: supE,
3987 supe: supe,
3988 supedot: supedot,
3989 Superset: Superset,
3990 SupersetEqual: SupersetEqual,
3991 suphsol: suphsol,
3992 suphsub: suphsub,
3993 suplarr: suplarr,
3994 supmult: supmult,
3995 supnE: supnE,
3996 supne: supne,
3997 supplus: supplus,
3998 supset: supset,
3999 Supset: Supset,
4000 supseteq: supseteq,
4001 supseteqq: supseteqq,
4002 supsetneq: supsetneq,
4003 supsetneqq: supsetneqq,
4004 supsim: supsim,
4005 supsub: supsub,
4006 supsup: supsup,
4007 swarhk: swarhk,
4008 swarr: swarr,
4009 swArr: swArr,
4010 swarrow: swarrow,
4011 swnwar: swnwar,
4012 szlig: szlig,
4013 Tab: Tab,
4014 target: target,
4015 Tau: Tau,
4016 tau: tau,
4017 tbrk: tbrk,
4018 Tcaron: Tcaron,
4019 tcaron: tcaron,
4020 Tcedil: Tcedil,
4021 tcedil: tcedil,
4022 Tcy: Tcy,
4023 tcy: tcy,
4024 tdot: tdot,
4025 telrec: telrec,
4026 Tfr: Tfr,
4027 tfr: tfr,
4028 there4: there4,
4029 therefore: therefore,
4030 Therefore: Therefore,
4031 Theta: Theta,
4032 theta: theta,
4033 thetasym: thetasym,
4034 thetav: thetav,
4035 thickapprox: thickapprox,
4036 thicksim: thicksim,
4037 ThickSpace: ThickSpace,
4038 ThinSpace: ThinSpace,
4039 thinsp: thinsp,
4040 thkap: thkap,
4041 thksim: thksim,
4042 THORN: THORN,
4043 thorn: thorn,
4044 tilde: tilde,
4045 Tilde: Tilde,
4046 TildeEqual: TildeEqual,
4047 TildeFullEqual: TildeFullEqual,
4048 TildeTilde: TildeTilde,
4049 timesbar: timesbar,
4050 timesb: timesb,
4051 times: times,
4052 timesd: timesd,
4053 tint: tint,
4054 toea: toea,
4055 topbot: topbot,
4056 topcir: topcir,
4057 top: top,
4058 Topf: Topf,
4059 topf: topf,
4060 topfork: topfork,
4061 tosa: tosa,
4062 tprime: tprime,
4063 trade: trade,
4064 TRADE: TRADE,
4065 triangle: triangle,
4066 triangledown: triangledown,
4067 triangleleft: triangleleft,
4068 trianglelefteq: trianglelefteq,
4069 triangleq: triangleq,
4070 triangleright: triangleright,
4071 trianglerighteq: trianglerighteq,
4072 tridot: tridot,
4073 trie: trie,
4074 triminus: triminus,
4075 TripleDot: TripleDot,
4076 triplus: triplus,
4077 trisb: trisb,
4078 tritime: tritime,
4079 trpezium: trpezium,
4080 Tscr: Tscr,
4081 tscr: tscr,
4082 TScy: TScy,
4083 tscy: tscy,
4084 TSHcy: TSHcy,
4085 tshcy: tshcy,
4086 Tstrok: Tstrok,
4087 tstrok: tstrok,
4088 twixt: twixt,
4089 twoheadleftarrow: twoheadleftarrow,
4090 twoheadrightarrow: twoheadrightarrow,
4091 Uacute: Uacute,
4092 uacute: uacute,
4093 uarr: uarr,
4094 Uarr: Uarr,
4095 uArr: uArr,
4096 Uarrocir: Uarrocir,
4097 Ubrcy: Ubrcy,
4098 ubrcy: ubrcy,
4099 Ubreve: Ubreve,
4100 ubreve: ubreve,
4101 Ucirc: Ucirc,
4102 ucirc: ucirc,
4103 Ucy: Ucy,
4104 ucy: ucy,
4105 udarr: udarr,
4106 Udblac: Udblac,
4107 udblac: udblac,
4108 udhar: udhar,
4109 ufisht: ufisht,
4110 Ufr: Ufr,
4111 ufr: ufr,
4112 Ugrave: Ugrave,
4113 ugrave: ugrave,
4114 uHar: uHar,
4115 uharl: uharl,
4116 uharr: uharr,
4117 uhblk: uhblk,
4118 ulcorn: ulcorn,
4119 ulcorner: ulcorner,
4120 ulcrop: ulcrop,
4121 ultri: ultri,
4122 Umacr: Umacr,
4123 umacr: umacr,
4124 uml: uml,
4125 UnderBar: UnderBar,
4126 UnderBrace: UnderBrace,
4127 UnderBracket: UnderBracket,
4128 UnderParenthesis: UnderParenthesis,
4129 Union: Union,
4130 UnionPlus: UnionPlus,
4131 Uogon: Uogon,
4132 uogon: uogon,
4133 Uopf: Uopf,
4134 uopf: uopf,
4135 UpArrowBar: UpArrowBar,
4136 uparrow: uparrow,
4137 UpArrow: UpArrow,
4138 Uparrow: Uparrow,
4139 UpArrowDownArrow: UpArrowDownArrow,
4140 updownarrow: updownarrow,
4141 UpDownArrow: UpDownArrow,
4142 Updownarrow: Updownarrow,
4143 UpEquilibrium: UpEquilibrium,
4144 upharpoonleft: upharpoonleft,
4145 upharpoonright: upharpoonright,
4146 uplus: uplus,
4147 UpperLeftArrow: UpperLeftArrow,
4148 UpperRightArrow: UpperRightArrow,
4149 upsi: upsi,
4150 Upsi: Upsi,
4151 upsih: upsih,
4152 Upsilon: Upsilon,
4153 upsilon: upsilon,
4154 UpTeeArrow: UpTeeArrow,
4155 UpTee: UpTee,
4156 upuparrows: upuparrows,
4157 urcorn: urcorn,
4158 urcorner: urcorner,
4159 urcrop: urcrop,
4160 Uring: Uring,
4161 uring: uring,
4162 urtri: urtri,
4163 Uscr: Uscr,
4164 uscr: uscr,
4165 utdot: utdot,
4166 Utilde: Utilde,
4167 utilde: utilde,
4168 utri: utri,
4169 utrif: utrif,
4170 uuarr: uuarr,
4171 Uuml: Uuml,
4172 uuml: uuml,
4173 uwangle: uwangle,
4174 vangrt: vangrt,
4175 varepsilon: varepsilon,
4176 varkappa: varkappa,
4177 varnothing: varnothing,
4178 varphi: varphi,
4179 varpi: varpi,
4180 varpropto: varpropto,
4181 varr: varr,
4182 vArr: vArr,
4183 varrho: varrho,
4184 varsigma: varsigma,
4185 varsubsetneq: varsubsetneq,
4186 varsubsetneqq: varsubsetneqq,
4187 varsupsetneq: varsupsetneq,
4188 varsupsetneqq: varsupsetneqq,
4189 vartheta: vartheta,
4190 vartriangleleft: vartriangleleft,
4191 vartriangleright: vartriangleright,
4192 vBar: vBar,
4193 Vbar: Vbar,
4194 vBarv: vBarv,
4195 Vcy: Vcy,
4196 vcy: vcy,
4197 vdash: vdash,
4198 vDash: vDash,
4199 Vdash: Vdash,
4200 VDash: VDash,
4201 Vdashl: Vdashl,
4202 veebar: veebar,
4203 vee: vee,
4204 Vee: Vee,
4205 veeeq: veeeq,
4206 vellip: vellip,
4207 verbar: verbar,
4208 Verbar: Verbar,
4209 vert: vert,
4210 Vert: Vert,
4211 VerticalBar: VerticalBar,
4212 VerticalLine: VerticalLine,
4213 VerticalSeparator: VerticalSeparator,
4214 VerticalTilde: VerticalTilde,
4215 VeryThinSpace: VeryThinSpace,
4216 Vfr: Vfr,
4217 vfr: vfr,
4218 vltri: vltri,
4219 vnsub: vnsub,
4220 vnsup: vnsup,
4221 Vopf: Vopf,
4222 vopf: vopf,
4223 vprop: vprop,
4224 vrtri: vrtri,
4225 Vscr: Vscr,
4226 vscr: vscr,
4227 vsubnE: vsubnE,
4228 vsubne: vsubne,
4229 vsupnE: vsupnE,
4230 vsupne: vsupne,
4231 Vvdash: Vvdash,
4232 vzigzag: vzigzag,
4233 Wcirc: Wcirc,
4234 wcirc: wcirc,
4235 wedbar: wedbar,
4236 wedge: wedge,
4237 Wedge: Wedge,
4238 wedgeq: wedgeq,
4239 weierp: weierp,
4240 Wfr: Wfr,
4241 wfr: wfr,
4242 Wopf: Wopf,
4243 wopf: wopf,
4244 wp: wp,
4245 wr: wr,
4246 wreath: wreath,
4247 Wscr: Wscr,
4248 wscr: wscr,
4249 xcap: xcap,
4250 xcirc: xcirc,
4251 xcup: xcup,
4252 xdtri: xdtri,
4253 Xfr: Xfr,
4254 xfr: xfr,
4255 xharr: xharr,
4256 xhArr: xhArr,
4257 Xi: Xi,
4258 xi: xi,
4259 xlarr: xlarr,
4260 xlArr: xlArr,
4261 xmap: xmap,
4262 xnis: xnis,
4263 xodot: xodot,
4264 Xopf: Xopf,
4265 xopf: xopf,
4266 xoplus: xoplus,
4267 xotime: xotime,
4268 xrarr: xrarr,
4269 xrArr: xrArr,
4270 Xscr: Xscr,
4271 xscr: xscr,
4272 xsqcup: xsqcup,
4273 xuplus: xuplus,
4274 xutri: xutri,
4275 xvee: xvee,
4276 xwedge: xwedge,
4277 Yacute: Yacute,
4278 yacute: yacute,
4279 YAcy: YAcy,
4280 yacy: yacy,
4281 Ycirc: Ycirc,
4282 ycirc: ycirc,
4283 Ycy: Ycy,
4284 ycy: ycy,
4285 yen: yen,
4286 Yfr: Yfr,
4287 yfr: yfr,
4288 YIcy: YIcy,
4289 yicy: yicy,
4290 Yopf: Yopf,
4291 yopf: yopf,
4292 Yscr: Yscr,
4293 yscr: yscr,
4294 YUcy: YUcy,
4295 yucy: yucy,
4296 yuml: yuml,
4297 Yuml: Yuml,
4298 Zacute: Zacute,
4299 zacute: zacute,
4300 Zcaron: Zcaron,
4301 zcaron: zcaron,
4302 Zcy: Zcy,
4303 zcy: zcy,
4304 Zdot: Zdot,
4305 zdot: zdot,
4306 zeetrf: zeetrf,
4307 ZeroWidthSpace: ZeroWidthSpace,
4308 Zeta: Zeta,
4309 zeta: zeta,
4310 zfr: zfr,
4311 Zfr: Zfr,
4312 ZHcy: ZHcy,
4313 zhcy: zhcy,
4314 zigrarr: zigrarr,
4315 zopf: zopf,
4316 Zopf: Zopf,
4317 Zscr: Zscr,
4318 zscr: zscr,
4319 zwj: zwj,
4320 zwnj: zwnj
4321 };
4322
4323 var entities$1 = {
4324 __proto__: null,
4325 Aacute: Aacute,
4326 aacute: aacute,
4327 Abreve: Abreve,
4328 abreve: abreve,
4329 ac: ac,
4330 acd: acd,
4331 acE: acE,
4332 Acirc: Acirc,
4333 acirc: acirc,
4334 acute: acute,
4335 Acy: Acy,
4336 acy: acy,
4337 AElig: AElig,
4338 aelig: aelig,
4339 af: af,
4340 Afr: Afr,
4341 afr: afr,
4342 Agrave: Agrave,
4343 agrave: agrave,
4344 alefsym: alefsym,
4345 aleph: aleph,
4346 Alpha: Alpha,
4347 alpha: alpha,
4348 Amacr: Amacr,
4349 amacr: amacr,
4350 amalg: amalg,
4351 amp: amp,
4352 AMP: AMP,
4353 andand: andand,
4354 And: And,
4355 and: and,
4356 andd: andd,
4357 andslope: andslope,
4358 andv: andv,
4359 ang: ang,
4360 ange: ange,
4361 angle: angle,
4362 angmsdaa: angmsdaa,
4363 angmsdab: angmsdab,
4364 angmsdac: angmsdac,
4365 angmsdad: angmsdad,
4366 angmsdae: angmsdae,
4367 angmsdaf: angmsdaf,
4368 angmsdag: angmsdag,
4369 angmsdah: angmsdah,
4370 angmsd: angmsd,
4371 angrt: angrt,
4372 angrtvb: angrtvb,
4373 angrtvbd: angrtvbd,
4374 angsph: angsph,
4375 angst: angst,
4376 angzarr: angzarr,
4377 Aogon: Aogon,
4378 aogon: aogon,
4379 Aopf: Aopf,
4380 aopf: aopf,
4381 apacir: apacir,
4382 ap: ap,
4383 apE: apE,
4384 ape: ape,
4385 apid: apid,
4386 apos: apos,
4387 ApplyFunction: ApplyFunction,
4388 approx: approx,
4389 approxeq: approxeq,
4390 Aring: Aring,
4391 aring: aring,
4392 Ascr: Ascr,
4393 ascr: ascr,
4394 Assign: Assign,
4395 ast: ast,
4396 asymp: asymp,
4397 asympeq: asympeq,
4398 Atilde: Atilde,
4399 atilde: atilde,
4400 Auml: Auml,
4401 auml: auml,
4402 awconint: awconint,
4403 awint: awint,
4404 backcong: backcong,
4405 backepsilon: backepsilon,
4406 backprime: backprime,
4407 backsim: backsim,
4408 backsimeq: backsimeq,
4409 Backslash: Backslash,
4410 Barv: Barv,
4411 barvee: barvee,
4412 barwed: barwed,
4413 Barwed: Barwed,
4414 barwedge: barwedge,
4415 bbrk: bbrk,
4416 bbrktbrk: bbrktbrk,
4417 bcong: bcong,
4418 Bcy: Bcy,
4419 bcy: bcy,
4420 bdquo: bdquo,
4421 becaus: becaus,
4422 because: because,
4423 Because: Because,
4424 bemptyv: bemptyv,
4425 bepsi: bepsi,
4426 bernou: bernou,
4427 Bernoullis: Bernoullis,
4428 Beta: Beta,
4429 beta: beta,
4430 beth: beth,
4431 between: between,
4432 Bfr: Bfr,
4433 bfr: bfr,
4434 bigcap: bigcap,
4435 bigcirc: bigcirc,
4436 bigcup: bigcup,
4437 bigodot: bigodot,
4438 bigoplus: bigoplus,
4439 bigotimes: bigotimes,
4440 bigsqcup: bigsqcup,
4441 bigstar: bigstar,
4442 bigtriangledown: bigtriangledown,
4443 bigtriangleup: bigtriangleup,
4444 biguplus: biguplus,
4445 bigvee: bigvee,
4446 bigwedge: bigwedge,
4447 bkarow: bkarow,
4448 blacklozenge: blacklozenge,
4449 blacksquare: blacksquare,
4450 blacktriangle: blacktriangle,
4451 blacktriangledown: blacktriangledown,
4452 blacktriangleleft: blacktriangleleft,
4453 blacktriangleright: blacktriangleright,
4454 blank: blank,
4455 blk12: blk12,
4456 blk14: blk14,
4457 blk34: blk34,
4458 block: block,
4459 bne: bne,
4460 bnequiv: bnequiv,
4461 bNot: bNot,
4462 bnot: bnot,
4463 Bopf: Bopf,
4464 bopf: bopf,
4465 bot: bot,
4466 bottom: bottom,
4467 bowtie: bowtie,
4468 boxbox: boxbox,
4469 boxdl: boxdl,
4470 boxdL: boxdL,
4471 boxDl: boxDl,
4472 boxDL: boxDL,
4473 boxdr: boxdr,
4474 boxdR: boxdR,
4475 boxDr: boxDr,
4476 boxDR: boxDR,
4477 boxh: boxh,
4478 boxH: boxH,
4479 boxhd: boxhd,
4480 boxHd: boxHd,
4481 boxhD: boxhD,
4482 boxHD: boxHD,
4483 boxhu: boxhu,
4484 boxHu: boxHu,
4485 boxhU: boxhU,
4486 boxHU: boxHU,
4487 boxminus: boxminus,
4488 boxplus: boxplus,
4489 boxtimes: boxtimes,
4490 boxul: boxul,
4491 boxuL: boxuL,
4492 boxUl: boxUl,
4493 boxUL: boxUL,
4494 boxur: boxur,
4495 boxuR: boxuR,
4496 boxUr: boxUr,
4497 boxUR: boxUR,
4498 boxv: boxv,
4499 boxV: boxV,
4500 boxvh: boxvh,
4501 boxvH: boxvH,
4502 boxVh: boxVh,
4503 boxVH: boxVH,
4504 boxvl: boxvl,
4505 boxvL: boxvL,
4506 boxVl: boxVl,
4507 boxVL: boxVL,
4508 boxvr: boxvr,
4509 boxvR: boxvR,
4510 boxVr: boxVr,
4511 boxVR: boxVR,
4512 bprime: bprime,
4513 breve: breve,
4514 Breve: Breve,
4515 brvbar: brvbar,
4516 bscr: bscr,
4517 Bscr: Bscr,
4518 bsemi: bsemi,
4519 bsim: bsim,
4520 bsime: bsime,
4521 bsolb: bsolb,
4522 bsol: bsol,
4523 bsolhsub: bsolhsub,
4524 bull: bull,
4525 bullet: bullet,
4526 bump: bump,
4527 bumpE: bumpE,
4528 bumpe: bumpe,
4529 Bumpeq: Bumpeq,
4530 bumpeq: bumpeq,
4531 Cacute: Cacute,
4532 cacute: cacute,
4533 capand: capand,
4534 capbrcup: capbrcup,
4535 capcap: capcap,
4536 cap: cap,
4537 Cap: Cap,
4538 capcup: capcup,
4539 capdot: capdot,
4540 CapitalDifferentialD: CapitalDifferentialD,
4541 caps: caps,
4542 caret: caret,
4543 caron: caron,
4544 Cayleys: Cayleys,
4545 ccaps: ccaps,
4546 Ccaron: Ccaron,
4547 ccaron: ccaron,
4548 Ccedil: Ccedil,
4549 ccedil: ccedil,
4550 Ccirc: Ccirc,
4551 ccirc: ccirc,
4552 Cconint: Cconint,
4553 ccups: ccups,
4554 ccupssm: ccupssm,
4555 Cdot: Cdot,
4556 cdot: cdot,
4557 cedil: cedil,
4558 Cedilla: Cedilla,
4559 cemptyv: cemptyv,
4560 cent: cent,
4561 centerdot: centerdot,
4562 CenterDot: CenterDot,
4563 cfr: cfr,
4564 Cfr: Cfr,
4565 CHcy: CHcy,
4566 chcy: chcy,
4567 check: check,
4568 checkmark: checkmark,
4569 Chi: Chi,
4570 chi: chi,
4571 circ: circ,
4572 circeq: circeq,
4573 circlearrowleft: circlearrowleft,
4574 circlearrowright: circlearrowright,
4575 circledast: circledast,
4576 circledcirc: circledcirc,
4577 circleddash: circleddash,
4578 CircleDot: CircleDot,
4579 circledR: circledR,
4580 circledS: circledS,
4581 CircleMinus: CircleMinus,
4582 CirclePlus: CirclePlus,
4583 CircleTimes: CircleTimes,
4584 cir: cir,
4585 cirE: cirE,
4586 cire: cire,
4587 cirfnint: cirfnint,
4588 cirmid: cirmid,
4589 cirscir: cirscir,
4590 ClockwiseContourIntegral: ClockwiseContourIntegral,
4591 CloseCurlyDoubleQuote: CloseCurlyDoubleQuote,
4592 CloseCurlyQuote: CloseCurlyQuote,
4593 clubs: clubs,
4594 clubsuit: clubsuit,
4595 colon: colon,
4596 Colon: Colon,
4597 Colone: Colone,
4598 colone: colone,
4599 coloneq: coloneq,
4600 comma: comma,
4601 commat: commat,
4602 comp: comp,
4603 compfn: compfn,
4604 complement: complement,
4605 complexes: complexes,
4606 cong: cong,
4607 congdot: congdot,
4608 Congruent: Congruent,
4609 conint: conint,
4610 Conint: Conint,
4611 ContourIntegral: ContourIntegral,
4612 copf: copf,
4613 Copf: Copf,
4614 coprod: coprod,
4615 Coproduct: Coproduct,
4616 copy: copy,
4617 COPY: COPY,
4618 copysr: copysr,
4619 CounterClockwiseContourIntegral: CounterClockwiseContourIntegral,
4620 crarr: crarr,
4621 cross: cross,
4622 Cross: Cross,
4623 Cscr: Cscr,
4624 cscr: cscr,
4625 csub: csub,
4626 csube: csube,
4627 csup: csup,
4628 csupe: csupe,
4629 ctdot: ctdot,
4630 cudarrl: cudarrl,
4631 cudarrr: cudarrr,
4632 cuepr: cuepr,
4633 cuesc: cuesc,
4634 cularr: cularr,
4635 cularrp: cularrp,
4636 cupbrcap: cupbrcap,
4637 cupcap: cupcap,
4638 CupCap: CupCap,
4639 cup: cup,
4640 Cup: Cup,
4641 cupcup: cupcup,
4642 cupdot: cupdot,
4643 cupor: cupor,
4644 cups: cups,
4645 curarr: curarr,
4646 curarrm: curarrm,
4647 curlyeqprec: curlyeqprec,
4648 curlyeqsucc: curlyeqsucc,
4649 curlyvee: curlyvee,
4650 curlywedge: curlywedge,
4651 curren: curren,
4652 curvearrowleft: curvearrowleft,
4653 curvearrowright: curvearrowright,
4654 cuvee: cuvee,
4655 cuwed: cuwed,
4656 cwconint: cwconint,
4657 cwint: cwint,
4658 cylcty: cylcty,
4659 dagger: dagger,
4660 Dagger: Dagger,
4661 daleth: daleth,
4662 darr: darr,
4663 Darr: Darr,
4664 dArr: dArr,
4665 dash: dash,
4666 Dashv: Dashv,
4667 dashv: dashv,
4668 dbkarow: dbkarow,
4669 dblac: dblac,
4670 Dcaron: Dcaron,
4671 dcaron: dcaron,
4672 Dcy: Dcy,
4673 dcy: dcy,
4674 ddagger: ddagger,
4675 ddarr: ddarr,
4676 DD: DD,
4677 dd: dd,
4678 DDotrahd: DDotrahd,
4679 ddotseq: ddotseq,
4680 deg: deg,
4681 Del: Del,
4682 Delta: Delta,
4683 delta: delta,
4684 demptyv: demptyv,
4685 dfisht: dfisht,
4686 Dfr: Dfr,
4687 dfr: dfr,
4688 dHar: dHar,
4689 dharl: dharl,
4690 dharr: dharr,
4691 DiacriticalAcute: DiacriticalAcute,
4692 DiacriticalDot: DiacriticalDot,
4693 DiacriticalDoubleAcute: DiacriticalDoubleAcute,
4694 DiacriticalGrave: DiacriticalGrave,
4695 DiacriticalTilde: DiacriticalTilde,
4696 diam: diam,
4697 diamond: diamond,
4698 Diamond: Diamond,
4699 diamondsuit: diamondsuit,
4700 diams: diams,
4701 die: die,
4702 DifferentialD: DifferentialD,
4703 digamma: digamma,
4704 disin: disin,
4705 div: div,
4706 divide: divide,
4707 divideontimes: divideontimes,
4708 divonx: divonx,
4709 DJcy: DJcy,
4710 djcy: djcy,
4711 dlcorn: dlcorn,
4712 dlcrop: dlcrop,
4713 dollar: dollar,
4714 Dopf: Dopf,
4715 dopf: dopf,
4716 Dot: Dot,
4717 dot: dot,
4718 DotDot: DotDot,
4719 doteq: doteq,
4720 doteqdot: doteqdot,
4721 DotEqual: DotEqual,
4722 dotminus: dotminus,
4723 dotplus: dotplus,
4724 dotsquare: dotsquare,
4725 doublebarwedge: doublebarwedge,
4726 DoubleContourIntegral: DoubleContourIntegral,
4727 DoubleDot: DoubleDot,
4728 DoubleDownArrow: DoubleDownArrow,
4729 DoubleLeftArrow: DoubleLeftArrow,
4730 DoubleLeftRightArrow: DoubleLeftRightArrow,
4731 DoubleLeftTee: DoubleLeftTee,
4732 DoubleLongLeftArrow: DoubleLongLeftArrow,
4733 DoubleLongLeftRightArrow: DoubleLongLeftRightArrow,
4734 DoubleLongRightArrow: DoubleLongRightArrow,
4735 DoubleRightArrow: DoubleRightArrow,
4736 DoubleRightTee: DoubleRightTee,
4737 DoubleUpArrow: DoubleUpArrow,
4738 DoubleUpDownArrow: DoubleUpDownArrow,
4739 DoubleVerticalBar: DoubleVerticalBar,
4740 DownArrowBar: DownArrowBar,
4741 downarrow: downarrow,
4742 DownArrow: DownArrow,
4743 Downarrow: Downarrow,
4744 DownArrowUpArrow: DownArrowUpArrow,
4745 DownBreve: DownBreve,
4746 downdownarrows: downdownarrows,
4747 downharpoonleft: downharpoonleft,
4748 downharpoonright: downharpoonright,
4749 DownLeftRightVector: DownLeftRightVector,
4750 DownLeftTeeVector: DownLeftTeeVector,
4751 DownLeftVectorBar: DownLeftVectorBar,
4752 DownLeftVector: DownLeftVector,
4753 DownRightTeeVector: DownRightTeeVector,
4754 DownRightVectorBar: DownRightVectorBar,
4755 DownRightVector: DownRightVector,
4756 DownTeeArrow: DownTeeArrow,
4757 DownTee: DownTee,
4758 drbkarow: drbkarow,
4759 drcorn: drcorn,
4760 drcrop: drcrop,
4761 Dscr: Dscr,
4762 dscr: dscr,
4763 DScy: DScy,
4764 dscy: dscy,
4765 dsol: dsol,
4766 Dstrok: Dstrok,
4767 dstrok: dstrok,
4768 dtdot: dtdot,
4769 dtri: dtri,
4770 dtrif: dtrif,
4771 duarr: duarr,
4772 duhar: duhar,
4773 dwangle: dwangle,
4774 DZcy: DZcy,
4775 dzcy: dzcy,
4776 dzigrarr: dzigrarr,
4777 Eacute: Eacute,
4778 eacute: eacute,
4779 easter: easter,
4780 Ecaron: Ecaron,
4781 ecaron: ecaron,
4782 Ecirc: Ecirc,
4783 ecirc: ecirc,
4784 ecir: ecir,
4785 ecolon: ecolon,
4786 Ecy: Ecy,
4787 ecy: ecy,
4788 eDDot: eDDot,
4789 Edot: Edot,
4790 edot: edot,
4791 eDot: eDot,
4792 ee: ee,
4793 efDot: efDot,
4794 Efr: Efr,
4795 efr: efr,
4796 eg: eg,
4797 Egrave: Egrave,
4798 egrave: egrave,
4799 egs: egs,
4800 egsdot: egsdot,
4801 el: el,
4802 Element: Element,
4803 elinters: elinters,
4804 ell: ell,
4805 els: els,
4806 elsdot: elsdot,
4807 Emacr: Emacr,
4808 emacr: emacr,
4809 empty: empty,
4810 emptyset: emptyset,
4811 EmptySmallSquare: EmptySmallSquare,
4812 emptyv: emptyv,
4813 EmptyVerySmallSquare: EmptyVerySmallSquare,
4814 emsp13: emsp13,
4815 emsp14: emsp14,
4816 emsp: emsp,
4817 ENG: ENG,
4818 eng: eng,
4819 ensp: ensp,
4820 Eogon: Eogon,
4821 eogon: eogon,
4822 Eopf: Eopf,
4823 eopf: eopf,
4824 epar: epar,
4825 eparsl: eparsl,
4826 eplus: eplus,
4827 epsi: epsi,
4828 Epsilon: Epsilon,
4829 epsilon: epsilon,
4830 epsiv: epsiv,
4831 eqcirc: eqcirc,
4832 eqcolon: eqcolon,
4833 eqsim: eqsim,
4834 eqslantgtr: eqslantgtr,
4835 eqslantless: eqslantless,
4836 Equal: Equal,
4837 equals: equals,
4838 EqualTilde: EqualTilde,
4839 equest: equest,
4840 Equilibrium: Equilibrium,
4841 equiv: equiv,
4842 equivDD: equivDD,
4843 eqvparsl: eqvparsl,
4844 erarr: erarr,
4845 erDot: erDot,
4846 escr: escr,
4847 Escr: Escr,
4848 esdot: esdot,
4849 Esim: Esim,
4850 esim: esim,
4851 Eta: Eta,
4852 eta: eta,
4853 ETH: ETH,
4854 eth: eth,
4855 Euml: Euml,
4856 euml: euml,
4857 euro: euro,
4858 excl: excl,
4859 exist: exist,
4860 Exists: Exists,
4861 expectation: expectation,
4862 exponentiale: exponentiale,
4863 ExponentialE: ExponentialE,
4864 fallingdotseq: fallingdotseq,
4865 Fcy: Fcy,
4866 fcy: fcy,
4867 female: female,
4868 ffilig: ffilig,
4869 fflig: fflig,
4870 ffllig: ffllig,
4871 Ffr: Ffr,
4872 ffr: ffr,
4873 filig: filig,
4874 FilledSmallSquare: FilledSmallSquare,
4875 FilledVerySmallSquare: FilledVerySmallSquare,
4876 fjlig: fjlig,
4877 flat: flat,
4878 fllig: fllig,
4879 fltns: fltns,
4880 fnof: fnof,
4881 Fopf: Fopf,
4882 fopf: fopf,
4883 forall: forall,
4884 ForAll: ForAll,
4885 fork: fork,
4886 forkv: forkv,
4887 Fouriertrf: Fouriertrf,
4888 fpartint: fpartint,
4889 frac12: frac12,
4890 frac13: frac13,
4891 frac14: frac14,
4892 frac15: frac15,
4893 frac16: frac16,
4894 frac18: frac18,
4895 frac23: frac23,
4896 frac25: frac25,
4897 frac34: frac34,
4898 frac35: frac35,
4899 frac38: frac38,
4900 frac45: frac45,
4901 frac56: frac56,
4902 frac58: frac58,
4903 frac78: frac78,
4904 frasl: frasl,
4905 frown: frown,
4906 fscr: fscr,
4907 Fscr: Fscr,
4908 gacute: gacute,
4909 Gamma: Gamma,
4910 gamma: gamma,
4911 Gammad: Gammad,
4912 gammad: gammad,
4913 gap: gap,
4914 Gbreve: Gbreve,
4915 gbreve: gbreve,
4916 Gcedil: Gcedil,
4917 Gcirc: Gcirc,
4918 gcirc: gcirc,
4919 Gcy: Gcy,
4920 gcy: gcy,
4921 Gdot: Gdot,
4922 gdot: gdot,
4923 ge: ge,
4924 gE: gE,
4925 gEl: gEl,
4926 gel: gel,
4927 geq: geq,
4928 geqq: geqq,
4929 geqslant: geqslant,
4930 gescc: gescc,
4931 ges: ges,
4932 gesdot: gesdot,
4933 gesdoto: gesdoto,
4934 gesdotol: gesdotol,
4935 gesl: gesl,
4936 gesles: gesles,
4937 Gfr: Gfr,
4938 gfr: gfr,
4939 gg: gg,
4940 Gg: Gg,
4941 ggg: ggg,
4942 gimel: gimel,
4943 GJcy: GJcy,
4944 gjcy: gjcy,
4945 gla: gla,
4946 gl: gl,
4947 glE: glE,
4948 glj: glj,
4949 gnap: gnap,
4950 gnapprox: gnapprox,
4951 gne: gne,
4952 gnE: gnE,
4953 gneq: gneq,
4954 gneqq: gneqq,
4955 gnsim: gnsim,
4956 Gopf: Gopf,
4957 gopf: gopf,
4958 grave: grave,
4959 GreaterEqual: GreaterEqual,
4960 GreaterEqualLess: GreaterEqualLess,
4961 GreaterFullEqual: GreaterFullEqual,
4962 GreaterGreater: GreaterGreater,
4963 GreaterLess: GreaterLess,
4964 GreaterSlantEqual: GreaterSlantEqual,
4965 GreaterTilde: GreaterTilde,
4966 Gscr: Gscr,
4967 gscr: gscr,
4968 gsim: gsim,
4969 gsime: gsime,
4970 gsiml: gsiml,
4971 gtcc: gtcc,
4972 gtcir: gtcir,
4973 gt: gt,
4974 GT: GT,
4975 Gt: Gt,
4976 gtdot: gtdot,
4977 gtlPar: gtlPar,
4978 gtquest: gtquest,
4979 gtrapprox: gtrapprox,
4980 gtrarr: gtrarr,
4981 gtrdot: gtrdot,
4982 gtreqless: gtreqless,
4983 gtreqqless: gtreqqless,
4984 gtrless: gtrless,
4985 gtrsim: gtrsim,
4986 gvertneqq: gvertneqq,
4987 gvnE: gvnE,
4988 Hacek: Hacek,
4989 hairsp: hairsp,
4990 half: half,
4991 hamilt: hamilt,
4992 HARDcy: HARDcy,
4993 hardcy: hardcy,
4994 harrcir: harrcir,
4995 harr: harr,
4996 hArr: hArr,
4997 harrw: harrw,
4998 Hat: Hat,
4999 hbar: hbar,
5000 Hcirc: Hcirc,
5001 hcirc: hcirc,
5002 hearts: hearts,
5003 heartsuit: heartsuit,
5004 hellip: hellip,
5005 hercon: hercon,
5006 hfr: hfr,
5007 Hfr: Hfr,
5008 HilbertSpace: HilbertSpace,
5009 hksearow: hksearow,
5010 hkswarow: hkswarow,
5011 hoarr: hoarr,
5012 homtht: homtht,
5013 hookleftarrow: hookleftarrow,
5014 hookrightarrow: hookrightarrow,
5015 hopf: hopf,
5016 Hopf: Hopf,
5017 horbar: horbar,
5018 HorizontalLine: HorizontalLine,
5019 hscr: hscr,
5020 Hscr: Hscr,
5021 hslash: hslash,
5022 Hstrok: Hstrok,
5023 hstrok: hstrok,
5024 HumpDownHump: HumpDownHump,
5025 HumpEqual: HumpEqual,
5026 hybull: hybull,
5027 hyphen: hyphen,
5028 Iacute: Iacute,
5029 iacute: iacute,
5030 ic: ic,
5031 Icirc: Icirc,
5032 icirc: icirc,
5033 Icy: Icy,
5034 icy: icy,
5035 Idot: Idot,
5036 IEcy: IEcy,
5037 iecy: iecy,
5038 iexcl: iexcl,
5039 iff: iff,
5040 ifr: ifr,
5041 Ifr: Ifr,
5042 Igrave: Igrave,
5043 igrave: igrave,
5044 ii: ii,
5045 iiiint: iiiint,
5046 iiint: iiint,
5047 iinfin: iinfin,
5048 iiota: iiota,
5049 IJlig: IJlig,
5050 ijlig: ijlig,
5051 Imacr: Imacr,
5052 imacr: imacr,
5053 image: image,
5054 ImaginaryI: ImaginaryI,
5055 imagline: imagline,
5056 imagpart: imagpart,
5057 imath: imath,
5058 Im: Im,
5059 imof: imof,
5060 imped: imped,
5061 Implies: Implies,
5062 incare: incare,
5063 infin: infin,
5064 infintie: infintie,
5065 inodot: inodot,
5066 intcal: intcal,
5067 int: int,
5068 Int: Int,
5069 integers: integers,
5070 Integral: Integral,
5071 intercal: intercal,
5072 Intersection: Intersection,
5073 intlarhk: intlarhk,
5074 intprod: intprod,
5075 InvisibleComma: InvisibleComma,
5076 InvisibleTimes: InvisibleTimes,
5077 IOcy: IOcy,
5078 iocy: iocy,
5079 Iogon: Iogon,
5080 iogon: iogon,
5081 Iopf: Iopf,
5082 iopf: iopf,
5083 Iota: Iota,
5084 iota: iota,
5085 iprod: iprod,
5086 iquest: iquest,
5087 iscr: iscr,
5088 Iscr: Iscr,
5089 isin: isin,
5090 isindot: isindot,
5091 isinE: isinE,
5092 isins: isins,
5093 isinsv: isinsv,
5094 isinv: isinv,
5095 it: it,
5096 Itilde: Itilde,
5097 itilde: itilde,
5098 Iukcy: Iukcy,
5099 iukcy: iukcy,
5100 Iuml: Iuml,
5101 iuml: iuml,
5102 Jcirc: Jcirc,
5103 jcirc: jcirc,
5104 Jcy: Jcy,
5105 jcy: jcy,
5106 Jfr: Jfr,
5107 jfr: jfr,
5108 jmath: jmath,
5109 Jopf: Jopf,
5110 jopf: jopf,
5111 Jscr: Jscr,
5112 jscr: jscr,
5113 Jsercy: Jsercy,
5114 jsercy: jsercy,
5115 Jukcy: Jukcy,
5116 jukcy: jukcy,
5117 Kappa: Kappa,
5118 kappa: kappa,
5119 kappav: kappav,
5120 Kcedil: Kcedil,
5121 kcedil: kcedil,
5122 Kcy: Kcy,
5123 kcy: kcy,
5124 Kfr: Kfr,
5125 kfr: kfr,
5126 kgreen: kgreen,
5127 KHcy: KHcy,
5128 khcy: khcy,
5129 KJcy: KJcy,
5130 kjcy: kjcy,
5131 Kopf: Kopf,
5132 kopf: kopf,
5133 Kscr: Kscr,
5134 kscr: kscr,
5135 lAarr: lAarr,
5136 Lacute: Lacute,
5137 lacute: lacute,
5138 laemptyv: laemptyv,
5139 lagran: lagran,
5140 Lambda: Lambda,
5141 lambda: lambda,
5142 lang: lang,
5143 Lang: Lang,
5144 langd: langd,
5145 langle: langle,
5146 lap: lap,
5147 Laplacetrf: Laplacetrf,
5148 laquo: laquo,
5149 larrb: larrb,
5150 larrbfs: larrbfs,
5151 larr: larr,
5152 Larr: Larr,
5153 lArr: lArr,
5154 larrfs: larrfs,
5155 larrhk: larrhk,
5156 larrlp: larrlp,
5157 larrpl: larrpl,
5158 larrsim: larrsim,
5159 larrtl: larrtl,
5160 latail: latail,
5161 lAtail: lAtail,
5162 lat: lat,
5163 late: late,
5164 lates: lates,
5165 lbarr: lbarr,
5166 lBarr: lBarr,
5167 lbbrk: lbbrk,
5168 lbrace: lbrace,
5169 lbrack: lbrack,
5170 lbrke: lbrke,
5171 lbrksld: lbrksld,
5172 lbrkslu: lbrkslu,
5173 Lcaron: Lcaron,
5174 lcaron: lcaron,
5175 Lcedil: Lcedil,
5176 lcedil: lcedil,
5177 lceil: lceil,
5178 lcub: lcub,
5179 Lcy: Lcy,
5180 lcy: lcy,
5181 ldca: ldca,
5182 ldquo: ldquo,
5183 ldquor: ldquor,
5184 ldrdhar: ldrdhar,
5185 ldrushar: ldrushar,
5186 ldsh: ldsh,
5187 le: le,
5188 lE: lE,
5189 LeftAngleBracket: LeftAngleBracket,
5190 LeftArrowBar: LeftArrowBar,
5191 leftarrow: leftarrow,
5192 LeftArrow: LeftArrow,
5193 Leftarrow: Leftarrow,
5194 LeftArrowRightArrow: LeftArrowRightArrow,
5195 leftarrowtail: leftarrowtail,
5196 LeftCeiling: LeftCeiling,
5197 LeftDoubleBracket: LeftDoubleBracket,
5198 LeftDownTeeVector: LeftDownTeeVector,
5199 LeftDownVectorBar: LeftDownVectorBar,
5200 LeftDownVector: LeftDownVector,
5201 LeftFloor: LeftFloor,
5202 leftharpoondown: leftharpoondown,
5203 leftharpoonup: leftharpoonup,
5204 leftleftarrows: leftleftarrows,
5205 leftrightarrow: leftrightarrow,
5206 LeftRightArrow: LeftRightArrow,
5207 Leftrightarrow: Leftrightarrow,
5208 leftrightarrows: leftrightarrows,
5209 leftrightharpoons: leftrightharpoons,
5210 leftrightsquigarrow: leftrightsquigarrow,
5211 LeftRightVector: LeftRightVector,
5212 LeftTeeArrow: LeftTeeArrow,
5213 LeftTee: LeftTee,
5214 LeftTeeVector: LeftTeeVector,
5215 leftthreetimes: leftthreetimes,
5216 LeftTriangleBar: LeftTriangleBar,
5217 LeftTriangle: LeftTriangle,
5218 LeftTriangleEqual: LeftTriangleEqual,
5219 LeftUpDownVector: LeftUpDownVector,
5220 LeftUpTeeVector: LeftUpTeeVector,
5221 LeftUpVectorBar: LeftUpVectorBar,
5222 LeftUpVector: LeftUpVector,
5223 LeftVectorBar: LeftVectorBar,
5224 LeftVector: LeftVector,
5225 lEg: lEg,
5226 leg: leg,
5227 leq: leq,
5228 leqq: leqq,
5229 leqslant: leqslant,
5230 lescc: lescc,
5231 les: les,
5232 lesdot: lesdot,
5233 lesdoto: lesdoto,
5234 lesdotor: lesdotor,
5235 lesg: lesg,
5236 lesges: lesges,
5237 lessapprox: lessapprox,
5238 lessdot: lessdot,
5239 lesseqgtr: lesseqgtr,
5240 lesseqqgtr: lesseqqgtr,
5241 LessEqualGreater: LessEqualGreater,
5242 LessFullEqual: LessFullEqual,
5243 LessGreater: LessGreater,
5244 lessgtr: lessgtr,
5245 LessLess: LessLess,
5246 lesssim: lesssim,
5247 LessSlantEqual: LessSlantEqual,
5248 LessTilde: LessTilde,
5249 lfisht: lfisht,
5250 lfloor: lfloor,
5251 Lfr: Lfr,
5252 lfr: lfr,
5253 lg: lg,
5254 lgE: lgE,
5255 lHar: lHar,
5256 lhard: lhard,
5257 lharu: lharu,
5258 lharul: lharul,
5259 lhblk: lhblk,
5260 LJcy: LJcy,
5261 ljcy: ljcy,
5262 llarr: llarr,
5263 ll: ll,
5264 Ll: Ll,
5265 llcorner: llcorner,
5266 Lleftarrow: Lleftarrow,
5267 llhard: llhard,
5268 lltri: lltri,
5269 Lmidot: Lmidot,
5270 lmidot: lmidot,
5271 lmoustache: lmoustache,
5272 lmoust: lmoust,
5273 lnap: lnap,
5274 lnapprox: lnapprox,
5275 lne: lne,
5276 lnE: lnE,
5277 lneq: lneq,
5278 lneqq: lneqq,
5279 lnsim: lnsim,
5280 loang: loang,
5281 loarr: loarr,
5282 lobrk: lobrk,
5283 longleftarrow: longleftarrow,
5284 LongLeftArrow: LongLeftArrow,
5285 Longleftarrow: Longleftarrow,
5286 longleftrightarrow: longleftrightarrow,
5287 LongLeftRightArrow: LongLeftRightArrow,
5288 Longleftrightarrow: Longleftrightarrow,
5289 longmapsto: longmapsto,
5290 longrightarrow: longrightarrow,
5291 LongRightArrow: LongRightArrow,
5292 Longrightarrow: Longrightarrow,
5293 looparrowleft: looparrowleft,
5294 looparrowright: looparrowright,
5295 lopar: lopar,
5296 Lopf: Lopf,
5297 lopf: lopf,
5298 loplus: loplus,
5299 lotimes: lotimes,
5300 lowast: lowast,
5301 lowbar: lowbar,
5302 LowerLeftArrow: LowerLeftArrow,
5303 LowerRightArrow: LowerRightArrow,
5304 loz: loz,
5305 lozenge: lozenge,
5306 lozf: lozf,
5307 lpar: lpar,
5308 lparlt: lparlt,
5309 lrarr: lrarr,
5310 lrcorner: lrcorner,
5311 lrhar: lrhar,
5312 lrhard: lrhard,
5313 lrm: lrm,
5314 lrtri: lrtri,
5315 lsaquo: lsaquo,
5316 lscr: lscr,
5317 Lscr: Lscr,
5318 lsh: lsh,
5319 Lsh: Lsh,
5320 lsim: lsim,
5321 lsime: lsime,
5322 lsimg: lsimg,
5323 lsqb: lsqb,
5324 lsquo: lsquo,
5325 lsquor: lsquor,
5326 Lstrok: Lstrok,
5327 lstrok: lstrok,
5328 ltcc: ltcc,
5329 ltcir: ltcir,
5330 lt: lt,
5331 LT: LT,
5332 Lt: Lt,
5333 ltdot: ltdot,
5334 lthree: lthree,
5335 ltimes: ltimes,
5336 ltlarr: ltlarr,
5337 ltquest: ltquest,
5338 ltri: ltri,
5339 ltrie: ltrie,
5340 ltrif: ltrif,
5341 ltrPar: ltrPar,
5342 lurdshar: lurdshar,
5343 luruhar: luruhar,
5344 lvertneqq: lvertneqq,
5345 lvnE: lvnE,
5346 macr: macr,
5347 male: male,
5348 malt: malt,
5349 maltese: maltese,
5350 map: map,
5351 mapsto: mapsto,
5352 mapstodown: mapstodown,
5353 mapstoleft: mapstoleft,
5354 mapstoup: mapstoup,
5355 marker: marker,
5356 mcomma: mcomma,
5357 Mcy: Mcy,
5358 mcy: mcy,
5359 mdash: mdash,
5360 mDDot: mDDot,
5361 measuredangle: measuredangle,
5362 MediumSpace: MediumSpace,
5363 Mellintrf: Mellintrf,
5364 Mfr: Mfr,
5365 mfr: mfr,
5366 mho: mho,
5367 micro: micro,
5368 midast: midast,
5369 midcir: midcir,
5370 mid: mid,
5371 middot: middot,
5372 minusb: minusb,
5373 minus: minus,
5374 minusd: minusd,
5375 minusdu: minusdu,
5376 MinusPlus: MinusPlus,
5377 mlcp: mlcp,
5378 mldr: mldr,
5379 mnplus: mnplus,
5380 models: models,
5381 Mopf: Mopf,
5382 mopf: mopf,
5383 mp: mp,
5384 mscr: mscr,
5385 Mscr: Mscr,
5386 mstpos: mstpos,
5387 Mu: Mu,
5388 mu: mu,
5389 multimap: multimap,
5390 mumap: mumap,
5391 nabla: nabla,
5392 Nacute: Nacute,
5393 nacute: nacute,
5394 nang: nang,
5395 nap: nap,
5396 napE: napE,
5397 napid: napid,
5398 napos: napos,
5399 napprox: napprox,
5400 natural: natural,
5401 naturals: naturals,
5402 natur: natur,
5403 nbsp: nbsp,
5404 nbump: nbump,
5405 nbumpe: nbumpe,
5406 ncap: ncap,
5407 Ncaron: Ncaron,
5408 ncaron: ncaron,
5409 Ncedil: Ncedil,
5410 ncedil: ncedil,
5411 ncong: ncong,
5412 ncongdot: ncongdot,
5413 ncup: ncup,
5414 Ncy: Ncy,
5415 ncy: ncy,
5416 ndash: ndash,
5417 nearhk: nearhk,
5418 nearr: nearr,
5419 neArr: neArr,
5420 nearrow: nearrow,
5421 ne: ne,
5422 nedot: nedot,
5423 NegativeMediumSpace: NegativeMediumSpace,
5424 NegativeThickSpace: NegativeThickSpace,
5425 NegativeThinSpace: NegativeThinSpace,
5426 NegativeVeryThinSpace: NegativeVeryThinSpace,
5427 nequiv: nequiv,
5428 nesear: nesear,
5429 nesim: nesim,
5430 NestedGreaterGreater: NestedGreaterGreater,
5431 NestedLessLess: NestedLessLess,
5432 NewLine: NewLine,
5433 nexist: nexist,
5434 nexists: nexists,
5435 Nfr: Nfr,
5436 nfr: nfr,
5437 ngE: ngE,
5438 nge: nge,
5439 ngeq: ngeq,
5440 ngeqq: ngeqq,
5441 ngeqslant: ngeqslant,
5442 nges: nges,
5443 nGg: nGg,
5444 ngsim: ngsim,
5445 nGt: nGt,
5446 ngt: ngt,
5447 ngtr: ngtr,
5448 nGtv: nGtv,
5449 nharr: nharr,
5450 nhArr: nhArr,
5451 nhpar: nhpar,
5452 ni: ni,
5453 nis: nis,
5454 nisd: nisd,
5455 niv: niv,
5456 NJcy: NJcy,
5457 njcy: njcy,
5458 nlarr: nlarr,
5459 nlArr: nlArr,
5460 nldr: nldr,
5461 nlE: nlE,
5462 nle: nle,
5463 nleftarrow: nleftarrow,
5464 nLeftarrow: nLeftarrow,
5465 nleftrightarrow: nleftrightarrow,
5466 nLeftrightarrow: nLeftrightarrow,
5467 nleq: nleq,
5468 nleqq: nleqq,
5469 nleqslant: nleqslant,
5470 nles: nles,
5471 nless: nless,
5472 nLl: nLl,
5473 nlsim: nlsim,
5474 nLt: nLt,
5475 nlt: nlt,
5476 nltri: nltri,
5477 nltrie: nltrie,
5478 nLtv: nLtv,
5479 nmid: nmid,
5480 NoBreak: NoBreak,
5481 NonBreakingSpace: NonBreakingSpace,
5482 nopf: nopf,
5483 Nopf: Nopf,
5484 Not: Not,
5485 not: not,
5486 NotCongruent: NotCongruent,
5487 NotCupCap: NotCupCap,
5488 NotDoubleVerticalBar: NotDoubleVerticalBar,
5489 NotElement: NotElement,
5490 NotEqual: NotEqual,
5491 NotEqualTilde: NotEqualTilde,
5492 NotExists: NotExists,
5493 NotGreater: NotGreater,
5494 NotGreaterEqual: NotGreaterEqual,
5495 NotGreaterFullEqual: NotGreaterFullEqual,
5496 NotGreaterGreater: NotGreaterGreater,
5497 NotGreaterLess: NotGreaterLess,
5498 NotGreaterSlantEqual: NotGreaterSlantEqual,
5499 NotGreaterTilde: NotGreaterTilde,
5500 NotHumpDownHump: NotHumpDownHump,
5501 NotHumpEqual: NotHumpEqual,
5502 notin: notin,
5503 notindot: notindot,
5504 notinE: notinE,
5505 notinva: notinva,
5506 notinvb: notinvb,
5507 notinvc: notinvc,
5508 NotLeftTriangleBar: NotLeftTriangleBar,
5509 NotLeftTriangle: NotLeftTriangle,
5510 NotLeftTriangleEqual: NotLeftTriangleEqual,
5511 NotLess: NotLess,
5512 NotLessEqual: NotLessEqual,
5513 NotLessGreater: NotLessGreater,
5514 NotLessLess: NotLessLess,
5515 NotLessSlantEqual: NotLessSlantEqual,
5516 NotLessTilde: NotLessTilde,
5517 NotNestedGreaterGreater: NotNestedGreaterGreater,
5518 NotNestedLessLess: NotNestedLessLess,
5519 notni: notni,
5520 notniva: notniva,
5521 notnivb: notnivb,
5522 notnivc: notnivc,
5523 NotPrecedes: NotPrecedes,
5524 NotPrecedesEqual: NotPrecedesEqual,
5525 NotPrecedesSlantEqual: NotPrecedesSlantEqual,
5526 NotReverseElement: NotReverseElement,
5527 NotRightTriangleBar: NotRightTriangleBar,
5528 NotRightTriangle: NotRightTriangle,
5529 NotRightTriangleEqual: NotRightTriangleEqual,
5530 NotSquareSubset: NotSquareSubset,
5531 NotSquareSubsetEqual: NotSquareSubsetEqual,
5532 NotSquareSuperset: NotSquareSuperset,
5533 NotSquareSupersetEqual: NotSquareSupersetEqual,
5534 NotSubset: NotSubset,
5535 NotSubsetEqual: NotSubsetEqual,
5536 NotSucceeds: NotSucceeds,
5537 NotSucceedsEqual: NotSucceedsEqual,
5538 NotSucceedsSlantEqual: NotSucceedsSlantEqual,
5539 NotSucceedsTilde: NotSucceedsTilde,
5540 NotSuperset: NotSuperset,
5541 NotSupersetEqual: NotSupersetEqual,
5542 NotTilde: NotTilde,
5543 NotTildeEqual: NotTildeEqual,
5544 NotTildeFullEqual: NotTildeFullEqual,
5545 NotTildeTilde: NotTildeTilde,
5546 NotVerticalBar: NotVerticalBar,
5547 nparallel: nparallel,
5548 npar: npar,
5549 nparsl: nparsl,
5550 npart: npart,
5551 npolint: npolint,
5552 npr: npr,
5553 nprcue: nprcue,
5554 nprec: nprec,
5555 npreceq: npreceq,
5556 npre: npre,
5557 nrarrc: nrarrc,
5558 nrarr: nrarr,
5559 nrArr: nrArr,
5560 nrarrw: nrarrw,
5561 nrightarrow: nrightarrow,
5562 nRightarrow: nRightarrow,
5563 nrtri: nrtri,
5564 nrtrie: nrtrie,
5565 nsc: nsc,
5566 nsccue: nsccue,
5567 nsce: nsce,
5568 Nscr: Nscr,
5569 nscr: nscr,
5570 nshortmid: nshortmid,
5571 nshortparallel: nshortparallel,
5572 nsim: nsim,
5573 nsime: nsime,
5574 nsimeq: nsimeq,
5575 nsmid: nsmid,
5576 nspar: nspar,
5577 nsqsube: nsqsube,
5578 nsqsupe: nsqsupe,
5579 nsub: nsub,
5580 nsubE: nsubE,
5581 nsube: nsube,
5582 nsubset: nsubset,
5583 nsubseteq: nsubseteq,
5584 nsubseteqq: nsubseteqq,
5585 nsucc: nsucc,
5586 nsucceq: nsucceq,
5587 nsup: nsup,
5588 nsupE: nsupE,
5589 nsupe: nsupe,
5590 nsupset: nsupset,
5591 nsupseteq: nsupseteq,
5592 nsupseteqq: nsupseteqq,
5593 ntgl: ntgl,
5594 Ntilde: Ntilde,
5595 ntilde: ntilde,
5596 ntlg: ntlg,
5597 ntriangleleft: ntriangleleft,
5598 ntrianglelefteq: ntrianglelefteq,
5599 ntriangleright: ntriangleright,
5600 ntrianglerighteq: ntrianglerighteq,
5601 Nu: Nu,
5602 nu: nu,
5603 num: num,
5604 numero: numero,
5605 numsp: numsp,
5606 nvap: nvap,
5607 nvdash: nvdash,
5608 nvDash: nvDash,
5609 nVdash: nVdash,
5610 nVDash: nVDash,
5611 nvge: nvge,
5612 nvgt: nvgt,
5613 nvHarr: nvHarr,
5614 nvinfin: nvinfin,
5615 nvlArr: nvlArr,
5616 nvle: nvle,
5617 nvlt: nvlt,
5618 nvltrie: nvltrie,
5619 nvrArr: nvrArr,
5620 nvrtrie: nvrtrie,
5621 nvsim: nvsim,
5622 nwarhk: nwarhk,
5623 nwarr: nwarr,
5624 nwArr: nwArr,
5625 nwarrow: nwarrow,
5626 nwnear: nwnear,
5627 Oacute: Oacute,
5628 oacute: oacute,
5629 oast: oast,
5630 Ocirc: Ocirc,
5631 ocirc: ocirc,
5632 ocir: ocir,
5633 Ocy: Ocy,
5634 ocy: ocy,
5635 odash: odash,
5636 Odblac: Odblac,
5637 odblac: odblac,
5638 odiv: odiv,
5639 odot: odot,
5640 odsold: odsold,
5641 OElig: OElig,
5642 oelig: oelig,
5643 ofcir: ofcir,
5644 Ofr: Ofr,
5645 ofr: ofr,
5646 ogon: ogon,
5647 Ograve: Ograve,
5648 ograve: ograve,
5649 ogt: ogt,
5650 ohbar: ohbar,
5651 ohm: ohm,
5652 oint: oint,
5653 olarr: olarr,
5654 olcir: olcir,
5655 olcross: olcross,
5656 oline: oline,
5657 olt: olt,
5658 Omacr: Omacr,
5659 omacr: omacr,
5660 Omega: Omega,
5661 omega: omega,
5662 Omicron: Omicron,
5663 omicron: omicron,
5664 omid: omid,
5665 ominus: ominus,
5666 Oopf: Oopf,
5667 oopf: oopf,
5668 opar: opar,
5669 OpenCurlyDoubleQuote: OpenCurlyDoubleQuote,
5670 OpenCurlyQuote: OpenCurlyQuote,
5671 operp: operp,
5672 oplus: oplus,
5673 orarr: orarr,
5674 Or: Or,
5675 or: or,
5676 ord: ord,
5677 order: order,
5678 orderof: orderof,
5679 ordf: ordf,
5680 ordm: ordm,
5681 origof: origof,
5682 oror: oror,
5683 orslope: orslope,
5684 orv: orv,
5685 oS: oS,
5686 Oscr: Oscr,
5687 oscr: oscr,
5688 Oslash: Oslash,
5689 oslash: oslash,
5690 osol: osol,
5691 Otilde: Otilde,
5692 otilde: otilde,
5693 otimesas: otimesas,
5694 Otimes: Otimes,
5695 otimes: otimes,
5696 Ouml: Ouml,
5697 ouml: ouml,
5698 ovbar: ovbar,
5699 OverBar: OverBar,
5700 OverBrace: OverBrace,
5701 OverBracket: OverBracket,
5702 OverParenthesis: OverParenthesis,
5703 para: para,
5704 parallel: parallel,
5705 par: par,
5706 parsim: parsim,
5707 parsl: parsl,
5708 part: part,
5709 PartialD: PartialD,
5710 Pcy: Pcy,
5711 pcy: pcy,
5712 percnt: percnt,
5713 period: period,
5714 permil: permil,
5715 perp: perp,
5716 pertenk: pertenk,
5717 Pfr: Pfr,
5718 pfr: pfr,
5719 Phi: Phi,
5720 phi: phi,
5721 phiv: phiv,
5722 phmmat: phmmat,
5723 phone: phone,
5724 Pi: Pi,
5725 pi: pi,
5726 pitchfork: pitchfork,
5727 piv: piv,
5728 planck: planck,
5729 planckh: planckh,
5730 plankv: plankv,
5731 plusacir: plusacir,
5732 plusb: plusb,
5733 pluscir: pluscir,
5734 plus: plus,
5735 plusdo: plusdo,
5736 plusdu: plusdu,
5737 pluse: pluse,
5738 PlusMinus: PlusMinus,
5739 plusmn: plusmn,
5740 plussim: plussim,
5741 plustwo: plustwo,
5742 pm: pm,
5743 Poincareplane: Poincareplane,
5744 pointint: pointint,
5745 popf: popf,
5746 Popf: Popf,
5747 pound: pound,
5748 prap: prap,
5749 Pr: Pr,
5750 pr: pr,
5751 prcue: prcue,
5752 precapprox: precapprox,
5753 prec: prec,
5754 preccurlyeq: preccurlyeq,
5755 Precedes: Precedes,
5756 PrecedesEqual: PrecedesEqual,
5757 PrecedesSlantEqual: PrecedesSlantEqual,
5758 PrecedesTilde: PrecedesTilde,
5759 preceq: preceq,
5760 precnapprox: precnapprox,
5761 precneqq: precneqq,
5762 precnsim: precnsim,
5763 pre: pre,
5764 prE: prE,
5765 precsim: precsim,
5766 prime: prime,
5767 Prime: Prime,
5768 primes: primes,
5769 prnap: prnap,
5770 prnE: prnE,
5771 prnsim: prnsim,
5772 prod: prod,
5773 Product: Product,
5774 profalar: profalar,
5775 profline: profline,
5776 profsurf: profsurf,
5777 prop: prop,
5778 Proportional: Proportional,
5779 Proportion: Proportion,
5780 propto: propto,
5781 prsim: prsim,
5782 prurel: prurel,
5783 Pscr: Pscr,
5784 pscr: pscr,
5785 Psi: Psi,
5786 psi: psi,
5787 puncsp: puncsp,
5788 Qfr: Qfr,
5789 qfr: qfr,
5790 qint: qint,
5791 qopf: qopf,
5792 Qopf: Qopf,
5793 qprime: qprime,
5794 Qscr: Qscr,
5795 qscr: qscr,
5796 quaternions: quaternions,
5797 quatint: quatint,
5798 quest: quest,
5799 questeq: questeq,
5800 quot: quot,
5801 QUOT: QUOT,
5802 rAarr: rAarr,
5803 race: race,
5804 Racute: Racute,
5805 racute: racute,
5806 radic: radic,
5807 raemptyv: raemptyv,
5808 rang: rang,
5809 Rang: Rang,
5810 rangd: rangd,
5811 range: range,
5812 rangle: rangle,
5813 raquo: raquo,
5814 rarrap: rarrap,
5815 rarrb: rarrb,
5816 rarrbfs: rarrbfs,
5817 rarrc: rarrc,
5818 rarr: rarr,
5819 Rarr: Rarr,
5820 rArr: rArr,
5821 rarrfs: rarrfs,
5822 rarrhk: rarrhk,
5823 rarrlp: rarrlp,
5824 rarrpl: rarrpl,
5825 rarrsim: rarrsim,
5826 Rarrtl: Rarrtl,
5827 rarrtl: rarrtl,
5828 rarrw: rarrw,
5829 ratail: ratail,
5830 rAtail: rAtail,
5831 ratio: ratio,
5832 rationals: rationals,
5833 rbarr: rbarr,
5834 rBarr: rBarr,
5835 RBarr: RBarr,
5836 rbbrk: rbbrk,
5837 rbrace: rbrace,
5838 rbrack: rbrack,
5839 rbrke: rbrke,
5840 rbrksld: rbrksld,
5841 rbrkslu: rbrkslu,
5842 Rcaron: Rcaron,
5843 rcaron: rcaron,
5844 Rcedil: Rcedil,
5845 rcedil: rcedil,
5846 rceil: rceil,
5847 rcub: rcub,
5848 Rcy: Rcy,
5849 rcy: rcy,
5850 rdca: rdca,
5851 rdldhar: rdldhar,
5852 rdquo: rdquo,
5853 rdquor: rdquor,
5854 rdsh: rdsh,
5855 real: real,
5856 realine: realine,
5857 realpart: realpart,
5858 reals: reals,
5859 Re: Re,
5860 rect: rect,
5861 reg: reg,
5862 REG: REG,
5863 ReverseElement: ReverseElement,
5864 ReverseEquilibrium: ReverseEquilibrium,
5865 ReverseUpEquilibrium: ReverseUpEquilibrium,
5866 rfisht: rfisht,
5867 rfloor: rfloor,
5868 rfr: rfr,
5869 Rfr: Rfr,
5870 rHar: rHar,
5871 rhard: rhard,
5872 rharu: rharu,
5873 rharul: rharul,
5874 Rho: Rho,
5875 rho: rho,
5876 rhov: rhov,
5877 RightAngleBracket: RightAngleBracket,
5878 RightArrowBar: RightArrowBar,
5879 rightarrow: rightarrow,
5880 RightArrow: RightArrow,
5881 Rightarrow: Rightarrow,
5882 RightArrowLeftArrow: RightArrowLeftArrow,
5883 rightarrowtail: rightarrowtail,
5884 RightCeiling: RightCeiling,
5885 RightDoubleBracket: RightDoubleBracket,
5886 RightDownTeeVector: RightDownTeeVector,
5887 RightDownVectorBar: RightDownVectorBar,
5888 RightDownVector: RightDownVector,
5889 RightFloor: RightFloor,
5890 rightharpoondown: rightharpoondown,
5891 rightharpoonup: rightharpoonup,
5892 rightleftarrows: rightleftarrows,
5893 rightleftharpoons: rightleftharpoons,
5894 rightrightarrows: rightrightarrows,
5895 rightsquigarrow: rightsquigarrow,
5896 RightTeeArrow: RightTeeArrow,
5897 RightTee: RightTee,
5898 RightTeeVector: RightTeeVector,
5899 rightthreetimes: rightthreetimes,
5900 RightTriangleBar: RightTriangleBar,
5901 RightTriangle: RightTriangle,
5902 RightTriangleEqual: RightTriangleEqual,
5903 RightUpDownVector: RightUpDownVector,
5904 RightUpTeeVector: RightUpTeeVector,
5905 RightUpVectorBar: RightUpVectorBar,
5906 RightUpVector: RightUpVector,
5907 RightVectorBar: RightVectorBar,
5908 RightVector: RightVector,
5909 ring: ring,
5910 risingdotseq: risingdotseq,
5911 rlarr: rlarr,
5912 rlhar: rlhar,
5913 rlm: rlm,
5914 rmoustache: rmoustache,
5915 rmoust: rmoust,
5916 rnmid: rnmid,
5917 roang: roang,
5918 roarr: roarr,
5919 robrk: robrk,
5920 ropar: ropar,
5921 ropf: ropf,
5922 Ropf: Ropf,
5923 roplus: roplus,
5924 rotimes: rotimes,
5925 RoundImplies: RoundImplies,
5926 rpar: rpar,
5927 rpargt: rpargt,
5928 rppolint: rppolint,
5929 rrarr: rrarr,
5930 Rrightarrow: Rrightarrow,
5931 rsaquo: rsaquo,
5932 rscr: rscr,
5933 Rscr: Rscr,
5934 rsh: rsh,
5935 Rsh: Rsh,
5936 rsqb: rsqb,
5937 rsquo: rsquo,
5938 rsquor: rsquor,
5939 rthree: rthree,
5940 rtimes: rtimes,
5941 rtri: rtri,
5942 rtrie: rtrie,
5943 rtrif: rtrif,
5944 rtriltri: rtriltri,
5945 RuleDelayed: RuleDelayed,
5946 ruluhar: ruluhar,
5947 rx: rx,
5948 Sacute: Sacute,
5949 sacute: sacute,
5950 sbquo: sbquo,
5951 scap: scap,
5952 Scaron: Scaron,
5953 scaron: scaron,
5954 Sc: Sc,
5955 sc: sc,
5956 sccue: sccue,
5957 sce: sce,
5958 scE: scE,
5959 Scedil: Scedil,
5960 scedil: scedil,
5961 Scirc: Scirc,
5962 scirc: scirc,
5963 scnap: scnap,
5964 scnE: scnE,
5965 scnsim: scnsim,
5966 scpolint: scpolint,
5967 scsim: scsim,
5968 Scy: Scy,
5969 scy: scy,
5970 sdotb: sdotb,
5971 sdot: sdot,
5972 sdote: sdote,
5973 searhk: searhk,
5974 searr: searr,
5975 seArr: seArr,
5976 searrow: searrow,
5977 sect: sect,
5978 semi: semi,
5979 seswar: seswar,
5980 setminus: setminus,
5981 setmn: setmn,
5982 sext: sext,
5983 Sfr: Sfr,
5984 sfr: sfr,
5985 sfrown: sfrown,
5986 sharp: sharp,
5987 SHCHcy: SHCHcy,
5988 shchcy: shchcy,
5989 SHcy: SHcy,
5990 shcy: shcy,
5991 ShortDownArrow: ShortDownArrow,
5992 ShortLeftArrow: ShortLeftArrow,
5993 shortmid: shortmid,
5994 shortparallel: shortparallel,
5995 ShortRightArrow: ShortRightArrow,
5996 ShortUpArrow: ShortUpArrow,
5997 shy: shy,
5998 Sigma: Sigma,
5999 sigma: sigma,
6000 sigmaf: sigmaf,
6001 sigmav: sigmav,
6002 sim: sim,
6003 simdot: simdot,
6004 sime: sime,
6005 simeq: simeq,
6006 simg: simg,
6007 simgE: simgE,
6008 siml: siml,
6009 simlE: simlE,
6010 simne: simne,
6011 simplus: simplus,
6012 simrarr: simrarr,
6013 slarr: slarr,
6014 SmallCircle: SmallCircle,
6015 smallsetminus: smallsetminus,
6016 smashp: smashp,
6017 smeparsl: smeparsl,
6018 smid: smid,
6019 smile: smile,
6020 smt: smt,
6021 smte: smte,
6022 smtes: smtes,
6023 SOFTcy: SOFTcy,
6024 softcy: softcy,
6025 solbar: solbar,
6026 solb: solb,
6027 sol: sol,
6028 Sopf: Sopf,
6029 sopf: sopf,
6030 spades: spades,
6031 spadesuit: spadesuit,
6032 spar: spar,
6033 sqcap: sqcap,
6034 sqcaps: sqcaps,
6035 sqcup: sqcup,
6036 sqcups: sqcups,
6037 Sqrt: Sqrt,
6038 sqsub: sqsub,
6039 sqsube: sqsube,
6040 sqsubset: sqsubset,
6041 sqsubseteq: sqsubseteq,
6042 sqsup: sqsup,
6043 sqsupe: sqsupe,
6044 sqsupset: sqsupset,
6045 sqsupseteq: sqsupseteq,
6046 square: square,
6047 Square: Square,
6048 SquareIntersection: SquareIntersection,
6049 SquareSubset: SquareSubset,
6050 SquareSubsetEqual: SquareSubsetEqual,
6051 SquareSuperset: SquareSuperset,
6052 SquareSupersetEqual: SquareSupersetEqual,
6053 SquareUnion: SquareUnion,
6054 squarf: squarf,
6055 squ: squ,
6056 squf: squf,
6057 srarr: srarr,
6058 Sscr: Sscr,
6059 sscr: sscr,
6060 ssetmn: ssetmn,
6061 ssmile: ssmile,
6062 sstarf: sstarf,
6063 Star: Star,
6064 star: star,
6065 starf: starf,
6066 straightepsilon: straightepsilon,
6067 straightphi: straightphi,
6068 strns: strns,
6069 sub: sub,
6070 Sub: Sub,
6071 subdot: subdot,
6072 subE: subE,
6073 sube: sube,
6074 subedot: subedot,
6075 submult: submult,
6076 subnE: subnE,
6077 subne: subne,
6078 subplus: subplus,
6079 subrarr: subrarr,
6080 subset: subset,
6081 Subset: Subset,
6082 subseteq: subseteq,
6083 subseteqq: subseteqq,
6084 SubsetEqual: SubsetEqual,
6085 subsetneq: subsetneq,
6086 subsetneqq: subsetneqq,
6087 subsim: subsim,
6088 subsub: subsub,
6089 subsup: subsup,
6090 succapprox: succapprox,
6091 succ: succ,
6092 succcurlyeq: succcurlyeq,
6093 Succeeds: Succeeds,
6094 SucceedsEqual: SucceedsEqual,
6095 SucceedsSlantEqual: SucceedsSlantEqual,
6096 SucceedsTilde: SucceedsTilde,
6097 succeq: succeq,
6098 succnapprox: succnapprox,
6099 succneqq: succneqq,
6100 succnsim: succnsim,
6101 succsim: succsim,
6102 SuchThat: SuchThat,
6103 sum: sum,
6104 Sum: Sum,
6105 sung: sung,
6106 sup1: sup1,
6107 sup2: sup2,
6108 sup3: sup3,
6109 sup: sup,
6110 Sup: Sup,
6111 supdot: supdot,
6112 supdsub: supdsub,
6113 supE: supE,
6114 supe: supe,
6115 supedot: supedot,
6116 Superset: Superset,
6117 SupersetEqual: SupersetEqual,
6118 suphsol: suphsol,
6119 suphsub: suphsub,
6120 suplarr: suplarr,
6121 supmult: supmult,
6122 supnE: supnE,
6123 supne: supne,
6124 supplus: supplus,
6125 supset: supset,
6126 Supset: Supset,
6127 supseteq: supseteq,
6128 supseteqq: supseteqq,
6129 supsetneq: supsetneq,
6130 supsetneqq: supsetneqq,
6131 supsim: supsim,
6132 supsub: supsub,
6133 supsup: supsup,
6134 swarhk: swarhk,
6135 swarr: swarr,
6136 swArr: swArr,
6137 swarrow: swarrow,
6138 swnwar: swnwar,
6139 szlig: szlig,
6140 Tab: Tab,
6141 target: target,
6142 Tau: Tau,
6143 tau: tau,
6144 tbrk: tbrk,
6145 Tcaron: Tcaron,
6146 tcaron: tcaron,
6147 Tcedil: Tcedil,
6148 tcedil: tcedil,
6149 Tcy: Tcy,
6150 tcy: tcy,
6151 tdot: tdot,
6152 telrec: telrec,
6153 Tfr: Tfr,
6154 tfr: tfr,
6155 there4: there4,
6156 therefore: therefore,
6157 Therefore: Therefore,
6158 Theta: Theta,
6159 theta: theta,
6160 thetasym: thetasym,
6161 thetav: thetav,
6162 thickapprox: thickapprox,
6163 thicksim: thicksim,
6164 ThickSpace: ThickSpace,
6165 ThinSpace: ThinSpace,
6166 thinsp: thinsp,
6167 thkap: thkap,
6168 thksim: thksim,
6169 THORN: THORN,
6170 thorn: thorn,
6171 tilde: tilde,
6172 Tilde: Tilde,
6173 TildeEqual: TildeEqual,
6174 TildeFullEqual: TildeFullEqual,
6175 TildeTilde: TildeTilde,
6176 timesbar: timesbar,
6177 timesb: timesb,
6178 times: times,
6179 timesd: timesd,
6180 tint: tint,
6181 toea: toea,
6182 topbot: topbot,
6183 topcir: topcir,
6184 top: top,
6185 Topf: Topf,
6186 topf: topf,
6187 topfork: topfork,
6188 tosa: tosa,
6189 tprime: tprime,
6190 trade: trade,
6191 TRADE: TRADE,
6192 triangle: triangle,
6193 triangledown: triangledown,
6194 triangleleft: triangleleft,
6195 trianglelefteq: trianglelefteq,
6196 triangleq: triangleq,
6197 triangleright: triangleright,
6198 trianglerighteq: trianglerighteq,
6199 tridot: tridot,
6200 trie: trie,
6201 triminus: triminus,
6202 TripleDot: TripleDot,
6203 triplus: triplus,
6204 trisb: trisb,
6205 tritime: tritime,
6206 trpezium: trpezium,
6207 Tscr: Tscr,
6208 tscr: tscr,
6209 TScy: TScy,
6210 tscy: tscy,
6211 TSHcy: TSHcy,
6212 tshcy: tshcy,
6213 Tstrok: Tstrok,
6214 tstrok: tstrok,
6215 twixt: twixt,
6216 twoheadleftarrow: twoheadleftarrow,
6217 twoheadrightarrow: twoheadrightarrow,
6218 Uacute: Uacute,
6219 uacute: uacute,
6220 uarr: uarr,
6221 Uarr: Uarr,
6222 uArr: uArr,
6223 Uarrocir: Uarrocir,
6224 Ubrcy: Ubrcy,
6225 ubrcy: ubrcy,
6226 Ubreve: Ubreve,
6227 ubreve: ubreve,
6228 Ucirc: Ucirc,
6229 ucirc: ucirc,
6230 Ucy: Ucy,
6231 ucy: ucy,
6232 udarr: udarr,
6233 Udblac: Udblac,
6234 udblac: udblac,
6235 udhar: udhar,
6236 ufisht: ufisht,
6237 Ufr: Ufr,
6238 ufr: ufr,
6239 Ugrave: Ugrave,
6240 ugrave: ugrave,
6241 uHar: uHar,
6242 uharl: uharl,
6243 uharr: uharr,
6244 uhblk: uhblk,
6245 ulcorn: ulcorn,
6246 ulcorner: ulcorner,
6247 ulcrop: ulcrop,
6248 ultri: ultri,
6249 Umacr: Umacr,
6250 umacr: umacr,
6251 uml: uml,
6252 UnderBar: UnderBar,
6253 UnderBrace: UnderBrace,
6254 UnderBracket: UnderBracket,
6255 UnderParenthesis: UnderParenthesis,
6256 Union: Union,
6257 UnionPlus: UnionPlus,
6258 Uogon: Uogon,
6259 uogon: uogon,
6260 Uopf: Uopf,
6261 uopf: uopf,
6262 UpArrowBar: UpArrowBar,
6263 uparrow: uparrow,
6264 UpArrow: UpArrow,
6265 Uparrow: Uparrow,
6266 UpArrowDownArrow: UpArrowDownArrow,
6267 updownarrow: updownarrow,
6268 UpDownArrow: UpDownArrow,
6269 Updownarrow: Updownarrow,
6270 UpEquilibrium: UpEquilibrium,
6271 upharpoonleft: upharpoonleft,
6272 upharpoonright: upharpoonright,
6273 uplus: uplus,
6274 UpperLeftArrow: UpperLeftArrow,
6275 UpperRightArrow: UpperRightArrow,
6276 upsi: upsi,
6277 Upsi: Upsi,
6278 upsih: upsih,
6279 Upsilon: Upsilon,
6280 upsilon: upsilon,
6281 UpTeeArrow: UpTeeArrow,
6282 UpTee: UpTee,
6283 upuparrows: upuparrows,
6284 urcorn: urcorn,
6285 urcorner: urcorner,
6286 urcrop: urcrop,
6287 Uring: Uring,
6288 uring: uring,
6289 urtri: urtri,
6290 Uscr: Uscr,
6291 uscr: uscr,
6292 utdot: utdot,
6293 Utilde: Utilde,
6294 utilde: utilde,
6295 utri: utri,
6296 utrif: utrif,
6297 uuarr: uuarr,
6298 Uuml: Uuml,
6299 uuml: uuml,
6300 uwangle: uwangle,
6301 vangrt: vangrt,
6302 varepsilon: varepsilon,
6303 varkappa: varkappa,
6304 varnothing: varnothing,
6305 varphi: varphi,
6306 varpi: varpi,
6307 varpropto: varpropto,
6308 varr: varr,
6309 vArr: vArr,
6310 varrho: varrho,
6311 varsigma: varsigma,
6312 varsubsetneq: varsubsetneq,
6313 varsubsetneqq: varsubsetneqq,
6314 varsupsetneq: varsupsetneq,
6315 varsupsetneqq: varsupsetneqq,
6316 vartheta: vartheta,
6317 vartriangleleft: vartriangleleft,
6318 vartriangleright: vartriangleright,
6319 vBar: vBar,
6320 Vbar: Vbar,
6321 vBarv: vBarv,
6322 Vcy: Vcy,
6323 vcy: vcy,
6324 vdash: vdash,
6325 vDash: vDash,
6326 Vdash: Vdash,
6327 VDash: VDash,
6328 Vdashl: Vdashl,
6329 veebar: veebar,
6330 vee: vee,
6331 Vee: Vee,
6332 veeeq: veeeq,
6333 vellip: vellip,
6334 verbar: verbar,
6335 Verbar: Verbar,
6336 vert: vert,
6337 Vert: Vert,
6338 VerticalBar: VerticalBar,
6339 VerticalLine: VerticalLine,
6340 VerticalSeparator: VerticalSeparator,
6341 VerticalTilde: VerticalTilde,
6342 VeryThinSpace: VeryThinSpace,
6343 Vfr: Vfr,
6344 vfr: vfr,
6345 vltri: vltri,
6346 vnsub: vnsub,
6347 vnsup: vnsup,
6348 Vopf: Vopf,
6349 vopf: vopf,
6350 vprop: vprop,
6351 vrtri: vrtri,
6352 Vscr: Vscr,
6353 vscr: vscr,
6354 vsubnE: vsubnE,
6355 vsubne: vsubne,
6356 vsupnE: vsupnE,
6357 vsupne: vsupne,
6358 Vvdash: Vvdash,
6359 vzigzag: vzigzag,
6360 Wcirc: Wcirc,
6361 wcirc: wcirc,
6362 wedbar: wedbar,
6363 wedge: wedge,
6364 Wedge: Wedge,
6365 wedgeq: wedgeq,
6366 weierp: weierp,
6367 Wfr: Wfr,
6368 wfr: wfr,
6369 Wopf: Wopf,
6370 wopf: wopf,
6371 wp: wp,
6372 wr: wr,
6373 wreath: wreath,
6374 Wscr: Wscr,
6375 wscr: wscr,
6376 xcap: xcap,
6377 xcirc: xcirc,
6378 xcup: xcup,
6379 xdtri: xdtri,
6380 Xfr: Xfr,
6381 xfr: xfr,
6382 xharr: xharr,
6383 xhArr: xhArr,
6384 Xi: Xi,
6385 xi: xi,
6386 xlarr: xlarr,
6387 xlArr: xlArr,
6388 xmap: xmap,
6389 xnis: xnis,
6390 xodot: xodot,
6391 Xopf: Xopf,
6392 xopf: xopf,
6393 xoplus: xoplus,
6394 xotime: xotime,
6395 xrarr: xrarr,
6396 xrArr: xrArr,
6397 Xscr: Xscr,
6398 xscr: xscr,
6399 xsqcup: xsqcup,
6400 xuplus: xuplus,
6401 xutri: xutri,
6402 xvee: xvee,
6403 xwedge: xwedge,
6404 Yacute: Yacute,
6405 yacute: yacute,
6406 YAcy: YAcy,
6407 yacy: yacy,
6408 Ycirc: Ycirc,
6409 ycirc: ycirc,
6410 Ycy: Ycy,
6411 ycy: ycy,
6412 yen: yen,
6413 Yfr: Yfr,
6414 yfr: yfr,
6415 YIcy: YIcy,
6416 yicy: yicy,
6417 Yopf: Yopf,
6418 yopf: yopf,
6419 Yscr: Yscr,
6420 yscr: yscr,
6421 YUcy: YUcy,
6422 yucy: yucy,
6423 yuml: yuml,
6424 Yuml: Yuml,
6425 Zacute: Zacute,
6426 zacute: zacute,
6427 Zcaron: Zcaron,
6428 zcaron: zcaron,
6429 Zcy: Zcy,
6430 zcy: zcy,
6431 Zdot: Zdot,
6432 zdot: zdot,
6433 zeetrf: zeetrf,
6434 ZeroWidthSpace: ZeroWidthSpace,
6435 Zeta: Zeta,
6436 zeta: zeta,
6437 zfr: zfr,
6438 Zfr: Zfr,
6439 ZHcy: ZHcy,
6440 zhcy: zhcy,
6441 zigrarr: zigrarr,
6442 zopf: zopf,
6443 Zopf: Zopf,
6444 Zscr: Zscr,
6445 zscr: zscr,
6446 zwj: zwj,
6447 zwnj: zwnj,
6448 'default': entities
6449 };
6450
6451 var Aacute$1 = "Á";
6452 var aacute$1 = "á";
6453 var Acirc$1 = "Â";
6454 var acirc$1 = "â";
6455 var acute$1 = "´";
6456 var AElig$1 = "Æ";
6457 var aelig$1 = "æ";
6458 var Agrave$1 = "À";
6459 var agrave$1 = "à";
6460 var amp$1 = "&";
6461 var AMP$1 = "&";
6462 var Aring$1 = "Å";
6463 var aring$1 = "å";
6464 var Atilde$1 = "Ã";
6465 var atilde$1 = "ã";
6466 var Auml$1 = "Ä";
6467 var auml$1 = "ä";
6468 var brvbar$1 = "¦";
6469 var Ccedil$1 = "Ç";
6470 var ccedil$1 = "ç";
6471 var cedil$1 = "¸";
6472 var cent$1 = "¢";
6473 var copy$1 = "©";
6474 var COPY$1 = "©";
6475 var curren$1 = "¤";
6476 var deg$1 = "°";
6477 var divide$1 = "÷";
6478 var Eacute$1 = "É";
6479 var eacute$1 = "é";
6480 var Ecirc$1 = "Ê";
6481 var ecirc$1 = "ê";
6482 var Egrave$1 = "È";
6483 var egrave$1 = "è";
6484 var ETH$1 = "Ð";
6485 var eth$1 = "ð";
6486 var Euml$1 = "Ë";
6487 var euml$1 = "ë";
6488 var frac12$1 = "½";
6489 var frac14$1 = "¼";
6490 var frac34$1 = "¾";
6491 var gt$1 = ">";
6492 var GT$1 = ">";
6493 var Iacute$1 = "Í";
6494 var iacute$1 = "í";
6495 var Icirc$1 = "Î";
6496 var icirc$1 = "î";
6497 var iexcl$1 = "¡";
6498 var Igrave$1 = "Ì";
6499 var igrave$1 = "ì";
6500 var iquest$1 = "¿";
6501 var Iuml$1 = "Ï";
6502 var iuml$1 = "ï";
6503 var laquo$1 = "«";
6504 var lt$1 = "<";
6505 var LT$1 = "<";
6506 var macr$1 = "¯";
6507 var micro$1 = "µ";
6508 var middot$1 = "·";
6509 var nbsp$1 = " ";
6510 var not$1 = "¬";
6511 var Ntilde$1 = "Ñ";
6512 var ntilde$1 = "ñ";
6513 var Oacute$1 = "Ó";
6514 var oacute$1 = "ó";
6515 var Ocirc$1 = "Ô";
6516 var ocirc$1 = "ô";
6517 var Ograve$1 = "Ò";
6518 var ograve$1 = "ò";
6519 var ordf$1 = "ª";
6520 var ordm$1 = "º";
6521 var Oslash$1 = "Ø";
6522 var oslash$1 = "ø";
6523 var Otilde$1 = "Õ";
6524 var otilde$1 = "õ";
6525 var Ouml$1 = "Ö";
6526 var ouml$1 = "ö";
6527 var para$1 = "¶";
6528 var plusmn$1 = "±";
6529 var pound$1 = "£";
6530 var quot$1 = "\"";
6531 var QUOT$1 = "\"";
6532 var raquo$1 = "»";
6533 var reg$1 = "®";
6534 var REG$1 = "®";
6535 var sect$1 = "§";
6536 var shy$1 = "­";
6537 var sup1$1 = "¹";
6538 var sup2$1 = "²";
6539 var sup3$1 = "³";
6540 var szlig$1 = "ß";
6541 var THORN$1 = "Þ";
6542 var thorn$1 = "þ";
6543 var times$1 = "×";
6544 var Uacute$1 = "Ú";
6545 var uacute$1 = "ú";
6546 var Ucirc$1 = "Û";
6547 var ucirc$1 = "û";
6548 var Ugrave$1 = "Ù";
6549 var ugrave$1 = "ù";
6550 var uml$1 = "¨";
6551 var Uuml$1 = "Ü";
6552 var uuml$1 = "ü";
6553 var Yacute$1 = "Ý";
6554 var yacute$1 = "ý";
6555 var yen$1 = "¥";
6556 var yuml$1 = "ÿ";
6557 var legacy = {
6558 Aacute: Aacute$1,
6559 aacute: aacute$1,
6560 Acirc: Acirc$1,
6561 acirc: acirc$1,
6562 acute: acute$1,
6563 AElig: AElig$1,
6564 aelig: aelig$1,
6565 Agrave: Agrave$1,
6566 agrave: agrave$1,
6567 amp: amp$1,
6568 AMP: AMP$1,
6569 Aring: Aring$1,
6570 aring: aring$1,
6571 Atilde: Atilde$1,
6572 atilde: atilde$1,
6573 Auml: Auml$1,
6574 auml: auml$1,
6575 brvbar: brvbar$1,
6576 Ccedil: Ccedil$1,
6577 ccedil: ccedil$1,
6578 cedil: cedil$1,
6579 cent: cent$1,
6580 copy: copy$1,
6581 COPY: COPY$1,
6582 curren: curren$1,
6583 deg: deg$1,
6584 divide: divide$1,
6585 Eacute: Eacute$1,
6586 eacute: eacute$1,
6587 Ecirc: Ecirc$1,
6588 ecirc: ecirc$1,
6589 Egrave: Egrave$1,
6590 egrave: egrave$1,
6591 ETH: ETH$1,
6592 eth: eth$1,
6593 Euml: Euml$1,
6594 euml: euml$1,
6595 frac12: frac12$1,
6596 frac14: frac14$1,
6597 frac34: frac34$1,
6598 gt: gt$1,
6599 GT: GT$1,
6600 Iacute: Iacute$1,
6601 iacute: iacute$1,
6602 Icirc: Icirc$1,
6603 icirc: icirc$1,
6604 iexcl: iexcl$1,
6605 Igrave: Igrave$1,
6606 igrave: igrave$1,
6607 iquest: iquest$1,
6608 Iuml: Iuml$1,
6609 iuml: iuml$1,
6610 laquo: laquo$1,
6611 lt: lt$1,
6612 LT: LT$1,
6613 macr: macr$1,
6614 micro: micro$1,
6615 middot: middot$1,
6616 nbsp: nbsp$1,
6617 not: not$1,
6618 Ntilde: Ntilde$1,
6619 ntilde: ntilde$1,
6620 Oacute: Oacute$1,
6621 oacute: oacute$1,
6622 Ocirc: Ocirc$1,
6623 ocirc: ocirc$1,
6624 Ograve: Ograve$1,
6625 ograve: ograve$1,
6626 ordf: ordf$1,
6627 ordm: ordm$1,
6628 Oslash: Oslash$1,
6629 oslash: oslash$1,
6630 Otilde: Otilde$1,
6631 otilde: otilde$1,
6632 Ouml: Ouml$1,
6633 ouml: ouml$1,
6634 para: para$1,
6635 plusmn: plusmn$1,
6636 pound: pound$1,
6637 quot: quot$1,
6638 QUOT: QUOT$1,
6639 raquo: raquo$1,
6640 reg: reg$1,
6641 REG: REG$1,
6642 sect: sect$1,
6643 shy: shy$1,
6644 sup1: sup1$1,
6645 sup2: sup2$1,
6646 sup3: sup3$1,
6647 szlig: szlig$1,
6648 THORN: THORN$1,
6649 thorn: thorn$1,
6650 times: times$1,
6651 Uacute: Uacute$1,
6652 uacute: uacute$1,
6653 Ucirc: Ucirc$1,
6654 ucirc: ucirc$1,
6655 Ugrave: Ugrave$1,
6656 ugrave: ugrave$1,
6657 uml: uml$1,
6658 Uuml: Uuml$1,
6659 uuml: uuml$1,
6660 Yacute: Yacute$1,
6661 yacute: yacute$1,
6662 yen: yen$1,
6663 yuml: yuml$1
6664 };
6665
6666 var legacy$1 = {
6667 __proto__: null,
6668 Aacute: Aacute$1,
6669 aacute: aacute$1,
6670 Acirc: Acirc$1,
6671 acirc: acirc$1,
6672 acute: acute$1,
6673 AElig: AElig$1,
6674 aelig: aelig$1,
6675 Agrave: Agrave$1,
6676 agrave: agrave$1,
6677 amp: amp$1,
6678 AMP: AMP$1,
6679 Aring: Aring$1,
6680 aring: aring$1,
6681 Atilde: Atilde$1,
6682 atilde: atilde$1,
6683 Auml: Auml$1,
6684 auml: auml$1,
6685 brvbar: brvbar$1,
6686 Ccedil: Ccedil$1,
6687 ccedil: ccedil$1,
6688 cedil: cedil$1,
6689 cent: cent$1,
6690 copy: copy$1,
6691 COPY: COPY$1,
6692 curren: curren$1,
6693 deg: deg$1,
6694 divide: divide$1,
6695 Eacute: Eacute$1,
6696 eacute: eacute$1,
6697 Ecirc: Ecirc$1,
6698 ecirc: ecirc$1,
6699 Egrave: Egrave$1,
6700 egrave: egrave$1,
6701 ETH: ETH$1,
6702 eth: eth$1,
6703 Euml: Euml$1,
6704 euml: euml$1,
6705 frac12: frac12$1,
6706 frac14: frac14$1,
6707 frac34: frac34$1,
6708 gt: gt$1,
6709 GT: GT$1,
6710 Iacute: Iacute$1,
6711 iacute: iacute$1,
6712 Icirc: Icirc$1,
6713 icirc: icirc$1,
6714 iexcl: iexcl$1,
6715 Igrave: Igrave$1,
6716 igrave: igrave$1,
6717 iquest: iquest$1,
6718 Iuml: Iuml$1,
6719 iuml: iuml$1,
6720 laquo: laquo$1,
6721 lt: lt$1,
6722 LT: LT$1,
6723 macr: macr$1,
6724 micro: micro$1,
6725 middot: middot$1,
6726 nbsp: nbsp$1,
6727 not: not$1,
6728 Ntilde: Ntilde$1,
6729 ntilde: ntilde$1,
6730 Oacute: Oacute$1,
6731 oacute: oacute$1,
6732 Ocirc: Ocirc$1,
6733 ocirc: ocirc$1,
6734 Ograve: Ograve$1,
6735 ograve: ograve$1,
6736 ordf: ordf$1,
6737 ordm: ordm$1,
6738 Oslash: Oslash$1,
6739 oslash: oslash$1,
6740 Otilde: Otilde$1,
6741 otilde: otilde$1,
6742 Ouml: Ouml$1,
6743 ouml: ouml$1,
6744 para: para$1,
6745 plusmn: plusmn$1,
6746 pound: pound$1,
6747 quot: quot$1,
6748 QUOT: QUOT$1,
6749 raquo: raquo$1,
6750 reg: reg$1,
6751 REG: REG$1,
6752 sect: sect$1,
6753 shy: shy$1,
6754 sup1: sup1$1,
6755 sup2: sup2$1,
6756 sup3: sup3$1,
6757 szlig: szlig$1,
6758 THORN: THORN$1,
6759 thorn: thorn$1,
6760 times: times$1,
6761 Uacute: Uacute$1,
6762 uacute: uacute$1,
6763 Ucirc: Ucirc$1,
6764 ucirc: ucirc$1,
6765 Ugrave: Ugrave$1,
6766 ugrave: ugrave$1,
6767 uml: uml$1,
6768 Uuml: Uuml$1,
6769 uuml: uuml$1,
6770 Yacute: Yacute$1,
6771 yacute: yacute$1,
6772 yen: yen$1,
6773 yuml: yuml$1,
6774 'default': legacy
6775 };
6776
6777 var amp$2 = "&";
6778 var apos$1 = "'";
6779 var gt$2 = ">";
6780 var lt$2 = "<";
6781 var quot$2 = "\"";
6782 var xml = {
6783 amp: amp$2,
6784 apos: apos$1,
6785 gt: gt$2,
6786 lt: lt$2,
6787 quot: quot$2
6788 };
6789
6790 var xml$1 = {
6791 __proto__: null,
6792 amp: amp$2,
6793 apos: apos$1,
6794 gt: gt$2,
6795 lt: lt$2,
6796 quot: quot$2,
6797 'default': xml
6798 };
6799
6800 var decode = {
6801 "0": 65533,
6802 "128": 8364,
6803 "130": 8218,
6804 "131": 402,
6805 "132": 8222,
6806 "133": 8230,
6807 "134": 8224,
6808 "135": 8225,
6809 "136": 710,
6810 "137": 8240,
6811 "138": 352,
6812 "139": 8249,
6813 "140": 338,
6814 "142": 381,
6815 "145": 8216,
6816 "146": 8217,
6817 "147": 8220,
6818 "148": 8221,
6819 "149": 8226,
6820 "150": 8211,
6821 "151": 8212,
6822 "152": 732,
6823 "153": 8482,
6824 "154": 353,
6825 "155": 8250,
6826 "156": 339,
6827 "158": 382,
6828 "159": 376
6829 };
6830
6831 var decode$1 = {
6832 __proto__: null,
6833 'default': decode
6834 };
6835
6836 var require$$0 = getCjsExportFromNamespace(decode$1);
6837
6838 var decode_codepoint = createCommonjsModule(function (module, exports) {
6839 var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
6840 return (mod && mod.__esModule) ? mod : { "default": mod };
6841 };
6842 Object.defineProperty(exports, "__esModule", { value: true });
6843 var decode_json_1 = __importDefault(require$$0);
6844 // modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119
6845 function decodeCodePoint(codePoint) {
6846 if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
6847 return "\uFFFD";
6848 }
6849 if (codePoint in decode_json_1.default) {
6850 codePoint = decode_json_1.default[codePoint];
6851 }
6852 var output = "";
6853 if (codePoint > 0xffff) {
6854 codePoint -= 0x10000;
6855 output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);
6856 codePoint = 0xdc00 | (codePoint & 0x3ff);
6857 }
6858 output += String.fromCharCode(codePoint);
6859 return output;
6860 }
6861 exports.default = decodeCodePoint;
6862 });
6863
6864 var require$$1 = getCjsExportFromNamespace(entities$1);
6865
6866 var require$$1$1 = getCjsExportFromNamespace(legacy$1);
6867
6868 var require$$0$1 = getCjsExportFromNamespace(xml$1);
6869
6870 var decode$2 = createCommonjsModule(function (module, exports) {
6871 var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
6872 return (mod && mod.__esModule) ? mod : { "default": mod };
6873 };
6874 Object.defineProperty(exports, "__esModule", { value: true });
6875 exports.decodeHTML = exports.decodeHTMLStrict = exports.decodeXML = void 0;
6876 var entities_json_1 = __importDefault(require$$1);
6877 var legacy_json_1 = __importDefault(require$$1$1);
6878 var xml_json_1 = __importDefault(require$$0$1);
6879 var decode_codepoint_1 = __importDefault(decode_codepoint);
6880 exports.decodeXML = getStrictDecoder(xml_json_1.default);
6881 exports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);
6882 function getStrictDecoder(map) {
6883 var keys = Object.keys(map).join("|");
6884 var replace = getReplacer(map);
6885 keys += "|#[xX][\\da-fA-F]+|#\\d+";
6886 var re = new RegExp("&(?:" + keys + ");", "g");
6887 return function (str) { return String(str).replace(re, replace); };
6888 }
6889 var sorter = function (a, b) { return (a < b ? 1 : -1); };
6890 exports.decodeHTML = (function () {
6891 var legacy = Object.keys(legacy_json_1.default).sort(sorter);
6892 var keys = Object.keys(entities_json_1.default).sort(sorter);
6893 for (var i = 0, j = 0; i < keys.length; i++) {
6894 if (legacy[j] === keys[i]) {
6895 keys[i] += ";?";
6896 j++;
6897 }
6898 else {
6899 keys[i] += ";";
6900 }
6901 }
6902 var re = new RegExp("&(?:" + keys.join("|") + "|#[xX][\\da-fA-F]+;?|#\\d+;?)", "g");
6903 var replace = getReplacer(entities_json_1.default);
6904 function replacer(str) {
6905 if (str.substr(-1) !== ";")
6906 str += ";";
6907 return replace(str);
6908 }
6909 //TODO consider creating a merged map
6910 return function (str) { return String(str).replace(re, replacer); };
6911 })();
6912 function getReplacer(map) {
6913 return function replace(str) {
6914 if (str.charAt(1) === "#") {
6915 var secondChar = str.charAt(2);
6916 if (secondChar === "X" || secondChar === "x") {
6917 return decode_codepoint_1.default(parseInt(str.substr(3), 16));
6918 }
6919 return decode_codepoint_1.default(parseInt(str.substr(2), 10));
6920 }
6921 return map[str.slice(1, -1)];
6922 };
6923 }
6924 });
6925
6926 var encode = createCommonjsModule(function (module, exports) {
6927 var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
6928 return (mod && mod.__esModule) ? mod : { "default": mod };
6929 };
6930 Object.defineProperty(exports, "__esModule", { value: true });
6931 exports.escape = exports.encodeHTML = exports.encodeXML = void 0;
6932 var xml_json_1 = __importDefault(require$$0$1);
6933 var inverseXML = getInverseObj(xml_json_1.default);
6934 var xmlReplacer = getInverseReplacer(inverseXML);
6935 exports.encodeXML = getInverse(inverseXML, xmlReplacer);
6936 var entities_json_1 = __importDefault(require$$1);
6937 var inverseHTML = getInverseObj(entities_json_1.default);
6938 var htmlReplacer = getInverseReplacer(inverseHTML);
6939 exports.encodeHTML = getInverse(inverseHTML, htmlReplacer);
6940 function getInverseObj(obj) {
6941 return Object.keys(obj)
6942 .sort()
6943 .reduce(function (inverse, name) {
6944 inverse[obj[name]] = "&" + name + ";";
6945 return inverse;
6946 }, {});
6947 }
6948 function getInverseReplacer(inverse) {
6949 var single = [];
6950 var multiple = [];
6951 for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {
6952 var k = _a[_i];
6953 if (k.length === 1) {
6954 // Add value to single array
6955 single.push("\\" + k);
6956 }
6957 else {
6958 // Add value to multiple array
6959 multiple.push(k);
6960 }
6961 }
6962 // Add ranges to single characters.
6963 single.sort();
6964 for (var start = 0; start < single.length - 1; start++) {
6965 // Find the end of a run of characters
6966 var end = start;
6967 while (end < single.length - 1 &&
6968 single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) {
6969 end += 1;
6970 }
6971 var count = 1 + end - start;
6972 // We want to replace at least three characters
6973 if (count < 3)
6974 continue;
6975 single.splice(start, count, single[start] + "-" + single[end]);
6976 }
6977 multiple.unshift("[" + single.join("") + "]");
6978 return new RegExp(multiple.join("|"), "g");
6979 }
6980 var reNonASCII = /(?:[\x80-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g;
6981 function singleCharReplacer(c) {
6982 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
6983 return "&#x" + c.codePointAt(0).toString(16).toUpperCase() + ";";
6984 }
6985 function getInverse(inverse, re) {
6986 return function (data) {
6987 return data
6988 .replace(re, function (name) { return inverse[name]; })
6989 .replace(reNonASCII, singleCharReplacer);
6990 };
6991 }
6992 var reXmlChars = getInverseReplacer(inverseXML);
6993 function escape(data) {
6994 return data
6995 .replace(reXmlChars, singleCharReplacer)
6996 .replace(reNonASCII, singleCharReplacer);
6997 }
6998 exports.escape = escape;
6999 });
7000
7001 var lib$1 = createCommonjsModule(function (module, exports) {
7002 Object.defineProperty(exports, "__esModule", { value: true });
7003 exports.encode = exports.decodeStrict = exports.decode = void 0;
7004
7005
7006 /**
7007 * Decodes a string with entities.
7008 *
7009 * @param data String to decode.
7010 * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.
7011 */
7012 function decode(data, level) {
7013 return (!level || level <= 0 ? decode$2.decodeXML : decode$2.decodeHTML)(data);
7014 }
7015 exports.decode = decode;
7016 /**
7017 * Decodes a string with entities. Does not allow missing trailing semicolons for entities.
7018 *
7019 * @param data String to decode.
7020 * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.
7021 */
7022 function decodeStrict(data, level) {
7023 return (!level || level <= 0 ? decode$2.decodeXML : decode$2.decodeHTMLStrict)(data);
7024 }
7025 exports.decodeStrict = decodeStrict;
7026 /**
7027 * Encodes a string with entities.
7028 *
7029 * @param data String to encode.
7030 * @param level Optional level to encode at. 0 = XML, 1 = HTML. Default is 0.
7031 */
7032 function encode$1(data, level) {
7033 return (!level || level <= 0 ? encode.encodeXML : encode.encodeHTML)(data);
7034 }
7035 exports.encode = encode$1;
7036 var encode_2 = encode;
7037 Object.defineProperty(exports, "encodeXML", { enumerable: true, get: function () { return encode_2.encodeXML; } });
7038 Object.defineProperty(exports, "encodeHTML", { enumerable: true, get: function () { return encode_2.encodeHTML; } });
7039 Object.defineProperty(exports, "escape", { enumerable: true, get: function () { return encode_2.escape; } });
7040 // Legacy aliases
7041 Object.defineProperty(exports, "encodeHTML4", { enumerable: true, get: function () { return encode_2.encodeHTML; } });
7042 Object.defineProperty(exports, "encodeHTML5", { enumerable: true, get: function () { return encode_2.encodeHTML; } });
7043 var decode_2 = decode$2;
7044 Object.defineProperty(exports, "decodeXML", { enumerable: true, get: function () { return decode_2.decodeXML; } });
7045 Object.defineProperty(exports, "decodeHTML", { enumerable: true, get: function () { return decode_2.decodeHTML; } });
7046 Object.defineProperty(exports, "decodeHTMLStrict", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });
7047 // Legacy aliases
7048 Object.defineProperty(exports, "decodeHTML4", { enumerable: true, get: function () { return decode_2.decodeHTML; } });
7049 Object.defineProperty(exports, "decodeHTML5", { enumerable: true, get: function () { return decode_2.decodeHTML; } });
7050 Object.defineProperty(exports, "decodeHTML4Strict", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });
7051 Object.defineProperty(exports, "decodeHTML5Strict", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });
7052 Object.defineProperty(exports, "decodeXMLStrict", { enumerable: true, get: function () { return decode_2.decodeXML; } });
7053 });
7054
7055 var elementNames = {
7056 altglyph: "altGlyph",
7057 altglyphdef: "altGlyphDef",
7058 altglyphitem: "altGlyphItem",
7059 animatecolor: "animateColor",
7060 animatemotion: "animateMotion",
7061 animatetransform: "animateTransform",
7062 clippath: "clipPath",
7063 feblend: "feBlend",
7064 fecolormatrix: "feColorMatrix",
7065 fecomponenttransfer: "feComponentTransfer",
7066 fecomposite: "feComposite",
7067 feconvolvematrix: "feConvolveMatrix",
7068 fediffuselighting: "feDiffuseLighting",
7069 fedisplacementmap: "feDisplacementMap",
7070 fedistantlight: "feDistantLight",
7071 fedropshadow: "feDropShadow",
7072 feflood: "feFlood",
7073 fefunca: "feFuncA",
7074 fefuncb: "feFuncB",
7075 fefuncg: "feFuncG",
7076 fefuncr: "feFuncR",
7077 fegaussianblur: "feGaussianBlur",
7078 feimage: "feImage",
7079 femerge: "feMerge",
7080 femergenode: "feMergeNode",
7081 femorphology: "feMorphology",
7082 feoffset: "feOffset",
7083 fepointlight: "fePointLight",
7084 fespecularlighting: "feSpecularLighting",
7085 fespotlight: "feSpotLight",
7086 fetile: "feTile",
7087 feturbulence: "feTurbulence",
7088 foreignobject: "foreignObject",
7089 glyphref: "glyphRef",
7090 lineargradient: "linearGradient",
7091 radialgradient: "radialGradient",
7092 textpath: "textPath"
7093 };
7094 var attributeNames = {
7095 definitionurl: "definitionURL",
7096 attributename: "attributeName",
7097 attributetype: "attributeType",
7098 basefrequency: "baseFrequency",
7099 baseprofile: "baseProfile",
7100 calcmode: "calcMode",
7101 clippathunits: "clipPathUnits",
7102 diffuseconstant: "diffuseConstant",
7103 edgemode: "edgeMode",
7104 filterunits: "filterUnits",
7105 glyphref: "glyphRef",
7106 gradienttransform: "gradientTransform",
7107 gradientunits: "gradientUnits",
7108 kernelmatrix: "kernelMatrix",
7109 kernelunitlength: "kernelUnitLength",
7110 keypoints: "keyPoints",
7111 keysplines: "keySplines",
7112 keytimes: "keyTimes",
7113 lengthadjust: "lengthAdjust",
7114 limitingconeangle: "limitingConeAngle",
7115 markerheight: "markerHeight",
7116 markerunits: "markerUnits",
7117 markerwidth: "markerWidth",
7118 maskcontentunits: "maskContentUnits",
7119 maskunits: "maskUnits",
7120 numoctaves: "numOctaves",
7121 pathlength: "pathLength",
7122 patterncontentunits: "patternContentUnits",
7123 patterntransform: "patternTransform",
7124 patternunits: "patternUnits",
7125 pointsatx: "pointsAtX",
7126 pointsaty: "pointsAtY",
7127 pointsatz: "pointsAtZ",
7128 preservealpha: "preserveAlpha",
7129 preserveaspectratio: "preserveAspectRatio",
7130 primitiveunits: "primitiveUnits",
7131 refx: "refX",
7132 refy: "refY",
7133 repeatcount: "repeatCount",
7134 repeatdur: "repeatDur",
7135 requiredextensions: "requiredExtensions",
7136 requiredfeatures: "requiredFeatures",
7137 specularconstant: "specularConstant",
7138 specularexponent: "specularExponent",
7139 spreadmethod: "spreadMethod",
7140 startoffset: "startOffset",
7141 stddeviation: "stdDeviation",
7142 stitchtiles: "stitchTiles",
7143 surfacescale: "surfaceScale",
7144 systemlanguage: "systemLanguage",
7145 tablevalues: "tableValues",
7146 targetx: "targetX",
7147 targety: "targetY",
7148 textlength: "textLength",
7149 viewbox: "viewBox",
7150 viewtarget: "viewTarget",
7151 xchannelselector: "xChannelSelector",
7152 ychannelselector: "yChannelSelector",
7153 zoomandpan: "zoomAndPan"
7154 };
7155 var foreignNames = {
7156 elementNames: elementNames,
7157 attributeNames: attributeNames
7158 };
7159
7160 var foreignNames$1 = {
7161 __proto__: null,
7162 elementNames: elementNames,
7163 attributeNames: attributeNames,
7164 'default': foreignNames
7165 };
7166
7167 var foreignNames$2 = getCjsExportFromNamespace(foreignNames$1);
7168
7169 var domSerializer = createCommonjsModule(function (module) {
7170 /*
7171 Module dependencies
7172 */
7173
7174
7175
7176 /* mixed-case SVG and MathML tags & attributes
7177 recognized by the HTML parser, see
7178 https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign
7179 */
7180
7181 foreignNames$2.elementNames.__proto__ = null; /* use as a simple dictionary */
7182 foreignNames$2.attributeNames.__proto__ = null;
7183
7184 var unencodedElements = {
7185 __proto__: null,
7186 style: true,
7187 script: true,
7188 xmp: true,
7189 iframe: true,
7190 noembed: true,
7191 noframes: true,
7192 plaintext: true,
7193 noscript: true
7194 };
7195
7196 /*
7197 Format attributes
7198 */
7199 function formatAttrs(attributes, opts) {
7200 if (!attributes) return;
7201
7202 var output = '';
7203 var value;
7204
7205 // Loop through the attributes
7206 for (var key in attributes) {
7207 value = attributes[key];
7208 if (output) {
7209 output += ' ';
7210 }
7211
7212 if (opts.xmlMode === 'foreign') {
7213 /* fix up mixed-case attribute names */
7214 key = foreignNames$2.attributeNames[key] || key;
7215 }
7216 output += key;
7217 if ((value !== null && value !== '') || opts.xmlMode) {
7218 output +=
7219 '="' +
7220 (opts.decodeEntities
7221 ? lib$1.encodeXML(value)
7222 : value.replace(/\"/g, '&quot;')) +
7223 '"';
7224 }
7225 }
7226
7227 return output;
7228 }
7229
7230 /*
7231 Self-enclosing tags (stolen from node-htmlparser)
7232 */
7233 var singleTag = {
7234 __proto__: null,
7235 area: true,
7236 base: true,
7237 basefont: true,
7238 br: true,
7239 col: true,
7240 command: true,
7241 embed: true,
7242 frame: true,
7243 hr: true,
7244 img: true,
7245 input: true,
7246 isindex: true,
7247 keygen: true,
7248 link: true,
7249 meta: true,
7250 param: true,
7251 source: true,
7252 track: true,
7253 wbr: true
7254 };
7255
7256 var render = (module.exports = function(dom, opts) {
7257 if (!Array.isArray(dom) && !dom.cheerio) dom = [dom];
7258 opts = opts || {};
7259
7260 var output = '';
7261
7262 for (var i = 0; i < dom.length; i++) {
7263 var elem = dom[i];
7264
7265 if (elem.type === 'root') output += render(elem.children, opts);
7266 else if (lib.isTag(elem)) output += renderTag(elem, opts);
7267 else if (elem.type === lib.Directive)
7268 output += renderDirective(elem);
7269 else if (elem.type === lib.Comment) output += renderComment(elem);
7270 else if (elem.type === lib.CDATA) output += renderCdata(elem);
7271 else output += renderText(elem, opts);
7272 }
7273
7274 return output;
7275 });
7276
7277 var foreignModeIntegrationPoints = [
7278 'mi',
7279 'mo',
7280 'mn',
7281 'ms',
7282 'mtext',
7283 'annotation-xml',
7284 'foreignObject',
7285 'desc',
7286 'title'
7287 ];
7288
7289 function renderTag(elem, opts) {
7290 // Handle SVG / MathML in HTML
7291 if (opts.xmlMode === 'foreign') {
7292 /* fix up mixed-case element names */
7293 elem.name = foreignNames$2.elementNames[elem.name] || elem.name;
7294 /* exit foreign mode at integration points */
7295 if (
7296 elem.parent &&
7297 foreignModeIntegrationPoints.indexOf(elem.parent.name) >= 0
7298 )
7299 opts = Object.assign({}, opts, { xmlMode: false });
7300 }
7301 if (!opts.xmlMode && ['svg', 'math'].indexOf(elem.name) >= 0) {
7302 opts = Object.assign({}, opts, { xmlMode: 'foreign' });
7303 }
7304
7305 var tag = '<' + elem.name;
7306 var attribs = formatAttrs(elem.attribs, opts);
7307
7308 if (attribs) {
7309 tag += ' ' + attribs;
7310 }
7311
7312 if (opts.xmlMode && (!elem.children || elem.children.length === 0)) {
7313 tag += '/>';
7314 } else {
7315 tag += '>';
7316 if (elem.children) {
7317 tag += render(elem.children, opts);
7318 }
7319
7320 if (!singleTag[elem.name] || opts.xmlMode) {
7321 tag += '</' + elem.name + '>';
7322 }
7323 }
7324
7325 return tag;
7326 }
7327
7328 function renderDirective(elem) {
7329 return '<' + elem.data + '>';
7330 }
7331
7332 function renderText(elem, opts) {
7333 var data = elem.data || '';
7334
7335 // if entities weren't decoded, no need to encode them back
7336 if (
7337 opts.decodeEntities &&
7338 !(elem.parent && elem.parent.name in unencodedElements)
7339 ) {
7340 data = lib$1.encodeXML(data);
7341 }
7342
7343 return data;
7344 }
7345
7346 function renderCdata(elem) {
7347 return '<![CDATA[' + elem.children[0].data + ']]>';
7348 }
7349
7350 function renderComment(elem) {
7351 return '<!--' + elem.data + '-->';
7352 }
7353 });
7354
7355 var isTag = domelementtype.isTag;
7356
7357 var stringify = {
7358 getInnerHTML: getInnerHTML,
7359 getOuterHTML: domSerializer,
7360 getText: getText
7361 };
7362
7363 function getInnerHTML(elem, opts){
7364 return elem.children ? elem.children.map(function(elem){
7365 return domSerializer(elem, opts);
7366 }).join("") : "";
7367 }
7368
7369 function getText(elem){
7370 if(Array.isArray(elem)) return elem.map(getText).join("");
7371 if(isTag(elem) || elem.type === domelementtype.CDATA) return getText(elem.children);
7372 if(elem.type === domelementtype.Text) return elem.data;
7373 return "";
7374 }
7375
7376 var traversal = createCommonjsModule(function (module, exports) {
7377 var getChildren = exports.getChildren = function(elem){
7378 return elem.children;
7379 };
7380
7381 var getParent = exports.getParent = function(elem){
7382 return elem.parent;
7383 };
7384
7385 exports.getSiblings = function(elem){
7386 var parent = getParent(elem);
7387 return parent ? getChildren(parent) : [elem];
7388 };
7389
7390 exports.getAttributeValue = function(elem, name){
7391 return elem.attribs && elem.attribs[name];
7392 };
7393
7394 exports.hasAttrib = function(elem, name){
7395 return !!elem.attribs && hasOwnProperty.call(elem.attribs, name);
7396 };
7397
7398 exports.getName = function(elem){
7399 return elem.name;
7400 };
7401 });
7402
7403 var removeElement = function(elem){
7404 if(elem.prev) elem.prev.next = elem.next;
7405 if(elem.next) elem.next.prev = elem.prev;
7406
7407 if(elem.parent){
7408 var childs = elem.parent.children;
7409 childs.splice(childs.lastIndexOf(elem), 1);
7410 }
7411 };
7412
7413 var replaceElement = function(elem, replacement){
7414 var prev = replacement.prev = elem.prev;
7415 if(prev){
7416 prev.next = replacement;
7417 }
7418
7419 var next = replacement.next = elem.next;
7420 if(next){
7421 next.prev = replacement;
7422 }
7423
7424 var parent = replacement.parent = elem.parent;
7425 if(parent){
7426 var childs = parent.children;
7427 childs[childs.lastIndexOf(elem)] = replacement;
7428 }
7429 };
7430
7431 var appendChild = function(elem, child){
7432 child.parent = elem;
7433
7434 if(elem.children.push(child) !== 1){
7435 var sibling = elem.children[elem.children.length - 2];
7436 sibling.next = child;
7437 child.prev = sibling;
7438 child.next = null;
7439 }
7440 };
7441
7442 var append = function(elem, next){
7443 var parent = elem.parent,
7444 currNext = elem.next;
7445
7446 next.next = currNext;
7447 next.prev = elem;
7448 elem.next = next;
7449 next.parent = parent;
7450
7451 if(currNext){
7452 currNext.prev = next;
7453 if(parent){
7454 var childs = parent.children;
7455 childs.splice(childs.lastIndexOf(currNext), 0, next);
7456 }
7457 } else if(parent){
7458 parent.children.push(next);
7459 }
7460 };
7461
7462 var prepend = function(elem, prev){
7463 var parent = elem.parent;
7464 if(parent){
7465 var childs = parent.children;
7466 childs.splice(childs.lastIndexOf(elem), 0, prev);
7467 }
7468
7469 if(elem.prev){
7470 elem.prev.next = prev;
7471 }
7472
7473 prev.parent = parent;
7474 prev.prev = elem.prev;
7475 prev.next = elem;
7476 elem.prev = prev;
7477 };
7478
7479 var manipulation = {
7480 removeElement: removeElement,
7481 replaceElement: replaceElement,
7482 appendChild: appendChild,
7483 append: append,
7484 prepend: prepend
7485 };
7486
7487 var isTag$1 = domelementtype.isTag;
7488
7489 var querying = {
7490 filter: filter,
7491 find: find,
7492 findOneChild: findOneChild,
7493 findOne: findOne,
7494 existsOne: existsOne,
7495 findAll: findAll
7496 };
7497
7498 function filter(test, element, recurse, limit){
7499 if(!Array.isArray(element)) element = [element];
7500
7501 if(typeof limit !== "number" || !isFinite(limit)){
7502 limit = Infinity;
7503 }
7504 return find(test, element, recurse !== false, limit);
7505 }
7506
7507 function find(test, elems, recurse, limit){
7508 var result = [], childs;
7509
7510 for(var i = 0, j = elems.length; i < j; i++){
7511 if(test(elems[i])){
7512 result.push(elems[i]);
7513 if(--limit <= 0) break;
7514 }
7515
7516 childs = elems[i].children;
7517 if(recurse && childs && childs.length > 0){
7518 childs = find(test, childs, recurse, limit);
7519 result = result.concat(childs);
7520 limit -= childs.length;
7521 if(limit <= 0) break;
7522 }
7523 }
7524
7525 return result;
7526 }
7527
7528 function findOneChild(test, elems){
7529 for(var i = 0, l = elems.length; i < l; i++){
7530 if(test(elems[i])) return elems[i];
7531 }
7532
7533 return null;
7534 }
7535
7536 function findOne(test, elems){
7537 var elem = null;
7538
7539 for(var i = 0, l = elems.length; i < l && !elem; i++){
7540 if(!isTag$1(elems[i])){
7541 continue;
7542 } else if(test(elems[i])){
7543 elem = elems[i];
7544 } else if(elems[i].children.length > 0){
7545 elem = findOne(test, elems[i].children);
7546 }
7547 }
7548
7549 return elem;
7550 }
7551
7552 function existsOne(test, elems){
7553 for(var i = 0, l = elems.length; i < l; i++){
7554 if(
7555 isTag$1(elems[i]) && (
7556 test(elems[i]) || (
7557 elems[i].children.length > 0 &&
7558 existsOne(test, elems[i].children)
7559 )
7560 )
7561 ){
7562 return true;
7563 }
7564 }
7565
7566 return false;
7567 }
7568
7569 function findAll(test, elems){
7570 var result = [];
7571 for(var i = 0, j = elems.length; i < j; i++){
7572 if(!isTag$1(elems[i])) continue;
7573 if(test(elems[i])) result.push(elems[i]);
7574
7575 if(elems[i].children.length > 0){
7576 result = result.concat(findAll(test, elems[i].children));
7577 }
7578 }
7579 return result;
7580 }
7581
7582 var legacy$2 = createCommonjsModule(function (module, exports) {
7583 var isTag = exports.isTag = domelementtype.isTag;
7584
7585 exports.testElement = function(options, element){
7586 for(var key in options){
7587 if(!options.hasOwnProperty(key));
7588 else if(key === "tag_name"){
7589 if(!isTag(element) || !options.tag_name(element.name)){
7590 return false;
7591 }
7592 } else if(key === "tag_type"){
7593 if(!options.tag_type(element.type)) return false;
7594 } else if(key === "tag_contains"){
7595 if(isTag(element) || !options.tag_contains(element.data)){
7596 return false;
7597 }
7598 } else if(!element.attribs || !options[key](element.attribs[key])){
7599 return false;
7600 }
7601 }
7602 return true;
7603 };
7604
7605 var Checks = {
7606 tag_name: function(name){
7607 if(typeof name === "function"){
7608 return function(elem){ return isTag(elem) && name(elem.name); };
7609 } else if(name === "*"){
7610 return isTag;
7611 } else {
7612 return function(elem){ return isTag(elem) && elem.name === name; };
7613 }
7614 },
7615 tag_type: function(type){
7616 if(typeof type === "function"){
7617 return function(elem){ return type(elem.type); };
7618 } else {
7619 return function(elem){ return elem.type === type; };
7620 }
7621 },
7622 tag_contains: function(data){
7623 if(typeof data === "function"){
7624 return function(elem){ return !isTag(elem) && data(elem.data); };
7625 } else {
7626 return function(elem){ return !isTag(elem) && elem.data === data; };
7627 }
7628 }
7629 };
7630
7631 function getAttribCheck(attrib, value){
7632 if(typeof value === "function"){
7633 return function(elem){ return elem.attribs && value(elem.attribs[attrib]); };
7634 } else {
7635 return function(elem){ return elem.attribs && elem.attribs[attrib] === value; };
7636 }
7637 }
7638
7639 function combineFuncs(a, b){
7640 return function(elem){
7641 return a(elem) || b(elem);
7642 };
7643 }
7644
7645 exports.getElements = function(options, element, recurse, limit){
7646 var funcs = Object.keys(options).map(function(key){
7647 var value = options[key];
7648 return key in Checks ? Checks[key](value) : getAttribCheck(key, value);
7649 });
7650
7651 return funcs.length === 0 ? [] : this.filter(
7652 funcs.reduce(combineFuncs),
7653 element, recurse, limit
7654 );
7655 };
7656
7657 exports.getElementById = function(id, element, recurse){
7658 if(!Array.isArray(element)) element = [element];
7659 return this.findOne(getAttribCheck("id", id), element, recurse !== false);
7660 };
7661
7662 exports.getElementsByTagName = function(name, element, recurse, limit){
7663 return this.filter(Checks.tag_name(name), element, recurse, limit);
7664 };
7665
7666 exports.getElementsByTagType = function(type, element, recurse, limit){
7667 return this.filter(Checks.tag_type(type), element, recurse, limit);
7668 };
7669 });
7670
7671 var helpers = createCommonjsModule(function (module, exports) {
7672 // removeSubsets
7673 // Given an array of nodes, remove any member that is contained by another.
7674 exports.removeSubsets = function(nodes) {
7675 var idx = nodes.length, node, ancestor, replace;
7676
7677 // Check if each node (or one of its ancestors) is already contained in the
7678 // array.
7679 while (--idx > -1) {
7680 node = ancestor = nodes[idx];
7681
7682 // Temporarily remove the node under consideration
7683 nodes[idx] = null;
7684 replace = true;
7685
7686 while (ancestor) {
7687 if (nodes.indexOf(ancestor) > -1) {
7688 replace = false;
7689 nodes.splice(idx, 1);
7690 break;
7691 }
7692 ancestor = ancestor.parent;
7693 }
7694
7695 // If the node has been found to be unique, re-insert it.
7696 if (replace) {
7697 nodes[idx] = node;
7698 }
7699 }
7700
7701 return nodes;
7702 };
7703
7704 // Source: http://dom.spec.whatwg.org/#dom-node-comparedocumentposition
7705 var POSITION = {
7706 DISCONNECTED: 1,
7707 PRECEDING: 2,
7708 FOLLOWING: 4,
7709 CONTAINS: 8,
7710 CONTAINED_BY: 16
7711 };
7712
7713 // Compare the position of one node against another node in any other document.
7714 // The return value is a bitmask with the following values:
7715 //
7716 // document order:
7717 // > There is an ordering, document order, defined on all the nodes in the
7718 // > document corresponding to the order in which the first character of the
7719 // > XML representation of each node occurs in the XML representation of the
7720 // > document after expansion of general entities. Thus, the document element
7721 // > node will be the first node. Element nodes occur before their children.
7722 // > Thus, document order orders element nodes in order of the occurrence of
7723 // > their start-tag in the XML (after expansion of entities). The attribute
7724 // > nodes of an element occur after the element and before its children. The
7725 // > relative order of attribute nodes is implementation-dependent./
7726 // Source:
7727 // http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order
7728 //
7729 // @argument {Node} nodaA The first node to use in the comparison
7730 // @argument {Node} nodeB The second node to use in the comparison
7731 //
7732 // @return {Number} A bitmask describing the input nodes' relative position.
7733 // See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for
7734 // a description of these values.
7735 var comparePos = exports.compareDocumentPosition = function(nodeA, nodeB) {
7736 var aParents = [];
7737 var bParents = [];
7738 var current, sharedParent, siblings, aSibling, bSibling, idx;
7739
7740 if (nodeA === nodeB) {
7741 return 0;
7742 }
7743
7744 current = nodeA;
7745 while (current) {
7746 aParents.unshift(current);
7747 current = current.parent;
7748 }
7749 current = nodeB;
7750 while (current) {
7751 bParents.unshift(current);
7752 current = current.parent;
7753 }
7754
7755 idx = 0;
7756 while (aParents[idx] === bParents[idx]) {
7757 idx++;
7758 }
7759
7760 if (idx === 0) {
7761 return POSITION.DISCONNECTED;
7762 }
7763
7764 sharedParent = aParents[idx - 1];
7765 siblings = sharedParent.children;
7766 aSibling = aParents[idx];
7767 bSibling = bParents[idx];
7768
7769 if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {
7770 if (sharedParent === nodeB) {
7771 return POSITION.FOLLOWING | POSITION.CONTAINED_BY;
7772 }
7773 return POSITION.FOLLOWING;
7774 } else {
7775 if (sharedParent === nodeA) {
7776 return POSITION.PRECEDING | POSITION.CONTAINS;
7777 }
7778 return POSITION.PRECEDING;
7779 }
7780 };
7781
7782 // Sort an array of nodes based on their relative position in the document and
7783 // remove any duplicate nodes. If the array contains nodes that do not belong
7784 // to the same document, sort order is unspecified.
7785 //
7786 // @argument {Array} nodes Array of DOM nodes
7787 //
7788 // @returns {Array} collection of unique nodes, sorted in document order
7789 exports.uniqueSort = function(nodes) {
7790 var idx = nodes.length, node, position;
7791
7792 nodes = nodes.slice();
7793
7794 while (--idx > -1) {
7795 node = nodes[idx];
7796 position = nodes.indexOf(node);
7797 if (position > -1 && position < idx) {
7798 nodes.splice(idx, 1);
7799 }
7800 }
7801 nodes.sort(function(a, b) {
7802 var relative = comparePos(a, b);
7803 if (relative & POSITION.PRECEDING) {
7804 return -1;
7805 } else if (relative & POSITION.FOLLOWING) {
7806 return 1;
7807 }
7808 return 0;
7809 });
7810
7811 return nodes;
7812 };
7813 });
7814
7815 var domutils = createCommonjsModule(function (module) {
7816 var DomUtils = module.exports;
7817
7818 [
7819 stringify,
7820 traversal,
7821 manipulation,
7822 querying,
7823 legacy$2,
7824 helpers
7825 ].forEach(function(ext){
7826 Object.keys(ext).forEach(function(key){
7827 DomUtils[key] = ext[key].bind(DomUtils);
7828 });
7829 });
7830 });
7831
7832 var parse_1 = parse;
7833
7834 //following http://www.w3.org/TR/css3-selectors/#nth-child-pseudo
7835
7836 //[ ['-'|'+']? INTEGER? {N} [ S* ['-'|'+'] S* INTEGER ]?
7837 var re_nthElement = /^([+\-]?\d*n)?\s*(?:([+\-]?)\s*(\d+))?$/;
7838
7839 /*
7840 parses a nth-check formula, returns an array of two numbers
7841 */
7842 function parse(formula){
7843 formula = formula.trim().toLowerCase();
7844
7845 if(formula === "even"){
7846 return [2, 0];
7847 } else if(formula === "odd"){
7848 return [2, 1];
7849 } else {
7850 var parsed = formula.match(re_nthElement);
7851
7852 if(!parsed){
7853 throw new SyntaxError("n-th rule couldn't be parsed ('" + formula + "')");
7854 }
7855
7856 var a;
7857
7858 if(parsed[1]){
7859 a = parseInt(parsed[1], 10);
7860 if(isNaN(a)){
7861 if(parsed[1].charAt(0) === "-") a = -1;
7862 else a = 1;
7863 }
7864 } else a = 0;
7865
7866 return [
7867 a,
7868 parsed[3] ? parseInt((parsed[2] || "") + parsed[3], 10) : 0
7869 ];
7870 }
7871 }
7872
7873 var boolbase = {
7874 trueFunc: function trueFunc(){
7875 return true;
7876 },
7877 falseFunc: function falseFunc(){
7878 return false;
7879 }
7880 };
7881
7882 var compile_1 = compile;
7883
7884 var trueFunc = boolbase.trueFunc,
7885 falseFunc = boolbase.falseFunc;
7886
7887 /*
7888 returns a function that checks if an elements index matches the given rule
7889 highly optimized to return the fastest solution
7890 */
7891 function compile(parsed){
7892 var a = parsed[0],
7893 b = parsed[1] - 1;
7894
7895 //when b <= 0, a*n won't be possible for any matches when a < 0
7896 //besides, the specification says that no element is matched when a and b are 0
7897 if(b < 0 && a <= 0) return falseFunc;
7898
7899 //when a is in the range -1..1, it matches any element (so only b is checked)
7900 if(a ===-1) return function(pos){ return pos <= b; };
7901 if(a === 0) return function(pos){ return pos === b; };
7902 //when b <= 0 and a === 1, they match any element
7903 if(a === 1) return b < 0 ? trueFunc : function(pos){ return pos >= b; };
7904
7905 //when a > 0, modulo can be used to check if there is a match
7906 var bMod = b % a;
7907 if(bMod < 0) bMod += a;
7908
7909 if(a > 1){
7910 return function(pos){
7911 return pos >= b && pos % a === bMod;
7912 };
7913 }
7914
7915 a *= -1; //make `a` positive
7916
7917 return function(pos){
7918 return pos <= b && pos % a === bMod;
7919 };
7920 }
7921
7922 var nthCheck = function nthCheck(formula){
7923 return compile_1(parse_1(formula));
7924 };
7925
7926 var parse_1$1 = parse_1;
7927 var compile_1$1 = compile_1;
7928 nthCheck.parse = parse_1$1;
7929 nthCheck.compile = compile_1$1;
7930
7931 var hasAttrib = domutils.hasAttrib,
7932 getAttributeValue = domutils.getAttributeValue,
7933 falseFunc$1 = boolbase.falseFunc;
7934
7935 //https://github.com/slevithan/XRegExp/blob/master/src/xregexp.js#L469
7936 var reChars = /[-[\]{}()*+?.,\\^$|#\s]/g;
7937
7938 /*
7939 attribute selectors
7940 */
7941
7942 var attributeRules = {
7943 __proto__: null,
7944 equals: function(next, data){
7945 var name = data.name,
7946 value = data.value;
7947
7948 if(data.ignoreCase){
7949 value = value.toLowerCase();
7950
7951 return function equalsIC(elem){
7952 var attr = getAttributeValue(elem, name);
7953 return attr != null && attr.toLowerCase() === value && next(elem);
7954 };
7955 }
7956
7957 return function equals(elem){
7958 return getAttributeValue(elem, name) === value && next(elem);
7959 };
7960 },
7961 hyphen: function(next, data){
7962 var name = data.name,
7963 value = data.value,
7964 len = value.length;
7965
7966 if(data.ignoreCase){
7967 value = value.toLowerCase();
7968
7969 return function hyphenIC(elem){
7970 var attr = getAttributeValue(elem, name);
7971 return attr != null &&
7972 (attr.length === len || attr.charAt(len) === "-") &&
7973 attr.substr(0, len).toLowerCase() === value &&
7974 next(elem);
7975 };
7976 }
7977
7978 return function hyphen(elem){
7979 var attr = getAttributeValue(elem, name);
7980 return attr != null &&
7981 attr.substr(0, len) === value &&
7982 (attr.length === len || attr.charAt(len) === "-") &&
7983 next(elem);
7984 };
7985 },
7986 element: function(next, data){
7987 var name = data.name,
7988 value = data.value;
7989
7990 if(/\s/.test(value)){
7991 return falseFunc$1;
7992 }
7993
7994 value = value.replace(reChars, "\\$&");
7995
7996 var pattern = "(?:^|\\s)" + value + "(?:$|\\s)",
7997 flags = data.ignoreCase ? "i" : "",
7998 regex = new RegExp(pattern, flags);
7999
8000 return function element(elem){
8001 var attr = getAttributeValue(elem, name);
8002 return attr != null && regex.test(attr) && next(elem);
8003 };
8004 },
8005 exists: function(next, data){
8006 var name = data.name;
8007 return function exists(elem){
8008 return hasAttrib(elem, name) && next(elem);
8009 };
8010 },
8011 start: function(next, data){
8012 var name = data.name,
8013 value = data.value,
8014 len = value.length;
8015
8016 if(len === 0){
8017 return falseFunc$1;
8018 }
8019
8020 if(data.ignoreCase){
8021 value = value.toLowerCase();
8022
8023 return function startIC(elem){
8024 var attr = getAttributeValue(elem, name);
8025 return attr != null && attr.substr(0, len).toLowerCase() === value && next(elem);
8026 };
8027 }
8028
8029 return function start(elem){
8030 var attr = getAttributeValue(elem, name);
8031 return attr != null && attr.substr(0, len) === value && next(elem);
8032 };
8033 },
8034 end: function(next, data){
8035 var name = data.name,
8036 value = data.value,
8037 len = -value.length;
8038
8039 if(len === 0){
8040 return falseFunc$1;
8041 }
8042
8043 if(data.ignoreCase){
8044 value = value.toLowerCase();
8045
8046 return function endIC(elem){
8047 var attr = getAttributeValue(elem, name);
8048 return attr != null && attr.substr(len).toLowerCase() === value && next(elem);
8049 };
8050 }
8051
8052 return function end(elem){
8053 var attr = getAttributeValue(elem, name);
8054 return attr != null && attr.substr(len) === value && next(elem);
8055 };
8056 },
8057 any: function(next, data){
8058 var name = data.name,
8059 value = data.value;
8060
8061 if(value === ""){
8062 return falseFunc$1;
8063 }
8064
8065 if(data.ignoreCase){
8066 var regex = new RegExp(value.replace(reChars, "\\$&"), "i");
8067
8068 return function anyIC(elem){
8069 var attr = getAttributeValue(elem, name);
8070 return attr != null && regex.test(attr) && next(elem);
8071 };
8072 }
8073
8074 return function any(elem){
8075 var attr = getAttributeValue(elem, name);
8076 return attr != null && attr.indexOf(value) >= 0 && next(elem);
8077 };
8078 },
8079 not: function(next, data){
8080 var name = data.name,
8081 value = data.value;
8082
8083 if(value === ""){
8084 return function notEmpty(elem){
8085 return !!getAttributeValue(elem, name) && next(elem);
8086 };
8087 } else if(data.ignoreCase){
8088 value = value.toLowerCase();
8089
8090 return function notIC(elem){
8091 var attr = getAttributeValue(elem, name);
8092 return attr != null && attr.toLowerCase() !== value && next(elem);
8093 };
8094 }
8095
8096 return function not(elem){
8097 return getAttributeValue(elem, name) !== value && next(elem);
8098 };
8099 }
8100 };
8101
8102 var attributes = {
8103 compile: function(next, data, options){
8104 if(options && options.strict && (
8105 data.ignoreCase || data.action === "not"
8106 )) throw SyntaxError("Unsupported attribute selector");
8107 return attributeRules[data.action](next, data);
8108 },
8109 rules: attributeRules
8110 };
8111
8112 /*
8113 pseudo selectors
8114
8115 ---
8116
8117 they are available in two forms:
8118 * filters called when the selector
8119 is compiled and return a function
8120 that needs to return next()
8121 * pseudos get called on execution
8122 they need to return a boolean
8123 */
8124
8125 var isTag$2 = domutils.isTag,
8126 getText$1 = domutils.getText,
8127 getParent = domutils.getParent,
8128 getChildren = domutils.getChildren,
8129 getSiblings = domutils.getSiblings,
8130 hasAttrib$1 = domutils.hasAttrib,
8131 getName = domutils.getName,
8132 getAttribute= domutils.getAttributeValue,
8133 checkAttrib = attributes.rules.equals,
8134 trueFunc$1 = boolbase.trueFunc,
8135 falseFunc$2 = boolbase.falseFunc;
8136
8137 //helper methods
8138 function getFirstElement(elems){
8139 for(var i = 0; elems && i < elems.length; i++){
8140 if(isTag$2(elems[i])) return elems[i];
8141 }
8142 }
8143
8144 function getAttribFunc(name, value){
8145 var data = {name: name, value: value};
8146 return function attribFunc(next){
8147 return checkAttrib(next, data);
8148 };
8149 }
8150
8151 function getChildFunc(next){
8152 return function(elem){
8153 return !!getParent(elem) && next(elem);
8154 };
8155 }
8156
8157 var filters = {
8158 contains: function(next, text){
8159 return function contains(elem){
8160 return next(elem) && getText$1(elem).indexOf(text) >= 0;
8161 };
8162 },
8163 icontains: function(next, text){
8164 var itext = text.toLowerCase();
8165 return function icontains(elem){
8166 return next(elem) &&
8167 getText$1(elem).toLowerCase().indexOf(itext) >= 0;
8168 };
8169 },
8170
8171 //location specific methods
8172 "nth-child": function(next, rule){
8173 var func = nthCheck(rule);
8174
8175 if(func === falseFunc$2) return func;
8176 if(func === trueFunc$1) return getChildFunc(next);
8177
8178 return function nthChild(elem){
8179 var siblings = getSiblings(elem);
8180
8181 for(var i = 0, pos = 0; i < siblings.length; i++){
8182 if(isTag$2(siblings[i])){
8183 if(siblings[i] === elem) break;
8184 else pos++;
8185 }
8186 }
8187
8188 return func(pos) && next(elem);
8189 };
8190 },
8191 "nth-last-child": function(next, rule){
8192 var func = nthCheck(rule);
8193
8194 if(func === falseFunc$2) return func;
8195 if(func === trueFunc$1) return getChildFunc(next);
8196
8197 return function nthLastChild(elem){
8198 var siblings = getSiblings(elem);
8199
8200 for(var pos = 0, i = siblings.length - 1; i >= 0; i--){
8201 if(isTag$2(siblings[i])){
8202 if(siblings[i] === elem) break;
8203 else pos++;
8204 }
8205 }
8206
8207 return func(pos) && next(elem);
8208 };
8209 },
8210 "nth-of-type": function(next, rule){
8211 var func = nthCheck(rule);
8212
8213 if(func === falseFunc$2) return func;
8214 if(func === trueFunc$1) return getChildFunc(next);
8215
8216 return function nthOfType(elem){
8217 var siblings = getSiblings(elem);
8218
8219 for(var pos = 0, i = 0; i < siblings.length; i++){
8220 if(isTag$2(siblings[i])){
8221 if(siblings[i] === elem) break;
8222 if(getName(siblings[i]) === getName(elem)) pos++;
8223 }
8224 }
8225
8226 return func(pos) && next(elem);
8227 };
8228 },
8229 "nth-last-of-type": function(next, rule){
8230 var func = nthCheck(rule);
8231
8232 if(func === falseFunc$2) return func;
8233 if(func === trueFunc$1) return getChildFunc(next);
8234
8235 return function nthLastOfType(elem){
8236 var siblings = getSiblings(elem);
8237
8238 for(var pos = 0, i = siblings.length - 1; i >= 0; i--){
8239 if(isTag$2(siblings[i])){
8240 if(siblings[i] === elem) break;
8241 if(getName(siblings[i]) === getName(elem)) pos++;
8242 }
8243 }
8244
8245 return func(pos) && next(elem);
8246 };
8247 },
8248
8249 //TODO determine the actual root element
8250 root: function(next){
8251 return function(elem){
8252 return !getParent(elem) && next(elem);
8253 };
8254 },
8255
8256 scope: function(next, rule, options, context){
8257 if(!context || context.length === 0){
8258 //equivalent to :root
8259 return filters.root(next);
8260 }
8261
8262 if(context.length === 1){
8263 //NOTE: can't be unpacked, as :has uses this for side-effects
8264 return function(elem){
8265 return context[0] === elem && next(elem);
8266 };
8267 }
8268
8269 return function(elem){
8270 return context.indexOf(elem) >= 0 && next(elem);
8271 };
8272 },
8273
8274 //jQuery extensions (others follow as pseudos)
8275 checkbox: getAttribFunc("type", "checkbox"),
8276 file: getAttribFunc("type", "file"),
8277 password: getAttribFunc("type", "password"),
8278 radio: getAttribFunc("type", "radio"),
8279 reset: getAttribFunc("type", "reset"),
8280 image: getAttribFunc("type", "image"),
8281 submit: getAttribFunc("type", "submit")
8282 };
8283
8284 //while filters are precompiled, pseudos get called when they are needed
8285 var pseudos = {
8286 empty: function(elem){
8287 return !getChildren(elem).some(function(elem){
8288 return isTag$2(elem) || elem.type === "text";
8289 });
8290 },
8291
8292 "first-child": function(elem){
8293 return getFirstElement(getSiblings(elem)) === elem;
8294 },
8295 "last-child": function(elem){
8296 var siblings = getSiblings(elem);
8297
8298 for(var i = siblings.length - 1; i >= 0; i--){
8299 if(siblings[i] === elem) return true;
8300 if(isTag$2(siblings[i])) break;
8301 }
8302
8303 return false;
8304 },
8305 "first-of-type": function(elem){
8306 var siblings = getSiblings(elem);
8307
8308 for(var i = 0; i < siblings.length; i++){
8309 if(isTag$2(siblings[i])){
8310 if(siblings[i] === elem) return true;
8311 if(getName(siblings[i]) === getName(elem)) break;
8312 }
8313 }
8314
8315 return false;
8316 },
8317 "last-of-type": function(elem){
8318 var siblings = getSiblings(elem);
8319
8320 for(var i = siblings.length-1; i >= 0; i--){
8321 if(isTag$2(siblings[i])){
8322 if(siblings[i] === elem) return true;
8323 if(getName(siblings[i]) === getName(elem)) break;
8324 }
8325 }
8326
8327 return false;
8328 },
8329 "only-of-type": function(elem){
8330 var siblings = getSiblings(elem);
8331
8332 for(var i = 0, j = siblings.length; i < j; i++){
8333 if(isTag$2(siblings[i])){
8334 if(siblings[i] === elem) continue;
8335 if(getName(siblings[i]) === getName(elem)) return false;
8336 }
8337 }
8338
8339 return true;
8340 },
8341 "only-child": function(elem){
8342 var siblings = getSiblings(elem);
8343
8344 for(var i = 0; i < siblings.length; i++){
8345 if(isTag$2(siblings[i]) && siblings[i] !== elem) return false;
8346 }
8347
8348 return true;
8349 },
8350
8351 //:matches(a, area, link)[href]
8352 link: function(elem){
8353 return hasAttrib$1(elem, "href");
8354 },
8355 visited: falseFunc$2, //seems to be a valid implementation
8356 //TODO: :any-link once the name is finalized (as an alias of :link)
8357
8358 //forms
8359 //to consider: :target
8360
8361 //:matches([selected], select:not([multiple]):not(> option[selected]) > option:first-of-type)
8362 selected: function(elem){
8363 if(hasAttrib$1(elem, "selected")) return true;
8364 else if(getName(elem) !== "option") return false;
8365
8366 //the first <option> in a <select> is also selected
8367 var parent = getParent(elem);
8368
8369 if(
8370 !parent ||
8371 getName(parent) !== "select" ||
8372 hasAttrib$1(parent, "multiple")
8373 ) return false;
8374
8375 var siblings = getChildren(parent),
8376 sawElem = false;
8377
8378 for(var i = 0; i < siblings.length; i++){
8379 if(isTag$2(siblings[i])){
8380 if(siblings[i] === elem){
8381 sawElem = true;
8382 } else if(!sawElem){
8383 return false;
8384 } else if(hasAttrib$1(siblings[i], "selected")){
8385 return false;
8386 }
8387 }
8388 }
8389
8390 return sawElem;
8391 },
8392 //https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements
8393 //:matches(
8394 // :matches(button, input, select, textarea, menuitem, optgroup, option)[disabled],
8395 // optgroup[disabled] > option),
8396 // fieldset[disabled] * //TODO not child of first <legend>
8397 //)
8398 disabled: function(elem){
8399 return hasAttrib$1(elem, "disabled");
8400 },
8401 enabled: function(elem){
8402 return !hasAttrib$1(elem, "disabled");
8403 },
8404 //:matches(:matches(:radio, :checkbox)[checked], :selected) (TODO menuitem)
8405 checked: function(elem){
8406 return hasAttrib$1(elem, "checked") || pseudos.selected(elem);
8407 },
8408 //:matches(input, select, textarea)[required]
8409 required: function(elem){
8410 return hasAttrib$1(elem, "required");
8411 },
8412 //:matches(input, select, textarea):not([required])
8413 optional: function(elem){
8414 return !hasAttrib$1(elem, "required");
8415 },
8416
8417 //jQuery extensions
8418
8419 //:not(:empty)
8420 parent: function(elem){
8421 return !pseudos.empty(elem);
8422 },
8423 //:matches(h1, h2, h3, h4, h5, h6)
8424 header: function(elem){
8425 var name = getName(elem);
8426 return name === "h1" ||
8427 name === "h2" ||
8428 name === "h3" ||
8429 name === "h4" ||
8430 name === "h5" ||
8431 name === "h6";
8432 },
8433
8434 //:matches(button, input[type=button])
8435 button: function(elem){
8436 var name = getName(elem);
8437 return name === "button" ||
8438 name === "input" &&
8439 getAttribute(elem, "type") === "button";
8440 },
8441 //:matches(input, textarea, select, button)
8442 input: function(elem){
8443 var name = getName(elem);
8444 return name === "input" ||
8445 name === "textarea" ||
8446 name === "select" ||
8447 name === "button";
8448 },
8449 //input:matches(:not([type!='']), [type='text' i])
8450 text: function(elem){
8451 var attr;
8452 return getName(elem) === "input" && (
8453 !(attr = getAttribute(elem, "type")) ||
8454 attr.toLowerCase() === "text"
8455 );
8456 }
8457 };
8458
8459 function verifyArgs(func, name, subselect){
8460 if(subselect === null){
8461 if(func.length > 1 && name !== "scope"){
8462 throw new SyntaxError("pseudo-selector :" + name + " requires an argument");
8463 }
8464 } else {
8465 if(func.length === 1){
8466 throw new SyntaxError("pseudo-selector :" + name + " doesn't have any arguments");
8467 }
8468 }
8469 }
8470
8471 //FIXME this feels hacky
8472 var re_CSS3 = /^(?:(?:nth|last|first|only)-(?:child|of-type)|root|empty|(?:en|dis)abled|checked|not)$/;
8473
8474 var pseudos_1 = {
8475 compile: function(next, data, options, context){
8476 var name = data.name,
8477 subselect = data.data;
8478
8479 if(options && options.strict && !re_CSS3.test(name)){
8480 throw SyntaxError(":" + name + " isn't part of CSS3");
8481 }
8482
8483 if(typeof filters[name] === "function"){
8484 verifyArgs(filters[name], name, subselect);
8485 return filters[name](next, subselect, options, context);
8486 } else if(typeof pseudos[name] === "function"){
8487 var func = pseudos[name];
8488 verifyArgs(func, name, subselect);
8489
8490 if(next === trueFunc$1) return func;
8491
8492 return function pseudoArgs(elem){
8493 return func(elem, subselect) && next(elem);
8494 };
8495 } else {
8496 throw new SyntaxError("unmatched pseudo-class :" + name);
8497 }
8498 },
8499 filters: filters,
8500 pseudos: pseudos
8501 };
8502
8503 var cssWhat = parse$1;
8504
8505 var re_name = /^(?:\\.|[\w\-\u00b0-\uFFFF])+/,
8506 re_escape = /\\([\da-f]{1,6}\s?|(\s)|.)/ig,
8507 //modified version of https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L87
8508 re_attr = /^\s*((?:\\.|[\w\u00b0-\uFFFF\-])+)\s*(?:(\S?)=\s*(?:(['"])([^]*?)\3|(#?(?:\\.|[\w\u00b0-\uFFFF\-])*)|)|)\s*(i)?\]/;
8509
8510 var actionTypes = {
8511 __proto__: null,
8512 "undefined": "exists",
8513 "": "equals",
8514 "~": "element",
8515 "^": "start",
8516 "$": "end",
8517 "*": "any",
8518 "!": "not",
8519 "|": "hyphen"
8520 };
8521
8522 var simpleSelectors = {
8523 __proto__: null,
8524 ">": "child",
8525 "<": "parent",
8526 "~": "sibling",
8527 "+": "adjacent"
8528 };
8529
8530 var attribSelectors = {
8531 __proto__: null,
8532 "#": ["id", "equals"],
8533 ".": ["class", "element"]
8534 };
8535
8536 //pseudos, whose data-property is parsed as well
8537 var unpackPseudos = {
8538 __proto__: null,
8539 "has": true,
8540 "not": true,
8541 "matches": true
8542 };
8543
8544 var stripQuotesFromPseudos = {
8545 __proto__: null,
8546 "contains": true,
8547 "icontains": true
8548 };
8549
8550 var quotes = {
8551 __proto__: null,
8552 "\"": true,
8553 "'": true
8554 };
8555
8556 //unescape function taken from https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L139
8557 function funescape( _, escaped, escapedWhitespace ) {
8558 var high = "0x" + escaped - 0x10000;
8559 // NaN means non-codepoint
8560 // Support: Firefox
8561 // Workaround erroneous numeric interpretation of +"0x"
8562 return high !== high || escapedWhitespace ?
8563 escaped :
8564 // BMP codepoint
8565 high < 0 ?
8566 String.fromCharCode( high + 0x10000 ) :
8567 // Supplemental Plane codepoint (surrogate pair)
8568 String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
8569 }
8570
8571 function unescapeCSS(str){
8572 return str.replace(re_escape, funescape);
8573 }
8574
8575 function isWhitespace(c){
8576 return c === " " || c === "\n" || c === "\t" || c === "\f" || c === "\r";
8577 }
8578
8579 function parse$1(selector, options){
8580 var subselects = [];
8581
8582 selector = parseSelector(subselects, selector + "", options);
8583
8584 if(selector !== ""){
8585 throw new SyntaxError("Unmatched selector: " + selector);
8586 }
8587
8588 return subselects;
8589 }
8590
8591 function parseSelector(subselects, selector, options){
8592 var tokens = [],
8593 sawWS = false,
8594 data, firstChar, name, quot;
8595
8596 function getName(){
8597 var sub = selector.match(re_name)[0];
8598 selector = selector.substr(sub.length);
8599 return unescapeCSS(sub);
8600 }
8601
8602 function stripWhitespace(start){
8603 while(isWhitespace(selector.charAt(start))) start++;
8604 selector = selector.substr(start);
8605 }
8606
8607 function isEscaped(pos) {
8608 var slashCount = 0;
8609
8610 while (selector.charAt(--pos) === "\\") slashCount++;
8611 return (slashCount & 1) === 1;
8612 }
8613
8614 stripWhitespace(0);
8615
8616 while(selector !== ""){
8617 firstChar = selector.charAt(0);
8618
8619 if(isWhitespace(firstChar)){
8620 sawWS = true;
8621 stripWhitespace(1);
8622 } else if(firstChar in simpleSelectors){
8623 tokens.push({type: simpleSelectors[firstChar]});
8624 sawWS = false;
8625
8626 stripWhitespace(1);
8627 } else if(firstChar === ","){
8628 if(tokens.length === 0){
8629 throw new SyntaxError("empty sub-selector");
8630 }
8631 subselects.push(tokens);
8632 tokens = [];
8633 sawWS = false;
8634 stripWhitespace(1);
8635 } else {
8636 if(sawWS){
8637 if(tokens.length > 0){
8638 tokens.push({type: "descendant"});
8639 }
8640 sawWS = false;
8641 }
8642
8643 if(firstChar === "*"){
8644 selector = selector.substr(1);
8645 tokens.push({type: "universal"});
8646 } else if(firstChar in attribSelectors){
8647 selector = selector.substr(1);
8648 tokens.push({
8649 type: "attribute",
8650 name: attribSelectors[firstChar][0],
8651 action: attribSelectors[firstChar][1],
8652 value: getName(),
8653 ignoreCase: false
8654 });
8655 } else if(firstChar === "["){
8656 selector = selector.substr(1);
8657 data = selector.match(re_attr);
8658 if(!data){
8659 throw new SyntaxError("Malformed attribute selector: " + selector);
8660 }
8661 selector = selector.substr(data[0].length);
8662 name = unescapeCSS(data[1]);
8663
8664 if(
8665 !options || (
8666 "lowerCaseAttributeNames" in options ?
8667 options.lowerCaseAttributeNames :
8668 !options.xmlMode
8669 )
8670 ){
8671 name = name.toLowerCase();
8672 }
8673
8674 tokens.push({
8675 type: "attribute",
8676 name: name,
8677 action: actionTypes[data[2]],
8678 value: unescapeCSS(data[4] || data[5] || ""),
8679 ignoreCase: !!data[6]
8680 });
8681
8682 } else if(firstChar === ":"){
8683 if(selector.charAt(1) === ":"){
8684 selector = selector.substr(2);
8685 tokens.push({type: "pseudo-element", name: getName().toLowerCase()});
8686 continue;
8687 }
8688
8689 selector = selector.substr(1);
8690
8691 name = getName().toLowerCase();
8692 data = null;
8693
8694 if(selector.charAt(0) === "("){
8695 if(name in unpackPseudos){
8696 quot = selector.charAt(1);
8697 var quoted = quot in quotes;
8698
8699 selector = selector.substr(quoted + 1);
8700
8701 data = [];
8702 selector = parseSelector(data, selector, options);
8703
8704 if(quoted){
8705 if(selector.charAt(0) !== quot){
8706 throw new SyntaxError("unmatched quotes in :" + name);
8707 } else {
8708 selector = selector.substr(1);
8709 }
8710 }
8711
8712 if(selector.charAt(0) !== ")"){
8713 throw new SyntaxError("missing closing parenthesis in :" + name + " " + selector);
8714 }
8715
8716 selector = selector.substr(1);
8717 } else {
8718 var pos = 1, counter = 1;
8719
8720 for(; counter > 0 && pos < selector.length; pos++){
8721 if(selector.charAt(pos) === "(" && !isEscaped(pos)) counter++;
8722 else if(selector.charAt(pos) === ")" && !isEscaped(pos)) counter--;
8723 }
8724
8725 if(counter){
8726 throw new SyntaxError("parenthesis not matched");
8727 }
8728
8729 data = selector.substr(1, pos - 2);
8730 selector = selector.substr(pos);
8731
8732 if(name in stripQuotesFromPseudos){
8733 quot = data.charAt(0);
8734
8735 if(quot === data.slice(-1) && quot in quotes){
8736 data = data.slice(1, -1);
8737 }
8738
8739 data = unescapeCSS(data);
8740 }
8741 }
8742 }
8743
8744 tokens.push({type: "pseudo", name: name, data: data});
8745 } else if(re_name.test(selector)){
8746 name = getName();
8747
8748 if(!options || ("lowerCaseTags" in options ? options.lowerCaseTags : !options.xmlMode)){
8749 name = name.toLowerCase();
8750 }
8751
8752 tokens.push({type: "tag", name: name});
8753 } else {
8754 if(tokens.length && tokens[tokens.length - 1].type === "descendant"){
8755 tokens.pop();
8756 }
8757 addToken(subselects, tokens);
8758 return selector;
8759 }
8760 }
8761 }
8762
8763 addToken(subselects, tokens);
8764
8765 return selector;
8766 }
8767
8768 function addToken(subselects, tokens){
8769 if(subselects.length > 0 && tokens.length === 0){
8770 throw new SyntaxError("empty sub-selector");
8771 }
8772
8773 subselects.push(tokens);
8774 }
8775
8776 var isTag$3 = domutils.isTag,
8777 getParent$1 = domutils.getParent,
8778 getChildren$1 = domutils.getChildren,
8779 getSiblings$1 = domutils.getSiblings,
8780 getName$1 = domutils.getName;
8781
8782 /*
8783 all available rules
8784 */
8785 var general = {
8786 __proto__: null,
8787
8788 attribute: attributes.compile,
8789 pseudo: pseudos_1.compile,
8790
8791 //tags
8792 tag: function(next, data){
8793 var name = data.name;
8794 return function tag(elem){
8795 return getName$1(elem) === name && next(elem);
8796 };
8797 },
8798
8799 //traversal
8800 descendant: function(next, rule, options, context, acceptSelf){
8801 return function descendant(elem){
8802
8803 if (acceptSelf && next(elem)) return true;
8804
8805 var found = false;
8806
8807 while(!found && (elem = getParent$1(elem))){
8808 found = next(elem);
8809 }
8810
8811 return found;
8812 };
8813 },
8814 parent: function(next, data, options){
8815 if(options && options.strict) throw SyntaxError("Parent selector isn't part of CSS3");
8816
8817 return function parent(elem){
8818 return getChildren$1(elem).some(test);
8819 };
8820
8821 function test(elem){
8822 return isTag$3(elem) && next(elem);
8823 }
8824 },
8825 child: function(next){
8826 return function child(elem){
8827 var parent = getParent$1(elem);
8828 return !!parent && next(parent);
8829 };
8830 },
8831 sibling: function(next){
8832 return function sibling(elem){
8833 var siblings = getSiblings$1(elem);
8834
8835 for(var i = 0; i < siblings.length; i++){
8836 if(isTag$3(siblings[i])){
8837 if(siblings[i] === elem) break;
8838 if(next(siblings[i])) return true;
8839 }
8840 }
8841
8842 return false;
8843 };
8844 },
8845 adjacent: function(next){
8846 return function adjacent(elem){
8847 var siblings = getSiblings$1(elem),
8848 lastElement;
8849
8850 for(var i = 0; i < siblings.length; i++){
8851 if(isTag$3(siblings[i])){
8852 if(siblings[i] === elem) break;
8853 lastElement = siblings[i];
8854 }
8855 }
8856
8857 return !!lastElement && next(lastElement);
8858 };
8859 },
8860 universal: function(next){
8861 return next;
8862 }
8863 };
8864
8865 var universal = 50;
8866 var tag = 30;
8867 var attribute = 1;
8868 var pseudo = 0;
8869 var descendant = -1;
8870 var child = -1;
8871 var parent = -1;
8872 var sibling = -1;
8873 var adjacent = -1;
8874 var procedure = {
8875 universal: universal,
8876 tag: tag,
8877 attribute: attribute,
8878 pseudo: pseudo,
8879 descendant: descendant,
8880 child: child,
8881 parent: parent,
8882 sibling: sibling,
8883 adjacent: adjacent
8884 };
8885
8886 var procedure$1 = {
8887 __proto__: null,
8888 universal: universal,
8889 tag: tag,
8890 attribute: attribute,
8891 pseudo: pseudo,
8892 descendant: descendant,
8893 child: child,
8894 parent: parent,
8895 sibling: sibling,
8896 adjacent: adjacent,
8897 'default': procedure
8898 };
8899
8900 var procedure$2 = getCjsExportFromNamespace(procedure$1);
8901
8902 var sort = sortByProcedure;
8903
8904 /*
8905 sort the parts of the passed selector,
8906 as there is potential for optimization
8907 (some types of selectors are faster than others)
8908 */
8909
8910
8911
8912 var attributes$1 = {
8913 __proto__: null,
8914 exists: 10,
8915 equals: 8,
8916 not: 7,
8917 start: 6,
8918 end: 6,
8919 any: 5,
8920 hyphen: 4,
8921 element: 4
8922 };
8923
8924 function sortByProcedure(arr){
8925 var procs = arr.map(getProcedure);
8926 for(var i = 1; i < arr.length; i++){
8927 var procNew = procs[i];
8928
8929 if(procNew < 0) continue;
8930
8931 for(var j = i - 1; j >= 0 && procNew < procs[j]; j--){
8932 var token = arr[j + 1];
8933 arr[j + 1] = arr[j];
8934 arr[j] = token;
8935 procs[j + 1] = procs[j];
8936 procs[j] = procNew;
8937 }
8938 }
8939 }
8940
8941 function getProcedure(token){
8942 var proc = procedure$2[token.type];
8943
8944 if(proc === procedure$2.attribute){
8945 proc = attributes$1[token.action];
8946
8947 if(proc === attributes$1.equals && token.name === "id"){
8948 //prefer ID selectors (eg. #ID)
8949 proc = 9;
8950 }
8951
8952 if(token.ignoreCase){
8953 //ignoreCase adds some overhead, prefer "normal" token
8954 //this is a binary operation, to ensure it's still an int
8955 proc >>= 1;
8956 }
8957 } else if(proc === procedure$2.pseudo){
8958 if(!token.data){
8959 proc = 3;
8960 } else if(token.name === "has" || token.name === "contains"){
8961 proc = 0; //expensive in any case
8962 } else if(token.name === "matches" || token.name === "not"){
8963 proc = 0;
8964 for(var i = 0; i < token.data.length; i++){
8965 //TODO better handling of complex selectors
8966 if(token.data[i].length !== 1) continue;
8967 var cur = getProcedure(token.data[i][0]);
8968 //avoid executing :has or :contains
8969 if(cur === 0){
8970 proc = 0;
8971 break;
8972 }
8973 if(cur > proc) proc = cur;
8974 }
8975 if(token.data.length > 1 && proc > 0) proc -= 1;
8976 } else {
8977 proc = 1;
8978 }
8979 }
8980 return proc;
8981 }
8982
8983 /*
8984 compiles a selector to an executable function
8985 */
8986
8987 var compile_1$2 = compile$1;
8988 var compileUnsafe_1 = compileUnsafe;
8989 var compileToken_1 = compileToken;
8990
8991 var isTag$4 = domutils.isTag,
8992 trueFunc$2 = boolbase.trueFunc,
8993 falseFunc$3 = boolbase.falseFunc;
8994
8995 function compile$1(selector, options, context){
8996 var next = compileUnsafe(selector, options, context);
8997 return wrap(next);
8998 }
8999
9000 function wrap(next){
9001 return function base(elem){
9002 return isTag$4(elem) && next(elem);
9003 };
9004 }
9005
9006 function compileUnsafe(selector, options, context){
9007 var token = cssWhat(selector, options);
9008 return compileToken(token, options, context);
9009 }
9010
9011 function includesScopePseudo(t){
9012 return t.type === "pseudo" && (
9013 t.name === "scope" || (
9014 Array.isArray(t.data) &&
9015 t.data.some(function(data){
9016 return data.some(includesScopePseudo);
9017 })
9018 )
9019 );
9020 }
9021
9022 var DESCENDANT_TOKEN = {type: "descendant"},
9023 SCOPE_TOKEN = {type: "pseudo", name: "scope"},
9024 PLACEHOLDER_ELEMENT = {},
9025 getParent$2 = domutils.getParent;
9026
9027 //CSS 4 Spec (Draft): 3.3.1. Absolutizing a Scope-relative Selector
9028 //http://www.w3.org/TR/selectors4/#absolutizing
9029 function absolutize(token, context){
9030 //TODO better check if context is document
9031 var hasContext = !!context && !!context.length && context.every(function(e){
9032 return e === PLACEHOLDER_ELEMENT || !!getParent$2(e);
9033 });
9034
9035
9036 token.forEach(function(t){
9037 if(t.length > 0 && isTraversal(t[0]) && t[0].type !== "descendant"); else if(hasContext && !includesScopePseudo(t)){
9038 t.unshift(DESCENDANT_TOKEN);
9039 } else {
9040 return;
9041 }
9042
9043 t.unshift(SCOPE_TOKEN);
9044 });
9045 }
9046
9047 function compileToken(token, options, context){
9048 token = token.filter(function(t){ return t.length > 0; });
9049
9050 token.forEach(sort);
9051
9052 var isArrayContext = Array.isArray(context);
9053
9054 context = (options && options.context) || context;
9055
9056 if(context && !isArrayContext) context = [context];
9057
9058 absolutize(token, context);
9059
9060 return token
9061 .map(function(rules){ return compileRules(rules, options, context, isArrayContext); })
9062 .reduce(reduceRules, falseFunc$3);
9063 }
9064
9065 function isTraversal(t){
9066 return procedure$2[t.type] < 0;
9067 }
9068
9069 function compileRules(rules, options, context, isArrayContext){
9070 var acceptSelf = (isArrayContext && rules[0].name === "scope" && rules[1].type === "descendant");
9071 return rules.reduce(function(func, rule, index){
9072 if(func === falseFunc$3) return func;
9073 return general[rule.type](func, rule, options, context, acceptSelf && index === 1);
9074 }, options && options.rootFunc || trueFunc$2);
9075 }
9076
9077 function reduceRules(a, b){
9078 if(b === falseFunc$3 || a === trueFunc$2){
9079 return a;
9080 }
9081 if(a === falseFunc$3 || b === trueFunc$2){
9082 return b;
9083 }
9084
9085 return function combine(elem){
9086 return a(elem) || b(elem);
9087 };
9088 }
9089
9090 //:not, :has and :matches have to compile selectors
9091 //doing this in lib/pseudos.js would lead to circular dependencies,
9092 //so we add them here
9093
9094 var filters$1 = pseudos_1.filters,
9095 existsOne$1 = domutils.existsOne,
9096 isTag$4 = domutils.isTag,
9097 getChildren$2 = domutils.getChildren;
9098
9099
9100 function containsTraversal(t){
9101 return t.some(isTraversal);
9102 }
9103
9104 filters$1.not = function(next, token, options, context){
9105 var opts = {
9106 xmlMode: !!(options && options.xmlMode),
9107 strict: !!(options && options.strict)
9108 };
9109
9110 if(opts.strict){
9111 if(token.length > 1 || token.some(containsTraversal)){
9112 throw new SyntaxError("complex selectors in :not aren't allowed in strict mode");
9113 }
9114 }
9115
9116 var func = compileToken(token, opts, context);
9117
9118 if(func === falseFunc$3) return next;
9119 if(func === trueFunc$2) return falseFunc$3;
9120
9121 return function(elem){
9122 return !func(elem) && next(elem);
9123 };
9124 };
9125
9126 filters$1.has = function(next, token, options){
9127 var opts = {
9128 xmlMode: !!(options && options.xmlMode),
9129 strict: !!(options && options.strict)
9130 };
9131
9132 //FIXME: Uses an array as a pointer to the current element (side effects)
9133 var context = token.some(containsTraversal) ? [PLACEHOLDER_ELEMENT] : null;
9134
9135 var func = compileToken(token, opts, context);
9136
9137 if(func === falseFunc$3) return falseFunc$3;
9138 if(func === trueFunc$2) return function(elem){
9139 return getChildren$2(elem).some(isTag$4) && next(elem);
9140 };
9141
9142 func = wrap(func);
9143
9144 if(context){
9145 return function has(elem){
9146 return next(elem) && (
9147 (context[0] = elem), existsOne$1(func, getChildren$2(elem))
9148 );
9149 };
9150 }
9151
9152 return function has(elem){
9153 return next(elem) && existsOne$1(func, getChildren$2(elem));
9154 };
9155 };
9156
9157 filters$1.matches = function(next, token, options, context){
9158 var opts = {
9159 xmlMode: !!(options && options.xmlMode),
9160 strict: !!(options && options.strict),
9161 rootFunc: next
9162 };
9163
9164 return compileToken(token, opts, context);
9165 };
9166 compile_1$2.compileUnsafe = compileUnsafe_1;
9167 compile_1$2.compileToken = compileToken_1;
9168
9169 var cssSelect = CSSselect;
9170
9171 var findOne$1 = domutils.findOne,
9172 findAll$1 = domutils.findAll,
9173 getChildren$3 = domutils.getChildren,
9174 removeSubsets = domutils.removeSubsets,
9175 falseFunc$4 = boolbase.falseFunc,
9176 compileUnsafe$1 = compile_1$2.compileUnsafe,
9177 compileToken$1 = compile_1$2.compileToken;
9178
9179 function getSelectorFunc(searchFunc){
9180 return function select(query, elems, options){
9181 if(typeof query !== "function") query = compileUnsafe$1(query, options, elems);
9182 if(!Array.isArray(elems)) elems = getChildren$3(elems);
9183 else elems = removeSubsets(elems);
9184 return searchFunc(query, elems);
9185 };
9186 }
9187
9188 var selectAll = getSelectorFunc(function selectAll(query, elems){
9189 return (query === falseFunc$4 || !elems || elems.length === 0) ? [] : findAll$1(query, elems);
9190 });
9191
9192 var selectOne = getSelectorFunc(function selectOne(query, elems){
9193 return (query === falseFunc$4 || !elems || elems.length === 0) ? null : findOne$1(query, elems);
9194 });
9195
9196 function is(elem, query, options){
9197 return (typeof query === "function" ? query : compile_1$2(query, options))(elem);
9198 }
9199
9200 /*
9201 the exported interface
9202 */
9203 function CSSselect(query, elems, options){
9204 return selectAll(query, elems, options);
9205 }
9206
9207 CSSselect.compile = compile_1$2;
9208 CSSselect.filters = pseudos_1.filters;
9209 CSSselect.pseudos = pseudos_1.pseudos;
9210
9211 CSSselect.selectAll = selectAll;
9212 CSSselect.selectOne = selectOne;
9213
9214 CSSselect.is = is;
9215
9216 //legacy methods (might be removed)
9217 CSSselect.parse = compile_1$2;
9218 CSSselect.iterate = selectAll;
9219
9220 //hooks
9221 CSSselect._compileUnsafe = compileUnsafe$1;
9222 CSSselect._compileToken = compileToken$1;
9223
9224 /**
9225 * Copyright 2018 Google LLC
9226 *
9227 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
9228 * use this file except in compliance with the License. You may obtain a copy of
9229 * the License at
9230 *
9231 * http://www.apache.org/licenses/LICENSE-2.0
9232 *
9233 * Unless required by applicable law or agreed to in writing, software
9234 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
9235 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
9236 * License for the specific language governing permissions and limitations under
9237 * the License.
9238 */
9239
9240 const treeAdapter = require('parse5-htmlparser2-tree-adapter');
9241
9242 const PARSE5_OPTS = {
9243 treeAdapter
9244 };
9245 /**
9246 * Parse HTML into a mutable, serializable DOM Document.
9247 * The DOM implementation is an htmlparser2 DOM enhanced with basic DOM mutation methods.
9248 * @param {String} html HTML to parse into a Document instance
9249 */
9250
9251 function createDocument(html) {
9252 const document = parse5.parse(html, PARSE5_OPTS);
9253 defineProperties(document, DocumentExtensions); // Extend Element.prototype with DOM manipulation methods.
9254
9255 const scratch = document.createElement('div'); // Get a reference to the base Node class - used by createTextNode()
9256
9257 document.$$Node = scratch.constructor;
9258 const elementProto = Object.getPrototypeOf(scratch);
9259 defineProperties(elementProto, ElementExtensions);
9260 elementProto.ownerDocument = document;
9261 return document;
9262 }
9263 /**
9264 * Serialize a Document to an HTML String
9265 * @param {Document} document A Document, such as one created via `createDocument()`
9266 */
9267
9268 function serializeDocument(document) {
9269 return parse5.serialize(document, PARSE5_OPTS);
9270 }
9271 /**
9272 * Methods and descriptors to mix into Element.prototype
9273 */
9274
9275 const ElementExtensions = {
9276 /** @extends htmlparser2.Element.prototype */
9277 nodeName: {
9278 get() {
9279 return this.tagName.toUpperCase();
9280 }
9281
9282 },
9283 id: reflectedProperty('id'),
9284 className: reflectedProperty('class'),
9285
9286 insertBefore(child, referenceNode) {
9287 if (!referenceNode) return this.appendChild(child);
9288 treeAdapter.insertBefore(this, child, referenceNode);
9289 return child;
9290 },
9291
9292 appendChild(child) {
9293 treeAdapter.appendChild(this, child);
9294 return child;
9295 },
9296
9297 removeChild(child) {
9298 treeAdapter.detachNode(child);
9299 },
9300
9301 remove() {
9302 treeAdapter.detachNode(this);
9303 },
9304
9305 textContent: {
9306 get() {
9307 return getText$2(this);
9308 },
9309
9310 set(text) {
9311 this.children = [];
9312 treeAdapter.insertText(this, text);
9313 }
9314
9315 },
9316
9317 setAttribute(name, value) {
9318 if (this.attribs == null) this.attribs = {};
9319 if (value == null) value = '';
9320 this.attribs[name] = value;
9321 },
9322
9323 removeAttribute(name) {
9324 if (this.attribs != null) {
9325 delete this.attribs[name];
9326 }
9327 },
9328
9329 getAttribute(name) {
9330 return this.attribs != null && this.attribs[name];
9331 },
9332
9333 hasAttribute(name) {
9334 return this.attribs != null && this.attribs[name] != null;
9335 },
9336
9337 getAttributeNode(name) {
9338 const value = this.getAttribute(name);
9339 if (value != null) return {
9340 specified: true,
9341 value
9342 };
9343 }
9344
9345 };
9346 /**
9347 * Methods and descriptors to mix into the global document instance
9348 * @private
9349 */
9350
9351 const DocumentExtensions = {
9352 /** @extends htmlparser2.Document.prototype */
9353 // document is just an Element in htmlparser2, giving it a nodeType of ELEMENT_NODE.
9354 // TODO: verify if these are needed for css-select
9355 nodeType: {
9356 get() {
9357 return 9;
9358 }
9359
9360 },
9361 contentType: {
9362 get() {
9363 return 'text/html';
9364 }
9365
9366 },
9367 nodeName: {
9368 get() {
9369 return '#document';
9370 }
9371
9372 },
9373 documentElement: {
9374 get() {
9375 // Find the first <html> element within the document
9376 return this.childNodes.filter(child => String(child.tagName).toLowerCase() === 'html');
9377 }
9378
9379 },
9380 compatMode: {
9381 get() {
9382 const compatMode = {
9383 'no-quirks': 'CSS1Compat',
9384 quirks: 'BackCompat',
9385 'limited-quirks': 'CSS1Compat'
9386 };
9387 return compatMode[treeAdapter.getDocumentMode(this)];
9388 }
9389
9390 },
9391 body: {
9392 get() {
9393 return this.querySelector('body');
9394 }
9395
9396 },
9397
9398 createElement(name) {
9399 return treeAdapter.createElement(name, null, []);
9400 },
9401
9402 createTextNode(text) {
9403 // there is no dedicated createTextNode equivalent exposed in htmlparser2's DOM
9404 const Node = this.$$Node;
9405 return new Node({
9406 type: 'text',
9407 data: text,
9408 parent: null,
9409 prev: null,
9410 next: null
9411 });
9412 },
9413
9414 querySelector(sel) {
9415 return cssSelect.selectOne(sel, this.documentElement);
9416 },
9417
9418 querySelectorAll(sel) {
9419 if (sel === ':root') {
9420 return this;
9421 }
9422
9423 return cssSelect(sel, this.documentElement);
9424 }
9425
9426 };
9427 /**
9428 * Essentially `Object.defineProperties()`, except function values are assigned as value descriptors for convenience.
9429 * @private
9430 */
9431
9432 function defineProperties(obj, properties) {
9433 for (const i in properties) {
9434 const value = properties[i];
9435 Object.defineProperty(obj, i, typeof value === 'function' ? {
9436 value
9437 } : value);
9438 }
9439 }
9440 /**
9441 * Create a property descriptor defining a getter/setter pair alias for a named attribute.
9442 * @private
9443 */
9444
9445
9446 function reflectedProperty(attributeName) {
9447 return {
9448 get() {
9449 return this.getAttribute(attributeName);
9450 },
9451
9452 set(value) {
9453 this.setAttribute(attributeName, value);
9454 }
9455
9456 };
9457 }
9458 /**
9459 * Helper to get the text content of a node
9460 * https://github.com/fb55/domutils/blob/master/src/stringify.ts#L21
9461 * @private
9462 */
9463
9464
9465 function getText$2(node) {
9466 if (Array.isArray(node)) return node.map(getText$2).join('');
9467 if (treeAdapter.isElementNode(node)) return node.name === 'br' ? '\n' : getText$2(node.children);
9468 if (treeAdapter.isTextNode(node)) return node.data;
9469 return '';
9470 }
9471
9472 /**
9473 * Copyright 2018 Google LLC
9474 *
9475 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
9476 * use this file except in compliance with the License. You may obtain a copy of
9477 * the License at
9478 *
9479 * http://www.apache.org/licenses/LICENSE-2.0
9480 *
9481 * Unless required by applicable law or agreed to in writing, software
9482 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
9483 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
9484 * License for the specific language governing permissions and limitations under
9485 * the License.
9486 */
9487 /**
9488 * Parse a textual CSS Stylesheet into a Stylesheet instance.
9489 * Stylesheet is a mutable ReworkCSS AST with format similar to CSSOM.
9490 * @see https://github.com/reworkcss/css
9491 * @private
9492 * @param {String} stylesheet
9493 * @returns {css.Stylesheet} ast
9494 */
9495
9496 function parseStylesheet(stylesheet) {
9497 return css.parse(stylesheet);
9498 }
9499 /**
9500 * Serialize a ReworkCSS Stylesheet to a String of CSS.
9501 * @private
9502 * @param {css.Stylesheet} ast A Stylesheet to serialize, such as one returned from `parseStylesheet()`
9503 * @param {Object} options Options to pass to `css.stringify()`
9504 * @param {Boolean} [options.compress] Compress CSS output (removes comments, whitespace, etc)
9505 */
9506
9507 function serializeStylesheet(ast, options) {
9508 return css.stringify(ast, options);
9509 }
9510 /**
9511 * Converts a walkStyleRules() iterator to mark nodes with `.$$remove=true` instead of actually removing them.
9512 * This means they can be removed in a second pass, allowing the first pass to be nondestructive (eg: to preserve mirrored sheets).
9513 * @private
9514 * @param {Function} iterator Invoked on each node in the tree. Return `false` to remove that node.
9515 * @returns {(rule) => void} nonDestructiveIterator
9516 */
9517
9518 function markOnly(predicate) {
9519 return rule => {
9520 const sel = rule.selectors;
9521
9522 if (predicate(rule) === false) {
9523 rule.$$remove = true;
9524 }
9525
9526 rule.$$markedSelectors = rule.selectors;
9527
9528 if (rule._other) {
9529 rule._other.$$markedSelectors = rule._other.selectors;
9530 }
9531
9532 rule.selectors = sel;
9533 };
9534 }
9535 /**
9536 * Apply filtered selectors to a rule from a previous markOnly run.
9537 * @private
9538 * @param {css.Rule} rule The Rule to apply marked selectors to (if they exist).
9539 */
9540
9541 function applyMarkedSelectors(rule) {
9542 if (rule.$$markedSelectors) {
9543 rule.selectors = rule.$$markedSelectors;
9544 }
9545
9546 if (rule._other) {
9547 applyMarkedSelectors(rule._other);
9548 }
9549 }
9550 /**
9551 * Recursively walk all rules in a stylesheet.
9552 * @private
9553 * @param {css.Rule} node A Stylesheet or Rule to descend into.
9554 * @param {Function} iterator Invoked on each node in the tree. Return `false` to remove that node.
9555 */
9556
9557 function walkStyleRules(node, iterator) {
9558 if (node.stylesheet) return walkStyleRules(node.stylesheet, iterator);
9559 node.rules = node.rules.filter(rule => {
9560 if (rule.rules) {
9561 walkStyleRules(rule, iterator);
9562 }
9563
9564 rule._other = undefined;
9565 rule.filterSelectors = filterSelectors;
9566 return iterator(rule) !== false;
9567 });
9568 }
9569 /**
9570 * Recursively walk all rules in two identical stylesheets, filtering nodes into one or the other based on a predicate.
9571 * @private
9572 * @param {css.Rule} node A Stylesheet or Rule to descend into.
9573 * @param {css.Rule} node2 A second tree identical to `node`
9574 * @param {Function} iterator Invoked on each node in the tree. Return `false` to remove that node from the first tree, true to remove it from the second.
9575 */
9576
9577 function walkStyleRulesWithReverseMirror(node, node2, iterator) {
9578 if (node2 === null) return walkStyleRules(node, iterator);
9579 if (node.stylesheet) return walkStyleRulesWithReverseMirror(node.stylesheet, node2.stylesheet, iterator);
9580 [node.rules, node2.rules] = splitFilter(node.rules, node2.rules, (rule, index, rules, rules2) => {
9581 const rule2 = rules2[index];
9582
9583 if (rule.rules) {
9584 walkStyleRulesWithReverseMirror(rule, rule2, iterator);
9585 }
9586
9587 rule._other = rule2;
9588 rule.filterSelectors = filterSelectors;
9589 return iterator(rule) !== false;
9590 });
9591 } // Like [].filter(), but applies the opposite filtering result to a second copy of the Array without a second pass.
9592 // This is just a quicker version of generating the compliment of the set returned from a filter operation.
9593
9594 function splitFilter(a, b, predicate) {
9595 const aOut = [];
9596 const bOut = [];
9597
9598 for (let index = 0; index < a.length; index++) {
9599 if (predicate(a[index], index, a, b)) {
9600 aOut.push(a[index]);
9601 } else {
9602 bOut.push(a[index]);
9603 }
9604 }
9605
9606 return [aOut, bOut];
9607 } // can be invoked on a style rule to subset its selectors (with reverse mirroring)
9608
9609
9610 function filterSelectors(predicate) {
9611 if (this._other) {
9612 const [a, b] = splitFilter(this.selectors, this._other.selectors, predicate);
9613 this.selectors = a;
9614 this._other.selectors = b;
9615 } else {
9616 this.selectors = this.selectors.filter(predicate);
9617 }
9618 }
9619
9620 const LOG_LEVELS = ['trace', 'debug', 'info', 'warn', 'error', 'silent'];
9621 const defaultLogger = {
9622 trace(msg) {
9623 console.trace(msg);
9624 },
9625
9626 debug(msg) {
9627 console.debug(msg);
9628 },
9629
9630 warn(msg) {
9631 console.warn(chalk.yellow(msg));
9632 },
9633
9634 error(msg) {
9635 console.error(chalk.bold.red(msg));
9636 },
9637
9638 info(msg) {
9639 console.info(chalk.bold.blue(msg));
9640 },
9641
9642 silent() {}
9643
9644 };
9645 function createLogger(logLevel) {
9646 const logLevelIdx = LOG_LEVELS.indexOf(logLevel);
9647 return LOG_LEVELS.reduce((logger, type, index) => {
9648 if (index >= logLevelIdx) {
9649 logger[type] = defaultLogger[type];
9650 } else {
9651 logger[type] = defaultLogger.silent;
9652 }
9653
9654 return logger;
9655 }, {});
9656 }
9657
9658 /**
9659 * Copyright 2018 Google LLC
9660 *
9661 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
9662 * use this file except in compliance with the License. You may obtain a copy of
9663 * the License at
9664 *
9665 * http://www.apache.org/licenses/LICENSE-2.0
9666 *
9667 * Unless required by applicable law or agreed to in writing, software
9668 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
9669 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
9670 * License for the specific language governing permissions and limitations under
9671 * the License.
9672 */
9673 /**
9674 * The mechanism to use for lazy-loading stylesheets.
9675 * Note: <kbd>JS</kbd> indicates a strategy requiring JavaScript (falls back to `<noscript>` unless disabled).
9676 *
9677 * - **default:** Move stylesheet links to the end of the document and insert preload meta tags in their place.
9678 * - **"body":** Move all external stylesheet links to the end of the document.
9679 * - **"media":** Load stylesheets asynchronously by adding `media="not x"` and removing once loaded. <kbd>JS</kbd>
9680 * - **"swap":** Convert stylesheet links to preloads that swap to `rel="stylesheet"` once loaded ([details](https://www.filamentgroup.com/lab/load-css-simpler/#the-code)). <kbd>JS</kbd>
9681 * - **"swap-high":** Use `<link rel="alternate stylesheet preload">` and swap to `rel="stylesheet"` once loaded ([details](http://filamentgroup.github.io/loadCSS/test/new-high.html)). <kbd>JS</kbd>
9682 * - **"js":** Inject an asynchronous CSS loader similar to [LoadCSS](https://github.com/filamentgroup/loadCSS) and use it to load stylesheets. <kbd>JS</kbd>
9683 * - **"js-lazy":** Like `"js"`, but the stylesheet is disabled until fully loaded.
9684 * @typedef {(default|'body'|'media'|'swap'|'swap-high'|'js'|'js-lazy')} PreloadStrategy
9685 * @public
9686 */
9687
9688 /**
9689 * Controls which keyframes rules are inlined.
9690 *
9691 * - **"critical":** _(default)_ inline keyframes rules that are used by the critical CSS.
9692 * - **"all":** Inline all keyframes rules.
9693 * - **"none":** Remove all keyframes rules.
9694 * @typedef {('critical'|'all'|'none')} KeyframeStrategy
9695 * @private
9696 * @property {String} keyframes Which {@link KeyframeStrategy keyframe strategy} to use (default: `critical`)_
9697 */
9698
9699 /**
9700 * Controls log level of the plugin. Specifies the level the logger should use. A logger will
9701 * not produce output for any log level beneath the specified level. Available levels and order
9702 * are:
9703 *
9704 * - **"info"** _(default)_
9705 * - **"warn"**
9706 * - **"error"**
9707 * - **"trace"**
9708 * - **"debug"**
9709 * - **"silent"**
9710 * @typedef {('info'|'warn'|'error'|'trace'|'debug'|'silent')} LogLevel
9711 * @public
9712 */
9713
9714 /**
9715 * Custom logger interface:
9716 * @typedef {object} Logger
9717 * @public
9718 * @property {function(String)} trace - Prints a trace message
9719 * @property {function(String)} debug - Prints a debug message
9720 * @property {function(String)} info - Prints an information message
9721 * @property {function(String)} warn - Prints a warning message
9722 * @property {function(String)} error - Prints an error message
9723 */
9724
9725 /**
9726 * All optional. Pass them to `new Critters({ ... })`.
9727 * @public
9728 * @typedef Options
9729 * @property {String} path Base path location of the CSS files _(default: `''`)_
9730 * @property {String} publicPath Public path of the CSS resources. This prefix is removed from the href _(default: `''`)_
9731 * @property {Boolean} external Inline styles from external stylesheets _(default: `true`)_
9732 * @property {Number} inlineThreshold Inline external stylesheets smaller than a given size _(default: `0`)_
9733 * @property {Number} minimumExternalSize If the non-critical external stylesheet would be below this size, just inline it _(default: `0`)_
9734 * @property {Boolean} pruneSource Remove inlined rules from the external stylesheet _(default: `false`)_
9735 * @property {Boolean} mergeStylesheets Merged inlined stylesheets into a single <style> tag _(default: `true`)_
9736 * @property {String[]} additionalStylesheets Glob for matching other stylesheets to be used while looking for critical CSS _(default: ``)_.
9737 * @property {String} preload Which {@link PreloadStrategy preload strategy} to use
9738 * @property {Boolean} noscriptFallback Add `<noscript>` fallback to JS-based strategies
9739 * @property {Boolean} inlineFonts Inline critical font-face rules _(default: `false`)_
9740 * @property {Boolean} preloadFonts Preloads critical fonts _(default: `true`)_
9741 * @property {Boolean} fonts Shorthand for setting `inlineFonts`+`preloadFonts`
9742 * - Values:
9743 * - `true` to inline critical font-face rules and preload the fonts
9744 * - `false` to don't inline any font-face rules and don't preload fonts
9745 * @property {String} keyframes Controls which keyframes rules are inlined.
9746 * - Values:
9747 * - `"critical"`: _(default)_ inline keyframes rules used by the critical CSS
9748 * - `"all"` inline all keyframes rules
9749 * - `"none"` remove all keyframes rules
9750 * @property {Boolean} compress Compress resulting critical CSS _(default: `true`)_
9751 * @property {String} logLevel Controls {@link LogLevel log level} of the plugin _(default: `"info"`)_
9752 * @property {object} logger Provide a custom logger interface {@link Logger logger}
9753 */
9754
9755 function _catch(body, recover) {
9756 try {
9757 var result = body();
9758 } catch (e) {
9759 return recover(e);
9760 }
9761
9762 if (result && result.then) {
9763 return result.then(void 0, recover);
9764 }
9765
9766 return result;
9767 }
9768
9769 class Critters {
9770 /** @private */
9771 constructor(options) {
9772 this.options = Object.assign({
9773 logLevel: 'info',
9774 path: '',
9775 publicPath: '',
9776 reduceInlineStyles: true,
9777 pruneSource: false,
9778 additionalStylesheets: []
9779 }, options || {});
9780 this.urlFilter = this.options.filter;
9781
9782 if (this.urlFilter instanceof RegExp) {
9783 this.urlFilter = this.urlFilter.test.bind(this.urlFilter);
9784 }
9785
9786 this.logger = this.options.logger || createLogger(this.options.logLevel);
9787 }
9788 /**
9789 * Read the contents of a file from the specified filesystem or disk
9790 */
9791
9792
9793 readFile(filename) {
9794 const fs = this.fs;
9795 return new Promise((resolve, reject) => {
9796 const callback = (err, data) => {
9797 if (err) reject(err);else resolve(data);
9798 };
9799
9800 if (fs && fs.readFile) {
9801 fs.readFile(filename, callback);
9802 } else {
9803 require('fs').readFile(filename, 'utf8', callback);
9804 }
9805 });
9806 }
9807 /**
9808 * Apply critical CSS processing to the html
9809 */
9810
9811
9812 process(html) {
9813 try {
9814 const _this = this;
9815
9816 function _temp4() {
9817 // go through all the style tags in the document and reduce them to only critical CSS
9818 const styles = _this.getAffectedStyleTags(document);
9819
9820 return Promise.resolve(Promise.all(styles.map(style => _this.processStyle(style, document)))).then(function () {
9821 function _temp2() {
9822 // serialize the document back to HTML and we're done
9823 const output = serializeDocument(document);
9824 const end = process.hrtime.bigint();
9825
9826 _this.logger.info('Time ' + parseFloat(end - start) / 1000000.0);
9827
9828 return output;
9829 }
9830
9831 const _temp = function () {
9832 if (_this.options.mergeStylesheets !== false && styles.length !== 0) {
9833 return Promise.resolve(_this.mergeStylesheets(document)).then(function () {});
9834 }
9835 }();
9836
9837 return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
9838 });
9839 }
9840
9841 const start = process.hrtime.bigint(); // Parse the generated HTML in a DOM we can mutate
9842
9843 const document = createDocument(html);
9844
9845 if (_this.options.additionalStylesheets.length > 0) {
9846 _this.embedAdditionalStylesheet(document);
9847 } // `external:false` skips processing of external sheets
9848
9849
9850 const _temp3 = function () {
9851 if (_this.options.external !== false) {
9852 const externalSheets = [].slice.call(document.querySelectorAll('link[rel="stylesheet"]'));
9853 return Promise.resolve(Promise.all(externalSheets.map(link => _this.embedLinkedStylesheet(link, document)))).then(function () {});
9854 }
9855 }();
9856
9857 return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
9858 } catch (e) {
9859 return Promise.reject(e);
9860 }
9861 }
9862 /**
9863 * Get the style tags that need processing
9864 */
9865
9866
9867 getAffectedStyleTags(document) {
9868 const styles = [].slice.call(document.querySelectorAll('style')); // `inline:false` skips processing of inline stylesheets
9869
9870 if (this.options.reduceInlineStyles === false) {
9871 return styles.filter(style => style.$$external);
9872 }
9873
9874 return styles;
9875 }
9876
9877 mergeStylesheets(document) {
9878 try {
9879 const _this2 = this;
9880
9881 const styles = _this2.getAffectedStyleTags(document);
9882
9883 if (styles.length === 0) {
9884 _this2.logger.warn('Merging inline stylesheets into a single <style> tag skipped, no inline stylesheets to merge');
9885
9886 return Promise.resolve();
9887 }
9888
9889 const first = styles[0];
9890 let sheet = first.textContent;
9891
9892 for (let i = 1; i < styles.length; i++) {
9893 const node = styles[i];
9894 sheet += node.textContent;
9895 node.remove();
9896 }
9897
9898 first.textContent = sheet;
9899 return Promise.resolve();
9900 } catch (e) {
9901 return Promise.reject(e);
9902 }
9903 }
9904 /**
9905 * Given href, find the corresponding CSS asset
9906 */
9907
9908
9909 getCssAsset(href) {
9910 try {
9911 const _this3 = this;
9912
9913 const outputPath = _this3.options.path;
9914 const publicPath = _this3.options.publicPath; // CHECK - the output path
9915 // path on disk (with output.publicPath removed)
9916
9917 let normalizedPath = href.replace(/^\//, '');
9918 const pathPrefix = (publicPath || '').replace(/(^\/|\/$)/g, '') + '/';
9919
9920 if (normalizedPath.indexOf(pathPrefix) === 0) {
9921 normalizedPath = normalizedPath.substring(pathPrefix.length).replace(/^\//, '');
9922 }
9923
9924 const filename = path.resolve(outputPath, normalizedPath);
9925 let sheet;
9926
9927 const _temp5 = _catch(function () {
9928 return Promise.resolve(_this3.readFile(filename)).then(function (_this3$readFile) {
9929 sheet = _this3$readFile;
9930 });
9931 }, function () {
9932 _this3.logger.warn(`Unable to locate stylesheet: ${filename}`);
9933 });
9934
9935 return Promise.resolve(_temp5 && _temp5.then ? _temp5.then(function () {
9936 return sheet;
9937 }) : sheet);
9938 } catch (e) {
9939 return Promise.reject(e);
9940 }
9941 }
9942
9943 checkInlineThreshold(link, style, sheet) {
9944 if (this.options.inlineThreshold && sheet.length < this.options.inlineThreshold) {
9945 const href = style.$$name;
9946 style.$$reduce = false;
9947 this.logger.info(`\u001b[32mInlined all of ${href} (${sheet.length} was below the threshold of ${this.options.inlineThreshold})\u001b[39m`);
9948 link.remove();
9949 return true;
9950 }
9951
9952 return false;
9953 }
9954 /**
9955 * Inline the stylesheets from options.additionalStylesheets (assuming it passes `options.filter`)
9956 */
9957
9958
9959 embedAdditionalStylesheet(document) {
9960 try {
9961 const _this4 = this;
9962
9963 const styleSheetsIncluded = [];
9964 return Promise.resolve(Promise.all(_this4.options.additionalStylesheets.map(cssFile => {
9965 if (styleSheetsIncluded.includes(cssFile)) {
9966 return;
9967 }
9968
9969 styleSheetsIncluded.push(cssFile);
9970 const style = document.createElement('style');
9971 style.$$external = true;
9972 return _this4.getCssAsset(cssFile, style).then(sheet => [sheet, style]);
9973 }))).then(function (sources) {
9974 sources.forEach(([sheet, style]) => {
9975 if (!sheet) return;
9976 style.textContent = sheet;
9977 document.head.appendChild(style);
9978 });
9979 });
9980 } catch (e) {
9981 return Promise.reject(e);
9982 }
9983 }
9984 /**
9985 * Inline the target stylesheet referred to by a <link rel="stylesheet"> (assuming it passes `options.filter`)
9986 */
9987
9988
9989 embedLinkedStylesheet(link, document) {
9990 try {
9991 const _this5 = this;
9992
9993 const href = link.getAttribute('href');
9994 const media = link.getAttribute('media');
9995 const preloadMode = _this5.options.preload; // skip filtered resources, or network resources if no filter is provided
9996
9997 if (_this5.urlFilter ? _this5.urlFilter(href) : !(href || '').match(/\.css$/)) {
9998 return Promise.resolve();
9999 } // the reduced critical CSS gets injected into a new <style> tag
10000
10001
10002 const style = document.createElement('style');
10003 style.$$external = true;
10004 return Promise.resolve(_this5.getCssAsset(href, style)).then(function (sheet) {
10005 if (!sheet) {
10006 return;
10007 }
10008
10009 style.textContent = sheet;
10010 style.$$name = href;
10011 style.$$links = [link];
10012 link.parentNode.insertBefore(style, link);
10013
10014 if (_this5.checkInlineThreshold(link, style, sheet)) {
10015 return;
10016 } // CSS loader is only injected for the first sheet, then this becomes an empty string
10017
10018
10019 let cssLoaderPreamble = "function $loadcss(u,m,l){(l=document.createElement('link')).rel='stylesheet';l.href=u;document.head.appendChild(l)}";
10020 const lazy = preloadMode === 'js-lazy';
10021
10022 if (lazy) {
10023 cssLoaderPreamble = cssLoaderPreamble.replace('l.href', "l.media='print';l.onload=function(){l.media=m};l.href");
10024 } // Allow disabling any mutation of the stylesheet link:
10025
10026
10027 if (preloadMode === false) return;
10028 let noscriptFallback = false;
10029
10030 if (preloadMode === 'body') {
10031 document.body.appendChild(link);
10032 } else {
10033 link.setAttribute('rel', 'preload');
10034 link.setAttribute('as', 'style');
10035
10036 if (preloadMode === 'js' || preloadMode === 'js-lazy') {
10037 const script = document.createElement('script');
10038 const js = `${cssLoaderPreamble}$loadcss(${JSON.stringify(href)}${lazy ? ',' + JSON.stringify(media || 'all') : ''})`; // script.appendChild(document.createTextNode(js));
10039
10040 script.textContent = js;
10041 link.parentNode.insertBefore(script, link.nextSibling);
10042 style.$$links.push(script);
10043 cssLoaderPreamble = '';
10044 noscriptFallback = true;
10045 } else if (preloadMode === 'media') {
10046 // @see https://github.com/filamentgroup/loadCSS/blob/af1106cfe0bf70147e22185afa7ead96c01dec48/src/loadCSS.js#L26
10047 link.setAttribute('rel', 'stylesheet');
10048 link.removeAttribute('as');
10049 link.setAttribute('media', 'print');
10050 link.setAttribute('onload', `this.media='${media || 'all'}'`);
10051 noscriptFallback = true;
10052 } else if (preloadMode === 'swap-high') {
10053 // @see http://filamentgroup.github.io/loadCSS/test/new-high.html
10054 link.setAttribute('rel', 'alternate stylesheet preload');
10055 link.setAttribute('title', 'styles');
10056 link.setAttribute('onload', `this.title='';this.rel='stylesheet'`);
10057 noscriptFallback = true;
10058 } else if (preloadMode === 'swap') {
10059 link.setAttribute('onload', "this.rel='stylesheet'");
10060 noscriptFallback = true;
10061 } else {
10062 const bodyLink = document.createElement('link');
10063 bodyLink.setAttribute('rel', 'stylesheet');
10064 if (media) bodyLink.setAttribute('media', media);
10065 bodyLink.setAttribute('href', href);
10066 document.body.appendChild(bodyLink);
10067 style.$$links.push(bodyLink);
10068 }
10069 }
10070
10071 if (_this5.options.noscriptFallback !== false && noscriptFallback) {
10072 const noscript = document.createElement('noscript');
10073 const noscriptLink = document.createElement('link');
10074 noscriptLink.setAttribute('rel', 'stylesheet');
10075 noscriptLink.setAttribute('href', href);
10076 if (media) noscriptLink.setAttribute('media', media);
10077 noscript.appendChild(noscriptLink);
10078 link.parentNode.insertBefore(noscript, link.nextSibling);
10079 style.$$links.push(noscript);
10080 }
10081 });
10082 } catch (e) {
10083 return Promise.reject(e);
10084 }
10085 }
10086 /**
10087 * Prune the source CSS files
10088 */
10089
10090
10091 pruneSource(style, before, sheetInverse) {
10092 // if external stylesheet would be below minimum size, just inline everything
10093 const minSize = this.options.minimumExternalSize;
10094 const name = style.$$name;
10095
10096 if (minSize && sheetInverse.length < minSize) {
10097 this.logger.info(`\u001b[32mInlined all of ${name} (non-critical external stylesheet would have been ${sheetInverse.length}b, which was below the threshold of ${minSize})\u001b[39m`);
10098 style.textContent = before; // remove any associated external resources/loaders:
10099
10100 if (style.$$links) {
10101 for (const link of style.$$links) {
10102 const parent = link.parentNode;
10103 if (parent) parent.removeChild(link);
10104 }
10105 }
10106
10107 return true;
10108 }
10109
10110 return false;
10111 }
10112 /**
10113 * Parse the stylesheet within a <style> element, then reduce it to contain only rules used by the document.
10114 */
10115
10116
10117 processStyle(style, document) {
10118 try {
10119 const _this6 = this;
10120
10121 if (style.$$reduce === false) return Promise.resolve();
10122 const name = style.$$name ? style.$$name.replace(/^\//, '') : 'inline CSS';
10123 const options = _this6.options; // const document = style.ownerDocument;
10124
10125 const head = document.querySelector('head');
10126 let keyframesMode = options.keyframes || 'critical'; // we also accept a boolean value for options.keyframes
10127
10128 if (keyframesMode === true) keyframesMode = 'all';
10129 if (keyframesMode === false) keyframesMode = 'none';
10130 let sheet = style.textContent; // store a reference to the previous serialized stylesheet for reporting stats
10131
10132 const before = sheet; // Skip empty stylesheets
10133
10134 if (!sheet) return Promise.resolve();
10135 const ast = parseStylesheet(sheet);
10136 const astInverse = options.pruneSource ? parseStylesheet(sheet) : null; // a string to search for font names (very loose)
10137
10138 let criticalFonts = '';
10139 const failedSelectors = [];
10140 const criticalKeyframeNames = []; // Walk all CSS rules, marking unused rules with `.$$remove=true` for removal in the second pass.
10141 // This first pass is also used to collect font and keyframe usage used in the second pass.
10142
10143 walkStyleRules(ast, markOnly(rule => {
10144 if (rule.type === 'rule') {
10145 // Filter the selector list down to only those match
10146 rule.filterSelectors(sel => {
10147 // Strip pseudo-elements and pseudo-classes, since we only care that their associated elements exist.
10148 // This means any selector for a pseudo-element or having a pseudo-class will be inlined if the rest of the selector matches.
10149 if (sel === ':root' || sel.match(/^::?(before|after)$/)) {
10150 return true;
10151 }
10152
10153 sel = sel.replace(/(?<!\\)::?[a-z-]+(?![a-z-(])/gi, '').replace(/::?not\(\s*\)/g, '').trim();
10154 if (!sel) return false;
10155
10156 try {
10157 return document.querySelector(sel) != null;
10158 } catch (e) {
10159 failedSelectors.push(sel + ' -> ' + e.message);
10160 return false;
10161 }
10162 }); // If there are no matched selectors, remove the rule:
10163
10164 if (rule.selectors.length === 0) {
10165 return false;
10166 }
10167
10168 if (rule.declarations) {
10169 for (let i = 0; i < rule.declarations.length; i++) {
10170 const decl = rule.declarations[i]; // detect used fonts
10171
10172 if (decl.property && decl.property.match(/\bfont(-family)?\b/i)) {
10173 criticalFonts += ' ' + decl.value;
10174 } // detect used keyframes
10175
10176
10177 if (decl.property === 'animation' || decl.property === 'animation-name') {
10178 // @todo: parse animation declarations and extract only the name. for now we'll do a lazy match.
10179 const names = decl.value.split(/\s+/);
10180
10181 for (let j = 0; j < names.length; j++) {
10182 const name = names[j].trim();
10183 if (name) criticalKeyframeNames.push(name);
10184 }
10185 }
10186 }
10187 }
10188 } // keep font rules, they're handled in the second pass:
10189
10190
10191 if (rule.type === 'font-face') return; // If there are no remaining rules, remove the whole rule:
10192
10193 const rules = rule.rules && rule.rules.filter(rule => !rule.$$remove);
10194 return !rules || rules.length !== 0;
10195 }));
10196
10197 if (failedSelectors.length !== 0) {
10198 _this6.logger.warn(`${failedSelectors.length} rules skipped due to selector errors:\n ${failedSelectors.join('\n ')}`);
10199 }
10200
10201 const shouldPreloadFonts = options.fonts === true || options.preloadFonts === true;
10202 const shouldInlineFonts = options.fonts !== false && options.inlineFonts === true;
10203 const preloadedFonts = []; // Second pass, using data picked up from the first
10204
10205 walkStyleRulesWithReverseMirror(ast, astInverse, rule => {
10206 // remove any rules marked in the first pass
10207 if (rule.$$remove === true) return false;
10208 applyMarkedSelectors(rule); // prune @keyframes rules
10209
10210 if (rule.type === 'keyframes') {
10211 if (keyframesMode === 'none') return false;
10212 if (keyframesMode === 'all') return true;
10213 return criticalKeyframeNames.indexOf(rule.name) !== -1;
10214 } // prune @font-face rules
10215
10216
10217 if (rule.type === 'font-face') {
10218 let family, src;
10219
10220 for (let i = 0; i < rule.declarations.length; i++) {
10221 const decl = rule.declarations[i];
10222
10223 if (decl.property === 'src') {
10224 // @todo parse this properly and generate multiple preloads with type="font/woff2" etc
10225 src = (decl.value.match(/url\s*\(\s*(['"]?)(.+?)\1\s*\)/) || [])[2];
10226 } else if (decl.property === 'font-family') {
10227 family = decl.value;
10228 }
10229 }
10230
10231 if (src && shouldPreloadFonts && preloadedFonts.indexOf(src) === -1) {
10232 preloadedFonts.push(src);
10233 const preload = document.createElement('link');
10234 preload.setAttribute('rel', 'preload');
10235 preload.setAttribute('as', 'font');
10236 preload.setAttribute('crossorigin', 'anonymous');
10237 preload.setAttribute('href', src.trim());
10238 head.appendChild(preload);
10239 } // if we're missing info, if the font is unused, or if critical font inlining is disabled, remove the rule:
10240
10241
10242 if (!family || !src || criticalFonts.indexOf(family) === -1 || !shouldInlineFonts) {
10243 return false;
10244 }
10245 }
10246 });
10247 sheet = serializeStylesheet(ast, {
10248 compress: _this6.options.compress !== false
10249 }).trim(); // If all rules were removed, get rid of the style element entirely
10250
10251 if (sheet.trim().length === 0) {
10252 if (style.parentNode) {
10253 style.remove();
10254 }
10255
10256 return Promise.resolve();
10257 }
10258
10259 let afterText = '';
10260 let styleInlinedCompletely = false;
10261
10262 if (options.pruneSource) {
10263 const sheetInverse = serializeStylesheet(astInverse, {
10264 compress: _this6.options.compress !== false
10265 });
10266 styleInlinedCompletely = _this6.pruneSource(style, before, sheetInverse);
10267
10268 if (styleInlinedCompletely) {
10269 const percent = sheetInverse.length / before.length * 100;
10270 afterText = `, reducing non-inlined size ${percent | 0}% to ${prettyBytes(sheetInverse.length)}`;
10271 }
10272 } // replace the inline stylesheet with its critical'd counterpart
10273
10274
10275 if (!styleInlinedCompletely) {
10276 style.textContent = sheet;
10277 } // output stats
10278
10279
10280 const percent = sheet.length / before.length * 100 | 0;
10281
10282 _this6.logger.info('\u001b[32mInlined ' + prettyBytes(sheet.length) + ' (' + percent + '% of original ' + prettyBytes(before.length) + ') of ' + name + afterText + '.\u001b[39m');
10283
10284 return Promise.resolve();
10285 } catch (e) {
10286 return Promise.reject(e);
10287 }
10288 }
10289
10290 }
10291
10292 return Critters;
10293
10294})));
10295//# sourceMappingURL=critters.umd.js.map
Note: See TracBrowser for help on using the repository browser.