1 |
- {"version":3,"file":"5054.js","mappings":"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","sources":["webpack://sakurairo-scripts/./src/common/prism_pack.js","webpack://sakurairo-scripts/./node_modules/.pnpm/prismjs@1.29.0/node_modules/prismjs/plugins/autoloader/prism-autoloader.js","webpack://sakurairo-scripts/./node_modules/.pnpm/prismjs@1.29.0/node_modules/prismjs/plugins/previewers/prism-previewers.js","webpack://sakurairo-scripts/./node_modules/.pnpm/prismjs@1.29.0/node_modules/prismjs/plugins/show-language/prism-show-language.js","webpack://sakurairo-scripts/./node_modules/.pnpm/prismjs@1.29.0/node_modules/prismjs/plugins/toolbar/prism-toolbar.js","webpack://sakurairo-scripts/./node_modules/.pnpm/prismjs@1.29.0/node_modules/prismjs/prism.js"],"sourcesContent":["import Prism from 'prismjs'\nwindow.Prism = Prism\n\nimport 'prismjs/plugins/autoloader/prism-autoloader'\nimport 'prismjs/plugins/previewers/prism-previewers'\nimport 'prismjs/plugins/toolbar/prism-toolbar'\nimport 'prismjs/plugins/show-language/prism-show-language'","(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\t/* eslint-disable */\n\n\t/**\n\t * The dependencies map is built automatically with gulp.\n\t *\n\t * @type {Object<string, string | string[]>}\n\t */\n\tvar lang_dependencies = /*dependencies_placeholder[*/{\n\t\t\"javascript\": \"clike\",\n\t\t\"actionscript\": \"javascript\",\n\t\t\"apex\": [\n\t\t\t\"clike\",\n\t\t\t\"sql\"\n\t\t],\n\t\t\"arduino\": \"cpp\",\n\t\t\"aspnet\": [\n\t\t\t\"markup\",\n\t\t\t\"csharp\"\n\t\t],\n\t\t\"birb\": \"clike\",\n\t\t\"bison\": \"c\",\n\t\t\"c\": \"clike\",\n\t\t\"csharp\": \"clike\",\n\t\t\"cpp\": \"c\",\n\t\t\"cfscript\": \"clike\",\n\t\t\"chaiscript\": [\n\t\t\t\"clike\",\n\t\t\t\"cpp\"\n\t\t],\n\t\t\"cilkc\": \"c\",\n\t\t\"cilkcpp\": \"cpp\",\n\t\t\"coffeescript\": \"javascript\",\n\t\t\"crystal\": \"ruby\",\n\t\t\"css-extras\": \"css\",\n\t\t\"d\": \"clike\",\n\t\t\"dart\": \"clike\",\n\t\t\"django\": \"markup-templating\",\n\t\t\"ejs\": [\n\t\t\t\"javascript\",\n\t\t\t\"markup-templating\"\n\t\t],\n\t\t\"etlua\": [\n\t\t\t\"lua\",\n\t\t\t\"markup-templating\"\n\t\t],\n\t\t\"erb\": [\n\t\t\t\"ruby\",\n\t\t\t\"markup-templating\"\n\t\t],\n\t\t\"fsharp\": \"clike\",\n\t\t\"firestore-security-rules\": \"clike\",\n\t\t\"flow\": \"javascript\",\n\t\t\"ftl\": \"markup-templating\",\n\t\t\"gml\": \"clike\",\n\t\t\"glsl\": \"c\",\n\t\t\"go\": \"clike\",\n\t\t\"gradle\": \"clike\",\n\t\t\"groovy\": \"clike\",\n\t\t\"haml\": \"ruby\",\n\t\t\"handlebars\": \"markup-templating\",\n\t\t\"haxe\": \"clike\",\n\t\t\"hlsl\": \"c\",\n\t\t\"idris\": \"haskell\",\n\t\t\"java\": \"clike\",\n\t\t\"javadoc\": [\n\t\t\t\"markup\",\n\t\t\t\"java\",\n\t\t\t\"javadoclike\"\n\t\t],\n\t\t\"jolie\": \"clike\",\n\t\t\"jsdoc\": [\n\t\t\t\"javascript\",\n\t\t\t\"javadoclike\",\n\t\t\t\"typescript\"\n\t\t],\n\t\t\"js-extras\": \"javascript\",\n\t\t\"json5\": \"json\",\n\t\t\"jsonp\": \"json\",\n\t\t\"js-templates\": \"javascript\",\n\t\t\"kotlin\": \"clike\",\n\t\t\"latte\": [\n\t\t\t\"clike\",\n\t\t\t\"markup-templating\",\n\t\t\t\"php\"\n\t\t],\n\t\t\"less\": \"css\",\n\t\t\"lilypond\": \"scheme\",\n\t\t\"liquid\": \"markup-templating\",\n\t\t\"markdown\": \"markup\",\n\t\t\"markup-templating\": \"markup\",\n\t\t\"mongodb\": \"javascript\",\n\t\t\"n4js\": \"javascript\",\n\t\t\"objectivec\": \"c\",\n\t\t\"opencl\": \"c\",\n\t\t\"parser\": \"markup\",\n\t\t\"php\": \"markup-templating\",\n\t\t\"phpdoc\": [\n\t\t\t\"php\",\n\t\t\t\"javadoclike\"\n\t\t],\n\t\t\"php-extras\": \"php\",\n\t\t\"plsql\": \"sql\",\n\t\t\"processing\": \"clike\",\n\t\t\"protobuf\": \"clike\",\n\t\t\"pug\": [\n\t\t\t\"markup\",\n\t\t\t\"javascript\"\n\t\t],\n\t\t\"purebasic\": \"clike\",\n\t\t\"purescript\": \"haskell\",\n\t\t\"qsharp\": \"clike\",\n\t\t\"qml\": \"javascript\",\n\t\t\"qore\": \"clike\",\n\t\t\"racket\": \"scheme\",\n\t\t\"cshtml\": [\n\t\t\t\"markup\",\n\t\t\t\"csharp\"\n\t\t],\n\t\t\"jsx\": [\n\t\t\t\"markup\",\n\t\t\t\"javascript\"\n\t\t],\n\t\t\"tsx\": [\n\t\t\t\"jsx\",\n\t\t\t\"typescript\"\n\t\t],\n\t\t\"reason\": \"clike\",\n\t\t\"ruby\": \"clike\",\n\t\t\"sass\": \"css\",\n\t\t\"scss\": \"css\",\n\t\t\"scala\": \"java\",\n\t\t\"shell-session\": \"bash\",\n\t\t\"smarty\": \"markup-templating\",\n\t\t\"solidity\": \"clike\",\n\t\t\"soy\": \"markup-templating\",\n\t\t\"sparql\": \"turtle\",\n\t\t\"sqf\": \"clike\",\n\t\t\"squirrel\": \"clike\",\n\t\t\"stata\": [\n\t\t\t\"mata\",\n\t\t\t\"java\",\n\t\t\t\"python\"\n\t\t],\n\t\t\"t4-cs\": [\n\t\t\t\"t4-templating\",\n\t\t\t\"csharp\"\n\t\t],\n\t\t\"t4-vb\": [\n\t\t\t\"t4-templating\",\n\t\t\t\"vbnet\"\n\t\t],\n\t\t\"tap\": \"yaml\",\n\t\t\"tt2\": [\n\t\t\t\"clike\",\n\t\t\t\"markup-templating\"\n\t\t],\n\t\t\"textile\": \"markup\",\n\t\t\"twig\": \"markup-templating\",\n\t\t\"typescript\": \"javascript\",\n\t\t\"v\": \"clike\",\n\t\t\"vala\": \"clike\",\n\t\t\"vbnet\": \"basic\",\n\t\t\"velocity\": \"markup\",\n\t\t\"wiki\": \"markup\",\n\t\t\"xeora\": \"markup\",\n\t\t\"xml-doc\": \"markup\",\n\t\t\"xquery\": \"markup\"\n\t}/*]*/;\n\n\tvar lang_aliases = /*aliases_placeholder[*/{\n\t\t\"html\": \"markup\",\n\t\t\"xml\": \"markup\",\n\t\t\"svg\": \"markup\",\n\t\t\"mathml\": \"markup\",\n\t\t\"ssml\": \"markup\",\n\t\t\"atom\": \"markup\",\n\t\t\"rss\": \"markup\",\n\t\t\"js\": \"javascript\",\n\t\t\"g4\": \"antlr4\",\n\t\t\"ino\": \"arduino\",\n\t\t\"arm-asm\": \"armasm\",\n\t\t\"art\": \"arturo\",\n\t\t\"adoc\": \"asciidoc\",\n\t\t\"avs\": \"avisynth\",\n\t\t\"avdl\": \"avro-idl\",\n\t\t\"gawk\": \"awk\",\n\t\t\"sh\": \"bash\",\n\t\t\"shell\": \"bash\",\n\t\t\"shortcode\": \"bbcode\",\n\t\t\"rbnf\": \"bnf\",\n\t\t\"oscript\": \"bsl\",\n\t\t\"cs\": \"csharp\",\n\t\t\"dotnet\": \"csharp\",\n\t\t\"cfc\": \"cfscript\",\n\t\t\"cilk-c\": \"cilkc\",\n\t\t\"cilk-cpp\": \"cilkcpp\",\n\t\t\"cilk\": \"cilkcpp\",\n\t\t\"coffee\": \"coffeescript\",\n\t\t\"conc\": \"concurnas\",\n\t\t\"jinja2\": \"django\",\n\t\t\"dns-zone\": \"dns-zone-file\",\n\t\t\"dockerfile\": \"docker\",\n\t\t\"gv\": \"dot\",\n\t\t\"eta\": \"ejs\",\n\t\t\"xlsx\": \"excel-formula\",\n\t\t\"xls\": \"excel-formula\",\n\t\t\"gamemakerlanguage\": \"gml\",\n\t\t\"po\": \"gettext\",\n\t\t\"gni\": \"gn\",\n\t\t\"ld\": \"linker-script\",\n\t\t\"go-mod\": \"go-module\",\n\t\t\"hbs\": \"handlebars\",\n\t\t\"mustache\": \"handlebars\",\n\t\t\"hs\": \"haskell\",\n\t\t\"idr\": \"idris\",\n\t\t\"gitignore\": \"ignore\",\n\t\t\"hgignore\": \"ignore\",\n\t\t\"npmignore\": \"ignore\",\n\t\t\"webmanifest\": \"json\",\n\t\t\"kt\": \"kotlin\",\n\t\t\"kts\": \"kotlin\",\n\t\t\"kum\": \"kumir\",\n\t\t\"tex\": \"latex\",\n\t\t\"context\": \"latex\",\n\t\t\"ly\": \"lilypond\",\n\t\t\"emacs\": \"lisp\",\n\t\t\"elisp\": \"lisp\",\n\t\t\"emacs-lisp\": \"lisp\",\n\t\t\"md\": \"markdown\",\n\t\t\"moon\": \"moonscript\",\n\t\t\"n4jsd\": \"n4js\",\n\t\t\"nani\": \"naniscript\",\n\t\t\"objc\": \"objectivec\",\n\t\t\"qasm\": \"openqasm\",\n\t\t\"objectpascal\": \"pascal\",\n\t\t\"px\": \"pcaxis\",\n\t\t\"pcode\": \"peoplecode\",\n\t\t\"plantuml\": \"plant-uml\",\n\t\t\"pq\": \"powerquery\",\n\t\t\"mscript\": \"powerquery\",\n\t\t\"pbfasm\": \"purebasic\",\n\t\t\"purs\": \"purescript\",\n\t\t\"py\": \"python\",\n\t\t\"qs\": \"qsharp\",\n\t\t\"rkt\": \"racket\",\n\t\t\"razor\": \"cshtml\",\n\t\t\"rpy\": \"renpy\",\n\t\t\"res\": \"rescript\",\n\t\t\"robot\": \"robotframework\",\n\t\t\"rb\": \"ruby\",\n\t\t\"sh-session\": \"shell-session\",\n\t\t\"shellsession\": \"shell-session\",\n\t\t\"smlnj\": \"sml\",\n\t\t\"sol\": \"solidity\",\n\t\t\"sln\": \"solution-file\",\n\t\t\"rq\": \"sparql\",\n\t\t\"sclang\": \"supercollider\",\n\t\t\"t4\": \"t4-cs\",\n\t\t\"trickle\": \"tremor\",\n\t\t\"troy\": \"tremor\",\n\t\t\"trig\": \"turtle\",\n\t\t\"ts\": \"typescript\",\n\t\t\"tsconfig\": \"typoscript\",\n\t\t\"uscript\": \"unrealscript\",\n\t\t\"uc\": \"unrealscript\",\n\t\t\"url\": \"uri\",\n\t\t\"vb\": \"visual-basic\",\n\t\t\"vba\": \"visual-basic\",\n\t\t\"webidl\": \"web-idl\",\n\t\t\"mathematica\": \"wolfram\",\n\t\t\"nb\": \"wolfram\",\n\t\t\"wl\": \"wolfram\",\n\t\t\"xeoracube\": \"xeora\",\n\t\t\"yml\": \"yaml\"\n\t}/*]*/;\n\n\t/* eslint-enable */\n\n\t/**\n\t * @typedef LangDataItem\n\t * @property {{ success?: () => void, error?: () => void }[]} callbacks\n\t * @property {boolean} [error]\n\t * @property {boolean} [loading]\n\t */\n\t/** @type {Object<string, LangDataItem>} */\n\tvar lang_data = {};\n\n\tvar ignored_language = 'none';\n\tvar languages_path = 'components/';\n\n\tvar script = Prism.util.currentScript();\n\tif (script) {\n\t\tvar autoloaderFile = /\\bplugins\\/autoloader\\/prism-autoloader\\.(?:min\\.)?js(?:\\?[^\\r\\n/]*)?$/i;\n\t\tvar prismFile = /(^|\\/)[\\w-]+\\.(?:min\\.)?js(?:\\?[^\\r\\n/]*)?$/i;\n\n\t\tvar autoloaderPath = script.getAttribute('data-autoloader-path');\n\t\tif (autoloaderPath != null) {\n\t\t\t// data-autoloader-path is set, so just use it\n\t\t\tlanguages_path = autoloaderPath.trim().replace(/\\/?$/, '/');\n\t\t} else {\n\t\t\tvar src = script.src;\n\t\t\tif (autoloaderFile.test(src)) {\n\t\t\t\t// the script is the original autoloader script in the usual Prism project structure\n\t\t\t\tlanguages_path = src.replace(autoloaderFile, 'components/');\n\t\t\t} else if (prismFile.test(src)) {\n\t\t\t\t// the script is part of a bundle like a custom prism.js from the download page\n\t\t\t\tlanguages_path = src.replace(prismFile, '$1components/');\n\t\t\t}\n\t\t}\n\t}\n\n\tvar config = Prism.plugins.autoloader = {\n\t\tlanguages_path: languages_path,\n\t\tuse_minified: true,\n\t\tloadLanguages: loadLanguages\n\t};\n\n\n\t/**\n\t * Lazily loads an external script.\n\t *\n\t * @param {string} src\n\t * @param {() => void} [success]\n\t * @param {() => void} [error]\n\t */\n\tfunction addScript(src, success, error) {\n\t\tvar s = document.createElement('script');\n\t\ts.src = src;\n\t\ts.async = true;\n\t\ts.onload = function () {\n\t\t\tdocument.body.removeChild(s);\n\t\t\tsuccess && success();\n\t\t};\n\t\ts.onerror = function () {\n\t\t\tdocument.body.removeChild(s);\n\t\t\terror && error();\n\t\t};\n\t\tdocument.body.appendChild(s);\n\t}\n\n\t/**\n\t * Returns all additional dependencies of the given element defined by the `data-dependencies` attribute.\n\t *\n\t * @param {Element} element\n\t * @returns {string[]}\n\t */\n\tfunction getDependencies(element) {\n\t\tvar deps = (element.getAttribute('data-dependencies') || '').trim();\n\t\tif (!deps) {\n\t\t\tvar parent = element.parentElement;\n\t\t\tif (parent && parent.tagName.toLowerCase() === 'pre') {\n\t\t\t\tdeps = (parent.getAttribute('data-dependencies') || '').trim();\n\t\t\t}\n\t\t}\n\t\treturn deps ? deps.split(/\\s*,\\s*/g) : [];\n\t}\n\n\t/**\n\t * Returns whether the given language is currently loaded.\n\t *\n\t * @param {string} lang\n\t * @returns {boolean}\n\t */\n\tfunction isLoaded(lang) {\n\t\tif (lang.indexOf('!') >= 0) {\n\t\t\t// forced reload\n\t\t\treturn false;\n\t\t}\n\n\t\tlang = lang_aliases[lang] || lang; // resolve alias\n\n\t\tif (lang in Prism.languages) {\n\t\t\t// the given language is already loaded\n\t\t\treturn true;\n\t\t}\n\n\t\t// this will catch extensions like CSS extras that don't add a grammar to Prism.languages\n\t\tvar data = lang_data[lang];\n\t\treturn data && !data.error && data.loading === false;\n\t}\n\n\t/**\n\t * Returns the path to a grammar, using the language_path and use_minified config keys.\n\t *\n\t * @param {string} lang\n\t * @returns {string}\n\t */\n\tfunction getLanguagePath(lang) {\n\t\treturn config.languages_path + 'prism-' + lang + (config.use_minified ? '.min' : '') + '.js';\n\t}\n\n\t/**\n\t * Loads all given grammars concurrently.\n\t *\n\t * @param {string[]|string} languages\n\t * @param {(languages: string[]) => void} [success]\n\t * @param {(language: string) => void} [error] This callback will be invoked on the first language to fail.\n\t */\n\tfunction loadLanguages(languages, success, error) {\n\t\tif (typeof languages === 'string') {\n\t\t\tlanguages = [languages];\n\t\t}\n\n\t\tvar total = languages.length;\n\t\tvar completed = 0;\n\t\tvar failed = false;\n\n\t\tif (total === 0) {\n\t\t\tif (success) {\n\t\t\t\tsetTimeout(success, 0);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tfunction successCallback() {\n\t\t\tif (failed) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcompleted++;\n\t\t\tif (completed === total) {\n\t\t\t\tsuccess && success(languages);\n\t\t\t}\n\t\t}\n\n\t\tlanguages.forEach(function (lang) {\n\t\t\tloadLanguage(lang, successCallback, function () {\n\t\t\t\tif (failed) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfailed = true;\n\t\t\t\terror && error(lang);\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Loads a grammar with its dependencies.\n\t *\n\t * @param {string} lang\n\t * @param {() => void} [success]\n\t * @param {() => void} [error]\n\t */\n\tfunction loadLanguage(lang, success, error) {\n\t\tvar force = lang.indexOf('!') >= 0;\n\n\t\tlang = lang.replace('!', '');\n\t\tlang = lang_aliases[lang] || lang;\n\n\t\tfunction load() {\n\t\t\tvar data = lang_data[lang];\n\t\t\tif (!data) {\n\t\t\t\tdata = lang_data[lang] = {\n\t\t\t\t\tcallbacks: []\n\t\t\t\t};\n\t\t\t}\n\t\t\tdata.callbacks.push({\n\t\t\t\tsuccess: success,\n\t\t\t\terror: error\n\t\t\t});\n\n\t\t\tif (!force && isLoaded(lang)) {\n\t\t\t\t// the language is already loaded and we aren't forced to reload\n\t\t\t\tlanguageCallback(lang, 'success');\n\t\t\t} else if (!force && data.error) {\n\t\t\t\t// the language failed to load before and we don't reload\n\t\t\t\tlanguageCallback(lang, 'error');\n\t\t\t} else if (force || !data.loading) {\n\t\t\t\t// the language isn't currently loading and/or we are forced to reload\n\t\t\t\tdata.loading = true;\n\t\t\t\tdata.error = false;\n\n\t\t\t\taddScript(getLanguagePath(lang), function () {\n\t\t\t\t\tdata.loading = false;\n\t\t\t\t\tlanguageCallback(lang, 'success');\n\n\t\t\t\t}, function () {\n\t\t\t\t\tdata.loading = false;\n\t\t\t\t\tdata.error = true;\n\t\t\t\t\tlanguageCallback(lang, 'error');\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tvar dependencies = lang_dependencies[lang];\n\t\tif (dependencies && dependencies.length) {\n\t\t\tloadLanguages(dependencies, load, error);\n\t\t} else {\n\t\t\tload();\n\t\t}\n\t}\n\n\t/**\n\t * Runs all callbacks of the given type for the given language.\n\t *\n\t * @param {string} lang\n\t * @param {\"success\" | \"error\"} type\n\t */\n\tfunction languageCallback(lang, type) {\n\t\tif (lang_data[lang]) {\n\t\t\tvar callbacks = lang_data[lang].callbacks;\n\t\t\tfor (var i = 0, l = callbacks.length; i < l; i++) {\n\t\t\t\tvar callback = callbacks[i][type];\n\t\t\t\tif (callback) {\n\t\t\t\t\tsetTimeout(callback, 0);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcallbacks.length = 0;\n\t\t}\n\t}\n\n\tPrism.hooks.add('complete', function (env) {\n\t\tvar element = env.element;\n\t\tvar language = env.language;\n\t\tif (!element || !language || language === ignored_language) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar deps = getDependencies(element);\n\t\tif (/^diff-./i.test(language)) {\n\t\t\t// the \"diff-xxxx\" format is used by the Diff Highlight plugin\n\t\t\tdeps.push('diff');\n\t\t\tdeps.push(language.substr('diff-'.length));\n\t\t} else {\n\t\t\tdeps.push(language);\n\t\t}\n\n\t\tif (!deps.every(isLoaded)) {\n\t\t\t// the language or some dependencies aren't loaded\n\t\t\tloadLanguages(deps, function () {\n\t\t\t\tPrism.highlightElement(element);\n\t\t\t});\n\t\t}\n\t});\n\n}());\n","(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined' || !Function.prototype.bind) {\n\t\treturn;\n\t}\n\n\tvar previewers = {\n\t\t// gradient must be defined before color and angle\n\t\t'gradient': {\n\t\t\tcreate: (function () {\n\n\t\t\t\t// Stores already processed gradients so that we don't\n\t\t\t\t// make the conversion every time the previewer is shown\n\t\t\t\tvar cache = {};\n\n\t\t\t\t/**\n\t\t\t\t * Returns a W3C-valid linear gradient\n\t\t\t\t *\n\t\t\t\t * @param {string} prefix Vendor prefix if any (\"-moz-\", \"-webkit-\", etc.)\n\t\t\t\t * @param {string} func Gradient function name (\"linear-gradient\")\n\t\t\t\t * @param {string[]} values Array of the gradient function parameters ([\"0deg\", \"red 0%\", \"blue 100%\"])\n\t\t\t\t */\n\t\t\t\tvar convertToW3CLinearGradient = function (prefix, func, values) {\n\t\t\t\t\t// Default value for angle\n\t\t\t\t\tvar angle = '180deg';\n\n\t\t\t\t\tif (/^(?:-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:deg|rad)|to\\b|top|right|bottom|left)/.test(values[0])) {\n\t\t\t\t\t\tangle = values.shift();\n\t\t\t\t\t\tif (angle.indexOf('to ') < 0) {\n\t\t\t\t\t\t\t// Angle uses old keywords\n\t\t\t\t\t\t\t// W3C syntax uses \"to\" + opposite keywords\n\t\t\t\t\t\t\tif (angle.indexOf('top') >= 0) {\n\t\t\t\t\t\t\t\tif (angle.indexOf('left') >= 0) {\n\t\t\t\t\t\t\t\t\tangle = 'to bottom right';\n\t\t\t\t\t\t\t\t} else if (angle.indexOf('right') >= 0) {\n\t\t\t\t\t\t\t\t\tangle = 'to bottom left';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tangle = 'to bottom';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (angle.indexOf('bottom') >= 0) {\n\t\t\t\t\t\t\t\tif (angle.indexOf('left') >= 0) {\n\t\t\t\t\t\t\t\t\tangle = 'to top right';\n\t\t\t\t\t\t\t\t} else if (angle.indexOf('right') >= 0) {\n\t\t\t\t\t\t\t\t\tangle = 'to top left';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tangle = 'to top';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (angle.indexOf('left') >= 0) {\n\t\t\t\t\t\t\t\tangle = 'to right';\n\t\t\t\t\t\t\t} else if (angle.indexOf('right') >= 0) {\n\t\t\t\t\t\t\t\tangle = 'to left';\n\t\t\t\t\t\t\t} else if (prefix) {\n\t\t\t\t\t\t\t\t// Angle is shifted by 90deg in prefixed gradients\n\t\t\t\t\t\t\t\tif (angle.indexOf('deg') >= 0) {\n\t\t\t\t\t\t\t\t\tangle = (90 - parseFloat(angle)) + 'deg';\n\t\t\t\t\t\t\t\t} else if (angle.indexOf('rad') >= 0) {\n\t\t\t\t\t\t\t\t\tangle = (Math.PI / 2 - parseFloat(angle)) + 'rad';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn func + '(' + angle + ',' + values.join(',') + ')';\n\t\t\t\t};\n\n\t\t\t\t/**\n\t\t\t\t * Returns a W3C-valid radial gradient\n\t\t\t\t *\n\t\t\t\t * @param {string} prefix Vendor prefix if any (\"-moz-\", \"-webkit-\", etc.)\n\t\t\t\t * @param {string} func Gradient function name (\"linear-gradient\")\n\t\t\t\t * @param {string[]} values Array of the gradient function parameters ([\"0deg\", \"red 0%\", \"blue 100%\"])\n\t\t\t\t */\n\t\t\t\tvar convertToW3CRadialGradient = function (prefix, func, values) {\n\t\t\t\t\tif (values[0].indexOf('at') < 0) {\n\t\t\t\t\t\t// Looks like old syntax\n\n\t\t\t\t\t\t// Default values\n\t\t\t\t\t\tvar position = 'center';\n\t\t\t\t\t\tvar shape = 'ellipse';\n\t\t\t\t\t\tvar size = 'farthest-corner';\n\n\t\t\t\t\t\tif (/\\b(?:bottom|center|left|right|top)\\b|^\\d+/.test(values[0])) {\n\t\t\t\t\t\t\t// Found a position\n\t\t\t\t\t\t\t// Remove angle value, if any\n\t\t\t\t\t\t\tposition = values.shift().replace(/\\s*-?\\d+(?:deg|rad)\\s*/, '');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (/\\b(?:circle|closest|contain|cover|ellipse|farthest)\\b/.test(values[0])) {\n\t\t\t\t\t\t\t// Found a shape and/or size\n\t\t\t\t\t\t\tvar shapeSizeParts = values.shift().split(/\\s+/);\n\t\t\t\t\t\t\tif (shapeSizeParts[0] && (shapeSizeParts[0] === 'circle' || shapeSizeParts[0] === 'ellipse')) {\n\t\t\t\t\t\t\t\tshape = shapeSizeParts.shift();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (shapeSizeParts[0]) {\n\t\t\t\t\t\t\t\tsize = shapeSizeParts.shift();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Old keywords are converted to their synonyms\n\t\t\t\t\t\t\tif (size === 'cover') {\n\t\t\t\t\t\t\t\tsize = 'farthest-corner';\n\t\t\t\t\t\t\t} else if (size === 'contain') {\n\t\t\t\t\t\t\t\tsize = 'clothest-side';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn func + '(' + shape + ' ' + size + ' at ' + position + ',' + values.join(',') + ')';\n\t\t\t\t\t}\n\t\t\t\t\treturn func + '(' + values.join(',') + ')';\n\t\t\t\t};\n\n\t\t\t\t/**\n\t\t\t\t * Converts a gradient to a W3C-valid one\n\t\t\t\t * Does not support old webkit syntax (-webkit-gradient(linear...) and -webkit-gradient(radial...))\n\t\t\t\t *\n\t\t\t\t * @param {string} gradient The CSS gradient\n\t\t\t\t */\n\t\t\t\tvar convertToW3CGradient = function (gradient) {\n\t\t\t\t\tif (cache[gradient]) {\n\t\t\t\t\t\treturn cache[gradient];\n\t\t\t\t\t}\n\t\t\t\t\tvar parts = gradient.match(/^(\\b|\\B-[a-z]{1,10}-)((?:repeating-)?(?:linear|radial)-gradient)/);\n\t\t\t\t\t// \"\", \"-moz-\", etc.\n\t\t\t\t\tvar prefix = parts && parts[1];\n\t\t\t\t\t// \"linear-gradient\", \"radial-gradient\", etc.\n\t\t\t\t\tvar func = parts && parts[2];\n\n\t\t\t\t\tvar values = gradient.replace(/^(?:\\b|\\B-[a-z]{1,10}-)(?:repeating-)?(?:linear|radial)-gradient\\(|\\)$/g, '').split(/\\s*,\\s*/);\n\n\t\t\t\t\tif (func.indexOf('linear') >= 0) {\n\t\t\t\t\t\treturn cache[gradient] = convertToW3CLinearGradient(prefix, func, values);\n\t\t\t\t\t} else if (func.indexOf('radial') >= 0) {\n\t\t\t\t\t\treturn cache[gradient] = convertToW3CRadialGradient(prefix, func, values);\n\t\t\t\t\t}\n\t\t\t\t\treturn cache[gradient] = func + '(' + values.join(',') + ')';\n\t\t\t\t};\n\n\t\t\t\treturn function () {\n\t\t\t\t\tnew Prism.plugins.Previewer('gradient', function (value) {\n\t\t\t\t\t\tthis.firstChild.style.backgroundImage = '';\n\t\t\t\t\t\tthis.firstChild.style.backgroundImage = convertToW3CGradient(value);\n\t\t\t\t\t\treturn !!this.firstChild.style.backgroundImage;\n\t\t\t\t\t}, '*', function () {\n\t\t\t\t\t\tthis._elt.innerHTML = '<div></div>';\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t}()),\n\t\t\ttokens: {\n\t\t\t\t'gradient': {\n\t\t\t\t\tpattern: /(?:\\b|\\B-[a-z]{1,10}-)(?:repeating-)?(?:linear|radial)-gradient\\((?:(?:hsl|rgb)a?\\(.+?\\)|[^\\)])+\\)/gi,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'function': /[\\w-]+(?=\\()/,\n\t\t\t\t\t\t'punctuation': /[(),]/\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tlanguages: {\n\t\t\t\t'css': true,\n\t\t\t\t'less': true,\n\t\t\t\t'sass': [\n\t\t\t\t\t{\n\t\t\t\t\t\tlang: 'sass',\n\t\t\t\t\t\tbefore: 'punctuation',\n\t\t\t\t\t\tinside: 'inside',\n\t\t\t\t\t\troot: Prism.languages.sass && Prism.languages.sass['variable-line']\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlang: 'sass',\n\t\t\t\t\t\tbefore: 'punctuation',\n\t\t\t\t\t\tinside: 'inside',\n\t\t\t\t\t\troot: Prism.languages.sass && Prism.languages.sass['property-line']\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t'scss': true,\n\t\t\t\t'stylus': [\n\t\t\t\t\t{\n\t\t\t\t\t\tlang: 'stylus',\n\t\t\t\t\t\tbefore: 'func',\n\t\t\t\t\t\tinside: 'rest',\n\t\t\t\t\t\troot: Prism.languages.stylus && Prism.languages.stylus['property-declaration'].inside\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlang: 'stylus',\n\t\t\t\t\t\tbefore: 'func',\n\t\t\t\t\t\tinside: 'rest',\n\t\t\t\t\t\troot: Prism.languages.stylus && Prism.languages.stylus['variable-declaration'].inside\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\t'angle': {\n\t\t\tcreate: function () {\n\t\t\t\tnew Prism.plugins.Previewer('angle', function (value) {\n\t\t\t\t\tvar num = parseFloat(value);\n\t\t\t\t\tvar unit = value.match(/[a-z]+$/i);\n\t\t\t\t\tvar max; var percentage;\n\t\t\t\t\tif (!num || !unit) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tunit = unit[0];\n\n\t\t\t\t\tswitch (unit) {\n\t\t\t\t\t\tcase 'deg':\n\t\t\t\t\t\t\tmax = 360;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'grad':\n\t\t\t\t\t\t\tmax = 400;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'rad':\n\t\t\t\t\t\t\tmax = 2 * Math.PI;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'turn':\n\t\t\t\t\t\t\tmax = 1;\n\t\t\t\t\t}\n\n\t\t\t\t\tpercentage = 100 * num / max;\n\t\t\t\t\tpercentage %= 100;\n\n\t\t\t\t\tthis[(num < 0 ? 'set' : 'remove') + 'Attribute']('data-negative', '');\n\t\t\t\t\tthis.querySelector('circle').style.strokeDasharray = Math.abs(percentage) + ',500';\n\t\t\t\t\treturn true;\n\t\t\t\t}, '*', function () {\n\t\t\t\t\tthis._elt.innerHTML = '<svg viewBox=\"0 0 64 64\">' +\n\t\t\t\t\t\t'<circle r=\"16\" cy=\"32\" cx=\"32\"></circle>' +\n\t\t\t\t\t\t'</svg>';\n\t\t\t\t});\n\t\t\t},\n\t\t\ttokens: {\n\t\t\t\t'angle': /(?:\\b|\\B-|(?=\\B\\.))(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:deg|g?rad|turn)\\b/i\n\t\t\t},\n\t\t\tlanguages: {\n\t\t\t\t'css': true,\n\t\t\t\t'less': true,\n\t\t\t\t'markup': {\n\t\t\t\t\tlang: 'markup',\n\t\t\t\t\tbefore: 'punctuation',\n\t\t\t\t\tinside: 'inside',\n\t\t\t\t\troot: Prism.languages.markup && Prism.languages.markup['tag'].inside['attr-value']\n\t\t\t\t},\n\t\t\t\t'sass': [\n\t\t\t\t\t{\n\t\t\t\t\t\tlang: 'sass',\n\t\t\t\t\t\tinside: 'inside',\n\t\t\t\t\t\troot: Prism.languages.sass && Prism.languages.sass['property-line']\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlang: 'sass',\n\t\t\t\t\t\tbefore: 'operator',\n\t\t\t\t\t\tinside: 'inside',\n\t\t\t\t\t\troot: Prism.languages.sass && Prism.languages.sass['variable-line']\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t'scss': true,\n\t\t\t\t'stylus': [\n\t\t\t\t\t{\n\t\t\t\t\t\tlang: 'stylus',\n\t\t\t\t\t\tbefore: 'func',\n\t\t\t\t\t\tinside: 'rest',\n\t\t\t\t\t\troot: Prism.languages.stylus && Prism.languages.stylus['property-declaration'].inside\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlang: 'stylus',\n\t\t\t\t\t\tbefore: 'func',\n\t\t\t\t\t\tinside: 'rest',\n\t\t\t\t\t\troot: Prism.languages.stylus && Prism.languages.stylus['variable-declaration'].inside\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\t'color': {\n\t\t\tcreate: function () {\n\t\t\t\tnew Prism.plugins.Previewer('color', function (value) {\n\t\t\t\t\tthis.style.backgroundColor = '';\n\t\t\t\t\tthis.style.backgroundColor = value;\n\t\t\t\t\treturn !!this.style.backgroundColor;\n\t\t\t\t});\n\t\t\t},\n\t\t\ttokens: {\n\t\t\t\t'color': [Prism.languages.css['hexcode']].concat(Prism.languages.css['color'])\n\t\t\t},\n\t\t\tlanguages: {\n\t\t\t\t// CSS extras is required, so css and scss are not necessary\n\t\t\t\t'css': false,\n\t\t\t\t'less': true,\n\t\t\t\t'markup': {\n\t\t\t\t\tlang: 'markup',\n\t\t\t\t\tbefore: 'punctuation',\n\t\t\t\t\tinside: 'inside',\n\t\t\t\t\troot: Prism.languages.markup && Prism.languages.markup['tag'].inside['attr-value']\n\t\t\t\t},\n\t\t\t\t'sass': [\n\t\t\t\t\t{\n\t\t\t\t\t\tlang: 'sass',\n\t\t\t\t\t\tbefore: 'punctuation',\n\t\t\t\t\t\tinside: 'inside',\n\t\t\t\t\t\troot: Prism.languages.sass && Prism.languages.sass['variable-line']\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlang: 'sass',\n\t\t\t\t\t\tinside: 'inside',\n\t\t\t\t\t\troot: Prism.languages.sass && Prism.languages.sass['property-line']\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t'scss': false,\n\t\t\t\t'stylus': [\n\t\t\t\t\t{\n\t\t\t\t\t\tlang: 'stylus',\n\t\t\t\t\t\tbefore: 'hexcode',\n\t\t\t\t\t\tinside: 'rest',\n\t\t\t\t\t\troot: Prism.languages.stylus && Prism.languages.stylus['property-declaration'].inside\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlang: 'stylus',\n\t\t\t\t\t\tbefore: 'hexcode',\n\t\t\t\t\t\tinside: 'rest',\n\t\t\t\t\t\troot: Prism.languages.stylus && Prism.languages.stylus['variable-declaration'].inside\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\t'easing': {\n\t\t\tcreate: function () {\n\t\t\t\tnew Prism.plugins.Previewer('easing', function (value) {\n\n\t\t\t\t\tvalue = {\n\t\t\t\t\t\t'linear': '0,0,1,1',\n\t\t\t\t\t\t'ease': '.25,.1,.25,1',\n\t\t\t\t\t\t'ease-in': '.42,0,1,1',\n\t\t\t\t\t\t'ease-out': '0,0,.58,1',\n\t\t\t\t\t\t'ease-in-out': '.42,0,.58,1'\n\t\t\t\t\t}[value] || value;\n\n\t\t\t\t\tvar p = value.match(/-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/g);\n\n\t\t\t\t\tif (p.length === 4) {\n\t\t\t\t\t\tp = p.map(function (p, i) { return (i % 2 ? 1 - p : p) * 100; });\n\n\t\t\t\t\t\tthis.querySelector('path').setAttribute('d', 'M0,100 C' + p[0] + ',' + p[1] + ', ' + p[2] + ',' + p[3] + ', 100,0');\n\n\t\t\t\t\t\tvar lines = this.querySelectorAll('line');\n\t\t\t\t\t\tlines[0].setAttribute('x2', p[0]);\n\t\t\t\t\t\tlines[0].setAttribute('y2', p[1]);\n\t\t\t\t\t\tlines[1].setAttribute('x2', p[2]);\n\t\t\t\t\t\tlines[1].setAttribute('y2', p[3]);\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t}, '*', function () {\n\t\t\t\t\tthis._elt.innerHTML = '<svg viewBox=\"-20 -20 140 140\" width=\"100\" height=\"100\">' +\n\t\t\t\t\t\t'<defs>' +\n\t\t\t\t\t\t'<marker id=\"prism-previewer-easing-marker\" viewBox=\"0 0 4 4\" refX=\"2\" refY=\"2\" markerUnits=\"strokeWidth\">' +\n\t\t\t\t\t\t'<circle cx=\"2\" cy=\"2\" r=\"1.5\" />' +\n\t\t\t\t\t\t'</marker>' +\n\t\t\t\t\t\t'</defs>' +\n\t\t\t\t\t\t'<path d=\"M0,100 C20,50, 40,30, 100,0\" />' +\n\t\t\t\t\t\t'<line x1=\"0\" y1=\"100\" x2=\"20\" y2=\"50\" marker-start=\"url(#prism-previewer-easing-marker)\" marker-end=\"url(#prism-previewer-easing-marker)\" />' +\n\t\t\t\t\t\t'<line x1=\"100\" y1=\"0\" x2=\"40\" y2=\"30\" marker-start=\"url(#prism-previewer-easing-marker)\" marker-end=\"url(#prism-previewer-easing-marker)\" />' +\n\t\t\t\t\t\t'</svg>';\n\t\t\t\t});\n\t\t\t},\n\t\t\ttokens: {\n\t\t\t\t'easing': {\n\t\t\t\t\tpattern: /\\bcubic-bezier\\((?:-?(?:\\d+(?:\\.\\d+)?|\\.\\d+),\\s*){3}-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)\\)\\B|\\b(?:ease(?:-in)?(?:-out)?|linear)(?=\\s|[;}]|$)/i,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'function': /[\\w-]+(?=\\()/,\n\t\t\t\t\t\t'punctuation': /[(),]/\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tlanguages: {\n\t\t\t\t'css': true,\n\t\t\t\t'less': true,\n\t\t\t\t'sass': [\n\t\t\t\t\t{\n\t\t\t\t\t\tlang: 'sass',\n\t\t\t\t\t\tinside: 'inside',\n\t\t\t\t\t\tbefore: 'punctuation',\n\t\t\t\t\t\troot: Prism.languages.sass && Prism.languages.sass['variable-line']\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlang: 'sass',\n\t\t\t\t\t\tinside: 'inside',\n\t\t\t\t\t\troot: Prism.languages.sass && Prism.languages.sass['property-line']\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t'scss': true,\n\t\t\t\t'stylus': [\n\t\t\t\t\t{\n\t\t\t\t\t\tlang: 'stylus',\n\t\t\t\t\t\tbefore: 'hexcode',\n\t\t\t\t\t\tinside: 'rest',\n\t\t\t\t\t\troot: Prism.languages.stylus && Prism.languages.stylus['property-declaration'].inside\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlang: 'stylus',\n\t\t\t\t\t\tbefore: 'hexcode',\n\t\t\t\t\t\tinside: 'rest',\n\t\t\t\t\t\troot: Prism.languages.stylus && Prism.languages.stylus['variable-declaration'].inside\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\n\t\t'time': {\n\t\t\tcreate: function () {\n\t\t\t\tnew Prism.plugins.Previewer('time', function (value) {\n\t\t\t\t\tvar num = parseFloat(value);\n\t\t\t\t\tvar unit = value.match(/[a-z]+$/i);\n\t\t\t\t\tif (!num || !unit) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tunit = unit[0];\n\t\t\t\t\tthis.querySelector('circle').style.animationDuration = 2 * num + unit;\n\t\t\t\t\treturn true;\n\t\t\t\t}, '*', function () {\n\t\t\t\t\tthis._elt.innerHTML = '<svg viewBox=\"0 0 64 64\">' +\n\t\t\t\t\t\t'<circle r=\"16\" cy=\"32\" cx=\"32\"></circle>' +\n\t\t\t\t\t\t'</svg>';\n\t\t\t\t});\n\t\t\t},\n\t\t\ttokens: {\n\t\t\t\t'time': /(?:\\b|\\B-|(?=\\B\\.))(?:\\d+(?:\\.\\d+)?|\\.\\d+)m?s\\b/i\n\t\t\t},\n\t\t\tlanguages: {\n\t\t\t\t'css': true,\n\t\t\t\t'less': true,\n\t\t\t\t'markup': {\n\t\t\t\t\tlang: 'markup',\n\t\t\t\t\tbefore: 'punctuation',\n\t\t\t\t\tinside: 'inside',\n\t\t\t\t\troot: Prism.languages.markup && Prism.languages.markup['tag'].inside['attr-value']\n\t\t\t\t},\n\t\t\t\t'sass': [\n\t\t\t\t\t{\n\t\t\t\t\t\tlang: 'sass',\n\t\t\t\t\t\tinside: 'inside',\n\t\t\t\t\t\troot: Prism.languages.sass && Prism.languages.sass['property-line']\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlang: 'sass',\n\t\t\t\t\t\tbefore: 'operator',\n\t\t\t\t\t\tinside: 'inside',\n\t\t\t\t\t\troot: Prism.languages.sass && Prism.languages.sass['variable-line']\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t'scss': true,\n\t\t\t\t'stylus': [\n\t\t\t\t\t{\n\t\t\t\t\t\tlang: 'stylus',\n\t\t\t\t\t\tbefore: 'hexcode',\n\t\t\t\t\t\tinside: 'rest',\n\t\t\t\t\t\troot: Prism.languages.stylus && Prism.languages.stylus['property-declaration'].inside\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlang: 'stylus',\n\t\t\t\t\t\tbefore: 'hexcode',\n\t\t\t\t\t\tinside: 'rest',\n\t\t\t\t\t\troot: Prism.languages.stylus && Prism.languages.stylus['variable-declaration'].inside\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * Returns the absolute X, Y offsets for an element\n\t *\n\t * @param {HTMLElement} element\n\t * @returns {{top: number, right: number, bottom: number, left: number, width: number, height: number}}\n\t */\n\tvar getOffset = function (element) {\n\t\tvar elementBounds = element.getBoundingClientRect();\n\t\tvar left = elementBounds.left;\n\t\tvar top = elementBounds.top;\n\t\tvar documentBounds = document.documentElement.getBoundingClientRect();\n\t\tleft -= documentBounds.left;\n\t\ttop -= documentBounds.top;\n\n\t\treturn {\n\t\t\ttop: top,\n\t\t\tright: innerWidth - left - elementBounds.width,\n\t\t\tbottom: innerHeight - top - elementBounds.height,\n\t\t\tleft: left,\n\t\t\twidth: elementBounds.width,\n\t\t\theight: elementBounds.height\n\t\t};\n\t};\n\n\tvar TOKEN_CLASS = 'token';\n\tvar ACTIVE_CLASS = 'active';\n\tvar FLIPPED_CLASS = 'flipped';\n\n\t/**\n\t * Previewer constructor\n\t *\n\t * @param {string} type Unique previewer type\n\t * @param {Function} updater Function that will be called on mouseover.\n\t * @param {string[]|string} [supportedLanguages] Aliases of the languages this previewer must be enabled for. Defaults to \"*\", all languages.\n\t * @param {Function} [initializer] Function that will be called on initialization.\n\t * @class\n\t */\n\tvar Previewer = function (type, updater, supportedLanguages, initializer) {\n\t\tthis._elt = null;\n\t\tthis._type = type;\n\t\tthis._token = null;\n\t\tthis.updater = updater;\n\t\tthis._mouseout = this.mouseout.bind(this);\n\t\tthis.initializer = initializer;\n\n\t\tvar self = this;\n\n\t\tif (!supportedLanguages) {\n\t\t\tsupportedLanguages = ['*'];\n\t\t}\n\t\tif (!Array.isArray(supportedLanguages)) {\n\t\t\tsupportedLanguages = [supportedLanguages];\n\t\t}\n\t\tsupportedLanguages.forEach(function (lang) {\n\t\t\tif (typeof lang !== 'string') {\n\t\t\t\tlang = lang.lang;\n\t\t\t}\n\t\t\tif (!Previewer.byLanguages[lang]) {\n\t\t\t\tPreviewer.byLanguages[lang] = [];\n\t\t\t}\n\t\t\tif (Previewer.byLanguages[lang].indexOf(self) < 0) {\n\t\t\t\tPreviewer.byLanguages[lang].push(self);\n\t\t\t}\n\t\t});\n\t\tPreviewer.byType[type] = this;\n\t};\n\n\t/**\n\t * Creates the HTML element for the previewer.\n\t */\n\tPreviewer.prototype.init = function () {\n\t\tif (this._elt) {\n\t\t\treturn;\n\t\t}\n\t\tthis._elt = document.createElement('div');\n\t\tthis._elt.className = 'prism-previewer prism-previewer-' + this._type;\n\t\tdocument.body.appendChild(this._elt);\n\t\tif (this.initializer) {\n\t\t\tthis.initializer();\n\t\t}\n\t};\n\n\t/**\n\t * @param {Element} token\n\t * @returns {boolean}\n\t */\n\tPreviewer.prototype.isDisabled = function (token) {\n\t\tdo {\n\t\t\tif (token.hasAttribute && token.hasAttribute('data-previewers')) {\n\t\t\t\tvar previewers = token.getAttribute('data-previewers');\n\t\t\t\treturn (previewers || '').split(/\\s+/).indexOf(this._type) === -1;\n\t\t\t}\n\t\t} while ((token = token.parentNode));\n\t\treturn false;\n\t};\n\n\t/**\n\t * Checks the class name of each hovered element\n\t *\n\t * @param {Element} token\n\t */\n\tPreviewer.prototype.check = function (token) {\n\t\tif (token.classList.contains(TOKEN_CLASS) && this.isDisabled(token)) {\n\t\t\treturn;\n\t\t}\n\t\tdo {\n\t\t\tif (token.classList && token.classList.contains(TOKEN_CLASS) && token.classList.contains(this._type)) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} while ((token = token.parentNode));\n\n\t\tif (token && token !== this._token) {\n\t\t\tthis._token = token;\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\t/**\n\t * Called on mouseout\n\t */\n\tPreviewer.prototype.mouseout = function () {\n\t\tthis._token.removeEventListener('mouseout', this._mouseout, false);\n\t\tthis._token = null;\n\t\tthis.hide();\n\t};\n\n\t/**\n\t * Shows the previewer positioned properly for the current token.\n\t */\n\tPreviewer.prototype.show = function () {\n\t\tif (!this._elt) {\n\t\t\tthis.init();\n\t\t}\n\t\tif (!this._token) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.updater.call(this._elt, this._token.textContent)) {\n\t\t\tthis._token.addEventListener('mouseout', this._mouseout, false);\n\n\t\t\tvar offset = getOffset(this._token);\n\t\t\tthis._elt.classList.add(ACTIVE_CLASS);\n\n\t\t\tif (offset.top - this._elt.offsetHeight > 0) {\n\t\t\t\tthis._elt.classList.remove(FLIPPED_CLASS);\n\t\t\t\tthis._elt.style.top = offset.top + 'px';\n\t\t\t\tthis._elt.style.bottom = '';\n\t\t\t} else {\n\t\t\t\tthis._elt.classList.add(FLIPPED_CLASS);\n\t\t\t\tthis._elt.style.bottom = offset.bottom + 'px';\n\t\t\t\tthis._elt.style.top = '';\n\t\t\t}\n\n\t\t\tthis._elt.style.left = offset.left + Math.min(200, offset.width / 2) + 'px';\n\t\t} else {\n\t\t\tthis.hide();\n\t\t}\n\t};\n\n\t/**\n\t * Hides the previewer.\n\t */\n\tPreviewer.prototype.hide = function () {\n\t\tthis._elt.classList.remove(ACTIVE_CLASS);\n\t};\n\n\t/**\n\t * Map of all registered previewers by language\n\t *\n\t * @type {{}}\n\t */\n\tPreviewer.byLanguages = {};\n\n\t/**\n\t * Map of all registered previewers by type\n\t *\n\t * @type {{}}\n\t */\n\tPreviewer.byType = {};\n\n\t/**\n\t * Initializes the mouseover event on the code block.\n\t *\n\t * @param {HTMLElement} elt The code block (env.element)\n\t * @param {string} lang The language (env.language)\n\t */\n\tPreviewer.initEvents = function (elt, lang) {\n\t\tvar previewers = [];\n\t\tif (Previewer.byLanguages[lang]) {\n\t\t\tpreviewers = previewers.concat(Previewer.byLanguages[lang]);\n\t\t}\n\t\tif (Previewer.byLanguages['*']) {\n\t\t\tpreviewers = previewers.concat(Previewer.byLanguages['*']);\n\t\t}\n\t\telt.addEventListener('mouseover', function (e) {\n\t\t\tvar target = e.target;\n\t\t\tpreviewers.forEach(function (previewer) {\n\t\t\t\tpreviewer.check(target);\n\t\t\t});\n\t\t}, false);\n\t};\n\tPrism.plugins.Previewer = Previewer;\n\n\tPrism.hooks.add('before-highlight', function (env) {\n\t\tfor (var previewer in previewers) {\n\t\t\tvar languages = previewers[previewer].languages;\n\t\t\tif (env.language && languages[env.language] && !languages[env.language].initialized) {\n\t\t\t\tvar lang = languages[env.language];\n\t\t\t\tif (!Array.isArray(lang)) {\n\t\t\t\t\tlang = [lang];\n\t\t\t\t}\n\t\t\t\tlang.forEach(function (lang) {\n\t\t\t\t\tvar before; var inside; var root; var skip;\n\t\t\t\t\tif (lang === true) {\n\t\t\t\t\t\tbefore = 'important';\n\t\t\t\t\t\tinside = env.language;\n\t\t\t\t\t\tlang = env.language;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbefore = lang.before || 'important';\n\t\t\t\t\t\tinside = lang.inside || lang.lang;\n\t\t\t\t\t\troot = lang.root || Prism.languages;\n\t\t\t\t\t\tskip = lang.skip;\n\t\t\t\t\t\tlang = env.language;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!skip && Prism.languages[lang]) {\n\t\t\t\t\t\tPrism.languages.insertBefore(inside, before, previewers[previewer].tokens, root);\n\t\t\t\t\t\tenv.grammar = Prism.languages[lang];\n\n\t\t\t\t\t\tlanguages[env.language] = { initialized: true };\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n\n\t// Initialize the previewers only when needed\n\tPrism.hooks.add('after-highlight', function (env) {\n\t\tif (Previewer.byLanguages['*'] || Previewer.byLanguages[env.language]) {\n\t\t\tPreviewer.initEvents(env.element, env.language);\n\t\t}\n\t});\n\n\tfor (var previewer in previewers) {\n\t\tpreviewers[previewer].create();\n\t}\n\n}());\n","(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\tif (!Prism.plugins.toolbar) {\n\t\tconsole.warn('Show Languages plugin loaded before Toolbar plugin.');\n\n\t\treturn;\n\t}\n\n\t/* eslint-disable */\n\n\t// The languages map is built automatically with gulp\n\tvar Languages = /*languages_placeholder[*/{\n\t\t\"none\": \"Plain text\",\n\t\t\"plain\": \"Plain text\",\n\t\t\"plaintext\": \"Plain text\",\n\t\t\"text\": \"Plain text\",\n\t\t\"txt\": \"Plain text\",\n\t\t\"html\": \"HTML\",\n\t\t\"xml\": \"XML\",\n\t\t\"svg\": \"SVG\",\n\t\t\"mathml\": \"MathML\",\n\t\t\"ssml\": \"SSML\",\n\t\t\"rss\": \"RSS\",\n\t\t\"css\": \"CSS\",\n\t\t\"clike\": \"C-like\",\n\t\t\"js\": \"JavaScript\",\n\t\t\"abap\": \"ABAP\",\n\t\t\"abnf\": \"ABNF\",\n\t\t\"al\": \"AL\",\n\t\t\"antlr4\": \"ANTLR4\",\n\t\t\"g4\": \"ANTLR4\",\n\t\t\"apacheconf\": \"Apache Configuration\",\n\t\t\"apl\": \"APL\",\n\t\t\"aql\": \"AQL\",\n\t\t\"ino\": \"Arduino\",\n\t\t\"arff\": \"ARFF\",\n\t\t\"armasm\": \"ARM Assembly\",\n\t\t\"arm-asm\": \"ARM Assembly\",\n\t\t\"art\": \"Arturo\",\n\t\t\"asciidoc\": \"AsciiDoc\",\n\t\t\"adoc\": \"AsciiDoc\",\n\t\t\"aspnet\": \"ASP.NET (C#)\",\n\t\t\"asm6502\": \"6502 Assembly\",\n\t\t\"asmatmel\": \"Atmel AVR Assembly\",\n\t\t\"autohotkey\": \"AutoHotkey\",\n\t\t\"autoit\": \"AutoIt\",\n\t\t\"avisynth\": \"AviSynth\",\n\t\t\"avs\": \"AviSynth\",\n\t\t\"avro-idl\": \"Avro IDL\",\n\t\t\"avdl\": \"Avro IDL\",\n\t\t\"awk\": \"AWK\",\n\t\t\"gawk\": \"GAWK\",\n\t\t\"sh\": \"Shell\",\n\t\t\"basic\": \"BASIC\",\n\t\t\"bbcode\": \"BBcode\",\n\t\t\"bbj\": \"BBj\",\n\t\t\"bnf\": \"BNF\",\n\t\t\"rbnf\": \"RBNF\",\n\t\t\"bqn\": \"BQN\",\n\t\t\"bsl\": \"BSL (1C:Enterprise)\",\n\t\t\"oscript\": \"OneScript\",\n\t\t\"csharp\": \"C#\",\n\t\t\"cs\": \"C#\",\n\t\t\"dotnet\": \"C#\",\n\t\t\"cpp\": \"C++\",\n\t\t\"cfscript\": \"CFScript\",\n\t\t\"cfc\": \"CFScript\",\n\t\t\"cil\": \"CIL\",\n\t\t\"cilkc\": \"Cilk/C\",\n\t\t\"cilk-c\": \"Cilk/C\",\n\t\t\"cilkcpp\": \"Cilk/C++\",\n\t\t\"cilk-cpp\": \"Cilk/C++\",\n\t\t\"cilk\": \"Cilk/C++\",\n\t\t\"cmake\": \"CMake\",\n\t\t\"cobol\": \"COBOL\",\n\t\t\"coffee\": \"CoffeeScript\",\n\t\t\"conc\": \"Concurnas\",\n\t\t\"csp\": \"Content-Security-Policy\",\n\t\t\"css-extras\": \"CSS Extras\",\n\t\t\"csv\": \"CSV\",\n\t\t\"cue\": \"CUE\",\n\t\t\"dataweave\": \"DataWeave\",\n\t\t\"dax\": \"DAX\",\n\t\t\"django\": \"Django/Jinja2\",\n\t\t\"jinja2\": \"Django/Jinja2\",\n\t\t\"dns-zone-file\": \"DNS zone file\",\n\t\t\"dns-zone\": \"DNS zone file\",\n\t\t\"dockerfile\": \"Docker\",\n\t\t\"dot\": \"DOT (Graphviz)\",\n\t\t\"gv\": \"DOT (Graphviz)\",\n\t\t\"ebnf\": \"EBNF\",\n\t\t\"editorconfig\": \"EditorConfig\",\n\t\t\"ejs\": \"EJS\",\n\t\t\"etlua\": \"Embedded Lua templating\",\n\t\t\"erb\": \"ERB\",\n\t\t\"excel-formula\": \"Excel Formula\",\n\t\t\"xlsx\": \"Excel Formula\",\n\t\t\"xls\": \"Excel Formula\",\n\t\t\"fsharp\": \"F#\",\n\t\t\"firestore-security-rules\": \"Firestore security rules\",\n\t\t\"ftl\": \"FreeMarker Template Language\",\n\t\t\"gml\": \"GameMaker Language\",\n\t\t\"gamemakerlanguage\": \"GameMaker Language\",\n\t\t\"gap\": \"GAP (CAS)\",\n\t\t\"gcode\": \"G-code\",\n\t\t\"gdscript\": \"GDScript\",\n\t\t\"gedcom\": \"GEDCOM\",\n\t\t\"gettext\": \"gettext\",\n\t\t\"po\": \"gettext\",\n\t\t\"glsl\": \"GLSL\",\n\t\t\"gn\": \"GN\",\n\t\t\"gni\": \"GN\",\n\t\t\"linker-script\": \"GNU Linker Script\",\n\t\t\"ld\": \"GNU Linker Script\",\n\t\t\"go-module\": \"Go module\",\n\t\t\"go-mod\": \"Go module\",\n\t\t\"graphql\": \"GraphQL\",\n\t\t\"hbs\": \"Handlebars\",\n\t\t\"hs\": \"Haskell\",\n\t\t\"hcl\": \"HCL\",\n\t\t\"hlsl\": \"HLSL\",\n\t\t\"http\": \"HTTP\",\n\t\t\"hpkp\": \"HTTP Public-Key-Pins\",\n\t\t\"hsts\": \"HTTP Strict-Transport-Security\",\n\t\t\"ichigojam\": \"IchigoJam\",\n\t\t\"icu-message-format\": \"ICU Message Format\",\n\t\t\"idr\": \"Idris\",\n\t\t\"ignore\": \".ignore\",\n\t\t\"gitignore\": \".gitignore\",\n\t\t\"hgignore\": \".hgignore\",\n\t\t\"npmignore\": \".npmignore\",\n\t\t\"inform7\": \"Inform 7\",\n\t\t\"javadoc\": \"JavaDoc\",\n\t\t\"javadoclike\": \"JavaDoc-like\",\n\t\t\"javastacktrace\": \"Java stack trace\",\n\t\t\"jq\": \"JQ\",\n\t\t\"jsdoc\": \"JSDoc\",\n\t\t\"js-extras\": \"JS Extras\",\n\t\t\"json\": \"JSON\",\n\t\t\"webmanifest\": \"Web App Manifest\",\n\t\t\"json5\": \"JSON5\",\n\t\t\"jsonp\": \"JSONP\",\n\t\t\"jsstacktrace\": \"JS stack trace\",\n\t\t\"js-templates\": \"JS Templates\",\n\t\t\"keepalived\": \"Keepalived Configure\",\n\t\t\"kts\": \"Kotlin Script\",\n\t\t\"kt\": \"Kotlin\",\n\t\t\"kumir\": \"KuMir (КуМир)\",\n\t\t\"kum\": \"KuMir (КуМир)\",\n\t\t\"latex\": \"LaTeX\",\n\t\t\"tex\": \"TeX\",\n\t\t\"context\": \"ConTeXt\",\n\t\t\"lilypond\": \"LilyPond\",\n\t\t\"ly\": \"LilyPond\",\n\t\t\"emacs\": \"Lisp\",\n\t\t\"elisp\": \"Lisp\",\n\t\t\"emacs-lisp\": \"Lisp\",\n\t\t\"llvm\": \"LLVM IR\",\n\t\t\"log\": \"Log file\",\n\t\t\"lolcode\": \"LOLCODE\",\n\t\t\"magma\": \"Magma (CAS)\",\n\t\t\"md\": \"Markdown\",\n\t\t\"markup-templating\": \"Markup templating\",\n\t\t\"matlab\": \"MATLAB\",\n\t\t\"maxscript\": \"MAXScript\",\n\t\t\"mel\": \"MEL\",\n\t\t\"metafont\": \"METAFONT\",\n\t\t\"mongodb\": \"MongoDB\",\n\t\t\"moon\": \"MoonScript\",\n\t\t\"n1ql\": \"N1QL\",\n\t\t\"n4js\": \"N4JS\",\n\t\t\"n4jsd\": \"N4JS\",\n\t\t\"nand2tetris-hdl\": \"Nand To Tetris HDL\",\n\t\t\"naniscript\": \"Naninovel Script\",\n\t\t\"nani\": \"Naninovel Script\",\n\t\t\"nasm\": \"NASM\",\n\t\t\"neon\": \"NEON\",\n\t\t\"nginx\": \"nginx\",\n\t\t\"nsis\": \"NSIS\",\n\t\t\"objectivec\": \"Objective-C\",\n\t\t\"objc\": \"Objective-C\",\n\t\t\"ocaml\": \"OCaml\",\n\t\t\"opencl\": \"OpenCL\",\n\t\t\"openqasm\": \"OpenQasm\",\n\t\t\"qasm\": \"OpenQasm\",\n\t\t\"parigp\": \"PARI/GP\",\n\t\t\"objectpascal\": \"Object Pascal\",\n\t\t\"psl\": \"PATROL Scripting Language\",\n\t\t\"pcaxis\": \"PC-Axis\",\n\t\t\"px\": \"PC-Axis\",\n\t\t\"peoplecode\": \"PeopleCode\",\n\t\t\"pcode\": \"PeopleCode\",\n\t\t\"php\": \"PHP\",\n\t\t\"phpdoc\": \"PHPDoc\",\n\t\t\"php-extras\": \"PHP Extras\",\n\t\t\"plant-uml\": \"PlantUML\",\n\t\t\"plantuml\": \"PlantUML\",\n\t\t\"plsql\": \"PL/SQL\",\n\t\t\"powerquery\": \"PowerQuery\",\n\t\t\"pq\": \"PowerQuery\",\n\t\t\"mscript\": \"PowerQuery\",\n\t\t\"powershell\": \"PowerShell\",\n\t\t\"promql\": \"PromQL\",\n\t\t\"properties\": \".properties\",\n\t\t\"protobuf\": \"Protocol Buffers\",\n\t\t\"purebasic\": \"PureBasic\",\n\t\t\"pbfasm\": \"PureBasic\",\n\t\t\"purs\": \"PureScript\",\n\t\t\"py\": \"Python\",\n\t\t\"qsharp\": \"Q#\",\n\t\t\"qs\": \"Q#\",\n\t\t\"q\": \"Q (kdb+ database)\",\n\t\t\"qml\": \"QML\",\n\t\t\"rkt\": \"Racket\",\n\t\t\"cshtml\": \"Razor C#\",\n\t\t\"razor\": \"Razor C#\",\n\t\t\"jsx\": \"React JSX\",\n\t\t\"tsx\": \"React TSX\",\n\t\t\"renpy\": \"Ren'py\",\n\t\t\"rpy\": \"Ren'py\",\n\t\t\"res\": \"ReScript\",\n\t\t\"rest\": \"reST (reStructuredText)\",\n\t\t\"robotframework\": \"Robot Framework\",\n\t\t\"robot\": \"Robot Framework\",\n\t\t\"rb\": \"Ruby\",\n\t\t\"sas\": \"SAS\",\n\t\t\"sass\": \"Sass (Sass)\",\n\t\t\"scss\": \"Sass (SCSS)\",\n\t\t\"shell-session\": \"Shell session\",\n\t\t\"sh-session\": \"Shell session\",\n\t\t\"shellsession\": \"Shell session\",\n\t\t\"sml\": \"SML\",\n\t\t\"smlnj\": \"SML/NJ\",\n\t\t\"solidity\": \"Solidity (Ethereum)\",\n\t\t\"sol\": \"Solidity (Ethereum)\",\n\t\t\"solution-file\": \"Solution file\",\n\t\t\"sln\": \"Solution file\",\n\t\t\"soy\": \"Soy (Closure Template)\",\n\t\t\"sparql\": \"SPARQL\",\n\t\t\"rq\": \"SPARQL\",\n\t\t\"splunk-spl\": \"Splunk SPL\",\n\t\t\"sqf\": \"SQF: Status Quo Function (Arma 3)\",\n\t\t\"sql\": \"SQL\",\n\t\t\"stata\": \"Stata Ado\",\n\t\t\"iecst\": \"Structured Text (IEC 61131-3)\",\n\t\t\"supercollider\": \"SuperCollider\",\n\t\t\"sclang\": \"SuperCollider\",\n\t\t\"systemd\": \"Systemd configuration file\",\n\t\t\"t4-templating\": \"T4 templating\",\n\t\t\"t4-cs\": \"T4 Text Templates (C#)\",\n\t\t\"t4\": \"T4 Text Templates (C#)\",\n\t\t\"t4-vb\": \"T4 Text Templates (VB)\",\n\t\t\"tap\": \"TAP\",\n\t\t\"tt2\": \"Template Toolkit 2\",\n\t\t\"toml\": \"TOML\",\n\t\t\"trickle\": \"trickle\",\n\t\t\"troy\": \"troy\",\n\t\t\"trig\": \"TriG\",\n\t\t\"ts\": \"TypeScript\",\n\t\t\"tsconfig\": \"TSConfig\",\n\t\t\"uscript\": \"UnrealScript\",\n\t\t\"uc\": \"UnrealScript\",\n\t\t\"uorazor\": \"UO Razor Script\",\n\t\t\"uri\": \"URI\",\n\t\t\"url\": \"URL\",\n\t\t\"vbnet\": \"VB.Net\",\n\t\t\"vhdl\": \"VHDL\",\n\t\t\"vim\": \"vim\",\n\t\t\"visual-basic\": \"Visual Basic\",\n\t\t\"vba\": \"VBA\",\n\t\t\"vb\": \"Visual Basic\",\n\t\t\"wasm\": \"WebAssembly\",\n\t\t\"web-idl\": \"Web IDL\",\n\t\t\"webidl\": \"Web IDL\",\n\t\t\"wgsl\": \"WGSL\",\n\t\t\"wiki\": \"Wiki markup\",\n\t\t\"wolfram\": \"Wolfram language\",\n\t\t\"nb\": \"Mathematica Notebook\",\n\t\t\"wl\": \"Wolfram language\",\n\t\t\"xeoracube\": \"XeoraCube\",\n\t\t\"xml-doc\": \"XML doc (.net)\",\n\t\t\"xojo\": \"Xojo (REALbasic)\",\n\t\t\"xquery\": \"XQuery\",\n\t\t\"yaml\": \"YAML\",\n\t\t\"yml\": \"YAML\",\n\t\t\"yang\": \"YANG\"\n\t}/*]*/;\n\n\t/* eslint-enable */\n\n\tPrism.plugins.toolbar.registerButton('show-language', function (env) {\n\t\tvar pre = env.element.parentNode;\n\t\tif (!pre || !/pre/i.test(pre.nodeName)) {\n\t\t\treturn;\n\t\t}\n\n\t\t/**\n\t\t * Tries to guess the name of a language given its id.\n\t\t *\n\t\t * @param {string} id The language id.\n\t\t * @returns {string}\n\t\t */\n\t\tfunction guessTitle(id) {\n\t\t\tif (!id) {\n\t\t\t\treturn id;\n\t\t\t}\n\t\t\treturn (id.substring(0, 1).toUpperCase() + id.substring(1)).replace(/s(?=cript)/, 'S');\n\t\t}\n\n\t\tvar language = pre.getAttribute('data-language') || Languages[env.language] || guessTitle(env.language);\n\n\t\tif (!language) {\n\t\t\treturn;\n\t\t}\n\t\tvar element = document.createElement('span');\n\t\telement.textContent = language;\n\n\t\treturn element;\n\t});\n\n}());\n","(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\tvar callbacks = [];\n\tvar map = {};\n\tvar noop = function () {};\n\n\tPrism.plugins.toolbar = {};\n\n\t/**\n\t * @typedef ButtonOptions\n\t * @property {string} text The text displayed.\n\t * @property {string} [url] The URL of the link which will be created.\n\t * @property {Function} [onClick] The event listener for the `click` event of the created button.\n\t * @property {string} [className] The class attribute to include with element.\n\t */\n\n\t/**\n\t * Register a button callback with the toolbar.\n\t *\n\t * @param {string} key\n\t * @param {ButtonOptions|Function} opts\n\t */\n\tvar registerButton = Prism.plugins.toolbar.registerButton = function (key, opts) {\n\t\tvar callback;\n\n\t\tif (typeof opts === 'function') {\n\t\t\tcallback = opts;\n\t\t} else {\n\t\t\tcallback = function (env) {\n\t\t\t\tvar element;\n\n\t\t\t\tif (typeof opts.onClick === 'function') {\n\t\t\t\t\telement = document.createElement('button');\n\t\t\t\t\telement.type = 'button';\n\t\t\t\t\telement.addEventListener('click', function () {\n\t\t\t\t\t\topts.onClick.call(this, env);\n\t\t\t\t\t});\n\t\t\t\t} else if (typeof opts.url === 'string') {\n\t\t\t\t\telement = document.createElement('a');\n\t\t\t\t\telement.href = opts.url;\n\t\t\t\t} else {\n\t\t\t\t\telement = document.createElement('span');\n\t\t\t\t}\n\n\t\t\t\tif (opts.className) {\n\t\t\t\t\telement.classList.add(opts.className);\n\t\t\t\t}\n\n\t\t\t\telement.textContent = opts.text;\n\n\t\t\t\treturn element;\n\t\t\t};\n\t\t}\n\n\t\tif (key in map) {\n\t\t\tconsole.warn('There is a button with the key \"' + key + '\" registered already.');\n\t\t\treturn;\n\t\t}\n\n\t\tcallbacks.push(map[key] = callback);\n\t};\n\n\t/**\n\t * Returns the callback order of the given element.\n\t *\n\t * @param {HTMLElement} element\n\t * @returns {string[] | undefined}\n\t */\n\tfunction getOrder(element) {\n\t\twhile (element) {\n\t\t\tvar order = element.getAttribute('data-toolbar-order');\n\t\t\tif (order != null) {\n\t\t\t\torder = order.trim();\n\t\t\t\tif (order.length) {\n\t\t\t\t\treturn order.split(/\\s*,\\s*/g);\n\t\t\t\t} else {\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t}\n\t\t\telement = element.parentElement;\n\t\t}\n\t}\n\n\t/**\n\t * Post-highlight Prism hook callback.\n\t *\n\t * @param env\n\t */\n\tvar hook = Prism.plugins.toolbar.hook = function (env) {\n\t\t// Check if inline or actual code block (credit to line-numbers plugin)\n\t\tvar pre = env.element.parentNode;\n\t\tif (!pre || !/pre/i.test(pre.nodeName)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Autoloader rehighlights, so only do this once.\n\t\tif (pre.parentNode.classList.contains('code-toolbar')) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Create wrapper for <pre> to prevent scrolling toolbar with content\n\t\tvar wrapper = document.createElement('div');\n\t\twrapper.classList.add('code-toolbar');\n\t\tpre.parentNode.insertBefore(wrapper, pre);\n\t\twrapper.appendChild(pre);\n\n\t\t// Setup the toolbar\n\t\tvar toolbar = document.createElement('div');\n\t\ttoolbar.classList.add('toolbar');\n\n\t\t// order callbacks\n\t\tvar elementCallbacks = callbacks;\n\t\tvar order = getOrder(env.element);\n\t\tif (order) {\n\t\t\telementCallbacks = order.map(function (key) {\n\t\t\t\treturn map[key] || noop;\n\t\t\t});\n\t\t}\n\n\t\telementCallbacks.forEach(function (callback) {\n\t\t\tvar element = callback(env);\n\n\t\t\tif (!element) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar item = document.createElement('div');\n\t\t\titem.classList.add('toolbar-item');\n\n\t\t\titem.appendChild(element);\n\t\t\ttoolbar.appendChild(item);\n\t\t});\n\n\t\t// Add our toolbar to the currently created wrapper of <pre> tag\n\t\twrapper.appendChild(toolbar);\n\t};\n\n\tregisterButton('label', function (env) {\n\t\tvar pre = env.element.parentNode;\n\t\tif (!pre || !/pre/i.test(pre.nodeName)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!pre.hasAttribute('data-label')) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar element; var template;\n\t\tvar text = pre.getAttribute('data-label');\n\t\ttry {\n\t\t\t// Any normal text will blow up this selector.\n\t\t\ttemplate = document.querySelector('template#' + text);\n\t\t} catch (e) { /* noop */ }\n\n\t\tif (template) {\n\t\t\telement = template.content;\n\t\t} else {\n\t\t\tif (pre.hasAttribute('data-url')) {\n\t\t\t\telement = document.createElement('a');\n\t\t\t\telement.href = pre.getAttribute('data-url');\n\t\t\t} else {\n\t\t\t\telement = document.createElement('span');\n\t\t\t}\n\n\t\t\telement.textContent = text;\n\t\t}\n\n\t\treturn element;\n\t});\n\n\t/**\n\t * Register the toolbar with Prism.\n\t */\n\tPrism.hooks.add('complete', hook);\n}());\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\n/// <reference lib=\"WebWorker\"/>\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t\t? self // if in worker\n\t\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT <https://opensource.org/licenses/MIT>\n * @author Lea Verou <https://lea.verou.me>\n * @namespace\n * @public\n */\nvar Prism = (function (_self) {\n\n\t// Private helper vars\n\tvar lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n\tvar uniqueId = 0;\n\n\t// The grammar object for plaintext\n\tvar plainTextGrammar = {};\n\n\n\tvar _ = {\n\t\t/**\n\t\t * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the\n\t\t * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load\n\t\t * additional languages or plugins yourself.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not automatically highlight all code elements on the page.\n\t\t *\n\t\t * You obviously have to change this value before the automatic highlighting started. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.manual = true;\n\t\t * // add a new <script> to load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tmanual: _self.Prism && _self.Prism.manual,\n\t\t/**\n\t\t * By default, if Prism is in a web worker, it assumes that it is in a worker it created itself, so it uses\n\t\t * `addEventListener` to communicate with its parent instance. However, if you're using Prism manually in your\n\t\t * own worker, you don't want it to do this.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not add its own listeners to the worker.\n\t\t *\n\t\t * You obviously have to change this value before Prism executes. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.disableWorkerMessageHandler = true;\n\t\t * // Load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\n\t\t/**\n\t\t * A namespace for utility methods.\n\t\t *\n\t\t * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may\n\t\t * change or disappear at any time.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t */\n\t\tutil: {\n\t\t\tencode: function encode(tokens) {\n\t\t\t\tif (tokens instanceof Token) {\n\t\t\t\t\treturn new Token(tokens.type, encode(tokens.content), tokens.alias);\n\t\t\t\t} else if (Array.isArray(tokens)) {\n\t\t\t\t\treturn tokens.map(encode);\n\t\t\t\t} else {\n\t\t\t\t\treturn tokens.replace(/&/g, '&').replace(/</g, '<').replace(/\\u00a0/g, ' ');\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the name of the type of the given value.\n\t\t\t *\n\t\t\t * @param {any} o\n\t\t\t * @returns {string}\n\t\t\t * @example\n\t\t\t * type(null) === 'Null'\n\t\t\t * type(undefined) === 'Undefined'\n\t\t\t * type(123) === 'Number'\n\t\t\t * type('foo') === 'String'\n\t\t\t * type(true) === 'Boolean'\n\t\t\t * type([1, 2]) === 'Array'\n\t\t\t * type({}) === 'Object'\n\t\t\t * type(String) === 'Function'\n\t\t\t * type(/abc+/) === 'RegExp'\n\t\t\t */\n\t\t\ttype: function (o) {\n\t\t\t\treturn Object.prototype.toString.call(o).slice(8, -1);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns a unique number for the given object. Later calls will still return the same number.\n\t\t\t *\n\t\t\t * @param {Object} obj\n\t\t\t * @returns {number}\n\t\t\t */\n\t\t\tobjId: function (obj) {\n\t\t\t\tif (!obj['__id']) {\n\t\t\t\t\tObject.defineProperty(obj, '__id', { value: ++uniqueId });\n\t\t\t\t}\n\t\t\t\treturn obj['__id'];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Creates a deep clone of the given object.\n\t\t\t *\n\t\t\t * The main intended use of this function is to clone language definitions.\n\t\t\t *\n\t\t\t * @param {T} o\n\t\t\t * @param {Record<number, any>} [visited]\n\t\t\t * @returns {T}\n\t\t\t * @template T\n\t\t\t */\n\t\t\tclone: function deepClone(o, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar clone; var id;\n\t\t\t\tswitch (_.util.type(o)) {\n\t\t\t\t\tcase 'Object':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = /** @type {Record<string, any>} */ ({});\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\tfor (var key in o) {\n\t\t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tclone[key] = deepClone(o[key], visited);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tcase 'Array':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\t(/** @type {Array} */(/** @type {any} */(o))).forEach(function (v, i) {\n\t\t\t\t\t\t\tclone[i] = deepClone(v, visited);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn o;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class.\n\t\t\t *\n\t\t\t * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @returns {string}\n\t\t\t */\n\t\t\tgetLanguage: function (element) {\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar m = lang.exec(element.className);\n\t\t\t\t\tif (m) {\n\t\t\t\t\t\treturn m[1].toLowerCase();\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn 'none';\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Sets the Prism `language-xxxx` class of the given element.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} language\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tsetLanguage: function (element, language) {\n\t\t\t\t// remove all `language-xxxx` classes\n\t\t\t\t// (this might leave behind a leading space)\n\t\t\t\telement.className = element.className.replace(RegExp(lang, 'gi'), '');\n\n\t\t\t\t// add the new `language-xxxx` class\n\t\t\t\t// (using `classList` will automatically clean up spaces for us)\n\t\t\t\telement.classList.add('language-' + language);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the script element that is currently executing.\n\t\t\t *\n\t\t\t * This does __not__ work for line script element.\n\t\t\t *\n\t\t\t * @returns {HTMLScriptElement | null}\n\t\t\t */\n\t\t\tcurrentScript: function () {\n\t\t\t\tif (typeof document === 'undefined') {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif ('currentScript' in document && 1 < 2 /* hack to trip TS' flow analysis */) {\n\t\t\t\t\treturn /** @type {any} */ (document.currentScript);\n\t\t\t\t}\n\n\t\t\t\t// IE11 workaround\n\t\t\t\t// we'll get the src of the current script by parsing IE11's error stack trace\n\t\t\t\t// this will not work for inline scripts\n\n\t\t\t\ttry {\n\t\t\t\t\tthrow new Error();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// Get file src url from stack. Specifically works with the format of stack traces in IE.\n\t\t\t\t\t// A stack will look like this:\n\t\t\t\t\t//\n\t\t\t\t\t// Error\n\t\t\t\t\t// at _.util.currentScript (http://localhost/components/prism-core.js:119:5)\n\t\t\t\t\t// at Global code (http://localhost/components/prism-core.js:606:1)\n\n\t\t\t\t\tvar src = (/at [^(\\r\\n]*\\((.*):[^:]+:[^:]+\\)$/i.exec(err.stack) || [])[1];\n\t\t\t\t\tif (src) {\n\t\t\t\t\t\tvar scripts = document.getElementsByTagName('script');\n\t\t\t\t\t\tfor (var i in scripts) {\n\t\t\t\t\t\t\tif (scripts[i].src == src) {\n\t\t\t\t\t\t\t\treturn scripts[i];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns whether a given class is active for `element`.\n\t\t\t *\n\t\t\t * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated\n\t\t\t * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the\n\t\t\t * given class is just the given class with a `no-` prefix.\n\t\t\t *\n\t\t\t * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is\n\t\t\t * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its\n\t\t\t * ancestors have the given class or the negated version of it, then the default activation will be returned.\n\t\t\t *\n\t\t\t * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated\n\t\t\t * version of it, the class is considered active.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} className\n\t\t\t * @param {boolean} [defaultActivation=false]\n\t\t\t * @returns {boolean}\n\t\t\t */\n\t\t\tisActive: function (element, className, defaultActivation) {\n\t\t\t\tvar no = 'no-' + className;\n\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar classList = element.classList;\n\t\t\t\t\tif (classList.contains(className)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (classList.contains(no)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn !!defaultActivation;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tlanguages: {\n\t\t\t/**\n\t\t\t * The grammar for plain, unformatted text.\n\t\t\t */\n\t\t\tplain: plainTextGrammar,\n\t\t\tplaintext: plainTextGrammar,\n\t\t\ttext: plainTextGrammar,\n\t\t\ttxt: plainTextGrammar,\n\n\t\t\t/**\n\t\t\t * Creates a deep copy of the language with the given id and appends the given tokens.\n\t\t\t *\n\t\t\t * If a token in `redef` also appears in the copied language, then the existing token in the copied language\n\t\t\t * will be overwritten at its original position.\n\t\t\t *\n\t\t\t * ## Best practices\n\t\t\t *\n\t\t\t * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)\n\t\t\t * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to\n\t\t\t * understand the language definition because, normally, the order of tokens matters in Prism grammars.\n\t\t\t *\n\t\t\t * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.\n\t\t\t * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.\n\t\t\t *\n\t\t\t * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.\n\t\t\t * @param {Grammar} redef The new tokens to append.\n\t\t\t * @returns {Grammar} The new language created.\n\t\t\t * @public\n\t\t\t * @example\n\t\t\t * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {\n\t\t\t * // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token\n\t\t\t * // at its original position\n\t\t\t * 'comment': { ... },\n\t\t\t * // CSS doesn't have a 'color' token, so this token will be appended\n\t\t\t * 'color': /\\b(?:red|green|blue)\\b/\n\t\t\t * });\n\t\t\t */\n\t\t\textend: function (id, redef) {\n\t\t\t\tvar lang = _.util.clone(_.languages[id]);\n\n\t\t\t\tfor (var key in redef) {\n\t\t\t\t\tlang[key] = redef[key];\n\t\t\t\t}\n\n\t\t\t\treturn lang;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Inserts tokens _before_ another token in a language definition or any other grammar.\n\t\t\t *\n\t\t\t * ## Usage\n\t\t\t *\n\t\t\t * This helper method makes it easy to modify existing languages. For example, the CSS language definition\n\t\t\t * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded\n\t\t\t * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the\n\t\t\t * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do\n\t\t\t * this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.markup.style = {\n\t\t\t * // token\n\t\t\t * };\n\t\t\t * ```\n\t\t\t *\n\t\t\t * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens\n\t\t\t * before existing tokens. For the CSS example above, you would use it like this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'cdata', {\n\t\t\t * 'style': {\n\t\t\t * // token\n\t\t\t * }\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Special cases\n\t\t\t *\n\t\t\t * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar\n\t\t\t * will be ignored.\n\t\t\t *\n\t\t\t * This behavior can be used to insert tokens after `before`:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'comment', {\n\t\t\t * 'comment': Prism.languages.markup.comment,\n\t\t\t * // tokens after 'comment'\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Limitations\n\t\t\t *\n\t\t\t * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object\n\t\t\t * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave\n\t\t\t * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily\n\t\t\t * deleting properties which is necessary to insert at arbitrary positions.\n\t\t\t *\n\t\t\t * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object.\n\t\t\t * Instead, it will create a new object and replace all references to the target object with the new one. This\n\t\t\t * can be done without temporarily deleting properties, so the iteration order is well-defined.\n\t\t\t *\n\t\t\t * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if\n\t\t\t * you hold the target object in a variable, then the value of the variable will not change.\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * var oldMarkup = Prism.languages.markup;\n\t\t\t * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });\n\t\t\t *\n\t\t\t * assert(oldMarkup !== Prism.languages.markup);\n\t\t\t * assert(newMarkup === Prism.languages.markup);\n\t\t\t * ```\n\t\t\t *\n\t\t\t * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the\n\t\t\t * object to be modified.\n\t\t\t * @param {string} before The key to insert before.\n\t\t\t * @param {Grammar} insert An object containing the key-value pairs to be inserted.\n\t\t\t * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the\n\t\t\t * object to be modified.\n\t\t\t *\n\t\t\t * Defaults to `Prism.languages`.\n\t\t\t * @returns {Grammar} The new grammar object.\n\t\t\t * @public\n\t\t\t */\n\t\t\tinsertBefore: function (inside, before, insert, root) {\n\t\t\t\troot = root || /** @type {any} */ (_.languages);\n\t\t\t\tvar grammar = root[inside];\n\t\t\t\t/** @type {Grammar} */\n\t\t\t\tvar ret = {};\n\n\t\t\t\tfor (var token in grammar) {\n\t\t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n\t\t\t\t\t\tif (token == before) {\n\t\t\t\t\t\t\tfor (var newToken in insert) {\n\t\t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Do not insert token which also occur in insert. See #1525\n\t\t\t\t\t\tif (!insert.hasOwnProperty(token)) {\n\t\t\t\t\t\t\tret[token] = grammar[token];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar old = root[inside];\n\t\t\t\troot[inside] = ret;\n\n\t\t\t\t// Update references in other language definitions\n\t\t\t\t_.languages.DFS(_.languages, function (key, value) {\n\t\t\t\t\tif (value === old && key != inside) {\n\t\t\t\t\t\tthis[key] = ret;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn ret;\n\t\t\t},\n\n\t\t\t// Traverse a language definition with Depth First Search\n\t\t\tDFS: function DFS(o, callback, type, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar objId = _.util.objId;\n\n\t\t\t\tfor (var i in o) {\n\t\t\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n\t\t\t\t\t\tvar property = o[i];\n\t\t\t\t\t\tvar propertyType = _.util.type(property);\n\n\t\t\t\t\t\tif (propertyType === 'Object' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, null, visited);\n\t\t\t\t\t\t} else if (propertyType === 'Array' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, i, visited);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tplugins: {},\n\n\t\t/**\n\t\t * This is the most high-level function in Prism’s API.\n\t\t * It fetches all the elements that have a `.language-xxxx` class and then calls {@link Prism.highlightElement} on\n\t\t * each one of them.\n\t\t *\n\t\t * This is equivalent to `Prism.highlightAllUnder(document, async, callback)`.\n\t\t *\n\t\t * @param {boolean} [async=false] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @param {HighlightCallback} [callback] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAll: function (async, callback) {\n\t\t\t_.highlightAllUnder(document, async, callback);\n\t\t},\n\n\t\t/**\n\t\t * Fetches all the descendants of `container` that have a `.language-xxxx` class and then calls\n\t\t * {@link Prism.highlightElement} on each one of them.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-highlightall`\n\t\t * 2. `before-all-elements-highlight`\n\t\t * 3. All hooks of {@link Prism.highlightElement} for each element.\n\t\t *\n\t\t * @param {ParentNode} container The root element, whose descendants that have a `.language-xxxx` class will be highlighted.\n\t\t * @param {boolean} [async=false] Whether each element is to be highlighted asynchronously using Web Workers.\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked on each element after its highlighting is done.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAllUnder: function (container, async, callback) {\n\t\t\tvar env = {\n\t\t\t\tcallback: callback,\n\t\t\t\tcontainer: container,\n\t\t\t\tselector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n\t\t\t};\n\n\t\t\t_.hooks.run('before-highlightall', env);\n\n\t\t\tenv.elements = Array.prototype.slice.apply(env.container.querySelectorAll(env.selector));\n\n\t\t\t_.hooks.run('before-all-elements-highlight', env);\n\n\t\t\tfor (var i = 0, element; (element = env.elements[i++]);) {\n\t\t\t\t_.highlightElement(element, async === true, env.callback);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Highlights the code inside a single element.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-sanity-check`\n\t\t * 2. `before-highlight`\n\t\t * 3. All hooks of {@link Prism.highlight}. These hooks will be run by an asynchronous worker if `async` is `true`.\n\t\t * 4. `before-insert`\n\t\t * 5. `after-highlight`\n\t\t * 6. `complete`\n\t\t *\n\t\t * Some the above hooks will be skipped if the element doesn't contain any text or there is no grammar loaded for\n\t\t * the element's language.\n\t\t *\n\t\t * @param {Element} element The element containing the code.\n\t\t * It must have a class of `language-xxxx` to be processed, where `xxxx` is a valid language identifier.\n\t\t * @param {boolean} [async=false] Whether the element is to be highlighted asynchronously using Web Workers\n\t\t * to improve performance and avoid blocking the UI when highlighting very large chunks of code. This option is\n\t\t * [disabled by default](https://prismjs.com/faq.html#why-is-asynchronous-highlighting-disabled-by-default).\n\t\t *\n\t\t * Note: All language definitions required to highlight the code must be included in the main `prism.js` file for\n\t\t * asynchronous highlighting to work. You can build your own bundle on the\n\t\t * [Download page](https://prismjs.com/download.html).\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked after the highlighting is done.\n\t\t * Mostly useful when `async` is `true`, since in that case, the highlighting is done asynchronously.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightElement: function (element, async, callback) {\n\t\t\t// Find language\n\t\t\tvar language = _.util.getLanguage(element);\n\t\t\tvar grammar = _.languages[language];\n\n\t\t\t// Set language on the element, if not present\n\t\t\t_.util.setLanguage(element, language);\n\n\t\t\t// Set language on the parent, for styling\n\t\t\tvar parent = element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre') {\n\t\t\t\t_.util.setLanguage(parent, language);\n\t\t\t}\n\n\t\t\tvar code = element.textContent;\n\n\t\t\tvar env = {\n\t\t\t\telement: element,\n\t\t\t\tlanguage: language,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tcode: code\n\t\t\t};\n\n\t\t\tfunction insertHighlightedCode(highlightedCode) {\n\t\t\t\tenv.highlightedCode = highlightedCode;\n\n\t\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t}\n\n\t\t\t_.hooks.run('before-sanity-check', env);\n\n\t\t\t// plugins may change/add the parent/element\n\t\t\tparent = env.element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre' && !parent.hasAttribute('tabindex')) {\n\t\t\t\tparent.setAttribute('tabindex', '0');\n\t\t\t}\n\n\t\t\tif (!env.code) {\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_.hooks.run('before-highlight', env);\n\n\t\t\tif (!env.grammar) {\n\t\t\t\tinsertHighlightedCode(_.util.encode(env.code));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (async && _self.Worker) {\n\t\t\t\tvar worker = new Worker(_.filename);\n\n\t\t\t\tworker.onmessage = function (evt) {\n\t\t\t\t\tinsertHighlightedCode(evt.data);\n\t\t\t\t};\n\n\t\t\t\tworker.postMessage(JSON.stringify({\n\t\t\t\t\tlanguage: env.language,\n\t\t\t\t\tcode: env.code,\n\t\t\t\t\timmediateClose: true\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\tinsertHighlightedCode(_.highlight(env.code, env.grammar, env.language));\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Low-level function, only use if you know what you’re doing. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns a string with the HTML produced.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-tokenize`\n\t\t * 2. `after-tokenize`\n\t\t * 3. `wrap`: On each {@link Token}.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @param {string} language The name of the language definition passed to `grammar`.\n\t\t * @returns {string} The highlighted HTML.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');\n\t\t */\n\t\thighlight: function (text, grammar, language) {\n\t\t\tvar env = {\n\t\t\t\tcode: text,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tlanguage: language\n\t\t\t};\n\t\t\t_.hooks.run('before-tokenize', env);\n\t\t\tif (!env.grammar) {\n\t\t\t\tthrow new Error('The language \"' + env.language + '\" has no grammar.');\n\t\t\t}\n\t\t\tenv.tokens = _.tokenize(env.code, env.grammar);\n\t\t\t_.hooks.run('after-tokenize', env);\n\t\t\treturn Token.stringify(_.util.encode(env.tokens), env.language);\n\t\t},\n\n\t\t/**\n\t\t * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns an array with the tokenized code.\n\t\t *\n\t\t * When the language definition includes nested tokens, the function is called recursively on each of these tokens.\n\t\t *\n\t\t * This method could be useful in other contexts as well, as a very crude parser.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @returns {TokenStream} An array of strings and tokens, a token stream.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * let code = `var foo = 0;`;\n\t\t * let tokens = Prism.tokenize(code, Prism.languages.javascript);\n\t\t * tokens.forEach(token => {\n\t\t * if (token instanceof Prism.Token && token.type === 'number') {\n\t\t * console.log(`Found numeric literal: ${token.content}`);\n\t\t * }\n\t\t * });\n\t\t */\n\t\ttokenize: function (text, grammar) {\n\t\t\tvar rest = grammar.rest;\n\t\t\tif (rest) {\n\t\t\t\tfor (var token in rest) {\n\t\t\t\t\tgrammar[token] = rest[token];\n\t\t\t\t}\n\n\t\t\t\tdelete grammar.rest;\n\t\t\t}\n\n\t\t\tvar tokenList = new LinkedList();\n\t\t\taddAfter(tokenList, tokenList.head, text);\n\n\t\t\tmatchGrammar(text, tokenList, grammar, tokenList.head, 0);\n\n\t\t\treturn toArray(tokenList);\n\t\t},\n\n\t\t/**\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thooks: {\n\t\t\tall: {},\n\n\t\t\t/**\n\t\t\t * Adds the given callback to the list of callbacks for the given hook.\n\t\t\t *\n\t\t\t * The callback will be invoked when the hook it is registered for is run.\n\t\t\t * Hooks are usually directly run by a highlight function but you can also run hooks yourself.\n\t\t\t *\n\t\t\t * One callback function can be registered to multiple hooks and the same hook multiple times.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {HookCallback} callback The callback function which is given environment variables.\n\t\t\t * @public\n\t\t\t */\n\t\t\tadd: function (name, callback) {\n\t\t\t\tvar hooks = _.hooks.all;\n\n\t\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\t\thooks[name].push(callback);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Runs a hook invoking all registered callbacks with the given environment variables.\n\t\t\t *\n\t\t\t * Callbacks will be invoked synchronously and in the order in which they were registered.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n\t\t\t * @public\n\t\t\t */\n\t\t\trun: function (name, env) {\n\t\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0, callback; (callback = callbacks[i++]);) {\n\t\t\t\t\tcallback(env);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tToken: Token\n\t};\n\t_self.Prism = _;\n\n\n\t// Typescript note:\n\t// The following can be used to import the Token type in JSDoc:\n\t//\n\t// @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n\n\t/**\n\t * Creates a new token.\n\t *\n\t * @param {string} type See {@link Token#type type}\n\t * @param {string | TokenStream} content See {@link Token#content content}\n\t * @param {string|string[]} [alias] The alias(es) of the token.\n\t * @param {string} [matchedStr=\"\"] A copy of the full string this token was created from.\n\t * @class\n\t * @global\n\t * @public\n\t */\n\tfunction Token(type, content, alias, matchedStr) {\n\t\t/**\n\t\t * The type of the token.\n\t\t *\n\t\t * This is usually the key of a pattern in a {@link Grammar}.\n\t\t *\n\t\t * @type {string}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.type = type;\n\t\t/**\n\t\t * The strings or tokens contained by this token.\n\t\t *\n\t\t * This will be a token stream if the pattern matched also defined an `inside` grammar.\n\t\t *\n\t\t * @type {string | TokenStream}\n\t\t * @public\n\t\t */\n\t\tthis.content = content;\n\t\t/**\n\t\t * The alias(es) of the token.\n\t\t *\n\t\t * @type {string|string[]}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.alias = alias;\n\t\t// Copy of the full string this token was created from\n\t\tthis.length = (matchedStr || '').length | 0;\n\t}\n\n\t/**\n\t * A token stream is an array of strings and {@link Token Token} objects.\n\t *\n\t * Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process\n\t * them.\n\t *\n\t * 1. No adjacent strings.\n\t * 2. No empty strings.\n\t *\n\t * The only exception here is the token stream that only contains the empty string and nothing else.\n\t *\n\t * @typedef {Array<string | Token>} TokenStream\n\t * @global\n\t * @public\n\t */\n\n\t/**\n\t * Converts the given token or token stream to an HTML representation.\n\t *\n\t * The following hooks will be run:\n\t * 1. `wrap`: On each {@link Token}.\n\t *\n\t * @param {string | Token | TokenStream} o The token or token stream to be converted.\n\t * @param {string} language The name of current language.\n\t * @returns {string} The HTML representation of the token or token stream.\n\t * @memberof Token\n\t * @static\n\t */\n\tToken.stringify = function stringify(o, language) {\n\t\tif (typeof o == 'string') {\n\t\t\treturn o;\n\t\t}\n\t\tif (Array.isArray(o)) {\n\t\t\tvar s = '';\n\t\t\to.forEach(function (e) {\n\t\t\t\ts += stringify(e, language);\n\t\t\t});\n\t\t\treturn s;\n\t\t}\n\n\t\tvar env = {\n\t\t\ttype: o.type,\n\t\t\tcontent: stringify(o.content, language),\n\t\t\ttag: 'span',\n\t\t\tclasses: ['token', o.type],\n\t\t\tattributes: {},\n\t\t\tlanguage: language\n\t\t};\n\n\t\tvar aliases = o.alias;\n\t\tif (aliases) {\n\t\t\tif (Array.isArray(aliases)) {\n\t\t\t\tArray.prototype.push.apply(env.classes, aliases);\n\t\t\t} else {\n\t\t\t\tenv.classes.push(aliases);\n\t\t\t}\n\t\t}\n\n\t\t_.hooks.run('wrap', env);\n\n\t\tvar attributes = '';\n\t\tfor (var name in env.attributes) {\n\t\t\tattributes += ' ' + name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t\t}\n\n\t\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + attributes + '>' + env.content + '</' + env.tag + '>';\n\t};\n\n\t/**\n\t * @param {RegExp} pattern\n\t * @param {number} pos\n\t * @param {string} text\n\t * @param {boolean} lookbehind\n\t * @returns {RegExpExecArray | null}\n\t */\n\tfunction matchPattern(pattern, pos, text, lookbehind) {\n\t\tpattern.lastIndex = pos;\n\t\tvar match = pattern.exec(text);\n\t\tif (match && lookbehind && match[1]) {\n\t\t\t// change the match to remove the text matched by the Prism lookbehind group\n\t\t\tvar lookbehindLength = match[1].length;\n\t\t\tmatch.index += lookbehindLength;\n\t\t\tmatch[0] = match[0].slice(lookbehindLength);\n\t\t}\n\t\treturn match;\n\t}\n\n\t/**\n\t * @param {string} text\n\t * @param {LinkedList<string | Token>} tokenList\n\t * @param {any} grammar\n\t * @param {LinkedListNode<string | Token>} startNode\n\t * @param {number} startPos\n\t * @param {RematchOptions} [rematch]\n\t * @returns {void}\n\t * @private\n\t *\n\t * @typedef RematchOptions\n\t * @property {string} cause\n\t * @property {number} reach\n\t */\n\tfunction matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {\n\t\tfor (var token in grammar) {\n\t\t\tif (!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar patterns = grammar[token];\n\t\t\tpatterns = Array.isArray(patterns) ? patterns : [patterns];\n\n\t\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\t\tif (rematch && rematch.cause == token + ',' + j) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar patternObj = patterns[j];\n\t\t\t\tvar inside = patternObj.inside;\n\t\t\t\tvar lookbehind = !!patternObj.lookbehind;\n\t\t\t\tvar greedy = !!patternObj.greedy;\n\t\t\t\tvar alias = patternObj.alias;\n\n\t\t\t\tif (greedy && !patternObj.pattern.global) {\n\t\t\t\t\t// Without the global flag, lastIndex won't work\n\t\t\t\t\tvar flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];\n\t\t\t\t\tpatternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g');\n\t\t\t\t}\n\n\t\t\t\t/** @type {RegExp} */\n\t\t\t\tvar pattern = patternObj.pattern || patternObj;\n\n\t\t\t\tfor ( // iterate the token list and keep track of the current token/string position\n\t\t\t\t\tvar currentNode = startNode.next, pos = startPos;\n\t\t\t\t\tcurrentNode !== tokenList.tail;\n\t\t\t\t\tpos += currentNode.value.length, currentNode = currentNode.next\n\t\t\t\t) {\n\n\t\t\t\t\tif (rematch && pos >= rematch.reach) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar str = currentNode.value;\n\n\t\t\t\t\tif (tokenList.length > text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeCount = 1; // this is the to parameter of removeBetween\n\t\t\t\t\tvar match;\n\n\t\t\t\t\tif (greedy) {\n\t\t\t\t\t\tmatch = matchPattern(pattern, pos, text, lookbehind);\n\t\t\t\t\t\tif (!match || match.index >= text.length) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index;\n\t\t\t\t\t\tvar to = match.index + match[0].length;\n\t\t\t\t\t\tvar p = pos;\n\n\t\t\t\t\t\t// find the node that contains the match\n\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\twhile (from >= p) {\n\t\t\t\t\t\t\tcurrentNode = currentNode.next;\n\t\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// adjust pos (and p)\n\t\t\t\t\t\tp -= currentNode.value.length;\n\t\t\t\t\t\tpos = p;\n\n\t\t\t\t\t\t// the current node is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\tif (currentNode.value instanceof Token) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// find the last node which is affected by this match\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tvar k = currentNode;\n\t\t\t\t\t\t\tk !== tokenList.tail && (p < to || typeof k.value === 'string');\n\t\t\t\t\t\t\tk = k.next\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveCount++;\n\t\t\t\t\t\t\tp += k.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tremoveCount--;\n\n\t\t\t\t\t\t// replace with the new match\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmatch = matchPattern(pattern, 0, str, lookbehind);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line no-redeclare\n\t\t\t\t\tvar from = match.index;\n\t\t\t\t\tvar matchStr = match[0];\n\t\t\t\t\tvar before = str.slice(0, from);\n\t\t\t\t\tvar after = str.slice(from + matchStr.length);\n\n\t\t\t\t\tvar reach = pos + str.length;\n\t\t\t\t\tif (rematch && reach > rematch.reach) {\n\t\t\t\t\t\trematch.reach = reach;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeFrom = currentNode.prev;\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\tremoveFrom = addAfter(tokenList, removeFrom, before);\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tremoveRange(tokenList, removeFrom, removeCount);\n\n\t\t\t\t\tvar wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);\n\t\t\t\t\tcurrentNode = addAfter(tokenList, removeFrom, wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\taddAfter(tokenList, currentNode, after);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (removeCount > 1) {\n\t\t\t\t\t\t// at least one Token object was removed, so we have to do some rematching\n\t\t\t\t\t\t// this can only happen if the current pattern is greedy\n\n\t\t\t\t\t\t/** @type {RematchOptions} */\n\t\t\t\t\t\tvar nestedRematch = {\n\t\t\t\t\t\t\tcause: token + ',' + j,\n\t\t\t\t\t\t\treach: reach\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmatchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch);\n\n\t\t\t\t\t\t// the reach might have been extended because of the rematching\n\t\t\t\t\t\tif (rematch && nestedRematch.reach > rematch.reach) {\n\t\t\t\t\t\t\trematch.reach = nestedRematch.reach;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @typedef LinkedListNode\n\t * @property {T} value\n\t * @property {LinkedListNode<T> | null} prev The previous node.\n\t * @property {LinkedListNode<T> | null} next The next node.\n\t * @template T\n\t * @private\n\t */\n\n\t/**\n\t * @template T\n\t * @private\n\t */\n\tfunction LinkedList() {\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar head = { value: null, prev: null, next: null };\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar tail = { value: null, prev: head, next: null };\n\t\thead.next = tail;\n\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.head = head;\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.tail = tail;\n\t\tthis.length = 0;\n\t}\n\n\t/**\n\t * Adds a new node with the given value to the list.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {T} value\n\t * @returns {LinkedListNode<T>} The added node.\n\t * @template T\n\t */\n\tfunction addAfter(list, node, value) {\n\t\t// assumes that node != list.tail && values.length >= 0\n\t\tvar next = node.next;\n\n\t\tvar newNode = { value: value, prev: node, next: next };\n\t\tnode.next = newNode;\n\t\tnext.prev = newNode;\n\t\tlist.length++;\n\n\t\treturn newNode;\n\t}\n\t/**\n\t * Removes `count` nodes after the given node. The given node will not be removed.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {number} count\n\t * @template T\n\t */\n\tfunction removeRange(list, node, count) {\n\t\tvar next = node.next;\n\t\tfor (var i = 0; i < count && next !== list.tail; i++) {\n\t\t\tnext = next.next;\n\t\t}\n\t\tnode.next = next;\n\t\tnext.prev = node;\n\t\tlist.length -= i;\n\t}\n\t/**\n\t * @param {LinkedList<T>} list\n\t * @returns {T[]}\n\t * @template T\n\t */\n\tfunction toArray(list) {\n\t\tvar array = [];\n\t\tvar node = list.head.next;\n\t\twhile (node !== list.tail) {\n\t\t\tarray.push(node.value);\n\t\t\tnode = node.next;\n\t\t}\n\t\treturn array;\n\t}\n\n\n\tif (!_self.document) {\n\t\tif (!_self.addEventListener) {\n\t\t\t// in Node.js\n\t\t\treturn _;\n\t\t}\n\n\t\tif (!_.disableWorkerMessageHandler) {\n\t\t\t// In worker\n\t\t\t_self.addEventListener('message', function (evt) {\n\t\t\t\tvar message = JSON.parse(evt.data);\n\t\t\t\tvar lang = message.language;\n\t\t\t\tvar code = message.code;\n\t\t\t\tvar immediateClose = message.immediateClose;\n\n\t\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\t\tif (immediateClose) {\n\t\t\t\t\t_self.close();\n\t\t\t\t}\n\t\t\t}, false);\n\t\t}\n\n\t\treturn _;\n\t}\n\n\t// Get current script and highlight\n\tvar script = _.util.currentScript();\n\n\tif (script) {\n\t\t_.filename = script.src;\n\n\t\tif (script.hasAttribute('data-manual')) {\n\t\t\t_.manual = true;\n\t\t}\n\t}\n\n\tfunction highlightAutomaticallyCallback() {\n\t\tif (!_.manual) {\n\t\t\t_.highlightAll();\n\t\t}\n\t}\n\n\tif (!_.manual) {\n\t\t// If the document state is \"loading\", then we'll use DOMContentLoaded.\n\t\t// If the document state is \"interactive\" and the prism.js script is deferred, then we'll also use the\n\t\t// DOMContentLoaded event because there might be some plugins or languages which have also been deferred and they\n\t\t// might take longer one animation frame to execute which can create a race condition where only some plugins have\n\t\t// been loaded when Prism.highlightAll() is executed, depending on how fast resources are loaded.\n\t\t// See https://github.com/PrismJS/prism/issues/2102\n\t\tvar readyState = document.readyState;\n\t\tif (readyState === 'loading' || readyState === 'interactive' && script && script.defer) {\n\t\t\tdocument.addEventListener('DOMContentLoaded', highlightAutomaticallyCallback);\n\t\t} else {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(highlightAutomaticallyCallback);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(highlightAutomaticallyCallback, 16);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn _;\n\n}(_self));\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n// some additional documentation/types\n\n/**\n * The expansion of a simple `RegExp` literal to support additional properties.\n *\n * @typedef GrammarToken\n * @property {RegExp} pattern The regular expression of the token.\n * @property {boolean} [lookbehind=false] If `true`, then the first capturing group of `pattern` will (effectively)\n * behave as a lookbehind group meaning that the captured text will not be part of the matched text of the new token.\n * @property {boolean} [greedy=false] Whether the token is greedy.\n * @property {string|string[]} [alias] An optional alias or list of aliases.\n * @property {Grammar} [inside] The nested grammar of this token.\n *\n * The `inside` grammar will be used to tokenize the text value of each token of this kind.\n *\n * This can be used to make nested and even recursive language definitions.\n *\n * Note: This can cause infinite recursion. Be careful when you embed different languages or even the same language into\n * each another.\n * @global\n * @public\n */\n\n/**\n * @typedef Grammar\n * @type {Object<string, RegExp | GrammarToken | Array<RegExp | GrammarToken>>}\n * @property {Grammar} [rest] An optional grammar object that will be appended to this grammar.\n * @global\n * @public\n */\n\n/**\n * A function which will invoked after an element was successfully highlighted.\n *\n * @callback HighlightCallback\n * @param {Element} element The element successfully highlighted.\n * @returns {void}\n * @global\n * @public\n */\n\n/**\n * @callback HookCallback\n * @param {Object<string, any>} env The environment variables of the hook.\n * @returns {void}\n * @global\n * @public\n */\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': {\n\t\tpattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n\t\tgreedy: true\n\t},\n\t'prolog': {\n\t\tpattern: /<\\?[\\s\\S]+?\\?>/,\n\t\tgreedy: true\n\t},\n\t'doctype': {\n\t\t// https://www.w3.org/TR/xml/#NT-doctypedecl\n\t\tpattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'internal-subset': {\n\t\t\t\tpattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: null // see below\n\t\t\t},\n\t\t\t'string': {\n\t\t\t\tpattern: /\"[^\"]*\"|'[^']*'/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t'punctuation': /^<!|>$|[[\\]]/,\n\t\t\t'doctype-tag': /^DOCTYPE/i,\n\t\t\t'name': /[^\\s<>'\"]+/\n\t\t}\n\t},\n\t'cdata': {\n\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\tgreedy: true\n\t},\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'special-attr': [],\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^(\\s*)[\"']|[\"']$/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': [\n\t\t{\n\t\t\tpattern: /&[\\da-z]{1,8};/i,\n\t\t\talias: 'named-entity'\n\t\t},\n\t\t/&#x?[\\da-f]{1,8};/i\n\t]\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\nPrism.languages.markup['doctype'].inside['internal-subset'].inside = Prism.languages.markup;\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function (env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n\t/**\n\t * Adds an inlined language to markup.\n\t *\n\t * An example of an inlined language is CSS with `<style>` tags.\n\t *\n\t * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addInlined('style', 'css');\n\t */\n\tvalue: function addInlined(tagName, lang) {\n\t\tvar includedCdataInside = {};\n\t\tincludedCdataInside['language-' + lang] = {\n\t\t\tpattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\t\tincludedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n\n\t\tvar inside = {\n\t\t\t'included-cdata': {\n\t\t\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\t\t\tinside: includedCdataInside\n\t\t\t}\n\t\t};\n\t\tinside['language-' + lang] = {\n\t\t\tpattern: /[\\s\\S]+/,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\n\t\tvar def = {};\n\t\tdef[tagName] = {\n\t\t\tpattern: RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function () { return tagName; }), 'i'),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: inside\n\t\t};\n\n\t\tPrism.languages.insertBefore('markup', 'cdata', def);\n\t}\n});\nObject.defineProperty(Prism.languages.markup.tag, 'addAttribute', {\n\t/**\n\t * Adds an pattern to highlight languages embedded in HTML attributes.\n\t *\n\t * An example of an inlined language is CSS with `style` attributes.\n\t *\n\t * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addAttribute('style', 'css');\n\t */\n\tvalue: function (attrName, lang) {\n\t\tPrism.languages.markup.tag.inside['special-attr'].push({\n\t\t\tpattern: RegExp(\n\t\t\t\t/(^|[\"'\\s])/.source + '(?:' + attrName + ')' + /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source,\n\t\t\t\t'i'\n\t\t\t),\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'attr-name': /^[^\\s=]+/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /=[\\s\\S]+/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'value': {\n\t\t\t\t\t\t\tpattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n\t\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\t\talias: [lang, 'language-' + lang],\n\t\t\t\t\t\t\tinside: Prism.languages[lang]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t/\"|'/\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n});\n\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.ssml = Prism.languages.xml;\nPrism.languages.atom = Prism.languages.xml;\nPrism.languages.rss = Prism.languages.xml;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\n(function (Prism) {\n\n\tvar string = /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;\n\n\tPrism.languages.css = {\n\t\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t\t'atrule': {\n\t\t\tpattern: RegExp('@[\\\\w-](?:' + /[^;{\\s\"']|\\s+(?!\\s)/.source + '|' + string.source + ')*?' + /(?:;|(?=\\s*\\{))/.source),\n\t\t\tinside: {\n\t\t\t\t'rule': /^@[\\w-]+/,\n\t\t\t\t'selector-function-argument': {\n\t\t\t\t\tpattern: /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'selector'\n\t\t\t\t},\n\t\t\t\t'keyword': {\n\t\t\t\t\tpattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t}\n\t\t\t\t// See rest below\n\t\t\t}\n\t\t},\n\t\t'url': {\n\t\t\t// https://drafts.csswg.org/css-values-3/#urls\n\t\t\tpattern: RegExp('\\\\burl\\\\((?:' + string.source + '|' + /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source + ')\\\\)', 'i'),\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'function': /^url/i,\n\t\t\t\t'punctuation': /^\\(|\\)$/,\n\t\t\t\t'string': {\n\t\t\t\t\tpattern: RegExp('^' + string.source + '$'),\n\t\t\t\t\talias: 'url'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'selector': {\n\t\t\tpattern: RegExp('(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"\\'\\\\s]|\\\\s+(?![\\\\s{])|' + string.source + ')*(?=\\\\s*\\\\{)'),\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': {\n\t\t\tpattern: string,\n\t\t\tgreedy: true\n\t\t},\n\t\t'property': {\n\t\t\tpattern: /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'important': /!important\\b/i,\n\t\t'function': {\n\t\t\tpattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'punctuation': /[(){};:,]/\n\t};\n\n\tPrism.languages.css['atrule'].inside.rest = Prism.languages.css;\n\n\tvar markup = Prism.languages.markup;\n\tif (markup) {\n\t\tmarkup.tag.addInlined('style', 'css');\n\t\tmarkup.tag.addAttribute('style', 'css');\n\t}\n\n}(Prism));\n\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'punctuation': /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n\t'boolean': /\\b(?:false|true)\\b/,\n\t'function': /\\b\\w+(?=\\()/,\n\t'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n\t'operator': /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'class-name': [\n\t\tPrism.languages.clike['class-name'],\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'keyword': [\n\t\t{\n\t\t\tpattern: /((?:^|\\})\\s*)catch\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^.]|\\.\\.\\.\\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/,\n\t\t\tlookbehind: true\n\t\t},\n\t],\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n\t'number': {\n\t\tpattern: RegExp(\n\t\t\t/(^|[^\\w$])/.source +\n\t\t\t'(?:' +\n\t\t\t(\n\t\t\t\t// constant\n\t\t\t\t/NaN|Infinity/.source +\n\t\t\t\t'|' +\n\t\t\t\t// binary integer\n\t\t\t\t/0[bB][01]+(?:_[01]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// octal integer\n\t\t\t\t/0[oO][0-7]+(?:_[0-7]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// hexadecimal integer\n\t\t\t\t/0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal bigint\n\t\t\t\t/\\d+(?:_\\d+)*n/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal number (integer or float) but no bigint\n\t\t\t\t/(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source\n\t\t\t) +\n\t\t\t')' +\n\t\t\t/(?![\\w$])/.source\n\t\t),\n\t\tlookbehind: true\n\t},\n\t'operator': /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\n\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/;\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: RegExp(\n\t\t\t// lookbehind\n\t\t\t// eslint-disable-next-line regexp/no-dupe-characters-character-class\n\t\t\t/((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/.source +\n\t\t\t// Regex pattern:\n\t\t\t// There are 2 regex patterns here. The RegExp set notation proposal added support for nested character\n\t\t\t// classes if the `v` flag is present. Unfortunately, nested CCs are both context-free and incompatible\n\t\t\t// with the only syntax, so we have to define 2 different regex patterns.\n\t\t\t/\\//.source +\n\t\t\t'(?:' +\n\t\t\t/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}/.source +\n\t\t\t'|' +\n\t\t\t// `v` flag syntax. This supports 3 levels of nested character classes.\n\t\t\t/(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source +\n\t\t\t')' +\n\t\t\t// lookahead\n\t\t\t/(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/.source\n\t\t),\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'regex-source': {\n\t\t\t\tpattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'language-regex',\n\t\t\t\tinside: Prism.languages.regex\n\t\t\t},\n\t\t\t'regex-delimiter': /^\\/|\\/$/,\n\t\t\t'regex-flags': /^[a-z]+$/,\n\t\t}\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /#?(?!\\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*=>))/,\n\t\talias: 'function'\n\t},\n\t'parameter': [\n\t\t{\n\t\t\tpattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /((?:\\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*\\{)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t}\n\t],\n\t'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'hashbang': {\n\t\tpattern: /^#!.*/,\n\t\tgreedy: true,\n\t\talias: 'comment'\n\t},\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'template-punctuation': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'string'\n\t\t\t},\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t},\n\t'string-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\talias: 'property'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'operator', {\n\t'literal-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\talias: 'property'\n\t},\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.markup.tag.addInlined('script', 'javascript');\n\n\t// add attribute support for all DOM events.\n\t// https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n\tPrism.languages.markup.tag.addAttribute(\n\t\t/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,\n\t\t'javascript'\n\t);\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\t// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\n\tif (!Element.prototype.matches) {\n\t\tElement.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\t}\n\n\tvar LOADING_MESSAGE = 'Loading…';\n\tvar FAILURE_MESSAGE = function (status, message) {\n\t\treturn '✖ Error ' + status + ' while fetching file: ' + message;\n\t};\n\tvar FAILURE_EMPTY_MESSAGE = '✖ Error: File does not exist or is empty';\n\n\tvar EXTENSIONS = {\n\t\t'js': 'javascript',\n\t\t'py': 'python',\n\t\t'rb': 'ruby',\n\t\t'ps1': 'powershell',\n\t\t'psm1': 'powershell',\n\t\t'sh': 'bash',\n\t\t'bat': 'batch',\n\t\t'h': 'c',\n\t\t'tex': 'latex'\n\t};\n\n\tvar STATUS_ATTR = 'data-src-status';\n\tvar STATUS_LOADING = 'loading';\n\tvar STATUS_LOADED = 'loaded';\n\tvar STATUS_FAILED = 'failed';\n\n\tvar SELECTOR = 'pre[data-src]:not([' + STATUS_ATTR + '=\"' + STATUS_LOADED + '\"])'\n\t\t+ ':not([' + STATUS_ATTR + '=\"' + STATUS_LOADING + '\"])';\n\n\t/**\n\t * Loads the given file.\n\t *\n\t * @param {string} src The URL or path of the source file to load.\n\t * @param {(result: string) => void} success\n\t * @param {(reason: string) => void} error\n\t */\n\tfunction loadFile(src, success, error) {\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('GET', src, true);\n\t\txhr.onreadystatechange = function () {\n\t\t\tif (xhr.readyState == 4) {\n\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\tsuccess(xhr.responseText);\n\t\t\t\t} else {\n\t\t\t\t\tif (xhr.status >= 400) {\n\t\t\t\t\t\terror(FAILURE_MESSAGE(xhr.status, xhr.statusText));\n\t\t\t\t\t} else {\n\t\t\t\t\t\terror(FAILURE_EMPTY_MESSAGE);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\txhr.send(null);\n\t}\n\n\t/**\n\t * Parses the given range.\n\t *\n\t * This returns a range with inclusive ends.\n\t *\n\t * @param {string | null | undefined} range\n\t * @returns {[number, number | undefined] | undefined}\n\t */\n\tfunction parseRange(range) {\n\t\tvar m = /^\\s*(\\d+)\\s*(?:(,)\\s*(?:(\\d+)\\s*)?)?$/.exec(range || '');\n\t\tif (m) {\n\t\t\tvar start = Number(m[1]);\n\t\t\tvar comma = m[2];\n\t\t\tvar end = m[3];\n\n\t\t\tif (!comma) {\n\t\t\t\treturn [start, start];\n\t\t\t}\n\t\t\tif (!end) {\n\t\t\t\treturn [start, undefined];\n\t\t\t}\n\t\t\treturn [start, Number(end)];\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tPrism.hooks.add('before-highlightall', function (env) {\n\t\tenv.selector += ', ' + SELECTOR;\n\t});\n\n\tPrism.hooks.add('before-sanity-check', function (env) {\n\t\tvar pre = /** @type {HTMLPreElement} */ (env.element);\n\t\tif (pre.matches(SELECTOR)) {\n\t\t\tenv.code = ''; // fast-path the whole thing and go to complete\n\n\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADING); // mark as loading\n\n\t\t\t// add code element with loading message\n\t\t\tvar code = pre.appendChild(document.createElement('CODE'));\n\t\t\tcode.textContent = LOADING_MESSAGE;\n\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language = env.language;\n\t\t\tif (language === 'none') {\n\t\t\t\t// the language might be 'none' because there is no language set;\n\t\t\t\t// in this case, we want to use the extension as the language\n\t\t\t\tvar extension = (/\\.(\\w+)$/.exec(src) || [, 'none'])[1];\n\t\t\t\tlanguage = EXTENSIONS[extension] || extension;\n\t\t\t}\n\n\t\t\t// set language classes\n\t\t\tPrism.util.setLanguage(code, language);\n\t\t\tPrism.util.setLanguage(pre, language);\n\n\t\t\t// preload the language\n\t\t\tvar autoloader = Prism.plugins.autoloader;\n\t\t\tif (autoloader) {\n\t\t\t\tautoloader.loadLanguages(language);\n\t\t\t}\n\n\t\t\t// load file\n\t\t\tloadFile(\n\t\t\t\tsrc,\n\t\t\t\tfunction (text) {\n\t\t\t\t\t// mark as loaded\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADED);\n\n\t\t\t\t\t// handle data-range\n\t\t\t\t\tvar range = parseRange(pre.getAttribute('data-range'));\n\t\t\t\t\tif (range) {\n\t\t\t\t\t\tvar lines = text.split(/\\r\\n?|\\n/g);\n\n\t\t\t\t\t\t// the range is one-based and inclusive on both ends\n\t\t\t\t\t\tvar start = range[0];\n\t\t\t\t\t\tvar end = range[1] == null ? lines.length : range[1];\n\n\t\t\t\t\t\tif (start < 0) { start += lines.length; }\n\t\t\t\t\t\tstart = Math.max(0, Math.min(start - 1, lines.length));\n\t\t\t\t\t\tif (end < 0) { end += lines.length; }\n\t\t\t\t\t\tend = Math.max(0, Math.min(end, lines.length));\n\n\t\t\t\t\t\ttext = lines.slice(start, end).join('\\n');\n\n\t\t\t\t\t\t// add data-start for line numbers\n\t\t\t\t\t\tif (!pre.hasAttribute('data-start')) {\n\t\t\t\t\t\t\tpre.setAttribute('data-start', String(start + 1));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// highlight code\n\t\t\t\t\tcode.textContent = text;\n\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t},\n\t\t\t\tfunction (error) {\n\t\t\t\t\t// mark as failed\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_FAILED);\n\n\t\t\t\t\tcode.textContent = error;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\n\tPrism.plugins.fileHighlight = {\n\t\t/**\n\t\t * Executes the File Highlight plugin for all matching `pre` elements under the given container.\n\t\t *\n\t\t * Note: Elements which are already loaded or currently loading will not be touched by this method.\n\t\t *\n\t\t * @param {ParentNode} [container=document]\n\t\t */\n\t\thighlight: function highlight(container) {\n\t\t\tvar elements = (container || document).querySelectorAll(SELECTOR);\n\n\t\t\tfor (var i = 0, element; (element = elements[i++]);) {\n\t\t\t\tPrism.highlightElement(element);\n\t\t\t}\n\t\t}\n\t};\n\n\tvar logged = false;\n\t/** @deprecated Use `Prism.plugins.fileHighlight.highlight` instead. */\n\tPrism.fileHighlight = function () {\n\t\tif (!logged) {\n\t\t\tconsole.warn('Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead.');\n\t\t\tlogged = true;\n\t\t}\n\t\tPrism.plugins.fileHighlight.highlight.apply(this, arguments);\n\t};\n\n}());\n"],"names":["window","Prism","document","lang_dependencies","lang_aliases","lang_data","languages_path","script","util","currentScript","autoloaderFile","prismFile","autoloaderPath","getAttribute","trim","replace","src","test","config","plugins","autoloader","use_minified","loadLanguages","hooks","add","env","element","language","deps","parent","parentElement","tagName","toLowerCase","split","getDependencies","push","substr","length","every","isLoaded","highlightElement","lang","indexOf","languages","data","error","loading","success","total","completed","failed","successCallback","forEach","force","load","callbacks","languageCallback","s","createElement","async","onload","body","removeChild","onerror","appendChild","addScript","getLanguagePath","dependencies","loadLanguage","setTimeout","type","i","l","callback","Function","prototype","bind","cache","convertToW3CGradient","previewers","create","gradient","parts","match","prefix","func","values","angle","shift","parseFloat","Math","PI","join","convertToW3CLinearGradient","position","shape","size","shapeSizeParts","convertToW3CRadialGradient","Previewer","value","this","firstChild","style","backgroundImage","_elt","innerHTML","tokens","pattern","inside","before","root","sass","stylus","max","percentage","num","unit","querySelector","strokeDasharray","abs","markup","backgroundColor","css","concat","p","map","setAttribute","lines","querySelectorAll","animationDuration","TOKEN_CLASS","ACTIVE_CLASS","FLIPPED_CLASS","updater","supportedLanguages","initializer","_type","_token","_mouseout","mouseout","self","Array","isArray","byLanguages","byType","previewer","init","className","isDisabled","token","hasAttribute","parentNode","check","classList","contains","show","removeEventListener","hide","elementBounds","left","top","documentBounds","call","textContent","addEventListener","offset","getBoundingClientRect","documentElement","right","innerWidth","width","bottom","innerHeight","height","offsetHeight","remove","min","initEvents","elt","e","target","initialized","skip","insertBefore","grammar","toolbar","Languages","registerButton","pre","nodeName","id","substring","toUpperCase","console","warn","noop","key","opts","onClick","url","href","text","hook","wrapper","elementCallbacks","order","getOrder","item","template","content","_self","uniqueId","plainTextGrammar","_","manual","disableWorkerMessageHandler","encode","Token","alias","o","Object","toString","slice","objId","obj","defineProperty","clone","deepClone","visited","hasOwnProperty","v","getLanguage","m","exec","setLanguage","RegExp","Error","err","stack","scripts","getElementsByTagName","isActive","defaultActivation","no","plain","plaintext","txt","extend","redef","insert","ret","newToken","old","DFS","property","propertyType","highlightAll","highlightAllUnder","container","selector","run","elements","apply","code","insertHighlightedCode","highlightedCode","Worker","worker","filename","onmessage","evt","postMessage","JSON","stringify","immediateClose","highlight","tokenize","rest","tokenList","LinkedList","addAfter","head","matchGrammar","list","array","node","next","tail","toArray","all","name","matchedStr","matchPattern","pos","lookbehind","lastIndex","lookbehindLength","index","startNode","startPos","rematch","patterns","j","cause","patternObj","greedy","global","flags","source","currentNode","reach","str","removeCount","from","to","k","matchStr","after","removeFrom","prev","removeRange","nestedRematch","newNode","count","tag","classes","attributes","aliases","message","parse","close","highlightAutomaticallyCallback","readyState","defer","requestAnimationFrame","WorkerGlobalScope","module","exports","g","includedCdataInside","def","attrName","html","mathml","svg","xml","ssml","atom","rss","string","addInlined","addAttribute","clike","javascript","regex","js","Element","matches","msMatchesSelector","webkitMatchesSelector","EXTENSIONS","STATUS_ATTR","STATUS_LOADING","STATUS_LOADED","SELECTOR","extension","xhr","XMLHttpRequest","open","onreadystatechange","status","responseText","statusText","send","loadFile","range","start","Number","comma","end","undefined","parseRange","String","fileHighlight","logged","arguments"],"sourceRoot":""}
|