UNPKG

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