/* PrismJS 1.29.0 https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+arduino+bash+c+csharp+cpp+git+json+lua+markdown+markup-templating+php+python+ruby+yaml&plugins=line-highlight+line-numbers+command-line+normalize-whitespace */ var _self = 'undefined' != typeof window ? window : 'undefined' != typeof WorkerGlobalScope && self instanceof WorkerGlobalScope ? self : {}, Prism = (function (e) { var n = /(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i, t = 0, r = {}, a = { manual: e.Prism && e.Prism.manual, disableWorkerMessageHandler: e.Prism && e.Prism.disableWorkerMessageHandler, util: { encode: function e(n) { return n instanceof i ? new i(n.type, e(n.content), n.alias) : Array.isArray(n) ? n.map(e) : n .replace(/&/g, '&') .replace(/= g.reach); A += w.value.length, w = w.next ) { var E = w.value if (n.length > e.length) return if (!(E instanceof i)) { var P, L = 1 if (y) { if (!(P = l(b, A, e, m)) || P.index >= e.length) break var S = P.index, O = P.index + P[0].length, j = A for (j += w.value.length; S >= j; ) j += (w = w.next).value.length if (((A = j -= w.value.length), w.value instanceof i)) continue for ( var C = w; C !== n.tail && (j < O || 'string' == typeof C.value); C = C.next ) L++, (j += C.value.length) L--, (E = e.slice(A, j)), (P.index -= A) } else if (!(P = l(b, 0, E, m))) continue S = P.index var N = P[0], _ = E.slice(0, S), M = E.slice(S + N.length), W = A + E.length g && W > g.reach && (g.reach = W) var z = w.prev if ( (_ && ((z = u(n, z, _)), (A += _.length)), c(n, z, L), (w = u(n, z, new i(f, p ? a.tokenize(N, p) : N, k, N))), M && u(n, w, M), L > 1) ) { var I = { cause: f + ',' + d, reach: W } o(e, n, t, w.prev, A, I), g && I.reach > g.reach && (g.reach = I.reach) } } } } } } function s() { var e = { value: null, prev: null, next: null }, n = { value: null, prev: e, next: null } ;(e.next = n), (this.head = e), (this.tail = n), (this.length = 0) } function u(e, n, t) { var r = n.next, a = { value: t, prev: n, next: r } return (n.next = a), (r.prev = a), e.length++, a } function c(e, n, t) { for (var r = n.next, a = 0; a < t && r !== e.tail; a++) r = r.next ;(n.next = r), (r.prev = n), (e.length -= a) } if ( ((e.Prism = a), (i.stringify = function e(n, t) { if ('string' == typeof n) return n if (Array.isArray(n)) { var r = '' return ( n.forEach(function (n) { r += e(n, t) }), r ) } var i = { type: n.type, content: e(n.content, t), tag: 'span', classes: ['token', n.type], attributes: {}, language: t, }, l = n.alias l && (Array.isArray(l) ? Array.prototype.push.apply(i.classes, l) : i.classes.push(l)), a.hooks.run('wrap', i) var o = '' for (var s in i.attributes) o += ' ' + s + '="' + (i.attributes[s] || '').replace(/"/g, '"') + '"' return ( '<' + i.tag + ' class="' + i.classes.join(' ') + '"' + o + '>' + i.content + '' ) }), !e.document) ) return e.addEventListener ? (a.disableWorkerMessageHandler || e.addEventListener( 'message', function (n) { var t = JSON.parse(n.data), r = t.language, i = t.code, l = t.immediateClose e.postMessage(a.highlight(i, a.languages[r], r)), l && e.close() }, !1 ), a) : a var g = a.util.currentScript() function f() { a.manual || a.highlightAll() } if ( (g && ((a.filename = g.src), g.hasAttribute('data-manual') && (a.manual = !0)), !a.manual) ) { var h = document.readyState 'loading' === h || ('interactive' === h && g && g.defer) ? document.addEventListener('DOMContentLoaded', f) : window.requestAnimationFrame ? window.requestAnimationFrame(f) : window.setTimeout(f, 16) } return a })(_self) 'undefined' != typeof module && module.exports && (module.exports = Prism), 'undefined' != typeof global && (global.Prism = Prism) ;(Prism.languages.markup = { comment: { pattern: //, greedy: !0 }, prolog: { pattern: /<\?[\s\S]+?\?>/, greedy: !0 }, doctype: { pattern: /"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i, greedy: !0, inside: { 'internal-subset': { pattern: /(^[^\[]*\[)[\s\S]+(?=\]>$)/, lookbehind: !0, greedy: !0, inside: null, }, string: { pattern: /"[^"]*"|'[^']*'/, greedy: !0 }, punctuation: /^$|[[\]]/, 'doctype-tag': /^DOCTYPE/i, name: /[^\s<>'"]+/, }, }, cdata: { pattern: //i, greedy: !0 }, tag: { pattern: /<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/, greedy: !0, inside: { tag: { pattern: /^<\/?[^\s>\/]+/, inside: { punctuation: /^<\/?/, namespace: /^[^\s>\/:]+:/ }, }, 'special-attr': [], 'attr-value': { pattern: /=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/, inside: { punctuation: [ { pattern: /^=/, alias: 'attr-equals' }, { pattern: /^(\s*)["']|["']$/, lookbehind: !0 }, ], }, }, punctuation: /\/?>/, 'attr-name': { pattern: /[^\s>\/]+/, inside: { namespace: /^[^\s>\/:]+:/ }, }, }, }, entity: [ { pattern: /&[\da-z]{1,8};/i, alias: 'named-entity' }, /&#x?[\da-f]{1,8};/i, ], }), (Prism.languages.markup.tag.inside['attr-value'].inside.entity = Prism.languages.markup.entity), (Prism.languages.markup.doctype.inside['internal-subset'].inside = Prism.languages.markup), Prism.hooks.add('wrap', function (a) { 'entity' === a.type && (a.attributes.title = a.content.replace(/&/, '&')) }), Object.defineProperty(Prism.languages.markup.tag, 'addInlined', { value: function (a, e) { var s = {} ;(s['language-' + e] = { pattern: /(^$)/i, lookbehind: !0, inside: Prism.languages[e], }), (s.cdata = /^$/i) var t = { 'included-cdata': { pattern: //i, inside: s }, } t['language-' + e] = { pattern: /[\s\S]+/, inside: Prism.languages[e] } var n = {} ;(n[a] = { pattern: RegExp( '(<__[^>]*>)(?:))*\\]\\]>|(?!)'.replace( /__/g, function () { return a } ), 'i' ), lookbehind: !0, greedy: !0, inside: t, }), Prism.languages.insertBefore('markup', 'cdata', n) }, }), Object.defineProperty(Prism.languages.markup.tag, 'addAttribute', { value: function (a, e) { Prism.languages.markup.tag.inside['special-attr'].push({ pattern: RegExp( '(^|["\'\\s])(?:' + a + ')\\s*=\\s*(?:"[^"]*"|\'[^\']*\'|[^\\s\'">=]+(?=[\\s>]))', 'i' ), lookbehind: !0, inside: { 'attr-name': /^[^\s=]+/, 'attr-value': { pattern: /=[\s\S]+/, inside: { value: { pattern: /(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/, lookbehind: !0, alias: [e, 'language-' + e], inside: Prism.languages[e], }, punctuation: [{ pattern: /^=/, alias: 'attr-equals' }, /"|'/], }, }, }, }) }, }), (Prism.languages.html = Prism.languages.markup), (Prism.languages.mathml = Prism.languages.markup), (Prism.languages.svg = Prism.languages.markup), (Prism.languages.xml = Prism.languages.extend('markup', {})), (Prism.languages.ssml = Prism.languages.xml), (Prism.languages.atom = Prism.languages.xml), (Prism.languages.rss = Prism.languages.xml) !(function (s) { var e = /(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/ ;(s.languages.css = { comment: /\/\*[\s\S]*?\*\//, atrule: { pattern: RegExp( '@[\\w-](?:[^;{\\s"\']|\\s+(?!\\s)|' + e.source + ')*?(?:;|(?=\\s*\\{))' ), inside: { rule: /^@[\w-]+/, 'selector-function-argument': { pattern: /(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/, lookbehind: !0, alias: 'selector', }, keyword: { pattern: /(^|[^\w-])(?:and|not|only|or)(?![\w-])/, lookbehind: !0, }, }, }, url: { pattern: RegExp( '\\burl\\((?:' + e.source + '|(?:[^\\\\\r\n()"\']|\\\\[^])*)\\)', 'i' ), greedy: !0, inside: { function: /^url/i, punctuation: /^\(|\)$/, string: { pattern: RegExp('^' + e.source + '$'), alias: 'url' }, }, }, selector: { pattern: RegExp( '(^|[{}\\s])[^{}\\s](?:[^{};"\'\\s]|\\s+(?![\\s{])|' + e.source + ')*(?=\\s*\\{)' ), lookbehind: !0, }, string: { pattern: e, greedy: !0 }, property: { pattern: /(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i, lookbehind: !0, }, important: /!important\b/i, function: { pattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i, lookbehind: !0 }, punctuation: /[(){};:,]/, }), (s.languages.css.atrule.inside.rest = s.languages.css) var t = s.languages.markup t && (t.tag.addInlined('style', 'css'), t.tag.addAttribute('style', 'css')) })(Prism) Prism.languages.clike = { comment: [ { pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, lookbehind: !0, greedy: !0 }, { pattern: /(^|[^\\:])\/\/.*/, lookbehind: !0, greedy: !0 }, ], string: { pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, greedy: !0, }, 'class-name': { pattern: /(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i, lookbehind: !0, inside: { punctuation: /[.\\]/ }, }, keyword: /\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/, boolean: /\b(?:false|true)\b/, function: /\b\w+(?=\()/, number: /\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i, operator: /[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/, punctuation: /[{}[\];(),.:]/, } ;(Prism.languages.javascript = Prism.languages.extend('clike', { 'class-name': [ Prism.languages.clike['class-name'], { pattern: /(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/, lookbehind: !0, }, ], keyword: [ { pattern: /((?:^|\})\s*)catch\b/, lookbehind: !0 }, { pattern: /(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/, lookbehind: !0, }, ], function: /#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/, number: { pattern: RegExp( '(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])' ), lookbehind: !0, }, operator: /--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/, })), (Prism.languages.javascript['class-name'][0].pattern = /(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/), Prism.languages.insertBefore('javascript', 'keyword', { regex: { pattern: RegExp( '((?:^|[^$\\w\\xA0-\\uFFFF."\'\\])\\s]|\\b(?:return|yield))\\s*)/(?:(?:\\[(?:[^\\]\\\\\r\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}|(?:\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\s|/\\*(?:[^*]|\\*(?!/))*\\*/)*(?:$|[\r\n,.;:})\\]]|//))' ), lookbehind: !0, greedy: !0, inside: { 'regex-source': { pattern: /^(\/)[\s\S]+(?=\/[a-z]*$)/, lookbehind: !0, alias: 'language-regex', inside: Prism.languages.regex, }, 'regex-delimiter': /^\/|\/$/, 'regex-flags': /^[a-z]+$/, }, }, 'function-variable': { pattern: /#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/, alias: 'function', }, parameter: [ { pattern: /(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/, lookbehind: !0, inside: Prism.languages.javascript, }, { pattern: /(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i, lookbehind: !0, inside: Prism.languages.javascript, }, { pattern: /(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/, lookbehind: !0, inside: Prism.languages.javascript, }, { pattern: /((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/, lookbehind: !0, inside: Prism.languages.javascript, }, ], constant: /\b[A-Z](?:[A-Z_]|\dx?)*\b/, }), Prism.languages.insertBefore('javascript', 'string', { hashbang: { pattern: /^#!.*/, greedy: !0, alias: 'comment' }, 'template-string': { pattern: /`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/, greedy: !0, inside: { 'template-punctuation': { pattern: /^`|`$/, alias: 'string' }, interpolation: { pattern: /((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/, lookbehind: !0, inside: { 'interpolation-punctuation': { pattern: /^\$\{|\}$/, alias: 'punctuation', }, rest: Prism.languages.javascript, }, }, string: /[\s\S]+/, }, }, 'string-property': { pattern: /((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m, lookbehind: !0, greedy: !0, alias: 'property', }, }), Prism.languages.insertBefore('javascript', 'operator', { 'literal-property': { pattern: /((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m, lookbehind: !0, alias: 'property', }, }), Prism.languages.markup && (Prism.languages.markup.tag.addInlined('script', 'javascript'), Prism.languages.markup.tag.addAttribute( 'on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)', 'javascript' )), (Prism.languages.js = Prism.languages.javascript) ;(Prism.languages.c = Prism.languages.extend('clike', { comment: { pattern: /\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/, greedy: !0, }, string: { pattern: /"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/, greedy: !0 }, 'class-name': { pattern: /(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/, lookbehind: !0, }, keyword: /\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/, function: /\b[a-z_]\w*(?=\s*\()/i, number: /(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i, operator: />>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/, })), Prism.languages.insertBefore('c', 'string', { char: { pattern: /'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/, greedy: !0 }, }), Prism.languages.insertBefore('c', 'string', { macro: { pattern: /(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im, lookbehind: !0, greedy: !0, alias: 'property', inside: { string: [ { pattern: /^(#\s*include\s*)<[^>]+>/, lookbehind: !0 }, Prism.languages.c.string, ], char: Prism.languages.c.char, comment: Prism.languages.c.comment, 'macro-name': [ { pattern: /(^#\s*define\s+)\w+\b(?!\()/i, lookbehind: !0 }, { pattern: /(^#\s*define\s+)\w+\b(?=\()/i, lookbehind: !0, alias: 'function', }, ], directive: { pattern: /^(#\s*)[a-z]+/, lookbehind: !0, alias: 'keyword', }, 'directive-hash': /^#/, punctuation: /##|\\(?=[\r\n])/, expression: { pattern: /\S[\s\S]*/, inside: Prism.languages.c }, }, }, }), Prism.languages.insertBefore('c', 'function', { constant: /\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/, }), delete Prism.languages.c.boolean !(function (e) { var t = /\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/, n = '\\b(?!)\\w+(?:\\s*\\.\\s*\\w+)*\\b'.replace( //g, function () { return t.source } ) ;(e.languages.cpp = e.languages.extend('c', { 'class-name': [ { pattern: RegExp( '(\\b(?:class|concept|enum|struct|typename)\\s+)(?!)\\w+'.replace( //g, function () { return t.source } ) ), lookbehind: !0, }, /\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/, /\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i, /\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/, ], keyword: t, number: { pattern: /(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i, greedy: !0, }, operator: />>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/, boolean: /\b(?:false|true)\b/, })), e.languages.insertBefore('cpp', 'string', { module: { pattern: RegExp( '(\\b(?:import|module)\\s+)(?:"(?:\\\\(?:\r\n|[^])|[^"\\\\\r\n])*"|<[^<>\r\n]*>|' + '(?:\\s*:\\s*)?|:\\s*'.replace( //g, function () { return n } ) + ')' ), lookbehind: !0, greedy: !0, inside: { string: /^[<"][\s\S]+/, operator: /:/, punctuation: /\./ }, }, 'raw-string': { pattern: /R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/, alias: 'string', greedy: !0, }, }), e.languages.insertBefore('cpp', 'keyword', { 'generic-function': { pattern: /\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i, inside: { function: /^\w+/, generic: { pattern: /<[\s\S]+/, alias: 'class-name', inside: e.languages.cpp, }, }, }, }), e.languages.insertBefore('cpp', 'operator', { 'double-colon': { pattern: /::/, alias: 'punctuation' }, }), e.languages.insertBefore('cpp', 'class-name', { 'base-clause': { pattern: /(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/, lookbehind: !0, greedy: !0, inside: e.languages.extend('cpp', {}), }, }), e.languages.insertBefore( 'inside', 'double-colon', { 'class-name': /\b[a-z_]\w*\b(?!\s*::)/i }, e.languages.cpp['base-clause'] ) })(Prism) ;(Prism.languages.arduino = Prism.languages.extend('cpp', { keyword: /\b(?:String|array|bool|boolean|break|byte|case|catch|continue|default|do|double|else|finally|for|function|goto|if|in|instanceof|int|integer|long|loop|new|null|return|setup|string|switch|throw|try|void|while|word)\b/, constant: /\b(?:ANALOG_MESSAGE|DEFAULT|DIGITAL_MESSAGE|EXTERNAL|FIRMATA_STRING|HIGH|INPUT|INPUT_PULLUP|INTERNAL|INTERNAL1V1|INTERNAL2V56|LED_BUILTIN|LOW|OUTPUT|REPORT_ANALOG|REPORT_DIGITAL|SET_PIN_MODE|SYSEX_START|SYSTEM_RESET)\b/, builtin: /\b(?:Audio|BSSID|Bridge|Client|Console|EEPROM|Esplora|EsploraTFT|Ethernet|EthernetClient|EthernetServer|EthernetUDP|File|FileIO|FileSystem|Firmata|GPRS|GSM|GSMBand|GSMClient|GSMModem|GSMPIN|GSMScanner|GSMServer|GSMVoiceCall|GSM_SMS|HttpClient|IPAddress|IRread|Keyboard|KeyboardController|LiquidCrystal|LiquidCrystal_I2C|Mailbox|Mouse|MouseController|PImage|Process|RSSI|RobotControl|RobotMotor|SD|SPI|SSID|Scheduler|Serial|Server|Servo|SoftwareSerial|Stepper|Stream|TFT|Task|USBHost|WiFi|WiFiClient|WiFiServer|WiFiUDP|Wire|YunClient|YunServer|abs|addParameter|analogRead|analogReadResolution|analogReference|analogWrite|analogWriteResolution|answerCall|attach|attachGPRS|attachInterrupt|attached|autoscroll|available|background|beep|begin|beginPacket|beginSD|beginSMS|beginSpeaker|beginTFT|beginTransmission|beginWrite|bit|bitClear|bitRead|bitSet|bitWrite|blink|blinkVersion|buffer|changePIN|checkPIN|checkPUK|checkReg|circle|cityNameRead|cityNameWrite|clear|clearScreen|click|close|compassRead|config|connect|connected|constrain|cos|countryNameRead|countryNameWrite|createChar|cursor|debugPrint|delay|delayMicroseconds|detach|detachInterrupt|digitalRead|digitalWrite|disconnect|display|displayLogos|drawBMP|drawCompass|encryptionType|end|endPacket|endSMS|endTransmission|endWrite|exists|exitValue|fill|find|findUntil|flush|gatewayIP|get|getAsynchronously|getBand|getButton|getCurrentCarrier|getIMEI|getKey|getModifiers|getOemKey|getPINUsed|getResult|getSignalStrength|getSocket|getVoiceCallStatus|getXChange|getYChange|hangCall|height|highByte|home|image|interrupts|isActionDone|isDirectory|isListening|isPIN|isPressed|isValid|keyPressed|keyReleased|keyboardRead|knobRead|leftToRight|line|lineFollowConfig|listen|listenOnLocalhost|loadImage|localIP|lowByte|macAddress|maintain|map|max|messageAvailable|micros|millis|min|mkdir|motorsStop|motorsWrite|mouseDragged|mouseMoved|mousePressed|mouseReleased|move|noAutoscroll|noBlink|noBuffer|noCursor|noDisplay|noFill|noInterrupts|noListenOnLocalhost|noStroke|noTone|onReceive|onRequest|open|openNextFile|overflow|parseCommand|parseFloat|parseInt|parsePacket|pauseMode|peek|pinMode|playFile|playMelody|point|pointTo|position|pow|prepare|press|print|printFirmwareVersion|printVersion|println|process|processInput|pulseIn|put|random|randomSeed|read|readAccelerometer|readBlue|readButton|readBytes|readBytesUntil|readGreen|readJoystickButton|readJoystickSwitch|readJoystickX|readJoystickY|readLightSensor|readMessage|readMicrophone|readNetworks|readRed|readSlider|readString|readStringUntil|readTemperature|ready|rect|release|releaseAll|remoteIP|remoteNumber|remotePort|remove|requestFrom|retrieveCallingNumber|rewindDirectory|rightToLeft|rmdir|robotNameRead|robotNameWrite|run|runAsynchronously|runShellCommand|runShellCommandAsynchronously|running|scanNetworks|scrollDisplayLeft|scrollDisplayRight|seek|sendAnalog|sendDigitalPortPair|sendDigitalPorts|sendString|sendSysex|serialEvent|setBand|setBitOrder|setClockDivider|setCursor|setDNS|setDataMode|setFirmwareVersion|setMode|setPINUsed|setSpeed|setTextSize|setTimeout|shiftIn|shiftOut|shutdown|sin|size|sqrt|startLoop|step|stop|stroke|subnetMask|switchPIN|tan|tempoWrite|text|tone|transfer|tuneWrite|turn|updateIR|userNameRead|userNameWrite|voiceCall|waitContinue|width|write|writeBlue|writeGreen|writeJSON|writeMessage|writeMicroseconds|writeRGB|writeRed|yield)\b/, })), (Prism.languages.ino = Prism.languages.arduino) !(function (e) { var t = '\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b', a = { pattern: /(^(["']?)\w+\2)[ \t]+\S.*/, lookbehind: !0, alias: 'punctuation', inside: null, }, n = { bash: a, environment: { pattern: RegExp('\\$' + t), alias: 'constant' }, variable: [ { pattern: /\$?\(\([\s\S]+?\)\)/, greedy: !0, inside: { variable: [ { pattern: /(^\$\(\([\s\S]+)\)\)/, lookbehind: !0 }, /^\$\(\(/, ], number: /\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/, operator: /--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/, punctuation: /\(\(?|\)\)?|,|;/, }, }, { pattern: /\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/, greedy: !0, inside: { variable: /^\$\(|^`|\)$|`$/ }, }, { pattern: /\$\{[^}]+\}/, greedy: !0, inside: { operator: /:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/, punctuation: /[\[\]]/, environment: { pattern: RegExp('(\\{)' + t), lookbehind: !0, alias: 'constant', }, }, }, /\$(?:\w+|[#?*!@$])/, ], entity: /\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/, } ;(e.languages.bash = { shebang: { pattern: /^#!\s*\/.*/, alias: 'important' }, comment: { pattern: /(^|[^"{\\$])#.*/, lookbehind: !0 }, 'function-name': [ { pattern: /(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/, lookbehind: !0, alias: 'function', }, { pattern: /\b[\w-]+(?=\s*\(\s*\)\s*\{)/, alias: 'function' }, ], 'for-or-select': { pattern: /(\b(?:for|select)\s+)\w+(?=\s+in\s)/, alias: 'variable', lookbehind: !0, }, 'assign-left': { pattern: /(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/, inside: { environment: { pattern: RegExp('(^|[\\s;|&]|[<>]\\()' + t), lookbehind: !0, alias: 'constant', }, }, alias: 'variable', lookbehind: !0, }, parameter: { pattern: /(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/, alias: 'variable', lookbehind: !0, }, string: [ { pattern: /((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/, lookbehind: !0, greedy: !0, inside: n, }, { pattern: /((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/, lookbehind: !0, greedy: !0, inside: { bash: a }, }, { pattern: /(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/, lookbehind: !0, greedy: !0, inside: n, }, { pattern: /(^|[^$\\])'[^']*'/, lookbehind: !0, greedy: !0 }, { pattern: /\$'(?:[^'\\]|\\[\s\S])*'/, greedy: !0, inside: { entity: n.entity }, }, ], environment: { pattern: RegExp('\\$?' + t), alias: 'constant' }, variable: n.variable, function: { pattern: /(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/, lookbehind: !0, }, keyword: { pattern: /(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/, lookbehind: !0, }, builtin: { pattern: /(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/, lookbehind: !0, alias: 'class-name', }, boolean: { pattern: /(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/, lookbehind: !0, }, 'file-descriptor': { pattern: /\B&\d\b/, alias: 'important' }, operator: { pattern: /\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/, inside: { 'file-descriptor': { pattern: /^\d/, alias: 'important' } }, }, punctuation: /\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/, number: { pattern: /(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/, lookbehind: !0 }, }), (a.inside = e.languages.bash) for ( var s = [ 'comment', 'function-name', 'for-or-select', 'assign-left', 'parameter', 'string', 'environment', 'function', 'keyword', 'builtin', 'boolean', 'file-descriptor', 'operator', 'punctuation', 'number', ], o = n.variable[1].inside, i = 0; i < s.length; i++ ) o[s[i]] = e.languages.bash[s[i]] ;(e.languages.sh = e.languages.bash), (e.languages.shell = e.languages.bash) })(Prism) !(function (e) { function n(e, n) { return e.replace(/<<(\d+)>>/g, function (e, s) { return '(?:' + n[+s] + ')' }) } function s(e, s, a) { return RegExp(n(e, s), a || '') } function a(e, n) { for (var s = 0; s < n; s++) e = e.replace(/<>/g, function () { return '(?:' + e + ')' }) return e.replace(/<>/g, '[^\\s\\S]') } var t = 'bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void', r = 'class enum interface record struct', i = 'add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)', o = 'abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield' function l(e) { return '\\b(?:' + e.trim().replace(/ /g, '|') + ')\\b' } var d = l(r), p = RegExp(l(t + ' ' + r + ' ' + i + ' ' + o)), c = l(r + ' ' + i + ' ' + o), u = l(t + ' ' + r + ' ' + o), g = a('<(?:[^<>;=+\\-*/%&|^]|<>)*>', 2), b = a('\\((?:[^()]|<>)*\\)', 2), h = '@?\\b[A-Za-z_]\\w*\\b', f = n('<<0>>(?:\\s*<<1>>)?', [h, g]), m = n('(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*', [c, f]), k = '\\[\\s*(?:,\\s*)*\\]', y = n('<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?', [m, k]), w = n('[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>', [g, b, k]), v = n('\\(<<0>>+(?:,<<0>>+)+\\)', [w]), x = n('(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?', [v, m, k]), $ = { keyword: p, punctuation: /[<>()?,.:[\]]/ }, _ = "'(?:[^\r\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'", B = '"(?:\\\\.|[^\\\\"\r\n])*"' ;(e.languages.csharp = e.languages.extend('clike', { string: [ { pattern: s('(^|[^$\\\\])<<0>>', ['@"(?:""|\\\\[^]|[^\\\\"])*"(?!")']), lookbehind: !0, greedy: !0, }, { pattern: s('(^|[^@$\\\\])<<0>>', [B]), lookbehind: !0, greedy: !0 }, ], 'class-name': [ { pattern: s('(\\busing\\s+static\\s+)<<0>>(?=\\s*;)', [m]), lookbehind: !0, inside: $, }, { pattern: s('(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)', [h, x]), lookbehind: !0, inside: $, }, { pattern: s('(\\busing\\s+)<<0>>(?=\\s*=)', [h]), lookbehind: !0 }, { pattern: s('(\\b<<0>>\\s+)<<1>>', [d, f]), lookbehind: !0, inside: $ }, { pattern: s('(\\bcatch\\s*\\(\\s*)<<0>>', [m]), lookbehind: !0, inside: $, }, { pattern: s('(\\bwhere\\s+)<<0>>', [h]), lookbehind: !0 }, { pattern: s('(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>', [y]), lookbehind: !0, inside: $, }, { pattern: s( '\\b<<0>>(?=\\s+(?!<<1>>|with\\s*\\{)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))', [x, u, h] ), inside: $, }, ], keyword: p, number: /(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:[dflmu]|lu|ul)?\b/i, operator: />>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/, punctuation: /\?\.?|::|[{}[\];(),.:]/, })), e.languages.insertBefore('csharp', 'number', { range: { pattern: /\.\./, alias: 'operator' }, }), e.languages.insertBefore('csharp', 'punctuation', { 'named-parameter': { pattern: s('([(,]\\s*)<<0>>(?=\\s*:)', [h]), lookbehind: !0, alias: 'punctuation', }, }), e.languages.insertBefore('csharp', 'class-name', { namespace: { pattern: s( '(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])', [h] ), lookbehind: !0, inside: { punctuation: /\./ }, }, 'type-expression': { pattern: s( '(\\b(?:default|sizeof|typeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))', [b] ), lookbehind: !0, alias: 'class-name', inside: $, }, 'return-type': { pattern: s( '<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))', [x, m] ), inside: $, alias: 'class-name', }, 'constructor-invocation': { pattern: s('(\\bnew\\s+)<<0>>(?=\\s*[[({])', [x]), lookbehind: !0, inside: $, alias: 'class-name', }, 'generic-method': { pattern: s('<<0>>\\s*<<1>>(?=\\s*\\()', [h, g]), inside: { function: s('^<<0>>', [h]), generic: { pattern: RegExp(g), alias: 'class-name', inside: $ }, }, }, 'type-list': { pattern: s( '\\b((?:<<0>>\\s+<<1>>|record\\s+<<1>>\\s*<<5>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>|<<1>>\\s*<<5>>|<<6>>)(?:\\s*,\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\s*(?:where|[{;]|=>|$))', [d, f, h, x, p.source, b, '\\bnew\\s*\\(\\s*\\)'] ), lookbehind: !0, inside: { 'record-arguments': { pattern: s('(^(?!new\\s*\\()<<0>>\\s*)<<1>>', [f, b]), lookbehind: !0, greedy: !0, inside: e.languages.csharp, }, keyword: p, 'class-name': { pattern: RegExp(x), greedy: !0, inside: $ }, punctuation: /[,()]/, }, }, preprocessor: { pattern: /(^[\t ]*)#.*/m, lookbehind: !0, alias: 'property', inside: { directive: { pattern: /(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/, lookbehind: !0, alias: 'keyword', }, }, }, }) var E = B + '|' + _, R = n('/(?![*/])|//[^\r\n]*[\r\n]|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>', [E]), z = a(n('[^"\'/()]|<<0>>|\\(<>*\\)', [R]), 2), S = '\\b(?:assembly|event|field|method|module|param|property|return|type)\\b', j = n('<<0>>(?:\\s*\\(<<1>>*\\))?', [m, z]) e.languages.insertBefore('csharp', 'class-name', { attribute: { pattern: s( '((?:^|[^\\s\\w>)?])\\s*\\[\\s*)(?:<<0>>\\s*:\\s*)?<<1>>(?:\\s*,\\s*<<1>>)*(?=\\s*\\])', [S, j] ), lookbehind: !0, greedy: !0, inside: { target: { pattern: s('^<<0>>(?=\\s*:)', [S]), alias: 'keyword' }, 'attribute-arguments': { pattern: s('\\(<<0>>*\\)', [z]), inside: e.languages.csharp, }, 'class-name': { pattern: RegExp(m), inside: { punctuation: /\./ } }, punctuation: /[:,]/, }, }, }) var A = ':[^}\r\n]+', F = a(n('[^"\'/()]|<<0>>|\\(<>*\\)', [R]), 2), P = n('\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}', [F, A]), U = a( n('[^"\'/()]|/(?!\\*)|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>|\\(<>*\\)', [ E, ]), 2 ), Z = n('\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}', [U, A]) function q(n, a) { return { interpolation: { pattern: s('((?:^|[^{])(?:\\{\\{)*)<<0>>', [n]), lookbehind: !0, inside: { 'format-string': { pattern: s('(^\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\}$)', [a, A]), lookbehind: !0, inside: { punctuation: /^:/ }, }, punctuation: /^\{|\}$/, expression: { pattern: /[\s\S]+/, alias: 'language-csharp', inside: e.languages.csharp, }, }, }, string: /[\s\S]+/, } } e.languages.insertBefore('csharp', 'string', { 'interpolation-string': [ { pattern: s( '(^|[^\\\\])(?:\\$@|@\\$)"(?:""|\\\\[^]|\\{\\{|<<0>>|[^\\\\{"])*"', [P] ), lookbehind: !0, greedy: !0, inside: q(P, F), }, { pattern: s('(^|[^@\\\\])\\$"(?:\\\\.|\\{\\{|<<0>>|[^\\\\"{])*"', [Z]), lookbehind: !0, greedy: !0, inside: q(Z, U), }, ], char: { pattern: RegExp(_), greedy: !0 }, }), (e.languages.dotnet = e.languages.cs = e.languages.csharp) })(Prism) Prism.languages.git = { comment: /^#.*/m, deleted: /^[-–].*/m, inserted: /^\+.*/m, string: /("|')(?:\\.|(?!\1)[^\\\r\n])*\1/, command: { pattern: /^.*\$ git .*$/m, inside: { parameter: /\s--?\w+/ } }, coord: /^@@.*@@$/m, 'commit-sha1': /^commit \w{40}$/m, } ;(Prism.languages.json = { property: { pattern: /(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/, lookbehind: !0, greedy: !0, }, string: { pattern: /(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/, lookbehind: !0, greedy: !0, }, comment: { pattern: /\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/, greedy: !0 }, number: /-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i, punctuation: /[{}[\],]/, operator: /:/, boolean: /\b(?:false|true)\b/, null: { pattern: /\bnull\b/, alias: 'keyword' }, }), (Prism.languages.webmanifest = Prism.languages.json) Prism.languages.lua = { comment: /^#!.+|--(?:\[(=*)\[[\s\S]*?\]\1\]|.*)/m, string: { pattern: /(["'])(?:(?!\1)[^\\\r\n]|\\z(?:\r\n|\s)|\\(?:\r\n|[^z]))*\1|\[(=*)\[[\s\S]*?\]\2\]/, greedy: !0, }, number: /\b0x[a-f\d]+(?:\.[a-f\d]*)?(?:p[+-]?\d+)?\b|\b\d+(?:\.\B|(?:\.\d*)?(?:e[+-]?\d+)?\b)|\B\.\d+(?:e[+-]?\d+)?\b/i, keyword: /\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/, function: /(?!\d)\w+(?=\s*(?:[({]))/, operator: [ /[-+*%^&|#]|\/\/?|<[<=]?|>[>=]?|[=~]=?/, { pattern: /(^|[^.])\.\.(?!\.)/, lookbehind: !0 }, ], punctuation: /[\[\](){},;]|\.+|:+/, } !(function (n) { function e(n) { return ( (n = n.replace(//g, function () { return '(?:\\\\.|[^\\\\\n\r]|(?:\n|\r\n?)(?![\r\n]))' })), RegExp('((?:^|[^\\\\])(?:\\\\{2})*)(?:' + n + ')') ) } var t = '(?:\\\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\\\|\r\n`])+', a = '\\|?__(?:\\|__)+\\|?(?:(?:\n|\r\n?)|(?![^]))'.replace( /__/g, function () { return t } ), i = '\\|?[ \t]*:?-{3,}:?[ \t]*(?:\\|[ \t]*:?-{3,}:?[ \t]*)+\\|?(?:\n|\r\n?)' ;(n.languages.markdown = n.languages.extend('markup', {})), n.languages.insertBefore('markdown', 'prolog', { 'front-matter-block': { pattern: /(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/, lookbehind: !0, greedy: !0, inside: { punctuation: /^---|---$/, 'front-matter': { pattern: /\S+(?:\s+\S+)*/, alias: ['yaml', 'language-yaml'], inside: n.languages.yaml, }, }, }, blockquote: { pattern: /^>(?:[\t ]*>)*/m, alias: 'punctuation' }, table: { pattern: RegExp('^' + a + i + '(?:' + a + ')*', 'm'), inside: { 'table-data-rows': { pattern: RegExp('^(' + a + i + ')(?:' + a + ')*$'), lookbehind: !0, inside: { 'table-data': { pattern: RegExp(t), inside: n.languages.markdown, }, punctuation: /\|/, }, }, 'table-line': { pattern: RegExp('^(' + a + ')' + i + '$'), lookbehind: !0, inside: { punctuation: /\||:?-{3,}:?/ }, }, 'table-header-row': { pattern: RegExp('^' + a + '$'), inside: { 'table-header': { pattern: RegExp(t), alias: 'important', inside: n.languages.markdown, }, punctuation: /\|/, }, }, }, }, code: [ { pattern: /((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/, lookbehind: !0, alias: 'keyword', }, { pattern: /^```[\s\S]*?^```$/m, greedy: !0, inside: { 'code-block': { pattern: /^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m, lookbehind: !0, }, 'code-language': { pattern: /^(```).+/, lookbehind: !0 }, punctuation: /```/, }, }, ], title: [ { pattern: /\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m, alias: 'important', inside: { punctuation: /==+$|--+$/ }, }, { pattern: /(^\s*)#.+/m, lookbehind: !0, alias: 'important', inside: { punctuation: /^#+|#+$/ }, }, ], hr: { pattern: /(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m, lookbehind: !0, alias: 'punctuation', }, list: { pattern: /(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m, lookbehind: !0, alias: 'punctuation', }, 'url-reference': { pattern: /!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/, inside: { variable: { pattern: /^(!?\[)[^\]]+/, lookbehind: !0 }, string: /(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/, punctuation: /^[\[\]!:]|[<>]/, }, alias: 'url', }, bold: { pattern: e( '\\b__(?:(?!_)|_(?:(?!_))+_)+__\\b|\\*\\*(?:(?!\\*)|\\*(?:(?!\\*))+\\*)+\\*\\*' ), lookbehind: !0, greedy: !0, inside: { content: { pattern: /(^..)[\s\S]+(?=..$)/, lookbehind: !0, inside: {}, }, punctuation: /\*\*|__/, }, }, italic: { pattern: e( '\\b_(?:(?!_)|__(?:(?!_))+__)+_\\b|\\*(?:(?!\\*)|\\*\\*(?:(?!\\*))+\\*\\*)+\\*' ), lookbehind: !0, greedy: !0, inside: { content: { pattern: /(^.)[\s\S]+(?=.$)/, lookbehind: !0, inside: {} }, punctuation: /[*_]/, }, }, strike: { pattern: e('(~~?)(?:(?!~))+\\2'), lookbehind: !0, greedy: !0, inside: { content: { pattern: /(^~~?)[\s\S]+(?=\1$)/, lookbehind: !0, inside: {}, }, punctuation: /~~?/, }, }, 'code-snippet': { pattern: /(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/, lookbehind: !0, greedy: !0, alias: ['code', 'keyword'], }, url: { pattern: e( '!?\\[(?:(?!\\]))+\\](?:\\([^\\s)]+(?:[\t ]+"(?:\\\\.|[^"\\\\])*")?\\)|[ \t]?\\[(?:(?!\\]))+\\])' ), lookbehind: !0, greedy: !0, inside: { operator: /^!/, content: { pattern: /(^\[)[^\]]+(?=\])/, lookbehind: !0, inside: {} }, variable: { pattern: /(^\][ \t]?\[)[^\]]+(?=\]$)/, lookbehind: !0 }, url: { pattern: /(^\]\()[^\s)]+/, lookbehind: !0 }, string: { pattern: /(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/, lookbehind: !0, }, }, }, }), ['url', 'bold', 'italic', 'strike'].forEach(function (e) { ;['url', 'bold', 'italic', 'strike', 'code-snippet'].forEach( function (t) { e !== t && (n.languages.markdown[e].inside.content.inside[t] = n.languages.markdown[t]) } ) }), n.hooks.add('after-tokenize', function (n) { ;('markdown' !== n.language && 'md' !== n.language) || (function n(e) { if (e && 'string' != typeof e) for (var t = 0, a = e.length; t < a; t++) { var i = e[t] if ('code' === i.type) { var r = i.content[1], o = i.content[3] if ( r && o && 'code-language' === r.type && 'code-block' === o.type && 'string' == typeof r.content ) { var l = r.content .replace(/\b#/g, 'sharp') .replace(/\b\+\+/g, 'pp'), s = 'language-' + (l = (/[a-z][\w-]*/i.exec(l) || [''])[0].toLowerCase()) o.alias ? 'string' == typeof o.alias ? (o.alias = [o.alias, s]) : o.alias.push(s) : (o.alias = [s]) } } else n(i.content) } })(n.tokens) }), n.hooks.add('wrap', function (e) { if ('code-block' === e.type) { for (var t = '', a = 0, i = e.classes.length; a < i; a++) { var s = e.classes[a], d = /language-(.+)/.exec(s) if (d) { t = d[1] break } } var p = n.languages[t] if (p) e.content = n.highlight( e.content .replace(r, '') .replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi, function (n, e) { var t return '#' === (e = e.toLowerCase())[0] ? ((t = 'x' === e[1] ? parseInt(e.slice(2), 16) : Number(e.slice(1))), l(t)) : o[e] || n }), p, t ) else if (t && 'none' !== t && n.plugins.autoloader) { var u = 'md-' + new Date().valueOf() + '-' + Math.floor(1e16 * Math.random()) ;(e.attributes.id = u), n.plugins.autoloader.loadLanguages(t, function () { var e = document.getElementById(u) e && (e.innerHTML = n.highlight(e.textContent, n.languages[t], t)) }) } } }) var r = RegExp(n.languages.markup.tag.pattern.source, 'gi'), o = { amp: '&', lt: '<', gt: '>', quot: '"' }, l = String.fromCodePoint || String.fromCharCode n.languages.md = n.languages.markdown })(Prism) !(function (e) { function n(e, n) { return '___' + e.toUpperCase() + n + '___' } Object.defineProperties((e.languages['markup-templating'] = {}), { buildPlaceholders: { value: function (t, a, r, o) { if (t.language === a) { var c = (t.tokenStack = []) ;(t.code = t.code.replace(r, function (e) { if ('function' == typeof o && !o(e)) return e for (var r, i = c.length; -1 !== t.code.indexOf((r = n(a, i))); ) ++i return (c[i] = e), r })), (t.grammar = e.languages.markup) } }, }, tokenizePlaceholders: { value: function (t, a) { if (t.language === a && t.tokenStack) { t.grammar = e.languages[a] var r = 0, o = Object.keys(t.tokenStack) !(function c(i) { for (var u = 0; u < i.length && !(r >= o.length); u++) { var g = i[u] if ( 'string' == typeof g || (g.content && 'string' == typeof g.content) ) { var l = o[r], s = t.tokenStack[l], f = 'string' == typeof g ? g : g.content, p = n(a, l), k = f.indexOf(p) if (k > -1) { ++r var m = f.substring(0, k), d = new e.Token( a, e.tokenize(s, t.grammar), 'language-' + a, s ), h = f.substring(k + p.length), v = [] m && v.push.apply(v, c([m])), v.push(d), h && v.push.apply(v, c([h])), 'string' == typeof g ? i.splice.apply(i, [u, 1].concat(v)) : (g.content = v) } } else g.content && c(g.content) } return i })(t.tokens) } }, }, }) })(Prism) !(function (e) { var a = /\/\*[\s\S]*?\*\/|\/\/.*|#(?!\[).*/, t = [ { pattern: /\b(?:false|true)\b/i, alias: 'boolean' }, { pattern: /(::\s*)\b[a-z_]\w*\b(?!\s*\()/i, greedy: !0, lookbehind: !0 }, { pattern: /(\b(?:case|const)\s+)\b[a-z_]\w*(?=\s*[;=])/i, greedy: !0, lookbehind: !0, }, /\b(?:null)\b/i, /\b[A-Z_][A-Z0-9_]*\b(?!\s*\()/, ], i = /\b0b[01]+(?:_[01]+)*\b|\b0o[0-7]+(?:_[0-7]+)*\b|\b0x[\da-f]+(?:_[\da-f]+)*\b|(?:\b\d+(?:_\d+)*\.?(?:\d+(?:_\d+)*)?|\B\.\d+)(?:e[+-]?\d+)?/i, n = /|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/, s = /[{}\[\](),:;]/ e.languages.php = { delimiter: { pattern: /\?>$|^<\?(?:php(?=\s)|=)?/i, alias: 'important' }, comment: a, variable: /\$+(?:\w+\b|(?=\{))/, package: { pattern: /(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i, lookbehind: !0, inside: { punctuation: /\\/ }, }, 'class-name-definition': { pattern: /(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i, lookbehind: !0, alias: 'class-name', }, 'function-definition': { pattern: /(\bfunction\s+)[a-z_]\w*(?=\s*\()/i, lookbehind: !0, alias: 'function', }, keyword: [ { pattern: /(\(\s*)\b(?:array|bool|boolean|float|int|integer|object|string)\b(?=\s*\))/i, alias: 'type-casting', greedy: !0, lookbehind: !0, }, { pattern: /([(,?]\s*)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string)\b(?=\s*\$)/i, alias: 'type-hint', greedy: !0, lookbehind: !0, }, { pattern: /(\)\s*:\s*(?:\?\s*)?)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|never|object|self|static|string|void)\b/i, alias: 'return-type', greedy: !0, lookbehind: !0, }, { pattern: /\b(?:array(?!\s*\()|bool|float|int|iterable|mixed|object|string|void)\b/i, alias: 'type-declaration', greedy: !0, }, { pattern: /(\|\s*)(?:false|null)\b|\b(?:false|null)(?=\s*\|)/i, alias: 'type-declaration', greedy: !0, lookbehind: !0, }, { pattern: /\b(?:parent|self|static)(?=\s*::)/i, alias: 'static-context', greedy: !0, }, { pattern: /(\byield\s+)from\b/i, lookbehind: !0 }, /\bclass\b/i, { pattern: /((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|never|new|or|parent|print|private|protected|public|readonly|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\b/i, lookbehind: !0, }, ], 'argument-name': { pattern: /([(,]\s*)\b[a-z_]\w*(?=\s*:(?!:))/i, lookbehind: !0, }, 'class-name': [ { pattern: /(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i, greedy: !0, lookbehind: !0, }, { pattern: /(\|\s*)\b[a-z_]\w*(?!\\)\b/i, greedy: !0, lookbehind: !0 }, { pattern: /\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i, greedy: !0 }, { pattern: /(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i, alias: 'class-name-fully-qualified', greedy: !0, lookbehind: !0, inside: { punctuation: /\\/ }, }, { pattern: /(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i, alias: 'class-name-fully-qualified', greedy: !0, inside: { punctuation: /\\/ }, }, { pattern: /(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i, alias: 'class-name-fully-qualified', greedy: !0, lookbehind: !0, inside: { punctuation: /\\/ }, }, { pattern: /\b[a-z_]\w*(?=\s*\$)/i, alias: 'type-declaration', greedy: !0, }, { pattern: /(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i, alias: ['class-name-fully-qualified', 'type-declaration'], greedy: !0, inside: { punctuation: /\\/ }, }, { pattern: /\b[a-z_]\w*(?=\s*::)/i, alias: 'static-context', greedy: !0 }, { pattern: /(?:\\?\b[a-z_]\w*)+(?=\s*::)/i, alias: ['class-name-fully-qualified', 'static-context'], greedy: !0, inside: { punctuation: /\\/ }, }, { pattern: /([(,?]\s*)[a-z_]\w*(?=\s*\$)/i, alias: 'type-hint', greedy: !0, lookbehind: !0, }, { pattern: /([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i, alias: ['class-name-fully-qualified', 'type-hint'], greedy: !0, lookbehind: !0, inside: { punctuation: /\\/ }, }, { pattern: /(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i, alias: 'return-type', greedy: !0, lookbehind: !0, }, { pattern: /(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i, alias: ['class-name-fully-qualified', 'return-type'], greedy: !0, lookbehind: !0, inside: { punctuation: /\\/ }, }, ], constant: t, function: { pattern: /(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i, lookbehind: !0, inside: { punctuation: /\\/ }, }, property: { pattern: /(->\s*)\w+/, lookbehind: !0 }, number: i, operator: n, punctuation: s, } var l = { pattern: /\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/, lookbehind: !0, inside: e.languages.php, }, r = [ { pattern: /<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/, alias: 'nowdoc-string', greedy: !0, inside: { delimiter: { pattern: /^<<<'[^']+'|[a-z_]\w*;$/i, alias: 'symbol', inside: { punctuation: /^<<<'?|[';]$/ }, }, }, }, { pattern: /<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i, alias: 'heredoc-string', greedy: !0, inside: { delimiter: { pattern: /^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i, alias: 'symbol', inside: { punctuation: /^<<<"?|[";]$/ }, }, interpolation: l, }, }, { pattern: /`(?:\\[\s\S]|[^\\`])*`/, alias: 'backtick-quoted-string', greedy: !0, }, { pattern: /'(?:\\[\s\S]|[^\\'])*'/, alias: 'single-quoted-string', greedy: !0, }, { pattern: /"(?:\\[\s\S]|[^\\"])*"/, alias: 'double-quoted-string', greedy: !0, inside: { interpolation: l }, }, ] e.languages.insertBefore('php', 'variable', { string: r, attribute: { pattern: /#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im, greedy: !0, inside: { 'attribute-content': { pattern: /^(#\[)[\s\S]+(?=\]$)/, lookbehind: !0, inside: { comment: a, string: r, 'attribute-class-name': [ { pattern: /([^:]|^)\b[a-z_]\w*(?!\\)\b/i, alias: 'class-name', greedy: !0, lookbehind: !0, }, { pattern: /([^:]|^)(?:\\?\b[a-z_]\w*)+/i, alias: ['class-name', 'class-name-fully-qualified'], greedy: !0, lookbehind: !0, inside: { punctuation: /\\/ }, }, ], constant: t, number: i, operator: n, punctuation: s, }, }, delimiter: { pattern: /^#\[|\]$/, alias: 'punctuation' }, }, }, }), e.hooks.add('before-tokenize', function (a) { ;/<\?/.test(a.code) && e.languages['markup-templating'].buildPlaceholders( a, 'php', /<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/g ) }), e.hooks.add('after-tokenize', function (a) { e.languages['markup-templating'].tokenizePlaceholders(a, 'php') }) })(Prism) ;(Prism.languages.python = { comment: { pattern: /(^|[^\\])#.*/, lookbehind: !0, greedy: !0 }, 'string-interpolation': { pattern: /(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i, greedy: !0, inside: { interpolation: { pattern: /((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/, lookbehind: !0, inside: { 'format-spec': { pattern: /(:)[^:(){}]+(?=\}$)/, lookbehind: !0 }, 'conversion-option': { pattern: /![sra](?=[:}]$)/, alias: 'punctuation', }, rest: null, }, }, string: /[\s\S]+/, }, }, 'triple-quoted-string': { pattern: /(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i, greedy: !0, alias: 'string', }, string: { pattern: /(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i, greedy: !0, }, function: { pattern: /((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g, lookbehind: !0, }, 'class-name': { pattern: /(\bclass\s+)\w+/i, lookbehind: !0 }, decorator: { pattern: /(^[\t ]*)@\w+(?:\.\w+)*/m, lookbehind: !0, alias: ['annotation', 'punctuation'], inside: { punctuation: /\./ }, }, keyword: /\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/, builtin: /\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/, boolean: /\b(?:False|None|True)\b/, number: /\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i, operator: /[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/, punctuation: /[{}[\];(),.:]/, }), (Prism.languages.python[ 'string-interpolation' ].inside.interpolation.inside.rest = Prism.languages.python), (Prism.languages.py = Prism.languages.python) !(function (e) { ;(e.languages.ruby = e.languages.extend('clike', { comment: { pattern: /#.*|^=begin\s[\s\S]*?^=end/m, greedy: !0 }, 'class-name': { pattern: /(\b(?:class|module)\s+|\bcatch\s+\()[\w.\\]+|\b[A-Z_]\w*(?=\s*\.\s*new\b)/, lookbehind: !0, inside: { punctuation: /[.\\]/ }, }, keyword: /\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/, operator: /\.{2,3}|&\.|===||[!=]?~|(?:&&|\|\||<<|>>|\*\*|[+\-*/%<>!^&|=])=?|[?:]/, punctuation: /[(){}[\].,;]/, })), e.languages.insertBefore('ruby', 'operator', { 'double-colon': { pattern: /::/, alias: 'punctuation' }, }) var n = { pattern: /((?:^|[^\\])(?:\\{2})*)#\{(?:[^{}]|\{[^{}]*\})*\}/, lookbehind: !0, inside: { content: { pattern: /^(#\{)[\s\S]+(?=\}$)/, lookbehind: !0, inside: e.languages.ruby, }, delimiter: { pattern: /^#\{|\}$/, alias: 'punctuation' }, }, } delete e.languages.ruby.function var t = '(?:' + [ '([^a-zA-Z0-9\\s{(\\[<=])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1', '\\((?:[^()\\\\]|\\\\[^]|\\((?:[^()\\\\]|\\\\[^])*\\))*\\)', '\\{(?:[^{}\\\\]|\\\\[^]|\\{(?:[^{}\\\\]|\\\\[^])*\\})*\\}', '\\[(?:[^\\[\\]\\\\]|\\\\[^]|\\[(?:[^\\[\\]\\\\]|\\\\[^])*\\])*\\]', '<(?:[^<>\\\\]|\\\\[^]|<(?:[^<>\\\\]|\\\\[^])*>)*>', ].join('|') + ')', i = '(?:"(?:\\\\.|[^"\\\\\r\n])*"|(?:\\b[a-zA-Z_]\\w*|[^\\s\0-\\x7F]+)[?!]?|\\$.)' e.languages.insertBefore('ruby', 'keyword', { 'regex-literal': [ { pattern: RegExp('%r' + t + '[egimnosux]{0,6}'), greedy: !0, inside: { interpolation: n, regex: /[\s\S]+/ }, }, { pattern: /(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/, lookbehind: !0, greedy: !0, inside: { interpolation: n, regex: /[\s\S]+/ }, }, ], variable: /[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/, symbol: [ { pattern: RegExp('(^|[^:]):' + i), lookbehind: !0, greedy: !0 }, { pattern: RegExp('([\r\n{(,][ \t]*)' + i + '(?=:(?!:))'), lookbehind: !0, greedy: !0, }, ], 'method-definition': { pattern: /(\bdef\s+)\w+(?:\s*\.\s*\w+)?/, lookbehind: !0, inside: { function: /\b\w+$/, keyword: /^self\b/, 'class-name': /^\w+/, punctuation: /\./, }, }, }), e.languages.insertBefore('ruby', 'string', { 'string-literal': [ { pattern: RegExp('%[qQiIwWs]?' + t), greedy: !0, inside: { interpolation: n, string: /[\s\S]+/ }, }, { pattern: /("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/, greedy: !0, inside: { interpolation: n, string: /[\s\S]+/ }, }, { pattern: /<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i, alias: 'heredoc-string', greedy: !0, inside: { delimiter: { pattern: /^<<[-~]?[a-z_]\w*|\b[a-z_]\w*$/i, inside: { symbol: /\b\w+/, punctuation: /^<<[-~]?/ }, }, interpolation: n, string: /[\s\S]+/, }, }, { pattern: /<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i, alias: 'heredoc-string', greedy: !0, inside: { delimiter: { pattern: /^<<[-~]?'[a-z_]\w*'|\b[a-z_]\w*$/i, inside: { symbol: /\b\w+/, punctuation: /^<<[-~]?'|'$/ }, }, string: /[\s\S]+/, }, }, ], 'command-literal': [ { pattern: RegExp('%x' + t), greedy: !0, inside: { interpolation: n, command: { pattern: /[\s\S]+/, alias: 'string' }, }, }, { pattern: /`(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|[^\\`#\r\n])*`/, greedy: !0, inside: { interpolation: n, command: { pattern: /[\s\S]+/, alias: 'string' }, }, }, ], }), delete e.languages.ruby.string, e.languages.insertBefore('ruby', 'number', { builtin: /\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\b/, constant: /\b[A-Z][A-Z0-9_]*(?:[?!]|\b)/, }), (e.languages.rb = e.languages.ruby) })(Prism) !(function (e) { var n = /[*&][^\s[\]{},]+/, r = /!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/, t = '(?:' + r.source + '(?:[ \t]+' + n.source + ')?|' + n.source + '(?:[ \t]+' + r.source + ')?)', a = '(?:[^\\s\\x00-\\x08\\x0e-\\x1f!"#%&\'*,\\-:>?@[\\]`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*'.replace( //g, function () { return '[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]' } ), d = '"(?:[^"\\\\\r\n]|\\\\.)*"|\'(?:[^\'\\\\\r\n]|\\\\.)*\'' function o(e, n) { n = (n || '').replace(/m/g, '') + 'm' var r = '([:\\-,[{]\\s*(?:\\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\\]|\\}|(?:[\r\n]\\s*)?#))' .replace(/<>/g, function () { return t }) .replace(/<>/g, function () { return e }) return RegExp(r, n) } ;(e.languages.yaml = { scalar: { pattern: RegExp( '([\\-:]\\s*(?:\\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\\S[^\r\n]*(?:\\2[^\r\n]+)*)'.replace( /<>/g, function () { return t } ) ), lookbehind: !0, alias: 'string', }, comment: /#.*/, key: { pattern: RegExp( '((?:^|[:\\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\\s*:\\s)' .replace(/<>/g, function () { return t }) .replace(/<>/g, function () { return '(?:' + a + '|' + d + ')' }) ), lookbehind: !0, greedy: !0, alias: 'atrule', }, directive: { pattern: /(^[ \t]*)%.+/m, lookbehind: !0, alias: 'important' }, datetime: { pattern: o( '\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ \t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?' ), lookbehind: !0, alias: 'number', }, boolean: { pattern: o('false|true', 'i'), lookbehind: !0, alias: 'important', }, null: { pattern: o('null|~', 'i'), lookbehind: !0, alias: 'important' }, string: { pattern: o(d), lookbehind: !0, greedy: !0 }, number: { pattern: o( '[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)', 'i' ), lookbehind: !0, }, tag: r, important: n, punctuation: /---|[:[\]{}\-,|>?]|\.\.\./, }), (e.languages.yml = e.languages.yaml) })(Prism) !(function () { if ( 'undefined' != typeof Prism && 'undefined' != typeof document && document.querySelector ) { var e, t = 'line-numbers', i = 'linkable-line-numbers', n = /\n(?!$)/g, r = !0 Prism.plugins.lineHighlight = { highlightLines: function (o, u, c) { var h = (u = 'string' == typeof u ? u : o.getAttribute('data-line') || '') .replace(/\s+/g, '') .split(',') .filter(Boolean), d = +o.getAttribute('data-line-offset') || 0, f = ( (function () { if (void 0 === e) { var t = document.createElement('div') ;(t.style.fontSize = '13px'), (t.style.lineHeight = '1.5'), (t.style.padding = '0'), (t.style.border = '0'), (t.innerHTML = ' 
 '), document.body.appendChild(t), (e = 38 === t.offsetHeight), document.body.removeChild(t) } return e })() ? parseInt : parseFloat )(getComputedStyle(o).lineHeight), p = Prism.util.isActive(o, t), g = o.querySelector('code'), m = p ? o : g || o, v = [], y = g.textContent.match(n), b = y ? y.length + 1 : 1, A = g && m != g ? (function (e, t) { var i = getComputedStyle(e), n = getComputedStyle(t) function r(e) { return +e.substr(0, e.length - 2) } return ( t.offsetTop + r(n.borderTopWidth) + r(n.paddingTop) - r(i.paddingTop) ) })(o, g) : 0 h.forEach(function (e) { var t = e.split('-'), i = +t[0], n = +t[1] || i if (!((n = Math.min(b + d, n)) < i)) { var r = o.querySelector('.line-highlight[data-range="' + e + '"]') || document.createElement('div') if ( (v.push(function () { r.setAttribute('aria-hidden', 'true'), r.setAttribute('data-range', e), (r.className = (c || '') + ' line-highlight') }), p && Prism.plugins.lineNumbers) ) { var s = Prism.plugins.lineNumbers.getLine(o, i), l = Prism.plugins.lineNumbers.getLine(o, n) if (s) { var a = s.offsetTop + A + 'px' v.push(function () { r.style.top = a }) } if (l) { var u = l.offsetTop - s.offsetTop + l.offsetHeight + 'px' v.push(function () { r.style.height = u }) } } else v.push(function () { r.setAttribute('data-start', String(i)), n > i && r.setAttribute('data-end', String(n)), (r.style.top = (i - d - 1) * f + A + 'px'), (r.textContent = new Array(n - i + 2).join(' \n')) }) v.push(function () { r.style.width = o.scrollWidth + 'px' }), v.push(function () { m.appendChild(r) }) } }) var P = o.id if (p && Prism.util.isActive(o, i) && P) { l(o, i) || v.push(function () { o.classList.add(i) }) var E = parseInt(o.getAttribute('data-start') || '1') s('.line-numbers-rows > span', o).forEach(function (e, t) { var i = t + E e.onclick = function () { var e = P + '.' + i ;(r = !1), (location.hash = e), setTimeout(function () { r = !0 }, 1) } }) } return function () { v.forEach(a) } }, } var o = 0 Prism.hooks.add('before-sanity-check', function (e) { var t = e.element.parentElement if (u(t)) { var i = 0 s('.line-highlight', t).forEach(function (e) { ;(i += e.textContent.length), e.parentNode.removeChild(e) }), i && /^(?: \n)+$/.test(e.code.slice(-i)) && (e.code = e.code.slice(0, -i)) } }), Prism.hooks.add('complete', function e(i) { var n = i.element.parentElement if (u(n)) { clearTimeout(o) var r = Prism.plugins.lineNumbers, s = i.plugins && i.plugins.lineNumbers l(n, t) && r && !s ? Prism.hooks.add('line-numbers', e) : (Prism.plugins.lineHighlight.highlightLines(n)(), (o = setTimeout(c, 1))) } }), window.addEventListener('hashchange', c), window.addEventListener('resize', function () { s('pre') .filter(u) .map(function (e) { return Prism.plugins.lineHighlight.highlightLines(e) }) .forEach(a) }) } function s(e, t) { return Array.prototype.slice.call((t || document).querySelectorAll(e)) } function l(e, t) { return e.classList.contains(t) } function a(e) { e() } function u(e) { return !!( e && /pre/i.test(e.nodeName) && (e.hasAttribute('data-line') || (e.id && Prism.util.isActive(e, i))) ) } function c() { var e = location.hash.slice(1) s('.temporary.line-highlight').forEach(function (e) { e.parentNode.removeChild(e) }) var t = (e.match(/\.([\d,-]+)$/) || [, ''])[1] if (t && !document.getElementById(e)) { var i = e.slice(0, e.lastIndexOf('.')), n = document.getElementById(i) n && (n.hasAttribute('data-line') || n.setAttribute('data-line', ''), Prism.plugins.lineHighlight.highlightLines(n, t, 'temporary ')(), r && document.querySelector('.temporary.line-highlight').scrollIntoView()) } } })() !(function () { if ('undefined' != typeof Prism && 'undefined' != typeof document) { var e = 'line-numbers', n = /\n(?!$)/g, t = (Prism.plugins.lineNumbers = { getLine: function (n, t) { if ('PRE' === n.tagName && n.classList.contains(e)) { var i = n.querySelector('.line-numbers-rows') if (i) { var r = parseInt(n.getAttribute('data-start'), 10) || 1, s = r + (i.children.length - 1) t < r && (t = r), t > s && (t = s) var l = t - r return i.children[l] } } }, resize: function (e) { r([e]) }, assumeViewportIndependence: !0, }), i = void 0 window.addEventListener('resize', function () { ;(t.assumeViewportIndependence && i === window.innerWidth) || ((i = window.innerWidth), r( Array.prototype.slice.call( document.querySelectorAll('pre.line-numbers') ) )) }), Prism.hooks.add('complete', function (t) { if (t.code) { var i = t.element, s = i.parentNode if ( s && /pre/i.test(s.nodeName) && !i.querySelector('.line-numbers-rows') && Prism.util.isActive(i, e) ) { i.classList.remove(e), s.classList.add(e) var l, o = t.code.match(n), a = o ? o.length + 1 : 1, u = new Array(a + 1).join('') ;(l = document.createElement('span')).setAttribute( 'aria-hidden', 'true' ), (l.className = 'line-numbers-rows'), (l.innerHTML = u), s.hasAttribute('data-start') && (s.style.counterReset = 'linenumber ' + (parseInt(s.getAttribute('data-start'), 10) - 1)), t.element.appendChild(l), r([s]), Prism.hooks.run('line-numbers', t) } } }), Prism.hooks.add('line-numbers', function (e) { ;(e.plugins = e.plugins || {}), (e.plugins.lineNumbers = !0) }) } function r(e) { if ( 0 != (e = e.filter(function (e) { var n, t = ((n = e), n ? window.getComputedStyle ? getComputedStyle(n) : n.currentStyle || null : null)['white-space'] return 'pre-wrap' === t || 'pre-line' === t })).length ) { var t = e .map(function (e) { var t = e.querySelector('code'), i = e.querySelector('.line-numbers-rows') if (t && i) { var r = e.querySelector('.line-numbers-sizer'), s = t.textContent.split(n) r || (((r = document.createElement('span')).className = 'line-numbers-sizer'), t.appendChild(r)), (r.innerHTML = '0'), (r.style.display = 'block') var l = r.getBoundingClientRect().height return ( (r.innerHTML = ''), { element: e, lines: s, lineHeights: [], oneLinerHeight: l, sizer: r, } ) } }) .filter(Boolean) t.forEach(function (e) { var n = e.sizer, t = e.lines, i = e.lineHeights, r = e.oneLinerHeight ;(i[t.length - 1] = void 0), t.forEach(function (e, t) { if (e && e.length > 1) { var s = n.appendChild(document.createElement('span')) ;(s.style.display = 'block'), (s.textContent = e) } else i[t] = r }) }), t.forEach(function (e) { for ( var n = e.sizer, t = e.lineHeights, i = 0, r = 0; r < t.length; r++ ) void 0 === t[r] && (t[r] = n.children[i++].getBoundingClientRect().height) }), t.forEach(function (e) { var n = e.sizer, t = e.element.querySelector('.line-numbers-rows') ;(n.style.display = 'none'), (n.innerHTML = ''), e.lineHeights.forEach(function (e, n) { t.children[n].style.height = e + 'px' }) }) } } })() !(function () { if ('undefined' != typeof Prism && 'undefined' != typeof document) { var e = /(?:^|\s)command-line(?:\s|$)/, t = 'command-line-prompt', n = ''.startsWith ? function (e, t) { return e.startsWith(t) } : function (e, t) { return 0 === e.indexOf(t) }, a = ''.endsWith ? function (e, t) { return e.endsWith(t) } : function (e, t) { var n = e.length return e.substring(n - t.length, n) === t } Prism.hooks.add('before-highlight', function (i) { var o = r(i) if (!o.complete && i.code) { var s = i.element.parentElement if ( s && /pre/i.test(s.nodeName) && (e.test(s.className) || e.test(i.element.className)) ) { var l = i.element.querySelector('.' + t) l && l.remove() var m = i.code.split('\n') o.numberOfLines = m.length var u = (o.outputLines = []), c = s.getAttribute('data-output'), d = s.getAttribute('data-filter-output') if (null !== c) c.split(',').forEach(function (e) { var t = e.split('-'), n = parseInt(t[0], 10), a = 2 === t.length ? parseInt(t[1], 10) : n if (!isNaN(n) && !isNaN(a)) { n < 1 && (n = 1), a > m.length && (a = m.length), a-- for (var r = --n; r <= a; r++) (u[r] = m[r]), (m[r] = '') } }) else if (d) for (var p = 0; p < m.length; p++) n(m[p], d) && ((u[p] = m[p].slice(d.length)), (m[p] = '')) for ( var f = (o.continuationLineIndicies = new Set()), h = s.getAttribute('data-continuation-str'), v = s.getAttribute('data-filter-continuation'), g = 0; g < m.length; g++ ) { var b = m[g] b && (h && a(b, h) && f.add(g + 1), g > 0 && v && n(b, v) && ((m[g] = b.slice(v.length)), f.add(g))) } i.code = m.join('\n') } else o.complete = !0 } else o.complete = !0 }), Prism.hooks.add('before-insert', function (e) { var t = r(e) if (!t.complete) { for ( var n = e.highlightedCode.split('\n'), a = t.outputLines || [], i = 0, o = n.length; i < o; i++ ) a.hasOwnProperty(i) ? (n[i] = '' + Prism.util.encode(a[i]) + '') : (n[i] = '' + n[i] + '') e.highlightedCode = n.join('\n') } }), Prism.hooks.add('complete', function (n) { if ( (function (e) { return 'command-line' in (e.vars = e.vars || {}) })(n) ) { var a = r(n) if (!a.complete) { var i = n.element.parentElement e.test(n.element.className) && (n.element.className = n.element.className.replace(e, ' ')), e.test(i.className) || (i.className += ' command-line') var o, s = '', l = a.numberOfLines || 0, m = b('data-prompt', '') o = '' !== m ? '' : '' for ( var u = a.continuationLineIndicies || new Set(), c = '', d = 0; d < l; d++ ) u.has(d) ? (s += c) : (s += o) var p = document.createElement('span') ;(p.className = t), (p.innerHTML = s) for (var f = a.outputLines || [], h = 0, v = f.length; h < v; h++) if (f.hasOwnProperty(h)) { var g = p.children[h] g.removeAttribute('data-user'), g.removeAttribute('data-host'), g.removeAttribute('data-prompt') } n.element.insertBefore(p, n.element.firstChild), (a.complete = !0) } } function b(e, t) { return (i.getAttribute(e) || t).replace(/"/g, '"') } }) } function r(e) { var t = (e.vars = e.vars || {}) return (t['command-line'] = t['command-line'] || {}) } })() !(function () { if ('undefined' != typeof Prism) { var e = Object.assign || function (e, t) { for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]) return e }, t = { 'remove-trailing': 'boolean', 'remove-indent': 'boolean', 'left-trim': 'boolean', 'right-trim': 'boolean', 'break-lines': 'number', indent: 'number', 'remove-initial-line-feed': 'boolean', 'tabs-to-spaces': 'number', 'spaces-to-tabs': 'number', } ;(n.prototype = { setDefaults: function (t) { this.defaults = e(this.defaults, t) }, normalize: function (t, n) { for (var r in (n = e(this.defaults, n))) { var i = r.replace(/-(\w)/g, function (e, t) { return t.toUpperCase() }) 'normalize' !== r && 'setDefaults' !== i && n[r] && this[i] && (t = this[i].call(this, t, n[r])) } return t }, leftTrim: function (e) { return e.replace(/^\s+/, '') }, rightTrim: function (e) { return e.replace(/\s+$/, '') }, tabsToSpaces: function (e, t) { return (t = 0 | t || 4), e.replace(/\t/g, new Array(++t).join(' ')) }, spacesToTabs: function (e, t) { return (t = 0 | t || 4), e.replace(RegExp(' {' + t + '}', 'g'), '\t') }, removeTrailing: function (e) { return e.replace(/\s*?$/gm, '') }, removeInitialLineFeed: function (e) { return e.replace(/^(?:\r?\n|\r)/, '') }, removeIndent: function (e) { var t = e.match(/^[^\S\n\r]*(?=\S)/gm) return t && t[0].length ? (t.sort(function (e, t) { return e.length - t.length }), t[0].length ? e.replace(RegExp('^' + t[0], 'gm'), '') : e) : e }, indent: function (e, t) { return e.replace( /^[^\S\n\r]*(?=\S)/gm, new Array(++t).join('\t') + '$&' ) }, breakLines: function (e, t) { t = !0 === t ? 80 : 0 | t || 80 for (var n = e.split('\n'), i = 0; i < n.length; ++i) if (!(r(n[i]) <= t)) { for ( var o = n[i].split(/(\s+)/g), a = 0, l = 0; l < o.length; ++l ) { var s = r(o[l]) ;(a += s) > t && ((o[l] = '\n' + o[l]), (a = s)) } n[i] = o.join('') } return n.join('\n') }, }), 'undefined' != typeof module && module.exports && (module.exports = n), (Prism.plugins.NormalizeWhitespace = new n({ 'remove-trailing': !0, 'remove-indent': !0, 'left-trim': !0, 'right-trim': !0, })), Prism.hooks.add('before-sanity-check', function (e) { var n = Prism.plugins.NormalizeWhitespace if ( (!e.settings || !1 !== e.settings['whitespace-normalization']) && Prism.util.isActive(e.element, 'whitespace-normalization', !0) ) if ((e.element && e.element.parentNode) || !e.code) { var r = e.element.parentNode if (e.code && r && 'pre' === r.nodeName.toLowerCase()) { for (var i in (null == e.settings && (e.settings = {}), t)) if (Object.hasOwnProperty.call(t, i)) { var o = t[i] if (r.hasAttribute('data-' + i)) try { var a = JSON.parse(r.getAttribute('data-' + i) || 'true') typeof a === o && (e.settings[i] = a) } catch (e) {} } for ( var l = r.childNodes, s = '', c = '', u = !1, m = 0; m < l.length; ++m ) { var f = l[m] f == e.element ? (u = !0) : '#text' === f.nodeName && (u ? (c += f.nodeValue) : (s += f.nodeValue), r.removeChild(f), --m) } if (e.element.children.length && Prism.plugins.KeepMarkup) { var d = s + e.element.innerHTML + c ;(e.element.innerHTML = n.normalize(d, e.settings)), (e.code = e.element.textContent) } else (e.code = s + e.code + c), (e.code = n.normalize(e.code, e.settings)) } } else e.code = n.normalize(e.code, e.settings) }) } function n(t) { this.defaults = e({}, t) } function r(e) { for (var t = 0, n = 0; n < e.length; ++n) e.charCodeAt(n) == '\t'.charCodeAt(0) && (t += 3) return e.length + t } })()