{"version":3,"sources":["yasr.min.js"],"names":["e","exports","module","define","amd","f","window","global","self","YASR","t","n","r","s","o","u","a","require","i","Error","code","l","call","length",1,"./main.js",2,"S","$","jQuery","d","document","h","drag","tables","count","ID","PX","SIGNATURE","I","parseInt","M","Math","ie","navigator","userAgent","indexOf","sessionStorage","append","init","tb","options","disable","destroy","id","attr","p","postbackSafe","is","addClass","before","opt","g","c","w","width","gc","prev","marginLeft","css","marginRight","cs","cellSpacing","currentStyle","borderSpacing","b","border","borderLeftWidth","createGrips","removeClass","remove","th","find","cg","ln","memento","each","this","lastChild","push","removeAttr","bind","onGripMouseDown","gripInnerHtml","hoverCursor","data","syncGrips","not","m","aux","flush","split","eq","left","offset","outerWidth","height","headerOnly","outerHeight","syncCols","isOver","inc","x","c2","w2","onGripDrag","originalEvent","touches","pageX","ox","mw","minWidth","max","position","min","liveDrag","cb","onDrag","currentTarget","onGripDragOver","unbind","draggingClass","onResize","dragCursor","round","fn","extend","colResizable","defaults","jquery","undefined",3,"RegExp","escape","replace","csv","separator","delimiter","headers","hooks","castToScalar","value","state","hasDot","isNaN","test","parseFloat","integer","parsers","parse","endOfEntry","start","rowNum","entry","colNum","onParseEntry","hookVal","end","exit","endOfValue","onParseValue","hook","escSeparator","escDelimiter","match","matchSrc","source","m0","splitLines","endOfLine","entries","prevChar","substr","parseEntry","toArray","callback","config","toArrays","toObjects","lines","headerOptions","headerLine","len","object","j","fromArrays","arrays","escaper","experimental","output","fromObjects2CSV","objects","csvEntry2Array","csv2Array","csv2Dictionary",4,"EventEmitter","_events","_maxListeners","isFunction","arg","isNumber","isObject","isUndefined","prototype","defaultMaxListeners","setMaxListeners","TypeError","emit","type","er","handler","args","listeners","error","arguments","Array","apply","slice","addListener","listener","newListener","warned","console","trace","on","once","removeListener","fired","list","splice","removeAllListeners","key","ret","listenerCount","emitter",5,"mod","CodeMirror","findMatchingBracket","cm","where","strict","line","getLineHandle","pos","ch","matching","text","charAt","dir","style","getTokenTypeAt","Pos","found","scanForBracket","from","to","forward","maxScanLen","maxScanLineLength","maxScanLines","stack","re","bracketRegex","lineEnd","lastLine","firstLine","lineNo","getLine","pop","matchBrackets","autoclear","maxHighlightLen","maxHighlightLineLength","marks","ranges","listSelections","empty","head","markText","className","ie_lt8","focused","display","input","focus","clear","operation","setTimeout","doMatchBrackets","currentlyHighlighted","documentMode","(",")","[","]","{","}","defineOption","val","old","Init","off","defineExtension","codemirror",6,"registerHelper","findOpening","openCh","at","pass","lineText","lastIndexOf","tokenType","startCh","startToken","endToken","endCh","outer","nextOpen","nextClose","hasImport","getTokenAt","string","semi","has","next","clipPos","hasInclude",7,"doFold","force","getRange","allowFolded","range","finder","minSize","findMarksAt","__isFold","cleared","getOption","myWidget","makeWidget","myRange","e_preventDefault","replacedWith","clearOnEnter","signal","widget","createTextNode","createElement","appendChild","name","editorOptions","foldOptions","defaultOptions","newFoldFunction","rangeFinder","commands","toggleFold","foldCode","getCursor","fold","unfold","foldAll","unfoldAll","funcs","helpers","getHelpers","cur","auto","minFoldSize","scanUp",8,"State","parseOptions","opts","gutter","indicatorOpen","indicatorFolded","isFolded","marker","spec","elt","cloneNode","updateFoldInfo","foldGutter","foldOption","func","eachLine","mark","setGutterMarker","updateInViewport","vp","getViewport","onGutterClick","onChange","clearTimeout","changeUpdate","foldOnChangeTimeSpan","onViewportChange","updateViewportTimeSpan","onFold","clearGutter","./foldcode",9,"cmp","Iter","tagAt","iter","nextLine","prevLine","toTagEnd","gt","lastSlash","selfClose","toTagStart","lt","xmlTagStart","lastIndex","exec","index","toNextTag","toPrevTag","findMatchingClose","tag","startLine","findMatchingOpen","endLine","nameStartChar","nameChar","openTag","close","findMatchingTag","here","open","findEnclosingTag","scanForClosingTag",10,"defineMode","parserConfig","readRegexp","stream","escaped","inSet","tp","cont","content","tokenBase","tokenize","tokenString","eat","eatWhile","tokenComment","skipToEnd","lastType","isOperatorChar","current","tokenQuasi","wordRE","word","known","keywords","propertyIsEnumerable","quote","jsonldMode","peek","isJsonldKeyword","maybeEnd","findFatArrow","fatArrowAt","arrow","depth","sawSomething","bracket","brackets","JSLexical","indented","column","align","info","inScope","varname","v","localVars","cx","context","vars","parseJS","cc","marked","lexical","hasOwnProperty","combinator","jsonMode","expression","statement","lex","register","inList","globalVars","pushcontext","defaultVars","popcontext","pushlex","result","indent","poplex","expect","wanted","exp","vardef","block","maybeelse","functiondef","forspec","maybelabel","funarg","afterModule","afterExport","afterImport","expressionInner","expressionNoComma","noComma","body","arrowBodyNoComma","arrowBody","commasep","pattern","maybeop","maybeoperatorNoComma","maybeoperatorComma","atomicTypes","maybeexpressionNoComma","maybeexpression","comprehension","arrayLiteral","contCommasep","objprop","quasi","me","expr","property","continueQuasi","getterSetter","afterprop","what","proceed","maybetype","isTS","typedef","maybeAssign","vardefCont","proppattern","_type","forspec1","forspec2","formaybeinof","forspec3","classNameAfter","classBody","classGetterSetter","maybeFrom","importSpec","maybeArrayComprehension","isContinuedStatement","textAfter","indentUnit","statementIndent","jsonld","json","typescript","wordCharacters","kw","A","B","C","operator","atom","jsKeywords","if","while","with","else","do","try","finally","return","break","continue","new","delete","throw","debugger","var","const","let","function","catch","for","switch","case","default","in","typeof","instanceof","true","false","null","NaN","Infinity","class","super","yield","export","import","extends","tsKeywords","interface","constructor","public","private","protected","static","number","bool","any","variable","regexp","jsonld-keyword","startState","basecolumn","token","sol","indentation","eatSpace","Pass","firstChar","closing","doubleIndentSwitch","electricInput","blockCommentStart","blockCommentEnd","lineComment","helperType","defineMIME",11,"inText","chain","parser","inBlock","doctype","inTag","ok","baseState","tagName","tagStart","inAttribute","stringStartCol","closure","eol","isInAttribute","terminator","Context","startOfLine","Kludges","doNotIndent","noIndent","popContext","maybePopContext","nextTagName","parentTagName","contextGrabbers","tagNameState","closeTagNameState","setStyle","attrState","implicitlyClosed","closeState","closeStateErr","_stream","attrEqState","autoSelfClosers","attrValueState","allowMissing","attrContinuedState","allowUnquoted","multilineTagIndentFactor","multilineTagIndentPastTag","htmlMode","area","base","br","col","command","embed","frame","hr","img","keygen","link","meta","param","track","wbr","menuitem","dd","li","optgroup","option","rp","rt","tbody","td","tfoot","tr","dt","address","article","aside","blockquote","div","dl","fieldset","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","menu","nav","ol","pre","section","table","ul","thead","caseFold","alignCDATA","fullLine","tagAfter","grabbers","configuration","mimeModes",12,"callWithJQuery","pivotModule","pivotUtilities","d3_renderers","Treemap","pivotData","addToTree","color","ref","rowKey","tree","treemap","localeStrings","d3","children","path","child","newChild","shift","getRowKeys","getAggregator","scale","category10","layout","size","sticky","select","datum","selectAll","padding","nodes","enter","y","dx","dy",13,"makeGoogleChart","chartType","extraOptions","agg","base1","colKey","colKeys","dataArray","dataTable","fullAggName","groupByTitle","hAxisTitle","len1","numCharsInHAxis","row","rowKeys","title","tree2","vAxisTitle","wrapper","vs","by","gchart","innerWidth","innerHeight","getColKeys","aggregatorName","valAttrs","join","results","unshift","format","google","visualization","DataTable","addColumn","colAttrs","rowAttrs","role","addRows","isNumeric","toPrecision","toFixed","arrayToDataTable","hAxis","slantedText","vAxis","tooltip","textStyle","fontName","fontSize","minValue","legend","chartArea","ChartWrapper","draw","editor","ChartEditor","events","getChartWrapper","openDialog","gchart_renderers","Line Chart","Bar Chart","Stacked Bar Chart","isStacked","Area Chart","Scatter Chart",14,"win","isLocalStorageNameSupported","localStorageName","err","ieKeyFix","forbiddenCharsRegex","storage","store","doc","scriptTag","disabled","version","set","get","defaultVal","transact","transactionFn","getAll","forEach","serialize","JSON","stringify","deserialize","setItem","getItem","removeItem","documentElement","addBehavior","storageOwner","storageContainer","ActiveXObject","write","frames","withIEStorage","storeFunction","load","removeChild","setAttribute","save","getAttribute","removeAttribute","attributes","XMLDocument","testKey","enabled","Function",15,"description","main","repository","url","licenses","author","maintainers","email","bugs","homepage","dependencies","readme","readmeFilename","_id","_from",16,"log","svg","yasgui-utils","nestedExists","obj","../package.json","./storage.js","./svg.js",17,"times","day","month","year","root","XMLSerializer","serializeToString","time","Date","getTime","removeAll","filter",18,"parent","svgString","el","getElement","DOMParser","dom","parseFromString","svgContainer",19,"license","devDependencies","bootstrap-sass","browserify","browserify-shim","browserify-transform-tools","exorcist","gulp","gulp-autoprefixer","gulp-bump","gulp-concat","gulp-connect","gulp-cssimport","gulp-embedlr","gulp-filter","gulp-git","gulp-html-replace","gulp-jsvalidate","gulp-livereload","gulp-minify-css","gulp-notify","gulp-rename","gulp-sass","gulp-sourcemaps","gulp-streamify","gulp-tag-version","gulp-uglify","node-sass","require-dir","run-sequence","vinyl-buffer","vinyl-source-stream","vinyl-transform","watchify","yasgui-yasqe","web","datatables","pivottable","jquery-ui","transform","optionalShim","../../lib/codemirror","jquery-ui/sortable",20,"lineBreak","variables","querySolutions","bindings","createHeader","addValueToString","csvString","createBody","addQuerySolutionToString","querySolution","needToQuoteString","needQuoting",21,"yasr","container","appendTo","resultsContainer","booleanVal","getBoolean","imgId","textVal","canHandleResults","hideFromSelection","getPriority","YASR-boolean","./imgs.js",22,"useGoogleCharts","outputPlugins","drawOutputSelector","drawDownloadIcon","getUsedPrefixes","persistency","prefix","closest","outputSelector","maxSize",23,"$container","getTryBtn","$tryBtn","tryQueryLink","click","blur","getException","$header","status","statusText","responseText","corsMessage",24,"GoogleTypeException","foundTypes","varName","toString","toHtml",25,"loadingMain","loadingFailed","loader","loadScript","location","protocol","timeout","maxTimeout","startTime","checkAndWait","googleLoad","packages","script","readyState","onreadystatechange","onload","src",26,"utils","chartWrapper","initEditor","tmp","getDataTable","setDataTable","chartConfig","toJSON","containerId","setOption","updateHeader","priority","getPersistentSettings","motionChartState","setPersistentSettings","persSettings","getVariables","getDownloadInfo","svgEl","getContent","outerHTML","clone","html","filename","contentType","buttonTitle","$table","tableToCsv","getEmbedHtml","htmlString","doDraw","wrapperId","jsonResults","getAsJson","getGoogleTypeForBindings","warn","usedPrefixes","binding","columnId","castGoogleType","getColumnType","addRow","getChartType","motionChart","getChart","getState","persistencyId","./exceptions.js","./gChartLoader.js","./utils.js",27,"cross","check","unsorted","sortDesc","sortAsc","download","move","fullscreen","smallscreen",28,"./tableToCsv.js",29,"addRowToString","rowArray","$el","rowspans","totalColCount","rowId","$tr","htmlColId","actualColId","rowSpan","$cell","colspan","rowspan",30,"queryResults","getPersistencyId","postfix","plugins","pluginName","downloadIcon","embedButton","outputPlugin","prop","fill","show","hide","selectedOutput","selectedOutputPriority","unsupportedOutputs","tryOutput","disableOutputs","outputToDraw","outputs","outputName","somethingDrawn","setResponse","dataOrJqXhr","textStatus","jqXhrOrErrorString","exception","resultsId","getOriginalResponseAsString","getAsStoreObject","$toggableWarning","$toggableWarningClose","$toggableWarningMsg","warning","prependTo","blobDownloadSupported","checkBlobDownloadSupported","windowUrl","URL","webkitURL","mozURL","msURL","Blob","embedBtn","drawHeader","btnGroup","plugin","button","stringToUrl","blob","createObjectURL","currentPlugin","downloadInfo","downloadUrl","downloadMockLink","href","fireClick","drawFullscreenButton","drawSmallscreenButton","drawEmbedButton","event","embedLink","stopPropagation","popup","prePopup","$this","mouseup","positions","top","persistentId","settings","fromStorage","deprId","isArray","registerOutput","./boolean.js","./defaults.js","./error.js","./gchart.js","./jquery/extendJquery.js","./parsers/wrapper.js","./pivot.js","./rawResponse.js","./table.js",31,"queryResponse","./dlv.js",32,"detectType","getBindings","rowIt","colIt","detectedType","isBoolean","varsFetched","../../lib/jquery.csv-0.71.js",33,34,35,"xml","tsv","origResponse","errorString","toLowerCase","getResponseHeader","ct","trim","response","getParserFromContentType","doLuckyGuess","getOriginalResponse","responseString","getType","arg1","arg2","arg3","getOriginalContentType","./csv.js","./json.js","./tsv.js","./xml.js",36,"parseHead","node","headNodeIt","childNodes","headNode","nodeName","parseResults","resultIt","resultNode","jsonResult","bindingIt","bindingNode","bindingInfIt","bindingInf","innerHTML","dataType","datatype","parseBoolean","mainXml","parseXML","isXMLDoc",37,"yUtils","imgs","pivotUI","useD3Chart","renderers","$pivotWrapper","mergeLabelPostfix","getShownVariables","mergeLabelsWithUris","shownVariables","substring","formatForPivot","rowObj","uriToPrefixed","validatePivotTableOptions","pivotOptions","keepColsAndRows","cols","pivotOptionse","rows","rendererName","onRefresh","pivotObj","pivotTable","vals","openGchartBtn","dblclick","originalRefresh","pivot","icon","replaceWith","prepend","newSettings","YASR-rawResponse","../node_modules/pivottable/dist/d3_renderers.js","../node_modules/pivottable/dist/gchart_renderers.js",38,"cmOptions","mode","refresh","readOnly","lineNumbers","lineWrapping","gutters","codemirror/addon/edit/matchbrackets.js","codemirror/addon/fold/brace-fold.js","codemirror/addon/fold/foldcode.js","codemirror/addon/fold/foldgutter.js","codemirror/addon/fold/xml-fold.js","codemirror/mode/javascript/javascript.js","codemirror/mode/xml/xml.js",39,"yutils","tableLengthPersistencyId","tableLength","getRows","colId","sparqlVar","getCellContent","addEvents","drawSvgIcons","callbacks","handlers","delegate","onCellClick","onCellMouseEnter","tdEl","fetchTitlesFromPreflabel","addPrefLabel","onCellMouseLeave","dataTableConfig","datatable","columns","getColumns","pLength","pageLength","sortings","sorting","sorting_asc","sorting_desc","svgDiv","formatLiteral","literalBinding","stringRepresentation","escapeHtmlEntities","xmlSchemaNs","visibleString","postFix","addEmptyTitle","encodeURIComponent","success","label","fail","includeVariable","variableToCheck","visible","autoWidth","order","lengthMenu","lengthChange","pagingType","drawCallback","oSettings","aiDisplay","aoData","nTr","activePaginateButton","nTableWrapper","columnDefs","orderable","targets","YASR-table","jquery-datatables","../lib/colResizable-1.4.js","./bindingsToCsv.js",40,"unescaped","prefixes","uri","getGoogleTypeForBinding","types","typeCount","googleType","Number","date","parseXmlSchemaDate","$els","dispatchEvent","oEvent","createEvent","initMouseEvent","fireEvent","dateString"],"mappings":"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","file":"yasr.min.js","sourcesContent":["!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.YASR=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o0;\n\tvar S;\n\ttry{S = sessionStorage;}catch(e){}\t//Firefox crashes when executed as local file system\n\t\n\t//append required CSS rules \n\th.append(\"\");\n\n\t\n\t/**\n\t * Function to allow column resizing for table objects. It is the starting point to apply the plugin.\n\t * @param {DOM node} tb - refrence to the DOM table object to be enhanced\n\t * @param {Object} options\t- some customization values\n\t */\n\tvar init = function( tb, options){\t\n\t\tvar t = $(tb);\t\t\t\t\t\t\t\t\t\t//the table object is wrapped\n\t\tif(options.disable) return destroy(t);\t\t\t\t//the user is asking to destroy a previously colResized table\n\t\tvar\tid = t.id = t.attr(ID) || SIGNATURE+count++;\t//its id is obtained, if null new one is generated\t\t\n\t\tt.p = options.postbackSafe; \t\t\t\t\t\t//shortcut to detect postback safe \t\t\n\t\tif(!t.is(\"table\") || tables[id]) return; \t\t\t//if the object is not a table or if it was already processed then it is ignored.\n\t\tt.addClass(SIGNATURE).attr(ID, id).before('
');\t//the grips container object is added. Signature class forces table rendering in fixed-layout mode to prevent column's min-width\n\t\tt.opt = options; t.g = []; t.c = []; t.w = t.width(); t.gc = t.prev();\t//t.c and t.g are arrays of columns and grips respectively\t\t\t\t\n\t\tif(options.marginLeft) t.gc.css(\"marginLeft\", options.marginLeft); \t//if the table contains margins, it must be specified\n\t\tif(options.marginRight) t.gc.css(\"marginRight\", options.marginRight); \t//since there is no (direct) way to obtain margin values in its original units (%, em, ...)\n\t\tt.cs = I(ie? tb.cellSpacing || tb.currentStyle.borderSpacing :t.css('border-spacing'))||2;\t//table cellspacing (not even jQuery is fully cross-browser)\n\t\tt.b = I(ie? tb.border || tb.currentStyle.borderLeftWidth :t.css('border-left-width'))||1;\t//outer border width (again cross-browser isues)\n\t\t// if(!(tb.style.width || tb.width)) t.width(t.width()); //I am not an IE fan at all, but it is a pitty that only IE has the currentStyle attribute working as expected. For this reason I can not check easily if the table has an explicit width or if it is rendered as \"auto\"\n\t\ttables[id] = t; \t//the table object is stored using its id as key\t\n\t\tcreateGrips(t);\t\t//grips are created\n\t\n\t};\n\n\n\t/**\n\t * This function allows to remove any enhancements performed by this plugin on a previously processed table.\n\t * @param {jQuery ref} t - table object\n\t */\n\tvar destroy = function(t){\n\t\tvar id=t.attr(ID), t=tables[id];\t\t//its table object is found\n\t\tif(!t||!t.is(\"table\")) return;\t\t\t//if none, then it wasnt processed\t \n\t\tt.removeClass(SIGNATURE).gc.remove();\t//class and grips are removed\n\t\tdelete tables[id];\t\t\t\t\t\t//clean up data\n\t};\n\n\n\t/**\n\t * Function to create all the grips associated with the table given by parameters \n\t * @param {jQuery ref} t - table object\n\t */\n\tvar createGrips = function(t){\t\n\t\n\t\tvar th = t.find(\">thead>tr>th,>thead>tr>td\");\t//if table headers are specified in its semantically correct tag, are obtained\n\t\tif(!th.length) th = t.find(\">tbody>tr:first>th,>tr:first>th,>tbody>tr:first>td, >tr:first>td\");\t //but headers can also be included in different ways\n\t\tt.cg = t.find(\"col\"); \t\t\t\t\t\t//a table can also contain a colgroup with col elements\t\t\n\t\tt.ln = th.length;\t\t\t\t\t\t\t//table length is stored\t\n\t\tif(t.p && S && S[t.id])memento(t,th);\t\t//if 'postbackSafe' is enabled and there is data for the current table, its coloumn layout is restored\n\t\tth.each(function(i){\t\t\t\t\t\t//iterate through the table column headers\t\t\t\n\t\t\tvar c = $(this); \t\t\t\t\t\t//jquery wrap for the current column\t\t\t\n\t\t\tvar g = $(t.gc.append('
')[0].lastChild); //add the visual node to be used as grip\n\t\t\tg.t = t; g.i = i; g.c = c;\tc.w =c.width();\t\t//some values are stored in the grip's node data\n\t\t\tt.g.push(g); t.c.push(c);\t\t\t\t\t\t//the current grip and column are added to its table object\n\t\t\tc.width(c.w).removeAttr(\"width\");\t\t\t\t//the width of the column is converted into pixel-based measurements\n\t\t\tif (i < t.ln-1) {\n\t\t\t\tg.bind('touchstart mousedown', onGripMouseDown).append(t.opt.gripInnerHtml).append('
'); //bind the mousedown event to start dragging \n\t\t\t} else g.addClass(\"JCLRLastGrip\").removeClass(\"JCLRgrip\");\t//the last grip is used only to store data\t\t\t\n\t\t\tg.data(SIGNATURE, {i:i, t:t.attr(ID)});\t\t\t\t\t\t//grip index and its table name are stored in the HTML \t\t\t\t\t\t\t\t\t\t\t\t\n\t\t}); \t\n\t\tt.cg.removeAttr(\"width\");\t//remove the width attribute from elements in the colgroup (in any)\n\t\tsyncGrips(t); \t\t\t\t//the grips are positioned according to the current table layout\t\t\t\n\t\t//there is a small problem, some cells in the table could contain dimension values interfering with the \n\t\t//width value set by this plugin. Those values are removed\n\t\tt.find('td, th').not(th).not('table th, table td').each(function(){ \n\t\t\t$(this).removeAttr('width');\t//the width attribute is removed from all table cells which are not nested in other tables and dont belong to the header\n\t\t});\t\t\n\n\t\t\n\t};\n\t\n\n\t/**\n\t * Function to allow the persistence of columns dimensions after a browser postback. It is based in\n\t * the HTML5 sessionStorage object, which can be emulated for older browsers using sessionstorage.js\n\t * @param {jQuery ref} t - table object\n\t * @param {jQuery ref} th - reference to the first row elements (only set in deserialization)\n\t */\n\tvar memento = function(t, th){ \n\t\tvar w,m=0,i=0,aux =[];\n\t\tif(th){\t\t\t\t\t\t\t\t\t\t//in deserialization mode (after a postback)\n\t\t\tt.cg.removeAttr(\"width\");\n\t\t\tif(t.opt.flush){ S[t.id] =\"\"; return;} \t//if flush is activated, stored data is removed\n\t\t\tw = S[t.id].split(\";\");\t\t\t\t\t//column widths is obtained\n\t\t\tfor(;i*{cursor:\"+ t.opt.dragCursor +\"!important}\"); \t//change the mouse cursor\n\t\tg.addClass(t.opt.draggingClass); \t//add the dragging class (to allow some visual feedback)\t\t\t\t\n\t\tdrag = g;\t\t\t\t\t\t\t//the current grip is stored as the current dragging object\n\t\tif(t.c[o.i].l) for(var i=0,c; i= options.end) {\n exit = true;\n }\n \n // update global state\n options.state.rowNum++;\n options.state.colNum = 1;\n }\n\n function endOfValue() {\n if(options.onParseValue === undefined) {\n // onParseValue hook not set\n entry.push(value);\n } else {\n var hook = options.onParseValue(value, options.state); // onParseValue Hook\n // false skips the row, configurable through a hook\n if(hook !== false) {\n entry.push(hook);\n }\n }\n //console.log('value:' + value);\n // reset the state\n value = '';\n state = 0;\n // update global state\n options.state.colNum++;\n }\n\n // escape regex-specific control chars\n var escSeparator = RegExp.escape(separator);\n var escDelimiter = RegExp.escape(delimiter);\n\n // compile the regEx str using the custom delimiter/separator\n var match = /(D|S|\\n|\\r|[^DS\\r\\n]+)/;\n var matchSrc = match.source;\n matchSrc = matchSrc.replace(/S/g, escSeparator);\n matchSrc = matchSrc.replace(/D/g, escDelimiter);\n match = RegExp(matchSrc, 'gm');\n\n // put on your fancy pants...\n // process control chars individually, use look-ahead on non-control chars\n csv.replace(match, function (m0) {\n if(exit) {\n return;\n }\n switch (state) {\n // the start of a value\n case 0:\n // null last value\n if (m0 === separator) {\n value += '';\n endOfValue();\n break;\n }\n // opening delimiter\n if (m0 === delimiter) {\n state = 1;\n break;\n }\n // null last value\n if (m0 === '\\n') {\n endOfValue();\n endOfEntry();\n break;\n }\n // phantom carriage return\n if (/^\\r$/.test(m0)) {\n break;\n }\n // un-delimited value\n value += m0;\n state = 3;\n break;\n\n // delimited input\n case 1:\n // second delimiter? check further\n if (m0 === delimiter) {\n state = 2;\n break;\n }\n // delimited data\n value += m0;\n state = 1;\n break;\n\n // delimiter found in delimited input\n case 2:\n // escaped delimiter?\n if (m0 === delimiter) {\n value += m0;\n state = 1;\n break;\n }\n // null value\n if (m0 === separator) {\n endOfValue();\n break;\n }\n // end of entry\n if (m0 === '\\n') {\n endOfValue();\n endOfEntry();\n break;\n }\n // phantom carriage return\n if (/^\\r$/.test(m0)) {\n break;\n }\n // broken paser?\n throw new Error('CSVDataError: Illegal State [Row:' + options.state.rowNum + '][Col:' + options.state.colNum + ']');\n\n // un-delimited input\n case 3:\n // null last value\n if (m0 === separator) {\n endOfValue();\n break;\n }\n // end of entry\n if (m0 === '\\n') {\n endOfValue();\n endOfEntry();\n break;\n }\n // phantom carriage return\n if (/^\\r$/.test(m0)) {\n break;\n }\n if (m0 === delimiter) {\n // non-compliant data\n throw new Error('CSVDataError: Illegal Quote [Row:' + options.state.rowNum + '][Col:' + options.state.colNum + ']');\n }\n // broken parser?\n throw new Error('CSVDataError: Illegal Data [Row:' + options.state.rowNum + '][Col:' + options.state.colNum + ']');\n default:\n // shenanigans\n throw new Error('CSVDataError: Unknown State [Row:' + options.state.rowNum + '][Col:' + options.state.colNum + ']');\n }\n //console.log('val:' + m0 + ' state:' + state);\n });\n\n // submit the last entry\n // ignore null last line\n if(entry.length !== 0) {\n endOfValue();\n endOfEntry();\n }\n\n return data;\n },\n\n // a csv-specific line splitter\n splitLines: function(csv, options) {\n // cache settings\n var separator = options.separator;\n var delimiter = options.delimiter;\n\n // set initial state if it's missing\n if(!options.state.rowNum) {\n options.state.rowNum = 1;\n }\n\n // clear initial state\n var entries = [];\n var state = 0;\n var entry = '';\n var exit = false;\n\n function endOfLine() { \n // reset the state\n state = 0;\n \n // if 'start' hasn't been met, don't output\n if(options.start && options.state.rowNum < options.start) {\n // update global state\n entry = '';\n options.state.rowNum++;\n return;\n }\n \n if(options.onParseEntry === undefined) {\n // onParseEntry hook not set\n entries.push(entry);\n } else {\n var hookVal = options.onParseEntry(entry, options.state); // onParseEntry Hook\n // false skips the row, configurable through a hook\n if(hookVal !== false) {\n entries.push(hookVal);\n }\n }\n\n // cleanup\n entry = '';\n\n // if 'end' is met, stop parsing\n if(options.end && options.state.rowNum >= options.end) {\n exit = true;\n }\n \n // update global state\n options.state.rowNum++;\n }\n\n // escape regex-specific control chars\n var escSeparator = RegExp.escape(separator);\n var escDelimiter = RegExp.escape(delimiter);\n\n // compile the regEx str using the custom delimiter/separator\n var match = /(D|S|\\n|\\r|[^DS\\r\\n]+)/;\n var matchSrc = match.source;\n matchSrc = matchSrc.replace(/S/g, escSeparator);\n matchSrc = matchSrc.replace(/D/g, escDelimiter);\n match = RegExp(matchSrc, 'gm');\n \n // put on your fancy pants...\n // process control chars individually, use look-ahead on non-control chars\n csv.replace(match, function (m0) {\n if(exit) {\n return;\n }\n switch (state) {\n // the start of a value/entry\n case 0:\n // null value\n if (m0 === separator) {\n entry += m0;\n state = 0;\n break;\n }\n // opening delimiter\n if (m0 === delimiter) {\n entry += m0;\n state = 1;\n break;\n }\n // end of line\n if (m0 === '\\n') {\n endOfLine();\n break;\n }\n // phantom carriage return\n if (/^\\r$/.test(m0)) {\n break;\n }\n // un-delimit value\n entry += m0;\n state = 3;\n break;\n\n // delimited input\n case 1:\n // second delimiter? check further\n if (m0 === delimiter) {\n entry += m0;\n state = 2;\n break;\n }\n // delimited data\n entry += m0;\n state = 1;\n break;\n\n // delimiter found in delimited input\n case 2:\n // escaped delimiter?\n var prevChar = entry.substr(entry.length - 1);\n if (m0 === delimiter && prevChar === delimiter) {\n entry += m0;\n state = 1;\n break;\n }\n // end of value\n if (m0 === separator) {\n entry += m0;\n state = 0;\n break;\n }\n // end of line\n if (m0 === '\\n') {\n endOfLine();\n break;\n }\n // phantom carriage return\n if (m0 === '\\r') {\n break;\n }\n // broken paser?\n throw new Error('CSVDataError: Illegal state [Row:' + options.state.rowNum + ']');\n\n // un-delimited input\n case 3:\n // null value\n if (m0 === separator) {\n entry += m0;\n state = 0;\n break;\n }\n // end of line\n if (m0 === '\\n') {\n endOfLine();\n break;\n }\n // phantom carriage return\n if (m0 === '\\r') {\n break;\n }\n // non-compliant data\n if (m0 === delimiter) {\n throw new Error('CSVDataError: Illegal quote [Row:' + options.state.rowNum + ']');\n }\n // broken parser?\n throw new Error('CSVDataError: Illegal state [Row:' + options.state.rowNum + ']');\n default:\n // shenanigans\n throw new Error('CSVDataError: Unknown state [Row:' + options.state.rowNum + ']');\n }\n //console.log('val:' + m0 + ' state:' + state);\n });\n\n // submit the last entry\n // ignore null last line\n if(entry !== '') {\n endOfLine();\n }\n\n return entries;\n },\n\n // a csv entry parser\n parseEntry: function(csv, options) {\n // cache settings\n var separator = options.separator;\n var delimiter = options.delimiter;\n \n // set initial state if it's missing\n if(!options.state.rowNum) {\n options.state.rowNum = 1;\n }\n if(!options.state.colNum) {\n options.state.colNum = 1;\n }\n\n // clear initial state\n var entry = [];\n var state = 0;\n var value = '';\n\n function endOfValue() {\n if(options.onParseValue === undefined) {\n // onParseValue hook not set\n entry.push(value);\n } else {\n var hook = options.onParseValue(value, options.state); // onParseValue Hook\n // false skips the value, configurable through a hook\n if(hook !== false) {\n entry.push(hook);\n }\n }\n // reset the state\n value = '';\n state = 0;\n // update global state\n options.state.colNum++;\n }\n\n // checked for a cached regEx first\n if(!options.match) {\n // escape regex-specific control chars\n var escSeparator = RegExp.escape(separator);\n var escDelimiter = RegExp.escape(delimiter);\n \n // compile the regEx str using the custom delimiter/separator\n var match = /(D|S|\\n|\\r|[^DS\\r\\n]+)/;\n var matchSrc = match.source;\n matchSrc = matchSrc.replace(/S/g, escSeparator);\n matchSrc = matchSrc.replace(/D/g, escDelimiter);\n options.match = RegExp(matchSrc, 'gm');\n }\n\n // put on your fancy pants...\n // process control chars individually, use look-ahead on non-control chars\n csv.replace(options.match, function (m0) {\n switch (state) {\n // the start of a value\n case 0:\n // null last value\n if (m0 === separator) {\n value += '';\n endOfValue();\n break;\n }\n // opening delimiter\n if (m0 === delimiter) {\n state = 1;\n break;\n }\n // skip un-delimited new-lines\n if (m0 === '\\n' || m0 === '\\r') {\n break;\n }\n // un-delimited value\n value += m0;\n state = 3;\n break;\n\n // delimited input\n case 1:\n // second delimiter? check further\n if (m0 === delimiter) {\n state = 2;\n break;\n }\n // delimited data\n value += m0;\n state = 1;\n break;\n\n // delimiter found in delimited input\n case 2:\n // escaped delimiter?\n if (m0 === delimiter) {\n value += m0;\n state = 1;\n break;\n }\n // null value\n if (m0 === separator) {\n endOfValue();\n break;\n }\n // skip un-delimited new-lines\n if (m0 === '\\n' || m0 === '\\r') {\n break;\n }\n // broken paser?\n throw new Error('CSVDataError: Illegal State [Row:' + options.state.rowNum + '][Col:' + options.state.colNum + ']');\n\n // un-delimited input\n case 3:\n // null last value\n if (m0 === separator) {\n endOfValue();\n break;\n }\n // skip un-delimited new-lines\n if (m0 === '\\n' || m0 === '\\r') {\n break;\n }\n // non-compliant data\n if (m0 === delimiter) {\n throw new Error('CSVDataError: Illegal Quote [Row:' + options.state.rowNum + '][Col:' + options.state.colNum + ']');\n }\n // broken parser?\n throw new Error('CSVDataError: Illegal Data [Row:' + options.state.rowNum + '][Col:' + options.state.colNum + ']');\n default:\n // shenanigans\n throw new Error('CSVDataError: Unknown State [Row:' + options.state.rowNum + '][Col:' + options.state.colNum + ']');\n }\n //console.log('val:' + m0 + ' state:' + state);\n });\n\n // submit the last value\n endOfValue();\n\n return entry;\n }\n },\n\n /**\n * $.csv.toArray(csv)\n * Converts a CSV entry string to a javascript array.\n *\n * @param {Array} csv The string containing the CSV data.\n * @param {Object} [options] An object containing user-defined options.\n * @param {Character} [separator] An override for the separator character. Defaults to a comma(,).\n * @param {Character} [delimiter] An override for the delimiter character. Defaults to a double-quote(\").\n *\n * This method deals with simple CSV strings only. It's useful if you only\n * need to parse a single entry. If you need to parse more than one line,\n * use $.csv2Array instead.\n */\n toArray: function(csv, options, callback) {\n var options = (options !== undefined ? options : {});\n var config = {};\n config.callback = ((callback !== undefined && typeof(callback) === 'function') ? callback : false);\n config.separator = 'separator' in options ? options.separator : $.csv.defaults.separator;\n config.delimiter = 'delimiter' in options ? options.delimiter : $.csv.defaults.delimiter;\n var state = (options.state !== undefined ? options.state : {});\n\n // setup\n var options = {\n delimiter: config.delimiter,\n separator: config.separator,\n onParseEntry: options.onParseEntry,\n onParseValue: options.onParseValue,\n state: state\n }\n\n var entry = $.csv.parsers.parseEntry(csv, options);\n\n // push the value to a callback if one is defined\n if(!config.callback) {\n return entry;\n } else {\n config.callback('', entry);\n }\n },\n\n /**\n * $.csv.toArrays(csv)\n * Converts a CSV string to a javascript array.\n *\n * @param {String} csv The string containing the raw CSV data.\n * @param {Object} [options] An object containing user-defined options.\n * @param {Character} [separator] An override for the separator character. Defaults to a comma(,).\n * @param {Character} [delimiter] An override for the delimiter character. Defaults to a double-quote(\").\n *\n * This method deals with multi-line CSV. The breakdown is simple. The first\n * dimension of the array represents the line (or entry/row) while the second\n * dimension contains the values (or values/columns).\n */\n toArrays: function(csv, options, callback) {\n var options = (options !== undefined ? options : {});\n var config = {};\n config.callback = ((callback !== undefined && typeof(callback) === 'function') ? callback : false);\n config.separator = 'separator' in options ? options.separator : $.csv.defaults.separator;\n config.delimiter = 'delimiter' in options ? options.delimiter : $.csv.defaults.delimiter;\n \n // setup\n var data = [];\n var options = {\n delimiter: config.delimiter,\n separator: config.separator,\n onParseEntry: options.onParseEntry,\n onParseValue: options.onParseValue,\n start: options.start,\n end: options.end,\n state: {\n rowNum: 1,\n colNum: 1\n }\n };\n\n // break the data down to lines\n data = $.csv.parsers.parse(csv, options);\n\n // push the value to a callback if one is defined\n if(!config.callback) {\n return data;\n } else {\n config.callback('', data);\n }\n },\n\n /**\n * $.csv.toObjects(csv)\n * Converts a CSV string to a javascript object.\n * @param {String} csv The string containing the raw CSV data.\n * @param {Object} [options] An object containing user-defined options.\n * @param {Character} [separator] An override for the separator character. Defaults to a comma(,).\n * @param {Character} [delimiter] An override for the delimiter character. Defaults to a double-quote(\").\n * @param {Boolean} [headers] Indicates whether the data contains a header line. Defaults to true.\n *\n * This method deals with multi-line CSV strings. Where the headers line is\n * used as the key for each value per entry.\n */\n toObjects: function(csv, options, callback) {\n var options = (options !== undefined ? options : {});\n var config = {};\n config.callback = ((callback !== undefined && typeof(callback) === 'function') ? callback : false);\n config.separator = 'separator' in options ? options.separator : $.csv.defaults.separator;\n config.delimiter = 'delimiter' in options ? options.delimiter : $.csv.defaults.delimiter;\n config.headers = 'headers' in options ? options.headers : $.csv.defaults.headers;\n options.start = 'start' in options ? options.start : 1;\n \n // account for headers\n if(config.headers) {\n options.start++;\n }\n if(options.end && config.headers) {\n options.end++;\n }\n \n // setup\n var lines = [];\n var data = [];\n \n var options = {\n delimiter: config.delimiter,\n separator: config.separator,\n onParseEntry: options.onParseEntry,\n onParseValue: options.onParseValue,\n start: options.start,\n end: options.end,\n state: {\n rowNum: 1,\n colNum: 1\n },\n match: false\n };\n\n // fetch the headers\n var headerOptions = {\n delimiter: config.delimiter,\n separator: config.separator,\n start: 1,\n end: 1,\n state: {\n rowNum:1,\n colNum:1\n }\n }\n var headerLine = $.csv.parsers.splitLines(csv, headerOptions);\n var headers = $.csv.toArray(headerLine[0], options);\n\n // fetch the data\n var lines = $.csv.parsers.splitLines(csv, options);\n \n // reset the state for re-use\n options.state.colNum = 1;\n if(headers){\n options.state.rowNum = 2;\n } else {\n options.state.rowNum = 1;\n }\n \n // convert data to objects\n for(var i=0, len=lines.length; i 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n var ret;\n if (!emitter._events || !emitter._events[type])\n ret = 0;\n else if (isFunction(emitter._events[type]))\n ret = 1;\n else\n ret = emitter._events[type].length;\n return ret;\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n},{}],5:[function(require,module,exports){\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var ie_lt8 = /MSIE \\d/.test(navigator.userAgent) &&\n (document.documentMode == null || document.documentMode < 8);\n\n var Pos = CodeMirror.Pos;\n\n var matching = {\"(\": \")>\", \")\": \"(<\", \"[\": \"]>\", \"]\": \"[<\", \"{\": \"}>\", \"}\": \"{<\"};\n\n function findMatchingBracket(cm, where, strict, config) {\n var line = cm.getLineHandle(where.line), pos = where.ch - 1;\n var match = (pos >= 0 && matching[line.text.charAt(pos)]) || matching[line.text.charAt(++pos)];\n if (!match) return null;\n var dir = match.charAt(1) == \">\" ? 1 : -1;\n if (strict && (dir > 0) != (pos == where.ch)) return null;\n var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n\n var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style || null, config);\n if (found == null) return null;\n return {from: Pos(where.line, pos), to: found && found.pos,\n match: found && found.ch == match.charAt(0), forward: dir > 0};\n }\n\n // bracketRegex is used to specify which type of bracket to scan\n // should be a regexp, e.g. /[[\\]]/\n //\n // Note: If \"where\" is on an open bracket, then this bracket is ignored.\n //\n // Returns false when no bracket was found, null when it reached\n // maxScanLines and gave up\n function scanForBracket(cm, where, dir, style, config) {\n var maxScanLen = (config && config.maxScanLineLength) || 10000;\n var maxScanLines = (config && config.maxScanLines) || 1000;\n\n var stack = [];\n var re = config && config.bracketRegex ? config.bracketRegex : /[(){}[\\]]/;\n var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1)\n : Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {\n var line = cm.getLine(lineNo);\n if (!line) continue;\n var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;\n if (line.length > maxScanLen) continue;\n if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n for (; pos != end; pos += dir) {\n var ch = line.charAt(pos);\n if (re.test(ch) && (style === undefined || cm.getTokenTypeAt(Pos(lineNo, pos + 1)) == style)) {\n var match = matching[ch];\n if ((match.charAt(1) == \">\") == (dir > 0)) stack.push(ch);\n else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};\n else stack.pop();\n }\n }\n }\n return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n }\n\n function matchBrackets(cm, autoclear, config) {\n // Disable brace matching in long lines, since it'll cause hugely slow updates\n var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000;\n var marks = [], ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, false, config);\n if (match && cm.getLine(match.from.line).length <= maxHighlightLen) {\n var style = match.match ? \"CodeMirror-matchingbracket\" : \"CodeMirror-nonmatchingbracket\";\n marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style}));\n if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen)\n marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style}));\n }\n }\n\n if (marks.length) {\n // Kludge to work around the IE bug from issue #1193, where text\n // input stops going to the textare whever this fires.\n if (ie_lt8 && cm.state.focused) cm.display.input.focus();\n\n var clear = function() {\n cm.operation(function() {\n for (var i = 0; i < marks.length; i++) marks[i].clear();\n });\n };\n if (autoclear) setTimeout(clear, 800);\n else return clear;\n }\n }\n\n var currentlyHighlighted = null;\n function doMatchBrackets(cm) {\n cm.operation(function() {\n if (currentlyHighlighted) {currentlyHighlighted(); currentlyHighlighted = null;}\n currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n });\n }\n\n CodeMirror.defineOption(\"matchBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init)\n cm.off(\"cursorActivity\", doMatchBrackets);\n if (val) {\n cm.state.matchBrackets = typeof val == \"object\" ? val : {};\n cm.on(\"cursorActivity\", doMatchBrackets);\n }\n });\n\n CodeMirror.defineExtension(\"matchBrackets\", function() {matchBrackets(this, true);});\n CodeMirror.defineExtension(\"findMatchingBracket\", function(pos, strict, config){\n return findMatchingBracket(this, pos, strict, config);\n });\n CodeMirror.defineExtension(\"scanForBracket\", function(pos, dir, style, config){\n return scanForBracket(this, pos, dir, style, config);\n });\n});\n\n},{\"codemirror\":undefined}],6:[function(require,module,exports){\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.registerHelper(\"fold\", \"brace\", function(cm, start) {\n var line = start.line, lineText = cm.getLine(line);\n var startCh, tokenType;\n\n function findOpening(openCh) {\n for (var at = start.ch, pass = 0;;) {\n var found = at <= 0 ? -1 : lineText.lastIndexOf(openCh, at - 1);\n if (found == -1) {\n if (pass == 1) break;\n pass = 1;\n at = lineText.length;\n continue;\n }\n if (pass == 1 && found < start.ch) break;\n tokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1));\n if (!/^(comment|string)/.test(tokenType)) return found + 1;\n at = found - 1;\n }\n }\n\n var startToken = \"{\", endToken = \"}\", startCh = findOpening(\"{\");\n if (startCh == null) {\n startToken = \"[\", endToken = \"]\";\n startCh = findOpening(\"[\");\n }\n\n if (startCh == null) return;\n var count = 1, lastLine = cm.lastLine(), end, endCh;\n outer: for (var i = line; i <= lastLine; ++i) {\n var text = cm.getLine(i), pos = i == line ? startCh : 0;\n for (;;) {\n var nextOpen = text.indexOf(startToken, pos), nextClose = text.indexOf(endToken, pos);\n if (nextOpen < 0) nextOpen = text.length;\n if (nextClose < 0) nextClose = text.length;\n pos = Math.min(nextOpen, nextClose);\n if (pos == text.length) break;\n if (cm.getTokenTypeAt(CodeMirror.Pos(i, pos + 1)) == tokenType) {\n if (pos == nextOpen) ++count;\n else if (!--count) { end = i; endCh = pos; break outer; }\n }\n ++pos;\n }\n }\n if (end == null || line == end && endCh == startCh) return;\n return {from: CodeMirror.Pos(line, startCh),\n to: CodeMirror.Pos(end, endCh)};\n});\n\nCodeMirror.registerHelper(\"fold\", \"import\", function(cm, start) {\n function hasImport(line) {\n if (line < cm.firstLine() || line > cm.lastLine()) return null;\n var start = cm.getTokenAt(CodeMirror.Pos(line, 1));\n if (!/\\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));\n if (start.type != \"keyword\" || start.string != \"import\") return null;\n // Now find closing semicolon, return its position\n for (var i = line, e = Math.min(cm.lastLine(), line + 10); i <= e; ++i) {\n var text = cm.getLine(i), semi = text.indexOf(\";\");\n if (semi != -1) return {startCh: start.end, end: CodeMirror.Pos(i, semi)};\n }\n }\n\n var start = start.line, has = hasImport(start), prev;\n if (!has || hasImport(start - 1) || ((prev = hasImport(start - 2)) && prev.end.line == start - 1))\n return null;\n for (var end = has.end;;) {\n var next = hasImport(end.line + 1);\n if (next == null) break;\n end = next.end;\n }\n return {from: cm.clipPos(CodeMirror.Pos(start, has.startCh + 1)), to: end};\n});\n\nCodeMirror.registerHelper(\"fold\", \"include\", function(cm, start) {\n function hasInclude(line) {\n if (line < cm.firstLine() || line > cm.lastLine()) return null;\n var start = cm.getTokenAt(CodeMirror.Pos(line, 1));\n if (!/\\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));\n if (start.type == \"meta\" && start.string.slice(0, 8) == \"#include\") return start.start + 8;\n }\n\n var start = start.line, has = hasInclude(start);\n if (has == null || hasInclude(start - 1) != null) return null;\n for (var end = start;;) {\n var next = hasInclude(end + 1);\n if (next == null) break;\n ++end;\n }\n return {from: CodeMirror.Pos(start, has + 1),\n to: cm.clipPos(CodeMirror.Pos(end))};\n});\n\n});\n\n},{\"codemirror\":undefined}],7:[function(require,module,exports){\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n function doFold(cm, pos, options, force) {\n if (options && options.call) {\n var finder = options;\n options = null;\n } else {\n var finder = getOption(cm, options, \"rangeFinder\");\n }\n if (typeof pos == \"number\") pos = CodeMirror.Pos(pos, 0);\n var minSize = getOption(cm, options, \"minFoldSize\");\n\n function getRange(allowFolded) {\n var range = finder(cm, pos);\n if (!range || range.to.line - range.from.line < minSize) return null;\n var marks = cm.findMarksAt(range.from);\n for (var i = 0; i < marks.length; ++i) {\n if (marks[i].__isFold && force !== \"fold\") {\n if (!allowFolded) return null;\n range.cleared = true;\n marks[i].clear();\n }\n }\n return range;\n }\n\n var range = getRange(true);\n if (getOption(cm, options, \"scanUp\")) while (!range && pos.line > cm.firstLine()) {\n pos = CodeMirror.Pos(pos.line - 1, 0);\n range = getRange(false);\n }\n if (!range || range.cleared || force === \"unfold\") return;\n\n var myWidget = makeWidget(cm, options);\n CodeMirror.on(myWidget, \"mousedown\", function(e) {\n myRange.clear();\n CodeMirror.e_preventDefault(e);\n });\n var myRange = cm.markText(range.from, range.to, {\n replacedWith: myWidget,\n clearOnEnter: true,\n __isFold: true\n });\n myRange.on(\"clear\", function(from, to) {\n CodeMirror.signal(cm, \"unfold\", cm, from, to);\n });\n CodeMirror.signal(cm, \"fold\", cm, range.from, range.to);\n }\n\n function makeWidget(cm, options) {\n var widget = getOption(cm, options, \"widget\");\n if (typeof widget == \"string\") {\n var text = document.createTextNode(widget);\n widget = document.createElement(\"span\");\n widget.appendChild(text);\n widget.className = \"CodeMirror-foldmarker\";\n }\n return widget;\n }\n\n // Clumsy backwards-compatible interface\n CodeMirror.newFoldFunction = function(rangeFinder, widget) {\n return function(cm, pos) { doFold(cm, pos, {rangeFinder: rangeFinder, widget: widget}); };\n };\n\n // New-style interface\n CodeMirror.defineExtension(\"foldCode\", function(pos, options, force) {\n doFold(this, pos, options, force);\n });\n\n CodeMirror.defineExtension(\"isFolded\", function(pos) {\n var marks = this.findMarksAt(pos);\n for (var i = 0; i < marks.length; ++i)\n if (marks[i].__isFold) return true;\n });\n\n CodeMirror.commands.toggleFold = function(cm) {\n cm.foldCode(cm.getCursor());\n };\n CodeMirror.commands.fold = function(cm) {\n cm.foldCode(cm.getCursor(), null, \"fold\");\n };\n CodeMirror.commands.unfold = function(cm) {\n cm.foldCode(cm.getCursor(), null, \"unfold\");\n };\n CodeMirror.commands.foldAll = function(cm) {\n cm.operation(function() {\n for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)\n cm.foldCode(CodeMirror.Pos(i, 0), null, \"fold\");\n });\n };\n CodeMirror.commands.unfoldAll = function(cm) {\n cm.operation(function() {\n for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)\n cm.foldCode(CodeMirror.Pos(i, 0), null, \"unfold\");\n });\n };\n\n CodeMirror.registerHelper(\"fold\", \"combine\", function() {\n var funcs = Array.prototype.slice.call(arguments, 0);\n return function(cm, start) {\n for (var i = 0; i < funcs.length; ++i) {\n var found = funcs[i](cm, start);\n if (found) return found;\n }\n };\n });\n\n CodeMirror.registerHelper(\"fold\", \"auto\", function(cm, start) {\n var helpers = cm.getHelpers(start, \"fold\");\n for (var i = 0; i < helpers.length; i++) {\n var cur = helpers[i](cm, start);\n if (cur) return cur;\n }\n });\n\n var defaultOptions = {\n rangeFinder: CodeMirror.fold.auto,\n widget: \"\\u2194\",\n minFoldSize: 0,\n scanUp: false\n };\n\n CodeMirror.defineOption(\"foldOptions\", null);\n\n function getOption(cm, options, name) {\n if (options && options[name] !== undefined)\n return options[name];\n var editorOptions = cm.options.foldOptions;\n if (editorOptions && editorOptions[name] !== undefined)\n return editorOptions[name];\n return defaultOptions[name];\n }\n\n CodeMirror.defineExtension(\"foldOption\", function(options, name) {\n return getOption(this, options, name);\n });\n});\n\n},{\"codemirror\":undefined}],8:[function(require,module,exports){\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})(), require(\"./foldcode\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"./foldcode\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineOption(\"foldGutter\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.clearGutter(cm.state.foldGutter.options.gutter);\n cm.state.foldGutter = null;\n cm.off(\"gutterClick\", onGutterClick);\n cm.off(\"change\", onChange);\n cm.off(\"viewportChange\", onViewportChange);\n cm.off(\"fold\", onFold);\n cm.off(\"unfold\", onFold);\n cm.off(\"swapDoc\", updateInViewport);\n }\n if (val) {\n cm.state.foldGutter = new State(parseOptions(val));\n updateInViewport(cm);\n cm.on(\"gutterClick\", onGutterClick);\n cm.on(\"change\", onChange);\n cm.on(\"viewportChange\", onViewportChange);\n cm.on(\"fold\", onFold);\n cm.on(\"unfold\", onFold);\n cm.on(\"swapDoc\", updateInViewport);\n }\n });\n\n var Pos = CodeMirror.Pos;\n\n function State(options) {\n this.options = options;\n this.from = this.to = 0;\n }\n\n function parseOptions(opts) {\n if (opts === true) opts = {};\n if (opts.gutter == null) opts.gutter = \"CodeMirror-foldgutter\";\n if (opts.indicatorOpen == null) opts.indicatorOpen = \"CodeMirror-foldgutter-open\";\n if (opts.indicatorFolded == null) opts.indicatorFolded = \"CodeMirror-foldgutter-folded\";\n return opts;\n }\n\n function isFolded(cm, line) {\n var marks = cm.findMarksAt(Pos(line));\n for (var i = 0; i < marks.length; ++i)\n if (marks[i].__isFold && marks[i].find().from.line == line) return true;\n }\n\n function marker(spec) {\n if (typeof spec == \"string\") {\n var elt = document.createElement(\"div\");\n elt.className = spec + \" CodeMirror-guttermarker-subtle\";\n return elt;\n } else {\n return spec.cloneNode(true);\n }\n }\n\n function updateFoldInfo(cm, from, to) {\n var opts = cm.state.foldGutter.options, cur = from;\n var minSize = cm.foldOption(opts, \"minFoldSize\");\n var func = cm.foldOption(opts, \"rangeFinder\");\n cm.eachLine(from, to, function(line) {\n var mark = null;\n if (isFolded(cm, cur)) {\n mark = marker(opts.indicatorFolded);\n } else {\n var pos = Pos(cur, 0);\n var range = func && func(cm, pos);\n if (range && range.to.line - range.from.line >= minSize)\n mark = marker(opts.indicatorOpen);\n }\n cm.setGutterMarker(line, opts.gutter, mark);\n ++cur;\n });\n }\n\n function updateInViewport(cm) {\n var vp = cm.getViewport(), state = cm.state.foldGutter;\n if (!state) return;\n cm.operation(function() {\n updateFoldInfo(cm, vp.from, vp.to);\n });\n state.from = vp.from; state.to = vp.to;\n }\n\n function onGutterClick(cm, line, gutter) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n if (gutter != opts.gutter) return;\n cm.foldCode(Pos(line, 0), opts.rangeFinder);\n }\n\n function onChange(cm) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n state.from = state.to = 0;\n clearTimeout(state.changeUpdate);\n state.changeUpdate = setTimeout(function() { updateInViewport(cm); }, opts.foldOnChangeTimeSpan || 600);\n }\n\n function onViewportChange(cm) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n clearTimeout(state.changeUpdate);\n state.changeUpdate = setTimeout(function() {\n var vp = cm.getViewport();\n if (state.from == state.to || vp.from - state.to > 20 || state.from - vp.to > 20) {\n updateInViewport(cm);\n } else {\n cm.operation(function() {\n if (vp.from < state.from) {\n updateFoldInfo(cm, vp.from, state.from);\n state.from = vp.from;\n }\n if (vp.to > state.to) {\n updateFoldInfo(cm, state.to, vp.to);\n state.to = vp.to;\n }\n });\n }\n }, opts.updateViewportTimeSpan || 400);\n }\n\n function onFold(cm, from) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var line = from.line;\n if (line >= state.from && line < state.to)\n updateFoldInfo(cm, line, line + 1);\n }\n});\n\n},{\"./foldcode\":7,\"codemirror\":undefined}],9:[function(require,module,exports){\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var Pos = CodeMirror.Pos;\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch; }\n\n var nameStartChar = \"A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n var nameChar = nameStartChar + \"\\-\\:\\.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n var xmlTagStart = new RegExp(\"<(/?)([\" + nameStartChar + \"][\" + nameChar + \"]*)\", \"g\");\n\n function Iter(cm, line, ch, range) {\n this.line = line; this.ch = ch;\n this.cm = cm; this.text = cm.getLine(line);\n this.min = range ? range.from : cm.firstLine();\n this.max = range ? range.to - 1 : cm.lastLine();\n }\n\n function tagAt(iter, ch) {\n var type = iter.cm.getTokenTypeAt(Pos(iter.line, ch));\n return type && /\\btag\\b/.test(type);\n }\n\n function nextLine(iter) {\n if (iter.line >= iter.max) return;\n iter.ch = 0;\n iter.text = iter.cm.getLine(++iter.line);\n return true;\n }\n function prevLine(iter) {\n if (iter.line <= iter.min) return;\n iter.text = iter.cm.getLine(--iter.line);\n iter.ch = iter.text.length;\n return true;\n }\n\n function toTagEnd(iter) {\n for (;;) {\n var gt = iter.text.indexOf(\">\", iter.ch);\n if (gt == -1) { if (nextLine(iter)) continue; else return; }\n if (!tagAt(iter, gt + 1)) { iter.ch = gt + 1; continue; }\n var lastSlash = iter.text.lastIndexOf(\"/\", gt);\n var selfClose = lastSlash > -1 && !/\\S/.test(iter.text.slice(lastSlash + 1, gt));\n iter.ch = gt + 1;\n return selfClose ? \"selfClose\" : \"regular\";\n }\n }\n function toTagStart(iter) {\n for (;;) {\n var lt = iter.ch ? iter.text.lastIndexOf(\"<\", iter.ch - 1) : -1;\n if (lt == -1) { if (prevLine(iter)) continue; else return; }\n if (!tagAt(iter, lt + 1)) { iter.ch = lt; continue; }\n xmlTagStart.lastIndex = lt;\n iter.ch = lt;\n var match = xmlTagStart.exec(iter.text);\n if (match && match.index == lt) return match;\n }\n }\n\n function toNextTag(iter) {\n for (;;) {\n xmlTagStart.lastIndex = iter.ch;\n var found = xmlTagStart.exec(iter.text);\n if (!found) { if (nextLine(iter)) continue; else return; }\n if (!tagAt(iter, found.index + 1)) { iter.ch = found.index + 1; continue; }\n iter.ch = found.index + found[0].length;\n return found;\n }\n }\n function toPrevTag(iter) {\n for (;;) {\n var gt = iter.ch ? iter.text.lastIndexOf(\">\", iter.ch - 1) : -1;\n if (gt == -1) { if (prevLine(iter)) continue; else return; }\n if (!tagAt(iter, gt + 1)) { iter.ch = gt; continue; }\n var lastSlash = iter.text.lastIndexOf(\"/\", gt);\n var selfClose = lastSlash > -1 && !/\\S/.test(iter.text.slice(lastSlash + 1, gt));\n iter.ch = gt + 1;\n return selfClose ? \"selfClose\" : \"regular\";\n }\n }\n\n function findMatchingClose(iter, tag) {\n var stack = [];\n for (;;) {\n var next = toNextTag(iter), end, startLine = iter.line, startCh = iter.ch - (next ? next[0].length : 0);\n if (!next || !(end = toTagEnd(iter))) return;\n if (end == \"selfClose\") continue;\n if (next[1]) { // closing tag\n for (var i = stack.length - 1; i >= 0; --i) if (stack[i] == next[2]) {\n stack.length = i;\n break;\n }\n if (i < 0 && (!tag || tag == next[2])) return {\n tag: next[2],\n from: Pos(startLine, startCh),\n to: Pos(iter.line, iter.ch)\n };\n } else { // opening tag\n stack.push(next[2]);\n }\n }\n }\n function findMatchingOpen(iter, tag) {\n var stack = [];\n for (;;) {\n var prev = toPrevTag(iter);\n if (!prev) return;\n if (prev == \"selfClose\") { toTagStart(iter); continue; }\n var endLine = iter.line, endCh = iter.ch;\n var start = toTagStart(iter);\n if (!start) return;\n if (start[1]) { // closing tag\n stack.push(start[2]);\n } else { // opening tag\n for (var i = stack.length - 1; i >= 0; --i) if (stack[i] == start[2]) {\n stack.length = i;\n break;\n }\n if (i < 0 && (!tag || tag == start[2])) return {\n tag: start[2],\n from: Pos(iter.line, iter.ch),\n to: Pos(endLine, endCh)\n };\n }\n }\n }\n\n CodeMirror.registerHelper(\"fold\", \"xml\", function(cm, start) {\n var iter = new Iter(cm, start.line, 0);\n for (;;) {\n var openTag = toNextTag(iter), end;\n if (!openTag || iter.line != start.line || !(end = toTagEnd(iter))) return;\n if (!openTag[1] && end != \"selfClose\") {\n var start = Pos(iter.line, iter.ch);\n var close = findMatchingClose(iter, openTag[2]);\n return close && {from: start, to: close.from};\n }\n }\n });\n CodeMirror.findMatchingTag = function(cm, pos, range) {\n var iter = new Iter(cm, pos.line, pos.ch, range);\n if (iter.text.indexOf(\">\") == -1 && iter.text.indexOf(\"<\") == -1) return;\n var end = toTagEnd(iter), to = end && Pos(iter.line, iter.ch);\n var start = end && toTagStart(iter);\n if (!end || !start || cmp(iter, pos) > 0) return;\n var here = {from: Pos(iter.line, iter.ch), to: to, tag: start[2]};\n if (end == \"selfClose\") return {open: here, close: null, at: \"open\"};\n\n if (start[1]) { // closing tag\n return {open: findMatchingOpen(iter, start[2]), close: here, at: \"close\"};\n } else { // opening tag\n iter = new Iter(cm, to.line, to.ch, range);\n return {open: here, close: findMatchingClose(iter, start[2]), at: \"open\"};\n }\n };\n\n CodeMirror.findEnclosingTag = function(cm, pos, range) {\n var iter = new Iter(cm, pos.line, pos.ch, range);\n for (;;) {\n var open = findMatchingOpen(iter);\n if (!open) break;\n var forward = new Iter(cm, pos.line, pos.ch, range);\n var close = findMatchingClose(forward, open.tag);\n if (close) return {open: open, close: close};\n }\n };\n\n // Used by addon/edit/closetag.js\n CodeMirror.scanForClosingTag = function(cm, pos, name, end) {\n var iter = new Iter(cm, pos.line, pos.ch, end ? {from: 0, to: end} : null);\n return findMatchingClose(iter, name);\n };\n});\n\n},{\"codemirror\":undefined}],10:[function(require,module,exports){\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n// TODO actually recognize syntax of TypeScript constructs\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"javascript\", function(config, parserConfig) {\n var indentUnit = config.indentUnit;\n var statementIndent = parserConfig.statementIndent;\n var jsonldMode = parserConfig.jsonld;\n var jsonMode = parserConfig.json || jsonldMode;\n var isTS = parserConfig.typescript;\n var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n\n // Tokenizer\n\n var keywords = function(){\n function kw(type) {return {type: type, style: \"keyword\"};}\n var A = kw(\"keyword a\"), B = kw(\"keyword b\"), C = kw(\"keyword c\");\n var operator = kw(\"operator\"), atom = {type: \"atom\", style: \"atom\"};\n\n var jsKeywords = {\n \"if\": kw(\"if\"), \"while\": A, \"with\": A, \"else\": B, \"do\": B, \"try\": B, \"finally\": B,\n \"return\": C, \"break\": C, \"continue\": C, \"new\": C, \"delete\": C, \"throw\": C, \"debugger\": C,\n \"var\": kw(\"var\"), \"const\": kw(\"var\"), \"let\": kw(\"var\"),\n \"function\": kw(\"function\"), \"catch\": kw(\"catch\"),\n \"for\": kw(\"for\"), \"switch\": kw(\"switch\"), \"case\": kw(\"case\"), \"default\": kw(\"default\"),\n \"in\": operator, \"typeof\": operator, \"instanceof\": operator,\n \"true\": atom, \"false\": atom, \"null\": atom, \"undefined\": atom, \"NaN\": atom, \"Infinity\": atom,\n \"this\": kw(\"this\"), \"module\": kw(\"module\"), \"class\": kw(\"class\"), \"super\": kw(\"atom\"),\n \"yield\": C, \"export\": kw(\"export\"), \"import\": kw(\"import\"), \"extends\": C\n };\n\n // Extend the 'normal' keywords with the TypeScript language extensions\n if (isTS) {\n var type = {type: \"variable\", style: \"variable-3\"};\n var tsKeywords = {\n // object-like things\n \"interface\": kw(\"interface\"),\n \"extends\": kw(\"extends\"),\n \"constructor\": kw(\"constructor\"),\n\n // scope modifiers\n \"public\": kw(\"public\"),\n \"private\": kw(\"private\"),\n \"protected\": kw(\"protected\"),\n \"static\": kw(\"static\"),\n\n // types\n \"string\": type, \"number\": type, \"bool\": type, \"any\": type\n };\n\n for (var attr in tsKeywords) {\n jsKeywords[attr] = tsKeywords[attr];\n }\n }\n\n return jsKeywords;\n }();\n\n var isOperatorChar = /[+\\-*&%=<>!?|~^]/;\n var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n\n function readRegexp(stream) {\n var escaped = false, next, inSet = false;\n while ((next = stream.next()) != null) {\n if (!escaped) {\n if (next == \"/\" && !inSet) return;\n if (next == \"[\") inSet = true;\n else if (inSet && next == \"]\") inSet = false;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n }\n\n // Used as scratch variables to communicate multiple values without\n // consing up tons of objects.\n var type, content;\n function ret(tp, style, cont) {\n type = tp; content = cont;\n return style;\n }\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \".\" && stream.match(/^\\d+(?:[eE][+\\-]?\\d+)?/)) {\n return ret(\"number\", \"number\");\n } else if (ch == \".\" && stream.match(\"..\")) {\n return ret(\"spread\", \"meta\");\n } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n return ret(ch);\n } else if (ch == \"=\" && stream.eat(\">\")) {\n return ret(\"=>\", \"operator\");\n } else if (ch == \"0\" && stream.eat(/x/i)) {\n stream.eatWhile(/[\\da-f]/i);\n return ret(\"number\", \"number\");\n } else if (/\\d/.test(ch)) {\n stream.match(/^\\d*(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/);\n return ret(\"number\", \"number\");\n } else if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n } else if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (state.lastType == \"operator\" || state.lastType == \"keyword c\" ||\n state.lastType == \"sof\" || /^[\\[{}\\(,;:]$/.test(state.lastType)) {\n readRegexp(stream);\n stream.match(/^\\b(([gimyu])(?![gimyu]*\\2))+\\b/);\n return ret(\"regexp\", \"string-2\");\n } else {\n stream.eatWhile(isOperatorChar);\n return ret(\"operator\", \"operator\", stream.current());\n }\n } else if (ch == \"`\") {\n state.tokenize = tokenQuasi;\n return tokenQuasi(stream, state);\n } else if (ch == \"#\") {\n stream.skipToEnd();\n return ret(\"error\", \"error\");\n } else if (isOperatorChar.test(ch)) {\n stream.eatWhile(isOperatorChar);\n return ret(\"operator\", \"operator\", stream.current());\n } else if (wordRE.test(ch)) {\n stream.eatWhile(wordRE);\n var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word];\n return (known && state.lastType != \".\") ? ret(known.type, known.style, word) :\n ret(\"variable\", \"variable\", word);\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, next;\n if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)){\n state.tokenize = tokenBase;\n return ret(\"jsonld-keyword\", \"meta\");\n }\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) break;\n escaped = !escaped && next == \"\\\\\";\n }\n if (!escaped) state.tokenize = tokenBase;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenComment(stream, state) {\n var maybeEnd = false, ch;\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return ret(\"comment\", \"comment\");\n }\n\n function tokenQuasi(stream, state) {\n var escaped = false, next;\n while ((next = stream.next()) != null) {\n if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n state.tokenize = tokenBase;\n break;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n return ret(\"quasi\", \"string-2\", stream.current());\n }\n\n var brackets = \"([{}])\";\n // This is a crude lookahead trick to try and notice that we're\n // parsing the argument patterns for a fat-arrow function before we\n // actually hit the arrow token. It only works if the arrow is on\n // the same line as the arguments and there's no strange noise\n // (comments) in between. Fallback is to only notice when we hit the\n // arrow, and not declare the arguments as locals for the arrow\n // body.\n function findFatArrow(stream, state) {\n if (state.fatArrowAt) state.fatArrowAt = null;\n var arrow = stream.string.indexOf(\"=>\", stream.start);\n if (arrow < 0) return;\n\n var depth = 0, sawSomething = false;\n for (var pos = arrow - 1; pos >= 0; --pos) {\n var ch = stream.string.charAt(pos);\n var bracket = brackets.indexOf(ch);\n if (bracket >= 0 && bracket < 3) {\n if (!depth) { ++pos; break; }\n if (--depth == 0) break;\n } else if (bracket >= 3 && bracket < 6) {\n ++depth;\n } else if (wordRE.test(ch)) {\n sawSomething = true;\n } else if (/[\"'\\/]/.test(ch)) {\n return;\n } else if (sawSomething && !depth) {\n ++pos;\n break;\n }\n }\n if (sawSomething && !depth) state.fatArrowAt = pos;\n }\n\n // Parser\n\n var atomicTypes = {\"atom\": true, \"number\": true, \"variable\": true, \"string\": true, \"regexp\": true, \"this\": true, \"jsonld-keyword\": true};\n\n function JSLexical(indented, column, type, align, prev, info) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.prev = prev;\n this.info = info;\n if (align != null) this.align = align;\n }\n\n function inScope(state, varname) {\n for (var v = state.localVars; v; v = v.next)\n if (v.name == varname) return true;\n for (var cx = state.context; cx; cx = cx.prev) {\n for (var v = cx.vars; v; v = v.next)\n if (v.name == varname) return true;\n }\n }\n\n function parseJS(state, style, type, content, stream) {\n var cc = state.cc;\n // Communicate our context to the combinators.\n // (Less wasteful than consing up a hundred closures on every call.)\n cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;\n\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = true;\n\n while(true) {\n var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n if (combinator(type, content)) {\n while(cc.length && cc[cc.length - 1].lex)\n cc.pop()();\n if (cx.marked) return cx.marked;\n if (type == \"variable\" && inScope(state, content)) return \"variable-2\";\n return style;\n }\n }\n }\n\n // Combinator utils\n\n var cx = {state: null, column: null, marked: null, cc: null};\n function pass() {\n for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n }\n function cont() {\n pass.apply(null, arguments);\n return true;\n }\n function register(varname) {\n function inList(list) {\n for (var v = list; v; v = v.next)\n if (v.name == varname) return true;\n return false;\n }\n var state = cx.state;\n if (state.context) {\n cx.marked = \"def\";\n if (inList(state.localVars)) return;\n state.localVars = {name: varname, next: state.localVars};\n } else {\n if (inList(state.globalVars)) return;\n if (parserConfig.globalVars)\n state.globalVars = {name: varname, next: state.globalVars};\n }\n }\n\n // Combinators\n\n var defaultVars = {name: \"this\", next: {name: \"arguments\"}};\n function pushcontext() {\n cx.state.context = {prev: cx.state.context, vars: cx.state.localVars};\n cx.state.localVars = defaultVars;\n }\n function popcontext() {\n cx.state.localVars = cx.state.context.vars;\n cx.state.context = cx.state.context.prev;\n }\n function pushlex(type, info) {\n var result = function() {\n var state = cx.state, indent = state.indented;\n if (state.lexical.type == \"stat\") indent = state.lexical.indented;\n else for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev)\n indent = outer.indented;\n state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n };\n result.lex = true;\n return result;\n }\n function poplex() {\n var state = cx.state;\n if (state.lexical.prev) {\n if (state.lexical.type == \")\")\n state.indented = state.lexical.indented;\n state.lexical = state.lexical.prev;\n }\n }\n poplex.lex = true;\n\n function expect(wanted) {\n function exp(type) {\n if (type == wanted) return cont();\n else if (wanted == \";\") return pass();\n else return cont(exp);\n };\n return exp;\n }\n\n function statement(type, value) {\n if (type == \"var\") return cont(pushlex(\"vardef\", value.length), vardef, expect(\";\"), poplex);\n if (type == \"keyword a\") return cont(pushlex(\"form\"), expression, statement, poplex);\n if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n if (type == \"{\") return cont(pushlex(\"}\"), block, poplex);\n if (type == \";\") return cont();\n if (type == \"if\") {\n if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex)\n cx.state.cc.pop()();\n return cont(pushlex(\"form\"), expression, statement, poplex, maybeelse);\n }\n if (type == \"function\") return cont(functiondef);\n if (type == \"for\") return cont(pushlex(\"form\"), forspec, statement, poplex);\n if (type == \"variable\") return cont(pushlex(\"stat\"), maybelabel);\n if (type == \"switch\") return cont(pushlex(\"form\"), expression, pushlex(\"}\", \"switch\"), expect(\"{\"),\n block, poplex, poplex);\n if (type == \"case\") return cont(expression, expect(\":\"));\n if (type == \"default\") return cont(expect(\":\"));\n if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, expect(\"(\"), funarg, expect(\")\"),\n statement, poplex, popcontext);\n if (type == \"module\") return cont(pushlex(\"form\"), pushcontext, afterModule, popcontext, poplex);\n if (type == \"class\") return cont(pushlex(\"form\"), className, poplex);\n if (type == \"export\") return cont(pushlex(\"form\"), afterExport, poplex);\n if (type == \"import\") return cont(pushlex(\"form\"), afterImport, poplex);\n return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n }\n function expression(type) {\n return expressionInner(type, false);\n }\n function expressionNoComma(type) {\n return expressionInner(type, true);\n }\n function expressionInner(type, noComma) {\n if (cx.state.fatArrowAt == cx.stream.start) {\n var body = noComma ? arrowBodyNoComma : arrowBody;\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(pattern, \")\"), poplex, expect(\"=>\"), body, popcontext);\n else if (type == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n }\n\n var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n if (type == \"function\") return cont(functiondef, maybeop);\n if (type == \"keyword c\") return cont(noComma ? maybeexpressionNoComma : maybeexpression);\n if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, comprehension, expect(\")\"), poplex, maybeop);\n if (type == \"operator\" || type == \"spread\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n if (type == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n if (type == \"quasi\") { return pass(quasi, maybeop); }\n return cont();\n }\n function maybeexpression(type) {\n if (type.match(/[;\\}\\)\\],]/)) return pass();\n return pass(expression);\n }\n function maybeexpressionNoComma(type) {\n if (type.match(/[;\\}\\)\\],]/)) return pass();\n return pass(expressionNoComma);\n }\n\n function maybeoperatorComma(type, value) {\n if (type == \",\") return cont(expression);\n return maybeoperatorNoComma(type, value, false);\n }\n function maybeoperatorNoComma(type, value, noComma) {\n var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n var expr = noComma == false ? expression : expressionNoComma;\n if (type == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n if (type == \"operator\") {\n if (/\\+\\+|--/.test(value)) return cont(me);\n if (value == \"?\") return cont(expression, expect(\":\"), expr);\n return cont(expr);\n }\n if (type == \"quasi\") { return pass(quasi, me); }\n if (type == \";\") return;\n if (type == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n if (type == \".\") return cont(property, me);\n if (type == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n }\n function quasi(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n return cont(expression, continueQuasi);\n }\n function continueQuasi(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasi);\n }\n }\n function arrowBody(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expression);\n }\n function arrowBodyNoComma(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expressionNoComma);\n }\n function maybelabel(type) {\n if (type == \":\") return cont(poplex, statement);\n return pass(maybeoperatorComma, expect(\";\"), poplex);\n }\n function property(type) {\n if (type == \"variable\") {cx.marked = \"property\"; return cont();}\n }\n function objprop(type, value) {\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n if (value == \"get\" || value == \"set\") return cont(getterSetter);\n return cont(afterprop);\n } else if (type == \"number\" || type == \"string\") {\n cx.marked = jsonldMode ? \"property\" : (cx.style + \" property\");\n return cont(afterprop);\n } else if (type == \"jsonld-keyword\") {\n return cont(afterprop);\n } else if (type == \"[\") {\n return cont(expression, expect(\"]\"), afterprop);\n }\n }\n function getterSetter(type) {\n if (type != \"variable\") return pass(afterprop);\n cx.marked = \"property\";\n return cont(functiondef);\n }\n function afterprop(type) {\n if (type == \":\") return cont(expressionNoComma);\n if (type == \"(\") return pass(functiondef);\n }\n function commasep(what, end) {\n function proceed(type) {\n if (type == \",\") {\n var lex = cx.state.lexical;\n if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n return cont(what, proceed);\n }\n if (type == end) return cont();\n return cont(expect(end));\n }\n return function(type) {\n if (type == end) return cont();\n return pass(what, proceed);\n };\n }\n function contCommasep(what, end, info) {\n for (var i = 3; i < arguments.length; i++)\n cx.cc.push(arguments[i]);\n return cont(pushlex(end, info), commasep(what, end), poplex);\n }\n function block(type) {\n if (type == \"}\") return cont();\n return pass(statement, block);\n }\n function maybetype(type) {\n if (isTS && type == \":\") return cont(typedef);\n }\n function typedef(type) {\n if (type == \"variable\"){cx.marked = \"variable-3\"; return cont();}\n }\n function vardef() {\n return pass(pattern, maybetype, maybeAssign, vardefCont);\n }\n function pattern(type, value) {\n if (type == \"variable\") { register(value); return cont(); }\n if (type == \"[\") return contCommasep(pattern, \"]\");\n if (type == \"{\") return contCommasep(proppattern, \"}\");\n }\n function proppattern(type, value) {\n if (type == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n register(value);\n return cont(maybeAssign);\n }\n if (type == \"variable\") cx.marked = \"property\";\n return cont(expect(\":\"), pattern, maybeAssign);\n }\n function maybeAssign(_type, value) {\n if (value == \"=\") return cont(expressionNoComma);\n }\n function vardefCont(type) {\n if (type == \",\") return cont(vardef);\n }\n function maybeelse(type, value) {\n if (type == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n }\n function forspec(type) {\n if (type == \"(\") return cont(pushlex(\")\"), forspec1, expect(\")\"), poplex);\n }\n function forspec1(type) {\n if (type == \"var\") return cont(vardef, expect(\";\"), forspec2);\n if (type == \";\") return cont(forspec2);\n if (type == \"variable\") return cont(formaybeinof);\n return pass(expression, expect(\";\"), forspec2);\n }\n function formaybeinof(_type, value) {\n if (value == \"in\" || value == \"of\") { cx.marked = \"keyword\"; return cont(expression); }\n return cont(maybeoperatorComma, forspec2);\n }\n function forspec2(type, value) {\n if (type == \";\") return cont(forspec3);\n if (value == \"in\" || value == \"of\") { cx.marked = \"keyword\"; return cont(expression); }\n return pass(expression, expect(\";\"), forspec3);\n }\n function forspec3(type) {\n if (type != \")\") cont(expression);\n }\n function functiondef(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondef);}\n if (type == \"variable\") {register(value); return cont(functiondef);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, statement, popcontext);\n }\n function funarg(type) {\n if (type == \"spread\") return cont(funarg);\n return pass(pattern, maybetype);\n }\n function className(type, value) {\n if (type == \"variable\") {register(value); return cont(classNameAfter);}\n }\n function classNameAfter(type, value) {\n if (value == \"extends\") return cont(expression, classNameAfter);\n if (type == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n }\n function classBody(type, value) {\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n if (value == \"get\" || value == \"set\") return cont(classGetterSetter, functiondef, classBody);\n return cont(functiondef, classBody);\n }\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (type == \";\") return cont(classBody);\n if (type == \"}\") return cont();\n }\n function classGetterSetter(type) {\n if (type != \"variable\") return pass();\n cx.marked = \"property\";\n return cont();\n }\n function afterModule(type, value) {\n if (type == \"string\") return cont(statement);\n if (type == \"variable\") { register(value); return cont(maybeFrom); }\n }\n function afterExport(_type, value) {\n if (value == \"*\") { cx.marked = \"keyword\"; return cont(maybeFrom, expect(\";\")); }\n if (value == \"default\") { cx.marked = \"keyword\"; return cont(expression, expect(\";\")); }\n return pass(statement);\n }\n function afterImport(type) {\n if (type == \"string\") return cont();\n return pass(importSpec, maybeFrom);\n }\n function importSpec(type, value) {\n if (type == \"{\") return contCommasep(importSpec, \"}\");\n if (type == \"variable\") register(value);\n return cont();\n }\n function maybeFrom(_type, value) {\n if (value == \"from\") { cx.marked = \"keyword\"; return cont(expression); }\n }\n function arrayLiteral(type) {\n if (type == \"]\") return cont();\n return pass(expressionNoComma, maybeArrayComprehension);\n }\n function maybeArrayComprehension(type) {\n if (type == \"for\") return pass(comprehension, expect(\"]\"));\n if (type == \",\") return cont(commasep(maybeexpressionNoComma, \"]\"));\n return pass(commasep(expressionNoComma, \"]\"));\n }\n function comprehension(type) {\n if (type == \"for\") return cont(forspec, comprehension);\n if (type == \"if\") return cont(expression, comprehension);\n }\n\n function isContinuedStatement(state, textAfter) {\n return state.lastType == \"operator\" || state.lastType == \",\" ||\n isOperatorChar.test(textAfter.charAt(0)) ||\n /[,.]/.test(textAfter.charAt(0));\n }\n\n // Interface\n\n return {\n startState: function(basecolumn) {\n var state = {\n tokenize: tokenBase,\n lastType: \"sof\",\n cc: [],\n lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n localVars: parserConfig.localVars,\n context: parserConfig.localVars && {vars: parserConfig.localVars},\n indented: 0\n };\n if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\")\n state.globalVars = parserConfig.globalVars;\n return state;\n },\n\n token: function(stream, state) {\n if (stream.sol()) {\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = false;\n state.indented = stream.indentation();\n findFatArrow(stream, state);\n }\n if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n var style = state.tokenize(stream, state);\n if (type == \"comment\") return style;\n state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n return parseJS(state, style, type, content, stream);\n },\n\n indent: function(state, textAfter) {\n if (state.tokenize == tokenComment) return CodeMirror.Pass;\n if (state.tokenize != tokenBase) return 0;\n var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical;\n // Kludge to prevent 'maybelse' from blocking lexical scope pops\n if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n var c = state.cc[i];\n if (c == poplex) lexical = lexical.prev;\n else if (c != maybeelse) break;\n }\n if (lexical.type == \"stat\" && firstChar == \"}\") lexical = lexical.prev;\n if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\")\n lexical = lexical.prev;\n var type = lexical.type, closing = firstChar == type;\n\n if (type == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info + 1 : 0);\n else if (type == \"form\" && firstChar == \"{\") return lexical.indented;\n else if (type == \"form\") return lexical.indented + indentUnit;\n else if (type == \"stat\")\n return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);\n else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false)\n return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);\n else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n else return lexical.indented + (closing ? 0 : indentUnit);\n },\n\n electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n blockCommentStart: jsonMode ? null : \"/*\",\n blockCommentEnd: jsonMode ? null : \"*/\",\n lineComment: jsonMode ? null : \"//\",\n fold: \"brace\",\n\n helperType: jsonMode ? \"json\" : \"javascript\",\n jsonldMode: jsonldMode,\n jsonMode: jsonMode\n };\n});\n\nCodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n\nCodeMirror.defineMIME(\"text/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/json\", {name: \"javascript\", json: true});\nCodeMirror.defineMIME(\"application/x-json\", {name: \"javascript\", json: true});\nCodeMirror.defineMIME(\"application/ld+json\", {name: \"javascript\", jsonld: true});\nCodeMirror.defineMIME(\"text/typescript\", { name: \"javascript\", typescript: true });\nCodeMirror.defineMIME(\"application/typescript\", { name: \"javascript\", typescript: true });\n\n});\n\n},{\"codemirror\":undefined}],11:[function(require,module,exports){\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"xml\", function(config, parserConfig) {\n var indentUnit = config.indentUnit;\n var multilineTagIndentFactor = parserConfig.multilineTagIndentFactor || 1;\n var multilineTagIndentPastTag = parserConfig.multilineTagIndentPastTag;\n if (multilineTagIndentPastTag == null) multilineTagIndentPastTag = true;\n\n var Kludges = parserConfig.htmlMode ? {\n autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,\n 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,\n 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,\n 'track': true, 'wbr': true, 'menuitem': true},\n implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,\n 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,\n 'th': true, 'tr': true},\n contextGrabbers: {\n 'dd': {'dd': true, 'dt': true},\n 'dt': {'dd': true, 'dt': true},\n 'li': {'li': true},\n 'option': {'option': true, 'optgroup': true},\n 'optgroup': {'optgroup': true},\n 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,\n 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,\n 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,\n 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,\n 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},\n 'rp': {'rp': true, 'rt': true},\n 'rt': {'rp': true, 'rt': true},\n 'tbody': {'tbody': true, 'tfoot': true},\n 'td': {'td': true, 'th': true},\n 'tfoot': {'tbody': true},\n 'th': {'td': true, 'th': true},\n 'thead': {'tbody': true, 'tfoot': true},\n 'tr': {'tr': true}\n },\n doNotIndent: {\"pre\": true},\n allowUnquoted: true,\n allowMissing: true,\n caseFold: true\n } : {\n autoSelfClosers: {},\n implicitlyClosed: {},\n contextGrabbers: {},\n doNotIndent: {},\n allowUnquoted: false,\n allowMissing: false,\n caseFold: false\n };\n var alignCDATA = parserConfig.alignCDATA;\n\n // Return variables for tokenizers\n var type, setStyle;\n\n function inText(stream, state) {\n function chain(parser) {\n state.tokenize = parser;\n return parser(stream, state);\n }\n\n var ch = stream.next();\n if (ch == \"<\") {\n if (stream.eat(\"!\")) {\n if (stream.eat(\"[\")) {\n if (stream.match(\"CDATA[\")) return chain(inBlock(\"atom\", \"]]>\"));\n else return null;\n } else if (stream.match(\"--\")) {\n return chain(inBlock(\"comment\", \"-->\"));\n } else if (stream.match(\"DOCTYPE\", true, true)) {\n stream.eatWhile(/[\\w\\._\\-]/);\n return chain(doctype(1));\n } else {\n return null;\n }\n } else if (stream.eat(\"?\")) {\n stream.eatWhile(/[\\w\\._\\-]/);\n state.tokenize = inBlock(\"meta\", \"?>\");\n return \"meta\";\n } else {\n type = stream.eat(\"/\") ? \"closeTag\" : \"openTag\";\n state.tokenize = inTag;\n return \"tag bracket\";\n }\n } else if (ch == \"&\") {\n var ok;\n if (stream.eat(\"#\")) {\n if (stream.eat(\"x\")) {\n ok = stream.eatWhile(/[a-fA-F\\d]/) && stream.eat(\";\");\n } else {\n ok = stream.eatWhile(/[\\d]/) && stream.eat(\";\");\n }\n } else {\n ok = stream.eatWhile(/[\\w\\.\\-:]/) && stream.eat(\";\");\n }\n return ok ? \"atom\" : \"error\";\n } else {\n stream.eatWhile(/[^&<]/);\n return null;\n }\n }\n\n function inTag(stream, state) {\n var ch = stream.next();\n if (ch == \">\" || (ch == \"/\" && stream.eat(\">\"))) {\n state.tokenize = inText;\n type = ch == \">\" ? \"endTag\" : \"selfcloseTag\";\n return \"tag bracket\";\n } else if (ch == \"=\") {\n type = \"equals\";\n return null;\n } else if (ch == \"<\") {\n state.tokenize = inText;\n state.state = baseState;\n state.tagName = state.tagStart = null;\n var next = state.tokenize(stream, state);\n return next ? next + \" tag error\" : \"tag error\";\n } else if (/[\\'\\\"]/.test(ch)) {\n state.tokenize = inAttribute(ch);\n state.stringStartCol = stream.column();\n return state.tokenize(stream, state);\n } else {\n stream.match(/^[^\\s\\u00a0=<>\\\"\\']*[^\\s\\u00a0=<>\\\"\\'\\/]/);\n return \"word\";\n }\n }\n\n function inAttribute(quote) {\n var closure = function(stream, state) {\n while (!stream.eol()) {\n if (stream.next() == quote) {\n state.tokenize = inTag;\n break;\n }\n }\n return \"string\";\n };\n closure.isInAttribute = true;\n return closure;\n }\n\n function inBlock(style, terminator) {\n return function(stream, state) {\n while (!stream.eol()) {\n if (stream.match(terminator)) {\n state.tokenize = inText;\n break;\n }\n stream.next();\n }\n return style;\n };\n }\n function doctype(depth) {\n return function(stream, state) {\n var ch;\n while ((ch = stream.next()) != null) {\n if (ch == \"<\") {\n state.tokenize = doctype(depth + 1);\n return state.tokenize(stream, state);\n } else if (ch == \">\") {\n if (depth == 1) {\n state.tokenize = inText;\n break;\n } else {\n state.tokenize = doctype(depth - 1);\n return state.tokenize(stream, state);\n }\n }\n }\n return \"meta\";\n };\n }\n\n function Context(state, tagName, startOfLine) {\n this.prev = state.context;\n this.tagName = tagName;\n this.indent = state.indented;\n this.startOfLine = startOfLine;\n if (Kludges.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))\n this.noIndent = true;\n }\n function popContext(state) {\n if (state.context) state.context = state.context.prev;\n }\n function maybePopContext(state, nextTagName) {\n var parentTagName;\n while (true) {\n if (!state.context) {\n return;\n }\n parentTagName = state.context.tagName;\n if (!Kludges.contextGrabbers.hasOwnProperty(parentTagName) ||\n !Kludges.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) {\n return;\n }\n popContext(state);\n }\n }\n\n function baseState(type, stream, state) {\n if (type == \"openTag\") {\n state.tagStart = stream.column();\n return tagNameState;\n } else if (type == \"closeTag\") {\n return closeTagNameState;\n } else {\n return baseState;\n }\n }\n function tagNameState(type, stream, state) {\n if (type == \"word\") {\n state.tagName = stream.current();\n setStyle = \"tag\";\n return attrState;\n } else {\n setStyle = \"error\";\n return tagNameState;\n }\n }\n function closeTagNameState(type, stream, state) {\n if (type == \"word\") {\n var tagName = stream.current();\n if (state.context && state.context.tagName != tagName &&\n Kludges.implicitlyClosed.hasOwnProperty(state.context.tagName))\n popContext(state);\n if (state.context && state.context.tagName == tagName) {\n setStyle = \"tag\";\n return closeState;\n } else {\n setStyle = \"tag error\";\n return closeStateErr;\n }\n } else {\n setStyle = \"error\";\n return closeStateErr;\n }\n }\n\n function closeState(type, _stream, state) {\n if (type != \"endTag\") {\n setStyle = \"error\";\n return closeState;\n }\n popContext(state);\n return baseState;\n }\n function closeStateErr(type, stream, state) {\n setStyle = \"error\";\n return closeState(type, stream, state);\n }\n\n function attrState(type, _stream, state) {\n if (type == \"word\") {\n setStyle = \"attribute\";\n return attrEqState;\n } else if (type == \"endTag\" || type == \"selfcloseTag\") {\n var tagName = state.tagName, tagStart = state.tagStart;\n state.tagName = state.tagStart = null;\n if (type == \"selfcloseTag\" ||\n Kludges.autoSelfClosers.hasOwnProperty(tagName)) {\n maybePopContext(state, tagName);\n } else {\n maybePopContext(state, tagName);\n state.context = new Context(state, tagName, tagStart == state.indented);\n }\n return baseState;\n }\n setStyle = \"error\";\n return attrState;\n }\n function attrEqState(type, stream, state) {\n if (type == \"equals\") return attrValueState;\n if (!Kludges.allowMissing) setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrValueState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n if (type == \"word\" && Kludges.allowUnquoted) {setStyle = \"string\"; return attrState;}\n setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrContinuedState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n return attrState(type, stream, state);\n }\n\n return {\n startState: function() {\n return {tokenize: inText,\n state: baseState,\n indented: 0,\n tagName: null, tagStart: null,\n context: null};\n },\n\n token: function(stream, state) {\n if (!state.tagName && stream.sol())\n state.indented = stream.indentation();\n\n if (stream.eatSpace()) return null;\n type = null;\n var style = state.tokenize(stream, state);\n if ((style || type) && style != \"comment\") {\n setStyle = null;\n state.state = state.state(type || style, stream, state);\n if (setStyle)\n style = setStyle == \"error\" ? style + \" error\" : setStyle;\n }\n return style;\n },\n\n indent: function(state, textAfter, fullLine) {\n var context = state.context;\n // Indent multi-line strings (e.g. css).\n if (state.tokenize.isInAttribute) {\n if (state.tagStart == state.indented)\n return state.stringStartCol + 1;\n else\n return state.indented + indentUnit;\n }\n if (context && context.noIndent) return CodeMirror.Pass;\n if (state.tokenize != inTag && state.tokenize != inText)\n return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0;\n // Indent the starts of attribute names.\n if (state.tagName) {\n if (multilineTagIndentPastTag)\n return state.tagStart + state.tagName.length + 2;\n else\n return state.tagStart + indentUnit * multilineTagIndentFactor;\n }\n if (alignCDATA && /$/,\n blockCommentStart: \"\",\n\n configuration: parserConfig.htmlMode ? \"html\" : \"xml\",\n helperType: parserConfig.htmlMode ? \"html\" : \"xml\"\n };\n});\n\nCodeMirror.defineMIME(\"text/xml\", \"xml\");\nCodeMirror.defineMIME(\"application/xml\", \"xml\");\nif (!CodeMirror.mimeModes.hasOwnProperty(\"text/html\"))\n CodeMirror.defineMIME(\"text/html\", {name: \"xml\", htmlMode: true});\n\n});\n\n},{\"codemirror\":undefined}],12:[function(require,module,exports){\n(function() {\n var callWithJQuery;\n\n callWithJQuery = function(pivotModule) {\n if (typeof exports === \"object\" && typeof module === \"object\") {\n return pivotModule((function(){try{return require('jquery')}catch(e){return window.jQuery}})());\n } else if (typeof define === \"function\" && define.amd) {\n return define([\"jquery\"], pivotModule);\n } else {\n return pivotModule(jQuery);\n }\n };\n\n callWithJQuery(function($) {\n return $.pivotUtilities.d3_renderers = {\n Treemap: function(pivotData, opts) {\n var addToTree, color, defaults, height, i, len, ref, result, rowKey, tree, treemap, value, width;\n defaults = {\n localeStrings: {},\n d3: {\n width: function() {\n return $(window).width() / 1.4;\n },\n height: function() {\n return $(window).height() / 1.4;\n }\n }\n };\n opts = $.extend(defaults, opts);\n result = $(\"
\").css({\n width: \"100%\",\n height: \"100%\"\n });\n tree = {\n name: \"All\",\n children: []\n };\n addToTree = function(tree, path, value) {\n var child, i, len, newChild, ref, x;\n if (path.length === 0) {\n tree.value = value;\n return;\n }\n if (tree.children == null) {\n tree.children = [];\n }\n x = path.shift();\n ref = tree.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n if (!(child.name === x)) {\n continue;\n }\n addToTree(child, path, value);\n return;\n }\n newChild = {\n name: x\n };\n addToTree(newChild, path, value);\n return tree.children.push(newChild);\n };\n ref = pivotData.getRowKeys();\n for (i = 0, len = ref.length; i < len; i++) {\n rowKey = ref[i];\n value = pivotData.getAggregator(rowKey, []).value();\n if (value != null) {\n addToTree(tree, rowKey, value);\n }\n }\n color = d3.scale.category10();\n width = opts.d3.width();\n height = opts.d3.height();\n treemap = d3.layout.treemap().size([width, height]).sticky(true).value(function(d) {\n return d.size;\n });\n d3.select(result[0]).append(\"div\").style(\"position\", \"relative\").style(\"width\", width + \"px\").style(\"height\", height + \"px\").datum(tree).selectAll(\".node\").data(treemap.padding([15, 0, 0, 0]).value(function(d) {\n return d.value;\n }).nodes).enter().append(\"div\").attr(\"class\", \"node\").style(\"background\", function(d) {\n if (d.children != null) {\n return \"lightgrey\";\n } else {\n return color(d.name);\n }\n }).text(function(d) {\n return d.name;\n }).call(function() {\n this.style(\"left\", function(d) {\n return d.x + \"px\";\n }).style(\"top\", function(d) {\n return d.y + \"px\";\n }).style(\"width\", function(d) {\n return Math.max(0, d.dx - 1) + \"px\";\n }).style(\"height\", function(d) {\n return Math.max(0, d.dy - 1) + \"px\";\n });\n });\n return result;\n }\n };\n });\n\n}).call(this);\n\n\n},{\"jquery\":undefined}],13:[function(require,module,exports){\n(function() {\n var callWithJQuery;\n\n callWithJQuery = function(pivotModule) {\n if (typeof exports === \"object\" && typeof module === \"object\") {\n return pivotModule((function(){try{return require('jquery')}catch(e){return window.jQuery}})());\n } else if (typeof define === \"function\" && define.amd) {\n return define([\"jquery\"], pivotModule);\n } else {\n return pivotModule(jQuery);\n }\n };\n\n callWithJQuery(function($) {\n var makeGoogleChart;\n makeGoogleChart = function(chartType, extraOptions) {\n return function(pivotData, opts) {\n var agg, base, base1, colKey, colKeys, dataArray, dataTable, defaults, fullAggName, groupByTitle, h, hAxisTitle, headers, i, j, len, len1, numCharsInHAxis, options, ref, result, row, rowKey, rowKeys, title, tree2, vAxisTitle, val, wrapper, x, y;\n defaults = {\n localeStrings: {\n vs: \"vs\",\n by: \"by\"\n },\n gchart: {}\n };\n opts = $.extend(true, defaults, opts);\n if ((base = opts.gchart).width == null) {\n base.width = window.innerWidth / 1.4;\n }\n if ((base1 = opts.gchart).height == null) {\n base1.height = window.innerHeight / 1.4;\n }\n rowKeys = pivotData.getRowKeys();\n if (rowKeys.length === 0) {\n rowKeys.push([]);\n }\n colKeys = pivotData.getColKeys();\n if (colKeys.length === 0) {\n colKeys.push([]);\n }\n fullAggName = pivotData.aggregatorName;\n if (pivotData.valAttrs.length) {\n fullAggName += \"(\" + (pivotData.valAttrs.join(\", \")) + \")\";\n }\n headers = (function() {\n var i, len, results;\n results = [];\n for (i = 0, len = rowKeys.length; i < len; i++) {\n h = rowKeys[i];\n results.push(h.join(\"-\"));\n }\n return results;\n })();\n headers.unshift(\"\");\n numCharsInHAxis = 0;\n if (chartType === \"ScatterChart\") {\n dataArray = [];\n ref = pivotData.tree;\n for (y in ref) {\n tree2 = ref[y];\n for (x in tree2) {\n agg = tree2[x];\n dataArray.push([parseFloat(x), parseFloat(y), fullAggName + \": \\n\" + agg.format(agg.value())]);\n }\n }\n dataTable = new google.visualization.DataTable();\n dataTable.addColumn('number', pivotData.colAttrs.join(\"-\"));\n dataTable.addColumn('number', pivotData.rowAttrs.join(\"-\"));\n dataTable.addColumn({\n type: \"string\",\n role: \"tooltip\"\n });\n dataTable.addRows(dataArray);\n hAxisTitle = pivotData.colAttrs.join(\"-\");\n vAxisTitle = pivotData.rowAttrs.join(\"-\");\n title = \"\";\n } else {\n dataArray = [headers];\n for (i = 0, len = colKeys.length; i < len; i++) {\n colKey = colKeys[i];\n row = [colKey.join(\"-\")];\n numCharsInHAxis += row[0].length;\n for (j = 0, len1 = rowKeys.length; j < len1; j++) {\n rowKey = rowKeys[j];\n agg = pivotData.getAggregator(rowKey, colKey);\n if (agg.value() != null) {\n val = agg.value();\n if ($.isNumeric(val)) {\n if (val < 1) {\n row.push(parseFloat(val.toPrecision(3)));\n } else {\n row.push(parseFloat(val.toFixed(3)));\n }\n } else {\n row.push(val);\n }\n } else {\n row.push(null);\n }\n }\n dataArray.push(row);\n }\n dataTable = google.visualization.arrayToDataTable(dataArray);\n title = vAxisTitle = fullAggName;\n hAxisTitle = pivotData.colAttrs.join(\"-\");\n if (hAxisTitle !== \"\") {\n title += \" \" + opts.localeStrings.vs + \" \" + hAxisTitle;\n }\n groupByTitle = pivotData.rowAttrs.join(\"-\");\n if (groupByTitle !== \"\") {\n title += \" \" + opts.localeStrings.by + \" \" + groupByTitle;\n }\n }\n options = {\n title: title,\n hAxis: {\n title: hAxisTitle,\n slantedText: numCharsInHAxis > 50\n },\n vAxis: {\n title: vAxisTitle\n },\n tooltip: {\n textStyle: {\n fontName: 'Arial',\n fontSize: 12\n }\n }\n };\n if (chartType === \"ColumnChart\") {\n options.vAxis.minValue = 0;\n }\n if (chartType === \"ScatterChart\") {\n options.legend = {\n position: \"none\"\n };\n options.chartArea = {\n 'width': '80%',\n 'height': '80%'\n };\n } else if (dataArray[0].length === 2 && dataArray[0][1] === \"\") {\n options.legend = {\n position: \"none\"\n };\n }\n $.extend(options, opts.gchart, extraOptions);\n result = $(\"
\").css({\n width: \"100%\",\n height: \"100%\"\n });\n wrapper = new google.visualization.ChartWrapper({\n dataTable: dataTable,\n chartType: chartType,\n options: options\n });\n wrapper.draw(result[0]);\n result.bind(\"dblclick\", function() {\n var editor;\n editor = new google.visualization.ChartEditor();\n google.visualization.events.addListener(editor, 'ok', function() {\n return editor.getChartWrapper().draw(result[0]);\n });\n return editor.openDialog(wrapper);\n });\n return result;\n };\n };\n return $.pivotUtilities.gchart_renderers = {\n \"Line Chart\": makeGoogleChart(\"LineChart\"),\n \"Bar Chart\": makeGoogleChart(\"ColumnChart\"),\n \"Stacked Bar Chart\": makeGoogleChart(\"ColumnChart\", {\n isStacked: true\n }),\n \"Area Chart\": makeGoogleChart(\"AreaChart\", {\n isStacked: true\n }),\n \"Scatter Chart\": makeGoogleChart(\"ScatterChart\")\n };\n });\n\n}).call(this);\n\n\n},{\"jquery\":undefined}],14:[function(require,module,exports){\n;(function(win){\n\tvar store = {},\n\t\tdoc = win.document,\n\t\tlocalStorageName = 'localStorage',\n\t\tscriptTag = 'script',\n\t\tstorage\n\n\tstore.disabled = false\n\tstore.version = '1.3.17'\n\tstore.set = function(key, value) {}\n\tstore.get = function(key, defaultVal) {}\n\tstore.has = function(key) { return store.get(key) !== undefined }\n\tstore.remove = function(key) {}\n\tstore.clear = function() {}\n\tstore.transact = function(key, defaultVal, transactionFn) {\n\t\tif (transactionFn == null) {\n\t\t\ttransactionFn = defaultVal\n\t\t\tdefaultVal = null\n\t\t}\n\t\tif (defaultVal == null) {\n\t\t\tdefaultVal = {}\n\t\t}\n\t\tvar val = store.get(key, defaultVal)\n\t\ttransactionFn(val)\n\t\tstore.set(key, val)\n\t}\n\tstore.getAll = function() {}\n\tstore.forEach = function() {}\n\n\tstore.serialize = function(value) {\n\t\treturn JSON.stringify(value)\n\t}\n\tstore.deserialize = function(value) {\n\t\tif (typeof value != 'string') { return undefined }\n\t\ttry { return JSON.parse(value) }\n\t\tcatch(e) { return value || undefined }\n\t}\n\n\t// Functions to encapsulate questionable FireFox 3.6.13 behavior\n\t// when about.config::dom.storage.enabled === false\n\t// See https://github.com/marcuswestin/store.js/issues#issue/13\n\tfunction isLocalStorageNameSupported() {\n\t\ttry { return (localStorageName in win && win[localStorageName]) }\n\t\tcatch(err) { return false }\n\t}\n\n\tif (isLocalStorageNameSupported()) {\n\t\tstorage = win[localStorageName]\n\t\tstore.set = function(key, val) {\n\t\t\tif (val === undefined) { return store.remove(key) }\n\t\t\tstorage.setItem(key, store.serialize(val))\n\t\t\treturn val\n\t\t}\n\t\tstore.get = function(key, defaultVal) {\n\t\t\tvar val = store.deserialize(storage.getItem(key))\n\t\t\treturn (val === undefined ? defaultVal : val)\n\t\t}\n\t\tstore.remove = function(key) { storage.removeItem(key) }\n\t\tstore.clear = function() { storage.clear() }\n\t\tstore.getAll = function() {\n\t\t\tvar ret = {}\n\t\t\tstore.forEach(function(key, val) {\n\t\t\t\tret[key] = val\n\t\t\t})\n\t\t\treturn ret\n\t\t}\n\t\tstore.forEach = function(callback) {\n\t\t\tfor (var i=0; idocument.w=window')\n\t\t\tstorageContainer.close()\n\t\t\tstorageOwner = storageContainer.w.frames[0].document\n\t\t\tstorage = storageOwner.createElement('div')\n\t\t} catch(e) {\n\t\t\t// somehow ActiveXObject instantiation failed (perhaps some special\n\t\t\t// security settings or otherwse), fall back to per-path storage\n\t\t\tstorage = doc.createElement('div')\n\t\t\tstorageOwner = doc.body\n\t\t}\n\t\tvar withIEStorage = function(storeFunction) {\n\t\t\treturn function() {\n\t\t\t\tvar args = Array.prototype.slice.call(arguments, 0)\n\t\t\t\targs.unshift(storage)\n\t\t\t\t// See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx\n\t\t\t\t// and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx\n\t\t\t\tstorageOwner.appendChild(storage)\n\t\t\t\tstorage.addBehavior('#default#userData')\n\t\t\t\tstorage.load(localStorageName)\n\t\t\t\tvar result = storeFunction.apply(store, args)\n\t\t\t\tstorageOwner.removeChild(storage)\n\t\t\t\treturn result\n\t\t\t}\n\t\t}\n\n\t\t// In IE7, keys cannot start with a digit or contain certain chars.\n\t\t// See https://github.com/marcuswestin/store.js/issues/40\n\t\t// See https://github.com/marcuswestin/store.js/issues/83\n\t\tvar forbiddenCharsRegex = new RegExp(\"[!\\\"#$%&'()*+,/\\\\\\\\:;<=>?@[\\\\]^`{|}~]\", \"g\")\n\t\tfunction ieKeyFix(key) {\n\t\t\treturn key.replace(/^d/, '___$&').replace(forbiddenCharsRegex, '___')\n\t\t}\n\t\tstore.set = withIEStorage(function(storage, key, val) {\n\t\t\tkey = ieKeyFix(key)\n\t\t\tif (val === undefined) { return store.remove(key) }\n\t\t\tstorage.setAttribute(key, store.serialize(val))\n\t\t\tstorage.save(localStorageName)\n\t\t\treturn val\n\t\t})\n\t\tstore.get = withIEStorage(function(storage, key, defaultVal) {\n\t\t\tkey = ieKeyFix(key)\n\t\t\tvar val = store.deserialize(storage.getAttribute(key))\n\t\t\treturn (val === undefined ? defaultVal : val)\n\t\t})\n\t\tstore.remove = withIEStorage(function(storage, key) {\n\t\t\tkey = ieKeyFix(key)\n\t\t\tstorage.removeAttribute(key)\n\t\t\tstorage.save(localStorageName)\n\t\t})\n\t\tstore.clear = withIEStorage(function(storage) {\n\t\t\tvar attributes = storage.XMLDocument.documentElement.attributes\n\t\t\tstorage.load(localStorageName)\n\t\t\tfor (var i=0, attr; attr=attributes[i]; i++) {\n\t\t\t\tstorage.removeAttribute(attr.name)\n\t\t\t}\n\t\t\tstorage.save(localStorageName)\n\t\t})\n\t\tstore.getAll = function(storage) {\n\t\t\tvar ret = {}\n\t\t\tstore.forEach(function(key, val) {\n\t\t\t\tret[key] = val\n\t\t\t})\n\t\t\treturn ret\n\t\t}\n\t\tstore.forEach = withIEStorage(function(storage, callback) {\n\t\t\tvar attributes = storage.XMLDocument.documentElement.attributes\n\t\t\tfor (var i=0, attr; attr=attributes[i]; ++i) {\n\t\t\t\tcallback(attr.name, store.deserialize(storage.getAttribute(attr.name)))\n\t\t\t}\n\t\t})\n\t}\n\n\ttry {\n\t\tvar testKey = '__storejs__'\n\t\tstore.set(testKey, testKey)\n\t\tif (store.get(testKey) != testKey) { store.disabled = true }\n\t\tstore.remove(testKey)\n\t} catch(e) {\n\t\tstore.disabled = true\n\t}\n\tstore.enabled = !store.disabled\n\n\tif (typeof module != 'undefined' && module.exports && this.module !== module) { module.exports = store }\n\telse if (typeof define === 'function' && define.amd) { define(store) }\n\telse { win.store = store }\n\n})(Function('return this')());\n\n},{}],15:[function(require,module,exports){\nmodule.exports={\n \"name\": \"yasgui-utils\",\n \"version\": \"1.6.0\",\n \"description\": \"Utils for YASGUI libs\",\n \"main\": \"src/main.js\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git://github.com/YASGUI/Utils.git\"\n },\n \"licenses\": [\n {\n \"type\": \"MIT\",\n \"url\": \"http://yasgui.github.io/license.txt\"\n }\n ],\n \"author\": {\n \"name\": \"Laurens Rietveld\"\n },\n \"maintainers\": [\n {\n \"name\": \"Laurens Rietveld\",\n \"email\": \"laurens.rietveld@gmail.com\",\n \"url\": \"http://laurensrietveld.nl\"\n }\n ],\n \"bugs\": {\n \"url\": \"https://github.com/YASGUI/Utils/issues\"\n },\n \"homepage\": \"https://github.com/YASGUI/Utils\",\n \"dependencies\": {\n \"store\": \"^1.3.14\"\n },\n \"readme\": \"A simple utils repo for the YASGUI tools\\n\",\n \"readmeFilename\": \"README.md\",\n \"_id\": \"yasgui-utils@1.6.0\",\n \"_from\": \"yasgui-utils@>=1.4.1 <2.0.0\"\n}\n\n},{}],16:[function(require,module,exports){\nwindow.console = window.console || {\"log\":function(){}};//make sure any console statements don't break IE\nmodule.exports = {\n\tstorage: require(\"./storage.js\"),\n\tsvg: require(\"./svg.js\"),\n\tversion: {\n\t\t\"yasgui-utils\" : require(\"../package.json\").version,\n\t},\n\tnestedExists : function(obj) {\n\t\tvar args = Array.prototype.slice.call(arguments, 1);\n\n\t\tfor (var i = 0; i < args.length; i++) {\n\t\t\tif (!obj || !obj.hasOwnProperty(args[i])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tobj = obj[args[i]];\n\t\t}\n\t\treturn true;\n\t}\n};\n\n},{\"../package.json\":15,\"./storage.js\":17,\"./svg.js\":18}],17:[function(require,module,exports){\nvar store = require(\"store\");\nvar times = {\n\tday: function() {\n\t\treturn 1000 * 3600 * 24;//millis to day\n\t},\n\tmonth: function() {\n\t\ttimes.day() * 30;\n\t},\n\tyear: function() {\n\t\ttimes.month() * 12;\n\t}\n};\n\nvar root = module.exports = {\n\tset : function(key, val, exp) {\n if (!store.enabled) return;//this is probably in private mode. Don't run, as we might get Js errors\n\t\tif (key && val !== undefined) {\n\t\t\tif (typeof exp == \"string\") {\n\t\t\t\texp = times[exp]();\n\t\t\t}\n\t\t\t//try to store string for dom objects (e.g. XML result). Otherwise, we might get a circular reference error when stringifying this\n\t\t\tif (val.documentElement) val = new XMLSerializer().serializeToString(val.documentElement);\n\t\t\tstore.set(key, {\n\t\t\t\tval : val,\n\t\t\t\texp : exp,\n\t\t\t\ttime : new Date().getTime()\n\t\t\t});\n\t\t}\n\t},\n\tremove: function(key) {\n\t\tif (!store.enabled) return;//this is probably in private mode. Don't run, as we might get Js errors\n\t\tif (key) store.remove(key)\n\t},\n\tremoveAll: function(filter) {\n\t\tif (!store.enabled) return;//this is probably in private mode. Don't run, as we might get Js errors\n\t\tif (typeof filter === 'function') {\n\t\t\tfor (var key in store.getAll()) {\n\t\t\t\tif (filter(key, root.get(key))) root.remove(key);\n\t\t\t}\n\t\t}\n\t},\n\tget : function(key) {\n if (!store.enabled) return null;//this is probably in private mode. Don't run, as we might get Js errors\n\t\tif (key) {\n\t\t\tvar info = store.get(key);\n\t\t\tif (!info) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (info.exp && new Date().getTime() - info.time > info.exp) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn info.val;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n};\n\n},{\"store\":14}],18:[function(require,module,exports){\nmodule.exports = {\n\tdraw: function(parent, svgString) {\n\t\tif (!parent) return;\n\t\tvar el = module.exports.getElement(svgString);\n\t\tif (el) {\n\t\t\tif (parent.append) {\n\t\t\t\tparent.append(el);\n\t\t\t} else {\n\t\t\t\t//regular dom doc\n\t\t\t\tparent.appendChild(el);\n\t\t\t}\n\t\t}\n\t},\n\tgetElement: function(svgString) {\n\t\tif (svgString && svgString.indexOf(\"=1.11.3\",\n \"datatables\": \"^1.10.7\",\n \"codemirror\": \"^4.7.0\",\n \"yasgui-utils\": \"^1.4.1\",\n \"pivottable\": \"^1.2.2\",\n \"jquery-ui\": \"^1.10.5\",\n \"d3\": \"^3.4.13\"\n },\n \"browserify-shim\": {\n \"google\": \"global:google\"\n },\n \"browserify\": {\n \"transform\": [\n \"browserify-shim\"\n ]\n },\n \"optionalShim\": {\n \"codemirror\": {\n \"require\": \"codemirror\",\n \"global\": \"CodeMirror\"\n },\n \"jquery\": {\n \"require\": \"jquery\",\n \"global\": \"jQuery\"\n },\n \"../../lib/codemirror\": {\n \"require\": \"codemirror\",\n \"global\": \"CodeMirror\"\n },\n \"datatables\": {\n \"require\": \"datatables\",\n \"global\": \"jQuery\"\n },\n \"d3\": {\n \"require\": \"d3\",\n \"global\": \"d3\"\n },\n \"jquery-ui/sortable\": {\n \"require\": \"jquery-ui/sortable\",\n \"global\": \"jQuery\"\n },\n \"pivottable\": {\n \"require\": \"pivottable\",\n \"global\": \"jQuery\"\n }\n }\n}\n\n},{}],20:[function(require,module,exports){\n'use strict';\nmodule.exports = function(result) {\n\tvar quote = \"\\\"\";\n\tvar delimiter = \",\";\n\tvar lineBreak = \"\\n\";\n\n\tvar variables = result.head.vars;\n\n\tvar querySolutions = result.results.bindings;\n\n\n\n\tvar createHeader = function() {\n\t\tfor (var i = 0; i < variables.length; i++) {\n\t\t\taddValueToString(variables[i]);\n\t\t}\n\t\tcsvString += lineBreak;\n\t};\n\n\tvar createBody = function() {\n\t\tfor (var i = 0; i < querySolutions.length; i++) {\n\t\t\taddQuerySolutionToString(querySolutions[i]);\n\t\t\tcsvString += lineBreak;\n\t\t}\n\t};\n\n\tvar addQuerySolutionToString = function(querySolution) {\n\t\tfor (var i = 0; i < variables.length; i++) {\n\t\t\tvar variable = variables[i];\n\t\t\tif (querySolution.hasOwnProperty(variable)) {\n\t\t\t\taddValueToString(querySolution[variable][\"value\"]);\n\t\t\t} else {\n\t\t\t\taddValueToString(\"\");\n\t\t\t}\n\t\t}\n\t};\n\tvar addValueToString = function(value) {\n\t\t//Quotes in the string need to be escaped\n\t\tvalue.replace(quote, quote + quote);\n\t\tif (needToQuoteString(value)) {\n\t\t\tvalue = quote + value + quote;\n\t\t}\n\t\tcsvString += \" \" + value + \" \" + delimiter;\n\t};\n\n\tvar needToQuoteString = function(value) {\n\t\t//quote when it contains whitespace or the delimiter\n\t\tvar needQuoting = false;\n\t\tif (value.match(\"[\\\\w|\" + delimiter + \"|\" + quote + \"]\")) {\n\t\t\tneedQuoting = true;\n\t\t}\n\t\treturn needQuoting;\n\t};\n\n\tvar csvString = \"\";\n\tcreateHeader();\n\tcreateBody();\n\treturn csvString;\n};\n},{}],21:[function(require,module,exports){\n'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})();\n\n/**\n * Constructor of plugin which displays boolean info\n * \n * @param yasr {object}\n * @param parent {DOM element}\n * @param options {object}\n * @class YASR.plugins.boolean\n * @return yasr-boolean (doc)\n * \n */\nvar root = module.exports = function(yasr) {\n\tvar container = $(\"
\");\n\tvar draw = function() {\n\t\tcontainer.empty().appendTo(yasr.resultsContainer);\n\t\tvar booleanVal = yasr.results.getBoolean();\n\n\t\tvar imgId = null;\n\t\tvar textVal = null;\n\t\tif (booleanVal === true) {\n\t\t\timgId = \"check\";\n\t\t\ttextVal = \"True\";\n\t\t} else if (booleanVal === false) {\n\t\t\timgId = \"cross\";\n\t\t\ttextVal = \"False\";\n\t\t} else {\n\t\t\tcontainer.width(\"140\");\n\t\t\ttextVal = \"Could not find boolean value in response\";\n\t\t}\n\n\t\t//add icon\n\t\tif (imgId) require(\"yasgui-utils\").svg.draw(container, require('./imgs.js')[imgId]);\n\n\t\t$(\"\").text(textVal).appendTo(container);\n\t};\n\n\n\tvar canHandleResults = function() {\n\t\treturn yasr.results.getBoolean && (yasr.results.getBoolean() === true || yasr.results.getBoolean() == false);\n\t};\n\n\n\n\treturn {\n\t\tname: null, //don't need to set this: we don't show it in the selection widget anyway, so don't need a human-friendly name\n\t\tdraw: draw,\n\t\thideFromSelection: true,\n\t\tgetPriority: 10,\n\t\tcanHandleResults: canHandleResults\n\t}\n};\n\n\nroot.version = {\n\t\"YASR-boolean\": require(\"../package.json\").version,\n\t\"jquery\": $.fn.jquery,\n};\n},{\"../package.json\":19,\"./imgs.js\":27,\"jquery\":undefined,\"yasgui-utils\":16}],22:[function(require,module,exports){\n'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})();\nmodule.exports = {\n\t/**\n\t * key of default plugin to use\n\t * @property output\n\t * @type string\n\t * @default \"table\"\n\t */\n\toutput: \"table\",\n\tuseGoogleCharts: true,\n\toutputPlugins: [\"table\", \"error\", \"boolean\", \"rawResponse\", \"pivot\", \"gchart\"],\n\n\t/**\n\t * Draw the output selector widget\n\t * \n\t * @property drawOutputSelector\n\t * @type boolean\n\t * @default true\n\t */\n\tdrawOutputSelector: true,\n\n\t/**\n\t * Draw download icon. This issues html5 download functionality to 'download' files created on the client-side.\n\t * This allows the user to download results already queried for, such as a CSV when a table is shown, or the original response when the raw response output is selected\n\t * \n\t * @property drawDownloadIcon\n\t * @type boolean\n\t * @default true\n\t */\n\tdrawDownloadIcon: true,\n\n\n\tgetUsedPrefixes: null,\n\t/**\n\t * Make certain settings and values of YASR persistent. Setting a key\n\t * to null, will disable persistancy: nothing is stored between browser\n\t * sessions Setting the values to a string (or a function which returns a\n\t * string), will store the query in localstorage using the specified string.\n\t * By default, the ID is dynamically generated by finding the nearest DOM element with an \"id\" set,\n\t * to avoid collissions when using multiple YASR items on one page\n\t * \n\t * @property persistency\n\t * @type object\n\t */\n\tpersistency: {\n\t\tprefix: function(yasr) {\n\t\t\treturn \"yasr_\" + $(yasr.container).closest('[id]').attr('id') + \"_\";\n\t\t},\n\t\t/**\n\t\t * Persistency setting for the selected output\n\t\t * \n\t\t * @property persistency.outputSelector\n\t\t * @type string|function\n\t\t * @default function (determine unique id)\n\t\t */\n\t\toutputSelector: function(yasr) {\n\t\t\treturn \"selector\";\n\t\t},\n\t\t/**\n\t\t * Persistency setting for query results.\n\t\t * \n\t\t * @property persistency.results\n\t\t * @type object\n\t\t */\n\t\tresults: {\n\t\t\t/**\n\t\t\t * Get the key to store results in\n\t\t\t * \n\t\t\t * @property persistency.results.id\n\t\t\t * @type string|function\n\t\t\t * @default function (determine unique id)\n\t\t\t */\n\t\t\tid: function(yasr) {\n\t\t\t\treturn \"results_\" + $(yasr.container).closest('[id]').attr('id');\n\t\t\t},\n\t\t\tkey: 'results',\n\t\t\t/**\n\t\t\t * The result set might too large to fit in local storage. \n\t\t\t * It is impossible to detect how large the local storage is.\n\t\t\t * Therefore, we do not store all results in local storage, depending on a max number of characters in the SPARQL result serialization.\n\t\t\t * Set this function conservitavely. (especially when using multiple YASR instances on one page)\n\t\t\t * \n\t\t\t * @property persistency.results.maxSize\n\t\t\t * @type int\n\t\t\t * @default 100000\n\t\t\t */\n\t\t\tmaxSize: 100000 //char count\n\t\t}\n\n\t},\n\n\n};\n},{\"jquery\":undefined}],23:[function(require,module,exports){\n'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})();\n\n/**\n * Constructor of plugin which displays SPARQL errors\n * \n * @param yasr {object}\n * @param parent {DOM element}\n * @param options {object}\n * @class YASR.plugins.boolean\n * @return yasr-erro (doc)\n * \n */\nvar root = module.exports = function(yasr) {\n\tvar $container = $(\"
\");\n\tvar options = $.extend(true, {}, root.defaults);\n\n\tvar getTryBtn = function() {\n\t\tvar $tryBtn = null;\n\t\tif (options.tryQueryLink) {\n\t\t\tvar link = options.tryQueryLink();\n\t\t\t$tryBtn = $('\")\n\t\t\t\t\t.text(name)\n\t\t\t\t\t.addClass(\"select_\" + pluginName)\n\t\t\t\t\t.click(function() {\n\t\t\t\t\t\t//update buttons\n\t\t\t\t\t\tbtnGroup.find(\"button.selected\").removeClass(\"selected\");\n\t\t\t\t\t\t$(this).addClass(\"selected\");\n\t\t\t\t\t\t//set and draw output\n\t\t\t\t\t\tyasr.options.output = pluginName;\n\n\t\t\t\t\t\t//store if needed\n\t\t\t\t\t\tyasr.store();\n\n\t\t\t\t\t\t//close warning if there is any\n\t\t\t\t\t\tif ($toggableWarning) $toggableWarning.hide(400);\n\n\t\t\t\t\t\tyasr.draw();\n\t\t\t\t\t})\n\t\t\t\t\t.appendTo(btnGroup);\n\t\t\t\tif (yasr.options.output == pluginName) button.addClass(\"selected\");\n\t\t\t});\n\n\t\t\tif (btnGroup.children().length > 1) yasr.header.append(btnGroup);\n\t\t};\n\t\tvar drawDownloadIcon = function() {\n\t\t\tvar stringToUrl = function(string, contentType) {\n\t\t\t\tvar url = null;\n\t\t\t\tvar windowUrl = window.URL || window.webkitURL || window.mozURL || window.msURL;\n\t\t\t\tif (windowUrl && Blob) {\n\t\t\t\t\tvar blob = new Blob([string], {\n\t\t\t\t\t\ttype: contentType\n\t\t\t\t\t});\n\t\t\t\t\turl = windowUrl.createObjectURL(blob);\n\t\t\t\t}\n\t\t\t\treturn url;\n\t\t\t};\n\t\t\tvar button = $(\"\")\n\t\t\t\t.append(require(\"yasgui-utils\").svg.getElement(require('./imgs.js').download))\n\t\t\t\t.click(function() {\n\t\t\t\t\tvar currentPlugin = yasr.plugins[yasr.options.output];\n\t\t\t\t\tif (currentPlugin && currentPlugin.getDownloadInfo) {\n\t\t\t\t\t\tvar downloadInfo = currentPlugin.getDownloadInfo();\n\t\t\t\t\t\tvar downloadUrl = stringToUrl(downloadInfo.getContent(), (downloadInfo.contentType ? downloadInfo.contentType : \"text/plain\"));\n\t\t\t\t\t\tvar downloadMockLink = $(\"\", {\n\t\t\t\t\t\t\thref: downloadUrl,\n\t\t\t\t\t\t\tdownload: downloadInfo.filename\n\t\t\t\t\t\t});\n\t\t\t\t\t\trequire('./utils.js').fireClick(downloadMockLink);\n\t\t\t\t\t\t//\t\t\t\t\t\tdownloadMockLink[0].click();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\tyasr.header.append(button);\n\t\t};\n\t\tvar drawFullscreenButton = function() {\n\t\t\tvar button = $(\"\")\n\t\t\t\t.append(require(\"yasgui-utils\").svg.getElement(require('./imgs.js').fullscreen))\n\t\t\t\t.click(function() {\n\t\t\t\t\tyasr.container.addClass('yasr_fullscreen');\n\t\t\t\t});\n\t\t\tyasr.header.append(button);\n\t\t};\n\t\tvar drawSmallscreenButton = function() {\n\t\t\tvar button = $(\"\")\n\t\t\t\t.append(require(\"yasgui-utils\").svg.getElement(require('./imgs.js').smallscreen))\n\t\t\t\t.click(function() {\n\t\t\t\t\tyasr.container.removeClass('yasr_fullscreen');\n\t\t\t\t});\n\t\t\tyasr.header.append(button);\n\t\t};\n\t\tvar drawEmbedButton = function() {\n\t\t\tembedBtn = $(\"