prettify.js 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937
  1. /* eslint-disable */
  2. window.PR_SHOULD_USE_CONTINUATION = true;
  3. (function () {
  4. var h = ['break,continue,do,else,for,if,return,while'];
  5. var u = [
  6. h,
  7. 'auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile',
  8. ];
  9. var p = [
  10. u,
  11. 'catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof',
  12. ];
  13. var l = [
  14. p,
  15. 'alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where',
  16. ];
  17. var x = [
  18. p,
  19. 'abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient',
  20. ];
  21. var R = [
  22. x,
  23. 'as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var',
  24. ];
  25. var r =
  26. 'all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes';
  27. var w = [p, 'debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN'];
  28. var s =
  29. 'caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END';
  30. var I = [
  31. h,
  32. 'and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None',
  33. ];
  34. var f = [
  35. h,
  36. 'alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END',
  37. ];
  38. var H = [h, 'case,done,elif,esac,eval,fi,function,in,local,set,then,until'];
  39. var A = [l, R, w, s + I, f, H];
  40. var e =
  41. /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;
  42. var C = 'str';
  43. var z = 'kwd';
  44. var j = 'com';
  45. var O = 'typ';
  46. var G = 'lit';
  47. var L = 'pun';
  48. var F = 'pln';
  49. var m = 'tag';
  50. var E = 'dec';
  51. var J = 'src';
  52. var P = 'atn';
  53. var n = 'atv';
  54. var N = 'nocode';
  55. var M =
  56. '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*';
  57. function k(Z) {
  58. var ad = 0;
  59. var S = false;
  60. var ac = false;
  61. for (var V = 0, U = Z.length; V < U; ++V) {
  62. var ae = Z[V];
  63. if (ae.ignoreCase) {
  64. ac = true;
  65. } else {
  66. if (/[a-z]/i.test(ae.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
  67. S = true;
  68. ac = false;
  69. break;
  70. }
  71. }
  72. }
  73. var Y = { b: 8, t: 9, n: 10, v: 11, f: 12, r: 13 };
  74. function ab(ah) {
  75. var ag = ah.charCodeAt(0);
  76. if (ag !== 92) {
  77. return ag;
  78. }
  79. var af = ah.charAt(1);
  80. ag = Y[af];
  81. if (ag) {
  82. return ag;
  83. } else {
  84. if ('0' <= af && af <= '7') {
  85. return parseInt(ah.substring(1), 8);
  86. } else {
  87. if (af === 'u' || af === 'x') {
  88. return parseInt(ah.substring(2), 16);
  89. } else {
  90. return ah.charCodeAt(1);
  91. }
  92. }
  93. }
  94. }
  95. function T(af) {
  96. if (af < 32) {
  97. return (af < 16 ? '\\x0' : '\\x') + af.toString(16);
  98. }
  99. var ag = String.fromCharCode(af);
  100. if (ag === '\\' || ag === '-' || ag === '[' || ag === ']') {
  101. ag = '\\' + ag;
  102. }
  103. return ag;
  104. }
  105. function X(am) {
  106. var aq = am
  107. .substring(1, am.length - 1)
  108. .match(
  109. new RegExp(
  110. '\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]',
  111. 'g',
  112. ),
  113. );
  114. var ak = [];
  115. var af = [];
  116. var ao = aq[0] === '^';
  117. for (var ar = ao ? 1 : 0, aj = aq.length; ar < aj; ++ar) {
  118. var ah = aq[ar];
  119. if (/\\[bdsw]/i.test(ah)) {
  120. ak.push(ah);
  121. } else {
  122. var ag = ab(ah);
  123. var al;
  124. if (ar + 2 < aj && '-' === aq[ar + 1]) {
  125. al = ab(aq[ar + 2]);
  126. ar += 2;
  127. } else {
  128. al = ag;
  129. }
  130. af.push([ag, al]);
  131. if (!(al < 65 || ag > 122)) {
  132. if (!(al < 65 || ag > 90)) {
  133. af.push([Math.max(65, ag) | 32, Math.min(al, 90) | 32]);
  134. }
  135. if (!(al < 97 || ag > 122)) {
  136. af.push([Math.max(97, ag) & ~32, Math.min(al, 122) & ~32]);
  137. }
  138. }
  139. }
  140. }
  141. af.sort(function (av, au) {
  142. return av[0] - au[0] || au[1] - av[1];
  143. });
  144. var ai = [];
  145. var ap = [NaN, NaN];
  146. for (var ar = 0; ar < af.length; ++ar) {
  147. var at = af[ar];
  148. if (at[0] <= ap[1] + 1) {
  149. ap[1] = Math.max(ap[1], at[1]);
  150. } else {
  151. ai.push((ap = at));
  152. }
  153. }
  154. var an = ['['];
  155. if (ao) {
  156. an.push('^');
  157. }
  158. an.push.apply(an, ak);
  159. for (var ar = 0; ar < ai.length; ++ar) {
  160. var at = ai[ar];
  161. an.push(T(at[0]));
  162. if (at[1] > at[0]) {
  163. if (at[1] + 1 > at[0]) {
  164. an.push('-');
  165. }
  166. an.push(T(at[1]));
  167. }
  168. }
  169. an.push(']');
  170. return an.join('');
  171. }
  172. function W(al) {
  173. var aj = al.source.match(
  174. new RegExp(
  175. '(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)',
  176. 'g',
  177. ),
  178. );
  179. var ah = aj.length;
  180. var an = [];
  181. for (var ak = 0, am = 0; ak < ah; ++ak) {
  182. var ag = aj[ak];
  183. if (ag === '(') {
  184. ++am;
  185. } else {
  186. if ('\\' === ag.charAt(0)) {
  187. var af = +ag.substring(1);
  188. if (af && af <= am) {
  189. an[af] = -1;
  190. }
  191. }
  192. }
  193. }
  194. for (var ak = 1; ak < an.length; ++ak) {
  195. if (-1 === an[ak]) {
  196. an[ak] = ++ad;
  197. }
  198. }
  199. for (var ak = 0, am = 0; ak < ah; ++ak) {
  200. var ag = aj[ak];
  201. if (ag === '(') {
  202. ++am;
  203. if (an[am] === undefined) {
  204. aj[ak] = '(?:';
  205. }
  206. } else {
  207. if ('\\' === ag.charAt(0)) {
  208. var af = +ag.substring(1);
  209. if (af && af <= am) {
  210. aj[ak] = '\\' + an[am];
  211. }
  212. }
  213. }
  214. }
  215. for (var ak = 0, am = 0; ak < ah; ++ak) {
  216. if ('^' === aj[ak] && '^' !== aj[ak + 1]) {
  217. aj[ak] = '';
  218. }
  219. }
  220. if (al.ignoreCase && S) {
  221. for (var ak = 0; ak < ah; ++ak) {
  222. var ag = aj[ak];
  223. var ai = ag.charAt(0);
  224. if (ag.length >= 2 && ai === '[') {
  225. aj[ak] = X(ag);
  226. } else {
  227. if (ai !== '\\') {
  228. aj[ak] = ag.replace(/[a-zA-Z]/g, function (ao) {
  229. var ap = ao.charCodeAt(0);
  230. return '[' + String.fromCharCode(ap & ~32, ap | 32) + ']';
  231. });
  232. }
  233. }
  234. }
  235. }
  236. return aj.join('');
  237. }
  238. var aa = [];
  239. for (var V = 0, U = Z.length; V < U; ++V) {
  240. var ae = Z[V];
  241. if (ae.global || ae.multiline) {
  242. throw new Error('' + ae);
  243. }
  244. aa.push('(?:' + W(ae) + ')');
  245. }
  246. return new RegExp(aa.join('|'), ac ? 'gi' : 'g');
  247. }
  248. function a(V) {
  249. var U = /(?:^|\s)nocode(?:\s|$)/;
  250. var X = [];
  251. var T = 0;
  252. var Z = [];
  253. var W = 0;
  254. var S;
  255. if (V.currentStyle) {
  256. S = V.currentStyle.whiteSpace;
  257. } else {
  258. if (window.getComputedStyle) {
  259. S = document.defaultView.getComputedStyle(V, null).getPropertyValue('white-space');
  260. }
  261. }
  262. var Y = S && 'pre' === S.substring(0, 3);
  263. function aa(ab) {
  264. switch (ab.nodeType) {
  265. case 1:
  266. if (U.test(ab.className)) {
  267. return;
  268. }
  269. for (var ae = ab.firstChild; ae; ae = ae.nextSibling) {
  270. aa(ae);
  271. }
  272. var ad = ab.nodeName;
  273. if ('BR' === ad || 'LI' === ad) {
  274. X[W] = '\n';
  275. Z[W << 1] = T++;
  276. Z[(W++ << 1) | 1] = ab;
  277. }
  278. break;
  279. case 3:
  280. case 4:
  281. var ac = ab.nodeValue;
  282. if (ac.length) {
  283. if (!Y) {
  284. ac = ac.replace(/[ \t\r\n]+/g, ' ');
  285. } else {
  286. ac = ac.replace(/\r\n?/g, '\n');
  287. }
  288. X[W] = ac;
  289. Z[W << 1] = T;
  290. T += ac.length;
  291. Z[(W++ << 1) | 1] = ab;
  292. }
  293. break;
  294. }
  295. }
  296. aa(V);
  297. return { sourceCode: X.join('').replace(/\n$/, ''), spans: Z };
  298. }
  299. function B(S, U, W, T) {
  300. if (!U) {
  301. return;
  302. }
  303. var V = { sourceCode: U, basePos: S };
  304. W(V);
  305. T.push.apply(T, V.decorations);
  306. }
  307. var v = /\S/;
  308. function o(S) {
  309. var V = undefined;
  310. for (var U = S.firstChild; U; U = U.nextSibling) {
  311. var T = U.nodeType;
  312. V = T === 1 ? (V ? S : U) : T === 3 ? (v.test(U.nodeValue) ? S : V) : V;
  313. }
  314. return V === S ? undefined : V;
  315. }
  316. function g(U, T) {
  317. var S = {};
  318. var V;
  319. (function () {
  320. var ad = U.concat(T);
  321. var ah = [];
  322. var ag = {};
  323. for (var ab = 0, Z = ad.length; ab < Z; ++ab) {
  324. var Y = ad[ab];
  325. var ac = Y[3];
  326. if (ac) {
  327. for (var ae = ac.length; --ae >= 0; ) {
  328. S[ac.charAt(ae)] = Y;
  329. }
  330. }
  331. var af = Y[1];
  332. var aa = '' + af;
  333. if (!ag.hasOwnProperty(aa)) {
  334. ah.push(af);
  335. ag[aa] = null;
  336. }
  337. }
  338. ah.push(/[\0-\uffff]/);
  339. V = k(ah);
  340. })();
  341. var X = T.length;
  342. var W = function (ah) {
  343. var Z = ah.sourceCode,
  344. Y = ah.basePos;
  345. var ad = [Y, F];
  346. var af = 0;
  347. var an = Z.match(V) || [];
  348. var aj = {};
  349. for (var ae = 0, aq = an.length; ae < aq; ++ae) {
  350. var ag = an[ae];
  351. var ap = aj[ag];
  352. var ai = void 0;
  353. var am;
  354. if (typeof ap === 'string') {
  355. am = false;
  356. } else {
  357. var aa = S[ag.charAt(0)];
  358. if (aa) {
  359. ai = ag.match(aa[1]);
  360. ap = aa[0];
  361. } else {
  362. for (var ao = 0; ao < X; ++ao) {
  363. aa = T[ao];
  364. ai = ag.match(aa[1]);
  365. if (ai) {
  366. ap = aa[0];
  367. break;
  368. }
  369. }
  370. if (!ai) {
  371. ap = F;
  372. }
  373. }
  374. am = ap.length >= 5 && 'lang-' === ap.substring(0, 5);
  375. if (am && !(ai && typeof ai[1] === 'string')) {
  376. am = false;
  377. ap = J;
  378. }
  379. if (!am) {
  380. aj[ag] = ap;
  381. }
  382. }
  383. var ab = af;
  384. af += ag.length;
  385. if (!am) {
  386. ad.push(Y + ab, ap);
  387. } else {
  388. var al = ai[1];
  389. var ak = ag.indexOf(al);
  390. var ac = ak + al.length;
  391. if (ai[2]) {
  392. ac = ag.length - ai[2].length;
  393. ak = ac - al.length;
  394. }
  395. var ar = ap.substring(5);
  396. B(Y + ab, ag.substring(0, ak), W, ad);
  397. B(Y + ab + ak, al, q(ar, al), ad);
  398. B(Y + ab + ac, ag.substring(ac), W, ad);
  399. }
  400. }
  401. ah.decorations = ad;
  402. };
  403. return W;
  404. }
  405. function i(T) {
  406. var W = [],
  407. S = [];
  408. if (T.tripleQuotedStrings) {
  409. W.push([
  410. C,
  411. /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
  412. null,
  413. '\'"',
  414. ]);
  415. } else {
  416. if (T.multiLineStrings) {
  417. W.push([
  418. C,
  419. /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
  420. null,
  421. '\'"`',
  422. ]);
  423. } else {
  424. W.push([
  425. C,
  426. /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
  427. null,
  428. '"\'',
  429. ]);
  430. }
  431. }
  432. if (T.verbatimStrings) {
  433. S.push([C, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
  434. }
  435. var Y = T.hashComments;
  436. if (Y) {
  437. if (T.cStyleComments) {
  438. if (Y > 1) {
  439. W.push([j, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, '#']);
  440. } else {
  441. W.push([
  442. j,
  443. /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,
  444. null,
  445. '#',
  446. ]);
  447. }
  448. S.push([C, /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/, null]);
  449. } else {
  450. W.push([j, /^#[^\r\n]*/, null, '#']);
  451. }
  452. }
  453. if (T.cStyleComments) {
  454. S.push([j, /^\/\/[^\r\n]*/, null]);
  455. S.push([j, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
  456. }
  457. if (T.regexLiterals) {
  458. var X =
  459. '/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/';
  460. S.push(['lang-regex', new RegExp('^' + M + '(' + X + ')')]);
  461. }
  462. var V = T.types;
  463. if (V) {
  464. S.push([O, V]);
  465. }
  466. var U = ('' + T.keywords).replace(/^ | $/g, '');
  467. if (U.length) {
  468. S.push([z, new RegExp('^(?:' + U.replace(/[\s,]+/g, '|') + ')\\b'), null]);
  469. }
  470. W.push([F, /^\s+/, null, ' \r\n\t\xA0']);
  471. S.push(
  472. [G, /^@[a-z_$][a-z_$@0-9]*/i, null],
  473. [O, /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/, null],
  474. [F, /^[a-z_$][a-z_$@0-9]*/i, null],
  475. [
  476. G,
  477. new RegExp(
  478. '^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*',
  479. 'i',
  480. ),
  481. null,
  482. '0123456789',
  483. ],
  484. [F, /^\\[\s\S]?/, null],
  485. [L, /^.[^\s\w\.$@\'\"\`\/\#\\]*/, null],
  486. );
  487. return g(W, S);
  488. }
  489. var K = i({
  490. keywords: A,
  491. hashComments: true,
  492. cStyleComments: true,
  493. multiLineStrings: true,
  494. regexLiterals: true,
  495. });
  496. function Q(V, ag) {
  497. var U = /(?:^|\s)nocode(?:\s|$)/;
  498. var ab = /\r\n?|\n/;
  499. var ac = V.ownerDocument;
  500. var S;
  501. if (V.currentStyle) {
  502. S = V.currentStyle.whiteSpace;
  503. } else {
  504. if (window.getComputedStyle) {
  505. S = ac.defaultView.getComputedStyle(V, null).getPropertyValue('white-space');
  506. }
  507. }
  508. var Z = S && 'pre' === S.substring(0, 3);
  509. var af = ac.createElement('LI');
  510. while (V.firstChild) {
  511. af.appendChild(V.firstChild);
  512. }
  513. var W = [af];
  514. function ae(al) {
  515. switch (al.nodeType) {
  516. case 1:
  517. if (U.test(al.className)) {
  518. break;
  519. }
  520. if ('BR' === al.nodeName) {
  521. ad(al);
  522. if (al.parentNode) {
  523. al.parentNode.removeChild(al);
  524. }
  525. } else {
  526. for (var an = al.firstChild; an; an = an.nextSibling) {
  527. ae(an);
  528. }
  529. }
  530. break;
  531. case 3:
  532. case 4:
  533. if (Z) {
  534. var am = al.nodeValue;
  535. var aj = am.match(ab);
  536. if (aj) {
  537. var ai = am.substring(0, aj.index);
  538. al.nodeValue = ai;
  539. var ah = am.substring(aj.index + aj[0].length);
  540. if (ah) {
  541. var ak = al.parentNode;
  542. ak.insertBefore(ac.createTextNode(ah), al.nextSibling);
  543. }
  544. ad(al);
  545. if (!ai) {
  546. al.parentNode.removeChild(al);
  547. }
  548. }
  549. }
  550. break;
  551. }
  552. }
  553. function ad(ak) {
  554. while (!ak.nextSibling) {
  555. ak = ak.parentNode;
  556. if (!ak) {
  557. return;
  558. }
  559. }
  560. function ai(al, ar) {
  561. var aq = ar ? al.cloneNode(false) : al;
  562. var ao = al.parentNode;
  563. if (ao) {
  564. var ap = ai(ao, 1);
  565. var an = al.nextSibling;
  566. ap.appendChild(aq);
  567. for (var am = an; am; am = an) {
  568. an = am.nextSibling;
  569. ap.appendChild(am);
  570. }
  571. }
  572. return aq;
  573. }
  574. var ah = ai(ak.nextSibling, 0);
  575. for (var aj; (aj = ah.parentNode) && aj.nodeType === 1; ) {
  576. ah = aj;
  577. }
  578. W.push(ah);
  579. }
  580. for (var Y = 0; Y < W.length; ++Y) {
  581. ae(W[Y]);
  582. }
  583. if (ag === (ag | 0)) {
  584. W[0].setAttribute('value', ag);
  585. }
  586. var aa = ac.createElement('OL');
  587. aa.className = 'linenums';
  588. var X = Math.max(0, (ag - 1) | 0) || 0;
  589. for (var Y = 0, T = W.length; Y < T; ++Y) {
  590. af = W[Y];
  591. af.className = 'L' + ((Y + X) % 10);
  592. if (!af.firstChild) {
  593. af.appendChild(ac.createTextNode('\xA0'));
  594. }
  595. aa.appendChild(af);
  596. }
  597. V.appendChild(aa);
  598. }
  599. function D(ac) {
  600. var aj = /\bMSIE\b/.test(navigator.userAgent);
  601. var am = /\n/g;
  602. var al = ac.sourceCode;
  603. var an = al.length;
  604. var V = 0;
  605. var aa = ac.spans;
  606. var T = aa.length;
  607. var ah = 0;
  608. var X = ac.decorations;
  609. var Y = X.length;
  610. var Z = 0;
  611. X[Y] = an;
  612. var ar, aq;
  613. for (aq = ar = 0; aq < Y; ) {
  614. if (X[aq] !== X[aq + 2]) {
  615. X[ar++] = X[aq++];
  616. X[ar++] = X[aq++];
  617. } else {
  618. aq += 2;
  619. }
  620. }
  621. Y = ar;
  622. for (aq = ar = 0; aq < Y; ) {
  623. var at = X[aq];
  624. var ab = X[aq + 1];
  625. var W = aq + 2;
  626. while (W + 2 <= Y && X[W + 1] === ab) {
  627. W += 2;
  628. }
  629. X[ar++] = at;
  630. X[ar++] = ab;
  631. aq = W;
  632. }
  633. Y = X.length = ar;
  634. var ae = null;
  635. while (ah < T) {
  636. var af = aa[ah];
  637. var S = aa[ah + 2] || an;
  638. var ag = X[Z];
  639. var ap = X[Z + 2] || an;
  640. var W = Math.min(S, ap);
  641. var ak = aa[ah + 1];
  642. var U;
  643. if (ak.nodeType !== 1 && (U = al.substring(V, W))) {
  644. if (aj) {
  645. U = U.replace(am, '\r');
  646. }
  647. ak.nodeValue = U;
  648. var ai = ak.ownerDocument;
  649. var ao = ai.createElement('SPAN');
  650. ao.className = X[Z + 1];
  651. var ad = ak.parentNode;
  652. ad.replaceChild(ao, ak);
  653. ao.appendChild(ak);
  654. if (V < S) {
  655. aa[ah + 1] = ak = ai.createTextNode(al.substring(W, S));
  656. ad.insertBefore(ak, ao.nextSibling);
  657. }
  658. }
  659. V = W;
  660. if (V >= S) {
  661. ah += 2;
  662. }
  663. if (V >= ap) {
  664. Z += 2;
  665. }
  666. }
  667. }
  668. var t = {};
  669. function c(U, V) {
  670. for (var S = V.length; --S >= 0; ) {
  671. var T = V[S];
  672. if (!t.hasOwnProperty(T)) {
  673. t[T] = U;
  674. } else {
  675. if (window.console) {
  676. console.warn('cannot override language handler %s', T);
  677. }
  678. }
  679. }
  680. }
  681. function q(T, S) {
  682. if (!(T && t.hasOwnProperty(T))) {
  683. T = /^\s*</.test(S) ? 'default-markup' : 'default-code';
  684. }
  685. return t[T];
  686. }
  687. c(K, ['default-code']);
  688. c(
  689. g(
  690. [],
  691. [
  692. [F, /^[^<?]+/],
  693. [E, /^<!\w[^>]*(?:>|$)/],
  694. [j, /^<\!--[\s\S]*?(?:-\->|$)/],
  695. ['lang-', /^<\?([\s\S]+?)(?:\?>|$)/],
  696. ['lang-', /^<%([\s\S]+?)(?:%>|$)/],
  697. [L, /^(?:<[%?]|[%?]>)/],
  698. ['lang-', /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
  699. ['lang-js', /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
  700. ['lang-css', /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
  701. ['lang-in.tag', /^(<\/?[a-z][^<>]*>)/i],
  702. ],
  703. ),
  704. ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl'],
  705. );
  706. c(
  707. g(
  708. [
  709. [F, /^[\s]+/, null, ' \t\r\n'],
  710. [n, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '"\''],
  711. ],
  712. [
  713. [m, /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
  714. [P, /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
  715. ['lang-uq.val', /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
  716. [L, /^[=<>\/]+/],
  717. ['lang-js', /^on\w+\s*=\s*\"([^\"]+)\"/i],
  718. ['lang-js', /^on\w+\s*=\s*\'([^\']+)\'/i],
  719. ['lang-js', /^on\w+\s*=\s*([^\"\'>\s]+)/i],
  720. ['lang-css', /^style\s*=\s*\"([^\"]+)\"/i],
  721. ['lang-css', /^style\s*=\s*\'([^\']+)\'/i],
  722. ['lang-css', /^style\s*=\s*([^\"\'>\s]+)/i],
  723. ],
  724. ),
  725. ['in.tag'],
  726. );
  727. c(g([], [[n, /^[\s\S]+/]]), ['uq.val']);
  728. c(i({ keywords: l, hashComments: true, cStyleComments: true, types: e }), [
  729. 'c',
  730. 'cc',
  731. 'cpp',
  732. 'cxx',
  733. 'cyc',
  734. 'm',
  735. ]);
  736. c(i({ keywords: 'null,true,false' }), ['json']);
  737. c(i({ keywords: R, hashComments: true, cStyleComments: true, verbatimStrings: true, types: e }), [
  738. 'cs',
  739. ]);
  740. c(i({ keywords: x, cStyleComments: true }), ['java']);
  741. c(i({ keywords: H, hashComments: true, multiLineStrings: true }), ['bsh', 'csh', 'sh']);
  742. c(i({ keywords: I, hashComments: true, multiLineStrings: true, tripleQuotedStrings: true }), [
  743. 'cv',
  744. 'py',
  745. ]);
  746. c(i({ keywords: s, hashComments: true, multiLineStrings: true, regexLiterals: true }), [
  747. 'perl',
  748. 'pl',
  749. 'pm',
  750. ]);
  751. c(i({ keywords: f, hashComments: true, multiLineStrings: true, regexLiterals: true }), ['rb']);
  752. c(i({ keywords: w, cStyleComments: true, regexLiterals: true }), ['js']);
  753. c(
  754. i({
  755. keywords: r,
  756. hashComments: 3,
  757. cStyleComments: true,
  758. multilineStrings: true,
  759. tripleQuotedStrings: true,
  760. regexLiterals: true,
  761. }),
  762. ['coffee'],
  763. );
  764. c(g([], [[C, /^[\s\S]+/]]), ['regex']);
  765. function d(V) {
  766. var U = V.langExtension;
  767. try {
  768. var S = a(V.sourceNode);
  769. var T = S.sourceCode;
  770. V.sourceCode = T;
  771. V.spans = S.spans;
  772. V.basePos = 0;
  773. q(U, T)(V);
  774. D(V);
  775. } catch (W) {
  776. if ('console' in window) {
  777. console.log(W && W.stack ? W.stack : W);
  778. }
  779. }
  780. }
  781. function y(W, V, U) {
  782. var S = document.createElement('PRE');
  783. S.innerHTML = W;
  784. if (U) {
  785. Q(S, U);
  786. }
  787. var T = { langExtension: V, numberLines: U, sourceNode: S };
  788. d(T);
  789. return S.innerHTML;
  790. }
  791. function b(ad) {
  792. function Y(af) {
  793. return document.getElementsByTagName(af);
  794. }
  795. var ac = [Y('pre'), Y('code'), Y('xmp')];
  796. var T = [];
  797. for (var aa = 0; aa < ac.length; ++aa) {
  798. for (var Z = 0, V = ac[aa].length; Z < V; ++Z) {
  799. T.push(ac[aa][Z]);
  800. }
  801. }
  802. ac = null;
  803. var W = Date;
  804. if (!W.now) {
  805. W = {
  806. now: function () {
  807. return +new Date();
  808. },
  809. };
  810. }
  811. var X = 0;
  812. var S;
  813. var ab = /\blang(?:uage)?-([\w.]+)(?!\S)/;
  814. var ae = /\bprettyprint\b/;
  815. function U() {
  816. var ag = window.PR_SHOULD_USE_CONTINUATION ? W.now() + 250 : Infinity;
  817. for (; X < T.length && W.now() < ag; X++) {
  818. var aj = T[X];
  819. var ai = aj.className;
  820. if (ai.indexOf('prettyprint') >= 0) {
  821. var ah = ai.match(ab);
  822. var am;
  823. if (!ah && (am = o(aj)) && 'CODE' === am.tagName) {
  824. ah = am.className.match(ab);
  825. }
  826. if (ah) {
  827. ah = ah[1];
  828. }
  829. var al = false;
  830. for (var ak = aj.parentNode; ak; ak = ak.parentNode) {
  831. if (
  832. (ak.tagName === 'pre' || ak.tagName === 'code' || ak.tagName === 'xmp') &&
  833. ak.className &&
  834. ak.className.indexOf('prettyprint') >= 0
  835. ) {
  836. al = true;
  837. break;
  838. }
  839. }
  840. if (!al) {
  841. var af = aj.className.match(/\blinenums\b(?::(\d+))?/);
  842. af = af ? (af[1] && af[1].length ? +af[1] : true) : false;
  843. if (af) {
  844. Q(aj, af);
  845. }
  846. S = { langExtension: ah, sourceNode: aj, numberLines: af };
  847. d(S);
  848. }
  849. }
  850. }
  851. if (X < T.length) {
  852. setTimeout(U, 250);
  853. } else {
  854. if (ad) {
  855. ad();
  856. }
  857. }
  858. }
  859. U();
  860. }
  861. window.prettyPrintOne = y;
  862. window.prettyPrint = b;
  863. window.PR = {
  864. createSimpleLexer: g,
  865. registerLangHandler: c,
  866. sourceDecorator: i,
  867. PR_ATTRIB_NAME: P,
  868. PR_ATTRIB_VALUE: n,
  869. PR_COMMENT: j,
  870. PR_DECLARATION: E,
  871. PR_KEYWORD: z,
  872. PR_LITERAL: G,
  873. PR_NOCODE: N,
  874. PR_PLAIN: F,
  875. PR_PUNCTUATION: L,
  876. PR_SOURCE: J,
  877. PR_STRING: C,
  878. PR_TAG: m,
  879. PR_TYPE: O,
  880. };
  881. })();
  882. PR.registerLangHandler(
  883. PR.createSimpleLexer(
  884. [],
  885. [
  886. [PR.PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
  887. [PR.PR_COMMENT, /^<\!--[\s\S]*?(?:-\->|$)/],
  888. [PR.PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
  889. ['lang-', /^<\?([\s\S]+?)(?:\?>|$)/],
  890. ['lang-', /^<%([\s\S]+?)(?:%>|$)/],
  891. ['lang-', /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
  892. [
  893. 'lang-handlebars',
  894. /^<script\b[^>]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i,
  895. ],
  896. ['lang-js', /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
  897. ['lang-css', /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
  898. ['lang-in.tag', /^(<\/?[a-z][^<>]*>)/i],
  899. [PR.PR_DECLARATION, /^{{[#^>/]?\s*[\w.][^}]*}}/],
  900. [PR.PR_DECLARATION, /^{{&?\s*[\w.][^}]*}}/],
  901. [PR.PR_DECLARATION, /^{{{>?\s*[\w.][^}]*}}}/],
  902. [PR.PR_COMMENT, /^{{![^}]*}}/],
  903. ],
  904. ),
  905. ['handlebars', 'hbs'],
  906. );
  907. PR.registerLangHandler(
  908. PR.createSimpleLexer(
  909. [[PR.PR_PLAIN, /^[ \t\r\n\f]+/, null, ' \t\r\n\f']],
  910. [
  911. [PR.PR_STRING, /^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/, null],
  912. [PR.PR_STRING, /^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/, null],
  913. ['lang-css-str', /^url\(([^\)\"\']*)\)/i],
  914. [
  915. PR.PR_KEYWORD,
  916. /^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,
  917. null,
  918. ],
  919. ['lang-css-kw', /^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],
  920. [PR.PR_COMMENT, /^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],
  921. [PR.PR_COMMENT, /^(?:<!--|-->)/],
  922. [PR.PR_LITERAL, /^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],
  923. [PR.PR_LITERAL, /^#(?:[0-9a-f]{3}){1,2}/i],
  924. [PR.PR_PLAIN, /^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],
  925. [PR.PR_PUNCTUATION, /^[^\s\w\'\"]+/],
  926. ],
  927. ),
  928. ['css'],
  929. );
  930. PR.registerLangHandler(
  931. PR.createSimpleLexer(
  932. [],
  933. [[PR.PR_KEYWORD, /^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]],
  934. ),
  935. ['css-kw'],
  936. );
  937. PR.registerLangHandler(PR.createSimpleLexer([], [[PR.PR_STRING, /^[^\)\"\']+/]]), ['css-str']);