window["PR_SHOULD_USE_CONTINUATION"]=true;window["PR_TAB_WIDTH"]=2;window["PR_normalizedHtml"]=window["PR"]=window["prettyPrintOne"]=window["prettyPrint"]=void 0;window["_pr_isIE6"]=function(){var isIE6=navigator&&navigator.userAgent&&/\bMSIE 6\./.test(navigator.userAgent);window["_pr_isIE6"]=function(){return isIE6};return isIE6};(function(){var FLOW_CONTROL_KEYWORDS="break continue do else for if return while ";var C_KEYWORDS=FLOW_CONTROL_KEYWORDS+"auto case char const default "+"double enum extern float goto int long register short signed sizeof "+"static struct switch typedef union unsigned void volatile ";var COMMON_KEYWORDS=C_KEYWORDS+"catch class delete false import "+"new operator private protected public this throw true try ";var CPP_KEYWORDS=COMMON_KEYWORDS+"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 typeof using virtual wchar_t where ";var JAVA_KEYWORDS=COMMON_KEYWORDS+"boolean byte extends final finally implements import instanceof null "+"native package strictfp super synchronized throws transient ";var CSHARP_KEYWORDS=JAVA_KEYWORDS+"as base by checked decimal delegate descending event "+"fixed foreach from group implicit in interface internal into is lock "+"object out override orderby params readonly ref sbyte sealed "+"stackalloc string select uint ulong unchecked unsafe ushort var ";var JSCRIPT_KEYWORDS=COMMON_KEYWORDS+"debugger eval export function get null set undefined var with "+"Infinity NaN ";var PERL_KEYWORDS="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 ";var PYTHON_KEYWORDS=FLOW_CONTROL_KEYWORDS+"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 ";var RUBY_KEYWORDS=FLOW_CONTROL_KEYWORDS+"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 ";var SH_KEYWORDS=FLOW_CONTROL_KEYWORDS+"case done elif esac eval fi "+"function in local set then until ";var ALL_KEYWORDS=(CPP_KEYWORDS+CSHARP_KEYWORDS+JSCRIPT_KEYWORDS+PERL_KEYWORDS+PYTHON_KEYWORDS+RUBY_KEYWORDS+SH_KEYWORDS);var PR_STRING="str";var PR_KEYWORD="kwd";var PR_COMMENT="com";var PR_TYPE="typ";var PR_LITERAL="lit";var PR_PUNCTUATION="pun";var PR_PLAIN="pln";var PR_TAG="tag";var PR_DECLARATION="dec";var PR_SOURCE="src";var PR_ATTRIB_NAME="atn";var PR_ATTRIB_VALUE="atv";var PR_NOCODE="nocode";function isWordChar(ch){return(ch>="a"&&ch<="z")||(ch>="A"&&ch<="Z")}function spliceArrayInto(inserted,container,containerPosition,countReplaced){inserted.unshift(containerPosition,countReplaced||0);try{container.splice.apply(container,inserted)}finally{inserted.splice(0,2)}}var REGEXP_PRECEDER_PATTERN=function(){var preceders=["!","!=","!==","#","%","%=","&","&&","&&=","&=","(","*","*=","+=",",","-=","->","/","/=",":","::",";","<","<<","<<=","<=","=","==","===",">",">=",">>",">>=",">>>",">>>=","?","@","[","^","^=","^^","^^=","{","|","|=","||","||=","~","break","case","continue","delete","do","else","finally","instanceof","return","throw","try","typeof"];var pattern="(?:"+"(?:(?:^|[^0-9.])\\.{1,3})|"+"(?:(?:^|[^\\+])\\+)|"+"(?:(?:^|[^\\-])-)";for(var i=0;i<preceders.length;++i){var preceder=preceders[i];if(isWordChar(preceder.charAt(0))){pattern+="|\\b"+preceder}else{pattern+="|"+preceder.replace(/([^=<>:&])/g,"\\$1")}}pattern+="|^)\\s*$";return new RegExp(pattern)}();var pr_amp=/&/g;var pr_lt=/</g;var pr_gt=/>/g;var pr_quot=/\"/g;function attribToHtml(str){return str.replace(pr_amp,"&amp;").replace(pr_lt,"&lt;").replace(pr_gt,"&gt;").replace(pr_quot,"&quot;")}function textToHtml(str){return str.replace(pr_amp,"&amp;").replace(pr_lt,"&lt;").replace(pr_gt,"&gt;")}var pr_ltEnt=/&lt;/g;var pr_gtEnt=/&gt;/g;var pr_aposEnt=/&apos;/g;var pr_quotEnt=/&quot;/g;var pr_ampEnt=/&amp;/g;var pr_nbspEnt=/&nbsp;/g;function htmlToText(html){var pos=html.indexOf("&");if(pos<0){return html}for(--pos;(pos=html.indexOf("&#",pos+1))>=0;){var end=html.indexOf(";",pos);if(end>=0){var num=html.substring(pos+3,end);var radix=10;if(num&&num.charAt(0)==="x"){num=num.substring(1);radix=16}var codePoint=parseInt(num,radix);if(!isNaN(codePoint)){html=(html.substring(0,pos)+String.fromCharCode(codePoint)+html.substring(end+1))}}}return html.replace(pr_ltEnt,"<").replace(pr_gtEnt,">").replace(pr_aposEnt,"'").replace(pr_quotEnt,'"').replace(pr_ampEnt,"&").replace(pr_nbspEnt," ")}function isRawContent(node){return"XMP"===node.tagName}function normalizedHtml(node,out){switch(node.nodeType){case 1:var name=node.tagName.toLowerCase();out.push("<",name);for(var i=0;i<node.attributes.length;++i){var attr=node.attributes[i];if(!attr.specified){continue}out.push(" ");normalizedHtml(attr,out)}out.push(">");for(var child=node.firstChild;child;child=child.nextSibling){normalizedHtml(child,out)}if(node.firstChild||!/^(?:br|link|img)$/.test(name)){out.push("</",name,">")}break;case 2:out.push(node.name.toLowerCase(),'="',attribToHtml(node.value),'"');break;case 3:case 4:out.push(textToHtml(node.nodeValue));break}}var PR_innerHtmlWorks=null;function getInnerHtml(node){if(null===PR_innerHtmlWorks){var testNode=document.createElement("PRE");testNode.appendChild(document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));PR_innerHtmlWorks=!/</.test(testNode.innerHTML)}if(PR_innerHtmlWorks){var content=node.innerHTML;if(isRawContent(node)){content=textToHtml(content)}return content}var out=[];for(var child=node.firstChild;child;child=child.nextSibling){normalizedHtml(child,out)}return out.join("")}function makeTabExpander(tabWidth){var SPACES="                ";var charInLine=0;return function(plainText){var out=null;var pos=0;for(var i=0,n=plainText.length;i<n;++i){var ch=plainText.charAt(i);switch(ch){case"\t":if(!out){out=[]}out.push(plainText.substring(pos,i));var nSpaces=tabWidth-(charInLine%tabWidth);charInLine+=nSpaces;for(;nSpaces>=0;nSpaces-=SPACES.length){out.push(SPACES.substring(0,nSpaces))}pos=i+1;break;case"\n":charInLine=0;break;default:++charInLine}}if(!out){return plainText}out.push(plainText.substring(pos));return out.join("")}}var pr_chunkPattern=/(?:[^<]+|<!--[\s\S]*?-->|<!\[CDATA\[([\s\S]*?)\]\]>|<\/?[a-zA-Z][^>]*>|<)/g;var pr_commentPrefix=/^<!--/;var pr_cdataPrefix=/^<\[CDATA\[/;var pr_brPrefix=/^<br\b/i;var pr_tagNameRe=/^<(\/?)([a-zA-Z]+)/;function extractTags(s){var matches=s.match(pr_chunkPattern);var sourceBuf=[];var sourceBufLen=0;var extractedTags=[];if(matches){for(var i=0,n=matches.length;i<n;++i){var match=matches[i];if(match.length>1&&match.charAt(0)==="<"){if(pr_commentPrefix.test(match)){continue}if(pr_cdataPrefix.test(match)){sourceBuf.push(match.substring(9,match.length-3));sourceBufLen+=match.length-12}else{if(pr_brPrefix.test(match)){sourceBuf.push("\n");++sourceBufLen}else{if(match.indexOf(PR_NOCODE)>=0&&isNoCodeTag(match)){var name=match.match(pr_tagNameRe)[2];var depth=1;var j;end_tag_loop:for(j=i+1;j<n;++j){var name2=matches[j].match(pr_tagNameRe);if(name2&&name2[2]===name){if(name2[1]==="/"){if(--depth===0){break end_tag_loop}}else{++depth}}}if(j<n){extractedTags.push(sourceBufLen,matches.slice(i,j+1).join(""));i=j}else{extractedTags.push(sourceBufLen,match)}}else{extractedTags.push(sourceBufLen,match)}}}}else{var literalText=htmlToText(match);sourceBuf.push(literalText);sourceBufLen+=literalText.length}}}return{source:sourceBuf.join(""),tags:extractedTags}}function isNoCodeTag(tag){return !!tag.replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g,' $1="$2$3$4"').match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/)}function appendDecorations(basePos,sourceCode,langHandler,out){if(!sourceCode){return}var job={source:sourceCode,basePos:basePos};langHandler(job);out.push.apply(out,job.decorations)}function createSimpleLexer(shortcutStylePatterns,fallthroughStylePatterns){var shortcuts={};(function(){var allPatterns=shortcutStylePatterns.concat(fallthroughStylePatterns);for(var i=allPatterns.length;--i>=0;){var patternParts=allPatterns[i];var shortcutChars=patternParts[3];if(shortcutChars){for(var c=shortcutChars.length;--c>=0;){shortcuts[shortcutChars.charAt(c)]=patternParts}}}})();var nPatterns=fallthroughStylePatterns.length;var notWs=/\S/;var decorate=function(job){var sourceCode=job.source,basePos=job.basePos;var decorations=[basePos,PR_PLAIN];var lastToken="";var pos=0;var tail=sourceCode;while(tail.length){var style;var token=null;var match;var patternParts=shortcuts[tail.charAt(0)];if(patternParts){match=tail.match(patternParts[1]);token=match[0];style=patternParts[0]}else{for(var i=0;i<nPatterns;++i){patternParts=fallthroughStylePatterns[i];var contextPattern=patternParts[2];if(contextPattern&&!contextPattern.test(lastToken)){continue}match=tail.match(patternParts[1]);if(match){token=match[0];style=patternParts[0];break}}if(!token){style=PR_PLAIN;token=tail.substring(0,1)}}var isEmbedded="lang-"===style.substring(0,5);if(isEmbedded&&!(match&&match[1])){isEmbedded=false;style=PR_SOURCE}var tokenStart=pos;pos+=token.length;tail=tail.substring(token.length);if(style!==PR_COMMENT&&notWs.test(token)){lastToken=token}if(!isEmbedded){decorations.push(basePos+tokenStart,style)}else{var embeddedSource=match[1];var embeddedSourceStart=token.indexOf(embeddedSource);var embeddedSourceEnd=embeddedSourceStart+embeddedSource.length;var lang=style.substring(5);var size=decorations.length-10;appendDecorations(basePos+tokenStart,token.substring(0,embeddedSourceStart),decorate,decorations);appendDecorations(basePos+tokenStart+embeddedSourceStart,embeddedSource,langHandlerForExtension(lang,embeddedSource),decorations);appendDecorations(basePos+tokenStart+embeddedSourceEnd,token.substring(embeddedSourceEnd),decorate,decorations)}}job.decorations=decorations};return decorate}var PR_MARKUP_LEXER=createSimpleLexer([],[[PR_PLAIN,/^[^<?]+/,null],[PR_DECLARATION,/^<!\w[^>]*(?:>|$)/,null],[PR_COMMENT,/^<!--[\s\S]*?(?:-->|$)/,null],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/,null],["lang-",/^<%([\s\S]+?)(?:%>|$)/,null],[PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/,null],["lang-",/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i,null],["lang-js",/^<script\b[^>]*>([\s\S]+?)<\/script\b[^>]*>/i,null],["lang-css",/^<style\b[^>]*>([\s\S]+?)<\/style\b[^>]*>/i,null],[PR_TAG,/^<\/?\w[^<>]*>/,null]]);var PR_SOURCE_CHUNK_PARTS=/^(<[^>]*>)([\s\S]*)(<\/[^>]*>)$/;function tokenizeMarkup(job){PR_MARKUP_LEXER(job);var decorations=job.decorations;var source=job.source;var basePos=job.basePos;for(var i=0;i<decorations.length;i+=2){if(decorations[i+1]===PR_SOURCE){var start,end;start=decorations[i]-basePos;end=i+2<decorations.length?decorations[i+2]-basePos:source.length;var sourceChunk=source.substring(start,end);var match=sourceChunk.match(PR_SOURCE_CHUNK_PARTS);if(match){decorations.splice(i,2,start,PR_TAG,start+match[1].length,PR_SOURCE,start+match[1].length+(match[2]||"").length,PR_TAG)}}}}var PR_TAG_LEXER=createSimpleLexer([[PR_ATTRIB_VALUE,/^\'[^\']*(?:\'|$)/,null,"'"],[PR_ATTRIB_VALUE,/^\"[^\"]*(?:\"|$)/,null,'"'],[PR_PUNCTUATION,/^[<>\/=]+/,null,"<>/="]],[[PR_TAG,/^[\w:\-]+/,/^</],[PR_ATTRIB_VALUE,/^[\w\-]+/,/^=/],[PR_ATTRIB_NAME,/^[\w:\-]+/,null],[PR_PLAIN,/^\s+/,null," \t\r\n"]]);function splitTagAttributes(source,decorations,basePos){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_TAG){var start,end;start=decorations[i]-basePos;end=i+2<decorations.length?decorations[i+2]-basePos:source.length;var chunk=source.substring(start,end);var subJob={source:chunk,basePos:start+basePos};PR_TAG_LEXER(subJob);var subDecorations=subJob.decorations;spliceArrayInto(subDecorations,decorations,i,2);i+=subDecorations.length-2}}}function sourceDecorator(options){var shortcutStylePatterns=[],fallthroughStylePatterns=[];if(options["tripleQuotedStrings"]){shortcutStylePatterns.push([PR_STRING,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(options["multiLineStrings"]){shortcutStylePatterns.push([PR_STRING,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{shortcutStylePatterns.push([PR_STRING,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(options["hashComments"]){shortcutStylePatterns.push([PR_COMMENT,/^#[^\r\n]*/,null,"#"])}if(options["cStyleComments"]){fallthroughStylePatterns.push([PR_COMMENT,/^\/\/[^\r\n]*/,null]);fallthroughStylePatterns.push([PR_COMMENT,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(options["regexLiterals"]){var REGEX_LITERAL=("^/(?=[^/*])"+"(?:[^/\\x5B\\x5C]"+"|\\x5C[\\s\\S]"+"|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+"+"(?:/|$)");fallthroughStylePatterns.push([PR_STRING,new RegExp(REGEX_LITERAL),REGEXP_PRECEDER_PATTERN])}var keywords=options["keywords"].replace(/^\s+|\s+$/g,"");if(keywords.length){fallthroughStylePatterns.push([PR_KEYWORD,new RegExp("^(?:"+keywords.replace(/\s+/g,"|")+")\\b"),null])}shortcutStylePatterns.push([PR_PLAIN,/^\s+/,null," \r\n\t\xA0"]);fallthroughStylePatterns.push([PR_LITERAL,/^@[a-z_$][a-z_$@0-9]*/i,null,"@"],[PR_TYPE,/^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/,null],[PR_PLAIN,/^[a-z_$][a-z_$@0-9]*/i,null],[PR_LITERAL,new RegExp("^(?:"+"0x[a-f0-9]+"+"|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)"+"(?:e[+\\-]?\\d+)?"+")"+"[a-z]*","i"),null,"0123456789"],[PR_PUNCTUATION,/^.[^\s\w\.$@\'\"\`\/\#]*/,null]);return createSimpleLexer(shortcutStylePatterns,fallthroughStylePatterns)}var decorateSource=sourceDecorator({"keywords":ALL_KEYWORDS,"hashComments":true,"cStyleComments":true,"multiLineStrings":true,"regexLiterals":true});function splitSourceAttributes(source,decorations,basePos){var nextValueLang=null;for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];var start,end;if(style===PR_ATTRIB_NAME){start=decorations[i]-basePos;end=i+2<decorations.length?decorations[i+2]-basePos:source.length;var name=source.substring(start,end);if(/^on|^style$/i.test(name)){nextValueLang=/^on/i.test(name.substring(0,2))?"js":"css"}}else{if(style===PR_ATTRIB_VALUE){if(nextValueLang){start=decorations[i]-basePos;end=i+2<decorations.length?decorations[i+2]-basePos:source.length;var attribValue=source.substring(start,end);var attribLen=attribValue.length;var quoted=(attribLen>=2&&/^[\"\']/.test(attribValue)&&(attribValue.charCodeAt(0)===attribValue.charCodeAt(attribLen-1)));var attribSource;var attribSourceStart;var attribSourceEnd;if(quoted){attribSourceStart=start+1;attribSourceEnd=end-1;attribSource=attribValue.substring(1,attribValue.length-1)}else{attribSourceStart=start;attribSourceEnd=end;attribSource=attribValue}var attribJob={source:attribSource,basePos:attribSourceStart+basePos};var langHandler=langHandlerForExtension(nextValueLang,attribSource);langHandler(attribJob);var attribSourceDecorations=attribJob.decorations;if(quoted){attribSourceDecorations.push(attribSourceEnd,PR_ATTRIB_VALUE);spliceArrayInto(attribSourceDecorations,decorations,i+2,0)}else{spliceArrayInto(attribSourceDecorations,decorations,i,2)}}nextValueLang=null}}}}function decorateMarkup(job){tokenizeMarkup(job);var source=job.source,decorations=job.decorations,basePos=job.basePos;splitTagAttributes(source,decorations,basePos);splitSourceAttributes(source,decorations,basePos)}function recombineTagsAndDecorations(job){var sourceText=job.source;var extractedTags=job.extractedTags;var decorations=job.decorations;var html=[];var outputIdx=0;var openDecoration=null;var currentDecoration=null;var tagPos=0;var decPos=0;var tabExpander=makeTabExpander(window["PR_TAB_WIDTH"]);var adjacentSpaceRe=/([\r\n ]) /g;var startOrSpaceRe=/(^| ) /gm;var newlineRe=/\r\n?|\n/g;var trailingSpaceRe=/[ \r\n]$/;var lastWasSpace=true;function emitTextUpTo(sourceIdx){if(sourceIdx>outputIdx){if(openDecoration&&openDecoration!==currentDecoration){html.push("</span>");openDecoration=null}if(!openDecoration&&currentDecoration){openDecoration=currentDecoration;html.push('<span class="',openDecoration,'">')}var htmlChunk=textToHtml(tabExpander(sourceText.substring(outputIdx,sourceIdx))).replace(lastWasSpace?startOrSpaceRe:adjacentSpaceRe,"$1&nbsp;");lastWasSpace=trailingSpaceRe.test(htmlChunk);html.push(htmlChunk.replace(newlineRe,"<br />"));outputIdx=sourceIdx}}while(true){var outputTag;if(tagPos<extractedTags.length){if(decPos<decorations.length){outputTag=extractedTags[tagPos]<=decorations[decPos]}else{outputTag=true}}else{outputTag=false}if(outputTag){emitTextUpTo(extractedTags[tagPos]);if(openDecoration){html.push("</span>");openDecoration=null}html.push(extractedTags[tagPos+1]);tagPos+=2}else{if(decPos<decorations.length){emitTextUpTo(decorations[decPos]);currentDecoration=decorations[decPos+1];decPos+=2}else{break}}}emitTextUpTo(sourceText.length);if(openDecoration){html.push("</span>")}job.prettyPrintedHtml=html.join("")}var langHandlerRegistry={};function registerLangHandler(handler,fileExtensions){for(var i=fileExtensions.length;--i>=0;){var ext=fileExtensions[i];if(!langHandlerRegistry.hasOwnProperty(ext)){langHandlerRegistry[ext]=handler}else{if("console" in window){console.warn("cannot override language handler %s",ext)}}}}function langHandlerForExtension(extension,source){if(!(extension&&langHandlerRegistry.hasOwnProperty(extension))){extension=/^\s*</.test(source)?"default-markup":"default-code"}return langHandlerRegistry[extension]}registerLangHandler(decorateSource,["default-code"]);registerLangHandler(decorateMarkup,["default-markup","htm","html","mxml","xhtml","xml","xsl"]);registerLangHandler(sourceDecorator({"keywords":CPP_KEYWORDS,"hashComments":true,"cStyleComments":true}),["c","cc","cpp","cxx","cyc","m"]);registerLangHandler(sourceDecorator({"keywords":CSHARP_KEYWORDS,"hashComments":true,"cStyleComments":true}),["cs"]);registerLangHandler(sourceDecorator({"keywords":JAVA_KEYWORDS,"cStyleComments":true}),["java"]);registerLangHandler(sourceDecorator({"keywords":SH_KEYWORDS,"hashComments":true,"multiLineStrings":true}),["bsh","csh","sh"]);registerLangHandler(sourceDecorator({"keywords":PYTHON_KEYWORDS,"hashComments":true,"multiLineStrings":true,"tripleQuotedStrings":true}),["cv","py"]);registerLangHandler(sourceDecorator({"keywords":PERL_KEYWORDS,"hashComments":true,"multiLineStrings":true,"regexLiterals":true}),["perl","pl","pm"]);registerLangHandler(sourceDecorator({"keywords":RUBY_KEYWORDS,"hashComments":true,"multiLineStrings":true,"regexLiterals":true}),["rb"]);registerLangHandler(sourceDecorator({"keywords":JSCRIPT_KEYWORDS,"cStyleComments":true,"regexLiterals":true}),["js"]);function applyDecorator(job){var sourceCodeHtml=job.sourceCodeHtml;var opt_langExtension=job.langExtension;job.prettyPrintedHtml=sourceCodeHtml;try{var sourceAndExtractedTags=extractTags(sourceCodeHtml);var source=sourceAndExtractedTags.source;job.source=source;job.basePos=0;job.extractedTags=sourceAndExtractedTags.tags;langHandlerForExtension(opt_langExtension,source)(job);recombineTagsAndDecorations(job)}catch(e){if("console" in window){console.log(e);console.trace()}}}function prettyPrintOne(sourceCodeHtml,opt_langExtension){var job={sourceCodeHtml:sourceCodeHtml,langExtension:opt_langExtension};applyDecorator(job);return job.prettyPrintedHtml}function prettyPrint(opt_whenDone){var isIE6=window["_pr_isIE6"]();var codeSegments=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),document.getElementsByTagName("xmp")];var elements=[];for(var i=0;i<codeSegments.length;++i){for(var j=0,n=codeSegments[i].length;j<n;++j){elements.push(codeSegments[i][j])}}codeSegments=null;var clock=Date;if(!clock["now"]){clock={"now":function(){return(new Date).getTime()}}}var k=0;var prettyPrintingJob;function doWork(){var endTime=(window["PR_SHOULD_USE_CONTINUATION"]?clock.now()+250:Infinity);for(;k<elements.length&&clock.now()<endTime;k++){var cs=elements[k];if(cs.className&&cs.className.indexOf("prettyprint")>=0){var langExtension=cs.className.match(/\blang-(\w+)\b/);if(langExtension){langExtension=langExtension[1]}var nested=false;for(var p=cs.parentNode;p;p=p.parentNode){if((p.tagName==="pre"||p.tagName==="code"||p.tagName==="xmp")&&p.className&&p.className.indexOf("prettyprint")>=0){nested=true;break}}if(!nested){var content=getInnerHtml(cs);content=content.replace(/(?:\r\n?|\n)$/,"");prettyPrintingJob={sourceCodeHtml:content,langExtension:langExtension,sourceNode:cs};applyDecorator(prettyPrintingJob);replaceWithPrettyPrintedHtml()}}}if(k<elements.length){setTimeout(doWork,250)}else{if(opt_whenDone){opt_whenDone()}}}function replaceWithPrettyPrintedHtml(){var newContent=prettyPrintingJob.prettyPrintedHtml;if(!newContent){return}var cs=prettyPrintingJob.sourceNode;if(!isRawContent(cs)){cs.innerHTML=newContent}else{var pre=document.createElement("PRE");for(var i=0;i<cs.attributes.length;++i){var a=cs.attributes[i];if(a.specified){var aname=a.name.toLowerCase();if(aname==="class"){pre.className=a.value}else{pre.setAttribute(a.name,a.value)}}}pre.innerHTML=newContent;cs.parentNode.replaceChild(pre,cs);cs=pre}if(isIE6&&cs.tagName==="PRE"){var lineBreaks=cs.getElementsByTagName("br");for(var j=lineBreaks.length;--j>=0;){var lineBreak=lineBreaks[j];lineBreak.parentNode.replaceChild(document.createTextNode("\r"),lineBreak)}}}doWork()}window["PR_normalizedHtml"]=normalizedHtml;window["prettyPrintOne"]=prettyPrintOne;window["prettyPrint"]=prettyPrint;window["PR"]={"createSimpleLexer":createSimpleLexer,"registerLangHandler":registerLangHandler,"sourceDecorator":sourceDecorator,"PR_ATTRIB_NAME":PR_ATTRIB_NAME,"PR_ATTRIB_VALUE":PR_ATTRIB_VALUE,"PR_COMMENT":PR_COMMENT,"PR_DECLARATION":PR_DECLARATION,"PR_KEYWORD":PR_KEYWORD,"PR_LITERAL":PR_LITERAL,"PR_NOCODE":PR_NOCODE,"PR_PLAIN":PR_PLAIN,"PR_PUNCTUATION":PR_PUNCTUATION,"PR_SOURCE":PR_SOURCE,"PR_STRING":PR_STRING,"PR_TAG":PR_TAG,"PR_TYPE":PR_TYPE}})();PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],[PR.PR_STRING,/^\([^\)\"\']*\)/,/\burl/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*(?=\s*:)/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:<!--|-->)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\x0B\x0C\r ]+/,null,"\t\n\x0B\x0C\r "],[PR.PR_STRING,/^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,null,'"'],[PR.PR_STRING,/^\'(?:[^\'\\\n\x0C\r]|\\[^&])\'?/,null,"'"],[PR.PR_LITERAL,/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,null,"0123456789"]],[[PR.PR_COMMENT,/^(?:(?:--+(?:[^\r\n\x0C_:\"\'\(\),;\[\]`\{\}][^\r\n\x0C_]*)?(?=[\x0C\r\n]|$))|(?:\{-(?:[^-]|-+[^-\}])*-\}))/],[PR.PR_KEYWORD,/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^a-zA-Z0-9\']|$)/,null],[PR.PR_PLAIN,/^(?:[A-Z][\w\']*\.)*[a-zA-Z][\w\']*/],[PR.PR_PUNCTUATION,/^[^\t\n\x0B\x0C\r a-zA-Z0-9\'\"]+/]]),["hs"]);PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(/,null,"("],["clo",/^\)/,null,")"],[PR.PR_COMMENT,/^;[^\r\n]*/,null,";"],[PR.PR_PLAIN,/^[\t\n\r \xA0]+/,null,"\t\n\r \xA0"],[PR.PR_STRING,/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[[PR.PR_KEYWORD,/^(?:block|c[ad]+r|catch|cons|defun|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,null],[PR.PR_LITERAL,/^[+\-]?(?:\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[eEdD][+\-]?\d+)?)/],[PR.PR_LITERAL,/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],[PR.PR_PLAIN,/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],[PR.PR_PUNCTUATION,/^[^\w\t\n\r \xA0()\"\\\';]+/]]),["cl","el","lisp","scm"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\r \xA0]+/,null,"\t\n\r \xA0"],[PR.PR_STRING,/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/,null,"\"'"]],[[PR.PR_COMMENT,/^--(?:\[(=*)\[[\s\S]*?(?:\]\1\]|$)|[^\r\n]*)/],[PR.PR_STRING,/^\[(=*)\[[\s\S]*?(?:\]\1\]|$)/],[PR.PR_KEYWORD,/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,null],[PR.PR_LITERAL,/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],[PR.PR_PLAIN,/^[a-z_]\w*/i],[PR.PR_PUNCTUATION,/^[^\w\t\n\r \xA0]+/]]),["lua"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\r \xA0]+/,null,"\t\n\r \xA0"],[PR.PR_COMMENT,/^#(?:if[\t\n\r \xA0]+(?:[a-z_$][\w\']*|``[^\r\n\t`]*(?:``|$))|else|endif|light)/i,null,"#"],[PR.PR_STRING,/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/,null,"\"'"]],[[PR.PR_COMMENT,/^(?:\/\/[^\r\n]*|\(\*[\s\S]*?\*\))/],[PR.PR_KEYWORD,/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/],[PR.PR_LITERAL,/^[+\-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],[PR.PR_PLAIN,/^(?:[a-z_]\w*[!?#]?|``[^\r\n\t`]*(?:``|$))/i],[PR.PR_PUNCTUATION,/^[^\t\n\r \xA0\"\'\w]+/]]),["fs","ml"]);PR.registerLangHandler(PR.sourceDecorator({keywords:("bool bytes default double enum extend extensions false fixed32 "+"fixed64 float group import int32 int64 max message option "+"optional package repeated required returns rpc service "+"sfixed32 sfixed64 sint32 sint64 string syntax to true uint32 "+"uint64"),cStyleComments:true}),["proto"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\r \xA0]+/,null,"\t\n\r \xA0"],[PR.PR_STRING,/^(?:"(?:[^\"\\]|\\.)*"|'(?:[^\'\\]|\\.)*')/,null,"\"'"]],[[PR.PR_COMMENT,/^(?:--[^\r\n]*|\/\*[\s\S]*?(?:\*\/|$))/],[PR.PR_KEYWORD,/^(?:ADD|ALL|ALTER|AND|ANY|AS|ASC|AUTHORIZATION|BACKUP|BEGIN|BETWEEN|BREAK|BROWSE|BULK|BY|CASCADE|CASE|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COMMIT|COMPUTE|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATABASE|DBCC|DEALLOCATE|DECLARE|DEFAULT|DELETE|DENY|DESC|DISK|DISTINCT|DISTRIBUTED|DOUBLE|DROP|DUMMY|DUMP|ELSE|END|ERRLVL|ESCAPE|EXCEPT|EXEC|EXECUTE|EXISTS|EXIT|FETCH|FILE|FILLFACTOR|FOR|FOREIGN|FREETEXT|FREETEXTTABLE|FROM|FULL|FUNCTION|GOTO|GRANT|GROUP|HAVING|HOLDLOCK|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IN|INDEX|INNER|INSERT|INTERSECT|INTO|IS|JOIN|KEY|KILL|LEFT|LIKE|LINENO|LOAD|NATIONAL|NOCHECK|NONCLUSTERED|NOT|NULL|NULLIF|OF|OFF|OFFSETS|ON|OPEN|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|OPTION|OR|ORDER|OUTER|OVER|PERCENT|PLAN|PRECISION|PRIMARY|PRINT|PROC|PROCEDURE|PUBLIC|RAISERROR|READ|READTEXT|RECONFIGURE|REFERENCES|REPLICATION|RESTORE|RESTRICT|RETURN|REVOKE|RIGHT|ROLLBACK|ROWCOUNT|ROWGUIDCOL|RULE|SAVE|SCHEMA|SELECT|SESSION_USER|SET|SETUSER|SHUTDOWN|SOME|STATISTICS|SYSTEM_USER|TABLE|TEXTSIZE|THEN|TO|TOP|TRAN|TRANSACTION|TRIGGER|TRUNCATE|TSEQUAL|UNION|UNIQUE|UPDATE|UPDATETEXT|USE|USER|VALUES|VARYING|VIEW|WAITFOR|WHEN|WHERE|WHILE|WITH|WRITETEXT)(?=[^\w-]|$)/i,null],[PR.PR_LITERAL,/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],[PR.PR_PLAIN,/^[a-z_][\w-]*/i],[PR.PR_PUNCTUATION,/^[^\w\t\n\r \xA0]+/]]),["sql"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\r \xA0\u2028\u2029]+/,null,"\t\n\r \xA0\u2028\u2029"],[PR.PR_STRING,/^(?:[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})(?:[\"\u201C\u201D][cC]|$)|[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})*(?:[\"\u201C\u201D]|$))/,null,'"\u201C\u201D'],[PR.PR_COMMENT,/^[\'\u2018\u2019][^\r\n\u2028\u2029]*/,null,"'\u2018\u2019"]],[[PR.PR_KEYWORD,/^(?:AddHandler|AddressOf|Alias|And|AndAlso|Ansi|As|Assembly|Auto|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|CBool|CByte|CChar|CDate|CDbl|CDec|Char|CInt|Class|CLng|CObj|Const|CShort|CSng|CStr|CType|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else|ElseIf|End|EndIf|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get|GetType|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|Let|Lib|Like|Long|Loop|Me|Mod|Module|MustInherit|MustOverride|MyBase|MyClass|Namespace|New|Next|Not|NotInheritable|NotOverridable|Object|On|Option|Optional|Or|OrElse|Overloads|Overridable|Overrides|ParamArray|Preserve|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|Select|Set|Shadows|Shared|Short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TypeOf|Unicode|Until|Variant|Wend|When|While|With|WithEvents|WriteOnly|Xor|EndIf|GoSub|Let|Variant|Wend)\b/i,null],[PR.PR_COMMENT,/^REM[^\r\n\u2028\u2029]*/i],[PR.PR_LITERAL,/^(?:True\b|False\b|Nothing\b|\d+(?:E[+\-]?\d+[FRD]?|[FRDSIL])?|(?:&H[0-9A-F]+|&O[0-7]+)[SIL]?|\d*\.\d+(?:E[+\-]?\d+)?[FRD]?|#\s+(?:\d+[\-\/]\d+[\-\/]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)?|\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)\s+#)/i],[PR.PR_PLAIN,/^(?:(?:[a-z]|_\w)\w*|\[(?:[a-z]|_\w)\w*\])/i],[PR.PR_PUNCTUATION,/^[^\w\t\n\r \"\'\[\]\xA0\u2018\u2019\u201C\u201D\u2028\u2029]+/],[PR.PR_PUNCTUATION,/^(?:\[|\])/]]),["vb","vbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\r \xA0a-gi-z0-9]+/,null,"\t\n\r \xA0abcdefgijklmnopqrstuvwxyz0123456789"],[PR.PR_PUNCTUATION,/^[=*~\^\[\]]+/,null,"=*~^[]"]],[[PR.PR_KEYWORD,/^#[a-z]+\b/,/(?:^|[\r\n])$/],[PR.PR_LITERAL,/^(?:[A-Z][a-z][a-z0-9]+[A-Z][a-z][a-zA-Z0-9]+)\b/],["lang-",/^\{\{\{([\s\S]+?)\}\}\}/],["lang-",/^`([^\r\n`]+)`/],[PR.PR_STRING,/^https?:\/\/[^\/?#\s]*(?:\/[^?#\s]*)?(?:\?[^#\s]*)?(?:#\S*)?/i],[PR.PR_PLAIN,/^[\s\S][^#=*~^A-Zh\{`\[]+/]]),["wiki"]);