var hljs = new function () { var p = {}; var a = {}; function n(c) { return c.replace(/&/gm, "&").replace(//gm, ">") } function k(s, r) { if (!s) { return false } for (var c = 0; c < s.length; c++) { if (s[c] == r) { return true } } return false } function g(K, E) { function L(P, O) { P.sm = []; for (var N = 0; N < P.c.length; N++) { for (var r = 0; r < O.m.length; r++) { if (O.m[r].cN == P.c[N]) { P.sm[P.sm.length] = O.m[r] } } } } function A(r, O) { if (!O.c) { return null } if (!O.sm) { L(O, I) } for (var N = 0; N < O.sm.length; N++) { if (O.sm[N].bR.test(r)) { return O.sm[N] } } return null } function x(N, r) { if (D[N].e && D[N].eR.test(r)) { return 1 } if (D[N].eW) { var O = x(N - 1, r); return O ? O + 1 : 0 } return 0 } function y(r, N) { return N.iR && N.iR.test(r) } function B(S, Q) { var O = []; function R(T) { if (!k(O, T)) { O[O.length] = T } } if (S.c) { for (var N = 0; N < Q.m.length; N++) { if (k(S.c, Q.m[N].cN)) { R(Q.m[N].b) } } } var r = D.length - 1; do { if (D[r].e) { R(D[r].e) } r-- } while (D[r + 1].eW); if (S.i) { R(S.i) } var P = "(" + O[0]; for (var N = 0; N < O.length; N++) { P += "|" + O[N] } P += ")"; return e(Q, P) } function t(O, N) { var P = D[D.length - 1]; if (!P.t) { P.t = B(P, I) } O = O.substr(N); var r = P.t.exec(O); if (!r) { return [O, "", true] } if (r.index == 0) { return ["", r[0], false] } else { return [O.substr(0, r.index), r[0], false] } } function s(Q, r) { var N = I.cI ? r[0].toLowerCase() : r[0]; for (var P in Q.keywordGroups) { if (!Q.keywordGroups.hasOwnProperty(P)) { continue } var O = Q.keywordGroups[P].hasOwnProperty(N); if (O) { return [P, O] } } return false } function G(P, S) { if (!S.k || !S.l) { return n(P) } if (!S.lR) { var R = "(" + S.l[0]; for (var O = 1; O < S.l.length; O++) { R += "|" + S.l[O] } R += ")"; S.lR = e(I, R, true) } var Q = ""; var T = 0; S.lR.lastIndex = 0; var N = S.lR.exec(P); while (N) { Q += n(P.substr(T, N.index - T)); var r = s(S, N); if (r) { u += r[1]; Q += '' + n(N[0]) + "" } else { Q += n(N[0]) } T = S.lR.lastIndex; N = S.lR.exec(P) } Q += n(P.substr(T, P.length - T)); return Q } function M(r, O) { if (O.subLanguage && a[O.subLanguage]) { var N = g(O.subLanguage, r); u += N.keyword_count; C += N.r; return N.value } else { return G(r, O) } } function J(O, r) { var N = O.nM ? "": ''; if (O.rB) { c += N; O.buffer = "" } else { if (O.eB) { c += n(r) + N; O.buffer = "" } else { c += N; O.buffer = r } } D[D.length] = O } function F(R, N, S) { var T = D[D.length - 1]; if (S) { c += M(T.buffer + R, T); return false } var O = A(N, T); if (O) { c += M(T.buffer + R, T); J(O, N); C += O.r; return O.rB } var r = x(D.length - 1, N); if (r) { var Q = T.nM ? "": ""; if (T.rE) { c += M(T.buffer + R, T) + Q } else { if (T.eE) { c += M(T.buffer + R, T) + Q + n(N) } else { c += M(T.buffer + R + N, T) + Q } } while (r > 1) { Q = D[D.length - 2].nM ? "": ""; c += Q; r--; D.length-- } D.length--; D[D.length - 1].buffer = ""; if (T.starts) { for (var P = 0; P < I.m.length; P++) { if (I.m[P].cN == T.starts) { J(I.m[P], ""); break } } } return T.rE } if (y(N, T)) { throw "Illegal" } } var I = p[K]; var D = [I.dM]; var C = 0; var u = 0; var c = ""; try { var w = 0; I.dM.buffer = ""; do { var z = t(E, w); var v = F(z[0], z[1], z[2]); w += z[0].length; if (!v) { w += z[1].length } } while (!z[2]); if (D.length > 1) { throw "Illegal" } return { r: C, keyword_count: u, value: c } } catch(H) { if (H == "Illegal") { return { r: 0, keyword_count: 0, value: n(E) } } else { throw H } } } function h(s) { var r = ""; for (var c = 0; c < s.childNodes.length; c++) { if (s.childNodes[c].nodeType == 3) { r += s.childNodes[c].nodeValue } else { if (s.childNodes[c].nodeName == "BR") { r += "\n" } else { r += h(s.childNodes[c]) } } } return r } function b(t) { var r = t.className.split(/\s+/); r = r.concat(t.parentNode.className.split(/\s+/)); for (var c = 0; c < r.length; c++) { var s = r[c].replace(/^language-/, ""); if (s == "no-highlight") { throw "No highlight" } if (p[s]) { return s } } } function d(c) { var r = []; (function (t, u) { for (var s = 0; s < t.childNodes.length; s++) { if (t.childNodes[s].nodeType == 3) { u += t.childNodes[s].nodeValue.length } else { if (t.childNodes[s].nodeName == "BR") { u += 1 } else { r.push({ event: "start", offset: u, node: t.childNodes[s] }); u = arguments.callee(t.childNodes[s], u); r.push({ event: "stop", offset: u, node: t.childNodes[s] }) } } } return u })(c, 0); return r } function m(z, A, y) { var s = 0; var x = ""; var u = []; function v() { if (z.length && A.length) { if (z[0].offset != A[0].offset) { return (z[0].offset < A[0].offset) ? z: A } else { return (z[0].event == "start" && A[0].event == "stop") ? A: z } } else { return z.length ? z: A } } function t(D) { var E = "<" + D.nodeName.toLowerCase(); for (var C = 0; C < D.attributes.length; C++) { E += " " + D.attributes[C].nodeName.toLowerCase() + '="' + n(D.attributes[C].nodeValue) + '"' } return E + ">" } function B(C) { return "" } while (z.length || A.length) { var w = v().splice(0, 1)[0]; x += n(y.substr(s, w.offset - s)); s = w.offset; if (w.event == "start") { x += t(w.node); u.push(w.node) } else { if (w.event == "stop") { var r = u.length; do { r--; var c = u[r]; x += B(c) } while (c != w.node); u.splice(r, 1); while (r < u.length) { x += t(u[r]); r++ } } } } x += y.substr(s); return x } function q(y, C) { try { var F = h(y); var v = b(y) } catch(z) { if (z == "No highlight") { return } } if (v) { var B = g(v, F).value } else { var D = 0; for (var E in a) { if (!a.hasOwnProperty(E)) { continue } var t = g(E, F); var c = t.keyword_count + t.r; if (c > D) { D = c; var B = t.value; v = E } } } if (B) { if (C) { B = B.replace(/^(\t+)/gm, function (r, I, H, G) { return I.replace(/\t/g, C) }) } var x = y.className; if (!x.match(v)) { x += " " + v } var s = d(y); if (s.length) { var u = document.createElement("pre"); u.innerHTML = B; B = m(s, d(u), F) } var A = document.createElement("div"); A.innerHTML = '
' + B + "
"; var w = y.parentNode.parentNode; w.replaceChild(A.firstChild, y.parentNode) } } function e(s, r, c) { var t = "m" + (s.cI ? "i": "") + (c ? "g": ""); return new RegExp(r, t) } function j() { for (var r in p) { if (!p.hasOwnProperty(r)) { continue } var s = p[r]; for (var c = 0; c < s.m.length; c++) { if (s.m[c].b) { s.m[c].bR = e(s, "^" + s.m[c].b) } if (s.m[c].e) { s.m[c].eR = e(s, "^" + s.m[c].e) } if (s.m[c].i) { s.m[c].iR = e(s, "^(?:" + s.m[c].i + ")") } s.dM.iR = e(s, "^(?:" + s.dM.i + ")"); if (s.m[c].r == undefined) { s.m[c].r = 1 } } } } function f() { function s(v) { if (!v.keywordGroups) { for (var u in v.k) { if (!v.k.hasOwnProperty(u)) { continue } if (v.k[u] instanceof Object) { v.keywordGroups = v.k } else { v.keywordGroups = { keyword: v.k } } break } } } for (var r in p) { if (!p.hasOwnProperty(r)) { continue } var t = p[r]; s(t.dM); for (var c = 0; c < t.m.length; c++) { s(t.m[c]) } } } function i(r) { for (var c = 0; c < r.childNodes.length; c++) { node = r.childNodes[c]; if (node.nodeName == "CODE") { return node } if (! (node.nodeType == 3 && node.nodeValue.match(/\s+/))) { return null } } } function l() { if (l.called) { return } l.called = true; j(); f(); if (arguments.length) { for (var c = 0; c < arguments.length; c++) { if (p[arguments[c]]) { a[arguments[c]] = p[arguments[c]] } } } else { a = p } var s = document.getElementsByTagName("pre"); for (var c = 0; c < s.length; c++) { var r = i(s[c]); if (r) { q(r, hljs.tabReplace) } } } function o() { var c = arguments; var r = function () { l.apply(null, c) }; if (window.addEventListener) { window.addEventListener("DOMContentLoaded", r, false); window.addEventListener("load", r, false) } else { if (window.attachEvent) { window.attachEvent("onload", r) } else { window.onload = r } } } this.LANGUAGES = p; this.initHighlightingOnLoad = o; this.highlightBlock = q; this.initHighlighting = l; this.IR = "[a-zA-Z][a-zA-Z0-9_]*"; this.UIR = "[a-zA-Z_][a-zA-Z0-9_]*"; this.NR = "\\b\\d+(\\.\\d+)?"; this.CNR = "\\b(0x[A-Za-z0-9]+|\\d+(\\.\\d+)?)"; this.RSR = "!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|\\.|-|-=|/|/=|:|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~"; this.ASM = { cN: "string", b: "'", e: "'", i: "\\n", c: ["escape"], r: 0 }; this.QSM = { cN: "string", b: '"', e: '"', i: "\\n", c: ["escape"], r: 0 }; this.BE = { cN: "escape", b: "\\\\.", e: "^", nM: true, r: 0 }; this.CLCM = { cN: "comment", b: "//", e: "$", r: 0 }; this.CBLCLM = { cN: "comment", b: "/\\*", e: "\\*/" }; this.HCM = { cN: "comment", b: "#", e: "$" }; this.CNM = { cN: "number", b: this.CNR, e: "^", r: 0 } } (); var initHighlightingOnLoad = hljs.initHighlightingOnLoad; hljs.XML_COMMENT = { cN: "comment", b: "" }; hljs.XML_ATTR = { cN: "attribute", b: "\\s[a-zA-Z\\:-]+=", e: "^", c: ["value"] }; hljs.XML_VALUE_QUOT = { cN: "value", b: '"', e: '"' }; hljs.XML_VALUE_APOS = { cN: "value", b: "'", e: "'" }; hljs.LANGUAGES.xml = { dM: { c: ["pi", "comment", "cdata", "tag"] }, cI: true, m: [{ cN: "pi", b: "<\\?", e: "\\?>", r: 10 }, hljs.XML_COMMENT, { cN: "cdata", b: "<\\!\\[CDATA\\[", e: "\\]\\]>" }, { cN: "tag", b: "