From 69f106a91115a7c0c6bcec36cfb73244ee9cb4ad Mon Sep 17 00:00:00 2001 From: jos Date: Thu, 21 Jan 2016 20:01:49 +0100 Subject: [PATCH] Released version 5.1.2 --- HISTORY.md | 4 +- dist/jsoneditor-minimalist.js | 54 +- dist/jsoneditor-minimalist.map | 2 +- dist/jsoneditor-minimalist.min.js | 12 +- dist/jsoneditor.js | 13028 ++++++++++++++-------------- dist/jsoneditor.map | 2 +- dist/jsoneditor.min.js | 41 +- package.json | 24 +- 8 files changed, 6773 insertions(+), 6394 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index ab32e69..4b47a69 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -3,12 +3,14 @@ https://github.com/josdejong/jsoneditor -## not yet released, version 5.1.2 +## 2016-01-21, version 5.1.2 - Improvements in sanitizing invalid JSON. +- Updated dependencies to the latest version. - Fixed clicking format/compact not triggering an onChange event. - Fixed #259: when having a JSONEditor inside an HTML form, clicking an entry in the context menu did submit the form. +- Fixed browserify build, see #260. Thanks @onip. ## 2016-01-16, version 5.1.1 diff --git a/dist/jsoneditor-minimalist.js b/dist/jsoneditor-minimalist.js index 4e1d7ab..1e64c72 100644 --- a/dist/jsoneditor-minimalist.js +++ b/dist/jsoneditor-minimalist.js @@ -24,8 +24,8 @@ * Copyright (c) 2011-2016 Jos de Jong, http://jsoneditoronline.org * * @author Jos de Jong, - * @version 5.1.1 - * @date 2016-01-16 + * @version 5.1.2 + * @date 2016-01-21 */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') @@ -85,7 +85,7 @@ return /******/ (function(modules) { // webpackBootstrap var Ajv; try { - Ajv = __webpack_require__(!(function webpackMissingModule() { var e = new Error("Cannot find module \"ajv/dist/ajv.bundle.js\""); e.code = 'MODULE_NOT_FOUND'; throw e; }())); + Ajv = __webpack_require__(!(function webpackMissingModule() { var e = new Error("Cannot find module \"ajv\""); e.code = 'MODULE_NOT_FOUND'; throw e; }())); } catch (err) { // no problem... when we need Ajv we will throw a neat exception @@ -1717,6 +1717,7 @@ return /******/ (function(modules) { // webpackBootstrap buttonFormat.onclick = function () { try { me.format(); + me._onChange(); } catch (err) { me._onError(err); @@ -1731,6 +1732,7 @@ return /******/ (function(modules) { // webpackBootstrap buttonCompact.onclick = function () { try { me.compact(); + me._onChange(); } catch (err) { me._onError(err); @@ -1853,9 +1855,11 @@ return /******/ (function(modules) { // webpackBootstrap if (keynum == 220 && event.ctrlKey) { if (event.shiftKey) { // Ctrl+Shift+\ this.compact(); + this._onChange(); } else { // Ctrl+\ this.format(); + this._onChange(); } handled = true; } @@ -2139,26 +2143,23 @@ return /******/ (function(modules) { // webpackBootstrap function next() { return jsString.charAt(i + 1); } function prev() { return jsString.charAt(i - 1); } - // test whether the last non-whitespace character was a brace-open '{' - function prevIsBrace() { - var ii = i - 1; - while (ii >= 0) { - var cc = jsString.charAt(ii); - if (cc === '{') { - return true; - } - else if (cc === ' ' || cc === '\n' || cc === '\r') { // whitespace - ii--; - } - else { - return false; + // get the last parsed non-whitespace character + function lastNonWhitespace () { + var p = chars.length - 1; + + while (p >= 0) { + var pp = chars[p]; + if (pp !== ' ' && pp !== '\n' && pp !== '\r' && pp !== '\t') { // non whitespace + return pp; } + p--; } - return false; + + return ''; } // skip a block comment '/* ... */' - function skipComment () { + function skipBlockComment () { i += 2; while (i < jsString.length && (curr() !== '*' || next() !== '/')) { i++; @@ -2166,6 +2167,14 @@ return /******/ (function(modules) { // webpackBootstrap i += 2; } + // skip a comment '// ...' + function skipComment () { + i += 2; + while (i < jsString.length && (curr() !== '\n')) { + i++; + } + } + // parse single or double quoted string function parseString(quote) { chars.push('"'); @@ -2223,12 +2232,15 @@ return /******/ (function(modules) { // webpackBootstrap var c = curr(); if (c === '/' && next() === '*') { + skipBlockComment(); + } + else if (c === '/' && next() === '/') { skipComment(); } else if (c === '\'' || c === '"') { parseString(c); } - else if (/[a-zA-Z_$]/.test(c) && prevIsBrace()) { + else if (/[a-zA-Z_$]/.test(c) && ['{', ','].indexOf(lastNonWhitespace()) !== -1) { // an unquoted object key (like a in '{a:2}') parseKey(); } @@ -3579,6 +3591,7 @@ return /******/ (function(modules) { // webpackBootstrap } if (item.click) { button.onclick = function () { + event.preventDefault(); me.hide(); item.click(); }; @@ -3619,7 +3632,8 @@ return /******/ (function(modules) { // webpackBootstrap } // attach a handler to expand/collapse the submenu - buttonSubmenu.onclick = function () { + buttonSubmenu.onclick = function (event) { + event.preventDefault(); me._onExpandItem(domItem); buttonSubmenu.focus(); }; diff --git a/dist/jsoneditor-minimalist.map b/dist/jsoneditor-minimalist.map index 6b27fa7..8859a2f 100644 --- a/dist/jsoneditor-minimalist.map +++ b/dist/jsoneditor-minimalist.map @@ -1 +1 @@ -{"version":3,"file":"jsoneditor-minimalist.map","sources":["./dist/jsoneditor-minimalist.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","JSONEditor","container","options","json","Error","ieVersion","util","getInternetExplorerVersion","error","console","warn","onError","change","onChange","editable","onEditable","VALID_OPTIONS","Object","keys","forEach","option","indexOf","arguments","length","_create","Ajv","e","code","err","treemode","textmode","modes","prototype","DEBOUNCE_INTERVAL","mode","setMode","_delete","set","get","setText","jsonText","parse","getText","JSON","stringify","setName","name","getName","data","extend","oldMode","config","asText","clear","mixin","create","load","onModeChange","_onError","getMode","setSchema","schema","ajv","allErrors","verbose","validateSchema","compile","validate","registerMode","i","prop","isArray","reserved","Highlighter","History","SearchBox","ContextMenu","Node","modeswitcher","dom","highlighter","selection","undefined","multiselection","nodes","errorNodes","_setOptions","history","_createFrame","_createTable","frame","parentNode","removeChild","search","hasOwnProperty","_debouncedValidate","debounce","bind","focusNode","domFocus","Function","content","table","params","field","value","node","_setRoot","recurse","expand","appendChild","searchBox","blur","getValue","updateField","focus","input","querySelector","menu","collapse","tbody","getDom","text","results","expandAll","collapseAll","_onAction","action","add","_onChange","setError","duplicateErrors","schemaErrors","valid","errors","map","improveSchemaError","findNode","dataPath","filter","entry","concat","reduce","all","findParents","parent","child","message","type","startAutoScroll","mouseY","me","top","getAbsoluteTop","height","clientHeight","bottom","margin","interval","scrollTop","autoScrollStep","scrollHeight","autoScrollTimer","setInterval","stopAutoScroll","clearTimeout","setSelection","select","range","setSelectionOffset","getSelection","getSelectionOffset","nodeName","slice","scrollTo","callback","editor","animateTimeout","animateCallback","finalScrollTop","Math","min","max","animate","diff","abs","setTimeout","onEvent","event","_onEvent","document","createElement","className","onclick","target","preventDefault","oninput","onchange","onkeydown","onkeyup","oncut","onpaste","onmousedown","onmouseup","onmouseover","onmouseout","addEventListener","onfocusin","onfocusout","title","undo","_onUndo","redo","_onRedo","disabled","canUndo","canRedo","modeBox","_onKeyDown","_startDragDistance","_updateDragDistance","getNodeFromTarget","selected","showContextMenu","hasMoved","deselect","onDragStart","drag","_onMultiSelectStart","dragDistanceEvent","initialTarget","initialPageX","pageX","initialPageY","pageY","dragDistance","diffX","diffY","sqrt","start","end","mousemove","window","_onMultiSelect","mouseup","_onMultiSelectEnd","_findTopLevelNodes","removeEventListener","clearStartAndEnd","setSelected","Array","first","startPath","getPath","endPath","startChild","endChild","childs","startIndex","endIndex","firstIndex","lastIndex","keynum","which","keyCode","ctrlKey","shiftKey","handled","selectContentEditable","previous","next","stopPropagation","contentOuter","col","colgroupContent","width","anchor","onClose","items","push","click","onDuplicate","onRemove","close","show","ace","MAX_ERRORS","indentation","Number","_ace","theme","aceEditor","textarea","clientWidth","buttonFormat","format","buttonCompact","compact","editorDom","style","edit","$blockScrolling","Infinity","setTheme","setShowPrintMargin","setFontSize","getSession","setTabSize","setUseSoftTabs","setUseWrapMode","commands","bindKey","defineProperty","poweredBy","createTextNode","href","open","on","spellcheck","destroy","resize","force","sanitize","escapeUnicode","escapeUnicodeChars","originalOnChange","setValue","validationErrors","marginBottom","paddingBottom","doValidate","limit","hidden","innerHTML","join","jsonlint","jsonString","jsString","curr","charAt","prev","prevIsBrace","ii","cc","skipComment","parseString","quote","chars","parseKey","specialValues","key","regexp","test","match","replace","charCodeAt","toString","a","b","object","String","Boolean","RegExp","isUrlRegex","isUrl","obj","getAbsoluteLeft","elem","rect","getBoundingClientRect","left","pageXOffset","scrollLeft","pageYOffset","addClassName","classes","split","removeClassName","index","splice","stripFormatting","divElement","childNodes","iMax","removeAttribute","attributes","j","attribute","specified","setEndOfContentEditable","contentEditableElement","createRange","selectNodeContents","removeAllRanges","addRange","sel","getRangeAt","rangeCount","startContainer","endContainer","startOffset","endOffset","firstChild","setStart","setEnd","getInnerText","element","buffer","flush","nodeValue","hasChildNodes","innerText","prevChild","prevName","_ieVersion","rv","navigator","appName","ua","userAgent","re","exec","parseFloat","$1","isFirefox","listener","useCapture","attachEvent","f","detachEvent","parsePath","jsonPath","remainder","substr","SyntaxError","substring","keyword","enums","more","insideRect","_margin","right","func","wait","immediate","timeout","context","args","later","apply","callNow","textDiff","oldText","newText","len","oldEnd","newEnd","locked","highlight","setHighlight","_cancelUnhighlight","unhighlight","unhighlightTimer","lock","unlock","actions","editField","oldValue","newValue","editValue","updateValue","changeType","oldType","newType","appendNodes","insertBeforeNodes","insertBefore","beforeNode","insertAfterNodes","afterNode","insertAfter","removeNodes","append","duplicateNodes","moveNodes","oldBeforeNode","moveBefore","newBeforeNode","sort","hideChilds","oldSort","oldChilds","showChilds","newSort","newChilds","timestamp","Date","oldSelection","newSelection","delay","lastText","tr","td","divInput","tableInput","tbodySearch","refreshSearch","_onDelayedSearch","_onSearch","_onKeyUp","searchNext","searchPrevious","resultIndex","_setActiveResult","activeResult","prevNode","prevElem","searchFieldActive","searchValueActive","updateDom","_clearDelay","forceSearch","resultCount","createMenuItems","list","domItems","item","separator","li","domItem","button","hide","submenu","divIcon","buttonSubmenu","buttonExpand","submenuTitle","divExpand","_onExpandItem","domSubItems","subItems","ul","eventListeners","focusButton","overflow","maxHeight","_getVisibleButtons","buttons","expandedItem","subItem","visibleMenu","contentWindow","showBelow","anchorRect","contentRect","anchorHeight","offsetHeight","mousedown","_isChildOf","keydown","fn","alreadyVisible","padding","display","targetIndex","prevButton","nextButton","expanded","setField","fieldEditable","_debouncedOnChangeValue","_onChangeValue","_debouncedOnChangeField","_onChangeField","appendNodeFactory","_updateEditability","path","getFieldsPath","unshift","shift","parents","tdError","tdValue","popover","onfocus","directions","direction","popoverRect","fit","getIndex","setParent","previousField","getField","_getDomField","childValue","_getType","childField","previousValue","arr","_getDomValue","getLevel","clone","fieldInnerText","valueInnerText","cloneChilds","childClone","getAppend","nextTr","nextSibling","_hasChilds","newTr","appendTr","updateIndexes","trTemp","AppendNode","moveTo","currentIndex","toLowerCase","searchField","searchValue","_updateDomField","childResults","_updateDomValue","offsetTop","focusElement","elementName","editableDiv","containsNode","_move","clearDom","removedNode","_remove","lastTr","_stringCast","silent","_unescapeHTML","str","undoDiff","redoDiff","domValue","classNames","isEmpty","count","checkbox","tdCheckbox","checked","domField","duplicateKeys","tdDrag","domDrag","tdMenu","tdField","tree","_createDomTree","firstNode","lastNode","draggedNode","_nextSibling","offsetY","onDrag","onDragEnd","oldCursor","body","cursor","mouseX","level","trThis","trPrev","trNext","trFirst","trLast","trRoot","nodePrev","nodeNext","topThis","topPrev","topFirst","heightThis","bottomNext","heightNext","moved","previousSibling","diffLevel","round","levelNext","isDraggedNode","some","n","_createDomField","isFirst","domTree","marginLeft","contentEditable","_escapeHTML","_updateDomIndexes","_createDomValue","_createDomExpandButton","borderCollapse","tdExpand","tdSeparator","srcElement","expandable","_onExpand","offsetX","onKeyDown","nextNode","nextDom","nextDom2","altKey","selectedNodes","_onInsertBefore","_onInsertAfter","endNode","_lastNode","_getElementName","homeNode","_firstNode","prevElement","_previousElement","appendDom","nextNode2","_previousNode","nextElement","_nextElement","prevDom","isVisible","_nextNode","blurNodes","clones","newNode","_onAppend","_onChangeType","_onSort","order","firstDom","lastDom","lastChild","TYPE_TITLES","auto","array","string","titles","lower","num","numFloat","isNaN","htmlEscaped","html","escapedText","_escapeJSON","escaped","createModeSwitcher","current","switchMode","availableModes","form","view","currentMode","currentTitle","box","div","position","parser","trace","yy","symbols_","JSONString","STRING","JSONNumber","NUMBER","JSONNullLiteral","NULL","JSONBooleanLiteral","TRUE","FALSE","JSONText","JSONValue","EOF","JSONObject","JSONArray","{","}","JSONMemberList","JSONMember",":",",","[","]","JSONElementList","$accept","$end","terminals_",2,4,6,8,10,11,14,17,18,21,22,23,24,"productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$",3,5,7,9,12,13,15,16,1,19,20,25,"defaultActions","parseError","hash","popStack","stack","vstack","lstack","lex","token","self","lexer","recovering","TERROR","setInput","yylloc","yyloc","symbol","preErrorSymbol","state","r","newState","expected","yyval","errStr","showPosition","line","loc","first_line","last_line","first_column","last_column","_input","_more","_less","done","matched","conditionStack","ch","lines","unput","less","pastInput","past","upcomingInput","pre","tempMatch","rules","_currentRules","flex","begin","condition","popState","pop","conditions","topState","pushState","yy_","$avoiding_name_collisions","YY_START","INITIAL","inclusive","trAppend","tdAppend","domText","paddingLeft","acequire","isDark","cssClass","cssText","importCssString","oop","TextHighlightRules","JsonHighlightRules","$rules","regex","inherits","Range","MatchingBraceOutdent","checkOutdent","autoOutdent","doc","row","getLine","column","openBracePos","findMatchingBracket","indent","$getIndent","Behaviour","TokenIterator","lang","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","initContext","multiSelect","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","opening","closing","rowDiff","CstyleBehaviour","session","getCursorPosition","getSelectionRange","getTextRange","getWrapBehavioursEnabled","isSaneInsertion","inMultiSelectMode","recordAutoInsert","recordMaybeInsert","rightChar","matching","$findOpeningBracket","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","stringRepeat","clearMaybeInsertedClosing","next_indent","getTabString","isMultiLine","leftChar","getTokenAt","rightToken","pair","stringBefore","stringAfter","wordRe","$mode","tokenRe","isWordBefore","isWordAfter","iterator","$matchTokenType","getCurrentToken","iterator2","stepForward","getCurrentTokenRow","types","bracket","BaseFoldMode","FoldMode","commentRegex","foldingStartMarker","source","foldingStopMarker","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","getFoldWidget","foldStyle","fw","getFoldWidgetRange","forceMultiline","getCommentRegionBlock","openingBracketBlock","getCommentFoldRange","getSectionRange","closingBracketBlock","startIndent","startRow","startColumn","endRow","maxRow","getLength","subRange","depth","TextMode","Mode","HighlightRules","CStyleFoldMode","WorkerClient","$outdent","$behaviour","foldingRules","getNextLineIndent","tab","createWorker","worker","attachToDocument","getDocument","setAnnotations","clearAnnotations","$id","searchboxCss","HashHandler","keyUtil","showReplaceForm","$init","setEditor","$initElements","sb","replaceBox","searchOptions","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","_this","addListener","activeInput","t","getAttribute","$searchBarKb","addCommandKeyListener","hashId","keyString","keyCodeToString","command","findKeyCommand","stopEvent","$onChange","delayedCall","find","schedule","$closeSearchBarKb","bindKeys","Ctrl-f|Command-f","isReplace","Ctrl-H|Command-Option-F","Ctrl-G|Command-G","findNext","Ctrl-Shift-G|Command-Shift-G","findPrev","esc","Return","Shift-Return","Alt-Return","replaceAll","findAll","Tab","addCommands","win","mac","$syncOptions","setCssClass","$search","$options","renderer","updateBackMarkers","skipCurrent","backwards","preventScroll","wrap","regExp","caseSensitive","wholeWord","noMatch","_emit","getReadOnly","replaceAndFindNext","keyBinding","removeKeyboardHandler","addKeyboardHandler","isFocused","el","activeElement","Search","src"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BA,SAA2CA,EAAMC,GAC1B,gBAAZC,UAA0C,gBAAXC,QACxCA,OAAOD,QAAUD,IACQ,kBAAXG,SAAyBA,OAAOC,IAC9CD,OAAOH,GACmB,gBAAZC,SACdA,QAAoB,WAAID,IAExBD,EAAiB,WAAIC,KACpBK,KAAM,WACT,MAAgB,UAAUC,GAKhB,QAASC,GAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,MAAOC,GAAiBD,GAAUP,OAGnC,IAAIC,GAASO,EAAiBD,IAC7BP,WACAS,GAAIF,EACJG,QAAQ,EAUT,OANAL,GAAQE,GAAUI,KAAKV,EAAOD,QAASC,EAAQA,EAAOD,QAASM,GAG/DL,EAAOS,QAAS,EAGTT,EAAOD,QAvBf,GAAIQ,KAqCJ,OATAF,GAAoBM,EAAIP,EAGxBC,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,GAGjBR,EAAoB,KAK/B,SAASL,EAAQD,EAASM,GA6C/B,QAASS,GAAYC,EAAWC,EAASC,GACvC,KAAMd,eAAgBW,IACpB,KAAM,IAAII,OAAM,+CAIlB,IAAIC,GAAYC,EAAKC,4BACrB,IAAiB,IAAbF,GAA+B,EAAZA,EACrB,KAAM,IAAID,OAAM,iGAIlB,IAAIF,IAEEA,EAAQM,QACVC,QAAQC,KAAK,gDACbR,EAAQS,QAAUT,EAAQM,YACnBN,GAAQM,OAEbN,EAAQU,SACVH,QAAQC,KAAK,kDACbR,EAAQW,SAAWX,EAAQU,aACpBV,GAAQU,QAEbV,EAAQY,WACVL,QAAQC,KAAK,sDACbR,EAAQa,WAAab,EAAQY,eACtBZ,GAAQY,UAIbZ,GAAS,CACX,GAAIc,IACF,MAAO,QACP,MAAO,SACP,WAAY,aAAc,UAAW,eACrC,gBAAiB,UAAW,SAAU,OAAQ,QAAS,OAAQ,cAGjEC,QAAOC,KAAKhB,GAASiB,QAAQ,SAAUC,GACC,KAAlCJ,EAAcK,QAAQD,IACxBX,QAAQC,KAAK,mBAAqBU,EAAS,oCAM/CE,UAAUC,QACZlC,KAAKmC,QAAQvB,EAAWC,EAASC,GA3FrC,GAAIsB,EACJ,KACEA,EAAMlC,GAAsB,WAAkC,GAAImC,GAAI,GAAItB,OAAM,8CAA+E,MAA7BsB,GAAEC,KAAO,mBAA0BD,MAEvK,MAAOE,IAIP,GAAIC,GAAWtC,EAAoB,GAC/BuC,EAAWvC,EAAoB,GAC/Be,EAAOf,EAAoB,EAoG/BS,GAAW+B,SAGX/B,EAAWgC,UAAUC,kBAAoB,IASzCjC,EAAWgC,UAAUR,QAAU,SAAUvB,EAAWC,EAASC,GAC3Dd,KAAKY,UAAYA,EACjBZ,KAAKa,QAAUA,MACfb,KAAKc,KAAOA,KAEZ,IAAI+B,GAAO7C,KAAKa,QAAQgC,MAAQ,MAChC7C,MAAK8C,QAAQD,IAOflC,EAAWgC,UAAUI,QAAU,aAM/BpC,EAAWgC,UAAUK,IAAM,SAAUlC,GACnCd,KAAKc,KAAOA,GAOdH,EAAWgC,UAAUM,IAAM,WACzB,MAAOjD,MAAKc,MAOdH,EAAWgC,UAAUO,QAAU,SAAUC,GACvCnD,KAAKc,KAAOG,EAAKmC,MAAMD,IAOzBxC,EAAWgC,UAAUU,QAAU,WAC7B,MAAOC,MAAKC,UAAUvD,KAAKc,OAO7BH,EAAWgC,UAAUa,QAAU,SAAUC,GAClCzD,KAAKa,UACRb,KAAKa,YAEPb,KAAKa,QAAQ4C,KAAOA,GAOtB9C,EAAWgC,UAAUe,QAAU,WAC7B,MAAO1D,MAAKa,SAAWb,KAAKa,QAAQ4C,MAStC9C,EAAWgC,UAAUG,QAAU,SAAUD,GACvC,GAGIc,GACAF,EAJA7C,EAAYZ,KAAKY,UACjBC,EAAUI,EAAK2C,UAAW5D,KAAKa,SAC/BgD,EAAUhD,EAAQgC,IAItBhC,GAAQgC,KAAOA,CACf,IAAIiB,GAASnD,EAAW+B,MAAMG,EAC9B,KAAIiB,EAqCF,KAAM,IAAI/C,OAAM,iBAAmBF,EAAQgC,KAAO,IApClD,KACE,GAAIkB,GAAyB,QAAfD,EAAOH,IAYrB,IAXAF,EAAOzD,KAAK0D,UACZC,EAAO3D,KAAK+D,EAAS,UAAY,SAEjC/D,KAAK+C,UACL9B,EAAK+C,MAAMhE,MACXiB,EAAK2C,OAAO5D,KAAM8D,EAAOG,OACzBjE,KAAKkE,OAAOtD,EAAWC,GAEvBb,KAAKwD,QAAQC,GACbzD,KAAK+D,EAAS,UAAY,OAAOJ,GAEN,kBAAhBG,GAAOK,KAChB,IACEL,EAAOK,KAAK5D,KAAKP,MAEnB,MAAOuC,GACLnB,QAAQD,MAAMoB,GAIlB,GAAoC,kBAAzB1B,GAAQuD,cAA+BvB,IAASgB,EACzD,IACEhD,EAAQuD,aAAavB,EAAMgB,GAE7B,MAAOtB,GACLnB,QAAQD,MAAMoB,IAIpB,MAAOA,GACLvC,KAAKqE,SAAS9B,KAYpB5B,EAAWgC,UAAU2B,QAAU,WAC7B,MAAOtE,MAAKa,QAAQgC,MAStBlC,EAAWgC,UAAU0B,SAAW,SAAS9B,GACvC,IAAIvC,KAAKa,SAA2C,kBAAzBb,MAAKa,QAAQS,QAItC,KAAMiB,EAHNvC,MAAKa,QAAQS,QAAQiB,IAYzB5B,EAAWgC,UAAU4B,UAAY,SAAUC,GAEzC,GAAIA,EAAQ,CACV,GAAIC,EACJ,KAEEA,EAAMzE,KAAKa,QAAQ4D,KAAOrC,GAAMsC,WAAW,EAAMC,SAAS,IAG5D,MAAOpC,GACLnB,QAAQC,KAAK,iMAGXoD,IACFzE,KAAK4E,eAAiBH,EAAII,QAAQL,GAIlCxE,KAAKa,QAAQ2D,OAASA,EAGtBxE,KAAK8E,gBAKP9E,MAAK4E,eAAiB,KACtB5E,KAAKa,QAAQ2D,OAAS,KACtBxE,KAAK8E,YAQTnE,EAAWgC,UAAUmC,SAAW,aAuBhCnE,EAAWoE,aAAe,SAAUlC,GAClC,GAAImC,GAAGC,CAEP,IAAIhE,EAAKiE,QAAQrC,GAEf,IAAKmC,EAAI,EAAGA,EAAInC,EAAKX,OAAQ8C,IAC3BrE,EAAWoE,aAAalC,EAAKmC,QAG5B,CAEH,KAAM,QAAUnC,IAAO,KAAM,IAAI9B,OAAM,0BACvC,MAAM,SAAW8B,IAAO,KAAM,IAAI9B,OAAM,2BACxC,MAAM,QAAU8B,IAAO,KAAM,IAAI9B,OAAM,0BACvC,IAAI0C,GAAOZ,EAAKA,IAChB,IAAIY,IAAQ9C,GAAW+B,MACrB,KAAM,IAAI3B,OAAM,SAAW0C,EAAO,uBAIpC,IAAiC,kBAAtBZ,GAAKoB,MAAMC,OACpB,KAAM,IAAInD,OAAM,8CAElB,IAAIoE,IAAY,UAAW,eAAgB,QAC3C,KAAKH,EAAI,EAAGA,EAAIG,EAASjD,OAAQ8C,IAE/B,GADAC,EAAOE,EAASH,GACZC,IAAQpC,GAAKoB,MACf,KAAM,IAAIlD,OAAM,sBAAwBkE,EAAO,yBAInDtE,GAAW+B,MAAMe,GAAQZ,IAK7BlC,EAAWoE,aAAavC,GACxB7B,EAAWoE,aAAatC,GAExB5C,EAAOD,QAAUe,GAKZ,SAASd,EAAQD,EAASM,GAE/B,GAAIkF,GAAclF,EAAoB,GAClCmF,EAAUnF,EAAoB,GAC9BoF,EAAYpF,EAAoB,GAChCqF,EAAcrF,EAAoB,GAClCsF,EAAOtF,EAAoB,GAC3BuF,EAAevF,EAAoB,GACnCe,EAAOf,EAAoB,GAG3BsC,IAsBJA,GAAS0B,OAAS,SAAUtD,EAAWC,GACrC,IAAKD,EACH,KAAM,IAAIG,OAAM,iCAElBf,MAAKY,UAAYA,EACjBZ,KAAK0F,OACL1F,KAAK2F,YAAc,GAAIP,GACvBpF,KAAK4F,UAAYC,OACjB7F,KAAK8F,gBACHC,UAEF/F,KAAK4E,eAAiB,KACtB5E,KAAKgG,cAGLhG,KAAKiG,YAAYpF,GAEbb,KAAKa,QAAQqF,SAAiC,SAAtBlG,KAAKa,QAAQgC,OACvC7C,KAAKkG,QAAU,GAAIb,GAAQrF,OAG7BA,KAAKmG,eACLnG,KAAKoG,gBAOP5D,EAASO,QAAU,WACb/C,KAAKqG,OAASrG,KAAKY,WAAaZ,KAAKqG,MAAMC,YAActG,KAAKY,WAChEZ,KAAKY,UAAU2F,YAAYvG,KAAKqG,QASpC7D,EAASyD,YAAc,SAAUpF,GAU/B,GATAb,KAAKa,SACH2F,QAAQ,EACRN,SAAS,EACTrD,KAAM,OACNY,KAAMoC,OACNrB,OAAQ,MAIN3D,EACF,IAAK,GAAIoE,KAAQpE,GACXA,EAAQ4F,eAAexB,KACzBjF,KAAKa,QAAQoE,GAAQpE,EAAQoE,GAMnCjF,MAAKuE,UAAUvE,KAAKa,QAAQ2D,QAG5BxE,KAAK0G,mBAAqBzF,EAAK0F,SAAS3G,KAAK8E,SAAS8B,KAAK5G,MAAOA,KAAK4C,mBAIzE,IAAIiE,GAAYhB,OAGZiB,EAAW,IAQftE,GAASQ,IAAM,SAAUlC,EAAM2C,GAS7B,GAPIA,IAEFrC,QAAQC,KAAK,qEACbrB,KAAKa,QAAQ4C,KAAOA,GAIlB3C,YAAgBiG,WAAsBlB,SAAT/E,EAC/Bd,KAAKgE,YAEF,CACHhE,KAAKgH,QAAQT,YAAYvG,KAAKiH,MAG9B,IAAIC,IACFC,MAAOnH,KAAKa,QAAQ4C,KACpB2D,MAAOtG,GAELuG,EAAO,GAAI7B,GAAKxF,KAAMkH,EAC1BlH,MAAKsH,SAASD,GAGdrH,KAAK8E,UAGL,IAAIyC,IAAU,CACdvH,MAAKqH,KAAKG,OAAOD,GAEjBvH,KAAKgH,QAAQS,YAAYzH,KAAKiH,OAI5BjH,KAAKkG,SACPlG,KAAKkG,QAAQlC,QAIXhE,KAAK0H,WACP1H,KAAK0H,UAAU1D,SAQnBxB,EAASS,IAAM,WAMb,MAJI4D,IACFA,EAAUc,OAGR3H,KAAKqH,KACArH,KAAKqH,KAAKO,WAGV/B,QAQXrD,EAASa,QAAU,WACjB,MAAOC,MAAKC,UAAUvD,KAAKiD,QAO7BT,EAASU,QAAU,SAASC,GAC1BnD,KAAKgD,IAAI/B,EAAKmC,MAAMD,KAOtBX,EAASgB,QAAU,SAAUC,GAC3BzD,KAAKa,QAAQ4C,KAAOA,EAChBzD,KAAKqH,MACPrH,KAAKqH,KAAKQ,YAAY7H,KAAKa,QAAQ4C,OAQvCjB,EAASkB,QAAU,WACjB,MAAO1D,MAAKa,QAAQ4C,MAUtBjB,EAASsF,MAAQ,WACf,GAAIC,GAAQ/H,KAAKgH,QAAQgB,cAAc,yBACnCD,GACFA,EAAMD,QAEC9H,KAAKqH,KAAK3B,IAAI8B,OACrBxH,KAAKqH,KAAK3B,IAAI8B,OAAOM,QAEd9H,KAAKqH,KAAK3B,IAAIuC,KACrBjI,KAAKqH,KAAK3B,IAAIuC,KAAKH,SAInBC,EAAQ/H,KAAKqG,MAAM2B,cAAc,UAC7BD,GACFA,EAAMD,UAQZtF,EAASwB,MAAQ,WACXhE,KAAKqH,OACPrH,KAAKqH,KAAKa,WACVlI,KAAKmI,MAAM5B,YAAYvG,KAAKqH,KAAKe,gBAC1BpI,MAAKqH,OAShB7E,EAAS8E,SAAW,SAAUD,GAC5BrH,KAAKgE,QAELhE,KAAKqH,KAAOA,EAGZrH,KAAKmI,MAAMV,YAAYJ,EAAKe,WAe9B5F,EAASgE,OAAS,SAAU6B,GAC1B,GAAIC,EAUJ,OATItI,MAAKqH,MACPrH,KAAKgH,QAAQT,YAAYvG,KAAKiH,OAC9BqB,EAAUtI,KAAKqH,KAAKb,OAAO6B,GAC3BrI,KAAKgH,QAAQS,YAAYzH,KAAKiH,QAG9BqB,KAGKA,GAMT9F,EAAS+F,UAAY,WACfvI,KAAKqH,OACPrH,KAAKgH,QAAQT,YAAYvG,KAAKiH,OAC9BjH,KAAKqH,KAAKG,SACVxH,KAAKgH,QAAQS,YAAYzH,KAAKiH,SAOlCzE,EAASgG,YAAc,WACjBxI,KAAKqH,OACPrH,KAAKgH,QAAQT,YAAYvG,KAAKiH,OAC9BjH,KAAKqH,KAAKa,WACVlI,KAAKgH,QAAQS,YAAYzH,KAAKiH,SAkBlCzE,EAASiG,UAAY,SAAUC,EAAQxB,GAEjClH,KAAKkG,SACPlG,KAAKkG,QAAQyC,IAAID,EAAQxB,GAG3BlH,KAAK4I,aASPpG,EAASoG,UAAY,WAKnB,GAHA5I,KAAK0G,qBAGD1G,KAAKa,QAAQW,SACf,IACExB,KAAKa,QAAQW,WAEf,MAAOe,GACLnB,QAAQD,MAAM,+BAAgCoB,KASpDC,EAASsC,SAAW,WAEd9E,KAAKgG,YACPhG,KAAKgG,WAAWlE,QAAQ,SAAUuF,GAChCA,EAAKwB,SAAS,OAIlB,IAAInJ,GAAOM,KAAKqH,IAChB,IAAK3H,EAAL,CAKA,GAAIoJ,GAAkBpJ,EAAKoF,WAGvBiE,IACJ,IAAI/I,KAAK4E,eAAgB,CACvB,GAAIoE,GAAQhJ,KAAK4E,eAAelF,EAAKkI,WAChCoB,KAEHD,EAAe/I,KAAK4E,eAAeqE,OAC9BC,IAAI,SAAU/H,GACb,MAAOF,GAAKkI,mBAAmBhI,KAEhC+H,IAAI,SAAmB/H,GACtB,OACEkG,KAAM3H,EAAK0J,SAASjI,EAAMkI,UAC1BlI,MAAOA,KAGVmI,OAAO,SAAkBC,GACxB,MAAqB,OAAdA,EAAMlC,QAMvBrH,KAAKgG,WAAa8C,EACbU,OAAOT,GACPU,OAAO,SAAwBC,EAAKH,GAGnC,MAAOA,GAAMlC,KACRsC,cACAT,IAAI,SAAUU,GACb,OACEvC,KAAMuC,EACNC,MAAON,EAAMlC,KACblG,OACE2I,QAAyB,WAAhBF,EAAOG,KACV,8BACA,6BAIXP,OAAOE,GAAMH,SAGnBL,IAAI,SAAmBK,GAEtB,MADAA,GAAMlC,KAAKwB,SAASU,EAAMpI,MAAOoI,EAAMM,OAChCN,EAAMlC,SASrB7E,EAASwH,gBAAkB,SAAUC,GACnC,GAAIC,GAAKlK,KACLgH,EAAUhH,KAAKgH,QACfmD,EAAMlJ,EAAKmJ,eAAepD,GAC1BqD,EAASrD,EAAQsD,aACjBC,EAASJ,EAAME,EACfG,EAAS,GACTC,EAAW,EAEDN,GAAMK,EAAfP,GAA0BjD,EAAQ0D,UAAY,EACjD1K,KAAK2K,gBAAmBR,EAAMK,EAAUP,GAAU,EAE3CA,EAASM,EAASC,GACvBH,EAASrD,EAAQ0D,UAAY1D,EAAQ4D,aACvC5K,KAAK2K,gBAAmBJ,EAASC,EAAUP,GAAU,EAGrDjK,KAAK2K,eAAiB9E,OAGpB7F,KAAK2K,eACF3K,KAAK6K,kBACR7K,KAAK6K,gBAAkBC,YAAY,WAC7BZ,EAAGS,eACL3D,EAAQ0D,WAAaR,EAAGS,eAGxBT,EAAGa,kBAEJN,IAILzK,KAAK+K,kBAOTvI,EAASuI,eAAiB,WACpB/K,KAAK6K,kBACPG,aAAahL,KAAK6K,uBACX7K,MAAK6K,iBAEV7K,KAAK2K,sBACA3K,MAAK2K,gBAehBnI,EAASyI,aAAe,SAAUrF,GAC3BA,IAID,aAAeA,IAAa5F,KAAKgH,UAEnChH,KAAKgH,QAAQ0D,UAAY9E,EAAU8E,WAEjC9E,EAAUG,OAEZ/F,KAAKkL,OAAOtF,EAAUG,OAEpBH,EAAUuF,OACZlK,EAAKmK,mBAAmBxF,EAAUuF,OAEhCvF,EAAUF,KACZE,EAAUF,IAAIoC,UAalBtF,EAAS6I,aAAe,WACtB,GAAIF,GAAQlK,EAAKqK,oBAKjB,OAJIH,IAAsC,QAA7BA,EAAMvK,UAAU2K,WAC3BJ,EAAQ,OAIRzF,IAAKoB,EACLqE,MAAOA,EACPpF,MAAO/F,KAAK8F,eAAeC,MAAMyF,MAAM,GACvCd,UAAW1K,KAAKgH,QAAUhH,KAAKgH,QAAQ0D,UAAY,IAavDlI,EAASiJ,SAAW,SAAUtB,EAAKuB,GACjC,GAAI1E,GAAUhH,KAAKgH,OACnB,IAAIA,EAAS,CACX,GAAI2E,GAAS3L,IAET2L,GAAOC,iBACTZ,aAAaW,EAAOC,sBACbD,GAAOC,gBAEZD,EAAOE,kBACTF,EAAOE,iBAAgB,SAChBF,GAAOE,gBAIhB,IAAIxB,GAASrD,EAAQsD,aACjBC,EAASvD,EAAQ4D,aAAeP,EAChCyB,EAAiBC,KAAKC,IAAID,KAAKE,IAAI9B,EAAME,EAAS,EAAG,GAAIE,GAGzD2B,EAAU,WACZ,GAAIxB,GAAY1D,EAAQ0D,UACpByB,EAAQL,EAAiBpB,CACzBqB,MAAKK,IAAID,GAAQ,GACnBnF,EAAQ0D,WAAayB,EAAO,EAC5BR,EAAOE,gBAAkBH,EACzBC,EAAOC,eAAiBS,WAAWH,EAAS,MAIxCR,GACFA,GAAS,GAEX1E,EAAQ0D,UAAYoB,QACbH,GAAOC,qBACPD,GAAOE,iBAGlBK,SAGIR,IACFA,GAAS,IASflJ,EAAS2D,aAAe,WAQtB,QAASmG,GAAQC,GAGXZ,EAAOa,UACTb,EAAOa,SAASD,GAVpBvM,KAAKqG,MAAQoG,SAASC,cAAc,OACpC1M,KAAKqG,MAAMsG,UAAY,8BAAgC3M,KAAKa,QAAQgC,KACpE7C,KAAKY,UAAU6G,YAAYzH,KAAKqG,MAGhC,IAAIsF,GAAS3L,IAQbA,MAAKqG,MAAMuG,QAAU,SAAUL,GAC7B,GAAIM,GAASN,EAAMM,MAEnBP,GAAQC,GAIe,UAAnBM,EAAOtB,UACTgB,EAAMO,kBAGV9M,KAAKqG,MAAM0G,QAAUT,EACrBtM,KAAKqG,MAAM2G,SAAWV,EACtBtM,KAAKqG,MAAM4G,UAAYX,EACvBtM,KAAKqG,MAAM6G,QAAUZ,EACrBtM,KAAKqG,MAAM8G,MAAQb,EACnBtM,KAAKqG,MAAM+G,QAAUd,EACrBtM,KAAKqG,MAAMgH,YAAcf,EACzBtM,KAAKqG,MAAMiH,UAAYhB,EACvBtM,KAAKqG,MAAMkH,YAAcjB,EACzBtM,KAAKqG,MAAMmH,WAAalB,EAIxBrL,EAAKwM,iBAAiBzN,KAAKqG,MAAO,QAASiG,GAAS,GACpDrL,EAAKwM,iBAAiBzN,KAAKqG,MAAO,OAAQiG,GAAS,GACnDtM,KAAKqG,MAAMqH,UAAYpB,EACvBtM,KAAKqG,MAAMsH,WAAarB,EAGxBtM,KAAKiI,KAAOwE,SAASC,cAAc,OACnC1M,KAAKiI,KAAK0E,UAAY,kBACtB3M,KAAKqG,MAAMoB,YAAYzH,KAAKiI,KAG5B,IAAIM,GAAYkE,SAASC,cAAc,SACvCnE,GAAUoE,UAAY,wBACtBpE,EAAUqF,MAAQ,oBAClBrF,EAAUqE,QAAU,WAClBjB,EAAOpD,aAETvI,KAAKiI,KAAKR,YAAYc,EAGtB,IAAIC,GAAciE,SAASC,cAAc,SASzC,IARAlE,EAAYoF,MAAQ,sBACpBpF,EAAYmE,UAAY,0BACxBnE,EAAYoE,QAAU,WACpBjB,EAAOnD,eAETxI,KAAKiI,KAAKR,YAAYe,GAGlBxI,KAAKkG,QAAS,CAEhB,GAAI2H,GAAOpB,SAASC,cAAc,SAClCmB,GAAKlB,UAAY,uCACjBkB,EAAKD,MAAQ,4BACbC,EAAKjB,QAAU,WACbjB,EAAOmC,WAET9N,KAAKiI,KAAKR,YAAYoG,GACtB7N,KAAK0F,IAAImI,KAAOA,CAGhB,IAAIE,GAAOtB,SAASC,cAAc,SAClCqB,GAAKpB,UAAY,kBACjBoB,EAAKH,MAAQ,sBACbG,EAAKnB,QAAU,WACbjB,EAAOqC,WAEThO,KAAKiI,KAAKR,YAAYsG,GACtB/N,KAAK0F,IAAIqI,KAAOA,EAGhB/N,KAAKkG,QAAQ1E,SAAW,WACtBqM,EAAKI,UAAYtC,EAAOzF,QAAQgI,UAChCH,EAAKE,UAAYtC,EAAOzF,QAAQiI,WAElCnO,KAAKkG,QAAQ1E,WAIf,GAAIxB,KAAKa,SAAWb,KAAKa,QAAQ6B,OAAS1C,KAAKa,QAAQ6B,MAAMR,OAAQ,CACnE,GAAIkM,GAAU3I,EAAavB,OAAOlE,KAAMA,KAAKa,QAAQ6B,MAAO1C,KAAKa,QAAQgC,KACzE7C,MAAKiI,KAAKR,YAAY2G,GACtBpO,KAAK0F,IAAI0I,QAAUA,EAIjBpO,KAAKa,QAAQ2F,SACfxG,KAAK0H,UAAY,GAAIpC,GAAUtF,KAAMA,KAAKiI,QAQ9CzF,EAASsL,QAAU,WACb9N,KAAKkG,UAEPlG,KAAKkG,QAAQ2H,OAGb7N,KAAK4I,cAQTpG,EAASwL,QAAU,WACbhO,KAAKkG,UAEPlG,KAAKkG,QAAQ6H,OAGb/N,KAAK4I,cASTpG,EAASgK,SAAW,SAAUD,GACV,WAAdA,EAAMxC,MACR/J,KAAKqO,WAAW9B,GAGA,SAAdA,EAAMxC,OACRjD,EAAWyF,EAAMM,QAGD,aAAdN,EAAMxC,MACR/J,KAAKsO,mBAAmB/B,IAER,aAAdA,EAAMxC,MAAqC,WAAdwC,EAAMxC,MAAmC,SAAdwC,EAAMxC,OAChE/J,KAAKuO,oBAAoBhC,EAG3B,IAAIlF,GAAO7B,EAAKgJ,kBAAkBjC,EAAMM,OAExC,IAAIxF,GAAQA,EAAKoH,SAAU,CACzB,GAAkB,SAAdlC,EAAMxC,KAAiB,CACzB,GAAIwC,EAAMM,QAAUxF,EAAK3B,IAAIuC,KAI3B,WAHAjI,MAAK0O,gBAAgBnC,EAAMM,OAOxBN,GAAMoC,UACT3O,KAAK4O,WAIS,aAAdrC,EAAMxC,MAERvE,EAAKqJ,YAAY7O,KAAK8F,eAAeC,MAAOwG,OAI5B,aAAdA,EAAMxC,OACR/J,KAAK4O,WAEDvH,GAAQkF,EAAMM,QAAUxF,EAAK3B,IAAIoJ,KAEnCtJ,EAAKqJ,YAAYxH,EAAMkF,KAEflF,GAASkF,EAAMM,QAAUxF,EAAK3B,IAAIyB,OAASoF,EAAMM,QAAUxF,EAAK3B,IAAI0B,QAE5EpH,KAAK+O,oBAAoBxC,GAK3BlF,IACFA,EAAKiF,QAAQC,IAIjB/J,EAAS8L,mBAAqB,SAAU/B,GACtCvM,KAAKgP,mBACHC,cAAe1C,EAAMM,OACrBqC,aAAc3C,EAAM4C,MACpBC,aAAc7C,EAAM8C,MACpBC,aAAc,EACdX,UAAU,IAIdnM,EAAS+L,oBAAsB,SAAUhC,GAClCvM,KAAKgP,mBACRhP,KAAKsO,mBAAmB/B,EAG1B,IAAIgD,GAAQhD,EAAM4C,MAAQnP,KAAKgP,kBAAkBE,aAC7CM,EAAQjD,EAAM8C,MAAQrP,KAAKgP,kBAAkBI,YASjD,OAPApP,MAAKgP,kBAAkBM,aAAevD,KAAK0D,KAAKF,EAAQA,EAAQC,EAAQA,GACxExP,KAAKgP,kBAAkBL,SACnB3O,KAAKgP,kBAAkBL,UAAY3O,KAAKgP,kBAAkBM,aAAe,GAE7E/C,EAAM+C,aAAetP,KAAKgP,kBAAkBM,aAC5C/C,EAAMoC,SAAW3O,KAAKgP,kBAAkBL,SAEjCpC,EAAM+C,cAQf9M,EAASuM,oBAAsB,SAAUxC,GACvC,GAAIlF,GAAO7B,EAAKgJ,kBAAkBjC,EAAMM,OAExC,IAA0B,SAAtB7M,KAAKa,QAAQgC,MAA+CgD,SAA5B7F,KAAKa,QAAQa,WAAjD,CAMA1B,KAAK8F,gBACH4J,MAAOrI,GAAQ,KACfsI,IAAK,KACL5J,UAGF/F,KAAKsO,mBAAmB/B,EAExB,IAAIZ,GAAS3L,IACRA,MAAK4P,YACR5P,KAAK4P,UAAY3O,EAAKwM,iBAAiBoC,OAAQ,YAAa,SAAUtD,GACpEZ,EAAOmE,eAAevD,MAGrBvM,KAAK+P,UACR/P,KAAK+P,QAAU9O,EAAKwM,iBAAiBoC,OAAQ,UAAW,SAAUtD,GAChEZ,EAAOqE,kBAAkBzD,QAW/B/J,EAASsN,eAAiB,SAAUvD,GAIlC,GAHAA,EAAMO,iBAEN9M,KAAKuO,oBAAoBhC,GACpBA,EAAMoC,SAAX,CAIA,GAAItH,GAAO7B,EAAKgJ,kBAAkBjC,EAAMM,OAEpCxF,KAC+B,MAA7BrH,KAAK8F,eAAe4J,QACtB1P,KAAK8F,eAAe4J,MAAQrI,GAE9BrH,KAAK8F,eAAe6J,IAAMtI,GAI5BrH,KAAK4O,UAGL,IAAIc,GAAQ1P,KAAK8F,eAAe4J,MAC5BC,EAAM3P,KAAK8F,eAAe6J,KAAO3P,KAAK8F,eAAe4J,KACrDA,IAASC,IAEX3P,KAAK8F,eAAeC,MAAQ/F,KAAKiQ,mBAAmBP,EAAOC,GAC3D3P,KAAKkL,OAAOlL,KAAK8F,eAAeC,UASpCvD,EAASwN,kBAAoB,SAAUzD,GAEjCvM,KAAK8F,eAAeC,MAAM,IAC5B/F,KAAK8F,eAAeC,MAAM,GAAGL,IAAIuC,KAAKH,QAGxC9H,KAAK8F,eAAe4J,MAAQ,KAC5B1P,KAAK8F,eAAe6J,IAAM,KAGtB3P,KAAK4P,YACP3O,EAAKiP,oBAAoBL,OAAQ,YAAa7P,KAAK4P,iBAC5C5P,MAAK4P,WAEV5P,KAAK+P,UACP9O,EAAKiP,oBAAoBL,OAAQ,UAAW7P,KAAK+P,eAC1C/P,MAAK+P,UAShBvN,EAASoM,SAAW,SAAUuB,GAC5BnQ,KAAK8F,eAAeC,MAAMjE,QAAQ,SAAUuF,GAC1CA,EAAK+I,aAAY,KAEnBpQ,KAAK8F,eAAeC,SAEhBoK,IACFnQ,KAAK8F,eAAe4J,MAAQ,KAC5B1P,KAAK8F,eAAe6J,IAAM,OAQ9BnN,EAAS0I,OAAS,SAAUnF,GAC1B,IAAKsK,MAAMnL,QAAQa,GACjB,MAAO/F,MAAKkL,QAAQnF,GAGtB,IAAIA,EAAO,CACT/F,KAAK4O,WAEL5O,KAAK8F,eAAeC,MAAQA,EAAMyF,MAAM,EAExC,IAAI8E,GAAQvK,EAAM,EAClBA,GAAMjE,QAAQ,SAAUuF,GACtBA,EAAK+I,aAAY,EAAM/I,IAASiJ,OActC9N,EAASyN,mBAAqB,SAAUP,EAAOC,GAI7C,IAHA,GAAIY,GAAYb,EAAMc,UAClBC,EAAUd,EAAIa,UACdxL,EAAI,EACDA,EAAIuL,EAAUrO,QAAUqO,EAAUvL,KAAOyL,EAAQzL,IACtDA,GAEF,IAAItF,GAAO6Q,EAAUvL,EAAI,GACrB0L,EAAaH,EAAUvL,GACvB2L,EAAWF,EAAQzL,EAgBvB,IAdK0L,GAAeC,IACdjR,EAAKkK,QAEP8G,EAAahR,EACbiR,EAAWjR,EACXA,EAAOA,EAAKkK,SAIZ8G,EAAahR,EAAKkR,OAAO,GACzBD,EAAWjR,EAAKkR,OAAOlR,EAAKkR,OAAO1O,OAAS,KAI5CxC,GAAQgR,GAAcC,EAAU,CAClC,GAAIE,GAAanR,EAAKkR,OAAO5O,QAAQ0O,GACjCI,EAAWpR,EAAKkR,OAAO5O,QAAQ2O,GAC/BI,EAAahF,KAAKC,IAAI6E,EAAYC,GAClCE,EAAYjF,KAAKE,IAAI4E,EAAYC,EAErC,OAAOpR,GAAKkR,OAAOpF,MAAMuF,EAAYC,EAAY,GAGjD,UASJxO,EAAS6L,WAAa,SAAU9B,GAC9B,GAAI0E,GAAS1E,EAAM2E,OAAS3E,EAAM4E,QAC9BC,EAAU7E,EAAM6E,QAChBC,EAAW9E,EAAM8E,SACjBC,GAAU,CASd,IAPc,GAAVL,GACF5E,WAAW,WAETpL,EAAKsQ,sBAAsBzK,IAC1B,GAGD9G,KAAK0H,UACP,GAAI0J,GAAqB,IAAVH,EACbjR,KAAK0H,UAAUhC,IAAIc,OAAOsB,QAC1B9H,KAAK0H,UAAUhC,IAAIc,OAAO0E,SAC1BoG,GAAU,MAEP,IAAc,KAAVL,GAAkBG,GAAqB,IAAVH,EAAe,CACnD,GAAInJ,IAAQ,CACPuJ,GAMHrR,KAAK0H,UAAU8J,SAAS1J,GAJxB9H,KAAK0H,UAAU+J,KAAK3J,GAOtBwJ,GAAU,EAIVtR,KAAKkG,UACHkL,IAAYC,GAAsB,IAAVJ,GAE1BjR,KAAK8N,UACLwD,GAAU,GAEHF,GAAWC,GAAsB,IAAVJ,IAE9BjR,KAAKgO,UACLsD,GAAU,IAIVA,IACF/E,EAAMO,iBACNP,EAAMmF,oBAQVlP,EAAS4D,aAAe,WACtB,GAAIuL,GAAelF,SAASC,cAAc,MAC1CiF,GAAahF,UAAY,mBACzB3M,KAAK2R,aAAeA,EAEpB3R,KAAKgH,QAAUyF,SAASC,cAAc,OACtC1M,KAAKgH,QAAQ2F,UAAY,kBACzBgF,EAAalK,YAAYzH,KAAKgH,SAE9BhH,KAAKiH,MAAQwF,SAASC,cAAc,SACpC1M,KAAKiH,MAAM0F,UAAY,kBACvB3M,KAAKgH,QAAQS,YAAYzH,KAAKiH,MAI9B,IAAI2K,EACJ5R,MAAK6R,gBAAkBpF,SAASC,cAAc,YACpB,SAAtB1M,KAAKa,QAAQgC,OACf+O,EAAMnF,SAASC,cAAc,OAC7BkF,EAAIE,MAAQ,OACZ9R,KAAK6R,gBAAgBpK,YAAYmK,IAEnCA,EAAMnF,SAASC,cAAc,OAC7BkF,EAAIE,MAAQ,OACZ9R,KAAK6R,gBAAgBpK,YAAYmK,GACjCA,EAAMnF,SAASC,cAAc,OAC7B1M,KAAK6R,gBAAgBpK,YAAYmK,GACjC5R,KAAKiH,MAAMQ,YAAYzH,KAAK6R,iBAE5B7R,KAAKmI,MAAQsE,SAASC,cAAc,SACpC1M,KAAKiH,MAAMQ,YAAYzH,KAAKmI,OAE5BnI,KAAKqG,MAAMoB,YAAYkK,IAUzBnP,EAASkM,gBAAkB,SAAUqD,EAAQC,GAC3C,GAAIC,MACAtG,EAAS3L,IAGbiS,GAAMC,MACJ7J,KAAM,YACNuF,MAAO,qCACPjB,UAAW,uBACXwF,MAAO,WACL3M,EAAK4M,YAAYzG,EAAO7F,eAAeC,UAK3CkM,EAAMC,MACJ7J,KAAM,SACNuF,MAAO,oCACPjB,UAAW,oBACXwF,MAAO,WACL3M,EAAK6M,SAAS1G,EAAO7F,eAAeC,SAIxC,IAAIkC,GAAO,GAAI1C,GAAY0M,GAAQK,MAAON,GAC1C/J,GAAKsK,KAAKR,EAAQ/R,KAAKgH,UAKzBnH,EAAOD,UAEHiD,KAAM,OACNoB,MAAOzB,EACPmB,KAAM,SAGNd,KAAM,OACNoB,MAAOzB,EACPmB,KAAM,SAGNd,KAAM,OACNoB,MAAOzB,EACPmB,KAAM,UAOL,SAAS9D,EAAQD,EAASM,GAE/B,GAAIsS,EACJ,KACEA,EAAMtS,EAAoB,IAE5B,MAAOqC,IAIP,GAAIkD,GAAevF,EAAoB,GACnCe,EAAOf,EAAoB,GAG3BuC,KAEAgQ,EAAa,CAsBjBhQ,GAASyB,OAAS,SAAUtD,EAAWC,GAErCA,EAAUA,MACVb,KAAKa,QAAUA,EAGXA,EAAQ6R,YACV1S,KAAK0S,YAAcC,OAAO9R,EAAQ6R,aAGlC1S,KAAK0S,YAAc,CAIrB,IAAIE,GAAO/R,EAAQ2R,IAAM3R,EAAQ2R,IAAMA,CAGvCxS,MAAK6C,KAAwB,QAAhBhC,EAAQgC,KAAkB,OAAS,OAC/B,QAAb7C,KAAK6C,MAEa,mBAAT+P,KACT5S,KAAK6C,KAAO,OACZzB,QAAQC,KAAK,iKAKjBrB,KAAK6S,MAAQhS,EAAQgS,OAAS,sBAE9B,IAAI3I,GAAKlK,IACTA,MAAKY,UAAYA,EACjBZ,KAAK0F,OACL1F,KAAK8S,UAAYjN,OACjB7F,KAAK+S,SAAWlN,OAChB7F,KAAK4E,eAAiB,KAGtB5E,KAAK0G,mBAAqBzF,EAAK0F,SAAS3G,KAAK8E,SAAS8B,KAAK5G,MAAOA,KAAK4C,mBAEvE5C,KAAK8R,MAAQlR,EAAUoS,YACvBhT,KAAKqK,OAASzJ,EAAU0J,aAExBtK,KAAKqG,MAAQoG,SAASC,cAAc,OACpC1M,KAAKqG,MAAMsG,UAAY,8BAAgC3M,KAAKa,QAAQgC,KACpE7C,KAAKqG,MAAMuG,QAAU,SAAUL,GAE7BA,EAAMO,kBAER9M,KAAKqG,MAAM4G,UAAY,SAAUV,GAC/BrC,EAAGmE,WAAW9B,IAIhBvM,KAAKiI,KAAOwE,SAASC,cAAc,OACnC1M,KAAKiI,KAAK0E,UAAY,kBACtB3M,KAAKqG,MAAMoB,YAAYzH,KAAKiI,KAG5B,IAAIgL,GAAexG,SAASC,cAAc,SAC1CuG,GAAatG,UAAY,oBACzBsG,EAAarF,MAAQ,qEACrB5N,KAAKiI,KAAKR,YAAYwL,GACtBA,EAAarG,QAAU,WACrB,IACE1C,EAAGgJ,SAEL,MAAO3Q,GACL2H,EAAG7F,SAAS9B,IAKhB,IAAI4Q,GAAgB1G,SAASC,cAAc,SAc3C,IAbAyG,EAAcxG,UAAY,qBAC1BwG,EAAcvF,MAAQ,4DACtB5N,KAAKiI,KAAKR,YAAY0L,GACtBA,EAAcvG,QAAU,WACtB,IACE1C,EAAGkJ,UAEL,MAAO7Q,GACL2H,EAAG7F,SAAS9B,KAKZvC,KAAKa,SAAWb,KAAKa,QAAQ6B,OAAS1C,KAAKa,QAAQ6B,MAAMR,OAAQ,CACnE,GAAIkM,GAAU3I,EAAavB,OAAOlE,KAAMA,KAAKa,QAAQ6B,MAAO1C,KAAKa,QAAQgC,KACzE7C,MAAKiI,KAAKR,YAAY2G,GACtBpO,KAAK0F,IAAI0I,QAAUA,EASrB,GANApO,KAAKgH,QAAUyF,SAASC,cAAc,OACtC1M,KAAKgH,QAAQ2F,UAAY,mBACzB3M,KAAKqG,MAAMoB,YAAYzH,KAAKgH,SAE5BhH,KAAKY,UAAU6G,YAAYzH,KAAKqG,OAEf,QAAbrG,KAAK6C,KAAgB,CACvB7C,KAAKqT,UAAY5G,SAASC,cAAc,OACxC1M,KAAKqT,UAAUC,MAAMjJ,OAAS,OAC9BrK,KAAKqT,UAAUC,MAAMxB,MAAQ,OAC7B9R,KAAKgH,QAAQS,YAAYzH,KAAKqT,UAE9B,IAAIP,GAAYF,EAAKW,KAAKvT,KAAKqT,UAC/BP,GAAUU,gBAAkBC,EAAAA,EAC5BX,EAAUY,SAAS1T,KAAK6S,OACxBC,EAAUa,oBAAmB,GAC7Bb,EAAUc,YAAY,IACtBd,EAAUe,aAAa/Q,QAAQ,iBAC/BgQ,EAAUe,aAAaC,WAAW9T,KAAK0S,aACvCI,EAAUe,aAAaE,gBAAe,GACtCjB,EAAUe,aAAaG,gBAAe,GACtClB,EAAUmB,SAASC,QAAQ,SAAU,MACrCpB,EAAUmB,SAASC,QAAQ,YAAa,MACxClU,KAAK8S,UAAYA,EAGZ9S,KAAKyG,eAAe,WACvB7E,OAAOuS,eAAenU,KAAM,UAC1BiD,IAAK,WAEH,MADA7B,SAAQC,KAAK,sDACN6I,EAAG4I,WAEZ9P,IAAK,SAAU8P,GACb1R,QAAQC,KAAK,sDACb6I,EAAG4I,UAAYA,IAKrB,IAAIsB,GAAY3H,SAASC,cAAc,IACvC0H,GAAU3M,YAAYgF,SAAS4H,eAAe,mBAC9CD,EAAUE,KAAO,sBACjBF,EAAUvH,OAAS,SACnBuH,EAAUzH,UAAY,uBACtByH,EAAUxH,QAAU,WAIlBiD,OAAO0E,KAAKH,EAAUE,KAAMF,EAAUvH,SAExC7M,KAAKiI,KAAKR,YAAY2M,GAGtBtB,EAAU0B,GAAG,SAAUxU,KAAK4I,UAAUhC,KAAK5G,WAExC,CAEH,GAAI+S,GAAWtG,SAASC,cAAc,WACtCqG,GAASpG,UAAY,kBACrBoG,EAAS0B,YAAa,EACtBzU,KAAKgH,QAAQS,YAAYsL,GACzB/S,KAAK+S,SAAWA,EAGc,OAA1B/S,KAAK+S,SAAShG,QAChB/M,KAAK+S,SAAShG,QAAU/M,KAAK4I,UAAUhC,KAAK5G,MAI5CA,KAAK+S,SAAS/F,SAAWhN,KAAK4I,UAAUhC,KAAK5G,MAIjDA,KAAKuE,UAAUvE,KAAKa,QAAQ2D,SAS9B/B,EAASmG,UAAY,WAKnB,GAHA5I,KAAK0G,qBAGD1G,KAAKa,QAAQW,SACf,IACExB,KAAKa,QAAQW,WAEf,MAAOe,GACLnB,QAAQD,MAAM,+BAAgCoB,KAUpDE,EAAS4L,WAAa,SAAU9B,GAC9B,GAAI0E,GAAS1E,EAAM2E,OAAS3E,EAAM4E,QAC9BG,GAAU,CAEA,MAAVL,GAAiB1E,EAAM6E,UACrB7E,EAAM8E,SACRrR,KAAKoT,UAGLpT,KAAKkT,SAEP5B,GAAU,GAGRA,IACF/E,EAAMO,iBACNP,EAAMmF,oBAQVjP,EAASM,QAAU,WAEb/C,KAAK8S,WACP9S,KAAK8S,UAAU4B,UAGb1U,KAAKqG,OAASrG,KAAKY,WAAaZ,KAAKqG,MAAMC,YAActG,KAAKY,WAChEZ,KAAKY,UAAU2F,YAAYvG,KAAKqG,QAOpC5D,EAAS2Q,QAAU,WACjB,GAAItS,GAAOd,KAAKiD,MACZoF,EAAO/E,KAAKC,UAAUzC,EAC1Bd,MAAKkD,QAAQmF,IAMf5F,EAASyQ,OAAS,WAChB,GAAIpS,GAAOd,KAAKiD,MACZoF,EAAO/E,KAAKC,UAAUzC,EAAM,KAAMd,KAAK0S,YAC3C1S,MAAKkD,QAAQmF,IAMf5F,EAASqF,MAAQ,WACX9H,KAAK+S,UACP/S,KAAK+S,SAASjL,QAEZ9H,KAAK8S,WACP9S,KAAK8S,UAAUhL,SAOnBrF,EAASkS,OAAS,WAChB,GAAI3U,KAAK8S,UAAW,CAClB,GAAI8B,IAAQ,CACZ5U,MAAK8S,UAAU6B,OAAOC,KAQ1BnS,EAASO,IAAM,SAASlC,GACtBd,KAAKkD,QAAQI,KAAKC,UAAUzC,EAAM,KAAMd,KAAK0S,eAO/CjQ,EAASQ,IAAM,WACb,GACInC,GADAuH,EAAOrI,KAAKqD,SAGhB,KACEvC,EAAOG,EAAKmC,MAAMiF,GAEpB,MAAO9F,GAEL8F,EAAOpH,EAAK4T,SAASxM,GAGrBvH,EAAOG,EAAKmC,MAAMiF,GAGpB,MAAOvH,IAOT2B,EAASY,QAAU,WACjB,MAAIrD,MAAK+S,SACA/S,KAAK+S,SAAS3L,MAEnBpH,KAAK8S,UACA9S,KAAK8S,UAAUlL,WAEjB,IAOTnF,EAASS,QAAU,SAASC,GAW1B,GAVInD,KAAKa,QAAQiU,iBAAkB,EACjCzM,KAAOpH,EAAK8T,mBAAmB5R,GAG/BkF,KAAOlF,EAGLnD,KAAK+S,WACP/S,KAAK+S,SAAS3L,MAAQiB,MAEpBrI,KAAK8S,UAAW,CAElB,GAAIkC,GAAmBhV,KAAKa,QAAQW,QACpCxB,MAAKa,QAAQW,SAAW,KAExBxB,KAAK8S,UAAUmC,SAAS5M,KAAM,IAE9BrI,KAAKa,QAAQW,SAAWwT,EAI1BhV,KAAK8E,YAOPrC,EAASqC,SAAW,WAEd9E,KAAK0F,IAAIwP,mBACXlV,KAAK0F,IAAIwP,iBAAiB5O,WAAWC,YAAYvG,KAAK0F,IAAIwP,kBAC1DlV,KAAK0F,IAAIwP,iBAAmB,KAE5BlV,KAAKgH,QAAQsM,MAAM6B,aAAe,GAClCnV,KAAKgH,QAAQsM,MAAM8B,cAAgB,GAGrC,IAEItU,GAFAuU,GAAa,EACbpM,IAEJ,KACEnI,EAAOd,KAAKiD,MACZoS,GAAa,EAEf,MAAO9S,IAKP,GAAI8S,GAAcrV,KAAK4E,eAAgB,CACrC,GAAIoE,GAAQhJ,KAAK4E,eAAe9D,EAC3BkI,KACHC,EAASjJ,KAAK4E,eAAeqE,OAAOC,IAAI,SAAU/H,GAChD,MAAOF,GAAKkI,mBAAmBhI,MAKrC,GAAI8H,EAAO/G,OAAS,EAAG,CAErB,GAAIoT,GAAQrM,EAAO/G,OAASuQ,CAC5B,IAAI6C,EAAO,CACTrM,EAASA,EAAOuC,MAAM,EAAGiH,EACzB,IAAI8C,GAASvV,KAAK4E,eAAeqE,OAAO/G,OAASuQ,CACjDxJ,GAAOiJ,KAAK,IAAMqD,EAAS,oBAG7B,GAAIL,GAAmBzI,SAASC,cAAc,MAC9CwI,GAAiBM,UAAY,gDAEzBvM,EAAOC,IAAI,SAAU/H,GACnB,GAAI2I,EASJ,OAPEA,GADmB,gBAAV3I,GACC,wBAA0BA,EAAQ,cAGlC,OAASA,EAAMkI,SAAW,YACvBlI,EAAM2I,QAAU,QAGxB,iEAAmEA,EAAU,UACnF2L,KAAK,IACR,mBAGJzV,KAAK0F,IAAIwP,iBAAmBA,EAC5BlV,KAAKqG,MAAMoB,YAAYyN,EAEvB,IAAI7K,GAAS6K,EAAiB5K,YAC9BtK,MAAKgH,QAAQsM,MAAM6B,cAAiB9K,EAAU,KAC9CrK,KAAKgH,QAAQsM,MAAM8B,cAAgB/K,EAAS,KAI9C,GAAIrK,KAAK8S,UAAW,CAClB,GAAI8B,IAAQ,CACZ5U,MAAK8S,UAAU6B,OAAOC,KAK1B/U,EAAOD,UAEHiD,KAAM,OACNoB,MAAOxB,EACPkB,KAAM,OACNQ,KAAM1B,EAASyQ,SAGfrQ,KAAM,OACNoB,MAAOxB,EACPkB,KAAM,OACNQ,KAAM1B,EAASyQ,UAOd,SAASrT,EAAQD,EAASM,GAE/B,GAAIwV,GAAWxV,EAAoB,GAQnCN,GAAQwD,MAAQ,SAAeuS,GAC7B,IACE,MAAOrS,MAAKF,MAAMuS,GAEpB,MAAOpT,GAKL,KAHA3C,GAAQkF,SAAS6Q,GAGXpT,IAYV3C,EAAQiV,SAAW,SAAUe,GAc3B,QAASC,KAAU,MAAOD,GAASE,OAAO9Q,GAC1C,QAASyM,KAAU,MAAOmE,GAASE,OAAO9Q,EAAI,GAC9C,QAAS+Q,KAAU,MAAOH,GAASE,OAAO9Q,EAAI,GAG9C,QAASgR,KAEP,IADA,GAAIC,GAAKjR,EAAI,EACNiR,GAAM,GAAG,CACd,GAAIC,GAAKN,EAASE,OAAOG,EACzB,IAAW,MAAPC,EACF,OAAO,CAEJ,IAAW,MAAPA,GAAqB,OAAPA,GAAsB,OAAPA,EAIpC,OAAO,CAHPD,KAMJ,OAAO,EAIT,QAASE,KAEP,IADAnR,GAAK,EACEA,EAAI4Q,EAAS1T,SAAsB,MAAX2T,KAA6B,MAAXpE,MAC/CzM,GAEFA,IAAK,EAIP,QAASoR,GAAYC,GACnBC,EAAMpE,KAAK,KACXlN,GAEA,KADA,GAAIvE,GAAIoV,IACD7Q,EAAI4Q,EAAS1T,QAAUzB,IAAM4V,GACxB,MAAN5V,GAAwB,OAAXsV,KAEfO,EAAMpE,KAAK,MAIH,OAANzR,IACFuE,IACAvE,EAAIoV,IAGM,MAANpV,GACF6V,EAAMpE,KAAK,OAGfoE,EAAMpE,KAAKzR,GAEXuE,IACAvE,EAAIoV,GAEFpV,KAAM4V,IACRC,EAAMpE,KAAK,KACXlN,KAKJ,QAASuR,KAMP,IALA,GAAIC,IAAiB,OAAQ,OAAQ,SACjCC,EAAM,GACNhW,EAAIoV,IAEJa,EAAS,eACNA,EAAOC,KAAKlW,IACjBgW,GAAOhW,EACPuE,IACAvE,EAAIoV,GAIJS,GAAMpE,KAD2B,KAA/BsE,EAAcxU,QAAQyU,GACb,IAAMA,EAAM,IAGZA,GA5Ff,GAAIH,MACAtR,EAAI,EAKJ4R,EAAQhB,EAASgB,MAAM,uEA0F3B,KAzFIA,IACFhB,EAAWgB,EAAM,IAwFb5R,EAAI4Q,EAAS1T,QAAQ,CACzB,GAAIzB,GAAIoV,GAEE,OAANpV,GAAwB,MAAXgR,IACf0E,IAEa,MAAN1V,GAAoB,MAANA,EACrB2V,EAAY3V,GAEL,aAAakW,KAAKlW,IAAMuV,IAE/BO,KAGAD,EAAMpE,KAAKzR,GACXuE,KAIJ,MAAOsR,GAAMb,KAAK,KASpB7V,EAAQmV,mBAAqB,SAAU1M,GAIrC,MAAOA,GAAKwO,QAAQ,mBAAoB,SAASpW,GAC/C,MAAO,OAAO,OAASA,EAAEqW,WAAW,GAAGC,SAAS,KAAKvL,MAAM,OAW/D5L,EAAQkF,SAAW,SAAkB6Q,GACX,mBAAd,GACRD,EAAStS,MAAMuS,GAGfrS,KAAKF,MAAMuS,IAUf/V,EAAQgE,OAAS,SAAgBoT,EAAGC,GAClC,IAAK,GAAIhS,KAAQgS,GACXA,EAAExQ,eAAexB,KACnB+R,EAAE/R,GAAQgS,EAAEhS,GAGhB,OAAO+R,IAQTpX,EAAQoE,MAAQ,SAAgBgT,GAC9B,IAAK,GAAI/R,KAAQ+R,GACXA,EAAEvQ,eAAexB,UACZ+R,GAAE/R,EAGb,OAAO+R,IAQTpX,EAAQmK,KAAO,SAAemN,GAC5B,MAAe,QAAXA,EACK,OAEMrR,SAAXqR,EACK,YAEJA,YAAkBvE,SAA8B,gBAAXuE,GACjC,SAEJA,YAAkBC,SAA8B,gBAAXD,GACjC,SAEJA,YAAkBE,UAA+B,iBAAXF,GAClC,UAEJA,YAAkBG,SAA8B,gBAAXH,GACjC,SAELtX,EAAQsF,QAAQgS,GACX,QAGF,SAQT,IAAII,GAAa,kBACjB1X,GAAQ2X,MAAQ,SAAgBlP,GAC9B,OAAuB,gBAARA,IAAoBA,YAAgB8O,UAC/CG,EAAWX,KAAKtO,IAQtBzI,EAAQsF,QAAU,SAAUsS,GAC1B,MAA+C,mBAAxC5V,OAAOe,UAAUoU,SAASxW,KAAKiX,IASxC5X,EAAQ6X,gBAAkB,SAAyBC,GACjD,GAAIC,GAAOD,EAAKE,uBAChB,OAAOD,GAAKE,KAAOhI,OAAOiI,aAAerL,SAASsL,YAAc,GASlEnY,EAAQwK,eAAiB,SAAwBsN,GAC/C,GAAIC,GAAOD,EAAKE,uBAChB,OAAOD,GAAKxN,IAAM0F,OAAOmI,aAAevL,SAAS/B,WAAa,GAQhE9K,EAAQqY,aAAe,SAAsBP,EAAM/K,GACjD,GAAIuL,GAAUR,EAAK/K,UAAUwL,MAAM,IACD,KAA9BD,EAAQlW,QAAQ2K,KAClBuL,EAAQhG,KAAKvF,GACb+K,EAAK/K,UAAYuL,EAAQzC,KAAK,OASlC7V,EAAQwY,gBAAkB,SAAyBV,EAAM/K,GACvD,GAAIuL,GAAUR,EAAK/K,UAAUwL,MAAM,KAC/BE,EAAQH,EAAQlW,QAAQ2K,EACf,KAAT0L,IACFH,EAAQI,OAAOD,EAAO,GACtBX,EAAK/K,UAAYuL,EAAQzC,KAAK,OASlC7V,EAAQ2Y,gBAAkB,SAAyBC,GAEjD,IAAK,GADD5H,GAAS4H,EAAWC,WACfzT,EAAI,EAAG0T,EAAO9H,EAAO1O,OAAYwW,EAAJ1T,EAAUA,IAAK,CACnD,GAAI6E,GAAQ+G,EAAO5L,EAGf6E,GAAMyJ,OAERzJ,EAAM8O,gBAAgB,QAIxB,IAAIC,GAAa/O,EAAM+O,UACvB,IAAIA,EACF,IAAK,GAAIC,GAAID,EAAW1W,OAAS,EAAG2W,GAAK,EAAGA,IAAK,CAC/C,GAAIC,GAAYF,EAAWC,EACvBC,GAAUC,aAAc,GAC1BlP,EAAM8O,gBAAgBG,EAAUrV,MAMtC7D,EAAQ2Y,gBAAgB1O,KAW5BjK,EAAQoZ,wBAA0B,SAAiCC,GACjE,GAAI9N,GAAOvF,CACR6G,UAASyM,cACV/N,EAAQsB,SAASyM,cACjB/N,EAAMgO,mBAAmBF,GACzB9N,EAAMjD,UAAS,GACftC,EAAYiK,OAAOxE,eACnBzF,EAAUwT,kBACVxT,EAAUyT,SAASlO,KASvBvL,EAAQ2R,sBAAwB,SAA+B0H,GAC7D,GAAKA,GAA6D,OAAnCA,EAAuB1N,SAAtD,CAIA,GAAI+N,GAAKnO,CACL0E,QAAOxE,cAAgBoB,SAASyM,cAClC/N,EAAQsB,SAASyM,cACjB/N,EAAMgO,mBAAmBF,GACzBK,EAAMzJ,OAAOxE,eACbiO,EAAIF,kBACJE,EAAID,SAASlO,MASjBvL,EAAQyL,aAAe,WACrB,GAAIwE,OAAOxE,aAAc,CACvB,GAAIiO,GAAMzJ,OAAOxE,cACjB,IAAIiO,EAAIC,YAAcD,EAAIE,WACxB,MAAOF,GAAIC,WAAW,GAG1B,MAAO,OAQT3Z,EAAQqL,aAAe,SAAsBE,GAC3C,GAAIA,GACE0E,OAAOxE,aAAc,CACvB,GAAIiO,GAAMzJ,OAAOxE,cACjBiO,GAAIF,kBACJE,EAAID,SAASlO,KAcnBvL,EAAQ0L,mBAAqB,WAC3B,GAAIH,GAAQvL,EAAQyL,cAEpB,OAAIF,IAAS,eAAiBA,IAAS,aAAeA,IAClDA,EAAMsO,gBAAmBtO,EAAMsO,gBAAkBtO,EAAMuO,cAEvDC,YAAaxO,EAAMwO,YACnBC,UAAWzO,EAAMyO,UACjBhZ,UAAWuK,EAAMsO,eAAenT,YAI7B,MAUT1G,EAAQwL,mBAAqB,SAA4BlE,GACvD,GAAIuF,SAASyM,aAAerJ,OAAOxE,aAAc,CAC/C,GAAIzF,GAAYiK,OAAOxE,cACvB,IAAGzF,EAAW,CACZ,GAAIuF,GAAQsB,SAASyM,aAEhBhS,GAAOtG,UAAUiZ,YACpB3S,EAAOtG,UAAU6G,YAAYgF,SAAS4H,eAAe,KAKvDlJ,EAAM2O,SAAS5S,EAAOtG,UAAUiZ,WAAY3S,EAAOyS,aACnDxO,EAAM4O,OAAO7S,EAAOtG,UAAUiZ,WAAY3S,EAAO0S,WAEjDha,EAAQqL,aAAaE,MAW3BvL,EAAQoa,aAAe,SAAsBC,EAASC,GACpD,GAAI5J,GAAmBzK,QAAVqU,CAgBb,IAfI5J,IACF4J,GACE7R,KAAQ,GACR8R,MAAS,WACP,GAAI9R,GAAOrI,KAAKqI,IAEhB,OADArI,MAAKqI,KAAO,GACLA,GAETrF,IAAO,SAAUqF,GACfrI,KAAKqI,KAAOA,KAMd4R,EAAQG,UACV,MAAOF,GAAOC,QAAUF,EAAQG,SAIlC,IAAIH,EAAQI,gBAAiB,CAI3B,IAAK,GAHD5B,GAAawB,EAAQxB,WACrB6B,EAAY,GAEPtV,EAAI,EAAG0T,EAAOD,EAAWvW,OAAYwW,EAAJ1T,EAAUA,IAAK,CACvD,GAAI6E,GAAQ4O,EAAWzT,EAEvB,IAAsB,OAAlB6E,EAAM0B,UAAuC,KAAlB1B,EAAM0B,SAAiB,CACpD,GAAIgP,GAAY9B,EAAWzT,EAAI,GAC3BwV,EAAWD,EAAYA,EAAUhP,SAAW1F,MAC5C2U,IAAwB,OAAZA,GAAiC,KAAZA,GAA+B,MAAZA,IACtDF,GAAa,KACbJ,EAAOC,SAETG,GAAa1a,EAAQoa,aAAanQ,EAAOqQ,GACzCA,EAAOlX,IAAI,UAEc,MAAlB6G,EAAM0B,UACb+O,GAAaJ,EAAOC,QACpBD,EAAOlX,IAAI,OAGXsX,GAAa1a,EAAQoa,aAAanQ,EAAOqQ,GAI7C,MAAOI,GAGP,MAAwB,KAApBL,EAAQ1O,UAA2D,IAAxC3L,EAAQsB,6BAM9BgZ,EAAOC,QAKX,IASTva,EAAQsB,2BAA6B,WACnC,GAAkB,IAAduZ,EAAkB,CACpB,GAAIC,GAAK,EACT,IAAyB,+BAArBC,UAAUC,QACd,CACE,GAAIC,GAAKF,UAAUG,UACfC,EAAM,GAAI1D,QAAO,6BACF,OAAf0D,EAAGC,KAAKH,KACVH,EAAKO,WAAY5D,OAAO6D,KAI5BT,EAAaC,EAGf,MAAOD,IAOT7a,EAAQub,UAAY,WAClB,MAAkD,IAA1CR,UAAUG,UAAU9Y,QAAQ,WAQtC,IAAIyY,GAAa,EAWjB7a,GAAQ6N,iBAAmB,SAA0BwM,EAASvR,EAAQ0S,EAAUC,GAC9E,GAAIpB,EAAQxM,iBASV,MARmB5H,UAAfwV,IACFA,GAAa,GAEA,eAAX3S,GAA2B9I,EAAQub,cACrCzS,EAAS,kBAGXuR,EAAQxM,iBAAiB/E,EAAQ0S,EAAUC,GACpCD,CACF,IAAInB,EAAQqB,YAAa,CAE9B,GAAIC,GAAI,WACN,MAAOH,GAAS7a,KAAK0Z,EAASpK,OAAOtD,OAGvC,OADA0N,GAAQqB,YAAY,KAAO5S,EAAQ6S,GAC5BA,IAWX3b,EAAQsQ,oBAAsB,SAA6B+J,EAASvR,EAAQ0S,EAAUC,GAChFpB,EAAQ/J,qBACSrK,SAAfwV,IACFA,GAAa,GAEA,eAAX3S,GAA2B9I,EAAQub,cACrCzS,EAAS,kBAGXuR,EAAQ/J,oBAAoBxH,EAAQ0S,EAAUC,IACrCpB,EAAQuB,aAEjBvB,EAAQuB,YAAY,KAAO9S,EAAQ0S,IASvCxb,EAAQ6b,UAAY,QAASA,GAAUC,GACrC,GAAIzW,GAAM0W,CAEV,IAAwB,IAApBD,EAASxZ,OACX,QAIF,IAAI0U,GAAQ8E,EAAS9E,MAAM,WAC3B,IAAIA,EACF3R,EAAO2R,EAAM,GACb+E,EAAYD,EAASE,OAAO3W,EAAK/C,OAAS,OAEvC,CAAA,GAAoB,MAAhBwZ,EAAS,GAchB,KAAM,IAAIG,aAAY,uBAZtB,IAAIlM,GAAM+L,EAAS1Z,QAAQ,IAC3B,IAAY,KAAR2N,EACF,KAAM,IAAIkM,aAAY,+BAExB,IAAY,IAARlM,EACF,KAAM,IAAIkM,aAAY,yBAGxB5W,GAAO3B,KAAKF,MAAMsY,EAASI,UAAU,EAAGnM,IACxCgM,EAAYD,EAASE,OAAOjM,EAAM,GAMpC,OAAQ1K,GAAMuE,OAAOiS,EAAUE,KAQjC/b,EAAQuJ,mBAAqB,SAAUhI,GACrC,GAAsB,SAAlBA,EAAM4a,SAAsB1L,MAAMnL,QAAQ/D,EAAMqD,QAAS,CAC3D,GAAIwX,GAAQ7a,EAAMqD,MAClB,IAAIwX,EAAO,CAKT,GAJAA,EAAQA,EAAM9S,IAAI,SAAU9B,GAC1B,MAAO9D,MAAKC,UAAU6D,KAGpB4U,EAAM9Z,OAAS,EAAG,CACpB,GAAI+Z,IAAQ,KAAOD,EAAM9Z,OAAS,GAAK,YACvC8Z,GAAQA,EAAMxQ,MAAM,EAAG,GACvBwQ,EAAM9J,KAAK+J,GAEb9a,EAAM2I,QAAU,8BAAgCkS,EAAMvG,KAAK,OAI/D,MAAOtU,IASTvB,EAAQsc,WAAa,SAAUtS,EAAQC,EAAOW,GAC5C,GAAI2R,GAAqBtW,SAAX2E,EAAuBA,EAAS,CAC9C,OAAOX,GAAMgO,KAASsE,GAAWvS,EAAOiO,MACjChO,EAAMuS,MAASD,GAAWvS,EAAOwS,OACjCvS,EAAMM,IAASgS,GAAWvS,EAAOO,KACjCN,EAAMU,OAAS4R,GAAWvS,EAAOW,QAiB1C3K,EAAQ+G,SAAW,SAAkB0V,EAAMC,EAAMC,GAC/C,GAAIC,EACJ,OAAO,YACL,GAAIC,GAAUzc,KAAM0c,EAAOza,UACvB0a,EAAQ,WACVH,EAAU,KACLD,GAAWF,EAAKO,MAAMH,EAASC,IAElCG,EAAUN,IAAcC,CAC5BxR,cAAawR,GACbA,EAAUnQ,WAAWsQ,EAAOL,GACxBO,GAASR,EAAKO,MAAMH,EAASC,KAYrC9c,EAAQkd,SAAW,SAAkBC,EAASC,GAM5C,IALA,GAAIC,GAAMD,EAAQ9a,OACdwN,EAAQ,EACRwN,EAASH,EAAQ7a,OACjBib,EAASH,EAAQ9a,OAEd8a,EAAQlH,OAAOpG,KAAWqN,EAAQjH,OAAOpG,IACrCuN,EAARvN,GACDA,GAGF,MAAOsN,EAAQlH,OAAOqH,EAAS,KAAOJ,EAAQjH,OAAOoH,EAAS,IAC3DC,EAASzN,GAASwN,EAAS,GAC5BC,IACAD,GAGF,QAAQxN,MAAOA,EAAOC,IAAKwN,KAMxB,SAAStd,EAAQD,EAASM,GAO/B,QAASkF,KACPpF,KAAKod,QAAS,EAOhBhY,EAAYzC,UAAU0a,UAAY,SAAUhW,GACtCrH,KAAKod,SAILpd,KAAKqH,MAAQA,IAEXrH,KAAKqH,MACPrH,KAAKqH,KAAKiW,cAAa,GAIzBtd,KAAKqH,KAAOA,EACZrH,KAAKqH,KAAKiW,cAAa,IAIzBtd,KAAKud,uBAOPnY,EAAYzC,UAAU6a,YAAc,WAClC,IAAIxd,KAAKod,OAAT,CAIA,GAAIlT,GAAKlK,IACLA,MAAKqH,OACPrH,KAAKud,qBAKLvd,KAAKyd,iBAAmBpR,WAAW,WACjCnC,EAAG7C,KAAKiW,cAAa,GACrBpT,EAAG7C,KAAOxB,OACVqE,EAAGuT,iBAAmB5X,QACrB,MAQPT,EAAYzC,UAAU4a,mBAAqB,WACrCvd,KAAKyd,mBACPzS,aAAahL,KAAKyd,kBAClBzd,KAAKyd,iBAAmB5X,SAQ5BT,EAAYzC,UAAU+a,KAAO,WAC3B1d,KAAKod,QAAS,GAMhBhY,EAAYzC,UAAUgb,OAAS,WAC7B3d,KAAKod,QAAS,GAGhBvd,EAAOD,QAAUwF,GAKZ,SAASvF,EAAQD,EAASM,GAS/B,QAASmF,GAASsG,GAChB3L,KAAK2L,OAASA,EACd3L,KAAKgE,QAGLhE,KAAK4d,SACHC,WACEhQ,KAAQ,SAAU3G,GAChBA,EAAOG,KAAKQ,YAAYX,EAAO4W,WAEjC/P,KAAQ,SAAU7G,GAChBA,EAAOG,KAAKQ,YAAYX,EAAO6W,YAGnCC,WACEnQ,KAAQ,SAAU3G,GAChBA,EAAOG,KAAK4W,YAAY/W,EAAO4W,WAEjC/P,KAAQ,SAAU7G,GAChBA,EAAOG,KAAK4W,YAAY/W,EAAO6W,YAGnCG,YACErQ,KAAQ,SAAU3G,GAChBA,EAAOG,KAAK6W,WAAWhX,EAAOiX,UAEhCpQ,KAAQ,SAAU7G,GAChBA,EAAOG,KAAK6W,WAAWhX,EAAOkX,WAIlCC,aACExQ,KAAQ,SAAU3G,GAChBA,EAAOnB,MAAMjE,QAAQ,SAAUuF,GAC7BH,EAAO0C,OAAOrD,YAAYc,MAG9B0G,KAAQ,SAAU7G,GAChBA,EAAOnB,MAAMjE,QAAQ,SAAUuF,GAC7BH,EAAO0C,OAAOnC,YAAYJ,OAIhCiX,mBACEzQ,KAAQ,SAAU3G,GAChBA,EAAOnB,MAAMjE,QAAQ,SAAUuF,GAC7BH,EAAO0C,OAAOrD,YAAYc,MAG9B0G,KAAQ,SAAU7G,GAChBA,EAAOnB,MAAMjE,QAAQ,SAAUuF,GAC7BH,EAAO0C,OAAO2U,aAAalX,EAAMH,EAAOsX,gBAI9CC,kBACE5Q,KAAQ,SAAU3G,GAChBA,EAAOnB,MAAMjE,QAAQ,SAAUuF,GAC7BH,EAAO0C,OAAOrD,YAAYc,MAG9B0G,KAAQ,SAAU7G,GAChB,GAAIwX,GAAYxX,EAAOwX,SACvBxX,GAAOnB,MAAMjE,QAAQ,SAAUuF,GAC7BH,EAAO0C,OAAO+U,YAAYzX,EAAOG,KAAMqX,GACvCA,EAAYrX,MAIlBuX,aACE/Q,KAAQ,SAAU3G,GAChB,GAAI0C,GAAS1C,EAAO0C,OAChB4U,EAAa5U,EAAOgH,OAAO1J,EAAOmR,QAAUzO,EAAOiV,MACvD3X,GAAOnB,MAAMjE,QAAQ,SAAUuF,GAC7BuC,EAAO2U,aAAalX,EAAMmX,MAG9BzQ,KAAQ,SAAU7G,GAChBA,EAAOnB,MAAMjE,QAAQ,SAAUuF,GAC7BH,EAAO0C,OAAOrD,YAAYc,OAIhCyX,gBACEjR,KAAQ,SAAU3G,GAChBA,EAAOnB,MAAMjE,QAAQ,SAAUuF,GAC7BH,EAAO0C,OAAOrD,YAAYc,MAG9B0G,KAAQ,SAAU7G,GAChB,GAAIwX,GAAYxX,EAAOwX,SACvBxX,GAAOnB,MAAMjE,QAAQ,SAAUuF,GAC7BH,EAAO0C,OAAO+U,YAAYtX,EAAMqX,GAChCA,EAAYrX,MAIlB0X,WACElR,KAAQ,SAAU3G,GAChBA,EAAOnB,MAAMjE,QAAQ,SAAUuF,GAC7BH,EAAO8X,cAAcpV,OAAOqV,WAAW5X,EAAMH,EAAO8X,kBAGxDjR,KAAQ,SAAU7G,GAChBA,EAAOnB,MAAMjE,QAAQ,SAAUuF,GAC7BH,EAAOgY,cAActV,OAAOqV,WAAW5X,EAAMH,EAAOgY,mBAK1DC,MACEtR,KAAQ,SAAU3G,GAChB,GAAIG,GAAOH,EAAOG,IAClBA,GAAK+X,aACL/X,EAAK8X,KAAOjY,EAAOmY,QACnBhY,EAAKuJ,OAAS1J,EAAOoY,UACrBjY,EAAKkY,cAEPxR,KAAQ,SAAU7G,GAChB,GAAIG,GAAOH,EAAOG,IAClBA,GAAK+X,aACL/X,EAAK8X,KAAOjY,EAAOsY,QACnBnY,EAAKuJ,OAAS1J,EAAOuY,UACrBpY,EAAKkY,gBAlIFrf,EAAoB,EA+I/BmF,GAAQ1C,UAAUnB,SAAW,aAa7B6D,EAAQ1C,UAAUgG,IAAM,SAAUD,EAAQxB,GACxClH,KAAKqY,QACLrY,KAAKkG,QAAQlG,KAAKqY,QAChB3P,OAAUA,EACVxB,OAAUA,EACVwY,UAAa,GAAIC,OAIf3f,KAAKqY,MAAQrY,KAAKkG,QAAQhE,OAAS,GACrClC,KAAKkG,QAAQoS,OAAOtY,KAAKqY,MAAQ,EAAGrY,KAAKkG,QAAQhE,OAASlC,KAAKqY,MAAQ,GAIzErY,KAAKwB,YAMP6D,EAAQ1C,UAAUqB,MAAQ,WACxBhE,KAAKkG,WACLlG,KAAKqY,MAAQ,GAGbrY,KAAKwB,YAOP6D,EAAQ1C,UAAUuL,QAAU,WAC1B,MAAQlO,MAAKqY,OAAS,GAOxBhT,EAAQ1C,UAAUwL,QAAU,WAC1B,MAAQnO,MAAKqY,MAAQrY,KAAKkG,QAAQhE,OAAS,GAM7CmD,EAAQ1C,UAAUkL,KAAO,WACvB,GAAI7N,KAAKkO,UAAW,CAClB,GAAIsJ,GAAMxX,KAAKkG,QAAQlG,KAAKqY,MAC5B,IAAIb,EAAK,CACP,GAAI9O,GAAS1I,KAAK4d,QAAQpG,EAAI9O,OAC1BA,IAAUA,EAAOmF,MACnBnF,EAAOmF,KAAK2J,EAAItQ,QACZsQ,EAAItQ,OAAO0Y,cACb5f,KAAK2L,OAAOV,aAAauM,EAAItQ,OAAO0Y,eAItCxe,QAAQD,MAAM,GAAIJ,OAAM,mBAAqByW,EAAI9O,OAAS,MAG9D1I,KAAKqY,QAGLrY,KAAKwB,aAOT6D,EAAQ1C,UAAUoL,KAAO,WACvB,GAAI/N,KAAKmO,UAAW,CAClBnO,KAAKqY,OAEL,IAAIb,GAAMxX,KAAKkG,QAAQlG,KAAKqY,MAC5B,IAAIb,EAAK,CACP,GAAI9O,GAAS1I,KAAK4d,QAAQpG,EAAI9O,OAC1BA,IAAUA,EAAOqF,MACnBrF,EAAOqF,KAAKyJ,EAAItQ,QACZsQ,EAAItQ,OAAO2Y,cACb7f,KAAK2L,OAAOV,aAAauM,EAAItQ,OAAO2Y,eAItCze,QAAQD,MAAM,GAAIJ,OAAM,mBAAqByW,EAAI9O,OAAS,MAK9D1I,KAAKwB,aAIT3B,EAAOD,QAAUyF,GAKZ,SAASxF,EAAQD,EAASM,GAS/B,QAASoF,GAAWqG,EAAQ/K,GAC1B,GAAI8G,GAAY1H,IAEhBA,MAAK2L,OAASA,EACd3L,KAAKwc,QAAU3W,OACf7F,KAAK8f,MAAQ,IACb9f,KAAK+f,SAAWla,OAEhB7F,KAAK0F,OACL1F,KAAK0F,IAAI9E,UAAYA,CAErB,IAAIqG,GAAQwF,SAASC,cAAc,QACnC1M,MAAK0F,IAAIuB,MAAQA,EACjBA,EAAM0F,UAAY,oBAClB/L,EAAU6G,YAAYR,EACtB,IAAIkB,GAAQsE,SAASC,cAAc,QACnC1M,MAAK0F,IAAIyC,MAAQA,EACjBlB,EAAMQ,YAAYU;AAClB,GAAI6X,GAAKvT,SAASC,cAAc,KAChCvE,GAAMV,YAAYuY,EAElB,IAAIC,GAAKxT,SAASC,cAAc,KAChCsT,GAAGvY,YAAYwY,EACf,IAAI3X,GAAUmE,SAASC,cAAc,MACrC1M,MAAK0F,IAAI4C,QAAUA,EACnBA,EAAQqE,UAAY,qBACpBsT,EAAGxY,YAAYa,GAEf2X,EAAKxT,SAASC,cAAc,MAC5BsT,EAAGvY,YAAYwY,EACf,IAAIC,GAAWzT,SAASC,cAAc,MACtC1M,MAAK0F,IAAIqC,MAAQmY,EACjBA,EAASvT,UAAY,mBACrBuT,EAAStS,MAAQ,2BACjBqS,EAAGxY,YAAYyY,EAGf,IAAIC,GAAa1T,SAASC,cAAc,QACxCwT,GAASzY,YAAY0Y,EACrB,IAAIC,GAAc3T,SAASC,cAAc,QACzCyT,GAAW1Y,YAAY2Y,GACvBJ,EAAKvT,SAASC,cAAc,MAC5B0T,EAAY3Y,YAAYuY,EAExB,IAAIK,GAAgB5T,SAASC,cAAc,SAC3C2T,GAAc1T,UAAY,qBAC1BsT,EAAKxT,SAASC,cAAc,MAC5BuT,EAAGxY,YAAY4Y,GACfL,EAAGvY,YAAYwY,EAEf,IAAIzZ,GAASiG,SAASC,cAAc,QACpC1M,MAAK0F,IAAIc,OAASA,EAClBA,EAAOuG,QAAU,SAAUR,GACzB7E,EAAU4Y,iBAAiB/T,IAE7B/F,EAAOwG,SAAW,SAAUT,GAC1B7E,EAAU6Y,aAEZ/Z,EAAOyG,UAAY,SAAUV,GAC3B7E,EAAU2G,WAAW9B,IAEvB/F,EAAO0G,QAAU,SAAUX,GACzB7E,EAAU8Y,SAASjU,IAErB8T,EAAczT,QAAU,SAAUL,GAChC/F,EAAO0E,UAIT+U,EAAKxT,SAASC,cAAc,MAC5BuT,EAAGxY,YAAYjB,GACfwZ,EAAGvY,YAAYwY,EAEf,IAAIQ,GAAahU,SAASC,cAAc,SACxC+T,GAAW7S,MAAQ,sBACnB6S,EAAW9T,UAAY,kBACvB8T,EAAW7T,QAAU,WACnBlF,EAAU+J,QAEZwO,EAAKxT,SAASC,cAAc,MAC5BuT,EAAGxY,YAAYgZ,GACfT,EAAGvY,YAAYwY,EAEf,IAAIS,GAAiBjU,SAASC,cAAc,SAC5CgU,GAAe9S,MAAQ,gCACvB8S,EAAe/T,UAAY,sBAC3B+T,EAAe9T,QAAU,WACvBlF,EAAU8J,YAEZyO,EAAKxT,SAASC,cAAc,MAC5BuT,EAAGxY,YAAYiZ,GACfV,EAAGvY,YAAYwY,GAQjB3a,EAAU3C,UAAU8O,KAAO,SAAS3J,GAClC,GAAoBjC,QAAhB7F,KAAKsI,QAAsB,CAC7B,GAAI+P,GAA6BxS,QAApB7F,KAAK2gB,YAA4B3gB,KAAK2gB,YAAc,EAAI,CACjEtI,GAAQrY,KAAKsI,QAAQpG,OAAS,IAChCmW,EAAQ,GAEVrY,KAAK4gB,iBAAiBvI,EAAOvQ,KASjCxC,EAAU3C,UAAU6O,SAAW,SAAS1J,GACtC,GAAoBjC,QAAhB7F,KAAKsI,QAAsB,CAC7B,GAAI2D,GAAMjM,KAAKsI,QAAQpG,OAAS,EAC5BmW,EAA6BxS,QAApB7F,KAAK2gB,YAA4B3gB,KAAK2gB,YAAc,EAAI1U,CACzD,GAARoM,IACFA,EAAQpM,GAEVjM,KAAK4gB,iBAAiBvI,EAAOvQ,KAWjCxC,EAAU3C,UAAUie,iBAAmB,SAASvI,EAAOvQ,GAErD,GAAI9H,KAAK6gB,aAAc,CACrB,GAAIC,GAAW9gB,KAAK6gB,aAAaxZ,KAC7B0Z,EAAW/gB,KAAK6gB,aAAanJ,IACjB,UAAZqJ,QACKD,GAASE,wBAGTF,GAASG,kBAElBH,EAASI,YAGX,IAAKlhB,KAAKsI,UAAYtI,KAAKsI,QAAQ+P,GAIjC,MAFArY,MAAK2gB,YAAc9a,YACnB7F,KAAK6gB,aAAehb,OAItB7F,MAAK2gB,YAActI,CAGnB,IAAIhR,GAAOrH,KAAKsI,QAAQtI,KAAK2gB,aAAatZ,KACtCqQ,EAAO1X,KAAKsI,QAAQtI,KAAK2gB,aAAajJ,IAC9B,UAARA,EACFrQ,EAAK2Z,mBAAoB,EAGzB3Z,EAAK4Z,mBAAoB,EAE3BjhB,KAAK6gB,aAAe7gB,KAAKsI,QAAQtI,KAAK2gB,aACtCtZ,EAAK6Z,YAGL7Z,EAAKoE,SAAS,WACR3D,GACFT,EAAKS,MAAM4P,MASjBpS,EAAU3C,UAAUwe,YAAc,WACZtb,QAAhB7F,KAAKwc,UACPxR,aAAahL,KAAKwc,eACXxc,MAAKwc,UAUhBlX,EAAU3C,UAAU2d,iBAAmB,SAAU/T,GAG/CvM,KAAKmhB,aACL,IAAIzZ,GAAY1H,IAChBA,MAAKwc,QAAUnQ,WAAW,SAAUE,GAClC7E,EAAU6Y,aAEZvgB,KAAK8f,QAUPxa,EAAU3C,UAAU4d,UAAY,SAAUa,GACxCphB,KAAKmhB,aAEL,IAAI/Z,GAAQpH,KAAK0F,IAAIc,OAAOY,MACxBiB,EAAQjB,EAAMlF,OAAS,EAAKkF,EAAQvB,MACxC,IAAIwC,GAAQrI,KAAK+f,UAAYqB,EAO3B,GALAphB,KAAK+f,SAAW1X,EAChBrI,KAAKsI,QAAUtI,KAAK2L,OAAOnF,OAAO6B,GAClCrI,KAAK4gB,iBAAiB/a,QAGVA,QAARwC,EAAmB,CACrB,GAAIgZ,GAAcrhB,KAAKsI,QAAQpG,MAC/B,QAAQmf,GACN,IAAK,GAAGrhB,KAAK0F,IAAI4C,QAAQkN,UAAY,iBAAmB,MACxD,KAAK,GAAGxV,KAAK0F,IAAI4C,QAAQkN,UAAY,eAAiB,MACtD,SAASxV,KAAK0F,IAAI4C,QAAQkN,UAAY6L,EAAc,qBAItDrhB,MAAK0F,IAAI4C,QAAQkN,UAAY,IAUnClQ,EAAU3C,UAAU0L,WAAa,SAAU9B,GACzC,GAAI0E,GAAS1E,EAAM2E,KACL,KAAVD,GACFjR,KAAK0F,IAAIc,OAAOY,MAAQ,GACxBpH,KAAKugB,YACLhU,EAAMO,iBACNP,EAAMmF,mBAEW,IAAVT,IACH1E,EAAM6E,QAERpR,KAAKugB,WAAU,GAERhU,EAAM8E,SAEbrR,KAAKwR,WAILxR,KAAKyR,OAEPlF,EAAMO,iBACNP,EAAMmF,oBASVpM,EAAU3C,UAAU6d,SAAW,SAAUjU,GACvC,GAAI0E,GAAS1E,EAAM4E,OACL,KAAVF,GAA0B,IAAVA,GAClBjR,KAAKsgB,iBAAiB/T,IAO1BjH,EAAU3C,UAAUqB,MAAQ,WAC1BhE,KAAK0F,IAAIc,OAAOY,MAAQ,GACxBpH,KAAKugB,aAGP1gB,EAAOD,QAAU0F,GAKZ,SAASzF,EAAQD,EAASM,GAa/B,QAASqF,GAAa0M,EAAOpR,GAsC3B,QAASygB,GAAiBC,EAAMC,EAAUvP,GACxCA,EAAMnQ,QAAQ,SAAU2f,GACtB,GAAiB,aAAbA,EAAK1X,KAAqB,CAE5B,GAAI2X,GAAYjV,SAASC,cAAc,MACvCgV,GAAU/U,UAAY,uBACtBgV,EAAKlV,SAASC,cAAc,MAC5BiV,EAAGla,YAAYia,GACfH,EAAK9Z,YAAYka,OAEd,CACH,GAAIC,MAGAD,EAAKlV,SAASC,cAAc,KAChC6U,GAAK9Z,YAAYka,EAGjB,IAAIE,GAASpV,SAASC,cAAc,SAepC,IAdAmV,EAAOlV,UAAY8U,EAAK9U,UACxBiV,EAAQC,OAASA,EACbJ,EAAK7T,QACPiU,EAAOjU,MAAQ6T,EAAK7T,OAElB6T,EAAKtP,QACP0P,EAAOjV,QAAU,WACf1C,EAAG4X,OACHL,EAAKtP,UAGTwP,EAAGla,YAAYoa,GAGXJ,EAAKM,QAAS,CAEhB,GAAIC,GAAUvV,SAASC,cAAc,MACrCsV,GAAQrV,UAAY,kBACpBkV,EAAOpa,YAAYua,GACnBH,EAAOpa,YAAYgF,SAAS4H,eAAeoN,EAAKpZ,MAEhD,IAAI4Z,EACJ,IAAIR,EAAKtP,MAAO,CAEd0P,EAAOlV,WAAa,qBAEpB,IAAIuV,GAAezV,SAASC,cAAc,SAC1CkV,GAAQM,aAAeA,EACvBA,EAAavV,UAAY,oBACzBuV,EAAa1M,UAAY,wCACzBmM,EAAGla,YAAYya,GACXT,EAAKU,eACPD,EAAatU,MAAQ6T,EAAKU,cAG5BF,EAAgBC,MAEb,CAEH,GAAIE,GAAY3V,SAASC,cAAc,MACvC0V,GAAUzV,UAAY,oBACtBkV,EAAOpa,YAAY2a,GAEnBH,EAAgBJ,EAIlBI,EAAcrV,QAAU,WACtB1C,EAAGmY,cAAcT,GACjBK,EAAcna,QAIhB,IAAIwa,KACJV,GAAQW,SAAWD,CACnB,IAAIE,GAAK/V,SAASC,cAAc,KAChCkV,GAAQY,GAAKA,EACbA,EAAG7V,UAAY,kBACf6V,EAAGlP,MAAMjJ,OAAS,IAClBsX,EAAGla,YAAY+a,GACflB,EAAgBkB,EAAIF,EAAab,EAAKM,aAItCF,GAAOrM,UAAY,sCAAwCiM,EAAKpZ,IAGlEmZ,GAAStP,KAAK0P,MA3HpB5hB,KAAK0F,MAEL,IAAIwE,GAAKlK,KACL0F,EAAM1F,KAAK0F,GACf1F,MAAK+R,OAASlM,OACd7F,KAAKiS,MAAQA,EACbjS,KAAKyiB,kBACLziB,KAAK4F,UAAYC,OACjB7F,KAAKgS,QAAUnR,EAAUA,EAAQyR,MAAQzM,MAGzC,IAAInG,GAAO+M,SAASC,cAAc,MAClChN,GAAKiN,UAAY,8BACjBjH,EAAIhG,KAAOA,CAGX,IAAIuI,GAAOwE,SAASC,cAAc,MAClCzE,GAAK0E,UAAY,yBACjBjH,EAAIuC,KAAOA,EACXvI,EAAK+H,YAAYQ,EAGjB,IAAIsZ,GAAO9U,SAASC,cAAc,KAClC6U,GAAK5U,UAAY,kBACjB1E,EAAKR,YAAY8Z,GACjB7b,EAAI6b,KAAOA,EACX7b,EAAIuM,QAGJ,IAAIyQ,GAAcjW,SAASC,cAAc,SACzChH,GAAIgd,YAAcA,CAClB,IAAIf,GAAKlV,SAASC,cAAc,KAChCiV,GAAGrO,MAAMqP,SAAW,SACpBhB,EAAGrO,MAAMjJ,OAAS,IAClBsX,EAAGla,YAAYib,GACfnB,EAAK9Z,YAAYka,GA4FjBL,EAAgBC,EAAMvhB,KAAK0F,IAAIuM,MAAOA,GAKtCjS,KAAK4iB,UAAY,EACjB3Q,EAAMnQ,QAAQ,SAAU2f,GACtB,GAAIpX,GAAqE,IAA3D4H,EAAM/P,QAAUuf,EAAKM,QAAUN,EAAKM,QAAQ7f,OAAS,GACnEgI,GAAG0Y,UAAY7W,KAAKE,IAAI/B,EAAG0Y,UAAWvY,KAnJ1C,GAAIpJ,GAAOf,EAAoB,EA4J/BqF,GAAY5C,UAAUkgB,mBAAqB,WACzC,GAAIC,MACA5Y,EAAKlK,IAiBT,OAhBAA,MAAK0F,IAAIuM,MAAMnQ,QAAQ,SAAU2f,GAC/BqB,EAAQ5Q,KAAKuP,EAAKI,QACdJ,EAAKS,cACPY,EAAQ5Q,KAAKuP,EAAKS,cAEhBT,EAAKc,UAAYd,GAAQvX,EAAG6Y,cAC9BtB,EAAKc,SAASzgB,QAAQ,SAAUkhB,GAC9BF,EAAQ5Q,KAAK8Q,EAAQnB,QACjBmB,EAAQd,cACVY,EAAQ5Q,KAAK8Q,EAAQd,kBAOtBY,GAITvd,EAAY0d,YAAcpd,OAQ1BN,EAAY5C,UAAU4P,KAAO,SAAUR,EAAQmR,GAC7CljB,KAAK8hB,MAGL,IAAIqB,IAAY,CAChB,IAAID,EAAe,CACjB,GAAIE,GAAarR,EAAO6F,wBACpByL,EAAcH,EAActL,uBAE5BwL,GAAW7Y,OAASvK,KAAK4iB,UAAYS,EAAY9Y,QAG5C6Y,EAAWjZ,IAAMnK,KAAK4iB,UAAYS,EAAYlZ,MAErDgZ,GAAY,GAQhB,GAAIA,EAAW,CAEb,GAAIG,GAAevR,EAAOwR,YAC1BvjB,MAAK0F,IAAIuC,KAAKqL,MAAMuE,KAAO,MAC3B7X,KAAK0F,IAAIuC,KAAKqL,MAAMnJ,IAAMmZ,EAAe,KACzCtjB,KAAK0F,IAAIuC,KAAKqL,MAAM/I,OAAS,OAI7BvK,MAAK0F,IAAIuC,KAAKqL,MAAMuE,KAAO,MAC3B7X,KAAK0F,IAAIuC,KAAKqL,MAAMnJ,IAAM,GAC1BnK,KAAK0F,IAAIuC,KAAKqL,MAAM/I,OAAS,KAI/B,IAAIX,GAASmI,EAAOzL,UACpBsD,GAAO2U,aAAave,KAAK0F,IAAIhG,KAAMkK,EAAOiQ,WAG1C,IAAI3P,GAAKlK,KACLuhB,EAAOvhB,KAAK0F,IAAI6b,IACpBvhB,MAAKyiB,eAAee,UAAYviB,EAAKwM,iBAAiBoC,OAAQ,YAAa,SAAUtD,GAEnF,GAAIM,GAASN,EAAMM,MACdA,IAAU0U,GAAUrX,EAAGuZ,WAAW5W,EAAQ0U,KAC7CrX,EAAG4X,OACHvV,EAAMmF,kBACNnF,EAAMO,oBAGV9M,KAAKyiB,eAAeiB,QAAUziB,EAAKwM,iBAAiBoC,OAAQ,UAAW,SAAUtD,GAC/ErC,EAAGmE,WAAW9B,KAIhBvM,KAAK4F,UAAY3E,EAAKoK,eACtBrL,KAAK+R,OAASA,EACd1F,WAAW,WACTnC,EAAGxE,IAAIgd,YAAY5a,SAClB,GAECvC,EAAY0d,aACd1d,EAAY0d,YAAYnB,OAE1Bvc,EAAY0d,YAAcjjB,MAM5BuF,EAAY5C,UAAUmf,KAAO,WAEvB9hB,KAAK0F,IAAIhG,KAAK4G,aAChBtG,KAAK0F,IAAIhG,KAAK4G,WAAWC,YAAYvG,KAAK0F,IAAIhG,MAC1CM,KAAKgS,SACPhS,KAAKgS,UAMT,KAAK,GAAIvO,KAAQzD,MAAKyiB,eACpB,GAAIziB,KAAKyiB,eAAehc,eAAehD,GAAO,CAC5C,GAAIkgB,GAAK3jB,KAAKyiB,eAAehf,EACzBkgB,IACF1iB,EAAKiP,oBAAoBL,OAAQpM,EAAMkgB,SAElC3jB,MAAKyiB,eAAehf,GAI3B8B,EAAY0d,aAAejjB,OAC7BuF,EAAY0d,YAAcpd,SAU9BN,EAAY5C,UAAU0f,cAAgB,SAAUT,GAC9C,GAAI1X,GAAKlK,KACL4jB,EAAkBhC,GAAW5hB,KAAK+iB,aAGlCA,EAAe/iB,KAAK+iB,YAcxB,IAbIA,IAEFA,EAAaP,GAAGlP,MAAMjJ,OAAS,IAC/B0Y,EAAaP,GAAGlP,MAAMuQ,QAAU,GAChCxX,WAAW,WACLnC,EAAG6Y,cAAgBA,IACrBA,EAAaP,GAAGlP,MAAMwQ,QAAU,GAChC7iB,EAAKmX,gBAAgB2K,EAAaP,GAAGlc,WAAY,yBAElD,KACHtG,KAAK+iB,aAAeld,SAGjB+d,EAAgB,CACnB,GAAIpB,GAAKZ,EAAQY,EACjBA,GAAGlP,MAAMwQ,QAAU,OACNtB,GAAGlY,YAChB+B,YAAW,WACLnC,EAAG6Y,cAAgBnB,IACrBY,EAAGlP,MAAMjJ,OAAiC,GAAvBmY,EAAG/J,WAAWvW,OAAe,KAChDsgB,EAAGlP,MAAMuQ,QAAU,aAEpB,GACH5iB,EAAKgX,aAAauK,EAAGlc,WAAY,uBACjCtG,KAAK+iB,aAAenB,IASxBrc,EAAY5C,UAAU0L,WAAa,SAAU9B,GAC3C,GAGIuW,GAASiB,EAAaC,EAAYC,EAHlCpX,EAASN,EAAMM,OACfoE,EAAS1E,EAAM2E,MACfI,GAAU,CAGA,KAAVL,GAIEjR,KAAK4F,WACP3E,EAAKgK,aAAajL,KAAK4F,WAErB5F,KAAK+R,QACP/R,KAAK+R,OAAOjK,QAGd9H,KAAK8hB,OAELxQ,GAAU,GAEO,GAAVL,EACF1E,EAAM8E,UAUTyR,EAAU9iB,KAAK6iB,qBACfkB,EAAcjB,EAAQ9gB,QAAQ6K,GACX,GAAfkX,IAEFjB,EAAQA,EAAQ5gB,OAAS,GAAG4F,QAC5BwJ,GAAU,KAdZwR,EAAU9iB,KAAK6iB,qBACfkB,EAAcjB,EAAQ9gB,QAAQ6K,GAC1BkX,GAAejB,EAAQ5gB,OAAS,IAElC4gB,EAAQ,GAAGhb,QACXwJ,GAAU,IAaG,IAAVL,GACiB,qBAApBpE,EAAOF,YACTmW,EAAU9iB,KAAK6iB,qBACfkB,EAAcjB,EAAQ9gB,QAAQ6K,GAC9BmX,EAAalB,EAAQiB,EAAc,GAC/BC,GACFA,EAAWlc,SAGfwJ,GAAU,GAEO,IAAVL,GACP6R,EAAU9iB,KAAK6iB,qBACfkB,EAAcjB,EAAQ9gB,QAAQ6K,GAC9BmX,EAAalB,EAAQiB,EAAc,GAC/BC,GAAsC,qBAAxBA,EAAWrX,YAE3BqX,EAAalB,EAAQiB,EAAc,IAEhCC,IAEHA,EAAalB,EAAQA,EAAQ5gB,OAAS,IAEpC8hB,GACFA,EAAWlc,QAEbwJ,GAAU,GAEO,IAAVL,GACP6R,EAAU9iB,KAAK6iB,qBACfkB,EAAcjB,EAAQ9gB,QAAQ6K,GAC9BoX,EAAanB,EAAQiB,EAAc,GAC/BE,GAAsC,qBAAxBA,EAAWtX,WAC3BsX,EAAWnc,QAEbwJ,GAAU,GAEO,IAAVL,IACP6R,EAAU9iB,KAAK6iB,qBACfkB,EAAcjB,EAAQ9gB,QAAQ6K,GAC9BoX,EAAanB,EAAQiB,EAAc,GAC/BE,GAAsC,qBAAxBA,EAAWtX,YAE3BsX,EAAanB,EAAQiB,EAAc,IAEhCE,IAEHA,EAAanB,EAAQ,IAEnBmB,IACFA,EAAWnc,QACXwJ,GAAU,GAEZA,GAAU,GAIRA,IACF/E,EAAMmF,kBACNnF,EAAMO,mBAUVvH,EAAY5C,UAAU8gB,WAAa,SAAU5Z,EAAOD,GAElD,IADA,GAAIvH,GAAIwH,EAAMvD,WACPjE,GAAG,CACR,GAAIA,GAAKuH,EACP,OAAO,CAETvH,GAAIA,EAAEiE,WAGR,OAAO,GAGTzG,EAAOD,QAAU2F,GAKZ,SAAS1F,EAAQD,EAASM,GAiB/B,QAASsF,GAAMmG,EAAQzE,GAErBlH,KAAK2L,OAASA,EACd3L,KAAK0F,OACL1F,KAAKkkB,UAAW,EAEbhd,GAAWA,YAAkBtF,SAC9B5B,KAAKmkB,SAASjd,EAAOC,MAAOD,EAAOkd,eACnCpkB,KAAKiV,SAAS/N,EAAOE,MAAOF,EAAO6C,QAGnC/J,KAAKmkB,SAAS,IACdnkB,KAAKiV,SAAS,OAGhBjV,KAAKqkB,wBAA0BpjB,EAAK0F,SAAS3G,KAAKskB,eAAe1d,KAAK5G,MAAOwF,EAAK7C,UAAUC,mBAC5F5C,KAAKukB,wBAA0BtjB,EAAK0F,SAAS3G,KAAKwkB,eAAe5d,KAAK5G,MAAOwF,EAAK7C,UAAUC,mBA/B9F,GAAI2C,GAAcrF,EAAoB,GAClCukB,EAAoBvkB,EAAoB,IACxCe,EAAOf,EAAoB,EAiC/BsF,GAAK7C,UAAUC,kBAAoB,IAMnC4C,EAAK7C,UAAU+hB,mBAAqB,WAMlC,GALA1kB,KAAKyB,UACH0F,OAAO,EACPC,OAAO,GAGLpH,KAAK2L,SACP3L,KAAKyB,SAAS0F,MAAqC,SAA7BnH,KAAK2L,OAAO9K,QAAQgC,KAC1C7C,KAAKyB,SAAS2F,MAAqC,SAA7BpH,KAAK2L,OAAO9K,QAAQgC,MAER,SAA7B7C,KAAK2L,OAAO9K,QAAQgC,MAAgD,SAA7B7C,KAAK2L,OAAO9K,QAAQgC,OACjB,kBAAnC7C,MAAK2L,OAAO9K,QAAQa,YAA4B,CAC1D,GAAID,GAAWzB,KAAK2L,OAAO9K,QAAQa,YACjCyF,MAAOnH,KAAKmH,MACZC,MAAOpH,KAAKoH,MACZud,KAAM3kB,KAAK4kB,iBAGW,kBAAbnjB,IACTzB,KAAKyB,SAAS0F,MAAQ1F,EACtBzB,KAAKyB,SAAS2F,MAAQ3F,IAGQ,iBAAnBA,GAAS0F,QAAqBnH,KAAKyB,SAAS0F,MAAQ1F,EAAS0F,OAC1C,iBAAnB1F,GAAS2F,QAAqBpH,KAAKyB,SAAS2F,MAAQ3F,EAAS2F,UAUhF5B,EAAK7C,UAAUiiB,cAAgB,WAG7B,IAFA,GAAIvd,GAAOrH,KACP2kB,KACGtd,GAAM,CACX,GAAIF,GAAsBtB,QAAdwB,EAAKF,MAAqBE,EAAKF,MAAQE,EAAKgR,KAC1CxS,UAAVsB,GACFwd,EAAKE,QAAQ1d,GAEfE,EAAOA,EAAKuC,OAEd,MAAO+a,IAQTnf,EAAK7C,UAAUyG,SAAW,SAAUsS,GAGlC,IAFA,GAAIiJ,GAAO1jB,EAAKwa,UAAUC,GACtBrU,EAAOrH,KACJqH,GAAQsd,EAAKziB,OAAS,GAAG,CAC9B,GAAI+C,GAAO0f,EAAKG,OAChB,IAAoB,gBAAT7f,GAAmB,CAC5B,GAAkB,UAAdoC,EAAK0C,KACP,KAAM,IAAIhJ,OAAM,kCAAoCkE,EAAO,qBAE7DoC,GAAOA,EAAKuJ,OAAO3L,OAEhB,CACH,GAAkB,WAAdoC,EAAK0C,KACP,KAAM,IAAIhJ,OAAM,yBAA2BkE,EAAO,sBAEpDoC,GAAOA,EAAKuJ,OAAOtH,OAAO,SAAUO,GAClC,MAAOA,GAAM1C,QAAUlC,IACtB,IAIP,MAAOoC,IAQT7B,EAAK7C,UAAUgH,YAAc,WAG3B,IAFA,GAAIob,MACAnb,EAAS5J,KAAK4J,OACXA,GACLmb,EAAQF,QAAQjb,GAChBA,EAASA,EAAOA,MAElB,OAAOmb,IAWTvf,EAAK7C,UAAUkG,SAAW,SAAU1H,EAAO0I,GAEzC7J,KAAKoI,SAELpI,KAAKmB,MAAQA,CACb,IAAI6jB,GAAUhlB,KAAK0F,IAAIsf,OACvB,IAAI7jB,EAAO,CACJ6jB,IACHA,EAAUvY,SAASC,cAAc,MACjC1M,KAAK0F,IAAIsf,QAAUA,EACnBhlB,KAAK0F,IAAIuf,QAAQ3e,WAAWmB,YAAYud,GAG1C,IAAIE,GAAUzY,SAASC,cAAc,MACrCwY,GAAQvY,UAAY,sCACpBuY,EAAQzd,YAAYgF,SAAS4H,eAAelT,EAAM2I,SAElD,IAAI+X,GAASpV,SAASC,cAAc,SAqCpC,KApCAmV,EAAOlV,UAAY,0BACnBkV,EAAOpa,YAAYyd,GAGnBrD,EAAOtU,YAAcsU,EAAOsD,QAAU,WAEpC,IAAK,GADDC,IAAc,QAAS,QAAS,QAAS,QACpCpgB,EAAI,EAAGA,EAAIogB,EAAWljB,OAAQ8C,IAAK,CAC1C,GAAIqgB,GAAYD,EAAWpgB,EAC3BkgB,GAAQvY,UAAY,iCAAmC0Y,CAEvD,IAAIhC,GAAcrjB,KAAK2L,OAAO3E,QAAQ4Q,wBAClC0N,EAAcJ,EAAQtN,wBACtBpN,EAAS,GACT+a,EAAMtkB,EAAKib,WAAWmH,EAAaiC,EAAa9a,EAEpD,IAAI+a,EACF,QAGJ3e,KAAK5G,MAIH6J,IACFgY,EAAOjV,QAAU,WACf/C,EAAMF,cAAc7H,QAAQ,SAAU8H,GACpCA,EAAOpC,QAAO,KAGhBqC,EAAM4B,SAAS,WACb5B,EAAM/B,YAMLkd,EAAQnL,YACbmL,EAAQze,YAAYye,EAAQnL,WAE9BmL,GAAQvd,YAAYoa,OAGhBmD,KACFhlB,KAAK0F,IAAIsf,QAAQ1e,WAAWC,YAAYvG,KAAK0F,IAAIsf,eAC1ChlB,MAAK0F,IAAIsf,UAUtBxf,EAAK7C,UAAU6iB,SAAW,WACxB,MAAOxlB,MAAK4J,OAAS5J,KAAK4J,OAAOgH,OAAO5O,QAAQhC,MAAQ,IAO1DwF,EAAK7C,UAAU8iB,UAAY,SAAS7b,GAClC5J,KAAK4J,OAASA,GAQhBpE,EAAK7C,UAAUwhB,SAAW,SAAShd,EAAOid,GACxCpkB,KAAKmH,MAAQA,EACbnH,KAAK0lB,cAAgBve,EACrBnH,KAAKokB,cAAiBA,KAAkB,GAO1C5e,EAAK7C,UAAUgjB,SAAW,WAKxB,MAJmB9f,UAAf7F,KAAKmH,OACPnH,KAAK4lB,eAGA5lB,KAAKmH,OASd3B,EAAK7C,UAAUsS,SAAW,SAAS7N,EAAO2C,GACxC,GAAI8b,GAAYhc,EAGZ+G,EAAS5Q,KAAK4Q,MAClB,IAAIA,EACF,KAAOA,EAAO1O,QACZlC,KAAKuG,YAAYqK,EAAO,GAS5B,IAHA5Q,KAAK+J,KAAO/J,KAAK8lB,SAAS1e,GAGtB2C,GAAQA,GAAQ/J,KAAK+J,KAAM,CAC7B,GAAY,UAARA,GAAiC,QAAb/J,KAAK+J,KAI3B,KAAM,IAAIhJ,OAAM,6CACoBf,KAAK+J,KACrC,2BAA6BA,EAAO,IALxC/J,MAAK+J,KAAOA,EAShB,GAAiB,SAAb/J,KAAK+J,KAAiB,CAExB/J,KAAK4Q,SACL,KAAK,GAAI5L,GAAI,EAAG0T,EAAOtR,EAAMlF,OAAYwW,EAAJ1T,EAAUA,IAC7C6gB,EAAaze,EAAMpC,GACAa,SAAfggB,GAA8BA,YAAsB9e,YAEtD8C,EAAQ,GAAIrE,GAAKxF,KAAK2L,QACpBvE,MAAOye,IAET7lB,KAAKyH,YAAYoC,GAGrB7J,MAAKoH,MAAQ,OAEV,IAAiB,UAAbpH,KAAK+J,KAAkB,CAE9B/J,KAAK4Q,SACL,KAAK,GAAImV,KAAc3e,GACjBA,EAAMX,eAAesf,KACvBF,EAAaze,EAAM2e,GACAlgB,SAAfggB,GAA8BA,YAAsB9e,YAEtD8C,EAAQ,GAAIrE,GAAKxF,KAAK2L,QACpBxE,MAAO4e,EACP3e,MAAOye,IAET7lB,KAAKyH,YAAYoC,IAIvB7J,MAAKoH,MAAQ,OAIbpH,MAAK4Q,OAAS/K,OACd7F,KAAKoH,MAAQA,CAafpH,MAAKgmB,cAAgBhmB,KAAKoH,OAO5B5B,EAAK7C,UAAUiF,SAAW,WAGxB,GAAiB,SAAb5H,KAAK+J,KAAiB,CACxB,GAAIkc,KAIJ,OAHAjmB,MAAK4Q,OAAO9O,QAAS,SAAU+H,GAC7Boc,EAAI/T,KAAKrI,EAAMjC,cAEVqe,EAEJ,GAAiB,UAAbjmB,KAAK+J,KAAkB,CAC9B,GAAIyN,KAIJ,OAHAxX,MAAK4Q,OAAO9O,QAAS,SAAU+H,GAC7B2N,EAAI3N,EAAM8b,YAAc9b,EAAMjC,aAEzB4P,EAOP,MAJmB3R,UAAf7F,KAAKoH,OACPpH,KAAKkmB,eAGAlmB,KAAKoH,OAQhB5B,EAAK7C,UAAUwjB,SAAW,WACxB,MAAQnmB,MAAK4J,OAAS5J,KAAK4J,OAAOuc,WAAa,EAAI,GAOrD3gB,EAAK7C,UAAU6N,QAAU,WACvB,GAAImU,GAAO3kB,KAAK4J,OAAS5J,KAAK4J,OAAO4G,YAErC,OADAmU,GAAKzS,KAAKlS,MACH2kB,GASTnf,EAAK7C,UAAUyjB,MAAQ,WACrB,GAAIA,GAAQ,GAAI5gB,GAAKxF,KAAK2L,OAS1B,IARAya,EAAMrc,KAAO/J,KAAK+J,KAClBqc,EAAMjf,MAAQnH,KAAKmH,MACnBif,EAAMC,eAAiBrmB,KAAKqmB,eAC5BD,EAAMhC,cAAgBpkB,KAAKokB,cAC3BgC,EAAMhf,MAAQpH,KAAKoH,MACnBgf,EAAME,eAAiBtmB,KAAKsmB,eAC5BF,EAAMlC,SAAWlkB,KAAKkkB,SAElBlkB,KAAK4Q,OAAQ,CAEf,GAAI2V,KACJvmB,MAAK4Q,OAAO9O,QAAQ,SAAU+H,GAC5B,GAAI2c,GAAa3c,EAAMuc,OACvBI,GAAWf,UAAUW,GACrBG,EAAYrU,KAAKsU,KAEnBJ,EAAMxV,OAAS2V,MAIfH,GAAMxV,OAAS/K,MAGjB,OAAOugB,IAQT5gB,EAAK7C,UAAU6E,OAAS,SAASD,GAC1BvH,KAAK4Q,SAKV5Q,KAAKkkB,UAAW,EACZlkB,KAAK0F,IAAI8B,SACXxH,KAAK0F,IAAI8B,OAAOmF,UAAY,uBAG9B3M,KAAKuf,aAEDhY,KAAY,GACdvH,KAAK4Q,OAAO9O,QAAQ,SAAU+H,GAC5BA,EAAMrC,OAAOD,OAUnB/B,EAAK7C,UAAUuF,SAAW,SAASX,GAC5BvH,KAAK4Q,SAIV5Q,KAAKof,aAGD7X,KAAY,GACdvH,KAAK4Q,OAAO9O,QAAQ,SAAU+H,GAC5BA,EAAM3B,SAASX,KAMfvH,KAAK0F,IAAI8B,SACXxH,KAAK0F,IAAI8B,OAAOmF,UAAY,wBAE9B3M,KAAKkkB,UAAW,IAMlB1e,EAAK7C,UAAU4c,WAAa,WAC1B,GAAI3O,GAAS5Q,KAAK4Q,MAClB,IAAKA,GAGA5Q,KAAKkkB,SAAV,CAIA,GAAIlE,GAAKhgB,KAAK0F,IAAIsa,GACd/Y,EAAQ+Y,EAAKA,EAAG1Z,WAAaT,MACjC,IAAIoB,EAAO,CAET,GAAI4X,GAAS7e,KAAKymB,YACdC,EAAS1G,EAAG2G,WACZD,GACFzf,EAAMsX,aAAaM,EAAQ6H,GAG3Bzf,EAAMQ,YAAYoX,GAIpB7e,KAAK4Q,OAAO9O,QAAQ,SAAU+H,GAC5B5C,EAAMsX,aAAa1U,EAAMzB,SAAUyW,GACnChV,EAAM0V,kBAQZ/Z,EAAK7C,UAAUmf,KAAO,WACpB,GAAI9B,GAAKhgB,KAAK0F,IAAIsa,GACd/Y,EAAQ+Y,EAAKA,EAAG1Z,WAAaT,MAC7BoB,IACFA,EAAMV,YAAYyZ,GAEpBhgB,KAAKof,cAOP5Z,EAAK7C,UAAUyc,WAAa,WAC1B,GAAIxO,GAAS5Q,KAAK4Q,MAClB,IAAKA,GAGA5Q,KAAKkkB,SAAV,CAKA,GAAIrF,GAAS7e,KAAKymB,WACd5H,GAAOvY,YACTuY,EAAOvY,WAAWC,YAAYsY,GAIhC7e,KAAK4Q,OAAO9O,QAAQ,SAAU+H,GAC5BA,EAAMiY,WAUVtc,EAAK7C,UAAU8E,YAAc,SAASJ,GACpC,GAAIrH,KAAK4mB,aAAc,CASrB,GAPAvf,EAAKoe,UAAUzlB,MACfqH,EAAK+c,cAA8B,UAAbpkB,KAAK+J,KACV,SAAb/J,KAAK+J,OACP1C,EAAKgR,MAAQrY,KAAK4Q,OAAO1O,QAE3BlC,KAAK4Q,OAAOsB,KAAK7K,GAEbrH,KAAKkkB,SAAU,CAEjB,GAAI2C,GAAQxf,EAAKe,SACb0e,EAAW9mB,KAAKymB,YAChBxf,EAAQ6f,EAAWA,EAASxgB,WAAaT,MACzCihB,IAAY7f,GACdA,EAAMsX,aAAasI,EAAOC,GAG5Bzf,EAAKkY,aAGPvf,KAAKkhB,WAAW6F,eAAiB,IACjC1f,EAAK6Z,WAAW3Z,SAAW,MAW/B/B,EAAK7C,UAAUsc,WAAa,SAAS5X,EAAMmX,GACzC,GAAIxe,KAAK4mB,aAAc,CAGrB,GAAIze,GAASnI,KAAK0F,IAAM,GAAI1F,KAAK0F,IAAIsa,GAAG1Z,WAAaT,MACrD,IAAIsC,EAAO,CACT,GAAI6e,GAASva,SAASC,cAAc,KACpCsa,GAAO1T,MAAMjJ,OAASlC,EAAMmC,aAAe,KAC3CnC,EAAMV,YAAYuf,GAGhB3f,EAAKuC,QACPvC,EAAKuC,OAAOrD,YAAYc,GAGtBmX,YAAsByI,GACxBjnB,KAAKyH,YAAYJ,GAGjBrH,KAAKue,aAAalX,EAAMmX,GAGtBrW,GACFA,EAAM5B,YAAYygB,KAYxBxhB,EAAK7C,UAAUukB,OAAS,SAAU7f,EAAMgR,GACtC,GAAIhR,EAAKuC,QAAU5J,KAAM,CAEvB,GAAImnB,GAAennB,KAAK4Q,OAAO5O,QAAQqF,EACpBgR,GAAf8O,GAEF9O,IAIJ,GAAImG,GAAaxe,KAAK4Q,OAAOyH,IAAUrY,KAAK6e,MAC5C7e,MAAKif,WAAW5X,EAAMmX,IASxBhZ,EAAK7C,UAAU4b,aAAe,SAASlX,EAAMmX,GAC3C,GAAIxe,KAAK4mB,aAAc,CACrB,GAAIpI,GAAcxe,KAAK6e,OAIrBxX,EAAKoe,UAAUzlB,MACfqH,EAAK+c,cAA8B,UAAbpkB,KAAK+J,KAC3B/J,KAAK4Q,OAAOsB,KAAK7K,OAEd,CAEH,GAAIgR,GAAQrY,KAAK4Q,OAAO5O,QAAQwc,EAChC,IAAa,IAATnG,EACF,KAAM,IAAItX,OAAM,iBAIlBsG,GAAKoe,UAAUzlB,MACfqH,EAAK+c,cAA8B,UAAbpkB,KAAK+J,KAC3B/J,KAAK4Q,OAAO0H,OAAOD,EAAO,EAAGhR,GAG/B,GAAIrH,KAAKkkB,SAAU,CAEjB,GAAI2C,GAAQxf,EAAKe,SACbse,EAASlI,EAAWpW,SACpBnB,EAAQyf,EAASA,EAAOpgB,WAAaT,MACrC6gB,IAAUzf,GACZA,EAAMsX,aAAasI,EAAOH,GAG5Brf,EAAKkY,aAGPvf,KAAKkhB,WAAW6F,eAAiB,IACjC1f,EAAK6Z,WAAW3Z,SAAW,MAU/B/B,EAAK7C,UAAUgc,YAAc,SAAStX,EAAMqX,GAC1C,GAAI1e,KAAK4mB,aAAc,CACrB,GAAIvO,GAAQrY,KAAK4Q,OAAO5O,QAAQ0c,GAC5BF,EAAaxe,KAAK4Q,OAAOyH,EAAQ,EACjCmG,GACFxe,KAAKue,aAAalX,EAAMmX,GAGxBxe,KAAKyH,YAAYJ,KAYvB7B,EAAK7C,UAAU6D,OAAS,SAAS6B,GAC/B,GACIgQ,GADA/P,KAEA9B,EAAS6B,EAAOA,EAAK+e,cAAgBvhB,MAOzC,UAJO7F,MAAKqnB,kBACLrnB,MAAKsnB,YAGMzhB,QAAd7F,KAAKmH,MAAoB,CAC3B,GAAIA,GAAQgQ,OAAOnX,KAAKmH,OAAOigB,aAC/B/O,GAAQlR,EAAMnF,QAAQwE,GACT,IAAT6R,IACFrY,KAAKqnB,aAAc,EACnB/e,EAAQ4J,MACN7K,KAAQrH,KACR0X,KAAQ,WAKZ1X,KAAKunB,kBAIP,GAAIvnB,KAAK4mB,aAAc,CAIrB,GAAI5mB,KAAK4Q,OAAQ,CACf,GAAI4W,KACJxnB,MAAK4Q,OAAO9O,QAAQ,SAAU+H,GAC5B2d,EAAeA,EAAahe,OAAOK,EAAMrD,OAAO6B,MAElDC,EAAUA,EAAQkB,OAAOge,GAI3B,GAAc3hB,QAAVW,EAAqB,CACvB,GAAIe,IAAU,CACa,IAAvBigB,EAAatlB,OACflC,KAAKkI,SAASX,GAGdvH,KAAKwH,OAAOD,QAIb,CAEH,GAAkB1B,QAAd7F,KAAKoH,MAAqB,CAC5B,GAAIA,GAAQ+P,OAAOnX,KAAKoH,OAAOggB,aAC/B/O,GAAQjR,EAAMpF,QAAQwE,GACT,IAAT6R,IACFrY,KAAKsnB,aAAc,EACnBhf,EAAQ4J,MACN7K,KAAQrH,KACR0X,KAAQ,WAMd1X,KAAKynB,kBAGP,MAAOnf,IAQT9C,EAAK7C,UAAU8I,SAAW,SAASC,GACjC,IAAK1L,KAAK0F,IAAIsa,KAAOhgB,KAAK0F,IAAIsa,GAAG1Z,WAI/B,IAFA,GAAIsD,GAAS5J,KAAK4J,OACdrC,GAAU,EACPqC,GACLA,EAAOpC,OAAOD,GACdqC,EAASA,EAAOA,MAIhB5J,MAAK0F,IAAIsa,IAAMhgB,KAAK0F,IAAIsa,GAAG1Z,YAC7BtG,KAAK2L,OAAOF,SAASzL,KAAK0F,IAAIsa,GAAG0H,UAAWhc,IAMhDlG,EAAKmiB,aAAe9hB,OAQpBL,EAAK7C,UAAUmF,MAAQ,SAAS8f,GAG9B,GAFApiB,EAAKmiB,aAAeC,EAEhB5nB,KAAK0F,IAAIsa,IAAMhgB,KAAK0F,IAAIsa,GAAG1Z,WAAY,CACzC,GAAIZ,GAAM1F,KAAK0F,GAEf,QAAQkiB,GACN,IAAK,OACCliB,EAAIoJ,KACNpJ,EAAIoJ,KAAKhH,QAGTpC,EAAIuC,KAAKH,OAEX,MAEF,KAAK,OACHpC,EAAIuC,KAAKH,OACT,MAEF,KAAK,SACC9H,KAAK4mB,aACPlhB,EAAI8B,OAAOM,QAEJpC,EAAIyB,OAASnH,KAAKokB,eACzB1e,EAAIyB,MAAMW,QACV7G,EAAKsQ,sBAAsB7L,EAAIyB,QAExBzB,EAAI0B,QAAUpH,KAAK4mB,cAC1BlhB,EAAI0B,MAAMU,QACV7G,EAAKsQ,sBAAsB7L,EAAI0B,QAG/B1B,EAAIuC,KAAKH,OAEX,MAEF,KAAK,QACCpC,EAAIyB,OAASnH,KAAKokB,eACpB1e,EAAIyB,MAAMW,QACV7G,EAAKsQ,sBAAsB7L,EAAIyB,QAExBzB,EAAI0B,QAAUpH,KAAK4mB,cAC1BlhB,EAAI0B,MAAMU,QACV7G,EAAKsQ,sBAAsB7L,EAAI0B,QAExBpH,KAAK4mB,aACZlhB,EAAI8B,OAAOM,QAGXpC,EAAIuC,KAAKH,OAEX,MAEF,KAAK,QACL,QACMpC,EAAI0B,QAAUpH,KAAK4mB,cACrBlhB,EAAI0B,MAAMU,QACV7G,EAAKsQ,sBAAsB7L,EAAI0B,QAExB1B,EAAIyB,OAASnH,KAAKokB,eACzB1e,EAAIyB,MAAMW,QACV7G,EAAKsQ,sBAAsB7L,EAAIyB,QAExBnH,KAAK4mB,aACZlhB,EAAI8B,OAAOM,QAGXpC,EAAIuC,KAAKH,WAWnBtC,EAAK0F,OAAS,SAAS2c,GACrBxb,WAAW,WACTpL,EAAKsQ,sBAAsBsW,IAC1B,IAMLriB,EAAK7C,UAAUgF,KAAO,WAEpB3H,KAAKkmB,cAAa,GAClBlmB,KAAK4lB,cAAa,IASpBpgB,EAAK7C,UAAUmlB,aAAe,SAASzgB,GACrC,GAAIrH,MAAQqH,EACV,OAAO,CAGT,IAAIuJ,GAAS5Q,KAAK4Q,MAClB,IAAIA,EAEF,IAAK,GAAI5L,GAAI,EAAG0T,EAAO9H,EAAO1O,OAAYwW,EAAJ1T,EAAUA,IAC9C,GAAI4L,EAAO5L,GAAG8iB,aAAazgB,GACzB,OAAO,CAKb,QAAO,GAWT7B,EAAK7C,UAAUolB,MAAQ,SAAS1gB,EAAMmX,GACpC,GAAInX,GAAQmX,EAAZ,CAMA,GAAInX,EAAKygB,aAAa9nB,MACpB,KAAM,IAAIe,OAAM,6CAIdsG,GAAKuC,QACPvC,EAAKuC,OAAOrD,YAAYc,EAI1B,IAAI+e,GAAQ/e,EAAK+e,OACjB/e,GAAK2gB,WAGDxJ,EACFxe,KAAKue,aAAa6H,EAAO5H,GAGzBxe,KAAKyH,YAAY2e,KAgBrB5gB,EAAK7C,UAAU4D,YAAc,SAASc,GACpC,GAAIrH,KAAK4Q,OAAQ,CACf,GAAIyH,GAAQrY,KAAK4Q,OAAO5O,QAAQqF,EAEhC,IAAa,IAATgR,EAAa,CACfhR,EAAKya,aAGEza,GAAKggB,kBACLhgB,GAAKigB,WAEZ,IAAIW,GAAcjoB,KAAK4Q,OAAO0H,OAAOD,EAAO,GAAG,EAK/C,OAJA4P,GAAYre,OAAS,KAErB5J,KAAKkhB,WAAW6F,eAAiB,IAE1BkB,GAIX,MAAOpiB,SAUTL,EAAK7C,UAAUulB,QAAU,SAAU7gB,GACjCrH,KAAKuG,YAAYc,IAOnB7B,EAAK7C,UAAUub,WAAa,SAAUE,GACpC,GAAID,GAAUne,KAAK+J,IAEnB,IAAIoU,GAAWC,EAAf,CAKA,GAAgB,UAAXA,GAAkC,QAAXA,GACZ,UAAXD,GAAkC,QAAXA,EAIvB,CAEH,GACIgK,GADAlhB,EAAQjH,KAAK0F,IAAIsa,GAAKhgB,KAAK0F,IAAIsa,GAAG1Z,WAAaT,MAGjDsiB,GADEnoB,KAAKkkB,SACElkB,KAAKymB,YAGLzmB,KAAKoI,QAEhB,IAAIse,GAAUyB,GAAUA,EAAO7hB,WAAc6hB,EAAOxB,YAAc9gB,MAGlE7F,MAAK8hB,OACL9hB,KAAKgoB,WAGLhoB,KAAK+J,KAAOqU,EAGG,UAAXA,GACGpe,KAAK4Q,SACR5Q,KAAK4Q,WAGP5Q,KAAK4Q,OAAO9O,QAAQ,SAAU+H,EAAOwO,GACnCxO,EAAMme,iBACCne,GAAMwO,MACbxO,EAAMua,eAAgB,EACHve,QAAfgE,EAAM1C,QACR0C,EAAM1C,MAAQ,OAIH,UAAXgX,GAAkC,QAAXA,KACzBne,KAAKkkB,UAAW,IAGA,SAAX9F,GACFpe,KAAK4Q,SACR5Q,KAAK4Q,WAGP5Q,KAAK4Q,OAAO9O,QAAQ,SAAU+H,EAAOwO,GACnCxO,EAAMme,WACNne,EAAMua,eAAgB,EACtBva,EAAMwO,MAAQA,KAGD,UAAX8F,GAAkC,QAAXA,KACzBne,KAAKkkB,UAAW,IAIlBlkB,KAAKkkB,UAAW,EAIdjd,IACEyf,EACFzf,EAAMsX,aAAave,KAAKoI,SAAUse,GAGlCzf,EAAMQ,YAAYzH,KAAKoI,WAG3BpI,KAAKuf,iBApELvf,MAAK+J,KAAOqU,GAuEC,QAAXA,GAAgC,UAAXA,KAER,UAAXA,EACFpe,KAAKoH,MAAQ+P,OAAOnX,KAAKoH,OAGzBpH,KAAKoH,MAAQpH,KAAKooB,YAAYjR,OAAOnX,KAAKoH,QAG5CpH,KAAK8H,SAGP9H,KAAKkhB,WAAW6F,eAAiB,MASnCvhB,EAAK7C,UAAUujB,aAAe,SAASmC,GAKrC,GAJIroB,KAAK0F,IAAI0B,OAAsB,SAAbpH,KAAK+J,MAAgC,UAAb/J,KAAK+J,OACjD/J,KAAKsmB,eAAiBrlB,EAAK+Y,aAAaha,KAAK0F,IAAI0B,QAGxBvB,QAAvB7F,KAAKsmB,eACP,IAEE,GAAIlf,EACJ,IAAiB,UAAbpH,KAAK+J,KACP3C,EAAQpH,KAAKsoB,cAActoB,KAAKsmB,oBAE7B,CACH,GAAIiC,GAAMvoB,KAAKsoB,cAActoB,KAAKsmB,eAClClf,GAAQpH,KAAKooB,YAAYG,GAEvBnhB,IAAUpH,KAAKoH,QACjBpH,KAAKoH,MAAQA,EACbpH,KAAKqkB,2BAGT,MAAO9hB,GAGL,GAFAvC,KAAKoH,MAAQvB,OAETwiB,KAAW,EACb,KAAM9lB,KAUdiD,EAAK7C,UAAU2hB,eAAiB,WAG9B,GAAI1E,GAAe5f,KAAK2L,OAAON,cAC/B,IAAIuU,EAAazU,MAAO,CACtB,GAAIqd,GAAWvnB,EAAK6b,SAAS3F,OAAOnX,KAAKoH,OAAQ+P,OAAOnX,KAAKgmB,eAC7DpG,GAAazU,MAAMwO,YAAc6O,EAAS9Y,MAC1CkQ,EAAazU,MAAMyO,UAAY4O,EAAS7Y,IAE1C,GAAIkQ,GAAe7f,KAAK2L,OAAON,cAC/B,IAAIwU,EAAa1U,MAAO,CACtB,GAAIsd,GAAWxnB,EAAK6b,SAAS3F,OAAOnX,KAAKgmB,eAAgB7O,OAAOnX,KAAKoH,OACrEyY,GAAa1U,MAAMwO,YAAc8O,EAAS/Y,MAC1CmQ,EAAa1U,MAAMyO,UAAY6O,EAAS9Y,IAG1C3P,KAAK2L,OAAOlD,UAAU,aACpBpB,KAAMrH,KACN8d,SAAU9d,KAAKgmB,cACfjI,SAAU/d,KAAKoH,MACfwY,aAAcA,EACdC,aAAcA,IAGhB7f,KAAKgmB,cAAgBhmB,KAAKoH,OAO5B5B,EAAK7C,UAAU6hB,eAAiB,WAG9B,GAAI5E,GAAe5f,KAAK2L,OAAON,cAC/B,IAAIuU,EAAazU,MAAO,CACtB,GAAIqd,GAAWvnB,EAAK6b,SAAS9c,KAAKmH,MAAOnH,KAAK0lB,cAC9C9F,GAAazU,MAAMwO,YAAc6O,EAAS9Y,MAC1CkQ,EAAazU,MAAMyO,UAAY4O,EAAS7Y,IAE1C,GAAIkQ,GAAe7f,KAAK2L,OAAON,cAC/B,IAAIwU,EAAa1U,MAAO,CACtB,GAAIsd,GAAWxnB,EAAK6b,SAAS9c,KAAK0lB,cAAe1lB,KAAKmH,MACtD0Y,GAAa1U,MAAMwO,YAAc8O,EAAS/Y,MAC1CmQ,EAAa1U,MAAMyO,UAAY6O,EAAS9Y,IAG1C3P,KAAK2L,OAAOlD,UAAU,aACpBpB,KAAMrH,KACN8d,SAAU9d,KAAK0lB,cACf3H,SAAU/d,KAAKmH,MACfyY,aAAcA,EACdC,aAAcA,IAGhB7f,KAAK0lB,cAAgB1lB,KAAKmH,OAU5B3B,EAAK7C,UAAU8kB,gBAAkB,WAC/B,GAAIiB,GAAW1oB,KAAK0F,IAAI0B,KACxB,IAAIshB,EAAU,CACZ,GAAIC,IAAc,oBAIdvhB,EAAQpH,KAAKoH,MACb2C,EAAqB,QAAb/J,KAAK+J,KAAkB9I,EAAK8I,KAAK3C,GAASpH,KAAK+J,KACvDwN,EAAgB,UAARxN,GAAoB9I,EAAKsW,MAAMnQ,EAC3CuhB,GAAWzW,KAAK,cAAgBnI,GAC5BwN,GACFoR,EAAWzW,KAAK,iBAIlB,IAAI0W,GAAiC,IAAtBzR,OAAOnX,KAAKoH,QAA6B,SAAbpH,KAAK+J,MAAgC,UAAb/J,KAAK+J,IAgBxE,IAfI6e,GACFD,EAAWzW,KAAK,oBAIdlS,KAAKihB,mBACP0H,EAAWzW,KAAK,+BAEdlS,KAAKsnB,aACPqB,EAAWzW,KAAK,wBAGlBwW,EAAS/b,UAAYgc,EAAWlT,KAAK,KAGzB,SAAR1L,GAA2B,UAARA,EAAkB,CACvC,GAAI8e,GAAQ7oB,KAAK4Q,OAAS5Q,KAAK4Q,OAAO1O,OAAS,CAC/CwmB,GAAS9a,MAAQ5N,KAAK+J,KAAO,eAAiB8e,EAAQ,aAE/CtR,IAASvX,KAAKyB,SAAS2F,MAC9BshB,EAAS9a,MAAQ,qDAGjB8a,EAAS9a,MAAQ,EAIN,aAAT7D,GACG/J,KAAK0F,IAAIojB,WACZ9oB,KAAK0F,IAAIojB,SAAWrc,SAASC,cAAc,SAC3C1M,KAAK0F,IAAIojB,SAAS/e,KAAO,WACzB/J,KAAK0F,IAAIqjB,WAAatc,SAASC,cAAc,MAC7C1M,KAAK0F,IAAIqjB,WAAWpc,UAAY,kBAChC3M,KAAK0F,IAAIqjB,WAAWthB,YAAYzH,KAAK0F,IAAIojB,UAEzC9oB,KAAK0F,IAAIuf,QAAQ3e,WAAWiY,aAAave,KAAK0F,IAAIqjB,WAAY/oB,KAAK0F,IAAIuf,UAGzEjlB,KAAK0F,IAAIojB,SAASE,QAAUhpB,KAAKoH,OAI7BpH,KAAK0F,IAAIqjB,aACX/oB,KAAK0F,IAAIqjB,WAAWziB,WAAWC,YAAYvG,KAAK0F,IAAIqjB,kBAC7C/oB,MAAK0F,IAAIqjB,iBACT/oB,MAAK0F,IAAIojB,UAKpB7nB,EAAKsX,gBAAgBmQ,KAWzBljB,EAAK7C,UAAU4kB,gBAAkB,WAC/B,GAAI0B,GAAWjpB,KAAK0F,IAAIyB,KACxB,IAAI8hB,EAAU,CAEZ,GAAIL,GAAiC,IAAtBzR,OAAOnX,KAAKmH,QAAoC,SAApBnH,KAAK4J,OAAOG,IACnD6e,GACF3nB,EAAKgX,aAAagR,EAAU,oBAG5BhoB,EAAKmX,gBAAgB6Q,EAAU,oBAI7BjpB,KAAKghB,kBACP/f,EAAKgX,aAAagR,EAAU,+BAG5BhoB,EAAKmX,gBAAgB6Q,EAAU,+BAE7BjpB,KAAKqnB,YACPpmB,EAAKgX,aAAagR,EAAU,wBAG5BhoB,EAAKmX,gBAAgB6Q,EAAU,wBAIjChoB,EAAKsX,gBAAgB0Q,KAUzBzjB,EAAK7C,UAAUijB,aAAe,SAASyC,GAKrC,GAJIroB,KAAK0F,IAAIyB,OAASnH,KAAKokB,gBACzBpkB,KAAKqmB,eAAiBplB,EAAK+Y,aAAaha,KAAK0F,IAAIyB,QAGxBtB,QAAvB7F,KAAKqmB,eACP,IACE,GAAIlf,GAAQnH,KAAKsoB,cAActoB,KAAKqmB,eAEhClf,KAAUnH,KAAKmH,QACjBnH,KAAKmH,MAAQA,EACbnH,KAAKukB,2BAGT,MAAOhiB,GAGL,GAFAvC,KAAKmH,MAAQtB,OAETwiB,KAAW,EACb,KAAM9lB,KAUdiD,EAAK7C,UAAUmC,SAAW,WACxB,GAAImE,KAGJ,IAAkB,WAAdjJ,KAAK+J,KAAmB,CAG1B,IAAK,GAFDlI,MACAqnB,KACKlkB,EAAI,EAAGA,EAAIhF,KAAK4Q,OAAO1O,OAAQ8C,IAAK,CAC3C,GAAI6E,GAAQ7J,KAAK4Q,OAAO5L,EACpBnD,GAAKgI,EAAM1C,QACb+hB,EAAchX,KAAKrI,EAAM1C,OAE3BtF,EAAKgI,EAAM1C,QAAS,EAGlB+hB,EAAchnB,OAAS,IACzB+G,EAASjJ,KAAK4Q,OACTtH,OAAO,SAAUjC,GAChB,MAA6C,KAAtC6hB,EAAclnB,QAAQqF,EAAKF,SAEnC+B,IAAI,SAAU7B,GACb,OACEA,KAAMA,EACNlG,OACE2I,QAAS,kBAAoBzC,EAAKF,MAAQ,SAQxD,GAAInH,KAAK4Q,OACP,IAAK,GAAI5L,GAAI,EAAGA,EAAIhF,KAAK4Q,OAAO1O,OAAQ8C,IAAK,CAC3C,GAAI3C,GAAIrC,KAAK4Q,OAAO5L,GAAGF,UACnBzC,GAAEH,OAAS,IACb+G,EAASA,EAAOO,OAAOnH,IAK7B,MAAO4G,IAMTzD,EAAK7C,UAAUqlB,SAAW,WAKxBhoB,KAAK0F,QAQPF,EAAK7C,UAAUyF,OAAS,WACtB,GAAI1C,GAAM1F,KAAK0F,GACf,IAAIA,EAAIsa,GACN,MAAOta,GAAIsa,EASb,IANAhgB,KAAK0kB,qBAGLhf,EAAIsa,GAAKvT,SAASC,cAAc,MAChChH,EAAIsa,GAAG3Y,KAAOrH,KAEmB,SAA7BA,KAAK2L,OAAO9K,QAAQgC,KAAiB,CACvC,GAAIsmB,GAAS1c,SAASC,cAAc,KACpC,IAAI1M,KAAKyB,SAAS0F,OAEZnH,KAAK4J,OAAQ,CACf,GAAIwf,GAAU3c,SAASC,cAAc,SACrChH,GAAIoJ,KAAOsa,EACXA,EAAQzc,UAAY,sBACpByc,EAAQxb,MAAQ,6CAChBub,EAAO1hB,YAAY2hB,GAGvB1jB,EAAIsa,GAAGvY,YAAY0hB,EAGnB,IAAIE,GAAS5c,SAASC,cAAc,MAChCzE,EAAOwE,SAASC,cAAc,SAClChH,GAAIuC,KAAOA,EACXA,EAAK0E,UAAY,yBACjB1E,EAAK2F,MAAQ,0CACbyb,EAAO5hB,YAAY/B,EAAIuC,MACvBvC,EAAIsa,GAAGvY,YAAY4hB,GAIrB,GAAIC,GAAU7c,SAASC,cAAc,KAOrC,OANAhH,GAAIsa,GAAGvY,YAAY6hB,GACnB5jB,EAAI6jB,KAAOvpB,KAAKwpB,iBAChBF,EAAQ7hB,YAAY/B,EAAI6jB,MAExBvpB,KAAKkhB,WAAW6F,eAAiB,IAE1BrhB,EAAIsa,IAQbxa,EAAKqJ,YAAc,SAAU9I,EAAOwG,GAClC,IAAK8D,MAAMnL,QAAQa,GACjB,MAAOP,GAAKqJ,aAAa9I,GAAQwG,EAEnC,IAAqB,IAAjBxG,EAAM7D,OAAV,CAIA,GAAIunB,GAAY1jB,EAAM,GAClB2jB,EAAW3jB,EAAMA,EAAM7D,OAAS,GAChCynB,EAAcnkB,EAAKgJ,kBAAkBjC,EAAMM,QAC3C2R,EAAakL,EAASE,eACtBje,EAAS8d,EAAU9d,OAInBke,EAAU5oB,EAAKmJ,eAAeuf,EAAYjkB,IAAIsa,IAAM/e,EAAKmJ,eAAeqf,EAAU/jB,IAAIsa,GAErFrU,GAAOiE,YACVjE,EAAOiE,UAAY3O,EAAKwM,iBAAiBoC,OAAQ,YAAa,SAAUtD,GACtE/G,EAAKskB,OAAO/jB,EAAOwG,MAIlBZ,EAAOoE,UACVpE,EAAOoE,QAAU9O,EAAKwM,iBAAiBoC,OAAQ,UAAU,SAAUtD,GACjE/G,EAAKukB,UAAUhkB,EAAOwG,MAI1BZ,EAAOhG,YAAY+X,OACnB/R,EAAOmD,MACLkb,UAAWvd,SAASwd,KAAK3W,MAAM4W,OAC/BtK,aAAcjU,EAAON,eACrB2T,cAAeR,EACf2L,OAAQ5d,EAAM4C,MACd0a,QAASA,EACTO,MAAOX,EAAUtD,YAEnB1Z,SAASwd,KAAK3W,MAAM4W,OAAS,OAE7B3d,EAAMO,mBAQRtH,EAAKskB,OAAS,SAAU/jB,EAAOwG,GAC7B,IAAK8D,MAAMnL,QAAQa,GACjB,MAAOP,GAAKskB,QAAQ/jB,GAAQwG,EAE9B,IAAqB,IAAjBxG,EAAM7D,OAAV,CAKA,GAGImoB,GAAQC,EAAQC,EAAQC,EAASC,EAAQC,EACzCC,EAAUC,EACVC,EAASC,EAASC,EAAUC,EAAYC,EAAYC,EALpDvf,EAAS5F,EAAM,GAAG4F,OAClB1B,EAASsC,EAAM8C,MAAQ1D,EAAOmD,KAAK+a,QACnCM,EAAS5d,EAAM4C,MAIfgc,GAAQ,EAKR1B,EAAY1jB,EAAM,EAItB,IAHAskB,EAASZ,EAAU/jB,IAAIsa,GACvB6K,EAAU5pB,EAAKmJ,eAAeigB,GAC9BW,EAAaX,EAAO9G,aACPsH,EAAT5gB,EAAkB,CAEpBqgB,EAASD,CACT,GACEC,GAASA,EAAOc,gBAChBT,EAAWnlB,EAAKgJ,kBAAkB8b,GAClCQ,EAAUR,EAASrpB,EAAKmJ,eAAekgB,GAAU,QAE5CA,GAAmBQ,EAAT7gB,EAEb0gB,KAAaA,EAAS/gB,SACxB+gB,EAAW9kB,QAGR8kB,IAEHD,EAASL,EAAO/jB,WAAWuT,WAC3ByQ,EAASI,EAASA,EAAO/D,YAAc9gB,OACvC8kB,EAAWnlB,EAAKgJ,kBAAkB8b,GAC9BK,GAAYlB,IACdkB,EAAW9kB,SAIX8kB,IAEFL,EAASK,EAASjlB,IAAIsa,GACtB8K,EAAUR,EAASrpB,EAAKmJ,eAAekgB,GAAU,EAC7CrgB,EAAS6gB,EAAUE,IACrBL,EAAW9kB,SAIX8kB,IACF5kB,EAAMjE,QAAQ,SAAUuF,GACtBsjB,EAAS/gB,OAAOqV,WAAW5X,EAAMsjB,KAEnCQ,GAAQ,OAGP,CAEH,GAAIzB,GAAW3jB,EAAMA,EAAM7D,OAAS,EAGpC,IAFAuoB,EAAUf,EAASxF,UAAYwF,EAAS7K,OAAU6K,EAAS7K,OAAOzW,SAAWshB,EAAShkB,IAAIsa,GAC1FwK,EAAUC,EAASA,EAAO9D,YAAc9gB,OAC3B,CACXklB,EAAW9pB,EAAKmJ,eAAeogB,GAC/BD,EAASC,CACT,GACEI,GAAWplB,EAAKgJ,kBAAkB+b,GAC9BA,IACFU,EAAaV,EAAO5D,YAChB1lB,EAAKmJ,eAAemgB,EAAO5D,aAAe,EAC9CuE,EAAaX,EAAUU,EAAaF,EAAY,EAE5CH,EAAShhB,OAAOgH,OAAO1O,QAAU6D,EAAM7D,QACvC0oB,EAAShhB,OAAOgH,OAAO7K,EAAM7D,OAAS,IAAMwnB,IAG9CmB,GAAW,KAKfN,EAASA,EAAO5D,kBAEX4D,GAAUtgB,EAAS4gB,EAAUK,EAEpC,IAAIN,GAAYA,EAAShhB,OAAQ,CAE/B,GAAI2F,GAAS4a,EAASxe,EAAOmD,KAAKqb,OAC9BkB,EAAYtf,KAAKuf,MAAM/b,EAAQ,GAAK,GACpC6a,EAAQze,EAAOmD,KAAKsb,MAAQiB,EAC5BE,EAAYX,EAASzE,UAIzB,KADAmE,EAASM,EAASllB,IAAIsa,GAAGoL,gBACNhB,EAAZmB,GAAqBjB,GAAQ,CAClCK,EAAWnlB,EAAKgJ,kBAAkB8b,EAElC,IAAIkB,GAAgBzlB,EAAM0lB,KAAK,SAAUpkB,GACvC,MAAOA,KAASsjB,GAAYA,EAASlH,WAAWpc,IAGlD,IAAImkB,OAGC,CAAA,KAAIb,YAAoB1D,IAe3B,KAdA,IAAIrW,GAAS+Z,EAAS/gB,OAAOgH,MAC7B,IAAIA,EAAO1O,QAAU6D,EAAM7D,QAAU0O,EAAO7K,EAAM7D,OAAS,IAAMwnB,EAS/D,KAJAkB,GAAWplB,EAAKgJ,kBAAkB8b,GAClCiB,EAAYX,EAASzE,WAUzBmE,EAASA,EAAOc,gBAIdX,EAAO9D,aAAeiE,EAASllB,IAAIsa,KACrCja,EAAMjE,QAAQ,SAAUuF,GACtBujB,EAAShhB,OAAOqV,WAAW5X,EAAMujB,KAEnCO,GAAQ,KAMZA,IAEFxf,EAAOmD,KAAKqb,OAASA,EACrBxe,EAAOmD,KAAKsb,MAAQX,EAAUtD,YAIhCxa,EAAO3B,gBAAgBC,GAEvBsC,EAAMO,mBAQRtH,EAAKukB,UAAY,SAAUhkB,EAAOwG,GAChC,IAAK8D,MAAMnL,QAAQa,GACjB,MAAOP,GAAKskB,QAAQ/jB,GAAQwG,EAE9B,IAAqB,IAAjBxG,EAAM7D,OAAV,CAIA,GAAIunB,GAAY1jB,EAAM,GAClB4F,EAAS8d,EAAU9d,OACnB/B,EAAS6f,EAAU7f,OACnBmH,EAAanH,EAAOgH,OAAO5O,QAAQynB,GACnCjL,EAAa5U,EAAOgH,OAAOG,EAAahL,EAAM7D,SAAW0H,EAAOiV,MAGhE9Y,GAAM,IACRA,EAAM,GAAGL,IAAIuC,KAAKH,OAGpB,IAAIZ,IACFnB,MAAOA,EACP6Z,aAAcjU,EAAOmD,KAAK8Q,aAC1BC,aAAclU,EAAON,eACrB2T,cAAerT,EAAOmD,KAAKkQ,cAC3BE,cAAeV,EAGbtX,GAAO8X,eAAiB9X,EAAOgY,eAEjCvT,EAAOlD,UAAU,YAAavB,GAGhCuF,SAASwd,KAAK3W,MAAM4W,OAASve,EAAOmD,KAAKkb,UACzCre,EAAOhG,YAAYgY,SACnB5X,EAAMjE,QAAQ,SAAUuF,GAClBkF,EAAMM,SAAWxF,EAAK3B,IAAIoJ,MAAQvC,EAAMM,SAAWxF,EAAK3B,IAAIuC,MAC9D0D,EAAOhG,YAAY6X,sBAGhB7R,GAAOmD,KAEVnD,EAAOiE,YACT3O,EAAKiP,oBAAoBL,OAAQ,YAAalE,EAAOiE,iBAC9CjE,GAAOiE,WAEZjE,EAAOoE,UACT9O,EAAKiP,oBAAoBL,OAAQ,UAAWlE,EAAOoE,eAC5CpE,GAAOoE,SAIhBpE,EAAOZ,iBAEPwB,EAAMO,mBASRtH,EAAK7C,UAAU8gB,WAAa,SAAUpc,GAEpC,IADA,GAAIqkB,GAAI1rB,KAAK4J,OACN8hB,GAAG,CACR,GAAIA,GAAKrkB,EACP,OAAO,CAETqkB,GAAIA,EAAE9hB,OAGR,OAAO,GAQTpE,EAAK7C,UAAUgpB,gBAAkB,WAC/B,MAAOlf,UAASC,cAAc,QAQhClH,EAAK7C,UAAU2a,aAAe,SAAUD,GAClCrd,KAAK0F,IAAIsa,KACP3C,EACFpc,EAAKgX,aAAajY,KAAK0F,IAAIsa,GAAI,wBAG/B/e,EAAKmX,gBAAgBpY,KAAK0F,IAAIsa,GAAI,wBAGhChgB,KAAK6e,QACP7e,KAAK6e,OAAOvB,aAAaD,GAGvBrd,KAAK4Q,QACP5Q,KAAK4Q,OAAO9O,QAAQ,SAAU+H,GAC5BA,EAAMyT,aAAaD,OAW3B7X,EAAK7C,UAAUyN,YAAc,SAAU3B,EAAUmd,GAC/C5rB,KAAKyO,SAAWA,EAEZzO,KAAK0F,IAAIsa,KACPvR,EACFxN,EAAKgX,aAAajY,KAAK0F,IAAIsa,GAAI,uBAG/B/e,EAAKmX,gBAAgBpY,KAAK0F,IAAIsa,GAAI,uBAGhC4L,EACF3qB,EAAKgX,aAAajY,KAAK0F,IAAIsa,GAAI,oBAG/B/e,EAAKmX,gBAAgBpY,KAAK0F,IAAIsa,GAAI,oBAGhChgB,KAAK6e,QACP7e,KAAK6e,OAAOzO,YAAY3B,GAGtBzO,KAAK4Q,QACP5Q,KAAK4Q,OAAO9O,QAAQ,SAAU+H,GAC5BA,EAAMuG,YAAY3B,OAW1BjJ,EAAK7C,UAAUsb,YAAc,SAAU7W,GACrCpH,KAAKoH,MAAQA,EACbpH,KAAKkhB,aAOP1b,EAAK7C,UAAUkF,YAAc,SAAUV,GACrCnH,KAAKmH,MAAQA,EACbnH,KAAKkhB,aAaP1b,EAAK7C,UAAUue,UAAY,SAAUrgB,GAEnC,GAAIgrB,GAAU7rB,KAAK0F,IAAI6jB,IACnBsC,KACFA,EAAQvY,MAAMwY,WAA+B,GAAlB9rB,KAAKmmB,WAAkB,KAIpD,IAAI8C,GAAWjpB,KAAK0F,IAAIyB,KACxB,IAAI8hB,EAAU,CACRjpB,KAAKokB,eAEP6E,EAAS8C,gBAAkB/rB,KAAKyB,SAAS0F,MACzC8hB,EAASxU,YAAa,EACtBwU,EAAStc,UAAY,oBAIrBsc,EAAStc,UAAY,qBAGvB,IAAIxF,EAEFA,GADgBtB,QAAd7F,KAAKqY,MACCrY,KAAKqY,MAEQxS,QAAd7F,KAAKmH,MACJnH,KAAKmH,MAENnH,KAAK4mB,aACJ5mB,KAAK+J,KAGL,GAEVkf,EAASzT,UAAYxV,KAAKgsB,YAAY7kB,GAIxC,GAAIuhB,GAAW1oB,KAAK0F,IAAI0B,KACxB,IAAIshB,EAAU,CACZ,GAAIG,GAAQ7oB,KAAK4Q,OAAS5Q,KAAK4Q,OAAO1O,OAAS,CAC9B,UAAblC,KAAK+J,MACP2e,EAASlT,UAAY,IAAMqT,EAAQ,IACnC5nB,EAAKgX,aAAajY,KAAK0F,IAAIsa,GAAI,0BAEX,UAAbhgB,KAAK+J,MACZ2e,EAASlT,UAAY,IAAMqT,EAAQ,IACnC5nB,EAAKgX,aAAajY,KAAK0F,IAAIsa,GAAI,2BAG/B0I,EAASlT,UAAYxV,KAAKgsB,YAAYhsB,KAAKoH,OAC3CnG,EAAKmX,gBAAgBpY,KAAK0F,IAAIsa,GAAI,0BAKtChgB,KAAKunB,kBACLvnB,KAAKynB,kBAGD5mB,GAAWA,EAAQkmB,iBAAkB,GAEvC/mB,KAAKisB,oBAGHprB,GAAWA,EAAQ0G,WAAY,GAE7BvH,KAAK4Q,QACP5Q,KAAK4Q,OAAO9O,QAAQ,SAAU+H,GAC5BA,EAAMqX,UAAUrgB,KAMlBb,KAAK6e,QACP7e,KAAK6e,OAAOqC,aAUhB1b,EAAK7C,UAAUspB,kBAAoB,WACjC,GAAIvD,GAAW1oB,KAAK0F,IAAI0B,MACpBwJ,EAAS5Q,KAAK4Q,MACd8X,IAAY9X,IACG,SAAb5Q,KAAK+J,KACP6G,EAAO9O,QAAQ,SAAU+H,EAAOwO,GAC9BxO,EAAMwO,MAAQA,CACd,IAAI0N,GAAalc,EAAMnE,IAAIyB,KACvB4e,KACFA,EAAWvQ,UAAY6C,KAIP,UAAbrY,KAAK+J,MACZ6G,EAAO9O,QAAQ,SAAU+H,GACJhE,QAAfgE,EAAMwO,cACDxO,GAAMwO,MAEMxS,QAAfgE,EAAM1C,QACR0C,EAAM1C,MAAQ,SAY1B3B,EAAK7C,UAAUupB,gBAAkB,WAC/B,GAAIxD,EA2BJ,OAzBiB,SAAb1oB,KAAK+J,MACP2e,EAAWjc,SAASC,cAAc,OAClCgc,EAASlT,UAAY,SAED,UAAbxV,KAAK+J,MACZ2e,EAAWjc,SAASC,cAAc,OAClCgc,EAASlT,UAAY,UAGhBxV,KAAKyB,SAAS2F,OAASnG,EAAKsW,MAAMvX,KAAKoH,QAE1CshB,EAAWjc,SAASC,cAAc,KAClCgc,EAASpU,KAAOtU,KAAKoH,MACrBshB,EAAS7b,OAAS,SAClB6b,EAASlT,UAAYxV,KAAKgsB,YAAYhsB,KAAKoH,SAI3CshB,EAAWjc,SAASC,cAAc,OAClCgc,EAASqD,gBAAkB/rB,KAAKyB,SAAS2F,MACzCshB,EAASjU,YAAa,EACtBiU,EAASlT,UAAYxV,KAAKgsB,YAAYhsB,KAAKoH,QAIxCshB,GAQTljB,EAAK7C,UAAUwpB,uBAAyB,WAEtC,GAAI3kB,GAASiF,SAASC,cAAc,SAYpC,OAXI1M,MAAK4mB,cACPpf,EAAOmF,UAAY3M,KAAKkkB,SAAW,sBAAwB,uBAC3D1c,EAAOoG,MACH,wGAIJpG,EAAOmF,UAAY,uBACnBnF,EAAOoG,MAAQ,IAGVpG,GASThC,EAAK7C,UAAU6mB,eAAiB,WAC9B,GAAI9jB,GAAM1F,KAAK0F,IACXmmB,EAAUpf,SAASC,cAAc,SACjCvE,EAAQsE,SAASC,cAAc,QACnCmf,GAAQvY,MAAM8Y,eAAiB,WAC/BP,EAAQlf,UAAY,oBACpBkf,EAAQpkB,YAAYU,EACpB,IAAI6X,GAAKvT,SAASC,cAAc,KAChCvE,GAAMV,YAAYuY,EAGlB,IAAIqM,GAAW5f,SAASC,cAAc,KACtC2f,GAAS1f,UAAY,kBACrBqT,EAAGvY,YAAY4kB,GACf3mB,EAAI8B,OAASxH,KAAKmsB,yBAClBE,EAAS5kB,YAAY/B,EAAI8B,QACzB9B,EAAI2mB,SAAWA,CAGf,IAAI/C,GAAU7c,SAASC,cAAc,KACrC4c,GAAQ3c,UAAY,kBACpBqT,EAAGvY,YAAY6hB,GACf5jB,EAAIyB,MAAQnH,KAAK2rB,kBACjBrC,EAAQ7hB,YAAY/B,EAAIyB,OACxBzB,EAAI4jB,QAAUA,CAGd,IAAIgD,GAAc7f,SAASC,cAAc,KACzC4f,GAAY3f,UAAY,kBACxBqT,EAAGvY,YAAY6kB,GACE,UAAbtsB,KAAK+J,MAAiC,SAAb/J,KAAK+J,OAChCuiB,EAAY7kB,YAAYgF,SAAS4H,eAAe,MAChDiY,EAAY3f,UAAY,wBAE1BjH,EAAI4mB,YAAcA,CAGlB,IAAIrH,GAAUxY,SAASC,cAAc,KAOrC,OANAuY,GAAQtY,UAAY,kBACpBqT,EAAGvY,YAAYwd,GACfvf,EAAI0B,MAAQpH,KAAKksB,kBACjBjH,EAAQxd,YAAY/B,EAAI0B,OACxB1B,EAAIuf,QAAUA,EAEP4G,GAOTrmB,EAAK7C,UAAU2J,QAAU,SAAUC,GACjC,GAII1F,GAJAkD,EAAOwC,EAAMxC,KACb8C,EAASN,EAAMM,QAAUN,EAAMggB,WAC/B7mB,EAAM1F,KAAK0F,IACX2B,EAAOrH,KAEPwsB,EAAaxsB,KAAK4mB,YActB,KAVI/Z,GAAUnH,EAAIoJ,MAAQjC,GAAUnH,EAAIuC,QAC1B,aAAR8B,EACF/J,KAAK2L,OAAOhG,YAAY0X,UAAUrd,MAEnB,YAAR+J,GACP/J,KAAK2L,OAAOhG,YAAY6X,eAKhB,SAARzT,GAAmB8C,GAAUnH,EAAIuC,KAAM,CACzC,GAAItC,GAAc0B,EAAKsE,OAAOhG,WAC9BA,GAAY0X,UAAUhW,GACtB1B,EAAY+X,OACZzc,EAAKgX,aAAavS,EAAIuC,KAAM,uBAC5BjI,KAAK0O,gBAAgBhJ,EAAIuC,KAAM,WAC7BhH,EAAKmX,gBAAgB1S,EAAIuC,KAAM,uBAC/BtC,EAAYgY,SACZhY,EAAY6X,gBAKhB,GAAY,SAARzT,IACE8C,GAAUnH,EAAI8B,SACiB,SAA7BH,EAAKsE,OAAO9K,QAAQgC,MAAgD,SAA7BwE,EAAKsE,OAAO9K,QAAQgC,OAAwC,QAApBgK,EAAOtB,WACtFihB,EAAY,CACd,GAAIjlB,GAAUgF,EAAM6E,OACpBpR,MAAKysB,UAAUllB,GAMT,UAARwC,GAAoB8C,GAAUnH,EAAIojB,WACpC9oB,KAAK0F,IAAI0B,MAAMoO,WAAaxV,KAAKoH,MACjCpH,KAAKkmB,eAIP,IAAIwC,GAAWhjB,EAAI0B,KACnB,IAAIyF,GAAU6b,EAEZ,OAAQ3e,GACN,IAAK,QACHlD,EAAY7G,IACZ,MAEF,KAAK,OACL,IAAK,SACHA,KAAKkmB,cAAa,GAClBlmB,KAAKynB,kBACDznB,KAAKoH,QACPshB,EAASlT,UAAYxV,KAAKgsB,YAAYhsB,KAAKoH,OAE7C,MAEF,KAAK,QAEHpH,KAAKkmB,cAAa,GAClBlmB,KAAKynB,iBACL,MAEF,KAAK,UACL,IAAK,YAEHznB,KAAK2L,OAAO/F,UAAY5F,KAAK2L,OAAON,cACpC,MAEF,KAAK,SACCkB,EAAM6E,UAAYpR,KAAKyB,SAAS2F,QAC9BnG,EAAKsW,MAAMvX,KAAKoH,QAClByI,OAAO0E,KAAKvU,KAAKoH,MAAO,SAG5B,MAEF,KAAK,QAEHpH,KAAKkmB,cAAa,GAClBlmB,KAAKynB,iBACL,MAEF,KAAK,MACL,IAAK,QACHpb,WAAW,WACThF,EAAK6e,cAAa,GAClB7e,EAAKogB;EACJ,GAMT,GAAIwB,GAAWvjB,EAAIyB,KACnB,IAAI0F,GAAUoc,EACZ,OAAQlf,GACN,IAAK,QACHlD,EAAY7G,IACZ,MAEF,KAAK,OACL,IAAK,SACHA,KAAK4lB,cAAa,GAClB5lB,KAAKunB,kBACDvnB,KAAKmH,QACP8hB,EAASzT,UAAYxV,KAAKgsB,YAAYhsB,KAAKmH,OAE7C,MAEF,KAAK,QACHnH,KAAK4lB,cAAa,GAClB5lB,KAAKunB,iBACL,MAEF,KAAK,UACL,IAAK,YACHvnB,KAAK2L,OAAO/F,UAAY5F,KAAK2L,OAAON,cACpC,MAEF,KAAK,QACHrL,KAAK4lB,cAAa,GAClB5lB,KAAKunB,iBACL,MAEF,KAAK,MACL,IAAK,QACHlb,WAAW,WACThF,EAAKue,cAAa,GAClBve,EAAKkgB,mBACJ,GAOT,GAAIsE,GAAUnmB,EAAI6jB,IAClB,IAAI1c,GAAUgf,EAAQvlB,YAAsB,SAARyD,IAAoBwC,EAAMoC,SAAU,CACtE,GAAIkJ,GAAyBhS,QAAjB0G,EAAMmgB,QACbngB,EAAMmgB,QAAkC,IAAvB1sB,KAAKmmB,WAAa,GACnC5Z,EAAM4C,MAAQlO,EAAKwW,gBAAgB/R,EAAI4mB,YACxCzU,IAAQ2U,EAENvD,IACFhoB,EAAK+X,wBAAwBiQ,GAC7BA,EAASnhB,SAIP4gB,IACFznB,EAAK+X,wBAAwB0P,GAC7BA,EAAS5gB,UAIT+E,GAAUnH,EAAI2mB,UAAaG,IAAe3f,GAAUnH,EAAI4jB,SAAWzc,GAAUnH,EAAI4mB,aAC1E,SAARviB,GAAoBwC,EAAMoC,UACzBsa,IACFhoB,EAAK+X,wBAAwBiQ,GAC7BA,EAASnhB,SAID,WAARiC,GACF/J,KAAK2sB,UAAUpgB,IAQnB/G,EAAK7C,UAAUgqB,UAAY,SAAUpgB,GACnC,GAMIuU,GAAU8L,EAAUC,EAASC,EAE7BlN,EACAZ,EACAjZ,EACAD,EAXAmL,EAAS1E,EAAM2E,OAAS3E,EAAM4E,QAC9BtE,EAASN,EAAMM,QAAUN,EAAMggB,WAC/Bnb,EAAU7E,EAAM6E,QAChBC,EAAW9E,EAAM8E,SACjB0b,EAASxgB,EAAMwgB,OACfzb,GAAU,EAEV7P,EAAwC,SAA7BzB,KAAK2L,OAAO9K,QAAQgC,KAK/BmqB,EAAgBhtB,KAAK2L,OAAO7F,eAAeC,MAAM7D,OAAS,EACxDlC,KAAK2L,OAAO7F,eAAeC,OAC1B/F,MACHypB,EAAYuD,EAAc,GAC1BtD,EAAWsD,EAAcA,EAAc9qB,OAAS,EAGpD,IAAc,IAAV+O,GACF,GAAIpE,GAAU7M,KAAK0F,IAAI0B,QAChBpH,KAAKyB,SAAS2F,OAASmF,EAAM6E,UAC5BnQ,EAAKsW,MAAMvX,KAAKoH,SAClByI,OAAO0E,KAAKvU,KAAKoH,MAAO,UACxBkK,GAAU,OAIX,IAAIzE,GAAU7M,KAAK0F,IAAI8B,OAAQ,CAClC,GAAIglB,GAAaxsB,KAAK4mB,YACtB,IAAI4F,EAAY,CACd,GAAIjlB,GAAUgF,EAAM6E,OACpBpR,MAAKysB,UAAUllB,GACfsF,EAAO/E,QACPwJ,GAAU,QAIX,IAAc,IAAVL,EACHG,GAAW3P,IACb+D,EAAK4M,YAAY4a,GACjB1b,GAAU,OAGT,IAAc,IAAVL,EACHG,IACFpR,KAAKysB,UAAUpb,GACfxE,EAAO/E,QACPwJ,GAAU,OAGT,IAAc,IAAVL,GAAgBxP,EACnB2P,IACFpR,KAAK0O,gBAAgB7B,GACrByE,GAAU,OAGT,IAAc,IAAVL,GAAgBxP,EACnB2P,IACF5L,EAAK6M,SAAS2a,GACd1b,GAAU,OAGT,IAAc,IAAVL,GAAgBxP,EACnB2P,IAAYC,GACdrR,KAAKitB,kBACL3b,GAAU,GAEHF,GAAWC,IAClBrR,KAAKktB,iBACL5b,GAAU,OAGT,IAAc,IAAVL,GACP,GAAI8b,EAAQ,CAEV,GAAII,GAAUntB,KAAKotB,WACfD,IACFA,EAAQrlB,MAAMtC,EAAKmiB,cAAgB3nB,KAAKqtB,gBAAgBxgB,IAE1DyE,GAAU,OAGT,IAAc,IAAVL,GACP,GAAI8b,EAAQ,CAEV,GAAIO,GAAWttB,KAAKutB,YAChBD,IACFA,EAASxlB,MAAMtC,EAAKmiB,cAAgB3nB,KAAKqtB,gBAAgBxgB,IAE3DyE,GAAU,OAGT,IAAc,IAAVL,GACP,GAAI8b,IAAW1b,EAAU,CAEvB,GAAImc,GAAcxtB,KAAKytB,iBAAiB5gB,EACpC2gB,IACFxtB,KAAK8H,MAAM9H,KAAKqtB,gBAAgBG,IAElClc,GAAU,MAEP,IAAIyb,GAAU1b,GAAY5P,EAAU,CACvC,GAAIioB,EAASxF,SAAU,CACrB,GAAIwJ,GAAYhE,EAASjD,WACzBoG,GAAUa,EAAYA,EAAU/G,YAAc9gB,WAE3C,CACH,GAAIH,GAAMgkB,EAASthB,QACnBykB,GAAUnnB,EAAIihB,YAEZkG,IACFD,EAAWpnB,EAAKgJ,kBAAkBqe,GAClCC,EAAWD,EAAQlG,YACnBgH,EAAYnoB,EAAKgJ,kBAAkBse,GAC/BF,GAAYA,YAAoB3F,IACG,GAAjCyC,EAAS9f,OAAOgH,OAAO1O,QACzByrB,GAAaA,EAAU/jB,SACzBgW,EAAe5f,KAAK2L,OAAON,eAC3B2T,EAAgB0K,EAASE,eAEzBoD,EAAclrB,QAAQ,SAAUuF,GAC9BsmB,EAAU/jB,OAAOqV,WAAW5X,EAAMsmB,KAEpC3tB,KAAK8H,MAAMtC,EAAKmiB,cAAgB3nB,KAAKqtB,gBAAgBxgB,IAErD7M,KAAK2L,OAAOlD,UAAU,aACpB1C,MAAOinB,EACPhO,cAAeA,EACfE,cAAeyO,EACf/N,aAAcA,EACdC,aAAc7f,KAAK2L,OAAON,wBAM/B,IAAc,IAAV4F,EACH8b,IAAW1b,GAEbyP,EAAW9gB,KAAK4tB,gBACZ9M,IACF9gB,KAAK2L,OAAOiD,UAAS,GACrBkS,EAAShZ,MAAMtC,EAAKmiB,cAAgB3nB,KAAKqtB,gBAAgBxgB,KAE3DyE,GAAU,IAEFyb,GAAU3b,GAAWC,GAAY5P,GAEzCqf,EAAW9gB,KAAK4tB,gBACZ9M,IACFhb,EAAiB9F,KAAK2L,OAAO7F,eAC7BA,EAAe4J,MAAQ5J,EAAe4J,OAAS1P,KAC/C8F,EAAe6J,IAAMmR,EACrB/a,EAAQ/F,KAAK2L,OAAOsE,mBAAmBnK,EAAe4J,MAAO5J,EAAe6J,KAE5E3P,KAAK2L,OAAOT,OAAOnF,GACnB+a,EAAShZ,MAAM,UAEjBwJ,GAAU,GAEHyb,GAAU1b,GAAY5P,IAE7Bqf,EAAW2I,EAAUmE,gBACjB9M,GAAYA,EAASlX,SACvBgW,EAAe5f,KAAK2L,OAAON,eAC3B2T,EAAgB0K,EAASE,eAEzBoD,EAAclrB,QAAQ,SAAUuF,GAC9ByZ,EAASlX,OAAOqV,WAAW5X,EAAMyZ,KAEnC9gB,KAAK8H,MAAMtC,EAAKmiB,cAAgB3nB,KAAKqtB,gBAAgBxgB,IAErD7M,KAAK2L,OAAOlD,UAAU,aACpB1C,MAAOinB,EACPhO,cAAeA,EACfE,cAAe4B,EACflB,aAAcA,EACdC,aAAc7f,KAAK2L,OAAON,kBAG9BiG,GAAU,OAGT,IAAc,IAAVL,GACP,GAAI8b,IAAW1b,EAAU,CAEvB,GAAIwc,GAAc7tB,KAAK8tB,aAAajhB,EAChCghB,IACF7tB,KAAK8H,MAAM9H,KAAKqtB,gBAAgBQ,IAElCvc,GAAU,MAEP,IAAIyb,GAAU1b,GAAY5P,EAAU,CACvCiE,EAAM+jB,EAAUrhB,QAChB,IAAI2lB,GAAUroB,EAAI0lB,eACd2C,KACFjN,EAAWtb,EAAKgJ,kBAAkBuf,GAC9BjN,GAAYA,EAASlX,QACpBkX,YAAoBmG,KACjBnG,EAASkN,cACfpO,EAAe5f,KAAK2L,OAAON,eAC3B2T,EAAgB0K,EAASE,eAEzBoD,EAAclrB,QAAQ,SAAUuF,GAC9ByZ,EAASlX,OAAOqV,WAAW5X,EAAMyZ,KAEnC9gB,KAAK8H,MAAMtC,EAAKmiB,cAAgB3nB,KAAKqtB,gBAAgBxgB,IAErD7M,KAAK2L,OAAOlD,UAAU,aACpB1C,MAAOinB,EACPhO,cAAeA,EACfE,cAAe4B,EACflB,aAAcA,EACdC,aAAc7f,KAAK2L,OAAON,wBAM/B,IAAc,IAAV4F,EACP,GAAI8b,IAAW1b,EAEbub,EAAW5sB,KAAKiuB,YACZrB,IACF5sB,KAAK2L,OAAOiD,UAAS,GACrBge,EAAS9kB,MAAMtC,EAAKmiB,cAAgB3nB,KAAKqtB,gBAAgBxgB,KAE3DyE,GAAU,MAEP,KAAKyb,GAAU3b,GAAWC,GAAY5P,EAEzCmrB,EAAW5sB,KAAKiuB,YACZrB,IACF9mB,EAAiB9F,KAAK2L,OAAO7F,eAC7BA,EAAe4J,MAAQ5J,EAAe4J,OAAS1P,KAC/C8F,EAAe6J,IAAMid,EACrB7mB,EAAQ/F,KAAK2L,OAAOsE,mBAAmBnK,EAAe4J,MAAO5J,EAAe6J,KAE5E3P,KAAK2L,OAAOT,OAAOnF,GACnB6mB,EAAS9kB,MAAM,UAEjBwJ,GAAU,MAEP,IAAIyb,GAAU1b,GAAY5P,EAAU,CAGrCmrB,EADElD,EAASxF,SACAwF,EAAS7K,OAAS6K,EAAS7K,OAAOoP,YAAcpoB,OAGhD6jB,EAASuE,WAEtB,IAAIN,GAAYf,IAAaA,EAASqB,aAAerB,EAAShjB,OAAOiV,OACjE8O,IAAaA,EAAU/jB,SACzBgW,EAAe5f,KAAK2L,OAAON,eAC3B2T,EAAgB0K,EAASE,eAEzBoD,EAAclrB,QAAQ,SAAUuF,GAC9BsmB,EAAU/jB,OAAOqV,WAAW5X,EAAMsmB,KAEpC3tB,KAAK8H,MAAMtC,EAAKmiB,cAAgB3nB,KAAKqtB,gBAAgBxgB,IAErD7M,KAAK2L,OAAOlD,UAAU,aACpB1C,MAAOinB,EACPhO,cAAeA,EACfE,cAAeyO,EACf/N,aAAcA,EACdC,aAAc7f,KAAK2L,OAAON,kBAG9BiG,GAAU,EAIVA,IACF/E,EAAMO,iBACNP,EAAMmF,oBASVlM,EAAK7C,UAAU8pB,UAAY,SAAUllB,GACnC,GAAIA,EAAS,CAEX,GAAIN,GAAQjH,KAAK0F,IAAIsa,GAAG1Z,WACpBD,EAAQY,EAAMX,WACdoE,EAAYrE,EAAMqE,SACtBrE,GAAME,YAAYU,GAGhBjH,KAAKkkB,SACPlkB,KAAKkI,SAASX,GAGdvH,KAAKwH,OAAOD,GAGVA,IAEFlB,EAAMoB,YAAYR,GAClBZ,EAAMqE,UAAYA,IAQtBlF,EAAK6M,SAAW,SAAStM,GACvB,IAAKsK,MAAMnL,QAAQa,GACjB,MAAOP,GAAK6M,UAAUtM,GAGxB,IAAIA,GAASA,EAAM7D,OAAS,EAAG,CAC7B,GAAIunB,GAAY1jB,EAAM,GAClB6D,EAAS6f,EAAU7f,OACnB+B,EAAS8d,EAAU9d,OACnBoF,EAAa0Y,EAAUjE,UAC3B7Z,GAAOhG,YAAY6X,aAGnB,IAAIoC,GAAejU,EAAON,cAC1B7F,GAAK0oB,UAAUnoB,EACf,IAAI8Z,GAAelU,EAAON,cAG1BtF,GAAMjE,QAAQ,SAAUuF,GACtBA,EAAKuC,OAAOse,QAAQ7gB,KAItBsE,EAAOlD,UAAU,eACf1C,MAAOA,EAAMyF,MAAM,GACnB5B,OAAQA,EACRyO,MAAOtH,EACP6O,aAAcA,EACdC,aAAcA,MAWpBra,EAAK4M,YAAc,SAASrM,GAC1B,IAAKsK,MAAMnL,QAAQa,GACjB,MAAOP,GAAK4M,aAAarM,GAG3B,IAAIA,GAASA,EAAM7D,OAAS,EAAG,CAC7B,GAAIwnB,GAAW3jB,EAAMA,EAAM7D,OAAS,GAChC0H,EAAS8f,EAAS9f,OAClB+B,EAAS+d,EAAS/d,MAEtBA,GAAOiD,SAASjD,EAAO7F,eAAeC,MAGtC,IAAI6Z,GAAejU,EAAON,eACtBqT,EAAYgL,EACZyE,EAASpoB,EAAMmD,IAAI,SAAU7B,GAC/B,GAAI+e,GAAQ/e,EAAK+e,OAGjB,OAFAxc,GAAO+U,YAAYyH,EAAO1H,GAC1BA,EAAY0H,EACLA,GAIY,KAAjBrgB,EAAM7D,OACRisB,EAAO,GAAGrmB,QAGV6D,EAAOT,OAAOijB,EAEhB,IAAItO,GAAelU,EAAON,cAE1BM,GAAOlD,UAAU,kBACfiW,UAAWgL,EACX3jB,MAAOooB,EACPvkB,OAAQA,EACRgW,aAAcA,EACdC,aAAcA,MAYpBra,EAAK7C,UAAUsqB,gBAAkB,SAAU9lB,EAAOC,EAAO2C,GACvD,GAAI6V,GAAe5f,KAAK2L,OAAON,eAE3B+iB,EAAU,GAAI5oB,GAAKxF,KAAK2L,QAC1BxE,MAAiBtB,QAATsB,EAAsBA,EAAQ,GACtCC,MAAiBvB,QAATuB,EAAsBA,EAAQ,GACtC2C,KAAMA,GAERqkB,GAAQ5mB,QAAO,GACfxH,KAAK4J,OAAO2U,aAAa6P,EAASpuB,MAClCA,KAAK2L,OAAOhG,YAAY6X,cACxB4Q,EAAQtmB,MAAM,QACd,IAAI+X,GAAe7f,KAAK2L,OAAON,cAE/BrL,MAAK2L,OAAOlD,UAAU,qBACpB1C,OAAQqoB,GACR5P,WAAYxe,KACZ4J,OAAQ5J,KAAK4J,OACbgW,aAAcA,EACdC,aAAcA,KAWlBra,EAAK7C,UAAUuqB,eAAiB,SAAU/lB,EAAOC,EAAO2C,GACtD,GAAI6V,GAAe5f,KAAK2L,OAAON,eAE3B+iB,EAAU,GAAI5oB,GAAKxF,KAAK2L,QAC1BxE,MAAiBtB,QAATsB,EAAsBA,EAAQ,GACtCC,MAAiBvB,QAATuB,EAAsBA,EAAQ,GACtC2C,KAAMA,GAERqkB,GAAQ5mB,QAAO,GACfxH,KAAK4J,OAAO+U,YAAYyP,EAASpuB,MACjCA,KAAK2L,OAAOhG,YAAY6X,cACxB4Q,EAAQtmB,MAAM,QACd,IAAI+X,GAAe7f,KAAK2L,OAAON,cAE/BrL,MAAK2L,OAAOlD,UAAU,oBACpB1C,OAAQqoB,GACR1P,UAAW1e,KACX4J,OAAQ5J,KAAK4J,OACbgW,aAAcA,EACdC,aAAcA,KAWlBra,EAAK7C,UAAU0rB,UAAY,SAAUlnB,EAAOC,EAAO2C,GACjD,GAAI6V,GAAe5f,KAAK2L,OAAON,eAE3B+iB,EAAU,GAAI5oB,GAAKxF,KAAK2L,QAC1BxE,MAAiBtB,QAATsB,EAAsBA,EAAQ,GACtCC,MAAiBvB,QAATuB,EAAsBA,EAAQ,GACtC2C,KAAMA,GAERqkB,GAAQ5mB,QAAO,GACfxH,KAAK4J,OAAOnC,YAAY2mB,GACxBpuB,KAAK2L,OAAOhG,YAAY6X,cACxB4Q,EAAQtmB,MAAM,QACd,IAAI+X,GAAe7f,KAAK2L,OAAON,cAE/BrL,MAAK2L,OAAOlD,UAAU,eACpB1C,OAAQqoB,GACRxkB,OAAQ5J,KAAK4J,OACbgW,aAAcA,EACdC,aAAcA,KASlBra,EAAK7C,UAAU2rB,cAAgB,SAAUlQ,GACvC,GAAID,GAAUne,KAAK+J,IACnB,IAAIqU,GAAWD,EAAS,CACtB,GAAIyB,GAAe5f,KAAK2L,OAAON,cAC/BrL,MAAKke,WAAWE,EAChB,IAAIyB,GAAe7f,KAAK2L,OAAON,cAE/BrL,MAAK2L,OAAOlD,UAAU,cACpBpB,KAAMrH,KACNme,QAASA,EACTC,QAASA,EACTwB,aAAcA,EACdC,aAAcA,MAWpBra,EAAK7C,UAAU4rB,QAAU,SAAUlJ,GACjC,GAAIrlB,KAAK4mB,aAAc,CACrB,GAAI4H,GAAsB,QAAbnJ,EAAuB,GAAK,EACrCpgB,EAAqB,SAAbjF,KAAK+J,KAAmB,QAAS,OAC7C/J,MAAKof,YAEL,IAAIE,GAAYtf,KAAK4Q,OACjByO,EAAUrf,KAAKmf,IAGnBnf,MAAK4Q,OAAS5Q,KAAK4Q,OAAOpH,SAG1BxJ,KAAK4Q,OAAOuO,KAAK,SAAUnI,EAAGC,GAC5B,MAAID,GAAE/R,GAAQgS,EAAEhS,GAAcupB,EAC1BxX,EAAE/R,GAAQgS,EAAEhS,IAAeupB,EACxB,IAETxuB,KAAKmf,KAAiB,GAATqP,EAAc,MAAQ,OAEnCxuB,KAAK2L,OAAOlD,UAAU,QACpBpB,KAAMrH,KACNsf,UAAWA,EACXD,QAASA,EACTI,UAAWzf,KAAK4Q,OAChB4O,QAASxf,KAAKmf,OAGhBnf,KAAKuf,eAQT/Z,EAAK7C,UAAU8jB,UAAY,WAKzB,MAJKzmB,MAAK6e,SACR7e,KAAK6e,OAAS,GAAIoI,GAAWjnB,KAAK2L,QAClC3L,KAAK6e,OAAO4G,UAAUzlB,OAEjBA,KAAK6e,OAAOzW,UASrB5C,EAAKgJ,kBAAoB,SAAU3B,GACjC,KAAOA,GAAQ,CACb,GAAIA,EAAOxF,KACT,MAAOwF,GAAOxF,IAEhBwF,GAASA,EAAOvG,WAGlB,MAAOT,SAQTL,EAAK0oB,UAAY,SAAUnoB,GACzB,IAAKsK,MAAMnL,QAAQa,GAEjB,WADAP,GAAK0oB,WAAWnoB,GAIlB,IAAI0jB,GAAY1jB,EAAM,GAClB6D,EAAS6f,EAAU7f,OACnBmH,EAAa0Y,EAAUjE,UAEvB5b,GAAOgH,OAAOG,EAAahL,EAAM7D,QACnC0H,EAAOgH,OAAOG,EAAahL,EAAM7D,QAAQ4F,QAElC8B,EAAOgH,OAAOG,EAAa,GAClCnH,EAAOgH,OAAOG,EAAa,GAAGjJ,QAG9B8B,EAAO9B,SASXtC,EAAK7C,UAAUinB,aAAe,WAC5B,GAAIvR,GAAQrY,KAAK4J,OAAOgH,OAAO5O,QAAQhC,KACvC,OAAOA,MAAK4J,OAAOgH,OAAOyH,EAAQ,IAAMrY,KAAK4J,OAAOiV,QAQtDrZ,EAAK7C,UAAUirB,cAAgB,WAC7B,GAAI9M,GAAW,KACXpb,EAAM1F,KAAKoI,QACf,IAAI1C,GAAOA,EAAIY,WAAY,CAEzB,GAAIynB,GAAUroB,CACd,GACEqoB,GAAUA,EAAQ3C,gBAClBtK,EAAWtb,EAAKgJ,kBAAkBuf,SAE7BA,GAAYjN,YAAoBmG,KAAenG,EAASkN,aAEjE,MAAOlN,IAQTtb,EAAK7C,UAAUsrB,UAAY,WACzB,GAAIrB,GAAW,KACXlnB,EAAM1F,KAAKoI,QACf,IAAI1C,GAAOA,EAAIY,WAAY,CAEzB,GAAIumB,GAAUnnB,CACd,GACEmnB,GAAUA,EAAQlG,YAClBiG,EAAWpnB,EAAKgJ,kBAAkBqe,SAE7BA,GAAYD,YAAoB3F,KAAe2F,EAASoB,aAGjE,MAAOpB,IAQTpnB,EAAK7C,UAAU4qB,WAAa,WAC1B,GAAI9D,GAAY,KACZ/jB,EAAM1F,KAAKoI,QACf,IAAI1C,GAAOA,EAAIY,WAAY,CACzB,GAAImoB,GAAW/oB,EAAIY,WAAWuT,UAC9B4P,GAAYjkB,EAAKgJ,kBAAkBigB,GAGrC,MAAOhF,IAQTjkB,EAAK7C,UAAUyqB,UAAY,WACzB,GAAI1D,GAAW,KACXhkB,EAAM1F,KAAKoI,QACf,IAAI1C,GAAOA,EAAIY,WAAY,CACzB,GAAIooB,GAAUhpB,EAAIY,WAAWqoB,SAE7B,KADAjF,EAAYlkB,EAAKgJ,kBAAkBkgB,GAC5BA,GAAYhF,YAAoBzC,KAAeyC,EAASsE,aAC7DU,EAAUA,EAAQtD,gBAClB1B,EAAYlkB,EAAKgJ,kBAAkBkgB,GAGvC,MAAOhF,IASTlkB,EAAK7C,UAAU8qB,iBAAmB,SAAU/V,GAC1C,GAAIhS,GAAM1F,KAAK0F,GAEf,QAAQgS,GACN,IAAKhS,GAAI0B,MACP,GAAIpH,KAAKokB,cACP,MAAO1e,GAAIyB,KAGf,KAAKzB,GAAIyB,MACP,GAAInH,KAAK4mB,aACP,MAAOlhB,GAAI8B,MAGf,KAAK9B,GAAI8B,OACP,MAAO9B,GAAIuC,IACb,KAAKvC,GAAIuC,KACP,GAAIvC,EAAIoJ,KACN,MAAOpJ,GAAIoJ,IAGf,SACE,MAAO,QAUbtJ,EAAK7C,UAAUmrB,aAAe,SAAUpW,GACtC,GAAIhS,GAAM1F,KAAK0F,GAEf,QAAQgS,GACN,IAAKhS,GAAIoJ,KACP,MAAOpJ,GAAIuC,IACb,KAAKvC,GAAIuC,KACP,GAAIjI,KAAK4mB,aACP,MAAOlhB,GAAI8B,MAGf,KAAK9B,GAAI8B,OACP,GAAIxH,KAAKokB,cACP,MAAO1e,GAAIyB,KAGf,KAAKzB,GAAIyB,MACP,IAAKnH,KAAK4mB,aACR,MAAOlhB,GAAI0B,KAEf,SACE,MAAO,QAYb5B,EAAK7C,UAAU0qB,gBAAkB,SAAUpT,GACzC,GAAIvU,GAAM1F,KAAK0F,GACf,KAAK,GAAIjC,KAAQiC,GACf,GAAIA,EAAIe,eAAehD,IACjBiC,EAAIjC,IAASwW,EACf,MAAOxW,EAIb,OAAO,OAST+B,EAAK7C,UAAUikB,WAAa,WAC1B,MAAoB,SAAb5mB,KAAK+J,MAAgC,UAAb/J,KAAK+J,MAItCvE,EAAKopB,aACHC,KAAQ,8HAGR3X,OAAU,+EAEV4X,MAAS,yEAETC,OAAU,oGAYZvpB,EAAK7C,UAAU+L,gBAAkB,SAAUqD,EAAQC,GACjD,GAAI3K,GAAOrH,KACPgvB,EAASxpB,EAAKopB,YACd3c,IAgDJ,IA9CIjS,KAAKyB,SAAS2F,OAChB6K,EAAMC,MACJ7J,KAAM,OACNuF,MAAO,gCACPjB,UAAW,mBAAqB3M,KAAK+J,KACrCgY,UAEI1Z,KAAM,OACNsE,UAAW,wBACO,QAAb3M,KAAK+J,KAAiB,uBAAyB,IACpD6D,MAAOohB,EAAOH,KACd1c,MAAO,WACL9K,EAAKinB,cAAc,WAIrBjmB,KAAM,QACNsE,UAAW,yBACO,SAAb3M,KAAK+J,KAAkB,uBAAyB,IACrD6D,MAAOohB,EAAOF,MACd3c,MAAO,WACL9K,EAAKinB,cAAc,YAIrBjmB,KAAM,SACNsE,UAAW,0BACO,UAAb3M,KAAK+J,KAAmB,uBAAyB,IACtD6D,MAAOohB,EAAO9X,OACd/E,MAAO,WACL9K,EAAKinB,cAAc,aAIrBjmB,KAAM,SACNsE,UAAW,0BACO,UAAb3M,KAAK+J,KAAmB,uBAAyB,IACtD6D,MAAOohB,EAAOD,OACd5c,MAAO,WACL9K,EAAKinB,cAAc,eAOzBtuB,KAAK4mB,aAAc,CACrB,GAAIvB,GAA2B,OAAbrlB,KAAKmf,KAAiB,OAAQ,KAChDlN,GAAMC,MACJ7J,KAAM,OACNuF,MAAO,2BAA6B5N,KAAK+J,KACzC4C,UAAW,mBAAqB0Y,EAChClT,MAAO,WACL9K,EAAKknB,QAAQlJ,IAEftD,UAEI1Z,KAAM,YACNsE,UAAW,sBACXiB,MAAO,2BAA6B5N,KAAK+J,KAAO,sBAChDoI,MAAO,WACL9K,EAAKknB,QAAQ,UAIflmB,KAAM,aACNsE,UAAW,uBACXiB,MAAO,2BAA6B5N,KAAK+J,KAAM,uBAC/CoI,MAAO,WACL9K,EAAKknB,QAAQ,aAOvB,GAAIvuB,KAAK4J,QAAU5J,KAAK4J,OAAOgd,aAAc,CACvC3U,EAAM/P,QAER+P,EAAMC,MACJnI,KAAQ,aAKZ,IAAI6G,GAASvJ,EAAKuC,OAAOgH,MACrBvJ,IAAQuJ,EAAOA,EAAO1O,OAAS,IACjC+P,EAAMC,MACJ7J,KAAM,SACNuF,MAAO,wEACPuU,aAAc,8CACdxV,UAAW,oBACXwF,MAAO,WACL9K,EAAKgnB,UAAU,GAAI,GAAI,SAEzBtM,UAEI1Z,KAAM,OACNsE,UAAW,uBACXiB,MAAOohB,EAAOH,KACd1c,MAAO,WACL9K,EAAKgnB,UAAU,GAAI,GAAI,WAIzBhmB,KAAM,QACNsE,UAAW,wBACXiB,MAAOohB,EAAOF,MACd3c,MAAO,WACL9K,EAAKgnB,UAAU,UAIjBhmB,KAAM,SACNsE,UAAW,yBACXiB,MAAOohB,EAAO9X,OACd/E,MAAO,WACL9K,EAAKgnB,UAAU,UAIjBhmB,KAAM,SACNsE,UAAW,yBACXiB,MAAOohB,EAAOD,OACd5c,MAAO,WACL9K,EAAKgnB,UAAU,GAAI,GAAI,eAQjCpc,EAAMC,MACJ7J,KAAM,SACNuF,MAAO,mEACPuU,aAAc,8CACdxV,UAAW,oBACXwF,MAAO,WACL9K,EAAK4lB,gBAAgB,GAAI,GAAI,SAE/BlL,UAEI1Z,KAAM,OACNsE,UAAW,uBACXiB,MAAOohB,EAAOH,KACd1c,MAAO,WACL9K,EAAK4lB,gBAAgB,GAAI,GAAI,WAI/B5kB,KAAM,QACNsE,UAAW,wBACXiB,MAAOohB,EAAOF,MACd3c,MAAO,WACL9K,EAAK4lB,gBAAgB,UAIvB5kB,KAAM,SACNsE,UAAW,yBACXiB,MAAOohB,EAAO9X,OACd/E,MAAO,WACL9K,EAAK4lB,gBAAgB,UAIvB5kB,KAAM,SACNsE,UAAW,yBACXiB,MAAOohB,EAAOD,OACd5c,MAAO,WACL9K,EAAK4lB,gBAAgB,GAAI,GAAI,eAMjCjtB,KAAKyB,SAAS0F,QAEhB8K,EAAMC,MACJ7J,KAAM,YACNuF,MAAO,gCACPjB,UAAW,uBACXwF,MAAO,WACL3M,EAAK4M,YAAY/K,MAKrB4K,EAAMC,MACJ7J,KAAM,SACNuF,MAAO,+BACPjB,UAAW,oBACXwF,MAAO,WACL3M,EAAK6M,SAAShL,OAMtB,GAAIY,GAAO,GAAI1C,GAAY0M,GAAQK,MAAON,GAC1C/J,GAAKsK,KAAKR,EAAQ/R,KAAK2L,OAAO3E,UAShCxB,EAAK7C,UAAUmjB,SAAW,SAAS1e,GACjC,MAAIA,aAAiBiJ,OACZ,QAELjJ,YAAiBxF,QACZ,SAEY,gBAAX,IAA0D,gBAA5B5B,MAAKooB,YAAYhhB,GAChD,SAGF,QAUT5B,EAAK7C,UAAUylB,YAAc,SAASG,GACpC,GAAI0G,GAAQ1G,EAAInB,cACZ8H,EAAMvc,OAAO4V,GACb4G,EAAWlU,WAAWsN,EAE1B,OAAW,IAAPA,EACK,GAES,QAAT0G,EACA,KAES,QAATA,GACA,EAES,SAATA,GACA,EAECG,MAAMF,IAASE,MAAMD,GAItB5G,EAHA2G,GAaX1pB,EAAK7C,UAAUqpB,YAAc,SAAU3jB,GACrC,GAAoB,gBAATA,GACT,MAAO8O,QAAO9O,EAGd,IAAIgnB,GAAclY,OAAO9O,GACpBwO,QAAQ,KAAM,SACdA,QAAQ,KAAM,QACdA,QAAQ,KAAM,QACdA,QAAQ,MAAO,WACfA,QAAQ,KAAM,UACdA,QAAQ,KAAM,UAEf/V,EAAOwC,KAAKC,UAAU8rB,GACtBC,EAAOxuB,EAAKgb,UAAU,EAAGhb,EAAKoB,OAAS,EAI3C,OAHIlC,MAAK2L,OAAO9K,QAAQiU,iBAAkB,IACxCwa,EAAOruB,EAAK8T,mBAAmBua,IAE1BA,GAUX9pB,EAAK7C,UAAU2lB,cAAgB,SAAUiH,GACvC,GAAIzuB,GAAO,IAAMd,KAAKwvB,YAAYD,GAAe,IAC7CF,EAAcpuB,EAAKmC,MAAMtC,EAE7B,OAAOuuB,GACFxY,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,iBAAkB,KAC1BA,QAAQ,SAAU,MAYzBrR,EAAK7C,UAAU6sB,YAAc,SAAUnnB,GAIrC,IAFA,GAAIonB,GAAU,GACVzqB,EAAI,EACDA,EAAIqD,EAAKnG,QAAQ,CACtB,GAAIzB,GAAI4H,EAAKyN,OAAO9Q,EACX,OAALvE,EACFgvB,GAAW,MAEC,MAALhvB,GACPgvB,GAAWhvB,EACXuE,IAEAvE,EAAI4H,EAAKyN,OAAO9Q,IACN,KAANvE,GAAuC,IAA3B,aAAauB,QAAQvB,MACnCgvB,GAAW,MAEbA,GAAWhvB,GAGXgvB,GADY,KAALhvB,EACI,MAGAA,EAEbuE,IAGF,MAAOyqB,GAIT,IAAIxI,GAAaxC,EAAkBjf,EAEnC3F,GAAOD,QAAU4F,GAKZ,SAAS3F,EAAQD,EAASM,GAW/B,QAASwvB,GAAmB/jB,EAAQjJ,EAAOitB,GAOzC,QAASC,GAAW/sB,GAElB8I,EAAO7I,QAAQD,EAGf,IAAIuL,GAAUzC,EAAOjG,KAAOiG,EAAOjG,IAAI0I,OACnCA,IACFA,EAAQtG,QA6CZ,IAAK,GAxCD+nB,IACFvtB,MACE+F,KAAQ,OACRuF,MAAS,6BACTuE,MAAS,WACPyd,EAAW,UAGfE,MACEznB,KAAQ,OACRuF,MAAS,wBACTuE,MAAS,WACPyd,EAAW,UAGfvnB,MACEA,KAAQ,OACRuF,MAAS,8BACTuE,MAAS,WACPyd,EAAW,UAGfrG,MACElhB,KAAQ,OACRuF,MAAS,wBACTuE,MAAS,WACPyd,EAAW,UAGfG,MACE1nB,KAAQ,OACRuF,MAAS,sBACTuE,MAAS,WACPyd,EAAW,WAMb3d,KACKjN,EAAI,EAAGA,EAAItC,EAAMR,OAAQ8C,IAAK,CACrC,GAAInC,GAAOH,EAAMsC,GACbyc,EAAOoO,EAAehtB,EAC1B,KAAK4e,EACH,KAAM,IAAI1gB,OAAM,iBAAmB8B,EAAO,IAG5C4e,GAAK9U,UAAY,yBAA4BgjB,GAAW9sB,EAAQ,uBAAyB,IACzFoP,EAAMC,KAAKuP,GAIb,GAAIuO,GAAcH,EAAeF,EACjC,KAAKK,EACH,KAAM,IAAIjvB,OAAM,iBAAmB4uB,EAAU,IAE/C,IAAIM,GAAeD,EAAY3nB,KAG3B6nB,EAAMzjB,SAASC,cAAc,SACjCwjB,GAAIvjB,UAAY,wCAChBujB,EAAI1a,UAAYya,EAAe,YAC/BC,EAAItiB,MAAQ,qBACZsiB,EAAItjB,QAAU,WACZ,GAAI3E,GAAO,GAAI1C,GAAY0M,EAC3BhK,GAAKsK,KAAK2d,GAGZ,IAAIC,GAAM1jB,SAASC,cAAc,MAKjC,OAJAyjB,GAAIxjB,UAAY,mBAChBwjB,EAAI7c,MAAM8c,SAAW,WACrBD,EAAI1oB,YAAYyoB,GAETC,EArGT,GAAI5qB,GAAcrF,EAAoB,EAwGtCN,GAAQsE,OAASwrB,GAKZ,SAAS7vB,EAAQD,EAASM,GAG/B,GAAIwV,GAAW,WACf,GAAI2a,IAAUC,MAAO,aACrBC,MACAC,UAAWrvB,MAAQ,EAAEsvB,WAAa,EAAEC,OAAS,EAAEC,WAAa,EAAEC,OAAS,EAAEC,gBAAkB,EAAEC,KAAO,EAAEC,mBAAqB,EAAEC,KAAO,GAAGC,MAAQ,GAAGC,SAAW,GAAGC,UAAY,GAAGC,IAAM,GAAGC,WAAa,GAAGC,UAAY,GAAGC,IAAI,GAAGC,IAAI,GAAGC,eAAiB,GAAGC,WAAa,GAAGC,IAAI,GAAGC,IAAI,GAAGC,IAAI,GAAGC,IAAI,GAAGC,gBAAkB,GAAGC,QAAU,EAAEC,KAAO,GAC7UC,YAAaC,EAAE,QAAQC,EAAE,SAASC,EAAE,SAASC,EAAE,OAAOC,GAAG,OAAOC,GAAG,QAAQC,GAAG,MAAMC,GAAG,IAAIC,GAAG,IAAIC,GAAG,IAAIC,GAAG,IAAIC,GAAG,IAAIC,GAAG,KAC1HC,cAAe,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAC5JC,cAAe,SAAmBC,EAAOC,EAAOC,EAAS7C,EAAG8C,EAAQC,EAAGC,GAEvE,GAAIC,GAAKF,EAAGpxB,OAAS,CACrB,QAAQmxB,GACR,IAAK,GACKrzB,KAAKyzB,EAAIP,EAAOrc,QAAQ,YAAa,MACzBA,QAAQ,OAAO,MACfA,QAAQ,OAAO,MACfA,QAAQ,OAAO,KACfA,QAAQ,OAAO,KACfA,QAAQ,OAAO,MACfA,QAAQ,OAAO,KAErC,MACA,KAAK,GAAE7W,KAAKyzB,EAAI9gB,OAAOugB,EACvB,MACA,KAAK,GAAElzB,KAAKyzB,EAAI,IAChB,MACA,KAAK,GAAEzzB,KAAKyzB,GAAI,CAChB,MACA,KAAK,GAAEzzB,KAAKyzB,GAAI,CAChB,MACA,KAAK,GAAE,MAAOzzB,MAAKyzB,EAAIH,EAAGE,EAAG,EAE7B,KAAK,IAAGxzB,KAAKyzB,IACb,MACA,KAAK,IAAGzzB,KAAKyzB,EAAIH,EAAGE,EAAG,EACvB,MACA,KAAK,IAAGxzB,KAAKyzB,GAAKH,EAAGE,EAAG,GAAIF,EAAGE,GAC/B,MACA,KAAK,IAAGxzB,KAAKyzB,KAAQzzB,KAAKyzB,EAAEH,EAAGE,GAAI,IAAMF,EAAGE,GAAI,EAChD,MACA,KAAK,IAAGxzB,KAAKyzB,EAAIH,EAAGE,EAAG,GAAIF,EAAGE,EAAG,GAAGF,EAAGE,GAAI,IAAMF,EAAGE,GAAI,EACxD,MACA,KAAK,IAAGxzB,KAAKyzB,IACb,MACA,KAAK,IAAGzzB,KAAKyzB,EAAIH,EAAGE,EAAG,EACvB,MACA,KAAK,IAAGxzB,KAAKyzB,GAAKH,EAAGE,GACrB,MACA,KAAK,IAAGxzB,KAAKyzB,EAAIH,EAAGE,EAAG,GAAIF,EAAGE,EAAG,GAAGthB,KAAKohB,EAAGE,MAI5CvsB,QAASysB,EAAE,EAAEtB,GAAG,EAAE,IAAIuB,EAAE,EAAEtB,GAAG,EAAE,IAAIuB,EAAE,EAAEtB,GAAG,EAAE,GAAGuB,EAAE,EAAEtB,IAAI,EAAE,IAAIC,IAAI,EAAE,IAAIsB,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEvB,IAAI,EAAE,IAAII,IAAI,EAAE,MAAMoB,GAAG,KAAKzB,IAAI,EAAE,MAAMA,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,KAAKN,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,KAAKN,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,KAAKN,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMN,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMN,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMN,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,KAAKN,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,KAAKN,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,KAAKN,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGC,IAAI,EAAE,GAAGC,IAAI,EAAE,GAAGE,IAAI,EAAE,KAAKN,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,GAAGE,IAAI,EAAE,KAAKW,EAAE,GAAGtB,GAAG,EAAE,IAAIO,IAAI,EAAE,IAAIwB,GAAG,GAAGC,GAAG,KAAKV,EAAE,EAAEtB,GAAG,EAAE,IAAIuB,EAAE,EAAEtB,GAAG,EAAE,IAAIuB,EAAE,EAAEtB,GAAG,EAAE,GAAGuB,EAAE,EAAEtB,IAAI,EAAE,IAAIC,IAAI,EAAE,IAAIuB,GAAG,GAAGC,GAAG,EAAEC,GAAG,EAAEvB,IAAI,EAAE,IAAII,IAAI,EAAE,IAAIC,IAAI,EAAE,IAAIsB,GAAG,KAAKH,GAAG,EAAE,KAAKzB,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMJ,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMF,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMD,IAAI,EAAE,MAAMH,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMF,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMF,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMN,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMW,EAAE,GAAGtB,GAAG,EAAE,IAAIgC,GAAG,KAAKV,EAAE,EAAEtB,GAAG,EAAE,IAAIuB,EAAE,EAAEtB,GAAG,EAAE,IAAIuB,EAAE,EAAEtB,GAAG,EAAE,GAAGuB,EAAE,EAAEtB,IAAI,EAAE,IAAIC,IAAI,EAAE,IAAIuB,GAAG,GAAGC,GAAG,EAAEC,GAAG,EAAEvB,IAAI,EAAE,IAAII,IAAI,EAAE,MAAML,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMW,EAAE,EAAEtB,GAAG,EAAE,IAAIuB,EAAE,EAAEtB,GAAG,EAAE,IAAIuB,EAAE,EAAEtB,GAAG,EAAE,GAAGuB,EAAE,EAAEtB,IAAI,EAAE,IAAIC,IAAI,EAAE,IAAIuB,GAAG,GAAGC,GAAG,EAAEC,GAAG,EAAEvB,IAAI,EAAE,IAAII,IAAI,EAAE,MAAMH,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMF,IAAI,EAAE,IAAIE,IAAI,EAAE,MAAMA,IAAI,EAAE,IAAIE,IAAI,EAAE,MACtwCuB,gBAAiBL,IAAI,EAAE,IACvBM,WAAY,SAAoBhM,EAAKiM,GACjC,KAAM,IAAIzzB,OAAMwnB,IAEpBnlB,MAAO,SAAe2E,GA0BlB,QAAS0sB,GAAU/I,GACfgJ,EAAMxyB,OAASwyB,EAAMxyB,OAAS,EAAEwpB,EAChCiJ,EAAOzyB,OAASyyB,EAAOzyB,OAASwpB,EAChCkJ,EAAO1yB,OAAS0yB,EAAO1yB,OAASwpB,EAGpC,QAASmJ,KACL,GAAIC,EAMJ,OALAA,GAAQC,EAAKC,MAAMH,OAAS,EAEP,gBAAVC,KACPA,EAAQC,EAAKvE,SAASsE,IAAUA,GAE7BA,EAtCX,GAAIC,GAAO/0B,KACP00B,GAAS,GACTC,GAAU,MACVC,KACA3tB,EAAQjH,KAAKiH,MACbisB,EAAS,GACTE,EAAW,EACXD,EAAS,EACT8B,EAAa,EACbC,EAAS,EACT9D,EAAM,CAIVpxB,MAAKg1B,MAAMG,SAASptB,GACpB/H,KAAKg1B,MAAMzE,GAAKvwB,KAAKuwB,GACrBvwB,KAAKuwB,GAAGyE,MAAQh1B,KAAKg1B,MACW,mBAArBh1B,MAAKg1B,MAAMI,SAClBp1B,KAAKg1B,MAAMI,UACf,IAAIC,GAAQr1B,KAAKg1B,MAAMI,MACvBR,GAAO1iB,KAAKmjB,GAEsB,kBAAvBr1B,MAAKuwB,GAAGgE,aACfv0B,KAAKu0B,WAAav0B,KAAKuwB,GAAGgE,WAmB9B,KADA,GAAIe,GAAQC,EAAgBC,EAAO9sB,EAAW+sB,EAAY/0B,EAAEuc,EAAIyY,EAAUC,EAAzBC,OACpC,CAgBT,GAdAJ,EAAQd,EAAMA,EAAMxyB,OAAO,GAGvBlC,KAAKs0B,eAAekB,GACpB9sB,EAAS1I,KAAKs0B,eAAekB,IAEf,MAAVF,IACAA,EAAST,KAEbnsB,EAASzB,EAAMuuB,IAAUvuB,EAAMuuB,GAAOF,IAKpB,mBAAX5sB,KAA2BA,EAAOxG,SAAWwG,EAAO,GAAI,CAE/D,IAAKusB,EAAY,CAEbU,IACA,KAAKj1B,IAAKuG,GAAMuuB,GAAYx1B,KAAKkyB,WAAWxxB,IAAMA,EAAI,GAClDi1B,EAASzjB,KAAK,IAAIlS,KAAKkyB,WAAWxxB,GAAG,IAEzC,IAAIm1B,GAAS,EAETA,GADA71B,KAAKg1B,MAAMc,aACF,wBAAwB1C,EAAS,GAAG,MAAMpzB,KAAKg1B,MAAMc,eAAe,eAAeH,EAASlgB,KAAK,MAAQ,UAAYzV,KAAKkyB,WAAWoD,GAAS,IAE9I,wBAAwBlC,EAAS,GAAG,iBACpB,GAAVkC,EAAsB,eACV,KAAKt1B,KAAKkyB,WAAWoD,IAAWA,GAAQ,KAEvEt1B,KAAKu0B,WAAWsB,GACXxtB,KAAMrI,KAAKg1B,MAAMpe,MAAOke,MAAO90B,KAAKkyB,WAAWoD,IAAWA,EAAQS,KAAM/1B,KAAKg1B,MAAM5B,SAAU4C,IAAKX,EAAOM,SAAUA,IAI5H,GAAkB,GAAdV,EAAiB,CACjB,GAAIK,GAAUlE,EACV,KAAM,IAAIrwB,OAAM80B,GAAU,kBAI9B1C,GAASnzB,KAAKg1B,MAAM7B,OACpBD,EAASlzB,KAAKg1B,MAAM9B,OACpBE,EAAWpzB,KAAKg1B,MAAM5B,SACtBiC,EAAQr1B,KAAKg1B,MAAMI,OACnBE,EAAST,IAIb,OAAU,CAEN,GAAKK,EAAOne,YAAe9P,GAAMuuB,GAC7B,KAEJ,IAAa,GAATA,EACA,KAAM,IAAIz0B,OAAM80B,GAAU,kBAE9BpB,GAAS,GACTe,EAAQd,EAAMA,EAAMxyB,OAAO,GAG/BqzB,EAAiBD,EACjBA,EAASJ,EACTM,EAAQd,EAAMA,EAAMxyB,OAAO,GAC3BwG,EAASzB,EAAMuuB,IAAUvuB,EAAMuuB,GAAON,GACtCD,EAAa,EAIjB,GAAIvsB,EAAO,YAAc2H,QAAS3H,EAAOxG,OAAS,EAC9C,KAAM,IAAInB,OAAM,oDAAoDy0B,EAAM,YAAYF,EAG1F,QAAQ5sB,EAAO,IAEX,IAAK,GAGDgsB,EAAMxiB,KAAKojB,GACXX,EAAOziB,KAAKlS,KAAKg1B,MAAM9B,QACvB0B,EAAO1iB,KAAKlS,KAAKg1B,MAAMI,QACvBV,EAAMxiB,KAAKxJ,EAAO,IAClB4sB,EAAS,KACJC,GAQDD,EAASC,EACTA,EAAiB,OARjBpC,EAASnzB,KAAKg1B,MAAM7B,OACpBD,EAASlzB,KAAKg1B,MAAM9B,OACpBE,EAAWpzB,KAAKg1B,MAAM5B,SACtBiC,EAAQr1B,KAAKg1B,MAAMI,OACfH,EAAa,GACbA,IAKR,MAEJ,KAAK,GAgBD,GAbAhY,EAAMjd,KAAKgzB,aAAatqB,EAAO,IAAI,GAGnCktB,EAAMnC,EAAIkB,EAAOA,EAAOzyB,OAAO+a,GAE/B2Y,EAAMrC,IACF0C,WAAYrB,EAAOA,EAAO1yB,QAAQ+a,GAAK,IAAIgZ,WAC3CC,UAAWtB,EAAOA,EAAO1yB,OAAO,GAAGg0B,UACnCC,aAAcvB,EAAOA,EAAO1yB,QAAQ+a,GAAK,IAAIkZ,aAC7CC,YAAaxB,EAAOA,EAAO1yB,OAAO,GAAGk0B,aAEzCX,EAAIz1B,KAAKizB,cAAc1yB,KAAKq1B,EAAO1C,EAAQC,EAAQC,EAAUpzB,KAAKuwB,GAAI7nB,EAAO,GAAIisB,EAAQC,GAExE,mBAANa,GACP,MAAOA,EAIPxY,KACAyX,EAAQA,EAAMlpB,MAAM,EAAE,GAAGyR,EAAI,GAC7B0X,EAASA,EAAOnpB,MAAM,EAAG,GAAGyR,GAC5B2X,EAASA,EAAOppB,MAAM,EAAG,GAAGyR,IAGhCyX,EAAMxiB,KAAKlS,KAAKgzB,aAAatqB,EAAO,IAAI,IACxCisB,EAAOziB,KAAK0jB,EAAMnC,GAClBmB,EAAO1iB,KAAK0jB,EAAMrC,IAElBmC,EAAWzuB,EAAMytB,EAAMA,EAAMxyB,OAAO,IAAIwyB,EAAMA,EAAMxyB,OAAO,IAC3DwyB,EAAMxiB,KAAKwjB,EACX,MAEJ,KAAK,GACD,OAAO,GAKnB,OAAO,IAGPV,EAAQ,WACZ,GAAIA,IAAU5D,IAAI,EAClBmD,WAAW,SAAoBhM,EAAKiM,GAC5B,IAAIx0B,KAAKuwB,GAAGgE,WAGR,KAAM,IAAIxzB,OAAMwnB,EAFhBvoB,MAAKuwB,GAAGgE,WAAWhM,EAAKiM,IAKpCW,SAAS,SAAUptB,GAOX,MANA/H,MAAKq2B,OAAStuB,EACd/H,KAAKs2B,MAAQt2B,KAAKu2B,MAAQv2B,KAAKw2B,MAAO,EACtCx2B,KAAKozB,SAAWpzB,KAAKmzB,OAAS,EAC9BnzB,KAAKkzB,OAASlzB,KAAKy2B,QAAUz2B,KAAK4W,MAAQ,GAC1C5W,KAAK02B,gBAAkB,WACvB12B,KAAKo1B,QAAUa,WAAW,EAAEE,aAAa,EAAED,UAAU,EAAEE,YAAY,GAC5Dp2B,MAEf+H,MAAM,WACE,GAAI4uB,GAAK32B,KAAKq2B,OAAO,EACrBr2B,MAAKkzB,QAAQyD,EACb32B,KAAKmzB,SACLnzB,KAAK4W,OAAO+f,EACZ32B,KAAKy2B,SAASE,CACd,IAAIC,GAAQD,EAAG/f,MAAM,KAGrB,OAFIggB,IAAO52B,KAAKozB,WAChBpzB,KAAKq2B,OAASr2B,KAAKq2B,OAAO7qB,MAAM,GACzBmrB,GAEfE,MAAM,SAAUF,GAER,MADA32B,MAAKq2B,OAASM,EAAK32B,KAAKq2B,OACjBr2B,MAEfic,KAAK,WAEG,MADAjc,MAAKs2B,OAAQ,EACNt2B,MAEf82B,KAAK,SAAUpL,GACP1rB,KAAKq2B,OAASr2B,KAAK4W,MAAMpL,MAAMkgB,GAAK1rB,KAAKq2B,QAEjDU,UAAU,WACF,GAAIC,GAAOh3B,KAAKy2B,QAAQ7a,OAAO,EAAG5b,KAAKy2B,QAAQv0B,OAASlC,KAAK4W,MAAM1U,OACnE,QAAQ80B,EAAK90B,OAAS,GAAK,MAAM,IAAM80B,EAAKpb,OAAO,KAAK/E,QAAQ,MAAO,KAE/EogB,cAAc,WACN,GAAIxlB,GAAOzR,KAAK4W,KAIhB,OAHInF,GAAKvP,OAAS,KACduP,GAAQzR,KAAKq2B,OAAOza,OAAO,EAAG,GAAGnK,EAAKvP,UAElCuP,EAAKmK,OAAO,EAAE,KAAKnK,EAAKvP,OAAS,GAAK,MAAM,KAAK2U,QAAQ,MAAO,KAEhFif,aAAa,WACL,GAAIoB,GAAMl3B,KAAK+2B,YACXt2B,EAAI,GAAI4P,OAAM6mB,EAAIh1B,OAAS,GAAGuT,KAAK,IACvC,OAAOyhB,GAAMl3B,KAAKi3B,gBAAkB,KAAOx2B,EAAE,KAErDgR,KAAK,WACG,GAAIzR,KAAKw2B,KACL,MAAOx2B,MAAKoxB,GAEXpxB,MAAKq2B,SAAQr2B,KAAKw2B,MAAO,EAE9B,IAAI1B,GACAle,EACAugB,EACA9e,EAEAue,CACC52B,MAAKs2B,QACNt2B,KAAKkzB,OAAS,GACdlzB,KAAK4W,MAAQ,GAGjB,KAAK,GADDwgB,GAAQp3B,KAAKq3B,gBACRryB,EAAE,EAAEA,EAAIoyB,EAAMl1B,SACnBi1B,EAAYn3B,KAAKq2B,OAAOzf,MAAM5W,KAAKo3B,MAAMA,EAAMpyB,MAC3CmyB,GAAevgB,KAASugB,EAAU,GAAGj1B,OAAS0U,EAAM,GAAG1U,UACvD0U,EAAQugB,EACR9e,EAAQrT,EACHhF,KAAKa,QAAQy2B,OALKtyB,KAQ/B,MAAI4R,IACAggB,EAAQhgB,EAAM,GAAGA,MAAM,SACnBggB,IAAO52B,KAAKozB,UAAYwD,EAAM10B,QAClClC,KAAKo1B,QAAUa,WAAYj2B,KAAKo1B,OAAOc,UACxBA,UAAWl2B,KAAKozB,SAAS,EACzB+C,aAAcn2B,KAAKo1B,OAAOgB,YAC1BA,YAAaQ,EAAQA,EAAMA,EAAM10B,OAAO,GAAGA,OAAO,EAAIlC,KAAKo1B,OAAOgB,YAAcxf,EAAM,GAAG1U,QACxGlC,KAAKkzB,QAAUtc,EAAM,GACrB5W,KAAK4W,OAASA,EAAM,GACpB5W,KAAKmzB,OAASnzB,KAAKkzB,OAAOhxB,OAC1BlC,KAAKs2B,OAAQ,EACbt2B,KAAKq2B,OAASr2B,KAAKq2B,OAAO7qB,MAAMoL,EAAM,GAAG1U,QACzClC,KAAKy2B,SAAW7f,EAAM,GACtBke,EAAQ90B,KAAKizB,cAAc1yB,KAAKP,KAAMA,KAAKuwB,GAAIvwB,KAAMo3B,EAAM/e,GAAOrY,KAAK02B,eAAe12B,KAAK02B,eAAex0B,OAAO,IAC7GlC,KAAKw2B,MAAQx2B,KAAKq2B,SAAQr2B,KAAKw2B,MAAO,GACtC1B,EAAcA,EACb,QAEW,KAAhB90B,KAAKq2B,OACEr2B,KAAKoxB,QAEZpxB,MAAKu0B,WAAW,0BAA0Bv0B,KAAKozB,SAAS,GAAG,yBAAyBpzB,KAAK81B,gBAChFztB,KAAM,GAAIysB,MAAO,KAAMiB,KAAM/1B,KAAKozB,YAGvDyB,IAAI,WACI,GAAIY,GAAIz1B,KAAKyR,MACb,OAAiB,mBAANgkB,GACAA,EAEAz1B,KAAK60B,OAGxB0C,MAAM,SAAeC,GACbx3B,KAAK02B,eAAexkB,KAAKslB,IAEjCC,SAAS,WACD,MAAOz3B,MAAK02B,eAAegB,OAEnCL,cAAc,WACN,MAAOr3B,MAAK23B,WAAW33B,KAAK02B,eAAe12B,KAAK02B,eAAex0B,OAAO,IAAIk1B,OAElFQ,SAAS,WACD,MAAO53B,MAAK02B,eAAe12B,KAAK02B,eAAex0B,OAAO,IAE9D21B,UAAU,SAAeL,GACjBx3B,KAAKu3B,MAAMC,IA0CnB,OAxCAxC,GAAMn0B,WACNm0B,EAAM/B,cAAgB,SAAmB1C,EAAGuH,EAAIC,EAA0BC,GAG1E,OAAOD,GACP,IAAK,GACL,KACA,KAAK,GAAE,MAAO,EAEd,KAAK,GAAkD,MAAhDD,GAAI5E,OAAS4E,EAAI5E,OAAOtX,OAAO,EAAEkc,EAAI3E,OAAO,GAAW,CAE9D,KAAK,GAAE,MAAO,GAEd,KAAK,GAAE,MAAO,GAEd,KAAK,GAAE,MAAO,GAEd,KAAK,GAAE,MAAO,GAEd,KAAK,GAAE,MAAO,GAEd,KAAK,GAAE,MAAO,GAEd,KAAK,GAAE,MAAO,GAEd,KAAK,IAAG,MAAO,GAEf,KAAK,IAAG,MAAO,EAEf,KAAK,IAAG,MAAO,GAEf,KAAK,IAAG,MAAO,YAIf6B,EAAMoC,OAAS,WAAW,8DAA8D,sEAAqE,UAAU,UAAU,UAAU,UAAU,SAAS,SAAS,cAAc,eAAe,cAAc,SAAS,UAC3QpC,EAAM2C,YAAcM,SAAWb,OAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,IAAIc,WAAY,IAI9ElD,IAEP,OADA3E,GAAO2E,MAAQA,EACR3E,IAGLzwB,GAAQywB,OAAS3a,EACjB9V,EAAQwD,MAAQsS,EAAStS,MAAMwD,KAAK8O,IAKjC,SAAS7V,EAAQD,EAASM,GAG/B,GAAIsS,GAAMtS,GAAsB,WAAkC,GAAImC,GAAI,GAAItB,OAAM,6BAA8D,MAA7BsB,GAAEC,KAAO,mBAA0BD,KAGxJnC,GAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IAEpBL,EAAOD,QAAU4S,GAKZ,SAAS3S,EAAQD,EAASM,GAS/B,QAASukB,GAAkBjf,GAQzB,QAASyhB,GAAYtb,GAEnB3L,KAAK2L,OAASA,EACd3L,KAAK0F,OA4MP,MAzMAuhB,GAAWtkB,UAAY,GAAI6C,GAM3ByhB,EAAWtkB,UAAUyF,OAAS,WAE5B,GAAI1C,GAAM1F,KAAK0F,GAEf,IAAIA,EAAIsa,GACN,MAAOta,GAAIsa,EAGbhgB,MAAK0kB,oBAGL,IAAIyT,GAAW1rB,SAASC,cAAc,KAMtC,IALAyrB,EAAS9wB,KAAOrH,KAChB0F,EAAIsa,GAAKmY,EAILn4B,KAAKyB,SAAS0F,MAAO,CAEvBzB,EAAIyjB,OAAS1c,SAASC,cAAc,KAGpC,IAAI2c,GAAS5c,SAASC,cAAc,KACpChH,GAAI2jB,OAASA,CACb,IAAIphB,GAAOwE,SAASC,cAAc,SAClCzE,GAAK0E,UAAY,yBACjB1E,EAAK2F,MAAQ,0CACblI,EAAIuC,KAAOA,EACXohB,EAAO5hB,YAAY/B,EAAIuC,MAIzB,GAAImwB,GAAW3rB,SAASC,cAAc,MAClC2rB,EAAU5rB,SAASC,cAAc,MASrC,OARA2rB,GAAQ7iB,UAAY,UACpB6iB,EAAQ1rB,UAAY,sBACpByrB,EAAS3wB,YAAY4wB,GACrB3yB,EAAIua,GAAKmY,EACT1yB,EAAI2C,KAAOgwB,EAEXr4B,KAAKkhB,YAEEiX,GAMTlR,EAAWtkB,UAAUue,UAAY,WAC/B,GAAIxb,GAAM1F,KAAK0F,IACX0yB,EAAW1yB,EAAIua,EACfmY,KACFA,EAAS9kB,MAAMglB,YAAiC,GAAlBt4B,KAAKmmB,WAAkB,GAAM,KAI7D,IAAIkS,GAAU3yB,EAAI2C,IACdgwB,KACFA,EAAQ7iB,UAAY,UAAYxV,KAAK4J,OAAOG,KAAO,IAKrD,IAAIouB,GAAWzyB,EAAIsa,EACdhgB,MAAKguB,YAYHtoB,EAAIsa,GAAGnG,aACNnU,EAAIyjB,QACNgP,EAAS1wB,YAAY/B,EAAIyjB,QAEvBzjB,EAAI2jB,QACN8O,EAAS1wB,YAAY/B,EAAI2jB,QAE3B8O,EAAS1wB,YAAY2wB,IAlBnB1yB,EAAIsa,GAAGnG,aACLnU,EAAIyjB,QACNgP,EAAS5xB,YAAYb,EAAIyjB,QAEvBzjB,EAAI2jB,QACN8O,EAAS5xB,YAAYb,EAAI2jB,QAE3B8O,EAAS5xB,YAAY6xB,KAqB3BnR,EAAWtkB,UAAUqrB,UAAY,WAC/B,MAAqC,IAA7BhuB,KAAK4J,OAAOgH,OAAO1O,QAS7B+kB,EAAWtkB,UAAU+L,gBAAkB,SAAUqD,EAAQC,GACvD,GAAI3K,GAAOrH,KACPgvB,EAASxpB,EAAKopB,YACd3c,IAGA5J,KAAQ,SACRuF,MAAS,uDACTuU,aAAgB,8CAChBxV,UAAa,oBACbwF,MAAS,WACP9K,EAAKgnB,UAAU,GAAI,GAAI,SAEzBtM,UAEI1Z,KAAQ,OACRsE,UAAa,uBACbiB,MAASohB,EAAOH,KAChB1c,MAAS,WACP9K,EAAKgnB,UAAU,GAAI,GAAI,WAIzBhmB,KAAQ,QACRsE,UAAa,wBACbiB,MAASohB,EAAOF,MAChB3c,MAAS,WACP9K,EAAKgnB,UAAU,UAIjBhmB,KAAQ,SACRsE,UAAa,yBACbiB,MAASohB,EAAO9X,OAChB/E,MAAS,WACP9K,EAAKgnB,UAAU,UAIjBhmB,KAAQ,SACRsE,UAAa,yBACbiB,MAASohB,EAAOD,OAChB5c,MAAS,WACP9K,EAAKgnB,UAAU,GAAI,GAAI,eAO7BpmB,EAAO,GAAI1C,GAAY0M,GAAQK,MAAON,GAC1C/J,GAAKsK,KAAKR,EAAQ/R,KAAK2L,OAAO3E,UAOhCigB,EAAWtkB,UAAU2J,QAAU,SAAUC,GACvC,GAAIxC,GAAOwC,EAAMxC,KACb8C,EAASN,EAAMM,QAAUN,EAAMggB,WAC/B7mB,EAAM1F,KAAK0F,IAGXuC,EAAOvC,EAAIuC,IAWf,IAVI4E,GAAU5E,IACA,aAAR8B,EACF/J,KAAK2L,OAAOhG,YAAY0X,UAAUrd,KAAK4J,QAExB,YAARG,GACP/J,KAAK2L,OAAOhG,YAAY6X,eAKhB,SAARzT,GAAmB8C,GAAUnH,EAAIuC,KAAM,CACzC,GAAItC,GAAc3F,KAAK2L,OAAOhG,WAC9BA,GAAY0X,UAAUrd,KAAK4J,QAC3BjE,EAAY+X,OACZzc,EAAKgX,aAAavS,EAAIuC,KAAM,uBAC5BjI,KAAK0O,gBAAgBhJ,EAAIuC,KAAM,WAC7BhH,EAAKmX,gBAAgB1S,EAAIuC,KAAM,uBAC/BtC,EAAYgY,SACZhY,EAAY6X,gBAIJ,WAARzT,GACF/J,KAAK2sB,UAAUpgB,IAIZ0a,EA9NT,GAAIhmB,GAAOf,EAAoB,GAC3BqF,EAAcrF,EAAoB,EAgOtCL,GAAOD,QAAU6kB,GAKZ,SAAS5kB,EAAQD,EAASM,GAgC/BsS,IAAI1S,OAAO,wBAAyB,UAAW,UAAW,SAAU,eAAgB,SAASy4B,EAAU34B,EAASC,GAEhHD,EAAQ44B,QAAS,EACjB54B,EAAQ64B,SAAW,iBACnB74B,EAAQ84B,QAAU,4/EA2GlB,IAAIhzB,GAAM6yB,EAAS,aACnB7yB,GAAIizB,gBAAgB/4B,EAAQ84B,QAAS94B,EAAQ64B,aAMxC,SAAS54B,EAAQD,EAASM,GAE/BsS,IAAI1S,OAAO,iCAAiC,UAAU,UAAU,SAAS,cAAc,iCAAkC,SAASy4B,EAAU34B,EAASC,GACrJ,YAEA,IAAI+4B,GAAML,EAAS,cACfM,EAAqBN,EAAS,0BAA0BM,mBAExDC,EAAqB,WACrB94B,KAAK+4B,QACDrpB,QAEQolB,MAAQ,WACRkE,MAAQ,gDAERlE,MAAQ,SACRkE,MAAQ,IACRvnB,KAAQ,WAERqjB,MAAQ,mBACRkE,MAAQ,yBAERlE,MAAQ,mBACRkE,MAAQ,oDAERlE,MAAQ,4BACRkE,MAAQ,sBAERlE,MAAQ,kBACRkE,MAAQ,uCAERlE,MAAQ,kBACRkE,MAAQ,cAERlE,MAAQ,eACRkE,MAAQ,UAERlE,MAAQ,eACRkE,MAAQ,YAERlE,MAAQ,OACRkE,MAAQ,SAGhBjK,SAEQ+F,MAAQ,2BACRkE,MAAQ,uDAERlE,MAAQ,SACRkE,MAAQ,cAERlE,MAAQ,SACRkE,MAAQ,IACRvnB,KAAQ,UAERqjB,MAAQ,SACRkE,MAAQ,GACRvnB,KAAQ,WAOxBmnB,GAAIK,SAASH,EAAoBD,GAEjCj5B,EAAQk5B,mBAAqBA,IAG7BtmB,IAAI1S,OAAO,mCAAmC,UAAU,UAAU,SAAS,aAAc,SAASy4B,EAAU34B,EAASC,GACrH,YAEA,IAAIq5B,GAAQX,EAAS,YAAYW,MAE7BC,EAAuB,cAE3B,WAEIn5B,KAAKo5B,aAAe,SAASrD,EAAMhuB,GAC/B,MAAM,QAAQ4O,KAAKof,GAGZ,SAASpf,KAAK5O,IAFV,GAKf/H,KAAKq5B,YAAc,SAASC,EAAKC,GAC7B,GAAIxD,GAAOuD,EAAIE,QAAQD,GACnB3iB,EAAQmf,EAAKnf,MAAM,WAEvB,KAAKA,EAAO,MAAO,EAEnB,IAAI6iB,GAAS7iB,EAAM,GAAG1U,OAClBw3B,EAAeJ,EAAIK,qBAAqBJ,IAAKA,EAAKE,OAAQA,GAE9D,KAAKC,GAAgBA,EAAaH,KAAOA,EAAK,MAAO,EAErD,IAAIK,GAAS55B,KAAK65B,WAAWP,EAAIE,QAAQE,EAAaH,KACtDD,GAAIziB,QAAQ,GAAIqiB,GAAMK,EAAK,EAAGA,EAAKE,EAAO,GAAIG,IAGlD55B,KAAK65B,WAAa,SAAS9D,GACvB,MAAOA,GAAKnf,MAAM,QAAQ,MAG/BrW,KAAK44B,EAAqBx2B,WAE7B/C,EAAQu5B,qBAAuBA,IAG/B3mB,IAAI1S,OAAO,6BAA6B,UAAU,UAAU,SAAS,cAAc,qBAAqB,qBAAqB,gBAAiB,SAASy4B,EAAU34B,EAASC,GAC1K,YAEA,IAUI4c,GAVAmc,EAAML,EAAS,iBACfuB,EAAYvB,EAAS,gBAAgBuB,UACrCC,EAAgBxB,EAAS,wBAAwBwB,cACjDC,EAAOzB,EAAS,kBAEhB0B,GACC,OAAQ,eAAgB,wBACzBC,GACC,OAAQ,eAAgB,uBAAwB,WAGjDC,KACAC,EAAc,SAASzuB,GACvB,GAAItL,GAAK,EAMT,OALIsL,GAAO0uB,cACPh6B,EAAKsL,EAAO/F,UAAUyS,MAClB8hB,EAAa3gB,YAAc7N,EAAO0uB,YAAY7gB,aAC9C2gB,GAAgB3gB,WAAY7N,EAAO0uB,YAAY7gB,cAEnD2gB,EAAa95B,GACNoc,EAAU0d,EAAa95B,QAClCoc,EAAU0d,EAAa95B,IACnBi6B,qBAAsB,EACtBC,gBAAiB,GACjBC,oBAAqB,GACrBC,sBAAuB,EACvBC,iBAAkB,GAClBC,uBAAwB,GACxBC,qBAAsB,MAI1BC,EAAa,SAASj1B,EAAW6I,EAAUqsB,EAASC,GACpD,GAAIC,GAAUp1B,EAAU+J,IAAI4pB,IAAM3zB,EAAU8J,MAAM6pB,GAClD,QACIlxB,KAAMyyB,EAAUrsB,EAAWssB,EAC3Bn1B,WACQ,EACAA,EAAU8J,MAAM+pB,OAAS,EACzBuB,EACAp1B,EAAU+J,IAAI8pB,QAAUuB,EAAU,EAAI,MAKlDC,EAAkB,WAClBj7B,KAAK2I,IAAI,SAAU,YAAa,SAAS6sB,EAAO9sB,EAAQiD,EAAQuvB,EAAS7yB,GACrE,GAAI6hB,GAASve,EAAOwvB,oBAChBpF,EAAOmF,EAAQ5B,IAAIE,QAAQtP,EAAOqP,IACtC,IAAY,KAARlxB,EAAa,CACb+xB,EAAYzuB,EACZ,IAAI/F,GAAY+F,EAAOyvB,oBACnB3sB,EAAWysB,EAAQ5B,IAAI+B,aAAaz1B,EACxC,IAAiB,KAAb6I,GAAgC,MAAbA,GAAoB9C,EAAO2vB,2BAC9C,MAAOT,GAAWj1B,EAAW6I,EAAU,IAAK,IACzC,IAAIwsB,EAAgBM,gBAAgB5vB,EAAQuvB,GAC/C,MAAI,WAAWvkB,KAAKof,EAAK7L,EAAOuP,UAAY9tB,EAAO6vB,mBAC/CP,EAAgBQ,iBAAiB9vB,EAAQuvB,EAAS,MAE9C7yB,KAAM,KACNzC,WAAY,EAAG,MAGnBq1B,EAAgBS,kBAAkB/vB,EAAQuvB,EAAS,MAE/C7yB,KAAM,IACNzC,WAAY,EAAG,SAIxB,IAAY,KAARyC,EAAa,CACpB+xB,EAAYzuB,EACZ,IAAIgwB,GAAY5F,EAAKja,UAAUoO,EAAOuP,OAAQvP,EAAOuP,OAAS,EAC9D,IAAiB,KAAbkC,EAAkB,CAClB,GAAIC,GAAWV,EAAQW,oBAAoB,KAAMpC,OAAQvP,EAAOuP,OAAS,EAAGF,IAAKrP,EAAOqP,KACxF,IAAiB,OAAbqC,GAAqBX,EAAgBa,sBAAsB5R,EAAQ6L,EAAM1tB,GAEzE,MADA4yB,GAAgBc,0BAEZ1zB,KAAM,GACNzC,WAAY,EAAG,SAIxB,CAAA,GAAY,MAARyC,GAAwB,QAARA,EAAgB,CACvC+xB,EAAYzuB,EACZ,IAAIovB,GAAU,EACVE,GAAgBe,uBAAuB9R,EAAQ6L,KAC/CgF,EAAUf,EAAKiC,aAAa,IAAKxf,EAAQge;AACzCQ,EAAgBiB,4BAEpB,IAAIP,GAAY5F,EAAKja,UAAUoO,EAAOuP,OAAQvP,EAAOuP,OAAS,EAC9D,IAAkB,MAAdkC,EAAmB,CACnB,GAAIjC,GAAewB,EAAQvB,qBAAqBJ,IAAKrP,EAAOqP,IAAKE,OAAQvP,EAAOuP,OAAO,GAAI,IAC3F,KAAKC,EACA,MAAO,KACZ,IAAIyC,GAAcn8B,KAAK65B,WAAWqB,EAAQ1B,QAAQE,EAAaH,UAC5D,CAAA,IAAIwB,EAIP,WADAE,GAAgBiB,2BAFhB,IAAIC,GAAcn8B,KAAK65B,WAAW9D,GAKtC,GAAI6D,GAASuC,EAAcjB,EAAQkB,cAEnC,QACI/zB,KAAM,KAAOuxB,EAAS,KAAOuC,EAAcpB,EAC3Cn1B,WAAY,EAAGg0B,EAAO13B,OAAQ,EAAG03B,EAAO13B,SAG5C+4B,EAAgBiB,+BAIxBl8B,KAAK2I,IAAI,SAAU,WAAY,SAAS6sB,EAAO9sB,EAAQiD,EAAQuvB,EAAS/vB,GACpE,GAAIsD,GAAWysB,EAAQ5B,IAAI+B,aAAalwB,EACxC,KAAKA,EAAMkxB,eAA6B,KAAZ5tB,EAAiB,CACzC2rB,EAAYzuB,EACZ,IAAIoqB,GAAOmF,EAAQ5B,IAAIE,QAAQruB,EAAMuE,MAAM6pB,KACvCoC,EAAY5F,EAAKja,UAAU3Q,EAAMwE,IAAI8pB,OAAQtuB,EAAMwE,IAAI8pB,OAAS,EACpE,IAAiB,KAAbkC,EAEA,MADAxwB,GAAMwE,IAAI8pB,SACHtuB,CAEPsR,GAAQge,2BAKpBz6B,KAAK2I,IAAI,SAAU,YAAa,SAAS6sB,EAAO9sB,EAAQiD,EAAQuvB,EAAS7yB,GACrE,GAAY,KAARA,EAAa,CACb+xB,EAAYzuB,EACZ,IAAI/F,GAAY+F,EAAOyvB,oBACnB3sB,EAAWysB,EAAQ5B,IAAI+B,aAAaz1B,EACxC,IAAiB,KAAb6I,GAAmB9C,EAAO2vB,2BAC1B,MAAOT,GAAWj1B,EAAW6I,EAAU,IAAK,IACzC,IAAIwsB,EAAgBM,gBAAgB5vB,EAAQuvB,GAE/C,MADAD,GAAgBQ,iBAAiB9vB,EAAQuvB,EAAS,MAE9C7yB,KAAM,KACNzC,WAAY,EAAG,QAGpB,IAAY,KAARyC,EAAa,CACpB+xB,EAAYzuB,EACZ,IAAIue,GAASve,EAAOwvB,oBAChBpF,EAAOmF,EAAQ5B,IAAIE,QAAQtP,EAAOqP,KAClCoC,EAAY5F,EAAKja,UAAUoO,EAAOuP,OAAQvP,EAAOuP,OAAS,EAC9D,IAAiB,KAAbkC,EAAkB,CAClB,GAAIC,GAAWV,EAAQW,oBAAoB,KAAMpC,OAAQvP,EAAOuP,OAAS,EAAGF,IAAKrP,EAAOqP,KACxF,IAAiB,OAAbqC,GAAqBX,EAAgBa,sBAAsB5R,EAAQ6L,EAAM1tB,GAEzE,MADA4yB,GAAgBc,0BAEZ1zB,KAAM,GACNzC,WAAY,EAAG,QAOnC5F,KAAK2I,IAAI,SAAU,WAAY,SAAS6sB,EAAO9sB,EAAQiD,EAAQuvB,EAAS/vB,GACpE,GAAIsD,GAAWysB,EAAQ5B,IAAI+B,aAAalwB,EACxC,KAAKA,EAAMkxB,eAA6B,KAAZ5tB,EAAiB,CACzC2rB,EAAYzuB,EACZ,IAAIoqB,GAAOmF,EAAQ5B,IAAIE,QAAQruB,EAAMuE,MAAM6pB,KACvCoC,EAAY5F,EAAKja,UAAU3Q,EAAMuE,MAAM+pB,OAAS,EAAGtuB,EAAMuE,MAAM+pB,OAAS,EAC5E,IAAiB,KAAbkC,EAEA,MADAxwB,GAAMwE,IAAI8pB,SACHtuB,KAKnBnL,KAAK2I,IAAI,WAAY,YAAa,SAAS6sB,EAAO9sB,EAAQiD,EAAQuvB,EAAS7yB,GACvE,GAAY,KAARA,EAAa,CACb+xB,EAAYzuB,EACZ,IAAI/F,GAAY+F,EAAOyvB,oBACnB3sB,EAAWysB,EAAQ5B,IAAI+B,aAAaz1B,EACxC,IAAiB,KAAb6I,GAAmB9C,EAAO2vB,2BAC1B,MAAOT,GAAWj1B,EAAW6I,EAAU,IAAK,IACzC,IAAIwsB,EAAgBM,gBAAgB5vB,EAAQuvB,GAE/C,MADAD,GAAgBQ,iBAAiB9vB,EAAQuvB,EAAS,MAE9C7yB,KAAM,KACNzC,WAAY,EAAG,QAGpB,IAAY,KAARyC,EAAa,CACpB+xB,EAAYzuB,EACZ,IAAIue,GAASve,EAAOwvB,oBAChBpF,EAAOmF,EAAQ5B,IAAIE,QAAQtP,EAAOqP,KAClCoC,EAAY5F,EAAKja,UAAUoO,EAAOuP,OAAQvP,EAAOuP,OAAS,EAC9D,IAAiB,KAAbkC,EAAkB,CAClB,GAAIC,GAAWV,EAAQW,oBAAoB,KAAMpC,OAAQvP,EAAOuP,OAAS,EAAGF,IAAKrP,EAAOqP,KACxF,IAAiB,OAAbqC,GAAqBX,EAAgBa,sBAAsB5R,EAAQ6L,EAAM1tB,GAEzE,MADA4yB,GAAgBc,0BAEZ1zB,KAAM,GACNzC,WAAY,EAAG,QAOnC5F,KAAK2I,IAAI,WAAY,WAAY,SAAS6sB,EAAO9sB,EAAQiD,EAAQuvB,EAAS/vB,GACtE,GAAIsD,GAAWysB,EAAQ5B,IAAI+B,aAAalwB,EACxC,KAAKA,EAAMkxB,eAA6B,KAAZ5tB,EAAiB,CACzC2rB,EAAYzuB,EACZ,IAAIoqB,GAAOmF,EAAQ5B,IAAIE,QAAQruB,EAAMuE,MAAM6pB,KACvCoC,EAAY5F,EAAKja,UAAU3Q,EAAMuE,MAAM+pB,OAAS,EAAGtuB,EAAMuE,MAAM+pB,OAAS,EAC5E,IAAiB,KAAbkC,EAEA,MADAxwB,GAAMwE,IAAI8pB,SACHtuB,KAKnBnL,KAAK2I,IAAI,iBAAkB,YAAa,SAAS6sB,EAAO9sB,EAAQiD,EAAQuvB,EAAS7yB,GAC7E,GAAY,KAARA,GAAuB,KAARA,EAAa,CAC5B+xB,EAAYzuB,EACZ,IAAI0K,GAAQhO,EACRzC,EAAY+F,EAAOyvB,oBACnB3sB,EAAWysB,EAAQ5B,IAAI+B,aAAaz1B,EACxC,IAAiB,KAAb6I,GAAgC,MAAbA,GAAgC,KAAZA,GAAmB9C,EAAO2vB,2BACjE,MAAOT,GAAWj1B,EAAW6I,EAAU4H,EAAOA,EAC3C,KAAK5H,EAAU,CAClB,GAAIyb,GAASve,EAAOwvB,oBAChBpF,EAAOmF,EAAQ5B,IAAIE,QAAQtP,EAAOqP,KAClC+C,EAAWvG,EAAKja,UAAUoO,EAAOuP,OAAO,EAAGvP,EAAOuP,QAClDkC,EAAY5F,EAAKja,UAAUoO,EAAOuP,OAAQvP,EAAOuP,OAAS,GAE1D3E,EAAQoG,EAAQqB,WAAWrS,EAAOqP,IAAKrP,EAAOuP,QAC9C+C,EAAatB,EAAQqB,WAAWrS,EAAOqP,IAAKrP,EAAOuP,OAAS,EAChE,IAAgB,MAAZ6C,GAAoBxH,GAAS,SAASne,KAAKme,EAAM/qB,MACjD,MAAO,KAEX,IAGI0yB,GAHAC,EAAe5H,GAAS,gBAAgBne,KAAKme,EAAM/qB,MACnD4yB,GAAeH,GAAc,gBAAgB7lB,KAAK6lB,EAAWzyB,KAGjE,IAAI4xB,GAAatlB,EACbomB,EAAOC,IAAiBC,MACrB,CACH,GAAID,IAAiBC,EACjB,MAAO,KACX,IAAID,GAAgBC,EAChB,MAAO,KACX,IAAIC,GAAS1B,EAAQ2B,MAAMC,OAC3BF,GAAO5rB,UAAY,CACnB,IAAI+rB,GAAeH,EAAOjmB,KAAK2lB,EAC/BM,GAAO5rB,UAAY,CACnB,IAAIgsB,GAAcJ,EAAOjmB,KAAK2lB,EAC9B,IAAIS,GAAgBC,EAChB,MAAO,KACX,IAAIrB,IAAc,gBAAgBhlB,KAAKglB,GACnC,MAAO,KACXc,IAAO,EAEX,OACIp0B,KAAMo0B,EAAOpmB,EAAQA,EAAQ,GAC7BzQ,WAAY,EAAE,QAM9B5F,KAAK2I,IAAI,iBAAkB,WAAY,SAAS6sB,EAAO9sB,EAAQiD,EAAQuvB,EAAS/vB,GAC5E,GAAIsD,GAAWysB,EAAQ5B,IAAI+B,aAAalwB,EACxC,KAAKA,EAAMkxB,gBAA8B,KAAZ5tB,GAA+B,KAAZA,GAAkB,CAC9D2rB,EAAYzuB,EACZ,IAAIoqB,GAAOmF,EAAQ5B,IAAIE,QAAQruB,EAAMuE,MAAM6pB,KACvCoC,EAAY5F,EAAKja,UAAU3Q,EAAMuE,MAAM+pB,OAAS,EAAGtuB,EAAMuE,MAAM+pB,OAAS,EAC5E,IAAIkC,GAAaltB,EAEb,MADAtD,GAAMwE,IAAI8pB,SACHtuB,KAQvB8vB,GAAgBM,gBAAkB,SAAS5vB,EAAQuvB,GAC/C,GAAIhR,GAASve,EAAOwvB,oBAChB8B,EAAW,GAAIlD,GAAcmB,EAAShR,EAAOqP,IAAKrP,EAAOuP,OAC7D,KAAKz5B,KAAKk9B,gBAAgBD,EAASE,mBAAqB,OAAQlD,GAAwB,CACpF,GAAImD,GAAY,GAAIrD,GAAcmB,EAAShR,EAAOqP,IAAKrP,EAAOuP,OAAS,EACvE,KAAKz5B,KAAKk9B,gBAAgBE,EAAUD,mBAAqB,OAAQlD,GAC7D,OAAO,EAGf,MADAgD,GAASI,cACFJ,EAASK,uBAAyBpT,EAAOqP,KAC5Cv5B,KAAKk9B,gBAAgBD,EAASE,mBAAqB,OAAQjD,IAGnEe,EAAgBiC,gBAAkB,SAASpI,EAAOyI,GAC9C,MAAOA,GAAMv7B,QAAQ8yB,EAAM/qB,MAAQ+qB,GAAS,IAGhDmG,EAAgBQ,iBAAmB,SAAS9vB,EAAQuvB,EAASsC,GACzD,GAAItT,GAASve,EAAOwvB,oBAChBpF,EAAOmF,EAAQ5B,IAAIE,QAAQtP,EAAOqP,IACjCv5B,MAAK87B,sBAAsB5R,EAAQ6L,EAAMtZ,EAAQ+d,oBAAoB,MACtE/d,EAAQ6d,qBAAuB,GACnC7d,EAAQ8d,gBAAkBrQ,EAAOqP,IACjC9c,EAAQ+d,oBAAsBgD,EAAUzH,EAAKna,OAAOsO,EAAOuP,QAC3Dhd,EAAQ6d,wBAGZW,EAAgBS,kBAAoB,SAAS/vB,EAAQuvB,EAASsC,GAC1D,GAAItT,GAASve,EAAOwvB,oBAChBpF,EAAOmF,EAAQ5B,IAAIE,QAAQtP,EAAOqP,IACjCv5B,MAAKg8B,uBAAuB9R,EAAQ6L,KACrCtZ,EAAQge,sBAAwB,GACpChe,EAAQie,iBAAmBxQ,EAAOqP,IAClC9c,EAAQke,uBAAyB5E,EAAKna,OAAO,EAAGsO,EAAOuP,QAAU+D,EACjE/gB,EAAQme,qBAAuB7E,EAAKna,OAAOsO,EAAOuP,QAClDhd,EAAQge,yBAGZQ,EAAgBa,sBAAwB,SAAS5R,EAAQ6L,EAAMyH,GAC3D,MAAO/gB,GAAQ6d,qBAAuB,GAClCpQ,EAAOqP,MAAQ9c,EAAQ8d,iBACvBiD,IAAY/gB,EAAQ+d,oBAAoB,IACxCzE,EAAKna,OAAOsO,EAAOuP,UAAYhd,EAAQ+d,qBAG/CS,EAAgBe,uBAAyB,SAAS9R,EAAQ6L,GACtD,MAAOtZ,GAAQge,sBAAwB,GACnCvQ,EAAOqP,MAAQ9c,EAAQie,kBACvB3E,EAAKna,OAAOsO,EAAOuP,UAAYhd,EAAQme,sBACvC7E,EAAKna,OAAO,EAAGsO,EAAOuP,SAAWhd,EAAQke,wBAGjDM,EAAgBc,uBAAyB,WACrCtf,EAAQ+d,oBAAsB/d,EAAQ+d,oBAAoB5e,OAAO,GACjEa,EAAQ6d,wBAGZW,EAAgBiB,0BAA4B,WACpCzf,IACAA,EAAQge,sBAAwB,EAChChe,EAAQie,iBAAmB,KAMnC9B,EAAIK,SAASgC,EAAiBnB,GAE9Bl6B,EAAQq7B,gBAAkBA,IAG1BzoB,IAAI1S,OAAO,2BAA2B,UAAU,UAAU,SAAS,cAAc,YAAY,8BAA+B,SAASy4B,EAAU34B,EAASC,GACxJ,YAEA,IAAI+4B,GAAML,EAAS,iBACfW,EAAQX,EAAS,eAAeW,MAChCuE,EAAelF,EAAS,eAAemF,SAEvCA,EAAW99B,EAAQ89B,SAAW,SAASC,GACnCA,IACA39B,KAAK49B,mBAAqB,GAAIvmB,QAC1BrX,KAAK49B,mBAAmBC,OAAOhnB,QAAQ,YAAa,IAAM8mB,EAAajuB,QAE3E1P,KAAK89B,kBAAoB,GAAIzmB,QACzBrX,KAAK89B,kBAAkBD,OAAOhnB,QAAQ,YAAa,IAAM8mB,EAAahuB,OAIlFipB,GAAIK,SAASyE,EAAUD,GAEvB,WAEIz9B,KAAK49B,mBAAqB,8BAC1B59B,KAAK89B,kBAAoB,kCACzB99B,KAAK+9B,yBAA0B,uBAC/B/9B,KAAKg+B,yBAA2B,2BAChCh+B,KAAKi+B,cAAgB,4BACrBj+B,KAAKk+B,mBAAqBl+B,KAAKm+B,cAC/Bn+B,KAAKm+B,cAAgB,SAASjD,EAASkD,EAAW7E,GAC9C,GAAIxD,GAAOmF,EAAQ1B,QAAQD,EAE3B,IAAIv5B,KAAK+9B,yBAAyBpnB,KAAKof,KAC9B/1B,KAAKi+B,cAActnB,KAAKof,KAAU/1B,KAAKg+B,yBAAyBrnB,KAAKof,GACtE,MAAO,EAGf,IAAIsI,GAAKr+B,KAAKk+B,mBAAmBhD,EAASkD,EAAW7E,EAErD,QAAK8E,GAAMr+B,KAAKi+B,cAActnB,KAAKof,GACxB,QAEJsI,GAGXr+B,KAAKs+B,mBAAqB,SAASpD,EAASkD,EAAW7E,EAAKgF,GACxD,GAAIxI,GAAOmF,EAAQ1B,QAAQD,EAE3B,IAAIv5B,KAAKi+B,cAActnB,KAAKof,GACxB,MAAO/1B,MAAKw+B,sBAAsBtD,EAASnF,EAAMwD,EAErD,IAAI3iB,GAAQmf,EAAKnf,MAAM5W,KAAK49B,mBAC5B,IAAIhnB,EAAO,CACP,GAAI5R,GAAI4R,EAAMyB,KAEd,IAAIzB,EAAM,GACN,MAAO5W,MAAKy+B,oBAAoBvD,EAAStkB,EAAM,GAAI2iB,EAAKv0B,EAE5D,IAAImG,GAAQ+vB,EAAQwD,oBAAoBnF,EAAKv0B,EAAI4R,EAAM,GAAG1U,OAAQ,EASlE,OAPIiJ,KAAUA,EAAMkxB,gBACZkC,EACApzB,EAAQnL,KAAK2+B,gBAAgBzD,EAAS3B,GAClB,OAAb6E,IACPjzB,EAAQ,OAGTA,EAGX,GAAkB,cAAdizB,EAAJ,CAGA,GAAIxnB,GAAQmf,EAAKnf,MAAM5W,KAAK89B,kBAC5B,IAAIlnB,EAAO,CACP,GAAI5R,GAAI4R,EAAMyB,MAAQzB,EAAM,GAAG1U,MAE/B,OAAI0U,GAAM,GACC5W,KAAK4+B,oBAAoB1D,EAAStkB,EAAM,GAAI2iB,EAAKv0B,GAErDk2B,EAAQwD,oBAAoBnF,EAAKv0B,EAAG,OAInDhF,KAAK2+B,gBAAkB,SAASzD,EAAS3B,GACrC,GAAIxD,GAAOmF,EAAQ1B,QAAQD,GACvBsF,EAAc9I,EAAKvvB,OAAO,MAC1Bs4B,EAAWvF,EACXwF,EAAchJ,EAAK7zB,MACvBq3B,IAAY,CAGZ,KAFA,GAAIyF,GAASzF,EACT0F,EAAS/D,EAAQgE,cACZ3F,EAAM0F,GAAQ,CACnBlJ,EAAOmF,EAAQ1B,QAAQD,EACvB,IAAIK,GAAS7D,EAAKvvB,OAAO,KACzB,IAAe,KAAXozB,EAAJ,CAEA,GAAKiF,EAAcjF,EACf,KACJ,IAAIuF,GAAWn/B,KAAKs+B,mBAAmBpD,EAAS,MAAO3B,EAEvD,IAAI4F,EAAU,CACV,GAAIA,EAASzvB,MAAM6pB,KAAOuF,EACtB,KACG,IAAIK,EAAS9C,cAChB9C,EAAM4F,EAASxvB,IAAI4pB,QAChB,IAAIsF,GAAejF,EACtB,MAGRoF,EAASzF,GAGb,MAAO,IAAIL,GAAM4F,EAAUC,EAAaC,EAAQ9D,EAAQ1B,QAAQwF,GAAQ98B,SAE5ElC,KAAKw+B,sBAAwB,SAAStD,EAASnF,EAAMwD,GAOjD,IANA,GAAIwF,GAAchJ,EAAKvvB,OAAO,QAC1By4B,EAAS/D,EAAQgE,YACjBJ,EAAWvF,EAEXxe,EAAK,uCACLqkB,EAAQ,IACH7F,EAAM0F,GAAQ,CACnBlJ,EAAOmF,EAAQ1B,QAAQD,EACvB,IAAI/4B,GAAIua,EAAGC,KAAK+a,EAChB,IAAKv1B,IACDA,EAAE,GAAI4+B,IACLA,KAEAA,GAAO,MAGhB,GAAIJ,GAASzF,CACb,OAAIyF,GAASF,EACF,GAAI5F,GAAM4F,EAAUC,EAAaC,EAAQjJ,EAAK7zB,QADzD,SAKL3B,KAAKm9B,EAAS/6B,aAIjB6P,IAAI1S,OAAO,iBAAiB,UAAU,UAAU,SAAS,cAAc,gBAAgB,gCAAgC,kCAAkC,4BAA4B,0BAA0B,4BAA6B,SAASy4B,EAAU34B,EAASC,GACxQ,YAEA,IAAI+4B,GAAML,EAAS,cACf8G,EAAW9G,EAAS,UAAU+G,KAC9BC,EAAiBhH,EAAS,0BAA0BO,mBACpDK,EAAuBZ,EAAS,4BAA4BY,qBAC5D8B,EAAkB1C,EAAS,sBAAsB0C,gBACjDuE,EAAiBjH,EAAS,oBAAoBmF,SAC9C+B,EAAelH,EAAS,2BAA2BkH,aAEnDH,EAAO,WACPt/B,KAAKu/B,eAAiBA,EACtBv/B,KAAK0/B,SAAW,GAAIvG,GACpBn5B,KAAK2/B,WAAa,GAAI1E,GACtBj7B,KAAK4/B,aAAe,GAAIJ,GAE5B5G,GAAIK,SAASqG,EAAMD,GAEnB,WAEIr/B,KAAK6/B,kBAAoB,SAASrK,EAAOO,EAAM+J,GAC3C,GAAIlG,GAAS55B,KAAK65B,WAAW9D,EAE7B,IAAa,SAATP,EAAkB,CAClB,GAAI5e,GAAQmf,EAAKnf,MAAM,kBACnBA,KACAgjB,GAAUkG,GAIlB,MAAOlG,IAGX55B,KAAKo5B,aAAe,SAAS5D,EAAOO,EAAMhuB,GACtC,MAAO/H,MAAK0/B,SAAStG,aAAarD,EAAMhuB,IAG5C/H,KAAKq5B,YAAc,SAAS7D,EAAO8D,EAAKC,GACpCv5B,KAAK0/B,SAASrG,YAAYC,EAAKC,IAGnCv5B,KAAK+/B,aAAe,SAAS7E,GACzB,GAAI8E,GAAS,GAAIP,IAAc,OAAQv/B,EAAoB,IAAK,aAWhE,OAVA8/B,GAAOC,iBAAiB/E,EAAQgF,eAEhCF,EAAOxrB,GAAG,WAAY,SAASnS,GAC3B64B,EAAQiF,eAAe99B,EAAEsB,QAG7Bq8B,EAAOxrB,GAAG,YAAa,WACnB0mB,EAAQkF,qBAGLJ,GAIXhgC,KAAKqgC,IAAM,iBACZ9/B,KAAK++B,EAAK38B,WAEb/C,EAAQ0/B,KAAOA,KAMV,SAASz/B,EAAQD,EAASM,GAE/BsS,IAAI1S,OAAO,qBAAqB,UAAU,UAAU,SAAS,cAAc,eAAe,gBAAgB,4BAA4B,gBAAiB,SAASy4B,EAAU34B,EAASC,GACnL,YAEA,IAAI6F,GAAM6yB,EAAS,cACfyB,EAAOzB,EAAS,eAChBhsB,EAAQgsB,EAAS,gBACjB+H,EAAe,8nGA8IfC,EAAchI,EAAS,4BAA4BgI,YACnDC,EAAUjI,EAAS,cAEvB7yB,GAAIizB,gBAAgB2H,EAAc,gBAElC,IAAIhR,GAAO,mqCAkBHzY,QAAQ,QAAS,KAErBvR,EAAY,SAASqG,EAAQR,EAAOs1B,GACpC,GAAItQ,GAAMzqB,EAAIgH,cAAc,MAC5ByjB,GAAI3a,UAAY8Z,EAChBtvB,KAAKia,QAAUkW,EAAItW,WAEnB7Z,KAAK0gC,QACL1gC,KAAK2gC,UAAUh1B,KAGnB,WACI3L,KAAK2gC,UAAY,SAASh1B,GACtBA,EAAOjE,UAAY1H,KACnB2L,EAAO/K,UAAU6G,YAAYzH,KAAKia,SAClCja,KAAK2L,OAASA,GAGlB3L,KAAK4gC,cAAgB,SAASC,GAC1B7gC,KAAK0H,UAAYm5B,EAAG74B,cAAc,oBAClChI,KAAK8gC,WAAaD,EAAG74B,cAAc,qBACnChI,KAAK+gC,cAAgBF,EAAG74B,cAAc,uBACtChI,KAAKghC,aAAeH,EAAG74B,cAAc,6BACrChI,KAAKihC,oBAAsBJ,EAAG74B,cAAc,gCAC5ChI,KAAKkhC,gBAAkBL,EAAG74B,cAAc,6BACxChI,KAAKmhC,YAAcnhC,KAAK0H,UAAUM,cAAc,qBAChDhI,KAAKohC,aAAephC,KAAK8gC,WAAW94B,cAAc,sBAGtDhI,KAAK0gC,MAAQ,WACT,GAAIG,GAAK7gC,KAAKia,OAEdja,MAAK4gC,cAAcC,EAEnB,IAAIQ,GAAQrhC,IACZuM,GAAM+0B,YAAYT,EAAI,YAAa,SAASx+B,GACxCgK,WAAW,WACPg1B,EAAME,YAAYz5B,SACnB,GACHyE,EAAMmF,gBAAgBrP,KAE1BkK,EAAM+0B,YAAYT,EAAI,QAAS,SAASx+B,GACpC,GAAIm/B,GAAIn/B,EAAEwK,QAAUxK,EAAEkqB,WAClB7jB,EAAS84B,EAAEC,aAAa,SACxB/4B,IAAU24B,EAAM34B,GAChB24B,EAAM34B,KACD24B,EAAMK,aAAaztB,SAASvL,IACjC24B,EAAMK,aAAaztB,SAASvL,GAAQsS,KAAKqmB,GAC7C90B,EAAMmF,gBAAgBrP,KAG1BkK,EAAMo1B,sBAAsBd,EAAI,SAASx+B,EAAGu/B,EAAQzwB,GAChD,GAAI0wB,GAAYrB,EAAQsB,gBAAgB3wB,GACpC4wB,EAAUV,EAAMK,aAAaM,eAAeJ,EAAQC,EACpDE,IAAWA,EAAQ/mB,OACnB+mB,EAAQ/mB,KAAKqmB,GACb90B,EAAM01B,UAAU5/B,MAIxBrC,KAAKkiC,UAAYlI,EAAKmI,YAAY,WAC9Bd,EAAMe,MAAK,GAAO,KAGtB71B,EAAM+0B,YAAYthC,KAAKmhC,YAAa,QAAS,WACzCE,EAAMa,UAAUG,SAAS,MAE7B91B,EAAM+0B,YAAYthC,KAAKmhC,YAAa,QAAS,WACzCE,EAAME,YAAcF,EAAMF,YAC1BE,EAAMF,YAAY/5B,OAASi6B,EAAMhkB,cAErC9Q,EAAM+0B,YAAYthC,KAAKohC,aAAc,QAAS,WAC1CC,EAAME,YAAcF,EAAMD,aAC1BC,EAAMF,YAAY/5B,OAASi6B,EAAMhkB,eAGzCrd,KAAKsiC,kBAAoB,GAAI/B,KACzBrsB,QAAS,MACTzQ,KAAM,iBACNuX,KAAM,SAASrP,GACXA,EAAOjE,UAAUoa,WAGzB9hB,KAAK0hC,aAAe,GAAInB,GACxBvgC,KAAK0hC,aAAaa,UACdC,mBAAoB,SAAS3B,GACzB,GAAI4B,GAAY5B,EAAG4B,WAAa5B,EAAG4B,SACnC5B,GAAGC,WAAWxtB,MAAMwQ,QAAU2e,EAAY,GAAK,OAC/C5B,EAAGM,YAAYr5B,SAEnB46B,0BAA2B,SAAS7B,GAChCA,EAAGC,WAAWxtB,MAAMwQ,QAAU,GAC9B+c,EAAGO,aAAat5B,SAEpB66B,mBAAoB,SAAS9B,GACzBA,EAAG+B,YAEPC,+BAAgC,SAAShC,GACrCA,EAAGiC,YAEPC,IAAO,SAASlC,GACZx0B,WAAW,WAAaw0B,EAAG/e,UAE/BkhB,OAAU,SAASnC,GACXA,EAAGU,aAAeV,EAAGO,cACrBP,EAAGhqB,UACPgqB,EAAG+B,YAEPK,eAAgB,SAASpC,GACjBA,EAAGU,aAAeV,EAAGO,cACrBP,EAAGhqB,UACPgqB,EAAGiC,YAEPI,aAAc,SAASrC,GACfA,EAAGU,aAAeV,EAAGO,cACrBP,EAAGsC,aACPtC,EAAGuC,WAEPC,IAAO,SAASxC,IACXA,EAAGU,aAAeV,EAAGO,aAAeP,EAAGM,YAAcN,EAAGO,cAAct5B,WAI/E9H,KAAK0hC,aAAa4B,cACd7/B,KAAM,mBACNyQ,SAAUqvB,IAAK,cAAeC,IAAK,yBACnCxoB,KAAM,SAAS6lB,GACXA,EAAGG,aAAahY,SAAW6X,EAAGG,aAAahY,QAC3C6X,EAAG4C,kBAGPhgC,KAAM,sBACNyQ,SAAUqvB,IAAK,cAAeC,IAAK,yBACnCxoB,KAAM,SAAS6lB,GACXA,EAAGI,oBAAoBjY,SAAW6X,EAAGI,oBAAoBjY,QACzD6X,EAAG4C,kBAGPhgC,KAAM,mBACNyQ,SAAUqvB,IAAK,cAAeC,IAAK,yBACnCxoB,KAAM,SAAS6lB,GACXA,EAAGK,gBAAgBlY,SAAW6X,EAAGK,gBAAgBlY,QACjD6X,EAAG4C,mBAIXzjC,KAAKyjC,aAAe,WAChB/9B,EAAIg+B,YAAY1jC,KAAKghC,aAAc,UAAWhhC,KAAKghC,aAAahY,SAChEtjB,EAAIg+B,YAAY1jC,KAAKkhC,gBAAiB,UAAWlhC,KAAKkhC,gBAAgBlY,SACtEtjB,EAAIg+B,YAAY1jC,KAAKihC,oBAAqB,UAAWjhC,KAAKihC,oBAAoBjY,SAC9EhpB,KAAKoiC,MAAK,GAAO,IAGrBpiC,KAAKqd,UAAY,SAAStC,GACtB/a,KAAK2L,OAAOuvB,QAAQ7d,UAAUtC,GAAM/a,KAAK2L,OAAOg4B,QAAQC,SAAS7oB,IACjE/a,KAAK2L,OAAOk4B,SAASC,qBAEzB9jC,KAAKoiC,KAAO,SAAS2B,EAAaC,EAAWC,GACzC,GAAI94B,GAAQnL,KAAK2L,OAAOy2B,KAAKpiC,KAAKmhC,YAAY/5B,OAC1C28B,YAAaA,EACbC,UAAWA,EACXE,MAAM,EACNC,OAAQnkC,KAAKghC,aAAahY,QAC1Bob,cAAepkC,KAAKihC,oBAAoBjY,QACxCqb,UAAWrkC,KAAKkhC,gBAAgBlY,QAChCib,cAAeA,IAEfK,GAAWn5B,GAASnL,KAAKmhC,YAAY/5B,KACzC1B,GAAIg+B,YAAY1jC,KAAK0H,UAAW,cAAe48B,GAC/CtkC,KAAK2L,OAAO44B,MAAM,iBAAmB3tB,OAAQ0tB,IAC7CtkC,KAAKqd,aAETrd,KAAK4iC,SAAW,WACZ5iC,KAAKoiC,MAAK,GAAM,IAEpBpiC,KAAK8iC,SAAW,WACZ9iC,KAAKoiC,MAAK,GAAM,IAEpBpiC,KAAKojC,QAAU,WACX,GAAIj4B,GAAQnL,KAAK2L,OAAOy3B,QAAQpjC,KAAKmhC,YAAY/5B,OAC7C+8B,OAAQnkC,KAAKghC,aAAahY,QAC1Bob,cAAepkC,KAAKihC,oBAAoBjY,QACxCqb,UAAWrkC,KAAKkhC,gBAAgBlY,UAEhCsb,GAAWn5B,GAASnL,KAAKmhC,YAAY/5B,KACzC1B,GAAIg+B,YAAY1jC,KAAK0H,UAAW,cAAe48B,GAC/CtkC,KAAK2L,OAAO44B,MAAM,iBAAmB3tB,OAAQ0tB,IAC7CtkC,KAAKqd,YACLrd,KAAK8hB,QAET9hB,KAAK6W,QAAU,WACN7W,KAAK2L,OAAO64B,eACbxkC,KAAK2L,OAAOkL,QAAQ7W,KAAKohC,aAAah6B,QAE9CpH,KAAKykC,mBAAqB,WACjBzkC,KAAK2L,OAAO64B,gBACbxkC,KAAK2L,OAAOkL,QAAQ7W,KAAKohC,aAAah6B,OACtCpH,KAAK4iC,aAGb5iC,KAAKmjC,WAAa,WACTnjC,KAAK2L,OAAO64B,eACbxkC,KAAK2L,OAAOw3B,WAAWnjC,KAAKohC,aAAah6B,QAGjDpH,KAAK8hB,KAAO,WACR9hB,KAAKia,QAAQ3G,MAAMwQ,QAAU,OAC7B9jB,KAAK2L,OAAO+4B,WAAWC,sBAAsB3kC,KAAKsiC,mBAClDtiC,KAAK2L,OAAO7D,SAEhB9H,KAAKuS,KAAO,SAASnL,EAAOq7B,GACxBziC,KAAKia,QAAQ3G,MAAMwQ,QAAU,GAC7B9jB,KAAK8gC,WAAWxtB,MAAMwQ,QAAU2e,EAAY,GAAK,OAEjDziC,KAAKyiC,UAAYA,EAEbr7B,IACApH,KAAKmhC,YAAY/5B,MAAQA,GAE7BpH,KAAKoiC,MAAK,GAAO,GAAO,GAExBpiC,KAAKmhC,YAAYr5B,QACjB9H,KAAKmhC,YAAYj2B,SAEjBlL,KAAK2L,OAAO+4B,WAAWE,mBAAmB5kC,KAAKsiC,oBAGnDtiC,KAAK6kC,UAAY,WACb,GAAIC,GAAKr4B,SAASs4B,aAClB,OAAOD,IAAM9kC,KAAKmhC,aAAe2D,GAAM9kC,KAAKohC,gBAEjD7gC,KAAK+E,EAAU3C,WAElB/C,EAAQ0F,UAAYA,EAEpB1F,EAAQolC,OAAS,SAASr5B,EAAQ82B,GAC9B,GAAI5B,GAAKl1B,EAAOjE,WAAa,GAAIpC,GAAUqG,EAC3Ck1B,GAAGtuB,KAAK5G,EAAOuvB,QAAQG,eAAgBoH,MAI3B,WACIjwB,IAAI+lB,UAAU,qBAAsB,kBAMnD,SAAS14B,EAAQD,EAASM,GAE/BL,EAAOD,QAAQS,GAAK,uBACpBR,EAAOD,QAAQqlC,IAAM"} \ No newline at end of file +{"version":3,"file":"jsoneditor-minimalist.map","sources":["./dist/jsoneditor-minimalist.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","JSONEditor","container","options","json","Error","ieVersion","util","getInternetExplorerVersion","error","console","warn","onError","change","onChange","editable","onEditable","VALID_OPTIONS","Object","keys","forEach","option","indexOf","arguments","length","_create","Ajv","e","code","err","treemode","textmode","modes","prototype","DEBOUNCE_INTERVAL","mode","setMode","_delete","set","get","setText","jsonText","parse","getText","JSON","stringify","setName","name","getName","data","extend","oldMode","config","asText","clear","mixin","create","load","onModeChange","_onError","getMode","setSchema","schema","ajv","allErrors","verbose","validateSchema","compile","validate","registerMode","i","prop","isArray","reserved","Highlighter","History","SearchBox","ContextMenu","Node","modeswitcher","dom","highlighter","selection","undefined","multiselection","nodes","errorNodes","_setOptions","history","_createFrame","_createTable","frame","parentNode","removeChild","search","hasOwnProperty","_debouncedValidate","debounce","bind","focusNode","domFocus","Function","content","table","params","field","value","node","_setRoot","recurse","expand","appendChild","searchBox","blur","getValue","updateField","focus","input","querySelector","menu","collapse","tbody","getDom","text","results","expandAll","collapseAll","_onAction","action","add","_onChange","setError","duplicateErrors","schemaErrors","valid","errors","map","improveSchemaError","findNode","dataPath","filter","entry","concat","reduce","all","findParents","parent","child","message","type","startAutoScroll","mouseY","me","top","getAbsoluteTop","height","clientHeight","bottom","margin","interval","scrollTop","autoScrollStep","scrollHeight","autoScrollTimer","setInterval","stopAutoScroll","clearTimeout","setSelection","select","range","setSelectionOffset","getSelection","getSelectionOffset","nodeName","slice","scrollTo","callback","editor","animateTimeout","animateCallback","finalScrollTop","Math","min","max","animate","diff","abs","setTimeout","onEvent","event","_onEvent","document","createElement","className","onclick","target","preventDefault","oninput","onchange","onkeydown","onkeyup","oncut","onpaste","onmousedown","onmouseup","onmouseover","onmouseout","addEventListener","onfocusin","onfocusout","title","undo","_onUndo","redo","_onRedo","disabled","canUndo","canRedo","modeBox","_onKeyDown","_startDragDistance","_updateDragDistance","getNodeFromTarget","selected","showContextMenu","hasMoved","deselect","onDragStart","drag","_onMultiSelectStart","dragDistanceEvent","initialTarget","initialPageX","pageX","initialPageY","pageY","dragDistance","diffX","diffY","sqrt","start","end","mousemove","window","_onMultiSelect","mouseup","_onMultiSelectEnd","_findTopLevelNodes","removeEventListener","clearStartAndEnd","setSelected","Array","first","startPath","getPath","endPath","startChild","endChild","childs","startIndex","endIndex","firstIndex","lastIndex","keynum","which","keyCode","ctrlKey","shiftKey","handled","selectContentEditable","previous","next","stopPropagation","contentOuter","col","colgroupContent","width","anchor","onClose","items","push","click","onDuplicate","onRemove","close","show","ace","MAX_ERRORS","indentation","Number","_ace","theme","aceEditor","textarea","clientWidth","buttonFormat","format","buttonCompact","compact","editorDom","style","edit","$blockScrolling","Infinity","setTheme","setShowPrintMargin","setFontSize","getSession","setTabSize","setUseSoftTabs","setUseWrapMode","commands","bindKey","defineProperty","poweredBy","createTextNode","href","open","on","spellcheck","destroy","resize","force","sanitize","escapeUnicode","escapeUnicodeChars","originalOnChange","setValue","validationErrors","marginBottom","paddingBottom","doValidate","limit","hidden","innerHTML","join","jsonlint","jsonString","jsString","curr","charAt","prev","lastNonWhitespace","chars","pp","skipBlockComment","skipComment","parseString","quote","parseKey","specialValues","key","regexp","test","match","replace","charCodeAt","toString","a","b","object","String","Boolean","RegExp","isUrlRegex","isUrl","obj","getAbsoluteLeft","elem","rect","getBoundingClientRect","left","pageXOffset","scrollLeft","pageYOffset","addClassName","classes","split","removeClassName","index","splice","stripFormatting","divElement","childNodes","iMax","removeAttribute","attributes","j","attribute","specified","setEndOfContentEditable","contentEditableElement","createRange","selectNodeContents","removeAllRanges","addRange","sel","getRangeAt","rangeCount","startContainer","endContainer","startOffset","endOffset","firstChild","setStart","setEnd","getInnerText","element","buffer","flush","nodeValue","hasChildNodes","innerText","prevChild","prevName","_ieVersion","rv","navigator","appName","ua","userAgent","re","exec","parseFloat","$1","isFirefox","listener","useCapture","attachEvent","f","detachEvent","parsePath","jsonPath","remainder","substr","SyntaxError","substring","keyword","enums","more","insideRect","_margin","right","func","wait","immediate","timeout","context","args","later","apply","callNow","textDiff","oldText","newText","len","oldEnd","newEnd","locked","highlight","setHighlight","_cancelUnhighlight","unhighlight","unhighlightTimer","lock","unlock","actions","editField","oldValue","newValue","editValue","updateValue","changeType","oldType","newType","appendNodes","insertBeforeNodes","insertBefore","beforeNode","insertAfterNodes","afterNode","insertAfter","removeNodes","append","duplicateNodes","moveNodes","oldBeforeNode","moveBefore","newBeforeNode","sort","hideChilds","oldSort","oldChilds","showChilds","newSort","newChilds","timestamp","Date","oldSelection","newSelection","delay","lastText","tr","td","divInput","tableInput","tbodySearch","refreshSearch","_onDelayedSearch","_onSearch","_onKeyUp","searchNext","searchPrevious","resultIndex","_setActiveResult","activeResult","prevNode","prevElem","searchFieldActive","searchValueActive","updateDom","_clearDelay","forceSearch","resultCount","createMenuItems","list","domItems","item","separator","li","domItem","button","hide","submenu","divIcon","buttonSubmenu","buttonExpand","submenuTitle","divExpand","_onExpandItem","domSubItems","subItems","ul","eventListeners","focusButton","overflow","maxHeight","_getVisibleButtons","buttons","expandedItem","subItem","visibleMenu","contentWindow","showBelow","anchorRect","contentRect","anchorHeight","offsetHeight","mousedown","_isChildOf","keydown","fn","alreadyVisible","padding","display","targetIndex","prevButton","nextButton","expanded","setField","fieldEditable","_debouncedOnChangeValue","_onChangeValue","_debouncedOnChangeField","_onChangeField","appendNodeFactory","_updateEditability","path","getFieldsPath","unshift","shift","parents","tdError","tdValue","popover","onfocus","directions","direction","popoverRect","fit","getIndex","setParent","previousField","getField","_getDomField","childValue","_getType","childField","previousValue","arr","_getDomValue","getLevel","clone","fieldInnerText","valueInnerText","cloneChilds","childClone","getAppend","nextTr","nextSibling","_hasChilds","newTr","appendTr","updateIndexes","trTemp","AppendNode","moveTo","currentIndex","toLowerCase","searchField","searchValue","_updateDomField","childResults","_updateDomValue","offsetTop","focusElement","elementName","editableDiv","containsNode","_move","clearDom","removedNode","_remove","lastTr","_stringCast","silent","_unescapeHTML","str","undoDiff","redoDiff","domValue","classNames","isEmpty","count","checkbox","tdCheckbox","checked","domField","duplicateKeys","tdDrag","domDrag","tdMenu","tdField","tree","_createDomTree","firstNode","lastNode","draggedNode","_nextSibling","offsetY","onDrag","onDragEnd","oldCursor","body","cursor","mouseX","level","trThis","trPrev","trNext","trFirst","trLast","trRoot","nodePrev","nodeNext","topThis","topPrev","topFirst","heightThis","bottomNext","heightNext","moved","previousSibling","diffLevel","round","levelNext","isDraggedNode","some","n","_createDomField","isFirst","domTree","marginLeft","contentEditable","_escapeHTML","_updateDomIndexes","_createDomValue","_createDomExpandButton","borderCollapse","tdExpand","tdSeparator","srcElement","expandable","_onExpand","offsetX","onKeyDown","nextNode","nextDom","nextDom2","altKey","selectedNodes","_onInsertBefore","_onInsertAfter","endNode","_lastNode","_getElementName","homeNode","_firstNode","prevElement","_previousElement","appendDom","nextNode2","_previousNode","nextElement","_nextElement","prevDom","isVisible","_nextNode","blurNodes","clones","newNode","_onAppend","_onChangeType","_onSort","order","firstDom","lastDom","lastChild","TYPE_TITLES","auto","array","string","titles","lower","num","numFloat","isNaN","htmlEscaped","html","escapedText","_escapeJSON","escaped","createModeSwitcher","current","switchMode","availableModes","form","view","currentMode","currentTitle","box","div","position","parser","trace","yy","symbols_","JSONString","STRING","JSONNumber","NUMBER","JSONNullLiteral","NULL","JSONBooleanLiteral","TRUE","FALSE","JSONText","JSONValue","EOF","JSONObject","JSONArray","{","}","JSONMemberList","JSONMember",":",",","[","]","JSONElementList","$accept","$end","terminals_",2,4,6,8,10,11,14,17,18,21,22,23,24,"productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$",3,5,7,9,12,13,15,16,1,19,20,25,"defaultActions","parseError","hash","popStack","stack","vstack","lstack","lex","token","self","lexer","recovering","TERROR","setInput","yylloc","yyloc","symbol","preErrorSymbol","state","r","newState","expected","yyval","errStr","showPosition","line","loc","first_line","last_line","first_column","last_column","_input","_more","_less","done","matched","conditionStack","ch","lines","unput","less","pastInput","past","upcomingInput","pre","tempMatch","rules","_currentRules","flex","begin","condition","popState","pop","conditions","topState","pushState","yy_","$avoiding_name_collisions","YY_START","INITIAL","inclusive","trAppend","tdAppend","domText","paddingLeft","acequire","isDark","cssClass","cssText","importCssString","oop","TextHighlightRules","JsonHighlightRules","$rules","regex","inherits","Range","MatchingBraceOutdent","checkOutdent","autoOutdent","doc","row","getLine","column","openBracePos","findMatchingBracket","indent","$getIndent","Behaviour","TokenIterator","lang","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","initContext","multiSelect","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","opening","closing","rowDiff","CstyleBehaviour","session","getCursorPosition","getSelectionRange","getTextRange","getWrapBehavioursEnabled","isSaneInsertion","inMultiSelectMode","recordAutoInsert","recordMaybeInsert","rightChar","matching","$findOpeningBracket","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","stringRepeat","clearMaybeInsertedClosing","next_indent","getTabString","isMultiLine","leftChar","getTokenAt","rightToken","pair","stringBefore","stringAfter","wordRe","$mode","tokenRe","isWordBefore","isWordAfter","iterator","$matchTokenType","getCurrentToken","iterator2","stepForward","getCurrentTokenRow","types","bracket","BaseFoldMode","FoldMode","commentRegex","foldingStartMarker","source","foldingStopMarker","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","getFoldWidget","foldStyle","fw","getFoldWidgetRange","forceMultiline","getCommentRegionBlock","openingBracketBlock","getCommentFoldRange","getSectionRange","closingBracketBlock","startIndent","startRow","startColumn","endRow","maxRow","getLength","subRange","depth","TextMode","Mode","HighlightRules","CStyleFoldMode","WorkerClient","$outdent","$behaviour","foldingRules","getNextLineIndent","tab","createWorker","worker","attachToDocument","getDocument","setAnnotations","clearAnnotations","$id","searchboxCss","HashHandler","keyUtil","showReplaceForm","$init","setEditor","$initElements","sb","replaceBox","searchOptions","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","_this","addListener","activeInput","t","getAttribute","$searchBarKb","addCommandKeyListener","hashId","keyString","keyCodeToString","command","findKeyCommand","stopEvent","$onChange","delayedCall","find","schedule","$closeSearchBarKb","bindKeys","Ctrl-f|Command-f","isReplace","Ctrl-H|Command-Option-F","Ctrl-G|Command-G","findNext","Ctrl-Shift-G|Command-Shift-G","findPrev","esc","Return","Shift-Return","Alt-Return","replaceAll","findAll","Tab","addCommands","win","mac","$syncOptions","setCssClass","$search","$options","renderer","updateBackMarkers","skipCurrent","backwards","preventScroll","wrap","regExp","caseSensitive","wholeWord","noMatch","_emit","getReadOnly","replaceAndFindNext","keyBinding","removeKeyboardHandler","addKeyboardHandler","isFocused","el","activeElement","Search","src"],"mappings":"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"} \ No newline at end of file diff --git a/dist/jsoneditor-minimalist.min.js b/dist/jsoneditor-minimalist.min.js index 1bf94a6..9b9480d 100644 --- a/dist/jsoneditor-minimalist.min.js +++ b/dist/jsoneditor-minimalist.min.js @@ -24,12 +24,12 @@ * Copyright (c) 2011-2016 Jos de Jong, http://jsoneditoronline.org * * @author Jos de Jong, - * @version 5.1.1 - * @date 2016-01-16 + * @version 5.1.2 + * @date 2016-01-21 */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):"object"==typeof exports?exports.JSONEditor=t():e.JSONEditor=t()}(this,function(){return function(e){function t(i){if(n[i])return n[i].exports;var o=n[i]={exports:{},id:i,loaded:!1};return e[i].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){function i(e,t,n){if(!(this instanceof i))throw new Error('JSONEditor constructor called without "new".');var o=l.getInternetExplorerVersion();if(-1!=o&&9>o)throw new Error("Unsupported browser, IE9 or newer required. Please install the newest version of your browser.");if(t&&(t.error&&(console.warn('Option "error" has been renamed to "onError"'),t.onError=t.error,delete t.error),t.change&&(console.warn('Option "change" has been renamed to "onChange"'),t.onChange=t.change,delete t.change),t.editable&&(console.warn('Option "editable" has been renamed to "onEditable"'),t.onEditable=t.editable,delete t.editable),t)){var r=["ace","theme","ajv","schema","onChange","onEditable","onError","onModeChange","escapeUnicode","history","search","mode","modes","name","indentation"];Object.keys(t).forEach(function(e){-1===r.indexOf(e)&&console.warn('Unknown option "'+e+'". This option will be ignored')})}arguments.length&&this._create(e,t,n)}var o;try{o=n(!function(){var e=new Error('Cannot find module "ajv/dist/ajv.bundle.js"');throw e.code="MODULE_NOT_FOUND",e}())}catch(r){}var s=n(1),a=n(2),l=n(3);i.modes={},i.prototype.DEBOUNCE_INTERVAL=150,i.prototype._create=function(e,t,n){this.container=e,this.options=t||{},this.json=n||{};var i=this.options.mode||"tree";this.setMode(i)},i.prototype._delete=function(){},i.prototype.set=function(e){this.json=e},i.prototype.get=function(){return this.json},i.prototype.setText=function(e){this.json=l.parse(e)},i.prototype.getText=function(){return JSON.stringify(this.json)},i.prototype.setName=function(e){this.options||(this.options={}),this.options.name=e},i.prototype.getName=function(){return this.options&&this.options.name},i.prototype.setMode=function(e){var t,n,o=this.container,r=l.extend({},this.options),s=r.mode;r.mode=e;var a=i.modes[e];if(!a)throw new Error('Unknown mode "'+r.mode+'"');try{var c="text"==a.data;if(n=this.getName(),t=this[c?"getText":"get"](),this._delete(),l.clear(this),l.extend(this,a.mixin),this.create(o,r),this.setName(n),this[c?"setText":"set"](t),"function"==typeof a.load)try{a.load.call(this)}catch(d){console.error(d)}if("function"==typeof r.onModeChange&&e!==s)try{r.onModeChange(e,s)}catch(d){console.error(d)}}catch(d){this._onError(d)}},i.prototype.getMode=function(){return this.options.mode},i.prototype._onError=function(e){if(!this.options||"function"!=typeof this.options.onError)throw e;this.options.onError(e)},i.prototype.setSchema=function(e){if(e){var t;try{t=this.options.ajv||o({allErrors:!0,verbose:!0})}catch(n){console.warn("Failed to create an instance of Ajv, JSON Schema validation is not available. Please use a JSONEditor bundle including Ajv, or pass an instance of Ajv as via the configuration option `ajv`.")}t&&(this.validateSchema=t.compile(e),this.options.schema=e,this.validate())}else this.validateSchema=null,this.options.schema=null,this.validate()},i.prototype.validate=function(){},i.registerMode=function(e){var t,n;if(l.isArray(e))for(t=0;te&&n.scrollTop>0?this.autoScrollStep=(i+s-e)/3:e>r-s&&o+n.scrollTop3?(n.scrollTop+=o/3,i.animateCallback=t,i.animateTimeout=setTimeout(a,50)):(t&&t(!0),n.scrollTop=s,delete i.animateTimeout,delete i.animateCallback)};a()}else t&&t(!1)},d._createFrame=function(){function e(e){t._onEvent&&t._onEvent(e)}this.frame=document.createElement("div"),this.frame.className="jsoneditor jsoneditor-mode-"+this.options.mode,this.container.appendChild(this.frame);var t=this;this.frame.onclick=function(t){var n=t.target;e(t),"BUTTON"==n.nodeName&&t.preventDefault()},this.frame.oninput=e,this.frame.onchange=e,this.frame.onkeydown=e,this.frame.onkeyup=e,this.frame.oncut=e,this.frame.onpaste=e,this.frame.onmousedown=e,this.frame.onmouseup=e,this.frame.onmouseover=e,this.frame.onmouseout=e,c.addEventListener(this.frame,"focus",e,!0),c.addEventListener(this.frame,"blur",e,!0),this.frame.onfocusin=e,this.frame.onfocusout=e,this.menu=document.createElement("div"),this.menu.className="jsoneditor-menu",this.frame.appendChild(this.menu);var n=document.createElement("button");n.className="jsoneditor-expand-all",n.title="Expand all fields",n.onclick=function(){t.expandAll()},this.menu.appendChild(n);var i=document.createElement("button");if(i.title="Collapse all fields",i.className="jsoneditor-collapse-all",i.onclick=function(){t.collapseAll()},this.menu.appendChild(i),this.history){var o=document.createElement("button");o.className="jsoneditor-undo jsoneditor-separator",o.title="Undo last action (Ctrl+Z)",o.onclick=function(){t._onUndo()},this.menu.appendChild(o),this.dom.undo=o;var s=document.createElement("button");s.className="jsoneditor-redo",s.title="Redo (Ctrl+Shift+Z)",s.onclick=function(){t._onRedo()},this.menu.appendChild(s),this.dom.redo=s,this.history.onChange=function(){o.disabled=!t.history.canUndo(),s.disabled=!t.history.canRedo()},this.history.onChange()}if(this.options&&this.options.modes&&this.options.modes.length){var a=l.create(this,this.options.modes,this.options.mode);this.menu.appendChild(a),this.dom.modeBox=a}this.options.search&&(this.searchBox=new r(this,this.menu))},d._onUndo=function(){this.history&&(this.history.undo(),this._onChange())},d._onRedo=function(){this.history&&(this.history.redo(),this._onChange())},d._onEvent=function(e){"keydown"==e.type&&this._onKeyDown(e),"focus"==e.type&&(u=e.target),"mousedown"==e.type&&this._startDragDistance(e),("mousemove"==e.type||"mouseup"==e.type||"click"==e.type)&&this._updateDragDistance(e);var t=a.getNodeFromTarget(e.target);if(t&&t.selected){if("click"==e.type){if(e.target==t.dom.menu)return void this.showContextMenu(e.target);e.hasMoved||this.deselect()}"mousedown"==e.type&&a.onDragStart(this.multiselection.nodes,e)}else"mousedown"==e.type&&(this.deselect(),t&&e.target==t.dom.drag?a.onDragStart(t,e):(!t||e.target!=t.dom.field&&e.target!=t.dom.value)&&this._onMultiSelectStart(e));t&&t.onEvent(e)},d._startDragDistance=function(e){this.dragDistanceEvent={initialTarget:e.target,initialPageX:e.pageX,initialPageY:e.pageY,dragDistance:0,hasMoved:!1}},d._updateDragDistance=function(e){this.dragDistanceEvent||this._startDragDistance(e);var t=e.pageX-this.dragDistanceEvent.initialPageX,n=e.pageY-this.dragDistanceEvent.initialPageY;return this.dragDistanceEvent.dragDistance=Math.sqrt(t*t+n*n),this.dragDistanceEvent.hasMoved=this.dragDistanceEvent.hasMoved||this.dragDistanceEvent.dragDistance>10,e.dragDistance=this.dragDistanceEvent.dragDistance,e.hasMoved=this.dragDistanceEvent.hasMoved,e.dragDistance},d._onMultiSelectStart=function(e){var t=a.getNodeFromTarget(e.target);if("tree"===this.options.mode&&void 0===this.options.onEditable){this.multiselection={start:t||null,end:null,nodes:[]},this._startDragDistance(e);var n=this;this.mousemove||(this.mousemove=c.addEventListener(window,"mousemove",function(e){n._onMultiSelect(e)})),this.mouseup||(this.mouseup=c.addEventListener(window,"mouseup",function(e){n._onMultiSelectEnd(e)}))}},d._onMultiSelect=function(e){if(e.preventDefault(),this._updateDragDistance(e),e.hasMoved){var t=a.getNodeFromTarget(e.target);t&&(null==this.multiselection.start&&(this.multiselection.start=t),this.multiselection.end=t),this.deselect();var n=this.multiselection.start,i=this.multiselection.end||this.multiselection.start;n&&i&&(this.multiselection.nodes=this._findTopLevelNodes(n,i),this.select(this.multiselection.nodes))}},d._onMultiSelectEnd=function(e){this.multiselection.nodes[0]&&this.multiselection.nodes[0].dom.menu.focus(),this.multiselection.start=null,this.multiselection.end=null,this.mousemove&&(c.removeEventListener(window,"mousemove",this.mousemove),delete this.mousemove),this.mouseup&&(c.removeEventListener(window,"mouseup",this.mouseup),delete this.mouseup)},d.deselect=function(e){this.multiselection.nodes.forEach(function(e){e.setSelected(!1)}),this.multiselection.nodes=[],e&&(this.multiselection.start=null,this.multiselection.end=null)},d.select=function(e){if(!Array.isArray(e))return this.select([e]);if(e){this.deselect(),this.multiselection.nodes=e.slice(0);var t=e[0];e.forEach(function(e){e.setSelected(!0,e===t)})}},d._findTopLevelNodes=function(e,t){for(var n=e.getPath(),i=t.getPath(),o=0;o0){var r=n.length>l;if(r){n=n.slice(0,l);var a=this.validateSchema.errors.length-l;n.push("("+a+" more errors...)")}var c=document.createElement("div");c.innerHTML=''+n.map(function(e){var t;return t="string"==typeof e?'":"",''+t+""}).join("")+"
'+e+"
"+e.dataPath+""+e.message+"
",this.dom.validationErrors=c,this.frame.appendChild(c);var d=c.clientHeight;this.content.style.marginBottom=-d+"px",this.content.style.paddingBottom=d+"px"}if(this.aceEditor){var h=!1;this.aceEditor.resize(h)}},e.exports=[{mode:"text",mixin:a,data:"text",load:a.format},{mode:"code",mixin:a,data:"text",load:a.format}]},function(e,t,n){var i=n(10);t.parse=function(e){try{return JSON.parse(e)}catch(n){throw t.validate(e),n}},t.sanitize=function(e){function t(){return e.charAt(c)}function n(){return e.charAt(c+1)}function i(){return e.charAt(c-1)}function o(){for(var t=c-1;t>=0;){var n=e.charAt(t);if("{"===n)return!0;if(" "!==n&&"\n"!==n&&"\r"!==n)return!1;t--}return!1}function r(){for(c+=2;ci;i++){var r=n[i];r.style&&r.removeAttribute("style");var s=r.attributes;if(s)for(var a=s.length-1;a>=0;a--){var l=s[a];l.specified===!0&&r.removeAttribute(l.name)}t.stripFormatting(r)}},t.setEndOfContentEditable=function(e){var t,n;document.createRange&&(t=document.createRange(),t.selectNodeContents(e),t.collapse(!1),n=window.getSelection(),n.removeAllRanges(),n.addRange(t))},t.selectContentEditable=function(e){if(e&&"DIV"==e.nodeName){var t,n;window.getSelection&&document.createRange&&(n=document.createRange(),n.selectNodeContents(e),t=window.getSelection(),t.removeAllRanges(),t.addRange(n))}},t.getSelection=function(){if(window.getSelection){var e=window.getSelection();if(e.getRangeAt&&e.rangeCount)return e.getRangeAt(0)}return null},t.setSelection=function(e){if(e&&window.getSelection){var t=window.getSelection();t.removeAllRanges(),t.addRange(e)}},t.getSelectionOffset=function(){var e=t.getSelection();return e&&"startOffset"in e&&"endOffset"in e&&e.startContainer&&e.startContainer==e.endContainer?{startOffset:e.startOffset,endOffset:e.endOffset,container:e.startContainer.parentNode}:null},t.setSelectionOffset=function(e){if(document.createRange&&window.getSelection){var n=window.getSelection();if(n){var i=document.createRange();e.container.firstChild||e.container.appendChild(document.createTextNode("")),i.setStart(e.container.firstChild,e.startOffset),i.setEnd(e.container.firstChild,e.endOffset),t.setSelection(i)}}},t.getInnerText=function(e,n){var i=void 0==n;if(i&&(n={text:"",flush:function(){var e=this.text;return this.text="",e},set:function(e){this.text=e}}),e.nodeValue)return n.flush()+e.nodeValue;if(e.hasChildNodes()){for(var o=e.childNodes,r="",s=0,a=o.length;a>s;s++){var l=o[s];if("DIV"==l.nodeName||"P"==l.nodeName){var c=o[s-1],d=c?c.nodeName:void 0;d&&"DIV"!=d&&"P"!=d&&"BR"!=d&&(r+="\n",n.flush()),r+=t.getInnerText(l,n),n.set("\n")}else"BR"==l.nodeName?(r+=n.flush(),n.set("\n")):r+=t.getInnerText(l,n)}return r}return"P"==e.nodeName&&-1!=t.getInternetExplorerVersion()?n.flush():""},t.getInternetExplorerVersion=function(){if(-1==r){var e=-1;if("Microsoft Internet Explorer"==navigator.appName){var t=navigator.userAgent,n=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");null!=n.exec(t)&&(e=parseFloat(RegExp.$1))}r=e}return r},t.isFirefox=function(){return-1!=navigator.userAgent.indexOf("Firefox")};var r=-1;t.addEventListener=function(e,n,i,o){if(e.addEventListener)return void 0===o&&(o=!1),"mousewheel"===n&&t.isFirefox()&&(n="DOMMouseScroll"),e.addEventListener(n,i,o),i;if(e.attachEvent){var r=function(){return i.call(e,window.event)};return e.attachEvent("on"+n,r),r}},t.removeEventListener=function(e,n,i,o){e.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===n&&t.isFirefox()&&(n="DOMMouseScroll"),e.removeEventListener(n,i,o)):e.detachEvent&&e.detachEvent("on"+n,i)},t.parsePath=function s(e){var t,n;if(0===e.length)return[];var i=e.match(/^\.(\w+)/);if(i)t=i[1],n=e.substr(t.length+1);else{if("["!==e[0])throw new SyntaxError("Failed to parse path");var o=e.indexOf("]");if(-1===o)throw new SyntaxError("Character ] expected in path");if(1===o)throw new SyntaxError("Index expected after [");t=JSON.parse(e.substring(1,o)),n=e.substr(o+1)}return[t].concat(s(n))},t.improveSchemaError=function(e){if("enum"===e.keyword&&Array.isArray(e.schema)){var t=e.schema;if(t){if(t=t.map(function(e){return JSON.stringify(e)}),t.length>5){var n=["("+(t.length-5)+" more...)"];t=t.slice(0,5),t.push(n)}e.message="should be equal to one of: "+t.join(", ")}}return e},t.insideRect=function(e,t,n){var i=void 0!==n?n:0;return t.left-i>=e.left&&t.right+i<=e.right&&t.top-i>=e.top&&t.bottom+i<=e.bottom},t.debounce=function(e,t,n){var i;return function(){var o=this,r=arguments,s=function(){i=null,n||e.apply(o,r)},a=n&&!i;clearTimeout(i),i=setTimeout(s,t),a&&e.apply(o,r)}},t.textDiff=function(e,t){for(var n=t.length,i=0,o=e.length,r=t.length;t.charAt(i)===e.charAt(i)&&n>i;)i++;for(;t.charAt(r-1)===e.charAt(o-1)&&r>i&&o>0;)r--,o--;return{start:i,end:r}}},function(e,t,n){function i(){this.locked=!1}i.prototype.highlight=function(e){this.locked||(this.node!=e&&(this.node&&this.node.setHighlight(!1),this.node=e,this.node.setHighlight(!0)),this._cancelUnhighlight())},i.prototype.unhighlight=function(){if(!this.locked){var e=this;this.node&&(this._cancelUnhighlight(),this.unhighlightTimer=setTimeout(function(){e.node.setHighlight(!1),e.node=void 0,e.unhighlightTimer=void 0},0))}},i.prototype._cancelUnhighlight=function(){this.unhighlightTimer&&(clearTimeout(this.unhighlightTimer),this.unhighlightTimer=void 0)},i.prototype.lock=function(){this.locked=!0},i.prototype.unlock=function(){this.locked=!1},e.exports=i},function(e,t,n){function i(e){this.editor=e,this.clear(),this.actions={editField:{undo:function(e){e.node.updateField(e.oldValue)},redo:function(e){e.node.updateField(e.newValue)}},editValue:{undo:function(e){e.node.updateValue(e.oldValue)},redo:function(e){e.node.updateValue(e.newValue)}},changeType:{undo:function(e){e.node.changeType(e.oldType)},redo:function(e){e.node.changeType(e.newType)}},appendNodes:{undo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})},redo:function(e){e.nodes.forEach(function(t){e.parent.appendChild(t)})}},insertBeforeNodes:{undo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})},redo:function(e){e.nodes.forEach(function(t){e.parent.insertBefore(t,e.beforeNode)})}},insertAfterNodes:{undo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})},redo:function(e){var t=e.afterNode;e.nodes.forEach(function(n){e.parent.insertAfter(e.node,t),t=n})}},removeNodes:{undo:function(e){var t=e.parent,n=t.childs[e.index]||t.append;e.nodes.forEach(function(e){t.insertBefore(e,n)})},redo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})}},duplicateNodes:{undo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})},redo:function(e){var t=e.afterNode;e.nodes.forEach(function(n){e.parent.insertAfter(n,t),t=n})}},moveNodes:{undo:function(e){e.nodes.forEach(function(t){e.oldBeforeNode.parent.moveBefore(t,e.oldBeforeNode)})},redo:function(e){e.nodes.forEach(function(t){e.newBeforeNode.parent.moveBefore(t,e.newBeforeNode)})}},sort:{undo:function(e){var t=e.node;t.hideChilds(),t.sort=e.oldSort,t.childs=e.oldChilds,t.showChilds()},redo:function(e){var t=e.node;t.hideChilds(),t.sort=e.newSort,t.childs=e.newChilds,t.showChilds()}}}}n(3);i.prototype.onChange=function(){},i.prototype.add=function(e,t){this.index++,this.history[this.index]={action:e,params:t,timestamp:new Date},this.index=0},i.prototype.canRedo=function(){return this.indexthis.results.length-1&&(t=0),this._setActiveResult(t,e)}},i.prototype.previous=function(e){if(void 0!=this.results){var t=this.results.length-1,n=void 0!=this.resultIndex?this.resultIndex-1:t;0>n&&(n=t),this._setActiveResult(n,e)}},i.prototype._setActiveResult=function(e,t){if(this.activeResult){var n=this.activeResult.node,i=this.activeResult.elem;"field"==i?delete n.searchFieldActive:delete n.searchValueActive,n.updateDom()}if(!this.results||!this.results[e])return this.resultIndex=void 0,void(this.activeResult=void 0);this.resultIndex=e;var o=this.results[this.resultIndex].node,r=this.results[this.resultIndex].elem;"field"==r?o.searchFieldActive=!0:o.searchValueActive=!0,this.activeResult=this.results[this.resultIndex],o.updateDom(),o.scrollTo(function(){t&&o.focus(r)})},i.prototype._clearDelay=function(){void 0!=this.timeout&&(clearTimeout(this.timeout),delete this.timeout)},i.prototype._onDelayedSearch=function(e){this._clearDelay();var t=this;this.timeout=setTimeout(function(e){t._onSearch()},this.delay)},i.prototype._onSearch=function(e){this._clearDelay();var t=this.dom.search.value,n=t.length>0?t:void 0;if(n!=this.lastText||e)if(this.lastText=n,this.results=this.editor.search(n),this._setActiveResult(void 0),void 0!=n){var i=this.results.length;switch(i){case 0:this.dom.results.innerHTML="no results";break;case 1:this.dom.results.innerHTML="1 result";break;default:this.dom.results.innerHTML=i+" results"}}else this.dom.results.innerHTML=""},i.prototype._onKeyDown=function(e){var t=e.which;27==t?(this.dom.search.value="",this._onSearch(),e.preventDefault(),e.stopPropagation()):13==t&&(e.ctrlKey?this._onSearch(!0):e.shiftKey?this.previous():this.next(),e.preventDefault(),e.stopPropagation())},i.prototype._onKeyUp=function(e){var t=e.keyCode;27!=t&&13!=t&&this._onDelayedSearch(e)},i.prototype.clear=function(){this.dom.search.value="",this._onSearch()},e.exports=i},function(e,t,n){function i(e,t){function n(e,t,o){o.forEach(function(o){if("separator"==o.type){var r=document.createElement("div");r.className="jsoneditor-separator",a=document.createElement("li"),a.appendChild(r),e.appendChild(a)}else{var s={},a=document.createElement("li");e.appendChild(a);var l=document.createElement("button");if(l.className=o.className,s.button=l,o.title&&(l.title=o.title),o.click&&(l.onclick=function(){i.hide(),o.click()}),a.appendChild(l),o.submenu){var c=document.createElement("div");c.className="jsoneditor-icon",l.appendChild(c),l.appendChild(document.createTextNode(o.text));var d;if(o.click){l.className+=" jsoneditor-default";var h=document.createElement("button");s.buttonExpand=h,h.className="jsoneditor-expand",h.innerHTML='
',a.appendChild(h),o.submenuTitle&&(h.title=o.submenuTitle),d=h}else{var u=document.createElement("div");u.className="jsoneditor-expand",l.appendChild(u),d=l}d.onclick=function(){i._onExpandItem(s),d.focus()};var p=[];s.subItems=p;var f=document.createElement("ul");s.ul=f,f.className="jsoneditor-menu",f.style.height="0",a.appendChild(f),n(f,p,o.submenu)}else l.innerHTML='
'+o.text;t.push(s)}})}this.dom={};var i=this,o=this.dom;this.anchor=void 0,this.items=e,this.eventListeners={},this.selection=void 0,this.onClose=t?t.close:void 0;var r=document.createElement("div");r.className="jsoneditor-contextmenu-root",o.root=r;var s=document.createElement("div");s.className="jsoneditor-contextmenu",o.menu=s,r.appendChild(s);var a=document.createElement("ul");a.className="jsoneditor-menu",s.appendChild(a),o.list=a,o.items=[];var l=document.createElement("button");o.focusButton=l;var c=document.createElement("li");c.style.overflow="hidden",c.style.height="0",c.appendChild(l),a.appendChild(c),n(a,this.dom.items,e),this.maxHeight=0,e.forEach(function(t){var n=24*(e.length+(t.submenu?t.submenu.length:0));i.maxHeight=Math.max(i.maxHeight,n)})}var o=n(3);i.prototype._getVisibleButtons=function(){var e=[],t=this;return this.dom.items.forEach(function(n){e.push(n.button),n.buttonExpand&&e.push(n.buttonExpand),n.subItems&&n==t.expandedItem&&n.subItems.forEach(function(t){e.push(t.button),t.buttonExpand&&e.push(t.buttonExpand)})}),e},i.visibleMenu=void 0,i.prototype.show=function(e,t){this.hide();var n=!0;if(t){var r=e.getBoundingClientRect(),s=t.getBoundingClientRect();r.bottom+this.maxHeights.top&&(n=!1)}if(n){var a=e.offsetHeight;this.dom.menu.style.left="0px",this.dom.menu.style.top=a+"px",this.dom.menu.style.bottom=""}else this.dom.menu.style.left="0px",this.dom.menu.style.top="",this.dom.menu.style.bottom="0px";var l=e.parentNode;l.insertBefore(this.dom.root,l.firstChild);var c=this,d=this.dom.list;this.eventListeners.mousedown=o.addEventListener(window,"mousedown",function(e){var t=e.target;t==d||c._isChildOf(t,d)||(c.hide(),e.stopPropagation(),e.preventDefault())}),this.eventListeners.keydown=o.addEventListener(window,"keydown",function(e){c._onKeyDown(e)}),this.selection=o.getSelection(),this.anchor=e,setTimeout(function(){c.dom.focusButton.focus()},0),i.visibleMenu&&i.visibleMenu.hide(),i.visibleMenu=this},i.prototype.hide=function(){this.dom.root.parentNode&&(this.dom.root.parentNode.removeChild(this.dom.root),this.onClose&&this.onClose());for(var e in this.eventListeners)if(this.eventListeners.hasOwnProperty(e)){var t=this.eventListeners[e];t&&o.removeEventListener(window,e,t),delete this.eventListeners[e]}i.visibleMenu==this&&(i.visibleMenu=void 0)},i.prototype._onExpandItem=function(e){var t=this,n=e==this.expandedItem,i=this.expandedItem;if(i&&(i.ul.style.height="0",i.ul.style.padding="",setTimeout(function(){t.expandedItem!=i&&(i.ul.style.display="",o.removeClassName(i.ul.parentNode,"jsoneditor-selected"))},300),this.expandedItem=void 0),!n){var r=e.ul;r.style.display="block";r.clientHeight;setTimeout(function(){t.expandedItem==e&&(r.style.height=24*r.childNodes.length+"px",r.style.padding="5px 10px")},0),o.addClassName(r.parentNode,"jsoneditor-selected"),this.expandedItem=e}},i.prototype._onKeyDown=function(e){var t,n,i,r,s=e.target,a=e.which,l=!1;27==a?(this.selection&&o.setSelection(this.selection),this.anchor&&this.anchor.focus(),this.hide(),l=!0):9==a?e.shiftKey?(t=this._getVisibleButtons(),n=t.indexOf(s),0==n&&(t[t.length-1].focus(),l=!0)):(t=this._getVisibleButtons(),n=t.indexOf(s),n==t.length-1&&(t[0].focus(),l=!0)):37==a?("jsoneditor-expand"==s.className&&(t=this._getVisibleButtons(),n=t.indexOf(s),i=t[n-1],i&&i.focus()),l=!0):38==a?(t=this._getVisibleButtons(),n=t.indexOf(s),i=t[n-1],i&&"jsoneditor-expand"==i.className&&(i=t[n-2]),i||(i=t[t.length-1]),i&&i.focus(),l=!0):39==a?(t=this._getVisibleButtons(),n=t.indexOf(s),r=t[n+1],r&&"jsoneditor-expand"==r.className&&r.focus(),l=!0):40==a&&(t=this._getVisibleButtons(),n=t.indexOf(s),r=t[n+1],r&&"jsoneditor-expand"==r.className&&(r=t[n+2]),r||(r=t[0]),r&&(r.focus(),l=!0),l=!0),l&&(e.stopPropagation(),e.preventDefault())},i.prototype._isChildOf=function(e,t){for(var n=e.parentNode;n;){if(n==t)return!0;n=n.parentNode}return!1},e.exports=i},function(e,t,n){function i(e,t){this.editor=e,this.dom={},this.expanded=!1,t&&t instanceof Object?(this.setField(t.field,t.fieldEditable),this.setValue(t.value,t.type)):(this.setField(""),this.setValue(null)),this._debouncedOnChangeValue=s.debounce(this._onChangeValue.bind(this),i.prototype.DEBOUNCE_INTERVAL),this._debouncedOnChangeField=s.debounce(this._onChangeField.bind(this),i.prototype.DEBOUNCE_INTERVAL)}var o=n(7),r=n(12),s=n(3);i.prototype.DEBOUNCE_INTERVAL=150,i.prototype._updateEditability=function(){if(this.editable={field:!0,value:!0},this.editor&&(this.editable.field="tree"===this.editor.options.mode,this.editable.value="view"!==this.editor.options.mode,("tree"===this.editor.options.mode||"form"===this.editor.options.mode)&&"function"==typeof this.editor.options.onEditable)){var e=this.editor.options.onEditable({field:this.field,value:this.value,path:this.getFieldsPath()});"boolean"==typeof e?(this.editable.field=e,this.editable.value=e):("boolean"==typeof e.field&&(this.editable.field=e.field),"boolean"==typeof e.value&&(this.editable.value=e.value))}},i.prototype.getFieldsPath=function(){for(var e=this,t=[];e;){var n=void 0!=e.field?e.field:e.index;void 0!==n&&t.unshift(n),e=e.parent}return t},i.prototype.findNode=function(e){for(var t=s.parsePath(e),n=this;n&&t.length>0;){var i=t.shift();if("number"==typeof i){if("array"!==n.type)throw new Error("Cannot get child node at index "+i+": node is no array");n=n.childs[i]}else{if("object"!==n.type)throw new Error("Cannot get child node "+i+": node is no object");n=n.childs.filter(function(e){return e.field===i})[0]}}return n},i.prototype.findParents=function(){for(var e=[],t=this.parent;t;)e.unshift(t),t=t.parent;return e},i.prototype.setError=function(e,t){this.getDom(),this.error=e;var n=this.dom.tdError;if(e){n||(n=document.createElement("td"),this.dom.tdError=n,this.dom.tdValue.parentNode.appendChild(n));var i=document.createElement("div");i.className="jsoneditor-popover jsoneditor-right",i.appendChild(document.createTextNode(e.message));var o=document.createElement("button");for(o.className="jsoneditor-schema-error",o.appendChild(i),o.onmouseover=o.onfocus=function(){for(var e=["right","above","below","left"],t=0;ts;s++)n=e[s],void 0===n||n instanceof Function||(o=new i(this.editor,{value:n}),this.appendChild(o));this.value=""}else if("object"==this.type){this.childs=[];for(var l in e)e.hasOwnProperty(l)&&(n=e[l],void 0===n||n instanceof Function||(o=new i(this.editor,{field:l,value:n}),this.appendChild(o)));this.value=""}else this.childs=void 0,this.value=e;this.previousValue=this.value},i.prototype.getValue=function(){if("array"==this.type){var e=[];return this.childs.forEach(function(t){e.push(t.getValue())}),e}if("object"==this.type){var t={};return this.childs.forEach(function(e){t[e.getField()]=e.getValue()}),t}return void 0===this.value&&this._getDomValue(),this.value},i.prototype.getLevel=function(){return this.parent?this.parent.getLevel()+1:0},i.prototype.getPath=function(){var e=this.parent?this.parent.getPath():[];return e.push(this),e},i.prototype.clone=function(){var e=new i(this.editor);if(e.type=this.type,e.field=this.field,e.fieldInnerText=this.fieldInnerText,e.fieldEditable=this.fieldEditable,e.value=this.value,e.valueInnerText=this.valueInnerText,e.expanded=this.expanded,this.childs){var t=[];this.childs.forEach(function(n){var i=n.clone();i.setParent(e),t.push(i)}),e.childs=t}else e.childs=void 0;return e},i.prototype.expand=function(e){this.childs&&(this.expanded=!0,this.dom.expand&&(this.dom.expand.className="jsoneditor-expanded"),this.showChilds(),e!==!1&&this.childs.forEach(function(t){t.expand(e)}))},i.prototype.collapse=function(e){this.childs&&(this.hideChilds(),e!==!1&&this.childs.forEach(function(t){t.collapse(e)}),this.dom.expand&&(this.dom.expand.className="jsoneditor-collapsed"),this.expanded=!1)},i.prototype.showChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.dom.tr,n=t?t.parentNode:void 0;if(n){var i=this.getAppend(),o=t.nextSibling;o?n.insertBefore(i,o):n.appendChild(i),this.childs.forEach(function(e){n.insertBefore(e.getDom(),i),e.showChilds()})}}},i.prototype.hide=function(){var e=this.dom.tr,t=e?e.parentNode:void 0;t&&t.removeChild(e),this.hideChilds()},i.prototype.hideChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.getAppend();t.parentNode&&t.parentNode.removeChild(t),this.childs.forEach(function(e){e.hide()})}},i.prototype.appendChild=function(e){if(this._hasChilds()){if(e.setParent(this),e.fieldEditable="object"==this.type,"array"==this.type&&(e.index=this.childs.length),this.childs.push(e),this.expanded){var t=e.getDom(),n=this.getAppend(),i=n?n.parentNode:void 0;n&&i&&i.insertBefore(t,n),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},i.prototype.moveBefore=function(e,t){if(this._hasChilds()){var n=this.dom.tr?this.dom.tr.parentNode:void 0;if(n){var i=document.createElement("tr");i.style.height=n.clientHeight+"px",n.appendChild(i)}e.parent&&e.parent.removeChild(e),t instanceof a?this.appendChild(e):this.insertBefore(e,t),n&&n.removeChild(i)}},i.prototype.moveTo=function(e,t){if(e.parent==this){var n=this.childs.indexOf(e);t>n&&t++}var i=this.childs[t]||this.append;this.moveBefore(e,i)},i.prototype.insertBefore=function(e,t){if(this._hasChilds()){if(t==this.append)e.setParent(this),e.fieldEditable="object"==this.type,this.childs.push(e);else{var n=this.childs.indexOf(t);if(-1==n)throw new Error("Node not found");e.setParent(this),e.fieldEditable="object"==this.type,this.childs.splice(n,0,e)}if(this.expanded){var i=e.getDom(),o=t.getDom(),r=o?o.parentNode:void 0;o&&r&&r.insertBefore(i,o),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},i.prototype.insertAfter=function(e,t){if(this._hasChilds()){var n=this.childs.indexOf(t),i=this.childs[n+1];i?this.insertBefore(e,i):this.appendChild(e)}},i.prototype.search=function(e){var t,n=[],i=e?e.toLowerCase():void 0;if(delete this.searchField,delete this.searchValue,void 0!=this.field){var o=String(this.field).toLowerCase();t=o.indexOf(i),-1!=t&&(this.searchField=!0,n.push({node:this,elem:"field"})),this._updateDomField()}if(this._hasChilds()){if(this.childs){var r=[];this.childs.forEach(function(t){r=r.concat(t.search(e))}),n=n.concat(r)}if(void 0!=i){var s=!1;0==r.length?this.collapse(s):this.expand(s)}}else{if(void 0!=this.value){var a=String(this.value).toLowerCase();t=a.indexOf(i),-1!=t&&(this.searchValue=!0,n.push({node:this,elem:"value"}))}this._updateDomValue()}return n},i.prototype.scrollTo=function(e){if(!this.dom.tr||!this.dom.tr.parentNode)for(var t=this.parent,n=!1;t;)t.expand(n),t=t.parent;this.dom.tr&&this.dom.tr.parentNode&&this.editor.scrollTo(this.dom.tr.offsetTop,e)},i.focusElement=void 0,i.prototype.focus=function(e){if(i.focusElement=e,this.dom.tr&&this.dom.tr.parentNode){var t=this.dom;switch(e){case"drag":t.drag?t.drag.focus():t.menu.focus();break;case"menu":t.menu.focus();break;case"expand":this._hasChilds()?t.expand.focus():t.field&&this.fieldEditable?(t.field.focus(),s.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),s.selectContentEditable(t.value)):t.menu.focus();break;case"field":t.field&&this.fieldEditable?(t.field.focus(),s.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),s.selectContentEditable(t.value)):this._hasChilds()?t.expand.focus():t.menu.focus();break;case"value":default:t.value&&!this._hasChilds()?(t.value.focus(),s.selectContentEditable(t.value)):t.field&&this.fieldEditable?(t.field.focus(),s.selectContentEditable(t.field)):this._hasChilds()?t.expand.focus():t.menu.focus()}}},i.select=function(e){setTimeout(function(){s.selectContentEditable(e)},0)},i.prototype.blur=function(){this._getDomValue(!1),this._getDomField(!1)},i.prototype.containsNode=function(e){if(this==e)return!0;var t=this.childs;if(t)for(var n=0,i=t.length;i>n;n++)if(t[n].containsNode(e))return!0;return!1},i.prototype._move=function(e,t){if(e!=t){if(e.containsNode(this))throw new Error("Cannot move a field into a child of itself");e.parent&&e.parent.removeChild(e);var n=e.clone();e.clearDom(),t?this.insertBefore(n,t):this.appendChild(n)}},i.prototype.removeChild=function(e){if(this.childs){var t=this.childs.indexOf(e);if(-1!=t){e.hide(),delete e.searchField,delete e.searchValue;var n=this.childs.splice(t,1)[0];return n.parent=null,this.updateDom({updateIndexes:!0}),n}}return void 0},i.prototype._remove=function(e){this.removeChild(e)},i.prototype.changeType=function(e){var t=this.type;if(t!=e){if("string"!=e&&"auto"!=e||"string"!=t&&"auto"!=t){var n,i=this.dom.tr?this.dom.tr.parentNode:void 0;n=this.expanded?this.getAppend():this.getDom();var o=n&&n.parentNode?n.nextSibling:void 0;this.hide(),this.clearDom(),this.type=e,"object"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),delete e.index,e.fieldEditable=!0,void 0==e.field&&(e.field="")}),("string"==t||"auto"==t)&&(this.expanded=!0)):"array"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),e.fieldEditable=!1,e.index=t}),("string"==t||"auto"==t)&&(this.expanded=!0)):this.expanded=!1,i&&(o?i.insertBefore(this.getDom(),o):i.appendChild(this.getDom())),this.showChilds()}else this.type=e;("auto"==e||"string"==e)&&("string"==e?this.value=String(this.value):this.value=this._stringCast(String(this.value)),this.focus()),this.updateDom({updateIndexes:!0})}},i.prototype._getDomValue=function(e){if(this.dom.value&&"array"!=this.type&&"object"!=this.type&&(this.valueInnerText=s.getInnerText(this.dom.value)),void 0!=this.valueInnerText)try{var t;if("string"==this.type)t=this._unescapeHTML(this.valueInnerText);else{var n=this._unescapeHTML(this.valueInnerText);t=this._stringCast(n)}t!==this.value&&(this.value=t,this._debouncedOnChangeValue())}catch(i){if(this.value=void 0,e!==!0)throw i}},i.prototype._onChangeValue=function(){var e=this.editor.getSelection();if(e.range){var t=s.textDiff(String(this.value),String(this.previousValue));e.range.startOffset=t.start,e.range.endOffset=t.end}var n=this.editor.getSelection();if(n.range){var i=s.textDiff(String(this.previousValue),String(this.value));n.range.startOffset=i.start,n.range.endOffset=i.end}this.editor._onAction("editValue",{node:this,oldValue:this.previousValue,newValue:this.value,oldSelection:e,newSelection:n}),this.previousValue=this.value},i.prototype._onChangeField=function(){var e=this.editor.getSelection();if(e.range){var t=s.textDiff(this.field,this.previousField);e.range.startOffset=t.start,e.range.endOffset=t.end}var n=this.editor.getSelection();if(n.range){var i=s.textDiff(this.previousField,this.field);n.range.startOffset=i.start,n.range.endOffset=i.end}this.editor._onAction("editField",{node:this,oldValue:this.previousField,newValue:this.field,oldSelection:e,newSelection:n}),this.previousField=this.field},i.prototype._updateDomValue=function(){var e=this.dom.value;if(e){var t=["jsoneditor-value"],n=this.value,i="auto"==this.type?s.type(n):this.type,o="string"==i&&s.isUrl(n);t.push("jsoneditor-"+i),o&&t.push("jsoneditor-url");var r=""==String(this.value)&&"array"!=this.type&&"object"!=this.type;if(r&&t.push("jsoneditor-empty"),this.searchValueActive&&t.push("jsoneditor-highlight-active"),this.searchValue&&t.push("jsoneditor-highlight"),e.className=t.join(" "),"array"==i||"object"==i){var a=this.childs?this.childs.length:0;e.title=this.type+" containing "+a+" items"}else o&&this.editable.value?e.title="Ctrl+Click or Ctrl+Enter to open url in new window":e.title="";"boolean"===i?(this.dom.checkbox||(this.dom.checkbox=document.createElement("input"),this.dom.checkbox.type="checkbox",this.dom.tdCheckbox=document.createElement("td"),this.dom.tdCheckbox.className="jsoneditor-tree",this.dom.tdCheckbox.appendChild(this.dom.checkbox),this.dom.tdValue.parentNode.insertBefore(this.dom.tdCheckbox,this.dom.tdValue)),this.dom.checkbox.checked=this.value):this.dom.tdCheckbox&&(this.dom.tdCheckbox.parentNode.removeChild(this.dom.tdCheckbox),delete this.dom.tdCheckbox,delete this.dom.checkbox),s.stripFormatting(e)}},i.prototype._updateDomField=function(){var e=this.dom.field;if(e){var t=""==String(this.field)&&"array"!=this.parent.type;t?s.addClassName(e,"jsoneditor-empty"):s.removeClassName(e,"jsoneditor-empty"),this.searchFieldActive?s.addClassName(e,"jsoneditor-highlight-active"):s.removeClassName(e,"jsoneditor-highlight-active"),this.searchField?s.addClassName(e,"jsoneditor-highlight"):s.removeClassName(e,"jsoneditor-highlight"),s.stripFormatting(e)}},i.prototype._getDomField=function(e){if(this.dom.field&&this.fieldEditable&&(this.fieldInnerText=s.getInnerText(this.dom.field)),void 0!=this.fieldInnerText)try{var t=this._unescapeHTML(this.fieldInnerText);t!==this.field&&(this.field=t,this._debouncedOnChangeField())}catch(n){if(this.field=void 0,e!==!0)throw n}},i.prototype.validate=function(){var e=[];if("object"===this.type){for(var t={},n=[],i=0;i0&&(e=this.childs.filter(function(e){return-1!==n.indexOf(e.field)}).map(function(e){return{node:e,error:{message:'duplicate key "'+e.field+'"'}}}))}if(this.childs)for(var i=0;i0&&(e=e.concat(r))}return e},i.prototype.clearDom=function(){this.dom={}},i.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;if(this._updateEditability(),e.tr=document.createElement("tr"),e.tr.node=this,"tree"===this.editor.options.mode){var t=document.createElement("td");if(this.editable.field&&this.parent){var n=document.createElement("button");e.drag=n,n.className="jsoneditor-dragarea",n.title="Drag to move this field (Alt+Shift+Arrows)",t.appendChild(n)}e.tr.appendChild(t);var i=document.createElement("td"),o=document.createElement("button");e.menu=o,o.className="jsoneditor-contextmenu",o.title="Click to open the actions menu (Ctrl+M)",i.appendChild(e.menu),e.tr.appendChild(i)}var r=document.createElement("td");return e.tr.appendChild(r),e.tree=this._createDomTree(),r.appendChild(e.tree),this.updateDom({updateIndexes:!0}),e.tr},i.onDragStart=function(e,t){if(!Array.isArray(e))return i.onDragStart([e],t);if(0!==e.length){var n=e[0],o=e[e.length-1],r=i.getNodeFromTarget(t.target),a=o._nextSibling(),l=n.editor,c=s.getAbsoluteTop(r.dom.tr)-s.getAbsoluteTop(n.dom.tr);l.mousemove||(l.mousemove=s.addEventListener(window,"mousemove",function(t){i.onDrag(e,t)})),l.mouseup||(l.mouseup=s.addEventListener(window,"mouseup",function(t){i.onDragEnd(e,t)})),l.highlighter.lock(),l.drag={oldCursor:document.body.style.cursor,oldSelection:l.getSelection(),oldBeforeNode:a,mouseX:t.pageX,offsetY:c,level:n.getLevel()},document.body.style.cursor="move",t.preventDefault()}},i.onDrag=function(e,t){if(!Array.isArray(e))return i.onDrag([e],t);if(0!==e.length){var n,o,r,l,c,d,h,u,p,f,m,g,v,y,b=e[0].editor,w=t.pageY-b.drag.offsetY,x=t.pageX,_=!1,E=e[0];if(n=E.dom.tr,p=s.getAbsoluteTop(n),g=n.offsetHeight,p>w){o=n;do o=o.previousSibling,h=i.getNodeFromTarget(o),f=o?s.getAbsoluteTop(o):0;while(o&&f>w);h&&!h.parent&&(h=void 0),h||(d=n.parentNode.firstChild,o=d?d.nextSibling:void 0,h=i.getNodeFromTarget(o),h==E&&(h=void 0)),h&&(o=h.dom.tr,f=o?s.getAbsoluteTop(o):0,w>f+g&&(h=void 0)),h&&(e.forEach(function(e){h.parent.moveBefore(e,h)}),_=!0)}else{var C=e[e.length-1];if(c=C.expanded&&C.append?C.append.getDom():C.dom.tr,l=c?c.nextSibling:void 0){m=s.getAbsoluteTop(l),r=l;do u=i.getNodeFromTarget(r),r&&(v=r.nextSibling?s.getAbsoluteTop(r.nextSibling):0,y=r?v-m:0,u.parent.childs.length==e.length&&u.parent.childs[e.length-1]==C&&(p+=27)),r=r.nextSibling;while(r&&w>p+y);if(u&&u.parent){var j=x-b.drag.mouseX,S=Math.round(j/24/2),k=b.drag.level+S,N=u.getLevel();for(o=u.dom.tr.previousSibling;k>N&&o;){h=i.getNodeFromTarget(o);var A=e.some(function(e){return e===h||h._isChildOf(e)});if(A);else{if(!(h instanceof a))break;var O=h.parent.childs;if(O.length==e.length&&O[e.length-1]==C)break;u=i.getNodeFromTarget(o),N=u.getLevel()}o=o.previousSibling}c.nextSibling!=u.dom.tr&&(e.forEach(function(e){u.parent.moveBefore(e,u)}),_=!0)}}}_&&(b.drag.mouseX=x,b.drag.level=E.getLevel()),b.startAutoScroll(w),t.preventDefault()}},i.onDragEnd=function(e,t){if(!Array.isArray(e))return i.onDrag([e],t);if(0!==e.length){var n=e[0],o=n.editor,r=n.parent,a=r.childs.indexOf(n),l=r.childs[a+e.length]||r.append;e[0]&&e[0].dom.menu.focus();var c={nodes:e,oldSelection:o.drag.oldSelection,newSelection:o.getSelection(),oldBeforeNode:o.drag.oldBeforeNode,newBeforeNode:l};c.oldBeforeNode!=c.newBeforeNode&&o._onAction("moveNodes",c),document.body.style.cursor=o.drag.oldCursor,o.highlighter.unlock(),e.forEach(function(e){t.target!==e.dom.drag&&t.target!==e.dom.menu&&o.highlighter.unhighlight()}),delete o.drag,o.mousemove&&(s.removeEventListener(window,"mousemove",o.mousemove),delete o.mousemove),o.mouseup&&(s.removeEventListener(window,"mouseup",o.mouseup),delete o.mouseup),o.stopAutoScroll(),t.preventDefault()}},i.prototype._isChildOf=function(e){for(var t=this.parent;t;){if(t==e)return!0;t=t.parent}return!1},i.prototype._createDomField=function(){return document.createElement("div")},i.prototype.setHighlight=function(e){this.dom.tr&&(e?s.addClassName(this.dom.tr,"jsoneditor-highlight"):s.removeClassName(this.dom.tr,"jsoneditor-highlight"),this.append&&this.append.setHighlight(e),this.childs&&this.childs.forEach(function(t){t.setHighlight(e)}))},i.prototype.setSelected=function(e,t){this.selected=e,this.dom.tr&&(e?s.addClassName(this.dom.tr,"jsoneditor-selected"):s.removeClassName(this.dom.tr,"jsoneditor-selected"),t?s.addClassName(this.dom.tr,"jsoneditor-first"):s.removeClassName(this.dom.tr,"jsoneditor-first"),this.append&&this.append.setSelected(e),this.childs&&this.childs.forEach(function(t){t.setSelected(e)}))},i.prototype.updateValue=function(e){this.value=e,this.updateDom()},i.prototype.updateField=function(e){this.field=e,this.updateDom()},i.prototype.updateDom=function(e){var t=this.dom.tree;t&&(t.style.marginLeft=24*this.getLevel()+"px");var n=this.dom.field;if(n){this.fieldEditable?(n.contentEditable=this.editable.field,n.spellcheck=!1,n.className="jsoneditor-field"):n.className="jsoneditor-readonly";var i;i=void 0!=this.index?this.index:void 0!=this.field?this.field:this._hasChilds()?this.type:"",n.innerHTML=this._escapeHTML(i)}var o=this.dom.value;if(o){var r=this.childs?this.childs.length:0;"array"==this.type?(o.innerHTML="["+r+"]",s.addClassName(this.dom.tr,"jsoneditor-expandable")):"object"==this.type?(o.innerHTML="{"+r+"}",s.addClassName(this.dom.tr,"jsoneditor-expandable")):(o.innerHTML=this._escapeHTML(this.value),s.removeClassName(this.dom.tr,"jsoneditor-expandable"))}this._updateDomField(),this._updateDomValue(),e&&e.updateIndexes===!0&&this._updateDomIndexes(),e&&e.recurse===!0&&this.childs&&this.childs.forEach(function(t){t.updateDom(e)}),this.append&&this.append.updateDom()},i.prototype._updateDomIndexes=function(){var e=this.dom.value,t=this.childs;e&&t&&("array"==this.type?t.forEach(function(e,t){e.index=t;var n=e.dom.field;n&&(n.innerHTML=t)}):"object"==this.type&&t.forEach(function(e){void 0!=e.index&&(delete e.index,void 0==e.field&&(e.field=""))}))},i.prototype._createDomValue=function(){var e;return"array"==this.type?(e=document.createElement("div"),e.innerHTML="[...]"):"object"==this.type?(e=document.createElement("div"),e.innerHTML="{...}"):!this.editable.value&&s.isUrl(this.value)?(e=document.createElement("a"),e.href=this.value,e.target="_blank",e.innerHTML=this._escapeHTML(this.value)):(e=document.createElement("div"),e.contentEditable=this.editable.value,e.spellcheck=!1,e.innerHTML=this._escapeHTML(this.value)),e},i.prototype._createDomExpandButton=function(){var e=document.createElement("button");return this._hasChilds()?(e.className=this.expanded?"jsoneditor-expanded":"jsoneditor-collapsed",e.title="Click to expand/collapse this field (Ctrl+E). \nCtrl+Click to expand/collapse including all childs."):(e.className="jsoneditor-invisible",e.title=""),e},i.prototype._createDomTree=function(){var e=this.dom,t=document.createElement("table"),n=document.createElement("tbody");t.style.borderCollapse="collapse",t.className="jsoneditor-values",t.appendChild(n);var i=document.createElement("tr");n.appendChild(i);var o=document.createElement("td");o.className="jsoneditor-tree",i.appendChild(o),e.expand=this._createDomExpandButton(),o.appendChild(e.expand),e.tdExpand=o;var r=document.createElement("td");r.className="jsoneditor-tree",i.appendChild(r),e.field=this._createDomField(),r.appendChild(e.field),e.tdField=r;var s=document.createElement("td");s.className="jsoneditor-tree",i.appendChild(s),"object"!=this.type&&"array"!=this.type&&(s.appendChild(document.createTextNode(":")),s.className="jsoneditor-separator"),e.tdSeparator=s;var a=document.createElement("td");return a.className="jsoneditor-tree",i.appendChild(a),e.value=this._createDomValue(),a.appendChild(e.value),e.tdValue=a,t},i.prototype.onEvent=function(e){var t,n=e.type,i=e.target||e.srcElement,o=this.dom,r=this,a=this._hasChilds();if((i==o.drag||i==o.menu)&&("mouseover"==n?this.editor.highlighter.highlight(this):"mouseout"==n&&this.editor.highlighter.unhighlight()),"click"==n&&i==o.menu){var l=r.editor.highlighter;l.highlight(r),l.lock(),s.addClassName(o.menu,"jsoneditor-selected"),this.showContextMenu(o.menu,function(){s.removeClassName(o.menu,"jsoneditor-selected"),l.unlock(),l.unhighlight()})}if("click"==n&&(i==o.expand||("view"===r.editor.options.mode||"form"===r.editor.options.mode)&&"DIV"===i.nodeName)&&a){var c=e.ctrlKey;this._onExpand(c)}"change"==n&&i==o.checkbox&&(this.dom.value.innerHTML=!this.value,this._getDomValue());var d=o.value;if(i==d)switch(n){case"focus":t=this;break;case"blur":case"change":this._getDomValue(!0),this._updateDomValue(),this.value&&(d.innerHTML=this._escapeHTML(this.value));break;case"input":this._getDomValue(!0),this._updateDomValue();break;case"keydown":case"mousedown":this.editor.selection=this.editor.getSelection();break;case"click":(e.ctrlKey||!this.editable.value)&&s.isUrl(this.value)&&window.open(this.value,"_blank");break;case"keyup":this._getDomValue(!0),this._updateDomValue();break;case"cut":case"paste":setTimeout(function(){r._getDomValue(!0),r._updateDomValue(); -},1)}var h=o.field;if(i==h)switch(n){case"focus":t=this;break;case"blur":case"change":this._getDomField(!0),this._updateDomField(),this.field&&(h.innerHTML=this._escapeHTML(this.field));break;case"input":this._getDomField(!0),this._updateDomField();break;case"keydown":case"mousedown":this.editor.selection=this.editor.getSelection();break;case"keyup":this._getDomField(!0),this._updateDomField();break;case"cut":case"paste":setTimeout(function(){r._getDomField(!0),r._updateDomField()},1)}var u=o.tree;if(i==u.parentNode&&"click"==n&&!e.hasMoved){var p=void 0!=e.offsetX?e.offsetX<24*(this.getLevel()+1):e.pageX0?this.editor.multiselection.nodes:[this],w=b[0],x=b[b.length-1];if(13==u){if(p==this.dom.value)(!this.editable.value||e.ctrlKey)&&s.isUrl(this.value)&&(window.open(this.value,"_blank"),v=!0);else if(p==this.dom.expand){var _=this._hasChilds();if(_){var E=e.ctrlKey;this._onExpand(E),p.focus(),v=!0}}}else if(68==u)f&&y&&(i.onDuplicate(b),v=!0);else if(69==u)f&&(this._onExpand(m),p.focus(),v=!0);else if(77==u&&y)f&&(this.showContextMenu(p),v=!0);else if(46==u&&y)f&&(i.onRemove(b),v=!0);else if(45==u&&y)f&&!m?(this._onInsertBefore(),v=!0):f&&m&&(this._onInsertAfter(),v=!0);else if(35==u){if(g){var C=this._lastNode();C&&C.focus(i.focusElement||this._getElementName(p)),v=!0}}else if(36==u){if(g){var j=this._firstNode();j&&j.focus(i.focusElement||this._getElementName(p)),v=!0}}else if(37==u){if(g&&!m){var S=this._previousElement(p);S&&this.focus(this._getElementName(S)),v=!0}else if(g&&m&&y){if(x.expanded){var k=x.getAppend();o=k?k.nextSibling:void 0}else{var N=x.getDom();o=N.nextSibling}o&&(n=i.getNodeFromTarget(o),r=o.nextSibling,T=i.getNodeFromTarget(r),n&&n instanceof a&&1!=x.parent.childs.length&&T&&T.parent&&(l=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){T.parent.moveBefore(e,T)}),this.focus(i.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:T,oldSelection:l,newSelection:this.editor.getSelection()})))}}else if(38==u)g&&!m?(t=this._previousNode(),t&&(this.editor.deselect(!0),t.focus(i.focusElement||this._getElementName(p))),v=!0):!g&&f&&m&&y?(t=this._previousNode(),t&&(h=this.editor.multiselection,h.start=h.start||this,h.end=t,d=this.editor._findTopLevelNodes(h.start,h.end),this.editor.select(d),t.focus("field")),v=!0):g&&m&&y&&(t=w._previousNode(),t&&t.parent&&(l=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(i.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:t,oldSelection:l,newSelection:this.editor.getSelection()})),v=!0);else if(39==u){if(g&&!m){var A=this._nextElement(p);A&&this.focus(this._getElementName(A)),v=!0}else if(g&&m&&y){N=w.getDom();var O=N.previousSibling;O&&(t=i.getNodeFromTarget(O),t&&t.parent&&t instanceof a&&!t.isVisible()&&(l=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(i.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:t,oldSelection:l,newSelection:this.editor.getSelection()})))}}else if(40==u)if(g&&!m)n=this._nextNode(),n&&(this.editor.deselect(!0),n.focus(i.focusElement||this._getElementName(p))),v=!0;else if(!g&&f&&m&&y)n=this._nextNode(),n&&(h=this.editor.multiselection,h.start=h.start||this,h.end=n,d=this.editor._findTopLevelNodes(h.start,h.end),this.editor.select(d),n.focus("field")),v=!0;else if(g&&m&&y){n=x.expanded?x.append?x.append._nextNode():void 0:x._nextNode();var T=n&&(n._nextNode()||n.parent.append);T&&T.parent&&(l=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){T.parent.moveBefore(e,T)}),this.focus(i.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:T,oldSelection:l,newSelection:this.editor.getSelection()})),v=!0}v&&(e.preventDefault(),e.stopPropagation())},i.prototype._onExpand=function(e){if(e){var t=this.dom.tr.parentNode,n=t.parentNode,i=n.scrollTop;n.removeChild(t)}this.expanded?this.collapse(e):this.expand(e),e&&(n.appendChild(t),n.scrollTop=i)},i.onRemove=function(e){if(!Array.isArray(e))return i.onRemove([e]);if(e&&e.length>0){var t=e[0],n=t.parent,o=t.editor,r=t.getIndex();o.highlighter.unhighlight();var s=o.getSelection();i.blurNodes(e);var a=o.getSelection();e.forEach(function(e){e.parent._remove(e)}),o._onAction("removeNodes",{nodes:e.slice(0),parent:n,index:r,oldSelection:s,newSelection:a})}},i.onDuplicate=function(e){if(!Array.isArray(e))return i.onDuplicate([e]);if(e&&e.length>0){var t=e[e.length-1],n=t.parent,o=t.editor;o.deselect(o.multiselection.nodes);var r=o.getSelection(),s=t,a=e.map(function(e){var t=e.clone();return n.insertAfter(t,s),s=t,t});1===e.length?a[0].focus():o.select(a);var l=o.getSelection();o._onAction("duplicateNodes",{afterNode:t,nodes:a,parent:n,oldSelection:r,newSelection:l})}},i.prototype._onInsertBefore=function(e,t,n){var o=this.editor.getSelection(),r=new i(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:n});r.expand(!0),this.parent.insertBefore(r,this),this.editor.highlighter.unhighlight(),r.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertBeforeNodes",{nodes:[r],beforeNode:this,parent:this.parent,oldSelection:o,newSelection:s})},i.prototype._onInsertAfter=function(e,t,n){var o=this.editor.getSelection(),r=new i(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:n});r.expand(!0),this.parent.insertAfter(r,this),this.editor.highlighter.unhighlight(),r.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertAfterNodes",{nodes:[r],afterNode:this,parent:this.parent,oldSelection:o,newSelection:s})},i.prototype._onAppend=function(e,t,n){var o=this.editor.getSelection(),r=new i(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:n});r.expand(!0),this.parent.appendChild(r),this.editor.highlighter.unhighlight(),r.focus("field");var s=this.editor.getSelection();this.editor._onAction("appendNodes",{nodes:[r],parent:this.parent,oldSelection:o,newSelection:s})},i.prototype._onChangeType=function(e){var t=this.type;if(e!=t){var n=this.editor.getSelection();this.changeType(e);var i=this.editor.getSelection();this.editor._onAction("changeType",{node:this,oldType:t,newType:e,oldSelection:n,newSelection:i})}},i.prototype._onSort=function(e){if(this._hasChilds()){var t="desc"==e?-1:1,n="array"==this.type?"value":"field";this.hideChilds();var i=this.childs,o=this.sort;this.childs=this.childs.concat(),this.childs.sort(function(e,i){return e[n]>i[n]?t:e[n]/g,">").replace(/ /g,"  ").replace(/^ /," ").replace(/ $/," "),n=JSON.stringify(t),i=n.substring(1,n.length-1);return this.editor.options.escapeUnicode===!0&&(i=s.escapeUnicodeChars(i)),i},i.prototype._unescapeHTML=function(e){var t='"'+this._escapeJSON(e)+'"',n=s.parse(t);return n.replace(/</g,"<").replace(/>/g,">").replace(/ |\u00A0/g," ").replace(/&/g,"&")},i.prototype._escapeJSON=function(e){for(var t="",n=0;n2&&E.push("'"+this.terminals_[w]+"'");var j="";j=this.lexer.showPosition?"Parse error on line "+(c+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+E.join(", ")+", got '"+this.terminals_[m]+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(j,{text:this.lexer.match,token:this.terminals_[m]||m,line:this.lexer.yylineno,loc:f,expected:E})}if(3==h){if(m==p)throw new Error(j||"Parsing halted.");d=this.lexer.yyleng,l=this.lexer.yytext,c=this.lexer.yylineno,f=this.lexer.yylloc,m=n()}for(;;){if(u.toString()in a[v])break;if(0==v)throw new Error(j||"Parsing halted.");t(1),v=o[o.length-1]}g=m,m=u,v=o[o.length-1],y=a[v]&&a[v][u],h=3}if(y[0]instanceof Array&&y.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+m);switch(y[0]){case 1:o.push(m),r.push(this.lexer.yytext),s.push(this.lexer.yylloc),o.push(y[1]),m=null,g?(m=g,g=null):(d=this.lexer.yyleng,l=this.lexer.yytext,c=this.lexer.yylineno,f=this.lexer.yylloc,h>0&&h--);break;case 2:if(x=this.productions_[y[1]][1],C.$=r[r.length-x],C._$={first_line:s[s.length-(x||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(x||1)].first_column,last_column:s[s.length-1].last_column},b=this.performAction.call(C,l,d,c,this.yy,y[1],r,s),"undefined"!=typeof b)return b;x&&(o=o.slice(0,-1*x*2),r=r.slice(0,-1*x),s=s.slice(0,-1*x)),o.push(this.productions_[y[1]][0]),r.push(C.$),s.push(C._$),_=a[o[o.length-2]][o[o.length-1]],o.push(_);break;case 3:return!0}}return!0}},t=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parseError)throw new Error(e);this.yy.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.match+=e,this.matched+=e;var t=e.match(/\n/);return t&&this.yylineno++,this._input=this._input.slice(1),e},unput:function(e){return this._input=e+this._input,this},more:function(){return this._more=!0,this},less:function(e){this._input=this.match.slice(e)+this._input},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,n,i,o;this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),s=0;st[0].length)||(t=n,i=s,this.options.flex));s++);return t?(o=t[0].match(/\n.*/g),o&&(this.yylineno+=o.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:o?o[o.length-1].length-1:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,r[i],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e?e:void 0):""===this._input?this.EOF:void this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return"undefined"!=typeof e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,n,i){switch(n){case 0:break;case 1:return 6;case 2:return t.yytext=t.yytext.substr(1,t.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return"INVALID"}},e.rules=[/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt\/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/],e.conditions={INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}},e}();return e.lexer=t,e}();t.parser=i,t.parse=i.parse.bind(i)},function(e,t,n){var i=n(!function(){var e=new Error('Cannot find module "brace"');throw e.code="MODULE_NOT_FOUND",e}());n(14),n(15),n(13),e.exports=i},function(e,t,n){function i(e){function t(e){this.editor=e,this.dom={}}return t.prototype=new e,t.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;this._updateEditability();var t=document.createElement("tr");if(t.node=this,e.tr=t,this.editable.field){e.tdDrag=document.createElement("td");var n=document.createElement("td");e.tdMenu=n;var i=document.createElement("button");i.className="jsoneditor-contextmenu",i.title="Click to open the actions menu (Ctrl+M)",e.menu=i,n.appendChild(e.menu)}var o=document.createElement("td"),r=document.createElement("div");return r.innerHTML="(empty)",r.className="jsoneditor-readonly",o.appendChild(r),e.td=o,e.text=r,this.updateDom(),t},t.prototype.updateDom=function(){var e=this.dom,t=e.td;t&&(t.style.paddingLeft=24*this.getLevel()+26+"px");var n=e.text;n&&(n.innerHTML="(empty "+this.parent.type+")");var i=e.tr;this.isVisible()?e.tr.firstChild||(e.tdDrag&&i.appendChild(e.tdDrag),e.tdMenu&&i.appendChild(e.tdMenu),i.appendChild(t)):e.tr.firstChild&&(e.tdDrag&&i.removeChild(e.tdDrag),e.tdMenu&&i.removeChild(e.tdMenu),i.removeChild(t))},t.prototype.isVisible=function(){return 0==this.parent.childs.length},t.prototype.showContextMenu=function(t,n){var i=this,o=e.TYPE_TITLES,s=[{text:"Append",title:"Append a new field with type 'auto' (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-insert",click:function(){i._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:o.auto,click:function(){i._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:o.array,click:function(){i._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:o.object,click:function(){i._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:o.string,click:function(){i._onAppend("","","string")}}]}],a=new r(s,{close:n});a.show(t,this.editor.content)},t.prototype.onEvent=function(e){var t=e.type,n=e.target||e.srcElement,i=this.dom,r=i.menu;if(n==r&&("mouseover"==t?this.editor.highlighter.highlight(this.parent):"mouseout"==t&&this.editor.highlighter.unhighlight()),"click"==t&&n==i.menu){var s=this.editor.highlighter;s.highlight(this.parent),s.lock(),o.addClassName(i.menu,"jsoneditor-selected"),this.showContextMenu(i.menu,function(){o.removeClassName(i.menu,"jsoneditor-selected"),s.unlock(),s.unhighlight()})}"keydown"==t&&this.onKeyDown(e)},t}var o=n(3),r=n(7);e.exports=i},function(e,t,n){ace.define("ace/theme/jsoneditor",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-jsoneditor",t.cssText='.ace-jsoneditor .ace_gutter { background: #ebebeb; color: #333 } .ace-jsoneditor.ace_editor { font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif; line-height: 1.3; } .ace-jsoneditor .ace_print-margin { width: 1px; background: #e8e8e8 } .ace-jsoneditor .ace_scroller { background-color: #FFFFFF } .ace-jsoneditor .ace_text-layer { color: gray } .ace-jsoneditor .ace_variable { color: #1a1a1a } .ace-jsoneditor .ace_cursor { border-left: 2px solid #000000 } .ace-jsoneditor .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #000000 } .ace-jsoneditor .ace_marker-layer .ace_selection { background: lightgray } .ace-jsoneditor.ace_multiselect .ace_selection.ace_start { box-shadow: 0 0 3px 0px #FFFFFF; border-radius: 2px } .ace-jsoneditor .ace_marker-layer .ace_step { background: rgb(255, 255, 0) } .ace-jsoneditor .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid #BFBFBF } .ace-jsoneditor .ace_marker-layer .ace_active-line { background: #FFFBD1 } .ace-jsoneditor .ace_gutter-active-line { background-color : #dcdcdc } .ace-jsoneditor .ace_marker-layer .ace_selected-word { border: 1px solid lightgray } .ace-jsoneditor .ace_invisible { color: #BFBFBF } .ace-jsoneditor .ace_keyword, .ace-jsoneditor .ace_meta, .ace-jsoneditor .ace_support.ace_constant.ace_property-value { color: #AF956F } .ace-jsoneditor .ace_keyword.ace_operator { color: #484848 } .ace-jsoneditor .ace_keyword.ace_other.ace_unit { color: #96DC5F } .ace-jsoneditor .ace_constant.ace_language { color: darkorange } .ace-jsoneditor .ace_constant.ace_numeric { color: red } .ace-jsoneditor .ace_constant.ace_character.ace_entity { color: #BF78CC } .ace-jsoneditor .ace_invalid { color: #FFFFFF; background-color: #FF002A; } .ace-jsoneditor .ace_fold { background-color: #AF956F; border-color: #000000 } .ace-jsoneditor .ace_storage, .ace-jsoneditor .ace_support.ace_class, .ace-jsoneditor .ace_support.ace_function, .ace-jsoneditor .ace_support.ace_other, .ace-jsoneditor .ace_support.ace_type { color: #C52727 } .ace-jsoneditor .ace_string { color: green } .ace-jsoneditor .ace_comment { color: #BCC8BA } .ace-jsoneditor .ace_entity.ace_name.ace_tag, .ace-jsoneditor .ace_entity.ace_other.ace_attribute-name { color: #606060 } .ace-jsoneditor .ace_markup.ace_underline { text-decoration: underline } .ace-jsoneditor .ace_indent-guide { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y }';var i=e("../lib/dom");i.importCssString(t.cssText,t.cssClass)})},function(e,t,n){ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,r=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"invalid.illegal",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"invalid.illegal",regex:"\\/\\/.*$"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"},{token:"string",regex:"",next:"start"}]}};i.inherits(r,o),t.JsonHighlightRules=r}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var i=e("../range").Range,o=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),o=n.match(/^(\s*\})/);if(!o)return 0;var r=o[1].length,s=e.findMatchingBracket({row:t,column:r});if(!s||s.row==t)return 0;var a=this.$getIndent(e.getLine(s.row));e.replace(new i(t,0,t,r-1),a)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(o.prototype),t.MatchingBraceOutdent=o}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var i,o=e("../../lib/oop"),r=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,a=e("../../lib/lang"),l=["text","paren.rparen","punctuation.operator"],c=["text","paren.rparen","punctuation.operator","comment"],d={},h=function(e){var t=-1;return e.multiSelect&&(t=e.selection.index,d.rangeCount!=e.multiSelect.rangeCount&&(d={rangeCount:e.multiSelect.rangeCount})),d[t]?i=d[t]:void(i=d[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""})},u=function(e,t,n,i){var o=e.end.row-e.start.row;return{text:n+t+i,selection:[0,e.start.column+1,o,e.end.column+(o?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,o,r){var s=n.getCursorPosition(),l=o.doc.getLine(s.row);if("{"==r){h(n);var c=n.getSelectionRange(),d=o.doc.getTextRange(c);if(""!==d&&"{"!==d&&n.getWrapBehavioursEnabled())return u(c,d,"{","}");if(p.isSaneInsertion(n,o))return/[\]\}\)]/.test(l[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,o,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,o,"{"),{text:"{",selection:[1,1]})}else if("}"==r){h(n);var f=l.substring(s.column,s.column+1);if("}"==f){var m=o.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(null!==m&&p.isAutoInsertedClosing(s,l,r))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if("\n"==r||"\r\n"==r){h(n);var g="";p.isMaybeInsertedClosing(s,l)&&(g=a.stringRepeat("}",i.maybeInsertedBrackets), -p.clearMaybeInsertedClosing());var f=l.substring(s.column,s.column+1);if("}"===f){var v=o.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!v)return null;var y=this.$getIndent(o.getLine(v.row))}else{if(!g)return void p.clearMaybeInsertedClosing();var y=this.$getIndent(l)}var b=y+o.getTabString();return{text:"\n"+b+"\n"+y+g,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,o,r){var s=o.doc.getTextRange(r);if(!r.isMultiLine()&&"{"==s){h(n);var a=o.doc.getLine(r.start.row),l=a.substring(r.end.column,r.end.column+1);if("}"==l)return r.end.column++,r;i.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,i,o){if("("==o){h(n);var r=n.getSelectionRange(),s=i.doc.getTextRange(r);if(""!==s&&n.getWrapBehavioursEnabled())return u(r,s,"(",")");if(p.isSaneInsertion(n,i))return p.recordAutoInsert(n,i,")"),{text:"()",selection:[1,1]}}else if(")"==o){h(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if(")"==c){var d=i.$findOpeningBracket(")",{column:a.column+1,row:a.row});if(null!==d&&p.isAutoInsertedClosing(a,l,o))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&"("==r){h(n);var s=i.doc.getLine(o.start.row),a=s.substring(o.start.column+1,o.start.column+2);if(")"==a)return o.end.column++,o}}),this.add("brackets","insertion",function(e,t,n,i,o){if("["==o){h(n);var r=n.getSelectionRange(),s=i.doc.getTextRange(r);if(""!==s&&n.getWrapBehavioursEnabled())return u(r,s,"[","]");if(p.isSaneInsertion(n,i))return p.recordAutoInsert(n,i,"]"),{text:"[]",selection:[1,1]}}else if("]"==o){h(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if("]"==c){var d=i.$findOpeningBracket("]",{column:a.column+1,row:a.row});if(null!==d&&p.isAutoInsertedClosing(a,l,o))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&"["==r){h(n);var s=i.doc.getLine(o.start.row),a=s.substring(o.start.column+1,o.start.column+2);if("]"==a)return o.end.column++,o}}),this.add("string_dquotes","insertion",function(e,t,n,i,o){if('"'==o||"'"==o){h(n);var r=o,s=n.getSelectionRange(),a=i.doc.getTextRange(s);if(""!==a&&"'"!==a&&'"'!=a&&n.getWrapBehavioursEnabled())return u(s,a,r,r);if(!a){var l=n.getCursorPosition(),c=i.doc.getLine(l.row),d=c.substring(l.column-1,l.column),p=c.substring(l.column,l.column+1),f=i.getTokenAt(l.row,l.column),m=i.getTokenAt(l.row,l.column+1);if("\\"==d&&f&&/escape/.test(f.type))return null;var g,v=f&&/string|escape/.test(f.type),y=!m||/string|escape/.test(m.type);if(p==r)g=v!==y;else{if(v&&!y)return null;if(v&&y)return null;var b=i.$mode.tokenRe;b.lastIndex=0;var w=b.test(d);b.lastIndex=0;var x=b.test(d);if(w||x)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;g=!0}return{text:g?r+r:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&('"'==r||"'"==r)){h(n);var s=i.doc.getLine(o.start.row),a=s.substring(o.start.column+1,o.start.column+2);if(a==r)return o.end.column++,o}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),i=new s(t,n.row,n.column);if(!this.$matchTokenType(i.getCurrentToken()||"text",l)){var o=new s(t,n.row,n.column+1);if(!this.$matchTokenType(o.getCurrentToken()||"text",l))return!1}return i.stepForward(),i.getCurrentTokenRow()!==n.row||this.$matchTokenType(i.getCurrentToken()||"text",c)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isAutoInsertedClosing(o,r,i.autoInsertedLineEnd[0])||(i.autoInsertedBrackets=0),i.autoInsertedRow=o.row,i.autoInsertedLineEnd=n+r.substr(o.column),i.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isMaybeInsertedClosing(o,r)||(i.maybeInsertedBrackets=0),i.maybeInsertedRow=o.row,i.maybeInsertedLineStart=r.substr(0,o.column)+n,i.maybeInsertedLineEnd=r.substr(o.column),i.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return i.autoInsertedBrackets>0&&e.row===i.autoInsertedRow&&n===i.autoInsertedLineEnd[0]&&t.substr(e.column)===i.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return i.maybeInsertedBrackets>0&&e.row===i.maybeInsertedRow&&t.substr(e.column)===i.maybeInsertedLineEnd&&t.substr(0,e.column)==i.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){i.autoInsertedLineEnd=i.autoInsertedLineEnd.substr(1),i.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){i&&(i.maybeInsertedBrackets=0,i.maybeInsertedRow=-1)},o.inherits(p,r),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var i=e("../../lib/oop"),o=e("../../range").Range,r=e("./fold_mode").FoldMode,s=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};i.inherits(s,r),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var i=e.getLine(n);if(this.singleLineBlockCommentRe.test(i)&&!this.startRegionRe.test(i)&&!this.tripleStarBlockCommentRe.test(i))return"";var o=this._getFoldWidgetBase(e,t,n);return!o&&this.startRegionRe.test(i)?"start":o},this.getFoldWidgetRange=function(e,t,n,i){var o=e.getLine(n);if(this.startRegionRe.test(o))return this.getCommentRegionBlock(e,o,n);var r=o.match(this.foldingStartMarker);if(r){var s=r.index;if(r[1])return this.openingBracketBlock(e,r[1],n,s);var a=e.getCommentFoldRange(n,s+r[0].length,1);return a&&!a.isMultiLine()&&(i?a=this.getSectionRange(e,n):"all"!=t&&(a=null)),a}if("markbegin"!==t){var r=o.match(this.foldingStopMarker);if(r){var s=r.index+r[0].length;return r[1]?this.closingBracketBlock(e,r[1],n,s):e.getCommentFoldRange(n,s,-1)}}},this.getSectionRange=function(e,t){var n=e.getLine(t),i=n.search(/\S/),r=t,s=n.length;t+=1;for(var a=t,l=e.getLength();++tc)break;var d=this.getFoldWidgetRange(e,"all",t);if(d){if(d.start.row<=r)break;if(d.isMultiLine())t=d.end.row;else if(i==c)break}a=t}}return new o(r,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,n){for(var i=t.search(/\s*$/),r=e.getLength(),s=n,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++ns?new o(s,i,d,t.length):void 0}}.call(s.prototype)}),ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/worker/worker_client"],function(e,t,i){"use strict";var o=e("../lib/oop"),r=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,a=e("./matching_brace_outdent").MatchingBraceOutdent,l=e("./behaviour/cstyle").CstyleBehaviour,c=e("./folding/cstyle").FoldMode,d=e("../worker/worker_client").WorkerClient,h=function(){this.HighlightRules=s,this.$outdent=new a,this.$behaviour=new l,this.foldingRules=new c};o.inherits(h,r),function(){this.getNextLineIndent=function(e,t,n){var i=this.$getIndent(t);if("start"==e){var o=t.match(/^.*[\{\(\[]\s*$/);o&&(i+=n)}return i},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new d(["ace"],n(16),"JsonWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/json"}.call(h.prototype),t.Mode=h})},function(e,t,n){ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"],function(e,t,n){"use strict";var i=e("../lib/dom"),o=e("../lib/lang"),r=e("../lib/event"),s=" .ace_search { background-color: #ddd; border: 1px solid #cbcbcb; border-top: 0 none; max-width: 325px; overflow: hidden; margin: 0; padding: 4px; padding-right: 6px; padding-bottom: 0; position: absolute; top: 0px; z-index: 99; white-space: normal; } .ace_search.left { border-left: 0 none; border-radius: 0px 0px 5px 0px; left: 0; } .ace_search.right { border-radius: 0px 0px 0px 5px; border-right: 0 none; right: 0; } .ace_search_form, .ace_replace_form { border-radius: 3px; border: 1px solid #cbcbcb; float: left; margin-bottom: 4px; overflow: hidden; } .ace_search_form.ace_nomatch { outline: 1px solid red; } .ace_search_field { background-color: white; border-right: 1px solid #cbcbcb; border: 0 none; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; float: left; height: 22px; outline: 0; padding: 0 7px; width: 214px; margin: 0; } .ace_searchbtn, .ace_replacebtn { background: #fff; border: 0 none; border-left: 1px solid #dcdcdc; cursor: pointer; float: left; height: 22px; margin: 0; position: relative; } .ace_searchbtn:last-child, .ace_replacebtn:last-child { border-top-right-radius: 3px; border-bottom-right-radius: 3px; } .ace_searchbtn:disabled { background: none; cursor: default; } .ace_searchbtn { background-position: 50% 50%; background-repeat: no-repeat; width: 27px; } .ace_searchbtn.prev { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); } .ace_searchbtn.next { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); } .ace_searchbtn_close { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0; border-radius: 50%; border: 0 none; color: #656565; cursor: pointer; float: right; font: 16px/16px Arial; height: 14px; margin: 5px 1px 9px 5px; padding: 0; text-align: center; width: 14px; } .ace_searchbtn_close:hover { background-color: #656565; background-position: 50% 100%; color: white; } .ace_replacebtn.prev { width: 54px } .ace_replacebtn.next { width: 27px } .ace_button { margin-left: 2px; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -o-user-select: none; -ms-user-select: none; user-select: none; overflow: hidden; opacity: 0.7; border: 1px solid rgba(100,100,100,0.23); padding: 1px; -moz-box-sizing: border-box; box-sizing: border-box; color: black; } .ace_button:hover { background-color: #eee; opacity:1; } .ace_button:active { background-color: #ddd; } .ace_button.checked { border-color: #3399ff; opacity:1; } .ace_search_options{ margin-bottom: 3px; text-align: right; -webkit-user-select: none; -moz-user-select: none; -o-user-select: none; -ms-user-select: none; user-select: none; }",a=e("../keyboard/hash_handler").HashHandler,l=e("../lib/keys");i.importCssString(s,"ace_searchbox");var c=''.replace(/>\s+/g,">"),d=function(e,t,n){var o=i.createElement("div");o.innerHTML=c,this.element=o.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;r.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),r.stopPropagation(e)}),r.addListener(e,"click",function(e){var n=e.target||e.srcElement,i=n.getAttribute("action");i&&t[i]?t[i]():t.$searchBarKb.commands[i]&&t.$searchBarKb.commands[i].exec(t),r.stopPropagation(e)}),r.addCommandKeyListener(e,function(e,n,i){var o=l.keyCodeToString(i),s=t.$searchBarKb.findKeyCommand(n,o);s&&s.exec&&(s.exec(t),r.stopEvent(e))}),this.$onChange=o.delayedCall(function(){t.find(!1,!1)}),r.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),r.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),r.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new a([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new a,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e.searchInput.focus()},"Ctrl-H|Command-Option-F":function(e){e.replaceBox.style.display="",e.replaceInput.focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){i.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),i.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),i.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t,n){var o=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked,preventScroll:n}),r=!o&&this.searchInput.value;i.setCssClass(this.searchBox,"ace_nomatch",r),this.editor._emit("findSearchBox",{match:!r}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var e=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),t=!e&&this.searchInput.value;i.setCssClass(this.searchBox,"ace_nomatch",t),this.editor._emit("findSearchBox",{match:!t}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.find(!1,!1,!0),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(d.prototype),t.SearchBox=d,t.Search=function(e,t){var n=e.searchBox||new d(e);n.show(e.session.getTextRange(),t)}}),function(){ace.acequire(["ace/ext/searchbox"],function(){})}()},function(e,t,n){e.exports.id="ace/mode/json_worker",e.exports.src='"no use strict";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail="";testPath;){var alias=paths[testPath];if("string"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,"/")+(tail||alias.main||alias.name);if(alias===!1)return"";var i=testPath.lastIndexOf("/");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:"error",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf("!")){var chunks=moduleName.split("!");return window.normalizeModule(parentId,chunks[0])+"!"+window.normalizeModule(parentId,chunks[1])}if("."==moduleName.charAt(0)){var base=parentId.split("/").slice(0,-1).join("/");for(moduleName=(base?base+"/":"")+moduleName;-1!==moduleName.indexOf(".")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,"").replace(/\\/\\.\\//,"/").replace(/[^\\/]+\\/\\.\\.\\//,"")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error("worker.js acequire() accepts only (parentId, id) as arguments");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log("unable to load "+id);var path=resolveModuleId(id,window.acequire.tlns);return".js"!=path.slice(-3)&&(path+=".js"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,"string"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),"function"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=["require","exports","module"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case"require":return req;case"exports":return module.exports;case"module":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire("ace/lib/event_emitter").EventEmitter,oop=window.acequire("ace/lib/oop"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:"call",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:"event",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error("Unknown command:"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire("ace/lib/es5-shim"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(acequire,exports){"use strict";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define("ace/range",["require","exports","module"],function(acequire,exports){"use strict";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){"object"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){"object"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define("ace/apply_delta",["require","exports","module"],function(acequire,exports){"use strict";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||"";switch(delta.action){case"insert":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case"remove":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(acequire,exports){"use strict";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){"object"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?"unshift":"push"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),EventEmitter=acequire("./lib/event_emitter").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal("change",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),applyDelta=acequire("./apply_delta").applyDelta,EventEmitter=acequire("./lib/event_emitter").EventEmitter,Range=acequire("./range").Range,Anchor=acequire("./anchor").Anchor,Document=function(textOrLines){this.$lines=[""],0===textOrLines.length?this.$lines=[""]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0==="aaa".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,"\\n").split("\\n")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:"\\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\\r\\n";case"unix":return"\\n";default:return this.$autoNewLine||"\\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return"\\r\\n"==text||"\\r"==text||"\\n"==text},this.getLine=function(row){return this.$lines[row]||""},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||"").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."),this.insertMergedLines(position,["",""])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:"insert",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([""]),column=0):(lines=[""].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:"insert",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:"remove",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:"remove",lines:["",""]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert="insert"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal("change",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(""),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:"insert"==delta.action?"remove":"insert",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define("ace/lib/lang",["require","exports","module"],function(acequire,exports){"use strict";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split("").reverse().join("")},exports.stringRepeat=function(string,count){for(var result="";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,"")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,"")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&"object"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if("object"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}var cons=obj.constructor;if(cons===RegExp)return obj;copy=cons();for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,"\\\\$1")},exports.escapeHTML=function(str){return str.replace(/&/g,"&").replace(/"/g,""").replace(/\'/g,"'").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:"insert",start:data[i],lines:data[i+1]};else var d={action:"remove",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define("ace/mode/json/json_parse",["require","exports","module"],function(){"use strict";var at,ch,text,value,escapee={\'"\':\'"\',"\\\\":"\\\\","/":"/",b:"\\b",f:"\\f",n:"\\n",r:"\\r",t:" "},error=function(m){throw{name:"SyntaxError",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error("Expected \'"+c+"\' instead of \'"+ch+"\'"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string="";for("-"===ch&&(string="-",next("-"));ch>="0"&&"9">=ch;)string+=ch,next();if("."===ch)for(string+=".";next()&&ch>="0"&&"9">=ch;)string+=ch;if("e"===ch||"E"===ch)for(string+=ch,next(),("-"===ch||"+"===ch)&&(string+=ch,next());ch>="0"&&"9">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error("Bad number"),void 0):number},string=function(){var hex,i,uffff,string="";if(\'"\'===ch)for(;next();){if(\'"\'===ch)return next(),string;if("\\\\"===ch)if(next(),"u"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if("string"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error("Bad string")},white=function(){for(;ch&&" ">=ch;)next()},word=function(){switch(ch){case"t":return next("t"),next("r"),next("u"),next("e"),!0;case"f":return next("f"),next("a"),next("l"),next("s"),next("e"),!1;case"n":return next("n"),next("u"),next("l"),next("l"),null}error("Unexpected \'"+ch+"\'")},array=function(){var array=[];if("["===ch){if(next("["),white(),"]"===ch)return next("]"),array;for(;ch;){if(array.push(value()),white(),"]"===ch)return next("]"),array;next(","),white()}}error("Bad array")},object=function(){var key,object={};if("{"===ch){if(next("{"),white(),"}"===ch)return next("}"),object;for(;ch;){if(key=string(),white(),next(":"),Object.hasOwnProperty.call(object,key)&&error(\'Duplicate key "\'+key+\'"\'),object[key]=value(),white(),"}"===ch)return next("}"),object;next(","),white()}}error("Bad object")};return value=function(){switch(white(),ch){case"{":return object();case"[":return array();case\'"\':return string();case"-":return number();default:return ch>="0"&&"9">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=" ",result=value(),white(),ch&&error("Syntax error"),"function"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&"object"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({"":result},""):result}}),ace.define("ace/mode/json_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/json/json_parse"],function(acequire,exports){"use strict";var oop=acequire("../lib/oop"),Mirror=acequire("../worker/mirror").Mirror,parse=acequire("./json/json_parse"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:"error"})}this.sender.emit("annotate",errors)}}.call(JsonWorker.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,"sentinel",{}),"sentinel"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if("function"!=typeof target)throw new TypeError("Function.prototype.bind called on incompatible "+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,"__defineGetter__"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,"XXX"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return"[object Array]"==_toString(obj)});var boxedString=Object("a"),splitString="a"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,thisp=arguments[1],i=-1,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=[],thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError("reduce of empty array with no initial value")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError("reduceRight of empty array with no initial value")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(object,property){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if("object"!=typeof prototype)throw new TypeError("typeof prototype["+typeof prototype+"] != \'object\'");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom="undefined"==typeof document||doesDefinePropertyWork(document.createElement("div"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR="Property description must be an object: ",ERR_NON_OBJECT_TARGET="Object.defineProperty called on non-object: ",ERR_ACCESSORS_NOT_SUPPORTED="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(object,property,descriptor){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if("object"!=typeof descriptor&&"function"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,"value"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,"get")&&defineGetter(object,property,descriptor.get),owns(descriptor,"set")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return"function"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name="";owns(object,name);)name+="?";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError("Object.keys called on a non-object");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=" \\n \\f\\r   ᠎              \\u2028\\u2029";if(!String.prototype.trim||ws.trim()){ws="["+ws+"]";var trimBeginRegexp=RegExp("^"+ws+ws+"*"),trimEndRegexp=RegExp(ws+ws+"*$");String.prototype.trim=function(){return(this+"").replace(trimBeginRegexp,"").replace(trimEndRegexp,"")}}var toObject=function(o){if(null==o)throw new TypeError("can\'t convert "+o+" to object");return Object(o)}});'; +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):"object"==typeof exports?exports.JSONEditor=t():e.JSONEditor=t()}(this,function(){return function(e){function t(i){if(n[i])return n[i].exports;var o=n[i]={exports:{},id:i,loaded:!1};return e[i].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){function i(e,t,n){if(!(this instanceof i))throw new Error('JSONEditor constructor called without "new".');var o=l.getInternetExplorerVersion();if(-1!=o&&9>o)throw new Error("Unsupported browser, IE9 or newer required. Please install the newest version of your browser.");if(t&&(t.error&&(console.warn('Option "error" has been renamed to "onError"'),t.onError=t.error,delete t.error),t.change&&(console.warn('Option "change" has been renamed to "onChange"'),t.onChange=t.change,delete t.change),t.editable&&(console.warn('Option "editable" has been renamed to "onEditable"'),t.onEditable=t.editable,delete t.editable),t)){var r=["ace","theme","ajv","schema","onChange","onEditable","onError","onModeChange","escapeUnicode","history","search","mode","modes","name","indentation"];Object.keys(t).forEach(function(e){-1===r.indexOf(e)&&console.warn('Unknown option "'+e+'". This option will be ignored')})}arguments.length&&this._create(e,t,n)}var o;try{o=n(!function(){var e=new Error('Cannot find module "ajv"');throw e.code="MODULE_NOT_FOUND",e}())}catch(r){}var s=n(1),a=n(2),l=n(3);i.modes={},i.prototype.DEBOUNCE_INTERVAL=150,i.prototype._create=function(e,t,n){this.container=e,this.options=t||{},this.json=n||{};var i=this.options.mode||"tree";this.setMode(i)},i.prototype._delete=function(){},i.prototype.set=function(e){this.json=e},i.prototype.get=function(){return this.json},i.prototype.setText=function(e){this.json=l.parse(e)},i.prototype.getText=function(){return JSON.stringify(this.json)},i.prototype.setName=function(e){this.options||(this.options={}),this.options.name=e},i.prototype.getName=function(){return this.options&&this.options.name},i.prototype.setMode=function(e){var t,n,o=this.container,r=l.extend({},this.options),s=r.mode;r.mode=e;var a=i.modes[e];if(!a)throw new Error('Unknown mode "'+r.mode+'"');try{var c="text"==a.data;if(n=this.getName(),t=this[c?"getText":"get"](),this._delete(),l.clear(this),l.extend(this,a.mixin),this.create(o,r),this.setName(n),this[c?"setText":"set"](t),"function"==typeof a.load)try{a.load.call(this)}catch(d){console.error(d)}if("function"==typeof r.onModeChange&&e!==s)try{r.onModeChange(e,s)}catch(d){console.error(d)}}catch(d){this._onError(d)}},i.prototype.getMode=function(){return this.options.mode},i.prototype._onError=function(e){if(!this.options||"function"!=typeof this.options.onError)throw e;this.options.onError(e)},i.prototype.setSchema=function(e){if(e){var t;try{t=this.options.ajv||o({allErrors:!0,verbose:!0})}catch(n){console.warn("Failed to create an instance of Ajv, JSON Schema validation is not available. Please use a JSONEditor bundle including Ajv, or pass an instance of Ajv as via the configuration option `ajv`.")}t&&(this.validateSchema=t.compile(e),this.options.schema=e,this.validate())}else this.validateSchema=null,this.options.schema=null,this.validate()},i.prototype.validate=function(){},i.registerMode=function(e){var t,n;if(l.isArray(e))for(t=0;te&&n.scrollTop>0?this.autoScrollStep=(i+s-e)/3:e>r-s&&o+n.scrollTop3?(n.scrollTop+=o/3,i.animateCallback=t,i.animateTimeout=setTimeout(a,50)):(t&&t(!0),n.scrollTop=s,delete i.animateTimeout,delete i.animateCallback)};a()}else t&&t(!1)},d._createFrame=function(){function e(e){t._onEvent&&t._onEvent(e)}this.frame=document.createElement("div"),this.frame.className="jsoneditor jsoneditor-mode-"+this.options.mode,this.container.appendChild(this.frame);var t=this;this.frame.onclick=function(t){var n=t.target;e(t),"BUTTON"==n.nodeName&&t.preventDefault()},this.frame.oninput=e,this.frame.onchange=e,this.frame.onkeydown=e,this.frame.onkeyup=e,this.frame.oncut=e,this.frame.onpaste=e,this.frame.onmousedown=e,this.frame.onmouseup=e,this.frame.onmouseover=e,this.frame.onmouseout=e,c.addEventListener(this.frame,"focus",e,!0),c.addEventListener(this.frame,"blur",e,!0),this.frame.onfocusin=e,this.frame.onfocusout=e,this.menu=document.createElement("div"),this.menu.className="jsoneditor-menu",this.frame.appendChild(this.menu);var n=document.createElement("button");n.className="jsoneditor-expand-all",n.title="Expand all fields",n.onclick=function(){t.expandAll()},this.menu.appendChild(n);var i=document.createElement("button");if(i.title="Collapse all fields",i.className="jsoneditor-collapse-all",i.onclick=function(){t.collapseAll()},this.menu.appendChild(i),this.history){var o=document.createElement("button");o.className="jsoneditor-undo jsoneditor-separator",o.title="Undo last action (Ctrl+Z)",o.onclick=function(){t._onUndo()},this.menu.appendChild(o),this.dom.undo=o;var s=document.createElement("button");s.className="jsoneditor-redo",s.title="Redo (Ctrl+Shift+Z)",s.onclick=function(){t._onRedo()},this.menu.appendChild(s),this.dom.redo=s,this.history.onChange=function(){o.disabled=!t.history.canUndo(),s.disabled=!t.history.canRedo()},this.history.onChange()}if(this.options&&this.options.modes&&this.options.modes.length){var a=l.create(this,this.options.modes,this.options.mode);this.menu.appendChild(a),this.dom.modeBox=a}this.options.search&&(this.searchBox=new r(this,this.menu))},d._onUndo=function(){this.history&&(this.history.undo(),this._onChange())},d._onRedo=function(){this.history&&(this.history.redo(),this._onChange())},d._onEvent=function(e){"keydown"==e.type&&this._onKeyDown(e),"focus"==e.type&&(u=e.target),"mousedown"==e.type&&this._startDragDistance(e),("mousemove"==e.type||"mouseup"==e.type||"click"==e.type)&&this._updateDragDistance(e);var t=a.getNodeFromTarget(e.target);if(t&&t.selected){if("click"==e.type){if(e.target==t.dom.menu)return void this.showContextMenu(e.target);e.hasMoved||this.deselect()}"mousedown"==e.type&&a.onDragStart(this.multiselection.nodes,e)}else"mousedown"==e.type&&(this.deselect(),t&&e.target==t.dom.drag?a.onDragStart(t,e):(!t||e.target!=t.dom.field&&e.target!=t.dom.value)&&this._onMultiSelectStart(e));t&&t.onEvent(e)},d._startDragDistance=function(e){this.dragDistanceEvent={initialTarget:e.target,initialPageX:e.pageX,initialPageY:e.pageY,dragDistance:0,hasMoved:!1}},d._updateDragDistance=function(e){this.dragDistanceEvent||this._startDragDistance(e);var t=e.pageX-this.dragDistanceEvent.initialPageX,n=e.pageY-this.dragDistanceEvent.initialPageY;return this.dragDistanceEvent.dragDistance=Math.sqrt(t*t+n*n),this.dragDistanceEvent.hasMoved=this.dragDistanceEvent.hasMoved||this.dragDistanceEvent.dragDistance>10,e.dragDistance=this.dragDistanceEvent.dragDistance,e.hasMoved=this.dragDistanceEvent.hasMoved,e.dragDistance},d._onMultiSelectStart=function(e){var t=a.getNodeFromTarget(e.target);if("tree"===this.options.mode&&void 0===this.options.onEditable){this.multiselection={start:t||null,end:null,nodes:[]},this._startDragDistance(e);var n=this;this.mousemove||(this.mousemove=c.addEventListener(window,"mousemove",function(e){n._onMultiSelect(e)})),this.mouseup||(this.mouseup=c.addEventListener(window,"mouseup",function(e){n._onMultiSelectEnd(e)}))}},d._onMultiSelect=function(e){if(e.preventDefault(),this._updateDragDistance(e),e.hasMoved){var t=a.getNodeFromTarget(e.target);t&&(null==this.multiselection.start&&(this.multiselection.start=t),this.multiselection.end=t),this.deselect();var n=this.multiselection.start,i=this.multiselection.end||this.multiselection.start;n&&i&&(this.multiselection.nodes=this._findTopLevelNodes(n,i),this.select(this.multiselection.nodes))}},d._onMultiSelectEnd=function(e){this.multiselection.nodes[0]&&this.multiselection.nodes[0].dom.menu.focus(),this.multiselection.start=null,this.multiselection.end=null,this.mousemove&&(c.removeEventListener(window,"mousemove",this.mousemove),delete this.mousemove),this.mouseup&&(c.removeEventListener(window,"mouseup",this.mouseup),delete this.mouseup)},d.deselect=function(e){this.multiselection.nodes.forEach(function(e){e.setSelected(!1)}),this.multiselection.nodes=[],e&&(this.multiselection.start=null,this.multiselection.end=null)},d.select=function(e){if(!Array.isArray(e))return this.select([e]);if(e){this.deselect(),this.multiselection.nodes=e.slice(0);var t=e[0];e.forEach(function(e){e.setSelected(!0,e===t)})}},d._findTopLevelNodes=function(e,t){for(var n=e.getPath(),i=t.getPath(),o=0;o0){var r=n.length>l;if(r){n=n.slice(0,l);var a=this.validateSchema.errors.length-l;n.push("("+a+" more errors...)")}var c=document.createElement("div");c.innerHTML=''+n.map(function(e){var t;return t="string"==typeof e?'":"",''+t+""}).join("")+"
'+e+"
"+e.dataPath+""+e.message+"
",this.dom.validationErrors=c,this.frame.appendChild(c);var d=c.clientHeight;this.content.style.marginBottom=-d+"px",this.content.style.paddingBottom=d+"px"}if(this.aceEditor){var h=!1;this.aceEditor.resize(h)}},e.exports=[{mode:"text",mixin:a,data:"text",load:a.format},{mode:"code",mixin:a,data:"text",load:a.format}]},function(e,t,n){var i=n(10);t.parse=function(e){try{return JSON.parse(e)}catch(n){throw t.validate(e),n}},t.sanitize=function(e){function t(){return e.charAt(d)}function n(){return e.charAt(d+1)}function i(){return e.charAt(d-1)}function o(){for(var e=c.length-1;e>=0;){var t=c[e];if(" "!==t&&"\n"!==t&&"\r"!==t&&" "!==t)return t;e--}return""}function r(){for(d+=2;di;i++){var r=n[i];r.style&&r.removeAttribute("style");var s=r.attributes;if(s)for(var a=s.length-1;a>=0;a--){var l=s[a];l.specified===!0&&r.removeAttribute(l.name)}t.stripFormatting(r)}},t.setEndOfContentEditable=function(e){var t,n;document.createRange&&(t=document.createRange(),t.selectNodeContents(e),t.collapse(!1),n=window.getSelection(),n.removeAllRanges(),n.addRange(t))},t.selectContentEditable=function(e){if(e&&"DIV"==e.nodeName){var t,n;window.getSelection&&document.createRange&&(n=document.createRange(),n.selectNodeContents(e),t=window.getSelection(),t.removeAllRanges(),t.addRange(n))}},t.getSelection=function(){if(window.getSelection){var e=window.getSelection();if(e.getRangeAt&&e.rangeCount)return e.getRangeAt(0)}return null},t.setSelection=function(e){if(e&&window.getSelection){var t=window.getSelection();t.removeAllRanges(),t.addRange(e)}},t.getSelectionOffset=function(){var e=t.getSelection();return e&&"startOffset"in e&&"endOffset"in e&&e.startContainer&&e.startContainer==e.endContainer?{startOffset:e.startOffset,endOffset:e.endOffset,container:e.startContainer.parentNode}:null},t.setSelectionOffset=function(e){if(document.createRange&&window.getSelection){var n=window.getSelection();if(n){var i=document.createRange();e.container.firstChild||e.container.appendChild(document.createTextNode("")),i.setStart(e.container.firstChild,e.startOffset),i.setEnd(e.container.firstChild,e.endOffset),t.setSelection(i)}}},t.getInnerText=function(e,n){var i=void 0==n;if(i&&(n={text:"",flush:function(){var e=this.text;return this.text="",e},set:function(e){this.text=e}}),e.nodeValue)return n.flush()+e.nodeValue;if(e.hasChildNodes()){for(var o=e.childNodes,r="",s=0,a=o.length;a>s;s++){var l=o[s];if("DIV"==l.nodeName||"P"==l.nodeName){var c=o[s-1],d=c?c.nodeName:void 0;d&&"DIV"!=d&&"P"!=d&&"BR"!=d&&(r+="\n",n.flush()),r+=t.getInnerText(l,n),n.set("\n")}else"BR"==l.nodeName?(r+=n.flush(),n.set("\n")):r+=t.getInnerText(l,n)}return r}return"P"==e.nodeName&&-1!=t.getInternetExplorerVersion()?n.flush():""},t.getInternetExplorerVersion=function(){if(-1==r){var e=-1;if("Microsoft Internet Explorer"==navigator.appName){var t=navigator.userAgent,n=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");null!=n.exec(t)&&(e=parseFloat(RegExp.$1))}r=e}return r},t.isFirefox=function(){return-1!=navigator.userAgent.indexOf("Firefox")};var r=-1;t.addEventListener=function(e,n,i,o){if(e.addEventListener)return void 0===o&&(o=!1),"mousewheel"===n&&t.isFirefox()&&(n="DOMMouseScroll"),e.addEventListener(n,i,o),i;if(e.attachEvent){var r=function(){return i.call(e,window.event)};return e.attachEvent("on"+n,r),r}},t.removeEventListener=function(e,n,i,o){e.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===n&&t.isFirefox()&&(n="DOMMouseScroll"),e.removeEventListener(n,i,o)):e.detachEvent&&e.detachEvent("on"+n,i)},t.parsePath=function s(e){var t,n;if(0===e.length)return[];var i=e.match(/^\.(\w+)/);if(i)t=i[1],n=e.substr(t.length+1);else{if("["!==e[0])throw new SyntaxError("Failed to parse path");var o=e.indexOf("]");if(-1===o)throw new SyntaxError("Character ] expected in path");if(1===o)throw new SyntaxError("Index expected after [");t=JSON.parse(e.substring(1,o)),n=e.substr(o+1)}return[t].concat(s(n))},t.improveSchemaError=function(e){if("enum"===e.keyword&&Array.isArray(e.schema)){var t=e.schema;if(t){if(t=t.map(function(e){return JSON.stringify(e)}),t.length>5){var n=["("+(t.length-5)+" more...)"];t=t.slice(0,5),t.push(n)}e.message="should be equal to one of: "+t.join(", ")}}return e},t.insideRect=function(e,t,n){var i=void 0!==n?n:0;return t.left-i>=e.left&&t.right+i<=e.right&&t.top-i>=e.top&&t.bottom+i<=e.bottom},t.debounce=function(e,t,n){var i;return function(){var o=this,r=arguments,s=function(){i=null,n||e.apply(o,r)},a=n&&!i;clearTimeout(i),i=setTimeout(s,t),a&&e.apply(o,r)}},t.textDiff=function(e,t){for(var n=t.length,i=0,o=e.length,r=t.length;t.charAt(i)===e.charAt(i)&&n>i;)i++;for(;t.charAt(r-1)===e.charAt(o-1)&&r>i&&o>0;)r--,o--;return{start:i,end:r}}},function(e,t,n){function i(){this.locked=!1}i.prototype.highlight=function(e){this.locked||(this.node!=e&&(this.node&&this.node.setHighlight(!1),this.node=e,this.node.setHighlight(!0)),this._cancelUnhighlight())},i.prototype.unhighlight=function(){if(!this.locked){var e=this;this.node&&(this._cancelUnhighlight(),this.unhighlightTimer=setTimeout(function(){e.node.setHighlight(!1),e.node=void 0,e.unhighlightTimer=void 0},0))}},i.prototype._cancelUnhighlight=function(){this.unhighlightTimer&&(clearTimeout(this.unhighlightTimer),this.unhighlightTimer=void 0)},i.prototype.lock=function(){this.locked=!0},i.prototype.unlock=function(){this.locked=!1},e.exports=i},function(e,t,n){function i(e){this.editor=e,this.clear(),this.actions={editField:{undo:function(e){e.node.updateField(e.oldValue)},redo:function(e){e.node.updateField(e.newValue)}},editValue:{undo:function(e){e.node.updateValue(e.oldValue)},redo:function(e){e.node.updateValue(e.newValue)}},changeType:{undo:function(e){e.node.changeType(e.oldType)},redo:function(e){e.node.changeType(e.newType)}},appendNodes:{undo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})},redo:function(e){e.nodes.forEach(function(t){e.parent.appendChild(t)})}},insertBeforeNodes:{undo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})},redo:function(e){e.nodes.forEach(function(t){e.parent.insertBefore(t,e.beforeNode)})}},insertAfterNodes:{undo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})},redo:function(e){var t=e.afterNode;e.nodes.forEach(function(n){e.parent.insertAfter(e.node,t),t=n})}},removeNodes:{undo:function(e){var t=e.parent,n=t.childs[e.index]||t.append;e.nodes.forEach(function(e){t.insertBefore(e,n)})},redo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})}},duplicateNodes:{undo:function(e){e.nodes.forEach(function(t){e.parent.removeChild(t)})},redo:function(e){var t=e.afterNode;e.nodes.forEach(function(n){e.parent.insertAfter(n,t),t=n})}},moveNodes:{undo:function(e){e.nodes.forEach(function(t){e.oldBeforeNode.parent.moveBefore(t,e.oldBeforeNode)})},redo:function(e){e.nodes.forEach(function(t){e.newBeforeNode.parent.moveBefore(t,e.newBeforeNode)})}},sort:{undo:function(e){var t=e.node;t.hideChilds(),t.sort=e.oldSort,t.childs=e.oldChilds,t.showChilds()},redo:function(e){var t=e.node;t.hideChilds(),t.sort=e.newSort,t.childs=e.newChilds,t.showChilds()}}}}n(3);i.prototype.onChange=function(){},i.prototype.add=function(e,t){this.index++,this.history[this.index]={action:e,params:t,timestamp:new Date},this.index=0},i.prototype.canRedo=function(){return this.indexthis.results.length-1&&(t=0),this._setActiveResult(t,e)}},i.prototype.previous=function(e){if(void 0!=this.results){var t=this.results.length-1,n=void 0!=this.resultIndex?this.resultIndex-1:t;0>n&&(n=t),this._setActiveResult(n,e)}},i.prototype._setActiveResult=function(e,t){if(this.activeResult){var n=this.activeResult.node,i=this.activeResult.elem;"field"==i?delete n.searchFieldActive:delete n.searchValueActive,n.updateDom()}if(!this.results||!this.results[e])return this.resultIndex=void 0,void(this.activeResult=void 0);this.resultIndex=e;var o=this.results[this.resultIndex].node,r=this.results[this.resultIndex].elem;"field"==r?o.searchFieldActive=!0:o.searchValueActive=!0,this.activeResult=this.results[this.resultIndex],o.updateDom(),o.scrollTo(function(){t&&o.focus(r)})},i.prototype._clearDelay=function(){void 0!=this.timeout&&(clearTimeout(this.timeout),delete this.timeout)},i.prototype._onDelayedSearch=function(e){this._clearDelay();var t=this;this.timeout=setTimeout(function(e){t._onSearch()},this.delay)},i.prototype._onSearch=function(e){this._clearDelay();var t=this.dom.search.value,n=t.length>0?t:void 0;if(n!=this.lastText||e)if(this.lastText=n,this.results=this.editor.search(n),this._setActiveResult(void 0),void 0!=n){var i=this.results.length;switch(i){case 0:this.dom.results.innerHTML="no results";break;case 1:this.dom.results.innerHTML="1 result";break;default:this.dom.results.innerHTML=i+" results"}}else this.dom.results.innerHTML=""},i.prototype._onKeyDown=function(e){var t=e.which;27==t?(this.dom.search.value="",this._onSearch(),e.preventDefault(),e.stopPropagation()):13==t&&(e.ctrlKey?this._onSearch(!0):e.shiftKey?this.previous():this.next(),e.preventDefault(),e.stopPropagation())},i.prototype._onKeyUp=function(e){var t=e.keyCode;27!=t&&13!=t&&this._onDelayedSearch(e)},i.prototype.clear=function(){this.dom.search.value="",this._onSearch()},e.exports=i},function(e,t,n){function i(e,t){function n(e,t,o){o.forEach(function(o){if("separator"==o.type){var r=document.createElement("div");r.className="jsoneditor-separator",a=document.createElement("li"),a.appendChild(r),e.appendChild(a)}else{var s={},a=document.createElement("li");e.appendChild(a);var l=document.createElement("button");if(l.className=o.className,s.button=l,o.title&&(l.title=o.title),o.click&&(l.onclick=function(){event.preventDefault(),i.hide(),o.click()}),a.appendChild(l),o.submenu){var c=document.createElement("div");c.className="jsoneditor-icon",l.appendChild(c),l.appendChild(document.createTextNode(o.text));var d;if(o.click){l.className+=" jsoneditor-default";var h=document.createElement("button");s.buttonExpand=h,h.className="jsoneditor-expand",h.innerHTML='
',a.appendChild(h),o.submenuTitle&&(h.title=o.submenuTitle),d=h}else{var u=document.createElement("div");u.className="jsoneditor-expand",l.appendChild(u),d=l}d.onclick=function(e){e.preventDefault(),i._onExpandItem(s),d.focus()};var p=[];s.subItems=p;var f=document.createElement("ul");s.ul=f,f.className="jsoneditor-menu",f.style.height="0",a.appendChild(f),n(f,p,o.submenu)}else l.innerHTML='
'+o.text;t.push(s)}})}this.dom={};var i=this,o=this.dom;this.anchor=void 0,this.items=e,this.eventListeners={},this.selection=void 0,this.onClose=t?t.close:void 0;var r=document.createElement("div");r.className="jsoneditor-contextmenu-root",o.root=r;var s=document.createElement("div");s.className="jsoneditor-contextmenu",o.menu=s,r.appendChild(s);var a=document.createElement("ul");a.className="jsoneditor-menu",s.appendChild(a),o.list=a,o.items=[];var l=document.createElement("button");o.focusButton=l;var c=document.createElement("li");c.style.overflow="hidden",c.style.height="0",c.appendChild(l),a.appendChild(c),n(a,this.dom.items,e),this.maxHeight=0,e.forEach(function(t){var n=24*(e.length+(t.submenu?t.submenu.length:0));i.maxHeight=Math.max(i.maxHeight,n)})}var o=n(3);i.prototype._getVisibleButtons=function(){var e=[],t=this;return this.dom.items.forEach(function(n){e.push(n.button),n.buttonExpand&&e.push(n.buttonExpand),n.subItems&&n==t.expandedItem&&n.subItems.forEach(function(t){e.push(t.button),t.buttonExpand&&e.push(t.buttonExpand)})}),e},i.visibleMenu=void 0,i.prototype.show=function(e,t){this.hide();var n=!0;if(t){var r=e.getBoundingClientRect(),s=t.getBoundingClientRect();r.bottom+this.maxHeights.top&&(n=!1)}if(n){var a=e.offsetHeight;this.dom.menu.style.left="0px",this.dom.menu.style.top=a+"px",this.dom.menu.style.bottom=""}else this.dom.menu.style.left="0px",this.dom.menu.style.top="",this.dom.menu.style.bottom="0px";var l=e.parentNode;l.insertBefore(this.dom.root,l.firstChild);var c=this,d=this.dom.list;this.eventListeners.mousedown=o.addEventListener(window,"mousedown",function(e){var t=e.target;t==d||c._isChildOf(t,d)||(c.hide(),e.stopPropagation(),e.preventDefault())}),this.eventListeners.keydown=o.addEventListener(window,"keydown",function(e){c._onKeyDown(e)}),this.selection=o.getSelection(),this.anchor=e,setTimeout(function(){c.dom.focusButton.focus()},0),i.visibleMenu&&i.visibleMenu.hide(),i.visibleMenu=this},i.prototype.hide=function(){this.dom.root.parentNode&&(this.dom.root.parentNode.removeChild(this.dom.root),this.onClose&&this.onClose());for(var e in this.eventListeners)if(this.eventListeners.hasOwnProperty(e)){var t=this.eventListeners[e];t&&o.removeEventListener(window,e,t),delete this.eventListeners[e]}i.visibleMenu==this&&(i.visibleMenu=void 0)},i.prototype._onExpandItem=function(e){var t=this,n=e==this.expandedItem,i=this.expandedItem;if(i&&(i.ul.style.height="0",i.ul.style.padding="",setTimeout(function(){t.expandedItem!=i&&(i.ul.style.display="",o.removeClassName(i.ul.parentNode,"jsoneditor-selected"))},300),this.expandedItem=void 0),!n){var r=e.ul;r.style.display="block";r.clientHeight;setTimeout(function(){t.expandedItem==e&&(r.style.height=24*r.childNodes.length+"px",r.style.padding="5px 10px")},0),o.addClassName(r.parentNode,"jsoneditor-selected"),this.expandedItem=e}},i.prototype._onKeyDown=function(e){var t,n,i,r,s=e.target,a=e.which,l=!1;27==a?(this.selection&&o.setSelection(this.selection),this.anchor&&this.anchor.focus(),this.hide(),l=!0):9==a?e.shiftKey?(t=this._getVisibleButtons(),n=t.indexOf(s),0==n&&(t[t.length-1].focus(),l=!0)):(t=this._getVisibleButtons(),n=t.indexOf(s),n==t.length-1&&(t[0].focus(),l=!0)):37==a?("jsoneditor-expand"==s.className&&(t=this._getVisibleButtons(),n=t.indexOf(s),i=t[n-1],i&&i.focus()),l=!0):38==a?(t=this._getVisibleButtons(),n=t.indexOf(s),i=t[n-1],i&&"jsoneditor-expand"==i.className&&(i=t[n-2]),i||(i=t[t.length-1]),i&&i.focus(),l=!0):39==a?(t=this._getVisibleButtons(),n=t.indexOf(s),r=t[n+1],r&&"jsoneditor-expand"==r.className&&r.focus(),l=!0):40==a&&(t=this._getVisibleButtons(),n=t.indexOf(s),r=t[n+1],r&&"jsoneditor-expand"==r.className&&(r=t[n+2]),r||(r=t[0]),r&&(r.focus(),l=!0),l=!0),l&&(e.stopPropagation(),e.preventDefault())},i.prototype._isChildOf=function(e,t){for(var n=e.parentNode;n;){if(n==t)return!0;n=n.parentNode}return!1},e.exports=i},function(e,t,n){function i(e,t){this.editor=e,this.dom={},this.expanded=!1,t&&t instanceof Object?(this.setField(t.field,t.fieldEditable),this.setValue(t.value,t.type)):(this.setField(""),this.setValue(null)),this._debouncedOnChangeValue=s.debounce(this._onChangeValue.bind(this),i.prototype.DEBOUNCE_INTERVAL),this._debouncedOnChangeField=s.debounce(this._onChangeField.bind(this),i.prototype.DEBOUNCE_INTERVAL)}var o=n(7),r=n(12),s=n(3);i.prototype.DEBOUNCE_INTERVAL=150,i.prototype._updateEditability=function(){if(this.editable={field:!0,value:!0},this.editor&&(this.editable.field="tree"===this.editor.options.mode,this.editable.value="view"!==this.editor.options.mode,("tree"===this.editor.options.mode||"form"===this.editor.options.mode)&&"function"==typeof this.editor.options.onEditable)){var e=this.editor.options.onEditable({field:this.field,value:this.value,path:this.getFieldsPath()});"boolean"==typeof e?(this.editable.field=e,this.editable.value=e):("boolean"==typeof e.field&&(this.editable.field=e.field),"boolean"==typeof e.value&&(this.editable.value=e.value))}},i.prototype.getFieldsPath=function(){for(var e=this,t=[];e;){var n=void 0!=e.field?e.field:e.index;void 0!==n&&t.unshift(n),e=e.parent}return t},i.prototype.findNode=function(e){for(var t=s.parsePath(e),n=this;n&&t.length>0;){var i=t.shift();if("number"==typeof i){if("array"!==n.type)throw new Error("Cannot get child node at index "+i+": node is no array");n=n.childs[i]}else{if("object"!==n.type)throw new Error("Cannot get child node "+i+": node is no object");n=n.childs.filter(function(e){return e.field===i})[0]}}return n},i.prototype.findParents=function(){for(var e=[],t=this.parent;t;)e.unshift(t),t=t.parent;return e},i.prototype.setError=function(e,t){this.getDom(),this.error=e;var n=this.dom.tdError;if(e){n||(n=document.createElement("td"),this.dom.tdError=n,this.dom.tdValue.parentNode.appendChild(n));var i=document.createElement("div");i.className="jsoneditor-popover jsoneditor-right",i.appendChild(document.createTextNode(e.message));var o=document.createElement("button");for(o.className="jsoneditor-schema-error",o.appendChild(i),o.onmouseover=o.onfocus=function(){for(var e=["right","above","below","left"],t=0;ts;s++)n=e[s],void 0===n||n instanceof Function||(o=new i(this.editor,{value:n}),this.appendChild(o));this.value=""}else if("object"==this.type){this.childs=[];for(var l in e)e.hasOwnProperty(l)&&(n=e[l],void 0===n||n instanceof Function||(o=new i(this.editor,{field:l,value:n}),this.appendChild(o)));this.value=""}else this.childs=void 0,this.value=e;this.previousValue=this.value},i.prototype.getValue=function(){if("array"==this.type){var e=[];return this.childs.forEach(function(t){e.push(t.getValue())}),e}if("object"==this.type){var t={};return this.childs.forEach(function(e){t[e.getField()]=e.getValue()}),t}return void 0===this.value&&this._getDomValue(),this.value},i.prototype.getLevel=function(){return this.parent?this.parent.getLevel()+1:0},i.prototype.getPath=function(){var e=this.parent?this.parent.getPath():[];return e.push(this),e},i.prototype.clone=function(){var e=new i(this.editor);if(e.type=this.type,e.field=this.field,e.fieldInnerText=this.fieldInnerText,e.fieldEditable=this.fieldEditable,e.value=this.value,e.valueInnerText=this.valueInnerText,e.expanded=this.expanded,this.childs){var t=[];this.childs.forEach(function(n){var i=n.clone();i.setParent(e),t.push(i)}),e.childs=t}else e.childs=void 0;return e},i.prototype.expand=function(e){this.childs&&(this.expanded=!0,this.dom.expand&&(this.dom.expand.className="jsoneditor-expanded"),this.showChilds(),e!==!1&&this.childs.forEach(function(t){t.expand(e)}))},i.prototype.collapse=function(e){this.childs&&(this.hideChilds(),e!==!1&&this.childs.forEach(function(t){t.collapse(e)}),this.dom.expand&&(this.dom.expand.className="jsoneditor-collapsed"),this.expanded=!1)},i.prototype.showChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.dom.tr,n=t?t.parentNode:void 0;if(n){var i=this.getAppend(),o=t.nextSibling;o?n.insertBefore(i,o):n.appendChild(i),this.childs.forEach(function(e){n.insertBefore(e.getDom(),i),e.showChilds()})}}},i.prototype.hide=function(){var e=this.dom.tr,t=e?e.parentNode:void 0;t&&t.removeChild(e),this.hideChilds()},i.prototype.hideChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.getAppend();t.parentNode&&t.parentNode.removeChild(t),this.childs.forEach(function(e){e.hide()})}},i.prototype.appendChild=function(e){if(this._hasChilds()){if(e.setParent(this),e.fieldEditable="object"==this.type,"array"==this.type&&(e.index=this.childs.length),this.childs.push(e),this.expanded){var t=e.getDom(),n=this.getAppend(),i=n?n.parentNode:void 0;n&&i&&i.insertBefore(t,n),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},i.prototype.moveBefore=function(e,t){if(this._hasChilds()){var n=this.dom.tr?this.dom.tr.parentNode:void 0;if(n){var i=document.createElement("tr");i.style.height=n.clientHeight+"px",n.appendChild(i)}e.parent&&e.parent.removeChild(e),t instanceof a?this.appendChild(e):this.insertBefore(e,t),n&&n.removeChild(i)}},i.prototype.moveTo=function(e,t){if(e.parent==this){var n=this.childs.indexOf(e);t>n&&t++}var i=this.childs[t]||this.append;this.moveBefore(e,i)},i.prototype.insertBefore=function(e,t){if(this._hasChilds()){if(t==this.append)e.setParent(this),e.fieldEditable="object"==this.type,this.childs.push(e);else{var n=this.childs.indexOf(t);if(-1==n)throw new Error("Node not found");e.setParent(this),e.fieldEditable="object"==this.type,this.childs.splice(n,0,e)}if(this.expanded){var i=e.getDom(),o=t.getDom(),r=o?o.parentNode:void 0;o&&r&&r.insertBefore(i,o),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},i.prototype.insertAfter=function(e,t){if(this._hasChilds()){var n=this.childs.indexOf(t),i=this.childs[n+1];i?this.insertBefore(e,i):this.appendChild(e)}},i.prototype.search=function(e){var t,n=[],i=e?e.toLowerCase():void 0;if(delete this.searchField,delete this.searchValue,void 0!=this.field){var o=String(this.field).toLowerCase();t=o.indexOf(i),-1!=t&&(this.searchField=!0,n.push({node:this,elem:"field"})),this._updateDomField()}if(this._hasChilds()){if(this.childs){var r=[];this.childs.forEach(function(t){r=r.concat(t.search(e))}),n=n.concat(r)}if(void 0!=i){var s=!1;0==r.length?this.collapse(s):this.expand(s)}}else{if(void 0!=this.value){var a=String(this.value).toLowerCase();t=a.indexOf(i),-1!=t&&(this.searchValue=!0,n.push({node:this,elem:"value"}))}this._updateDomValue()}return n},i.prototype.scrollTo=function(e){if(!this.dom.tr||!this.dom.tr.parentNode)for(var t=this.parent,n=!1;t;)t.expand(n),t=t.parent;this.dom.tr&&this.dom.tr.parentNode&&this.editor.scrollTo(this.dom.tr.offsetTop,e)},i.focusElement=void 0,i.prototype.focus=function(e){if(i.focusElement=e,this.dom.tr&&this.dom.tr.parentNode){var t=this.dom;switch(e){case"drag":t.drag?t.drag.focus():t.menu.focus();break;case"menu":t.menu.focus();break;case"expand":this._hasChilds()?t.expand.focus():t.field&&this.fieldEditable?(t.field.focus(),s.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),s.selectContentEditable(t.value)):t.menu.focus();break;case"field":t.field&&this.fieldEditable?(t.field.focus(),s.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),s.selectContentEditable(t.value)):this._hasChilds()?t.expand.focus():t.menu.focus();break;case"value":default:t.value&&!this._hasChilds()?(t.value.focus(),s.selectContentEditable(t.value)):t.field&&this.fieldEditable?(t.field.focus(),s.selectContentEditable(t.field)):this._hasChilds()?t.expand.focus():t.menu.focus()}}},i.select=function(e){setTimeout(function(){s.selectContentEditable(e)},0)},i.prototype.blur=function(){this._getDomValue(!1),this._getDomField(!1)},i.prototype.containsNode=function(e){if(this==e)return!0;var t=this.childs;if(t)for(var n=0,i=t.length;i>n;n++)if(t[n].containsNode(e))return!0;return!1},i.prototype._move=function(e,t){if(e!=t){if(e.containsNode(this))throw new Error("Cannot move a field into a child of itself");e.parent&&e.parent.removeChild(e);var n=e.clone();e.clearDom(),t?this.insertBefore(n,t):this.appendChild(n)}},i.prototype.removeChild=function(e){if(this.childs){var t=this.childs.indexOf(e);if(-1!=t){e.hide(),delete e.searchField,delete e.searchValue;var n=this.childs.splice(t,1)[0];return n.parent=null,this.updateDom({updateIndexes:!0}),n}}return void 0},i.prototype._remove=function(e){this.removeChild(e)},i.prototype.changeType=function(e){var t=this.type;if(t!=e){if("string"!=e&&"auto"!=e||"string"!=t&&"auto"!=t){var n,i=this.dom.tr?this.dom.tr.parentNode:void 0;n=this.expanded?this.getAppend():this.getDom();var o=n&&n.parentNode?n.nextSibling:void 0;this.hide(),this.clearDom(),this.type=e,"object"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),delete e.index,e.fieldEditable=!0,void 0==e.field&&(e.field="")}),("string"==t||"auto"==t)&&(this.expanded=!0)):"array"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),e.fieldEditable=!1,e.index=t}),("string"==t||"auto"==t)&&(this.expanded=!0)):this.expanded=!1,i&&(o?i.insertBefore(this.getDom(),o):i.appendChild(this.getDom())),this.showChilds()}else this.type=e;("auto"==e||"string"==e)&&("string"==e?this.value=String(this.value):this.value=this._stringCast(String(this.value)),this.focus()),this.updateDom({updateIndexes:!0})}},i.prototype._getDomValue=function(e){if(this.dom.value&&"array"!=this.type&&"object"!=this.type&&(this.valueInnerText=s.getInnerText(this.dom.value)),void 0!=this.valueInnerText)try{var t;if("string"==this.type)t=this._unescapeHTML(this.valueInnerText);else{var n=this._unescapeHTML(this.valueInnerText);t=this._stringCast(n)}t!==this.value&&(this.value=t,this._debouncedOnChangeValue())}catch(i){if(this.value=void 0,e!==!0)throw i}},i.prototype._onChangeValue=function(){var e=this.editor.getSelection();if(e.range){var t=s.textDiff(String(this.value),String(this.previousValue));e.range.startOffset=t.start,e.range.endOffset=t.end}var n=this.editor.getSelection();if(n.range){var i=s.textDiff(String(this.previousValue),String(this.value));n.range.startOffset=i.start,n.range.endOffset=i.end}this.editor._onAction("editValue",{node:this,oldValue:this.previousValue,newValue:this.value,oldSelection:e,newSelection:n}),this.previousValue=this.value},i.prototype._onChangeField=function(){var e=this.editor.getSelection();if(e.range){var t=s.textDiff(this.field,this.previousField);e.range.startOffset=t.start,e.range.endOffset=t.end}var n=this.editor.getSelection();if(n.range){var i=s.textDiff(this.previousField,this.field);n.range.startOffset=i.start,n.range.endOffset=i.end}this.editor._onAction("editField",{node:this,oldValue:this.previousField,newValue:this.field,oldSelection:e,newSelection:n}),this.previousField=this.field},i.prototype._updateDomValue=function(){var e=this.dom.value;if(e){var t=["jsoneditor-value"],n=this.value,i="auto"==this.type?s.type(n):this.type,o="string"==i&&s.isUrl(n);t.push("jsoneditor-"+i),o&&t.push("jsoneditor-url");var r=""==String(this.value)&&"array"!=this.type&&"object"!=this.type;if(r&&t.push("jsoneditor-empty"),this.searchValueActive&&t.push("jsoneditor-highlight-active"),this.searchValue&&t.push("jsoneditor-highlight"),e.className=t.join(" "),"array"==i||"object"==i){var a=this.childs?this.childs.length:0;e.title=this.type+" containing "+a+" items"}else o&&this.editable.value?e.title="Ctrl+Click or Ctrl+Enter to open url in new window":e.title="";"boolean"===i?(this.dom.checkbox||(this.dom.checkbox=document.createElement("input"),this.dom.checkbox.type="checkbox",this.dom.tdCheckbox=document.createElement("td"),this.dom.tdCheckbox.className="jsoneditor-tree",this.dom.tdCheckbox.appendChild(this.dom.checkbox),this.dom.tdValue.parentNode.insertBefore(this.dom.tdCheckbox,this.dom.tdValue)),this.dom.checkbox.checked=this.value):this.dom.tdCheckbox&&(this.dom.tdCheckbox.parentNode.removeChild(this.dom.tdCheckbox),delete this.dom.tdCheckbox,delete this.dom.checkbox),s.stripFormatting(e)}},i.prototype._updateDomField=function(){var e=this.dom.field;if(e){var t=""==String(this.field)&&"array"!=this.parent.type;t?s.addClassName(e,"jsoneditor-empty"):s.removeClassName(e,"jsoneditor-empty"),this.searchFieldActive?s.addClassName(e,"jsoneditor-highlight-active"):s.removeClassName(e,"jsoneditor-highlight-active"),this.searchField?s.addClassName(e,"jsoneditor-highlight"):s.removeClassName(e,"jsoneditor-highlight"),s.stripFormatting(e)}},i.prototype._getDomField=function(e){if(this.dom.field&&this.fieldEditable&&(this.fieldInnerText=s.getInnerText(this.dom.field)),void 0!=this.fieldInnerText)try{var t=this._unescapeHTML(this.fieldInnerText);t!==this.field&&(this.field=t,this._debouncedOnChangeField())}catch(n){if(this.field=void 0,e!==!0)throw n}},i.prototype.validate=function(){var e=[];if("object"===this.type){for(var t={},n=[],i=0;i0&&(e=this.childs.filter(function(e){return-1!==n.indexOf(e.field)}).map(function(e){return{node:e,error:{message:'duplicate key "'+e.field+'"'}}}))}if(this.childs)for(var i=0;i0&&(e=e.concat(r))}return e},i.prototype.clearDom=function(){this.dom={}},i.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;if(this._updateEditability(),e.tr=document.createElement("tr"),e.tr.node=this,"tree"===this.editor.options.mode){var t=document.createElement("td");if(this.editable.field&&this.parent){var n=document.createElement("button");e.drag=n,n.className="jsoneditor-dragarea",n.title="Drag to move this field (Alt+Shift+Arrows)",t.appendChild(n)}e.tr.appendChild(t);var i=document.createElement("td"),o=document.createElement("button");e.menu=o,o.className="jsoneditor-contextmenu",o.title="Click to open the actions menu (Ctrl+M)",i.appendChild(e.menu),e.tr.appendChild(i)}var r=document.createElement("td");return e.tr.appendChild(r),e.tree=this._createDomTree(),r.appendChild(e.tree),this.updateDom({updateIndexes:!0}),e.tr},i.onDragStart=function(e,t){if(!Array.isArray(e))return i.onDragStart([e],t);if(0!==e.length){var n=e[0],o=e[e.length-1],r=i.getNodeFromTarget(t.target),a=o._nextSibling(),l=n.editor,c=s.getAbsoluteTop(r.dom.tr)-s.getAbsoluteTop(n.dom.tr);l.mousemove||(l.mousemove=s.addEventListener(window,"mousemove",function(t){i.onDrag(e,t)})),l.mouseup||(l.mouseup=s.addEventListener(window,"mouseup",function(t){i.onDragEnd(e,t)})),l.highlighter.lock(),l.drag={oldCursor:document.body.style.cursor,oldSelection:l.getSelection(),oldBeforeNode:a,mouseX:t.pageX,offsetY:c,level:n.getLevel()},document.body.style.cursor="move",t.preventDefault()}},i.onDrag=function(e,t){if(!Array.isArray(e))return i.onDrag([e],t);if(0!==e.length){var n,o,r,l,c,d,h,u,p,f,m,g,v,y,b=e[0].editor,w=t.pageY-b.drag.offsetY,x=t.pageX,_=!1,E=e[0];if(n=E.dom.tr,p=s.getAbsoluteTop(n),g=n.offsetHeight,p>w){o=n;do o=o.previousSibling,h=i.getNodeFromTarget(o),f=o?s.getAbsoluteTop(o):0;while(o&&f>w);h&&!h.parent&&(h=void 0),h||(d=n.parentNode.firstChild,o=d?d.nextSibling:void 0,h=i.getNodeFromTarget(o),h==E&&(h=void 0)),h&&(o=h.dom.tr,f=o?s.getAbsoluteTop(o):0,w>f+g&&(h=void 0)),h&&(e.forEach(function(e){h.parent.moveBefore(e,h)}),_=!0)}else{var C=e[e.length-1];if(c=C.expanded&&C.append?C.append.getDom():C.dom.tr,l=c?c.nextSibling:void 0){m=s.getAbsoluteTop(l),r=l;do u=i.getNodeFromTarget(r),r&&(v=r.nextSibling?s.getAbsoluteTop(r.nextSibling):0,y=r?v-m:0,u.parent.childs.length==e.length&&u.parent.childs[e.length-1]==C&&(p+=27)),r=r.nextSibling;while(r&&w>p+y);if(u&&u.parent){var j=x-b.drag.mouseX,S=Math.round(j/24/2),k=b.drag.level+S,N=u.getLevel();for(o=u.dom.tr.previousSibling;k>N&&o;){h=i.getNodeFromTarget(o);var A=e.some(function(e){return e===h||h._isChildOf(e)});if(A);else{if(!(h instanceof a))break;var O=h.parent.childs;if(O.length==e.length&&O[e.length-1]==C)break;u=i.getNodeFromTarget(o),N=u.getLevel()}o=o.previousSibling}c.nextSibling!=u.dom.tr&&(e.forEach(function(e){u.parent.moveBefore(e,u)}),_=!0)}}}_&&(b.drag.mouseX=x,b.drag.level=E.getLevel()),b.startAutoScroll(w),t.preventDefault()}},i.onDragEnd=function(e,t){if(!Array.isArray(e))return i.onDrag([e],t);if(0!==e.length){var n=e[0],o=n.editor,r=n.parent,a=r.childs.indexOf(n),l=r.childs[a+e.length]||r.append;e[0]&&e[0].dom.menu.focus();var c={nodes:e,oldSelection:o.drag.oldSelection,newSelection:o.getSelection(),oldBeforeNode:o.drag.oldBeforeNode,newBeforeNode:l};c.oldBeforeNode!=c.newBeforeNode&&o._onAction("moveNodes",c),document.body.style.cursor=o.drag.oldCursor,o.highlighter.unlock(),e.forEach(function(e){t.target!==e.dom.drag&&t.target!==e.dom.menu&&o.highlighter.unhighlight()}),delete o.drag,o.mousemove&&(s.removeEventListener(window,"mousemove",o.mousemove),delete o.mousemove),o.mouseup&&(s.removeEventListener(window,"mouseup",o.mouseup),delete o.mouseup),o.stopAutoScroll(),t.preventDefault()}},i.prototype._isChildOf=function(e){for(var t=this.parent;t;){if(t==e)return!0;t=t.parent}return!1},i.prototype._createDomField=function(){return document.createElement("div")},i.prototype.setHighlight=function(e){this.dom.tr&&(e?s.addClassName(this.dom.tr,"jsoneditor-highlight"):s.removeClassName(this.dom.tr,"jsoneditor-highlight"),this.append&&this.append.setHighlight(e),this.childs&&this.childs.forEach(function(t){t.setHighlight(e)}))},i.prototype.setSelected=function(e,t){this.selected=e,this.dom.tr&&(e?s.addClassName(this.dom.tr,"jsoneditor-selected"):s.removeClassName(this.dom.tr,"jsoneditor-selected"),t?s.addClassName(this.dom.tr,"jsoneditor-first"):s.removeClassName(this.dom.tr,"jsoneditor-first"),this.append&&this.append.setSelected(e),this.childs&&this.childs.forEach(function(t){t.setSelected(e)}))},i.prototype.updateValue=function(e){this.value=e,this.updateDom()},i.prototype.updateField=function(e){this.field=e,this.updateDom()},i.prototype.updateDom=function(e){var t=this.dom.tree;t&&(t.style.marginLeft=24*this.getLevel()+"px");var n=this.dom.field;if(n){this.fieldEditable?(n.contentEditable=this.editable.field,n.spellcheck=!1,n.className="jsoneditor-field"):n.className="jsoneditor-readonly";var i;i=void 0!=this.index?this.index:void 0!=this.field?this.field:this._hasChilds()?this.type:"",n.innerHTML=this._escapeHTML(i)}var o=this.dom.value;if(o){var r=this.childs?this.childs.length:0;"array"==this.type?(o.innerHTML="["+r+"]",s.addClassName(this.dom.tr,"jsoneditor-expandable")):"object"==this.type?(o.innerHTML="{"+r+"}",s.addClassName(this.dom.tr,"jsoneditor-expandable")):(o.innerHTML=this._escapeHTML(this.value),s.removeClassName(this.dom.tr,"jsoneditor-expandable"))}this._updateDomField(),this._updateDomValue(),e&&e.updateIndexes===!0&&this._updateDomIndexes(),e&&e.recurse===!0&&this.childs&&this.childs.forEach(function(t){t.updateDom(e)}),this.append&&this.append.updateDom()},i.prototype._updateDomIndexes=function(){var e=this.dom.value,t=this.childs;e&&t&&("array"==this.type?t.forEach(function(e,t){e.index=t;var n=e.dom.field;n&&(n.innerHTML=t)}):"object"==this.type&&t.forEach(function(e){void 0!=e.index&&(delete e.index,void 0==e.field&&(e.field=""))}))},i.prototype._createDomValue=function(){var e;return"array"==this.type?(e=document.createElement("div"),e.innerHTML="[...]"):"object"==this.type?(e=document.createElement("div"),e.innerHTML="{...}"):!this.editable.value&&s.isUrl(this.value)?(e=document.createElement("a"),e.href=this.value,e.target="_blank",e.innerHTML=this._escapeHTML(this.value)):(e=document.createElement("div"),e.contentEditable=this.editable.value,e.spellcheck=!1,e.innerHTML=this._escapeHTML(this.value)),e},i.prototype._createDomExpandButton=function(){var e=document.createElement("button");return this._hasChilds()?(e.className=this.expanded?"jsoneditor-expanded":"jsoneditor-collapsed",e.title="Click to expand/collapse this field (Ctrl+E). \nCtrl+Click to expand/collapse including all childs."):(e.className="jsoneditor-invisible",e.title=""),e},i.prototype._createDomTree=function(){var e=this.dom,t=document.createElement("table"),n=document.createElement("tbody");t.style.borderCollapse="collapse",t.className="jsoneditor-values",t.appendChild(n);var i=document.createElement("tr");n.appendChild(i);var o=document.createElement("td");o.className="jsoneditor-tree",i.appendChild(o),e.expand=this._createDomExpandButton(),o.appendChild(e.expand),e.tdExpand=o;var r=document.createElement("td");r.className="jsoneditor-tree",i.appendChild(r),e.field=this._createDomField(),r.appendChild(e.field),e.tdField=r;var s=document.createElement("td");s.className="jsoneditor-tree",i.appendChild(s),"object"!=this.type&&"array"!=this.type&&(s.appendChild(document.createTextNode(":")),s.className="jsoneditor-separator"),e.tdSeparator=s;var a=document.createElement("td");return a.className="jsoneditor-tree",i.appendChild(a),e.value=this._createDomValue(),a.appendChild(e.value),e.tdValue=a,t},i.prototype.onEvent=function(e){var t,n=e.type,i=e.target||e.srcElement,o=this.dom,r=this,a=this._hasChilds();if((i==o.drag||i==o.menu)&&("mouseover"==n?this.editor.highlighter.highlight(this):"mouseout"==n&&this.editor.highlighter.unhighlight()),"click"==n&&i==o.menu){var l=r.editor.highlighter;l.highlight(r),l.lock(),s.addClassName(o.menu,"jsoneditor-selected"),this.showContextMenu(o.menu,function(){s.removeClassName(o.menu,"jsoneditor-selected"),l.unlock(),l.unhighlight()})}if("click"==n&&(i==o.expand||("view"===r.editor.options.mode||"form"===r.editor.options.mode)&&"DIV"===i.nodeName)&&a){var c=e.ctrlKey;this._onExpand(c)}"change"==n&&i==o.checkbox&&(this.dom.value.innerHTML=!this.value,this._getDomValue());var d=o.value;if(i==d)switch(n){case"focus":t=this;break;case"blur":case"change":this._getDomValue(!0),this._updateDomValue(),this.value&&(d.innerHTML=this._escapeHTML(this.value));break;case"input":this._getDomValue(!0),this._updateDomValue();break;case"keydown":case"mousedown":this.editor.selection=this.editor.getSelection();break;case"click":(e.ctrlKey||!this.editable.value)&&s.isUrl(this.value)&&window.open(this.value,"_blank"); +break;case"keyup":this._getDomValue(!0),this._updateDomValue();break;case"cut":case"paste":setTimeout(function(){r._getDomValue(!0),r._updateDomValue()},1)}var h=o.field;if(i==h)switch(n){case"focus":t=this;break;case"blur":case"change":this._getDomField(!0),this._updateDomField(),this.field&&(h.innerHTML=this._escapeHTML(this.field));break;case"input":this._getDomField(!0),this._updateDomField();break;case"keydown":case"mousedown":this.editor.selection=this.editor.getSelection();break;case"keyup":this._getDomField(!0),this._updateDomField();break;case"cut":case"paste":setTimeout(function(){r._getDomField(!0),r._updateDomField()},1)}var u=o.tree;if(i==u.parentNode&&"click"==n&&!e.hasMoved){var p=void 0!=e.offsetX?e.offsetX<24*(this.getLevel()+1):e.pageX0?this.editor.multiselection.nodes:[this],w=b[0],x=b[b.length-1];if(13==u){if(p==this.dom.value)(!this.editable.value||e.ctrlKey)&&s.isUrl(this.value)&&(window.open(this.value,"_blank"),v=!0);else if(p==this.dom.expand){var _=this._hasChilds();if(_){var E=e.ctrlKey;this._onExpand(E),p.focus(),v=!0}}}else if(68==u)f&&y&&(i.onDuplicate(b),v=!0);else if(69==u)f&&(this._onExpand(m),p.focus(),v=!0);else if(77==u&&y)f&&(this.showContextMenu(p),v=!0);else if(46==u&&y)f&&(i.onRemove(b),v=!0);else if(45==u&&y)f&&!m?(this._onInsertBefore(),v=!0):f&&m&&(this._onInsertAfter(),v=!0);else if(35==u){if(g){var C=this._lastNode();C&&C.focus(i.focusElement||this._getElementName(p)),v=!0}}else if(36==u){if(g){var j=this._firstNode();j&&j.focus(i.focusElement||this._getElementName(p)),v=!0}}else if(37==u){if(g&&!m){var S=this._previousElement(p);S&&this.focus(this._getElementName(S)),v=!0}else if(g&&m&&y){if(x.expanded){var k=x.getAppend();o=k?k.nextSibling:void 0}else{var N=x.getDom();o=N.nextSibling}o&&(n=i.getNodeFromTarget(o),r=o.nextSibling,T=i.getNodeFromTarget(r),n&&n instanceof a&&1!=x.parent.childs.length&&T&&T.parent&&(l=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){T.parent.moveBefore(e,T)}),this.focus(i.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:T,oldSelection:l,newSelection:this.editor.getSelection()})))}}else if(38==u)g&&!m?(t=this._previousNode(),t&&(this.editor.deselect(!0),t.focus(i.focusElement||this._getElementName(p))),v=!0):!g&&f&&m&&y?(t=this._previousNode(),t&&(h=this.editor.multiselection,h.start=h.start||this,h.end=t,d=this.editor._findTopLevelNodes(h.start,h.end),this.editor.select(d),t.focus("field")),v=!0):g&&m&&y&&(t=w._previousNode(),t&&t.parent&&(l=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(i.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:t,oldSelection:l,newSelection:this.editor.getSelection()})),v=!0);else if(39==u){if(g&&!m){var A=this._nextElement(p);A&&this.focus(this._getElementName(A)),v=!0}else if(g&&m&&y){N=w.getDom();var O=N.previousSibling;O&&(t=i.getNodeFromTarget(O),t&&t.parent&&t instanceof a&&!t.isVisible()&&(l=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(i.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:t,oldSelection:l,newSelection:this.editor.getSelection()})))}}else if(40==u)if(g&&!m)n=this._nextNode(),n&&(this.editor.deselect(!0),n.focus(i.focusElement||this._getElementName(p))),v=!0;else if(!g&&f&&m&&y)n=this._nextNode(),n&&(h=this.editor.multiselection,h.start=h.start||this,h.end=n,d=this.editor._findTopLevelNodes(h.start,h.end),this.editor.select(d),n.focus("field")),v=!0;else if(g&&m&&y){n=x.expanded?x.append?x.append._nextNode():void 0:x._nextNode();var T=n&&(n._nextNode()||n.parent.append);T&&T.parent&&(l=this.editor.getSelection(),c=x._nextSibling(),b.forEach(function(e){T.parent.moveBefore(e,T)}),this.focus(i.focusElement||this._getElementName(p)),this.editor._onAction("moveNodes",{nodes:b,oldBeforeNode:c,newBeforeNode:T,oldSelection:l,newSelection:this.editor.getSelection()})),v=!0}v&&(e.preventDefault(),e.stopPropagation())},i.prototype._onExpand=function(e){if(e){var t=this.dom.tr.parentNode,n=t.parentNode,i=n.scrollTop;n.removeChild(t)}this.expanded?this.collapse(e):this.expand(e),e&&(n.appendChild(t),n.scrollTop=i)},i.onRemove=function(e){if(!Array.isArray(e))return i.onRemove([e]);if(e&&e.length>0){var t=e[0],n=t.parent,o=t.editor,r=t.getIndex();o.highlighter.unhighlight();var s=o.getSelection();i.blurNodes(e);var a=o.getSelection();e.forEach(function(e){e.parent._remove(e)}),o._onAction("removeNodes",{nodes:e.slice(0),parent:n,index:r,oldSelection:s,newSelection:a})}},i.onDuplicate=function(e){if(!Array.isArray(e))return i.onDuplicate([e]);if(e&&e.length>0){var t=e[e.length-1],n=t.parent,o=t.editor;o.deselect(o.multiselection.nodes);var r=o.getSelection(),s=t,a=e.map(function(e){var t=e.clone();return n.insertAfter(t,s),s=t,t});1===e.length?a[0].focus():o.select(a);var l=o.getSelection();o._onAction("duplicateNodes",{afterNode:t,nodes:a,parent:n,oldSelection:r,newSelection:l})}},i.prototype._onInsertBefore=function(e,t,n){var o=this.editor.getSelection(),r=new i(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:n});r.expand(!0),this.parent.insertBefore(r,this),this.editor.highlighter.unhighlight(),r.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertBeforeNodes",{nodes:[r],beforeNode:this,parent:this.parent,oldSelection:o,newSelection:s})},i.prototype._onInsertAfter=function(e,t,n){var o=this.editor.getSelection(),r=new i(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:n});r.expand(!0),this.parent.insertAfter(r,this),this.editor.highlighter.unhighlight(),r.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertAfterNodes",{nodes:[r],afterNode:this,parent:this.parent,oldSelection:o,newSelection:s})},i.prototype._onAppend=function(e,t,n){var o=this.editor.getSelection(),r=new i(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:n});r.expand(!0),this.parent.appendChild(r),this.editor.highlighter.unhighlight(),r.focus("field");var s=this.editor.getSelection();this.editor._onAction("appendNodes",{nodes:[r],parent:this.parent,oldSelection:o,newSelection:s})},i.prototype._onChangeType=function(e){var t=this.type;if(e!=t){var n=this.editor.getSelection();this.changeType(e);var i=this.editor.getSelection();this.editor._onAction("changeType",{node:this,oldType:t,newType:e,oldSelection:n,newSelection:i})}},i.prototype._onSort=function(e){if(this._hasChilds()){var t="desc"==e?-1:1,n="array"==this.type?"value":"field";this.hideChilds();var i=this.childs,o=this.sort;this.childs=this.childs.concat(),this.childs.sort(function(e,i){return e[n]>i[n]?t:e[n]/g,">").replace(/ /g,"  ").replace(/^ /," ").replace(/ $/," "),n=JSON.stringify(t),i=n.substring(1,n.length-1);return this.editor.options.escapeUnicode===!0&&(i=s.escapeUnicodeChars(i)),i},i.prototype._unescapeHTML=function(e){var t='"'+this._escapeJSON(e)+'"',n=s.parse(t);return n.replace(/</g,"<").replace(/>/g,">").replace(/ |\u00A0/g," ").replace(/&/g,"&")},i.prototype._escapeJSON=function(e){for(var t="",n=0;n2&&E.push("'"+this.terminals_[w]+"'");var j="";j=this.lexer.showPosition?"Parse error on line "+(c+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+E.join(", ")+", got '"+this.terminals_[m]+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(j,{text:this.lexer.match,token:this.terminals_[m]||m,line:this.lexer.yylineno,loc:f,expected:E})}if(3==h){if(m==p)throw new Error(j||"Parsing halted.");d=this.lexer.yyleng,l=this.lexer.yytext,c=this.lexer.yylineno,f=this.lexer.yylloc,m=n()}for(;;){if(u.toString()in a[v])break;if(0==v)throw new Error(j||"Parsing halted.");t(1),v=o[o.length-1]}g=m,m=u,v=o[o.length-1],y=a[v]&&a[v][u],h=3}if(y[0]instanceof Array&&y.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+m);switch(y[0]){case 1:o.push(m),r.push(this.lexer.yytext),s.push(this.lexer.yylloc),o.push(y[1]),m=null,g?(m=g,g=null):(d=this.lexer.yyleng,l=this.lexer.yytext,c=this.lexer.yylineno,f=this.lexer.yylloc,h>0&&h--);break;case 2:if(x=this.productions_[y[1]][1],C.$=r[r.length-x],C._$={first_line:s[s.length-(x||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(x||1)].first_column,last_column:s[s.length-1].last_column},b=this.performAction.call(C,l,d,c,this.yy,y[1],r,s),"undefined"!=typeof b)return b;x&&(o=o.slice(0,-1*x*2),r=r.slice(0,-1*x),s=s.slice(0,-1*x)),o.push(this.productions_[y[1]][0]),r.push(C.$),s.push(C._$),_=a[o[o.length-2]][o[o.length-1]],o.push(_);break;case 3:return!0}}return!0}},t=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parseError)throw new Error(e);this.yy.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.match+=e,this.matched+=e;var t=e.match(/\n/);return t&&this.yylineno++,this._input=this._input.slice(1),e},unput:function(e){return this._input=e+this._input,this},more:function(){return this._more=!0,this},less:function(e){this._input=this.match.slice(e)+this._input},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,n,i,o;this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),s=0;st[0].length)||(t=n,i=s,this.options.flex));s++);return t?(o=t[0].match(/\n.*/g),o&&(this.yylineno+=o.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:o?o[o.length-1].length-1:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,r[i],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e?e:void 0):""===this._input?this.EOF:void this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return"undefined"!=typeof e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,n,i){switch(n){case 0:break;case 1:return 6;case 2:return t.yytext=t.yytext.substr(1,t.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return"INVALID"}},e.rules=[/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt\/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/],e.conditions={INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}},e}();return e.lexer=t,e}();t.parser=i,t.parse=i.parse.bind(i)},function(e,t,n){var i=n(!function(){var e=new Error('Cannot find module "brace"');throw e.code="MODULE_NOT_FOUND",e}());n(14),n(15),n(13),e.exports=i},function(e,t,n){function i(e){function t(e){this.editor=e,this.dom={}}return t.prototype=new e,t.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;this._updateEditability();var t=document.createElement("tr");if(t.node=this,e.tr=t,this.editable.field){e.tdDrag=document.createElement("td");var n=document.createElement("td");e.tdMenu=n;var i=document.createElement("button");i.className="jsoneditor-contextmenu",i.title="Click to open the actions menu (Ctrl+M)",e.menu=i,n.appendChild(e.menu)}var o=document.createElement("td"),r=document.createElement("div");return r.innerHTML="(empty)",r.className="jsoneditor-readonly",o.appendChild(r),e.td=o,e.text=r,this.updateDom(),t},t.prototype.updateDom=function(){var e=this.dom,t=e.td;t&&(t.style.paddingLeft=24*this.getLevel()+26+"px");var n=e.text;n&&(n.innerHTML="(empty "+this.parent.type+")");var i=e.tr;this.isVisible()?e.tr.firstChild||(e.tdDrag&&i.appendChild(e.tdDrag),e.tdMenu&&i.appendChild(e.tdMenu),i.appendChild(t)):e.tr.firstChild&&(e.tdDrag&&i.removeChild(e.tdDrag),e.tdMenu&&i.removeChild(e.tdMenu),i.removeChild(t))},t.prototype.isVisible=function(){return 0==this.parent.childs.length},t.prototype.showContextMenu=function(t,n){var i=this,o=e.TYPE_TITLES,s=[{text:"Append",title:"Append a new field with type 'auto' (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-insert",click:function(){i._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:o.auto,click:function(){i._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:o.array,click:function(){i._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:o.object,click:function(){i._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:o.string,click:function(){i._onAppend("","","string")}}]}],a=new r(s,{close:n});a.show(t,this.editor.content)},t.prototype.onEvent=function(e){var t=e.type,n=e.target||e.srcElement,i=this.dom,r=i.menu;if(n==r&&("mouseover"==t?this.editor.highlighter.highlight(this.parent):"mouseout"==t&&this.editor.highlighter.unhighlight()),"click"==t&&n==i.menu){var s=this.editor.highlighter;s.highlight(this.parent),s.lock(),o.addClassName(i.menu,"jsoneditor-selected"),this.showContextMenu(i.menu,function(){o.removeClassName(i.menu,"jsoneditor-selected"),s.unlock(),s.unhighlight()})}"keydown"==t&&this.onKeyDown(e)},t}var o=n(3),r=n(7);e.exports=i},function(e,t,n){ace.define("ace/theme/jsoneditor",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-jsoneditor",t.cssText='.ace-jsoneditor .ace_gutter { background: #ebebeb; color: #333 } .ace-jsoneditor.ace_editor { font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif; line-height: 1.3; } .ace-jsoneditor .ace_print-margin { width: 1px; background: #e8e8e8 } .ace-jsoneditor .ace_scroller { background-color: #FFFFFF } .ace-jsoneditor .ace_text-layer { color: gray } .ace-jsoneditor .ace_variable { color: #1a1a1a } .ace-jsoneditor .ace_cursor { border-left: 2px solid #000000 } .ace-jsoneditor .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #000000 } .ace-jsoneditor .ace_marker-layer .ace_selection { background: lightgray } .ace-jsoneditor.ace_multiselect .ace_selection.ace_start { box-shadow: 0 0 3px 0px #FFFFFF; border-radius: 2px } .ace-jsoneditor .ace_marker-layer .ace_step { background: rgb(255, 255, 0) } .ace-jsoneditor .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid #BFBFBF } .ace-jsoneditor .ace_marker-layer .ace_active-line { background: #FFFBD1 } .ace-jsoneditor .ace_gutter-active-line { background-color : #dcdcdc } .ace-jsoneditor .ace_marker-layer .ace_selected-word { border: 1px solid lightgray } .ace-jsoneditor .ace_invisible { color: #BFBFBF } .ace-jsoneditor .ace_keyword, .ace-jsoneditor .ace_meta, .ace-jsoneditor .ace_support.ace_constant.ace_property-value { color: #AF956F } .ace-jsoneditor .ace_keyword.ace_operator { color: #484848 } .ace-jsoneditor .ace_keyword.ace_other.ace_unit { color: #96DC5F } .ace-jsoneditor .ace_constant.ace_language { color: darkorange } .ace-jsoneditor .ace_constant.ace_numeric { color: red } .ace-jsoneditor .ace_constant.ace_character.ace_entity { color: #BF78CC } .ace-jsoneditor .ace_invalid { color: #FFFFFF; background-color: #FF002A; } .ace-jsoneditor .ace_fold { background-color: #AF956F; border-color: #000000 } .ace-jsoneditor .ace_storage, .ace-jsoneditor .ace_support.ace_class, .ace-jsoneditor .ace_support.ace_function, .ace-jsoneditor .ace_support.ace_other, .ace-jsoneditor .ace_support.ace_type { color: #C52727 } .ace-jsoneditor .ace_string { color: green } .ace-jsoneditor .ace_comment { color: #BCC8BA } .ace-jsoneditor .ace_entity.ace_name.ace_tag, .ace-jsoneditor .ace_entity.ace_other.ace_attribute-name { color: #606060 } .ace-jsoneditor .ace_markup.ace_underline { text-decoration: underline } .ace-jsoneditor .ace_indent-guide { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y }';var i=e("../lib/dom");i.importCssString(t.cssText,t.cssClass)})},function(e,t,n){ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var i=e("../lib/oop"),o=e("./text_highlight_rules").TextHighlightRules,r=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"invalid.illegal",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"invalid.illegal",regex:"\\/\\/.*$"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"},{token:"string",regex:"",next:"start"}]}};i.inherits(r,o),t.JsonHighlightRules=r}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var i=e("../range").Range,o=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),o=n.match(/^(\s*\})/);if(!o)return 0;var r=o[1].length,s=e.findMatchingBracket({row:t,column:r});if(!s||s.row==t)return 0;var a=this.$getIndent(e.getLine(s.row));e.replace(new i(t,0,t,r-1),a)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(o.prototype),t.MatchingBraceOutdent=o}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var i,o=e("../../lib/oop"),r=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,a=e("../../lib/lang"),l=["text","paren.rparen","punctuation.operator"],c=["text","paren.rparen","punctuation.operator","comment"],d={},h=function(e){var t=-1;return e.multiSelect&&(t=e.selection.index,d.rangeCount!=e.multiSelect.rangeCount&&(d={rangeCount:e.multiSelect.rangeCount})),d[t]?i=d[t]:void(i=d[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""})},u=function(e,t,n,i){var o=e.end.row-e.start.row;return{text:n+t+i,selection:[0,e.start.column+1,o,e.end.column+(o?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,o,r){var s=n.getCursorPosition(),l=o.doc.getLine(s.row);if("{"==r){h(n);var c=n.getSelectionRange(),d=o.doc.getTextRange(c);if(""!==d&&"{"!==d&&n.getWrapBehavioursEnabled())return u(c,d,"{","}");if(p.isSaneInsertion(n,o))return/[\]\}\)]/.test(l[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,o,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,o,"{"),{text:"{",selection:[1,1]})}else if("}"==r){h(n);var f=l.substring(s.column,s.column+1);if("}"==f){var m=o.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(null!==m&&p.isAutoInsertedClosing(s,l,r))return p.popAutoInsertedClosing(), +{text:"",selection:[1,1]}}}else{if("\n"==r||"\r\n"==r){h(n);var g="";p.isMaybeInsertedClosing(s,l)&&(g=a.stringRepeat("}",i.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var f=l.substring(s.column,s.column+1);if("}"===f){var v=o.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!v)return null;var y=this.$getIndent(o.getLine(v.row))}else{if(!g)return void p.clearMaybeInsertedClosing();var y=this.$getIndent(l)}var b=y+o.getTabString();return{text:"\n"+b+"\n"+y+g,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,o,r){var s=o.doc.getTextRange(r);if(!r.isMultiLine()&&"{"==s){h(n);var a=o.doc.getLine(r.start.row),l=a.substring(r.end.column,r.end.column+1);if("}"==l)return r.end.column++,r;i.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,i,o){if("("==o){h(n);var r=n.getSelectionRange(),s=i.doc.getTextRange(r);if(""!==s&&n.getWrapBehavioursEnabled())return u(r,s,"(",")");if(p.isSaneInsertion(n,i))return p.recordAutoInsert(n,i,")"),{text:"()",selection:[1,1]}}else if(")"==o){h(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if(")"==c){var d=i.$findOpeningBracket(")",{column:a.column+1,row:a.row});if(null!==d&&p.isAutoInsertedClosing(a,l,o))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&"("==r){h(n);var s=i.doc.getLine(o.start.row),a=s.substring(o.start.column+1,o.start.column+2);if(")"==a)return o.end.column++,o}}),this.add("brackets","insertion",function(e,t,n,i,o){if("["==o){h(n);var r=n.getSelectionRange(),s=i.doc.getTextRange(r);if(""!==s&&n.getWrapBehavioursEnabled())return u(r,s,"[","]");if(p.isSaneInsertion(n,i))return p.recordAutoInsert(n,i,"]"),{text:"[]",selection:[1,1]}}else if("]"==o){h(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if("]"==c){var d=i.$findOpeningBracket("]",{column:a.column+1,row:a.row});if(null!==d&&p.isAutoInsertedClosing(a,l,o))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&"["==r){h(n);var s=i.doc.getLine(o.start.row),a=s.substring(o.start.column+1,o.start.column+2);if("]"==a)return o.end.column++,o}}),this.add("string_dquotes","insertion",function(e,t,n,i,o){if('"'==o||"'"==o){h(n);var r=o,s=n.getSelectionRange(),a=i.doc.getTextRange(s);if(""!==a&&"'"!==a&&'"'!=a&&n.getWrapBehavioursEnabled())return u(s,a,r,r);if(!a){var l=n.getCursorPosition(),c=i.doc.getLine(l.row),d=c.substring(l.column-1,l.column),p=c.substring(l.column,l.column+1),f=i.getTokenAt(l.row,l.column),m=i.getTokenAt(l.row,l.column+1);if("\\"==d&&f&&/escape/.test(f.type))return null;var g,v=f&&/string|escape/.test(f.type),y=!m||/string|escape/.test(m.type);if(p==r)g=v!==y;else{if(v&&!y)return null;if(v&&y)return null;var b=i.$mode.tokenRe;b.lastIndex=0;var w=b.test(d);b.lastIndex=0;var x=b.test(d);if(w||x)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;g=!0}return{text:g?r+r:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,i,o){var r=i.doc.getTextRange(o);if(!o.isMultiLine()&&('"'==r||"'"==r)){h(n);var s=i.doc.getLine(o.start.row),a=s.substring(o.start.column+1,o.start.column+2);if(a==r)return o.end.column++,o}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),i=new s(t,n.row,n.column);if(!this.$matchTokenType(i.getCurrentToken()||"text",l)){var o=new s(t,n.row,n.column+1);if(!this.$matchTokenType(o.getCurrentToken()||"text",l))return!1}return i.stepForward(),i.getCurrentTokenRow()!==n.row||this.$matchTokenType(i.getCurrentToken()||"text",c)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isAutoInsertedClosing(o,r,i.autoInsertedLineEnd[0])||(i.autoInsertedBrackets=0),i.autoInsertedRow=o.row,i.autoInsertedLineEnd=n+r.substr(o.column),i.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var o=e.getCursorPosition(),r=t.doc.getLine(o.row);this.isMaybeInsertedClosing(o,r)||(i.maybeInsertedBrackets=0),i.maybeInsertedRow=o.row,i.maybeInsertedLineStart=r.substr(0,o.column)+n,i.maybeInsertedLineEnd=r.substr(o.column),i.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return i.autoInsertedBrackets>0&&e.row===i.autoInsertedRow&&n===i.autoInsertedLineEnd[0]&&t.substr(e.column)===i.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return i.maybeInsertedBrackets>0&&e.row===i.maybeInsertedRow&&t.substr(e.column)===i.maybeInsertedLineEnd&&t.substr(0,e.column)==i.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){i.autoInsertedLineEnd=i.autoInsertedLineEnd.substr(1),i.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){i&&(i.maybeInsertedBrackets=0,i.maybeInsertedRow=-1)},o.inherits(p,r),t.CstyleBehaviour=p}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var i=e("../../lib/oop"),o=e("../../range").Range,r=e("./fold_mode").FoldMode,s=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};i.inherits(s,r),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var i=e.getLine(n);if(this.singleLineBlockCommentRe.test(i)&&!this.startRegionRe.test(i)&&!this.tripleStarBlockCommentRe.test(i))return"";var o=this._getFoldWidgetBase(e,t,n);return!o&&this.startRegionRe.test(i)?"start":o},this.getFoldWidgetRange=function(e,t,n,i){var o=e.getLine(n);if(this.startRegionRe.test(o))return this.getCommentRegionBlock(e,o,n);var r=o.match(this.foldingStartMarker);if(r){var s=r.index;if(r[1])return this.openingBracketBlock(e,r[1],n,s);var a=e.getCommentFoldRange(n,s+r[0].length,1);return a&&!a.isMultiLine()&&(i?a=this.getSectionRange(e,n):"all"!=t&&(a=null)),a}if("markbegin"!==t){var r=o.match(this.foldingStopMarker);if(r){var s=r.index+r[0].length;return r[1]?this.closingBracketBlock(e,r[1],n,s):e.getCommentFoldRange(n,s,-1)}}},this.getSectionRange=function(e,t){var n=e.getLine(t),i=n.search(/\S/),r=t,s=n.length;t+=1;for(var a=t,l=e.getLength();++tc)break;var d=this.getFoldWidgetRange(e,"all",t);if(d){if(d.start.row<=r)break;if(d.isMultiLine())t=d.end.row;else if(i==c)break}a=t}}return new o(r,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,n){for(var i=t.search(/\s*$/),r=e.getLength(),s=n,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++ns?new o(s,i,d,t.length):void 0}}.call(s.prototype)}),ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/worker/worker_client"],function(e,t,i){"use strict";var o=e("../lib/oop"),r=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,a=e("./matching_brace_outdent").MatchingBraceOutdent,l=e("./behaviour/cstyle").CstyleBehaviour,c=e("./folding/cstyle").FoldMode,d=e("../worker/worker_client").WorkerClient,h=function(){this.HighlightRules=s,this.$outdent=new a,this.$behaviour=new l,this.foldingRules=new c};o.inherits(h,r),function(){this.getNextLineIndent=function(e,t,n){var i=this.$getIndent(t);if("start"==e){var o=t.match(/^.*[\{\(\[]\s*$/);o&&(i+=n)}return i},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new d(["ace"],n(16),"JsonWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/json"}.call(h.prototype),t.Mode=h})},function(e,t,n){ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"],function(e,t,n){"use strict";var i=e("../lib/dom"),o=e("../lib/lang"),r=e("../lib/event"),s=" .ace_search { background-color: #ddd; border: 1px solid #cbcbcb; border-top: 0 none; max-width: 325px; overflow: hidden; margin: 0; padding: 4px; padding-right: 6px; padding-bottom: 0; position: absolute; top: 0px; z-index: 99; white-space: normal; } .ace_search.left { border-left: 0 none; border-radius: 0px 0px 5px 0px; left: 0; } .ace_search.right { border-radius: 0px 0px 0px 5px; border-right: 0 none; right: 0; } .ace_search_form, .ace_replace_form { border-radius: 3px; border: 1px solid #cbcbcb; float: left; margin-bottom: 4px; overflow: hidden; } .ace_search_form.ace_nomatch { outline: 1px solid red; } .ace_search_field { background-color: white; border-right: 1px solid #cbcbcb; border: 0 none; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; float: left; height: 22px; outline: 0; padding: 0 7px; width: 214px; margin: 0; } .ace_searchbtn, .ace_replacebtn { background: #fff; border: 0 none; border-left: 1px solid #dcdcdc; cursor: pointer; float: left; height: 22px; margin: 0; position: relative; } .ace_searchbtn:last-child, .ace_replacebtn:last-child { border-top-right-radius: 3px; border-bottom-right-radius: 3px; } .ace_searchbtn:disabled { background: none; cursor: default; } .ace_searchbtn { background-position: 50% 50%; background-repeat: no-repeat; width: 27px; } .ace_searchbtn.prev { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); } .ace_searchbtn.next { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); } .ace_searchbtn_close { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0; border-radius: 50%; border: 0 none; color: #656565; cursor: pointer; float: right; font: 16px/16px Arial; height: 14px; margin: 5px 1px 9px 5px; padding: 0; text-align: center; width: 14px; } .ace_searchbtn_close:hover { background-color: #656565; background-position: 50% 100%; color: white; } .ace_replacebtn.prev { width: 54px } .ace_replacebtn.next { width: 27px } .ace_button { margin-left: 2px; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -o-user-select: none; -ms-user-select: none; user-select: none; overflow: hidden; opacity: 0.7; border: 1px solid rgba(100,100,100,0.23); padding: 1px; -moz-box-sizing: border-box; box-sizing: border-box; color: black; } .ace_button:hover { background-color: #eee; opacity:1; } .ace_button:active { background-color: #ddd; } .ace_button.checked { border-color: #3399ff; opacity:1; } .ace_search_options{ margin-bottom: 3px; text-align: right; -webkit-user-select: none; -moz-user-select: none; -o-user-select: none; -ms-user-select: none; user-select: none; }",a=e("../keyboard/hash_handler").HashHandler,l=e("../lib/keys");i.importCssString(s,"ace_searchbox");var c=''.replace(/>\s+/g,">"),d=function(e,t,n){var o=i.createElement("div");o.innerHTML=c,this.element=o.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;r.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),r.stopPropagation(e)}),r.addListener(e,"click",function(e){var n=e.target||e.srcElement,i=n.getAttribute("action");i&&t[i]?t[i]():t.$searchBarKb.commands[i]&&t.$searchBarKb.commands[i].exec(t),r.stopPropagation(e)}),r.addCommandKeyListener(e,function(e,n,i){var o=l.keyCodeToString(i),s=t.$searchBarKb.findKeyCommand(n,o);s&&s.exec&&(s.exec(t),r.stopEvent(e))}),this.$onChange=o.delayedCall(function(){t.find(!1,!1)}),r.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),r.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),r.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new a([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new a,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e.searchInput.focus()},"Ctrl-H|Command-Option-F":function(e){e.replaceBox.style.display="",e.replaceInput.focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){i.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),i.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),i.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t,n){var o=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked,preventScroll:n}),r=!o&&this.searchInput.value;i.setCssClass(this.searchBox,"ace_nomatch",r),this.editor._emit("findSearchBox",{match:!r}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var e=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),t=!e&&this.searchInput.value;i.setCssClass(this.searchBox,"ace_nomatch",t),this.editor._emit("findSearchBox",{match:!t}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.find(!1,!1,!0),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(d.prototype),t.SearchBox=d,t.Search=function(e,t){var n=e.searchBox||new d(e);n.show(e.session.getTextRange(),t)}}),function(){ace.acequire(["ace/ext/searchbox"],function(){})}()},function(e,t,n){e.exports.id="ace/mode/json_worker",e.exports.src='"no use strict";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail="";testPath;){var alias=paths[testPath];if("string"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,"/")+(tail||alias.main||alias.name);if(alias===!1)return"";var i=testPath.lastIndexOf("/");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:"error",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf("!")){var chunks=moduleName.split("!");return window.normalizeModule(parentId,chunks[0])+"!"+window.normalizeModule(parentId,chunks[1])}if("."==moduleName.charAt(0)){var base=parentId.split("/").slice(0,-1).join("/");for(moduleName=(base?base+"/":"")+moduleName;-1!==moduleName.indexOf(".")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,"").replace(/\\/\\.\\//,"/").replace(/[^\\/]+\\/\\.\\.\\//,"")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error("worker.js acequire() accepts only (parentId, id) as arguments");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log("unable to load "+id);var path=resolveModuleId(id,window.acequire.tlns);return".js"!=path.slice(-3)&&(path+=".js"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,"string"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),"function"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=["require","exports","module"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case"require":return req;case"exports":return module.exports;case"module":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire("ace/lib/event_emitter").EventEmitter,oop=window.acequire("ace/lib/oop"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:"call",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:"event",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error("Unknown command:"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire("ace/lib/es5-shim"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(acequire,exports){"use strict";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define("ace/range",["require","exports","module"],function(acequire,exports){"use strict";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){"object"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){"object"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define("ace/apply_delta",["require","exports","module"],function(acequire,exports){"use strict";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||"";switch(delta.action){case"insert":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case"remove":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(acequire,exports){"use strict";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){"object"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?"unshift":"push"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),EventEmitter=acequire("./lib/event_emitter").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal("change",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),applyDelta=acequire("./apply_delta").applyDelta,EventEmitter=acequire("./lib/event_emitter").EventEmitter,Range=acequire("./range").Range,Anchor=acequire("./anchor").Anchor,Document=function(textOrLines){this.$lines=[""],0===textOrLines.length?this.$lines=[""]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0==="aaa".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,"\\n").split("\\n")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:"\\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\\r\\n";case"unix":return"\\n";default:return this.$autoNewLine||"\\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return"\\r\\n"==text||"\\r"==text||"\\n"==text},this.getLine=function(row){return this.$lines[row]||""},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||"").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."),this.insertMergedLines(position,["",""])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:"insert",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([""]),column=0):(lines=[""].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:"insert",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:"remove",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:"remove",lines:["",""]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert="insert"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal("change",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(""),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:"insert"==delta.action?"remove":"insert",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define("ace/lib/lang",["require","exports","module"],function(acequire,exports){"use strict";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split("").reverse().join("")},exports.stringRepeat=function(string,count){for(var result="";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,"")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,"")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&"object"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if("object"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}var cons=obj.constructor;if(cons===RegExp)return obj;copy=cons();for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,"\\\\$1")},exports.escapeHTML=function(str){return str.replace(/&/g,"&").replace(/"/g,""").replace(/\'/g,"'").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:"insert",start:data[i],lines:data[i+1]};else var d={action:"remove",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define("ace/mode/json/json_parse",["require","exports","module"],function(){"use strict";var at,ch,text,value,escapee={\'"\':\'"\',"\\\\":"\\\\","/":"/",b:"\\b",f:"\\f",n:"\\n",r:"\\r",t:" "},error=function(m){throw{name:"SyntaxError",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error("Expected \'"+c+"\' instead of \'"+ch+"\'"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string="";for("-"===ch&&(string="-",next("-"));ch>="0"&&"9">=ch;)string+=ch,next();if("."===ch)for(string+=".";next()&&ch>="0"&&"9">=ch;)string+=ch;if("e"===ch||"E"===ch)for(string+=ch,next(),("-"===ch||"+"===ch)&&(string+=ch,next());ch>="0"&&"9">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error("Bad number"),void 0):number},string=function(){var hex,i,uffff,string="";if(\'"\'===ch)for(;next();){if(\'"\'===ch)return next(),string;if("\\\\"===ch)if(next(),"u"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if("string"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error("Bad string")},white=function(){for(;ch&&" ">=ch;)next()},word=function(){switch(ch){case"t":return next("t"),next("r"),next("u"),next("e"),!0;case"f":return next("f"),next("a"),next("l"),next("s"),next("e"),!1;case"n":return next("n"),next("u"),next("l"),next("l"),null}error("Unexpected \'"+ch+"\'")},array=function(){var array=[];if("["===ch){if(next("["),white(),"]"===ch)return next("]"),array;for(;ch;){if(array.push(value()),white(),"]"===ch)return next("]"),array;next(","),white()}}error("Bad array")},object=function(){var key,object={};if("{"===ch){if(next("{"),white(),"}"===ch)return next("}"),object;for(;ch;){if(key=string(),white(),next(":"),Object.hasOwnProperty.call(object,key)&&error(\'Duplicate key "\'+key+\'"\'),object[key]=value(),white(),"}"===ch)return next("}"),object;next(","),white()}}error("Bad object")};return value=function(){switch(white(),ch){case"{":return object();case"[":return array();case\'"\':return string();case"-":return number();default:return ch>="0"&&"9">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=" ",result=value(),white(),ch&&error("Syntax error"),"function"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&"object"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({"":result},""):result}}),ace.define("ace/mode/json_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/json/json_parse"],function(acequire,exports){"use strict";var oop=acequire("../lib/oop"),Mirror=acequire("../worker/mirror").Mirror,parse=acequire("./json/json_parse"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:"error"})}this.sender.emit("annotate",errors)}}.call(JsonWorker.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,"sentinel",{}),"sentinel"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if("function"!=typeof target)throw new TypeError("Function.prototype.bind called on incompatible "+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,"__defineGetter__"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,"XXX"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return"[object Array]"==_toString(obj)});var boxedString=Object("a"),splitString="a"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,thisp=arguments[1],i=-1,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=[],thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError("reduce of empty array with no initial value")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError("reduceRight of empty array with no initial value")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(object,property){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if("object"!=typeof prototype)throw new TypeError("typeof prototype["+typeof prototype+"] != \'object\'");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom="undefined"==typeof document||doesDefinePropertyWork(document.createElement("div"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR="Property description must be an object: ",ERR_NON_OBJECT_TARGET="Object.defineProperty called on non-object: ",ERR_ACCESSORS_NOT_SUPPORTED="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(object,property,descriptor){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if("object"!=typeof descriptor&&"function"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,"value"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,"get")&&defineGetter(object,property,descriptor.get),owns(descriptor,"set")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return"function"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name="";owns(object,name);)name+="?";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError("Object.keys called on a non-object");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=" \\n \\f\\r   ᠎              \\u2028\\u2029";if(!String.prototype.trim||ws.trim()){ws="["+ws+"]";var trimBeginRegexp=RegExp("^"+ws+ws+"*"),trimEndRegexp=RegExp(ws+ws+"*$");String.prototype.trim=function(){return(this+"").replace(trimBeginRegexp,"").replace(trimEndRegexp,"")}}var toObject=function(o){if(null==o)throw new TypeError("can\'t convert "+o+" to object");return Object(o)}});'; }])}); //# sourceMappingURL=jsoneditor-minimalist.map \ No newline at end of file diff --git a/dist/jsoneditor.js b/dist/jsoneditor.js index 2287fdf..7f8794a 100644 --- a/dist/jsoneditor.js +++ b/dist/jsoneditor.js @@ -24,8 +24,8 @@ * Copyright (c) 2011-2016 Jos de Jong, http://jsoneditoronline.org * * @author Jos de Jong, - * @version 5.1.1 - * @date 2016-01-16 + * @version 5.1.2 + * @date 2016-01-21 */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') @@ -1717,6 +1717,7 @@ return /******/ (function(modules) { // webpackBootstrap buttonFormat.onclick = function () { try { me.format(); + me._onChange(); } catch (err) { me._onError(err); @@ -1731,6 +1732,7 @@ return /******/ (function(modules) { // webpackBootstrap buttonCompact.onclick = function () { try { me.compact(); + me._onChange(); } catch (err) { me._onError(err); @@ -1853,9 +1855,11 @@ return /******/ (function(modules) { // webpackBootstrap if (keynum == 220 && event.ctrlKey) { if (event.shiftKey) { // Ctrl+Shift+\ this.compact(); + this._onChange(); } else { // Ctrl+\ this.format(); + this._onChange(); } handled = true; } @@ -2139,26 +2143,23 @@ return /******/ (function(modules) { // webpackBootstrap function next() { return jsString.charAt(i + 1); } function prev() { return jsString.charAt(i - 1); } - // test whether the last non-whitespace character was a brace-open '{' - function prevIsBrace() { - var ii = i - 1; - while (ii >= 0) { - var cc = jsString.charAt(ii); - if (cc === '{') { - return true; - } - else if (cc === ' ' || cc === '\n' || cc === '\r') { // whitespace - ii--; - } - else { - return false; + // get the last parsed non-whitespace character + function lastNonWhitespace () { + var p = chars.length - 1; + + while (p >= 0) { + var pp = chars[p]; + if (pp !== ' ' && pp !== '\n' && pp !== '\r' && pp !== '\t') { // non whitespace + return pp; } + p--; } - return false; + + return ''; } // skip a block comment '/* ... */' - function skipComment () { + function skipBlockComment () { i += 2; while (i < jsString.length && (curr() !== '*' || next() !== '/')) { i++; @@ -2166,6 +2167,14 @@ return /******/ (function(modules) { // webpackBootstrap i += 2; } + // skip a comment '// ...' + function skipComment () { + i += 2; + while (i < jsString.length && (curr() !== '\n')) { + i++; + } + } + // parse single or double quoted string function parseString(quote) { chars.push('"'); @@ -2223,12 +2232,15 @@ return /******/ (function(modules) { // webpackBootstrap var c = curr(); if (c === '/' && next() === '*') { + skipBlockComment(); + } + else if (c === '/' && next() === '/') { skipComment(); } else if (c === '\'' || c === '"') { parseString(c); } - else if (/[a-zA-Z_$]/.test(c) && prevIsBrace()) { + else if (/[a-zA-Z_$]/.test(c) && ['{', ','].indexOf(lastNonWhitespace()) !== -1) { // an unquoted object key (like a in '{a:2}') parseKey(); } @@ -2855,6305 +2867,21 @@ return /******/ (function(modules) { // webpackBootstrap /* 4 */ /***/ function(module, exports, __webpack_require__) { - var require;var require;/* WEBPACK VAR INJECTION */(function(global) {(function(f){if(true){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Ajv = f()}})(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 require(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;o= 0x80 (not a basic code point)', - 'invalid-input': 'Invalid input' - }, - - /** Convenience shortcuts */ - baseMinusTMin = base - tMin, - floor = Math.floor, - stringFromCharCode = String.fromCharCode, - - /** Temporary variable */ - key; - - /*--------------------------------------------------------------------------*/ - - /** - * A generic error utility function. - * @private - * @param {String} type The error type. - * @returns {Error} Throws a `RangeError` with the applicable error message. - */ - function error(type) { - throw new RangeError(errors[type]); - } - - /** - * A generic `Array#map` utility function. - * @private - * @param {Array} array The array to iterate over. - * @param {Function} callback The function that gets called for every array - * item. - * @returns {Array} A new array of values returned by the callback function. - */ - function map(array, fn) { - var length = array.length; - var result = []; - while (length--) { - result[length] = fn(array[length]); - } - return result; - } - - /** - * A simple `Array#map`-like wrapper to work with domain name strings or email - * addresses. - * @private - * @param {String} domain The domain name or email address. - * @param {Function} callback The function that gets called for every - * character. - * @returns {Array} A new string of characters returned by the callback - * function. - */ - function mapDomain(string, fn) { - var parts = string.split('@'); - var result = ''; - if (parts.length > 1) { - // In email addresses, only the domain name should be punycoded. Leave - // the local part (i.e. everything up to `@`) intact. - result = parts[0] + '@'; - string = parts[1]; - } - // Avoid `split(regex)` for IE8 compatibility. See #17. - string = string.replace(regexSeparators, '\x2E'); - var labels = string.split('.'); - var encoded = map(labels, fn).join('.'); - return result + encoded; - } - - /** - * Creates an array containing the numeric code points of each Unicode - * character in the string. While JavaScript uses UCS-2 internally, - * this function will convert a pair of surrogate halves (each of which - * UCS-2 exposes as separate characters) into a single code point, - * matching UTF-16. - * @see `punycode.ucs2.encode` - * @see - * @memberOf punycode.ucs2 - * @name decode - * @param {String} string The Unicode input string (UCS-2). - * @returns {Array} The new array of code points. - */ - function ucs2decode(string) { - var output = [], - counter = 0, - length = string.length, - value, - extra; - while (counter < length) { - value = string.charCodeAt(counter++); - if (value >= 0xD800 && value <= 0xDBFF && counter < length) { - // high surrogate, and there is a next character - extra = string.charCodeAt(counter++); - if ((extra & 0xFC00) == 0xDC00) { // low surrogate - output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); - } else { - // unmatched surrogate; only append this code unit, in case the next - // code unit is the high surrogate of a surrogate pair - output.push(value); - counter--; - } - } else { - output.push(value); - } - } - return output; - } - - /** - * Creates a string based on an array of numeric code points. - * @see `punycode.ucs2.decode` - * @memberOf punycode.ucs2 - * @name encode - * @param {Array} codePoints The array of numeric code points. - * @returns {String} The new Unicode string (UCS-2). - */ - function ucs2encode(array) { - return map(array, function(value) { - var output = ''; - if (value > 0xFFFF) { - value -= 0x10000; - output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); - value = 0xDC00 | value & 0x3FF; - } - output += stringFromCharCode(value); - return output; - }).join(''); - } - - /** - * Converts a basic code point into a digit/integer. - * @see `digitToBasic()` - * @private - * @param {Number} codePoint The basic numeric code point value. - * @returns {Number} The numeric value of a basic code point (for use in - * representing integers) in the range `0` to `base - 1`, or `base` if - * the code point does not represent a value. - */ - function basicToDigit(codePoint) { - if (codePoint - 48 < 10) { - return codePoint - 22; - } - if (codePoint - 65 < 26) { - return codePoint - 65; - } - if (codePoint - 97 < 26) { - return codePoint - 97; - } - return base; - } - - /** - * Converts a digit/integer into a basic code point. - * @see `basicToDigit()` - * @private - * @param {Number} digit The numeric value of a basic code point. - * @returns {Number} The basic code point whose value (when used for - * representing integers) is `digit`, which needs to be in the range - * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is - * used; else, the lowercase form is used. The behavior is undefined - * if `flag` is non-zero and `digit` has no uppercase form. - */ - function digitToBasic(digit, flag) { - // 0..25 map to ASCII a..z or A..Z - // 26..35 map to ASCII 0..9 - return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); - } - - /** - * Bias adaptation function as per section 3.4 of RFC 3492. - * https://tools.ietf.org/html/rfc3492#section-3.4 - * @private - */ - function adapt(delta, numPoints, firstTime) { - var k = 0; - delta = firstTime ? floor(delta / damp) : delta >> 1; - delta += floor(delta / numPoints); - for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { - delta = floor(delta / baseMinusTMin); - } - return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); - } - - /** - * Converts a Punycode string of ASCII-only symbols to a string of Unicode - * symbols. - * @memberOf punycode - * @param {String} input The Punycode string of ASCII-only symbols. - * @returns {String} The resulting string of Unicode symbols. - */ - function decode(input) { - // Don't use UCS-2 - var output = [], - inputLength = input.length, - out, - i = 0, - n = initialN, - bias = initialBias, - basic, - j, - index, - oldi, - w, - k, - digit, - t, - /** Cached calculation results */ - baseMinusT; - - // Handle the basic code points: let `basic` be the number of input code - // points before the last delimiter, or `0` if there is none, then copy - // the first basic code points to the output. - - basic = input.lastIndexOf(delimiter); - if (basic < 0) { - basic = 0; - } - - for (j = 0; j < basic; ++j) { - // if it's not a basic code point - if (input.charCodeAt(j) >= 0x80) { - error('not-basic'); - } - output.push(input.charCodeAt(j)); - } - - // Main decoding loop: start just after the last delimiter if any basic code - // points were copied; start at the beginning otherwise. - - for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { - - // `index` is the index of the next character to be consumed. - // Decode a generalized variable-length integer into `delta`, - // which gets added to `i`. The overflow checking is easier - // if we increase `i` as we go, then subtract off its starting - // value at the end to obtain `delta`. - for (oldi = i, w = 1, k = base; /* no condition */; k += base) { - - if (index >= inputLength) { - error('invalid-input'); - } - - digit = basicToDigit(input.charCodeAt(index++)); - - if (digit >= base || digit > floor((maxInt - i) / w)) { - error('overflow'); - } - - i += digit * w; - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - - if (digit < t) { - break; - } - - baseMinusT = base - t; - if (w > floor(maxInt / baseMinusT)) { - error('overflow'); - } - - w *= baseMinusT; - - } - - out = output.length + 1; - bias = adapt(i - oldi, out, oldi == 0); - - // `i` was supposed to wrap around from `out` to `0`, - // incrementing `n` each time, so we'll fix that now: - if (floor(i / out) > maxInt - n) { - error('overflow'); - } - - n += floor(i / out); - i %= out; - - // Insert `n` at position `i` of the output - output.splice(i++, 0, n); - - } - - return ucs2encode(output); - } - - /** - * Converts a string of Unicode symbols (e.g. a domain name label) to a - * Punycode string of ASCII-only symbols. - * @memberOf punycode - * @param {String} input The string of Unicode symbols. - * @returns {String} The resulting Punycode string of ASCII-only symbols. - */ - function encode(input) { - var n, - delta, - handledCPCount, - basicLength, - bias, - j, - m, - q, - k, - t, - currentValue, - output = [], - /** `inputLength` will hold the number of code points in `input`. */ - inputLength, - /** Cached calculation results */ - handledCPCountPlusOne, - baseMinusT, - qMinusT; - - // Convert the input in UCS-2 to Unicode - input = ucs2decode(input); - - // Cache the length - inputLength = input.length; - - // Initialize the state - n = initialN; - delta = 0; - bias = initialBias; - - // Handle the basic code points - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue < 0x80) { - output.push(stringFromCharCode(currentValue)); - } - } - - handledCPCount = basicLength = output.length; - - // `handledCPCount` is the number of code points that have been handled; - // `basicLength` is the number of basic code points. - - // Finish the basic string - if it is not empty - with a delimiter - if (basicLength) { - output.push(delimiter); - } - - // Main encoding loop: - while (handledCPCount < inputLength) { - - // All non-basic code points < n have been handled already. Find the next - // larger one: - for (m = maxInt, j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue >= n && currentValue < m) { - m = currentValue; - } - } - - // Increase `delta` enough to advance the decoder's state to , - // but guard against overflow - handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { - error('overflow'); - } - - delta += (m - n) * handledCPCountPlusOne; - n = m; - - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - - if (currentValue < n && ++delta > maxInt) { - error('overflow'); - } - - if (currentValue == n) { - // Represent delta as a generalized variable-length integer - for (q = delta, k = base; /* no condition */; k += base) { - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - if (q < t) { - break; - } - qMinusT = q - t; - baseMinusT = base - t; - output.push( - stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) - ); - q = floor(qMinusT / baseMinusT); - } - - output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); - delta = 0; - ++handledCPCount; - } - } - - ++delta; - ++n; - - } - return output.join(''); - } - - /** - * Converts a Punycode string representing a domain name or an email address - * to Unicode. Only the Punycoded parts of the input will be converted, i.e. - * it doesn't matter if you call it on a string that has already been - * converted to Unicode. - * @memberOf punycode - * @param {String} input The Punycoded domain name or email address to - * convert to Unicode. - * @returns {String} The Unicode representation of the given Punycode - * string. - */ - function toUnicode(input) { - return mapDomain(input, function(string) { - return regexPunycode.test(string) - ? decode(string.slice(4).toLowerCase()) - : string; - }); - } - - /** - * Converts a Unicode string representing a domain name or an email address to - * Punycode. Only the non-ASCII parts of the domain name will be converted, - * i.e. it doesn't matter if you call it with a domain that's already in - * ASCII. - * @memberOf punycode - * @param {String} input The domain name or email address to convert, as a - * Unicode string. - * @returns {String} The Punycode representation of the given domain name or - * email address. - */ - function toASCII(input) { - return mapDomain(input, function(string) { - return regexNonASCII.test(string) - ? 'xn--' + encode(string) - : string; - }); - } - - /*--------------------------------------------------------------------------*/ - - /** Define the public API */ - punycode = { - /** - * A string representing the current Punycode.js version number. - * @memberOf punycode - * @type String - */ - 'version': '1.3.2', - /** - * An object of methods to convert from JavaScript's internal character - * representation (UCS-2) to Unicode code points, and back. - * @see - * @memberOf punycode - * @type Object - */ - 'ucs2': { - 'decode': ucs2decode, - 'encode': ucs2encode - }, - 'decode': decode, - 'encode': encode, - 'toASCII': toASCII, - 'toUnicode': toUnicode - }; - - /** Expose `punycode` */ - // Some AMD build optimizers, like r.js, check for specific condition patterns - // like the following: - if ( - typeof define == 'function' && - typeof define.amd == 'object' && - define.amd - ) { - define('punycode', function() { - return punycode; - }); - } else if (freeExports && freeModule) { - if (module.exports == freeExports) { - // in Node.js, io.js, or RingoJS v0.8.0+ - freeModule.exports = punycode; - } else { - // in Narwhal or RingoJS v0.7.0- - for (key in punycode) { - punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); - } - } - } else { - // in Rhino or a web browser - root.punycode = punycode; - } - - }(this)); - - }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - },{}],2:[function(require,module,exports){ - // Copyright Joyent, Inc. and other Node contributors. - // - // Permission is hereby granted, free of charge, to any person obtaining a - // copy of this software and associated documentation files (the - // "Software"), to deal in the Software without restriction, including - // without limitation the rights to use, copy, modify, merge, publish, - // distribute, sublicense, and/or sell copies of the Software, and to permit - // persons to whom the Software is furnished to do so, subject to the - // following conditions: - // - // The above copyright notice and this permission notice shall be included - // in all copies or substantial portions of the Software. - // - // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - // USE OR OTHER DEALINGS IN THE SOFTWARE. - 'use strict'; - // If obj.hasOwnProperty has been overridden, then calling - // obj.hasOwnProperty(prop) will break. - // See: https://github.com/joyent/node/issues/1707 - function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); - } - - module.exports = function(qs, sep, eq, options) { - sep = sep || '&'; - eq = eq || '='; - var obj = {}; - - if (typeof qs !== 'string' || qs.length === 0) { - return obj; - } - - var regexp = /\+/g; - qs = qs.split(sep); - - var maxKeys = 1000; - if (options && typeof options.maxKeys === 'number') { - maxKeys = options.maxKeys; - } - - var len = qs.length; - // maxKeys <= 0 means that we should not limit keys count - if (maxKeys > 0 && len > maxKeys) { - len = maxKeys; - } - - for (var i = 0; i < len; ++i) { - var x = qs[i].replace(regexp, '%20'), - idx = x.indexOf(eq), - kstr, vstr, k, v; - - if (idx >= 0) { - kstr = x.substr(0, idx); - vstr = x.substr(idx + 1); - } else { - kstr = x; - vstr = ''; - } - - k = decodeURIComponent(kstr); - v = decodeURIComponent(vstr); - - if (!hasOwnProperty(obj, k)) { - obj[k] = v; - } else if (isArray(obj[k])) { - obj[k].push(v); - } else { - obj[k] = [obj[k], v]; - } - } - - return obj; - }; - - var isArray = Array.isArray || function (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; - }; - - },{}],3:[function(require,module,exports){ - // Copyright Joyent, Inc. and other Node contributors. - // - // Permission is hereby granted, free of charge, to any person obtaining a - // copy of this software and associated documentation files (the - // "Software"), to deal in the Software without restriction, including - // without limitation the rights to use, copy, modify, merge, publish, - // distribute, sublicense, and/or sell copies of the Software, and to permit - // persons to whom the Software is furnished to do so, subject to the - // following conditions: - // - // The above copyright notice and this permission notice shall be included - // in all copies or substantial portions of the Software. - // - // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - // USE OR OTHER DEALINGS IN THE SOFTWARE. - - 'use strict'; - - var stringifyPrimitive = function(v) { - switch (typeof v) { - case 'string': - return v; - - case 'boolean': - return v ? 'true' : 'false'; - - case 'number': - return isFinite(v) ? v : ''; - - default: - return ''; - } - }; - - module.exports = function(obj, sep, eq, name) { - sep = sep || '&'; - eq = eq || '='; - if (obj === null) { - obj = undefined; - } - - if (typeof obj === 'object') { - return map(objectKeys(obj), function(k) { - var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; - if (isArray(obj[k])) { - return map(obj[k], function(v) { - return ks + encodeURIComponent(stringifyPrimitive(v)); - }).join(sep); - } else { - return ks + encodeURIComponent(stringifyPrimitive(obj[k])); - } - }).join(sep); - - } - - if (!name) return ''; - return encodeURIComponent(stringifyPrimitive(name)) + eq + - encodeURIComponent(stringifyPrimitive(obj)); - }; - - var isArray = Array.isArray || function (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; - }; - - function map (xs, f) { - if (xs.map) return xs.map(f); - var res = []; - for (var i = 0; i < xs.length; i++) { - res.push(f(xs[i], i)); - } - return res; - } - - var objectKeys = Object.keys || function (obj) { - var res = []; - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key); - } - return res; - }; - - },{}],4:[function(require,module,exports){ - 'use strict'; - - exports.decode = exports.parse = require('./decode'); - exports.encode = exports.stringify = require('./encode'); - - },{"./decode":2,"./encode":3}],5:[function(require,module,exports){ - // Copyright Joyent, Inc. and other Node contributors. - // - // Permission is hereby granted, free of charge, to any person obtaining a - // copy of this software and associated documentation files (the - // "Software"), to deal in the Software without restriction, including - // without limitation the rights to use, copy, modify, merge, publish, - // distribute, sublicense, and/or sell copies of the Software, and to permit - // persons to whom the Software is furnished to do so, subject to the - // following conditions: - // - // The above copyright notice and this permission notice shall be included - // in all copies or substantial portions of the Software. - // - // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - // USE OR OTHER DEALINGS IN THE SOFTWARE. - - 'use strict'; - - var punycode = require('punycode'); - var util = require('./util'); - - exports.parse = urlParse; - exports.resolve = urlResolve; - exports.resolveObject = urlResolveObject; - exports.format = urlFormat; - - exports.Url = Url; - - function Url() { - this.protocol = null; - this.slashes = null; - this.auth = null; - this.host = null; - this.port = null; - this.hostname = null; - this.hash = null; - this.search = null; - this.query = null; - this.pathname = null; - this.path = null; - this.href = null; - } - - // Reference: RFC 3986, RFC 1808, RFC 2396 - - // define these here so at least they only have to be - // compiled once on the first module load. - var protocolPattern = /^([a-z0-9.+-]+:)/i, - portPattern = /:[0-9]*$/, - - // Special case for a simple path URL - simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/, - - // RFC 2396: characters reserved for delimiting URLs. - // We actually just auto-escape these. - delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'], - - // RFC 2396: characters not allowed for various reasons. - unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), - - // Allowed by RFCs, but cause of XSS attacks. Always escape these. - autoEscape = ['\''].concat(unwise), - // Characters that are never ever allowed in a hostname. - // Note that any invalid chars are also handled, but these - // are the ones that are *expected* to be seen, so we fast-path - // them. - nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), - hostEndingChars = ['/', '?', '#'], - hostnameMaxLen = 255, - hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/, - hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, - // protocols that can allow "unsafe" and "unwise" chars. - unsafeProtocol = { - 'javascript': true, - 'javascript:': true - }, - // protocols that never have a hostname. - hostlessProtocol = { - 'javascript': true, - 'javascript:': true - }, - // protocols that always contain a // bit. - slashedProtocol = { - 'http': true, - 'https': true, - 'ftp': true, - 'gopher': true, - 'file': true, - 'http:': true, - 'https:': true, - 'ftp:': true, - 'gopher:': true, - 'file:': true - }, - querystring = require('querystring'); - - function urlParse(url, parseQueryString, slashesDenoteHost) { - if (url && util.isObject(url) && url instanceof Url) return url; - - var u = new Url; - u.parse(url, parseQueryString, slashesDenoteHost); - return u; - } - - Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) { - if (!util.isString(url)) { - throw new TypeError("Parameter 'url' must be a string, not " + typeof url); - } - - // Copy chrome, IE, opera backslash-handling behavior. - // Back slashes before the query string get converted to forward slashes - // See: https://code.google.com/p/chromium/issues/detail?id=25916 - var queryIndex = url.indexOf('?'), - splitter = - (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#', - uSplit = url.split(splitter), - slashRegex = /\\/g; - uSplit[0] = uSplit[0].replace(slashRegex, '/'); - url = uSplit.join(splitter); - - var rest = url; - - // trim before proceeding. - // This is to support parse stuff like " http://foo.com \n" - rest = rest.trim(); - - if (!slashesDenoteHost && url.split('#').length === 1) { - // Try fast path regexp - var simplePath = simplePathPattern.exec(rest); - if (simplePath) { - this.path = rest; - this.href = rest; - this.pathname = simplePath[1]; - if (simplePath[2]) { - this.search = simplePath[2]; - if (parseQueryString) { - this.query = querystring.parse(this.search.substr(1)); - } else { - this.query = this.search.substr(1); - } - } else if (parseQueryString) { - this.search = ''; - this.query = {}; - } - return this; - } - } - - var proto = protocolPattern.exec(rest); - if (proto) { - proto = proto[0]; - var lowerProto = proto.toLowerCase(); - this.protocol = lowerProto; - rest = rest.substr(proto.length); - } - - // figure out if it's got a host - // user@server is *always* interpreted as a hostname, and url - // resolution will treat //foo/bar as host=foo,path=bar because that's - // how the browser resolves relative URLs. - if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { - var slashes = rest.substr(0, 2) === '//'; - if (slashes && !(proto && hostlessProtocol[proto])) { - rest = rest.substr(2); - this.slashes = true; - } - } - - if (!hostlessProtocol[proto] && - (slashes || (proto && !slashedProtocol[proto]))) { - - // there's a hostname. - // the first instance of /, ?, ;, or # ends the host. - // - // If there is an @ in the hostname, then non-host chars *are* allowed - // to the left of the last @ sign, unless some host-ending character - // comes *before* the @-sign. - // URLs are obnoxious. - // - // ex: - // http://a@b@c/ => user:a@b host:c - // http://a@b?@c => user:a host:c path:/?@c - - // v0.12 TODO(isaacs): This is not quite how Chrome does things. - // Review our test case against browsers more comprehensively. - - // find the first instance of any hostEndingChars - var hostEnd = -1; - for (var i = 0; i < hostEndingChars.length; i++) { - var hec = rest.indexOf(hostEndingChars[i]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) - hostEnd = hec; - } - - // at this point, either we have an explicit point where the - // auth portion cannot go past, or the last @ char is the decider. - var auth, atSign; - if (hostEnd === -1) { - // atSign can be anywhere. - atSign = rest.lastIndexOf('@'); - } else { - // atSign must be in auth portion. - // http://a@b/c@d => host:b auth:a path:/c@d - atSign = rest.lastIndexOf('@', hostEnd); - } - - // Now we have a portion which is definitely the auth. - // Pull that off. - if (atSign !== -1) { - auth = rest.slice(0, atSign); - rest = rest.slice(atSign + 1); - this.auth = decodeURIComponent(auth); - } - - // the host is the remaining to the left of the first non-host char - hostEnd = -1; - for (var i = 0; i < nonHostChars.length; i++) { - var hec = rest.indexOf(nonHostChars[i]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) - hostEnd = hec; - } - // if we still have not hit it, then the entire thing is a host. - if (hostEnd === -1) - hostEnd = rest.length; - - this.host = rest.slice(0, hostEnd); - rest = rest.slice(hostEnd); - - // pull out port. - this.parseHost(); - - // we've indicated that there is a hostname, - // so even if it's empty, it has to be present. - this.hostname = this.hostname || ''; - - // if hostname begins with [ and ends with ] - // assume that it's an IPv6 address. - var ipv6Hostname = this.hostname[0] === '[' && - this.hostname[this.hostname.length - 1] === ']'; - - // validate a little. - if (!ipv6Hostname) { - var hostparts = this.hostname.split(/\./); - for (var i = 0, l = hostparts.length; i < l; i++) { - var part = hostparts[i]; - if (!part) continue; - if (!part.match(hostnamePartPattern)) { - var newpart = ''; - for (var j = 0, k = part.length; j < k; j++) { - if (part.charCodeAt(j) > 127) { - // we replace non-ASCII char with a temporary placeholder - // we need this to make sure size of hostname is not - // broken by replacing non-ASCII by nothing - newpart += 'x'; - } else { - newpart += part[j]; - } - } - // we test again with ASCII char only - if (!newpart.match(hostnamePartPattern)) { - var validParts = hostparts.slice(0, i); - var notHost = hostparts.slice(i + 1); - var bit = part.match(hostnamePartStart); - if (bit) { - validParts.push(bit[1]); - notHost.unshift(bit[2]); - } - if (notHost.length) { - rest = '/' + notHost.join('.') + rest; - } - this.hostname = validParts.join('.'); - break; - } - } - } - } - - if (this.hostname.length > hostnameMaxLen) { - this.hostname = ''; - } else { - // hostnames are always lower case. - this.hostname = this.hostname.toLowerCase(); - } - - if (!ipv6Hostname) { - // IDNA Support: Returns a punycoded representation of "domain". - // It only converts parts of the domain name that - // have non-ASCII characters, i.e. it doesn't matter if - // you call it with a domain that already is ASCII-only. - this.hostname = punycode.toASCII(this.hostname); - } - - var p = this.port ? ':' + this.port : ''; - var h = this.hostname || ''; - this.host = h + p; - this.href += this.host; - - // strip [ and ] from the hostname - // the host field still retains them, though - if (ipv6Hostname) { - this.hostname = this.hostname.substr(1, this.hostname.length - 2); - if (rest[0] !== '/') { - rest = '/' + rest; - } - } - } - - // now rest is set to the post-host stuff. - // chop off any delim chars. - if (!unsafeProtocol[lowerProto]) { - - // First, make 100% sure that any "autoEscape" chars get - // escaped, even if encodeURIComponent doesn't think they - // need to be. - for (var i = 0, l = autoEscape.length; i < l; i++) { - var ae = autoEscape[i]; - if (rest.indexOf(ae) === -1) - continue; - var esc = encodeURIComponent(ae); - if (esc === ae) { - esc = escape(ae); - } - rest = rest.split(ae).join(esc); - } - } - - - // chop off from the tail first. - var hash = rest.indexOf('#'); - if (hash !== -1) { - // got a fragment string. - this.hash = rest.substr(hash); - rest = rest.slice(0, hash); - } - var qm = rest.indexOf('?'); - if (qm !== -1) { - this.search = rest.substr(qm); - this.query = rest.substr(qm + 1); - if (parseQueryString) { - this.query = querystring.parse(this.query); - } - rest = rest.slice(0, qm); - } else if (parseQueryString) { - // no query string, but parseQueryString still requested - this.search = ''; - this.query = {}; - } - if (rest) this.pathname = rest; - if (slashedProtocol[lowerProto] && - this.hostname && !this.pathname) { - this.pathname = '/'; - } - - //to support http.request - if (this.pathname || this.search) { - var p = this.pathname || ''; - var s = this.search || ''; - this.path = p + s; - } - - // finally, reconstruct the href based on what has been validated. - this.href = this.format(); - return this; - }; - - // format a parsed object into a url string - function urlFormat(obj) { - // ensure it's an object, and not a string url. - // If it's an obj, this is a no-op. - // this way, you can call url_format() on strings - // to clean up potentially wonky urls. - if (util.isString(obj)) obj = urlParse(obj); - if (!(obj instanceof Url)) return Url.prototype.format.call(obj); - return obj.format(); - } - - Url.prototype.format = function() { - var auth = this.auth || ''; - if (auth) { - auth = encodeURIComponent(auth); - auth = auth.replace(/%3A/i, ':'); - auth += '@'; - } - - var protocol = this.protocol || '', - pathname = this.pathname || '', - hash = this.hash || '', - host = false, - query = ''; - - if (this.host) { - host = auth + this.host; - } else if (this.hostname) { - host = auth + (this.hostname.indexOf(':') === -1 ? - this.hostname : - '[' + this.hostname + ']'); - if (this.port) { - host += ':' + this.port; - } - } - - if (this.query && - util.isObject(this.query) && - Object.keys(this.query).length) { - query = querystring.stringify(this.query); - } - - var search = this.search || (query && ('?' + query)) || ''; - - if (protocol && protocol.substr(-1) !== ':') protocol += ':'; - - // only the slashedProtocols get the //. Not mailto:, xmpp:, etc. - // unless they had them to begin with. - if (this.slashes || - (!protocol || slashedProtocol[protocol]) && host !== false) { - host = '//' + (host || ''); - if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; - } else if (!host) { - host = ''; - } - - if (hash && hash.charAt(0) !== '#') hash = '#' + hash; - if (search && search.charAt(0) !== '?') search = '?' + search; - - pathname = pathname.replace(/[?#]/g, function(match) { - return encodeURIComponent(match); - }); - search = search.replace('#', '%23'); - - return protocol + host + pathname + search + hash; - }; - - function urlResolve(source, relative) { - return urlParse(source, false, true).resolve(relative); - } - - Url.prototype.resolve = function(relative) { - return this.resolveObject(urlParse(relative, false, true)).format(); - }; - - function urlResolveObject(source, relative) { - if (!source) return relative; - return urlParse(source, false, true).resolveObject(relative); - } - - Url.prototype.resolveObject = function(relative) { - if (util.isString(relative)) { - var rel = new Url(); - rel.parse(relative, false, true); - relative = rel; - } - - var result = new Url(); - var tkeys = Object.keys(this); - for (var tk = 0; tk < tkeys.length; tk++) { - var tkey = tkeys[tk]; - result[tkey] = this[tkey]; - } - - // hash is always overridden, no matter what. - // even href="" will remove it. - result.hash = relative.hash; - - // if the relative url is empty, then there's nothing left to do here. - if (relative.href === '') { - result.href = result.format(); - return result; - } - - // hrefs like //foo/bar always cut to the protocol. - if (relative.slashes && !relative.protocol) { - // take everything except the protocol from relative - var rkeys = Object.keys(relative); - for (var rk = 0; rk < rkeys.length; rk++) { - var rkey = rkeys[rk]; - if (rkey !== 'protocol') - result[rkey] = relative[rkey]; - } - - //urlParse appends trailing / to urls like http://www.example.com - if (slashedProtocol[result.protocol] && - result.hostname && !result.pathname) { - result.path = result.pathname = '/'; - } - - result.href = result.format(); - return result; - } - - if (relative.protocol && relative.protocol !== result.protocol) { - // if it's a known url protocol, then changing - // the protocol does weird things - // first, if it's not file:, then we MUST have a host, - // and if there was a path - // to begin with, then we MUST have a path. - // if it is file:, then the host is dropped, - // because that's known to be hostless. - // anything else is assumed to be absolute. - if (!slashedProtocol[relative.protocol]) { - var keys = Object.keys(relative); - for (var v = 0; v < keys.length; v++) { - var k = keys[v]; - result[k] = relative[k]; - } - result.href = result.format(); - return result; - } - - result.protocol = relative.protocol; - if (!relative.host && !hostlessProtocol[relative.protocol]) { - var relPath = (relative.pathname || '').split('/'); - while (relPath.length && !(relative.host = relPath.shift())); - if (!relative.host) relative.host = ''; - if (!relative.hostname) relative.hostname = ''; - if (relPath[0] !== '') relPath.unshift(''); - if (relPath.length < 2) relPath.unshift(''); - result.pathname = relPath.join('/'); - } else { - result.pathname = relative.pathname; - } - result.search = relative.search; - result.query = relative.query; - result.host = relative.host || ''; - result.auth = relative.auth; - result.hostname = relative.hostname || relative.host; - result.port = relative.port; - // to support http.request - if (result.pathname || result.search) { - var p = result.pathname || ''; - var s = result.search || ''; - result.path = p + s; - } - result.slashes = result.slashes || relative.slashes; - result.href = result.format(); - return result; - } - - var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'), - isRelAbs = ( - relative.host || - relative.pathname && relative.pathname.charAt(0) === '/' - ), - mustEndAbs = (isRelAbs || isSourceAbs || - (result.host && relative.pathname)), - removeAllDots = mustEndAbs, - srcPath = result.pathname && result.pathname.split('/') || [], - relPath = relative.pathname && relative.pathname.split('/') || [], - psychotic = result.protocol && !slashedProtocol[result.protocol]; - - // if the url is a non-slashed url, then relative - // links like ../.. should be able - // to crawl up to the hostname, as well. This is strange. - // result.protocol has already been set by now. - // Later on, put the first path part into the host field. - if (psychotic) { - result.hostname = ''; - result.port = null; - if (result.host) { - if (srcPath[0] === '') srcPath[0] = result.host; - else srcPath.unshift(result.host); - } - result.host = ''; - if (relative.protocol) { - relative.hostname = null; - relative.port = null; - if (relative.host) { - if (relPath[0] === '') relPath[0] = relative.host; - else relPath.unshift(relative.host); - } - relative.host = null; - } - mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); - } - - if (isRelAbs) { - // it's absolute. - result.host = (relative.host || relative.host === '') ? - relative.host : result.host; - result.hostname = (relative.hostname || relative.hostname === '') ? - relative.hostname : result.hostname; - result.search = relative.search; - result.query = relative.query; - srcPath = relPath; - // fall through to the dot-handling below. - } else if (relPath.length) { - // it's relative - // throw away the existing file, and take the new path instead. - if (!srcPath) srcPath = []; - srcPath.pop(); - srcPath = srcPath.concat(relPath); - result.search = relative.search; - result.query = relative.query; - } else if (!util.isNullOrUndefined(relative.search)) { - // just pull out the search. - // like href='?foo'. - // Put this after the other two cases because it simplifies the booleans - if (psychotic) { - result.hostname = result.host = srcPath.shift(); - //occationaly the auth can get stuck only in host - //this especially happens in cases like - //url.resolveObject('mailto:local1@domain1', 'local2@domain2') - var authInHost = result.host && result.host.indexOf('@') > 0 ? - result.host.split('@') : false; - if (authInHost) { - result.auth = authInHost.shift(); - result.host = result.hostname = authInHost.shift(); - } - } - result.search = relative.search; - result.query = relative.query; - //to support http.request - if (!util.isNull(result.pathname) || !util.isNull(result.search)) { - result.path = (result.pathname ? result.pathname : '') + - (result.search ? result.search : ''); - } - result.href = result.format(); - return result; - } - - if (!srcPath.length) { - // no path at all. easy. - // we've already handled the other stuff above. - result.pathname = null; - //to support http.request - if (result.search) { - result.path = '/' + result.search; - } else { - result.path = null; - } - result.href = result.format(); - return result; - } - - // if a url ENDs in . or .., then it must get a trailing slash. - // however, if it ends in anything else non-slashy, - // then it must NOT get a trailing slash. - var last = srcPath.slice(-1)[0]; - var hasTrailingSlash = ( - (result.host || relative.host || srcPath.length > 1) && - (last === '.' || last === '..') || last === ''); - - // strip single dots, resolve double dots to parent dir - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = srcPath.length; i >= 0; i--) { - last = srcPath[i]; - if (last === '.') { - srcPath.splice(i, 1); - } else if (last === '..') { - srcPath.splice(i, 1); - up++; - } else if (up) { - srcPath.splice(i, 1); - up--; - } - } - - // if the path is allowed to go above the root, restore leading ..s - if (!mustEndAbs && !removeAllDots) { - for (; up--; up) { - srcPath.unshift('..'); - } - } - - if (mustEndAbs && srcPath[0] !== '' && - (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { - srcPath.unshift(''); - } - - if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { - srcPath.push(''); - } - - var isAbsolute = srcPath[0] === '' || - (srcPath[0] && srcPath[0].charAt(0) === '/'); - - // put the host back - if (psychotic) { - result.hostname = result.host = isAbsolute ? '' : - srcPath.length ? srcPath.shift() : ''; - //occationaly the auth can get stuck only in host - //this especially happens in cases like - //url.resolveObject('mailto:local1@domain1', 'local2@domain2') - var authInHost = result.host && result.host.indexOf('@') > 0 ? - result.host.split('@') : false; - if (authInHost) { - result.auth = authInHost.shift(); - result.host = result.hostname = authInHost.shift(); - } - } - - mustEndAbs = mustEndAbs || (result.host && srcPath.length); - - if (mustEndAbs && !isAbsolute) { - srcPath.unshift(''); - } - - if (!srcPath.length) { - result.pathname = null; - result.path = null; - } else { - result.pathname = srcPath.join('/'); - } - - //to support request.http - if (!util.isNull(result.pathname) || !util.isNull(result.search)) { - result.path = (result.pathname ? result.pathname : '') + - (result.search ? result.search : ''); - } - result.auth = relative.auth || result.auth; - result.slashes = result.slashes || relative.slashes; - result.href = result.format(); - return result; - }; - - Url.prototype.parseHost = function() { - var host = this.host; - var port = portPattern.exec(host); - if (port) { - port = port[0]; - if (port !== ':') { - this.port = port.substr(1); - } - host = host.substr(0, host.length - port.length); - } - if (host) this.hostname = host; - }; - - },{"./util":6,"punycode":1,"querystring":4}],6:[function(require,module,exports){ - 'use strict'; - - module.exports = { - isString: function(arg) { - return typeof(arg) === 'string'; - }, - isObject: function(arg) { - return typeof(arg) === 'object' && arg !== null; - }, - isNull: function(arg) { - return arg === null; - }, - isNullOrUndefined: function(arg) { - return arg == null; - } - }; - - },{}],7:[function(require,module,exports){ - 'use strict'; - - /** - * Create validating function for passed schema with asynchronous loading of missing schemas. - * `loadSchema` option should be a function that accepts schema uri and node-style callback. - * @param {String|Object} schema - * @param {Function} callback node-style callback, it is always called with 2 parameters: error (or null) and validating function. - */ - module.exports = function compileAsync(schema, callback) { - var schemaObj; - var self = this; - try { - schemaObj = this._addSchema(schema); - } catch(e) { - setTimeout(function() { callback(e); }); - return; - } - if (schemaObj.validate) - setTimeout(function() { callback(null, schemaObj.validate); }); - else { - if (typeof this.opts.loadSchema != 'function') - throw new Error('options.loadSchema should be a function'); - _compileAsync(schema, callback, true); - } - - - function _compileAsync(schema, callback, firstCall) { - var validate; - try { validate = self.compile(schema); } - catch(e) { - if (e.missingSchema) loadMissingSchema(e); - else deferCallback(e); - return; - } - deferCallback(null, validate); - - function loadMissingSchema(e) { - var ref = e.missingSchema; - if (self._refs[ref] || self._schemas[ref]) - return callback(new Error('Schema ' + ref + ' is loaded but' + e.missingRef + 'cannot be resolved')); - var _callbacks = self._loadingSchemas[ref]; - if (_callbacks) { - if (typeof _callbacks == 'function') - self._loadingSchemas[ref] = [_callbacks, schemaLoaded]; - else - _callbacks[_callbacks.length] = schemaLoaded; - } else { - self._loadingSchemas[ref] = schemaLoaded; - self.opts.loadSchema(ref, function (err, sch) { - var _callbacks = self._loadingSchemas[ref]; - delete self._loadingSchemas[ref]; - if (typeof _callbacks == 'function') - _callbacks(err, sch); - else - for (var i=0; i<_callbacks.length; i++) - _callbacks[i](err, sch); - }); - } - - function schemaLoaded(err, sch) { - if (err) callback(err); - else { - if (!(self._refs[ref] || self._schemas[ref])) { - try { - self.addSchema(sch, ref); - } catch(e) { - callback(e); - return; - } - } - _compileAsync(schema, callback); - } - } - } - - function deferCallback(err, validate) { - if (firstCall) setTimeout(function() { callback(err, validate); }); - else callback(err, validate); - } - } - }; - - },{}],8:[function(require,module,exports){ - 'use strict'; - - - var Cache = module.exports = function Cache() { - this._cache = {}; - }; - - - Cache.prototype.put = function Cache_put(key, value) { - this._cache[key] = value; - }; - - - Cache.prototype.get = function Cache_get(key) { - return this._cache[key]; - }; - - - Cache.prototype.del = function Cache_del(key) { - delete this._cache[key]; - }; - - },{}],9:[function(require,module,exports){ - 'use strict'; - - //all requires must be explicit because browserify won't work with dynamic requires - module.exports = { - '$ref': require('../dotjs/ref'), - allOf: require('../dotjs/allOf'), - anyOf: require('../dotjs/anyOf'), - dependencies: require('../dotjs/dependencies'), - enum: require('../dotjs/enum'), - format: require('../dotjs/format'), - items: require('../dotjs/items'), - maximum: require('../dotjs/_limit'), - minimum: require('../dotjs/_limit'), - maxItems: require('../dotjs/_limitItems'), - minItems: require('../dotjs/_limitItems'), - maxLength: require('../dotjs/_limitLength'), - minLength: require('../dotjs/_limitLength'), - maxProperties: require('../dotjs/_limitProperties'), - minProperties: require('../dotjs/_limitProperties'), - multipleOf: require('../dotjs/multipleOf'), - not: require('../dotjs/not'), - oneOf: require('../dotjs/oneOf'), - pattern: require('../dotjs/pattern'), - properties: require('../dotjs/properties'), - required: require('../dotjs/required'), - uniqueItems: require('../dotjs/uniqueItems'), - validate: require('../dotjs/validate') - }; - - },{"../dotjs/_limit":18,"../dotjs/_limitItems":19,"../dotjs/_limitLength":20,"../dotjs/_limitProperties":21,"../dotjs/allOf":22,"../dotjs/anyOf":23,"../dotjs/dependencies":25,"../dotjs/enum":26,"../dotjs/format":27,"../dotjs/items":28,"../dotjs/multipleOf":29,"../dotjs/not":30,"../dotjs/oneOf":31,"../dotjs/pattern":32,"../dotjs/properties":33,"../dotjs/ref":34,"../dotjs/required":35,"../dotjs/uniqueItems":37,"../dotjs/validate":38}],10:[function(require,module,exports){ - 'use strict'; - - module.exports = function equal(a, b) { - if (a === b) return true; - - var arrA = Array.isArray(a) - , arrB = Array.isArray(b) - , i; - - if (arrA && arrB) { - if (a.length != b.length) return false; - for (i = 0; i < a.length; i++) - if (!equal(a[i], b[i])) return false; - return true; - } - - if (arrA != arrB) return false; - - if (a && b && typeof a === 'object' && typeof b === 'object') { - var keys = Object.keys(a); - - if (keys.length !== Object.keys(b).length) return false; - - for (i = 0; i < keys.length; i++) - if (b[keys[i]] === undefined) return false; - - for (i = 0; i < keys.length; i++) - if(!equal(a[keys[i]], b[keys[i]])) return false; - - return true; - } - - return false; - }; - - },{}],11:[function(require,module,exports){ - 'use strict'; - - var util = require('./util'); - - var DATE = /^\d\d\d\d-(\d\d)-(\d\d)$/; - var DAYS = [0,31,29,31,30,31,30,31,31,30,31,30,31]; - var TIME = /^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d:\d\d)?$/i; - var HOSTNAME = /^[a-z](?:(?:[-0-9a-z]{0,61})?[0-9a-z])?(\.[a-z](?:(?:[-0-9a-z]{0,61})?[0-9a-z])?)*$/i; - var URI = /^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@\/?]|%[0-9a-f]{2})*)?(?:\#(?:[a-z0-9\-._~!$&'()*+,;=:@\/?]|%[0-9a-f]{2})*)?$/i; - var UUID = /^(?:urn\:uuid\:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i; - var JSON_POINTER = /^(?:\/(?:[^~\/]|~0|~1)+)*(?:\/)?$|^\#(?:\/(?:[a-z0-9_\-\.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)+)*(?:\/)?$/i; - var RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:\#|(?:\/(?:[^~\/]|~0|~1)+)*(?:\/)?)$/; - - - module.exports = formats; - - function formats(mode) { - mode = mode == 'full' ? 'full' : 'fast'; - var formatDefs = util.copy(formats[mode]); - for (var fName in formats.compare) { - formatDefs[fName] = { - validate: formatDefs[fName], - compare: formats.compare[fName] - }; - } - return formatDefs; - } - - - formats.fast = { - // date: http://tools.ietf.org/html/rfc3339#section-5.6 - date: /^\d\d\d\d-[0-1]\d-[0-3]\d$/, - // date-time: http://tools.ietf.org/html/rfc3339#section-5.6 - time: /^[0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i, - 'date-time': /^\d\d\d\d-[0-1]\d-[0-3]\d[t\s][0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)$/i, - // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js - uri: /^(?:[a-z][a-z0-9+-.]*)?(?:\:|\/)\/?[^\s]*$/i, - // email (sources from jsen validator): - // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363 - // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation') - email: /^[a-z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i, - hostname: HOSTNAME, - // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html - ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/, - // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses - ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i, - regex: regex, - // uuid: http://tools.ietf.org/html/rfc4122 - uuid: UUID, - // JSON-pointer: https://tools.ietf.org/html/rfc6901 - // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A - 'json-pointer': JSON_POINTER, - // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00 - 'relative-json-pointer': RELATIVE_JSON_POINTER - }; - - - formats.full = { - date: date, - time: time, - 'date-time': date_time, - uri: uri, - email: /^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&''*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i, - hostname: hostname, - ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/, - ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i, - regex: regex, - uuid: UUID, - 'json-pointer': JSON_POINTER, - 'relative-json-pointer': RELATIVE_JSON_POINTER - }; - - - formats.compare = { - date: compareDate, - time: compareTime, - 'date-time': compareDateTime - }; - - - function date(str) { - // full-date from http://tools.ietf.org/html/rfc3339#section-5.6 - var matches = str.match(DATE); - if (!matches) return false; - - var month = +matches[1]; - var day = +matches[2]; - return month >= 1 && month <= 12 && day >= 1 && day <= DAYS[month]; - } - - - function time(str, full) { - var matches = str.match(TIME); - if (!matches) return false; - - var hour = matches[1]; - var minute = matches[2]; - var second = matches[3]; - var timeZone = matches[5]; - return hour <= 23 && minute <= 59 && second <= 59 && (!full || timeZone); - } - - - var DATE_TIME_SEPARATOR = /t|\s/i; - function date_time(str) { - // http://tools.ietf.org/html/rfc3339#section-5.6 - var dateTime = str.split(DATE_TIME_SEPARATOR); - return date(dateTime[0]) && time(dateTime[1], true); - } - - - function hostname(str) { - // http://tools.ietf.org/html/rfc1034#section-3.5 - return str.length <= 255 && HOSTNAME.test(str); - } - - - var NOT_URI_FRAGMENT = /\/|\:/; - function uri(str) { - // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "." - return NOT_URI_FRAGMENT.test(str) && URI.test(str); - } - - - function regex(str) { - try { - new RegExp(str); - return true; - } catch(e) { - return false; - } - } - - - function compareDate(d1, d2) { - if (!(d1 && d2)) return; - if (d1 > d2) return 1; - if (d1 < d2) return -1; - if (d1 === d2) return 0; - } - - - function compareTime(t1, t2) { - if (!(t1 && t2)) return; - t1 = t1.match(TIME); - t2 = t2.match(TIME); - if (!(t1 && t2)) return; - t1 = t1[1] + t1[2] + t1[3] + (t1[4]||''); - t2 = t2[1] + t2[2] + t2[3] + (t2[4]||''); - if (t1 > t2) return 1; - if (t1 < t2) return -1; - if (t1 === t2) return 0; - } - - - function compareDateTime(dt1, dt2) { - if (!(dt1 && dt2)) return; - dt1 = dt1.split(DATE_TIME_SEPARATOR); - dt2 = dt2.split(DATE_TIME_SEPARATOR); - var res = compareDate(dt1[0], dt2[0]); - if (res === undefined) return; - return res || compareTime(dt1[1], dt2[1]); - } - - },{"./util":16}],12:[function(require,module,exports){ - 'use strict'; - - var resolve = require('./resolve') - , util = require('./util') - , equal = require('./equal') - , stableStringify = require('json-stable-stringify'); - - var beautify = (function() { try { return require('' + 'js-beautify').js_beautify; } catch(e) {} })(); - - var validateGenerator = require('../dotjs/validate'); - - module.exports = compile; - - - function compile(schema, root, localRefs, baseId) { - /* jshint validthis: true, evil: true */ - var self = this - , refVal = [ undefined ] - , refs = {} - , patterns = [] - , patternsHash = {} - , defaults = [] - , defaultsHash = {} - , customRules = [] - , customRulesHash = {}; - - root = root || { schema: schema, refVal: refVal, refs: refs }; - - var formats = this._formats; - var RULES = this.RULES; - - return localCompile(schema, root, localRefs, baseId); - - - function localCompile(_schema, _root, localRefs, baseId) { - var isRoot = !_root || (_root && _root.schema == _schema); - if (_root.schema != root.schema) - return compile.call(self, _schema, _root, localRefs, baseId); - - var validateCode = validateGenerator({ - isTop: true, - schema: _schema, - isRoot: isRoot, - baseId: baseId, - root: _root, - schemaPath: '', - errSchemaPath: '#', - errorPath: '""', - RULES: RULES, - validate: validateGenerator, - util: util, - resolve: resolve, - resolveRef: resolveRef, - usePattern: usePattern, - useDefault: useDefault, - useCustomRule: useCustomRule, - opts: self.opts, - formats: formats, - self: self - }); - - validateCode = vars(refVal, refValCode) + vars(patterns, patternCode) - + vars(defaults, defaultCode) + vars(customRules, customRuleCode) - + validateCode; - - if (self.opts.beautify) { - var opts = self.opts.beautify === true ? { indent_size: 2 } : self.opts.beautify; - /* istanbul ignore else */ - if (beautify) validateCode = beautify(validateCode, opts); - else console.error('"npm install js-beautify" to use beautify option'); - } - // console.log('\n\n\n *** \n', validateCode); - var validate; - try { - eval(validateCode); - refVal[0] = validate; - } catch(e) { - console.log('Error compiling schema, function code:', validateCode); - throw e; - } - - validate.schema = _schema; - validate.errors = null; - validate.refs = refs; - validate.refVal = refVal; - validate.root = isRoot ? validate : _root; - - return validate; - } - - function resolveRef(baseId, ref, isRoot) { - ref = resolve.url(baseId, ref); - var refIndex = refs[ref]; - var _refVal, refCode; - if (refIndex !== undefined) { - _refVal = refVal[refIndex]; - refCode = 'refVal[' + refIndex + ']'; - return resolvedRef(_refVal, refCode); - } - if (!isRoot) { - var rootRefId = root.refs[ref]; - if (rootRefId !== undefined) { - _refVal = root.refVal[rootRefId]; - refCode = addLocalRef(ref, _refVal); - return resolvedRef(_refVal, refCode); - } - } - - refCode = addLocalRef(ref); - var v = resolve.call(self, localCompile, root, ref); - if (!v) { - var localSchema = localRefs && localRefs[ref]; - if (localSchema) { - v = resolve.inlineRef(localSchema, self.opts.inlineRefs) - ? localSchema - : compile.call(self, localSchema, root, localRefs, baseId); - } - } - - if (v) { - replaceLocalRef(ref, v); - return resolvedRef(v, refCode); - } - } - - function addLocalRef(ref, v) { - var refId = refVal.length; - refVal[refId] = v; - refs[ref] = refId; - return 'refVal' + refId; - } - - function replaceLocalRef(ref, v) { - var refId = refs[ref]; - refVal[refId] = v; - } - - function resolvedRef(schema, code) { - return typeof schema == 'object' - ? { schema: schema, code: code } - : code; - } - - function usePattern(regexStr) { - var index = patternsHash[regexStr]; - if (index === undefined) { - index = patternsHash[regexStr] = patterns.length; - patterns[index] = regexStr; - } - return 'pattern' + index; - } - - function useDefault(value) { - switch (typeof value) { - case 'boolean': - case 'number': - return '' + value; - case 'string': - return util.toQuotedString(value); - case 'object': - if (value === null) return 'null'; - var valueStr = stableStringify(value); - var index = defaultsHash[valueStr]; - if (index === undefined) { - index = defaultsHash[valueStr] = defaults.length; - defaults[index] = value; - } - return 'default' + index; - } - } - - function useCustomRule(rule, schema, parentSchema, it) { - var compile = rule.definition.compile - , inline = rule.definition.inline - , macro = rule.definition.macro; - - var validate; - if (compile) - validate = compile.call(self, schema, parentSchema); - else if (macro) { - validate = macro.call(self, schema, parentSchema); - if (self.opts.validateSchema !== false) self.validateSchema(validate, true); - } else if (inline) - validate = inline.call(self, it, rule.keyword, schema, parentSchema); - else - validate = rule.definition.validate; - - var index = customRules.length; - customRules[index] = validate; - - return { - code: 'customRule' + index, - validate: validate - }; - } - } - - - function patternCode(i, patterns) { - return 'var pattern' + i + ' = new RegExp(' + util.toQuotedString(patterns[i]) + ');'; - } - - - function defaultCode(i) { - return 'var default' + i + ' = defaults[' + i + '];'; - } - - - function refValCode(i, refVal) { - return refVal[i] ? 'var refVal' + i + ' = refVal[' + i + '];' : ''; - } - - - function customRuleCode(i) { - return 'var customRule' + i + ' = customRules[' + i + '];'; - } - - - function vars(arr, statement) { - if (!arr.length) return ''; - var code = ''; - for (var i=0; i= 0xD800 && value <= 0xDBFF && pos < len) { - // high surrogate, and there is a next character - value = str.charCodeAt(pos); - if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate - } - } - return length; - } - - - function varOccurences(str, dataVar) { - dataVar += '[^0-9]'; - var matches = str.match(new RegExp(dataVar, 'g')); - return matches ? matches.length : 0; - } - - - function varReplace(str, dataVar, expr) { - dataVar += '([^0-9])'; - expr = expr.replace(/\$/g, '$$$$'); - return str.replace(new RegExp(dataVar, 'g'), expr + '$1'); - } - - - var EMPTY_ELSE = /else\s*{\s*}/g - , EMPTY_IF_NO_ELSE = /if\s*\([^)]+\)\s*\{\s*\}(?!\s*else)/g - , EMPTY_IF_WITH_ELSE = /if\s*\(([^)]+)\)\s*\{\s*\}\s*else(?!\s*if)/g; - function cleanUpCode(out) { - return out.replace(EMPTY_ELSE, '') - .replace(EMPTY_IF_NO_ELSE, '') - .replace(EMPTY_IF_WITH_ELSE, 'if (!($1))'); - } - - - var ERRORS_REGEXP = /[^v\.]errors/g - , REMOVE_ERRORS = /var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g - , RETURN_VALID = 'return errors === 0;' - , RETURN_TRUE = 'validate.errors = null; return true;'; - - function cleanUpVarErrors(out) { - var matches = out.match(ERRORS_REGEXP); - if (matches && matches.length === 2) - return out.replace(REMOVE_ERRORS, '') - .replace(RETURN_VALID, RETURN_TRUE); - else - return out; - } - - - function schemaHasRules(schema, rules) { - for (var key in schema) if (rules[key]) return true; - } - - - function toQuotedString(str) { - return '\'' + escapeQuotes(str) + '\''; - } - - - function getPathExpr(currentPath, expr, jsonPointers, isNumber) { - var path = jsonPointers // false by default - ? '\'/\' + ' + expr + (isNumber ? '' : '.replace(/~/g, \'~0\').replace(/\\//g, \'~1\')') - : (isNumber ? '\'[\' + ' + expr + ' + \']\'' : '\'[\\\'\' + ' + expr + ' + \'\\\']\''); - return joinPaths(currentPath, path); - } - - - function getPath(currentPath, prop, jsonPointers) { - var path = jsonPointers // false by default - ? toQuotedString('/' + escapeJsonPointer(prop)) - : toQuotedString(getProperty(prop)); - return joinPaths(currentPath, path); - } - - - var RELATIVE_JSON_POINTER = /^([0-9]+)((?:[^0-9]|~0|~1)*)$/; - function getData($data, lvl, paths) { - var matches = $data.match(RELATIVE_JSON_POINTER); - if (!matches) throw new Error('Invalid relative JSON-pointer: ' + $data); - var up = +matches[1]; - var jsonPointer = matches[2]; - if (jsonPointer == '#') { - if (up >= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl); - return paths[lvl - up]; - } else { - if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl); - var data = 'data' + ((lvl - up) || '') - , expr = data; - var segments = jsonPointer.split('/'); - for (var i=0; i', - $result = 'result' + $lvl; - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - if ($isDataExcl) { - var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), - $exclusive = 'exclusive' + $lvl, - $opExpr = 'op' + $lvl, - $opStr = '\' + ' + $opExpr + ' + \''; - out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; '; - $schemaValueExcl = 'schemaExcl' + $lvl; - out += ' if (typeof ' + ($schemaValueExcl) + ' != \'boolean\' && ' + ($schemaValueExcl) + ' !== undefined) { ' + ($valid) + ' = false; '; - var $errorKeyword = $exclusiveKeyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_exclusiveFormatLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - $closingBraces += '}'; - out += ' else { '; - } - if ($isData) { - out += ' if (' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'string\') ' + ($valid) + ' = false; else { '; - $closingBraces += '}'; - } - if ($isDataFormat) { - out += ' if (!' + ($compare) + ') ' + ($valid) + ' = true; else { '; - $closingBraces += '}'; - } - out += ' var ' + ($result) + ' = ' + ($compare) + '(' + ($data) + ', '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' ); if (' + ($result) + ' === undefined) ' + ($valid) + ' = false; var exclusive' + ($lvl) + ' = ' + ($schemaValueExcl) + ' === true; if (' + ($valid) + ' === undefined) { ' + ($valid) + ' = exclusive' + ($lvl) + ' ? ' + ($result) + ' ' + ($op) + ' 0 : ' + ($result) + ' ' + ($op) + '= 0; } if (!' + ($valid) + ') var op' + ($lvl) + ' = exclusive' + ($lvl) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\';'; - } else { - var $exclusive = $schemaExcl === true, - $opStr = $op; - if (!$exclusive) $opStr += '='; - var $opExpr = '\'' + $opStr + '\''; - if ($isData) { - out += ' if (' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'string\') ' + ($valid) + ' = false; else { '; - $closingBraces += '}'; - } - if ($isDataFormat) { - out += ' if (!' + ($compare) + ') ' + ($valid) + ' = true; else { '; - $closingBraces += '}'; - } - out += ' var ' + ($result) + ' = ' + ($compare) + '(' + ($data) + ', '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' ); if (' + ($result) + ' === undefined) ' + ($valid) + ' = false; if (' + ($valid) + ' === undefined) ' + ($valid) + ' = ' + ($result) + ' ' + ($op); - if (!$exclusive) { - out += '='; - } - out += ' 0;'; - } - out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_formatLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { limit: '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be ' + ($opStr) + ' "'; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + (it.util.escapeQuotes($schema)); - } - out += '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '}'; - return out; - } - - },{}],18:[function(require,module,exports){ - 'use strict'; - module.exports = function generate__limit(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - var $isMax = $keyword == 'maximum', - $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum', - $schemaExcl = it.schema[$exclusiveKeyword], - $isDataExcl = it.opts.v5 && $schemaExcl && $schemaExcl.$data, - $op = $isMax ? '<' : '>', - $notOp = $isMax ? '>' : '<'; - if ($isDataExcl) { - var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), - $exclusive = 'exclusive' + $lvl, - $opExpr = 'op' + $lvl, - $opStr = '\' + ' + $opExpr + ' + \''; - out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; '; - $schemaValueExcl = 'schemaExcl' + $lvl; - out += ' var exclusive' + ($lvl) + '; if (typeof ' + ($schemaValueExcl) + ' != \'boolean\' && typeof ' + ($schemaValueExcl) + ' != \'undefined\') { '; - var $errorKeyword = $exclusiveKeyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_exclusiveLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else if( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ((exclusive' + ($lvl) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ')) { var op' + ($lvl) + ' = exclusive' + ($lvl) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\';'; - } else { - var $exclusive = $schemaExcl === true, - $opStr = $op; - if (!$exclusive) $opStr += '='; - var $opExpr = '\'' + $opStr + '\''; - out += ' if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ' + ($data) + ' ' + ($notOp); - if ($exclusive) { - out += '='; - } - out += ' ' + ($schemaValue) + ') {'; - } - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be ' + ($opStr) + ' '; - if ($isData) { - out += '\' + ' + ($schemaValue); - } else { - out += '' + ($schema) + '\''; - } - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - return out; - } - - },{}],19:[function(require,module,exports){ - 'use strict'; - module.exports = function generate__limitItems(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - var $op = $keyword == 'maxItems' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have '; - if ($keyword == 'maxItems') { - out += 'more'; - } else { - out += 'less'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' items\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; - } - - },{}],20:[function(require,module,exports){ - 'use strict'; - module.exports = function generate__limitLength(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - var $op = $keyword == 'maxLength' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - if (it.opts.unicode === false) { - out += ' ' + ($data) + '.length '; - } else { - out += ' ucs2length(' + ($data) + ') '; - } - out += ' ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitLength') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be '; - if ($keyword == 'maxLength') { - out += 'longer'; - } else { - out += 'shorter'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' characters\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; - } - - },{}],21:[function(require,module,exports){ - 'use strict'; - module.exports = function generate__limitProperties(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - var $op = $keyword == 'maxProperties' ? '>' : '<'; - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; - } - out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { '; - var $errorKeyword = $keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '_limitProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { limit: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have '; - if ($keyword == 'maxProperties') { - out += 'more'; - } else { - out += 'less'; - } - out += ' than '; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + ($schema); - } - out += ' properties\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; - } - - },{}],22:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_allOf(it, $keyword) { - var out = ' '; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces.slice(0, -1)); - } - out = it.util.cleanUpCode(out); - return out; - } - - },{}],23:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_anyOf(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $noEmptySchema = $schema.every(function($sch) { - return it.util.schemaHasRules($sch, it.RULES.all); - }); - if ($noEmptySchema) { - out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' ' + ($valid) + ' = ' + ($valid) + ' || valid' + ($it.level) + '; if (!' + ($valid) + ') { '; - $closingBraces += '}'; - } - } - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'anyOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should match some schema in anyOf\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - if (it.opts.allErrors) { - out += ' } '; - } - out = it.util.cleanUpCode(out); - } else { - if ($breakOnError) { - out += ' if (true) { '; - } - } - return out; - } - - },{}],24:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_constant(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - if (!$isData) { - out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';'; - } - out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'constant') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should be equal to constant\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' }'; - return out; - } - - },{}],25:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_dependencies(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $schemaDeps = {}, - $propertyDeps = {}; - for ($property in $schema) { - var $sch = $schema[$property]; - var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps; - $deps[$property] = $sch; - } - out += 'var ' + ($errs) + ' = errors;'; - var $currentErrorPath = it.errorPath; - out += 'var missing' + ($lvl) + ';'; - for (var $property in $propertyDeps) { - $deps = $propertyDeps[$property]; - out += ' if (' + ($data) + (it.util.getProperty($property)) + ' !== undefined && ( '; - var arr1 = $deps; - if (arr1) { - var _$property, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - _$property = arr1[$i += 1]; - if ($i) { - out += ' || '; - } - var $prop = it.util.getProperty(_$property); - out += ' ( ' + ($data) + ($prop) + ' === undefined && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? _$property : $prop)) + ') ) '; - } - } - out += ')) { '; - var $propertyPath = 'missing' + $lvl, - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'dependencies') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { property: \'' + (it.util.escapeQuotes($property)) + '\', missingProperty: \'' + ($missingProperty) + '\', depsCount: ' + ($deps.length) + ', deps: \'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", "))) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should have '; - if ($deps.length == 1) { - out += 'property ' + (it.util.escapeQuotes($deps[0])); - } else { - out += 'properties ' + (it.util.escapeQuotes($deps.join(", "))); - } - out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - $closingBraces += '}'; - out += ' else { '; - } - } - it.errorPath = $currentErrorPath; - for (var $property in $schemaDeps) { - var $sch = $schemaDeps[$property]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - out += ' valid' + ($it.level) + ' = true; if (' + ($data) + '[\'' + ($property) + '\'] !== undefined) { '; - $it.schema = $sch; - $it.schemaPath = $schemaPath + it.util.getProperty($property); - $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property); - out += ' ' + (it.validate($it)) + ' } '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - out = it.util.cleanUpCode(out); - return out; - } - - },{}],26:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_enum(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - var $i = 'i' + $lvl; - if (!$isData) { - out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';'; - } - out += 'var ' + ($valid) + ';'; - if ($isData) { - out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; - } - out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + ' ' + ($i) + ') { '; - var $passData = $data + '[' + $i + ']'; - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true); - if (it.opts.v5) $it.dataPathArr[$dataNxt] = $i; - var $code = it.validate($it); - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - } - } - } - if (typeof $additionalItems == 'object' && it.util.schemaHasRules($additionalItems, it.RULES.all)) { - $it.schema = $additionalItems; - $it.schemaPath = it.schemaPath + '.additionalItems'; - $it.errSchemaPath = it.errSchemaPath + '/additionalItems'; - out += ' valid' + ($it.level) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var i' + ($lvl) + ' = ' + ($schema.length) + '; i' + ($lvl) + ' < ' + ($data) + '.length; i' + ($lvl) + '++) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, 'i' + $lvl, it.opts.jsonPointers, true); - var $passData = $data + '[i' + $lvl + ']'; - if (it.opts.v5) $it.dataPathArr[$dataNxt] = 'i' + $lvl; - var $code = it.validate($it); - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!valid' + ($it.level) + ') break; '; - } - out += ' } } '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - } - } else if (it.util.schemaHasRules($schema, it.RULES.all)) { - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' for (var i' + ($lvl) + ' = ' + (0) + '; i' + ($lvl) + ' < ' + ($data) + '.length; i' + ($lvl) + '++) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, 'i' + $lvl, it.opts.jsonPointers, true); - var $passData = $data + '[i' + $lvl + ']'; - if (it.opts.v5) $it.dataPathArr[$dataNxt] = 'i' + $lvl; - var $code = it.validate($it); - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!valid' + ($it.level) + ') break; '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - out = it.util.cleanUpCode(out); - return out; - } - - },{}],29:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_multipleOf(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - out += 'var division' + ($lvl) + ';if ('; - if ($isData) { - out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \'number\' || '; - } - out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', '; - if (it.opts.multipleOfPrecision) { - out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' '; - } else { - out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') '; - } - out += ' ) '; - if ($isData) { - out += ' ) '; - } - out += ' ) { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'multipleOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { multipleOf: ' + ($schemaValue) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should be multiple of '; - if ($isData) { - out += '\' + ' + ($schemaValue); - } else { - out += '' + ($schema) + '\''; - } - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; - } - - },{}],30:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_not(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - $it.level++; - if (it.util.schemaHasRules($schema, it.RULES.all)) { - $it.schema = $schema; - $it.schemaPath = $schemaPath; - $it.errSchemaPath = $errSchemaPath; - out += ' var ' + ($errs) + ' = errors; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.createErrors = false; - out += ' ' + (it.validate($it)) + ' '; - $it.createErrors = true; - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' if (valid' + ($it.level) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be valid\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; - if (it.opts.allErrors) { - out += ' } '; - } - } else { - out += ' var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT be valid\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - if ($breakOnError) { - out += ' if (false) { '; - } - } - return out; - } - - },{}],31:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_oneOf(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - out += 'var ' + ($errs) + ' = errors;var prevValid' + ($lvl) + ' = false;var ' + ($valid) + ' = false; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var arr1 = $schema; - if (arr1) { - var $sch, $i = -1, - l1 = arr1.length - 1; - while ($i < l1) { - $sch = arr1[$i += 1]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - $it.schema = $sch; - $it.schemaPath = $schemaPath + '[' + $i + ']'; - $it.errSchemaPath = $errSchemaPath + '/' + $i; - out += ' ' + (it.validate($it)) + ' '; - } else { - out += ' var valid' + ($it.level) + ' = true; '; - } - if ($i) { - out += ' if (valid' + ($it.level) + ' && prevValid' + ($lvl) + ') ' + ($valid) + ' = false; else { '; - $closingBraces += '}'; - } - out += ' if (valid' + ($it.level) + ') ' + ($valid) + ' = prevValid' + ($lvl) + ' = true;'; - } - } - it.compositeRule = $it.compositeRule = $wasComposite; - out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'oneOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; - if (it.opts.messages !== false) { - out += ' , message: \'should match exactly one schema in oneOf\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }'; - if (it.opts.allErrors) { - out += ' } '; - } - return out; - } - - },{}],32:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_pattern(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema); - out += 'if ( '; - if ($isData) { - out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || '; - } - out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'pattern') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { pattern: '; - if ($isData) { - out += '' + ($schemaValue); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should match pattern "'; - if ($isData) { - out += '\' + ' + ($schemaValue) + ' + \''; - } else { - out += '' + (it.util.escapeQuotes($schema)); - } - out += '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + (it.util.toQuotedString($schema)); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += '} '; - if ($breakOnError) { - out += ' else { '; - } - return out; - } - - },{}],33:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_properties(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $dataNxt = $it.dataLevel = it.dataLevel + 1, - $nextData = 'data' + $dataNxt; - var $schemaKeys = Object.keys($schema || {}), - $pProperties = it.schema.patternProperties || {}, - $pPropertyKeys = Object.keys($pProperties), - $aProperties = it.schema.additionalProperties, - $someProperties = $schemaKeys.length || $pPropertyKeys.length, - $noAdditional = $aProperties === false, - $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length, - $removeAdditional = it.opts.removeAdditional, - $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional; - var $required = it.schema.required; - if ($required && !(it.opts.v5 && $required.$data) && $required.length < it.opts.loopRequired) var $requiredHash = it.util.toHash($required); - if (it.opts.v5) { - var $pgProperties = it.schema.patternGroups || {}, - $pgPropertyKeys = Object.keys($pgProperties); - } - out += 'var ' + ($errs) + ' = errors;var valid' + ($it.level) + ' = true;'; - if ($checkAdditional) { - out += ' for (var key' + ($lvl) + ' in ' + ($data) + ') { '; - if ($someProperties) { - out += ' var isAdditional' + ($lvl) + ' = !(false '; - if ($schemaKeys.length) { - if ($schemaKeys.length > 5) { - out += ' || validate.schema' + ($schemaPath) + '[key' + ($lvl) + '] '; - } else { - var arr1 = $schemaKeys; - if (arr1) { - var $propertyKey, i1 = -1, - l1 = arr1.length - 1; - while (i1 < l1) { - $propertyKey = arr1[i1 += 1]; - out += ' || key' + ($lvl) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' '; - } - } - } - } - if ($pPropertyKeys.length) { - var arr2 = $pPropertyKeys; - if (arr2) { - var $pProperty, $i = -1, - l2 = arr2.length - 1; - while ($i < l2) { - $pProperty = arr2[$i += 1]; - out += ' || ' + (it.usePattern($pProperty)) + '.test(key' + ($lvl) + ') '; - } - } - } - if (it.opts.v5 && $pgPropertyKeys && $pgPropertyKeys.length) { - var arr3 = $pgPropertyKeys; - if (arr3) { - var $pgProperty, $i = -1, - l3 = arr3.length - 1; - while ($i < l3) { - $pgProperty = arr3[$i += 1]; - out += ' || ' + (it.usePattern($pgProperty)) + '.test(key' + ($lvl) + ') '; - } - } - } - out += ' ); if (isAdditional' + ($lvl) + ') { '; - } - if ($removeAdditional == 'all') { - out += ' delete ' + ($data) + '[key' + ($lvl) + ']; '; - } else { - var $currentErrorPath = it.errorPath; - var $additionalProperty = '\' + key' + $lvl + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); - } - if ($noAdditional) { - if ($removeAdditional) { - out += ' delete ' + ($data) + '[key' + ($lvl) + ']; '; - } else { - out += ' valid' + ($it.level) + ' = false; '; - var $currErrSchemaPath = $errSchemaPath; - $errSchemaPath = it.errSchemaPath + '/additionalProperties'; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'additionalProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { additionalProperty: \'' + ($additionalProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have additional properties\' '; - } - if (it.opts.verbose) { - out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - $errSchemaPath = $currErrSchemaPath; - if ($breakOnError) { - out += ' break; '; - } - } - } else if ($additionalIsSchema) { - if ($removeAdditional == 'failing') { - out += ' var ' + ($errs) + ' = errors; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.schema = $aProperties; - $it.schemaPath = it.schemaPath + '.additionalProperties'; - $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; - $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); - var $passData = $data + '[key' + $lvl + ']'; - if (it.opts.v5) $it.dataPathArr[$dataNxt] = 'key' + $lvl; - var $code = it.validate($it); - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - out += ' if (!valid' + ($it.level) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[key' + ($lvl) + ']; } '; - it.compositeRule = $it.compositeRule = $wasComposite; - } else { - $it.schema = $aProperties; - $it.schemaPath = it.schemaPath + '.additionalProperties'; - $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; - $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); - var $passData = $data + '[key' + $lvl + ']'; - if (it.opts.v5) $it.dataPathArr[$dataNxt] = 'key' + $lvl; - var $code = it.validate($it); - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!valid' + ($it.level) + ') break; '; - } - } - } - it.errorPath = $currentErrorPath; - } - if ($someProperties) { - out += ' } '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - } - var $useDefaults = it.opts.useDefaults && !it.compositeRule; - if ($schemaKeys.length) { - var arr4 = $schemaKeys; - if (arr4) { - var $propertyKey, i4 = -1, - l4 = arr4.length - 1; - while (i4 < l4) { - $propertyKey = arr4[i4 += 1]; - var $sch = $schema[$propertyKey]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - var $prop = it.util.getProperty($propertyKey), - $passData = $data + $prop, - $hasDefault = $useDefaults && $sch.default !== undefined; - $it.schema = $sch; - $it.schemaPath = $schemaPath + $prop; - $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey); - $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers); - if (it.opts.v5) $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey); - var $code = it.validate($it); - if (it.util.varOccurences($code, $nextData) < 2) { - $code = it.util.varReplace($code, $nextData, $passData); - var $useData = $passData; - } else { - var $useData = $nextData; - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; '; - } - if ($hasDefault) { - out += ' ' + ($code) + ' '; - } else { - if ($requiredHash && $requiredHash[$propertyKey]) { - out += ' if (' + ($useData) + ' === undefined) { valid' + ($it.level) + ' = false; '; - var $currentErrorPath = it.errorPath, - $currErrSchemaPath = $errSchemaPath, - $missingProperty = it.util.escapeQuotes($propertyKey); - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); - } - $errSchemaPath = it.errSchemaPath + '/required'; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - $errSchemaPath = $currErrSchemaPath; - it.errorPath = $currentErrorPath; - out += ' } else { '; - } else { - if ($breakOnError) { - out += ' if (' + ($useData) + ' === undefined) { valid' + ($it.level) + ' = true; } else { '; - } else { - out += ' if (' + ($useData) + ' !== undefined) { '; - } - } - out += ' ' + ($code) + ' } '; - } - } - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - } - } - } - var arr5 = $pPropertyKeys; - if (arr5) { - var $pProperty, i5 = -1, - l5 = arr5.length - 1; - while (i5 < l5) { - $pProperty = arr5[i5 += 1]; - var $sch = $pProperties[$pProperty]; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - $it.schema = $sch; - $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty); - $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty); - out += ' for (var key' + ($lvl) + ' in ' + ($data) + ') { if (' + (it.usePattern($pProperty)) + '.test(key' + ($lvl) + ')) { '; - $it.errorPath = it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); - var $passData = $data + '[key' + $lvl + ']'; - if (it.opts.v5) $it.dataPathArr[$dataNxt] = 'key' + $lvl; - var $code = it.validate($it); - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!valid' + ($it.level) + ') break; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else valid' + ($it.level) + ' = true; '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - } - } - } - if (it.opts.v5) { - var arr6 = $pgPropertyKeys; - if (arr6) { - var $pgProperty, i6 = -1, - l6 = arr6.length - 1; - while (i6 < l6) { - $pgProperty = arr6[i6 += 1]; - var $pgSchema = $pgProperties[$pgProperty], - $sch = $pgSchema.schema; - if (it.util.schemaHasRules($sch, it.RULES.all)) { - $it.schema = $sch; - $it.schemaPath = it.schemaPath + '.patternGroups' + it.util.getProperty($pgProperty) + '.schema'; - $it.errSchemaPath = it.errSchemaPath + '/patternGroups/' + it.util.escapeFragment($pgProperty) + '/schema'; - out += ' var pgPropCount' + ($lvl) + ' = 0; for (var key' + ($lvl) + ' in ' + ($data) + ') { if (' + (it.usePattern($pgProperty)) + '.test(key' + ($lvl) + ')) { pgPropCount' + ($lvl) + '++; '; - $it.errorPath = it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); - var $passData = $data + '[key' + $lvl + ']'; - if (it.opts.v5) $it.dataPathArr[$dataNxt] = 'key' + $lvl; - var $code = it.validate($it); - if (it.util.varOccurences($code, $nextData) < 2) { - out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; - } else { - out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; - } - if ($breakOnError) { - out += ' if (!valid' + ($it.level) + ') break; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else valid' + ($it.level) + ' = true; '; - } - out += ' } '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - $closingBraces += '}'; - } - var $pgMin = $pgSchema.minimum, - $pgMax = $pgSchema.maximum; - if ($pgMin !== undefined || $pgMax !== undefined) { - out += ' var ' + ($valid) + ' = true; '; - var $currErrSchemaPath = $errSchemaPath; - if ($pgMin !== undefined) { - var $limit = $pgMin, - $reason = 'minimum', - $moreOrLess = 'less'; - out += ' ' + ($valid) + ' = pgPropCount' + ($lvl) + ' >= ' + ($pgMin) + '; '; - $errSchemaPath = it.errSchemaPath + '/patternGroups/minimum'; - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'patternGroups') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { reason: \'' + ($reason) + '\', limit: ' + ($limit) + ', pattern: \'' + (it.util.escapeQuotes($pgProperty)) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have ' + ($moreOrLess) + ' than ' + ($limit) + ' properties matching pattern "' + (it.util.escapeQuotes($pgProperty)) + '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($pgMax !== undefined) { - out += ' else '; - } - } - if ($pgMax !== undefined) { - var $limit = $pgMax, - $reason = 'maximum', - $moreOrLess = 'more'; - out += ' ' + ($valid) + ' = pgPropCount' + ($lvl) + ' <= ' + ($pgMax) + '; '; - $errSchemaPath = it.errSchemaPath + '/patternGroups/maximum'; - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'patternGroups') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { reason: \'' + ($reason) + '\', limit: ' + ($limit) + ', pattern: \'' + (it.util.escapeQuotes($pgProperty)) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have ' + ($moreOrLess) + ' than ' + ($limit) + ' properties matching pattern "' + (it.util.escapeQuotes($pgProperty)) + '"\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - } - $errSchemaPath = $currErrSchemaPath; - if ($breakOnError) { - out += ' if (' + ($valid) + ') { '; - $closingBraces += '}'; - } - } - } - } - } - } - if ($breakOnError) { - out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; - } - out = it.util.cleanUpCode(out); - return out; - } - - },{}],34:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_ref(it, $keyword) { - var out = ' '; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - if ($schema == '#' || $schema == '#/') { - if (it.isRoot) { - out += ' if (! ' + ('validate') + '(' + ($data) + ', (dataPath || \'\')'; - if (it.errorPath != '""') { - out += ' + ' + (it.errorPath); - } - out += ') ) { if (vErrors === null) vErrors = ' + ('validate') + '.errors; else vErrors = vErrors.concat(' + ('validate') + '.errors); errors = vErrors.length; } '; - if ($breakOnError) { - out += ' else { '; - } - } else { - out += ' if (! ' + ('root.refVal[0]') + '(' + ($data) + ', (dataPath || \'\')'; - if (it.errorPath != '""') { - out += ' + ' + (it.errorPath); - } - out += ') ) { if (vErrors === null) vErrors = ' + ('root.refVal[0]') + '.errors; else vErrors = vErrors.concat(' + ('root.refVal[0]') + '.errors); errors = vErrors.length; } '; - if ($breakOnError) { - out += ' else { '; - } - } - } else { - var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot); - if ($refVal === undefined) { - var $message = 'can\'t resolve reference ' + $schema + ' from id ' + it.baseId; - if (it.opts.missingRefs == 'fail') { - console.log($message); - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || '$ref') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { ref: \'' + (it.util.escapeQuotes($schema)) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'can\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\' '; - } - if (it.opts.verbose) { - out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - if ($breakOnError) { - out += ' if (false) { '; - } - } else if (it.opts.missingRefs == 'ignore') { - console.log($message); - if ($breakOnError) { - out += ' if (true) { '; - } - } else { - var $error = new Error($message); - $error.missingRef = it.resolve.url(it.baseId, $schema); - $error.missingSchema = it.resolve.normalizeId(it.resolve.fullPath($error.missingRef)); - throw $error; - } - } else if (typeof $refVal == 'string') { - out += ' if (! ' + ($refVal) + '(' + ($data) + ', (dataPath || \'\')'; - if (it.errorPath != '""') { - out += ' + ' + (it.errorPath); - } - out += ') ) { if (vErrors === null) vErrors = ' + ($refVal) + '.errors; else vErrors = vErrors.concat(' + ($refVal) + '.errors); errors = vErrors.length; } '; - if ($breakOnError) { - out += ' else { '; - } - } else { - var $it = it.util.copy(it); - $it.level++; - $it.schema = $refVal.schema; - $it.schemaPath = ''; - $it.errSchemaPath = $schema; - var $code = it.validate($it).replace(/validate\.schema/g, $refVal.code); - out += ' ' + ($code) + ' '; - if ($breakOnError) { - out += ' if (valid' + ($it.level) + ') { '; - } - } - } - return out; - } - - },{}],35:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_required(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - if (!$isData) { - if ($schema.length < it.opts.loopRequired && it.schema.properties && Object.keys(it.schema.properties).length) { - var $required = []; - var arr1 = $schema; - if (arr1) { - var $property, i1 = -1, - l1 = arr1.length - 1; - while (i1 < l1) { - $property = arr1[i1 += 1]; - var $propertySch = it.schema.properties[$property]; - if (!($propertySch && it.util.schemaHasRules($propertySch, it.RULES.all))) { - $required[$required.length] = $property; - } - } - } - } else { - var $required = $schema; - } - } - if ($isData || $required.length) { - var $currentErrorPath = it.errorPath, - $loopRequired = $isData || $required.length >= it.opts.loopRequired; - if ($breakOnError) { - out += ' var missing' + ($lvl) + '; '; - if ($loopRequired) { - if (!$isData) { - out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + '; '; - } - var $i = 'i' + $lvl, - $propertyPath = 'schema' + $lvl + '[' + $i + ']', - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); - } - out += ' var ' + ($valid) + ' = true; '; - if ($isData) { - out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; - } - out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < schema' + ($lvl) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[schema' + ($lvl) + '[' + ($i) + ']] !== undefined; if (!' + ($valid) + ') break; } '; - if ($isData) { - out += ' } '; - } - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - } else { - out += ' if ( '; - var arr2 = $required; - if (arr2) { - var _$property, $i = -1, - l2 = arr2.length - 1; - while ($i < l2) { - _$property = arr2[$i += 1]; - if ($i) { - out += ' || '; - } - var $prop = it.util.getProperty(_$property); - out += ' ( ' + ($data) + ($prop) + ' === undefined && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? _$property : $prop)) + ') ) '; - } - } - out += ') { '; - var $propertyPath = 'missing' + $lvl, - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; - } - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } else { '; - } - } else { - if ($loopRequired) { - if (!$isData) { - out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + '; '; - } - var $i = 'i' + $lvl, - $propertyPath = 'schema' + $lvl + '[' + $i + ']', - $missingProperty = '\' + ' + $propertyPath + ' + \''; - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); - } - if ($isData) { - out += ' if (schema' + ($lvl) + ' && !Array.isArray(schema' + ($lvl) + ')) { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (schema' + ($lvl) + ' !== undefined) { '; - } - out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < schema' + ($lvl) + '.length; ' + ($i) + '++) { if (' + ($data) + '[schema' + ($lvl) + '[' + ($i) + ']] === undefined) { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } '; - if ($isData) { - out += ' } '; - } - } else { - var arr3 = $required; - if (arr3) { - var $property, $i = -1, - l3 = arr3.length - 1; - while ($i < l3) { - $property = arr3[$i += 1]; - var $prop = it.util.getProperty($property), - $missingProperty = it.util.escapeQuotes($property); - if (it.opts._errorDataPathProperty) { - it.errorPath = it.util.getPath($currentErrorPath, $property, it.opts.jsonPointers); - } - out += ' if (' + ($data) + ($prop) + ' === undefined) { var err = '; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \''; - if (it.opts._errorDataPathProperty) { - out += 'is a required property'; - } else { - out += 'should have required property \\\'' + ($missingProperty) + '\\\''; - } - out += '\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; - } - } - } - } - it.errorPath = $currentErrorPath; - } else if ($breakOnError) { - out += ' if (true) {'; - } - return out; - } - - },{}],36:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_switch(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $errs = 'errs__' + $lvl; - var $it = it.util.copy(it); - var $closingBraces = ''; - $it.level++; - var $ifPassed = 'ifPassed' + it.level, - $shouldContinue; - out += 'var ' + ($ifPassed) + ';'; - var arr1 = $schema; - if (arr1) { - var $sch, $caseIndex = -1, - l1 = arr1.length - 1; - while ($caseIndex < l1) { - $sch = arr1[$caseIndex += 1]; - if ($caseIndex && !$shouldContinue) { - out += ' if (!' + ($ifPassed) + ') { '; - $closingBraces += '}'; - } - if ($sch.if && it.util.schemaHasRules($sch.if, it.RULES.all)) { - out += ' var ' + ($errs) + ' = errors; '; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - $it.createErrors = false; - $it.schema = $sch.if; - $it.schemaPath = $schemaPath + '[' + $caseIndex + '].if'; - $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/if'; - out += ' ' + (it.validate($it)) + ' '; - $it.createErrors = true; - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($ifPassed) + ' = valid' + ($it.level) + '; if (' + ($ifPassed) + ') { '; - if (typeof $sch.then == 'boolean') { - if ($sch.then === false) { - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'switch') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { caseIndex: ' + ($caseIndex) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should pass "switch" keyword validation\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - } - out += ' var valid' + ($it.level) + ' = ' + ($sch.then) + '; '; - } else { - $it.schema = $sch.then; - $it.schemaPath = $schemaPath + '[' + $caseIndex + '].then'; - $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/then'; - out += ' ' + (it.validate($it)) + ' '; - } - out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } } '; - } else { - out += ' ' + ($ifPassed) + ' = true; '; - if (typeof $sch.then == 'boolean') { - if ($sch.then === false) { - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'switch') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { caseIndex: ' + ($caseIndex) + ' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should pass "switch" keyword validation\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - } - out += ' var valid' + ($it.level) + ' = ' + ($sch.then) + '; '; - } else { - $it.schema = $sch.then; - $it.schemaPath = $schemaPath + '[' + $caseIndex + '].then'; - $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/then'; - out += ' ' + (it.validate($it)) + ' '; - } - } - $shouldContinue = $sch.continue - } - } - out += '' + ($closingBraces) + 'var ' + ($valid) + ' = valid' + ($it.level) + '; '; - out = it.util.cleanUpCode(out); - return out; - } - - },{}],37:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_uniqueItems(it, $keyword) { - var out = ' '; - var $lvl = it.level; - var $dataLvl = it.dataLevel; - var $schema = it.schema[$keyword]; - var $schemaPath = it.schemaPath + '.' + $keyword; - var $errSchemaPath = it.errSchemaPath + '/' + $keyword; - var $breakOnError = !it.opts.allErrors; - var $errorKeyword; - var $data = 'data' + ($dataLvl || ''); - var $valid = 'valid' + $lvl; - var $isData = it.opts.v5 && $schema.$data; - var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; - if ($isData) { - out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; - $schemaValue = 'schema' + $lvl; - } - if (($schema || $isData) && it.opts.uniqueItems !== false) { - if ($isData) { - out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'boolean\') ' + ($valid) + ' = false; else { '; - } - out += ' var ' + ($valid) + ' = true; if (' + ($data) + '.length > 1) { var i = ' + ($data) + '.length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } } '; - if ($isData) { - out += ' } '; - } - out += ' if (!' + ($valid) + ') { '; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'uniqueItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { i: i, j: j } '; - if (it.opts.messages !== false) { - out += ' , message: \'should NOT have duplicate items (items ## \' + j + \' and \' + i + \' are identical)\' '; - } - if (it.opts.verbose) { - out += ' , schema: '; - if ($isData) { - out += 'validate.schema' + ($schemaPath); - } else { - out += '' + ($schema); - } - out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - out += ' } '; - if ($breakOnError) { - out += ' else { '; - } - } else { - if ($breakOnError) { - out += ' if (true) { '; - } - } - return out; - } - - },{}],38:[function(require,module,exports){ - 'use strict'; - module.exports = function generate_validate(it, $keyword) { - var out = ''; - if (it.isTop) { - var $top = it.isTop, - $lvl = it.level = 0, - $dataLvl = it.dataLevel = 0, - $data = 'data'; - it.rootId = it.resolve.fullPath(it.root.schema.id); - it.baseId = it.baseId || it.rootId; - delete it.isTop; - if (it.opts.v5) it.dataPathArr = [undefined]; - out += ' validate = function (data, dataPath) { \'use strict\'; var vErrors = null; '; - out += ' var errors = 0; '; - } else { - var $lvl = it.level, - $dataLvl = it.dataLevel, - $data = 'data' + ($dataLvl || ''); - if (it.schema.id) it.baseId = it.resolve.url(it.baseId, it.schema.id); - out += ' var errs_' + ($lvl) + ' = errors;'; - } - var $valid = 'valid' + $lvl, - $breakOnError = !it.opts.allErrors, - $closingBraces1 = '', - $closingBraces2 = '', - $errorKeyword; - var $typeSchema = it.schema.type; - var arr1 = it.RULES; - if (arr1) { - var $rulesGroup, i1 = -1, - l1 = arr1.length - 1; - while (i1 < l1) { - $rulesGroup = arr1[i1 += 1]; - if ($shouldUseGroup($rulesGroup)) { - if ($rulesGroup.type) { - out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data)) + ') { '; - } - if (it.opts.useDefaults && !it.compositeRule) { - if ($rulesGroup.type == 'object' && it.schema.properties) { - var $schema = it.schema.properties, - $schemaKeys = Object.keys($schema); - var arr2 = $schemaKeys; - if (arr2) { - var $propertyKey, i2 = -1, - l2 = arr2.length - 1; - while (i2 < l2) { - $propertyKey = arr2[i2 += 1]; - var $sch = $schema[$propertyKey]; - if ($sch.default !== undefined) { - var $passData = $data + it.util.getProperty($propertyKey); - out += ' if (' + ($passData) + ' === undefined) ' + ($passData) + ' = ' + (it.useDefault($sch.default)) + '; '; - } - } - } - } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) { - var arr3 = it.schema.items; - if (arr3) { - var $sch, $i = -1, - l3 = arr3.length - 1; - while ($i < l3) { - $sch = arr3[$i += 1]; - if ($sch.default !== undefined) { - var $passData = $data + '[' + $i + ']'; - out += ' if (' + ($passData) + ' === undefined) ' + ($passData) + ' = ' + (it.useDefault($sch.default)) + '; '; - } - } - } - } - } - var arr4 = $rulesGroup.rules; - if (arr4) { - var $rule, i4 = -1, - l4 = arr4.length - 1; - while (i4 < l4) { - $rule = arr4[i4 += 1]; - if ($shouldUseRule($rule)) { - if ($rule.custom) { - var $schema = it.schema[$rule.keyword], - $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it), - $ruleErrs = $ruleValidate.code + '.errors', - $schemaPath = it.schemaPath + '.' + $rule.keyword, - $errSchemaPath = it.errSchemaPath + '/' + $rule.keyword, - $errs = 'errs' + $lvl, - $i = 'i' + $lvl, - $ruleErr = 'ruleErr' + $lvl, - $rDef = $rule.definition, - $inline = $rDef.inline, - $macro = $rDef.macro; - if (!($inline || $macro)) { - out += '' + ($ruleErrs) + ' = null;'; - } - out += 'var ' + ($errs) + ' = errors;'; - if ($inline && $rDef.statements) { - out += ' ' + ($ruleValidate.validate); - } else if ($macro) { - var $it = it.util.copy(it); - $it.level++; - $it.schema = $ruleValidate.validate; - $it.schemaPath = ''; - var $wasComposite = it.compositeRule; - it.compositeRule = $it.compositeRule = true; - var $code = it.validate($it).replace(/validate\.schema/g, $ruleValidate.code); - it.compositeRule = $it.compositeRule = $wasComposite; - out += ' ' + ($code); - } - out += 'if (! '; - if ($inline) { - if ($rDef.statements) { - out += ' valid' + ($lvl) + ' '; - } else { - out += ' (' + ($ruleValidate.validate) + ') '; - } - } else if ($macro) { - out += ' valid' + ($it.level) + ' '; - } else { - out += ' ' + ($ruleValidate.code) + '.call(self '; - if ($rDef.compile) { - out += ' , ' + ($data) + ' '; - } else { - out += ' , validate.schema' + ($schemaPath) + ' , ' + ($data) + ' '; - if ($ruleValidate.validate.length > 2) { - out += ' , validate.schema' + (it.schemaPath) + ' '; - } - } - out += ' ) '; - } - out += ') { '; - $errorKeyword = $rule.keyword; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; - var $$outStack = $$outStack || []; - $$outStack.push(out); - out = ''; /* istanbul ignore else */ - if (it.createErrors !== false) { - out += ' { keyword: \'' + ($errorKeyword || 'custom') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { keyword: \'' + ($rule.keyword) + '\' } '; - if (it.opts.messages !== false) { - out += ' , message: \'should pass "' + ($rule.keyword) + '" keyword validation\' '; - } - if (it.opts.verbose) { - out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; - } - out += ' } '; - } else { - out += ' {} '; - } - var __err = out; - out = $$outStack.pop(); - if (!it.compositeRule && $breakOnError) { - out += ' validate.errors = [' + (__err) + ']; return false; '; - } else { - out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; - } - var def_customError = out; - out = $$outStack.pop(); - if ($inline) { - if ($rDef.errors) { - if ($rDef.errors != 'full') { - out += ' for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '= '0' && ch <= '9') { - string += ch; - next(); - } - if (ch === '.') { - string += '.'; - while (next() && ch >= '0' && ch <= '9') { - string += ch; - } - } - if (ch === 'e' || ch === 'E') { - string += ch; - next(); - if (ch === '-' || ch === '+') { - string += ch; - next(); - } - while (ch >= '0' && ch <= '9') { - string += ch; - next(); - } - } - number = +string; - if (!isFinite(number)) { - error("Bad number"); - } else { - return number; - } - }, - - string = function () { - // Parse a string value. - var hex, - i, - string = '', - uffff; - - // When parsing for string values, we must look for " and \ characters. - if (ch === '"') { - while (next()) { - if (ch === '"') { - next(); - return string; - } else if (ch === '\\') { - next(); - if (ch === 'u') { - uffff = 0; - for (i = 0; i < 4; i += 1) { - hex = parseInt(next(), 16); - if (!isFinite(hex)) { - break; - } - uffff = uffff * 16 + hex; - } - string += String.fromCharCode(uffff); - } else if (typeof escapee[ch] === 'string') { - string += escapee[ch]; - } else { - break; - } - } else { - string += ch; - } - } - } - error("Bad string"); - }, - - white = function () { - - // Skip whitespace. - - while (ch && ch <= ' ') { - next(); - } - }, - - word = function () { - - // true, false, or null. - - switch (ch) { - case 't': - next('t'); - next('r'); - next('u'); - next('e'); - return true; - case 'f': - next('f'); - next('a'); - next('l'); - next('s'); - next('e'); - return false; - case 'n': - next('n'); - next('u'); - next('l'); - next('l'); - return null; - } - error("Unexpected '" + ch + "'"); - }, - - value, // Place holder for the value function. - - array = function () { - - // Parse an array value. - - var array = []; - - if (ch === '[') { - next('['); - white(); - if (ch === ']') { - next(']'); - return array; // empty array - } - while (ch) { - array.push(value()); - white(); - if (ch === ']') { - next(']'); - return array; - } - next(','); - white(); - } - } - error("Bad array"); - }, - - object = function () { - - // Parse an object value. - - var key, - object = {}; - - if (ch === '{') { - next('{'); - white(); - if (ch === '}') { - next('}'); - return object; // empty object - } - while (ch) { - key = string(); - white(); - next(':'); - if (Object.hasOwnProperty.call(object, key)) { - error('Duplicate key "' + key + '"'); - } - object[key] = value(); - white(); - if (ch === '}') { - next('}'); - return object; - } - next(','); - white(); - } - } - error("Bad object"); - }; - - value = function () { - - // Parse a JSON value. It could be an object, an array, a string, a number, - // or a word. - - white(); - switch (ch) { - case '{': - return object(); - case '[': - return array(); - case '"': - return string(); - case '-': - return number(); - default: - return ch >= '0' && ch <= '9' ? number() : word(); - } - }; - - // Return the json_parse function. It will have access to all of the above - // functions and variables. - - module.exports = function (source, reviver) { - var result; - - text = source; - at = 0; - ch = ' '; - result = value(); - white(); - if (ch) { - error("Syntax error"); - } - - // If there is a reviver function, we recursively walk the new structure, - // passing each name/value pair to the reviver function for possible - // transformation, starting with a temporary root object that holds the result - // in an empty key. If there is not a reviver function, we simply return the - // result. - - return typeof reviver === 'function' ? (function walk(holder, key) { - var k, v, value = holder[key]; - if (value && typeof value === 'object') { - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = walk(value, k); - if (v !== undefined) { - value[k] = v; - } else { - delete value[k]; - } - } - } - } - return reviver.call(holder, key, value); - }({'': result}, '')) : result; - }; - - },{}],46:[function(require,module,exports){ - var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - gap, - indent, - meta = { // table of character substitutions - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"' : '\\"', - '\\': '\\\\' - }, - rep; - - function quote(string) { - // If the string contains no control characters, no quote characters, and no - // backslash characters, then we can safely slap some quotes around it. - // Otherwise we must also replace the offending characters with safe escape - // sequences. - - escapable.lastIndex = 0; - return escapable.test(string) ? '"' + string.replace(escapable, function (a) { - var c = meta[a]; - return typeof c === 'string' ? c : - '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + '"' : '"' + string + '"'; - } - - function str(key, holder) { - // Produce a string from holder[key]. - var i, // The loop counter. - k, // The member key. - v, // The member value. - length, - mind = gap, - partial, - value = holder[key]; - - // If the value has a toJSON method, call it to obtain a replacement value. - if (value && typeof value === 'object' && - typeof value.toJSON === 'function') { - value = value.toJSON(key); - } - - // If we were called with a replacer function, then call the replacer to - // obtain a replacement value. - if (typeof rep === 'function') { - value = rep.call(holder, key, value); - } - - // What happens next depends on the value's type. - switch (typeof value) { - case 'string': - return quote(value); - - case 'number': - // JSON numbers must be finite. Encode non-finite numbers as null. - return isFinite(value) ? String(value) : 'null'; - - case 'boolean': - case 'null': - // If the value is a boolean or null, convert it to a string. Note: - // typeof null does not produce 'null'. The case is included here in - // the remote chance that this gets fixed someday. - return String(value); - - case 'object': - if (!value) return 'null'; - gap += indent; - partial = []; - - // Array.isArray - if (Object.prototype.toString.apply(value) === '[object Array]') { - length = value.length; - for (i = 0; i < length; i += 1) { - partial[i] = str(i, value) || 'null'; - } - - // Join all of the elements together, separated with commas, and - // wrap them in brackets. - v = partial.length === 0 ? '[]' : gap ? - '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : - '[' + partial.join(',') + ']'; - gap = mind; - return v; - } - - // If the replacer is an array, use it to select the members to be - // stringified. - if (rep && typeof rep === 'object') { - length = rep.length; - for (i = 0; i < length; i += 1) { - k = rep[i]; - if (typeof k === 'string') { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - else { - // Otherwise, iterate through all of the keys in the object. - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - - // Join all of the member texts together, separated with commas, - // and wrap them in braces. - - v = partial.length === 0 ? '{}' : gap ? - '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : - '{' + partial.join(',') + '}'; - gap = mind; - return v; - } - } - - module.exports = function (value, replacer, space) { - var i; - gap = ''; - indent = ''; - - // If the space parameter is a number, make an indent string containing that - // many spaces. - if (typeof space === 'number') { - for (i = 0; i < space; i += 1) { - indent += ' '; - } - } - // If the space parameter is a string, it will be used as the indent string. - else if (typeof space === 'string') { - indent = space; - } - - // If there is a replacer, it must be a function or an array. - // Otherwise, throw an error. - rep = replacer; - if (replacer && typeof replacer !== 'function' - && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) { - throw new Error('JSON.stringify'); - } - - // Make a fake root object containing our value under the key of ''. - // Return the result of stringifying the value. - return str('', {'': value}); - }; - - },{}],"ajv":[function(require,module,exports){ - 'use strict'; - - var compileSchema = require('./compile') - , resolve = require('./compile/resolve') - , Cache = require('./cache') - , SchemaObject = require('./compile/schema_obj') - , stableStringify = require('json-stable-stringify') - , formats = require('./compile/formats') - , rules = require('./compile/rules') - , v5 = require('./v5'); + var compileSchema = __webpack_require__(22) + , resolve = __webpack_require__(13) + , Cache = __webpack_require__(14) + , SchemaObject = __webpack_require__(15) + , stableStringify = __webpack_require__(24) + , formats = __webpack_require__(16) + , rules = __webpack_require__(17) + , v5 = __webpack_require__(18); module.exports = Ajv; - Ajv.prototype.compileAsync = require('./async'); - Ajv.prototype.addKeyword = require('./keyword'); + Ajv.prototype.compileAsync = __webpack_require__(19); + Ajv.prototype.addKeyword = __webpack_require__(20); var META_SCHEMA_ID = 'http://json-schema.org/draft-04/schema'; var SCHEMA_URI_FORMAT = /^(?:(?:[a-z][a-z0-9+-.]*:)?\/\/)?[^\s]*$/i; @@ -9439,7 +3167,7 @@ return /******/ (function(modules) { // webpackBootstrap function addInitialSchemas() { if (self.opts.meta !== false) { - var metaSchema = require('./refs/json-schema-draft-04.json'); + var metaSchema = __webpack_require__(28); addMetaSchema(metaSchema, META_SCHEMA_ID, true); self._refs['http://json-schema.org/schema'] = META_SCHEMA_ID; } @@ -9465,9 +3193,6 @@ return /******/ (function(modules) { // webpackBootstrap } } - },{"./async":7,"./cache":8,"./compile":12,"./compile/formats":11,"./compile/resolve":13,"./compile/rules":14,"./compile/schema_obj":15,"./keyword":39,"./refs/json-schema-draft-04.json":40,"./v5":42,"json-stable-stringify":43}]},{},[])("ajv") - }); - /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) /***/ }, /* 5 */ @@ -10197,6 +3922,7 @@ return /******/ (function(modules) { // webpackBootstrap } if (item.click) { button.onclick = function () { + event.preventDefault(); me.hide(); item.click(); }; @@ -10237,7 +3963,8 @@ return /******/ (function(modules) { // webpackBootstrap } // attach a handler to expand/collapse the submenu - buttonSubmenu.onclick = function () { + buttonSubmenu.onclick = function (event) { + event.preventDefault(); me._onExpandItem(domItem); buttonSubmenu.focus(); }; @@ -10582,7 +4309,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var ContextMenu = __webpack_require__(8); - var appendNodeFactory = __webpack_require__(13); + var appendNodeFactory = __webpack_require__(21); var util = __webpack_require__(3); /** @@ -14099,12 +7826,12 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { // load brace - var ace = __webpack_require__(15); + var ace = __webpack_require__(25); // load required ace modules - __webpack_require__(16); - __webpack_require__(17); - __webpack_require__(14); + __webpack_require__(26); + __webpack_require__(27); + __webpack_require__(23); module.exports = ace; @@ -14534,6 +8261,695 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 13 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var url = __webpack_require__(37) + , equal = __webpack_require__(29) + , util = __webpack_require__(30) + , SchemaObject = __webpack_require__(15); + + module.exports = resolve; + + resolve.normalizeId = normalizeId; + resolve.fullPath = getFullPath; + resolve.url = resolveUrl; + resolve.ids = resolveIds; + resolve.inlineRef = inlineRef; + + function resolve(compile, root, ref) { + /* jshint validthis: true */ + var refVal = this._refs[ref]; + if (typeof refVal == 'string') { + if (this._refs[refVal]) refVal = this._refs[refVal]; + else return resolve.call(this, compile, root, refVal); + } + + refVal = refVal || this._schemas[ref]; + if (refVal instanceof SchemaObject) + return inlineRef(refVal.schema, this.opts.inlineRefs) + ? refVal.schema + : refVal.validate || this._compile(refVal); + + var res = _resolve.call(this, root, ref); + var schema, v, baseId; + if (res) { + schema = res.schema; + root = res.root; + baseId = res.baseId; + } + + if (schema instanceof SchemaObject) + v = schema.validate || compile.call(this, schema.schema, root, undefined, baseId); + else if (schema) + v = inlineRef(schema, this.opts.inlineRefs) + ? schema + : compile.call(this, schema, root, undefined, baseId); + + return v; + } + + + function _resolve(root, ref) { + /* jshint validthis: true */ + var p = url.parse(ref, false, true) + , refPath = _getFullPath(p) + , baseId = getFullPath(root.schema.id); + if (refPath !== baseId) { + var id = normalizeId(refPath); + var refVal = this._refs[id]; + if (typeof refVal == 'string') { + return resolveRecursive.call(this, root, refVal, p); + } else if (refVal instanceof SchemaObject) { + if (!refVal.validate) this._compile(refVal); + root = refVal; + } else { + refVal = this._schemas[id]; + if (refVal instanceof SchemaObject) { + if (!refVal.validate) this._compile(refVal); + if (id == normalizeId(ref)) + return { schema: refVal, root: root, baseId: baseId }; + root = refVal; + } + } + if (!root.schema) return; + baseId = getFullPath(root.schema.id); + } + return getJsonPointer.call(this, p, baseId, root.schema, root); + } + + + function resolveRecursive(root, ref, parsedRef) { + /* jshint validthis: true */ + var res = _resolve.call(this, root, ref); + if (res) { + var schema = res.schema; + var baseId = res.baseId; + root = res.root; + if (schema.id) baseId = resolveUrl(baseId, schema.id); + return getJsonPointer.call(this, parsedRef, baseId, schema, root); + } + } + + + var PREVENT_SCOPE_CHANGE = util.toHash(['properties', 'patternProperties', 'enum', 'dependencies', 'definitions']); + function getJsonPointer(parsedRef, baseId, schema, root) { + /* jshint validthis: true */ + parsedRef.hash = parsedRef.hash || ''; + if (parsedRef.hash.slice(0,2) != '#/') return; + var parts = parsedRef.hash.split('/'); + + for (var i = 1; i < parts.length; i++) { + var part = parts[i]; + if (part) { + part = util.unescapeFragment(part); + schema = schema[part]; + if (!schema) break; + if (schema.id && !PREVENT_SCOPE_CHANGE[part]) baseId = resolveUrl(baseId, schema.id); + if (schema.$ref) { + var $ref = resolveUrl(baseId, schema.$ref); + var res = _resolve.call(this, root, $ref); + if (res) { + schema = res.schema; + root = res.root; + baseId = res.baseId; + } + } + } + } + if (schema && schema != root.schema) + return { schema: schema, root: root, baseId: baseId }; + } + + + var SIMPLE_INLINED = util.toHash([ + 'type', 'format', 'pattern', + 'maxLength', 'minLength', + 'maxProperties', 'minProperties', + 'maxItems', 'minItems', + 'maximum', 'minimum', + 'uniqueItems', 'multipleOf', + 'required', 'enum' + ]); + function inlineRef(schema, limit) { + if (limit === undefined) return checkNoRef(schema); + else if (limit) return countKeys(schema) <= limit; + } + + + function checkNoRef(schema) { + var item; + if (Array.isArray(schema)) { + for (var i=0; i= 1 && month <= 12 && day >= 1 && day <= DAYS[month]; + } + + + function time(str, full) { + var matches = str.match(TIME); + if (!matches) return false; + + var hour = matches[1]; + var minute = matches[2]; + var second = matches[3]; + var timeZone = matches[5]; + return hour <= 23 && minute <= 59 && second <= 59 && (!full || timeZone); + } + + + var DATE_TIME_SEPARATOR = /t|\s/i; + function date_time(str) { + // http://tools.ietf.org/html/rfc3339#section-5.6 + var dateTime = str.split(DATE_TIME_SEPARATOR); + return date(dateTime[0]) && time(dateTime[1], true); + } + + + function hostname(str) { + // http://tools.ietf.org/html/rfc1034#section-3.5 + return str.length <= 255 && HOSTNAME.test(str); + } + + + var NOT_URI_FRAGMENT = /\/|\:/; + function uri(str) { + // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "." + return NOT_URI_FRAGMENT.test(str) && URI.test(str); + } + + + function regex(str) { + try { + new RegExp(str); + return true; + } catch(e) { + return false; + } + } + + + function compareDate(d1, d2) { + if (!(d1 && d2)) return; + if (d1 > d2) return 1; + if (d1 < d2) return -1; + if (d1 === d2) return 0; + } + + + function compareTime(t1, t2) { + if (!(t1 && t2)) return; + t1 = t1.match(TIME); + t2 = t2.match(TIME); + if (!(t1 && t2)) return; + t1 = t1[1] + t1[2] + t1[3] + (t1[4]||''); + t2 = t2[1] + t2[2] + t2[3] + (t2[4]||''); + if (t1 > t2) return 1; + if (t1 < t2) return -1; + if (t1 === t2) return 0; + } + + + function compareDateTime(dt1, dt2) { + if (!(dt1 && dt2)) return; + dt1 = dt1.split(DATE_TIME_SEPARATOR); + dt2 = dt2.split(DATE_TIME_SEPARATOR); + var res = compareDate(dt1[0], dt2[0]); + if (res === undefined) return; + return res || compareTime(dt1[1], dt2[1]); + } + + +/***/ }, +/* 17 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var ruleModules = __webpack_require__(31) + , util = __webpack_require__(30); + + module.exports = function rules() { + var RULES = [ + { type: 'number', + rules: [ 'maximum', 'minimum', 'multipleOf'] }, + { type: 'string', + rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] }, + { type: 'array', + rules: [ 'maxItems', 'minItems', 'uniqueItems', 'items' ] }, + { type: 'object', + rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'properties' ] }, + { rules: [ '$ref', 'enum', 'not', 'anyOf', 'oneOf', 'allOf' ] } + ]; + + RULES.all = [ 'type', 'additionalProperties', 'patternProperties' ]; + RULES.keywords = [ 'additionalItems', '$schema', 'id', 'title', 'description', 'default' ]; + RULES.types = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ]; + + RULES.forEach(function (group) { + group.rules = group.rules.map(function (keyword) { + RULES.all.push(keyword); + return { + keyword: keyword, + code: ruleModules[keyword] + }; + }); + }); + + RULES.keywords = util.toHash(RULES.all.concat(RULES.keywords)); + RULES.all = util.toHash(RULES.all); + RULES.types = util.toHash(RULES.types); + + return RULES; + }; + + +/***/ }, +/* 18 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var META_SCHEMA_ID = 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json'; + + module.exports = { + enable: enableV5, + META_SCHEMA_ID: META_SCHEMA_ID + }; + + + function enableV5(ajv) { + if (ajv.opts.meta !== false) { + var metaSchema = __webpack_require__(32); + ajv.addMetaSchema(metaSchema, META_SCHEMA_ID); + } + ajv.addKeyword('constant', { inline: __webpack_require__(33), statements: true, errors: 'full' }); + ajv.addKeyword('contains', { type: 'array', macro: containsMacro }); + + var formatLimit = __webpack_require__(34); + ajv.addKeyword('formatMaximum', { type: 'string', inline: formatLimit, statements: true, errors: 'full' }); + ajv.addKeyword('formatMinimum', { type: 'string', inline: formatLimit, statements: true, errors: 'full' }); + ajv.addKeyword('exclusiveFormatMaximum'); + ajv.addKeyword('exclusiveFormatMinimum'); + + ajv.addKeyword('patternGroups'); // implemented in properties.jst + ajv.addKeyword('switch', { inline: __webpack_require__(35), statements: true, errors: 'full' }); + } + + function containsMacro(schema) { + return { + "not": { "items": { "not": schema } } + }; + } + + +/***/ }, +/* 19 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + /** + * Create validating function for passed schema with asynchronous loading of missing schemas. + * `loadSchema` option should be a function that accepts schema uri and node-style callback. + * @param {String|Object} schema + * @param {Function} callback node-style callback, it is always called with 2 parameters: error (or null) and validating function. + */ + module.exports = function compileAsync(schema, callback) { + var schemaObj; + var self = this; + try { + schemaObj = this._addSchema(schema); + } catch(e) { + setTimeout(function() { callback(e); }); + return; + } + if (schemaObj.validate) + setTimeout(function() { callback(null, schemaObj.validate); }); + else { + if (typeof this.opts.loadSchema != 'function') + throw new Error('options.loadSchema should be a function'); + _compileAsync(schema, callback, true); + } + + + function _compileAsync(schema, callback, firstCall) { + var validate; + try { validate = self.compile(schema); } + catch(e) { + if (e.missingSchema) loadMissingSchema(e); + else deferCallback(e); + return; + } + deferCallback(null, validate); + + function loadMissingSchema(e) { + var ref = e.missingSchema; + if (self._refs[ref] || self._schemas[ref]) + return callback(new Error('Schema ' + ref + ' is loaded but' + e.missingRef + 'cannot be resolved')); + var _callbacks = self._loadingSchemas[ref]; + if (_callbacks) { + if (typeof _callbacks == 'function') + self._loadingSchemas[ref] = [_callbacks, schemaLoaded]; + else + _callbacks[_callbacks.length] = schemaLoaded; + } else { + self._loadingSchemas[ref] = schemaLoaded; + self.opts.loadSchema(ref, function (err, sch) { + var _callbacks = self._loadingSchemas[ref]; + delete self._loadingSchemas[ref]; + if (typeof _callbacks == 'function') + _callbacks(err, sch); + else + for (var i=0; i<_callbacks.length; i++) + _callbacks[i](err, sch); + }); + } + + function schemaLoaded(err, sch) { + if (err) callback(err); + else { + if (!(self._refs[ref] || self._schemas[ref])) { + try { + self.addSchema(sch, ref); + } catch(e) { + callback(e); + return; + } + } + _compileAsync(schema, callback); + } + } + } + + function deferCallback(err, validate) { + if (firstCall) setTimeout(function() { callback(err, validate); }); + else callback(err, validate); + } + } + }; + + +/***/ }, +/* 20 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var IDENTIFIER = /^[a-z_$][a-z0-9_$]*$/i; + + /** + * Define custom keyword + * @param {String} keyword custom keyword, should be a valid identifier, should be different from all standard, custom and macro keywords. + * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`. + */ + module.exports = function addKeyword(keyword, definition) { + var self = this; + if (this.RULES.keywords[keyword]) + throw new Error('Keyword ' + keyword + ' is already defined'); + + if (!IDENTIFIER.test(keyword)) + throw new Error('Keyword ' + keyword + ' is not a valid identifier'); + + if (definition) { + var dataType = definition.type; + if (Array.isArray(dataType)) { + var i, len = dataType.length; + for (i=0; i= 0xD800 && value <= 0xDBFF && pos < len) { + // high surrogate, and there is a next character + value = str.charCodeAt(pos); + if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate + } + } + return length; + } + + + function varOccurences(str, dataVar) { + dataVar += '[^0-9]'; + var matches = str.match(new RegExp(dataVar, 'g')); + return matches ? matches.length : 0; + } + + + function varReplace(str, dataVar, expr) { + dataVar += '([^0-9])'; + expr = expr.replace(/\$/g, '$$$$'); + return str.replace(new RegExp(dataVar, 'g'), expr + '$1'); + } + + + var EMPTY_ELSE = /else\s*{\s*}/g + , EMPTY_IF_NO_ELSE = /if\s*\([^)]+\)\s*\{\s*\}(?!\s*else)/g + , EMPTY_IF_WITH_ELSE = /if\s*\(([^)]+)\)\s*\{\s*\}\s*else(?!\s*if)/g; + function cleanUpCode(out) { + return out.replace(EMPTY_ELSE, '') + .replace(EMPTY_IF_NO_ELSE, '') + .replace(EMPTY_IF_WITH_ELSE, 'if (!($1))'); + } + + + var ERRORS_REGEXP = /[^v\.]errors/g + , REMOVE_ERRORS = /var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g + , RETURN_VALID = 'return errors === 0;' + , RETURN_TRUE = 'validate.errors = null; return true;'; + + function cleanUpVarErrors(out) { + var matches = out.match(ERRORS_REGEXP); + if (matches && matches.length === 2) + return out.replace(REMOVE_ERRORS, '') + .replace(RETURN_VALID, RETURN_TRUE); + else + return out; + } + + + function schemaHasRules(schema, rules) { + for (var key in schema) if (rules[key]) return true; + } + + + function toQuotedString(str) { + return '\'' + escapeQuotes(str) + '\''; + } + + + function getPathExpr(currentPath, expr, jsonPointers, isNumber) { + var path = jsonPointers // false by default + ? '\'/\' + ' + expr + (isNumber ? '' : '.replace(/~/g, \'~0\').replace(/\\//g, \'~1\')') + : (isNumber ? '\'[\' + ' + expr + ' + \']\'' : '\'[\\\'\' + ' + expr + ' + \'\\\']\''); + return joinPaths(currentPath, path); + } + + + function getPath(currentPath, prop, jsonPointers) { + var path = jsonPointers // false by default + ? toQuotedString('/' + escapeJsonPointer(prop)) + : toQuotedString(getProperty(prop)); + return joinPaths(currentPath, path); + } + + + var RELATIVE_JSON_POINTER = /^([0-9]+)((?:[^0-9]|~0|~1)*)$/; + function getData($data, lvl, paths) { + var matches = $data.match(RELATIVE_JSON_POINTER); + if (!matches) throw new Error('Invalid relative JSON-pointer: ' + $data); + var up = +matches[1]; + var jsonPointer = matches[2]; + if (jsonPointer == '#') { + if (up >= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl); + return paths[lvl - up]; + } else { + if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl); + var data = 'data' + ((lvl - up) || '') + , expr = data; + var segments = jsonPointer.split('/'); + for (var i=0; i', + $result = 'result' + $lvl; + var $isData = it.opts.v5 && $schema.$data; + var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; + $schemaValue = 'schema' + $lvl; + } + if ($isDataExcl) { + var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), + $exclusive = 'exclusive' + $lvl, + $opExpr = 'op' + $lvl, + $opStr = '\' + ' + $opExpr + ' + \''; + out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; '; + $schemaValueExcl = 'schemaExcl' + $lvl; + out += ' if (typeof ' + ($schemaValueExcl) + ' != \'boolean\' && ' + ($schemaValueExcl) + ' !== undefined) { ' + ($valid) + ' = false; '; + var $errorKeyword = $exclusiveKeyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_exclusiveFormatLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($breakOnError) { + $closingBraces += '}'; + out += ' else { '; + } + if ($isData) { + out += ' if (' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'string\') ' + ($valid) + ' = false; else { '; + $closingBraces += '}'; + } + if ($isDataFormat) { + out += ' if (!' + ($compare) + ') ' + ($valid) + ' = true; else { '; + $closingBraces += '}'; + } + out += ' var ' + ($result) + ' = ' + ($compare) + '(' + ($data) + ', '; + if ($isData) { + out += '' + ($schemaValue); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' ); if (' + ($result) + ' === undefined) ' + ($valid) + ' = false; var exclusive' + ($lvl) + ' = ' + ($schemaValueExcl) + ' === true; if (' + ($valid) + ' === undefined) { ' + ($valid) + ' = exclusive' + ($lvl) + ' ? ' + ($result) + ' ' + ($op) + ' 0 : ' + ($result) + ' ' + ($op) + '= 0; } if (!' + ($valid) + ') var op' + ($lvl) + ' = exclusive' + ($lvl) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\';'; + } else { + var $exclusive = $schemaExcl === true, + $opStr = $op; + if (!$exclusive) $opStr += '='; + var $opExpr = '\'' + $opStr + '\''; + if ($isData) { + out += ' if (' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'string\') ' + ($valid) + ' = false; else { '; + $closingBraces += '}'; + } + if ($isDataFormat) { + out += ' if (!' + ($compare) + ') ' + ($valid) + ' = true; else { '; + $closingBraces += '}'; + } + out += ' var ' + ($result) + ' = ' + ($compare) + '(' + ($data) + ', '; + if ($isData) { + out += '' + ($schemaValue); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' ); if (' + ($result) + ' === undefined) ' + ($valid) + ' = false; if (' + ($valid) + ' === undefined) ' + ($valid) + ' = ' + ($result) + ' ' + ($op); + if (!$exclusive) { + out += '='; + } + out += ' 0;'; + } + out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_formatLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { limit: '; + if ($isData) { + out += '' + ($schemaValue); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be ' + ($opStr) + ' "'; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + (it.util.escapeQuotes($schema)); + } + out += '"\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '}'; + return out; + } + + +/***/ }, +/* 35 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + module.exports = function generate_switch(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $ifPassed = 'ifPassed' + it.level, + $shouldContinue; + out += 'var ' + ($ifPassed) + ';'; + var arr1 = $schema; + if (arr1) { + var $sch, $caseIndex = -1, + l1 = arr1.length - 1; + while ($caseIndex < l1) { + $sch = arr1[$caseIndex += 1]; + if ($caseIndex && !$shouldContinue) { + out += ' if (!' + ($ifPassed) + ') { '; + $closingBraces += '}'; + } + if ($sch.if && it.util.schemaHasRules($sch.if, it.RULES.all)) { + out += ' var ' + ($errs) + ' = errors; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + $it.createErrors = false; + $it.schema = $sch.if; + $it.schemaPath = $schemaPath + '[' + $caseIndex + '].if'; + $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/if'; + out += ' ' + (it.validate($it)) + ' '; + $it.createErrors = true; + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' ' + ($ifPassed) + ' = valid' + ($it.level) + '; if (' + ($ifPassed) + ') { '; + if (typeof $sch.then == 'boolean') { + if ($sch.then === false) { + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'switch') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { caseIndex: ' + ($caseIndex) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should pass "switch" keyword validation\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + } + out += ' var valid' + ($it.level) + ' = ' + ($sch.then) + '; '; + } else { + $it.schema = $sch.then; + $it.schemaPath = $schemaPath + '[' + $caseIndex + '].then'; + $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/then'; + out += ' ' + (it.validate($it)) + ' '; + } + out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } } '; + } else { + out += ' ' + ($ifPassed) + ' = true; '; + if (typeof $sch.then == 'boolean') { + if ($sch.then === false) { + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'switch') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { caseIndex: ' + ($caseIndex) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should pass "switch" keyword validation\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + } + out += ' var valid' + ($it.level) + ' = ' + ($sch.then) + '; '; + } else { + $it.schema = $sch.then; + $it.schemaPath = $schemaPath + '[' + $caseIndex + '].then'; + $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/then'; + out += ' ' + (it.validate($it)) + ' '; + } + } + $shouldContinue = $sch.continue + } + } + out += '' + ($closingBraces) + 'var ' + ($valid) + ' = valid' + ($it.level) + '; '; + out = it.util.cleanUpCode(out); + return out; + } + + +/***/ }, +/* 36 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + module.exports = function generate_validate(it, $keyword) { + var out = ''; + if (it.isTop) { + var $top = it.isTop, + $lvl = it.level = 0, + $dataLvl = it.dataLevel = 0, + $data = 'data'; + it.rootId = it.resolve.fullPath(it.root.schema.id); + it.baseId = it.baseId || it.rootId; + delete it.isTop; + if (it.opts.v5) it.dataPathArr = [undefined]; + out += ' validate = function (data, dataPath) { \'use strict\'; var vErrors = null; '; + out += ' var errors = 0; '; + } else { + var $lvl = it.level, + $dataLvl = it.dataLevel, + $data = 'data' + ($dataLvl || ''); + if (it.schema.id) it.baseId = it.resolve.url(it.baseId, it.schema.id); + out += ' var errs_' + ($lvl) + ' = errors;'; + } + var $valid = 'valid' + $lvl, + $breakOnError = !it.opts.allErrors, + $closingBraces1 = '', + $closingBraces2 = '', + $errorKeyword; + var $typeSchema = it.schema.type; + var arr1 = it.RULES; + if (arr1) { + var $rulesGroup, i1 = -1, + l1 = arr1.length - 1; + while (i1 < l1) { + $rulesGroup = arr1[i1 += 1]; + if ($shouldUseGroup($rulesGroup)) { + if ($rulesGroup.type) { + out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data)) + ') { '; + } + if (it.opts.useDefaults && !it.compositeRule) { + if ($rulesGroup.type == 'object' && it.schema.properties) { + var $schema = it.schema.properties, + $schemaKeys = Object.keys($schema); + var arr2 = $schemaKeys; + if (arr2) { + var $propertyKey, i2 = -1, + l2 = arr2.length - 1; + while (i2 < l2) { + $propertyKey = arr2[i2 += 1]; + var $sch = $schema[$propertyKey]; + if ($sch.default !== undefined) { + var $passData = $data + it.util.getProperty($propertyKey); + out += ' if (' + ($passData) + ' === undefined) ' + ($passData) + ' = ' + (it.useDefault($sch.default)) + '; '; + } + } + } + } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) { + var arr3 = it.schema.items; + if (arr3) { + var $sch, $i = -1, + l3 = arr3.length - 1; + while ($i < l3) { + $sch = arr3[$i += 1]; + if ($sch.default !== undefined) { + var $passData = $data + '[' + $i + ']'; + out += ' if (' + ($passData) + ' === undefined) ' + ($passData) + ' = ' + (it.useDefault($sch.default)) + '; '; + } + } + } + } + } + var arr4 = $rulesGroup.rules; + if (arr4) { + var $rule, i4 = -1, + l4 = arr4.length - 1; + while (i4 < l4) { + $rule = arr4[i4 += 1]; + if ($shouldUseRule($rule)) { + if ($rule.custom) { + var $schema = it.schema[$rule.keyword], + $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it), + $ruleErrs = $ruleValidate.code + '.errors', + $schemaPath = it.schemaPath + '.' + $rule.keyword, + $errSchemaPath = it.errSchemaPath + '/' + $rule.keyword, + $errs = 'errs' + $lvl, + $i = 'i' + $lvl, + $ruleErr = 'ruleErr' + $lvl, + $rDef = $rule.definition, + $inline = $rDef.inline, + $macro = $rDef.macro; + if (!($inline || $macro)) { + out += '' + ($ruleErrs) + ' = null;'; + } + out += 'var ' + ($errs) + ' = errors;'; + if ($inline && $rDef.statements) { + out += ' ' + ($ruleValidate.validate); + } else if ($macro) { + var $it = it.util.copy(it); + $it.level++; + $it.schema = $ruleValidate.validate; + $it.schemaPath = ''; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + var $code = it.validate($it).replace(/validate\.schema/g, $ruleValidate.code); + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' ' + ($code); + } + out += 'if (! '; + if ($inline) { + if ($rDef.statements) { + out += ' valid' + ($lvl) + ' '; + } else { + out += ' (' + ($ruleValidate.validate) + ') '; + } + } else if ($macro) { + out += ' valid' + ($it.level) + ' '; + } else { + out += ' ' + ($ruleValidate.code) + '.call(self '; + if ($rDef.compile) { + out += ' , ' + ($data) + ' '; + } else { + out += ' , validate.schema' + ($schemaPath) + ' , ' + ($data) + ' '; + if ($ruleValidate.validate.length > 2) { + out += ' , validate.schema' + (it.schemaPath) + ' '; + } + } + out += ' ) '; + } + out += ') { '; + $errorKeyword = $rule.keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'custom') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { keyword: \'' + ($rule.keyword) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should pass "' + ($rule.keyword) + '" keyword validation\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + var def_customError = out; + out = $$outStack.pop(); + if ($inline) { + if ($rDef.errors) { + if ($rDef.errors != 'full') { + out += ' for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '', '"', '`', ' ', '\r', '\n', '\t'], + + // RFC 2396: characters not allowed for various reasons. + unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), + + // Allowed by RFCs, but cause of XSS attacks. Always escape these. + autoEscape = ['\''].concat(unwise), + // Characters that are never ever allowed in a hostname. + // Note that any invalid chars are also handled, but these + // are the ones that are *expected* to be seen, so we fast-path + // them. + nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), + hostEndingChars = ['/', '?', '#'], + hostnameMaxLen = 255, + hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/, + hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/, + // protocols that can allow "unsafe" and "unwise" chars. + unsafeProtocol = { + 'javascript': true, + 'javascript:': true + }, + // protocols that never have a hostname. + hostlessProtocol = { + 'javascript': true, + 'javascript:': true + }, + // protocols that always contain a // bit. + slashedProtocol = { + 'http': true, + 'https': true, + 'ftp': true, + 'gopher': true, + 'file': true, + 'http:': true, + 'https:': true, + 'ftp:': true, + 'gopher:': true, + 'file:': true + }, + querystring = __webpack_require__(63); + + function urlParse(url, parseQueryString, slashesDenoteHost) { + if (url && isObject(url) && url instanceof Url) return url; + + var u = new Url; + u.parse(url, parseQueryString, slashesDenoteHost); + return u; + } + + Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) { + if (!isString(url)) { + throw new TypeError("Parameter 'url' must be a string, not " + typeof url); + } + + var rest = url; + + // trim before proceeding. + // This is to support parse stuff like " http://foo.com \n" + rest = rest.trim(); + + var proto = protocolPattern.exec(rest); + if (proto) { + proto = proto[0]; + var lowerProto = proto.toLowerCase(); + this.protocol = lowerProto; + rest = rest.substr(proto.length); + } + + // figure out if it's got a host + // user@server is *always* interpreted as a hostname, and url + // resolution will treat //foo/bar as host=foo,path=bar because that's + // how the browser resolves relative URLs. + if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { + var slashes = rest.substr(0, 2) === '//'; + if (slashes && !(proto && hostlessProtocol[proto])) { + rest = rest.substr(2); + this.slashes = true; + } + } + + if (!hostlessProtocol[proto] && + (slashes || (proto && !slashedProtocol[proto]))) { + + // there's a hostname. + // the first instance of /, ?, ;, or # ends the host. + // + // If there is an @ in the hostname, then non-host chars *are* allowed + // to the left of the last @ sign, unless some host-ending character + // comes *before* the @-sign. + // URLs are obnoxious. + // + // ex: + // http://a@b@c/ => user:a@b host:c + // http://a@b?@c => user:a host:c path:/?@c + + // v0.12 TODO(isaacs): This is not quite how Chrome does things. + // Review our test case against browsers more comprehensively. + + // find the first instance of any hostEndingChars + var hostEnd = -1; + for (var i = 0; i < hostEndingChars.length; i++) { + var hec = rest.indexOf(hostEndingChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) + hostEnd = hec; + } + + // at this point, either we have an explicit point where the + // auth portion cannot go past, or the last @ char is the decider. + var auth, atSign; + if (hostEnd === -1) { + // atSign can be anywhere. + atSign = rest.lastIndexOf('@'); + } else { + // atSign must be in auth portion. + // http://a@b/c@d => host:b auth:a path:/c@d + atSign = rest.lastIndexOf('@', hostEnd); + } + + // Now we have a portion which is definitely the auth. + // Pull that off. + if (atSign !== -1) { + auth = rest.slice(0, atSign); + rest = rest.slice(atSign + 1); + this.auth = decodeURIComponent(auth); + } + + // the host is the remaining to the left of the first non-host char + hostEnd = -1; + for (var i = 0; i < nonHostChars.length; i++) { + var hec = rest.indexOf(nonHostChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) + hostEnd = hec; + } + // if we still have not hit it, then the entire thing is a host. + if (hostEnd === -1) + hostEnd = rest.length; + + this.host = rest.slice(0, hostEnd); + rest = rest.slice(hostEnd); + + // pull out port. + this.parseHost(); + + // we've indicated that there is a hostname, + // so even if it's empty, it has to be present. + this.hostname = this.hostname || ''; + + // if hostname begins with [ and ends with ] + // assume that it's an IPv6 address. + var ipv6Hostname = this.hostname[0] === '[' && + this.hostname[this.hostname.length - 1] === ']'; + + // validate a little. + if (!ipv6Hostname) { + var hostparts = this.hostname.split(/\./); + for (var i = 0, l = hostparts.length; i < l; i++) { + var part = hostparts[i]; + if (!part) continue; + if (!part.match(hostnamePartPattern)) { + var newpart = ''; + for (var j = 0, k = part.length; j < k; j++) { + if (part.charCodeAt(j) > 127) { + // we replace non-ASCII char with a temporary placeholder + // we need this to make sure size of hostname is not + // broken by replacing non-ASCII by nothing + newpart += 'x'; + } else { + newpart += part[j]; + } + } + // we test again with ASCII char only + if (!newpart.match(hostnamePartPattern)) { + var validParts = hostparts.slice(0, i); + var notHost = hostparts.slice(i + 1); + var bit = part.match(hostnamePartStart); + if (bit) { + validParts.push(bit[1]); + notHost.unshift(bit[2]); + } + if (notHost.length) { + rest = '/' + notHost.join('.') + rest; + } + this.hostname = validParts.join('.'); + break; + } + } + } + } + + if (this.hostname.length > hostnameMaxLen) { + this.hostname = ''; + } else { + // hostnames are always lower case. + this.hostname = this.hostname.toLowerCase(); + } + + if (!ipv6Hostname) { + // IDNA Support: Returns a puny coded representation of "domain". + // It only converts the part of the domain name that + // has non ASCII characters. I.e. it dosent matter if + // you call it with a domain that already is in ASCII. + var domainArray = this.hostname.split('.'); + var newOut = []; + for (var i = 0; i < domainArray.length; ++i) { + var s = domainArray[i]; + newOut.push(s.match(/[^A-Za-z0-9_-]/) ? + 'xn--' + punycode.encode(s) : s); + } + this.hostname = newOut.join('.'); + } + + var p = this.port ? ':' + this.port : ''; + var h = this.hostname || ''; + this.host = h + p; + this.href += this.host; + + // strip [ and ] from the hostname + // the host field still retains them, though + if (ipv6Hostname) { + this.hostname = this.hostname.substr(1, this.hostname.length - 2); + if (rest[0] !== '/') { + rest = '/' + rest; + } + } + } + + // now rest is set to the post-host stuff. + // chop off any delim chars. + if (!unsafeProtocol[lowerProto]) { + + // First, make 100% sure that any "autoEscape" chars get + // escaped, even if encodeURIComponent doesn't think they + // need to be. + for (var i = 0, l = autoEscape.length; i < l; i++) { + var ae = autoEscape[i]; + var esc = encodeURIComponent(ae); + if (esc === ae) { + esc = escape(ae); + } + rest = rest.split(ae).join(esc); + } + } + + + // chop off from the tail first. + var hash = rest.indexOf('#'); + if (hash !== -1) { + // got a fragment string. + this.hash = rest.substr(hash); + rest = rest.slice(0, hash); + } + var qm = rest.indexOf('?'); + if (qm !== -1) { + this.search = rest.substr(qm); + this.query = rest.substr(qm + 1); + if (parseQueryString) { + this.query = querystring.parse(this.query); + } + rest = rest.slice(0, qm); + } else if (parseQueryString) { + // no query string, but parseQueryString still requested + this.search = ''; + this.query = {}; + } + if (rest) this.pathname = rest; + if (slashedProtocol[lowerProto] && + this.hostname && !this.pathname) { + this.pathname = '/'; + } + + //to support http.request + if (this.pathname || this.search) { + var p = this.pathname || ''; + var s = this.search || ''; + this.path = p + s; + } + + // finally, reconstruct the href based on what has been validated. + this.href = this.format(); + return this; + }; + + // format a parsed object into a url string + function urlFormat(obj) { + // ensure it's an object, and not a string url. + // If it's an obj, this is a no-op. + // this way, you can call url_format() on strings + // to clean up potentially wonky urls. + if (isString(obj)) obj = urlParse(obj); + if (!(obj instanceof Url)) return Url.prototype.format.call(obj); + return obj.format(); + } + + Url.prototype.format = function() { + var auth = this.auth || ''; + if (auth) { + auth = encodeURIComponent(auth); + auth = auth.replace(/%3A/i, ':'); + auth += '@'; + } + + var protocol = this.protocol || '', + pathname = this.pathname || '', + hash = this.hash || '', + host = false, + query = ''; + + if (this.host) { + host = auth + this.host; + } else if (this.hostname) { + host = auth + (this.hostname.indexOf(':') === -1 ? + this.hostname : + '[' + this.hostname + ']'); + if (this.port) { + host += ':' + this.port; + } + } + + if (this.query && + isObject(this.query) && + Object.keys(this.query).length) { + query = querystring.stringify(this.query); + } + + var search = this.search || (query && ('?' + query)) || ''; + + if (protocol && protocol.substr(-1) !== ':') protocol += ':'; + + // only the slashedProtocols get the //. Not mailto:, xmpp:, etc. + // unless they had them to begin with. + if (this.slashes || + (!protocol || slashedProtocol[protocol]) && host !== false) { + host = '//' + (host || ''); + if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; + } else if (!host) { + host = ''; + } + + if (hash && hash.charAt(0) !== '#') hash = '#' + hash; + if (search && search.charAt(0) !== '?') search = '?' + search; + + pathname = pathname.replace(/[?#]/g, function(match) { + return encodeURIComponent(match); + }); + search = search.replace('#', '%23'); + + return protocol + host + pathname + search + hash; + }; + + function urlResolve(source, relative) { + return urlParse(source, false, true).resolve(relative); + } + + Url.prototype.resolve = function(relative) { + return this.resolveObject(urlParse(relative, false, true)).format(); + }; + + function urlResolveObject(source, relative) { + if (!source) return relative; + return urlParse(source, false, true).resolveObject(relative); + } + + Url.prototype.resolveObject = function(relative) { + if (isString(relative)) { + var rel = new Url(); + rel.parse(relative, false, true); + relative = rel; + } + + var result = new Url(); + Object.keys(this).forEach(function(k) { + result[k] = this[k]; + }, this); + + // hash is always overridden, no matter what. + // even href="" will remove it. + result.hash = relative.hash; + + // if the relative url is empty, then there's nothing left to do here. + if (relative.href === '') { + result.href = result.format(); + return result; + } + + // hrefs like //foo/bar always cut to the protocol. + if (relative.slashes && !relative.protocol) { + // take everything except the protocol from relative + Object.keys(relative).forEach(function(k) { + if (k !== 'protocol') + result[k] = relative[k]; + }); + + //urlParse appends trailing / to urls like http://www.example.com + if (slashedProtocol[result.protocol] && + result.hostname && !result.pathname) { + result.path = result.pathname = '/'; + } + + result.href = result.format(); + return result; + } + + if (relative.protocol && relative.protocol !== result.protocol) { + // if it's a known url protocol, then changing + // the protocol does weird things + // first, if it's not file:, then we MUST have a host, + // and if there was a path + // to begin with, then we MUST have a path. + // if it is file:, then the host is dropped, + // because that's known to be hostless. + // anything else is assumed to be absolute. + if (!slashedProtocol[relative.protocol]) { + Object.keys(relative).forEach(function(k) { + result[k] = relative[k]; + }); + result.href = result.format(); + return result; + } + + result.protocol = relative.protocol; + if (!relative.host && !hostlessProtocol[relative.protocol]) { + var relPath = (relative.pathname || '').split('/'); + while (relPath.length && !(relative.host = relPath.shift())); + if (!relative.host) relative.host = ''; + if (!relative.hostname) relative.hostname = ''; + if (relPath[0] !== '') relPath.unshift(''); + if (relPath.length < 2) relPath.unshift(''); + result.pathname = relPath.join('/'); + } else { + result.pathname = relative.pathname; + } + result.search = relative.search; + result.query = relative.query; + result.host = relative.host || ''; + result.auth = relative.auth; + result.hostname = relative.hostname || relative.host; + result.port = relative.port; + // to support http.request + if (result.pathname || result.search) { + var p = result.pathname || ''; + var s = result.search || ''; + result.path = p + s; + } + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; + } + + var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'), + isRelAbs = ( + relative.host || + relative.pathname && relative.pathname.charAt(0) === '/' + ), + mustEndAbs = (isRelAbs || isSourceAbs || + (result.host && relative.pathname)), + removeAllDots = mustEndAbs, + srcPath = result.pathname && result.pathname.split('/') || [], + relPath = relative.pathname && relative.pathname.split('/') || [], + psychotic = result.protocol && !slashedProtocol[result.protocol]; + + // if the url is a non-slashed url, then relative + // links like ../.. should be able + // to crawl up to the hostname, as well. This is strange. + // result.protocol has already been set by now. + // Later on, put the first path part into the host field. + if (psychotic) { + result.hostname = ''; + result.port = null; + if (result.host) { + if (srcPath[0] === '') srcPath[0] = result.host; + else srcPath.unshift(result.host); + } + result.host = ''; + if (relative.protocol) { + relative.hostname = null; + relative.port = null; + if (relative.host) { + if (relPath[0] === '') relPath[0] = relative.host; + else relPath.unshift(relative.host); + } + relative.host = null; + } + mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); + } + + if (isRelAbs) { + // it's absolute. + result.host = (relative.host || relative.host === '') ? + relative.host : result.host; + result.hostname = (relative.hostname || relative.hostname === '') ? + relative.hostname : result.hostname; + result.search = relative.search; + result.query = relative.query; + srcPath = relPath; + // fall through to the dot-handling below. + } else if (relPath.length) { + // it's relative + // throw away the existing file, and take the new path instead. + if (!srcPath) srcPath = []; + srcPath.pop(); + srcPath = srcPath.concat(relPath); + result.search = relative.search; + result.query = relative.query; + } else if (!isNullOrUndefined(relative.search)) { + // just pull out the search. + // like href='?foo'. + // Put this after the other two cases because it simplifies the booleans + if (psychotic) { + result.hostname = result.host = srcPath.shift(); + //occationaly the auth can get stuck only in host + //this especialy happens in cases like + //url.resolveObject('mailto:local1@domain1', 'local2@domain2') + var authInHost = result.host && result.host.indexOf('@') > 0 ? + result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + result.search = relative.search; + result.query = relative.query; + //to support http.request + if (!isNull(result.pathname) || !isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + + (result.search ? result.search : ''); + } + result.href = result.format(); + return result; + } + + if (!srcPath.length) { + // no path at all. easy. + // we've already handled the other stuff above. + result.pathname = null; + //to support http.request + if (result.search) { + result.path = '/' + result.search; + } else { + result.path = null; + } + result.href = result.format(); + return result; + } + + // if a url ENDs in . or .., then it must get a trailing slash. + // however, if it ends in anything else non-slashy, + // then it must NOT get a trailing slash. + var last = srcPath.slice(-1)[0]; + var hasTrailingSlash = ( + (result.host || relative.host) && (last === '.' || last === '..') || + last === ''); + + // strip single dots, resolve double dots to parent dir + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = srcPath.length; i >= 0; i--) { + last = srcPath[i]; + if (last == '.') { + srcPath.splice(i, 1); + } else if (last === '..') { + srcPath.splice(i, 1); + up++; + } else if (up) { + srcPath.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (!mustEndAbs && !removeAllDots) { + for (; up--; up) { + srcPath.unshift('..'); + } + } + + if (mustEndAbs && srcPath[0] !== '' && + (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { + srcPath.unshift(''); + } + + if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { + srcPath.push(''); + } + + var isAbsolute = srcPath[0] === '' || + (srcPath[0] && srcPath[0].charAt(0) === '/'); + + // put the host back + if (psychotic) { + result.hostname = result.host = isAbsolute ? '' : + srcPath.length ? srcPath.shift() : ''; + //occationaly the auth can get stuck only in host + //this especialy happens in cases like + //url.resolveObject('mailto:local1@domain1', 'local2@domain2') + var authInHost = result.host && result.host.indexOf('@') > 0 ? + result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + + mustEndAbs = mustEndAbs || (result.host && srcPath.length); + + if (mustEndAbs && !isAbsolute) { + srcPath.unshift(''); + } + + if (!srcPath.length) { + result.pathname = null; + result.path = null; + } else { + result.pathname = srcPath.join('/'); + } + + //to support request.http + if (!isNull(result.pathname) || !isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + + (result.search ? result.search : ''); + } + result.auth = relative.auth || result.auth; + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; + }; + + Url.prototype.parseHost = function() { + var host = this.host; + var port = portPattern.exec(host); + if (port) { + port = port[0]; + if (port !== ':') { + this.port = port.substr(1); + } + host = host.substr(0, host.length - port.length); + } + if (host) this.hostname = host; + }; + + function isString(arg) { + return typeof arg === "string"; + } + + function isObject(arg) { + return typeof arg === 'object' && arg !== null; + } + + function isNull(arg) { + return arg === null; + } + function isNullOrUndefined(arg) { + return arg == null; + } + + +/***/ }, +/* 38 */ /***/ function(module, exports, __webpack_require__) { module.exports.id = 'ace/mode/json_worker'; module.exports.src = "\"no use strict\";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail=\"\";testPath;){var alias=paths[testPath];if(\"string\"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,\"/\")+(tail||alias.main||alias.name);if(alias===!1)return\"\";var i=testPath.lastIndexOf(\"/\");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\"log\",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:\"error\",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\"!\")){var chunks=moduleName.split(\"!\");return window.normalizeModule(parentId,chunks[0])+\"!\"+window.normalizeModule(parentId,chunks[1])}if(\".\"==moduleName.charAt(0)){var base=parentId.split(\"/\").slice(0,-1).join(\"/\");for(moduleName=(base?base+\"/\":\"\")+moduleName;-1!==moduleName.indexOf(\".\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,\"\").replace(/\\/\\.\\//,\"/\").replace(/[^\\/]+\\/\\.\\.\\//,\"\")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error(\"worker.js acequire() accepts only (parentId, id) as arguments\");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log(\"unable to load \"+id);var path=resolveModuleId(id,window.acequire.tlns);return\".js\"!=path.slice(-3)&&(path+=\".js\"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\"string\"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),\"function\"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=[\"require\",\"exports\",\"module\"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case\"require\":return req;case\"exports\":return module.exports;case\"module\":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire(\"ace/lib/event_emitter\").EventEmitter,oop=window.acequire(\"ace/lib/oop\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\"call\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\"event\",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error(\"Unknown command:\"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire(\"ace/lib/es5-shim\"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define(\"ace/range\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return\"Range: [\"+this.start.row+\"/\"+this.start.column+\"] -> [\"+this.end.row+\"/\"+this.end.column+\"]\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\"object\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\"object\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||\"\";switch(delta.action){case\"insert\":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case\"remove\":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\"object\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\"unshift\":\"push\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal(\"change\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\"change\",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on(\"change\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"],function(acequire,exports){\"use strict\";var oop=acequire(\"./lib/oop\"),applyDelta=acequire(\"./apply_delta\").applyDelta,EventEmitter=acequire(\"./lib/event_emitter\").EventEmitter,Range=acequire(\"./range\").Range,Anchor=acequire(\"./anchor\").Anchor,Document=function(textOrLines){this.$lines=[\"\"],0===textOrLines.length?this.$lines=[\"\"]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0===\"aaa\".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,\"\\n\").split(\"\\n\")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:\"\\n\",this._signal(\"changeNewLineMode\")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\"windows\":return\"\\r\\n\";case\"unix\":return\"\\n\";default:return this.$autoNewLine||\"\\n\"}},this.$autoNewLine=\"\",this.$newLineMode=\"auto\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal(\"changeNewLineMode\"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\"\\r\\n\"==text||\"\\r\"==text||\"\\n\"==text},this.getLine=function(row){return this.$lines[row]||\"\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||\"\").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\"),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\"),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\"),this.insertMergedLines(position,[\"\",\"\"])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:\"insert\",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([\"\"]),column=0):(lines=[\"\"].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:\"insert\",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:\"remove\",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:\"remove\",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:\"remove\",lines:[\"\",\"\"]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert=\"insert\"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal(\"change\",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(\"\"),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:\"insert\"==delta.action?\"remove\":\"insert\",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"],function(acequire,exports){\"use strict\";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split(\"\").reverse().join(\"\")},exports.stringRepeat=function(string,count){for(var result=\"\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\"\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\"\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\"object\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if(\"object\"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}var cons=obj.constructor;if(cons===RegExp)return obj;copy=cons();for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,\"\\\\$1\")},exports.escapeHTML=function(str){return str.replace(/&/g,\"&\").replace(/\"/g,\""\").replace(/'/g,\"'\").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:\"insert\",start:data[i],lines:data[i+1]};else var d={action:\"remove\",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define(\"ace/mode/json/json_parse\",[\"require\",\"exports\",\"module\"],function(){\"use strict\";var at,ch,text,value,escapee={'\"':'\"',\"\\\\\":\"\\\\\",\"/\":\"/\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\t\"},error=function(m){throw{name:\"SyntaxError\",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error(\"Expected '\"+c+\"' instead of '\"+ch+\"'\"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string=\"\";for(\"-\"===ch&&(string=\"-\",next(\"-\"));ch>=\"0\"&&\"9\">=ch;)string+=ch,next();if(\".\"===ch)for(string+=\".\";next()&&ch>=\"0\"&&\"9\">=ch;)string+=ch;if(\"e\"===ch||\"E\"===ch)for(string+=ch,next(),(\"-\"===ch||\"+\"===ch)&&(string+=ch,next());ch>=\"0\"&&\"9\">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error(\"Bad number\"),void 0):number},string=function(){var hex,i,uffff,string=\"\";if('\"'===ch)for(;next();){if('\"'===ch)return next(),string;if(\"\\\\\"===ch)if(next(),\"u\"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if(\"string\"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error(\"Bad string\")},white=function(){for(;ch&&\" \">=ch;)next()},word=function(){switch(ch){case\"t\":return next(\"t\"),next(\"r\"),next(\"u\"),next(\"e\"),!0;case\"f\":return next(\"f\"),next(\"a\"),next(\"l\"),next(\"s\"),next(\"e\"),!1;case\"n\":return next(\"n\"),next(\"u\"),next(\"l\"),next(\"l\"),null}error(\"Unexpected '\"+ch+\"'\")},array=function(){var array=[];if(\"[\"===ch){if(next(\"[\"),white(),\"]\"===ch)return next(\"]\"),array;for(;ch;){if(array.push(value()),white(),\"]\"===ch)return next(\"]\"),array;next(\",\"),white()}}error(\"Bad array\")},object=function(){var key,object={};if(\"{\"===ch){if(next(\"{\"),white(),\"}\"===ch)return next(\"}\"),object;for(;ch;){if(key=string(),white(),next(\":\"),Object.hasOwnProperty.call(object,key)&&error('Duplicate key \"'+key+'\"'),object[key]=value(),white(),\"}\"===ch)return next(\"}\"),object;next(\",\"),white()}}error(\"Bad object\")};return value=function(){switch(white(),ch){case\"{\":return object();case\"[\":return array();case'\"':return string();case\"-\":return number();default:return ch>=\"0\"&&\"9\">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=\" \",result=value(),white(),ch&&error(\"Syntax error\"),\"function\"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&\"object\"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({\"\":result},\"\"):result}}),ace.define(\"ace/mode/json_worker\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/worker/mirror\",\"ace/mode/json/json_parse\"],function(acequire,exports){\"use strict\";var oop=acequire(\"../lib/oop\"),Mirror=acequire(\"../worker/mirror\").Mirror,parse=acequire(\"./json/json_parse\"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:\"error\"})}this.sender.emit(\"annotate\",errors)}}.call(JsonWorker.prototype)}),ace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\"sentinel\",{}),\"sentinel\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\"function\"!=typeof target)throw new TypeError(\"Function.prototype.bind called on incompatible \"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\"__defineGetter__\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\"XXX\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\"[object Array]\"==_toString(obj)});var boxedString=Object(\"a\"),splitString=\"a\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0,thisp=arguments[1];if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduce of empty array with no initial value\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\"reduce of empty array with no initial value\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):object,length=self.length>>>0;if(\"[object Function]\"!=_toString(fun))throw new TypeError(fun+\" is not a function\");if(!length&&1==arguments.length)throw new TypeError(\"reduceRight of empty array with no initial value\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\"reduceRight of empty array with no initial value\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\"[object String]\"==_toString(this)?this.split(\"\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\"Object.getOwnPropertyDescriptor called on a non-object: \";Object.getOwnPropertyDescriptor=function(object,property){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\"object\"!=typeof prototype)throw new TypeError(\"typeof prototype[\"+typeof prototype+\"] != 'object'\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\"undefined\"==typeof document||doesDefinePropertyWork(document.createElement(\"div\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\"Property description must be an object: \",ERR_NON_OBJECT_TARGET=\"Object.defineProperty called on non-object: \",ERR_ACCESSORS_NOT_SUPPORTED=\"getters & setters can not be defined on this javascript engine\";Object.defineProperty=function(object,property,descriptor){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\"object\"!=typeof descriptor&&\"function\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\"value\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\"get\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\"set\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\"function\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\"\";owns(object,name);)name+=\"?\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\"object\"!=typeof object&&\"function\"!=typeof object||null===object)throw new TypeError(\"Object.keys called on a non-object\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\"\t\\n\u000b\\f\\r   ᠎              \\u2028\\u2029\";if(!String.prototype.trim||ws.trim()){ws=\"[\"+ws+\"]\";var trimBeginRegexp=RegExp(\"^\"+ws+ws+\"*\"),trimEndRegexp=RegExp(ws+ws+\"*$\");String.prototype.trim=function(){return(this+\"\").replace(trimBeginRegexp,\"\").replace(trimEndRegexp,\"\")}}var toObject=function(o){if(null==o)throw new TypeError(\"can't convert \"+o+\" to object\");return Object(o)}});"; /***/ }, -/* 19 */ +/* 39 */ +/***/ function(module, exports, __webpack_require__) { + + exports.parse = __webpack_require__(61); + exports.stringify = __webpack_require__(62); + + +/***/ }, +/* 40 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + module.exports = function generate_ref(it, $keyword) { + var out = ' '; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + if ($schema == '#' || $schema == '#/') { + if (it.isRoot) { + out += ' if (! ' + ('validate') + '(' + ($data) + ', (dataPath || \'\')'; + if (it.errorPath != '""') { + out += ' + ' + (it.errorPath); + } + out += ') ) { if (vErrors === null) vErrors = ' + ('validate') + '.errors; else vErrors = vErrors.concat(' + ('validate') + '.errors); errors = vErrors.length; } '; + if ($breakOnError) { + out += ' else { '; + } + } else { + out += ' if (! ' + ('root.refVal[0]') + '(' + ($data) + ', (dataPath || \'\')'; + if (it.errorPath != '""') { + out += ' + ' + (it.errorPath); + } + out += ') ) { if (vErrors === null) vErrors = ' + ('root.refVal[0]') + '.errors; else vErrors = vErrors.concat(' + ('root.refVal[0]') + '.errors); errors = vErrors.length; } '; + if ($breakOnError) { + out += ' else { '; + } + } + } else { + var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot); + if ($refVal === undefined) { + var $message = 'can\'t resolve reference ' + $schema + ' from id ' + it.baseId; + if (it.opts.missingRefs == 'fail') { + console.log($message); + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '$ref') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { ref: \'' + (it.util.escapeQuotes($schema)) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'can\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\' '; + } + if (it.opts.verbose) { + out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + if ($breakOnError) { + out += ' if (false) { '; + } + } else if (it.opts.missingRefs == 'ignore') { + console.log($message); + if ($breakOnError) { + out += ' if (true) { '; + } + } else { + var $error = new Error($message); + $error.missingRef = it.resolve.url(it.baseId, $schema); + $error.missingSchema = it.resolve.normalizeId(it.resolve.fullPath($error.missingRef)); + throw $error; + } + } else if (typeof $refVal == 'string') { + out += ' if (! ' + ($refVal) + '(' + ($data) + ', (dataPath || \'\')'; + if (it.errorPath != '""') { + out += ' + ' + (it.errorPath); + } + out += ') ) { if (vErrors === null) vErrors = ' + ($refVal) + '.errors; else vErrors = vErrors.concat(' + ($refVal) + '.errors); errors = vErrors.length; } '; + if ($breakOnError) { + out += ' else { '; + } + } else { + var $it = it.util.copy(it); + $it.level++; + $it.schema = $refVal.schema; + $it.schemaPath = ''; + $it.errSchemaPath = $schema; + var $code = it.validate($it).replace(/validate\.schema/g, $refVal.code); + out += ' ' + ($code) + ' '; + if ($breakOnError) { + out += ' if (valid' + ($it.level) + ') { '; + } + } + } + return out; + } + + +/***/ }, +/* 41 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + module.exports = function generate_allOf(it, $keyword) { + var out = ' '; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + out += ' ' + (it.validate($it)) + ' '; + if ($breakOnError) { + out += ' if (valid' + ($it.level) + ') { '; + $closingBraces += '}'; + } + } + } + } + if ($breakOnError) { + out += ' ' + ($closingBraces.slice(0, -1)); + } + out = it.util.cleanUpCode(out); + return out; + } + + +/***/ }, +/* 42 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + module.exports = function generate_anyOf(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $noEmptySchema = $schema.every(function($sch) { + return it.util.schemaHasRules($sch, it.RULES.all); + }); + if ($noEmptySchema) { + out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + out += ' ' + (it.validate($it)) + ' ' + ($valid) + ' = ' + ($valid) + ' || valid' + ($it.level) + '; if (!' + ($valid) + ') { '; + $closingBraces += '}'; + } + } + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'anyOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should match some schema in anyOf\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; + if (it.opts.allErrors) { + out += ' } '; + } + out = it.util.cleanUpCode(out); + } else { + if ($breakOnError) { + out += ' if (true) { '; + } + } + return out; + } + + +/***/ }, +/* 43 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + module.exports = function generate_dependencies(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $schemaDeps = {}, + $propertyDeps = {}; + for ($property in $schema) { + var $sch = $schema[$property]; + var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps; + $deps[$property] = $sch; + } + out += 'var ' + ($errs) + ' = errors;'; + var $currentErrorPath = it.errorPath; + out += 'var missing' + ($lvl) + ';'; + for (var $property in $propertyDeps) { + $deps = $propertyDeps[$property]; + out += ' if (' + ($data) + (it.util.getProperty($property)) + ' !== undefined && ( '; + var arr1 = $deps; + if (arr1) { + var _$property, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + _$property = arr1[$i += 1]; + if ($i) { + out += ' || '; + } + var $prop = it.util.getProperty(_$property); + out += ' ( ' + ($data) + ($prop) + ' === undefined && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? _$property : $prop)) + ') ) '; + } + } + out += ')) { '; + var $propertyPath = 'missing' + $lvl, + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; + } + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'dependencies') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { property: \'' + (it.util.escapeQuotes($property)) + '\', missingProperty: \'' + ($missingProperty) + '\', depsCount: ' + ($deps.length) + ', deps: \'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", "))) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should have '; + if ($deps.length == 1) { + out += 'property ' + (it.util.escapeQuotes($deps[0])); + } else { + out += 'properties ' + (it.util.escapeQuotes($deps.join(", "))); + } + out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($breakOnError) { + $closingBraces += '}'; + out += ' else { '; + } + } + it.errorPath = $currentErrorPath; + for (var $property in $schemaDeps) { + var $sch = $schemaDeps[$property]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + out += ' valid' + ($it.level) + ' = true; if (' + ($data) + '[\'' + ($property) + '\'] !== undefined) { '; + $it.schema = $sch; + $it.schemaPath = $schemaPath + it.util.getProperty($property); + $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property); + out += ' ' + (it.validate($it)) + ' } '; + if ($breakOnError) { + out += ' if (valid' + ($it.level) + ') { '; + $closingBraces += '}'; + } + } + } + if ($breakOnError) { + out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; + } + out = it.util.cleanUpCode(out); + return out; + } + + +/***/ }, +/* 44 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + module.exports = function generate_enum(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $isData = it.opts.v5 && $schema.$data; + var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; + $schemaValue = 'schema' + $lvl; + } + var $i = 'i' + $lvl; + if (!$isData) { + out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';'; + } + out += 'var ' + ($valid) + ';'; + if ($isData) { + out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; + } + out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + ' ' + ($i) + ') { '; + var $passData = $data + '[' + $i + ']'; + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true); + if (it.opts.v5) $it.dataPathArr[$dataNxt] = $i; + var $code = it.validate($it); + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (valid' + ($it.level) + ') { '; + $closingBraces += '}'; + } + } + } + } + if (typeof $additionalItems == 'object' && it.util.schemaHasRules($additionalItems, it.RULES.all)) { + $it.schema = $additionalItems; + $it.schemaPath = it.schemaPath + '.additionalItems'; + $it.errSchemaPath = it.errSchemaPath + '/additionalItems'; + out += ' valid' + ($it.level) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var i' + ($lvl) + ' = ' + ($schema.length) + '; i' + ($lvl) + ' < ' + ($data) + '.length; i' + ($lvl) + '++) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, 'i' + $lvl, it.opts.jsonPointers, true); + var $passData = $data + '[i' + $lvl + ']'; + if (it.opts.v5) $it.dataPathArr[$dataNxt] = 'i' + $lvl; + var $code = it.validate($it); + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!valid' + ($it.level) + ') break; '; + } + out += ' } } '; + if ($breakOnError) { + out += ' if (valid' + ($it.level) + ') { '; + $closingBraces += '}'; + } + } + } else if (it.util.schemaHasRules($schema, it.RULES.all)) { + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + out += ' for (var i' + ($lvl) + ' = ' + (0) + '; i' + ($lvl) + ' < ' + ($data) + '.length; i' + ($lvl) + '++) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, 'i' + $lvl, it.opts.jsonPointers, true); + var $passData = $data + '[i' + $lvl + ']'; + if (it.opts.v5) $it.dataPathArr[$dataNxt] = 'i' + $lvl; + var $code = it.validate($it); + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!valid' + ($it.level) + ') break; '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (valid' + ($it.level) + ') { '; + $closingBraces += '}'; + } + } + if ($breakOnError) { + out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; + } + out = it.util.cleanUpCode(out); + return out; + } + + +/***/ }, +/* 47 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + module.exports = function generate__limit(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.v5 && $schema.$data; + var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; + $schemaValue = 'schema' + $lvl; + } + var $isMax = $keyword == 'maximum', + $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum', + $schemaExcl = it.schema[$exclusiveKeyword], + $isDataExcl = it.opts.v5 && $schemaExcl && $schemaExcl.$data, + $op = $isMax ? '<' : '>', + $notOp = $isMax ? '>' : '<'; + if ($isDataExcl) { + var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), + $exclusive = 'exclusive' + $lvl, + $opExpr = 'op' + $lvl, + $opStr = '\' + ' + $opExpr + ' + \''; + out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; '; + $schemaValueExcl = 'schemaExcl' + $lvl; + out += ' var exclusive' + ($lvl) + '; if (typeof ' + ($schemaValueExcl) + ' != \'boolean\' && typeof ' + ($schemaValueExcl) + ' != \'undefined\') { '; + var $errorKeyword = $exclusiveKeyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_exclusiveLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else if( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ((exclusive' + ($lvl) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ')) { var op' + ($lvl) + ' = exclusive' + ($lvl) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\';'; + } else { + var $exclusive = $schemaExcl === true, + $opStr = $op; + if (!$exclusive) $opStr += '='; + var $opExpr = '\'' + $opStr + '\''; + out += ' if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ' + ($data) + ' ' + ($notOp); + if ($exclusive) { + out += '='; + } + out += ' ' + ($schemaValue) + ') {'; + } + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be ' + ($opStr) + ' '; + if ($isData) { + out += '\' + ' + ($schemaValue); + } else { + out += '' + ($schema) + '\''; + } + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + +/***/ }, +/* 48 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + module.exports = function generate__limitItems(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.v5 && $schema.$data; + var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; + $schemaValue = 'schema' + $lvl; + } + var $op = $keyword == 'maxItems' ? '>' : '<'; + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limitItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { limit: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have '; + if ($keyword == 'maxItems') { + out += 'more'; + } else { + out += 'less'; + } + out += ' than '; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + ($schema); + } + out += ' items\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + +/***/ }, +/* 49 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + module.exports = function generate__limitLength(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.v5 && $schema.$data; + var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; + $schemaValue = 'schema' + $lvl; + } + var $op = $keyword == 'maxLength' ? '>' : '<'; + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + if (it.opts.unicode === false) { + out += ' ' + ($data) + '.length '; + } else { + out += ' ucs2length(' + ($data) + ') '; + } + out += ' ' + ($op) + ' ' + ($schemaValue) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limitLength') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { limit: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT be '; + if ($keyword == 'maxLength') { + out += 'longer'; + } else { + out += 'shorter'; + } + out += ' than '; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + ($schema); + } + out += ' characters\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + +/***/ }, +/* 50 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + module.exports = function generate__limitProperties(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.v5 && $schema.$data; + var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; + $schemaValue = 'schema' + $lvl; + } + var $op = $keyword == 'maxProperties' ? '>' : '<'; + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limitProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { limit: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have '; + if ($keyword == 'maxProperties') { + out += 'more'; + } else { + out += 'less'; + } + out += ' than '; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + ($schema); + } + out += ' properties\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + +/***/ }, +/* 51 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + module.exports = function generate_multipleOf(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.v5 && $schema.$data; + var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; + $schemaValue = 'schema' + $lvl; + } + out += 'var division' + ($lvl) + ';if ('; + if ($isData) { + out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \'number\' || '; + } + out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', '; + if (it.opts.multipleOfPrecision) { + out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' '; + } else { + out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') '; + } + out += ' ) '; + if ($isData) { + out += ' ) '; + } + out += ' ) { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'multipleOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { multipleOf: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be multiple of '; + if ($isData) { + out += '\' + ' + ($schemaValue); + } else { + out += '' + ($schema) + '\''; + } + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + +/***/ }, +/* 52 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + module.exports = function generate_not(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + $it.level++; + if (it.util.schemaHasRules($schema, it.RULES.all)) { + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + out += ' var ' + ($errs) + ' = errors; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + $it.createErrors = false; + out += ' ' + (it.validate($it)) + ' '; + $it.createErrors = true; + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' if (valid' + ($it.level) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT be valid\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; + if (it.opts.allErrors) { + out += ' } '; + } + } else { + out += ' var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT be valid\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + if ($breakOnError) { + out += ' if (false) { '; + } + } + return out; + } + + +/***/ }, +/* 53 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + module.exports = function generate_oneOf(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + out += 'var ' + ($errs) + ' = errors;var prevValid' + ($lvl) + ' = false;var ' + ($valid) + ' = false; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + out += ' ' + (it.validate($it)) + ' '; + } else { + out += ' var valid' + ($it.level) + ' = true; '; + } + if ($i) { + out += ' if (valid' + ($it.level) + ' && prevValid' + ($lvl) + ') ' + ($valid) + ' = false; else { '; + $closingBraces += '}'; + } + out += ' if (valid' + ($it.level) + ') ' + ($valid) + ' = prevValid' + ($lvl) + ' = true;'; + } + } + it.compositeRule = $it.compositeRule = $wasComposite; + out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'oneOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should match exactly one schema in oneOf\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }'; + if (it.opts.allErrors) { + out += ' } '; + } + return out; + } + + +/***/ }, +/* 54 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + module.exports = function generate_pattern(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.v5 && $schema.$data; + var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; + $schemaValue = 'schema' + $lvl; + } + var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema); + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || '; + } + out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'pattern') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { pattern: '; + if ($isData) { + out += '' + ($schemaValue); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should match pattern "'; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + (it.util.escapeQuotes($schema)); + } + out += '"\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; + } + + +/***/ }, +/* 55 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + module.exports = function generate_properties(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $dataNxt = $it.dataLevel = it.dataLevel + 1, + $nextData = 'data' + $dataNxt; + var $schemaKeys = Object.keys($schema || {}), + $pProperties = it.schema.patternProperties || {}, + $pPropertyKeys = Object.keys($pProperties), + $aProperties = it.schema.additionalProperties, + $someProperties = $schemaKeys.length || $pPropertyKeys.length, + $noAdditional = $aProperties === false, + $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length, + $removeAdditional = it.opts.removeAdditional, + $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional; + var $required = it.schema.required; + if ($required && !(it.opts.v5 && $required.$data) && $required.length < it.opts.loopRequired) var $requiredHash = it.util.toHash($required); + if (it.opts.v5) { + var $pgProperties = it.schema.patternGroups || {}, + $pgPropertyKeys = Object.keys($pgProperties); + } + out += 'var ' + ($errs) + ' = errors;var valid' + ($it.level) + ' = true;'; + if ($checkAdditional) { + out += ' for (var key' + ($lvl) + ' in ' + ($data) + ') { '; + if ($someProperties) { + out += ' var isAdditional' + ($lvl) + ' = !(false '; + if ($schemaKeys.length) { + if ($schemaKeys.length > 5) { + out += ' || validate.schema' + ($schemaPath) + '[key' + ($lvl) + '] '; + } else { + var arr1 = $schemaKeys; + if (arr1) { + var $propertyKey, i1 = -1, + l1 = arr1.length - 1; + while (i1 < l1) { + $propertyKey = arr1[i1 += 1]; + out += ' || key' + ($lvl) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' '; + } + } + } + } + if ($pPropertyKeys.length) { + var arr2 = $pPropertyKeys; + if (arr2) { + var $pProperty, $i = -1, + l2 = arr2.length - 1; + while ($i < l2) { + $pProperty = arr2[$i += 1]; + out += ' || ' + (it.usePattern($pProperty)) + '.test(key' + ($lvl) + ') '; + } + } + } + if (it.opts.v5 && $pgPropertyKeys && $pgPropertyKeys.length) { + var arr3 = $pgPropertyKeys; + if (arr3) { + var $pgProperty, $i = -1, + l3 = arr3.length - 1; + while ($i < l3) { + $pgProperty = arr3[$i += 1]; + out += ' || ' + (it.usePattern($pgProperty)) + '.test(key' + ($lvl) + ') '; + } + } + } + out += ' ); if (isAdditional' + ($lvl) + ') { '; + } + if ($removeAdditional == 'all') { + out += ' delete ' + ($data) + '[key' + ($lvl) + ']; '; + } else { + var $currentErrorPath = it.errorPath; + var $additionalProperty = '\' + key' + $lvl + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); + } + if ($noAdditional) { + if ($removeAdditional) { + out += ' delete ' + ($data) + '[key' + ($lvl) + ']; '; + } else { + out += ' valid' + ($it.level) + ' = false; '; + var $currErrSchemaPath = $errSchemaPath; + $errSchemaPath = it.errSchemaPath + '/additionalProperties'; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'additionalProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { additionalProperty: \'' + ($additionalProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have additional properties\' '; + } + if (it.opts.verbose) { + out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + $errSchemaPath = $currErrSchemaPath; + if ($breakOnError) { + out += ' break; '; + } + } + } else if ($additionalIsSchema) { + if ($removeAdditional == 'failing') { + out += ' var ' + ($errs) + ' = errors; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + $it.schema = $aProperties; + $it.schemaPath = it.schemaPath + '.additionalProperties'; + $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; + $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); + var $passData = $data + '[key' + $lvl + ']'; + if (it.opts.v5) $it.dataPathArr[$dataNxt] = 'key' + $lvl; + var $code = it.validate($it); + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + out += ' if (!valid' + ($it.level) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[key' + ($lvl) + ']; } '; + it.compositeRule = $it.compositeRule = $wasComposite; + } else { + $it.schema = $aProperties; + $it.schemaPath = it.schemaPath + '.additionalProperties'; + $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; + $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); + var $passData = $data + '[key' + $lvl + ']'; + if (it.opts.v5) $it.dataPathArr[$dataNxt] = 'key' + $lvl; + var $code = it.validate($it); + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!valid' + ($it.level) + ') break; '; + } + } + } + it.errorPath = $currentErrorPath; + } + if ($someProperties) { + out += ' } '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (valid' + ($it.level) + ') { '; + $closingBraces += '}'; + } + } + var $useDefaults = it.opts.useDefaults && !it.compositeRule; + if ($schemaKeys.length) { + var arr4 = $schemaKeys; + if (arr4) { + var $propertyKey, i4 = -1, + l4 = arr4.length - 1; + while (i4 < l4) { + $propertyKey = arr4[i4 += 1]; + var $sch = $schema[$propertyKey]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + var $prop = it.util.getProperty($propertyKey), + $passData = $data + $prop, + $hasDefault = $useDefaults && $sch.default !== undefined; + $it.schema = $sch; + $it.schemaPath = $schemaPath + $prop; + $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey); + $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers); + if (it.opts.v5) $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey); + var $code = it.validate($it); + if (it.util.varOccurences($code, $nextData) < 2) { + $code = it.util.varReplace($code, $nextData, $passData); + var $useData = $passData; + } else { + var $useData = $nextData; + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; '; + } + if ($hasDefault) { + out += ' ' + ($code) + ' '; + } else { + if ($requiredHash && $requiredHash[$propertyKey]) { + out += ' if (' + ($useData) + ' === undefined) { valid' + ($it.level) + ' = false; '; + var $currentErrorPath = it.errorPath, + $currErrSchemaPath = $errSchemaPath, + $missingProperty = it.util.escapeQuotes($propertyKey); + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); + } + $errSchemaPath = it.errSchemaPath + '/required'; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + $errSchemaPath = $currErrSchemaPath; + it.errorPath = $currentErrorPath; + out += ' } else { '; + } else { + if ($breakOnError) { + out += ' if (' + ($useData) + ' === undefined) { valid' + ($it.level) + ' = true; } else { '; + } else { + out += ' if (' + ($useData) + ' !== undefined) { '; + } + } + out += ' ' + ($code) + ' } '; + } + } + if ($breakOnError) { + out += ' if (valid' + ($it.level) + ') { '; + $closingBraces += '}'; + } + } + } + } + var arr5 = $pPropertyKeys; + if (arr5) { + var $pProperty, i5 = -1, + l5 = arr5.length - 1; + while (i5 < l5) { + $pProperty = arr5[i5 += 1]; + var $sch = $pProperties[$pProperty]; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + $it.schema = $sch; + $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty); + $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty); + out += ' for (var key' + ($lvl) + ' in ' + ($data) + ') { if (' + (it.usePattern($pProperty)) + '.test(key' + ($lvl) + ')) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); + var $passData = $data + '[key' + $lvl + ']'; + if (it.opts.v5) $it.dataPathArr[$dataNxt] = 'key' + $lvl; + var $code = it.validate($it); + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!valid' + ($it.level) + ') break; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else valid' + ($it.level) + ' = true; '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (valid' + ($it.level) + ') { '; + $closingBraces += '}'; + } + } + } + } + if (it.opts.v5) { + var arr6 = $pgPropertyKeys; + if (arr6) { + var $pgProperty, i6 = -1, + l6 = arr6.length - 1; + while (i6 < l6) { + $pgProperty = arr6[i6 += 1]; + var $pgSchema = $pgProperties[$pgProperty], + $sch = $pgSchema.schema; + if (it.util.schemaHasRules($sch, it.RULES.all)) { + $it.schema = $sch; + $it.schemaPath = it.schemaPath + '.patternGroups' + it.util.getProperty($pgProperty) + '.schema'; + $it.errSchemaPath = it.errSchemaPath + '/patternGroups/' + it.util.escapeFragment($pgProperty) + '/schema'; + out += ' var pgPropCount' + ($lvl) + ' = 0; for (var key' + ($lvl) + ' in ' + ($data) + ') { if (' + (it.usePattern($pgProperty)) + '.test(key' + ($lvl) + ')) { pgPropCount' + ($lvl) + '++; '; + $it.errorPath = it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers); + var $passData = $data + '[key' + $lvl + ']'; + if (it.opts.v5) $it.dataPathArr[$dataNxt] = 'key' + $lvl; + var $code = it.validate($it); + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!valid' + ($it.level) + ') break; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else valid' + ($it.level) + ' = true; '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (valid' + ($it.level) + ') { '; + $closingBraces += '}'; + } + var $pgMin = $pgSchema.minimum, + $pgMax = $pgSchema.maximum; + if ($pgMin !== undefined || $pgMax !== undefined) { + out += ' var ' + ($valid) + ' = true; '; + var $currErrSchemaPath = $errSchemaPath; + if ($pgMin !== undefined) { + var $limit = $pgMin, + $reason = 'minimum', + $moreOrLess = 'less'; + out += ' ' + ($valid) + ' = pgPropCount' + ($lvl) + ' >= ' + ($pgMin) + '; '; + $errSchemaPath = it.errSchemaPath + '/patternGroups/minimum'; + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'patternGroups') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { reason: \'' + ($reason) + '\', limit: ' + ($limit) + ', pattern: \'' + (it.util.escapeQuotes($pgProperty)) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have ' + ($moreOrLess) + ' than ' + ($limit) + ' properties matching pattern "' + (it.util.escapeQuotes($pgProperty)) + '"\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($pgMax !== undefined) { + out += ' else '; + } + } + if ($pgMax !== undefined) { + var $limit = $pgMax, + $reason = 'maximum', + $moreOrLess = 'more'; + out += ' ' + ($valid) + ' = pgPropCount' + ($lvl) + ' <= ' + ($pgMax) + '; '; + $errSchemaPath = it.errSchemaPath + '/patternGroups/maximum'; + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'patternGroups') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { reason: \'' + ($reason) + '\', limit: ' + ($limit) + ', pattern: \'' + (it.util.escapeQuotes($pgProperty)) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have ' + ($moreOrLess) + ' than ' + ($limit) + ' properties matching pattern "' + (it.util.escapeQuotes($pgProperty)) + '"\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + } + $errSchemaPath = $currErrSchemaPath; + if ($breakOnError) { + out += ' if (' + ($valid) + ') { '; + $closingBraces += '}'; + } + } + } + } + } + } + if ($breakOnError) { + out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; + } + out = it.util.cleanUpCode(out); + return out; + } + + +/***/ }, +/* 56 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + module.exports = function generate_required(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $isData = it.opts.v5 && $schema.$data; + var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; + $schemaValue = 'schema' + $lvl; + } + if (!$isData) { + if ($schema.length < it.opts.loopRequired && it.schema.properties && Object.keys(it.schema.properties).length) { + var $required = []; + var arr1 = $schema; + if (arr1) { + var $property, i1 = -1, + l1 = arr1.length - 1; + while (i1 < l1) { + $property = arr1[i1 += 1]; + var $propertySch = it.schema.properties[$property]; + if (!($propertySch && it.util.schemaHasRules($propertySch, it.RULES.all))) { + $required[$required.length] = $property; + } + } + } + } else { + var $required = $schema; + } + } + if ($isData || $required.length) { + var $currentErrorPath = it.errorPath, + $loopRequired = $isData || $required.length >= it.opts.loopRequired; + if ($breakOnError) { + out += ' var missing' + ($lvl) + '; '; + if ($loopRequired) { + if (!$isData) { + out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + '; '; + } + var $i = 'i' + $lvl, + $propertyPath = 'schema' + $lvl + '[' + $i + ']', + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); + } + out += ' var ' + ($valid) + ' = true; '; + if ($isData) { + out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; + } + out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < schema' + ($lvl) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[schema' + ($lvl) + '[' + ($i) + ']] !== undefined; if (!' + ($valid) + ') break; } '; + if ($isData) { + out += ' } '; + } + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { '; + } else { + out += ' if ( '; + var arr2 = $required; + if (arr2) { + var _$property, $i = -1, + l2 = arr2.length - 1; + while ($i < l2) { + _$property = arr2[$i += 1]; + if ($i) { + out += ' || '; + } + var $prop = it.util.getProperty(_$property); + out += ' ( ' + ($data) + ($prop) + ' === undefined && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? _$property : $prop)) + ') ) '; + } + } + out += ') { '; + var $propertyPath = 'missing' + $lvl, + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; + } + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { '; + } + } else { + if ($loopRequired) { + if (!$isData) { + out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + '; '; + } + var $i = 'i' + $lvl, + $propertyPath = 'schema' + $lvl + '[' + $i + ']', + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); + } + if ($isData) { + out += ' if (schema' + ($lvl) + ' && !Array.isArray(schema' + ($lvl) + ')) { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (schema' + ($lvl) + ' !== undefined) { '; + } + out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < schema' + ($lvl) + '.length; ' + ($i) + '++) { if (' + ($data) + '[schema' + ($lvl) + '[' + ($i) + ']] === undefined) { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } '; + if ($isData) { + out += ' } '; + } + } else { + var arr3 = $required; + if (arr3) { + var $property, $i = -1, + l3 = arr3.length - 1; + while ($i < l3) { + $property = arr3[$i += 1]; + var $prop = it.util.getProperty($property), + $missingProperty = it.util.escapeQuotes($property); + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPath($currentErrorPath, $property, it.opts.jsonPointers); + } + out += ' if (' + ($data) + ($prop) + ' === undefined) { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; + } + } + } + } + it.errorPath = $currentErrorPath; + } else if ($breakOnError) { + out += ' if (true) {'; + } + return out; + } + + +/***/ }, +/* 57 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + module.exports = function generate_uniqueItems(it, $keyword) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + '.' + $keyword; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $isData = it.opts.v5 && $schema.$data; + var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; '; + $schemaValue = 'schema' + $lvl; + } + if (($schema || $isData) && it.opts.uniqueItems !== false) { + if ($isData) { + out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'boolean\') ' + ($valid) + ' = false; else { '; + } + out += ' var ' + ($valid) + ' = true; if (' + ($data) + '.length > 1) { var i = ' + ($data) + '.length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } } '; + if ($isData) { + out += ' } '; + } + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'uniqueItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: "' + ($errSchemaPath) + '" , params: { i: i, j: j } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have duplicate items (items ## \' + j + \' and \' + i + \' are identical)\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else { '; + } + } else { + if ($breakOnError) { + out += ' if (true) { '; + } + } + return out; + } + + +/***/ }, +/* 58 */ /***/ function(module, exports, __webpack_require__) { module.exports = function() { throw new Error("define cannot be used indirect"); }; /***/ }, -/* 20 */ +/* 59 */ /***/ function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global) {module.exports = get_blob() @@ -34725,6 +33933,1162 @@ return /******/ (function(modules) { // webpackBootstrap /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) +/***/ }, +/* 60 */ +/***/ function(module, exports, __webpack_require__) { + + var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module, global) {/*! https://mths.be/punycode v1.3.2 by @mathias */ + ;(function(root) { + + /** Detect free variables */ + var freeExports = typeof exports == 'object' && exports && + !exports.nodeType && exports; + var freeModule = typeof module == 'object' && module && + !module.nodeType && module; + var freeGlobal = typeof global == 'object' && global; + if ( + freeGlobal.global === freeGlobal || + freeGlobal.window === freeGlobal || + freeGlobal.self === freeGlobal + ) { + root = freeGlobal; + } + + /** + * The `punycode` object. + * @name punycode + * @type Object + */ + var punycode, + + /** Highest positive signed 32-bit float value */ + maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 + + /** Bootstring parameters */ + base = 36, + tMin = 1, + tMax = 26, + skew = 38, + damp = 700, + initialBias = 72, + initialN = 128, // 0x80 + delimiter = '-', // '\x2D' + + /** Regular expressions */ + regexPunycode = /^xn--/, + regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars + regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators + + /** Error messages */ + errors = { + 'overflow': 'Overflow: input needs wider integers to process', + 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', + 'invalid-input': 'Invalid input' + }, + + /** Convenience shortcuts */ + baseMinusTMin = base - tMin, + floor = Math.floor, + stringFromCharCode = String.fromCharCode, + + /** Temporary variable */ + key; + + /*--------------------------------------------------------------------------*/ + + /** + * A generic error utility function. + * @private + * @param {String} type The error type. + * @returns {Error} Throws a `RangeError` with the applicable error message. + */ + function error(type) { + throw RangeError(errors[type]); + } + + /** + * A generic `Array#map` utility function. + * @private + * @param {Array} array The array to iterate over. + * @param {Function} callback The function that gets called for every array + * item. + * @returns {Array} A new array of values returned by the callback function. + */ + function map(array, fn) { + var length = array.length; + var result = []; + while (length--) { + result[length] = fn(array[length]); + } + return result; + } + + /** + * A simple `Array#map`-like wrapper to work with domain name strings or email + * addresses. + * @private + * @param {String} domain The domain name or email address. + * @param {Function} callback The function that gets called for every + * character. + * @returns {Array} A new string of characters returned by the callback + * function. + */ + function mapDomain(string, fn) { + var parts = string.split('@'); + var result = ''; + if (parts.length > 1) { + // In email addresses, only the domain name should be punycoded. Leave + // the local part (i.e. everything up to `@`) intact. + result = parts[0] + '@'; + string = parts[1]; + } + // Avoid `split(regex)` for IE8 compatibility. See #17. + string = string.replace(regexSeparators, '\x2E'); + var labels = string.split('.'); + var encoded = map(labels, fn).join('.'); + return result + encoded; + } + + /** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + * @see `punycode.ucs2.encode` + * @see + * @memberOf punycode.ucs2 + * @name decode + * @param {String} string The Unicode input string (UCS-2). + * @returns {Array} The new array of code points. + */ + function ucs2decode(string) { + var output = [], + counter = 0, + length = string.length, + value, + extra; + while (counter < length) { + value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // high surrogate, and there is a next character + extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // low surrogate + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // unmatched surrogate; only append this code unit, in case the next + // code unit is the high surrogate of a surrogate pair + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; + } + + /** + * Creates a string based on an array of numeric code points. + * @see `punycode.ucs2.decode` + * @memberOf punycode.ucs2 + * @name encode + * @param {Array} codePoints The array of numeric code points. + * @returns {String} The new Unicode string (UCS-2). + */ + function ucs2encode(array) { + return map(array, function(value) { + var output = ''; + if (value > 0xFFFF) { + value -= 0x10000; + output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); + value = 0xDC00 | value & 0x3FF; + } + output += stringFromCharCode(value); + return output; + }).join(''); + } + + /** + * Converts a basic code point into a digit/integer. + * @see `digitToBasic()` + * @private + * @param {Number} codePoint The basic numeric code point value. + * @returns {Number} The numeric value of a basic code point (for use in + * representing integers) in the range `0` to `base - 1`, or `base` if + * the code point does not represent a value. + */ + function basicToDigit(codePoint) { + if (codePoint - 48 < 10) { + return codePoint - 22; + } + if (codePoint - 65 < 26) { + return codePoint - 65; + } + if (codePoint - 97 < 26) { + return codePoint - 97; + } + return base; + } + + /** + * Converts a digit/integer into a basic code point. + * @see `basicToDigit()` + * @private + * @param {Number} digit The numeric value of a basic code point. + * @returns {Number} The basic code point whose value (when used for + * representing integers) is `digit`, which needs to be in the range + * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is + * used; else, the lowercase form is used. The behavior is undefined + * if `flag` is non-zero and `digit` has no uppercase form. + */ + function digitToBasic(digit, flag) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); + } + + /** + * Bias adaptation function as per section 3.4 of RFC 3492. + * http://tools.ietf.org/html/rfc3492#section-3.4 + * @private + */ + function adapt(delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); + } + + /** + * Converts a Punycode string of ASCII-only symbols to a string of Unicode + * symbols. + * @memberOf punycode + * @param {String} input The Punycode string of ASCII-only symbols. + * @returns {String} The resulting string of Unicode symbols. + */ + function decode(input) { + // Don't use UCS-2 + var output = [], + inputLength = input.length, + out, + i = 0, + n = initialN, + bias = initialBias, + basic, + j, + index, + oldi, + w, + k, + digit, + t, + /** Cached calculation results */ + baseMinusT; + + // Handle the basic code points: let `basic` be the number of input code + // points before the last delimiter, or `0` if there is none, then copy + // the first basic code points to the output. + + basic = input.lastIndexOf(delimiter); + if (basic < 0) { + basic = 0; + } + + for (j = 0; j < basic; ++j) { + // if it's not a basic code point + if (input.charCodeAt(j) >= 0x80) { + error('not-basic'); + } + output.push(input.charCodeAt(j)); + } + + // Main decoding loop: start just after the last delimiter if any basic code + // points were copied; start at the beginning otherwise. + + for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { + + // `index` is the index of the next character to be consumed. + // Decode a generalized variable-length integer into `delta`, + // which gets added to `i`. The overflow checking is easier + // if we increase `i` as we go, then subtract off its starting + // value at the end to obtain `delta`. + for (oldi = i, w = 1, k = base; /* no condition */; k += base) { + + if (index >= inputLength) { + error('invalid-input'); + } + + digit = basicToDigit(input.charCodeAt(index++)); + + if (digit >= base || digit > floor((maxInt - i) / w)) { + error('overflow'); + } + + i += digit * w; + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + + if (digit < t) { + break; + } + + baseMinusT = base - t; + if (w > floor(maxInt / baseMinusT)) { + error('overflow'); + } + + w *= baseMinusT; + + } + + out = output.length + 1; + bias = adapt(i - oldi, out, oldi == 0); + + // `i` was supposed to wrap around from `out` to `0`, + // incrementing `n` each time, so we'll fix that now: + if (floor(i / out) > maxInt - n) { + error('overflow'); + } + + n += floor(i / out); + i %= out; + + // Insert `n` at position `i` of the output + output.splice(i++, 0, n); + + } + + return ucs2encode(output); + } + + /** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + * @memberOf punycode + * @param {String} input The string of Unicode symbols. + * @returns {String} The resulting Punycode string of ASCII-only symbols. + */ + function encode(input) { + var n, + delta, + handledCPCount, + basicLength, + bias, + j, + m, + q, + k, + t, + currentValue, + output = [], + /** `inputLength` will hold the number of code points in `input`. */ + inputLength, + /** Cached calculation results */ + handledCPCountPlusOne, + baseMinusT, + qMinusT; + + // Convert the input in UCS-2 to Unicode + input = ucs2decode(input); + + // Cache the length + inputLength = input.length; + + // Initialize the state + n = initialN; + delta = 0; + bias = initialBias; + + // Handle the basic code points + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue < 0x80) { + output.push(stringFromCharCode(currentValue)); + } + } + + handledCPCount = basicLength = output.length; + + // `handledCPCount` is the number of code points that have been handled; + // `basicLength` is the number of basic code points. + + // Finish the basic string - if it is not empty - with a delimiter + if (basicLength) { + output.push(delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + + // All non-basic code points < n have been handled already. Find the next + // larger one: + for (m = maxInt, j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's state to , + // but guard against overflow + handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + error('overflow'); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + + if (currentValue < n && ++delta > maxInt) { + error('overflow'); + } + + if (currentValue == n) { + // Represent delta as a generalized variable-length integer + for (q = delta, k = base; /* no condition */; k += base) { + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + if (q < t) { + break; + } + qMinusT = q - t; + baseMinusT = base - t; + output.push( + stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) + ); + q = floor(qMinusT / baseMinusT); + } + + output.push(stringFromCharCode(digitToBasic(q, 0))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + + ++delta; + ++n; + + } + return output.join(''); + } + + /** + * Converts a Punycode string representing a domain name or an email address + * to Unicode. Only the Punycoded parts of the input will be converted, i.e. + * it doesn't matter if you call it on a string that has already been + * converted to Unicode. + * @memberOf punycode + * @param {String} input The Punycoded domain name or email address to + * convert to Unicode. + * @returns {String} The Unicode representation of the given Punycode + * string. + */ + function toUnicode(input) { + return mapDomain(input, function(string) { + return regexPunycode.test(string) + ? decode(string.slice(4).toLowerCase()) + : string; + }); + } + + /** + * Converts a Unicode string representing a domain name or an email address to + * Punycode. Only the non-ASCII parts of the domain name will be converted, + * i.e. it doesn't matter if you call it with a domain that's already in + * ASCII. + * @memberOf punycode + * @param {String} input The domain name or email address to convert, as a + * Unicode string. + * @returns {String} The Punycode representation of the given domain name or + * email address. + */ + function toASCII(input) { + return mapDomain(input, function(string) { + return regexNonASCII.test(string) + ? 'xn--' + encode(string) + : string; + }); + } + + /*--------------------------------------------------------------------------*/ + + /** Define the public API */ + punycode = { + /** + * A string representing the current Punycode.js version number. + * @memberOf punycode + * @type String + */ + 'version': '1.3.2', + /** + * An object of methods to convert from JavaScript's internal character + * representation (UCS-2) to Unicode code points, and back. + * @see + * @memberOf punycode + * @type Object + */ + 'ucs2': { + 'decode': ucs2decode, + 'encode': ucs2encode + }, + 'decode': decode, + 'encode': encode, + 'toASCII': toASCII, + 'toUnicode': toUnicode + }; + + /** Expose `punycode` */ + // Some AMD build optimizers, like r.js, check for specific condition patterns + // like the following: + if ( + true + ) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { + return punycode; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else if (freeExports && freeModule) { + if (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+ + freeModule.exports = punycode; + } else { // in Narwhal or RingoJS v0.7.0- + for (key in punycode) { + punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); + } + } + } else { // in Rhino or a web browser + root.punycode = punycode; + } + + }(this)); + + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(64)(module), (function() { return this; }()))) + +/***/ }, +/* 61 */ +/***/ function(module, exports, __webpack_require__) { + + var at, // The index of the current character + ch, // The current character + escapee = { + '"': '"', + '\\': '\\', + '/': '/', + b: '\b', + f: '\f', + n: '\n', + r: '\r', + t: '\t' + }, + text, + + error = function (m) { + // Call error when something is wrong. + throw { + name: 'SyntaxError', + message: m, + at: at, + text: text + }; + }, + + next = function (c) { + // If a c parameter is provided, verify that it matches the current character. + if (c && c !== ch) { + error("Expected '" + c + "' instead of '" + ch + "'"); + } + + // Get the next character. When there are no more characters, + // return the empty string. + + ch = text.charAt(at); + at += 1; + return ch; + }, + + number = function () { + // Parse a number value. + var number, + string = ''; + + if (ch === '-') { + string = '-'; + next('-'); + } + while (ch >= '0' && ch <= '9') { + string += ch; + next(); + } + if (ch === '.') { + string += '.'; + while (next() && ch >= '0' && ch <= '9') { + string += ch; + } + } + if (ch === 'e' || ch === 'E') { + string += ch; + next(); + if (ch === '-' || ch === '+') { + string += ch; + next(); + } + while (ch >= '0' && ch <= '9') { + string += ch; + next(); + } + } + number = +string; + if (!isFinite(number)) { + error("Bad number"); + } else { + return number; + } + }, + + string = function () { + // Parse a string value. + var hex, + i, + string = '', + uffff; + + // When parsing for string values, we must look for " and \ characters. + if (ch === '"') { + while (next()) { + if (ch === '"') { + next(); + return string; + } else if (ch === '\\') { + next(); + if (ch === 'u') { + uffff = 0; + for (i = 0; i < 4; i += 1) { + hex = parseInt(next(), 16); + if (!isFinite(hex)) { + break; + } + uffff = uffff * 16 + hex; + } + string += String.fromCharCode(uffff); + } else if (typeof escapee[ch] === 'string') { + string += escapee[ch]; + } else { + break; + } + } else { + string += ch; + } + } + } + error("Bad string"); + }, + + white = function () { + + // Skip whitespace. + + while (ch && ch <= ' ') { + next(); + } + }, + + word = function () { + + // true, false, or null. + + switch (ch) { + case 't': + next('t'); + next('r'); + next('u'); + next('e'); + return true; + case 'f': + next('f'); + next('a'); + next('l'); + next('s'); + next('e'); + return false; + case 'n': + next('n'); + next('u'); + next('l'); + next('l'); + return null; + } + error("Unexpected '" + ch + "'"); + }, + + value, // Place holder for the value function. + + array = function () { + + // Parse an array value. + + var array = []; + + if (ch === '[') { + next('['); + white(); + if (ch === ']') { + next(']'); + return array; // empty array + } + while (ch) { + array.push(value()); + white(); + if (ch === ']') { + next(']'); + return array; + } + next(','); + white(); + } + } + error("Bad array"); + }, + + object = function () { + + // Parse an object value. + + var key, + object = {}; + + if (ch === '{') { + next('{'); + white(); + if (ch === '}') { + next('}'); + return object; // empty object + } + while (ch) { + key = string(); + white(); + next(':'); + if (Object.hasOwnProperty.call(object, key)) { + error('Duplicate key "' + key + '"'); + } + object[key] = value(); + white(); + if (ch === '}') { + next('}'); + return object; + } + next(','); + white(); + } + } + error("Bad object"); + }; + + value = function () { + + // Parse a JSON value. It could be an object, an array, a string, a number, + // or a word. + + white(); + switch (ch) { + case '{': + return object(); + case '[': + return array(); + case '"': + return string(); + case '-': + return number(); + default: + return ch >= '0' && ch <= '9' ? number() : word(); + } + }; + + // Return the json_parse function. It will have access to all of the above + // functions and variables. + + module.exports = function (source, reviver) { + var result; + + text = source; + at = 0; + ch = ' '; + result = value(); + white(); + if (ch) { + error("Syntax error"); + } + + // If there is a reviver function, we recursively walk the new structure, + // passing each name/value pair to the reviver function for possible + // transformation, starting with a temporary root object that holds the result + // in an empty key. If there is not a reviver function, we simply return the + // result. + + return typeof reviver === 'function' ? (function walk(holder, key) { + var k, v, value = holder[key]; + if (value && typeof value === 'object') { + for (k in value) { + if (Object.prototype.hasOwnProperty.call(value, k)) { + v = walk(value, k); + if (v !== undefined) { + value[k] = v; + } else { + delete value[k]; + } + } + } + } + return reviver.call(holder, key, value); + }({'': result}, '')) : result; + }; + + +/***/ }, +/* 62 */ +/***/ function(module, exports, __webpack_require__) { + + var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + gap, + indent, + meta = { // table of character substitutions + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '"' : '\\"', + '\\': '\\\\' + }, + rep; + + function quote(string) { + // If the string contains no control characters, no quote characters, and no + // backslash characters, then we can safely slap some quotes around it. + // Otherwise we must also replace the offending characters with safe escape + // sequences. + + escapable.lastIndex = 0; + return escapable.test(string) ? '"' + string.replace(escapable, function (a) { + var c = meta[a]; + return typeof c === 'string' ? c : + '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }) + '"' : '"' + string + '"'; + } + + function str(key, holder) { + // Produce a string from holder[key]. + var i, // The loop counter. + k, // The member key. + v, // The member value. + length, + mind = gap, + partial, + value = holder[key]; + + // If the value has a toJSON method, call it to obtain a replacement value. + if (value && typeof value === 'object' && + typeof value.toJSON === 'function') { + value = value.toJSON(key); + } + + // If we were called with a replacer function, then call the replacer to + // obtain a replacement value. + if (typeof rep === 'function') { + value = rep.call(holder, key, value); + } + + // What happens next depends on the value's type. + switch (typeof value) { + case 'string': + return quote(value); + + case 'number': + // JSON numbers must be finite. Encode non-finite numbers as null. + return isFinite(value) ? String(value) : 'null'; + + case 'boolean': + case 'null': + // If the value is a boolean or null, convert it to a string. Note: + // typeof null does not produce 'null'. The case is included here in + // the remote chance that this gets fixed someday. + return String(value); + + case 'object': + if (!value) return 'null'; + gap += indent; + partial = []; + + // Array.isArray + if (Object.prototype.toString.apply(value) === '[object Array]') { + length = value.length; + for (i = 0; i < length; i += 1) { + partial[i] = str(i, value) || 'null'; + } + + // Join all of the elements together, separated with commas, and + // wrap them in brackets. + v = partial.length === 0 ? '[]' : gap ? + '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : + '[' + partial.join(',') + ']'; + gap = mind; + return v; + } + + // If the replacer is an array, use it to select the members to be + // stringified. + if (rep && typeof rep === 'object') { + length = rep.length; + for (i = 0; i < length; i += 1) { + k = rep[i]; + if (typeof k === 'string') { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } + else { + // Otherwise, iterate through all of the keys in the object. + for (k in value) { + if (Object.prototype.hasOwnProperty.call(value, k)) { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } + + // Join all of the member texts together, separated with commas, + // and wrap them in braces. + + v = partial.length === 0 ? '{}' : gap ? + '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : + '{' + partial.join(',') + '}'; + gap = mind; + return v; + } + } + + module.exports = function (value, replacer, space) { + var i; + gap = ''; + indent = ''; + + // If the space parameter is a number, make an indent string containing that + // many spaces. + if (typeof space === 'number') { + for (i = 0; i < space; i += 1) { + indent += ' '; + } + } + // If the space parameter is a string, it will be used as the indent string. + else if (typeof space === 'string') { + indent = space; + } + + // If there is a replacer, it must be a function or an array. + // Otherwise, throw an error. + rep = replacer; + if (replacer && typeof replacer !== 'function' + && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) { + throw new Error('JSON.stringify'); + } + + // Make a fake root object containing our value under the key of ''. + // Return the result of stringifying the value. + return str('', {'': value}); + }; + + +/***/ }, +/* 63 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + exports.decode = exports.parse = __webpack_require__(65); + exports.encode = exports.stringify = __webpack_require__(66); + + +/***/ }, +/* 64 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = function(module) { + if(!module.webpackPolyfill) { + module.deprecate = function() {}; + module.paths = []; + // module.parent = undefined by default + module.children = []; + module.webpackPolyfill = 1; + } + return module; + } + + +/***/ }, +/* 65 */ +/***/ function(module, exports, __webpack_require__) { + + // Copyright Joyent, Inc. and other Node contributors. + // + // Permission is hereby granted, free of charge, to any person obtaining a + // copy of this software and associated documentation files (the + // "Software"), to deal in the Software without restriction, including + // without limitation the rights to use, copy, modify, merge, publish, + // distribute, sublicense, and/or sell copies of the Software, and to permit + // persons to whom the Software is furnished to do so, subject to the + // following conditions: + // + // The above copyright notice and this permission notice shall be included + // in all copies or substantial portions of the Software. + // + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + // USE OR OTHER DEALINGS IN THE SOFTWARE. + + 'use strict'; + + // If obj.hasOwnProperty has been overridden, then calling + // obj.hasOwnProperty(prop) will break. + // See: https://github.com/joyent/node/issues/1707 + function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); + } + + module.exports = function(qs, sep, eq, options) { + sep = sep || '&'; + eq = eq || '='; + var obj = {}; + + if (typeof qs !== 'string' || qs.length === 0) { + return obj; + } + + var regexp = /\+/g; + qs = qs.split(sep); + + var maxKeys = 1000; + if (options && typeof options.maxKeys === 'number') { + maxKeys = options.maxKeys; + } + + var len = qs.length; + // maxKeys <= 0 means that we should not limit keys count + if (maxKeys > 0 && len > maxKeys) { + len = maxKeys; + } + + for (var i = 0; i < len; ++i) { + var x = qs[i].replace(regexp, '%20'), + idx = x.indexOf(eq), + kstr, vstr, k, v; + + if (idx >= 0) { + kstr = x.substr(0, idx); + vstr = x.substr(idx + 1); + } else { + kstr = x; + vstr = ''; + } + + k = decodeURIComponent(kstr); + v = decodeURIComponent(vstr); + + if (!hasOwnProperty(obj, k)) { + obj[k] = v; + } else if (Array.isArray(obj[k])) { + obj[k].push(v); + } else { + obj[k] = [obj[k], v]; + } + } + + return obj; + }; + + +/***/ }, +/* 66 */ +/***/ function(module, exports, __webpack_require__) { + + // Copyright Joyent, Inc. and other Node contributors. + // + // Permission is hereby granted, free of charge, to any person obtaining a + // copy of this software and associated documentation files (the + // "Software"), to deal in the Software without restriction, including + // without limitation the rights to use, copy, modify, merge, publish, + // distribute, sublicense, and/or sell copies of the Software, and to permit + // persons to whom the Software is furnished to do so, subject to the + // following conditions: + // + // The above copyright notice and this permission notice shall be included + // in all copies or substantial portions of the Software. + // + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + // USE OR OTHER DEALINGS IN THE SOFTWARE. + + 'use strict'; + + var stringifyPrimitive = function(v) { + switch (typeof v) { + case 'string': + return v; + + case 'boolean': + return v ? 'true' : 'false'; + + case 'number': + return isFinite(v) ? v : ''; + + default: + return ''; + } + }; + + module.exports = function(obj, sep, eq, name) { + sep = sep || '&'; + eq = eq || '='; + if (obj === null) { + obj = undefined; + } + + if (typeof obj === 'object') { + return Object.keys(obj).map(function(k) { + var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; + if (Array.isArray(obj[k])) { + return obj[k].map(function(v) { + return ks + encodeURIComponent(stringifyPrimitive(v)); + }).join(sep); + } else { + return ks + encodeURIComponent(stringifyPrimitive(obj[k])); + } + }).join(sep); + + } + + if (!name) return ''; + return encodeURIComponent(stringifyPrimitive(name)) + eq + + encodeURIComponent(stringifyPrimitive(obj)); + }; + + /***/ } /******/ ]) }); diff --git a/dist/jsoneditor.map b/dist/jsoneditor.map index ee0fd8b..07ddac2 100644 --- a/dist/jsoneditor.map +++ b/dist/jsoneditor.map @@ -1 +1 @@ -{"version":3,"file":"jsoneditor.map","sources":["./dist/jsoneditor.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","JSONEditor","container","options","json","Error","ieVersion","util","getInternetExplorerVersion","error","console","warn","onError","change","onChange","editable","onEditable","VALID_OPTIONS","Object","keys","forEach","option","indexOf","arguments","length","_create","Ajv","err","treemode","textmode","modes","prototype","DEBOUNCE_INTERVAL","mode","setMode","_delete","set","get","setText","jsonText","parse","getText","JSON","stringify","setName","name","getName","data","extend","oldMode","config","asText","clear","mixin","create","load","onModeChange","_onError","getMode","setSchema","schema","ajv","allErrors","verbose","validateSchema","compile","validate","registerMode","i","prop","isArray","reserved","Highlighter","History","SearchBox","ContextMenu","Node","modeswitcher","dom","highlighter","selection","undefined","multiselection","nodes","errorNodes","_setOptions","history","_createFrame","_createTable","frame","parentNode","removeChild","search","hasOwnProperty","_debouncedValidate","debounce","bind","focusNode","domFocus","Function","content","table","params","field","value","node","_setRoot","recurse","expand","appendChild","searchBox","blur","getValue","updateField","focus","input","querySelector","menu","collapse","tbody","getDom","text","results","expandAll","collapseAll","_onAction","action","add","_onChange","setError","duplicateErrors","schemaErrors","valid","errors","map","improveSchemaError","findNode","dataPath","filter","entry","concat","reduce","all","findParents","parent","child","message","type","startAutoScroll","mouseY","me","top","getAbsoluteTop","height","clientHeight","bottom","margin","interval","scrollTop","autoScrollStep","scrollHeight","autoScrollTimer","setInterval","stopAutoScroll","clearTimeout","setSelection","select","range","setSelectionOffset","getSelection","getSelectionOffset","nodeName","slice","scrollTo","callback","editor","animateTimeout","animateCallback","finalScrollTop","Math","min","max","animate","diff","abs","setTimeout","onEvent","event","_onEvent","document","createElement","className","onclick","target","preventDefault","oninput","onchange","onkeydown","onkeyup","oncut","onpaste","onmousedown","onmouseup","onmouseover","onmouseout","addEventListener","onfocusin","onfocusout","title","undo","_onUndo","redo","_onRedo","disabled","canUndo","canRedo","modeBox","_onKeyDown","_startDragDistance","_updateDragDistance","getNodeFromTarget","selected","showContextMenu","hasMoved","deselect","onDragStart","drag","_onMultiSelectStart","dragDistanceEvent","initialTarget","initialPageX","pageX","initialPageY","pageY","dragDistance","diffX","diffY","sqrt","start","end","mousemove","window","_onMultiSelect","mouseup","_onMultiSelectEnd","_findTopLevelNodes","removeEventListener","clearStartAndEnd","setSelected","Array","first","startPath","getPath","endPath","startChild","endChild","childs","startIndex","endIndex","firstIndex","lastIndex","keynum","which","keyCode","ctrlKey","shiftKey","handled","selectContentEditable","previous","next","stopPropagation","contentOuter","col","colgroupContent","width","anchor","onClose","items","push","click","onDuplicate","onRemove","close","show","ace","MAX_ERRORS","indentation","Number","_ace","theme","aceEditor","textarea","clientWidth","buttonFormat","format","buttonCompact","compact","editorDom","style","edit","$blockScrolling","Infinity","setTheme","setShowPrintMargin","setFontSize","getSession","setTabSize","setUseSoftTabs","setUseWrapMode","commands","bindKey","defineProperty","poweredBy","createTextNode","href","open","on","spellcheck","destroy","resize","force","sanitize","escapeUnicode","escapeUnicodeChars","originalOnChange","setValue","validationErrors","marginBottom","paddingBottom","doValidate","limit","hidden","innerHTML","join","jsonlint","jsonString","jsString","curr","charAt","prev","prevIsBrace","ii","cc","skipComment","parseString","quote","chars","parseKey","specialValues","key","regexp","test","match","replace","charCodeAt","toString","a","b","object","String","Boolean","RegExp","isUrlRegex","isUrl","obj","getAbsoluteLeft","elem","rect","getBoundingClientRect","left","pageXOffset","scrollLeft","pageYOffset","addClassName","classes","split","removeClassName","index","splice","stripFormatting","divElement","childNodes","iMax","removeAttribute","attributes","j","attribute","specified","setEndOfContentEditable","contentEditableElement","createRange","selectNodeContents","removeAllRanges","addRange","sel","getRangeAt","rangeCount","startContainer","endContainer","startOffset","endOffset","firstChild","setStart","setEnd","getInnerText","element","buffer","flush","nodeValue","hasChildNodes","innerText","prevChild","prevName","_ieVersion","rv","navigator","appName","ua","userAgent","re","exec","parseFloat","$1","isFirefox","listener","useCapture","attachEvent","f","detachEvent","parsePath","jsonPath","remainder","substr","SyntaxError","substring","keyword","enums","more","insideRect","_margin","right","func","wait","immediate","timeout","context","args","later","apply","callNow","textDiff","oldText","newText","len","oldEnd","newEnd","require","global","e","t","n","r","s","o","u","code","l",1,"RangeError","array","fn","result","mapDomain","string","parts","regexSeparators","labels","encoded","ucs2decode","extra","output","counter","ucs2encode","stringFromCharCode","basicToDigit","codePoint","base","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","k","floor","damp","baseMinusTMin","tMax","skew","decode","out","basic","oldi","w","baseMinusT","inputLength","initialN","bias","initialBias","lastIndexOf","delimiter","maxInt","tMin","encode","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","regexPunycode","toLowerCase","toASCII","regexNonASCII","freeExports","nodeType","freeModule","freeGlobal","self","punycode","overflow","not-basic","invalid-input","fromCharCode","version","ucs2",2,"qs","sep","eq","maxKeys","kstr","vstr","v","x","idx","decodeURIComponent","xs",3,"res","stringifyPrimitive","isFinite","objectKeys","ks","encodeURIComponent",4,"./decode","./encode",5,"Url","protocol","slashes","auth","host","port","hostname","hash","query","pathname","path","urlParse","url","parseQueryString","slashesDenoteHost","isObject","urlFormat","isString","urlResolve","source","relative","resolve","urlResolveObject","resolveObject","protocolPattern","portPattern","simplePathPattern","delims","unwise","autoEscape","nonHostChars","hostEndingChars","hostnameMaxLen","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","file","http:","https:","ftp:","gopher:","file:","querystring","TypeError","queryIndex","splitter","uSplit","slashRegex","rest","trim","simplePath","proto","lowerProto","hostEnd","hec","atSign","parseHost","ipv6Hostname","hostparts","part","newpart","validParts","notHost","bit","unshift","h","ae","esc","escape","qm","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","pop","isNullOrUndefined","authInHost","isNull","last","hasTrailingSlash","up","isAbsolute","./util",6,"arg",7,"_compileAsync","firstCall","loadMissingSchema","schemaLoaded","sch","_refs","ref","_schemas","addSchema","missingSchema","missingRef","_callbacks","_loadingSchemas","opts","loadSchema","deferCallback","schemaObj","_addSchema",8,"Cache","_cache","put","del",9,"$ref","allOf","anyOf","dependencies","enum","maximum","minimum","maxItems","minItems","maxLength","minLength","maxProperties","minProperties","multipleOf","not","oneOf","pattern","properties","required","uniqueItems","../dotjs/_limit","../dotjs/_limitItems","../dotjs/_limitLength","../dotjs/_limitProperties","../dotjs/allOf","../dotjs/anyOf","../dotjs/dependencies","../dotjs/enum","../dotjs/format","../dotjs/items","../dotjs/multipleOf","../dotjs/not","../dotjs/oneOf","../dotjs/pattern","../dotjs/properties","../dotjs/ref","../dotjs/required","../dotjs/uniqueItems","../dotjs/validate",10,"equal","arrA","arrB",11,"formats","formatDefs","copy","fName","compare","date","str","matches","DATE","month","day","DAYS","time","full","TIME","hour","minute","second","timeZone","date_time","dateTime","DATE_TIME_SEPARATOR","HOSTNAME","uri","NOT_URI_FRAGMENT","URI","regex","compareDate","d1","d2","compareTime","t1","t2","compareDateTime","dt1","dt2","UUID","JSON_POINTER","RELATIVE_JSON_POINTER","fast","date-time","email","ipv4","ipv6","uuid","json-pointer","relative-json-pointer",12,"localRefs","baseId","localCompile","_schema","_root","isRoot","validateCode","validateGenerator","isTop","schemaPath","errSchemaPath","errorPath","RULES","resolveRef","usePattern","useDefault","useCustomRule","vars","refVal","refValCode","patterns","patternCode","defaults","defaultCode","customRules","customRuleCode","beautify","indent_size","eval","log","refs","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","localSchema","inlineRef","inlineRefs","replaceLocalRef","refId","regexStr","patternsHash","toQuotedString","valueStr","stableStringify","defaultsHash","rule","parentSchema","it","definition","inline","macro","customRulesHash","_formats","arr","statement","js_beautify","ucs2length","./equal","./resolve","json-stable-stringify",13,"SchemaObject","_compile","_resolve","refPath","_getFullPath","getFullPath","normalizeId","resolveRecursive","getJsonPointer","parsedRef","resolveUrl","unescapeFragment","PREVENT_SCOPE_CHANGE","checkNoRef","countKeys","item","count","SIMPLE_INLINED","normalize","TRAILING_SLASH_HASH","resolveIds","_resolveIds","fullPath","escapeFragment","ids","toHash","./schema_obj",14,"ruleModules","rules","keywords","types","group","./_rules",15,16,"to","checkDataType","dataType","negate","EQUAL","AND","OK","NOT","checkDataTypes","dataTypes","number","integer","getProperty","IDENTIFIER","SINGLE_QUOTE","escapeQuotes","pos","varOccurences","dataVar","varReplace","expr","cleanUpCode","EMPTY_ELSE","EMPTY_IF_NO_ELSE","EMPTY_IF_WITH_ELSE","cleanUpVarErrors","ERRORS_REGEXP","REMOVE_ERRORS","RETURN_VALID","RETURN_TRUE","schemaHasRules","getPathExpr","currentPath","jsonPointers","isNumber","joinPaths","escapeJsonPointer","getData","$data","lvl","paths","jsonPointer","segments","segment","unescapeJsonPointer",17,"$keyword","$errorKeyword","$lvl","level","$dataLvl","dataLevel","$schema","$schemaPath","$errSchemaPath","$breakOnError","$valid","$schemaFormat","$isDataFormat","v5","$closingBraces","$schemaValueFormat","dataPathArr","$format","$compare","$isMax","$exclusiveKeyword","$schemaExcl","$isDataExcl","$op","$result","$isData","$schemaValue","$schemaValueExcl","$exclusive","$opExpr","$opStr","$$outStack","createErrors","messages","__err","compositeRule",18,"$notOp",19,20,"unicode",21,22,"$it","arr1","$sch","$i","l1",23,"$errs","$noEmptySchema","every","$wasComposite",24,25,"$schemaDeps","$propertyDeps","$property","$deps","$currentErrorPath","_$property","$prop","$propertyPath","$missingProperty","_errorDataPathProperty",26,27,"$isObject","$formatRef",28,"$dataNxt","$nextData","$additionalItems","additionalItems","$currErrSchemaPath","$passData","$code",29,"multipleOfPrecision",30,31,32,"$regexp",33,"$schemaKeys","$pProperties","patternProperties","$pPropertyKeys","$aProperties","additionalProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","removeAdditional","$checkAdditional","$required","loopRequired","$requiredHash","$pgProperties","patternGroups","$pgPropertyKeys","$propertyKey","i1","arr2","$pProperty","l2","arr3","$pgProperty","l3","$additionalProperty","$useDefaults","useDefaults","arr4","i4","l4","$hasDefault","$useData","arr5","i5","l5","arr6","i6","l6","$pgSchema","$pgMin","$pgMax","$limit","$reason","$moreOrLess",34,"$refVal","$message","missingRefs","$error",35,"$propertySch","$loopRequired",36,"$shouldContinue","$ifPassed","$caseIndex","then",37,38,"$shouldUseGroup","$rulesGroup","$shouldUseRule","$rule","$top","rootId","$closingBraces1","$closingBraces2","$typeSchema","i2","custom","$ruleValidate","$ruleErrs","$ruleErr","$rDef","$inline","$macro","statements","def_customError","$typeChecked","$isArray","$method",39,"_addRule","ruleGroup","rg",40,"description","definitions","schemaArray","positiveInteger","positiveIntegerDefault0","default","simpleTypes","stringArray","exclusiveMinimum","exclusiveMaximum",41,"formatMaximum","formatMinimum","exclusiveFormatMaximum","exclusiveFormatMinimum","constant","contains","switch","if","continue",42,"enableV5","meta","metaSchema","addMetaSchema","META_SCHEMA_ID","addKeyword","containsMacro","formatLimit","enable","./dotjs/_formatLimit","./dotjs/constant","./dotjs/switch","./refs/json-schema-v5.json",43,"cmp","space","cycles","replacer","aobj","bobj","seen","indent","colonSeparator","toJSON","sort","keyValue","has","jsonify",44,"./lib/parse","./lib/stringify",45,"at","ch","escapee","\"","\\","/","hex","uffff","parseInt","white","word","reviver","walk","holder",46,"escapable","partial","mind","gap","rep","\b","\t","\n","\f","\r","SCHEMA_URI_FORMAT_FUNC","SCHEMA_URI_FORMAT","schemaKeyRef","getSchema","_skipValidation","_meta","checkUnique","throwOrLogError","currentUriFormat","errorsText","keyRef","_getSchemaObj","removeSchema","jsonStr","skipValidation","cached","callValidate","compiling","currentRA","currentUD","compileSchema","separator","addFormat","addInitialSchemas","optsSchemas","schemas","addInitialFormats","cache","errorDataPath","compileAsync","./async","./cache","./compile","./compile/formats","./compile/resolve","./compile/rules","./compile/schema_obj","./keyword","./refs/json-schema-draft-04.json","./v5","locked","highlight","setHighlight","_cancelUnhighlight","unhighlight","unhighlightTimer","lock","unlock","actions","editField","oldValue","newValue","editValue","updateValue","changeType","oldType","newType","appendNodes","insertBeforeNodes","insertBefore","beforeNode","insertAfterNodes","afterNode","insertAfter","removeNodes","append","duplicateNodes","moveNodes","oldBeforeNode","moveBefore","newBeforeNode","hideChilds","oldSort","oldChilds","showChilds","newSort","newChilds","timestamp","Date","oldSelection","newSelection","delay","lastText","tr","td","divInput","tableInput","tbodySearch","refreshSearch","_onDelayedSearch","_onSearch","_onKeyUp","searchNext","searchPrevious","resultIndex","_setActiveResult","activeResult","prevNode","prevElem","searchFieldActive","searchValueActive","updateDom","_clearDelay","forceSearch","resultCount","createMenuItems","list","domItems","li","domItem","button","hide","submenu","divIcon","buttonSubmenu","buttonExpand","submenuTitle","divExpand","_onExpandItem","domSubItems","subItems","ul","eventListeners","focusButton","maxHeight","_getVisibleButtons","buttons","expandedItem","subItem","visibleMenu","contentWindow","showBelow","anchorRect","contentRect","anchorHeight","offsetHeight","mousedown","_isChildOf","keydown","alreadyVisible","padding","display","targetIndex","prevButton","nextButton","expanded","setField","fieldEditable","_debouncedOnChangeValue","_onChangeValue","_debouncedOnChangeField","_onChangeField","appendNodeFactory","_updateEditability","getFieldsPath","parents","tdError","tdValue","popover","onfocus","directions","direction","popoverRect","fit","getIndex","setParent","previousField","getField","_getDomField","childValue","_getType","childField","previousValue","_getDomValue","getLevel","clone","fieldInnerText","valueInnerText","cloneChilds","childClone","getAppend","nextTr","nextSibling","_hasChilds","newTr","appendTr","updateIndexes","trTemp","AppendNode","moveTo","currentIndex","searchField","searchValue","_updateDomField","childResults","_updateDomValue","offsetTop","focusElement","elementName","editableDiv","containsNode","_move","clearDom","removedNode","_remove","lastTr","_stringCast","silent","_unescapeHTML","undoDiff","redoDiff","domValue","classNames","isEmpty","checkbox","tdCheckbox","checked","domField","duplicateKeys","tdDrag","domDrag","tdMenu","tdField","tree","_createDomTree","firstNode","lastNode","draggedNode","_nextSibling","offsetY","onDrag","onDragEnd","oldCursor","body","cursor","mouseX","trThis","trPrev","trNext","trFirst","trLast","trRoot","nodePrev","nodeNext","topThis","topPrev","topFirst","heightThis","bottomNext","heightNext","moved","previousSibling","diffLevel","round","levelNext","isDraggedNode","some","_createDomField","isFirst","domTree","marginLeft","contentEditable","_escapeHTML","_updateDomIndexes","_createDomValue","_createDomExpandButton","borderCollapse","tdExpand","tdSeparator","srcElement","expandable","_onExpand","offsetX","onKeyDown","nextNode","nextDom","nextDom2","altKey","selectedNodes","_onInsertBefore","_onInsertAfter","endNode","_lastNode","_getElementName","homeNode","_firstNode","prevElement","_previousElement","appendDom","nextNode2","_previousNode","nextElement","_nextElement","prevDom","isVisible","_nextNode","blurNodes","clones","newNode","_onAppend","_onChangeType","_onSort","order","firstDom","lastDom","lastChild","TYPE_TITLES","auto","titles","lower","num","numFloat","isNaN","htmlEscaped","html","escapedText","_escapeJSON","escaped","createModeSwitcher","current","switchMode","availableModes","form","view","currentMode","currentTitle","box","div","position","parser","trace","yy","symbols_","JSONString","STRING","JSONNumber","NUMBER","JSONNullLiteral","NULL","JSONBooleanLiteral","TRUE","FALSE","JSONText","JSONValue","EOF","JSONObject","JSONArray","{","}","JSONMemberList","JSONMember",":",",","[","]","JSONElementList","$accept","$end","terminals_","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","defaultActions","parseError","popStack","stack","vstack","lstack","lex","token","lexer","recovering","TERROR","setInput","yylloc","yyloc","symbol","preErrorSymbol","state","newState","expected","yyval","errStr","showPosition","line","loc","first_line","last_line","first_column","last_column","_input","_more","_less","done","matched","conditionStack","lines","unput","less","pastInput","past","upcomingInput","pre","tempMatch","_currentRules","flex","begin","condition","popState","conditions","topState","pushState","yy_","$avoiding_name_collisions","YY_START","INITIAL","inclusive","trAppend","tdAppend","domText","paddingLeft","acequire","isDark","cssClass","cssText","importCssString","exportAce","ns","packaged","original","ACE_NAMESPACE","acequirejs","deps","payload","payloads","_acequire","parentId","lookup","dep","packagedModule","normalizeModule","moduleName","chunks","mod","req","returnValue","getNativeFlags","ignoreCase","multiline","extended","sticky","from","real","compliantExecNpcg","compliantLastIndexIncrement","r2","_xregexp","captureNames","Empty","doesDefinePropertyWork","exception","toInteger","that","bound","defineGetter","defineSetter","lookupGetter","lookupSetter","supportsAccessors","prototypeOfArray","prototypeOfObject","_toString","owns","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","makeArray","lengthBefore","array_splice","deleteCount","removeCount","removed","insert","remove","tailOldPos","tailNewPos","tailCount","lengthAfterRemove","boxedString","splitString","fun","toObject","thisp","reduceRight","sought","getPrototypeOf","__proto__","constructor","getOwnPropertyDescriptor","ERR_NON_OBJECT","property","descriptor","getter","setter","enumerable","configurable","getOwnPropertyNames","createEmpty","empty","propertyIsEnumerable","isPrototypeOf","toLocaleString","valueOf","Type","defineProperties","definePropertyWorksOnObject","definePropertyWorksOnDom","definePropertyFallback","ERR_NON_OBJECT_DESCRIPTOR","ERR_NON_OBJECT_TARGET","ERR_ACCESSORS_NOT_SUPPORTED","seal","freeze","freezeObject","preventExtensions","isSealed","isFrozen","isExtensible","hasDontEnumBug","dontEnums","dontEnumsLength","dontEnum","now","getTime","ws","trimBeginRegexp","trimEndRegexp","XHTML_NS","getDocumentHead","doc","head","getElementsByTagName","documentElement","tag","createElementNS","hasCssClass","el","addCssClass","removeCssClass","toggleCssClass","setCssClass","include","hasCssString","sheets","createStyleSheet","styleSheets","owningElement","importCssStylsheet","link","getInnerWidth","computedStyle","getInnerHeight","scrollbarWidth","inner","minWidth","outer","noScrollbar","offsetWidth","withScrollbar","getPageScrollTop","getPageScrollLeft","getComputedStyle","currentStyle","setInnerHtml","innerHtml","cloneNode","replaceChild","setInnerText","textContent","getParentWindow","defaultView","parentWindow","inherits","ctor","superCtor","super_","writable","implement","oop","Keys","ret","MODIFIER_KEYS",224,"KEY_MODS","ctrl","alt","super","command","cmd","FUNCTION_KEYS",96,97,98,99,100,101,102,103,104,105,"-13",112,113,114,115,116,117,118,119,120,121,122,123,144,145,"PRINTABLE_KEYS",48,49,50,51,52,53,54,55,56,57,59,61,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,107,109,110,186,187,188,189,190,191,192,219,220,221,222,111,106,"enter","mods","pow","keyCodeToString","keyString","OS","LINUX","MAC","WINDOWS","getOS","isMac","isLinux","os","platform","isWin","isIE","isOldIE","isGecko","isMozilla","Controllers","controllers","product","isOldGecko","isOpera","opera","isWebKit","isChrome","isAIR","isIPad","isTouchPad","isChromeOS","normalizeCommandKeys","hashId","getModifierHash","useragent","pressedKeys","OSKey","altGr","location","keyLocation","ts","timeStamp","dt","defaultPrevented","resetPressedKeys","lastT","addListener","wrapper","_wrapper","removeListener","stopEvent","cancelBubble","getButton","capture","eventHandler","releaseCaptureHandler","onMouseUp","addTouchMoveListener","startx","starty","touchObj","changedTouches","clientX","clientY","factor","wheelX","wheelY","addMouseWheelListener","wheelDeltaX","wheelDeltaY","wheelDelta","deltaMode","DOM_DELTA_PIXEL","deltaX","deltaY","DOM_DELTA_LINE","DOM_DELTA_PAGE","axis","HORIZONTAL_AXIS","detail","addMultiMouseDownListener","timeouts","callbackName","startX","startY","timer","clicks","eventNames","isNewClick","_clicks","metaKey","getModifierString","addCommandKeyListener","lastKeyDownKeyCode","lastDefaultPrevented","postMessage","postMessageId","nextTick","win","messageName","nextFrame","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","stringReverse","reverse","stringRepeat","stringTrimLeft","stringTrimRight","copyObject","copyArray","deepCopy","cons","arrayToMap","createMap","props","arrayRemove","escapeRegExp","escapeHTML","getMatchOffsets","regExp","offset","deferredCall","fcn","deferred","cancel","schedule","isPending","delayedCall","defaultTimeout","_self","lang","BROKEN_SETDATA","USE_IE_MIME_TYPE","TextInput","resetSelection","inComposition","inputHandler","selectionStart","selectionEnd","setSelectionRange","resetValue","PLACEHOLDER","syncValue","onContextMenuClose","closeTimeout","tempStyle","renderer","$keepTextAreaAtCursor","$moveTextAreaToCursor","setAttribute","opacity","copied","pasted","isSelectionEmpty","isFocused","activeElement","onBlur","onFocus","syncSelection","isAllSelected","createTextRange","moveStart","moveEnd","ownerDocument","parentElement","inPropertyChange","onPropertyChange","syncProperty","sendText","keytable","onCompositionEnd","onCompositionUpdate","onCompositionStart","onSelect","selectAll","setInputHandler","cb","getInputHandler","afterContextMenu","onPaste","execCommand","onTextInput","onInput","handleClipboardData","clipboardData","mime","setData","doCopy","isCut","getCopyText","onCut","onCopy","onCommandKey","$readOnly","session","markUndoGroup","clearSelection","val","lastValue","getRange","setRange","syncComposition","getElement","setReadOnly","readOnly","onContextMenu","_emit","domEvent","moveToMouse","bringToFront","borderTopWidth","borderLeftWidth","maxTop","move","textInput","scroller","DefaultHandlers","mouseHandler","$clickSelection","setDefaultHandler","onMouseDown","onDoubleClick","onTripleClick","onQuadClick","onMouseWheel","onTouchMove","selectByLines","extendSelectionBy","selectByWords","calcDistance","ax","ay","bx","by","calcRangeOrientation","row","column","DRAG_OFFSET","ev","inSelection","getDocumentPosition","mousedownEvent","selectionRange","getSelectionRange","selectionEmpty","moveToPosition","$focusTimout","inMultiSelectMode","captureMouse","startSelect","setState","waitForClickSelection","screenToTextCoordinates","y","getShiftKey","selectToPosition","setCapture","setStyle","comparePoint","orientedRange","setSelectionAnchor","scrollCursorIntoView","unitName","cmpStart","cmpEnd","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","unsetStyle","releaseCapture","focusWait","distance","getBracketRange","getWordRange","isMultiLine","getLineRange","getAccelKey","$lastScrollTime","isScrolable","isScrollableBy","speed","scrollBy","stop","Tooltip","isOpen","$element","$parentNode","$init","setHtml","setPosition","setClassName","getHeight","getWidth","GutterHandler","showTooltip","mouseEvent","annotation","gutter","$annotations","hideTooltip","maxRow","getLength","screenRow","pixelToScreenCoordinates","$pos","documentToScreenRow","tooltipAnnotation","tooltip","$tooltipFollowsMouse","moveTooltip","gutterElement","tooltipTimeout","$gutterLayer","GutterTooltip","gutterRegion","getRegion","selectTo","isMousePressed","$gutter","windowWidth","innerWidth","windowHeight","innerHeight","MouseEvent","$inSelection","propagationStopped","DragdropHandler","prevCursor","vMovement","hMovement","cursorMovedTime","moveCursorToPosition","cursorPointOnCaretMoved","SCROLL_CURSOR_HYSTERESIS","SCROLL_CURSOR_DELAY","autoScroll","lineHeight","layerConfig","characterWidth","editorRect","offsets","nearestXOffset","nearestYOffset","scrollCursor","vScroll","hScroll","autoScrollStartTime","AUTOSCROLL_DELAY","onDragInterval","dragCursor","addDragMarker","toOrientedRange","dragSelectionMarker","addMarker","getSelectionStyle","$cursorLayer","setBlinking","clearInterval","timerId","onMouseMove","clearDragMarker","removeMarker","fromOrientedRange","isInternal","getReadOnly","onMouseMoveTimer","canAccept","dataTransfer","getDropEffect","copyAllowed","moveAllowed","copyModifierState","effectAllowed","dropEffect","blankImage","src","dragOperation","mouseTarget","cancelDrag","draggable","setDragImage","clearData","getTextRange","setCursorStyle","onDragEnter","onDragOver","onDragLeave","onDrop","moveText","dropData","dragWait","getDragDelay","startDrag","dragWaitEnd","dragReadyEnd","cursorStyle","onMouseDrag","dragDrop","$dragEnabled","clickCount","eventTarget","unselectable","xhr","XMLHttpRequest","onreadystatechange","readyState","responseText","send","loadScript","onload","_","isAbort","qualifyURL","EventEmitter","_dispatchEvent","eventName","_eventRegistry","_defaultHandlers","listeners","defaultHandler","_signal","once","newCallback","handlers","_disabled_","old","removeDefaultHandler","capturing","off","removeAllListeners","reportError","msg","optionsProvider","setOptions","optList","setOption","getOptions","optionNames","$options","getOption","opt","forwardTo","handlesSet","AppConfig","$defaultOptions","defineOptions","initialValue","resetOptions","setDefaultValue","setDefaultValues","optionHash","init","scriptOptions","scriptUrl","currentScript","_currentScript","currentDocument","scripts","script","getAttribute","attr","deHyphenate","basePath","workerPath","modePath","themePath","m1","toUpperCase","net","suffix","$moduleUrls","moduleUrl","component","setModuleUrl","subst","$loading","loadModule","onLoad","moduleType","afterLoad","DefaultGutterHandler","MouseHandler","focusEditor","hasFocus","getMouseEventTarget","onMouseEvent","scrollBarV","scrollBarH","gutterEl","$dragDelay","character","insideStart","$scrollSpeed","mouseMoveHandler","releaseMouse","$mouseMoved","onCaptureEnd","onCaptureInterval","$onCaptureMouseMove","cancelContextMenu","scrollSpeed","dragDelay","dragEnabled","focusTimout","tooltipFollowsMouse","FoldHandler","fold","getFoldAt","removeFold","expandFold","foldWidgets","onFoldWidgetClick","getParentFoldRangeData","firstRange","getLine","addFold","keyUtil","KeyBinding","$editor","$handlers","kb","removeKeyboardHandler","$defaultHandler","addKeyboardHandler","setKeyboardHandler","handleKeyboard","attach","detach","getKeyboardHandler","getStatusText","$callKeyboardHandlers","toExecute","success","passEvent","comparePoints","p1","p2","Range","startRow","startColumn","endRow","endColumn","isEqual","compareRange","containsRange","intersects","isEnd","isStart","inside","insideEnd","compareStart","compareEnd","compareInside","clipRows","firstRow","lastRow","fromPoints","collapseRows","toScreenRange","screenPosStart","documentToScreenPosition","screenPosEnd","moveBy","Selection","getDocument","lead","selectionLead","createAnchor","selectionAnchor","$isEmpty","$keepDesiredColumnOnChange","$desiredColumn","getCursor","getPosition","getSelectionAnchor","getSelectionLead","shiftSelection","columns","moveCursorTo","isBackwards","$moveSelection","mover","selectUp","moveCursorUp","selectDown","moveCursorDown","selectRight","moveCursorRight","selectLeft","moveCursorLeft","selectLineStart","moveCursorLineStart","selectLineEnd","moveCursorLineEnd","selectFileEnd","moveCursorFileEnd","selectFileStart","moveCursorFileStart","selectWordRight","moveCursorWordRight","selectWordLeft","moveCursorWordLeft","selectWord","selectAWord","getAWordRange","excludeLastChar","rowEnd","rowStart","foldLine","getFoldLine","selectLine","moveCursorBy","tabSize","getTabSize","isTabStop","firstColumnPosition","screenToDocumentPosition","beforeCursor","getDisplayLine","leadingSpace","$useEmacsStyleLineStart","lineEnd","getDocumentLastRowColumnPosition","textEnd","moveCursorLongWordRight","rightOfCursor","nonTokenRe","tokenRe","moveCursorLongWordLeft","getFoldStringAt","leftOfCursor","$shortWordEndIndex","whitespaceRe","moveCursorShortWordRight","moveCursorShortWordLeft","$selectLongWords","rows","screenPos","docPos","lineWidgets","keepDesiredColumn","moveCursorToScreen","desiredColumn","getRangeOfMovements","ranges","r1","fromJSON","rangeList","toSingleRange","MAX_TOKEN_COUNT","Tokenizer","states","regExps","matchMappings","ruleRegExps","matchTotal","mapping","defaultToken","splitterRurles","caseInsensitive","adjustedregex","matchcount","groupCount","tokenArray","onMatch","$arrayTokens","$applyToken","removeCapturingGroups","splitRegex","createSplitterRegexp","$setMaxTokenCount","values","tokens","inChClass","lastCapture","parenOpen","parenClose","square","getLineTokens","startState","currentState","matchAttempts","skipped","merge","TextHighlightRules","$rules","addRules","prefix","nextState","getRules","embedRules","HighlightRules","escapeRules","$embeds","getEmbeds","normalizeRules","processState","processed","stateName","includeName","toInsert","noEscape","keywordMap","createKeywordMapper","splitChar","$keywordList","getKeywords","$keywords","Behaviour","$behaviours","addBehaviours","behaviours","inherit","getBehaviours","addUnicodePackage","pack","packages","L","Ll","Lu","Lt","Lm","Lo","M","Mn","Mc","Me","N","Nd","Nl","No","P","Pd","Ps","Pe","Pi","Pf","Pc","Po","S","Sm","Sc","Sk","So","Z","Zs","Zl","Zp","C","Cc","Cf","Co","Cs","Cn","TokenIterator","initialRow","initialColumn","$session","$row","$rowTokens","getTokens","getTokenAt","$tokenIndex","stepBackward","stepForward","rowCount","getCurrentToken","getCurrentTokenRow","getCurrentTokenColumn","rowTokens","tokenIndex","getCurrentTokenPosition","Mode","$behaviour","getTokenizer","$tokenizer","$highlightRules","lineCommentStart","blockComment","toggleCommentLines","iter","ignoreBlankLines","shouldRemove","minIndent","insertAtTabStop","regexpStart","getUseSoftTabs","uncomment","shouldInsertSpace","removeInLine","commentWithSpace","comment","insertInLine","testRemove","before","after","spaces","lineCommentEnd","regexpEnd","minEmptyLength","toggleBlockComment","colDiff","iterator","initialRange","startRange","endRange","getNextLineIndent","tab","$getIndent","checkOutdent","autoOutdent","createWorker","createModeDelegates","$modes","delegations","scope","functionName","$delegator","method","transformAction","param","completionKeywords","ruleItr","aLength","$createKeywordList","getCompletions","score","$id","applyDelta","docLines","doNotValidate","Anchor","$onChange","$pointsInOrder","point1","point2","equalPointsInOrder","bColIsAfter","$getTransformedPoint","point","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","$clipPositionToDocument","$insertRight","noClip","Document","textOrLines","$lines","insertMergedLines","getAllLines","getNewLineCharacter","$split","$detectNewLine","$autoNewLine","$newLineMode","setNewLineMode","newLineMode","getNewLineMode","isNewLine","getLines","getLinesForRange","insertLines","insertFullLines","removeLines","removeFullLines","insertNewLine","clippedPos","clonePos","$clipPosition","deleteFirstNewLine","deleteLastNewLine","startCol","endCol","deletedLines","removeNewLine","applyDeltas","deltas","revertDeltas","revertDelta","isInsert","$splitAndapplyLargeDelta","MAX","chunk","indexToPosition","newlineLength","positionToIndex","BackgroundTokenizer","tokenizer","running","currentLine","$worker","workerStart","endLine","startLine","processedLines","$tokenizeRow","fireUpdateEvent","setTokenizer","setDocument","scheduleStart","$updateOnChange","getState","SearchHighlight","clazz","setRegexp","MAX_RANGES","update","markerLayer","drawSingleLineMarker","FoldLine","foldData","folds","setFoldLine","shiftRow","sameRow","containsRow","lastEnd","isNewRow","placeholder","getNextFoldTo","kind","addRemoveChars","foldBefore","newFoldLine","foldLineNext","idxToPosition","lastFoldEndColumn","RangeList","pointIndex","excludeEdges","addList","substractPoint","containsPoint","rangeAtPoint","clipped","removeAll","lineDif","consumePoint","consumeRange","restorePoint","restoreRange","Fold","subFolds","subFold","collapseChildren","addSubFold","afterStart","Folding","side","getFoldsInRange","foldLines","$foldData","foundFolds","getFoldsInRangeList","getAllFolds","lastFold","docRow","startFoldLine","getNextFoldLine","getFoldedRowCount","$addFoldLine","added","$clipRangeToDocument","startFold","endFold","removeFolds","$useWrapMode","$updateWrapData","$updateRowLengthCache","$modified","addFolds","$updating","cloneFolds","foldAll","expandFolds","unfold","expandInner","isRowFolded","startFoldRow","getRowFoldEnd","getRowFoldStart","getFoldDisplayLine","textLine","lastColumn","$cloneFoldData","fd","toggleFold","tryToUnfold","bracketPos","findMatchingBracket","getCommentFoldRange","dir","depth","getFoldWidget","getFoldWidgetRange","$foldStyles","manual","markbegin","markbeginend","$foldStyle","setFoldStyle","$foldMode","$setFolding","foldMode","$updateFoldWidgets","$tokenizerUpdateFoldWidgets","updateFoldWidgets","tokenizerUpdateFoldWidgets","ignoreCurrent","fw","children","siblings","$toggleFoldWidget","toggleFoldWidget","toggleParent","BracketMatch","chr","charBeforeCursor","$findClosingBracket","$findOpeningBracket","$brackets",")","(","bracket","typeRe","openBracket","valueIndex","closingBracket","valueLength","TextMode","EditSession","$breakpoints","$decorations","$frontMarkers","$backMarkers","$markerId","$undoSelect","onChangeFold","isFullWidth","bgTokenizer","resetCaches","$resetRowCache","$docRowCache","$screenRowCache","$getRowCacheIndex","cacheArray","low","hi","mid","$wrapData","$rowLengthCache","removedFolds","$updateInternalDataOnChange","$fromUndo","$undoManager","ignore","$deltasDoc","$deltasFold","$informUndoManager","$deltas","setUndoManager","getUndoManager","reset","undoManager","$syncInformUndoManager","execute","mergeUndoDeltas","$defaultUndoManager","getTabString","$useSoftTabs","$mode","$indentWithTabs","$tabSize","$overwrite","setOverwrite","overwrite","getOverwrite","toggleOverwrite","addGutterDecoration","removeGutterDecoration","getBreakpoints","setBreakpoints","clearBreakpoints","setBreakpoint","clearBreakpoint","inFront","marker","addDynamicMarker","markerId","markers","getMarkers","$searchHighlight","highlightLines","setAnnotations","annotations","getAnnotations","clearAnnotations","inToken","wordRange","setUseWorker","useWorker","getUseWorker","$useWorker","onReloadTokenizer","$modeId","$onChangeMode","$isPlaceholder","$stopWorker","$startWorker","attachToSession","wrapMethod","$wrapMethod","foldingRules","terminate","$scrollTop","setScrollTop","getScrollTop","$scrollLeft","setScrollLeft","getScrollLeft","getScreenWidth","$computeWidth","getLineWidgetMaxWidth","screenWidth","lineWidgetsWidth","lineWidgetWidth","$wrapLimit","longestScreenLine","foldIndex","foldStart","$getStringScreenWidth","undoChanges","dontSelect","lastUndoRange","$getUndoSelection","foldDelta","redoChanges","setUndoSelect","isUndo","lastDeltaIsInsert","fromRange","toPosition","toRange","rowDiff","collDiff","oldStart","newStart","indentRows","indentString","outdentRows","rowRange","deleteRange","size","$moveLines","$clipRowToDocument","MAX_VALUE","moveLinesUp","moveLinesDown","duplicateLines","$clipColumnToRow","$wrapLimitRange","useWrapMode","getUseWrapMode","setWrapLimitRange","adjustWrapLimit","desiredLimit","$printMargin","limits","wrapLimit","$constrainWrapLimit","getWrapLimit","setWrapLimit","getWrapLimitRange","foldLineBefore","wrapData","walkTokens","$getDisplayTokens","PLACEHOLDER_START","PLACEHOLDER_BODY","$computeWrapSplits","CHAR","CHAR_EXT","PUNCTUATION","SPACE","TAB","TAB_SPACE","getWrapIndent","maxIndent","indentedSoftWrap","isCode","addSplit","displayed","lastSplit","splits","lastDocSplit","displayLength","$wrapAsCode","$indentedSoftWrap","minSplit","getScreenTabSize","maxScreenColumn","screenColumn","getRowLength","getRowLineCount","getRowWrapIndent","getScreenLastRowColumn","documentToScreenColumn","getDocumentLastRowColumn","docColumn","getRowSplitData","screenToDocumentRow","screenToDocumentColumn","rowLength","rowCache","doCache","wrapIndent","splitIndex","foldStartRow","wrapRow","screenRowOffset","getScreenLength","screenRows","$getWidgetScreenLength","$setFontMetrics","fm","$enableVarChar","getCharacterWidth","wrap","$wrap","firstLineNumber","useSoftTabs","Search","find","$matchIterator","skipCurrent","findAll","needle","$assembleRegExp","$isMultiLine","prevRange","replacement","preserveCase","matchIterator","backwards","lineIterator","$lineIterator","_callback","$disableFakeMultiline","wholeWord","modifier","caseSensitive","$assembleMultilineRegExp","HashHandler","commandKeyBinding","addCommands","$singleCommand","MultiHashHandler","addCommand","removeCommand","_buildKeyHash","keepCommand","ckb","keyId","cmdGroup","keyPart","chain","binding","parseKeys","_addCommandToBinding","isDefault","other","otherPos","removeCommands","bindKeys","keyList","findKeyCommand","$keyChain","CommandManager","byName","toggleRecording","$inReplay","recording","$addCommandToMacro","oldMacro","replay","trimMacro","mac","showSettingsMenu","showErrorMarker","scrollIntoView","centerSelection","prompt","gotoLine","multiSelectAction","getAllRanges","findNext","findPrevious","aceCommandGroup","navigateFileStart","navigateUp","times","navigateFileEnd","navigateDown","navigateWordLeft","navigateLineStart","navigateLeft","navigateWordRight","navigateLineEnd","navigateRight","selectPageDown","scrollPageDown","gotoPageDown","selectPageUp","scrollPageUp","gotoPageUp","jumpToMatching","$handlePaste","duplicateSelection","sortLines","modifyNumber","copyLinesUp","copyLinesDown","removeToLineStart","removeToLineEnd","removeWordLeft","removeWordRight","blockOutdent","blockIndent","splitLine","transposeLetters","transposeSelections","firstLineEndCol","selectedText","selectedCount","insertLine","curLine","newRanges","exitMultiSelectMode","defaultCommands","Editor","getContainerElement","getTextAreaContainer","keyBinding","$mouseHandler","$search","$historyTracker","$initOperationListeners","_$emitInputEvent","setSession","selections","startOperation","endOperation","$opResetTimer","curOp","docChanged","selectionChanged","prevOp","commadEvent","previousCommand","scrollSelectionIntoView","animateScrolling","$mergeableCommands","$mergeUndoDeltas","mergeableCommands","shouldMerge","mergeNextCommand","sequenceStartTime","keyboardHandler","$keybindingId","handler","oldSession","$onDocumentChange","$onTokenizerUpdate","$onChangeTabSize","$onChangeWrapLimit","$onChangeWrapMode","$onChangeFold","$onChangeFrontMarker","$onChangeBackMarker","$onChangeBreakpoint","$onChangeAnnotation","$onCursorChange","$onScrollTopChange","$onScrollLeftChange","$onSelectionChange","onDocumentChange","onChangeMode","onTokenizerUpdate","onChangeTabSize","onChangeWrapLimit","onChangeWrapMode","onChangeFrontMarker","onChangeBackMarker","onChangeBreakpoint","onChangeAnnotation","onCursorChange","onScrollTopChange","onScrollLeftChange","onSelectionChange","updateFull","oldEditor","cursorPos","onResize","getTheme","getFontSize","$highlightBrackets","$bracketHighlight","$highlightPending","getCursorPosition","getMatching","$highlightTags","$highlightTagPending","$tagHighlight","prevToken","$isFocused","showCursor","visualizeFocus","hideCursor","visualizeBlur","$cursorChange","updateCursor","updateLines","$updateHighlightActiveLine","scrollToY","scrollToX","$highlightActiveLine","$selectionStyle","$maxLines","$minLines","$highlightLineMarker","$selectionMarker","$highlightSelectedWord","$getSelectionHighLightRegexp","startOuter","endOuter","lineCols","updateFrontMarkers","updateBackMarkers","updateBreakpoints","updateText","getSelectedText","inVirtualSelectionMode","getBehavioursEnabled","transform","$mergeNextCommand","d","lineState","shouldOutdent","lineIndent","setScrollSpeed","getScrollSpeed","setDragDelay","setSelectionStyle","setHighlightActiveLine","shouldHighlight","getHighlightActiveLine","setHighlightGutterLine","getHighlightGutterLine","setHighlightSelectedWord","getHighlightSelectedWord","setAnimatedScroll","shouldAnimate","getAnimatedScroll","setShowInvisibles","showInvisibles","getShowInvisibles","setDisplayIndentGuides","getDisplayIndentGuides","showPrintMargin","getShowPrintMargin","setPrintMarginColumn","getPrintMarginColumn","setBehavioursEnabled","enabled","setWrapBehavioursEnabled","getWrapBehavioursEnabled","setShowFoldWidgets","getShowFoldWidgets","setFadeFoldWidgets","fade","getFadeFoldWidgets","new_range","swap","originalRange","$getSelectedRows","getNumberAt","_numberRx","amount","charRange","nr","fp","decimals","nnr","toFixed","replaceRange","endPoint","totalDiff","rangeIndex","subRows","showComposition","setCompositionText","hideComposition","getFirstVisibleRow","getLastVisibleRow","isRowVisible","isRowFullyVisible","getFirstFullyVisibleRow","getLastFullyVisibleRow","$getVisibleRowCount","getScrollBottomRow","getScrollTopRow","$moveByPage","scrollToRow","scrollToLine","center","alignCursor","getCursorPositionScreen","matchType","bracketType","found","brackets","lineNumber","navigateTo","replaced","$tryReplace","replaceAll","getLastSearchOptions","newRange","preventScroll","revealRange","setAutoScrollEditorIntoView","shouldScroll","$scrollAnchor","scrollAnchor","onChangeSelection","onBeforeRender","onAfterRender","$pixelPos","$resetCursorStyle","$cursorStyle","cursorLayer","setSmoothBlinking","isBlinking","selectionStyle","highlightActiveLine","highlightSelectedWord","behavioursEnabled","wrapBehavioursEnabled","autoScrollEditorIntoView","hScrollBarAlwaysVisible","vScrollBarAlwaysVisible","highlightGutterLine","animatedScroll","printMarginColumn","printMargin","fadeFoldWidgets","showFoldWidgets","showLineNumbers","showGutter","displayIndentGuides","fontSize","fontFamily","maxLines","minLines","scrollPastEnd","fixedWidthGutter","foldStyle","UndoManager","$serializeDelta","$deserializeDelta","cloneDeltaSetsObj","deltaSets_old","fnGetModifiedDelta","deltaSets_new","deltaSet_old","deltaSet_new","delta_old","deltaSets","$doc","hasUndo","dirtyCounter","$undoStack","$redoStack","NaN","undoSelectionRange","redoSelectionRange","$deserializeDeltas","hasRedo","markClean","isClean","$serializeDeltas","Gutter","parentEl","$showFoldWidgets","gutterWidth","$updateAnnotations","$cells","rowInfo","annoText","gutterOffset","breakpoints","decorations","$firstLineNumber","lastLineNumber","gutterRenderer","$renderer","cell","textNode","foldWidget","minHeight","$fixedWidth","$padding","$computePadding","ceil","$showLineNumbers","setShowLineNumbers","getShowLineNumbers","paddingRight","Marker","getBorderClass","tl","br","bl","setPadding","setMarkers","$getTop","drawFullLineMarker","drawScreenLineMarker","drawTextMarker","drawMultiLineMarker","firstRowScreen","stringBuilder","extraStyle","lineRange","radiusClass","extraLength","Text","$updateEolChar","EOF_CHAR","EOL_CHAR_LF","EOL_CHAR_CRLF","EOL_CHAR","TAB_CHAR","SPACE_CHAR","getLineHeight","$fontMetrics","$characterSize","measure","$pollSizeChanges","checkForSizeChanges","$pollSizeChangesTimer","$computeTabString","$tabStrings","tabStr","$indentGuideRe","spaceClass","tabClass","spaceContent","tabContent","scrollLines","lineElements","lineElementsIdx","lineElement","$renderLine","$useLineGroups","oldConfig","fragment","$renderLinesFragment","createDocumentFragment","$textToken","rparen","lparen","$renderToken","replaceReg","replaceFunc","tabIdx","idx4","classToUse","renderIndentGuide","cols","$renderWrappedLine","onlyContents","splitChars","$renderSimpleLine","$getFoldLineTokens","addTokens","renderTokens","$measureNode","isIE8","Cursor","blinkInterval","smoothBlinking","cursors","addCursor","$updateCursors","$updateVisibility","$updateOpacity","visibility","blinking","restartTimer","setBlinkInterval","removeCursor","intervalId","timeoutId","blink","getPixelPosition","onScreen","cursorLeft","cursorTop","$selectionMarkers","cursorIndex","pixelPos","drawCursor","$setOverwrite","ScrollBar","classSuffix","setVisible","skipEvent","onScroll","VScrollBar","$scrollbarWidth","setHeight","setInnerHeight","setScrollHeight","HScrollBar","setWidth","setInnerWidth","setScrollWidth","ScrollBarV","ScrollBarH","RenderLoop","onRender","pending","changes","CHAR_COUNT","FontMetrics","$setMeasureNodeStyles","$main","$testFractionalRect","whiteSpace","font","$measureSizes","fontWeight","boldSize","charSizes","allowBoldFonts","setPolling","$measureCharWidth","GutterLayer","MarkerLayer","TextLayer","CursorLayer","editorCss","VirtualRenderer","onGutterResize","$markerBack","textLayer","$textLayer","canvas","$markerFront","$horizScroll","$vScroll","scrollBar","$scrollAnimation","scrollMargin","updateCharacterSize","$size","scrollerHeight","scrollerWidth","$dirty","$loop","$renderChanges","CHANGE_FULL","CHANGE_CURSOR","CHANGE_MARKER","CHANGE_GUTTER","CHANGE_SCROLL","CHANGE_LINES","CHANGE_TEXT","CHANGE_SIZE","CHANGE_MARKER_BACK","CHANGE_MARKER_FRONT","CHANGE_H_SCROLL","$allowBoldFonts","$updatePrintMargin","onChangeNewLineMode","$changedLines","updateFontSize","$changes","$updateSizeAsync","resizing","scrollWidth","$updateCachedSize","$extraHeight","oldSize","$showGutter","$computeLayerConfig","availableWidth","$showPrintMargin","$printMarginColumn","$animatedScroll","getShowGutter","setShowGutter","$updateGutterLineHighlight","$gutterLineHighlight","$printMarginEl","containerEl","posTop","posLeft","$composition","flint","setScrollMargin","sm","getHScrollBarAlwaysVisible","$hScrollBarAlwaysVisible","setHScrollBarAlwaysVisible","alwaysVisible","getVScrollBarAlwaysVisible","$vScrollBarAlwaysVisible","setVScrollBarAlwaysVisible","$updateScrollBarV","$scrollPastEnd","$updateScrollBarH","$frozen","unfreeze","st","marginTop","$highlightGutterLine","$updateLines","$autosize","desiredHeight","$gutterWidth","hideScrollbars","screenLines","longestLine","$getLongestLine","horizScroll","hScrollChanged","vScrollBefore","vScrollChanged","firstRowHeight","lineCount","charCount","$viewMargin","topMargin","bottomMargin","alignment","STEPS","$calcSteps","fromValue","toValue","steps","x_min","dx","initialScroll","oldSteps","$timer","canvasPos","textToScreenCoordinates","keepTextAreaAtCursor","$themeId","$theme","setMouseCursor","WorkerClient","topLevelNamespaces","classname","workerUrl","$sendDeltaQueue","changeListener","onMessage","nameToUrl","toUrl","normalizePath","$normalizePath","tlns","workerSrc","Blob","blob","blobUrl","URL","webkitURL","createObjectURL","Worker","DOMException","$workerBlob","blobURL","revokeObjectURL","callbackId","callbacks","onmessage","deltaQueue","emit","ex","attachToDocument","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","blobBuilder","getBlob","UIWorkerClient","messageBuffer","main","emitSync","sender","processNext","setEmitSync","Main","PlaceHolder","others","mainClass","othersClass","$onUpdate","onUpdate","$others","undoStack","$undostack","$undoStackDepth","setup","selectionBefore","showOtherMarkers","othersActive","hideOtherMarkers","updateAnchors","lengthDiff","inMainRange","distanceFromStart","newPos","updateMarkers","updateMarker","undosRequired","isSamePoint","accel","selectionMode","isMultiSelect","onMouseSelection","screenAnchor","screenCursor","$enableJumpToDef","$blockSelectEnabled","addSelectionMarker","oldRange","removeSelectionMarker","tmpSel","rectSel","blockSelect","newCursor","removeSelectionMarkers","rectangularRangeBlock","updateSelectionMarkers","onMouseSelectionEnd","onSelectionInterval","selectMoreLines","selectMore","multiSelect","splitIntoLines","alignCursors","multiSelectCommands","isAvailable","MultiSelect","$multiselectOnSessionChange","$onAddRange","$onRemoveRange","$onMultiSelect","$onSingleSelect","onSessionChange","$checkMultiselectChange","addAltCursorListeners","altCursor","altDown","getSelectionMarkers","$blockChangeEvents","mergeOverlappingRanges","lastRange","$initRangeList","toggleBlockSelection","includeEmptyLines","xBackwards","yBackwards","docEnd","selectionMarkerCount","markerList","$onMultiSelectExec","inVirtualMode","forEachSelection","keepOrder","$byLines","reg","cmdResult","anim","buf","nl","additive","skip","screenLead","toRemove","tmp","words","stopAtFirst","sameRowRanges","maxCol","minSpace","spaceOffsets","spaceOffset","fr","lr","guessRange","$reAlignText","forceLeft","alignLeft","startW","textW","endW","alignRight","unAlign","isLeftAligned","isRightAligned","enableMultiselect","enableBlockSelect","FoldMode","foldingStartMarker","foldingStopMarker","indentationBlock","startLevel","openingBracketBlock","closingBracketBlock","LineWidgets","widgetManager","updateOnChange","renderWidgets","measureWidgets","_changedWidgets","$onChangeEditor","updateOnFold","_inDocument","removeLineWidget","$updateRows","noWidgets","$oldWidget","addLineWidget","zIndex","coverGutter","pixelHeight","$fold","onWidgetChanged","w1","getWidgetsAtRow","changedWidgets","fixedWidth","coverLine","fullWidth","binarySearch","comparator","findAnnotations","oldWidget","gutterAnno","sc","arrow","Renderer","_id","getElementById","env","tagName","oldNode","createEditSession","JsonHighlightRules","MatchingBraceOutdent","openBracePos","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","initContext","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","opening","closing","CstyleBehaviour","isSaneInsertion","recordAutoInsert","recordMaybeInsert","rightChar","matching","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","clearMaybeInsertedClosing","next_indent","leftChar","rightToken","pair","stringBefore","stringAfter","wordRe","isWordBefore","isWordAfter","$matchTokenType","iterator2","BaseFoldMode","commentRegex","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","forceMultiline","getCommentRegionBlock","getSectionRange","startIndent","subRange","CStyleFoldMode","$outdent","worker","searchboxCss","showReplaceForm","setEditor","$initElements","sb","replaceBox","searchOptions","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","_this","activeInput","$searchBarKb","$closeSearchBarKb","Ctrl-f|Command-f","isReplace","Ctrl-H|Command-Option-F","Ctrl-G|Command-G","Ctrl-Shift-G|Command-Shift-G","findPrev","Return","Shift-Return","Alt-Return","Tab","$syncOptions","noMatch","replaceAndFindNext","get_blob","Builder","MSBlobBuilder","bag","builder","endings"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"jsoneditor.map","sources":["./dist/jsoneditor.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","JSONEditor","container","options","json","Error","ieVersion","util","getInternetExplorerVersion","error","console","warn","onError","change","onChange","editable","onEditable","VALID_OPTIONS","Object","keys","forEach","option","indexOf","arguments","length","_create","Ajv","err","treemode","textmode","modes","prototype","DEBOUNCE_INTERVAL","mode","setMode","_delete","set","get","setText","jsonText","parse","getText","JSON","stringify","setName","name","getName","data","extend","oldMode","config","asText","clear","mixin","create","load","onModeChange","_onError","getMode","setSchema","schema","ajv","allErrors","verbose","validateSchema","compile","validate","registerMode","i","prop","isArray","reserved","Highlighter","History","SearchBox","ContextMenu","Node","modeswitcher","dom","highlighter","selection","undefined","multiselection","nodes","errorNodes","_setOptions","history","_createFrame","_createTable","frame","parentNode","removeChild","search","hasOwnProperty","_debouncedValidate","debounce","bind","focusNode","domFocus","Function","content","table","params","field","value","node","_setRoot","recurse","expand","appendChild","searchBox","blur","getValue","updateField","focus","input","querySelector","menu","collapse","tbody","getDom","text","results","expandAll","collapseAll","_onAction","action","add","_onChange","setError","duplicateErrors","schemaErrors","valid","errors","map","improveSchemaError","findNode","dataPath","filter","entry","concat","reduce","all","findParents","parent","child","message","type","startAutoScroll","mouseY","me","top","getAbsoluteTop","height","clientHeight","bottom","margin","interval","scrollTop","autoScrollStep","scrollHeight","autoScrollTimer","setInterval","stopAutoScroll","clearTimeout","setSelection","select","range","setSelectionOffset","getSelection","getSelectionOffset","nodeName","slice","scrollTo","callback","editor","animateTimeout","animateCallback","finalScrollTop","Math","min","max","animate","diff","abs","setTimeout","onEvent","event","_onEvent","document","createElement","className","onclick","target","preventDefault","oninput","onchange","onkeydown","onkeyup","oncut","onpaste","onmousedown","onmouseup","onmouseover","onmouseout","addEventListener","onfocusin","onfocusout","title","undo","_onUndo","redo","_onRedo","disabled","canUndo","canRedo","modeBox","_onKeyDown","_startDragDistance","_updateDragDistance","getNodeFromTarget","selected","showContextMenu","hasMoved","deselect","onDragStart","drag","_onMultiSelectStart","dragDistanceEvent","initialTarget","initialPageX","pageX","initialPageY","pageY","dragDistance","diffX","diffY","sqrt","start","end","mousemove","window","_onMultiSelect","mouseup","_onMultiSelectEnd","_findTopLevelNodes","removeEventListener","clearStartAndEnd","setSelected","Array","first","startPath","getPath","endPath","startChild","endChild","childs","startIndex","endIndex","firstIndex","lastIndex","keynum","which","keyCode","ctrlKey","shiftKey","handled","selectContentEditable","previous","next","stopPropagation","contentOuter","col","colgroupContent","width","anchor","onClose","items","push","click","onDuplicate","onRemove","close","show","ace","MAX_ERRORS","indentation","Number","_ace","theme","aceEditor","textarea","clientWidth","buttonFormat","format","buttonCompact","compact","editorDom","style","edit","$blockScrolling","Infinity","setTheme","setShowPrintMargin","setFontSize","getSession","setTabSize","setUseSoftTabs","setUseWrapMode","commands","bindKey","defineProperty","poweredBy","createTextNode","href","open","on","spellcheck","destroy","resize","force","sanitize","escapeUnicode","escapeUnicodeChars","originalOnChange","setValue","validationErrors","marginBottom","paddingBottom","doValidate","limit","hidden","innerHTML","join","jsonlint","jsonString","jsString","curr","charAt","prev","lastNonWhitespace","chars","pp","skipBlockComment","skipComment","parseString","quote","parseKey","specialValues","key","regexp","test","match","replace","charCodeAt","toString","a","b","object","String","Boolean","RegExp","isUrlRegex","isUrl","obj","getAbsoluteLeft","elem","rect","getBoundingClientRect","left","pageXOffset","scrollLeft","pageYOffset","addClassName","classes","split","removeClassName","index","splice","stripFormatting","divElement","childNodes","iMax","removeAttribute","attributes","j","attribute","specified","setEndOfContentEditable","contentEditableElement","createRange","selectNodeContents","removeAllRanges","addRange","sel","getRangeAt","rangeCount","startContainer","endContainer","startOffset","endOffset","firstChild","setStart","setEnd","getInnerText","element","buffer","flush","nodeValue","hasChildNodes","innerText","prevChild","prevName","_ieVersion","rv","navigator","appName","ua","userAgent","re","exec","parseFloat","$1","isFirefox","listener","useCapture","attachEvent","f","detachEvent","parsePath","jsonPath","remainder","substr","SyntaxError","substring","keyword","enums","more","insideRect","_margin","right","func","wait","immediate","timeout","context","args","later","apply","callNow","textDiff","oldText","newText","len","oldEnd","newEnd","SCHEMA_URI_FORMAT_FUNC","str","SCHEMA_URI_FORMAT","opts","schemaKeyRef","v","getSchema","schemaObj","_addSchema","_compile","self","addSchema","_skipValidation","_meta","resolve","normalizeId","checkUnique","_schemas","meta","addMetaSchema","throwOrLogError","$schema","v5","META_SCHEMA_ID","currentUriFormat","_formats","uri","errorsText","keyRef","_getSchemaObj","_refs","removeSchema","_cache","del","jsonStr","stableStringify","skipValidation","cached","localRefs","ids","SchemaObject","put","callValidate","result","compiling","currentRA","removeAdditional","currentUD","useDefaults","compileSchema","refs","refVal","separator","dataVar","e","addFormat","addInitialSchemas","metaSchema","optsSchemas","schemas","addInitialFormats","formats","cache","Cache","_loadingSchemas","RULES","rules","errorDataPath","_errorDataPathProperty","enable","loopRequired","compileAsync","addKeyword","locked","highlight","setHighlight","_cancelUnhighlight","unhighlight","unhighlightTimer","lock","unlock","actions","editField","oldValue","newValue","editValue","updateValue","changeType","oldType","newType","appendNodes","insertBeforeNodes","insertBefore","beforeNode","insertAfterNodes","afterNode","insertAfter","removeNodes","append","duplicateNodes","moveNodes","oldBeforeNode","moveBefore","newBeforeNode","sort","hideChilds","oldSort","oldChilds","showChilds","newSort","newChilds","timestamp","Date","oldSelection","newSelection","delay","lastText","tr","td","divInput","tableInput","tbodySearch","refreshSearch","_onDelayedSearch","_onSearch","_onKeyUp","searchNext","searchPrevious","resultIndex","_setActiveResult","activeResult","prevNode","prevElem","searchFieldActive","searchValueActive","updateDom","_clearDelay","forceSearch","resultCount","createMenuItems","list","domItems","item","li","domItem","button","hide","submenu","divIcon","buttonSubmenu","buttonExpand","submenuTitle","divExpand","_onExpandItem","domSubItems","subItems","ul","eventListeners","focusButton","overflow","maxHeight","_getVisibleButtons","buttons","expandedItem","subItem","visibleMenu","contentWindow","showBelow","anchorRect","contentRect","anchorHeight","offsetHeight","mousedown","_isChildOf","keydown","fn","alreadyVisible","padding","display","targetIndex","prevButton","nextButton","expanded","setField","fieldEditable","_debouncedOnChangeValue","_onChangeValue","_debouncedOnChangeField","_onChangeField","appendNodeFactory","_updateEditability","path","getFieldsPath","unshift","shift","parents","tdError","tdValue","popover","onfocus","directions","direction","popoverRect","fit","getIndex","setParent","previousField","getField","_getDomField","childValue","_getType","childField","previousValue","arr","_getDomValue","getLevel","clone","fieldInnerText","valueInnerText","cloneChilds","childClone","getAppend","nextTr","nextSibling","_hasChilds","newTr","appendTr","updateIndexes","trTemp","AppendNode","moveTo","currentIndex","toLowerCase","searchField","searchValue","_updateDomField","childResults","_updateDomValue","offsetTop","focusElement","elementName","editableDiv","containsNode","_move","clearDom","removedNode","_remove","lastTr","_stringCast","silent","_unescapeHTML","undoDiff","redoDiff","domValue","classNames","isEmpty","count","checkbox","tdCheckbox","checked","domField","duplicateKeys","tdDrag","domDrag","tdMenu","tdField","tree","_createDomTree","firstNode","lastNode","draggedNode","_nextSibling","offsetY","onDrag","onDragEnd","oldCursor","body","cursor","mouseX","level","trThis","trPrev","trNext","trFirst","trLast","trRoot","nodePrev","nodeNext","topThis","topPrev","topFirst","heightThis","bottomNext","heightNext","moved","previousSibling","diffLevel","round","levelNext","isDraggedNode","some","n","_createDomField","isFirst","domTree","marginLeft","contentEditable","_escapeHTML","_updateDomIndexes","_createDomValue","_createDomExpandButton","borderCollapse","tdExpand","tdSeparator","srcElement","expandable","_onExpand","offsetX","onKeyDown","nextNode","nextDom","nextDom2","altKey","selectedNodes","_onInsertBefore","_onInsertAfter","endNode","_lastNode","_getElementName","homeNode","_firstNode","prevElement","_previousElement","appendDom","nextNode2","_previousNode","nextElement","_nextElement","prevDom","isVisible","_nextNode","blurNodes","clones","newNode","_onAppend","_onChangeType","_onSort","order","firstDom","lastDom","lastChild","TYPE_TITLES","auto","array","string","titles","lower","num","numFloat","isNaN","htmlEscaped","html","escapedText","_escapeJSON","escaped","createModeSwitcher","current","switchMode","availableModes","code","form","view","currentMode","currentTitle","box","div","position","parser","trace","yy","symbols_","JSONString","STRING","JSONNumber","NUMBER","JSONNullLiteral","NULL","JSONBooleanLiteral","TRUE","FALSE","JSONText","JSONValue","EOF","JSONObject","JSONArray","{","}","JSONMemberList","JSONMember",":",",","[","]","JSONElementList","$accept","$end","terminals_",2,4,6,8,10,11,14,17,18,21,22,23,24,"productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$",3,5,7,9,12,13,15,16,1,19,20,25,"defaultActions","parseError","hash","popStack","stack","vstack","lstack","lex","token","lexer","recovering","TERROR","setInput","yylloc","yyloc","symbol","preErrorSymbol","state","r","newState","expected","yyval","errStr","showPosition","line","loc","first_line","last_line","first_column","last_column","_input","_more","_less","done","matched","conditionStack","ch","lines","unput","less","pastInput","past","upcomingInput","pre","tempMatch","_currentRules","flex","begin","condition","popState","pop","conditions","topState","pushState","yy_","$avoiding_name_collisions","YY_START","INITIAL","inclusive","ref","inlineRef","inlineRefs","baseId","res","_resolve","url","refPath","_getFullPath","getFullPath","resolveRecursive","getJsonPointer","parsedRef","resolveUrl","parts","part","unescapeFragment","PREVENT_SCOPE_CHANGE","$ref","checkNoRef","countKeys","SIMPLE_INLINED","normalize","protocol","host","TRAILING_SLASH_HASH","resolveIds","_resolveIds","fullPath","equal","escapeFragment","toHash","copy","formatDefs","fName","compare","date","matches","DATE","month","day","DAYS","time","full","TIME","hour","minute","second","timeZone","date_time","dateTime","DATE_TIME_SEPARATOR","hostname","HOSTNAME","NOT_URI_FRAGMENT","URI","regex","compareDate","d1","d2","compareTime","t1","t2","compareDateTime","dt1","dt2","UUID","JSON_POINTER","RELATIVE_JSON_POINTER","fast","date-time","email","ipv4","ipv6","uuid","json-pointer","relative-json-pointer","ruleModules","keywords","types","group","enableV5","inline","statements","macro","containsMacro","formatLimit","not","_compileAsync","firstCall","loadMissingSchema","schemaLoaded","sch","missingSchema","missingRef","_callbacks","loadSchema","deferCallback","IDENTIFIER","definition","_addRule","dataType","ruleGroup","rg","rule","custom","checkDataType","trAppend","tdAppend","domText","paddingLeft","localCompile","_schema","_root","isRoot","validateCode","validateGenerator","isTop","schemaPath","errSchemaPath","errorPath","resolveRef","usePattern","useDefault","useCustomRule","vars","refValCode","patterns","patternCode","defaults","defaultCode","customRules","customRuleCode","beautify","indent_size","eval","log","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","localSchema","replaceLocalRef","refId","regexStr","patternsHash","toQuotedString","valueStr","defaultsHash","parentSchema","it","customRulesHash","statement","js_beautify","ucs2length","acequire","isDark","cssClass","cssText","importCssString","cmp","space","cycles","replacer","aobj","bobj","seen","indent","colonSeparator","toJSON","out","TypeError","objectKeys","keyValue","x","has","exportAce","ns","global","packaged","original","ACE_NAMESPACE","acequirejs","deps","payload","payloads","_acequire","parentId","lookup","l","dep","packagedModule","normalizeModule","moduleName","chunks","base","mod","req","returnValue","getNativeFlags","ignoreCase","multiline","extended","sticky","from","real","compliantExecNpcg","compliantLastIndexIncrement","r2","source","_xregexp","captureNames","Empty","doesDefinePropertyWork","exception","toInteger","floor","that","bound","defineGetter","defineSetter","lookupGetter","lookupSetter","supportsAccessors","prototypeOfArray","prototypeOfObject","_toString","owns","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","makeArray","lengthBefore","array_splice","deleteCount","pos","removeCount","removed","insert","remove","tailOldPos","tailNewPos","tailCount","lengthAfterRemove","boxedString","splitString","fun","toObject","thisp","every","reduceRight","sought","lastIndexOf","getPrototypeOf","__proto__","constructor","getOwnPropertyDescriptor","ERR_NON_OBJECT","property","descriptor","getter","setter","enumerable","configurable","getOwnPropertyNames","createEmpty","empty","propertyIsEnumerable","isPrototypeOf","toLocaleString","valueOf","properties","Type","defineProperties","definePropertyWorksOnObject","definePropertyWorksOnDom","definePropertyFallback","ERR_NON_OBJECT_DESCRIPTOR","ERR_NON_OBJECT_TARGET","ERR_ACCESSORS_NOT_SUPPORTED","seal","freeze","freezeObject","preventExtensions","isSealed","isFrozen","isExtensible","hasDontEnumBug","dontEnums","dontEnumsLength","ii","dontEnum","now","getTime","ws","trim","trimBeginRegexp","trimEndRegexp","o","XHTML_NS","getDocumentHead","doc","head","getElementsByTagName","documentElement","tag","createElementNS","hasCssClass","el","addCssClass","removeCssClass","toggleCssClass","setCssClass","include","hasCssString","sheets","createStyleSheet","styleSheets","owningElement","importCssStylsheet","link","rel","getInnerWidth","parseInt","computedStyle","getInnerHeight","scrollbarWidth","inner","minWidth","outer","noScrollbar","offsetWidth","withScrollbar","getPageScrollTop","getPageScrollLeft","getComputedStyle","currentStyle","setInnerHtml","innerHtml","cloneNode","replaceChild","setInnerText","textContent","getParentWindow","defaultView","parentWindow","inherits","ctor","superCtor","super_","writable","implement","proto","oop","Keys","ret","MODIFIER_KEYS",224,"KEY_MODS","ctrl","alt","super","command","cmd","FUNCTION_KEYS",27,32,33,34,35,36,37,38,39,40,44,45,46,96,97,98,99,100,101,102,103,104,105,"-13",112,113,114,115,116,117,118,119,120,121,122,123,144,145,"PRINTABLE_KEYS",48,49,50,51,52,53,54,55,56,57,59,61,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,107,109,110,186,187,188,189,190,191,192,219,220,221,222,111,106,"enter","escape","esc","mods","pow","keyCodeToString","keyString","fromCharCode","OS","LINUX","MAC","WINDOWS","getOS","isMac","isLinux","os","platform","isWin","isIE","isOldIE","isGecko","isMozilla","Controllers","controllers","product","isOldGecko","isOpera","opera","isWebKit","isChrome","isAIR","isIPad","isTouchPad","isChromeOS","normalizeCommandKeys","hashId","getModifierHash","useragent","pressedKeys","OSKey","altGr","location","keyLocation","ts","timeStamp","dt","defaultPrevented","resetPressedKeys","lastT","addListener","wrapper","_wrapper","removeListener","stopEvent","cancelBubble","getButton","capture","eventHandler","releaseCaptureHandler","onMouseUp","addTouchMoveListener","startx","starty","touchObj","changedTouches","clientX","clientY","factor","wheelX","wheelY","addMouseWheelListener","wheelDeltaX","wheelDeltaY","wheelDelta","deltaMode","DOM_DELTA_PIXEL","deltaX","deltaY","DOM_DELTA_LINE","DOM_DELTA_PAGE","axis","HORIZONTAL_AXIS","detail","addMultiMouseDownListener","timeouts","callbackName","startX","startY","timer","clicks","eventNames","isNewClick","_clicks","metaKey","getModifierString","addCommandKeyListener","lastKeyDownKeyCode","lastDefaultPrevented","postMessage","postMessageId","nextTick","win","messageName","nextFrame","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","last","stringReverse","reverse","stringRepeat","stringTrimLeft","stringTrimRight","copyObject","copyArray","deepCopy","cons","arrayToMap","createMap","props","arrayRemove","escapeRegExp","escapeHTML","getMatchOffsets","regExp","offset","deferredCall","fcn","deferred","cancel","schedule","isPending","delayedCall","defaultTimeout","_self","lang","BROKEN_SETDATA","USE_IE_MIME_TYPE","TextInput","resetSelection","inComposition","inputHandler","selectionStart","selectionEnd","setSelectionRange","resetValue","PLACEHOLDER","syncValue","onContextMenuClose","closeTimeout","tempStyle","renderer","$keepTextAreaAtCursor","$moveTextAreaToCursor","setAttribute","opacity","copied","pasted","isSelectionEmpty","isFocused","activeElement","onBlur","onFocus","syncSelection","isAllSelected","createTextRange","moveStart","moveEnd","ownerDocument","parentElement","inPropertyChange","onPropertyChange","syncProperty","sendText","keytable","onCompositionEnd","onCompositionUpdate","onCompositionStart","onSelect","selectAll","setInputHandler","cb","getInputHandler","afterContextMenu","onPaste","execCommand","onTextInput","onInput","handleClipboardData","clipboardData","mime","setData","getData","doCopy","isCut","getCopyText","onCut","onCopy","onCommandKey","$readOnly","session","markUndoGroup","clearSelection","val","lastValue","getRange","setRange","syncComposition","getElement","setReadOnly","readOnly","onContextMenu","_emit","domEvent","moveToMouse","bringToFront","borderTopWidth","borderLeftWidth","maxTop","move","textInput","scroller","DefaultHandlers","mouseHandler","$clickSelection","setDefaultHandler","onMouseDown","onDoubleClick","onTripleClick","onQuadClick","onMouseWheel","onTouchMove","selectByLines","extendSelectionBy","selectByWords","calcDistance","ax","ay","bx","by","calcRangeOrientation","row","column","DRAG_OFFSET","ev","inSelection","getDocumentPosition","mousedownEvent","selectionRange","getSelectionRange","selectionEmpty","moveToPosition","$focusTimout","inMultiSelectMode","captureMouse","startSelect","setState","waitForClickSelection","screenToTextCoordinates","y","getShiftKey","selectToPosition","setCapture","setStyle","comparePoint","orientedRange","setSelectionAnchor","scrollCursorIntoView","unitName","cmpStart","cmpEnd","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","unsetStyle","releaseCapture","focusWait","distance","getBracketRange","getWordRange","isMultiLine","contains","getLineRange","getAccelKey","t","$lastScrollTime","isScrolable","isScrollableBy","speed","scrollBy","stop","Tooltip","isOpen","$element","$parentNode","$init","setHtml","setPosition","setClassName","getHeight","getWidth","GutterHandler","showTooltip","mouseEvent","annotation","gutter","$annotations","hideTooltip","maxRow","getLength","screenRow","pixelToScreenCoordinates","$pos","documentToScreenRow","tooltipAnnotation","tooltip","$tooltipFollowsMouse","moveTooltip","gutterElement","tooltipTimeout","$gutterLayer","GutterTooltip","gutterRegion","getRegion","selectTo","isMousePressed","$gutter","windowWidth","innerWidth","windowHeight","innerHeight","MouseEvent","$inSelection","propagationStopped","DragdropHandler","prevCursor","vMovement","hMovement","cursorMovedTime","moveCursorToPosition","cursorPointOnCaretMoved","SCROLL_CURSOR_HYSTERESIS","SCROLL_CURSOR_DELAY","autoScroll","lineHeight","layerConfig","characterWidth","editorRect","offsets","nearestXOffset","nearestYOffset","scrollCursor","vScroll","hScroll","autoScrollStartTime","AUTOSCROLL_DELAY","onDragInterval","dragCursor","addDragMarker","toOrientedRange","dragSelectionMarker","addMarker","getSelectionStyle","$cursorLayer","setBlinking","clearInterval","timerId","counter","onMouseMove","clearDragMarker","removeMarker","fromOrientedRange","isInternal","getReadOnly","onMouseMoveTimer","canAccept","dataTransfer","getDropEffect","copyAllowed","moveAllowed","copyModifierState","effectAllowed","dropEffect","blankImage","src","dragOperation","mouseTarget","cancelDrag","draggable","setDragImage","clearData","getTextRange","setCursorStyle","onDragEnter","onDragOver","onDragLeave","onDrop","moveText","dropData","dragWait","getDragDelay","startDrag","dragWaitEnd","dragReadyEnd","cursorStyle","onMouseDrag","dragDrop","$dragEnabled","clickCount","eventTarget","unselectable","xhr","XMLHttpRequest","onreadystatechange","readyState","responseText","send","loadScript","s","onload","_","isAbort","qualifyURL","EventEmitter","_dispatchEvent","eventName","_eventRegistry","_defaultHandlers","listeners","defaultHandler","_signal","once","newCallback","handlers","_disabled_","old","removeDefaultHandler","capturing","off","removeAllListeners","reportError","msg","optionsProvider","setOptions","optList","setOption","getOptions","optionNames","$options","getOption","opt","forwardTo","handlesSet","AppConfig","$defaultOptions","defineOptions","initialValue","resetOptions","setDefaultValue","setDefaultValues","optionHash","init","scriptOptions","scriptUrl","currentScript","_currentScript","currentDocument","scripts","script","getAttribute","attr","deHyphenate","basePath","workerPath","modePath","themePath","m1","toUpperCase","net","suffix","$moduleUrls","moduleUrl","component","sep","setModuleUrl","subst","$loading","loadModule","onLoad","moduleType","afterLoad","DefaultGutterHandler","MouseHandler","focusEditor","hasFocus","getMouseEventTarget","onMouseEvent","scrollBarV","scrollBarH","gutterEl","$dragDelay","character","insideStart","$scrollSpeed","mouseMoveHandler","releaseMouse","$mouseMoved","onCaptureEnd","onCaptureInterval","$onCaptureMouseMove","cancelContextMenu","scrollSpeed","dragDelay","dragEnabled","focusTimout","tooltipFollowsMouse","FoldHandler","fold","getFoldAt","removeFold","expandFold","foldWidgets","onFoldWidgetClick","getParentFoldRangeData","firstRange","getLine","addFold","keyUtil","KeyBinding","$editor","$data","$handlers","kb","removeKeyboardHandler","$defaultHandler","addKeyboardHandler","setKeyboardHandler","h","handleKeyboard","attach","detach","getKeyboardHandler","getStatusText","$callKeyboardHandlers","toExecute","success","passEvent","comparePoints","p1","p2","Range","startRow","startColumn","endRow","endColumn","isEqual","compareRange","containsRange","intersects","isEnd","isStart","inside","insideEnd","compareStart","compareEnd","compareInside","clipRows","firstRow","lastRow","fromPoints","collapseRows","toScreenRange","screenPosStart","documentToScreenPosition","screenPosEnd","moveBy","Selection","getDocument","lead","selectionLead","createAnchor","selectionAnchor","$isEmpty","$keepDesiredColumnOnChange","$desiredColumn","getCursor","getPosition","getSelectionAnchor","getSelectionLead","shiftSelection","columns","moveCursorTo","isBackwards","$moveSelection","mover","selectUp","moveCursorUp","selectDown","moveCursorDown","selectRight","moveCursorRight","selectLeft","moveCursorLeft","selectLineStart","moveCursorLineStart","selectLineEnd","moveCursorLineEnd","selectFileEnd","moveCursorFileEnd","selectFileStart","moveCursorFileStart","selectWordRight","moveCursorWordRight","selectWordLeft","moveCursorWordLeft","selectWord","selectAWord","getAWordRange","excludeLastChar","rowEnd","rowStart","foldLine","getFoldLine","selectLine","moveCursorBy","tabSize","getTabSize","isTabStop","firstColumnPosition","screenToDocumentPosition","beforeCursor","getDisplayLine","leadingSpace","$useEmacsStyleLineStart","lineEnd","getDocumentLastRowColumnPosition","textEnd","moveCursorLongWordRight","rightOfCursor","nonTokenRe","tokenRe","moveCursorLongWordLeft","getFoldStringAt","leftOfCursor","$shortWordEndIndex","whitespaceRe","moveCursorShortWordRight","moveCursorShortWordLeft","$selectLongWords","rows","screenPos","docPos","lineWidgets","keepDesiredColumn","moveCursorToScreen","desiredColumn","getRangeOfMovements","ranges","r1","fromJSON","rangeList","toSingleRange","MAX_TOKEN_COUNT","Tokenizer","states","regExps","matchMappings","ruleRegExps","matchTotal","mapping","defaultToken","flag","splitterRurles","caseInsensitive","adjustedregex","matchcount","groupCount","tokenArray","onMatch","$arrayTokens","$applyToken","digit","removeCapturingGroups","splitRegex","createSplitterRegexp","$setMaxTokenCount","values","tokens","inChClass","lastCapture","parenOpen","parenClose","square","getLineTokens","startState","currentState","matchAttempts","skipped","merge","TextHighlightRules","$rules","addRules","prefix","nextState","getRules","embedRules","HighlightRules","escapeRules","$embeds","getEmbeds","normalizeRules","processState","processed","stateName","includeName","toInsert","noEscape","keywordMap","createKeywordMapper","splitChar","$keywordList","getKeywords","$keywords","Behaviour","$behaviours","addBehaviours","behaviours","inherit","getBehaviours","addUnicodePackage","pack","codePoint","packages","L","Ll","Lu","Lt","Lm","Lo","M","Mn","Mc","Me","N","Nd","Nl","No","P","Pd","Ps","Pe","Pi","Pf","Pc","Po","S","Sm","Sc","Sk","So","Z","Zs","Zl","Zp","C","Cc","Cf","Co","Cs","Cn","TokenIterator","initialRow","initialColumn","$session","$row","$rowTokens","getTokens","getTokenAt","$tokenIndex","stepBackward","stepForward","rowCount","getCurrentToken","getCurrentTokenRow","getCurrentTokenColumn","rowTokens","tokenIndex","getCurrentTokenPosition","unicode","Mode","$behaviour","getTokenizer","$tokenizer","$highlightRules","lineCommentStart","blockComment","toggleCommentLines","iter","ignoreBlankLines","shouldRemove","minIndent","insertAtTabStop","regexpStart","getUseSoftTabs","uncomment","shouldInsertSpace","removeInLine","commentWithSpace","comment","insertInLine","testRemove","before","after","spaces","lineCommentEnd","regexpEnd","minEmptyLength","toggleBlockComment","colDiff","iterator","initialRange","startRange","endRange","getNextLineIndent","tab","$getIndent","checkOutdent","autoOutdent","createWorker","createModeDelegates","$modes","delegations","scope","functionName","$delegator","method","transformAction","param","completionKeywords","ruleItr","aLength","$createKeywordList","getCompletions","word","score","$id","applyDelta","docLines","delta","doNotValidate","Anchor","$onChange","$pointsInOrder","point1","point2","equalPointsInOrder","bColIsAfter","$getTransformedPoint","point","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","$clipPositionToDocument","$insertRight","noClip","Document","textOrLines","$lines","insertMergedLines","getAllLines","getNewLineCharacter","$split","$detectNewLine","$autoNewLine","$newLineMode","setNewLineMode","newLineMode","getNewLineMode","isNewLine","getLines","getLinesForRange","insertLines","insertFullLines","removeLines","removeFullLines","insertNewLine","clippedPos","clonePos","$clipPosition","deleteFirstNewLine","deleteLastNewLine","startCol","endCol","deletedLines","removeNewLine","applyDeltas","deltas","revertDeltas","revertDelta","isInsert","$splitAndapplyLargeDelta","MAX","to","chunk","indexToPosition","newlineLength","positionToIndex","BackgroundTokenizer","tokenizer","running","currentLine","$worker","workerStart","endLine","startLine","processedLines","$tokenizeRow","fireUpdateEvent","setTokenizer","setDocument","scheduleStart","$updateOnChange","getState","SearchHighlight","clazz","setRegexp","MAX_RANGES","update","markerLayer","drawSingleLineMarker","FoldLine","foldData","folds","setFoldLine","shiftRow","sameRow","containsRow","walk","lastEnd","isNewRow","placeholder","getNextFoldTo","kind","addRemoveChars","foldBefore","newFoldLine","foldLineNext","idxToPosition","idx","lastFoldEndColumn","RangeList","pointIndex","excludeEdges","addList","substractPoint","containsPoint","rangeAtPoint","clipped","removeAll","lineDif","consumePoint","consumeRange","restorePoint","restoreRange","Fold","subFolds","subFold","collapseChildren","addSubFold","afterStart","Folding","side","getFoldsInRange","foldLines","$foldData","foundFolds","getFoldsInRangeList","getAllFolds","lastFold","docRow","startFoldLine","getNextFoldLine","getFoldedRowCount","$addFoldLine","added","$clipRangeToDocument","startFold","endFold","removeFolds","$useWrapMode","$updateWrapData","$updateRowLengthCache","$modified","addFolds","$updating","cloneFolds","foldAll","expandFolds","unfold","expandInner","isRowFolded","startFoldRow","getRowFoldEnd","getRowFoldStart","getFoldDisplayLine","textLine","lastColumn","$cloneFoldData","fd","toggleFold","tryToUnfold","bracketPos","findMatchingBracket","getCommentFoldRange","dir","depth","getFoldWidget","getFoldWidgetRange","$foldStyles","manual","markbegin","markbeginend","$foldStyle","setFoldStyle","$foldMode","$setFolding","foldMode","$updateFoldWidgets","$tokenizerUpdateFoldWidgets","updateFoldWidgets","tokenizerUpdateFoldWidgets","ignoreCurrent","fw","children","siblings","$toggleFoldWidget","toggleFoldWidget","toggleParent","BracketMatch","chr","charBeforeCursor","$findClosingBracket","$findOpeningBracket","$brackets",")","(","bracket","typeRe","openBracket","valueIndex","closingBracket","valueLength","TextMode","EditSession","$breakpoints","$decorations","$frontMarkers","$backMarkers","$markerId","$undoSelect","onChangeFold","isFullWidth","bgTokenizer","resetCaches","$resetRowCache","$docRowCache","$screenRowCache","$getRowCacheIndex","cacheArray","low","hi","mid","$wrapData","$rowLengthCache","removedFolds","$updateInternalDataOnChange","$fromUndo","$undoManager","ignore","$deltasDoc","$deltasFold","$informUndoManager","$deltas","setUndoManager","getUndoManager","reset","undoManager","$syncInformUndoManager","execute","mergeUndoDeltas","$defaultUndoManager","getTabString","$useSoftTabs","$mode","$indentWithTabs","$tabSize","$overwrite","setOverwrite","overwrite","getOverwrite","toggleOverwrite","addGutterDecoration","removeGutterDecoration","getBreakpoints","setBreakpoints","clearBreakpoints","setBreakpoint","clearBreakpoint","inFront","marker","addDynamicMarker","markerId","markers","getMarkers","$searchHighlight","highlightLines","setAnnotations","annotations","getAnnotations","clearAnnotations","inToken","wordRange","setUseWorker","useWorker","getUseWorker","$useWorker","onReloadTokenizer","$modeId","$onChangeMode","$isPlaceholder","$stopWorker","$startWorker","attachToSession","wrapMethod","$wrapMethod","foldingRules","terminate","$scrollTop","setScrollTop","getScrollTop","$scrollLeft","setScrollLeft","getScrollLeft","getScreenWidth","$computeWidth","getLineWidgetMaxWidth","screenWidth","lineWidgetsWidth","w","lineWidgetWidth","$wrapLimit","longestScreenLine","foldIndex","foldStart","$getStringScreenWidth","undoChanges","dontSelect","lastUndoRange","$getUndoSelection","foldDelta","redoChanges","setUndoSelect","isUndo","lastDeltaIsInsert","fromRange","toPosition","toRange","rowDiff","collDiff","oldStart","newStart","indentRows","indentString","outdentRows","rowRange","deleteRange","size","$moveLines","$clipRowToDocument","MAX_VALUE","moveLinesUp","moveLinesDown","duplicateLines","$clipColumnToRow","$wrapLimitRange","useWrapMode","getUseWrapMode","setWrapLimitRange","adjustWrapLimit","desiredLimit","$printMargin","limits","wrapLimit","$constrainWrapLimit","getWrapLimit","setWrapLimit","getWrapLimitRange","foldLineBefore","wrapData","walkTokens","$getDisplayTokens","PLACEHOLDER_START","PLACEHOLDER_BODY","$computeWrapSplits","CHAR","CHAR_EXT","PUNCTUATION","SPACE","TAB","TAB_SPACE","getWrapIndent","maxIndent","indentedSoftWrap","isCode","addSplit","displayed","lastSplit","splits","lastDocSplit","displayLength","$wrapAsCode","$indentedSoftWrap","minSplit","getScreenTabSize","maxScreenColumn","screenColumn","getRowLength","getRowLineCount","getRowWrapIndent","getScreenLastRowColumn","documentToScreenColumn","getDocumentLastRowColumn","docColumn","getRowSplitData","screenToDocumentRow","screenToDocumentColumn","rowLength","rowCache","doCache","wrapIndent","splitIndex","foldStartRow","wrapRow","screenRowOffset","getScreenLength","screenRows","$getWidgetScreenLength","$setFontMetrics","fm","$enableVarChar","getCharacterWidth","wrap","$wrap","firstLineNumber","useSoftTabs","Search","find","$matchIterator","skipCurrent","findAll","needle","$assembleRegExp","$isMultiLine","prevRange","replacement","preserveCase","matchIterator","backwards","lineIterator","$lineIterator","_callback","$disableFakeMultiline","wholeWord","modifier","caseSensitive","$assembleMultilineRegExp","HashHandler","commandKeyBinding","addCommands","$singleCommand","MultiHashHandler","addCommand","removeCommand","_buildKeyHash","keepCommand","ckb","keyId","cmdGroup","keyPart","chain","binding","parseKeys","_addCommandToBinding","isDefault","other","otherPos","removeCommands","bindKeys","keyList","findKeyCommand","$keyChain","CommandManager","byName","toggleRecording","$inReplay","recording","$addCommandToMacro","oldMacro","replay","trimMacro","mac","showSettingsMenu","showErrorMarker","scrollIntoView","centerSelection","prompt","gotoLine","multiSelectAction","getAllRanges","findNext","findPrevious","aceCommandGroup","navigateFileStart","navigateUp","times","navigateFileEnd","navigateDown","navigateWordLeft","navigateLineStart","navigateLeft","navigateWordRight","navigateLineEnd","navigateRight","selectPageDown","scrollPageDown","gotoPageDown","selectPageUp","scrollPageUp","gotoPageUp","jumpToMatching","$handlePaste","duplicateSelection","sortLines","modifyNumber","copyLinesUp","copyLinesDown","removeToLineStart","removeToLineEnd","removeWordLeft","removeWordRight","blockOutdent","blockIndent","splitLine","transposeLetters","transposeSelections","firstLineEndCol","selectedText","selectedCount","insertLine","curLine","newRanges","exitMultiSelectMode","defaultCommands","Editor","getContainerElement","getTextAreaContainer","keyBinding","$mouseHandler","$search","$historyTracker","$initOperationListeners","_$emitInputEvent","setSession","selections","startOperation","endOperation","$opResetTimer","curOp","docChanged","selectionChanged","prevOp","commadEvent","previousCommand","scrollSelectionIntoView","animateScrolling","$mergeableCommands","$mergeUndoDeltas","mergeableCommands","shouldMerge","mergeNextCommand","sequenceStartTime","keyboardHandler","$keybindingId","handler","oldSession","$onDocumentChange","$onTokenizerUpdate","$onChangeTabSize","$onChangeWrapLimit","$onChangeWrapMode","$onChangeFold","$onChangeFrontMarker","$onChangeBackMarker","$onChangeBreakpoint","$onChangeAnnotation","$onCursorChange","$onScrollTopChange","$onScrollLeftChange","$onSelectionChange","onDocumentChange","onChangeMode","onTokenizerUpdate","onChangeTabSize","onChangeWrapLimit","onChangeWrapMode","onChangeFrontMarker","onChangeBackMarker","onChangeBreakpoint","onChangeAnnotation","onCursorChange","onScrollTopChange","onScrollLeftChange","onSelectionChange","updateFull","oldEditor","cursorPos","onResize","getTheme","getFontSize","$highlightBrackets","$bracketHighlight","$highlightPending","getCursorPosition","getMatching","$highlightTags","$highlightTagPending","$tagHighlight","prevToken","$isFocused","showCursor","visualizeFocus","hideCursor","visualizeBlur","$cursorChange","updateCursor","updateLines","$updateHighlightActiveLine","scrollToY","scrollToX","$highlightActiveLine","$selectionStyle","$maxLines","$minLines","$highlightLineMarker","$selectionMarker","$highlightSelectedWord","$getSelectionHighLightRegexp","startOuter","endOuter","lineCols","updateFrontMarkers","updateBackMarkers","updateBreakpoints","updateText","getSelectedText","inVirtualSelectionMode","getBehavioursEnabled","transform","$mergeNextCommand","d","lineState","shouldOutdent","lineIndent","setScrollSpeed","getScrollSpeed","setDragDelay","setSelectionStyle","setHighlightActiveLine","shouldHighlight","getHighlightActiveLine","setHighlightGutterLine","getHighlightGutterLine","setHighlightSelectedWord","getHighlightSelectedWord","setAnimatedScroll","shouldAnimate","getAnimatedScroll","setShowInvisibles","showInvisibles","getShowInvisibles","setDisplayIndentGuides","getDisplayIndentGuides","showPrintMargin","getShowPrintMargin","setPrintMarginColumn","getPrintMarginColumn","setBehavioursEnabled","enabled","setWrapBehavioursEnabled","getWrapBehavioursEnabled","setShowFoldWidgets","getShowFoldWidgets","setFadeFoldWidgets","fade","getFadeFoldWidgets","new_range","swap","originalRange","$getSelectedRows","getNumberAt","_numberRx","number","amount","charRange","isFinite","nr","fp","decimals","nnr","toFixed","replaceRange","endPoint","totalDiff","rangeIndex","subRows","showComposition","setCompositionText","hideComposition","getFirstVisibleRow","getLastVisibleRow","isRowVisible","isRowFullyVisible","getFirstFullyVisibleRow","getLastFullyVisibleRow","$getVisibleRowCount","getScrollBottomRow","getScrollTopRow","$moveByPage","scrollToRow","scrollToLine","center","alignCursor","getCursorPositionScreen","matchType","bracketType","found","brackets","lineNumber","navigateTo","replaced","$tryReplace","replaceAll","getLastSearchOptions","newRange","preventScroll","revealRange","setAutoScrollEditorIntoView","shouldScroll","$scrollAnchor","scrollAnchor","onChangeSelection","onBeforeRender","onAfterRender","$pixelPos","$resetCursorStyle","$cursorStyle","cursorLayer","setSmoothBlinking","isBlinking","selectionStyle","highlightActiveLine","highlightSelectedWord","behavioursEnabled","wrapBehavioursEnabled","autoScrollEditorIntoView","hScrollBarAlwaysVisible","vScrollBarAlwaysVisible","highlightGutterLine","animatedScroll","printMarginColumn","printMargin","fadeFoldWidgets","showFoldWidgets","showLineNumbers","showGutter","displayIndentGuides","fontSize","fontFamily","maxLines","minLines","scrollPastEnd","fixedWidthGutter","foldStyle","UndoManager","$serializeDelta","$deserializeDelta","cloneDeltaSetsObj","deltaSets_old","fnGetModifiedDelta","deltaSets_new","deltaSet_old","deltaSet_new","delta_old","deltaSets","$doc","hasUndo","dirtyCounter","$undoStack","$redoStack","NaN","undoSelectionRange","redoSelectionRange","$deserializeDeltas","hasRedo","markClean","isClean","$serializeDeltas","Gutter","parentEl","$showFoldWidgets","gutterWidth","$updateAnnotations","$cells","rowInfo","annoText","gutterOffset","breakpoints","decorations","$firstLineNumber","lastLineNumber","gutterRenderer","$renderer","cell","textNode","foldWidget","minHeight","$fixedWidth","$padding","$computePadding","ceil","$showLineNumbers","setShowLineNumbers","getShowLineNumbers","paddingRight","Marker","getBorderClass","tl","br","bl","setPadding","setMarkers","$getTop","drawFullLineMarker","drawScreenLineMarker","drawTextMarker","drawMultiLineMarker","firstRowScreen","stringBuilder","extraStyle","lineRange","radiusClass","extraLength","Text","$updateEolChar","EOF_CHAR","EOL_CHAR_LF","EOL_CHAR_CRLF","EOL_CHAR","TAB_CHAR","SPACE_CHAR","getLineHeight","$fontMetrics","$characterSize","measure","$pollSizeChanges","checkForSizeChanges","$pollSizeChangesTimer","$computeTabString","$tabStrings","tabStr","$indentGuideRe","spaceClass","tabClass","spaceContent","tabContent","scrollLines","lineElements","lineElementsIdx","lineElement","$renderLine","$useLineGroups","oldConfig","fragment","$renderLinesFragment","createDocumentFragment","$textToken","rparen","lparen","$renderToken","replaceReg","replaceFunc","tabIdx","idx4","classToUse","output","renderIndentGuide","cols","$renderWrappedLine","onlyContents","splitChars","$renderSimpleLine","$getFoldLineTokens","addTokens","renderTokens","$measureNode","isIE8","Cursor","blinkInterval","smoothBlinking","cursors","addCursor","$updateCursors","$updateVisibility","$updateOpacity","visibility","blinking","restartTimer","setBlinkInterval","removeCursor","intervalId","timeoutId","blink","getPixelPosition","onScreen","cursorLeft","cursorTop","$selectionMarkers","cursorIndex","pixelPos","drawCursor","$setOverwrite","ScrollBar","classSuffix","setVisible","skipEvent","onScroll","VScrollBar","$scrollbarWidth","setHeight","setInnerHeight","setScrollHeight","HScrollBar","setWidth","setInnerWidth","setScrollWidth","ScrollBarV","ScrollBarH","RenderLoop","onRender","pending","changes","CHAR_COUNT","FontMetrics","$setMeasureNodeStyles","$main","$testFractionalRect","whiteSpace","font","$measureSizes","fontWeight","boldSize","charSizes","allowBoldFonts","setPolling","$measureCharWidth","GutterLayer","MarkerLayer","TextLayer","CursorLayer","editorCss","VirtualRenderer","onGutterResize","$markerBack","textLayer","$textLayer","canvas","$markerFront","$horizScroll","$vScroll","scrollBar","$scrollAnimation","scrollMargin","updateCharacterSize","$size","scrollerHeight","scrollerWidth","$dirty","$loop","$renderChanges","CHANGE_FULL","CHANGE_CURSOR","CHANGE_MARKER","CHANGE_GUTTER","CHANGE_SCROLL","CHANGE_LINES","CHANGE_TEXT","CHANGE_SIZE","CHANGE_MARKER_BACK","CHANGE_MARKER_FRONT","CHANGE_H_SCROLL","$allowBoldFonts","$updatePrintMargin","onChangeNewLineMode","$changedLines","updateFontSize","$changes","$updateSizeAsync","resizing","scrollWidth","$updateCachedSize","$extraHeight","oldSize","$showGutter","$computeLayerConfig","availableWidth","$showPrintMargin","$printMarginColumn","$animatedScroll","getShowGutter","setShowGutter","$updateGutterLineHighlight","$gutterLineHighlight","$printMarginEl","containerEl","posTop","posLeft","$composition","flint","setScrollMargin","sm","getHScrollBarAlwaysVisible","$hScrollBarAlwaysVisible","setHScrollBarAlwaysVisible","alwaysVisible","getVScrollBarAlwaysVisible","$vScrollBarAlwaysVisible","setVScrollBarAlwaysVisible","$updateScrollBarV","$scrollPastEnd","$updateScrollBarH","$frozen","unfreeze","st","marginTop","$highlightGutterLine","$updateLines","$autosize","desiredHeight","$gutterWidth","hideScrollbars","screenLines","longestLine","$getLongestLine","horizScroll","hScrollChanged","vScrollBefore","vScrollChanged","firstRowHeight","lineCount","charCount","$viewMargin","topMargin","bottomMargin","alignment","STEPS","$calcSteps","fromValue","toValue","steps","x_min","dx","initialScroll","oldSteps","$timer","canvasPos","textToScreenCoordinates","keepTextAreaAtCursor","$themeId","$theme","setMouseCursor","WorkerClient","topLevelNamespaces","classname","workerUrl","$sendDeltaQueue","changeListener","onMessage","nameToUrl","toUrl","normalizePath","$normalizePath","tlns","workerSrc","Blob","blob","blobUrl","URL","webkitURL","createObjectURL","Worker","DOMException","$workerBlob","blobURL","revokeObjectURL","callbackId","callbacks","onmessage","deltaQueue","emit","ex","attachToDocument","q","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","blobBuilder","getBlob","UIWorkerClient","messageBuffer","main","emitSync","sender","processNext","setEmitSync","Main","PlaceHolder","others","mainClass","othersClass","$onUpdate","onUpdate","$others","undoStack","$undostack","$undoStackDepth","setup","selectionBefore","showOtherMarkers","othersActive","hideOtherMarkers","updateAnchors","lengthDiff","inMainRange","distanceFromStart","newPos","updateMarkers","updateMarker","undosRequired","isSamePoint","accel","selectionMode","isMultiSelect","onMouseSelection","screenAnchor","screenCursor","$enableJumpToDef","$blockSelectEnabled","addSelectionMarker","oldRange","removeSelectionMarker","tmpSel","rectSel","blockSelect","newCursor","removeSelectionMarkers","rectangularRangeBlock","updateSelectionMarkers","onMouseSelectionEnd","onSelectionInterval","selectMoreLines","selectMore","multiSelect","splitIntoLines","alignCursors","multiSelectCommands","isAvailable","MultiSelect","$multiselectOnSessionChange","$onAddRange","$onRemoveRange","$onMultiSelect","$onSingleSelect","onSessionChange","$checkMultiselectChange","addAltCursorListeners","altCursor","altDown","getSelectionMarkers","$blockChangeEvents","mergeOverlappingRanges","lastRange","$initRangeList","toggleBlockSelection","includeEmptyLines","xBackwards","yBackwards","docEnd","selectionMarkerCount","markerList","$onMultiSelectExec","inVirtualMode","forEachSelection","keepOrder","$byLines","reg","cmdResult","anim","buf","nl","additive","skip","screenLead","toRemove","tmp","words","stopAtFirst","sameRowRanges","maxCol","minSpace","spaceOffsets","spaceOffset","fr","lr","guessRange","$reAlignText","forceLeft","alignLeft","startW","textW","endW","alignRight","unAlign","isLeftAligned","isRightAligned","enableMultiselect","enableBlockSelect","FoldMode","foldingStartMarker","foldingStopMarker","indentationBlock","startLevel","openingBracketBlock","closingBracketBlock","LineWidgets","widgetManager","updateOnChange","renderWidgets","measureWidgets","_changedWidgets","$onChangeEditor","updateOnFold","_inDocument","removeLineWidget","$updateRows","noWidgets","$oldWidget","addLineWidget","zIndex","coverGutter","pixelHeight","$fold","onWidgetChanged","w1","getWidgetsAtRow","changedWidgets","fixedWidth","coverLine","fullWidth","binarySearch","comparator","findAnnotations","oldWidget","gutterAnno","sc","arrow","Renderer","_id","getElementById","env","tagName","oldNode","createEditSession","version","JsonHighlightRules","MatchingBraceOutdent","openBracePos","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","initContext","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","opening","closing","CstyleBehaviour","isSaneInsertion","recordAutoInsert","recordMaybeInsert","rightChar","matching","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","clearMaybeInsertedClosing","next_indent","leftChar","rightToken","pair","stringBefore","stringAfter","wordRe","isWordBefore","isWordAfter","$matchTokenType","iterator2","BaseFoldMode","commentRegex","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","forceMultiline","getCommentRegionBlock","getSectionRange","startIndent","subRange","CStyleFoldMode","$outdent","worker","searchboxCss","showReplaceForm","setEditor","$initElements","sb","replaceBox","searchOptions","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","_this","activeInput","$searchBarKb","$closeSearchBarKb","Ctrl-f|Command-f","isReplace","Ctrl-H|Command-Option-F","Ctrl-G|Command-G","Ctrl-Shift-G|Command-Shift-G","findPrev","Return","Shift-Return","Alt-Return","Tab","$syncOptions","noMatch","replaceAndFindNext","description","definitions","schemaArray","minItems","positiveInteger","minimum","positiveIntegerDefault0","allOf","default","simpleTypes","enum","stringArray","uniqueItems","multipleOf","exclusiveMinimum","maximum","exclusiveMaximum","maxLength","minLength","pattern","additionalItems","anyOf","maxItems","maxProperties","minProperties","required","additionalProperties","patternProperties","dependencies","oneOf","arrA","arrB","negate","EQUAL","AND","OK","NOT","checkDataTypes","dataTypes","integer","getProperty","SINGLE_QUOTE","escapeQuotes","varOccurences","varReplace","expr","cleanUpCode","EMPTY_ELSE","EMPTY_IF_NO_ELSE","EMPTY_IF_WITH_ELSE","cleanUpVarErrors","ERRORS_REGEXP","REMOVE_ERRORS","RETURN_VALID","RETURN_TRUE","schemaHasRules","getPathExpr","currentPath","jsonPointers","isNumber","joinPaths","escapeJsonPointer","lvl","paths","up","jsonPointer","segments","segment","unescapeJsonPointer","decodeURIComponent","encodeURIComponent","formatMaximum","formatMinimum","exclusiveFormatMaximum","exclusiveFormatMinimum","constant","patternGroups","switch","if","then","continue","$keyword","$errorKeyword","$lvl","$dataLvl","dataLevel","$schemaPath","$errSchemaPath","$breakOnError","$valid","$isData","$schemaValue","dataPathArr","$$outStack","createErrors","messages","__err","compositeRule","$schemaFormat","$isDataFormat","$closingBraces","$schemaValueFormat","$format","$compare","$isMax","$exclusiveKeyword","$schemaExcl","$isDataExcl","$op","$result","$schemaValueExcl","$exclusive","$opExpr","$opStr","$errs","$it","$shouldContinue","$ifPassed","arr1","$sch","$caseIndex","l1","$wasComposite","$shouldUseGroup","$rulesGroup","$shouldUseRule","$rule","$top","rootId","$closingBraces1","$closingBraces2","$typeSchema","i1","$schemaKeys","arr2","$propertyKey","i2","l2","$passData","arr3","$i","l3","arr4","i4","l4","$ruleValidate","$ruleErrs","$ruleErr","$rDef","$inline","$macro","$code","def_customError","$typeChecked","$isArray","$method","Url","slashes","auth","port","query","pathname","urlParse","parseQueryString","slashesDenoteHost","isObject","u","urlFormat","isString","urlResolve","relative","urlResolveObject","resolveObject","arg","isNull","isNullOrUndefined","punycode","protocolPattern","portPattern","delims","unwise","autoEscape","nonHostChars","hostEndingChars","hostnameMaxLen","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","file","http:","https:","ftp:","gopher:","file:","querystring","rest","lowerProto","hostEnd","hec","atSign","parseHost","ipv6Hostname","hostparts","newpart","k","validParts","notHost","bit","domainArray","newOut","encode","ae","qm","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","isAbsolute","$refVal","$message","missingRefs","$error","$noEmptySchema","$schemaDeps","$propertyDeps","$property","$deps","$currentErrorPath","_$property","$prop","$propertyPath","$missingProperty","$isObject","$formatRef","$dataNxt","$nextData","$additionalItems","$currErrSchemaPath","$notOp","multipleOfPrecision","$regexp","$pProperties","$pPropertyKeys","$aProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","$checkAdditional","$required","$requiredHash","$pgProperties","$pgPropertyKeys","$pProperty","$pgProperty","$additionalProperty","$useDefaults","$hasDefault","$useData","arr5","i5","l5","arr6","i6","l6","$pgSchema","$pgMin","$pgMax","$limit","$reason","$moreOrLess","$propertySch","$loopRequired","get_blob","Builder","MSBlobBuilder","bag","builder","endings","__WEBPACK_AMD_DEFINE_RESULT__","RangeError","mapDomain","regexSeparators","labels","encoded","ucs2decode","extra","ucs2encode","stringFromCharCode","basicToDigit","digitToBasic","adapt","numPoints","firstTime","damp","baseMinusTMin","tMax","skew","decode","basic","oldi","baseMinusT","inputLength","initialN","bias","initialBias","delimiter","maxInt","tMin","handledCPCount","basicLength","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","regexPunycode","toASCII","regexNonASCII","freeGlobal","nodeType","not-basic","invalid-input","ucs2","at","escapee","\"","\\","/","hex","uffff","white","reviver","holder","escapable","partial","mind","gap","rep","\b","\t","\n","\f","\r","webpackPolyfill","deprecate","qs","eq","maxKeys","kstr","vstr","stringifyPrimitive","ks"],"mappings":"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"} \ No newline at end of file diff --git a/dist/jsoneditor.min.js b/dist/jsoneditor.min.js index 3c7d0eb..0a26280 100644 --- a/dist/jsoneditor.min.js +++ b/dist/jsoneditor.min.js @@ -24,26 +24,25 @@ * Copyright (c) 2011-2016 Jos de Jong, http://jsoneditoronline.org * * @author Jos de Jong, - * @version 5.1.1 - * @date 2016-01-16 + * @version 5.1.2 + * @date 2016-01-21 */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):"object"==typeof exports?exports.JSONEditor=t():e.JSONEditor=t()}(this,function(){return function(e){function t(n){if(i[n])return i[n].exports;var r=i[n]={exports:{},id:n,loaded:!1};return e[n].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var i={};return t.m=e,t.c=i,t.p="",t(0)}([function(e,t,i){function n(e,t,i){if(!(this instanceof n))throw new Error('JSONEditor constructor called without "new".');var r=l.getInternetExplorerVersion();if(-1!=r&&9>r)throw new Error("Unsupported browser, IE9 or newer required. Please install the newest version of your browser.");if(t&&(t.error&&(console.warn('Option "error" has been renamed to "onError"'),t.onError=t.error,delete t.error),t.change&&(console.warn('Option "change" has been renamed to "onChange"'),t.onChange=t.change,delete t.change),t.editable&&(console.warn('Option "editable" has been renamed to "onEditable"'),t.onEditable=t.editable,delete t.editable),t)){var o=["ace","theme","ajv","schema","onChange","onEditable","onError","onModeChange","escapeUnicode","history","search","mode","modes","name","indentation"];Object.keys(t).forEach(function(e){-1===o.indexOf(e)&&console.warn('Unknown option "'+e+'". This option will be ignored')})}arguments.length&&this._create(e,t,i)}var r;try{r=i(4)}catch(o){}var s=i(1),a=i(2),l=i(3);n.modes={},n.prototype.DEBOUNCE_INTERVAL=150,n.prototype._create=function(e,t,i){this.container=e,this.options=t||{},this.json=i||{};var n=this.options.mode||"tree";this.setMode(n)},n.prototype._delete=function(){},n.prototype.set=function(e){this.json=e},n.prototype.get=function(){return this.json},n.prototype.setText=function(e){this.json=l.parse(e)},n.prototype.getText=function(){return JSON.stringify(this.json)},n.prototype.setName=function(e){this.options||(this.options={}),this.options.name=e},n.prototype.getName=function(){return this.options&&this.options.name},n.prototype.setMode=function(e){var t,i,r=this.container,o=l.extend({},this.options),s=o.mode;o.mode=e;var a=n.modes[e];if(!a)throw new Error('Unknown mode "'+o.mode+'"');try{var c="text"==a.data;if(i=this.getName(),t=this[c?"getText":"get"](),this._delete(),l.clear(this),l.extend(this,a.mixin),this.create(r,o),this.setName(i),this[c?"setText":"set"](t),"function"==typeof a.load)try{a.load.call(this)}catch(h){console.error(h)}if("function"==typeof o.onModeChange&&e!==s)try{o.onModeChange(e,s)}catch(h){console.error(h)}}catch(h){this._onError(h)}},n.prototype.getMode=function(){return this.options.mode},n.prototype._onError=function(e){if(!this.options||"function"!=typeof this.options.onError)throw e;this.options.onError(e)},n.prototype.setSchema=function(e){if(e){var t;try{t=this.options.ajv||r({allErrors:!0,verbose:!0})}catch(i){console.warn("Failed to create an instance of Ajv, JSON Schema validation is not available. Please use a JSONEditor bundle including Ajv, or pass an instance of Ajv as via the configuration option `ajv`.")}t&&(this.validateSchema=t.compile(e),this.options.schema=e,this.validate())}else this.validateSchema=null,this.options.schema=null,this.validate()},n.prototype.validate=function(){},n.registerMode=function(e){var t,i;if(l.isArray(e))for(t=0;te&&i.scrollTop>0?this.autoScrollStep=(n+s-e)/3:e>o-s&&r+i.scrollTop3?(i.scrollTop+=r/3,n.animateCallback=t,n.animateTimeout=setTimeout(a,50)):(t&&t(!0),i.scrollTop=s,delete n.animateTimeout,delete n.animateCallback)};a()}else t&&t(!1)},h._createFrame=function(){function e(e){t._onEvent&&t._onEvent(e)}this.frame=document.createElement("div"),this.frame.className="jsoneditor jsoneditor-mode-"+this.options.mode,this.container.appendChild(this.frame);var t=this;this.frame.onclick=function(t){var i=t.target;e(t),"BUTTON"==i.nodeName&&t.preventDefault()},this.frame.oninput=e,this.frame.onchange=e,this.frame.onkeydown=e,this.frame.onkeyup=e,this.frame.oncut=e,this.frame.onpaste=e,this.frame.onmousedown=e,this.frame.onmouseup=e,this.frame.onmouseover=e,this.frame.onmouseout=e,c.addEventListener(this.frame,"focus",e,!0),c.addEventListener(this.frame,"blur",e,!0),this.frame.onfocusin=e,this.frame.onfocusout=e,this.menu=document.createElement("div"),this.menu.className="jsoneditor-menu",this.frame.appendChild(this.menu);var i=document.createElement("button");i.className="jsoneditor-expand-all",i.title="Expand all fields",i.onclick=function(){t.expandAll()},this.menu.appendChild(i);var n=document.createElement("button");if(n.title="Collapse all fields",n.className="jsoneditor-collapse-all",n.onclick=function(){t.collapseAll()},this.menu.appendChild(n),this.history){var r=document.createElement("button");r.className="jsoneditor-undo jsoneditor-separator",r.title="Undo last action (Ctrl+Z)",r.onclick=function(){t._onUndo()},this.menu.appendChild(r),this.dom.undo=r;var s=document.createElement("button");s.className="jsoneditor-redo",s.title="Redo (Ctrl+Shift+Z)",s.onclick=function(){t._onRedo()},this.menu.appendChild(s),this.dom.redo=s,this.history.onChange=function(){r.disabled=!t.history.canUndo(),s.disabled=!t.history.canRedo()},this.history.onChange()}if(this.options&&this.options.modes&&this.options.modes.length){var a=l.create(this,this.options.modes,this.options.mode);this.menu.appendChild(a),this.dom.modeBox=a}this.options.search&&(this.searchBox=new o(this,this.menu))},h._onUndo=function(){this.history&&(this.history.undo(),this._onChange())},h._onRedo=function(){this.history&&(this.history.redo(),this._onChange())},h._onEvent=function(e){"keydown"==e.type&&this._onKeyDown(e),"focus"==e.type&&(u=e.target),"mousedown"==e.type&&this._startDragDistance(e),("mousemove"==e.type||"mouseup"==e.type||"click"==e.type)&&this._updateDragDistance(e);var t=a.getNodeFromTarget(e.target);if(t&&t.selected){if("click"==e.type){if(e.target==t.dom.menu)return void this.showContextMenu(e.target);e.hasMoved||this.deselect()}"mousedown"==e.type&&a.onDragStart(this.multiselection.nodes,e)}else"mousedown"==e.type&&(this.deselect(),t&&e.target==t.dom.drag?a.onDragStart(t,e):(!t||e.target!=t.dom.field&&e.target!=t.dom.value)&&this._onMultiSelectStart(e));t&&t.onEvent(e)},h._startDragDistance=function(e){this.dragDistanceEvent={initialTarget:e.target,initialPageX:e.pageX,initialPageY:e.pageY,dragDistance:0,hasMoved:!1}},h._updateDragDistance=function(e){this.dragDistanceEvent||this._startDragDistance(e);var t=e.pageX-this.dragDistanceEvent.initialPageX,i=e.pageY-this.dragDistanceEvent.initialPageY;return this.dragDistanceEvent.dragDistance=Math.sqrt(t*t+i*i),this.dragDistanceEvent.hasMoved=this.dragDistanceEvent.hasMoved||this.dragDistanceEvent.dragDistance>10,e.dragDistance=this.dragDistanceEvent.dragDistance,e.hasMoved=this.dragDistanceEvent.hasMoved,e.dragDistance},h._onMultiSelectStart=function(e){var t=a.getNodeFromTarget(e.target);if("tree"===this.options.mode&&void 0===this.options.onEditable){this.multiselection={start:t||null,end:null,nodes:[]},this._startDragDistance(e);var i=this;this.mousemove||(this.mousemove=c.addEventListener(window,"mousemove",function(e){i._onMultiSelect(e)})),this.mouseup||(this.mouseup=c.addEventListener(window,"mouseup",function(e){i._onMultiSelectEnd(e)}))}},h._onMultiSelect=function(e){if(e.preventDefault(),this._updateDragDistance(e),e.hasMoved){var t=a.getNodeFromTarget(e.target);t&&(null==this.multiselection.start&&(this.multiselection.start=t),this.multiselection.end=t),this.deselect();var i=this.multiselection.start,n=this.multiselection.end||this.multiselection.start;i&&n&&(this.multiselection.nodes=this._findTopLevelNodes(i,n),this.select(this.multiselection.nodes))}},h._onMultiSelectEnd=function(e){this.multiselection.nodes[0]&&this.multiselection.nodes[0].dom.menu.focus(),this.multiselection.start=null,this.multiselection.end=null,this.mousemove&&(c.removeEventListener(window,"mousemove",this.mousemove),delete this.mousemove),this.mouseup&&(c.removeEventListener(window,"mouseup",this.mouseup),delete this.mouseup)},h.deselect=function(e){this.multiselection.nodes.forEach(function(e){e.setSelected(!1)}),this.multiselection.nodes=[],e&&(this.multiselection.start=null,this.multiselection.end=null)},h.select=function(e){if(!Array.isArray(e))return this.select([e]);if(e){this.deselect(),this.multiselection.nodes=e.slice(0);var t=e[0];e.forEach(function(e){e.setSelected(!0,e===t)})}},h._findTopLevelNodes=function(e,t){for(var i=e.getPath(),n=t.getPath(),r=0;r0){var o=i.length>l;if(o){i=i.slice(0,l);var a=this.validateSchema.errors.length-l;i.push("("+a+" more errors...)")}var c=document.createElement("div");c.innerHTML=''+i.map(function(e){var t;return t="string"==typeof e?'":"",''+t+""}).join("")+"
'+e+"
"+e.dataPath+""+e.message+"
",this.dom.validationErrors=c,this.frame.appendChild(c);var h=c.clientHeight;this.content.style.marginBottom=-h+"px",this.content.style.paddingBottom=h+"px"}if(this.aceEditor){var d=!1;this.aceEditor.resize(d)}},e.exports=[{mode:"text",mixin:a,data:"text",load:a.format},{mode:"code",mixin:a,data:"text",load:a.format}]},function(e,t,i){var n=i(12);t.parse=function(e){try{return JSON.parse(e)}catch(i){throw t.validate(e),i}},t.sanitize=function(e){function t(){return e.charAt(c)}function i(){return e.charAt(c+1)}function n(){return e.charAt(c-1)}function r(){for(var t=c-1;t>=0;){var i=e.charAt(t);if("{"===i)return!0;if(" "!==i&&"\n"!==i&&"\r"!==i)return!1;t--}return!1}function o(){for(c+=2;cn;n++){var o=i[n];o.style&&o.removeAttribute("style");var s=o.attributes;if(s)for(var a=s.length-1;a>=0;a--){var l=s[a];l.specified===!0&&o.removeAttribute(l.name)}t.stripFormatting(o)}},t.setEndOfContentEditable=function(e){var t,i;document.createRange&&(t=document.createRange(),t.selectNodeContents(e),t.collapse(!1),i=window.getSelection(),i.removeAllRanges(),i.addRange(t))},t.selectContentEditable=function(e){if(e&&"DIV"==e.nodeName){var t,i;window.getSelection&&document.createRange&&(i=document.createRange(),i.selectNodeContents(e),t=window.getSelection(),t.removeAllRanges(),t.addRange(i))}},t.getSelection=function(){if(window.getSelection){var e=window.getSelection();if(e.getRangeAt&&e.rangeCount)return e.getRangeAt(0)}return null},t.setSelection=function(e){if(e&&window.getSelection){var t=window.getSelection();t.removeAllRanges(),t.addRange(e)}},t.getSelectionOffset=function(){var e=t.getSelection();return e&&"startOffset"in e&&"endOffset"in e&&e.startContainer&&e.startContainer==e.endContainer?{startOffset:e.startOffset,endOffset:e.endOffset,container:e.startContainer.parentNode}:null},t.setSelectionOffset=function(e){if(document.createRange&&window.getSelection){var i=window.getSelection();if(i){var n=document.createRange();e.container.firstChild||e.container.appendChild(document.createTextNode("")),n.setStart(e.container.firstChild,e.startOffset),n.setEnd(e.container.firstChild,e.endOffset),t.setSelection(n)}}},t.getInnerText=function(e,i){var n=void 0==i;if(n&&(i={text:"",flush:function(){var e=this.text;return this.text="",e},set:function(e){this.text=e}}),e.nodeValue)return i.flush()+e.nodeValue;if(e.hasChildNodes()){for(var r=e.childNodes,o="",s=0,a=r.length;a>s;s++){var l=r[s];if("DIV"==l.nodeName||"P"==l.nodeName){var c=r[s-1],h=c?c.nodeName:void 0;h&&"DIV"!=h&&"P"!=h&&"BR"!=h&&(o+="\n",i.flush()),o+=t.getInnerText(l,i),i.set("\n")}else"BR"==l.nodeName?(o+=i.flush(),i.set("\n")):o+=t.getInnerText(l,i)}return o}return"P"==e.nodeName&&-1!=t.getInternetExplorerVersion()?i.flush():""},t.getInternetExplorerVersion=function(){if(-1==o){var e=-1;if("Microsoft Internet Explorer"==navigator.appName){var t=navigator.userAgent,i=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");null!=i.exec(t)&&(e=parseFloat(RegExp.$1))}o=e}return o},t.isFirefox=function(){return-1!=navigator.userAgent.indexOf("Firefox")};var o=-1;t.addEventListener=function(e,i,n,r){if(e.addEventListener)return void 0===r&&(r=!1),"mousewheel"===i&&t.isFirefox()&&(i="DOMMouseScroll"),e.addEventListener(i,n,r),n;if(e.attachEvent){var o=function(){return n.call(e,window.event)};return e.attachEvent("on"+i,o),o}},t.removeEventListener=function(e,i,n,r){e.removeEventListener?(void 0===r&&(r=!1),"mousewheel"===i&&t.isFirefox()&&(i="DOMMouseScroll"),e.removeEventListener(i,n,r)):e.detachEvent&&e.detachEvent("on"+i,n)},t.parsePath=function s(e){var t,i;if(0===e.length)return[];var n=e.match(/^\.(\w+)/);if(n)t=n[1],i=e.substr(t.length+1);else{if("["!==e[0])throw new SyntaxError("Failed to parse path");var r=e.indexOf("]");if(-1===r)throw new SyntaxError("Character ] expected in path");if(1===r)throw new SyntaxError("Index expected after [");t=JSON.parse(e.substring(1,r)),i=e.substr(r+1)}return[t].concat(s(i))},t.improveSchemaError=function(e){if("enum"===e.keyword&&Array.isArray(e.schema)){var t=e.schema;if(t){if(t=t.map(function(e){return JSON.stringify(e)}),t.length>5){var i=["("+(t.length-5)+" more...)"];t=t.slice(0,5),t.push(i)}e.message="should be equal to one of: "+t.join(", ")}}return e},t.insideRect=function(e,t,i){var n=void 0!==i?i:0;return t.left-n>=e.left&&t.right+n<=e.right&&t.top-n>=e.top&&t.bottom+n<=e.bottom},t.debounce=function(e,t,i){var n;return function(){var r=this,o=arguments,s=function(){n=null,i||e.apply(r,o)},a=i&&!n;clearTimeout(n),n=setTimeout(s,t),a&&e.apply(r,o)}},t.textDiff=function(e,t){for(var i=t.length,n=0,r=e.length,o=t.length;t.charAt(n)===e.charAt(n)&&i>n;)n++;for(;t.charAt(o-1)===e.charAt(r-1)&&o>n&&r>0;)o--,r--;return{start:n,end:o}}},function(module,exports,__webpack_require__){var require,require;(function(global){!function(e){module.exports=e()}(function(){var define,module,exports;return function e(t,i,n){function r(s,a){if(!i[s]){if(!t[s]){var l="function"==typeof require&&require;if(!a&&l)return require(s,!0);if(o)return o(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var h=i[s]={exports:{}};t[s][0].call(h.exports,function(e){var i=t[s][1][e];return r(i?i:e)},h,h.exports,e,t,i,n)}return i[s].exports}for(var o="function"==typeof require&&require,s=0;s1&&(n=i[0]+"@",e=i[1]),e=e.replace(L,".");var r=e.split("."),s=o(r,t).join(".");return n+s}function a(e){for(var t,i,n=[],r=0,o=e.length;o>r;)t=e.charCodeAt(r++),t>=55296&&56319>=t&&o>r?(i=e.charCodeAt(r++),56320==(64512&i)?n.push(((1023&t)<<10)+(1023&i)+65536):(n.push(t),r--)):n.push(t);return n}function l(e){return o(e,function(e){var t="";return e>65535&&(e-=65536,t+=M(e>>>10&1023|55296),e=56320|1023&e),t+=M(e)}).join("")}function c(e){return 10>e-48?e-22:26>e-65?e-65:26>e-97?e-97:E}function h(e,t){return e+22+75*(26>e)-((0!=t)<<5)}function d(e,t,i){var n=0;for(e=i?P(e/S):e>>1,e+=P(e/t);e>T*F>>1;n+=E)e=P(e/T);return P(n+(T+1)*e/(e+x))}function u(e){var t,i,n,o,s,a,h,u,f,p,m=[],g=e.length,v=0,w=D,A=$;for(i=e.lastIndexOf(k),0>i&&(i=0),n=0;i>n;++n)e.charCodeAt(n)>=128&&r("not-basic"),m.push(e.charCodeAt(n));for(o=i>0?i+1:0;g>o;){for(s=v,a=1,h=E;o>=g&&r("invalid-input"),u=c(e.charCodeAt(o++)),(u>=E||u>P((C-v)/a))&&r("overflow"),v+=u*a,f=A>=h?b:h>=A+F?F:h-A,!(f>u);h+=E)p=E-f,a>P(C/p)&&r("overflow"),a*=p;t=m.length+1,A=d(v-s,t,0==s),P(v/t)>C-w&&r("overflow"),w+=P(v/t),v%=t,m.splice(v++,0,w)}return l(m)}function f(e){var t,i,n,o,s,l,c,u,f,p,m,g,v,w,A,y=[];for(e=a(e),g=e.length,t=D,i=0,s=$,l=0;g>l;++l)m=e[l],128>m&&y.push(M(m));for(n=o=y.length,o&&y.push(k);g>n;){for(c=C,l=0;g>l;++l)m=e[l],m>=t&&c>m&&(c=m);for(v=n+1,c-t>P((C-i)/v)&&r("overflow"),i+=(c-t)*v,t=c,l=0;g>l;++l)if(m=e[l],t>m&&++i>C&&r("overflow"),m==t){for(u=i,f=E;p=s>=f?b:f>=s+F?F:f-s,!(p>u);f+=E)A=u-p,w=E-p,y.push(M(h(p+A%w,0))),u=P(A/w);y.push(M(h(u,0))),s=d(i,v,n==o),i=0,++n}++i,++t}return y.join("")}function p(e){return s(e,function(e){return B.test(e)?u(e.slice(4).toLowerCase()):e})}function m(e){return s(e,function(e){return _.test(e)?"xn--"+f(e):e})}var g="object"==typeof i&&i&&!i.nodeType&&i,v="object"==typeof t&&t&&!t.nodeType&&t,w="object"==typeof e&&e;(w.global===w||w.window===w||w.self===w)&&(n=w);var A,y,C=2147483647,E=36,b=1,F=26,x=38,S=700,$=72,D=128,k="-",B=/^xn--/,_=/[^\x20-\x7E]/,L=/[\x2E\u3002\uFF0E\uFF61]/g,R={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},T=E-b,P=Math.floor,M=String.fromCharCode;if(A={version:"1.3.2",ucs2:{decode:a,encode:l},decode:u,encode:f,toASCII:m,toUnicode:p},"function"==typeof define&&"object"==typeof define.amd&&define.amd)define("punycode",function(){return A});else if(g&&v)if(t.exports==g)v.exports=A;else for(y in A)A.hasOwnProperty(y)&&(g[y]=A[y]);else n.punycode=A}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],2:[function(e,t,i){"use strict";function n(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.exports=function(e,t,i,o){t=t||"&",i=i||"=";var s={};if("string"!=typeof e||0===e.length)return s;var a=/\+/g;e=e.split(t);var l=1e3;o&&"number"==typeof o.maxKeys&&(l=o.maxKeys);var c=e.length;l>0&&c>l&&(c=l);for(var h=0;c>h;++h){var d,u,f,p,m=e[h].replace(a,"%20"),g=m.indexOf(i);g>=0?(d=m.substr(0,g),u=m.substr(g+1)):(d=m,u=""),f=decodeURIComponent(d), -p=decodeURIComponent(u),n(s,f)?r(s[f])?s[f].push(p):s[f]=[s[f],p]:s[f]=p}return s};var r=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},{}],3:[function(e,t,i){"use strict";function n(e,t){if(e.map)return e.map(t);for(var i=[],n=0;n",'"',"`"," ","\r","\n"," "],p=["{","}","|","\\","^","`"].concat(f),m=["'"].concat(p),g=["%","/","?",";","#"].concat(m),v=["/","?","#"],w=255,A=/^[+a-z0-9A-Z_-]{0,63}$/,y=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,C={javascript:!0,"javascript:":!0},E={javascript:!0,"javascript:":!0},b={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},F=e("querystring");n.prototype.parse=function(e,t,i){if(!c.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var n=e.indexOf("?"),r=-1!==n&&nD)&&(S=D)}var k,B;B=-1===S?a.lastIndexOf("@"):a.lastIndexOf("@",S),-1!==B&&(k=a.slice(0,B),a=a.slice(B+1),this.auth=decodeURIComponent(k)),S=-1;for(var $=0;$D)&&(S=D)}-1===S&&(S=a.length),this.host=a.slice(0,S),a=a.slice(S),this.parseHost(),this.hostname=this.hostname||"";var _="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!_)for(var L=this.hostname.split(/\./),$=0,R=L.length;R>$;$++){var T=L[$];if(T&&!T.match(A)){for(var P="",M=0,O=T.length;O>M;M++)P+=T.charCodeAt(M)>127?"x":T[M];if(!P.match(A)){var j=L.slice(0,$),I=L.slice($+1),N=T.match(y);N&&(j.push(N[1]),I.unshift(N[2])),I.length&&(a="/"+I.join(".")+a),this.hostname=j.join(".");break}}}this.hostname.length>w?this.hostname="":this.hostname=this.hostname.toLowerCase(),_||(this.hostname=l.toASCII(this.hostname));var W=this.port?":"+this.port:"",H=this.hostname||"";this.host=H+W,this.href+=this.host,_&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==a[0]&&(a="/"+a))}if(!C[p])for(var $=0,R=m.length;R>$;$++){var V=m[$];if(-1!==a.indexOf(V)){var z=encodeURIComponent(V);z===V&&(z=escape(V)),a=a.split(V).join(z)}}var U=a.indexOf("#");-1!==U&&(this.hash=a.substr(U),a=a.slice(0,U));var K=a.indexOf("?");if(-1!==K?(this.search=a.substr(K),this.query=a.substr(K+1),t&&(this.query=F.parse(this.query)),a=a.slice(0,K)):t&&(this.search="",this.query={}),a&&(this.pathname=a),b[p]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){var W=this.pathname||"",q=this.search||"";this.path=W+q}return this.href=this.format(),this},n.prototype.format=function(){var e=this.auth||"";e&&(e=encodeURIComponent(e),e=e.replace(/%3A/i,":"),e+="@");var t=this.protocol||"",i=this.pathname||"",n=this.hash||"",r=!1,o="";this.host?r=e+this.host:this.hostname&&(r=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(r+=":"+this.port)),this.query&&c.isObject(this.query)&&Object.keys(this.query).length&&(o=F.stringify(this.query));var s=this.search||o&&"?"+o||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||b[t])&&r!==!1?(r="//"+(r||""),i&&"/"!==i.charAt(0)&&(i="/"+i)):r||(r=""),n&&"#"!==n.charAt(0)&&(n="#"+n),s&&"?"!==s.charAt(0)&&(s="?"+s),i=i.replace(/[?#]/g,function(e){return encodeURIComponent(e)}),s=s.replace("#","%23"),t+r+i+s+n},n.prototype.resolve=function(e){return this.resolveObject(r(e,!1,!0)).format()},n.prototype.resolveObject=function(e){if(c.isString(e)){var t=new n;t.parse(e,!1,!0),e=t}for(var i=new n,r=Object.keys(this),o=0;o0?i.host.split("@"):!1;x&&(i.auth=x.shift(),i.host=i.hostname=x.shift())}return i.search=e.search,i.query=e.query,c.isNull(i.pathname)&&c.isNull(i.search)||(i.path=(i.pathname?i.pathname:"")+(i.search?i.search:"")),i.href=i.format(),i}if(!C.length)return i.pathname=null,i.search?i.path="/"+i.search:i.path=null,i.href=i.format(),i;for(var S=C.slice(-1)[0],$=(i.host||e.host||C.length>1)&&("."===S||".."===S)||""===S,D=0,k=C.length;k>=0;k--)S=C[k],"."===S?C.splice(k,1):".."===S?(C.splice(k,1),D++):D&&(C.splice(k,1),D--);if(!A&&!y)for(;D--;D)C.unshift("..");!A||""===C[0]||C[0]&&"/"===C[0].charAt(0)||C.unshift(""),$&&"/"!==C.join("/").substr(-1)&&C.push("");var B=""===C[0]||C[0]&&"/"===C[0].charAt(0);if(F){i.hostname=i.host=B?"":C.length?C.shift():"";var x=i.host&&i.host.indexOf("@")>0?i.host.split("@"):!1;x&&(i.auth=x.shift(),i.host=i.hostname=x.shift())}return A=A||i.host&&C.length,A&&!B&&C.unshift(""),C.length?i.pathname=C.join("/"):(i.pathname=null,i.path=null),c.isNull(i.pathname)&&c.isNull(i.search)||(i.path=(i.pathname?i.pathname:"")+(i.search?i.search:"")),i.auth=e.auth||i.auth,i.slashes=i.slashes||e.slashes,i.href=i.format(),i},n.prototype.parseHost=function(){var e=this.host,t=d.exec(e);t&&(t=t[0],":"!==t&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},{"./util":6,punycode:1,querystring:4}],6:[function(e,t,i){"use strict";t.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},{}],7:[function(e,t,i){"use strict";t.exports=function(e,t){function i(e,t,n){function o(n){function o(n,o){if(n)t(n);else{if(!r._refs[s]&&!r._schemas[s])try{r.addSchema(o,s)}catch(a){return void t(a)}i(e,t)}}var s=n.missingSchema;if(r._refs[s]||r._schemas[s])return t(new Error("Schema "+s+" is loaded but"+n.missingRef+"cannot be resolved"));var a=r._loadingSchemas[s];a?"function"==typeof a?r._loadingSchemas[s]=[a,o]:a[a.length]=o:(r._loadingSchemas[s]=o,r.opts.loadSchema(s,function(e,t){var i=r._loadingSchemas[s];if(delete r._loadingSchemas[s],"function"==typeof i)i(e,t);else for(var n=0;n=1&&12>=i&&n>=1&&n<=m[i]}function o(e,t){var i=e.match(g);if(!i)return!1;var n=i[1],r=i[2],o=i[3],s=i[5];return 23>=n&&59>=r&&59>=o&&(!t||s)}function s(e){var t=e.split(E);return r(t[0])&&o(t[1],!0)}function a(e){return e.length<=255&&v.test(e)}function l(e){return b.test(e)&&w.test(e)}function c(e){try{return new RegExp(e),!0}catch(t){return!1}}function h(e,t){return e&&t?e>t?1:t>e?-1:e===t?0:void 0:void 0}function d(e,t){return e&&t&&(e=e.match(g),t=t.match(g),e&&t)?(e=e[1]+e[2]+e[3]+(e[4]||""),t=t[1]+t[2]+t[3]+(t[4]||""),e>t?1:t>e?-1:e===t?0:void 0):void 0}function u(e,t){if(e&&t){e=e.split(E),t=t.split(E);var i=h(e[0],t[0]);if(void 0!==i)return i||d(e[1],t[1])}}var f=e("./util"),p=/^\d\d\d\d-(\d\d)-(\d\d)$/,m=[0,31,29,31,30,31,30,31,31,30,31,30,31],g=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d:\d\d)?$/i,v=/^[a-z](?:(?:[-0-9a-z]{0,61})?[0-9a-z])?(\.[a-z](?:(?:[-0-9a-z]{0,61})?[0-9a-z])?)*$/i,w=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@\/?]|%[0-9a-f]{2})*)?(?:\#(?:[a-z0-9\-._~!$&'()*+,;=:@\/?]|%[0-9a-f]{2})*)?$/i,A=/^(?:urn\:uuid\:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,y=/^(?:\/(?:[^~\/]|~0|~1)+)*(?:\/)?$|^\#(?:\/(?:[a-z0-9_\-\.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)+)*(?:\/)?$/i,C=/^(?:0|[1-9][0-9]*)(?:\#|(?:\/(?:[^~\/]|~0|~1)+)*(?:\/)?)$/;t.exports=n,n.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^[0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s][0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)$/i,uri:/^(?:[a-z][a-z0-9+-.]*)?(?:\:|\/)\/?[^\s]*$/i,email:/^[a-z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:v,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:c,uuid:A,"json-pointer":y,"relative-json-pointer":C},n.full={date:r,time:o,"date-time":s,uri:l,email:/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&''*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:a,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:c,uuid:A,"json-pointer":y,"relative-json-pointer":C},n.compare={date:h,time:d,"date-time":u};var E=/t|\s/i,b=/\/|\:/},{"./util":16}],12:[function(require,module,exports){"use strict";function compile(schema,root,localRefs,baseId){function localCompile(_schema,_root,localRefs,baseId){var isRoot=!_root||_root&&_root.schema==_schema;if(_root.schema!=root.schema)return compile.call(self,_schema,_root,localRefs,baseId);var validateCode=validateGenerator({isTop:!0,schema:_schema,isRoot:isRoot,baseId:baseId,root:_root,schemaPath:"",errSchemaPath:"#",errorPath:'""',RULES:RULES,validate:validateGenerator,util:util,resolve:resolve,resolveRef:resolveRef,usePattern:usePattern,useDefault:useDefault,useCustomRule:useCustomRule,opts:self.opts,formats:formats,self:self});if(validateCode=vars(refVal,refValCode)+vars(patterns,patternCode)+vars(defaults,defaultCode)+vars(customRules,customRuleCode)+validateCode,self.opts.beautify){var opts=self.opts.beautify===!0?{indent_size:2}:self.opts.beautify;beautify?validateCode=beautify(validateCode,opts):console.error('"npm install js-beautify" to use beautify option')}var validate;try{eval(validateCode),refVal[0]=validate}catch(e){throw console.log("Error compiling schema, function code:",validateCode),e}return validate.schema=_schema,validate.errors=null,validate.refs=refs,validate.refVal=refVal,validate.root=isRoot?validate:_root,validate}function resolveRef(e,t,i){t=resolve.url(e,t);var n,r,o=refs[t];if(void 0!==o)return n=refVal[o],r="refVal["+o+"]",resolvedRef(n,r);if(!i){var s=root.refs[t];if(void 0!==s)return n=root.refVal[s],r=addLocalRef(t,n),resolvedRef(n,r)}r=addLocalRef(t);var a=resolve.call(self,localCompile,root,t);if(!a){var l=localRefs&&localRefs[t];l&&(a=resolve.inlineRef(l,self.opts.inlineRefs)?l:compile.call(self,l,root,localRefs,e))}return a?(replaceLocalRef(t,a),resolvedRef(a,r)):void 0}function addLocalRef(e,t){var i=refVal.length;return refVal[i]=t,refs[e]=i,"refVal"+i}function replaceLocalRef(e,t){var i=refs[e];refVal[i]=t}function resolvedRef(e,t){return"object"==typeof e?{schema:e,code:t}:t}function usePattern(e){var t=patternsHash[e];return void 0===t&&(t=patternsHash[e]=patterns.length,patterns[t]=e),"pattern"+t}function useDefault(e){switch(typeof e){case"boolean":case"number":return""+e;case"string":return util.toQuotedString(e);case"object":if(null===e)return"null";var t=stableStringify(e),i=defaultsHash[t];return void 0===i&&(i=defaultsHash[t]=defaults.length,defaults[i]=e),"default"+i}}function useCustomRule(e,t,i,n){var r,o=e.definition.compile,s=e.definition.inline,a=e.definition.macro;o?r=o.call(self,t,i):a?(r=a.call(self,t,i),self.opts.validateSchema!==!1&&self.validateSchema(r,!0)):r=s?s.call(self,n,e.keyword,t,i):e.definition.validate;var l=customRules.length;return customRules[l]=r,{code:"customRule"+l,validate:r}}var self=this,refVal=[void 0],refs={},patterns=[],patternsHash={},defaults=[],defaultsHash={},customRules=[],customRulesHash={};root=root||{schema:schema,refVal:refVal,refs:refs};var formats=this._formats,RULES=this.RULES;return localCompile(schema,root,localRefs,baseId)}function patternCode(e,t){return"var pattern"+e+" = new RegExp("+util.toQuotedString(t[e])+");"}function defaultCode(e){return"var default"+e+" = defaults["+e+"];"}function refValCode(e,t){return t[e]?"var refVal"+e+" = refVal["+e+"];":""}function customRuleCode(e){return"var customRule"+e+" = customRules["+e+"];"}function vars(e,t){if(!e.length)return"";for(var i="",n=0;nr;)i++,t=e.charCodeAt(r++),t>=55296&&56319>=t&&n>r&&(t=e.charCodeAt(r),56320==(64512&t)&&r++);return i}function h(e,t){t+="[^0-9]";var i=e.match(new RegExp(t,"g"));return i?i.length:0}function d(e,t,i){return t+="([^0-9])",i=i.replace(/\$/g,"$$$$"),e.replace(new RegExp(t,"g"),i+"$1")}function u(e){return e.replace(S,"").replace($,"").replace(D,"if (!($1))")}function f(e){var t=e.match(k);return t&&2===t.length?e.replace(B,"").replace(_,L):e}function p(e,t){for(var i in e)if(t[i])return!0}function m(e){return"'"+l(e)+"'"}function g(e,t,i,n){var r=i?"'/' + "+t+(n?"":".replace(/~/g, '~0').replace(/\\//g, '~1')"):n?"'[' + "+t+" + ']'":"'[\\'' + "+t+" + '\\']'";return A(e,r)}function v(e,t,i){var n=m(i?"/"+E(t):a(t));return A(e,n)}function w(e,t,i){var n=e.match(R);if(!n)throw new Error("Invalid relative JSON-pointer: "+e);var r=+n[1],o=n[2];if("#"==o){if(r>=t)throw new Error("Cannot access property/index "+r+" levels up, current level is "+t);return i[t-r]}if(r>t)throw new Error("Cannot access data "+r+" levels up, current level is "+t);for(var s="data"+(t-r||""),l=s,c=o.split("/"),h=0;h",b="result"+r,F=e.opts.v5&&s.$data,x=F?e.util.getData(s.$data,o,e.dataPathArr):s;if(F&&(n+=" var schema"+r+" = "+x+"; ",x="schema"+r),C){var S=e.util.getData(y.$data,o,e.dataPathArr),$="exclusive"+r,D="op"+r,k="' + "+D+" + '";n+=" var schemaExcl"+r+" = "+S+"; ",S="schemaExcl"+r,n+=" if (typeof "+S+" != 'boolean' && "+S+" !== undefined) { "+d+" = false; ";var i=A,B=B||[];B.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_exclusiveFormatLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: '"+A+" should be boolean' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var _=n;n=B.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+_+"]; return false; ":" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(p+="}",n+=" else { "),F&&(n+=" if ("+x+" === undefined) "+d+" = true; else if (typeof "+x+" != 'string') "+d+" = false; else { ",p+="}"),f&&(n+=" if (!"+v+") "+d+" = true; else { ",p+="}"),n+=" var "+b+" = "+v+"("+h+", ",n+=F?""+x:""+e.util.toQuotedString(s),n+=" ); if ("+b+" === undefined) "+d+" = false; var exclusive"+r+" = "+S+" === true; if ("+d+" === undefined) { "+d+" = exclusive"+r+" ? "+b+" "+E+" 0 : "+b+" "+E+"= 0; } if (!"+d+") var op"+r+" = exclusive"+r+" ? '"+E+"' : '"+E+"=';"}else{var $=y===!0,k=E;$||(k+="=");var D="'"+k+"'";F&&(n+=" if ("+x+" === undefined) "+d+" = true; else if (typeof "+x+" != 'string') "+d+" = false; else { ",p+="}"),f&&(n+=" if (!"+v+") "+d+" = true; else { ",p+="}"),n+=" var "+b+" = "+v+"("+h+", ",n+=F?""+x:""+e.util.toQuotedString(s),n+=" ); if ("+b+" === undefined) "+d+" = false; if ("+d+" === undefined) "+d+" = "+b+" "+E,$||(n+="="),n+=" 0;"}n+=""+p+"if (!"+d+") { ";var i=t,B=B||[];B.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_formatLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { limit: ',n+=F?""+x:""+e.util.toQuotedString(s),n+=" } ",e.opts.messages!==!1&&(n+=" , message: 'should be "+k+' "',n+=F?"' + "+x+" + '":""+e.util.escapeQuotes(s),n+="\"' "),e.opts.verbose&&(n+=" , schema: ",n+=F?"validate.schema"+a:""+e.util.toQuotedString(s),n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var _=n;return n=B.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+_+"]; return false; ":" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", -n+="}"}},{}],18:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f="maximum"==t,p=f?"exclusiveMaximum":"exclusiveMinimum",m=e.schema[p],g=e.opts.v5&&m&&m.$data,v=f?"<":">",w=f?">":"<";if(g){var A=e.util.getData(m.$data,o,e.dataPathArr),y="exclusive"+r,C="op"+r,E="' + "+C+" + '";n+=" var schemaExcl"+r+" = "+A+"; ",A="schemaExcl"+r,n+=" var exclusive"+r+"; if (typeof "+A+" != 'boolean' && typeof "+A+" != 'undefined') { ";var i=p,b=b||[];b.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: '"+p+" should be boolean' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var F=n;n=b.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else if( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=" ((exclusive"+r+" = "+A+" === true) ? "+h+" "+w+"= "+u+" : "+h+" "+w+" "+u+")) { var op"+r+" = exclusive"+r+" ? '"+v+"' : '"+v+"=';"}else{var y=m===!0,E=v;y||(E+="=");var C="'"+E+"'";n+=" if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=" "+h+" "+w,y&&(n+="="),n+=" "+u+") {"}var i=t,b=b||[];b.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { comparison: '+C+", limit: "+u+", exclusive: "+y+" } ",e.opts.messages!==!1&&(n+=" , message: 'should be "+E+" ",n+=d?"' + "+u:""+s+"'"),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var F=n;return n=b.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(n+=" else { "),n}},{}],19:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f="maxItems"==t?">":"<";n+="if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=" "+h+".length "+f+" "+u+") { ";var i=t,p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { limit: '+u+" } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have ",n+="maxItems"==t?"more":"less",n+=" than ",n+=d?"' + "+u+" + '":""+s,n+=" items' "),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;return n=p.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},{}],20:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f="maxLength"==t?">":"<";n+="if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=e.opts.unicode===!1?" "+h+".length ":" ucs2length("+h+") ",n+=" "+f+" "+u+") { ";var i=t,p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { limit: '+u+" } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT be ",n+="maxLength"==t?"longer":"shorter",n+=" than ",n+=d?"' + "+u+" + '":""+s,n+=" characters' "),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;return n=p.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},{}],21:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f="maxProperties"==t?">":"<";n+="if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=" Object.keys("+h+").length "+f+" "+u+") { ";var i=t,p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { limit: '+u+" } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have ",n+="maxProperties"==t?"more":"less",n+=" than ",n+=d?"' + "+u+" + '":""+s,n+=" properties' "),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;return n=p.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},{}],22:[function(e,t,i){"use strict";t.exports=function(e,t){var i=" ",n=e.schema[t],r=e.schemaPath+"."+t,o=e.errSchemaPath+"/"+t,s=!e.opts.allErrors,a=e.util.copy(e),l="";a.level++;var c=n;if(c)for(var h,d=-1,u=c.length-1;u>d;)h=c[d+=1],e.util.schemaHasRules(h,e.RULES.all)&&(a.schema=h,a.schemaPath=r+"["+d+"]",a.errSchemaPath=o+"/"+d,i+=" "+e.validate(a)+" ",s&&(i+=" if (valid"+a.level+") { ",l+="}"));return s&&(i+=" "+l.slice(0,-1)),i=e.util.cleanUpCode(i)}},{}],23:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u="errs__"+r,f=e.util.copy(e),p="";f.level++;var m=s.every(function(t){return e.util.schemaHasRules(t,e.RULES.all)});if(m){n+=" var "+u+" = errors; var "+d+" = false; ";var g=e.compositeRule;e.compositeRule=f.compositeRule=!0;var v=s;if(v)for(var w,A=-1,y=v.length-1;y>A;)w=v[A+=1],f.schema=w,f.schemaPath=a+"["+A+"]",f.errSchemaPath=l+"/"+A,n+=" "+e.validate(f)+" "+d+" = "+d+" || valid"+f.level+"; if (!"+d+") { ",p+="}";e.compositeRule=f.compositeRule=g,n+=" "+p+" if (!"+d+") { var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"anyOf")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: 'should match some schema in anyOf' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else { errors = "+u+"; if (vErrors !== null) { if ("+u+") vErrors.length = "+u+"; else vErrors = null; } ",e.opts.allErrors&&(n+=" } "),n=e.util.cleanUpCode(n)}else c&&(n+=" if (true) { ");return n}},{}],24:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u=e.opts.v5&&s.$data,f=u?e.util.getData(s.$data,o,e.dataPathArr):s;u&&(n+=" var schema"+r+" = "+f+"; ",f="schema"+r),u||(n+=" var schema"+r+" = validate.schema"+a+";"),n+="var "+d+" = equal("+h+", schema"+r+"); if (!"+d+") { ";var p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"constant")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: 'should be equal to constant' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;return n=p.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" }"}},{}],25:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="errs__"+r,u=e.util.copy(e),f="";u.level++;var p={},m={};for(A in s){var g=s[A],v=Array.isArray(g)?m:p;v[A]=g}n+="var "+d+" = errors;";var w=e.errorPath;n+="var missing"+r+";";for(var A in m){v=m[A],n+=" if ("+h+e.util.getProperty(A)+" !== undefined && ( ";var y=v;if(y)for(var C,E=-1,b=y.length-1;b>E;){C=y[E+=1],E&&(n+=" || ");var F=e.util.getProperty(C);n+=" ( "+h+F+" === undefined && (missing"+r+" = "+e.util.toQuotedString(e.opts.jsonPointers?C:F)+") ) "}n+=")) { ";var x="missing"+r,S="' + "+x+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(w,x,!0):w+" + "+x);var $=$||[];$.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"dependencies")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { property: '"+e.util.escapeQuotes(A)+"', missingProperty: '"+S+"', depsCount: "+v.length+", deps: '"+e.util.escapeQuotes(1==v.length?v[0]:v.join(", "))+"' } ",e.opts.messages!==!1&&(n+=" , message: 'should have ",n+=1==v.length?"property "+e.util.escapeQuotes(v[0]):"properties "+e.util.escapeQuotes(v.join(", ")),n+=" when property "+e.util.escapeQuotes(A)+" is present' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var D=n;n=$.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+D+"]; return false; ":" var err = "+D+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(f+="}",n+=" else { ")}e.errorPath=w;for(var A in p){var g=p[A];e.util.schemaHasRules(g,e.RULES.all)&&(n+=" valid"+u.level+" = true; if ("+h+"['"+A+"'] !== undefined) { ",u.schema=g,u.schemaPath=a+e.util.getProperty(A),u.errSchemaPath=l+"/"+e.util.escapeFragment(A),n+=" "+e.validate(u)+" } ",c&&(n+=" if (valid"+u.level+") { ",f+="}"))}return c&&(n+=" "+f+" if ("+d+" == errors) {"),n=e.util.cleanUpCode(n)}},{}],26:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u=e.opts.v5&&s.$data,f=u?e.util.getData(s.$data,o,e.dataPathArr):s;u&&(n+=" var schema"+r+" = "+f+"; ",f="schema"+r);var p="i"+r;u||(n+=" var schema"+r+" = validate.schema"+a+";"),n+="var "+d+";",u&&(n+=" if (schema"+r+" === undefined) "+d+" = true; else if (!Array.isArray(schema"+r+")) "+d+" = false; else {"),n+=""+d+" = false;for (var "+p+"=0; "+p+"b;)if(E=C[b+=1],e.util.schemaHasRules(E,e.RULES.all)){n+=" valid"+f.level+" = true; if ("+h+".length > "+b+") { ";var x=h+"["+b+"]";f.schema=E,f.schemaPath=a+"["+b+"]",f.errSchemaPath=l+"/"+b,f.errorPath=e.util.getPathExpr(e.errorPath,b,e.opts.jsonPointers,!0),e.opts.v5&&(f.dataPathArr[m]=b);var S=e.validate(f);n+=e.util.varOccurences(S,g)<2?" "+e.util.varReplace(S,g,x)+" ":" var "+g+" = "+x+"; "+S+" ",n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}if("object"==typeof v&&e.util.schemaHasRules(v,e.RULES.all)){f.schema=v,f.schemaPath=e.schemaPath+".additionalItems",f.errSchemaPath=e.errSchemaPath+"/additionalItems",n+=" valid"+f.level+" = true; if ("+h+".length > "+s.length+") { for (var i"+r+" = "+s.length+"; i"+r+" < "+h+".length; i"+r+"++) { ",f.errorPath=e.util.getPathExpr(e.errorPath,"i"+r,e.opts.jsonPointers,!0);var x=h+"[i"+r+"]";e.opts.v5&&(f.dataPathArr[m]="i"+r);var S=e.validate(f);n+=e.util.varOccurences(S,g)<2?" "+e.util.varReplace(S,g,x)+" ":" var "+g+" = "+x+"; "+S+" ",c&&(n+=" if (!valid"+f.level+") break; "),n+=" } } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}}else if(e.util.schemaHasRules(s,e.RULES.all)){f.schema=s,f.schemaPath=a,f.errSchemaPath=l,n+=" for (var i"+r+" = 0; i"+r+" < "+h+".length; i"+r+"++) { ",f.errorPath=e.util.getPathExpr(e.errorPath,"i"+r,e.opts.jsonPointers,!0);var x=h+"[i"+r+"]";e.opts.v5&&(f.dataPathArr[m]="i"+r);var S=e.validate(f);n+=e.util.varOccurences(S,g)<2?" "+e.util.varReplace(S,g,x)+" ":" var "+g+" = "+x+"; "+S+" ",c&&(n+=" if (!valid"+f.level+") break; "),n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}return c&&(n+=" "+p+" if ("+u+" == errors) {"),n=e.util.cleanUpCode(n)}},{}],29:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r),n+="var division"+r+";if (",d&&(n+=" "+u+" !== undefined && ( typeof "+u+" != 'number' || "),n+=" (division"+r+" = "+h+" / "+u+", ",n+=e.opts.multipleOfPrecision?" Math.abs(Math.round(division"+r+") - division"+r+") > 1e-"+e.opts.multipleOfPrecision+" ":" division"+r+" !== parseInt(division"+r+") ",n+=" ) ",d&&(n+=" ) "),n+=" ) { ";var f=f||[];f.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"multipleOf")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { multipleOf: '+u+" } ",e.opts.messages!==!1&&(n+=" , message: 'should be multiple of ",n+=d?"' + "+u:""+s+"'"),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var p=n;return n=f.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},{}],30:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="errs__"+r,u=e.util.copy(e);if(u.level++,e.util.schemaHasRules(s,e.RULES.all)){u.schema=s,u.schemaPath=a,u.errSchemaPath=l,n+=" var "+d+" = errors; ";var f=e.compositeRule;e.compositeRule=u.compositeRule=!0,u.createErrors=!1,n+=" "+e.validate(u)+" ",u.createErrors=!0,e.compositeRule=u.compositeRule=f,n+=" if (valid"+u.level+") { ";var p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"not")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: 'should NOT be valid' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;n=p.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; } ",e.opts.allErrors&&(n+=" } ")}else n+=" var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"not")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: 'should NOT be valid' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",c&&(n+=" if (false) { ");return n}},{}],31:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u="errs__"+r,f=e.util.copy(e),p="";f.level++,n+="var "+u+" = errors;var prevValid"+r+" = false;var "+d+" = false; ";var m=e.compositeRule;e.compositeRule=f.compositeRule=!0;var g=s;if(g)for(var v,w=-1,A=g.length-1;A>w;)v=g[w+=1],e.util.schemaHasRules(v,e.RULES.all)?(f.schema=v,f.schemaPath=a+"["+w+"]",f.errSchemaPath=l+"/"+w,n+=" "+e.validate(f)+" "):n+=" var valid"+f.level+" = true; ",w&&(n+=" if (valid"+f.level+" && prevValid"+r+") "+d+" = false; else { ",p+="}"),n+=" if (valid"+f.level+") "+d+" = prevValid"+r+" = true;";e.compositeRule=f.compositeRule=m,n+=""+p+"if (!"+d+") { ";var y=y||[];y.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"oneOf")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var C=n;return n=y.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+C+"]; return false; ":" var err = "+C+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} else { errors = "+u+"; if (vErrors !== null) { if ("+u+") vErrors.length = "+u+"; else vErrors = null; }",e.opts.allErrors&&(n+=" } "),n}},{}],32:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f=d?"(new RegExp("+u+"))":e.usePattern(s);n+="if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'string') || "),n+=" !"+f+".test("+h+") ) { ";var p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"pattern")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { pattern: ',n+=d?""+u:""+e.util.toQuotedString(s),n+=" } ",e.opts.messages!==!1&&(n+=" , message: 'should match pattern \"",n+=d?"' + "+u+" + '":""+e.util.escapeQuotes(s),n+="\"' "),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+e.util.toQuotedString(s),n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;return n=p.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},{}],33:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u="errs__"+r,f=e.util.copy(e),p="";f.level++;var m=f.dataLevel=e.dataLevel+1,g="data"+m,v=Object.keys(s||{}),w=e.schema.patternProperties||{},A=Object.keys(w),y=e.schema.additionalProperties,C=v.length||A.length,E=y===!1,b="object"==typeof y&&Object.keys(y).length,F=e.opts.removeAdditional,x=E||b||F,S=e.schema.required;if(S&&(!e.opts.v5||!S.$data)&&S.length5)n+=" || validate.schema"+a+"[key"+r+"] ";else{var B=v;if(B)for(var _,L=-1,R=B.length-1;R>L;)_=B[L+=1],n+=" || key"+r+" == "+e.util.toQuotedString(_)+" "}if(A.length){var T=A;if(T)for(var P,M=-1,O=T.length-1;O>M;)P=T[M+=1],n+=" || "+e.usePattern(P)+".test(key"+r+") "}if(e.opts.v5&&k&&k.length){var j=k;if(j)for(var I,M=-1,N=j.length-1;N>M;)I=j[M+=1],n+=" || "+e.usePattern(I)+".test(key"+r+") "}n+=" ); if (isAdditional"+r+") { "}if("all"==F)n+=" delete "+h+"[key"+r+"]; ";else{var W=e.errorPath,H="' + key"+r+" + '";if(e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers)),E)if(F)n+=" delete "+h+"[key"+r+"]; ";else{n+=" valid"+f.level+" = false; ";var V=l;l=e.errSchemaPath+"/additionalProperties";var z=z||[];z.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"additionalProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { additionalProperty: '"+H+"' } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have additional properties' "),e.opts.verbose&&(n+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var U=n;n=z.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+U+"]; return false; ":" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=V,c&&(n+=" break; ")}else if(b)if("failing"==F){n+=" var "+u+" = errors; ";var K=e.compositeRule;e.compositeRule=f.compositeRule=!0,f.schema=y,f.schemaPath=e.schemaPath+".additionalProperties",f.errSchemaPath=e.errSchemaPath+"/additionalProperties",f.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers);var q=h+"[key"+r+"]";e.opts.v5&&(f.dataPathArr[m]="key"+r);var G=e.validate(f);n+=e.util.varOccurences(G,g)<2?" "+e.util.varReplace(G,g,q)+" ":" var "+g+" = "+q+"; "+G+" ",n+=" if (!valid"+f.level+") { errors = "+u+"; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete "+h+"[key"+r+"]; } ",e.compositeRule=f.compositeRule=K}else{f.schema=y,f.schemaPath=e.schemaPath+".additionalProperties",f.errSchemaPath=e.errSchemaPath+"/additionalProperties",f.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers);var q=h+"[key"+r+"]";e.opts.v5&&(f.dataPathArr[m]="key"+r);var G=e.validate(f);n+=e.util.varOccurences(G,g)<2?" "+e.util.varReplace(G,g,q)+" ":" var "+g+" = "+q+"; "+G+" ",c&&(n+=" if (!valid"+f.level+") break; ")}e.errorPath=W}C&&(n+=" } "),n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}var Q=e.opts.useDefaults&&!e.compositeRule;if(v.length){var Y=v;if(Y)for(var _,J=-1,X=Y.length-1;X>J;){_=Y[J+=1];var Z=s[_];if(e.util.schemaHasRules(Z,e.RULES.all)){var ee=e.util.getProperty(_),q=h+ee,te=Q&&void 0!==Z["default"];f.schema=Z,f.schemaPath=a+ee,f.errSchemaPath=l+"/"+e.util.escapeFragment(_),f.errorPath=e.util.getPath(e.errorPath,_,e.opts.jsonPointers),e.opts.v5&&(f.dataPathArr[m]=e.util.toQuotedString(_));var G=e.validate(f);if(e.util.varOccurences(G,g)<2){G=e.util.varReplace(G,g,q);var ie=q}else{var ie=g;n+=" var "+g+" = "+q+"; "}if(te)n+=" "+G+" ";else{if($&&$[_]){n+=" if ("+ie+" === undefined) { valid"+f.level+" = false; ";var W=e.errorPath,V=l,ne=e.util.escapeQuotes(_);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(W,_,e.opts.jsonPointers)),l=e.errSchemaPath+"/required";var z=z||[];z.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+ne+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+ne+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var U=n;n=z.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+U+"]; return false; ":" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=V,e.errorPath=W,n+=" } else { "}else n+=c?" if ("+ie+" === undefined) { valid"+f.level+" = true; } else { ":" if ("+ie+" !== undefined) { ";n+=" "+G+" } "}}c&&(n+=" if (valid"+f.level+") { ",p+="}")}}var re=A;if(re)for(var P,oe=-1,se=re.length-1;se>oe;){P=re[oe+=1];var Z=w[P];if(e.util.schemaHasRules(Z,e.RULES.all)){f.schema=Z,f.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(P),f.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(P),n+=" for (var key"+r+" in "+h+") { if ("+e.usePattern(P)+".test(key"+r+")) { ",f.errorPath=e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers);var q=h+"[key"+r+"]";e.opts.v5&&(f.dataPathArr[m]="key"+r);var G=e.validate(f);n+=e.util.varOccurences(G,g)<2?" "+e.util.varReplace(G,g,q)+" ":" var "+g+" = "+q+"; "+G+" ",c&&(n+=" if (!valid"+f.level+") break; "),n+=" } ",c&&(n+=" else valid"+f.level+" = true; "),n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}}if(e.opts.v5){var ae=k;if(ae)for(var I,le=-1,ce=ae.length-1;ce>le;){I=ae[le+=1];var he=D[I],Z=he.schema;if(e.util.schemaHasRules(Z,e.RULES.all)){f.schema=Z,f.schemaPath=e.schemaPath+".patternGroups"+e.util.getProperty(I)+".schema",f.errSchemaPath=e.errSchemaPath+"/patternGroups/"+e.util.escapeFragment(I)+"/schema",n+=" var pgPropCount"+r+" = 0; for (var key"+r+" in "+h+") { if ("+e.usePattern(I)+".test(key"+r+")) { pgPropCount"+r+"++; ",f.errorPath=e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers);var q=h+"[key"+r+"]";e.opts.v5&&(f.dataPathArr[m]="key"+r);var G=e.validate(f);n+=e.util.varOccurences(G,g)<2?" "+e.util.varReplace(G,g,q)+" ":" var "+g+" = "+q+"; "+G+" ",c&&(n+=" if (!valid"+f.level+") break; "),n+=" } ",c&&(n+=" else valid"+f.level+" = true; "),n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}");var de=he.minimum,ue=he.maximum;if(void 0!==de||void 0!==ue){n+=" var "+d+" = true; ";var V=l;if(void 0!==de){var fe=de,pe="minimum",me="less";n+=" "+d+" = pgPropCount"+r+" >= "+de+"; ",l=e.errSchemaPath+"/patternGroups/minimum",n+=" if (!"+d+") { ";var z=z||[];z.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"patternGroups")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { reason: '"+pe+"', limit: "+fe+", pattern: '"+e.util.escapeQuotes(I)+"' } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have "+me+" than "+fe+' properties matching pattern "'+e.util.escapeQuotes(I)+"\"' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var U=n;n=z.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+U+"]; return false; ":" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",void 0!==ue&&(n+=" else ")}if(void 0!==ue){var fe=ue,pe="maximum",me="more";n+=" "+d+" = pgPropCount"+r+" <= "+ue+"; ",l=e.errSchemaPath+"/patternGroups/maximum",n+=" if (!"+d+") { ";var z=z||[];z.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"patternGroups")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { reason: '"+pe+"', limit: "+fe+", pattern: '"+e.util.escapeQuotes(I)+"' } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have "+me+" than "+fe+' properties matching pattern "'+e.util.escapeQuotes(I)+"\"' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var U=n;n=z.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+U+"]; return false; ":" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } "}l=V,c&&(n+=" if ("+d+") { ",p+="}")}}}}return c&&(n+=" "+p+" if ("+u+" == errors) {"),n=e.util.cleanUpCode(n)}},{}],34:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n=" ",r=e.dataLevel,o=e.schema[t],s=e.errSchemaPath+"/"+t,a=!e.opts.allErrors,l="data"+(r||"");if("#"==o||"#/"==o)e.isRoot?(n+=" if (! validate("+l+", (dataPath || '')",'""'!=e.errorPath&&(n+=" + "+e.errorPath),n+=") ) { if (vErrors === null) vErrors = validate.errors; else vErrors = vErrors.concat(validate.errors); errors = vErrors.length; } ",a&&(n+=" else { ")):(n+=" if (! root.refVal[0]("+l+", (dataPath || '')",'""'!=e.errorPath&&(n+=" + "+e.errorPath),n+=") ) { if (vErrors === null) vErrors = root.refVal[0].errors; else vErrors = vErrors.concat(root.refVal[0].errors); errors = vErrors.length; } ",a&&(n+=" else { "));else{var c=e.resolveRef(e.baseId,o,e.isRoot);if(void 0===c){var h="can't resolve reference "+o+" from id "+e.baseId;if("fail"==e.opts.missingRefs){ -console.log(h);var d=d||[];d.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"$ref")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+s+"\" , params: { ref: '"+e.util.escapeQuotes(o)+"' } ",e.opts.messages!==!1&&(n+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(o)+"' "),e.opts.verbose&&(n+=" , schema: "+e.util.toQuotedString(o)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),n+=" } "):n+=" {} ";var u=n;n=d.pop(),n+=!e.compositeRule&&a?" validate.errors = ["+u+"]; return false; ":" var err = "+u+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a&&(n+=" if (false) { ")}else{if("ignore"!=e.opts.missingRefs){var f=new Error(h);throw f.missingRef=e.resolve.url(e.baseId,o),f.missingSchema=e.resolve.normalizeId(e.resolve.fullPath(f.missingRef)),f}console.log(h),a&&(n+=" if (true) { ")}}else if("string"==typeof c)n+=" if (! "+c+"("+l+", (dataPath || '')",'""'!=e.errorPath&&(n+=" + "+e.errorPath),n+=") ) { if (vErrors === null) vErrors = "+c+".errors; else vErrors = vErrors.concat("+c+".errors); errors = vErrors.length; } ",a&&(n+=" else { ");else{var p=e.util.copy(e);p.level++,p.schema=c.schema,p.schemaPath="",p.errSchemaPath=o;var m=e.validate(p).replace(/validate\.schema/g,c.code);n+=" "+m+" ",a&&(n+=" if (valid"+p.level+") { ")}}return n}},{}],35:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u=e.opts.v5&&s.$data,f=u?e.util.getData(s.$data,o,e.dataPathArr):s;if(u&&(n+=" var schema"+r+" = "+f+"; ",f="schema"+r),!u)if(s.lengthv;){g=m[v+=1];var A=e.schema.properties[g];A&&e.util.schemaHasRules(A,e.RULES.all)||(p[p.length]=g)}}else var p=s;if(u||p.length){var y=e.errorPath,C=u||p.length>=e.opts.loopRequired;if(c)if(n+=" var missing"+r+"; ",C){u||(n+=" var schema"+r+" = validate.schema"+a+"; ");var E="i"+r,b="schema"+r+"["+E+"]",F="' + "+b+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(y,b,e.opts.jsonPointers)),n+=" var "+d+" = true; ",u&&(n+=" if (schema"+r+" === undefined) "+d+" = true; else if (!Array.isArray(schema"+r+")) "+d+" = false; else {"),n+=" for (var "+E+" = 0; "+E+" < schema"+r+".length; "+E+"++) { "+d+" = "+h+"[schema"+r+"["+E+"]] !== undefined; if (!"+d+") break; } ",u&&(n+=" } "),n+=" if (!"+d+") { ";var x=x||[];x.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var S=n;n=x.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+S+"]; return false; ":" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { "}else{n+=" if ( ";var $=p;if($)for(var D,E=-1,k=$.length-1;k>E;){D=$[E+=1],E&&(n+=" || ");var B=e.util.getProperty(D);n+=" ( "+h+B+" === undefined && (missing"+r+" = "+e.util.toQuotedString(e.opts.jsonPointers?D:B)+") ) "}n+=") { ";var b="missing"+r,F="' + "+b+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(y,b,!0):y+" + "+b);var x=x||[];x.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var S=n;n=x.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+S+"]; return false; ":" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { "}else if(C){u||(n+=" var schema"+r+" = validate.schema"+a+"; ");var E="i"+r,b="schema"+r+"["+E+"]",F="' + "+b+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(y,b,e.opts.jsonPointers)),u&&(n+=" if (schema"+r+" && !Array.isArray(schema"+r+")) { var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (schema"+r+" !== undefined) { "),n+=" for (var "+E+" = 0; "+E+" < schema"+r+".length; "+E+"++) { if ("+h+"[schema"+r+"["+E+"]] === undefined) { var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ",u&&(n+=" } ")}else{var _=p;if(_)for(var g,E=-1,L=_.length-1;L>E;){g=_[E+=1];var B=e.util.getProperty(g),F=e.util.escapeQuotes(g);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(y,g,e.opts.jsonPointers)),n+=" if ("+h+B+" === undefined) { var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "}}e.errorPath=y}else c&&(n+=" if (true) {");return n}},{}],36:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u="errs__"+r,f=e.util.copy(e),p="";f.level++;var m,g="ifPassed"+e.level;n+="var "+g+";";var v=s;if(v)for(var w,A=-1,y=v.length-1;y>A;){if(w=v[A+=1],A&&!m&&(n+=" if (!"+g+") { ",p+="}"),w["if"]&&e.util.schemaHasRules(w["if"],e.RULES.all)){n+=" var "+u+" = errors; ";var C=e.compositeRule;if(e.compositeRule=f.compositeRule=!0,f.createErrors=!1,f.schema=w["if"],f.schemaPath=a+"["+A+"].if",f.errSchemaPath=l+"/"+A+"/if",n+=" "+e.validate(f)+" ",f.createErrors=!0,e.compositeRule=f.compositeRule=C,n+=" "+g+" = valid"+f.level+"; if ("+g+") { ","boolean"==typeof w.then){if(w.then===!1){var E=E||[];E.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"switch")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { caseIndex: '+A+" } ",e.opts.messages!==!1&&(n+=" , message: 'should pass \"switch\" keyword validation' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var b=n;n=E.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+b+"]; return false; ":" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}n+=" var valid"+f.level+" = "+w.then+"; "}else f.schema=w.then,f.schemaPath=a+"["+A+"].then",f.errSchemaPath=l+"/"+A+"/then",n+=" "+e.validate(f)+" ";n+=" } else { errors = "+u+"; if (vErrors !== null) { if ("+u+") vErrors.length = "+u+"; else vErrors = null; } } "}else if(n+=" "+g+" = true; ","boolean"==typeof w.then){if(w.then===!1){var E=E||[];E.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"switch")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { caseIndex: '+A+" } ",e.opts.messages!==!1&&(n+=" , message: 'should pass \"switch\" keyword validation' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var b=n;n=E.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+b+"]; return false; ":" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}n+=" var valid"+f.level+" = "+w.then+"; "}else f.schema=w.then,f.schemaPath=a+"["+A+"].then",f.errSchemaPath=l+"/"+A+"/then",n+=" "+e.validate(f)+" ";m=w["continue"]}return n+=""+p+"var "+d+" = valid"+f.level+"; ",n=e.util.cleanUpCode(n)}},{}],37:[function(e,t,i){"use strict";t.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u=e.opts.v5&&s.$data,f=u?e.util.getData(s.$data,o,e.dataPathArr):s;if(u&&(n+=" var schema"+r+" = "+f+"; ",f="schema"+r),(s||u)&&e.opts.uniqueItems!==!1){u&&(n+=" var "+d+"; if ("+f+" === false || "+f+" === undefined) "+d+" = true; else if (typeof "+f+" != 'boolean') "+d+" = false; else { "),n+=" var "+d+" = true; if ("+h+".length > 1) { var i = "+h+".length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal("+h+"[i], "+h+"[j])) { "+d+" = false; break outer; } } } } ",u&&(n+=" } "),n+=" if (!"+d+") { ";var p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"uniqueItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { i: i, j: j } ',e.opts.messages!==!1&&(n+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(n+=" , schema: ",n+=u?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var m=n;n=p.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(n+=" else { ")}else c&&(n+=" if (true) { ");return n}},{}],38:[function(e,t,i){"use strict";t.exports=function(e,t){function i(e){for(var t=0;tv;)if(g=m[v+=1],i(g)){if(g.type&&(r+=" if ("+e.util.checkDataType(g.type,l)+") { "),e.opts.useDefaults&&!e.compositeRule)if("object"==g.type&&e.schema.properties){var A=e.schema.properties,y=Object.keys(A),C=y;if(C)for(var E,b=-1,F=C.length-1;F>b;){E=C[b+=1];var x=A[E];if(void 0!==x["default"]){var S=l+e.util.getProperty(E);r+=" if ("+S+" === undefined) "+S+" = "+e.useDefault(x["default"])+"; "}}}else if("array"==g.type&&Array.isArray(e.schema.items)){var $=e.schema.items;if($)for(var x,D=-1,k=$.length-1;k>D;)if(x=$[D+=1],void 0!==x["default"]){var S=l+"["+D+"]";r+=" if ("+S+" === undefined) "+S+" = "+e.useDefault(x["default"])+"; "}}var B=g.rules;if(B)for(var _,L=-1,R=B.length-1;R>L;)if(_=B[L+=1],n(_)){if(_.custom){var A=e.schema[_.keyword],T=e.useCustomRule(_,A,e.schema,e),P=T.code+".errors",M=e.schemaPath+"."+_.keyword,O=e.errSchemaPath+"/"+_.keyword,j="errs"+s,D="i"+s,I="ruleErr"+s,N=_.definition,W=N.inline,H=N.macro;if(W||H||(r+=""+P+" = null;"),r+="var "+j+" = errors;",W&&N.statements)r+=" "+T.validate;else if(H){var V=e.util.copy(e);V.level++,V.schema=T.validate,V.schemaPath="";var z=e.compositeRule;e.compositeRule=V.compositeRule=!0;var U=e.validate(V).replace(/validate\.schema/g,T.code);e.compositeRule=V.compositeRule=z,r+=" "+U}r+="if (! ",W?r+=N.statements?" valid"+s+" ":" ("+T.validate+") ":H?r+=" valid"+V.level+" ":(r+=" "+T.code+".call(self ",N.compile?r+=" , "+l+" ":(r+=" , validate.schema"+M+" , "+l+" ",T.validate.length>2&&(r+=" , validate.schema"+e.schemaPath+" ")),r+=" ) "),r+=") { ",c=_.keyword;var K=K||[];K.push(r),r="";var K=K||[];K.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(c||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+O+"\" , params: { keyword: '"+_.keyword+"' } ",e.opts.messages!==!1&&(r+=" , message: 'should pass \""+_.keyword+"\" keyword validation' "),e.opts.verbose&&(r+=" , schema: validate.schema"+M+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),r+=" } "):r+=" {} ";var q=r;r=K.pop(),r+=!e.compositeRule&&d?" validate.errors = ["+q+"]; return false; ":" var err = "+q+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";var G=r;r=K.pop(),W?N.errors?"full"!=N.errors&&(r+=" for (var "+D+"="+j+"; "+D+"a;a++)r(s[a]);for(a=0;l>a;a++)i(e,s[a],t)}else s&&r(s),i(e,s,t)}this.RULES.keywords[e]=!0,this.RULES.all[e]=!0}},{}],40:[function(e,t,i){t.exports={id:"http://json-schema.org/draft-04/schema#",$schema:"http://json-schema.org/draft-04/schema#",description:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},positiveInteger:{type:"integer",minimum:0},positiveIntegerDefault0:{allOf:[{$ref:"#/definitions/positiveInteger"},{"default":0}]},simpleTypes:{"enum":["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},minItems:1,uniqueItems:!0}},type:"object",properties:{id:{type:"string",format:"uri"},$schema:{type:"string",format:"uri"},title:{type:"string"},description:{type:"string"},"default":{},multipleOf:{type:"number",minimum:0,exclusiveMinimum:!0},maximum:{type:"number"},exclusiveMaximum:{type:"boolean","default":!1},minimum:{type:"number"},exclusiveMinimum:{type:"boolean","default":!1},maxLength:{$ref:"#/definitions/positiveInteger"},minLength:{$ref:"#/definitions/positiveIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{anyOf:[{type:"boolean"},{$ref:"#"}],"default":{}},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],"default":{}},maxItems:{$ref:"#/definitions/positiveInteger"},minItems:{$ref:"#/definitions/positiveIntegerDefault0"},uniqueItems:{type:"boolean","default":!1},maxProperties:{$ref:"#/definitions/positiveInteger"},minProperties:{$ref:"#/definitions/positiveIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{anyOf:[{type:"boolean"},{$ref:"#"}],"default":{}},definitions:{type:"object",additionalProperties:{$ref:"#"},"default":{}},properties:{type:"object",additionalProperties:{$ref:"#"},"default":{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},"default":{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},"enum":{type:"array",minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},dependencies:{exclusiveMaximum:["maximum"],exclusiveMinimum:["minimum"]},"default":{}}},{}],41:[function(e,t,i){t.exports={id:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json#",$schema:"http://json-schema.org/draft-04/schema#",description:"Core schema meta-schema (v5 proposals)",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},positiveInteger:{type:"integer",minimum:0},positiveIntegerDefault0:{allOf:[{$ref:"#/definitions/positiveInteger"},{"default":0}]},simpleTypes:{"enum":["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},minItems:1,uniqueItems:!0},$data:{type:"object",required:["$data"],properties:{$data:{type:"string",format:"relative-json-pointer"}},additionalProperties:!1}},type:"object",properties:{id:{type:"string",format:"uri"},$schema:{type:"string",format:"uri"},title:{type:"string"},description:{type:"string"},"default":{},multipleOf:{anyOf:[{type:"number",minimum:0,exclusiveMinimum:!0},{$ref:"#/definitions/$data"}]},maximum:{anyOf:[{type:"number"},{$ref:"#/definitions/$data"}]},exclusiveMaximum:{anyOf:[{type:"boolean","default":!1},{$ref:"#/definitions/$data"}]},minimum:{anyOf:[{type:"number"},{$ref:"#/definitions/$data"}]},exclusiveMinimum:{anyOf:[{type:"boolean","default":!1},{$ref:"#/definitions/$data"}]},maxLength:{anyOf:[{$ref:"#/definitions/positiveInteger"},{$ref:"#/definitions/$data"}]},minLength:{anyOf:[{$ref:"#/definitions/positiveIntegerDefault0"},{$ref:"#/definitions/$data"}]},pattern:{anyOf:[{type:"string",format:"regex"},{$ref:"#/definitions/$data"}]},additionalItems:{anyOf:[{type:"boolean"},{$ref:"#"},{$ref:"#/definitions/$data"}],"default":{}},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],"default":{}},maxItems:{anyOf:[{$ref:"#/definitions/positiveInteger"},{$ref:"#/definitions/$data"}]},minItems:{anyOf:[{$ref:"#/definitions/positiveIntegerDefault0"},{$ref:"#/definitions/$data"}]},uniqueItems:{anyOf:[{type:"boolean","default":!1},{$ref:"#/definitions/$data"}]},maxProperties:{anyOf:[{$ref:"#/definitions/positiveInteger"},{$ref:"#/definitions/$data"}]},minProperties:{anyOf:[{$ref:"#/definitions/positiveIntegerDefault0"},{$ref:"#/definitions/$data"}]},required:{anyOf:[{$ref:"#/definitions/stringArray"},{$ref:"#/definitions/$data"}]},additionalProperties:{anyOf:[{type:"boolean"},{$ref:"#"},{$ref:"#/definitions/$data"}],"default":{}},definitions:{type:"object",additionalProperties:{$ref:"#"},"default":{}},properties:{type:"object",additionalProperties:{$ref:"#"},"default":{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},"default":{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},"enum":{anyOf:[{type:"array",minItems:1,uniqueItems:!0},{$ref:"#/definitions/$data"}]},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"},format:{anyOf:[{type:"string"},{$ref:"#/definitions/$data"}]},formatMaximum:{anyOf:[{type:"string"},{$ref:"#/definitions/$data"}]},formatMinimum:{anyOf:[{type:"string"},{$ref:"#/definitions/$data"}]},exclusiveFormatMaximum:{anyOf:[{type:"boolean","default":!1},{$ref:"#/definitions/$data"}]},exclusiveFormatMinimum:{anyOf:[{type:"boolean","default":!1},{$ref:"#/definitions/$data"}]},constant:{anyOf:[{},{$ref:"#/definitions/$data"}]},contains:{$ref:"#"},patternGroups:{type:"object",additionalProperties:{type:"object",required:["schema"],properties:{maximum:{anyOf:[{$ref:"#/definitions/positiveInteger"},{$ref:"#/definitions/$data"}]},minimum:{anyOf:[{$ref:"#/definitions/positiveIntegerDefault0"},{$ref:"#/definitions/$data"}]},schema:{$ref:"#"}},additionalProperties:!1},"default":{}},"switch":{type:"array",items:{required:["then"],properties:{"if":{$ref:"#"},then:{anyOf:[{type:"boolean"},{$ref:"#"}]},"continue":{type:"boolean"}},additionalProperties:!1,dependencies:{"continue":["if"]}}}},dependencies:{exclusiveMaximum:["maximum"],exclusiveMinimum:["minimum"],formatMaximum:["format"],formatMinimum:["format"],exclusiveFormatMaximum:["formatMaximum"],exclusiveFormatMinimum:["formatMinimum"]},"default":{}}},{}],42:[function(e,t,i){"use strict";function n(t){if(t.opts.meta!==!1){var i=e("./refs/json-schema-v5.json");t.addMetaSchema(i,o)}t.addKeyword("constant",{inline:e("./dotjs/constant"),statements:!0,errors:"full"}),t.addKeyword("contains",{type:"array",macro:r});var n=e("./dotjs/_formatLimit");t.addKeyword("formatMaximum",{type:"string",inline:n,statements:!0,errors:"full"}),t.addKeyword("formatMinimum",{type:"string",inline:n,statements:!0,errors:"full"}),t.addKeyword("exclusiveFormatMaximum"),t.addKeyword("exclusiveFormatMinimum"),t.addKeyword("patternGroups"),t.addKeyword("switch",{inline:e("./dotjs/switch"),statements:!0,errors:"full"})}function r(e){return{not:{items:{not:e}}}}var o="https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json";t.exports={enable:n,META_SCHEMA_ID:o}},{"./dotjs/_formatLimit":17,"./dotjs/constant":24,"./dotjs/switch":36,"./refs/json-schema-v5.json":41}],43:[function(e,t,i){var n="undefined"!=typeof JSON?JSON:e("jsonify");t.exports=function(e,t){t||(t={}),"function"==typeof t&&(t={cmp:t});var i=t.space||"";"number"==typeof i&&(i=Array(i+1).join(" "));var s="boolean"==typeof t.cycles?t.cycles:!1,a=t.replacer||function(e,t){return t},l=t.cmp&&function(e){return function(t){return function(i,n){var r={key:i,value:t[i]},o={key:n,value:t[n]};return e(r,o)}}}(t.cmp),c=[];return function h(e,t,d,u){var f=i?"\n"+new Array(u+1).join(i):"",p=i?": ":":";if(d&&d.toJSON&&"function"==typeof d.toJSON&&(d=d.toJSON()),d=a.call(e,t,d),void 0!==d){if("object"!=typeof d||null===d)return n.stringify(d);if(r(d)){for(var m=[],g=0;g="0"&&"9">=r;)t+=r,c();if("."===r)for(t+=".";c()&&r>="0"&&"9">=r;)t+=r;if("e"===r||"E"===r)for(t+=r,c(),("-"===r||"+"===r)&&(t+=r,c());r>="0"&&"9">=r;)t+=r,c();return e=+t,isFinite(e)?e:void l("Bad number")},d=function(){var e,t,i,n="";if('"'===r)for(;c();){if('"'===r)return c(),n;if("\\"===r)if(c(),"u"===r){for(i=0,t=0;4>t&&(e=parseInt(c(),16),isFinite(e));t+=1)i=16*i+e;n+=String.fromCharCode(i)}else{if("string"!=typeof a[r])break;n+=a[r]}else n+=r}l("Bad string")},u=function(){for(;r&&" ">=r;)c()},f=function(){switch(r){case"t":return c("t"),c("r"),c("u"),c("e"),!0;case"f":return c("f"),c("a"),c("l"),c("s"),c("e"),!1;case"n":return c("n"),c("u"),c("l"),c("l"),null}l("Unexpected '"+r+"'")},p=function(){var e=[];if("["===r){if(c("["),u(),"]"===r)return c("]"),e;for(;r;){if(e.push(s()),u(),"]"===r)return c("]"),e;c(","),u()}}l("Bad array")},m=function(){var e,t={};if("{"===r){if(c("{"),u(),"}"===r)return c("}"),t;for(;r;){if(e=d(),u(),c(":"),Object.hasOwnProperty.call(t,e)&&l('Duplicate key "'+e+'"'),t[e]=s(),u(),"}"===r)return c("}"),t;c(","),u()}}l("Bad object")};s=function(){switch(u(),r){case"{":return m();case"[":return p();case'"':return d();case"-":return h();default:return r>="0"&&"9">=r?h():f()}},t.exports=function(e,t){var i;return o=e,n=0,r=" ",i=s(),u(),r&&l("Syntax error"),"function"==typeof t?function a(e,i){var n,r,o=e[i];if(o&&"object"==typeof o)for(n in o)Object.prototype.hasOwnProperty.call(o,n)&&(r=a(o,n),void 0!==r?o[n]=r:delete o[n]);return t.call(e,i,o)}({"":i},""):i}},{}],46:[function(e,t,i){function n(e){return l.lastIndex=0,l.test(e)?'"'+e.replace(l,function(e){var t=c[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function r(e,t){var i,l,c,h,d,u=o,f=t[e];switch(f&&"object"==typeof f&&"function"==typeof f.toJSON&&(f=f.toJSON(e)),"function"==typeof a&&(f=a.call(t,e,f)),typeof f){case"string":return n(f);case"number":return isFinite(f)?String(f):"null";case"boolean":case"null":return String(f);case"object":if(!f)return"null";if(o+=s,d=[],"[object Array]"===Object.prototype.toString.apply(f)){for(h=f.length,i=0;h>i;i+=1)d[i]=r(i,f)||"null";return c=0===d.length?"[]":o?"[\n"+o+d.join(",\n"+o)+"\n"+u+"]":"["+d.join(",")+"]",o=u,c}if(a&&"object"==typeof a)for(h=a.length,i=0;h>i;i+=1)l=a[i],"string"==typeof l&&(c=r(l,f),c&&d.push(n(l)+(o?": ":":")+c));else for(l in f)Object.prototype.hasOwnProperty.call(f,l)&&(c=r(l,f),c&&d.push(n(l)+(o?": ":":")+c));return c=0===d.length?"{}":o?"{\n"+o+d.join(",\n"+o)+"\n"+u+"}":"{"+d.join(",")+"}",o=u,c}}var o,s,a,l=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,c={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};t.exports=function(e,t,i){var n;if(o="",s="","number"==typeof i)for(n=0;i>n;n+=1)s+=" ";else"string"==typeof i&&(s=i);if(a=t,t&&"function"!=typeof t&&("object"!=typeof t||"number"!=typeof t.length))throw new Error("JSON.stringify");return r("",{"":e})}},{}],ajv:[function(e,t,i){"use strict";function n(e){return p.test(e)}function r(t){function i(e,t){var i;if("string"==typeof e){if(i=A(e),!i)throw new Error('no schema with key or ref "'+e+'"')}else{var n=E(e);i=n.validate||b(n)}var r=i(t);return k.errors=i.errors,r}function m(e){var t=E(e);return t.validate||b(t)}function g(e,t,i,n){if(Array.isArray(e))for(var r=0;r=0},n.prototype.canRedo=function(){return this.indexthis.results.length-1&&(t=0),this._setActiveResult(t,e)}},n.prototype.previous=function(e){if(void 0!=this.results){var t=this.results.length-1,i=void 0!=this.resultIndex?this.resultIndex-1:t;0>i&&(i=t),this._setActiveResult(i,e)}},n.prototype._setActiveResult=function(e,t){if(this.activeResult){var i=this.activeResult.node,n=this.activeResult.elem;"field"==n?delete i.searchFieldActive:delete i.searchValueActive,i.updateDom()}if(!this.results||!this.results[e])return this.resultIndex=void 0,void(this.activeResult=void 0);this.resultIndex=e;var r=this.results[this.resultIndex].node,o=this.results[this.resultIndex].elem;"field"==o?r.searchFieldActive=!0:r.searchValueActive=!0,this.activeResult=this.results[this.resultIndex],r.updateDom(),r.scrollTo(function(){t&&r.focus(o)})},n.prototype._clearDelay=function(){void 0!=this.timeout&&(clearTimeout(this.timeout),delete this.timeout)},n.prototype._onDelayedSearch=function(e){this._clearDelay();var t=this;this.timeout=setTimeout(function(e){t._onSearch()},this.delay)},n.prototype._onSearch=function(e){this._clearDelay();var t=this.dom.search.value,i=t.length>0?t:void 0;if(i!=this.lastText||e)if(this.lastText=i,this.results=this.editor.search(i),this._setActiveResult(void 0),void 0!=i){var n=this.results.length;switch(n){case 0:this.dom.results.innerHTML="no results";break;case 1:this.dom.results.innerHTML="1 result";break;default:this.dom.results.innerHTML=n+" results"}}else this.dom.results.innerHTML=""},n.prototype._onKeyDown=function(e){var t=e.which;27==t?(this.dom.search.value="",this._onSearch(),e.preventDefault(),e.stopPropagation()):13==t&&(e.ctrlKey?this._onSearch(!0):e.shiftKey?this.previous():this.next(),e.preventDefault(),e.stopPropagation())},n.prototype._onKeyUp=function(e){var t=e.keyCode;27!=t&&13!=t&&this._onDelayedSearch(e)},n.prototype.clear=function(){this.dom.search.value="",this._onSearch()},e.exports=n},function(e,t,i){function n(e,t){function i(e,t,r){r.forEach(function(r){if("separator"==r.type){var o=document.createElement("div");o.className="jsoneditor-separator",a=document.createElement("li"),a.appendChild(o),e.appendChild(a)}else{var s={},a=document.createElement("li");e.appendChild(a);var l=document.createElement("button");if(l.className=r.className,s.button=l,r.title&&(l.title=r.title),r.click&&(l.onclick=function(){n.hide(),r.click()}),a.appendChild(l),r.submenu){var c=document.createElement("div");c.className="jsoneditor-icon",l.appendChild(c),l.appendChild(document.createTextNode(r.text));var h;if(r.click){l.className+=" jsoneditor-default";var d=document.createElement("button");s.buttonExpand=d,d.className="jsoneditor-expand",d.innerHTML='
',a.appendChild(d),r.submenuTitle&&(d.title=r.submenuTitle),h=d}else{var u=document.createElement("div");u.className="jsoneditor-expand",l.appendChild(u),h=l}h.onclick=function(){n._onExpandItem(s),h.focus()};var f=[];s.subItems=f;var p=document.createElement("ul");s.ul=p,p.className="jsoneditor-menu",p.style.height="0",a.appendChild(p),i(p,f,r.submenu)}else l.innerHTML='
'+r.text;t.push(s)}})}this.dom={};var n=this,r=this.dom;this.anchor=void 0,this.items=e,this.eventListeners={},this.selection=void 0,this.onClose=t?t.close:void 0;var o=document.createElement("div");o.className="jsoneditor-contextmenu-root",r.root=o;var s=document.createElement("div");s.className="jsoneditor-contextmenu",r.menu=s,o.appendChild(s);var a=document.createElement("ul");a.className="jsoneditor-menu",s.appendChild(a),r.list=a,r.items=[];var l=document.createElement("button");r.focusButton=l;var c=document.createElement("li");c.style.overflow="hidden",c.style.height="0",c.appendChild(l),a.appendChild(c),i(a,this.dom.items,e),this.maxHeight=0,e.forEach(function(t){var i=24*(e.length+(t.submenu?t.submenu.length:0));n.maxHeight=Math.max(n.maxHeight,i)})}var r=i(3);n.prototype._getVisibleButtons=function(){var e=[],t=this;return this.dom.items.forEach(function(i){e.push(i.button),i.buttonExpand&&e.push(i.buttonExpand),i.subItems&&i==t.expandedItem&&i.subItems.forEach(function(t){e.push(t.button),t.buttonExpand&&e.push(t.buttonExpand)})}),e},n.visibleMenu=void 0,n.prototype.show=function(e,t){this.hide();var i=!0;if(t){var o=e.getBoundingClientRect(),s=t.getBoundingClientRect();o.bottom+this.maxHeights.top&&(i=!1)}if(i){var a=e.offsetHeight;this.dom.menu.style.left="0px",this.dom.menu.style.top=a+"px",this.dom.menu.style.bottom=""}else this.dom.menu.style.left="0px",this.dom.menu.style.top="",this.dom.menu.style.bottom="0px";var l=e.parentNode;l.insertBefore(this.dom.root,l.firstChild);var c=this,h=this.dom.list;this.eventListeners.mousedown=r.addEventListener(window,"mousedown",function(e){var t=e.target;t==h||c._isChildOf(t,h)||(c.hide(),e.stopPropagation(),e.preventDefault())}),this.eventListeners.keydown=r.addEventListener(window,"keydown",function(e){c._onKeyDown(e)}),this.selection=r.getSelection(),this.anchor=e,setTimeout(function(){c.dom.focusButton.focus()},0),n.visibleMenu&&n.visibleMenu.hide(),n.visibleMenu=this},n.prototype.hide=function(){this.dom.root.parentNode&&(this.dom.root.parentNode.removeChild(this.dom.root),this.onClose&&this.onClose());for(var e in this.eventListeners)if(this.eventListeners.hasOwnProperty(e)){var t=this.eventListeners[e];t&&r.removeEventListener(window,e,t),delete this.eventListeners[e]}n.visibleMenu==this&&(n.visibleMenu=void 0)},n.prototype._onExpandItem=function(e){var t=this,i=e==this.expandedItem,n=this.expandedItem;if(n&&(n.ul.style.height="0",n.ul.style.padding="",setTimeout(function(){t.expandedItem!=n&&(n.ul.style.display="",r.removeClassName(n.ul.parentNode,"jsoneditor-selected"))},300),this.expandedItem=void 0),!i){var o=e.ul;o.style.display="block";o.clientHeight;setTimeout(function(){t.expandedItem==e&&(o.style.height=24*o.childNodes.length+"px",o.style.padding="5px 10px")},0),r.addClassName(o.parentNode,"jsoneditor-selected"),this.expandedItem=e}},n.prototype._onKeyDown=function(e){var t,i,n,o,s=e.target,a=e.which,l=!1;27==a?(this.selection&&r.setSelection(this.selection),this.anchor&&this.anchor.focus(),this.hide(),l=!0):9==a?e.shiftKey?(t=this._getVisibleButtons(),i=t.indexOf(s),0==i&&(t[t.length-1].focus(),l=!0)):(t=this._getVisibleButtons(),i=t.indexOf(s),i==t.length-1&&(t[0].focus(),l=!0)):37==a?("jsoneditor-expand"==s.className&&(t=this._getVisibleButtons(),i=t.indexOf(s),n=t[i-1],n&&n.focus()),l=!0):38==a?(t=this._getVisibleButtons(),i=t.indexOf(s),n=t[i-1],n&&"jsoneditor-expand"==n.className&&(n=t[i-2]),n||(n=t[t.length-1]),n&&n.focus(),l=!0):39==a?(t=this._getVisibleButtons(),i=t.indexOf(s),o=t[i+1],o&&"jsoneditor-expand"==o.className&&o.focus(),l=!0):40==a&&(t=this._getVisibleButtons(),i=t.indexOf(s),o=t[i+1],o&&"jsoneditor-expand"==o.className&&(o=t[i+2]),o||(o=t[0]),o&&(o.focus(),l=!0),l=!0),l&&(e.stopPropagation(),e.preventDefault())},n.prototype._isChildOf=function(e,t){for(var i=e.parentNode;i;){if(i==t)return!0;i=i.parentNode}return!1},e.exports=n},function(e,t,i){function n(e,t){this.editor=e,this.dom={},this.expanded=!1,t&&t instanceof Object?(this.setField(t.field,t.fieldEditable),this.setValue(t.value,t.type)):(this.setField(""),this.setValue(null)),this._debouncedOnChangeValue=s.debounce(this._onChangeValue.bind(this),n.prototype.DEBOUNCE_INTERVAL),this._debouncedOnChangeField=s.debounce(this._onChangeField.bind(this),n.prototype.DEBOUNCE_INTERVAL)}var r=i(8),o=i(13),s=i(3);n.prototype.DEBOUNCE_INTERVAL=150,n.prototype._updateEditability=function(){if(this.editable={field:!0,value:!0},this.editor&&(this.editable.field="tree"===this.editor.options.mode,this.editable.value="view"!==this.editor.options.mode,("tree"===this.editor.options.mode||"form"===this.editor.options.mode)&&"function"==typeof this.editor.options.onEditable)){var e=this.editor.options.onEditable({field:this.field,value:this.value,path:this.getFieldsPath()});"boolean"==typeof e?(this.editable.field=e,this.editable.value=e):("boolean"==typeof e.field&&(this.editable.field=e.field),"boolean"==typeof e.value&&(this.editable.value=e.value))}},n.prototype.getFieldsPath=function(){for(var e=this,t=[];e;){var i=void 0!=e.field?e.field:e.index;void 0!==i&&t.unshift(i),e=e.parent}return t},n.prototype.findNode=function(e){for(var t=s.parsePath(e),i=this;i&&t.length>0;){var n=t.shift();if("number"==typeof n){if("array"!==i.type)throw new Error("Cannot get child node at index "+n+": node is no array");i=i.childs[n]}else{if("object"!==i.type)throw new Error("Cannot get child node "+n+": node is no object");i=i.childs.filter(function(e){return e.field===n})[0]}}return i},n.prototype.findParents=function(){for(var e=[],t=this.parent;t;)e.unshift(t),t=t.parent;return e},n.prototype.setError=function(e,t){this.getDom(),this.error=e;var i=this.dom.tdError;if(e){i||(i=document.createElement("td"),this.dom.tdError=i,this.dom.tdValue.parentNode.appendChild(i));var n=document.createElement("div");n.className="jsoneditor-popover jsoneditor-right",n.appendChild(document.createTextNode(e.message));var r=document.createElement("button");for(r.className="jsoneditor-schema-error",r.appendChild(n),r.onmouseover=r.onfocus=function(){for(var e=["right","above","below","left"],t=0;ts;s++)i=e[s],void 0===i||i instanceof Function||(r=new n(this.editor,{value:i}),this.appendChild(r));this.value=""}else if("object"==this.type){this.childs=[];for(var l in e)e.hasOwnProperty(l)&&(i=e[l],void 0===i||i instanceof Function||(r=new n(this.editor,{field:l,value:i}),this.appendChild(r)));this.value=""}else this.childs=void 0,this.value=e;this.previousValue=this.value},n.prototype.getValue=function(){if("array"==this.type){var e=[];return this.childs.forEach(function(t){e.push(t.getValue())}),e}if("object"==this.type){var t={};return this.childs.forEach(function(e){t[e.getField()]=e.getValue()}),t}return void 0===this.value&&this._getDomValue(),this.value},n.prototype.getLevel=function(){return this.parent?this.parent.getLevel()+1:0},n.prototype.getPath=function(){var e=this.parent?this.parent.getPath():[];return e.push(this),e},n.prototype.clone=function(){var e=new n(this.editor);if(e.type=this.type,e.field=this.field,e.fieldInnerText=this.fieldInnerText,e.fieldEditable=this.fieldEditable,e.value=this.value,e.valueInnerText=this.valueInnerText,e.expanded=this.expanded,this.childs){var t=[];this.childs.forEach(function(i){var n=i.clone();n.setParent(e),t.push(n)}),e.childs=t}else e.childs=void 0;return e},n.prototype.expand=function(e){this.childs&&(this.expanded=!0,this.dom.expand&&(this.dom.expand.className="jsoneditor-expanded"),this.showChilds(),e!==!1&&this.childs.forEach(function(t){t.expand(e)}))},n.prototype.collapse=function(e){this.childs&&(this.hideChilds(),e!==!1&&this.childs.forEach(function(t){t.collapse(e)}),this.dom.expand&&(this.dom.expand.className="jsoneditor-collapsed"),this.expanded=!1)},n.prototype.showChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.dom.tr,i=t?t.parentNode:void 0;if(i){var n=this.getAppend(),r=t.nextSibling;r?i.insertBefore(n,r):i.appendChild(n),this.childs.forEach(function(e){i.insertBefore(e.getDom(),n),e.showChilds()})}}},n.prototype.hide=function(){var e=this.dom.tr,t=e?e.parentNode:void 0;t&&t.removeChild(e),this.hideChilds()},n.prototype.hideChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.getAppend();t.parentNode&&t.parentNode.removeChild(t),this.childs.forEach(function(e){e.hide()})}},n.prototype.appendChild=function(e){if(this._hasChilds()){if(e.setParent(this),e.fieldEditable="object"==this.type,"array"==this.type&&(e.index=this.childs.length),this.childs.push(e),this.expanded){var t=e.getDom(),i=this.getAppend(),n=i?i.parentNode:void 0;i&&n&&n.insertBefore(t,i),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},n.prototype.moveBefore=function(e,t){if(this._hasChilds()){var i=this.dom.tr?this.dom.tr.parentNode:void 0;if(i){var n=document.createElement("tr");n.style.height=i.clientHeight+"px",i.appendChild(n)}e.parent&&e.parent.removeChild(e),t instanceof a?this.appendChild(e):this.insertBefore(e,t),i&&i.removeChild(n)}},n.prototype.moveTo=function(e,t){if(e.parent==this){var i=this.childs.indexOf(e);t>i&&t++}var n=this.childs[t]||this.append;this.moveBefore(e,n)},n.prototype.insertBefore=function(e,t){if(this._hasChilds()){if(t==this.append)e.setParent(this),e.fieldEditable="object"==this.type,this.childs.push(e);else{var i=this.childs.indexOf(t);if(-1==i)throw new Error("Node not found");e.setParent(this),e.fieldEditable="object"==this.type,this.childs.splice(i,0,e)}if(this.expanded){var n=e.getDom(),r=t.getDom(),o=r?r.parentNode:void 0;r&&o&&o.insertBefore(n,r),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},n.prototype.insertAfter=function(e,t){if(this._hasChilds()){var i=this.childs.indexOf(t),n=this.childs[i+1];n?this.insertBefore(e,n):this.appendChild(e)}},n.prototype.search=function(e){var t,i=[],n=e?e.toLowerCase():void 0;if(delete this.searchField,delete this.searchValue,void 0!=this.field){var r=String(this.field).toLowerCase();t=r.indexOf(n),-1!=t&&(this.searchField=!0,i.push({node:this,elem:"field"})),this._updateDomField()}if(this._hasChilds()){if(this.childs){var o=[];this.childs.forEach(function(t){o=o.concat(t.search(e))}),i=i.concat(o)}if(void 0!=n){var s=!1;0==o.length?this.collapse(s):this.expand(s)}}else{if(void 0!=this.value){var a=String(this.value).toLowerCase();t=a.indexOf(n),-1!=t&&(this.searchValue=!0,i.push({node:this,elem:"value"}))}this._updateDomValue()}return i},n.prototype.scrollTo=function(e){if(!this.dom.tr||!this.dom.tr.parentNode)for(var t=this.parent,i=!1;t;)t.expand(i),t=t.parent;this.dom.tr&&this.dom.tr.parentNode&&this.editor.scrollTo(this.dom.tr.offsetTop,e)},n.focusElement=void 0,n.prototype.focus=function(e){if(n.focusElement=e,this.dom.tr&&this.dom.tr.parentNode){var t=this.dom;switch(e){case"drag":t.drag?t.drag.focus():t.menu.focus();break;case"menu":t.menu.focus();break;case"expand":this._hasChilds()?t.expand.focus():t.field&&this.fieldEditable?(t.field.focus(),s.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),s.selectContentEditable(t.value)):t.menu.focus();break;case"field":t.field&&this.fieldEditable?(t.field.focus(),s.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),s.selectContentEditable(t.value)):this._hasChilds()?t.expand.focus():t.menu.focus();break;case"value":default:t.value&&!this._hasChilds()?(t.value.focus(),s.selectContentEditable(t.value)):t.field&&this.fieldEditable?(t.field.focus(),s.selectContentEditable(t.field)):this._hasChilds()?t.expand.focus():t.menu.focus()}}},n.select=function(e){setTimeout(function(){s.selectContentEditable(e)},0)},n.prototype.blur=function(){this._getDomValue(!1),this._getDomField(!1)},n.prototype.containsNode=function(e){if(this==e)return!0;var t=this.childs;if(t)for(var i=0,n=t.length;n>i;i++)if(t[i].containsNode(e))return!0;return!1},n.prototype._move=function(e,t){if(e!=t){if(e.containsNode(this))throw new Error("Cannot move a field into a child of itself");e.parent&&e.parent.removeChild(e);var i=e.clone();e.clearDom(),t?this.insertBefore(i,t):this.appendChild(i)}},n.prototype.removeChild=function(e){if(this.childs){var t=this.childs.indexOf(e);if(-1!=t){e.hide(),delete e.searchField,delete e.searchValue;var i=this.childs.splice(t,1)[0];return i.parent=null,this.updateDom({updateIndexes:!0}),i}}return void 0},n.prototype._remove=function(e){this.removeChild(e)},n.prototype.changeType=function(e){var t=this.type;if(t!=e){if("string"!=e&&"auto"!=e||"string"!=t&&"auto"!=t){var i,n=this.dom.tr?this.dom.tr.parentNode:void 0;i=this.expanded?this.getAppend():this.getDom();var r=i&&i.parentNode?i.nextSibling:void 0;this.hide(),this.clearDom(),this.type=e,"object"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),delete e.index,e.fieldEditable=!0,void 0==e.field&&(e.field="")}),("string"==t||"auto"==t)&&(this.expanded=!0)):"array"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),e.fieldEditable=!1,e.index=t}),("string"==t||"auto"==t)&&(this.expanded=!0)):this.expanded=!1,n&&(r?n.insertBefore(this.getDom(),r):n.appendChild(this.getDom())),this.showChilds()}else this.type=e;("auto"==e||"string"==e)&&("string"==e?this.value=String(this.value):this.value=this._stringCast(String(this.value)),this.focus()),this.updateDom({updateIndexes:!0})}},n.prototype._getDomValue=function(e){if(this.dom.value&&"array"!=this.type&&"object"!=this.type&&(this.valueInnerText=s.getInnerText(this.dom.value)),void 0!=this.valueInnerText)try{var t;if("string"==this.type)t=this._unescapeHTML(this.valueInnerText);else{var i=this._unescapeHTML(this.valueInnerText);t=this._stringCast(i)}t!==this.value&&(this.value=t,this._debouncedOnChangeValue())}catch(n){if(this.value=void 0,e!==!0)throw n}},n.prototype._onChangeValue=function(){var e=this.editor.getSelection();if(e.range){var t=s.textDiff(String(this.value),String(this.previousValue));e.range.startOffset=t.start,e.range.endOffset=t.end}var i=this.editor.getSelection();if(i.range){var n=s.textDiff(String(this.previousValue),String(this.value));i.range.startOffset=n.start,i.range.endOffset=n.end}this.editor._onAction("editValue",{node:this,oldValue:this.previousValue,newValue:this.value,oldSelection:e,newSelection:i}),this.previousValue=this.value},n.prototype._onChangeField=function(){var e=this.editor.getSelection();if(e.range){var t=s.textDiff(this.field,this.previousField);e.range.startOffset=t.start,e.range.endOffset=t.end}var i=this.editor.getSelection();if(i.range){var n=s.textDiff(this.previousField,this.field);i.range.startOffset=n.start,i.range.endOffset=n.end}this.editor._onAction("editField",{node:this,oldValue:this.previousField,newValue:this.field,oldSelection:e,newSelection:i}),this.previousField=this.field},n.prototype._updateDomValue=function(){var e=this.dom.value;if(e){var t=["jsoneditor-value"],i=this.value,n="auto"==this.type?s.type(i):this.type,r="string"==n&&s.isUrl(i);t.push("jsoneditor-"+n),r&&t.push("jsoneditor-url");var o=""==String(this.value)&&"array"!=this.type&&"object"!=this.type;if(o&&t.push("jsoneditor-empty"),this.searchValueActive&&t.push("jsoneditor-highlight-active"),this.searchValue&&t.push("jsoneditor-highlight"),e.className=t.join(" "),"array"==n||"object"==n){var a=this.childs?this.childs.length:0;e.title=this.type+" containing "+a+" items"}else r&&this.editable.value?e.title="Ctrl+Click or Ctrl+Enter to open url in new window":e.title="";"boolean"===n?(this.dom.checkbox||(this.dom.checkbox=document.createElement("input"),this.dom.checkbox.type="checkbox",this.dom.tdCheckbox=document.createElement("td"),this.dom.tdCheckbox.className="jsoneditor-tree",this.dom.tdCheckbox.appendChild(this.dom.checkbox),this.dom.tdValue.parentNode.insertBefore(this.dom.tdCheckbox,this.dom.tdValue)),this.dom.checkbox.checked=this.value):this.dom.tdCheckbox&&(this.dom.tdCheckbox.parentNode.removeChild(this.dom.tdCheckbox),delete this.dom.tdCheckbox,delete this.dom.checkbox),s.stripFormatting(e)}},n.prototype._updateDomField=function(){var e=this.dom.field;if(e){var t=""==String(this.field)&&"array"!=this.parent.type;t?s.addClassName(e,"jsoneditor-empty"):s.removeClassName(e,"jsoneditor-empty"),this.searchFieldActive?s.addClassName(e,"jsoneditor-highlight-active"):s.removeClassName(e,"jsoneditor-highlight-active"),this.searchField?s.addClassName(e,"jsoneditor-highlight"):s.removeClassName(e,"jsoneditor-highlight"),s.stripFormatting(e)}},n.prototype._getDomField=function(e){if(this.dom.field&&this.fieldEditable&&(this.fieldInnerText=s.getInnerText(this.dom.field)),void 0!=this.fieldInnerText)try{var t=this._unescapeHTML(this.fieldInnerText);t!==this.field&&(this.field=t,this._debouncedOnChangeField())}catch(i){if(this.field=void 0,e!==!0)throw i}},n.prototype.validate=function(){var e=[];if("object"===this.type){for(var t={},i=[],n=0;n0&&(e=this.childs.filter(function(e){return-1!==i.indexOf(e.field)}).map(function(e){return{node:e,error:{message:'duplicate key "'+e.field+'"'}}}))}if(this.childs)for(var n=0;n0&&(e=e.concat(o))}return e},n.prototype.clearDom=function(){this.dom={}},n.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;if(this._updateEditability(),e.tr=document.createElement("tr"),e.tr.node=this,"tree"===this.editor.options.mode){var t=document.createElement("td");if(this.editable.field&&this.parent){var i=document.createElement("button");e.drag=i,i.className="jsoneditor-dragarea",i.title="Drag to move this field (Alt+Shift+Arrows)",t.appendChild(i)}e.tr.appendChild(t);var n=document.createElement("td"),r=document.createElement("button");e.menu=r,r.className="jsoneditor-contextmenu",r.title="Click to open the actions menu (Ctrl+M)",n.appendChild(e.menu),e.tr.appendChild(n)}var o=document.createElement("td");return e.tr.appendChild(o),e.tree=this._createDomTree(),o.appendChild(e.tree),this.updateDom({updateIndexes:!0}),e.tr},n.onDragStart=function(e,t){if(!Array.isArray(e))return n.onDragStart([e],t);if(0!==e.length){var i=e[0],r=e[e.length-1],o=n.getNodeFromTarget(t.target),a=r._nextSibling(),l=i.editor,c=s.getAbsoluteTop(o.dom.tr)-s.getAbsoluteTop(i.dom.tr);l.mousemove||(l.mousemove=s.addEventListener(window,"mousemove",function(t){n.onDrag(e,t)})),l.mouseup||(l.mouseup=s.addEventListener(window,"mouseup",function(t){n.onDragEnd(e,t)})),l.highlighter.lock(),l.drag={oldCursor:document.body.style.cursor,oldSelection:l.getSelection(),oldBeforeNode:a,mouseX:t.pageX,offsetY:c,level:i.getLevel()},document.body.style.cursor="move",t.preventDefault()}},n.onDrag=function(e,t){if(!Array.isArray(e))return n.onDrag([e],t);if(0!==e.length){var i,r,o,l,c,h,d,u,f,p,m,g,v,w,A=e[0].editor,y=t.pageY-A.drag.offsetY,C=t.pageX,E=!1,b=e[0];if(i=b.dom.tr,f=s.getAbsoluteTop(i),g=i.offsetHeight,f>y){r=i;do r=r.previousSibling,d=n.getNodeFromTarget(r),p=r?s.getAbsoluteTop(r):0;while(r&&p>y);d&&!d.parent&&(d=void 0),d||(h=i.parentNode.firstChild,r=h?h.nextSibling:void 0,d=n.getNodeFromTarget(r),d==b&&(d=void 0)),d&&(r=d.dom.tr,p=r?s.getAbsoluteTop(r):0,y>p+g&&(d=void 0)),d&&(e.forEach(function(e){d.parent.moveBefore(e,d)}),E=!0)}else{var F=e[e.length-1];if(c=F.expanded&&F.append?F.append.getDom():F.dom.tr,l=c?c.nextSibling:void 0){m=s.getAbsoluteTop(l),o=l;do u=n.getNodeFromTarget(o),o&&(v=o.nextSibling?s.getAbsoluteTop(o.nextSibling):0,w=o?v-m:0,u.parent.childs.length==e.length&&u.parent.childs[e.length-1]==F&&(f+=27)),o=o.nextSibling;while(o&&y>f+w);if(u&&u.parent){var x=C-A.drag.mouseX,S=Math.round(x/24/2),$=A.drag.level+S,D=u.getLevel();for(r=u.dom.tr.previousSibling;$>D&&r;){d=n.getNodeFromTarget(r);var k=e.some(function(e){return e===d||d._isChildOf(e)});if(k);else{if(!(d instanceof a))break;var B=d.parent.childs;if(B.length==e.length&&B[e.length-1]==F)break;u=n.getNodeFromTarget(r),D=u.getLevel()}r=r.previousSibling}c.nextSibling!=u.dom.tr&&(e.forEach(function(e){u.parent.moveBefore(e,u)}),E=!0)}}}E&&(A.drag.mouseX=C,A.drag.level=b.getLevel()),A.startAutoScroll(y),t.preventDefault()}},n.onDragEnd=function(e,t){if(!Array.isArray(e))return n.onDrag([e],t);if(0!==e.length){var i=e[0],r=i.editor,o=i.parent,a=o.childs.indexOf(i),l=o.childs[a+e.length]||o.append; -e[0]&&e[0].dom.menu.focus();var c={nodes:e,oldSelection:r.drag.oldSelection,newSelection:r.getSelection(),oldBeforeNode:r.drag.oldBeforeNode,newBeforeNode:l};c.oldBeforeNode!=c.newBeforeNode&&r._onAction("moveNodes",c),document.body.style.cursor=r.drag.oldCursor,r.highlighter.unlock(),e.forEach(function(e){t.target!==e.dom.drag&&t.target!==e.dom.menu&&r.highlighter.unhighlight()}),delete r.drag,r.mousemove&&(s.removeEventListener(window,"mousemove",r.mousemove),delete r.mousemove),r.mouseup&&(s.removeEventListener(window,"mouseup",r.mouseup),delete r.mouseup),r.stopAutoScroll(),t.preventDefault()}},n.prototype._isChildOf=function(e){for(var t=this.parent;t;){if(t==e)return!0;t=t.parent}return!1},n.prototype._createDomField=function(){return document.createElement("div")},n.prototype.setHighlight=function(e){this.dom.tr&&(e?s.addClassName(this.dom.tr,"jsoneditor-highlight"):s.removeClassName(this.dom.tr,"jsoneditor-highlight"),this.append&&this.append.setHighlight(e),this.childs&&this.childs.forEach(function(t){t.setHighlight(e)}))},n.prototype.setSelected=function(e,t){this.selected=e,this.dom.tr&&(e?s.addClassName(this.dom.tr,"jsoneditor-selected"):s.removeClassName(this.dom.tr,"jsoneditor-selected"),t?s.addClassName(this.dom.tr,"jsoneditor-first"):s.removeClassName(this.dom.tr,"jsoneditor-first"),this.append&&this.append.setSelected(e),this.childs&&this.childs.forEach(function(t){t.setSelected(e)}))},n.prototype.updateValue=function(e){this.value=e,this.updateDom()},n.prototype.updateField=function(e){this.field=e,this.updateDom()},n.prototype.updateDom=function(e){var t=this.dom.tree;t&&(t.style.marginLeft=24*this.getLevel()+"px");var i=this.dom.field;if(i){this.fieldEditable?(i.contentEditable=this.editable.field,i.spellcheck=!1,i.className="jsoneditor-field"):i.className="jsoneditor-readonly";var n;n=void 0!=this.index?this.index:void 0!=this.field?this.field:this._hasChilds()?this.type:"",i.innerHTML=this._escapeHTML(n)}var r=this.dom.value;if(r){var o=this.childs?this.childs.length:0;"array"==this.type?(r.innerHTML="["+o+"]",s.addClassName(this.dom.tr,"jsoneditor-expandable")):"object"==this.type?(r.innerHTML="{"+o+"}",s.addClassName(this.dom.tr,"jsoneditor-expandable")):(r.innerHTML=this._escapeHTML(this.value),s.removeClassName(this.dom.tr,"jsoneditor-expandable"))}this._updateDomField(),this._updateDomValue(),e&&e.updateIndexes===!0&&this._updateDomIndexes(),e&&e.recurse===!0&&this.childs&&this.childs.forEach(function(t){t.updateDom(e)}),this.append&&this.append.updateDom()},n.prototype._updateDomIndexes=function(){var e=this.dom.value,t=this.childs;e&&t&&("array"==this.type?t.forEach(function(e,t){e.index=t;var i=e.dom.field;i&&(i.innerHTML=t)}):"object"==this.type&&t.forEach(function(e){void 0!=e.index&&(delete e.index,void 0==e.field&&(e.field=""))}))},n.prototype._createDomValue=function(){var e;return"array"==this.type?(e=document.createElement("div"),e.innerHTML="[...]"):"object"==this.type?(e=document.createElement("div"),e.innerHTML="{...}"):!this.editable.value&&s.isUrl(this.value)?(e=document.createElement("a"),e.href=this.value,e.target="_blank",e.innerHTML=this._escapeHTML(this.value)):(e=document.createElement("div"),e.contentEditable=this.editable.value,e.spellcheck=!1,e.innerHTML=this._escapeHTML(this.value)),e},n.prototype._createDomExpandButton=function(){var e=document.createElement("button");return this._hasChilds()?(e.className=this.expanded?"jsoneditor-expanded":"jsoneditor-collapsed",e.title="Click to expand/collapse this field (Ctrl+E). \nCtrl+Click to expand/collapse including all childs."):(e.className="jsoneditor-invisible",e.title=""),e},n.prototype._createDomTree=function(){var e=this.dom,t=document.createElement("table"),i=document.createElement("tbody");t.style.borderCollapse="collapse",t.className="jsoneditor-values",t.appendChild(i);var n=document.createElement("tr");i.appendChild(n);var r=document.createElement("td");r.className="jsoneditor-tree",n.appendChild(r),e.expand=this._createDomExpandButton(),r.appendChild(e.expand),e.tdExpand=r;var o=document.createElement("td");o.className="jsoneditor-tree",n.appendChild(o),e.field=this._createDomField(),o.appendChild(e.field),e.tdField=o;var s=document.createElement("td");s.className="jsoneditor-tree",n.appendChild(s),"object"!=this.type&&"array"!=this.type&&(s.appendChild(document.createTextNode(":")),s.className="jsoneditor-separator"),e.tdSeparator=s;var a=document.createElement("td");return a.className="jsoneditor-tree",n.appendChild(a),e.value=this._createDomValue(),a.appendChild(e.value),e.tdValue=a,t},n.prototype.onEvent=function(e){var t,i=e.type,n=e.target||e.srcElement,r=this.dom,o=this,a=this._hasChilds();if((n==r.drag||n==r.menu)&&("mouseover"==i?this.editor.highlighter.highlight(this):"mouseout"==i&&this.editor.highlighter.unhighlight()),"click"==i&&n==r.menu){var l=o.editor.highlighter;l.highlight(o),l.lock(),s.addClassName(r.menu,"jsoneditor-selected"),this.showContextMenu(r.menu,function(){s.removeClassName(r.menu,"jsoneditor-selected"),l.unlock(),l.unhighlight()})}if("click"==i&&(n==r.expand||("view"===o.editor.options.mode||"form"===o.editor.options.mode)&&"DIV"===n.nodeName)&&a){var c=e.ctrlKey;this._onExpand(c)}"change"==i&&n==r.checkbox&&(this.dom.value.innerHTML=!this.value,this._getDomValue());var h=r.value;if(n==h)switch(i){case"focus":t=this;break;case"blur":case"change":this._getDomValue(!0),this._updateDomValue(),this.value&&(h.innerHTML=this._escapeHTML(this.value));break;case"input":this._getDomValue(!0),this._updateDomValue();break;case"keydown":case"mousedown":this.editor.selection=this.editor.getSelection();break;case"click":(e.ctrlKey||!this.editable.value)&&s.isUrl(this.value)&&window.open(this.value,"_blank");break;case"keyup":this._getDomValue(!0),this._updateDomValue();break;case"cut":case"paste":setTimeout(function(){o._getDomValue(!0),o._updateDomValue()},1)}var d=r.field;if(n==d)switch(i){case"focus":t=this;break;case"blur":case"change":this._getDomField(!0),this._updateDomField(),this.field&&(d.innerHTML=this._escapeHTML(this.field));break;case"input":this._getDomField(!0),this._updateDomField();break;case"keydown":case"mousedown":this.editor.selection=this.editor.getSelection();break;case"keyup":this._getDomField(!0),this._updateDomField();break;case"cut":case"paste":setTimeout(function(){o._getDomField(!0),o._updateDomField()},1)}var u=r.tree;if(n==u.parentNode&&"click"==i&&!e.hasMoved){var f=void 0!=e.offsetX?e.offsetX<24*(this.getLevel()+1):e.pageX0?this.editor.multiselection.nodes:[this],y=A[0],C=A[A.length-1];if(13==u){if(f==this.dom.value)(!this.editable.value||e.ctrlKey)&&s.isUrl(this.value)&&(window.open(this.value,"_blank"),v=!0);else if(f==this.dom.expand){var E=this._hasChilds();if(E){var b=e.ctrlKey;this._onExpand(b),f.focus(),v=!0}}}else if(68==u)p&&w&&(n.onDuplicate(A),v=!0);else if(69==u)p&&(this._onExpand(m),f.focus(),v=!0);else if(77==u&&w)p&&(this.showContextMenu(f),v=!0);else if(46==u&&w)p&&(n.onRemove(A),v=!0);else if(45==u&&w)p&&!m?(this._onInsertBefore(),v=!0):p&&m&&(this._onInsertAfter(),v=!0);else if(35==u){if(g){var F=this._lastNode();F&&F.focus(n.focusElement||this._getElementName(f)),v=!0}}else if(36==u){if(g){var x=this._firstNode();x&&x.focus(n.focusElement||this._getElementName(f)),v=!0}}else if(37==u){if(g&&!m){var S=this._previousElement(f);S&&this.focus(this._getElementName(S)),v=!0}else if(g&&m&&w){if(C.expanded){var $=C.getAppend();r=$?$.nextSibling:void 0}else{var D=C.getDom();r=D.nextSibling}r&&(i=n.getNodeFromTarget(r),o=r.nextSibling,_=n.getNodeFromTarget(o),i&&i instanceof a&&1!=C.parent.childs.length&&_&&_.parent&&(l=this.editor.getSelection(),c=C._nextSibling(),A.forEach(function(e){_.parent.moveBefore(e,_)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:A,oldBeforeNode:c,newBeforeNode:_,oldSelection:l,newSelection:this.editor.getSelection()})))}}else if(38==u)g&&!m?(t=this._previousNode(),t&&(this.editor.deselect(!0),t.focus(n.focusElement||this._getElementName(f))),v=!0):!g&&p&&m&&w?(t=this._previousNode(),t&&(d=this.editor.multiselection,d.start=d.start||this,d.end=t,h=this.editor._findTopLevelNodes(d.start,d.end),this.editor.select(h),t.focus("field")),v=!0):g&&m&&w&&(t=y._previousNode(),t&&t.parent&&(l=this.editor.getSelection(),c=C._nextSibling(),A.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:A,oldBeforeNode:c,newBeforeNode:t,oldSelection:l,newSelection:this.editor.getSelection()})),v=!0);else if(39==u){if(g&&!m){var k=this._nextElement(f);k&&this.focus(this._getElementName(k)),v=!0}else if(g&&m&&w){D=y.getDom();var B=D.previousSibling;B&&(t=n.getNodeFromTarget(B),t&&t.parent&&t instanceof a&&!t.isVisible()&&(l=this.editor.getSelection(),c=C._nextSibling(),A.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:A,oldBeforeNode:c,newBeforeNode:t,oldSelection:l,newSelection:this.editor.getSelection()})))}}else if(40==u)if(g&&!m)i=this._nextNode(),i&&(this.editor.deselect(!0),i.focus(n.focusElement||this._getElementName(f))),v=!0;else if(!g&&p&&m&&w)i=this._nextNode(),i&&(d=this.editor.multiselection,d.start=d.start||this,d.end=i,h=this.editor._findTopLevelNodes(d.start,d.end),this.editor.select(h),i.focus("field")),v=!0;else if(g&&m&&w){i=C.expanded?C.append?C.append._nextNode():void 0:C._nextNode();var _=i&&(i._nextNode()||i.parent.append);_&&_.parent&&(l=this.editor.getSelection(),c=C._nextSibling(),A.forEach(function(e){_.parent.moveBefore(e,_)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:A,oldBeforeNode:c,newBeforeNode:_,oldSelection:l,newSelection:this.editor.getSelection()})),v=!0}v&&(e.preventDefault(),e.stopPropagation())},n.prototype._onExpand=function(e){if(e){var t=this.dom.tr.parentNode,i=t.parentNode,n=i.scrollTop;i.removeChild(t)}this.expanded?this.collapse(e):this.expand(e),e&&(i.appendChild(t),i.scrollTop=n)},n.onRemove=function(e){if(!Array.isArray(e))return n.onRemove([e]);if(e&&e.length>0){var t=e[0],i=t.parent,r=t.editor,o=t.getIndex();r.highlighter.unhighlight();var s=r.getSelection();n.blurNodes(e);var a=r.getSelection();e.forEach(function(e){e.parent._remove(e)}),r._onAction("removeNodes",{nodes:e.slice(0),parent:i,index:o,oldSelection:s,newSelection:a})}},n.onDuplicate=function(e){if(!Array.isArray(e))return n.onDuplicate([e]);if(e&&e.length>0){var t=e[e.length-1],i=t.parent,r=t.editor;r.deselect(r.multiselection.nodes);var o=r.getSelection(),s=t,a=e.map(function(e){var t=e.clone();return i.insertAfter(t,s),s=t,t});1===e.length?a[0].focus():r.select(a);var l=r.getSelection();r._onAction("duplicateNodes",{afterNode:t,nodes:a,parent:i,oldSelection:o,newSelection:l})}},n.prototype._onInsertBefore=function(e,t,i){var r=this.editor.getSelection(),o=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});o.expand(!0),this.parent.insertBefore(o,this),this.editor.highlighter.unhighlight(),o.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertBeforeNodes",{nodes:[o],beforeNode:this,parent:this.parent,oldSelection:r,newSelection:s})},n.prototype._onInsertAfter=function(e,t,i){var r=this.editor.getSelection(),o=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});o.expand(!0),this.parent.insertAfter(o,this),this.editor.highlighter.unhighlight(),o.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertAfterNodes",{nodes:[o],afterNode:this,parent:this.parent,oldSelection:r,newSelection:s})},n.prototype._onAppend=function(e,t,i){var r=this.editor.getSelection(),o=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});o.expand(!0),this.parent.appendChild(o),this.editor.highlighter.unhighlight(),o.focus("field");var s=this.editor.getSelection();this.editor._onAction("appendNodes",{nodes:[o],parent:this.parent,oldSelection:r,newSelection:s})},n.prototype._onChangeType=function(e){var t=this.type;if(e!=t){var i=this.editor.getSelection();this.changeType(e);var n=this.editor.getSelection();this.editor._onAction("changeType",{node:this,oldType:t,newType:e,oldSelection:i,newSelection:n})}},n.prototype._onSort=function(e){if(this._hasChilds()){var t="desc"==e?-1:1,i="array"==this.type?"value":"field";this.hideChilds();var n=this.childs,r=this.sort;this.childs=this.childs.concat(),this.childs.sort(function(e,n){return e[i]>n[i]?t:e[i]/g,">").replace(/ /g,"  ").replace(/^ /," ").replace(/ $/," "),i=JSON.stringify(t),n=i.substring(1,i.length-1);return this.editor.options.escapeUnicode===!0&&(n=s.escapeUnicodeChars(n)),n},n.prototype._unescapeHTML=function(e){var t='"'+this._escapeJSON(e)+'"',i=s.parse(t);return i.replace(/</g,"<").replace(/>/g,">").replace(/ |\u00A0/g," ").replace(/&/g,"&")},n.prototype._escapeJSON=function(e){for(var t="",i=0;i2&&b.push("'"+this.terminals_[y]+"'");var x="";x=this.lexer.showPosition?"Parse error on line "+(c+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+b.join(", ")+", got '"+this.terminals_[m]+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(x,{text:this.lexer.match,token:this.terminals_[m]||m,line:this.lexer.yylineno,loc:p,expected:b})}if(3==d){if(m==f)throw new Error(x||"Parsing halted.");h=this.lexer.yyleng,l=this.lexer.yytext,c=this.lexer.yylineno,p=this.lexer.yylloc,m=i()}for(;;){if(u.toString()in a[v])break;if(0==v)throw new Error(x||"Parsing halted.");t(1),v=r[r.length-1]}g=m,m=u,v=r[r.length-1],w=a[v]&&a[v][u],d=3}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+m);switch(w[0]){case 1:r.push(m),o.push(this.lexer.yytext),s.push(this.lexer.yylloc),r.push(w[1]),m=null,g?(m=g,g=null):(h=this.lexer.yyleng,l=this.lexer.yytext,c=this.lexer.yylineno,p=this.lexer.yylloc,d>0&&d--);break;case 2:if(C=this.productions_[w[1]][1],F.$=o[o.length-C],F._$={first_line:s[s.length-(C||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(C||1)].first_column,last_column:s[s.length-1].last_column},A=this.performAction.call(F,l,h,c,this.yy,w[1],o,s),"undefined"!=typeof A)return A;C&&(r=r.slice(0,-1*C*2),o=o.slice(0,-1*C),s=s.slice(0,-1*C)),r.push(this.productions_[w[1]][0]),o.push(F.$),s.push(F._$),E=a[r[r.length-2]][r[r.length-1]],r.push(E);break;case 3:return!0}}return!0}},t=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parseError)throw new Error(e);this.yy.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.match+=e,this.matched+=e;var t=e.match(/\n/);return t&&this.yylineno++,this._input=this._input.slice(1),e},unput:function(e){return this._input=e+this._input,this},more:function(){return this._more=!0,this},less:function(e){this._input=this.match.slice(e)+this._input},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,i,n,r;this._more||(this.yytext="",this.match="");for(var o=this._currentRules(),s=0;st[0].length)||(t=i,n=s,this.options.flex));s++);return t?(r=t[0].match(/\n.*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-1:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,o[n],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e?e:void 0):""===this._input?this.EOF:void this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return"undefined"!=typeof e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,i,n){switch(i){case 0:break;case 1:return 6;case 2:return t.yytext=t.yytext.substr(1,t.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return"INVALID"}},e.rules=[/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt\/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/],e.conditions={INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}},e}();return e.lexer=t,e}();t.parser=n,t.parse=n.parse.bind(n)},function(e,t,i){function n(e){function t(e){this.editor=e,this.dom={}}return t.prototype=new e,t.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;this._updateEditability();var t=document.createElement("tr");if(t.node=this,e.tr=t,this.editable.field){e.tdDrag=document.createElement("td");var i=document.createElement("td");e.tdMenu=i;var n=document.createElement("button");n.className="jsoneditor-contextmenu",n.title="Click to open the actions menu (Ctrl+M)",e.menu=n,i.appendChild(e.menu)}var r=document.createElement("td"),o=document.createElement("div");return o.innerHTML="(empty)",o.className="jsoneditor-readonly",r.appendChild(o),e.td=r,e.text=o,this.updateDom(),t},t.prototype.updateDom=function(){var e=this.dom,t=e.td;t&&(t.style.paddingLeft=24*this.getLevel()+26+"px");var i=e.text;i&&(i.innerHTML="(empty "+this.parent.type+")");var n=e.tr;this.isVisible()?e.tr.firstChild||(e.tdDrag&&n.appendChild(e.tdDrag),e.tdMenu&&n.appendChild(e.tdMenu),n.appendChild(t)):e.tr.firstChild&&(e.tdDrag&&n.removeChild(e.tdDrag),e.tdMenu&&n.removeChild(e.tdMenu),n.removeChild(t))},t.prototype.isVisible=function(){return 0==this.parent.childs.length},t.prototype.showContextMenu=function(t,i){var n=this,r=e.TYPE_TITLES,s=[{text:"Append",title:"Append a new field with type 'auto' (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-insert",click:function(){n._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:r.auto,click:function(){n._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:r.array,click:function(){n._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:r.object,click:function(){n._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:r.string,click:function(){n._onAppend("","","string")}}]}],a=new o(s,{close:i});a.show(t,this.editor.content)},t.prototype.onEvent=function(e){var t=e.type,i=e.target||e.srcElement,n=this.dom,o=n.menu;if(i==o&&("mouseover"==t?this.editor.highlighter.highlight(this.parent):"mouseout"==t&&this.editor.highlighter.unhighlight()),"click"==t&&i==n.menu){var s=this.editor.highlighter;s.highlight(this.parent),s.lock(),r.addClassName(n.menu,"jsoneditor-selected"),this.showContextMenu(n.menu,function(){r.removeClassName(n.menu,"jsoneditor-selected"),s.unlock(),s.unhighlight()})}"keydown"==t&&this.onKeyDown(e)},t}var r=i(3),o=i(8);e.exports=n},function(e,t,i){ace.define("ace/theme/jsoneditor",["require","exports","module","ace/lib/dom"],function(e,t,i){t.isDark=!1,t.cssClass="ace-jsoneditor",t.cssText='.ace-jsoneditor .ace_gutter { background: #ebebeb; color: #333 } .ace-jsoneditor.ace_editor { font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif; line-height: 1.3; } .ace-jsoneditor .ace_print-margin { width: 1px; background: #e8e8e8 } .ace-jsoneditor .ace_scroller { background-color: #FFFFFF } .ace-jsoneditor .ace_text-layer { color: gray } .ace-jsoneditor .ace_variable { color: #1a1a1a } .ace-jsoneditor .ace_cursor { border-left: 2px solid #000000 } .ace-jsoneditor .ace_overwrite-cursors .ace_cursor { border-left: 0px; border-bottom: 1px solid #000000 } .ace-jsoneditor .ace_marker-layer .ace_selection { background: lightgray } .ace-jsoneditor.ace_multiselect .ace_selection.ace_start { box-shadow: 0 0 3px 0px #FFFFFF; border-radius: 2px } .ace-jsoneditor .ace_marker-layer .ace_step { background: rgb(255, 255, 0) } .ace-jsoneditor .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid #BFBFBF } .ace-jsoneditor .ace_marker-layer .ace_active-line { background: #FFFBD1 } .ace-jsoneditor .ace_gutter-active-line { background-color : #dcdcdc } .ace-jsoneditor .ace_marker-layer .ace_selected-word { border: 1px solid lightgray } .ace-jsoneditor .ace_invisible { color: #BFBFBF } .ace-jsoneditor .ace_keyword, .ace-jsoneditor .ace_meta, .ace-jsoneditor .ace_support.ace_constant.ace_property-value { color: #AF956F } .ace-jsoneditor .ace_keyword.ace_operator { color: #484848 } .ace-jsoneditor .ace_keyword.ace_other.ace_unit { color: #96DC5F } .ace-jsoneditor .ace_constant.ace_language { color: darkorange } .ace-jsoneditor .ace_constant.ace_numeric { color: red } .ace-jsoneditor .ace_constant.ace_character.ace_entity { color: #BF78CC } .ace-jsoneditor .ace_invalid { color: #FFFFFF; background-color: #FF002A; } .ace-jsoneditor .ace_fold { background-color: #AF956F; border-color: #000000 } .ace-jsoneditor .ace_storage, .ace-jsoneditor .ace_support.ace_class, .ace-jsoneditor .ace_support.ace_function, .ace-jsoneditor .ace_support.ace_other, .ace-jsoneditor .ace_support.ace_type { color: #C52727 } .ace-jsoneditor .ace_string { color: green } .ace-jsoneditor .ace_comment { color: #BCC8BA } .ace-jsoneditor .ace_entity.ace_name.ace_tag, .ace-jsoneditor .ace_entity.ace_other.ace_attribute-name { color: #606060 } .ace-jsoneditor .ace_markup.ace_underline { text-decoration: underline } .ace-jsoneditor .ace_indent-guide { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y }'; -var n=e("../lib/dom");n.importCssString(t.cssText,t.cssClass)})},function(e,t,i){!function(){function e(e){var t=i;e&&(i[e]||(i[e]={}),t=i[e]),t.define&&t.define.packaged||(n.original=t.define,t.define=n,t.define.packaged=!0),t.acequire&&t.acequire.packaged||(o.original=t.acequire,t.acequire=o,t.acequire.packaged=!0)}var t="ace",i=function(){return this}();if(i||"undefined"==typeof window||(i=window),t||"undefined"==typeof acequirejs){var n=function(e,t,i){return"string"!=typeof e?void(n.original?n.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace())):(2==arguments.length&&(i=t),void(n.modules[e]||(n.payloads[e]=i,n.modules[e]=null)))};n.modules={},n.payloads={};var r=function(e,t,i){if("string"==typeof t){var n=a(e,t);if(void 0!=n)return i&&i(),n}else if("[object Array]"===Object.prototype.toString.call(t)){for(var r=[],s=0,l=t.length;l>s;++s){var c=a(e,t[s]);if(void 0==c&&o.original)return;r.push(c)}return i&&i.apply(null,r)||!0}},o=function(e,t){var i=r("",e,t);return void 0==i&&o.original?o.original.apply(this,arguments):i},s=function(e,t){if(-1!==t.indexOf("!")){var i=t.split("!");return s(e,i[0])+"!"+s(e,i[1])}if("."==t.charAt(0)){var n=e.split("/").slice(0,-1).join("/");for(t=n+"/"+t;-1!==t.indexOf(".")&&r!=t;){var r=t;t=t.replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return t},a=function(e,t){t=s(e,t);var i=n.modules[t];if(!i){if(i=n.payloads[t],"function"==typeof i){var o={},a={id:t,uri:"",exports:o,packaged:!0},l=function(e,i){return r(t,e,i)},c=i(l,o,a);o=c||a.exports,n.modules[t]=o,delete n.payloads[t]}i=n.modules[t]=o||i}return i};e(t)}}(),ace.define("ace/lib/regexp",["require","exports","module"],function(e,t,i){"use strict";function n(e){return(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.extended?"x":"")+(e.sticky?"y":"")}function r(e,t,i){if(Array.prototype.indexOf)return e.indexOf(t,i);for(var n=i||0;n1&&r(l,"")>-1&&(i=RegExp(this.source,o.replace.call(n(this),"g","")),o.replace.call(e.slice(l.index),i,function(){for(var e=1;el.index&&this.lastIndex--}return l},a||(RegExp.prototype.test=function(e){var t=o.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t}))}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,i){function n(){}function r(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function o(e){return e=+e,e!==e?e=0:0!==e&&e!==1/0&&e!==-(1/0)&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if("function"!=typeof t)throw new TypeError("Function.prototype.bind called on incompatible "+t);var i=p.call(arguments,1),r=function(){if(this instanceof r){var n=t.apply(this,i.concat(p.call(arguments)));return Object(n)===n?n:this}return t.apply(e,i.concat(p.call(arguments)))};return t.prototype&&(n.prototype=t.prototype,r.prototype=new n,n.prototype=null),r});var s,a,l,c,h,d=Function.prototype.call,u=Array.prototype,f=Object.prototype,p=u.slice,m=d.bind(f.toString),g=d.bind(f.hasOwnProperty);if((h=g(f,"__defineGetter__"))&&(s=d.bind(f.__defineGetter__),a=d.bind(f.__defineSetter__),l=d.bind(f.__lookupGetter__),c=d.bind(f.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t,i=[];return i.splice.apply(i,e(20)),i.splice.apply(i,e(26)),t=i.length,i.splice(5,0,"XXX"),t+1==i.length,t+1==i.length?!0:void 0}()){var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[void 0===e?0:e,void 0===t?this.length-e:t].concat(p.call(arguments,2))):[]}}else Array.prototype.splice=function(e,t){var i=this.length;e>0?e>i&&(e=i):void 0==e?e=0:0>e&&(e=Math.max(i+e,0)),i>e+t||(t=i-e);var n=this.slice(e,e+t),r=p.call(arguments,2),o=r.length;if(e===i)o&&this.push.apply(this,r);else{var s=Math.min(t,i-e),a=e+s,l=a+o-s,c=i-a,h=i-s;if(a>l)for(var d=0;c>d;++d)this[l+d]=this[a+d];else if(l>a)for(d=c;d--;)this[l+d]=this[a+d];if(o&&e===h)this.length=h,this.push.apply(this,r);else for(this.length=h+o,d=0;o>d;++d)this[e+d]=r[d]}return n};Array.isArray||(Array.isArray=function(e){return"[object Array]"==m(e)});var w=Object("a"),A="a"!=w[0]||!(0 in w);if(Array.prototype.forEach||(Array.prototype.forEach=function(e){var t=M(this),i=A&&"[object String]"==m(this)?this.split(""):t,n=arguments[1],r=-1,o=i.length>>>0;if("[object Function]"!=m(e))throw new TypeError;for(;++r>>0,r=Array(n),o=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var s=0;n>s;s++)s in i&&(r[s]=e.call(o,i[s],s,t));return r}),Array.prototype.filter||(Array.prototype.filter=function(e){var t,i=M(this),n=A&&"[object String]"==m(this)?this.split(""):i,r=n.length>>>0,o=[],s=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var a=0;r>a;a++)a in n&&(t=n[a],e.call(s,t,a,i)&&o.push(t));return o}),Array.prototype.every||(Array.prototype.every=function(e){var t=M(this),i=A&&"[object String]"==m(this)?this.split(""):t,n=i.length>>>0,r=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var o=0;n>o;o++)if(o in i&&!e.call(r,i[o],o,t))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(e){var t=M(this),i=A&&"[object String]"==m(this)?this.split(""):t,n=i.length>>>0,r=arguments[1];if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");for(var o=0;n>o;o++)if(o in i&&e.call(r,i[o],o,t))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(e){var t=M(this),i=A&&"[object String]"==m(this)?this.split(""):t,n=i.length>>>0;if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");if(!n&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var r,o=0;if(arguments.length>=2)r=arguments[1];else for(;;){if(o in i){r=i[o++];break}if(++o>=n)throw new TypeError("reduce of empty array with no initial value")}for(;n>o;o++)o in i&&(r=e.call(void 0,r,i[o],o,t));return r}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(e){var t=M(this),i=A&&"[object String]"==m(this)?this.split(""):t,n=i.length>>>0;if("[object Function]"!=m(e))throw new TypeError(e+" is not a function");if(!n&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var r,o=n-1;if(arguments.length>=2)r=arguments[1];else for(;;){if(o in i){r=i[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}do o in this&&(r=e.call(void 0,r,i[o],o,t));while(o--);return r}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(e){var t=A&&"[object String]"==m(this)?this.split(""):M(this),i=t.length>>>0;if(!i)return-1;var n=0;for(arguments.length>1&&(n=o(arguments[1])),n=n>=0?n:Math.max(0,i+n);i>n;n++)if(n in t&&t[n]===e)return n;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(e){var t=A&&"[object String]"==m(this)?this.split(""):M(this),i=t.length>>>0;if(!i)return-1;var n=i-1;for(arguments.length>1&&(n=Math.min(n,o(arguments[1]))),n=n>=0?n:i-Math.abs(n);n>=0;n--)if(n in t&&e===t[n])return n;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:f)}),!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(e,t){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError(y+e);if(g(e,t)){var i,n,r;if(i={enumerable:!0,configurable:!0},h){var o=e.__proto__;e.__proto__=f;var n=l(e,t),r=c(e,t);if(e.__proto__=o,n||r)return n&&(i.get=n),r&&(i.set=r),i}return i.value=e[t],i}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)}),!Object.create){var C;C=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(e,t){var i;if(null===e)i=C();else{if("object"!=typeof e)throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var n=function(){};n.prototype=e,i=new n,i.__proto__=e}return void 0!==t&&Object.defineProperties(i,t),i}}if(Object.defineProperty){var E=r({}),b="undefined"==typeof document||r(document.createElement("div"));if(!E||!b)var F=Object.defineProperty}if(!Object.defineProperty||F){var x="Property description must be an object: ",S="Object.defineProperty called on non-object: ",$="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(e,t,i){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError(S+e);if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError(x+i);if(F)try{return F.call(Object,e,t,i)}catch(n){}if(g(i,"value"))if(h&&(l(e,t)||c(e,t))){var r=e.__proto__;e.__proto__=f,delete e[t],e[t]=i.value,e.__proto__=r}else e[t]=i.value;else{if(!h)throw new TypeError($);g(i,"get")&&s(e,t,i.get),g(i,"set")&&a(e,t,i.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var i in t)g(t,i)&&Object.defineProperty(e,i,t[i]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze(function(){})}catch(D){Object.freeze=function(e){return function(t){return"function"==typeof t?t:e(t)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;for(var t="";g(e,t);)t+="?";e[t]=!0;var i=g(e,t);return delete e[t],i}),!Object.keys){var k=!0,B=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],_=B.length;for(var L in{toString:null})k=!1;Object.keys=function O(e){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.keys called on a non-object");var O=[];for(var t in e)g(e,t)&&O.push(t);if(k)for(var i=0,n=_;n>i;i++){var r=B[i];g(e,r)&&O.push(r)}return O}}Date.now||(Date.now=function(){return(new Date).getTime()});var R=" \n \f\r   ᠎              \u2028\u2029\ufeff";if(!String.prototype.trim||R.trim()){R="["+R+"]";var T=new RegExp("^"+R+R+"*"),P=new RegExp(R+R+"*$");String.prototype.trim=function(){return String(this).replace(T,"").replace(P,"")}}var M=function(e){if(null==e)throw new TypeError("can't convert "+e+" to object");return Object(e)}}),ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],function(e,t,i){"use strict";e("./regexp"),e("./es5-shim")}),ace.define("ace/lib/dom",["require","exports","module"],function(e,t,i){"use strict";var n="http://www.w3.org/1999/xhtml";return t.getDocumentHead=function(e){return e||(e=document),e.head||e.getElementsByTagName("head")[0]||e.documentElement},t.createElement=function(e,t){return document.createElementNS?document.createElementNS(t||n,e):document.createElement(e)},t.hasCssClass=function(e,t){var i=(e.className||"").split(/\s+/g);return-1!==i.indexOf(t)},t.addCssClass=function(e,i){t.hasCssClass(e,i)||(e.className+=" "+i)},t.removeCssClass=function(e,t){for(var i=e.className.split(/\s+/g);;){var n=i.indexOf(t);if(-1==n)break;i.splice(n,1)}e.className=i.join(" ")},t.toggleCssClass=function(e,t){for(var i=e.className.split(/\s+/g),n=!0;;){var r=i.indexOf(t);if(-1==r)break;n=!1,i.splice(r,1)}return n&&i.push(t),e.className=i.join(" "),n},t.setCssClass=function(e,i,n){n?t.addCssClass(e,i):t.removeCssClass(e,i)},t.hasCssString=function(e,t){var i,n=0;if(t=t||document,t.createStyleSheet&&(i=t.styleSheets)){for(;n=0?(r.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]:(r.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&"Gecko"===window.navigator.product,t.isOldGecko=t.isGecko&&parseInt((r.match(/rv\:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),t.isWebKit=parseFloat(r.split("WebKit/")[1])||void 0,t.isChrome=parseFloat(r.split(" Chrome/")[1])||void 0,t.isAIR=r.indexOf("AdobeAIR")>=0,t.isIPad=r.indexOf("iPad")>=0,t.isTouchPad=r.indexOf("TouchPad")>=0,t.isChromeOS=r.indexOf(" CrOS ")>=0}}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,i){"use strict";function n(e,t,i){var n=c(t);if(!s.isMac&&a){if(a.OSKey&&(n|=8),a.altGr){if(3==(3&n))return;a.altGr=0}if(18===i||17===i){var r="location"in t?t.location:t.keyLocation;if(17===i&&1===r)1==a[i]&&(l=t.timeStamp);else if(18===i&&3===n&&2===r){var h=t.timeStamp-l;50>h&&(a.altGr=!0)}}}if(i in o.MODIFIER_KEYS&&(i=-1),8&n&&i>=91&&93>=i&&(i=-1),!n&&13===i){var r="location"in t?t.location:t.keyLocation;if(3===r&&(e(t,n,-i),t.defaultPrevented))return}if(s.isChromeOS&&8&n){if(e(t,n,i),t.defaultPrevented)return;n&=-9}return n||i in o.FUNCTION_KEYS||i in o.PRINTABLE_KEYS?e(t,n,i):!1}function r(){a=Object.create(null),a.count=0,a.lastT=0}var o=e("./keys"),s=e("./useragent"),a=null,l=0;t.addListener=function(e,t,i){if(e.addEventListener)return e.addEventListener(t,i,!1);if(e.attachEvent){var n=function(){i.call(e,window.event)};i._wrapper=n,e.attachEvent("on"+t,n)}},t.removeListener=function(e,t,i){return e.removeEventListener?e.removeEventListener(t,i,!1):void(e.detachEvent&&e.detachEvent("on"+t,i._wrapper||i))},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return"dblclick"==e.type?0:"contextmenu"==e.type||s.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,i,n){function r(e){i&&i(e),n&&n(e),t.removeListener(document,"mousemove",i,!0),t.removeListener(document,"mouseup",r,!0),t.removeListener(document,"dragstart",r,!0)}return t.addListener(document,"mousemove",i,!0),t.addListener(document,"mouseup",r,!0),t.addListener(document,"dragstart",r,!0),r},t.addTouchMoveListener=function(e,i){if("ontouchmove"in e){var n,r;t.addListener(e,"touchstart",function(e){var t=e.changedTouches[0];n=t.clientX,r=t.clientY}),t.addListener(e,"touchmove",function(e){var t=1,o=e.changedTouches[0];e.wheelX=-(o.clientX-n)/t,e.wheelY=-(o.clientY-r)/t,n=o.clientX,r=o.clientY,i(e)})}},t.addMouseWheelListener=function(e,i){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){var t=8;void 0!==e.wheelDeltaX?(e.wheelX=-e.wheelDeltaX/t,e.wheelY=-e.wheelDeltaY/t):(e.wheelX=0,e.wheelY=-e.wheelDelta/t),i(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){var t=.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*t||0,e.wheelY=e.deltaY*t||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=5*(e.deltaX||0),e.wheelY=5*(e.deltaY||0)}i(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=5*(e.detail||0),e.wheelY=0):(e.wheelX=0,e.wheelY=5*(e.detail||0)),i(e)})},t.addMultiMouseDownListener=function(e,i,n,r){var o,a,l,c=0,h={2:"dblclick",3:"tripleclick",4:"quadclick"};t.addListener(e,"mousedown",function(e){if(0!==t.getButton(e)?c=0:e.detail>1?(c++,c>4&&(c=1)):c=1,s.isIE){var d=Math.abs(e.clientX-o)>5||Math.abs(e.clientY-a)>5;(!l||d)&&(c=1),l&&clearTimeout(l),l=setTimeout(function(){l=null},i[c-1]||600),1==c&&(o=e.clientX,a=e.clientY)}if(e._clicks=c,n[r]("mousedown",e),c>4)c=0;else if(c>1)return n[r](h[c],e)}),s.isOldIE&&t.addListener(e,"dblclick",function(e){c=2,l&&clearTimeout(l),l=setTimeout(function(){l=null},i[c-1]||600),n[r]("mousedown",e),n[r](h[c],e)})};var c=!s.isMac||!s.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};if(t.getModifierString=function(e){return o.KEY_MODS[c(e)]},t.addCommandKeyListener=function(e,i){var o=t.addListener;if(s.isOldGecko||s.isOpera&&!("KeyboardEvent"in window)){var l=null;o(e,"keydown",function(e){l=e.keyCode}),o(e,"keypress",function(e){return n(i,e,l)})}else{var c=null;o(e,"keydown",function(e){var t=e.keyCode;a[t]=(a[t]||0)+1,91==t||92==t?a.OSKey=!0:a.OSKey&&e.timeStamp-a.lastT>200&&1==a.count&&r(),1==a[t]&&a.count++,a.lastT=e.timeStamp;var o=n(i,e,t);return c=e.defaultPrevented,o}),o(e,"keypress",function(e){c&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),c=null)}),o(e,"keyup",function(e){var t=e.keyCode;a[t]?a.count=Math.max(a.count-1,0):r(),(91==t||92==t)&&(a.OSKey=!1),a[t]=null}),a||(r(),o(window,"focus",r))}},"object"==typeof window&&window.postMessage&&!s.isOldIE){var h=1;t.nextTick=function(e,i){i=i||window;var n="zero-timeout-message-"+h;t.addListener(i,"message",function r(o){o.data==n&&(t.stopPropagation(o),t.removeListener(i,"message",r),e())}),i.postMessage(n,"*")}}t.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,i){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){for(var i="";t>0;)1&t&&(i+=e),(t>>=1)&&(e+=e);return i};var n=/^\s\s*/,r=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(n,"")},t.stringTrimRight=function(e){return e.replace(r,"")},t.copyObject=function(e){var t={};for(var i in e)t[i]=e[i];return t},t.copyArray=function(e){for(var t=[],i=0,n=e.length;n>i;i++)e[i]&&"object"==typeof e[i]?t[i]=this.copyObject(e[i]):t[i]=e[i];return t},t.deepCopy=function o(e){if("object"!=typeof e||!e)return e;var t;if(Array.isArray(e)){t=[];for(var i=0;ii?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}var s=(e("../lib/dom"),e("../lib/event"),e("../lib/useragent"),0);(function(){this.onMouseDown=function(e){var t=e.inSelection(),i=e.getDocumentPosition();this.mousedownEvent=e;var n=this.editor,r=e.getButton();if(0!==r){var o=n.getSelectionRange(),s=o.isEmpty();return n.$blockScrolling++,s&&n.selection.moveToPosition(i),n.$blockScrolling--,void n.textInput.onContextMenu(e.domEvent)}return this.mousedownEvent.time=Date.now(),!t||n.isFocused()||(n.focus(),!this.$focusTimout||this.$clickSelection||n.inMultiSelectMode)?(this.captureMouse(e),this.startSelect(i,e.domEvent._clicks>1),e.preventDefault()):(this.setState("focusWait"),void this.captureMouse(e))},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var i=this.editor;i.$blockScrolling++,this.mousedownEvent.getShiftKey()?i.selection.selectToPosition(e):t||i.selection.moveToPosition(e),t||this.select(),i.renderer.scroller.setCapture&&i.renderer.scroller.setCapture(),i.setStyle("ace_selecting"),this.setState("select"),i.$blockScrolling--},this.select=function(){var e,t=this.editor,i=t.renderer.screenToTextCoordinates(this.x,this.y);if(t.$blockScrolling++,this.$clickSelection){var n=this.$clickSelection.comparePoint(i);if(-1==n)e=this.$clickSelection.end;else if(1==n)e=this.$clickSelection.start;else{var r=o(this.$clickSelection,i);i=r.cursor,e=r.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(i),t.$blockScrolling--,t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,i=this.editor,n=i.renderer.screenToTextCoordinates(this.x,this.y),r=i.selection[e](n.row,n.column);if(i.$blockScrolling++,this.$clickSelection){var s=this.$clickSelection.comparePoint(r.start),a=this.$clickSelection.comparePoint(r.end);if(-1==s&&0>=a)t=this.$clickSelection.end,(r.end.row!=n.row||r.end.column!=n.column)&&(n=r.start);else if(1==a&&s>=0)t=this.$clickSelection.start,(r.start.row!=n.row||r.start.column!=n.column)&&(n=r.end);else if(-1==s&&1==a)n=r.end,t=r.start;else{var l=o(this.$clickSelection,n);n=l.cursor,t=l.anchor}i.selection.setSelectionAnchor(t.row,t.column)}i.selection.selectToPosition(n),i.$blockScrolling--,i.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>s||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),i=this.editor,n=i.session,r=n.getBracketRange(t);r?(r.isEmpty()&&(r.start.column--,r.end.column++),this.setState("select")):(r=i.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=r,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),i=this.editor;this.setState("selectByLines");var n=i.getSelectionRange();n.isMultiLine()&&n.contains(t.row,t.column)?(this.$clickSelection=i.selection.getLineRange(n.start.row),this.$clickSelection.end=i.selection.getLineRange(n.end.row).end):this.$clickSelection=i.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(!e.getAccelKey()){e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=e.domEvent.timeStamp,i=t-(this.$lastScrollTime||0),n=this.editor,r=n.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);return r||200>i?(this.$lastScrollTime=t,n.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()):void 0}},this.onTouchMove=function(e){var t=e.domEvent.timeStamp,i=t-(this.$lastScrollTime||0),n=this.editor,r=n.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);return r||200>i?(this.$lastScrollTime=t,n.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()):void 0}}).call(n.prototype),t.DefaultHandlers=n}),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,i){"use strict";function n(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var r=(e("./lib/oop"),e("./lib/dom"));(function(){this.$init=function(){return this.$element=r.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){r.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){r.addCssClass(this.getElement(),e)},this.show=function(e,t,i){null!=e&&this.setText(e),null!=t&&null!=i&&this.setPosition(t,i),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(n.prototype),t.Tooltip=n}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,i){"use strict";function n(e){function t(){var t=d.getDocumentPosition().row,r=l.$annotations[t];if(!r)return i();var o=s.session.getLength();if(t==o){var a=s.renderer.pixelToScreenCoordinates(0,d.y).row,h=d.$pos;if(a>s.session.documentToScreenRow(h.row,h.column))return i()}if(u!=r)if(u=r.text.join("
"),c.setHtml(u),c.show(),s.on("mousewheel",i),e.$tooltipFollowsMouse)n(d);else{var f=d.domEvent.target,p=f.getBoundingClientRect(),m=c.getElement().style;m.left=p.right+"px",m.top=p.bottom+"px"}}function i(){h&&(h=clearTimeout(h)),u&&(c.hide(),u=null,s.removeEventListener("mousewheel",i))}function n(e){c.setPosition(e.x,e.y)}var s=e.editor,l=s.renderer.$gutterLayer,c=new r(s.container);e.editor.setDefaultHandler("guttermousedown",function(t){if(s.isFocused()&&0==t.getButton()){var i=l.getRegion(t);if("foldWidgets"!=i){var n=t.getDocumentPosition().row,r=s.session.selection;if(t.getShiftKey())r.selectTo(n,0);else{if(2==t.domEvent.detail)return s.selectAll(),t.preventDefault();e.$clickSelection=s.selection.getLineRange(n)}return e.setState("selectByLines"),e.captureMouse(t),t.preventDefault()}}});var h,d,u;e.editor.setDefaultHandler("guttermousemove",function(r){var s=r.domEvent.target||r.domEvent.srcElement;return o.hasCssClass(s,"ace_fold-widget")?i():(u&&e.$tooltipFollowsMouse&&n(r),d=r,void(h||(h=setTimeout(function(){h=null,d&&!e.isMousePressed?t():i()},50))))}),a.addListener(s.renderer.$gutter,"mouseout",function(e){d=null,u&&!h&&(h=setTimeout(function(){h=null,i()},50))}),s.on("changeSession",i)}function r(e){l.call(this,e)}var o=e("../lib/dom"),s=e("../lib/oop"),a=e("../lib/event"),l=e("../tooltip").Tooltip;s.inherits(r,l),function(){this.setPosition=function(e,t){var i=window.innerWidth||document.documentElement.clientWidth,n=window.innerHeight||document.documentElement.clientHeight,r=this.getWidth(),o=this.getHeight();e+=15,t+=15,e+r>i&&(e-=e+r-i),t+o>n&&(t-=20+o),l.prototype.setPosition.call(this,e,t)}}.call(r.prototype),t.GutterHandler=n}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";var n=e("../lib/event"),r=e("../lib/useragent"),o=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){n.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){n.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var i=this.getDocumentPosition();this.$inSelection=t.contains(i.row,i.column)}return this.$inSelection},this.getButton=function(){return n.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=r.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(o.prototype)}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";function n(e){function t(e,t){var i=Date.now(),n=!t||e.row!=t.row,o=!t||e.column!=t.column;if(!D||n||o)g.$blockScrolling+=1,g.moveCursorToPosition(e),g.$blockScrolling-=1,D=i,k={x:y,y:C};else{var s=r(k.x,k.y,y,C);s>h?D=null:i-D>=c&&(g.renderer.scrollCursorIntoView(),D=null)}}function i(e,t){var i=Date.now(),n=g.renderer.layerConfig.lineHeight,r=g.renderer.layerConfig.characterWidth,o=g.renderer.scroller.getBoundingClientRect(),s={x:{left:y-o.left,right:o.right-y},y:{top:C-o.top,bottom:o.bottom-C}},a=Math.min(s.x.left,s.x.right),c=Math.min(s.y.top,s.y.bottom),h={row:e.row,column:e.column};2>=a/r&&(h.column+=s.x.left=c/n&&(h.row+=s.y.top=l&&g.renderer.scrollCursorIntoView(h):$=i:$=null}function n(){var e=F;F=g.renderer.screenToTextCoordinates(y,C),t(F,e),i(F,e)}function d(){b=g.selection.toOrientedRange(),A=g.session.addMarker(b,"ace_selection",g.getSelectionStyle()),g.clearSelection(),g.isFocused()&&g.renderer.$cursorLayer.setBlinking(!1),clearInterval(E),n(),E=setInterval(n,20),_=0,s.addListener(document,"mousemove",f)}function u(){clearInterval(E),g.session.removeMarker(A),A=null,g.$blockScrolling+=1,g.selection.fromOrientedRange(b),g.$blockScrolling-=1,g.isFocused()&&!S&&g.renderer.$cursorLayer.setBlinking(!g.getReadOnly()),b=null,F=null,_=0,$=null,D=null,s.removeListener(document,"mousemove",f)}function f(){null==L&&(L=setTimeout(function(){null!=L&&A&&u()},20))}function p(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return"text/plain"==e||"Text"==e})}function m(e){var t=["copy","copymove","all","uninitialized"],i=["move","copymove","linkmove","all","uninitialized"],n=a.isMac?e.altKey:e.ctrlKey,r="uninitialized";try{r=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return n&&t.indexOf(r)>=0?o="copy":i.indexOf(r)>=0?o="move":t.indexOf(r)>=0&&(o="copy"),o}var g=e.editor,v=o.createElement("img");v.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",a.isOpera&&(v.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var w=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];w.forEach(function(t){e[t]=this[t]},this),g.addEventListener("mousedown",this.onMouseDown.bind(e));var A,y,C,E,b,F,x,S,$,D,k,B=g.container,_=0;this.onDragStart=function(e){if(this.cancelDrag||!B.draggable){var t=this;return setTimeout(function(){t.startSelect(),t.captureMouse(e)},0),e.preventDefault()}b=g.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=g.getReadOnly()?"copy":"copyMove",a.isOpera&&(g.container.appendChild(v),v.scrollTop=0),i.setDragImage&&i.setDragImage(v,0,0),a.isOpera&&g.container.removeChild(v),i.clearData(),i.setData("Text",g.session.getTextRange()),S=!0,this.setState("drag")},this.onDragEnd=function(e){if(B.draggable=!1,S=!1,this.setState(null),!g.getReadOnly()){var t=e.dataTransfer.dropEffect;x||"move"!=t||g.session.remove(g.getSelectionRange()),g.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){return!g.getReadOnly()&&p(e.dataTransfer)?(y=e.clientX,C=e.clientY,A||d(),_++,e.dataTransfer.dropEffect=x=m(e),s.preventDefault(e)):void 0},this.onDragOver=function(e){return!g.getReadOnly()&&p(e.dataTransfer)?(y=e.clientX,C=e.clientY,A||(d(),_++),null!==L&&(L=null),e.dataTransfer.dropEffect=x=m(e),s.preventDefault(e)):void 0},this.onDragLeave=function(e){return _--,0>=_&&A?(u(),x=null,s.preventDefault(e)):void 0},this.onDrop=function(e){if(F){var t=e.dataTransfer;if(S)switch(x){case"move":b=b.contains(F.row,F.column)?{start:F,end:F}:g.moveText(b,F);break;case"copy":b=g.moveText(b,F,!0)}else{var i=t.getData("Text");b={start:F,end:g.session.insert(F,i)},g.focus(),x=null}return u(),s.preventDefault(e)}},s.addListener(B,"dragstart",this.onDragStart.bind(e)),s.addListener(B,"dragend",this.onDragEnd.bind(e)),s.addListener(B,"dragenter",this.onDragEnter.bind(e)),s.addListener(B,"dragover",this.onDragOver.bind(e)),s.addListener(B,"dragleave",this.onDragLeave.bind(e)),s.addListener(B,"drop",this.onDrop.bind(e));var L=null}function r(e,t,i,n){return Math.sqrt(Math.pow(i-e,2)+Math.pow(n-t,2))}var o=e("../lib/dom"),s=e("../lib/event"),a=e("../lib/useragent"),l=200,c=200,h=5;(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor,t=e.container;t.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var i=a.isWin?"default":"move";e.renderer.setCursorStyle(i),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(a.isIE&&"dragReady"==this.state){var i=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);i>3&&t.dragDrop()}if("dragWait"===this.state){var i=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);i>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(this.$dragEnabled){this.mousedownEvent=e;var t=this.editor,i=e.inSelection(),n=e.getButton(),r=e.domEvent.detail||1;if(1===r&&0===n&&i){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;if("unselectable"in o&&(o.unselectable="on"),t.getDragDelay()){if(a.isWebKit){this.cancelDrag=!0;var s=t.container;s.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}}).call(n.prototype),t.DragdropHandler=n}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";var n=e("./dom");t.get=function(e,t){var i=new XMLHttpRequest;i.open("GET",e,!0),i.onreadystatechange=function(){4===i.readyState&&t(i.responseText)},i.send(null)},t.loadScript=function(e,t){var i=n.getDocumentHead(),r=document.createElement("script");r.src=e,i.appendChild(r),r.onload=r.onreadystatechange=function(e,i){(i||!r.readyState||"loaded"==r.readyState||"complete"==r.readyState)&&(r=r.onload=r.onreadystatechange=null,i||t())}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,i){"use strict";var n={},r=function(){this.propagationStopped=!0},o=function(){this.defaultPrevented=!0};n._emit=n._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var i=this._eventRegistry[e]||[],n=this._defaultHandlers[e];if(i.length||n){"object"==typeof t&&t||(t={}),t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=r),t.preventDefault||(t.preventDefault=o),i=i.slice();for(var s=0;sv;v++){var A=g[v];0===A.name.indexOf("data-ace-")&&(s[o(A.name.replace(/^data-ace-/,""))]=A.value)}var y=m.match(/^(.*)\/ace(\-\w+)?\.js(\?|$)/);y&&(a=y[1])}}a&&(s.base=s.base||a,s.packaged=!0),s.basePath=s.base,s.workerPath=s.workerPath||s.base,s.modePath=s.modePath||s.base,s.themePath=s.themePath||s.base,delete s.base;for(var C in s)"undefined"!=typeof s[C]&&t.set(C,s[C])}function o(e){return e.replace(/-(.)/g,function(e,t){return t.toUpperCase()})}var s=e("./lib/lang"),a=(e("./lib/oop"),e("./lib/net")),l=e("./lib/app_config").AppConfig;n.exports=t=new l;var c=function(){return this||"undefined"!=typeof window&&window}(),h={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:"",suffix:".js",$moduleUrls:{}};t.get=function(e){if(!h.hasOwnProperty(e))throw new Error("Unknown config key: "+e);return h[e]},t.set=function(e,t){if(!h.hasOwnProperty(e))throw new Error("Unknown config key: "+e);h[e]=t},t.all=function(){return s.copyObject(h)},t.moduleUrl=function(e,t){if(h.$moduleUrls[e])return h.$moduleUrls[e];var i=e.split("/");t=t||i[i.length-2]||"";var n="snippets"==t?"/":"-",r=i[i.length-1];if("worker"==t&&"-"==n){var o=new RegExp("^"+t+"[\\-_]|[\\-_]"+t+"$","g");r=r.replace(o,"")}(!r||r==t)&&i.length>1&&(r=i[i.length-2]);var s=h[t+"Path"];return null==s?s=h.basePath:"/"==n&&(t=n=""),s&&"/"!=s.slice(-1)&&(s+="/"),s+t+n+r+this.get("suffix")},t.setModuleUrl=function(e,t){return h.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(i,n){var r,o;Array.isArray(i)&&(o=i[0],i=i[1]);try{r=e(i)}catch(s){}if(r&&!t.$loading[i])return n&&n(r);if(t.$loading[i]||(t.$loading[i]=[]),t.$loading[i].push(n),!(t.$loading[i].length>1)){var l=function(){e([i],function(e){t._emit("load.module",{name:i,module:e});var n=t.$loading[i];t.$loading[i]=null,n.forEach(function(t){t&&t(e)})})};return t.get("packaged")?void a.loadScript(t.moduleUrl(i,o),l):l()}},r(!0),t.init=r}),ace.define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(e,t,i){"use strict";var n=e("../lib/event"),r=e("../lib/useragent"),o=e("./default_handlers").DefaultHandlers,s=e("./default_gutter_handler").GutterHandler,a=e("./mouse_event").MouseEvent,l=e("./dragdrop_handler").DragdropHandler,c=e("../config"),h=function(e){var t=this;this.editor=e,new o(this),new s(this),new l(this);var i=function(t){document.hasFocus&&document.hasFocus()||window.focus(),e.focus(),e.isFocused()||window.focus()},a=e.renderer.getMouseEventTarget();n.addListener(a,"click",this.onMouseEvent.bind(this,"click")),n.addListener(a,"mousemove",this.onMouseMove.bind(this,"mousemove")),n.addMultiMouseDownListener(a,[400,300,250],this,"onMouseEvent"),e.renderer.scrollBarV&&(n.addMultiMouseDownListener(e.renderer.scrollBarV.inner,[400,300,250],this,"onMouseEvent"),n.addMultiMouseDownListener(e.renderer.scrollBarH.inner,[400,300,250],this,"onMouseEvent"),r.isIE&&(n.addListener(e.renderer.scrollBarV.element,"mousedown",i),n.addListener(e.renderer.scrollBarH.element,"mousedown",i))),n.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),n.addTouchMoveListener(e.container,this.onTouchMove.bind(this,"touchmove"));var c=e.renderer.$gutter;n.addListener(c,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),n.addListener(c,"click",this.onMouseEvent.bind(this,"gutterclick")),n.addListener(c,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),n.addListener(c,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),n.addListener(a,"mousedown",i),n.addListener(c,"mousedown",function(t){return e.focus(),n.preventDefault(t)}),e.on("mousemove",function(i){if(!t.state&&!t.$dragDelay&&t.$dragEnabled){var n=e.renderer.screenToTextCoordinates(i.x,i.y),r=e.session.selection.getRange(),o=e.renderer;o.setCursorStyle(!r.isEmpty()&&r.insideStart(n.row,n.column)?"default":"")}})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new a(t,this.editor))},this.onMouseMove=function(e,t){var i=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;i&&i.length&&this.editor._emit(e,new a(t,this.editor))},this.onMouseWheel=function(e,t){var i=new a(t,this.editor);i.speed=2*this.$scrollSpeed,i.wheelX=t.wheelX,i.wheelY=t.wheelY,this.editor._emit(e,i)},this.onTouchMove=function(e,t){var i=new a(t,this.editor);i.speed=1,i.wheelX=t.wheelX,i.wheelY=t.wheelY,this.editor._emit(e,i)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var i=this.editor.renderer;i.$keepTextAreaAtCursor&&(i.$keepTextAreaAtCursor=null);var o=this,s=function(e){if(e){if(r.isWebKit&&!e.which&&o.releaseMouse)return o.releaseMouse();o.x=e.clientX,o.y=e.clientY,t&&t(e),o.mouseEvent=new a(e,o.editor),o.$mouseMoved=!0}},l=function(e){clearInterval(h),c(),o[o.state+"End"]&&o[o.state+"End"](e),o.state="",null==i.$keepTextAreaAtCursor&&(i.$keepTextAreaAtCursor=!0,i.$moveTextAreaToCursor()),o.isMousePressed=!1,o.$onCaptureMouseMove=o.releaseMouse=null,e&&o.onMouseEvent("mouseup",e)},c=function(){o[o.state]&&o[o.state](),o.$mouseMoved=!1};if(r.isOldIE&&"dblclick"==e.domEvent.type)return setTimeout(function(){l(e)});o.$onCaptureMouseMove=s,o.releaseMouse=n.capture(this.editor.container,s,l);var h=setInterval(c,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){t&&t.domEvent&&"contextmenu"!=t.domEvent.type||(this.editor.off("nativecontextmenu",e),t&&t.domEvent&&n.stopEvent(t.domEvent))}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(h.prototype),c.defineOptions(h.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:r.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=h}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,i){"use strict";function n(e){e.on("click",function(t){var i=t.getDocumentPosition(),n=e.session,r=n.getFoldAt(i.row,i.column,1);r&&(t.getAccelKey()?n.removeFold(r):n.expandFold(r),t.stop())}),e.on("gutterclick",function(t){var i=e.renderer.$gutterLayer.getRegion(t);if("foldWidgets"==i){var n=t.getDocumentPosition().row,r=e.session;r.foldWidgets&&r.foldWidgets[n]&&e.session.onFoldWidgetClick(n,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){var i=e.renderer.$gutterLayer.getRegion(t);if("foldWidgets"==i){var n=t.getDocumentPosition().row,r=e.session,o=r.getParentFoldRangeData(n,!0),s=o.range||o.firstRange;if(s){n=s.start.row;var a=r.getFoldAt(n,r.getLine(n).length,1);a?r.removeFold(a):(r.addFold("...",s),e.renderer.scrollCursorIntoView({row:s.start.row,column:0}))}t.stop()}})}t.FoldHandler=n}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,i){"use strict";var n=e("../lib/keys"),r=e("../lib/event"),o=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]!=e){for(;t[t.length-1]&&t[t.length-1]!=this.$defaultHandler;)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)}},this.addKeyboardHandler=function(e,t){if(e){"function"!=typeof e||e.handleKeyboard||(e.handleKeyboard=e);var i=this.$handlers.indexOf(e);-1!=i&&this.$handlers.splice(i,1),void 0==t?this.$handlers.push(e):this.$handlers.splice(t,0,e),-1==i&&e.attach&&e.attach(this.$editor)}},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return-1==t?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(i){return i.getStatusText&&i.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,i,n){for(var o,s=!1,a=this.$editor.commands,l=this.$handlers.length;l--&&(o=this.$handlers[l].handleKeyboard(this.$data,e,t,i,n),!(o&&o.command&&(s="null"==o.command?!0:a.exec(o.command,this.$editor,o.args,n),s&&n&&-1!=e&&1!=o.passEvent&&1!=o.command.passEvent&&r.stopEvent(n),s))););return s||-1!=e||(o={command:"insertstring"},s=a.exec("insertstring",this.$editor,t)),s&&this.$editor._signal("keyboardActivity",o),s},this.onCommandKey=function(e,t,i){var r=n.keyCodeToString(i);this.$callKeyboardHandlers(t,r,i,e)},this.onTextInput=function(e){this.$callKeyboardHandlers(-1,e)}}).call(o.prototype),t.KeyBinding=o}),ace.define("ace/range",["require","exports","module"],function(e,t,i){"use strict";var n=function(e,t){return e.row-t.row||e.column-t.column},r=function(e,t,i,n){this.start={row:e,column:t},this.end={row:i,column:n}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return 0==this.compare(e,t)},this.compareRange=function(e){var t,i=e.end,n=e.start;return t=this.compare(i.row,i.column),1==t?(t=this.compare(n.row,n.column),1==t?2:0==t?1:0):-1==t?-2:(t=this.compare(n.row,n.column),-1==t?-1:1==t?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return 0==this.comparePoint(e.start)&&0==this.comparePoint(e.end)},this.intersects=function(e){var t=this.compareRange(e);return-1==t||0==t||1==t},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){"object"==typeof e?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){"object"==typeof e?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return 0==this.compare(e,t)?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return 0==this.compare(e,t)?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return 0==this.compare(e,t)?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return this.isMultiLine()||e!==this.start.row?ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0:tthis.end.column?1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){ -if(this.end.row>t)var i={row:t+1,column:0};else if(this.end.rowt)var n={row:t+1,column:0};else if(this.start.rowt.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?s.fromPoints(t,t):this.isBackwards()?s.fromPoints(t,e):s.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if("undefined"==typeof t){var i=e||this.lead;e=i.row,t=i.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var i,n="number"==typeof e?e:this.lead.row,r=this.session.getFoldLine(n);return r?(n=r.start.row,i=r.end.row):i=n,t===!0?new s(n,0,i,this.session.getLine(i).length):new s(n,0,i+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,-1))this.moveCursorTo(e.start.row,e.start.column);else if(0===t.column)t.row>0&&this.moveCursorTo(t.row-1,this.doc.getLine(t.row-1).length);else{var i=this.session.getTabSize();this.session.isTabStop(t)&&this.doc.getLine(t.row).slice(t.column-i,t.column).split(" ").length-1==i?this.moveCursorBy(0,-i):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,1))this.moveCursorTo(e.end.row,e.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=n)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e,t=this.lead.row,i=this.lead.column,n=this.doc.getLine(t),r=n.substring(i);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var o=this.session.getFoldAt(t,i,1);return o?void this.moveCursorTo(o.end.row,o.end.column):((e=this.session.nonTokenRe.exec(r))&&(i+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(i)),i>=n.length?(this.moveCursorTo(t,n.length),this.moveCursorRight(),void(t=i?(this.moveCursorTo(t,0),this.moveCursorLeft(),void(t>0&&this.moveCursorWordLeft())):((o=this.session.tokenRe.exec(s))&&(i-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),void this.moveCursorTo(t,i))},this.$shortWordEndIndex=function(e){var t,i,n=0,r=/\s/,o=this.session.tokenRe;if(o.lastIndex=0,t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{for(;(i=e[n])&&r.test(i);)n++;if(1>n)for(o.lastIndex=0;(i=e[n])&&!o.test(i);)if(o.lastIndex=0,n++,r.test(i)){if(n>2){n--;break}for(;(i=e[n])&&r.test(i);)n++;if(n>2)break}}return o.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,i=this.doc.getLine(e),n=i.substring(t),r=this.session.getFoldAt(e,t,1);if(r)return this.moveCursorTo(r.end.row,r.end.column);if(t==i.length){var o=this.doc.getLength();do e++,n=this.doc.getLine(e);while(o>e&&/^\s*$/.test(n));/^\s+/.test(n)||(n=""),t=0}var s=this.$shortWordEndIndex(n);this.moveCursorTo(e,t+s)},this.moveCursorShortWordLeft=function(){var e,t=this.lead.row,i=this.lead.column;if(e=this.session.getFoldAt(t,i,-1))return this.moveCursorTo(e.start.row,e.start.column);var n=this.session.getLine(t).substring(0,i);if(0===i){do t--,n=this.doc.getLine(t);while(t>0&&/^\s*$/.test(n));i=n.length,/\s+$/.test(n)||(n="")}var o=r.stringReverse(n),s=this.$shortWordEndIndex(o);return this.moveCursorTo(t,i-s)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var i=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===t&&(this.$desiredColumn?i.column=this.$desiredColumn:this.$desiredColumn=i.column);var n=this.session.screenToDocumentPosition(i.row+e,i.column);0!==e&&0===t&&n.row===this.lead.row&&n.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[n.row]&&(n.row>0||e>0)&&n.row++,this.moveCursorTo(n.row,n.column+t,0===t)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,i){var n=this.session.getFoldAt(e,t,1);n&&(e=n.start.row,t=n.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,i||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,i){var n=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(n.row,n.column,i)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e.call(null,this);var i=this.getCursor();return s.fromPoints(t,i)}catch(n){return s.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(void 0==e.start){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var i=s.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(i.cursor=i.start),this.addRange(i,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(a.prototype),t.Selection=a}),ace.define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,i){"use strict";var n=e("./config"),r=2e3,o=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){for(var i=this.states[t],n=[],r=0,o=this.matchMappings[t]={defaultToken:"text"},s="g",a=[],l=0;l1?c.onMatch=this.$applyToken:c.onMatch=c.token),d>1&&(/\\\d/.test(c.regex)?h=c.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+r+1)}):(d=1,h=this.removeCapturingGroups(c.regex)),c.splitRegex||"string"==typeof c.token||a.push(c)),o[r]=l,r+=d,n.push(h),c.onMatch||(c.onMatch=null)}}n.length||(o[0]=0,n.push("$")),a.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,s)},this),this.regExps[t]=new RegExp("("+n.join(")|(")+")|($)",s)}};(function(){this.$setMaxTokenCount=function(e){r=0|e},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),i=this.token.apply(this,t);if("string"==typeof i)return[{type:i,value:e}];for(var n=[],r=0,o=i.length;o>r;r++)t[r]&&(n[n.length]={type:i[r],value:t[r]});return n},this.$arrayTokens=function(e){if(!e)return[];var t=this.splitRegex.exec(e);if(!t)return"text";for(var i=[],n=this.tokenArray,r=0,o=n.length;o>r;r++)t[r+1]&&(i[i.length]={type:n[r],value:t[r+1]});return i},this.removeCapturingGroups=function(e){var t=e.replace(/\[(?:\\.|[^\]])*?\]|\\.|\(\?[:=!]|(\()/g,function(e,t){return t?"(?:":e});return t},this.createSplitterRegexp=function(e,t){if(-1!=e.indexOf("(?=")){var i=0,n=!1,r={};e.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g,function(e,t,o,s,a,l){return n?n="]"!=a:a?n=!0:s?(i==r.stack&&(r.end=l+1,r.stack=-1),i--):o&&(i++,1!=o.length&&(r.stack=i,r.start=l)),e}),null!=r.end&&/^\)*$/.test(e.substr(r.end))&&(e=e.substring(0,r.start)+e.substr(r.end))}return"^"!=e.charAt(0)&&(e="^"+e),"$"!=e.charAt(e.length-1)&&(e+="$"),new RegExp(e,(t||"").replace("g",""))},this.getLineTokens=function(e,t){if(t&&"string"!=typeof t){var i=t.slice(0);t=i[0],"#tmp"===t&&(i.shift(),t=i.shift())}else var i=[];var n=t||"start",o=this.states[n];o||(n="start",o=this.states[n]);var s=this.matchMappings[n],a=this.regExps[n];a.lastIndex=0;for(var l,c=[],h=0,d=0,u={type:null,value:""};l=a.exec(e);){var f=s.defaultToken,p=null,m=l[0],g=a.lastIndex;if(g-m.length>h){var v=e.substring(h,g-m.length);u.type==f?u.value+=v:(u.type&&c.push(u),u={type:f,value:v})}for(var w=0;wr){for(d>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});h1&&i[0]!==n&&i.unshift("#tmp",n),{tokens:c,state:i.length?i:n}},this.reportError=n.reportError}).call(o.prototype),t.Tokenizer=o}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,i){"use strict";var n=e("../lib/lang"),r=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(t)for(var i in e){for(var n=e[i],r=0;r=this.$rowTokens.length;){if(this.$row+=1,e||(e=this.$session.getLength()),this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,i=e[t].start;if(void 0!==i)return i;for(i=0;t>0;)t-=1,i+=e[t].value.length;return i},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}}}).call(n.prototype),t.TokenIterator=n}),ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t,i){"use strict";var n=e("../tokenizer").Tokenizer,r=e("./text_highlight_rules").TextHighlightRules,o=e("./behaviour").Behaviour,s=e("../unicode"),a=e("../lib/lang"),l=e("../token_iterator").TokenIterator,c=e("../range").Range,h=function(){this.HighlightRules=r,this.$behaviour=new o};(function(){this.tokenRe=new RegExp("^["+s.packages.L+s.packages.Mn+s.packages.Mc+s.packages.Nd+s.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+s.packages.L+s.packages.Mn+s.packages.Mc+s.packages.Nd+s.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules,this.$tokenizer=new n(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,i,n){function r(e){for(var t=i;n>=t;t++)e(o.getLine(t),t)}var o=t.doc,s=!0,l=!0,c=1/0,h=t.getTabSize(),d=!1;if(this.lineCommentStart){if(Array.isArray(this.lineCommentStart))var u=this.lineCommentStart.map(a.escapeRegExp).join("|"),f=this.lineCommentStart[0];else var u=a.escapeRegExp(this.lineCommentStart),f=this.lineCommentStart;u=new RegExp("^(\\s*)(?:"+u+") ?"),d=t.getUseSoftTabs();var p=function(e,t){var i=e.match(u);if(i){var n=i[1].length,r=i[0].length;w(e,n,r)||" "!=i[0][r-1]||r--,o.removeInLine(t,n,r)}},m=f+" ",g=function(e,t){(!s||/\S/.test(e))&&(w(e,c,c)?o.insertInLine({row:t,column:c},m):o.insertInLine({row:t,column:c},f))},v=function(e,t){return u.test(e)},w=function(e,t,i){for(var n=0;t--&&" "==e.charAt(t);)n++;if(n%h!=0)return!1;for(var n=0;" "==e.charAt(i++);)n++;return h>2?n%h!=h-1:n%h==0}}else{if(!this.blockComment)return!1;var f=this.blockComment.start,A=this.blockComment.end,u=new RegExp("^(\\s*)(?:"+a.escapeRegExp(f)+")"),y=new RegExp("(?:"+a.escapeRegExp(A)+")\\s*$"),g=function(e,t){v(e,t)||(!s||/\S/.test(e))&&(o.insertInLine({row:t,column:e.length},A),o.insertInLine({row:t,column:c},f))},p=function(e,t){var i;(i=e.match(y))&&o.removeInLine(t,e.length-i[0].length,e.length),(i=e.match(u))&&o.removeInLine(t,i[1].length,i[0].length)},v=function(e,i){if(u.test(e))return!0;for(var n=t.getTokens(i),r=0;ri&&(c=i),l&&!v(e,t)&&(l=!1)):C>e.length&&(C=e.length)}),c==1/0&&(c=C,s=!1,l=!1),d&&c%h!=0&&(c=Math.floor(c/h)*h),r(l?p:g)},this.toggleBlockComment=function(e,t,i,n){var r=this.blockComment;if(r){!r.start&&r[0]&&(r=r[0]);var o,s,a=new l(t,n.row,n.column),h=a.getCurrentToken(),d=(t.selection,t.selection.toOrientedRange());if(h&&/comment/.test(h.type)){for(var u,f;h&&/comment/.test(h.type);){var p=h.value.indexOf(r.start);if(-1!=p){var m=a.getCurrentTokenRow(),g=a.getCurrentTokenColumn()+p;u=new c(m,g,m,g+r.start.length);break}h=a.stepBackward()}for(var a=new l(t,n.row,n.column),h=a.getCurrentToken();h&&/comment/.test(h.type);){var p=h.value.indexOf(r.end);if(-1!=p){var m=a.getCurrentTokenRow(),g=a.getCurrentTokenColumn()+p;f=new c(m,g,m,g+r.end.length);break}h=a.stepForward()}f&&t.remove(f),u&&(t.remove(u),o=u.start.row,s=-r.start.length)}else s=r.start.length,o=i.start.row,t.insert(i.end,r.end),t.insert(i.start,r.start);d.start.row==o&&(d.start.column+=s),d.end.row==o&&(d.end.column+=s),t.selection.fromOrientedRange(d)}},this.getNextLineIndent=function(e,t,i){return this.$getIndent(t)},this.checkOutdent=function(e,t,i){return!1},this.autoOutdent=function(e,t,i){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);for(var i=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"],t=0;to;o++)if("string"==typeof r[o].token)/keyword|support|storage/.test(r[o].token)&&i.push(r[o].regex);else if("object"==typeof r[o].token)for(var a=0,l=r[o].token.length;l>a;a++)if(/keyword|support|storage/.test(r[o].token[a])){var n=r[o].regex.match(/\(.+?\)/g)[a];i.push(n.substr(1,n.length-2))}this.completionKeywords=i}return e?i.concat(this.$keywordList||[]):this.$keywordList},this.$createKeywordList=function(){return this.$highlightRules||this.getTokenizer(),this.$keywordList=this.$highlightRules.$keywordList||[]},this.getCompletions=function(e,t,i,n){var r=this.$keywordList||this.$createKeywordList();return r.map(function(e){return{name:e,value:e,score:0,meta:"keyword"}})},this.$id="ace/mode/text"}).call(h.prototype),t.Mode=h}),ace.define("ace/apply_delta",["require","exports","module"],function(e,t,i){"use strict";t.applyDelta=function(e,t,i){var n=t.start.row,r=t.start.column,o=e[n]||"";switch(t.action){case"insert":var s=t.lines;if(1===s.length)e[n]=o.substring(0,r)+t.lines[0]+o.substring(r);else{var a=[n,1].concat(t.lines);e.splice.apply(e,a),e[n]=o.substring(0,r)+e[n],e[n+t.lines.length-1]+=o.substring(r)}break;case"remove":var l=t.end.column,c=t.end.row;n===c?e[n]=o.substring(0,r)+o.substring(l):e.splice(n,c-n+1,o.substring(0,r)+e[c].substring(l))}}}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/event_emitter").EventEmitter,o=t.Anchor=function(e,t,i){this.$onChange=this.onChange.bind(this),this.attach(e),"undefined"==typeof i?this.setPosition(t.row,t.column):this.setPosition(t,i)};(function(){function e(e,t,i){var n=i?e.column<=t.column:e.columnthis.row)){var i=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(i.row,i.column,!0)}},this.setPosition=function(e,t,i){var n;if(n=i?{row:e,column:t}:this.$clipPositionToDocument(e,t),this.row!=n.row||this.column!=n.column){var r={row:this.row,column:this.column};this.row=n.row,this.column=n.column,this._signal("change",{old:r,value:n})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var i={};return e>=this.document.getLength()?(i.row=Math.max(0,this.document.getLength()-1),i.column=this.document.getLine(i.row).length):0>e?(i.row=0,i.column=0):(i.row=e,i.column=Math.min(this.document.getLine(i.row).length,Math.max(0,t))),0>t&&(i.column=0),i}}).call(o.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./apply_delta").applyDelta,o=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,a=e("./anchor").Anchor,l=function(e){this.$lines=[""],0===e.length?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){n.implement(this,o),this.setValue=function(e){var t=this.getLength()-1;this.remove(new s(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new a(this,e,t)},0==="aaa".split(/a/).length?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){this.$newLineMode!==e&&(this.$newLineMode=e,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return"\r\n"==e||"\r"==e||"\n"==e},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var i=t.length-1;e.end.row-e.start.row==i&&(t[i]=t[i].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var i=this.clippedPos(e.row,e.column),n=this.pos(e.row,e.column+t.length);return this.applyDelta({start:i,end:n,action:"insert",lines:[t]},!0),this.clonePos(n)},this.clippedPos=function(e,t){var i=this.getLength();void 0===e?e=i:0>e?e=0:e>=i&&(e=i-1,t=void 0);var n=this.getLine(e);return void 0==t&&(t=n.length),t=Math.min(Math.max(t,0),n.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var i=0;e0,n=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){if(e instanceof s||(e=s.fromPoints(e.start,e.end)),0===t.length&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var i;return i=t?this.insert(e.start,t):e.start},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var i="insert"==e.action;(i?e.lines.length<=1&&!e.lines[0]:!s.comparePoints(e.start,e.end))||(i&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),r(this.$lines,e,t),this._signal("change",e))},this.$splitAndapplyLargeDelta=function(e,t){for(var i=e.lines,n=i.length,r=e.start.row,o=e.start.column,s=0,a=0;;){s=a,a+=t-1;var l=i.slice(s,a);if(a>n){e.lines=l,e.start.row=r+s,e.start.column=o;break}l.push(""),this.applyDelta({start:this.pos(r+s,o),end:this.pos(r+a,o=0),action:e.action,lines:l},!0)}},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:"insert"==e.action?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){for(var i=this.$lines||this.getAllLines(),n=this.getNewLineCharacter().length,r=t||0,o=i.length;o>r;r++)if(e-=i[r].length+n,0>e)return{row:r,column:e+i[r].length+n};return{row:o-1,column:i[o-1].length}},this.positionToIndex=function(e,t){for(var i=this.$lines||this.getAllLines(),n=this.getNewLineCharacter().length,r=0,o=Math.min(e.row,i.length),s=t||0;o>s;++s)r+=i[s].length+n;return r+e.column}}).call(l.prototype),t.Document=l}),ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/event_emitter").EventEmitter,o=function(e,t){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=e;var i=this;this.$worker=function(){if(i.running){for(var e=new Date,t=i.currentLine,n=-1,r=i.doc,o=t;i.lines[t];)t++;var s=r.getLength(),a=0;for(i.running=!1;s>t;){i.$tokenizeRow(t),n=t;do t++;while(i.lines[t]);if(a++,a%5===0&&new Date-e>20){i.running=setTimeout(i.$worker,20);break}}i.currentLine=t,n>=o&&i.fireUpdateEvent(o,n)}}};(function(){n.implement(this,r),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var i={first:e,last:t};this._signal("update",{data:i})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,i=e.end.row-t;if(0===i)this.lines[t]=null;else if("remove"==e.action)this.lines.splice(t,i+1,null),this.states.splice(t,i+1,null);else{var n=Array(i+1);n.unshift(t,1),this.lines.splice.apply(this.lines,n),this.states.splice.apply(this.states,n)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),i=this.states[e-1],n=this.tokenizer.getLineTokens(t,i,e);return this.states[e]+""!=n.state+""?(this.states[e]=n.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=n.tokens}}).call(o.prototype),t.BackgroundTokenizer=o}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,i){"use strict";var n=e("./lib/lang"),r=(e("./lib/oop"),e("./range").Range),o=function(e,t,i){this.setRegexp(e),this.clazz=t,this.type=i||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){this.regExp+""!=e+""&&(this.regExp=e,this.cache=[])},this.update=function(e,t,i,o){if(this.regExp)for(var s=o.firstRow,a=o.lastRow,l=s;a>=l;l++){var c=this.cache[l];null==c&&(c=n.getMatchOffsets(i.getLine(l),this.regExp),c.length>this.MAX_RANGES&&(c=c.slice(0,this.MAX_RANGES)),c=c.map(function(e){return new r(l,e.offset,l,e.offset+e.length)}),this.cache[l]=c.length?c:"");for(var h=c.length;h--;)t.drawSingleLineMarker(e,c[h].toScreenRange(i),this.clazz,o)}}}).call(o.prototype),t.SearchHighlight=o}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,i){"use strict";function n(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var i=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,i.end.row,i.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column); -}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,i){var n,r,o,s=0,a=this.folds,l=!0;null==t&&(t=this.end.row,i=this.end.column);for(var c=0;ce)return{row:n.start.row,column:n.start.column+e};if(e-=n.placeholder.length,0>e)return n.start;t=n.end.column}return{row:this.end.row,column:this.end.column+e}}}).call(n.prototype),t.FoldLine=n}),ace.define("ace/range_list",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("./range").Range,r=n.comparePoints,o=function(){this.ranges=[]};(function(){this.comparePoints=r,this.pointIndex=function(e,t,i){for(var n=this.ranges,o=i||0;o0)){var l=r(e,s.start);return 0===a?t&&0!==l?-o-2:o:l>0||0===l&&!t?o:-o-1}}return-o-1},this.add=function(e){var t=!e.isEmpty(),i=this.pointIndex(e.start,t);0>i&&(i=-i-1);var n=this.pointIndex(e.end,t,i);return 0>n?n=-n-1:n++,this.ranges.splice(i,n-i,e)},this.addList=function(e){for(var t=[],i=e.length;i--;)t.push.call(t,this.add(e[i]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);return t>=0?this.ranges.splice(t,1):void 0},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return r(e.start,t.start)});for(var i,n=t[0],o=1;os||(0!=s||i.isEmpty()||n.isEmpty())&&(r(i.end,n.end)<0&&(i.end.row=n.end.row,i.end.column=n.end.column),t.splice(o,1),e.push(n),n=i,o--)}return this.ranges=t,e},this.contains=function(e,t){return this.pointIndex({row:e,column:t})>=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);return t>=0?this.ranges[t]:void 0},this.clipRows=function(e,t){var i=this.ranges;if(i[0].start.row>t||i[i.length-1].start.rown&&(n=-n-1);var r=this.pointIndex({row:t,column:0},n);0>r&&(r=-r-1);for(var o=[],s=n;r>s;s++)o.push(i[s]);return o},this.removeAll=function(){return this.ranges.splice(0,this.ranges.length)},this.attach=function(e){this.session&&this.detach(),this.session=e,this.onChange=this.$onChange.bind(this),this.session.on("change",this.onChange)},this.detach=function(){this.session&&(this.session.removeListener("change",this.onChange),this.session=null)},this.$onChange=function(e){if("insert"==e.action)var t=e.start,i=e.end;else var i=e.start,t=e.end;for(var n=t.row,r=i.row,o=r-n,s=-t.column+i.column,a=this.ranges,l=0,c=a.length;c>l;l++){var h=a[l];if(!(h.end.rown)break;if(h.start.row==n&&h.start.column>=t.column&&(h.start.column==t.column&&this.$insertRight||(h.start.column+=s,h.start.row+=o)),h.end.row==n&&h.end.column>=t.column){if(h.end.column==t.column&&this.$insertRight)continue;h.end.column==t.column&&s>0&&c-1>l&&h.end.column>h.start.column&&h.end.column==a[l+1].start.column&&(h.end.column-=s),h.end.column+=s,h.end.row+=o}}}if(0!=o&&c>l)for(;c>l;l++){var h=a[l];h.start.row+=o,h.end.row+=o}}}).call(o.prototype),t.RangeList=o}),ace.define("ace/edit_session/fold",["require","exports","module","ace/range","ace/range_list","ace/lib/oop"],function(e,t,i){"use strict";function n(e,t){e.row-=t.row,0==e.row&&(e.column-=t.column)}function r(e,t){n(e.start,t),n(e.end,t)}function o(e,t){0==e.row&&(e.column+=t.column),e.row+=t.row}function s(e,t){o(e.start,t),o(e.end,t)}var a=(e("../range").Range,e("../range_list").RangeList),l=e("../lib/oop"),c=t.Fold=function(e,t){this.foldLine=null,this.placeholder=t,this.range=e,this.start=e.start,this.end=e.end,this.sameRow=e.start.row==e.end.row,this.subFolds=this.ranges=[]};l.inherits(c,a),function(){this.toString=function(){return'"'+this.placeholder+'" '+this.range.toString()},this.setFoldLine=function(e){this.foldLine=e,this.subFolds.forEach(function(t){t.setFoldLine(e)})},this.clone=function(){var e=this.range.clone(),t=new c(e,this.placeholder);return this.subFolds.forEach(function(e){t.subFolds.push(e.clone())}),t.collapseChildren=this.collapseChildren,t},this.addSubFold=function(e){if(!this.range.isEqual(e)){if(!this.range.containsRange(e))throw new Error("A fold can't intersect already existing fold"+e.range+this.range);r(e,this.start);for(var t=e.start.row,i=e.start.column,n=0,o=-1;n=e)return r;if(r.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var i=this.$foldData,n=0;for(t&&(n=i.indexOf(t)),-1==n&&(n=0),n;n=e)return r}return null},this.getFoldedRowCount=function(e,t){for(var i=this.$foldData,n=t-e+1,r=0;r=t){t>a&&(a>=e?n-=t-a:n=0);break}s>=e&&(n-=a>=e?s-a:s-e+1)}return n},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var i,n=this.$foldData,r=!1;e instanceof s?i=e:(i=new s(t,e),i.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(i.range);var a=i.start.row,l=i.start.column,c=i.end.row,h=i.end.column;if(!(c>a||a==c&&h-2>=l))throw new Error("The range has to be at least 2 characters width");var d=this.getFoldAt(a,l,1),u=this.getFoldAt(c,h,-1);if(d&&u==d)return d.addSubFold(i);d&&!d.range.isStart(a,l)&&this.removeFold(d),u&&!u.range.isEnd(c,h)&&this.removeFold(u);var f=this.getFoldsInRange(i.range);f.length>0&&(this.removeFolds(f),f.forEach(function(e){i.addSubFold(e)}));for(var p=0;p0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var i,n;if(null==e?(i=new r(0,0,this.getLength(),0),t=!0):i="number"==typeof e?new r(e,0,e,this.getLine(e).length):"row"in e?r.fromPoints(e,e):e,n=this.getFoldsInRangeList(i),t)this.removeFolds(n);else for(var o=n;o.length;)this.expandFolds(o),o=this.getFoldsInRangeList(i);return n.length?n:void 0},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var i=this.getFoldLine(e,t);return i?i.end.row:e},this.getRowFoldStart=function(e,t){var i=this.getFoldLine(e,t);return i?i.start.row:e},this.getFoldDisplayLine=function(e,t,i,n,r){null==n&&(n=e.start.row),null==r&&(r=0),null==t&&(t=e.end.row),null==i&&(i=this.getLine(t).length);var o=this.doc,s="";return e.walk(function(e,t,i,a){if(!(n>t)){if(t==n){if(r>i)return;a=Math.max(r,a)}s+=null!=e?e:o.getLine(t).substring(a,i)}},t,i),s},this.getDisplayLine=function(e,t,i,n){var r=this.getFoldLine(e);if(r)return this.getFoldDisplayLine(r,e,t,i,n);var o;return o=this.doc.getLine(e),o.substring(n||0,t||o.length)},this.$cloneFoldData=function(){var e=[];return e=this.$foldData.map(function(t){var i=t.folds.map(function(e){return e.clone()});return new o(e,i)})},this.toggleFold=function(e){var t,i,n=this.selection,r=n.getRange();if(r.isEmpty()){var o=r.start;if(t=this.getFoldAt(o.row,o.column))return void this.expandFold(t);(i=this.findMatchingBracket(o))?1==r.comparePoint(i)?r.end=i:(r.start=i,r.start.column++,r.end.column--):(i=this.findMatchingBracket({row:o.row,column:o.column+1}))?(1==r.comparePoint(i)?r.end=i:r.start=i,r.start.column++):r=this.getCommentFoldRange(o.row,o.column)||r}else{var s=this.getFoldsInRange(r);if(e&&s.length)return void this.expandFolds(s);1==s.length&&(t=s[0])}if(t||(t=this.getFoldAt(r.start.row,r.start.column)),t&&t.range.toString()==r.toString())return void this.expandFold(t);var a="...";if(!r.isMultiLine()){if(a=this.getTextRange(r),a.length<4)return;a=a.trim().substring(0,2)+".."}this.addFold(a,r)},this.getCommentFoldRange=function(e,t,i){var n=new a(this,e,t),o=n.getCurrentToken();if(o&&/^comment|string/.test(o.type)){var s=new r,l=new RegExp(o.type.replace(/\..*/,"\\."));if(1!=i){do o=n.stepBackward();while(o&&l.test(o.type));n.stepForward()}if(s.start.row=n.getCurrentTokenRow(),s.start.column=n.getCurrentTokenColumn()+2,n=new a(this,e,t),-1!=i){do o=n.stepForward();while(o&&l.test(o.type));o=n.stepBackward()}else o=n.getCurrentToken();return s.end.row=n.getCurrentTokenRow(),s.end.column=n.getCurrentTokenColumn()+o.value.length-2,s}},this.foldAll=function(e,t,i){void 0==i&&(i=1e5);var n=this.foldWidgets;if(n){t=t||this.getLength(),e=e||0;for(var r=e;t>r;r++)if(null==n[r]&&(n[r]=this.getFoldWidget(r)),"start"==n[r]){var o=this.getFoldWidgetRange(r);if(o&&o.isMultiLine()&&o.end.row<=t&&o.start.row>=e){r=o.end.row;try{var s=this.addFold("...",o);s&&(s.collapseChildren=i)}catch(a){}}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle!=e){this.$foldStyle=e,"manual"==e&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)}},this.$setFolding=function(e){if(this.$foldMode!=e){if(this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation"),!e||"manual"==this.$foldStyle)return void(this.foldWidgets=null);this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)}},this.getParentFoldRangeData=function(e,t){var i=this.foldWidgets;if(!i||t&&i[e])return{};for(var n,r=e-1;r>=0;){var o=i[r];if(null==o&&(o=i[r]=this.getFoldWidget(r)),"start"==o){var s=this.getFoldWidgetRange(r);if(n||(n=s),s&&s.end.row>=e)break}r--}return{range:-1!==r&&s,firstRange:n}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var i={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},n=this.$toggleFoldWidget(e,i);if(!n){var r=t.target||t.srcElement;r&&/ace_fold-widget/.test(r.className)&&(r.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(this.getFoldWidget){var i=this.getFoldWidget(e),n=this.getLine(e),r="end"===i?-1:1,o=this.getFoldAt(e,-1===r?0:n.length,r);if(o)return void(t.children||t.all?this.removeFold(o):this.expandFold(o));var s=this.getFoldWidgetRange(e,!0);if(s&&!s.isMultiLine()&&(o=this.getFoldAt(s.start.row,s.start.column,1),o&&s.isEqual(o.range)))return void this.removeFold(o);if(t.siblings){var a=this.getParentFoldRangeData(e);if(a.range)var l=a.range.start.row+1,c=a.range.end.row;this.foldAll(l,c,t.all?1e4:0)}else t.children?(c=s?s.end.row:this.getLength(),this.foldAll(e+1,c,t.all?1e4:0)):s&&(t.all&&(s.collapseChildren=1e4),this.addFold("...",s));return s}},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var i=this.$toggleFoldWidget(t,{});if(!i){var n=this.getParentFoldRangeData(t,!0);if(i=n.range||n.firstRange){t=i.start.row;var r=this.getFoldAt(t,this.getLine(t).length,1);r?this.removeFold(r):this.addFold("...",i)}}},this.updateFoldWidgets=function(e){var t=e.start.row,i=e.end.row-t;if(0===i)this.foldWidgets[t]=null;else if("remove"==e.action)this.foldWidgets.splice(t,i+1,null);else{var n=Array(i+1);n.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,n)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var r=e("../range").Range,o=e("./fold_line").FoldLine,s=e("./fold").Fold,a=e("../token_iterator").TokenIterator;t.Folding=n}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,i){"use strict";function n(){this.findMatchingBracket=function(e,t){if(0==e.column)return null;var i=t||this.getLine(e.row).charAt(e.column-1);if(""==i)return null;var n=i.match(/([\(\[\{])|([\)\]\}])/);return n?n[1]?this.$findClosingBracket(n[1],e):this.$findOpeningBracket(n[2],e):null},this.getBracketRange=function(e){var t,i=this.getLine(e.row),n=!0,r=i.charAt(e.column-1),s=r&&r.match(/([\(\[\{])|([\)\]\}])/);if(s||(r=i.charAt(e.column),e={row:e.row,column:e.column+1},s=r&&r.match(/([\(\[\{])|([\)\]\}])/),n=!1),!s)return null;if(s[1]){var a=this.$findClosingBracket(s[1],e);if(!a)return null;t=o.fromPoints(e,a),n||(t.end.column++,t.start.column--),t.cursor=t.end}else{var a=this.$findOpeningBracket(s[2],e);if(!a)return null;t=o.fromPoints(a,e),n||(t.start.column++,t.end.column--),t.cursor=t.start}return t},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,i){var n=this.$brackets[e],o=1,s=new r(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){i||(i=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-s.getCurrentTokenColumn()-2,c=a.value;;){for(;l>=0;){var h=c.charAt(l);if(h==n){if(o-=1,0==o)return{row:s.getCurrentTokenRow(),column:l+s.getCurrentTokenColumn()}}else h==e&&(o+=1);l-=1}do a=s.stepBackward();while(a&&!i.test(a.type));if(null==a)break;c=a.value,l=c.length-1}return null}},this.$findClosingBracket=function(e,t,i){var n=this.$brackets[e],o=1,s=new r(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){i||(i=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-s.getCurrentTokenColumn();;){for(var c=a.value,h=c.length;h>l;){var d=c.charAt(l);if(d==n){if(o-=1,0==o)return{row:s.getCurrentTokenRow(),column:l+s.getCurrentTokenColumn()}}else d==e&&(o+=1);l+=1}do a=s.stepForward();while(a&&!i.test(a.type));if(null==a)break;l=0}return null}}}var r=e("../token_iterator").TokenIterator,o=e("../range").Range;t.BracketMatch=n}),ace.define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/config","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/edit_session/folding","ace/edit_session/bracket_match"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/lang"),o=e("./config"),s=e("./lib/event_emitter").EventEmitter,a=e("./selection").Selection,l=e("./mode/text").Mode,c=e("./range").Range,h=e("./document").Document,d=e("./background_tokenizer").BackgroundTokenizer,u=e("./search_highlight").SearchHighlight,f=function(e,t){this.$breakpoints=[],this.$decorations=[],this.$frontMarkers={},this.$backMarkers={},this.$markerId=1,this.$undoSelect=!0,this.$foldData=[],this.$foldData.toString=function(){return this.join("\n")},this.on("changeFold",this.onChangeFold.bind(this)),this.$onChange=this.onChange.bind(this),"object"==typeof e&&e.getLine||(e=new h(e)),this.setDocument(e),this.selection=new a(this),o.resetOptions(this),this.setMode(t),o._signal("session",this)};(function(){function e(e){return 4352>e?!1:e>=4352&&4447>=e||e>=4515&&4519>=e||e>=4602&&4607>=e||e>=9001&&9002>=e||e>=11904&&11929>=e||e>=11931&&12019>=e||e>=12032&&12245>=e||e>=12272&&12283>=e||e>=12288&&12350>=e||e>=12353&&12438>=e||e>=12441&&12543>=e||e>=12549&&12589>=e||e>=12593&&12686>=e||e>=12688&&12730>=e||e>=12736&&12771>=e||e>=12784&&12830>=e||e>=12832&&12871>=e||e>=12880&&13054>=e||e>=13056&&19903>=e||e>=19968&&42124>=e||e>=42128&&42182>=e||e>=43360&&43388>=e||e>=44032&&55203>=e||e>=55216&&55238>=e||e>=55243&&55291>=e||e>=63744&&64255>=e||e>=65040&&65049>=e||e>=65072&&65106>=e||e>=65108&&65126>=e||e>=65128&&65131>=e||e>=65281&&65376>=e||e>=65504&&65510>=e}n.implement(this,s),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e)return this.$docRowCache=[],void(this.$screenRowCache=[]);var t=this.$docRowCache.length,i=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>i&&(this.$docRowCache.splice(i,t),this.$screenRowCache.splice(i,t))},this.$getRowCacheIndex=function(e,t){for(var i=0,n=e.length-1;n>=i;){var r=i+n>>1,o=e[r];if(t>o)i=r+1;else{if(!(o>t))return r;n=r-1}}return i-1},this.resetCaches=function(){this.$modified=!0,this.$wrapData=[],this.$rowLengthCache=[],this.$resetRowCache(0),this.bgTokenizer&&this.bgTokenizer.start(0)},this.onChangeFold=function(e){var t=e.data;this.$resetRowCache(t.start.row)},this.onChange=function(e){this.$modified=!0,this.$resetRowCache(e.start.row);var t=this.$updateInternalDataOnChange(e);this.$fromUndo||!this.$undoManager||e.ignore||(this.$deltasDoc.push(e),t&&0!=t.length&&this.$deltasFold.push({action:"removeFolds",folds:t}),this.$informUndoManager.schedule()),this.bgTokenizer&&this.bgTokenizer.$updateOnChange(e),this._signal("change",e)},this.setValue=function(e){this.doc.setValue(e),this.selection.moveTo(0,0),this.$resetRowCache(0),this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.setUndoManager(this.$undoManager),this.getUndoManager().reset()},this.getValue=this.toString=function(){return this.doc.getValue()},this.getSelection=function(){return this.selection},this.getState=function(e){return this.bgTokenizer.getState(e)},this.getTokens=function(e){return this.bgTokenizer.getTokens(e)},this.getTokenAt=function(e,t){var i,n=this.bgTokenizer.getTokens(e),r=0;if(null==t)o=n.length-1,r=this.getLine(e).length;else for(var o=0;o=t));o++);return(i=n[o])?(i.index=o,i.start=r-i.value.length,i):null},this.setUndoManager=function(e){if(this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel(),e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=r.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?r.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize===0},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(n=!!i.charAt(t-1).match(this.tokenRe)),n||(n=!!i.charAt(t).match(this.tokenRe)),n)var r=this.tokenRe;else if(/^\s+$/.test(i.slice(t-1,t+1)))var r=/\s/;else var r=this.nonTokenRe;var o=t;if(o>0){do o--;while(o>=0&&i.charAt(o).match(r));o++}for(var s=t;se&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var t=this.doc.getAllLines(),i=this.$rowLengthCache,n=0,r=0,o=this.$foldData[r],s=o?o.start.row:1/0,a=t.length,l=0;a>l;l++){if(l>s){if(l=o.end.row+1,l>=a)break;o=this.$foldData[r++],s=o?o.start.row:1/0}null==i[l]&&(i[l]=this.$getStringScreenWidth(t[l])[0]),i[l]>n&&(n=i[l])}this.screenWidth=n}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var i=null,n=e.length-1;-1!=n;n--){var r=e[n];"doc"==r.group?(this.doc.revertDeltas(r.deltas),i=this.$getUndoSelection(r.deltas,!0,i)):r.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,i&&this.$undoSelect&&!t&&this.selection.setSelectionRange(i),i}},this.redoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var i=null,n=0;ne.end.column&&(o.start.column+=a),o.end.row==e.end.row&&o.end.column>e.end.column&&(o.end.column+=a)),s&&o.start.row>=e.end.row&&(o.start.row+=s,o.end.row+=s)}if(o.end=this.insert(o.start,n),r.length){var l=e.start,h=o.start,s=h.row-l.row,a=h.column-l.column;this.addFolds(r.map(function(e){return e=e.clone(),e.start.row==l.row&&(e.start.column+=a),e.end.row==l.row&&(e.end.column+=a),e.start.row+=s,e.end.row+=s,e}))}return o},this.indentRows=function(e,t,i){i=i.replace(/\t/g,this.getTabString());for(var n=e;t>=n;n++)this.doc.insertInLine({row:n,column:0},i)},this.outdentRows=function(e){for(var t=e.collapseRows(),i=new c(0,0,0,0),n=this.getTabSize(),r=t.start.row;r<=t.end.row;++r){var o=this.getLine(r);i.start.row=r,i.end.row=r;for(var s=0;n>s&&" "==o.charAt(s);++s);n>s&&" "==o.charAt(s)?(i.start.column=s,i.end.column=s+1):(i.start.column=0,i.end.column=s),this.remove(i)}},this.$moveLines=function(e,t,i){if(e=this.getRowFoldStart(e),t=this.getRowFoldEnd(t),0>i){var n=this.getRowFoldStart(e+i);if(0>n)return 0;var r=n-e}else if(i>0){var n=this.getRowFoldEnd(t+i);if(n>this.doc.getLength()-1)return 0;var r=n-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var r=t-e+1}var o=new c(e,0,t,Number.MAX_VALUE),s=this.getFoldsInRange(o).map(function(e){return e=e.clone(),e.start.row+=r,e.end.row+=r,e}),a=0==i?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+r,a),s.length&&this.addFolds(s),r},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return 0>t?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){if(t=Math.max(0,t),0>e)e=0,t=0;else{var i=this.doc.getLength();e>=i?(e=i-1,t=this.doc.getLine(i-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){if(this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0),e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){(this.$wrapLimitRange.min!==e||this.$wrapLimitRange.max!==t)&&(this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$useWrapMode&&this._signal("changeWrapMode"))},this.adjustWrapLimit=function(e,t){var i=this.$wrapLimitRange;i.max<0&&(i={min:t,max:t});var n=this.$constrainWrapLimit(e,i.min,i.max);return n!=this.$wrapLimit&&n>1?(this.$wrapLimit=n,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,i){return t&&(e=Math.max(t,e)),i&&(e=Math.min(i,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,i=e.action,n=e.start,r=e.end,o=n.row,s=r.row,a=s-o,l=null;if(this.$updating=!0,0!=a)if("remove"===i){this[t?"$wrapData":"$rowLengthCache"].splice(o,a);var c=this.$foldData;l=this.getFoldsInRange(e),this.removeFolds(l);var h=this.getFoldLine(r.row),d=0;if(h){h.addRemoveChars(r.row,r.column,n.column-r.column),h.shiftRow(-a);var u=this.getFoldLine(o);u&&u!==h&&(u.merge(h),h=u),d=c.indexOf(h)+1}for(d;d=r.row&&h.shiftRow(-a)}s=o}else{var f=Array(a);f.unshift(o,0);var p=t?this.$wrapData:this.$rowLengthCache;p.splice.apply(p,f);var c=this.$foldData,h=this.getFoldLine(o),d=0;if(h){var m=h.range.compareInside(n.row,n.column);0==m?(h=h.split(n.row,n.column),h&&(h.shiftRow(a),h.addRemoveChars(s,0,r.column-n.column))):-1==m&&(h.addRemoveChars(o,0,r.column-n.column),h.shiftRow(a)),d=c.indexOf(h)+1}for(d;d=o&&h.shiftRow(a)}}else{a=Math.abs(e.start.column-e.end.column),"remove"===i&&(l=this.getFoldsInRange(e),this.removeFolds(l),a=-a);var h=this.getFoldLine(o);h&&h.addRemoveChars(o,n.column,a)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(o,s):this.$updateRowLengthCache(o,s),l},this.$updateRowLengthCache=function(e,t,i){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var i,n,r=this.doc.getAllLines(),o=this.getTabSize(),s=this.$wrapData,l=this.$wrapLimit,c=e;for(t=Math.min(t,r.length-1);t>=c;)n=this.getFoldLine(c,n),n?(i=[],n.walk(function(e,t,n,o){var s;if(null!=e){s=this.$getDisplayTokens(e,i.length),s[0]=a;for(var l=1;lt-A;){var y=c+t-A;if(e[y-1]>=p&&e[y]>=p)o(y);else if(e[y]!=a&&e[y]!=h){for(var C=Math.max(y-(t-(t>>2)),c-1);y>C&&e[y]C&&e[y]C&&e[y]==f;)y--}else for(;y>C&&e[y]C?o(++y):(y=c+t,e[y]==i&&y--,o(y-A))}else{for(y;y!=c-1&&e[y]!=a;y--);if(y>c){o(y);continue}for(y=c+t;yc;c++)s.push(g)}else 32==l?s.push(p):l>39&&48>l||l>57&&64>l?s.push(f):l>=4352&&e(l)?s.push(t,i):s.push(t)}return s},this.$getStringScreenWidth=function(t,i,n){if(0==i)return[0,0];null==i&&(i=1/0),n=n||0;var r,o;for(o=0;o=4352&&e(r)?2:1,!(n>i));o++);return[n,o]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.getRowLineCount=function(e){return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1:1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),i=this.$wrapData[t.row];return i.length&&i[0]e)return{row:0,column:0};var i,n,r=0,o=0,s=0,a=0,l=this.$screenRowCache,c=this.$getRowCacheIndex(l,e),h=l.length;if(h&&c>=0)var s=l[c],r=this.$docRowCache[c],d=e>l[h-1];else var d=!h;for(var u=this.getLength()-1,f=this.getNextFoldLine(r),p=f?f.start.row:1/0;e>=s&&(a=this.getRowLength(r),!(s+a>e||r>=u));)s+=a,r++,r>p&&(r=f.end.row+1,f=this.getNextFoldLine(r,f),p=f?f.start.row:1/0),d&&(this.$docRowCache.push(r),this.$screenRowCache.push(s));if(f&&f.start.row<=r)i=this.getFoldDisplayLine(f),r=f.start.row;else{if(e>=s+a||r>u)return{row:u,column:this.getLine(u).length};i=this.getLine(r),f=null}var m=0;if(this.$useWrapMode){var g=this.$wrapData[r];if(g){var v=Math.floor(e-s);n=g[v],v>0&&g.length&&(m=g.indent,o=g[v-1]||g[g.length-1],i=i.substring(o))}}return o+=this.$getStringScreenWidth(i,t-m)[1],this.$useWrapMode&&o>=n&&(o=n-1),f?f.idxToPosition(o):{row:r,column:o}},this.documentToScreenPosition=function(e,t){if("undefined"==typeof t)var i=this.$clipPositionToDocument(e.row,e.column);else i=this.$clipPositionToDocument(e,t);e=i.row,t=i.column;var n=0,r=null,o=null;o=this.getFoldAt(e,t,1),o&&(e=o.start.row,t=o.start.column);var s,a=0,l=this.$docRowCache,c=this.$getRowCacheIndex(l,e),h=l.length;if(h&&c>=0)var a=l[c],n=this.$screenRowCache[c],d=e>l[h-1];else var d=!h;for(var u=this.getNextFoldLine(a),f=u?u.start.row:1/0;e>a;){if(a>=f){if(s=u.end.row+1,s>e)break;u=this.getNextFoldLine(s,u),f=u?u.start.row:1/0}else s=a+1;n+=this.getRowLength(a),a=s,d&&(this.$docRowCache.push(a),this.$screenRowCache.push(n))}var p="";u&&a>=f?(p=this.getFoldDisplayLine(u,e,t),r=u.start.row):(p=this.getLine(e).substring(0,t),r=e);var m=0;if(this.$useWrapMode){var g=this.$wrapData[r];if(g){for(var v=0;p.length>=g[v];)n++,v++;p=p.substring(g[v-1]||0,p.length),m=v>0?g.indent:0}}return{row:n,column:m+this.$getStringScreenWidth(p)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(this.$useWrapMode)for(var i=this.$wrapData.length,n=0,r=0,t=this.$foldData[r++],o=t?t.start.row:1/0;i>n;){var s=this.$wrapData[n];e+=s?s.length+1:1,n++,n>o&&(n=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:1/0)}else{e=this.getLength();for(var a=this.$foldData,r=0;ri));o++);return[n,o]})},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()}}).call(f.prototype),e("./edit_session/folding").Folding.call(f.prototype),e("./edit_session/bracket_match").BracketMatch.call(f.prototype),o.defineOptions(f.prototype,"session",{wrap:{set:function(e){if(e&&"off"!=e?"free"==e?e=!0:"printMargin"==e?e=-1:"string"==typeof e&&(e=parseInt(e,10)||!1):e=!1,this.$wrap!=e)if(this.$wrap=e,e){var t="number"==typeof e?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?-1==this.$wrap?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e="auto"==e?"text"!=this.$mode.type:"text"!=e,e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){isNaN(e)||this.$tabSize===e||(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=f}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,i){"use strict";var n=e("./lib/lang"),r=e("./lib/oop"),o=e("./range").Range,s=function(){this.$options={}};(function(){this.set=function(e){return r.mixin(this.$options,e),this},this.getOptions=function(){return n.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,i=this.$matchIterator(e,t);if(!i)return!1;var n=null;return i.forEach(function(e,i,r){if(e.start)n=e;else{var s=e.offset+(r||0);if(n=new o(i,s,i,s+e.length),!e.length&&t.start&&t.start.start&&0!=t.skipCurrent&&n.isEqual(t.start))return n=null,!1}return!0}),n},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var i=t.range,r=i?e.getLines(i.start.row,i.end.row):e.doc.getAllLines(),s=[],a=t.re;if(t.$isMultiLine){var l,c=a.length,h=r.length-c;e:for(var d=a.offset||0;h>=d;d++){for(var u=0;c>u;u++)if(-1==r[d+u].search(a[u]))continue e;var f=r[d],p=r[d+c-1],m=f.length-f.match(a[0])[0].length,g=p.match(a[c-1])[0].length;l&&l.end.row===d&&l.end.column>m||(s.push(l=new o(d,m,d+c-1,g)),c>2&&(d=d+c-2))}}else for(var v=0;vv&&s[v].start.columnv&&s[u].end.column>C&&s[u].end.row==i.end.row;)u--;for(s=s.slice(v,u+1),v=0,u=s.length;u>v;v++)s[v].start.row+=i.start.row,s[v].end.row+=i.start.row}return s},this.replace=function(e,t){var i=this.$options,n=this.$assembleRegExp(i);if(i.$isMultiLine)return t;if(n){var r=n.exec(e);if(!r||r[0].length!=e.length)return null;if(t=e.replace(n,t),i.preserveCase){t=t.split("");for(var o=Math.min(e.length,e.length);o--;){var s=e[o];s&&s.toLowerCase()!=s?t[o]=t[o].toUpperCase():t[o]=t[o].toLowerCase()}t=t.join("")}return t}},this.$matchIterator=function(e,t){var i=this.$assembleRegExp(t);if(!i)return!1;var r;if(t.$isMultiLine)var s=i.length,a=function(t,n,a){var l=t.search(i[0]);if(-1!=l){for(var c=1;s>c;c++)if(t=e.getLine(n+c),-1==t.search(i[c]))return;var h=t.match(i[s-1])[0].length,d=new o(n,l,n+s-1,h);return 1==i.offset?(d.start.row--,d.start.column=Number.MAX_VALUE):a&&(d.start.column+=a),r(d)?!0:void 0}};else if(t.backwards)var a=function(e,t,o){for(var s=n.getMatchOffsets(e,i),a=s.length-1;a>=0;a--)if(r(s[a],t,o))return!0};else var a=function(e,t,o){for(var s=n.getMatchOffsets(e,i),a=0;a=s;n--)if(i(e.getLine(n),n))return;if(0!=t.wrap)for(n=a,s=o.row;n>=s;n--)if(i(e.getLine(n),n))return}}:function(i){var n=o.row,r=e.getLine(n).substr(o.column);if(!i(r,n,o.column)){for(n+=1;a>=n;n++)if(i(e.getLine(n),n))return;if(0!=t.wrap)for(n=s,a=o.row;a>=n;n++)if(i(e.getLine(n),n))return}};return{forEach:l}}}).call(s.prototype),t.Search=s}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,i){"use strict";function n(e,t){this.platform=t||(s.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function r(e,t){n.call(this,e,t),this.$singleCommand=!1}var o=e("../lib/keys"),s=e("../lib/useragent"),a=o.KEY_MODS;r.prototype=n.prototype,function(){function e(e){return"object"==typeof e&&e.bindKey&&e.bindKey.position||0}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var i=e&&("string"==typeof e?e:e.name);e=this.commands[i],t||delete this.commands[i];var n=this.commandKeyBinding;for(var r in n){var o=n[r];if(o==e)delete n[r];else if(Array.isArray(o)){var s=o.indexOf(e);-1!=s&&(o.splice(s,1),1==o.length&&(n[r]=o[0]))}}},this.bindKey=function(e,t,i){return"object"==typeof e&&(void 0==i&&(i=e.position),e=e[this.platform]),e?"function"==typeof t?this.addCommand({exec:t,bindKey:e,name:t.name||e}):void e.split("|").forEach(function(e){var n="";if(-1!=e.indexOf(" ")){var r=e.split(/\s+/);e=r.pop(),r.forEach(function(e){var t=this.parseKeys(e),i=a[t.hashId]+t.key;n+=(n?" ":"")+i,this._addCommandToBinding(n,"chainKeys")},this),n+=" "}var o=this.parseKeys(e),s=a[o.hashId]+o.key;this._addCommandToBinding(n+s,t,i)},this):void 0},this._addCommandToBinding=function(t,i,n){var r,o=this.commandKeyBinding;if(i)if(!o[t]||this.$singleCommand)o[t]=i;else{Array.isArray(o[t])?-1!=(r=o[t].indexOf(i))&&o[t].splice(r,1):o[t]=[o[t]],"number"!=typeof n&&(n=n||i.isDefault?-100:e(i));var s=o[t];for(r=0;rn)break}s.splice(r,0,i)}else delete o[t]},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var i=e[t];if(i){if("string"==typeof i)return this.bindKey(i,t);"function"==typeof i&&(i={exec:i}),"object"==typeof i&&(i.name||(i.name=t),this.addCommand(i))}},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),i=t.pop(),n=o[i];if(o.FUNCTION_KEYS[n])i=o.FUNCTION_KEYS[n].toLowerCase();else{if(!t.length)return{key:i,hashId:-1};if(1==t.length&&"shift"==t[0])return{key:i.toUpperCase(),hashId:-1}}for(var r=0,s=t.length;s--;){var a=o.KEY_MODS[t[s]];if(null==a)return"undefined"!=typeof console&&console.error("invalid modifier "+t[s]+" in "+e),!1;r|=a}return{key:i,hashId:r}},this.findKeyCommand=function(e,t){var i=a[e]+t;return this.commandKeyBinding[i]},this.handleKeyboard=function(e,t,i,n){if(!(0>n)){var r=a[t]+i,o=this.commandKeyBinding[r];return e.$keyChain&&(e.$keyChain+=" "+r,o=this.commandKeyBinding[e.$keyChain]||o),!o||"chainKeys"!=o&&"chainKeys"!=o[o.length-1]?(e.$keyChain&&(t&&4!=t||1!=i.length?(-1==t||n>0)&&(e.$keyChain=""):e.$keyChain=e.$keyChain.slice(0,-r.length-1)),{command:o}):(e.$keyChain=e.$keyChain||r,{command:"null"})}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(n.prototype),t.HashHandler=n,t.MultiHashHandler=r}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/oop"),r=e("../keyboard/hash_handler").MultiHashHandler,o=e("../lib/event_emitter").EventEmitter,s=function(e,t){r.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};n.inherits(s,r),function(){n.implement(this,o),this.exec=function(e,t,i){if(Array.isArray(e)){for(var n=e.length;n--;)if(this.exec(e[n],t,i))return!0;return!1}if("string"==typeof e&&(e=this.commands[e]),!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var r={editor:t,command:e,args:i};return r.returnValue=this._emit("exec",r),this._signal("afterExec",r),r.returnValue===!1?!1:!0},this.toggleRecording=function(e){return this.$inReplay?void 0:(e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0))},this.replay=function(e){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){"string"==typeof t?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}}},this.trimMacro=function(e){return e.map(function(e){return"string"!=typeof e[0]&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(s.prototype),t.CommandManager=s}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,i){"use strict";function n(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),o=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:n("Ctrl-,","Command-,"),exec:function(e){o.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:n("Alt-E","Ctrl-E"),exec:function(e){o.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:n("Alt-Shift-E","Ctrl-Shift-E"),exec:function(e){o.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:n("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:n(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:n("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:n("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:n("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:n("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:n("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:n(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:n("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:n("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:n("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:n("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:n("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:n("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:n("Ctrl-F","Command-F"),exec:function(e){o.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:n("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:n("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:n("Shift-Up","Shift-Up"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:n("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:n("Ctrl-Shift-End","Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:n("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:n("Shift-Down","Shift-Down"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:n("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:n("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:n("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:n("Alt-Shift-Left","Command-Shift-Left"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:n("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:n("Shift-Left","Shift-Left"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:n("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:n("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:n("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:n("Alt-Shift-Right","Command-Shift-Right"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:n("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:n("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:n("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:n(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:n("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:n(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:n("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:n("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:n("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:n("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:n("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:n("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:n("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:n(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(e){},readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",bindKey:n("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:n("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:n("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines(); -},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:n("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:n("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:n("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:n("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:n("Ctrl-H","Command-Option-F"),exec:function(e){o.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:n("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:n("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:n("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:n("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:n("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:n("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:n("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:n("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:n("Shift-Delete",null),exec:function(e){return e.selection.isEmpty()?void e.remove("left"):!1},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:n("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:n("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:n("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:n("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:n("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:n("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:n("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:n("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:n(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:n("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:n("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:n("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:n("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:n(null,null),exec:function(e){for(var t=e.selection.isBackwards(),i=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),n=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(i.row).length,a=e.session.doc.getTextRange(e.selection.getRange()),l=a.replace(/\n\s*/," ").length,c=e.session.doc.getLine(i.row),h=i.row+1;h<=n.row+1;h++){var d=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(h)));0!==d.length&&(d=" "+d),c+=d}n.row+10?(e.selection.moveCursorTo(i.row,i.column),e.selection.selectTo(i.row,i.column+l)):(o=e.session.doc.getLine(i.row).length>o?o+1:o,e.selection.moveCursorTo(i.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:n(null,null),exec:function(e){var t=e.session.doc.getLength()-1,i=e.session.doc.getLine(t).length,n=e.selection.rangeList.ranges,r=[];n.length<1&&(n=[e.selection.getRange()]);for(var o=0;o0&&this.$blockScrolling--;var i=t&&t.scrollIntoView;if(i){switch(i){case"center-animate":i="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var n=this.selection.getRange(),r=this.renderer.layerConfig;(n.start.row>=r.lastRow||n.end.row<=r.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==i&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(this.$mergeUndoDeltas){var t=this.prevOp,i=this.$mergeableCommands,n=t.command&&e.command.name==t.command.name;if("insertstring"==e.command.name){var r=e.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),n=n&&this.mergeNextCommand&&(!/\s/.test(r)||/\s/.test(t.args)),this.mergeNextCommand=!0}else n=n&&-1!==i.indexOf(e.command.name);"always"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(n=!1),n?this.session.mergeUndoDeltas=!0:-1!==i.indexOf(e.command.name)&&(this.sequenceStartTime=Date.now())}},this.setKeyboardHandler=function(e,t){if(e&&"string"==typeof e){this.$keybindingId=e;var i=this;v.loadModule(["keybinding",e],function(n){i.$keybindingId==e&&i.keyBinding.setKeyboardHandler(n&&n.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session!=e){this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.removeEventListener("change",this.$onDocumentChange),this.session.removeEventListener("changeMode",this.$onChangeMode),this.session.removeEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.session.removeEventListener("changeTabSize",this.$onChangeTabSize),this.session.removeEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.session.removeEventListener("changeWrapMode",this.$onChangeWrapMode),this.session.removeEventListener("onChangeFold",this.$onChangeFold),this.session.removeEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.session.removeEventListener("changeBackMarker",this.$onChangeBackMarker),this.session.removeEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.session.removeEventListener("changeAnnotation",this.$onChangeAnnotation),this.session.removeEventListener("changeOverwrite",this.$onCursorChange),this.session.removeEventListener("changeScrollTop",this.$onScrollTopChange),this.session.removeEventListener("changeScrollLeft",this.$onScrollLeftChange);var i=this.session.getSelection();i.removeEventListener("changeCursor",this.$onCursorChange),i.removeEventListener("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.addEventListener("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.addEventListener("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.addEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.addEventListener("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.addEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.addEventListener("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.addEventListener("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.addEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.addEventListener("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.addEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.addEventListener("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.addEventListener("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.addEventListener("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.addEventListener("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.addEventListener("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.addEventListener("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this})}},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?1==t?this.navigateFileEnd():-1==t&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||r.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(t&&t.bgTokenizer){var i=t.findMatchingBracket(e.getCursorPosition());if(i)var n=new f(i.row,i.column,i.row,i.column+1);else if(t.$mode.getMatching)var n=t.$mode.getMatching(e.session);n&&(t.$bracketHighlight=t.addMarker(n,"ace_bracket","text"))}},50)}},this.$highlightTags=function(){if(!this.$highlightTagPending){var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(t&&t.bgTokenizer){var i=e.getCursorPosition(),n=new w(e.session,i.row,i.column),r=n.getCurrentToken();if(!r||!/\b(?:tag-open|tag-name)/.test(r.type))return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);if(-1==r.type.indexOf("tag-open")||(r=n.stepForward())){var o=r.value,s=0,a=n.stepBackward();if("<"==a.value){do a=r,r=n.stepForward(),r&&r.value===o&&-1!==r.type.indexOf("tag-name")&&("<"===a.value?s++:"=0)}else{do r=a,a=n.stepBackward(),r&&r.value===o&&-1!==r.type.indexOf("tag-name")&&("<"===a.value?s++:"=s);n.stepForward()}if(!r)return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);var l=n.getCurrentTokenRow(),c=n.getCurrentTokenColumn(),h=new f(l,c,l,c+r.value.length);t.$tagHighlight&&0!==h.compareRange(t.$backMarkers[t.$tagHighlight].range)&&(t.removeMarker(t.$tagHighlight),t.$tagHighlight=null),h&&!t.$tagHighlight&&(t.$tagHighlight=t.addMarker(h,"ace_bracket","text"))}}},50)}},this.focus=function(){var e=this;setTimeout(function(){e.textInput.focus()}),this.textInput.focus()},this.isFocused=function(){return this.textInput.isFocused()},this.blur=function(){this.textInput.blur()},this.onFocus=function(e){this.$isFocused||(this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus",e))},this.onBlur=function(e){this.$isFocused&&(this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur",e))},this.$cursorChange=function(){this.renderer.updateCursor()},this.onDocumentChange=function(e){var t=this.session.$useWrapMode,i=e.start.row==e.end.row?e.end.row:1/0;this.renderer.updateLines(e.start.row,i,t),this._signal("change",e),this.$cursorChange(),this.$updateHighlightActiveLine()},this.onTokenizerUpdate=function(e){var t=e.data;this.renderer.updateLines(t.first,t.last)},this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},this.onCursorChange=function(){this.$cursorChange(),this.$blockScrolling||(v.warn("Automatically scrolling cursor into view after selection change","this will be disabled in the next version","set editor.$blockScrolling = Infinity to disable this message"),this.renderer.scrollCursorIntoView()),this.$highlightBrackets(),this.$highlightTags(),this.$updateHighlightActiveLine(),this._signal("changeSelection")},this.$updateHighlightActiveLine=function(){var e,t=this.getSession();if(this.$highlightActiveLine&&("line"==this.$selectionStyle&&this.selection.isMultiLine()||(e=this.getCursorPosition()),!this.renderer.$maxLines||1!==this.session.getLength()||this.renderer.$minLines>1||(e=!1)),t.$highlightLineMarker&&!e)t.removeMarker(t.$highlightLineMarker.id),t.$highlightLineMarker=null;else if(!t.$highlightLineMarker&&e){var i=new f(e.row,e.column,e.row,1/0);i.id=t.addMarker(i,"ace_active-line","screenLine"),t.$highlightLineMarker=i}else e&&(t.$highlightLineMarker.start.row=e.row,t.$highlightLineMarker.end.row=e.row,t.$highlightLineMarker.start.column=e.column,t._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;if(t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var i=this.selection.getRange(),n=this.getSelectionStyle();t.$selectionMarker=t.addMarker(i,"ace_selection",n)}var r=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(r),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(!t.isEmpty()&&!t.isMultiLine()){var i=t.start.column-1,n=t.end.column+1,r=e.getLine(t.start.row),o=r.length,s=r.substring(Math.max(i,0),Math.min(n,o));if(!(i>=0&&/^[\w\d]/.test(s)||o>=n&&/[\w\d]$/.test(s))&&(s=r.substring(t.start.column,t.end.column),/^[\w\d]+$/.test(s))){var a=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:s});return a}}},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e,t){var i={text:e,event:t};this.commands.exec("paste",this,i)},this.$handlePaste=function(e){"string"==typeof e&&(e={text:e}),this._signal("paste",e);var t=e.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(t);else{var i=t.split(/\r\n|\r|\n/),n=this.selection.rangeList.ranges;if(i.length>n.length||i.length<2||!i[1])return this.commands.exec("insertstring",this,t);for(var r=n.length;r--;){var o=n[r];o.isEmpty()||this.session.remove(o),this.session.insert(o.start,i[r])}}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var i=this.session,n=i.getMode(),r=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var o=n.transformAction(i.getState(r.row),"insertion",this,i,e);o&&(e!==o.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=o.text)}if(" "==e&&(e=this.session.getTabString()),this.selection.isEmpty()){if(this.session.getOverwrite()){var s=new f.fromPoints(r,r);s.end.column+=e.length,this.session.remove(s)}}else{var s=this.getSelectionRange();r=this.session.remove(s),this.clearSelection()}if("\n"==e||"\r\n"==e){var a=i.getLine(r.row);if(r.column>a.search(/\S|$/)){var l=a.substr(r.column).search(/\S|$/);i.doc.removeInLine(r.row,r.column,r.column+l)}}this.clearSelection();var c=r.column,h=i.getState(r.row),a=i.getLine(r.row),d=n.checkOutdent(h,a,e);i.insert(r,e);if(o&&o.selection&&this.selection.setSelectionRange(2==o.selection.length?new f(r.row,c+o.selection[0],r.row,c+o.selection[1]):new f(r.row+o.selection[0],o.selection[1],r.row+o.selection[2],o.selection[3])),i.getDocument().isNewLine(e)){var u=n.getNextLineIndent(h,a.slice(0,r.column),i.getTabString());i.insert({row:r.row+1,column:0},u)}d&&n.autoOutdent(h,i,r.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,i){this.keyBinding.onCommandKey(e,t,i)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&("left"==e?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var i=this.session,n=i.getState(t.start.row),r=i.getMode().transformAction(n,"deletion",this,i,t);if(0===t.end.column){var o=i.getTextRange(t);if("\n"==o[o.length-1]){var s=i.getLine(t.end.row);/^\s+$/.test(s)&&(t.end.column=s.length)}}r&&(t=r)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(this.selection.isEmpty()){var e=this.getCursorPosition(),t=e.column;if(0!==t){var i,n,r=this.session.getLine(e.row);tt.toLowerCase()?1:0});for(var n=new f(0,0,0,0),r=e.first;r<=e.last;r++){var o=t.getLine(r);n.start.row=r,n.end.row=r,n.end.column=o.length,t.replace(n,i[r-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),i=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,i,e)},this.getNumberAt=function(e,t){var i=/[\-]?[0-9]+(?:\.[0-9]+)?/g;i.lastIndex=0;for(var n=this.session.getLine(e);i.lastIndex=t){var o={value:r[0],start:r.index,end:r.index+r[0].length};return o}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,i=this.selection.getCursor().column,n=new f(t,i-1,t,i),r=this.session.getTextRange(n);if(!isNaN(parseFloat(r))&&isFinite(r)){var o=this.getNumberAt(t,i);if(o){var s=o.value.indexOf(".")>=0?o.start+o.value.indexOf(".")+1:o.end,a=o.start+o.value.length-s,l=parseFloat(o.value);l*=Math.pow(10,a),e*=s!==o.end&&s>i?Math.pow(10,o.end-i-1):Math.pow(10,o.end-i),l+=e,l/=Math.pow(10,a);var c=l.toFixed(a),h=new f(t,o.start,t,o.end);this.session.replace(h,c),this.moveCursorTo(t,Math.max(o.start+1,i+c.length-o.value.length))}}},this.removeLines=function(){var e=this.$getSelectedRows();this.session.removeFullLines(e.first,e.last),this.clearSelection()},this.duplicateSelection=function(){var e=this.selection,t=this.session,i=e.getRange(),n=e.isBackwards();if(i.isEmpty()){var r=i.start.row;t.duplicateLines(r,r)}else{var o=n?i.start:i.end,s=t.insert(o,t.getTextRange(i),!1);i.start=o,i.end=s,e.setSelectionRange(i,n)}},this.moveLinesDown=function(){this.$moveLines(1,!1)},this.moveLinesUp=function(){this.$moveLines(-1,!1)},this.moveText=function(e,t,i){return this.session.moveText(e,t,i)},this.copyLinesUp=function(){this.$moveLines(-1,!0)},this.copyLinesDown=function(){this.$moveLines(1,!0)},this.$moveLines=function(e,t){var i,n,r=this.selection;if(!r.inMultiSelectMode||this.inVirtualSelectionMode){var o=r.toOrientedRange();i=this.$getSelectedRows(o),n=this.session.$moveLines(i.first,i.last,t?0:e),t&&-1==e&&(n=0),o.moveBy(n,0),r.fromOrientedRange(o)}else{var s=r.rangeList.ranges;r.rangeList.detach(this.session),this.inVirtualSelectionMode=!0;for(var a=0,l=0,c=s.length,h=0;c>h;h++){var d=h;s[h].moveBy(a,0),i=this.$getSelectedRows(s[h]);for(var u=i.first,f=i.last;++hf+1)break;f=p.last}for(h--,a=this.session.$moveLines(u,f,t?0:e),t&&-1==e&&(d=h+1);h>=d;)s[d].moveBy(a,0),d++;t||(a=0),l+=a}r.fromOrientedRange(r.ranges[0]),r.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1; -},this.$moveByPage=function(e,t){var i=this.renderer,n=this.renderer.layerConfig,r=e*Math.floor(n.height/n.lineHeight);this.$blockScrolling++,t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(r,0)}):t===!1&&(this.selection.moveCursorBy(r,0),this.selection.clearSelection()),this.$blockScrolling--;var o=i.scrollTop;i.scrollBy(0,r*n.lineHeight),null!=t&&i.scrollCursorIntoView(null,.5),i.animateScrolling(o)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,i,n){this.renderer.scrollToLine(e,t,i,n)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var i=this.getCursorPosition(),n=new w(this.session,i.row,i.column),r=n.getCurrentToken(),o=r||n.stepForward();if(o){var s,a,l=!1,c={},h=i.column-o.start,d={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(o.value.match(/[{}()\[\]]/g)){for(;h=0;--o)this.$tryReplace(i[o],e)&&n++;return this.selection.setSelectionRange(r),this.$blockScrolling-=1,n},this.$tryReplace=function(e,t){var i=this.session.getTextRange(e);return t=this.$search.replace(i,t),null!==t?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,i){t||(t={}),"string"==typeof e||e instanceof RegExp?t.needle=e:"object"==typeof e&&n.mixin(t,e);var r=this.selection.getRange();null==t.needle&&(e=this.session.getTextRange(r)||this.$search.$options.needle,e||(r=this.session.getWordRange(r.start.row,r.start.column),e=this.session.getTextRange(r)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:r});var o=this.$search.find(this.session);return t.preventScroll?o:o?(this.revealRange(o,i),o):(t.backwards?r.start=r.end:r.end=r.start,void this.selection.setRange(r))},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var i=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(i)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(e){var t,i=this,n=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var r=this.$scrollAnchor;r.style.cssText="position:absolute",this.container.insertBefore(r,this.container.firstChild);var o=this.on("changeSelection",function(){n=!0}),s=this.renderer.on("beforeRender",function(){n&&(t=i.renderer.container.getBoundingClientRect())}),a=this.renderer.on("afterRender",function(){if(n&&t&&(i.isFocused()||i.searchBox&&i.searchBox.isFocused())){var e=i.renderer,o=e.$cursorLayer.$pixelPos,s=e.layerConfig,a=o.top-s.offset;n=o.top>=0&&a+t.top<0?!0:o.topwindow.innerHeight?!1:null,null!=n&&(r.style.top=a+"px",r.style.left=o.left+"px",r.style.height=s.lineHeight+"px",r.scrollIntoView(n)),n=t=null}});this.setAutoScrollEditorIntoView=function(e){e||(delete this.setAutoScrollEditorIntoView,this.removeEventListener("changeSelection",o),this.renderer.removeEventListener("afterRender",a),this.renderer.removeEventListener("beforeRender",s))}}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;t&&(t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&"wide"!=e,r.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e)))}}).call(A.prototype),v.defineOptions(A.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),t.Editor=A}),ace.define("ace/undomanager",["require","exports","module"],function(e,t,i){"use strict";var n=function(){this.reset()};(function(){function e(e){return{action:e.action,start:e.start,end:e.end,lines:1==e.lines.length?null:e.lines,text:1==e.lines.length?e.lines[0]:null}}function t(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines||[e.text]}}function i(e,t){for(var i=new Array(e.length),n=0;n0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return 0===this.dirtyCounter},this.$serializeDeltas=function(t){return i(t,e)},this.$deserializeDeltas=function(e){return i(e,t)}}).call(n.prototype),t.UndoManager=n}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/dom"),r=e("../lib/oop"),o=e("../lib/lang"),s=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=n.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){r.implement(this,s),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e&&e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;ts&&(m=o.end.row+1,o=t.getNextFoldLine(m,o),s=o?o.start.row:1/0),m>r){for(;this.$cells.length>p+1;)f=this.$cells.pop(),this.element.removeChild(f.element);break}f=this.$cells[++p],f||(f={element:null,textNode:null,foldWidget:null},f.element=n.createElement("div"),f.textNode=document.createTextNode(""),f.element.appendChild(f.textNode),this.element.appendChild(f.element),this.$cells[p]=f);var g="ace_gutter-cell ";l[m]&&(g+=l[m]),c[m]&&(g+=c[m]),this.$annotations[m]&&(g+=this.$annotations[m].className),f.element.className!=g&&(f.element.className=g);var v=t.getRowLength(m)*e.lineHeight+"px";if(v!=f.element.style.height&&(f.element.style.height=v),a){var w=a[m];null==w&&(w=a[m]=t.getFoldWidget(m))}if(w){f.foldWidget||(f.foldWidget=n.createElement("span"),f.element.appendChild(f.foldWidget));var g="ace_fold-widget ace_"+w;g+="start"==w&&m==s&&mi.right-t.right?"foldWidgets":void 0}}).call(a.prototype),t.Gutter=a}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,i){"use strict";var n=e("../range").Range,r=e("../lib/dom"),o=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,i,n){return(e?1:0)|(t?2:0)|(i?4:0)|(n?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){var e=e||this.config;if(e){this.config=e;var t=[];for(var i in this.markers){var n=this.markers[i];if(n.range){var r=n.range.clipRows(e.firstRow,e.lastRow);if(!r.isEmpty())if(r=r.toScreenRange(this.session),n.renderer){var o=this.$getTop(r.start.row,e),s=this.$padding+r.start.column*e.characterWidth;n.renderer(t,r,s,o,e)}else"fullLine"==n.type?this.drawFullLineMarker(t,r,n.clazz,e):"screenLine"==n.type?this.drawScreenLineMarker(t,r,n.clazz,e):r.isMultiLine()?"text"==n.type?this.drawTextMarker(t,r,n.clazz,e):this.drawMultiLineMarker(t,r,n.clazz,e):this.drawSingleLineMarker(t,r,n.clazz+" ace_start ace_br15",e)}else n.update(t,this,this.session,e)}this.element.innerHTML=t.join("")}},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(t,i,r,o,s){for(var a=this.session,l=i.start.row,c=i.end.row,h=l,d=0,u=0,f=a.getScreenLastRowColumn(h),p=new n(h,i.start.column,h,u);c>=h;h++)p.start.row=p.end.row=h,p.start.column=h==l?i.start.column:a.getRowWrapIndent(h),p.end.column=f,d=u,u=f,f=c>h+1?a.getScreenLastRowColumn(h+1):h==c?0:i.end.column,this.drawSingleLineMarker(t,p,r+(h==l?" ace_start":"")+" ace_br"+e(h==l||h==l+1&&i.start.column,u>d,u>f,h==c),o,h==c?0:1,s)},this.drawMultiLineMarker=function(e,t,i,n,r){var o=this.$padding,s=n.lineHeight,a=this.$getTop(t.start.row,n),l=o+t.start.column*n.characterWidth;r=r||"",e.push("
"),a=this.$getTop(t.end.row,n);var c=t.end.column*n.characterWidth;if(e.push("
"),s=(t.end.row-t.start.row-1)*n.lineHeight,!(0>=s)){a=this.$getTop(t.start.row+1,n);var h=(t.start.column?1:0)|(t.end.column?0:8);e.push("
")}},this.drawSingleLineMarker=function(e,t,i,n,r,o){var s=n.lineHeight,a=(t.end.column+(r||0)-t.start.column)*n.characterWidth,l=this.$getTop(t.start.row,n),c=this.$padding+t.start.column*n.characterWidth;e.push("
")},this.drawFullLineMarker=function(e,t,i,n,r){var o=this.$getTop(t.start.row,n),s=n.lineHeight;t.start.row!=t.end.row&&(s+=this.$getTop(t.end.row,n)-o),e.push("
")},this.drawScreenLineMarker=function(e,t,i,n,r){var o=this.$getTop(t.start.row,n),s=n.lineHeight;e.push("
")}}).call(o.prototype),t.Marker=o}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/oop"),r=e("../lib/dom"),o=e("../lib/lang"),s=(e("../lib/useragent"),e("../lib/event_emitter").EventEmitter),a=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){n.implement(this,s),this.EOF_CHAR="¶",this.EOL_CHAR_LF="¬",this.EOL_CHAR_CRLF="¤",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="—",this.SPACE_CHAR="·",this.$padding=0,this.$updateEolChar=function(){var e="\n"==this.session.doc.getNewLineCharacter()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;return this.EOL_CHAR!=e?(this.EOL_CHAR=e,!0):void 0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;for(var t=this.$tabStrings=[0],i=1;e+1>i;i++)t.push(this.showInvisibles?""+o.stringRepeat(this.TAB_CHAR,i)+"":o.stringRepeat(" ",i));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var n="ace_indent-guide",r="",s="";if(this.showInvisibles){n+=" ace_invisible",r=" ace_invisible_space",s=" ace_invisible_tab";var a=o.stringRepeat(this.SPACE_CHAR,this.tabSize),l=o.stringRepeat(this.TAB_CHAR,this.tabSize)}else var a=o.stringRepeat(" ",this.tabSize),l=a;this.$tabStrings[" "]=""+a+"",this.$tabStrings[" "]=""+l+""}},this.updateLines=function(e,t,i){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;for(var n=Math.max(t,e.firstRow),r=Math.min(i,e.lastRow),o=this.element.childNodes,s=0,a=e.firstRow;n>a;a++){var l=this.session.getFoldLine(a);if(l){if(l.containsRow(n)){n=l.start.row;break}a=l.end.row}s++}for(var a=n,l=this.session.getNextFoldLine(a),c=l?l.start.row:1/0;;){if(a>c&&(a=l.end.row+1,l=this.session.getNextFoldLine(a,l),c=l?l.start.row:1/0),a>r)break;var h=o[s++];if(h){var d=[];this.$renderLine(d,a,!this.$useLineGroups(),a==c?l:!1),h.style.height=e.lineHeight*this.session.getRowLength(a)+"px",h.innerHTML=d.join("")}a++}},this.scrollLines=function(e){var t=this.config;if(this.config=e,!t||t.lastRow0;n--)i.removeChild(i.firstChild);if(t.lastRow>e.lastRow)for(var n=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);n>0;n--)i.removeChild(i.lastChild);if(e.firstRowt.lastRow){var r=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);i.appendChild(r)}},this.$renderLinesFragment=function(e,t,i){for(var n=this.element.ownerDocument.createDocumentFragment(),o=t,s=this.session.getNextFoldLine(o),a=s?s.start.row:1/0;;){if(o>a&&(o=s.end.row+1,s=this.session.getNextFoldLine(o,s),a=s?s.start.row:1/0),o>i)break;var l=r.createElement("div"),c=[];if(this.$renderLine(c,o,!1,o==a?s:!1),l.innerHTML=c.join(""),this.$useLineGroups())l.className="ace_line_group",n.appendChild(l),l.style.height=e.lineHeight*this.session.getRowLength(o)+"px";else for(;l.firstChild;)n.appendChild(l.firstChild);o++}return n},this.update=function(e){this.config=e;for(var t=[],i=e.firstRow,n=e.lastRow,r=i,o=this.session.getNextFoldLine(r),s=o?o.start.row:1/0;;){if(r>s&&(r=o.end.row+1,o=this.session.getNextFoldLine(r,o),s=o?o.start.row:1/0),r>n)break;this.$useLineGroups()&&t.push("
"),this.$renderLine(t,r,!1,r==s?o:!1),this.$useLineGroups()&&t.push("
"),r++}this.element.innerHTML=t.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,i,n){var r=this,s=/\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF\uFFF9-\uFFFC])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g,a=function(e,i,n,s,a){if(i)return r.showInvisibles?""+o.stringRepeat(r.SPACE_CHAR,e.length)+"":e;if("&"==e)return"&";if("<"==e)return"<";if(">"==e)return">";if(" "==e){var l=r.session.getScreenTabSize(t+s);return t+=l-1,r.$tabStrings[l]}if(" "==e){var c=r.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",h=r.showInvisibles?r.SPACE_CHAR:"";return t+=1,""+h+""}return n?""+r.SPACE_CHAR+"":(t+=1,""+e+"")},l=n.replace(s,a);if(this.$textToken[i.type])e.push(l);else{var c="ace_"+i.type.replace(/\./g," ace_"),h="";"fold"==i.type&&(h=" style='width:"+i.value.length*this.config.characterWidth+"px;' "),e.push("",l,"")}return t+n.length},this.renderIndentGuide=function(e,t,i){var n=t.search(this.$indentGuideRe);return 0>=n||n>=i?t:" "==t[0]?(n-=n%this.tabSize,e.push(o.stringRepeat(this.$tabStrings[" "],n/this.tabSize)),t.substr(n)):" "==t[0]?(e.push(o.stringRepeat(this.$tabStrings[" "],n)),t.substr(n)):t},this.$renderWrappedLine=function(e,t,i,n){for(var r=0,s=0,a=i[0],l=0,c=0;c=a;)l=this.$renderToken(e,l,h,d.substring(0,a-r)),d=d.substring(a-r),r=a,n||e.push("","
"),e.push(o.stringRepeat(" ",i.indent)),s++,l=0,a=i[s]||Number.MAX_VALUE;0!=d.length&&(r+=d.length,l=this.$renderToken(e,l,h,d))}}},this.$renderSimpleLine=function(e,t){var i=0,n=t[0],r=n.value;this.displayIndentGuides&&(r=this.renderIndentGuide(e,r)),r&&(i=this.$renderToken(e,i,n,r));for(var o=1;o"),r.length){var o=this.session.getRowSplitData(t);o&&o.length?this.$renderWrappedLine(e,r,o,i):this.$renderSimpleLine(e,r)}this.showInvisibles&&(n&&(t=n.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),i||e.push("
")},this.$getFoldLineTokens=function(e,t){function i(e,t,i){for(var n=0,o=0;o+e[n].value.lengthi-t&&(s=s.substring(0,i-t)),r.push({type:e[n].type,value:s}),o=t+s.length,n+=1}for(;i>o&&ni?{type:e[n].type,value:s.substring(0,i-o)}:e[n]),o+=s.length,n+=1}}var n=this.session,r=[],o=n.getTokens(e);return t.walk(function(e,t,s,a,l){null!=e?r.push({type:"fold",value:e}):(l&&(o=n.getTokens(t)),o.length&&i(o,a,s))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";var n,r=e("../lib/dom"),o=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),void 0===n&&(n=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(n?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(e){for(var t=this.cursors,i=t.length;i--;)t[i].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){for(var t=this.cursors,i=t.length;i--;)t[i].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e==this.smoothBlinking||n||(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0),this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()}},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var i=this.session.documentToScreenPosition(e),n=this.$padding+i.column*this.config.characterWidth,r=(i.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:n,top:r}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,i=0,n=0;(void 0===t||0===t.length)&&(t=[{cursor:null}]);for(var i=0,r=t.length;r>i;i++){var o=this.getPixelPosition(t[i].cursor,!0);if(!((o.top>e.height+e.offset||o.top<0)&&i>1)){var s=(this.cursors[n++]||this.addCursor()).style;this.drawCursor?this.drawCursor(s,o,e,t[i],this.session):(s.left=o.left+"px",s.top=o.top+"px",s.width=e.characterWidth+"px", -s.height=e.lineHeight+"px")}}for(;this.cursors.length>n;)this.removeCursor();var a=this.session.getOverwrite();this.$setOverwrite(a),this.$pixelPos=o,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(o.prototype),t.Cursor=o}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/dom"),o=e("./lib/event"),s=e("./lib/event_emitter").EventEmitter,a=function(e){this.element=r.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=r.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,o.addListener(this.element,"scroll",this.onScroll.bind(this)),o.addListener(this.element,"mousedown",o.preventDefault)};(function(){n.implement(this,s),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e}}).call(a.prototype);var l=function(e,t){a.call(this,e),this.scrollTop=0,t.$scrollbarWidth=this.width=r.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};n.inherits(l,a),function(){this.classSuffix="-v",this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=function(e){this.inner.style.height=e+"px"},this.setScrollHeight=function(e){this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=e)}}.call(l.prototype);var c=function(e,t){a.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};n.inherits(c,a),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(c.prototype),t.ScrollBar=l,t.ScrollBarV=l,t.ScrollBarH=c,t.VScrollBar=l,t.HScrollBar=c}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,i){"use strict";var n=e("./lib/event"),r=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){if(this.changes=this.changes|e,!this.pending&&this.changes){this.pending=!0;var t=this;n.nextFrame(function(){t.pending=!1;for(var e;e=t.changes;)t.changes=0,t.onRender(e)},this.window)}}}).call(r.prototype),t.RenderLoop=r}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,i){var n=e("../lib/oop"),r=e("../lib/dom"),o=e("../lib/lang"),s=e("../lib/useragent"),a=e("../lib/event_emitter").EventEmitter,l=0,c=t.FontMetrics=function(e,t){this.el=r.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=r.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=r.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),l||this.$testFractionalRect(),this.$measureNode.innerHTML=o.stringRepeat("X",l),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){n.implement(this,a),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=r.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;l=t>0&&1>t?50:100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",s.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(50===l){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}var i={height:e.height,width:e.width/l}}else var i={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/l};return 0===i.width||0===i.height?null:i},this.$measureCharWidth=function(e){this.$main.innerHTML=o.stringRepeat(e,l);var t=this.$main.getBoundingClientRect();return t.width/l},this.getCharacterWidth=function(e){var t=this.charSizes[e];return void 0===t&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(c.prototype)}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/dom"),o=e("./config"),s=e("./lib/useragent"),a=e("./layer/gutter").Gutter,l=e("./layer/marker").Marker,c=e("./layer/text").Text,h=e("./layer/cursor").Cursor,d=e("./scrollbar").HScrollBar,u=e("./scrollbar").VScrollBar,f=e("./renderloop").RenderLoop,p=e("./layer/font_metrics").FontMetrics,m=e("./lib/event_emitter").EventEmitter,g='.ace_editor { position: relative; overflow: hidden; font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace; direction: ltr; } .ace_scroller { position: absolute; overflow: hidden; top: 0; bottom: 0; background-color: inherit; -ms-user-select: none; -moz-user-select: none; -webkit-user-select: none; user-select: none; cursor: text; } .ace_content { position: absolute; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; min-width: 100%; } .ace_dragging .ace_scroller:before{ position: absolute; top: 0; left: 0; right: 0; bottom: 0; content: \'\'; background: rgba(250, 250, 250, 0.01); z-index: 1000; } .ace_dragging.ace_dark .ace_scroller:before{ background: rgba(0, 0, 0, 0.01); } .ace_selecting, .ace_selecting * { cursor: text !important; } .ace_gutter { position: absolute; overflow : hidden; width: auto; top: 0; bottom: 0; left: 0; cursor: default; z-index: 4; -ms-user-select: none; -moz-user-select: none; -webkit-user-select: none; user-select: none; } .ace_gutter-active-line { position: absolute; left: 0; right: 0; } .ace_scroller.ace_scroll-left { box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset; } .ace_gutter-cell { padding-left: 19px; padding-right: 6px; background-repeat: no-repeat; } .ace_gutter-cell.ace_error { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg=="); background-repeat: no-repeat; background-position: 2px center; } .ace_gutter-cell.ace_warning { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg=="); background-position: 2px center; } .ace_gutter-cell.ace_info { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII="); background-position: 2px center; } .ace_dark .ace_gutter-cell.ace_info { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC"); } .ace_scrollbar { position: absolute; right: 0; bottom: 0; z-index: 6; } .ace_scrollbar-inner { position: absolute; cursor: text; left: 0; top: 0; } .ace_scrollbar-v{ overflow-x: hidden; overflow-y: scroll; top: 0; } .ace_scrollbar-h { overflow-x: scroll; overflow-y: hidden; left: 0; } .ace_print-margin { position: absolute; height: 100%; } .ace_text-input { position: absolute; z-index: 0; width: 0.5em; height: 1em; opacity: 0; background: transparent; -moz-appearance: none; appearance: none; border: none; resize: none; outline: none; overflow: hidden; font: inherit; padding: 0 1px; margin: 0 -1px; text-indent: -1em; -ms-user-select: text; -moz-user-select: text; -webkit-user-select: text; user-select: text; white-space: pre!important; } .ace_text-input.ace_composition { background: inherit; color: inherit; z-index: 1000; opacity: 1; text-indent: 0; } .ace_layer { z-index: 1; position: absolute; overflow: hidden; word-wrap: normal; white-space: pre; height: 100%; width: 100%; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; pointer-events: none; } .ace_gutter-layer { position: relative; width: auto; text-align: right; pointer-events: auto; } .ace_text-layer { font: inherit !important; } .ace_cjk { display: inline-block; text-align: center; } .ace_cursor-layer { z-index: 4; } .ace_cursor { z-index: 4; position: absolute; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; border-left: 2px solid; transform: translatez(0); } .ace_slim-cursors .ace_cursor { border-left-width: 1px; } .ace_overwrite-cursors .ace_cursor { border-left-width: 0; border-bottom: 1px solid; } .ace_hidden-cursors .ace_cursor { opacity: 0.2; } .ace_smooth-blinking .ace_cursor { -webkit-transition: opacity 0.18s; transition: opacity 0.18s; } .ace_editor.ace_multiselect .ace_cursor { border-left-width: 1px; } .ace_marker-layer .ace_step, .ace_marker-layer .ace_stack { position: absolute; z-index: 3; } .ace_marker-layer .ace_selection { position: absolute; z-index: 5; } .ace_marker-layer .ace_bracket { position: absolute; z-index: 6; } .ace_marker-layer .ace_active-line { position: absolute; z-index: 2; } .ace_marker-layer .ace_selected-word { position: absolute; z-index: 4; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } .ace_line .ace_fold { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; display: inline-block; height: 11px; margin-top: -2px; vertical-align: middle; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="), url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII="); background-repeat: no-repeat, repeat-x; background-position: center center, top left; color: transparent; border: 1px solid black; border-radius: 2px; cursor: pointer; pointer-events: auto; } .ace_dark .ace_fold { } .ace_fold:hover{ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="), url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC"); } .ace_tooltip { background-color: #FFF; background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1)); background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1)); border: 1px solid gray; border-radius: 1px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); color: black; max-width: 100%; padding: 3px 4px; position: fixed; z-index: 999999; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; cursor: default; white-space: pre; word-wrap: break-word; line-height: normal; font-style: normal; font-weight: normal; letter-spacing: normal; pointer-events: none; } .ace_folding-enabled > .ace_gutter-cell { padding-right: 13px; } .ace_fold-widget { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; margin: 0 -12px 0 1px; display: none; width: 11px; vertical-align: top; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg=="); background-repeat: no-repeat; background-position: center; border-radius: 3px; border: 1px solid transparent; cursor: pointer; } .ace_folding-enabled .ace_fold-widget { display: inline-block; } .ace_fold-widget.ace_end { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg=="); } .ace_fold-widget.ace_closed { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA=="); } .ace_fold-widget:hover { border: 1px solid rgba(0, 0, 0, 0.3); background-color: rgba(255, 255, 255, 0.2); box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7); } .ace_fold-widget:active { border: 1px solid rgba(0, 0, 0, 0.4); background-color: rgba(0, 0, 0, 0.05); box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8); } .ace_dark .ace_fold-widget { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC"); } .ace_dark .ace_fold-widget.ace_end { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg=="); } .ace_dark .ace_fold-widget.ace_closed { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg=="); } .ace_dark .ace_fold-widget:hover { box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); background-color: rgba(255, 255, 255, 0.1); } .ace_dark .ace_fold-widget:active { box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); } .ace_fold-widget.ace_invalid { background-color: #FFB4B4; border-color: #DE5555; } .ace_fade-fold-widgets .ace_fold-widget { -webkit-transition: opacity 0.4s ease 0.05s; transition: opacity 0.4s ease 0.05s; opacity: 0; } .ace_fade-fold-widgets:hover .ace_fold-widget { -webkit-transition: opacity 0.05s ease 0.05s; transition: opacity 0.05s ease 0.05s; opacity:1; } .ace_underline { text-decoration: underline; } .ace_bold { font-weight: bold; } .ace_nobold .ace_bold { font-weight: normal; } .ace_italic { font-style: italic; } .ace_error-marker { background-color: rgba(255, 0, 0,0.2); position: absolute; z-index: 9; } .ace_highlight-marker { background-color: rgba(255, 255, 0,0.2); position: absolute; z-index: 8; } .ace_br1 {border-top-left-radius : 3px;} .ace_br2 {border-top-right-radius : 3px;} .ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;} .ace_br4 {border-bottom-right-radius: 3px;} .ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;} .ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;} .ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;} .ace_br8 {border-bottom-left-radius : 3px;} .ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;} .ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;} .ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;} .ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} .ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} .ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} .ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} ';r.importCssString(g,"ace_editor.css");var v=function(e,t){var i=this;this.container=e||r.createElement("div"),this.$keepTextAreaAtCursor=!s.isOldIE,r.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=r.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=r.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=r.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new a(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new l(this.content);var n=this.$textLayer=new c(this.content);this.canvas=n.element,this.$markerFront=new l(this.content),this.$cursorLayer=new h(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new u(this.container,this),this.scrollBarH=new d(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){i.$scrollAnimation||i.session.setScrollTop(e.data-i.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){i.$scrollAnimation||i.session.setScrollLeft(e.data-i.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new p(this.container,500),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){i.updateCharacterSize(),i.onResize(!0,i.gutterWidth,i.$size.width,i.$size.height),i._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new f(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),o.resetOptions(this),o._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,n.implement(this,m),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),e&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},this.updateLines=function(e,t,i){if(void 0===t&&(t=1/0),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar()},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,i,n){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=e?1:0;var r=this.container;n||(n=r.clientHeight||r.scrollHeight),i||(i=r.clientWidth||r.scrollWidth);var o=this.$updateCachedSize(e,t,i,n);if(!this.$size.scrollerHeight||!i&&!n)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(o|this.$changes,!0):this.$loop.schedule(o|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null}},this.$updateCachedSize=function(e,t,i,n){n-=this.$extraHeight||0;var r=0,o=this.$size,s={width:o.width,height:o.height,scrollerHeight:o.scrollerHeight,scrollerWidth:o.scrollerWidth};return n&&(e||o.height!=n)&&(o.height=n,r|=this.CHANGE_SIZE,o.scrollerHeight=o.height,this.$horizScroll&&(o.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",r|=this.CHANGE_SCROLL),i&&(e||o.width!=i)&&(r|=this.CHANGE_SIZE,o.width=i,null==t&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",o.scrollerWidth=Math.max(0,i-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px",(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)&&(r|=this.CHANGE_FULL)),o.$dirty=!i||!n,r&&this._signal("resize",s),r},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-2*this.$padding,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var i=this.session.selection.getCursor();i.column=0,e=this.$cursorLayer.getPixelPosition(i,!0),t*=this.session.getRowLength(i.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var e=r.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=r.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&-1==this.session.$wrap&&this.adjustWrapLimit()}},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(this.$keepTextAreaAtCursor){var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,i=this.$cursorLayer.$pixelPos.left;t-=e.offset;var n=this.textarea.style,r=this.lineHeight;if(0>t||t>e.height-r)return void(n.top=n.left="0");var o=this.characterWidth;if(this.$composition){var s=this.textarea.value.replace(/^\x01+/,"");o*=this.session.$getStringScreenWidth(s)[0]+2,r+=2}i-=this.scrollLeft,i>this.$size.scrollerWidth-o&&(i=this.$size.scrollerWidth-o),i+=this.gutterWidth,n.height=r+"px",n.width=o+"px",n.left=Math.min(i,this.$size.scrollerWidth-o)+"px",n.top=Math.min(t,this.$size.height-r)+"px"}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var e=Math.floor((this.layerConfig.height+this.layerConfig.offset)/this.layerConfig.lineHeight);return this.layerConfig.firstRow-1+e},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,i,n){var r=this.scrollMargin;r.top=0|e,r.bottom=0|t,r.right=0|n,r.left=0|i,r.v=r.top+r.bottom,r.h=r.left+r.right,r.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-r.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){if(this.$changes&&(e|=this.$changes,this.$changes=0),!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t)return void(this.$changes|=e);if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var i=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){if(e|=this.$computeLayerConfig(),i.firstRow!=this.layerConfig.firstRow&&i.firstRowScreen==this.layerConfig.firstRowScreen){var n=this.scrollTop+(i.firstRow-this.layerConfig.firstRow)*this.lineHeight;n>0&&(this.scrollTop=n,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig())}i=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-i.offset+"px",this.content.style.marginTop=-i.offset+"px",this.content.style.width=i.width+2*this.$padding+"px",this.content.style.height=i.minHeight+"px"}return e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left"),e&this.CHANGE_FULL?(this.$textLayer.update(i), -this.$showGutter&&this.$gutterLayer.update(i),this.$markerBack.update(i),this.$markerFront.update(i),this.$cursorLayer.update(i),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),void this._signal("afterRender")):e&this.CHANGE_SCROLL?(e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(i):this.$textLayer.scrollLines(i),this.$showGutter&&this.$gutterLayer.update(i),this.$markerBack.update(i),this.$markerFront.update(i),this.$cursorLayer.update(i),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),void this._signal("afterRender")):(e&this.CHANGE_TEXT?(this.$textLayer.update(i),this.$showGutter&&this.$gutterLayer.update(i)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(i):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(i),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(i),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(i),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(i),void this._signal("afterRender"))},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,i=Math.max((this.$minLines||1)*this.lineHeight,Math.min(t,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(i+=this.scrollBarH.getHeight());var n=e>t;if(i!=this.desiredHeight||this.$size.height!=this.desiredHeight||n!=this.$vScroll){n!=this.$vScroll&&(this.$vScroll=n,this.scrollBarV.setVisible(n));var r=this.container.clientWidth;this.container.style.height=i+"px",this.$updateCachedSize(!0,this.$gutterWidth,r,i),this.desiredHeight=i,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,i=t.height<=2*this.lineHeight,n=this.session.getScreenLength(),r=n*this.lineHeight,o=this.$getLongestLine(),s=!i&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-o-2*this.$padding<0),a=this.$horizScroll!==s;a&&(this.$horizScroll=s,this.scrollBarH.setVisible(s));var l=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var c=this.scrollTop%this.lineHeight,h=t.scrollerHeight+this.lineHeight,d=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;r+=d;var u=this.scrollMargin;this.session.setScrollTop(Math.max(-u.top,Math.min(this.scrollTop,r-t.scrollerHeight+u.bottom))),this.session.setScrollLeft(Math.max(-u.left,Math.min(this.scrollLeft,o+2*this.$padding-t.scrollerWidth+u.right)));var f=!i&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-r+d<0||this.scrollTop>u.top),p=l!==f;p&&(this.$vScroll=f,this.scrollBarV.setVisible(f));var m,g,v=Math.ceil(h/this.lineHeight)-1,w=Math.max(0,Math.round((this.scrollTop-c)/this.lineHeight)),A=w+v,y=this.lineHeight;w=e.screenToDocumentRow(w,0);var C=e.getFoldLine(w);C&&(w=C.start.row),m=e.documentToScreenRow(w,0),g=e.getRowLength(w)*y,A=Math.min(e.screenToDocumentRow(A,0),e.getLength()-1),h=t.scrollerHeight+e.getRowLength(A)*y+g,c=this.scrollTop-m*y;var E=0;return this.layerConfig.width!=o&&(E=this.CHANGE_H_SCROLL),(a||p)&&(E=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),p&&(o=this.$getLongestLine())),this.layerConfig={width:o,padding:this.$padding,firstRow:w,firstRowScreen:m,lastRow:A,lineHeight:y,characterWidth:this.characterWidth,minHeight:h,maxHeight:r,offset:c,gutterOffset:Math.max(0,Math.ceil((c+t.height-t.scrollerHeight)/y)),height:this.$size.scrollerHeight},E},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var i=this.layerConfig;return e>i.lastRow+1||to?(t&&(o-=t*this.$size.scrollerHeight),0===o&&(o=-this.scrollMargin.top),this.session.setScrollTop(o)):l+this.$size.scrollerHeight-ar?(ri;++i)r.push(o(i/this.STEPS,e,t-e));return r},this.scrollToLine=function(e,t,i,n){var r=this.$cursorLayer.getPixelPosition({row:e,column:0}),o=r.top;t&&(o-=this.$size.scrollerHeight/2);var s=this.scrollTop;this.session.setScrollTop(o),i!==!1&&this.animateScrolling(s,n)},this.animateScrolling=function(e,t){var i=this.scrollTop;if(this.$animatedScroll){var n=this;if(e!=i){if(this.$scrollAnimation){var r=this.$scrollAnimation.steps;if(r.length&&(e=r[0],e==i))return}var o=n.$calcSteps(e,i);this.$scrollAnimation={from:e,to:i,steps:o},clearInterval(this.$timer),n.session.setScrollTop(o.shift()),n.session.$scrollTop=i,this.$timer=setInterval(function(){o.length?(n.session.setScrollTop(o.shift()),n.session.$scrollTop=i):null!=i?(n.session.$scrollTop=-1,n.session.setScrollTop(i),i=null):(n.$timer=clearInterval(n.$timer),n.$scrollAnimation=null,t&&t())},10)}}},this.scrollToY=function(e){this.scrollTop!==e&&(this.$loop.schedule(this.CHANGE_SCROLL),this.scrollTop=e)},this.scrollToX=function(e){this.scrollLeft!==e&&(this.scrollLeft=e),this.$loop.schedule(this.CHANGE_H_SCROLL)},this.scrollTo=function(e,t){this.session.setScrollTop(t),this.session.setScrollLeft(t)},this.scrollBy=function(e,t){t&&this.session.setScrollTop(this.session.getScrollTop()+t),e&&this.session.setScrollLeft(this.session.getScrollLeft()+e)},this.isScrollableBy=function(e,t){return 0>t&&this.session.getScrollTop()>=1-this.scrollMargin.top?!0:t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom?!0:0>e&&this.session.getScrollLeft()>=1-this.scrollMargin.left?!0:e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right?!0:void 0},this.pixelToScreenCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=(e+this.scrollLeft-i.left-this.$padding)/this.characterWidth,r=Math.floor((t+this.scrollTop-i.top)/this.lineHeight),o=Math.round(n);return{row:r,column:o,side:n-o>0?1:-1}},this.screenToTextCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=Math.round((e+this.scrollLeft-i.left-this.$padding)/this.characterWidth),r=(t+this.scrollTop-i.top)/this.lineHeight;return this.session.screenToDocumentPosition(r,Math.max(n,0))},this.textToScreenCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=this.session.documentToScreenPosition(e,t),r=this.$padding+Math.round(n.column*this.characterWidth),o=n.row*this.lineHeight;return{pageX:i.left+r-this.scrollLeft,pageY:i.top+o-this.scrollTop}},this.visualizeFocus=function(){r.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){r.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,r.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(r.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null)},this.setTheme=function(e,t){function i(i){if(n.$themeId!=e)return t&&t();if(i.cssClass){r.importCssString(i.cssText,i.cssClass,n.container.ownerDocument),n.theme&&r.removeCssClass(n.container,n.theme.cssClass);var o="padding"in i?i.padding:"padding"in(n.theme||{})?4:n.$padding;n.$padding&&o!=n.$padding&&n.setPadding(o),n.$theme=i.cssClass,n.theme=i,r.addCssClass(n.container,i.cssClass),r.setCssClass(n.container,"ace_dark",i.isDark),n.$size&&(n.$size.width=0,n.$updateSizeAsync()),n._dispatchEvent("themeLoaded",{theme:i}),t&&t()}}var n=this;if(this.$themeId=e,n._dispatchEvent("themeChange",{theme:e}),e&&"string"!=typeof e)i(e);else{var s=e||this.$options.theme.initialValue;o.loadModule(["theme",s],i)}},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){r.setCssClass(this.container,e,t!==!1)},this.unsetStyle=function(e){r.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(v.prototype),o.defineOptions(v.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){"number"==typeof e&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){r.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){return this.$gutterLineHighlight?(this.$gutterLineHighlight.style.display=e?"":"none",void(this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight())):(this.$gutterLineHighlight=r.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",void this.$gutter.appendChild(this.$gutterLineHighlight))},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){this.$vScrollBarAlwaysVisible&&this.$vScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){"number"==typeof e&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},scrollPastEnd:{set:function(e){e=+e||0,this.$scrollPastEnd!=e&&(this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=v}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,n){"use strict";var r=e("../lib/oop"),o=e("../lib/net"),s=e("../lib/event_emitter").EventEmitter,a=e("../config"),l=function(t,n,r,o){if(this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl),a.get("packaged")||!e.toUrl)o=o||a.moduleUrl(n.id,"worker");else{var s=this.$normalizePath;o=o||s(e.toUrl("ace/worker/worker.js",null,"_"));var l={};t.forEach(function(t){l[t]=s(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}try{var c=n.src,h=i(20),d=new h([c],{type:"application/javascript"}),u=(window.URL||window.webkitURL).createObjectURL(d);this.$worker=new Worker(u)}catch(f){if(!(f instanceof window.DOMException))throw f;var d=this.$workerBlob(o),p=window.URL||window.webkitURL,m=p.createObjectURL(d);this.$worker=new Worker(m),p.revokeObjectURL(m)}this.$worker.postMessage({init:!0,tlns:l,module:n.id,classname:r}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){r.implement(this,s),this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var i=this.callbacks[t.id];i&&(i(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return o.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,i){if(i){var n=this.callbackId++;this.callbacks[n]=i,t.push(n)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(i){console.error(i.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),"insert"==e.action?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;e&&(this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e}))},this.$workerBlob=function(e){var t="importScripts('"+o.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(i){var n=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,r=new n;return r.append(t),r.getBlob("application/javascript")}}}).call(l.prototype);var c=function(e,t,i){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var n=null,r=!1,o=Object.create(s),l=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){l.messageBuffer.push(e),n&&(r?setTimeout(c):c())},this.setEmitSync=function(e){r=e};var c=function(){var e=l.messageBuffer.shift();e.command?n[e.command].apply(n,e.args):e.event&&o._signal(e.event,e.data)};o.postMessage=function(e){l.onMessage({data:e})},o.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},o.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},a.loadModule(["worker",t],function(e){for(n=new e[i](o);l.messageBuffer.length;)c()})};c.prototype=l.prototype,t.UIWorkerClient=c,t.WorkerClient=l}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,i){"use strict";var n=e("./range").Range,r=e("./lib/event_emitter").EventEmitter,o=e("./lib/oop"),s=function(e,t,i,n,r,o){var s=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=r,this.othersClass=o,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=n,this.$onCursorChange=function(){setTimeout(function(){s.onCursorChange()})},this.$pos=i;var a=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=a.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){o.implement(this,r),this.setup=function(){var e=this,t=this.doc,i=this.session;this.selectionBefore=i.selection.toJSON(),i.selection.inMultiSelectMode&&i.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var r=this.pos;r.$insertRight=!0,r.detach(),r.markerId=i.addMarker(new n(r.row,r.column,r.row,r.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(i){var n=t.createAnchor(i.row,i.column);n.$insertRight=!0,n.detach(),e.others.push(n)}),i.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(i){i.markerId=e.addMarker(new n(i.row,i.column,i.row,i.column+t.length),t.othersClass,null,!1)})}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,o=t.start.column-this.pos.column;if(this.updateAnchors(e),r&&(this.length+=i),r&&!this.session.$fromUndo)if("insert"===e.action)for(var s=this.others.length-1;s>=0;s--){var a=this.others[s],l={row:a.row,column:a.column+o};this.doc.insertMergedLines(l,e.lines)}else if("remove"===e.action)for(var s=this.others.length-1;s>=0;s--){var a=this.others[s],l={row:a.row,column:a.column+o};this.doc.remove(new n(l.row,l.column,l.row,l.column-i))}this.$updating=!1,this.updateMarkers()}},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(!this.$updating){var e=this,t=this.session,i=function(i,r){t.removeMarker(i.markerId),i.markerId=t.addMarker(new n(i.row,i.column,i.row,i.column+e.length),r,null,!1)};i(this.pos,this.mainClass);for(var r=this.others.length;r--;)i(this.others[r],this.othersClass)}},this.onCursorChange=function(e){if(!this.$updating&&this.session){var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))}},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(-1!==this.$undoStackDepth){for(var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth,i=0;t>i;i++)e.undo(!0);this.selectionBefore&&this.session.selection.fromJSON(this.selectionBefore)}}}).call(s.prototype),t.PlaceHolder=s}),ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,i){function n(e,t){return e.row==t.row&&e.column==t.column}function r(e){var t=e.domEvent,i=t.altKey,r=t.shiftKey,a=t.ctrlKey,l=e.getAccelKey(),c=e.getButton();if(a&&s.isMac&&(c=t.button),e.editor.inMultiSelectMode&&2==c)return void e.editor.textInput.onContextMenu(e.domEvent);if(!a&&!i&&!l)return void(0===c&&e.editor.inMultiSelectMode&&e.editor.exitMultiSelectMode());if(0===c){var h,d=e.editor,u=d.selection,f=d.inMultiSelectMode,p=e.getDocumentPosition(),m=u.getCursor(),g=e.inSelection()||u.isEmpty()&&n(p,m),v=e.x,w=e.y,A=function(e){v=e.clientX,w=e.clientY},y=d.session,C=d.renderer.pixelToScreenCoordinates(v,w),E=C;if(d.$mouseHandler.$enableJumpToDef)a&&i||l&&i?h=r?"block":"add":i&&d.$blockSelectEnabled&&(h="block");else if(l&&!i){if(h="add",!f&&r)return}else i&&d.$blockSelectEnabled&&(h="block");if(h&&s.isMac&&t.ctrlKey&&d.$mouseHandler.cancelContextMenu(),"add"==h){if(!f&&g)return;if(!f){var b=u.toOrientedRange();d.addSelectionMarker(b)}var F=u.rangeList.rangeAtPoint(p);d.$blockScrolling++,d.inVirtualSelectionMode=!0,r&&(F=null,b=u.ranges[0]||b,d.removeSelectionMarker(b)),d.once("mouseup",function(){var e=u.toOrientedRange();F&&e.isEmpty()&&n(F.cursor,e.cursor)?u.substractPoint(e.cursor):(r?u.substractPoint(b.cursor):b&&(d.removeSelectionMarker(b),u.addRange(b)),u.addRange(e)),d.$blockScrolling--,d.inVirtualSelectionMode=!1})}else if("block"==h){e.stop(),d.inVirtualSelectionMode=!0;var x,S=[],$=function(){var e=d.renderer.pixelToScreenCoordinates(v,w),t=y.screenToDocumentPosition(e.row,e.column);n(E,e)&&n(t,u.lead)||(E=e,d.$blockScrolling++,d.selection.moveToPosition(t),d.renderer.scrollCursorIntoView(),d.removeSelectionMarkers(S),S=u.rectangularRangeBlock(E,C),d.$mouseHandler.$clickSelection&&1==S.length&&S[0].isEmpty()&&(S[0]=d.$mouseHandler.$clickSelection.clone()),S.forEach(d.addSelectionMarker,d),d.updateSelectionMarkers(),d.$blockScrolling--)};d.$blockScrolling++,f&&!l?u.toSingleRange():!f&&l&&(x=u.toOrientedRange(),d.addSelectionMarker(x)),r?C=y.documentToScreenPosition(u.lead):u.moveToPosition(p),d.$blockScrolling--,E={row:-1,column:-1};var D=function(e){clearInterval(B),d.removeSelectionMarkers(S),S.length||(S=[u.toOrientedRange()]),d.$blockScrolling++,x&&(d.removeSelectionMarker(x),u.toSingleRange(x));for(var t=0;t1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)}},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);return t?(this.$onRemoveRange(t),t[0]):void 0},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var i=e.length;i--;){var n=this.ranges.indexOf(e[i]);this.ranges.splice(n,1)}this._signal("removeRange",{ranges:e}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new a,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],i=l.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(i,t.cursor==t.start)}else{var i=this.getRange(),n=this.isBackwards(),r=i.start.row,o=i.end.row;if(r==o){if(n)var s=i.end,a=i.start;else var s=i.start,a=i.end;return this.addRange(l.fromPoints(a,a)),void this.addRange(l.fromPoints(s,s))}var c=[],h=this.getLineRange(r,!0);h.start.column=i.start.column,c.push(h);for(var d=r+1;o>d;d++)c.push(this.getLineRange(d,!0));h=this.getLineRange(o,!0),h.end.column=i.end.column,c.push(h),c.forEach(this.addRange,this)}},this.toggleBlockSelection=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],i=l.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(i,t.cursor==t.start)}else{var n=this.session.documentToScreenPosition(this.selectionLead),r=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(n,r);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,i){var n=[],o=e.columns&&(s=0),0>h&&(h=0),h==d&&(i=!0);for(var u=h;d>=u;u++){var f=l.fromPoints(this.session.screenToDocumentPosition(u,s),this.session.screenToDocumentPosition(u,a));if(f.isEmpty()){if(p&&r(f.end,p))break;var p=f.end}f.cursor=o?f.start:f.end,n.push(f)}if(c&&n.reverse(),!i){for(var m=n.length-1;n[m].isEmpty()&&m>0;)m--;if(m>0)for(var g=0;n[g].isEmpty();)g++;for(var v=m;v>=g;v--)n[v].isEmpty()&&n.splice(v,1)}return n}}.call(c.prototype);var v=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(e.marker){this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);-1!=t&&this.session.$selectionMarkers.splice(t,1), -this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(e){for(var t=this.session.$selectionMarkers,i=e.length;i--;){var n=e[i];if(n.marker){this.session.removeMarker(n.marker);var r=t.indexOf(n);-1!=r&&t.splice(r,1)}}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(e){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(e){var t=e.command,i=e.editor;if(i.multiSelect){if(t.multiSelectAction)"forEach"==t.multiSelectAction?n=i.forEachSelection(t,e.args):"forEachLine"==t.multiSelectAction?n=i.forEachSelection(t,e.args,!0):"single"==t.multiSelectAction?(i.exitMultiSelectMode(),n=t.exec(i,e.args||{})):n=t.multiSelectAction(i,e.args||{});else{var n=t.exec(i,e.args||{});i.multiSelect.addRange(i.multiSelect.toOrientedRange()),i.multiSelect.mergeOverlappingRanges()}return n}},this.forEachSelection=function(e,t,i){if(!this.inVirtualSelectionMode){var n,r=i&&i.keepOrder,o=1==i||i&&i.$byLines,s=this.session,a=this.selection,l=a.rangeList,h=(r?a:l).ranges;if(!h.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var d=a._eventRegistry;a._eventRegistry={};var u=new c(s);this.inVirtualSelectionMode=!0;for(var f=h.length;f--;){if(o)for(;f>0&&h[f].start.row==h[f-1].end.row;)f--;u.fromOrientedRange(h[f]),u.index=f,this.selection=s.selection=u;var p=e.exec?e.exec(this,t||{}):e(this,t||{});n||void 0===p||(n=p),u.toOrientedRange(h[f])}u.detach(),this.selection=s.selection=a,this.inVirtualSelectionMode=!1,a._eventRegistry=d,a.mergeOverlappingRanges();var m=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),m&&m.from==m.to&&this.renderer.animateScrolling(m.from),n}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var t=this.multiSelect.rangeList.ranges,i=[],n=0;ne?a.unshift(a.pop()):a.push(a.shift());for(var r=n.length;r--;){var o=n[r],s=o.clone();t.replace(o,a[r]),o.start.row=s.start.row,o.start.column=s.start.column}},this.selectMore=function(e,t,i){var r=this.session,o=r.multiSelect,s=o.toOrientedRange();if(!s.isEmpty()||(s=r.getWordRange(s.start.row,s.start.column),s.cursor=-1==e?s.start:s.end,this.multiSelect.addRange(s),!i)){var a=r.getTextRange(s),l=n(r,a,e);l&&(l.cursor=-1==e?l.start:l.end,this.$blockScrolling+=1,this.session.unfold(l),this.multiSelect.addRange(l),this.$blockScrolling-=1,this.renderer.scrollCursorIntoView(null,.5)),t&&this.multiSelect.substractPoint(s.cursor)}},this.alignCursors=function(){var e=this.session,t=e.multiSelect,i=t.ranges,n=-1,r=i.filter(function(e){return e.cursor.row==n?!0:void(n=e.cursor.row)});if(i.length&&r.length!=i.length-1){r.forEach(function(e){t.substractPoint(e.cursor)});var o=0,s=1/0,a=i.map(function(t){var i=t.cursor,n=e.getLine(i.row),r=n.substr(i.column).search(/\S/g);return-1==r&&(r=0),i.column>o&&(o=i.column),s>r&&(s=r),r});i.forEach(function(t,i){var n=t.cursor,r=o-n.column,c=a[i]-s;r>c?e.insert(n,u.stringRepeat(" ",r-c)):e.remove(new l(n.row,n.column,n.row,n.column-r+c)),t.start.column=t.end.column=o,t.start.row=t.end.row=n.row,t.cursor=t.end}),t.fromOrientedRange(i[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var c=this.selection.getRange(),h=c.start.row,d=c.end.row,f=h==d;if(f){var p,m=this.session.getLength();do p=this.session.getLine(d);while(/[=:]/.test(p)&&++d0);0>h&&(h=0),d>=m&&(d=m-1)}var g=this.session.removeFullLines(h,d);g=this.$reAlignText(g,f),this.session.insert({row:h,column:0},g.join("\n")+"\n"),f||(c.start.column=0,c.end.column=g[g.length-1].length),this.selection.setRange(c)}},this.$reAlignText=function(e,t){function i(e){return u.stringRepeat(" ",e)}function n(e){return e[2]?i(s)+e[2]+i(a-e[2].length+l)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function r(e){return e[2]?i(s+a-e[2].length)+e[2]+i(l," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function o(e){return e[2]?i(s)+e[2]+i(l)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var s,a,l,c=!0,h=!0;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?null==s?(s=t[1].length,a=t[2].length,l=t[3].length,t):(s+a+l!=t[1].length+t[2].length+t[3].length&&(h=!1),s!=t[1].length&&(c=!1),s>t[1].length&&(s=t[1].length),at[3].length&&(l=t[3].length),t):[e]}).map(t?n:c?h?r:n:o)}}).call(v.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var i=e.oldSession;i&&(i.multiSelect.off("addRange",this.$onAddRange),i.multiSelect.off("removeRange",this.$onRemoveRange),i.multiSelect.off("multiSelect",this.$onMultiSelect),i.multiSelect.off("singleSelect",this.$onSingleSelect),i.multiSelect.lead.off("change",this.$checkMultiselectChange),i.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=o,e("./config").defineOptions(v.prototype,"editor",{enableMultiselect:{set:function(e){o(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",h)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",h))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("../../range").Range,r=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,i){var n=e.getLine(i);return this.foldingStartMarker.test(n)?"start":"markbeginend"==t&&this.foldingStopMarker&&this.foldingStopMarker.test(n)?"end":""},this.getFoldWidgetRange=function(e,t,i){return null},this.indentationBlock=function(e,t,i){var r=/\S/,o=e.getLine(t),s=o.search(r);if(-1!=s){for(var a=i||o.length,l=e.getLength(),c=t,h=t;++t=d)break;h=t}}if(h>c){var u=e.getLine(h).length;return new n(c,a,h,u)}}},this.openingBracketBlock=function(e,t,i,r,o){var s={row:i,column:r+1},a=e.$findClosingBracket(t,s,o);if(a){var l=e.foldWidgets[a.row];return null==l&&(l=e.getFoldWidget(a.row)),"start"==l&&a.row>s.row&&(a.row--,a.column=e.getLine(a.row).length),n.fromPoints(s,a)}},this.closingBracketBlock=function(e,t,i,r,o){var s={row:i,column:r},a=e.$findOpeningBracket(t,s);return a?(a.column++,s.column--,n.fromPoints(a,s)):void 0}}).call(r.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter { background: #f0f0f0; color: #333; } .ace-tm .ace_print-margin { width: 1px; background: #e8e8e8; } .ace-tm .ace_fold { background-color: #6B72E6; } .ace-tm { background-color: #FFFFFF; color: black; } .ace-tm .ace_cursor { color: black; } .ace-tm .ace_invisible { color: rgb(191, 191, 191); } .ace-tm .ace_storage, .ace-tm .ace_keyword { color: blue; } .ace-tm .ace_constant { color: rgb(197, 6, 11); } .ace-tm .ace_constant.ace_buildin { color: rgb(88, 72, 246); } .ace-tm .ace_constant.ace_language { color: rgb(88, 92, 246); } .ace-tm .ace_constant.ace_library { color: rgb(6, 150, 14); } .ace-tm .ace_invalid { background-color: rgba(255, 0, 0, 0.1); color: red; } .ace-tm .ace_support.ace_function { color: rgb(60, 76, 114); } .ace-tm .ace_support.ace_constant { color: rgb(6, 150, 14); } .ace-tm .ace_support.ace_type, .ace-tm .ace_support.ace_class { color: rgb(109, 121, 222); } .ace-tm .ace_keyword.ace_operator { color: rgb(104, 118, 135); } .ace-tm .ace_string { color: rgb(3, 106, 7); } .ace-tm .ace_comment { color: rgb(76, 136, 107); } .ace-tm .ace_comment.ace_doc { color: rgb(0, 102, 255); } .ace-tm .ace_comment.ace_doc.ace_tag { color: rgb(128, 159, 191); } .ace-tm .ace_constant.ace_numeric { color: rgb(0, 0, 205); } .ace-tm .ace_variable { color: rgb(49, 132, 149); } .ace-tm .ace_xml-pe { color: rgb(104, 104, 91); } .ace-tm .ace_entity.ace_name.ace_function { color: #0000A2; } .ace-tm .ace_heading { color: rgb(12, 7, 255); } .ace-tm .ace_list { color:rgb(185, 6, 144); } .ace-tm .ace_meta.ace_tag { color:rgb(0, 22, 142); } .ace-tm .ace_string.ace_regex { color: rgb(255, 0, 0) } .ace-tm .ace_marker-layer .ace_selection { background: rgb(181, 213, 255); } .ace-tm.ace_multiselect .ace_selection.ace_start { box-shadow: 0 0 3px 0px white; } .ace-tm .ace_marker-layer .ace_step { background: rgb(252, 255, 0); } .ace-tm .ace_marker-layer .ace_stack { background: rgb(164, 229, 101); } .ace-tm .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid rgb(192, 192, 192); } .ace-tm .ace_marker-layer .ace_active-line { background: rgba(0, 0, 0, 0.07); } .ace-tm .ace_gutter-active-line { background-color : #dcdcdc; } .ace-tm .ace_marker-layer .ace_selected-word { background: rgb(250, 250, 255); border: 1px solid rgb(200, 200, 250); } .ace-tm .ace_indent-guide { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y; } ';var n=e("../lib/dom");n.importCssString(t.cssText,t.cssClass)}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,i){"use strict";function n(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}var r=(e("./lib/oop"),e("./lib/dom"));e("./range").Range;(function(){this.getRowLength=function(e){var t;return t=this.lineWidgets?this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:0,this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&!t.hidden&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach(),this.editor!=e&&(this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets)))},this.detach=function(e){var t=this.editor;if(t){this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var i=this.session.lineWidgets;i&&i.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})}},this.updateOnFold=function(e,t){var i=t.lineWidgets;if(i&&e.action){for(var n=e.data,r=n.start.row,o=n.end.row,s="add"==e.action,a=r+1;o>a;a++)i[a]&&(i[a].hidden=s);i[o]&&(s?i[r]?i[o].hidden=s:i[r]=i[o]:(i[r]==i[o]&&(i[r]=void 0),i[o].hidden=s))}},this.updateOnChange=function(e){var t=this.session.lineWidgets;if(t){var i=e.start.row,n=e.end.row-i;if(0===n);else if("remove"==e.action){var r=t.splice(i+1,n);r.forEach(function(e){e&&this.removeLineWidget(e)},this),this.$updateRows()}else{var o=new Array(n);o.unshift(i,0),t.splice.apply(t,o),this.$updateRows()}}},this.$updateRows=function(){var e=this.session.lineWidgets;if(e){var t=!0;e.forEach(function(e,i){if(e)for(t=!1,e.row=i;e.$oldWidget;)e.$oldWidget.row=i,e=e.$oldWidget}),t&&(this.session.lineWidgets=null)}},this.addLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength()));var t=this.session.lineWidgets[e.row];t&&(e.$oldWidget=t,t.el&&t.el.parentNode&&(t.el.parentNode.removeChild(t.el),t._inDocument=!1)),this.session.lineWidgets[e.row]=e,e.session=this.session;var i=this.editor.renderer;e.html&&!e.el&&(e.el=r.createElement("div"),e.el.innerHTML=e.html),e.el&&(r.addCssClass(e.el,"ace_lineWidgetContainer"),e.el.style.position="absolute",e.el.style.zIndex=5,i.container.appendChild(e.el),e._inDocument=!0),e.coverGutter||(e.el.style.zIndex=3),e.pixelHeight||(e.pixelHeight=e.el.offsetHeight),null==e.rowCount&&(e.rowCount=e.pixelHeight/i.layerConfig.lineHeight);var n=this.session.getFoldAt(e.row,0);if(e.$fold=n,n){var o=this.session.lineWidgets;e.row!=n.end.row||o[n.start.row]?e.hidden=!0:o[n.start.row]=e}return this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,i),this.onWidgetChanged(e),e},this.removeLineWidget=function(e){if(e._inDocument=!1,e.session=null,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el),e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(t){}if(this.session.lineWidgets){var i=this.session.lineWidgets[e.row];if(i==e)this.session.lineWidgets[e.row]=e.$oldWidget,e.$oldWidget&&this.onWidgetChanged(e.$oldWidget);else for(;i;){if(i.$oldWidget==e){i.$oldWidget=e.$oldWidget;break}i=i.$oldWidget}}this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows()},this.getWidgetsAtRow=function(e){for(var t=this.session.lineWidgets,i=t&&t[e],n=[];i;)n.push(i),i=i.$oldWidget;return n},this.onWidgetChanged=function(e){this.session._changedWidgets.push(e),this.editor&&this.editor.renderer.updateFull()},this.measureWidgets=function(e,t){var i=this.session._changedWidgets,n=t.layerConfig;if(i&&i.length){for(var r=1/0,o=0;oa&&(a=0)),s.rowCount!=a&&(s.rowCount=a,s.row0&&!n[r];)r--;this.firstRow=i.firstRow,this.lastRow=i.lastRow,t.$cursorLayer.config=i;for(var s=r;o>=s;s++){var a=n[s];if(a&&a.el)if(a.hidden)a.el.style.top=-100-(a.pixelHeight||0)+"px";else{a._inDocument||(a._inDocument=!0,t.container.appendChild(a.el));var l=t.$cursorLayer.getPixelPosition({row:s,column:0},!0).top;a.coverLine||(l+=i.lineHeight*this.session.getRowLineCount(a.row)),a.el.style.top=l-i.offset+"px";var c=a.coverGutter?0:t.gutterWidth;a.fixedWidth||(c-=t.scrollLeft),a.el.style.left=c+"px",a.fullWidth&&a.screenWidth&&(a.el.style.minWidth=i.width+2*i.padding+"px"),a.fixedWidth?a.el.style.right=t.scrollBar.getWidth()+"px":a.el.style.right=""}}}}}).call(n.prototype),t.LineWidgets=n}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,i){"use strict";function n(e,t,i){for(var n=0,r=e.length-1;r>=n;){var o=n+r>>1,s=i(t,e[o]);if(s>0)n=o+1;else{if(!(0>s))return o;r=o-1}}return-(n+1)}function r(e,t,i){var r=e.getAnnotations().sort(a.comparePoints);if(r.length){var o=n(r,{row:t,column:-1},a.comparePoints);0>o&&(o=-o-1),o>=r.length?o=i>0?0:r.length-1:0===o&&0>i&&(o=r.length-1);var s=r[o];if(s&&i){if(s.row===t){do s=r[o+=i];while(s&&s.row===t);if(!s)return r.slice()}var l=[];t=s.row;do l[0>i?"unshift":"push"](s),s=r[o+=i];while(s&&s.row==t);return l.length&&l}}}var o=e("../line_widgets").LineWidgets,s=e("../lib/dom"),a=e("../range").Range;t.showErrorMarker=function(e,t){var i=e.session;i.widgetManager||(i.widgetManager=new o(i),i.widgetManager.attach(e));var n=e.getCursorPosition(),a=n.row,l=i.widgetManager.getWidgetsAtRow(a).filter(function(e){return"errorMarker"==e.type})[0];l?l.destroy():a-=t;var c,h=r(i,a,t);if(h){var d=h[0];n.column=(d.pos&&"number"!=typeof d.column?d.pos.sc:d.column)||0,n.row=d.row,c=e.renderer.$gutterLayer.$annotations[n.row]}else{if(l)return;c={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(n.row),e.selection.moveToPosition(n);var u={row:n.row,fixedWidth:!0,coverGutter:!0,el:s.createElement("div"),type:"errorMarker"},f=u.el.appendChild(s.createElement("div")),p=u.el.appendChild(s.createElement("div"));p.className="error_widget_arrow "+c.className;var m=e.renderer.$cursorLayer.getPixelPosition(n).left;p.style.left=m+e.renderer.gutterWidth-5+"px",u.el.className="error_widget_wrapper",f.className="error_widget "+c.className,f.innerHTML=c.text.join("
"),f.appendChild(s.createElement("div"));var g=function(e,t,i){return 0!==t||"esc"!==i&&"return"!==i?void 0:(u.destroy(),{command:"null"})};u.destroy=function(){e.$mouseHandler.isMousePressed||(e.keyBinding.removeKeyboardHandler(g),i.widgetManager.removeLineWidget(u),e.off("changeSelection",u.destroy),e.off("changeSession",u.destroy),e.off("mouseup",u.destroy),e.off("change",u.destroy))},e.keyBinding.addKeyboardHandler(g),e.on("changeSelection",u.destroy),e.on("changeSession",u.destroy),e.on("mouseup",u.destroy),e.on("change",u.destroy),e.session.widgetManager.addLineWidget(u),u.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:u.el.offsetHeight})},s.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; } ","")}),ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,i){"use strict";e("./lib/fixoldbrowsers");var n=e("./lib/dom"),r=e("./lib/event"),o=e("./editor").Editor,s=e("./edit_session").EditSession,a=e("./undomanager").UndoManager,l=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.acequire=e,t.edit=function(e){if("string"==typeof e){var i=e;if(e=document.getElementById(i),!e)throw new Error("ace.edit can't find div #"+i)}if(e&&e.env&&e.env.editor instanceof o)return e.env.editor;var s="";if(e&&/input|textarea/i.test(e.tagName)){var a=e;s=a.value,e=n.createElement("pre"),a.parentNode.replaceChild(e,a)}else e&&(s=n.getInnerText(e),e.innerHTML="");var c=t.createEditSession(s),h=new o(new l(e));h.setSession(c);var d={document:c,editor:h,onResize:h.resize.bind(h,null)};return a&&(d.textarea=a),r.addListener(window,"resize",d.onResize),h.on("destroy",function(){r.removeListener(window,"resize",d.onResize),d.editor.container.env=null}),h.container.env=h.env=d,h},t.createEditSession=function(e,t){var i=new s(e,t);return i.setUndoManager(new a),i},t.EditSession=s,t.UndoManager=a,t.version="1.2.2"}),function(){ace.acequire(["ace/ace"],function(e){e&&e.config.init(!0),window.ace||(window.ace=e);for(var t in e)e.hasOwnProperty(t)&&(window.ace[t]=e[t])})}(),e.exports=window.ace.acequire("ace/ace")},function(e,t,i){ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,i){"use strict";var n=e("../lib/oop"),r=e("./text_highlight_rules").TextHighlightRules,o=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"invalid.illegal",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"invalid.illegal",regex:"\\/\\/.*$"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"},{token:"string",regex:"",next:"start"}]}};n.inherits(o,r),t.JsonHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("../range").Range,r=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var i=e.getLine(t),r=i.match(/^(\s*\})/);if(!r)return 0;var o=r[1].length,s=e.findMatchingBracket({row:t,column:o});if(!s||s.row==t)return 0;var a=this.$getIndent(e.getLine(s.row));e.replace(new n(t,0,t,o-1),a)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(r.prototype),t.MatchingBraceOutdent=r}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,i){"use strict";var n,r=e("../../lib/oop"),o=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,a=e("../../lib/lang"),l=["text","paren.rparen","punctuation.operator"],c=["text","paren.rparen","punctuation.operator","comment"],h={},d=function(e){var t=-1;return e.multiSelect&&(t=e.selection.index,h.rangeCount!=e.multiSelect.rangeCount&&(h={rangeCount:e.multiSelect.rangeCount})),h[t]?n=h[t]:void(n=h[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""})},u=function(e,t,i,n){var r=e.end.row-e.start.row;return{text:i+t+n,selection:[0,e.start.column+1,r,e.end.column+(r?0:1)]}},f=function(){this.add("braces","insertion",function(e,t,i,r,o){var s=i.getCursorPosition(),l=r.doc.getLine(s.row);if("{"==o){d(i);var c=i.getSelectionRange(),h=r.doc.getTextRange(c);if(""!==h&&"{"!==h&&i.getWrapBehavioursEnabled())return u(c,h,"{","}");if(f.isSaneInsertion(i,r))return/[\]\}\)]/.test(l[s.column])||i.inMultiSelectMode?(f.recordAutoInsert(i,r,"}"),{text:"{}",selection:[1,1]}):(f.recordMaybeInsert(i,r,"{"),{text:"{",selection:[1,1]})}else if("}"==o){d(i);var p=l.substring(s.column,s.column+1);if("}"==p){var m=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(null!==m&&f.isAutoInsertedClosing(s,l,o))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if("\n"==o||"\r\n"==o){d(i);var g="";f.isMaybeInsertedClosing(s,l)&&(g=a.stringRepeat("}",n.maybeInsertedBrackets),f.clearMaybeInsertedClosing());var p=l.substring(s.column,s.column+1);if("}"===p){var v=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!v)return null;var w=this.$getIndent(r.getLine(v.row))}else{if(!g)return void f.clearMaybeInsertedClosing();var w=this.$getIndent(l)}var A=w+r.getTabString();return{text:"\n"+A+"\n"+w+g,selection:[1,A.length,1,A.length]}}f.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,i,r,o){var s=r.doc.getTextRange(o);if(!o.isMultiLine()&&"{"==s){d(i);var a=r.doc.getLine(o.start.row),l=a.substring(o.end.column,o.end.column+1);if("}"==l)return o.end.column++,o;n.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,i,n,r){if("("==r){d(i);var o=i.getSelectionRange(),s=n.doc.getTextRange(o);if(""!==s&&i.getWrapBehavioursEnabled())return u(o,s,"(",")");if(f.isSaneInsertion(i,n))return f.recordAutoInsert(i,n,")"),{text:"()",selection:[1,1]}}else if(")"==r){d(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if(")"==c){var h=n.$findOpeningBracket(")",{column:a.column+1,row:a.row});if(null!==h&&f.isAutoInsertedClosing(a,l,r))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,i,n,r){var o=n.doc.getTextRange(r);if(!r.isMultiLine()&&"("==o){d(i);var s=n.doc.getLine(r.start.row),a=s.substring(r.start.column+1,r.start.column+2);if(")"==a)return r.end.column++,r}}),this.add("brackets","insertion",function(e,t,i,n,r){if("["==r){d(i);var o=i.getSelectionRange(),s=n.doc.getTextRange(o);if(""!==s&&i.getWrapBehavioursEnabled())return u(o,s,"[","]");if(f.isSaneInsertion(i,n))return f.recordAutoInsert(i,n,"]"),{text:"[]",selection:[1,1]}}else if("]"==r){d(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if("]"==c){var h=n.$findOpeningBracket("]",{column:a.column+1,row:a.row});if(null!==h&&f.isAutoInsertedClosing(a,l,r))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,i,n,r){var o=n.doc.getTextRange(r);if(!r.isMultiLine()&&"["==o){d(i);var s=n.doc.getLine(r.start.row),a=s.substring(r.start.column+1,r.start.column+2);if("]"==a)return r.end.column++,r}}),this.add("string_dquotes","insertion",function(e,t,i,n,r){if('"'==r||"'"==r){d(i);var o=r,s=i.getSelectionRange(),a=n.doc.getTextRange(s);if(""!==a&&"'"!==a&&'"'!=a&&i.getWrapBehavioursEnabled())return u(s,a,o,o);if(!a){var l=i.getCursorPosition(),c=n.doc.getLine(l.row),h=c.substring(l.column-1,l.column),f=c.substring(l.column,l.column+1),p=n.getTokenAt(l.row,l.column),m=n.getTokenAt(l.row,l.column+1);if("\\"==h&&p&&/escape/.test(p.type))return null;var g,v=p&&/string|escape/.test(p.type),w=!m||/string|escape/.test(m.type);if(f==o)g=v!==w;else{if(v&&!w)return null;if(v&&w)return null;var A=n.$mode.tokenRe;A.lastIndex=0;var y=A.test(h);A.lastIndex=0;var C=A.test(h);if(y||C)return null;if(f&&!/[\s;,.})\]\\]/.test(f))return null;g=!0}return{text:g?o+o:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,i,n,r){var o=n.doc.getTextRange(r);if(!r.isMultiLine()&&('"'==o||"'"==o)){d(i);var s=n.doc.getLine(r.start.row),a=s.substring(r.start.column+1,r.start.column+2);if(a==o)return r.end.column++,r}})};f.isSaneInsertion=function(e,t){var i=e.getCursorPosition(),n=new s(t,i.row,i.column);if(!this.$matchTokenType(n.getCurrentToken()||"text",l)){var r=new s(t,i.row,i.column+1);if(!this.$matchTokenType(r.getCurrentToken()||"text",l))return!1}return n.stepForward(),n.getCurrentTokenRow()!==i.row||this.$matchTokenType(n.getCurrentToken()||"text",c)},f.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},f.recordAutoInsert=function(e,t,i){var r=e.getCursorPosition(),o=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,o,n.autoInsertedLineEnd[0])||(n.autoInsertedBrackets=0),n.autoInsertedRow=r.row,n.autoInsertedLineEnd=i+o.substr(r.column),n.autoInsertedBrackets++},f.recordMaybeInsert=function(e,t,i){var r=e.getCursorPosition(),o=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,o)||(n.maybeInsertedBrackets=0),n.maybeInsertedRow=r.row,n.maybeInsertedLineStart=o.substr(0,r.column)+i,n.maybeInsertedLineEnd=o.substr(r.column),n.maybeInsertedBrackets++},f.isAutoInsertedClosing=function(e,t,i){return n.autoInsertedBrackets>0&&e.row===n.autoInsertedRow&&i===n.autoInsertedLineEnd[0]&&t.substr(e.column)===n.autoInsertedLineEnd},f.isMaybeInsertedClosing=function(e,t){return n.maybeInsertedBrackets>0&&e.row===n.maybeInsertedRow&&t.substr(e.column)===n.maybeInsertedLineEnd&&t.substr(0,e.column)==n.maybeInsertedLineStart},f.popAutoInsertedClosing=function(){n.autoInsertedLineEnd=n.autoInsertedLineEnd.substr(1),n.autoInsertedBrackets--},f.clearMaybeInsertedClosing=function(){n&&(n.maybeInsertedBrackets=0,n.maybeInsertedRow=-1)},r.inherits(f,o),t.CstyleBehaviour=f}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,i){ -"use strict";var n=e("../../lib/oop"),r=e("../../range").Range,o=e("./fold_mode").FoldMode,s=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};n.inherits(s,o),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,i){var n=e.getLine(i);if(this.singleLineBlockCommentRe.test(n)&&!this.startRegionRe.test(n)&&!this.tripleStarBlockCommentRe.test(n))return"";var r=this._getFoldWidgetBase(e,t,i);return!r&&this.startRegionRe.test(n)?"start":r},this.getFoldWidgetRange=function(e,t,i,n){var r=e.getLine(i);if(this.startRegionRe.test(r))return this.getCommentRegionBlock(e,r,i);var o=r.match(this.foldingStartMarker);if(o){var s=o.index;if(o[1])return this.openingBracketBlock(e,o[1],i,s);var a=e.getCommentFoldRange(i,s+o[0].length,1);return a&&!a.isMultiLine()&&(n?a=this.getSectionRange(e,i):"all"!=t&&(a=null)),a}if("markbegin"!==t){var o=r.match(this.foldingStopMarker);if(o){var s=o.index+o[0].length;return o[1]?this.closingBracketBlock(e,o[1],i,s):e.getCommentFoldRange(i,s,-1)}}},this.getSectionRange=function(e,t){var i=e.getLine(t),n=i.search(/\S/),o=t,s=i.length;t+=1;for(var a=t,l=e.getLength();++tc)break;var h=this.getFoldWidgetRange(e,"all",t);if(h){if(h.start.row<=o)break;if(h.isMultiLine())t=h.end.row;else if(n==c)break}a=t}}return new r(o,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,i){for(var n=t.search(/\s*$/),o=e.getLength(),s=i,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++is?new r(s,n,h,t.length):void 0}}.call(s.prototype)}),ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),o=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,a=e("./matching_brace_outdent").MatchingBraceOutdent,l=e("./behaviour/cstyle").CstyleBehaviour,c=e("./folding/cstyle").FoldMode,h=e("../worker/worker_client").WorkerClient,d=function(){this.HighlightRules=s,this.$outdent=new a,this.$behaviour=new l,this.foldingRules=new c};r.inherits(d,o),function(){this.getNextLineIndent=function(e,t,i){var n=this.$getIndent(t);if("start"==e){var r=t.match(/^.*[\{\(\[]\s*$/);r&&(n+=i)}return n},this.checkOutdent=function(e,t,i){return this.$outdent.checkOutdent(t,i)},this.autoOutdent=function(e,t,i){this.$outdent.autoOutdent(t,i)},this.createWorker=function(e){var t=new h(["ace"],i(18),"JsonWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/json"}.call(d.prototype),t.Mode=d})},function(e,t,i){ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"],function(e,t,i){"use strict";var n=e("../lib/dom"),r=e("../lib/lang"),o=e("../lib/event"),s=" .ace_search { background-color: #ddd; border: 1px solid #cbcbcb; border-top: 0 none; max-width: 325px; overflow: hidden; margin: 0; padding: 4px; padding-right: 6px; padding-bottom: 0; position: absolute; top: 0px; z-index: 99; white-space: normal; } .ace_search.left { border-left: 0 none; border-radius: 0px 0px 5px 0px; left: 0; } .ace_search.right { border-radius: 0px 0px 0px 5px; border-right: 0 none; right: 0; } .ace_search_form, .ace_replace_form { border-radius: 3px; border: 1px solid #cbcbcb; float: left; margin-bottom: 4px; overflow: hidden; } .ace_search_form.ace_nomatch { outline: 1px solid red; } .ace_search_field { background-color: white; border-right: 1px solid #cbcbcb; border: 0 none; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; float: left; height: 22px; outline: 0; padding: 0 7px; width: 214px; margin: 0; } .ace_searchbtn, .ace_replacebtn { background: #fff; border: 0 none; border-left: 1px solid #dcdcdc; cursor: pointer; float: left; height: 22px; margin: 0; position: relative; } .ace_searchbtn:last-child, .ace_replacebtn:last-child { border-top-right-radius: 3px; border-bottom-right-radius: 3px; } .ace_searchbtn:disabled { background: none; cursor: default; } .ace_searchbtn { background-position: 50% 50%; background-repeat: no-repeat; width: 27px; } .ace_searchbtn.prev { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); } .ace_searchbtn.next { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); } .ace_searchbtn_close { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0; border-radius: 50%; border: 0 none; color: #656565; cursor: pointer; float: right; font: 16px/16px Arial; height: 14px; margin: 5px 1px 9px 5px; padding: 0; text-align: center; width: 14px; } .ace_searchbtn_close:hover { background-color: #656565; background-position: 50% 100%; color: white; } .ace_replacebtn.prev { width: 54px } .ace_replacebtn.next { width: 27px } .ace_button { margin-left: 2px; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -o-user-select: none; -ms-user-select: none; user-select: none; overflow: hidden; opacity: 0.7; border: 1px solid rgba(100,100,100,0.23); padding: 1px; -moz-box-sizing: border-box; box-sizing: border-box; color: black; } .ace_button:hover { background-color: #eee; opacity:1; } .ace_button:active { background-color: #ddd; } .ace_button.checked { border-color: #3399ff; opacity:1; } .ace_search_options{ margin-bottom: 3px; text-align: right; -webkit-user-select: none; -moz-user-select: none; -o-user-select: none; -ms-user-select: none; user-select: none; }",a=e("../keyboard/hash_handler").HashHandler,l=e("../lib/keys");n.importCssString(s,"ace_searchbox");var c=''.replace(/>\s+/g,">"),h=function(e,t,i){var r=n.createElement("div");r.innerHTML=c,this.element=r.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;o.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),o.stopPropagation(e)}),o.addListener(e,"click",function(e){var i=e.target||e.srcElement,n=i.getAttribute("action");n&&t[n]?t[n]():t.$searchBarKb.commands[n]&&t.$searchBarKb.commands[n].exec(t),o.stopPropagation(e)}),o.addCommandKeyListener(e,function(e,i,n){var r=l.keyCodeToString(n),s=t.$searchBarKb.findKeyCommand(i,r);s&&s.exec&&(s.exec(t),o.stopEvent(e))}),this.$onChange=r.delayedCall(function(){t.find(!1,!1)}),o.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),o.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),o.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new a([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new a,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e.searchInput.focus()},"Ctrl-H|Command-Option-F":function(e){e.replaceBox.style.display="",e.replaceInput.focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){n.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),n.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),n.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t,i){var r=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked,preventScroll:i}),o=!r&&this.searchInput.value;n.setCssClass(this.searchBox,"ace_nomatch",o),this.editor._emit("findSearchBox",{match:!o}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var e=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),t=!e&&this.searchInput.value;n.setCssClass(this.searchBox,"ace_nomatch",t),this.editor._emit("findSearchBox",{match:!t}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.find(!1,!1,!0),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(h.prototype),t.SearchBox=h,t.Search=function(e,t){var i=e.searchBox||new h(e);i.show(e.session.getTextRange(),t)}}),function(){ace.acequire(["ace/ext/searchbox"],function(){})}()},function(e,t,i){e.exports.id="ace/mode/json_worker",e.exports.src='"no use strict";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail="";testPath;){var alias=paths[testPath];if("string"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,"/")+(tail||alias.main||alias.name);if(alias===!1)return"";var i=testPath.lastIndexOf("/");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:"error",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf("!")){var chunks=moduleName.split("!");return window.normalizeModule(parentId,chunks[0])+"!"+window.normalizeModule(parentId,chunks[1])}if("."==moduleName.charAt(0)){var base=parentId.split("/").slice(0,-1).join("/");for(moduleName=(base?base+"/":"")+moduleName;-1!==moduleName.indexOf(".")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,"").replace(/\\/\\.\\//,"/").replace(/[^\\/]+\\/\\.\\.\\//,"")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error("worker.js acequire() accepts only (parentId, id) as arguments");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log("unable to load "+id);var path=resolveModuleId(id,window.acequire.tlns);return".js"!=path.slice(-3)&&(path+=".js"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,"string"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),"function"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=["require","exports","module"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case"require":return req;case"exports":return module.exports;case"module":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire("ace/lib/event_emitter").EventEmitter,oop=window.acequire("ace/lib/oop"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:"call",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:"event",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error("Unknown command:"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire("ace/lib/es5-shim"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(acequire,exports){"use strict";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define("ace/range",["require","exports","module"],function(acequire,exports){"use strict";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){"object"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){"object"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define("ace/apply_delta",["require","exports","module"],function(acequire,exports){"use strict";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||"";switch(delta.action){case"insert":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case"remove":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(acequire,exports){"use strict";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){"object"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?"unshift":"push"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),EventEmitter=acequire("./lib/event_emitter").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal("change",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),applyDelta=acequire("./apply_delta").applyDelta,EventEmitter=acequire("./lib/event_emitter").EventEmitter,Range=acequire("./range").Range,Anchor=acequire("./anchor").Anchor,Document=function(textOrLines){this.$lines=[""],0===textOrLines.length?this.$lines=[""]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0==="aaa".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,"\\n").split("\\n")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:"\\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\\r\\n";case"unix":return"\\n";default:return this.$autoNewLine||"\\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return"\\r\\n"==text||"\\r"==text||"\\n"==text},this.getLine=function(row){return this.$lines[row]||""},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||"").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."),this.insertMergedLines(position,["",""])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:"insert",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([""]),column=0):(lines=[""].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:"insert",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:"remove",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:"remove",lines:["",""]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert="insert"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal("change",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(""),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:"insert"==delta.action?"remove":"insert",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define("ace/lib/lang",["require","exports","module"],function(acequire,exports){"use strict";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split("").reverse().join("")},exports.stringRepeat=function(string,count){for(var result="";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,"")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,"")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&"object"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if("object"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}var cons=obj.constructor;if(cons===RegExp)return obj;copy=cons();for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,"\\\\$1")},exports.escapeHTML=function(str){return str.replace(/&/g,"&").replace(/"/g,""").replace(/\'/g,"'").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:"insert",start:data[i],lines:data[i+1]};else var d={action:"remove",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define("ace/mode/json/json_parse",["require","exports","module"],function(){"use strict";var at,ch,text,value,escapee={\'"\':\'"\',"\\\\":"\\\\","/":"/",b:"\\b",f:"\\f",n:"\\n",r:"\\r",t:" "},error=function(m){throw{name:"SyntaxError",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error("Expected \'"+c+"\' instead of \'"+ch+"\'"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string="";for("-"===ch&&(string="-",next("-"));ch>="0"&&"9">=ch;)string+=ch,next();if("."===ch)for(string+=".";next()&&ch>="0"&&"9">=ch;)string+=ch;if("e"===ch||"E"===ch)for(string+=ch,next(),("-"===ch||"+"===ch)&&(string+=ch,next());ch>="0"&&"9">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error("Bad number"),void 0):number},string=function(){var hex,i,uffff,string="";if(\'"\'===ch)for(;next();){if(\'"\'===ch)return next(),string;if("\\\\"===ch)if(next(),"u"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if("string"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error("Bad string")},white=function(){for(;ch&&" ">=ch;)next()},word=function(){switch(ch){case"t":return next("t"),next("r"),next("u"),next("e"),!0;case"f":return next("f"),next("a"),next("l"),next("s"),next("e"),!1;case"n":return next("n"),next("u"),next("l"),next("l"),null}error("Unexpected \'"+ch+"\'")},array=function(){var array=[];if("["===ch){if(next("["),white(),"]"===ch)return next("]"),array;for(;ch;){if(array.push(value()),white(),"]"===ch)return next("]"),array;next(","),white()}}error("Bad array")},object=function(){var key,object={};if("{"===ch){if(next("{"),white(),"}"===ch)return next("}"),object;for(;ch;){if(key=string(),white(),next(":"),Object.hasOwnProperty.call(object,key)&&error(\'Duplicate key "\'+key+\'"\'),object[key]=value(),white(),"}"===ch)return next("}"),object;next(","),white()}}error("Bad object")};return value=function(){switch(white(),ch){case"{":return object();case"[":return array();case\'"\':return string();case"-":return number();default:return ch>="0"&&"9">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=" ",result=value(),white(),ch&&error("Syntax error"),"function"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&"object"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({"":result},""):result}}),ace.define("ace/mode/json_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/json/json_parse"],function(acequire,exports){"use strict";var oop=acequire("../lib/oop"),Mirror=acequire("../worker/mirror").Mirror,parse=acequire("./json/json_parse"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:"error"})}this.sender.emit("annotate",errors)}}.call(JsonWorker.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,"sentinel",{}),"sentinel"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if("function"!=typeof target)throw new TypeError("Function.prototype.bind called on incompatible "+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,"__defineGetter__"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,"XXX"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return"[object Array]"==_toString(obj)});var boxedString=Object("a"),splitString="a"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,thisp=arguments[1],i=-1,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=[],thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError("reduce of empty array with no initial value")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError("reduceRight of empty array with no initial value")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(object,property){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if("object"!=typeof prototype)throw new TypeError("typeof prototype["+typeof prototype+"] != \'object\'");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom="undefined"==typeof document||doesDefinePropertyWork(document.createElement("div"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR="Property description must be an object: ",ERR_NON_OBJECT_TARGET="Object.defineProperty called on non-object: ",ERR_ACCESSORS_NOT_SUPPORTED="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(object,property,descriptor){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if("object"!=typeof descriptor&&"function"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,"value"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,"get")&&defineGetter(object,property,descriptor.get),owns(descriptor,"set")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return"function"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name="";owns(object,name);)name+="?";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError("Object.keys called on a non-object");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=" \\n \\f\\r   ᠎              \\u2028\\u2029";if(!String.prototype.trim||ws.trim()){ws="["+ws+"]";var trimBeginRegexp=RegExp("^"+ws+ws+"*"),trimEndRegexp=RegExp(ws+ws+"*$");String.prototype.trim=function(){return(this+"").replace(trimBeginRegexp,"").replace(trimEndRegexp,"")}}var toObject=function(o){if(null==o)throw new TypeError("can\'t convert "+o+" to object");return Object(o)}});'; -},function(e,t,i){e.exports=function(){throw new Error("define cannot be used indirect")}},function(e,t,i){(function(t){function i(){if(t.Blob)try{return new Blob(["asdf"],{type:"text/plain"}),Blob}catch(e){}var i=t.WebKitBlobBuilder||t.MozBlobBuilder||t.MSBlobBuilder;return function(e,t){var n=new i,r=t.endings,o=t.type;if(r)for(var s=0,a=e.length;a>s;++s)n.append(e[s],r);else for(var s=0,a=e.length;a>s;++s)n.append(e[s]);return o?n.getBlob(o):n.getBlob()}}e.exports=i()}).call(t,function(){return this}())}])}); +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):"object"==typeof exports?exports.JSONEditor=t():e.JSONEditor=t()}(this,function(){return function(e){function t(n){if(i[n])return i[n].exports;var r=i[n]={exports:{},id:n,loaded:!1};return e[n].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var i={};return t.m=e,t.c=i,t.p="",t(0)}([function(e,t,i){function n(e,t,i){if(!(this instanceof n))throw new Error('JSONEditor constructor called without "new".');var r=l.getInternetExplorerVersion();if(-1!=r&&9>r)throw new Error("Unsupported browser, IE9 or newer required. Please install the newest version of your browser.");if(t&&(t.error&&(console.warn('Option "error" has been renamed to "onError"'),t.onError=t.error,delete t.error),t.change&&(console.warn('Option "change" has been renamed to "onChange"'),t.onChange=t.change,delete t.change),t.editable&&(console.warn('Option "editable" has been renamed to "onEditable"'),t.onEditable=t.editable,delete t.editable),t)){var o=["ace","theme","ajv","schema","onChange","onEditable","onError","onModeChange","escapeUnicode","history","search","mode","modes","name","indentation"];Object.keys(t).forEach(function(e){-1===o.indexOf(e)&&console.warn('Unknown option "'+e+'". This option will be ignored')})}arguments.length&&this._create(e,t,i)}var r;try{r=i(4)}catch(o){}var s=i(1),a=i(2),l=i(3);n.modes={},n.prototype.DEBOUNCE_INTERVAL=150,n.prototype._create=function(e,t,i){this.container=e,this.options=t||{},this.json=i||{};var n=this.options.mode||"tree";this.setMode(n)},n.prototype._delete=function(){},n.prototype.set=function(e){this.json=e},n.prototype.get=function(){return this.json},n.prototype.setText=function(e){this.json=l.parse(e)},n.prototype.getText=function(){return JSON.stringify(this.json)},n.prototype.setName=function(e){this.options||(this.options={}),this.options.name=e},n.prototype.getName=function(){return this.options&&this.options.name},n.prototype.setMode=function(e){var t,i,r=this.container,o=l.extend({},this.options),s=o.mode;o.mode=e;var a=n.modes[e];if(!a)throw new Error('Unknown mode "'+o.mode+'"');try{var c="text"==a.data;if(i=this.getName(),t=this[c?"getText":"get"](),this._delete(),l.clear(this),l.extend(this,a.mixin),this.create(r,o),this.setName(i),this[c?"setText":"set"](t),"function"==typeof a.load)try{a.load.call(this)}catch(h){console.error(h)}if("function"==typeof o.onModeChange&&e!==s)try{o.onModeChange(e,s)}catch(h){console.error(h)}}catch(h){this._onError(h)}},n.prototype.getMode=function(){return this.options.mode},n.prototype._onError=function(e){if(!this.options||"function"!=typeof this.options.onError)throw e;this.options.onError(e)},n.prototype.setSchema=function(e){if(e){var t;try{t=this.options.ajv||r({allErrors:!0,verbose:!0})}catch(i){console.warn("Failed to create an instance of Ajv, JSON Schema validation is not available. Please use a JSONEditor bundle including Ajv, or pass an instance of Ajv as via the configuration option `ajv`.")}t&&(this.validateSchema=t.compile(e),this.options.schema=e,this.validate())}else this.validateSchema=null,this.options.schema=null,this.validate()},n.prototype.validate=function(){},n.registerMode=function(e){var t,i;if(l.isArray(e))for(t=0;te&&i.scrollTop>0?this.autoScrollStep=(n+s-e)/3:e>o-s&&r+i.scrollTop3?(i.scrollTop+=r/3,n.animateCallback=t,n.animateTimeout=setTimeout(a,50)):(t&&t(!0),i.scrollTop=s,delete n.animateTimeout,delete n.animateCallback)};a()}else t&&t(!1)},h._createFrame=function(){function e(e){t._onEvent&&t._onEvent(e)}this.frame=document.createElement("div"),this.frame.className="jsoneditor jsoneditor-mode-"+this.options.mode,this.container.appendChild(this.frame);var t=this;this.frame.onclick=function(t){var i=t.target;e(t),"BUTTON"==i.nodeName&&t.preventDefault()},this.frame.oninput=e,this.frame.onchange=e,this.frame.onkeydown=e,this.frame.onkeyup=e,this.frame.oncut=e,this.frame.onpaste=e,this.frame.onmousedown=e,this.frame.onmouseup=e,this.frame.onmouseover=e,this.frame.onmouseout=e,c.addEventListener(this.frame,"focus",e,!0),c.addEventListener(this.frame,"blur",e,!0),this.frame.onfocusin=e,this.frame.onfocusout=e,this.menu=document.createElement("div"),this.menu.className="jsoneditor-menu",this.frame.appendChild(this.menu);var i=document.createElement("button");i.className="jsoneditor-expand-all",i.title="Expand all fields",i.onclick=function(){t.expandAll()},this.menu.appendChild(i);var n=document.createElement("button");if(n.title="Collapse all fields",n.className="jsoneditor-collapse-all",n.onclick=function(){t.collapseAll()},this.menu.appendChild(n),this.history){var r=document.createElement("button");r.className="jsoneditor-undo jsoneditor-separator",r.title="Undo last action (Ctrl+Z)",r.onclick=function(){t._onUndo()},this.menu.appendChild(r),this.dom.undo=r;var s=document.createElement("button");s.className="jsoneditor-redo",s.title="Redo (Ctrl+Shift+Z)",s.onclick=function(){t._onRedo()},this.menu.appendChild(s),this.dom.redo=s,this.history.onChange=function(){r.disabled=!t.history.canUndo(),s.disabled=!t.history.canRedo()},this.history.onChange()}if(this.options&&this.options.modes&&this.options.modes.length){var a=l.create(this,this.options.modes,this.options.mode);this.menu.appendChild(a),this.dom.modeBox=a}this.options.search&&(this.searchBox=new o(this,this.menu))},h._onUndo=function(){this.history&&(this.history.undo(),this._onChange())},h._onRedo=function(){this.history&&(this.history.redo(),this._onChange())},h._onEvent=function(e){"keydown"==e.type&&this._onKeyDown(e),"focus"==e.type&&(u=e.target),"mousedown"==e.type&&this._startDragDistance(e),("mousemove"==e.type||"mouseup"==e.type||"click"==e.type)&&this._updateDragDistance(e);var t=a.getNodeFromTarget(e.target);if(t&&t.selected){if("click"==e.type){if(e.target==t.dom.menu)return void this.showContextMenu(e.target);e.hasMoved||this.deselect()}"mousedown"==e.type&&a.onDragStart(this.multiselection.nodes,e)}else"mousedown"==e.type&&(this.deselect(),t&&e.target==t.dom.drag?a.onDragStart(t,e):(!t||e.target!=t.dom.field&&e.target!=t.dom.value)&&this._onMultiSelectStart(e));t&&t.onEvent(e)},h._startDragDistance=function(e){this.dragDistanceEvent={initialTarget:e.target,initialPageX:e.pageX,initialPageY:e.pageY,dragDistance:0,hasMoved:!1}},h._updateDragDistance=function(e){this.dragDistanceEvent||this._startDragDistance(e);var t=e.pageX-this.dragDistanceEvent.initialPageX,i=e.pageY-this.dragDistanceEvent.initialPageY;return this.dragDistanceEvent.dragDistance=Math.sqrt(t*t+i*i),this.dragDistanceEvent.hasMoved=this.dragDistanceEvent.hasMoved||this.dragDistanceEvent.dragDistance>10,e.dragDistance=this.dragDistanceEvent.dragDistance,e.hasMoved=this.dragDistanceEvent.hasMoved,e.dragDistance},h._onMultiSelectStart=function(e){var t=a.getNodeFromTarget(e.target);if("tree"===this.options.mode&&void 0===this.options.onEditable){this.multiselection={start:t||null,end:null,nodes:[]},this._startDragDistance(e);var i=this;this.mousemove||(this.mousemove=c.addEventListener(window,"mousemove",function(e){i._onMultiSelect(e)})),this.mouseup||(this.mouseup=c.addEventListener(window,"mouseup",function(e){i._onMultiSelectEnd(e)}))}},h._onMultiSelect=function(e){if(e.preventDefault(),this._updateDragDistance(e),e.hasMoved){var t=a.getNodeFromTarget(e.target);t&&(null==this.multiselection.start&&(this.multiselection.start=t),this.multiselection.end=t),this.deselect();var i=this.multiselection.start,n=this.multiselection.end||this.multiselection.start;i&&n&&(this.multiselection.nodes=this._findTopLevelNodes(i,n),this.select(this.multiselection.nodes))}},h._onMultiSelectEnd=function(e){this.multiselection.nodes[0]&&this.multiselection.nodes[0].dom.menu.focus(),this.multiselection.start=null,this.multiselection.end=null,this.mousemove&&(c.removeEventListener(window,"mousemove",this.mousemove),delete this.mousemove),this.mouseup&&(c.removeEventListener(window,"mouseup",this.mouseup),delete this.mouseup)},h.deselect=function(e){this.multiselection.nodes.forEach(function(e){e.setSelected(!1)}),this.multiselection.nodes=[],e&&(this.multiselection.start=null,this.multiselection.end=null)},h.select=function(e){if(!Array.isArray(e))return this.select([e]);if(e){this.deselect(),this.multiselection.nodes=e.slice(0);var t=e[0];e.forEach(function(e){e.setSelected(!0,e===t)})}},h._findTopLevelNodes=function(e,t){for(var i=e.getPath(),n=t.getPath(),r=0;r0){var o=i.length>l;if(o){i=i.slice(0,l);var a=this.validateSchema.errors.length-l;i.push("("+a+" more errors...)")}var c=document.createElement("div");c.innerHTML=''+i.map(function(e){var t;return t="string"==typeof e?'":"",''+t+""}).join("")+"
'+e+"
"+e.dataPath+""+e.message+"
",this.dom.validationErrors=c,this.frame.appendChild(c);var h=c.clientHeight;this.content.style.marginBottom=-h+"px",this.content.style.paddingBottom=h+"px"}if(this.aceEditor){var d=!1;this.aceEditor.resize(d)}},e.exports=[{mode:"text",mixin:a,data:"text",load:a.format},{mode:"code",mixin:a,data:"text",load:a.format}]},function(e,t,i){var n=i(12);t.parse=function(e){try{return JSON.parse(e)}catch(i){throw t.validate(e),i}},t.sanitize=function(e){function t(){return e.charAt(h)}function i(){return e.charAt(h+1)}function n(){return e.charAt(h-1)}function r(){for(var e=c.length-1;e>=0;){var t=c[e];if(" "!==t&&"\n"!==t&&"\r"!==t&&" "!==t)return t;e--}return""}function o(){for(h+=2;hn;n++){var o=i[n];o.style&&o.removeAttribute("style");var s=o.attributes;if(s)for(var a=s.length-1;a>=0;a--){var l=s[a];l.specified===!0&&o.removeAttribute(l.name)}t.stripFormatting(o)}},t.setEndOfContentEditable=function(e){var t,i;document.createRange&&(t=document.createRange(),t.selectNodeContents(e),t.collapse(!1),i=window.getSelection(),i.removeAllRanges(),i.addRange(t))},t.selectContentEditable=function(e){if(e&&"DIV"==e.nodeName){var t,i;window.getSelection&&document.createRange&&(i=document.createRange(),i.selectNodeContents(e),t=window.getSelection(),t.removeAllRanges(),t.addRange(i))}},t.getSelection=function(){if(window.getSelection){var e=window.getSelection();if(e.getRangeAt&&e.rangeCount)return e.getRangeAt(0)}return null},t.setSelection=function(e){if(e&&window.getSelection){var t=window.getSelection();t.removeAllRanges(),t.addRange(e)}},t.getSelectionOffset=function(){var e=t.getSelection();return e&&"startOffset"in e&&"endOffset"in e&&e.startContainer&&e.startContainer==e.endContainer?{startOffset:e.startOffset,endOffset:e.endOffset,container:e.startContainer.parentNode}:null},t.setSelectionOffset=function(e){if(document.createRange&&window.getSelection){var i=window.getSelection();if(i){var n=document.createRange();e.container.firstChild||e.container.appendChild(document.createTextNode("")),n.setStart(e.container.firstChild,e.startOffset),n.setEnd(e.container.firstChild,e.endOffset),t.setSelection(n)}}},t.getInnerText=function(e,i){var n=void 0==i;if(n&&(i={text:"",flush:function(){var e=this.text;return this.text="",e},set:function(e){this.text=e}}),e.nodeValue)return i.flush()+e.nodeValue;if(e.hasChildNodes()){for(var r=e.childNodes,o="",s=0,a=r.length;a>s;s++){var l=r[s];if("DIV"==l.nodeName||"P"==l.nodeName){var c=r[s-1],h=c?c.nodeName:void 0;h&&"DIV"!=h&&"P"!=h&&"BR"!=h&&(o+="\n",i.flush()),o+=t.getInnerText(l,i),i.set("\n")}else"BR"==l.nodeName?(o+=i.flush(),i.set("\n")):o+=t.getInnerText(l,i)}return o}return"P"==e.nodeName&&-1!=t.getInternetExplorerVersion()?i.flush():""},t.getInternetExplorerVersion=function(){if(-1==o){var e=-1;if("Microsoft Internet Explorer"==navigator.appName){var t=navigator.userAgent,i=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");null!=i.exec(t)&&(e=parseFloat(RegExp.$1))}o=e}return o},t.isFirefox=function(){return-1!=navigator.userAgent.indexOf("Firefox")};var o=-1;t.addEventListener=function(e,i,n,r){if(e.addEventListener)return void 0===r&&(r=!1),"mousewheel"===i&&t.isFirefox()&&(i="DOMMouseScroll"),e.addEventListener(i,n,r),n;if(e.attachEvent){var o=function(){return n.call(e,window.event)};return e.attachEvent("on"+i,o),o}},t.removeEventListener=function(e,i,n,r){e.removeEventListener?(void 0===r&&(r=!1),"mousewheel"===i&&t.isFirefox()&&(i="DOMMouseScroll"),e.removeEventListener(i,n,r)):e.detachEvent&&e.detachEvent("on"+i,n)},t.parsePath=function s(e){var t,i;if(0===e.length)return[];var n=e.match(/^\.(\w+)/);if(n)t=n[1],i=e.substr(t.length+1);else{if("["!==e[0])throw new SyntaxError("Failed to parse path");var r=e.indexOf("]");if(-1===r)throw new SyntaxError("Character ] expected in path");if(1===r)throw new SyntaxError("Index expected after [");t=JSON.parse(e.substring(1,r)),i=e.substr(r+1)}return[t].concat(s(i))},t.improveSchemaError=function(e){if("enum"===e.keyword&&Array.isArray(e.schema)){var t=e.schema;if(t){if(t=t.map(function(e){return JSON.stringify(e)}),t.length>5){var i=["("+(t.length-5)+" more...)"];t=t.slice(0,5),t.push(i)}e.message="should be equal to one of: "+t.join(", ")}}return e},t.insideRect=function(e,t,i){var n=void 0!==i?i:0;return t.left-n>=e.left&&t.right+n<=e.right&&t.top-n>=e.top&&t.bottom+n<=e.bottom},t.debounce=function(e,t,i){var n;return function(){var r=this,o=arguments,s=function(){n=null,i||e.apply(r,o)},a=i&&!n;clearTimeout(n),n=setTimeout(s,t),a&&e.apply(r,o)}},t.textDiff=function(e,t){for(var i=t.length,n=0,r=e.length,o=t.length;t.charAt(n)===e.charAt(n)&&i>n;)n++;for(;t.charAt(o-1)===e.charAt(r-1)&&o>n&&r>0;)o--,r--;return{start:n,end:o}}},function(e,t,i){"use strict";function n(e){return p.test(e)}function r(e){function t(e,t){var i;if("string"==typeof e){if(i=A(e),!i)throw new Error('no schema with key or ref "'+e+'"')}else{var n=E(e);i=n.validate||b(n)}var r=i(t);return k.errors=i.errors,r}function g(e){var t=E(e);return t.validate||b(t)}function m(e,t,i,n){if(Array.isArray(e))for(var r=0;r=0},n.prototype.canRedo=function(){return this.indexthis.results.length-1&&(t=0),this._setActiveResult(t,e)}},n.prototype.previous=function(e){if(void 0!=this.results){var t=this.results.length-1,i=void 0!=this.resultIndex?this.resultIndex-1:t;0>i&&(i=t),this._setActiveResult(i,e)}},n.prototype._setActiveResult=function(e,t){if(this.activeResult){var i=this.activeResult.node,n=this.activeResult.elem;"field"==n?delete i.searchFieldActive:delete i.searchValueActive,i.updateDom()}if(!this.results||!this.results[e])return this.resultIndex=void 0,void(this.activeResult=void 0);this.resultIndex=e;var r=this.results[this.resultIndex].node,o=this.results[this.resultIndex].elem;"field"==o?r.searchFieldActive=!0:r.searchValueActive=!0,this.activeResult=this.results[this.resultIndex],r.updateDom(),r.scrollTo(function(){t&&r.focus(o)})},n.prototype._clearDelay=function(){void 0!=this.timeout&&(clearTimeout(this.timeout),delete this.timeout)},n.prototype._onDelayedSearch=function(e){this._clearDelay();var t=this;this.timeout=setTimeout(function(e){t._onSearch()},this.delay)},n.prototype._onSearch=function(e){this._clearDelay();var t=this.dom.search.value,i=t.length>0?t:void 0;if(i!=this.lastText||e)if(this.lastText=i,this.results=this.editor.search(i),this._setActiveResult(void 0),void 0!=i){var n=this.results.length;switch(n){case 0:this.dom.results.innerHTML="no results";break;case 1:this.dom.results.innerHTML="1 result";break;default:this.dom.results.innerHTML=n+" results"}}else this.dom.results.innerHTML=""},n.prototype._onKeyDown=function(e){var t=e.which;27==t?(this.dom.search.value="",this._onSearch(),e.preventDefault(),e.stopPropagation()):13==t&&(e.ctrlKey?this._onSearch(!0):e.shiftKey?this.previous():this.next(),e.preventDefault(),e.stopPropagation())},n.prototype._onKeyUp=function(e){var t=e.keyCode;27!=t&&13!=t&&this._onDelayedSearch(e)},n.prototype.clear=function(){this.dom.search.value="",this._onSearch()},e.exports=n},function(e,t,i){function n(e,t){function i(e,t,r){r.forEach(function(r){if("separator"==r.type){var o=document.createElement("div");o.className="jsoneditor-separator",a=document.createElement("li"),a.appendChild(o),e.appendChild(a)}else{var s={},a=document.createElement("li");e.appendChild(a);var l=document.createElement("button");if(l.className=r.className,s.button=l,r.title&&(l.title=r.title),r.click&&(l.onclick=function(){event.preventDefault(),n.hide(),r.click()}),a.appendChild(l),r.submenu){var c=document.createElement("div");c.className="jsoneditor-icon",l.appendChild(c),l.appendChild(document.createTextNode(r.text));var h;if(r.click){l.className+=" jsoneditor-default";var d=document.createElement("button");s.buttonExpand=d,d.className="jsoneditor-expand",d.innerHTML='
',a.appendChild(d),r.submenuTitle&&(d.title=r.submenuTitle),h=d}else{var u=document.createElement("div");u.className="jsoneditor-expand",l.appendChild(u),h=l}h.onclick=function(e){e.preventDefault(),n._onExpandItem(s),h.focus()};var f=[];s.subItems=f;var p=document.createElement("ul");s.ul=p,p.className="jsoneditor-menu",p.style.height="0",a.appendChild(p),i(p,f,r.submenu)}else l.innerHTML='
'+r.text;t.push(s)}})}this.dom={};var n=this,r=this.dom;this.anchor=void 0,this.items=e,this.eventListeners={},this.selection=void 0,this.onClose=t?t.close:void 0;var o=document.createElement("div");o.className="jsoneditor-contextmenu-root",r.root=o;var s=document.createElement("div");s.className="jsoneditor-contextmenu",r.menu=s,o.appendChild(s);var a=document.createElement("ul");a.className="jsoneditor-menu",s.appendChild(a),r.list=a,r.items=[];var l=document.createElement("button");r.focusButton=l;var c=document.createElement("li");c.style.overflow="hidden",c.style.height="0",c.appendChild(l),a.appendChild(c),i(a,this.dom.items,e),this.maxHeight=0,e.forEach(function(t){var i=24*(e.length+(t.submenu?t.submenu.length:0));n.maxHeight=Math.max(n.maxHeight,i)})}var r=i(3);n.prototype._getVisibleButtons=function(){var e=[],t=this;return this.dom.items.forEach(function(i){e.push(i.button),i.buttonExpand&&e.push(i.buttonExpand),i.subItems&&i==t.expandedItem&&i.subItems.forEach(function(t){e.push(t.button),t.buttonExpand&&e.push(t.buttonExpand)})}),e},n.visibleMenu=void 0,n.prototype.show=function(e,t){this.hide();var i=!0;if(t){var o=e.getBoundingClientRect(),s=t.getBoundingClientRect();o.bottom+this.maxHeights.top&&(i=!1)}if(i){var a=e.offsetHeight;this.dom.menu.style.left="0px",this.dom.menu.style.top=a+"px",this.dom.menu.style.bottom=""}else this.dom.menu.style.left="0px",this.dom.menu.style.top="",this.dom.menu.style.bottom="0px";var l=e.parentNode;l.insertBefore(this.dom.root,l.firstChild);var c=this,h=this.dom.list;this.eventListeners.mousedown=r.addEventListener(window,"mousedown",function(e){var t=e.target;t==h||c._isChildOf(t,h)||(c.hide(),e.stopPropagation(),e.preventDefault())}),this.eventListeners.keydown=r.addEventListener(window,"keydown",function(e){c._onKeyDown(e)}),this.selection=r.getSelection(),this.anchor=e,setTimeout(function(){c.dom.focusButton.focus()},0),n.visibleMenu&&n.visibleMenu.hide(),n.visibleMenu=this},n.prototype.hide=function(){this.dom.root.parentNode&&(this.dom.root.parentNode.removeChild(this.dom.root),this.onClose&&this.onClose());for(var e in this.eventListeners)if(this.eventListeners.hasOwnProperty(e)){var t=this.eventListeners[e];t&&r.removeEventListener(window,e,t),delete this.eventListeners[e]}n.visibleMenu==this&&(n.visibleMenu=void 0)},n.prototype._onExpandItem=function(e){var t=this,i=e==this.expandedItem,n=this.expandedItem;if(n&&(n.ul.style.height="0",n.ul.style.padding="",setTimeout(function(){t.expandedItem!=n&&(n.ul.style.display="",r.removeClassName(n.ul.parentNode,"jsoneditor-selected"))},300),this.expandedItem=void 0),!i){var o=e.ul;o.style.display="block";o.clientHeight;setTimeout(function(){t.expandedItem==e&&(o.style.height=24*o.childNodes.length+"px",o.style.padding="5px 10px")},0),r.addClassName(o.parentNode,"jsoneditor-selected"),this.expandedItem=e}},n.prototype._onKeyDown=function(e){var t,i,n,o,s=e.target,a=e.which,l=!1;27==a?(this.selection&&r.setSelection(this.selection),this.anchor&&this.anchor.focus(),this.hide(),l=!0):9==a?e.shiftKey?(t=this._getVisibleButtons(),i=t.indexOf(s),0==i&&(t[t.length-1].focus(),l=!0)):(t=this._getVisibleButtons(),i=t.indexOf(s),i==t.length-1&&(t[0].focus(),l=!0)):37==a?("jsoneditor-expand"==s.className&&(t=this._getVisibleButtons(),i=t.indexOf(s),n=t[i-1],n&&n.focus()),l=!0):38==a?(t=this._getVisibleButtons(),i=t.indexOf(s),n=t[i-1],n&&"jsoneditor-expand"==n.className&&(n=t[i-2]),n||(n=t[t.length-1]),n&&n.focus(),l=!0):39==a?(t=this._getVisibleButtons(),i=t.indexOf(s),o=t[i+1],o&&"jsoneditor-expand"==o.className&&o.focus(),l=!0):40==a&&(t=this._getVisibleButtons(),i=t.indexOf(s),o=t[i+1],o&&"jsoneditor-expand"==o.className&&(o=t[i+2]),o||(o=t[0]),o&&(o.focus(),l=!0),l=!0),l&&(e.stopPropagation(),e.preventDefault())},n.prototype._isChildOf=function(e,t){for(var i=e.parentNode;i;){if(i==t)return!0;i=i.parentNode}return!1},e.exports=n},function(e,t,i){function n(e,t){this.editor=e,this.dom={},this.expanded=!1,t&&t instanceof Object?(this.setField(t.field,t.fieldEditable),this.setValue(t.value,t.type)):(this.setField(""),this.setValue(null)),this._debouncedOnChangeValue=s.debounce(this._onChangeValue.bind(this),n.prototype.DEBOUNCE_INTERVAL),this._debouncedOnChangeField=s.debounce(this._onChangeField.bind(this),n.prototype.DEBOUNCE_INTERVAL)}var r=i(8),o=i(21),s=i(3);n.prototype.DEBOUNCE_INTERVAL=150,n.prototype._updateEditability=function(){if(this.editable={field:!0,value:!0},this.editor&&(this.editable.field="tree"===this.editor.options.mode,this.editable.value="view"!==this.editor.options.mode,("tree"===this.editor.options.mode||"form"===this.editor.options.mode)&&"function"==typeof this.editor.options.onEditable)){var e=this.editor.options.onEditable({field:this.field,value:this.value,path:this.getFieldsPath()});"boolean"==typeof e?(this.editable.field=e,this.editable.value=e):("boolean"==typeof e.field&&(this.editable.field=e.field),"boolean"==typeof e.value&&(this.editable.value=e.value))}},n.prototype.getFieldsPath=function(){for(var e=this,t=[];e;){var i=void 0!=e.field?e.field:e.index;void 0!==i&&t.unshift(i),e=e.parent}return t},n.prototype.findNode=function(e){for(var t=s.parsePath(e),i=this;i&&t.length>0;){var n=t.shift();if("number"==typeof n){if("array"!==i.type)throw new Error("Cannot get child node at index "+n+": node is no array");i=i.childs[n]}else{if("object"!==i.type)throw new Error("Cannot get child node "+n+": node is no object");i=i.childs.filter(function(e){return e.field===n})[0]}}return i},n.prototype.findParents=function(){for(var e=[],t=this.parent;t;)e.unshift(t),t=t.parent;return e},n.prototype.setError=function(e,t){this.getDom(),this.error=e;var i=this.dom.tdError;if(e){i||(i=document.createElement("td"),this.dom.tdError=i,this.dom.tdValue.parentNode.appendChild(i));var n=document.createElement("div");n.className="jsoneditor-popover jsoneditor-right",n.appendChild(document.createTextNode(e.message));var r=document.createElement("button");for(r.className="jsoneditor-schema-error",r.appendChild(n),r.onmouseover=r.onfocus=function(){for(var e=["right","above","below","left"],t=0;ts;s++)i=e[s],void 0===i||i instanceof Function||(r=new n(this.editor,{value:i}),this.appendChild(r));this.value=""}else if("object"==this.type){this.childs=[];for(var l in e)e.hasOwnProperty(l)&&(i=e[l],void 0===i||i instanceof Function||(r=new n(this.editor,{field:l,value:i}),this.appendChild(r)));this.value=""}else this.childs=void 0,this.value=e;this.previousValue=this.value},n.prototype.getValue=function(){if("array"==this.type){var e=[];return this.childs.forEach(function(t){e.push(t.getValue())}),e}if("object"==this.type){var t={};return this.childs.forEach(function(e){t[e.getField()]=e.getValue()}),t}return void 0===this.value&&this._getDomValue(),this.value},n.prototype.getLevel=function(){return this.parent?this.parent.getLevel()+1:0},n.prototype.getPath=function(){var e=this.parent?this.parent.getPath():[];return e.push(this),e},n.prototype.clone=function(){var e=new n(this.editor);if(e.type=this.type,e.field=this.field,e.fieldInnerText=this.fieldInnerText,e.fieldEditable=this.fieldEditable,e.value=this.value,e.valueInnerText=this.valueInnerText,e.expanded=this.expanded,this.childs){var t=[];this.childs.forEach(function(i){var n=i.clone();n.setParent(e),t.push(n)}),e.childs=t}else e.childs=void 0;return e},n.prototype.expand=function(e){this.childs&&(this.expanded=!0,this.dom.expand&&(this.dom.expand.className="jsoneditor-expanded"),this.showChilds(),e!==!1&&this.childs.forEach(function(t){t.expand(e)}))},n.prototype.collapse=function(e){this.childs&&(this.hideChilds(),e!==!1&&this.childs.forEach(function(t){t.collapse(e)}),this.dom.expand&&(this.dom.expand.className="jsoneditor-collapsed"),this.expanded=!1)},n.prototype.showChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.dom.tr,i=t?t.parentNode:void 0;if(i){var n=this.getAppend(),r=t.nextSibling;r?i.insertBefore(n,r):i.appendChild(n),this.childs.forEach(function(e){i.insertBefore(e.getDom(),n),e.showChilds()})}}},n.prototype.hide=function(){var e=this.dom.tr,t=e?e.parentNode:void 0;t&&t.removeChild(e),this.hideChilds()},n.prototype.hideChilds=function(){var e=this.childs;if(e&&this.expanded){var t=this.getAppend();t.parentNode&&t.parentNode.removeChild(t),this.childs.forEach(function(e){e.hide()})}},n.prototype.appendChild=function(e){if(this._hasChilds()){if(e.setParent(this),e.fieldEditable="object"==this.type,"array"==this.type&&(e.index=this.childs.length),this.childs.push(e),this.expanded){var t=e.getDom(),i=this.getAppend(),n=i?i.parentNode:void 0;i&&n&&n.insertBefore(t,i),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},n.prototype.moveBefore=function(e,t){if(this._hasChilds()){var i=this.dom.tr?this.dom.tr.parentNode:void 0;if(i){var n=document.createElement("tr");n.style.height=i.clientHeight+"px",i.appendChild(n)}e.parent&&e.parent.removeChild(e),t instanceof a?this.appendChild(e):this.insertBefore(e,t),i&&i.removeChild(n)}},n.prototype.moveTo=function(e,t){if(e.parent==this){var i=this.childs.indexOf(e);t>i&&t++}var n=this.childs[t]||this.append;this.moveBefore(e,n)},n.prototype.insertBefore=function(e,t){if(this._hasChilds()){if(t==this.append)e.setParent(this),e.fieldEditable="object"==this.type,this.childs.push(e);else{var i=this.childs.indexOf(t);if(-1==i)throw new Error("Node not found");e.setParent(this),e.fieldEditable="object"==this.type,this.childs.splice(i,0,e)}if(this.expanded){var n=e.getDom(),r=t.getDom(),o=r?r.parentNode:void 0;r&&o&&o.insertBefore(n,r),e.showChilds()}this.updateDom({updateIndexes:!0}),e.updateDom({recurse:!0})}},n.prototype.insertAfter=function(e,t){if(this._hasChilds()){var i=this.childs.indexOf(t),n=this.childs[i+1];n?this.insertBefore(e,n):this.appendChild(e)}},n.prototype.search=function(e){var t,i=[],n=e?e.toLowerCase():void 0;if(delete this.searchField,delete this.searchValue,void 0!=this.field){var r=String(this.field).toLowerCase();t=r.indexOf(n),-1!=t&&(this.searchField=!0,i.push({node:this,elem:"field"})),this._updateDomField()}if(this._hasChilds()){if(this.childs){var o=[];this.childs.forEach(function(t){o=o.concat(t.search(e))}),i=i.concat(o)}if(void 0!=n){var s=!1;0==o.length?this.collapse(s):this.expand(s)}}else{if(void 0!=this.value){var a=String(this.value).toLowerCase();t=a.indexOf(n),-1!=t&&(this.searchValue=!0,i.push({node:this,elem:"value"}))}this._updateDomValue()}return i},n.prototype.scrollTo=function(e){if(!this.dom.tr||!this.dom.tr.parentNode)for(var t=this.parent,i=!1;t;)t.expand(i),t=t.parent;this.dom.tr&&this.dom.tr.parentNode&&this.editor.scrollTo(this.dom.tr.offsetTop,e)},n.focusElement=void 0,n.prototype.focus=function(e){if(n.focusElement=e,this.dom.tr&&this.dom.tr.parentNode){var t=this.dom;switch(e){case"drag":t.drag?t.drag.focus():t.menu.focus();break;case"menu":t.menu.focus();break;case"expand":this._hasChilds()?t.expand.focus():t.field&&this.fieldEditable?(t.field.focus(),s.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),s.selectContentEditable(t.value)):t.menu.focus();break;case"field":t.field&&this.fieldEditable?(t.field.focus(),s.selectContentEditable(t.field)):t.value&&!this._hasChilds()?(t.value.focus(),s.selectContentEditable(t.value)):this._hasChilds()?t.expand.focus():t.menu.focus();break;case"value":default:t.value&&!this._hasChilds()?(t.value.focus(),s.selectContentEditable(t.value)):t.field&&this.fieldEditable?(t.field.focus(),s.selectContentEditable(t.field)):this._hasChilds()?t.expand.focus():t.menu.focus()}}},n.select=function(e){setTimeout(function(){s.selectContentEditable(e)},0)},n.prototype.blur=function(){this._getDomValue(!1),this._getDomField(!1)},n.prototype.containsNode=function(e){if(this==e)return!0;var t=this.childs;if(t)for(var i=0,n=t.length;n>i;i++)if(t[i].containsNode(e))return!0;return!1},n.prototype._move=function(e,t){if(e!=t){if(e.containsNode(this))throw new Error("Cannot move a field into a child of itself");e.parent&&e.parent.removeChild(e);var i=e.clone();e.clearDom(),t?this.insertBefore(i,t):this.appendChild(i)}},n.prototype.removeChild=function(e){if(this.childs){var t=this.childs.indexOf(e);if(-1!=t){e.hide(),delete e.searchField,delete e.searchValue;var i=this.childs.splice(t,1)[0];return i.parent=null,this.updateDom({updateIndexes:!0}),i}}return void 0},n.prototype._remove=function(e){this.removeChild(e)},n.prototype.changeType=function(e){var t=this.type;if(t!=e){if("string"!=e&&"auto"!=e||"string"!=t&&"auto"!=t){var i,n=this.dom.tr?this.dom.tr.parentNode:void 0;i=this.expanded?this.getAppend():this.getDom();var r=i&&i.parentNode?i.nextSibling:void 0;this.hide(),this.clearDom(),this.type=e,"object"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),delete e.index,e.fieldEditable=!0,void 0==e.field&&(e.field="")}),("string"==t||"auto"==t)&&(this.expanded=!0)):"array"==e?(this.childs||(this.childs=[]),this.childs.forEach(function(e,t){e.clearDom(),e.fieldEditable=!1,e.index=t}),("string"==t||"auto"==t)&&(this.expanded=!0)):this.expanded=!1,n&&(r?n.insertBefore(this.getDom(),r):n.appendChild(this.getDom())),this.showChilds()}else this.type=e;("auto"==e||"string"==e)&&("string"==e?this.value=String(this.value):this.value=this._stringCast(String(this.value)),this.focus()),this.updateDom({updateIndexes:!0})}},n.prototype._getDomValue=function(e){if(this.dom.value&&"array"!=this.type&&"object"!=this.type&&(this.valueInnerText=s.getInnerText(this.dom.value)),void 0!=this.valueInnerText)try{var t;if("string"==this.type)t=this._unescapeHTML(this.valueInnerText);else{var i=this._unescapeHTML(this.valueInnerText);t=this._stringCast(i)}t!==this.value&&(this.value=t,this._debouncedOnChangeValue())}catch(n){if(this.value=void 0,e!==!0)throw n}},n.prototype._onChangeValue=function(){var e=this.editor.getSelection();if(e.range){var t=s.textDiff(String(this.value),String(this.previousValue));e.range.startOffset=t.start,e.range.endOffset=t.end}var i=this.editor.getSelection();if(i.range){var n=s.textDiff(String(this.previousValue),String(this.value));i.range.startOffset=n.start,i.range.endOffset=n.end}this.editor._onAction("editValue",{node:this,oldValue:this.previousValue,newValue:this.value,oldSelection:e,newSelection:i}),this.previousValue=this.value},n.prototype._onChangeField=function(){var e=this.editor.getSelection();if(e.range){var t=s.textDiff(this.field,this.previousField);e.range.startOffset=t.start,e.range.endOffset=t.end}var i=this.editor.getSelection();if(i.range){var n=s.textDiff(this.previousField,this.field);i.range.startOffset=n.start,i.range.endOffset=n.end}this.editor._onAction("editField",{node:this,oldValue:this.previousField,newValue:this.field,oldSelection:e,newSelection:i}),this.previousField=this.field},n.prototype._updateDomValue=function(){var e=this.dom.value;if(e){var t=["jsoneditor-value"],i=this.value,n="auto"==this.type?s.type(i):this.type,r="string"==n&&s.isUrl(i);t.push("jsoneditor-"+n),r&&t.push("jsoneditor-url");var o=""==String(this.value)&&"array"!=this.type&&"object"!=this.type;if(o&&t.push("jsoneditor-empty"),this.searchValueActive&&t.push("jsoneditor-highlight-active"),this.searchValue&&t.push("jsoneditor-highlight"),e.className=t.join(" "),"array"==n||"object"==n){var a=this.childs?this.childs.length:0;e.title=this.type+" containing "+a+" items"}else r&&this.editable.value?e.title="Ctrl+Click or Ctrl+Enter to open url in new window":e.title="";"boolean"===n?(this.dom.checkbox||(this.dom.checkbox=document.createElement("input"),this.dom.checkbox.type="checkbox",this.dom.tdCheckbox=document.createElement("td"),this.dom.tdCheckbox.className="jsoneditor-tree",this.dom.tdCheckbox.appendChild(this.dom.checkbox),this.dom.tdValue.parentNode.insertBefore(this.dom.tdCheckbox,this.dom.tdValue)),this.dom.checkbox.checked=this.value):this.dom.tdCheckbox&&(this.dom.tdCheckbox.parentNode.removeChild(this.dom.tdCheckbox),delete this.dom.tdCheckbox,delete this.dom.checkbox),s.stripFormatting(e)}},n.prototype._updateDomField=function(){var e=this.dom.field;if(e){var t=""==String(this.field)&&"array"!=this.parent.type;t?s.addClassName(e,"jsoneditor-empty"):s.removeClassName(e,"jsoneditor-empty"),this.searchFieldActive?s.addClassName(e,"jsoneditor-highlight-active"):s.removeClassName(e,"jsoneditor-highlight-active"),this.searchField?s.addClassName(e,"jsoneditor-highlight"):s.removeClassName(e,"jsoneditor-highlight"),s.stripFormatting(e)}},n.prototype._getDomField=function(e){if(this.dom.field&&this.fieldEditable&&(this.fieldInnerText=s.getInnerText(this.dom.field)),void 0!=this.fieldInnerText)try{var t=this._unescapeHTML(this.fieldInnerText);t!==this.field&&(this.field=t,this._debouncedOnChangeField())}catch(i){if(this.field=void 0,e!==!0)throw i}},n.prototype.validate=function(){var e=[];if("object"===this.type){for(var t={},i=[],n=0;n0&&(e=this.childs.filter(function(e){return-1!==i.indexOf(e.field)}).map(function(e){return{node:e,error:{message:'duplicate key "'+e.field+'"'}}}))}if(this.childs)for(var n=0;n0&&(e=e.concat(o))}return e},n.prototype.clearDom=function(){this.dom={}},n.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;if(this._updateEditability(),e.tr=document.createElement("tr"),e.tr.node=this,"tree"===this.editor.options.mode){var t=document.createElement("td");if(this.editable.field&&this.parent){var i=document.createElement("button");e.drag=i,i.className="jsoneditor-dragarea",i.title="Drag to move this field (Alt+Shift+Arrows)",t.appendChild(i)}e.tr.appendChild(t);var n=document.createElement("td"),r=document.createElement("button");e.menu=r,r.className="jsoneditor-contextmenu",r.title="Click to open the actions menu (Ctrl+M)",n.appendChild(e.menu),e.tr.appendChild(n)}var o=document.createElement("td");return e.tr.appendChild(o),e.tree=this._createDomTree(),o.appendChild(e.tree),this.updateDom({updateIndexes:!0}),e.tr},n.onDragStart=function(e,t){if(!Array.isArray(e))return n.onDragStart([e],t);if(0!==e.length){var i=e[0],r=e[e.length-1],o=n.getNodeFromTarget(t.target),a=r._nextSibling(),l=i.editor,c=s.getAbsoluteTop(o.dom.tr)-s.getAbsoluteTop(i.dom.tr);l.mousemove||(l.mousemove=s.addEventListener(window,"mousemove",function(t){n.onDrag(e,t)})),l.mouseup||(l.mouseup=s.addEventListener(window,"mouseup",function(t){n.onDragEnd(e,t)})),l.highlighter.lock(),l.drag={oldCursor:document.body.style.cursor,oldSelection:l.getSelection(),oldBeforeNode:a,mouseX:t.pageX,offsetY:c,level:i.getLevel()},document.body.style.cursor="move",t.preventDefault()}},n.onDrag=function(e,t){if(!Array.isArray(e))return n.onDrag([e],t);if(0!==e.length){var i,r,o,l,c,h,d,u,f,p,g,m,v,w,A=e[0].editor,y=t.pageY-A.drag.offsetY,C=t.pageX,E=!1,b=e[0];if(i=b.dom.tr,f=s.getAbsoluteTop(i),m=i.offsetHeight,f>y){r=i;do r=r.previousSibling,d=n.getNodeFromTarget(r),p=r?s.getAbsoluteTop(r):0;while(r&&p>y);d&&!d.parent&&(d=void 0),d||(h=i.parentNode.firstChild,r=h?h.nextSibling:void 0,d=n.getNodeFromTarget(r),d==b&&(d=void 0)),d&&(r=d.dom.tr,p=r?s.getAbsoluteTop(r):0,y>p+m&&(d=void 0)),d&&(e.forEach(function(e){d.parent.moveBefore(e,d)}),E=!0)}else{var F=e[e.length-1];if(c=F.expanded&&F.append?F.append.getDom():F.dom.tr,l=c?c.nextSibling:void 0){g=s.getAbsoluteTop(l),o=l;do u=n.getNodeFromTarget(o),o&&(v=o.nextSibling?s.getAbsoluteTop(o.nextSibling):0,w=o?v-g:0,u.parent.childs.length==e.length&&u.parent.childs[e.length-1]==F&&(f+=27)),o=o.nextSibling;while(o&&y>f+w);if(u&&u.parent){var x=C-A.drag.mouseX,S=Math.round(x/24/2),$=A.drag.level+S,D=u.getLevel();for(r=u.dom.tr.previousSibling;$>D&&r;){d=n.getNodeFromTarget(r);var k=e.some(function(e){return e===d||d._isChildOf(e)});if(k);else{if(!(d instanceof a))break;var B=d.parent.childs;if(B.length==e.length&&B[e.length-1]==F)break;u=n.getNodeFromTarget(r),D=u.getLevel()}r=r.previousSibling}c.nextSibling!=u.dom.tr&&(e.forEach(function(e){u.parent.moveBefore(e,u)}),E=!0)}}}E&&(A.drag.mouseX=C,A.drag.level=b.getLevel()),A.startAutoScroll(y),t.preventDefault()}},n.onDragEnd=function(e,t){if(!Array.isArray(e))return n.onDrag([e],t);if(0!==e.length){var i=e[0],r=i.editor,o=i.parent,a=o.childs.indexOf(i),l=o.childs[a+e.length]||o.append;e[0]&&e[0].dom.menu.focus();var c={nodes:e,oldSelection:r.drag.oldSelection,newSelection:r.getSelection(),oldBeforeNode:r.drag.oldBeforeNode,newBeforeNode:l};c.oldBeforeNode!=c.newBeforeNode&&r._onAction("moveNodes",c),document.body.style.cursor=r.drag.oldCursor,r.highlighter.unlock(),e.forEach(function(e){t.target!==e.dom.drag&&t.target!==e.dom.menu&&r.highlighter.unhighlight()}),delete r.drag,r.mousemove&&(s.removeEventListener(window,"mousemove",r.mousemove),delete r.mousemove),r.mouseup&&(s.removeEventListener(window,"mouseup",r.mouseup),delete r.mouseup),r.stopAutoScroll(),t.preventDefault()}},n.prototype._isChildOf=function(e){for(var t=this.parent;t;){if(t==e)return!0;t=t.parent}return!1},n.prototype._createDomField=function(){return document.createElement("div")},n.prototype.setHighlight=function(e){this.dom.tr&&(e?s.addClassName(this.dom.tr,"jsoneditor-highlight"):s.removeClassName(this.dom.tr,"jsoneditor-highlight"),this.append&&this.append.setHighlight(e),this.childs&&this.childs.forEach(function(t){t.setHighlight(e)}))},n.prototype.setSelected=function(e,t){this.selected=e,this.dom.tr&&(e?s.addClassName(this.dom.tr,"jsoneditor-selected"):s.removeClassName(this.dom.tr,"jsoneditor-selected"),t?s.addClassName(this.dom.tr,"jsoneditor-first"):s.removeClassName(this.dom.tr,"jsoneditor-first"),this.append&&this.append.setSelected(e),this.childs&&this.childs.forEach(function(t){t.setSelected(e)}))},n.prototype.updateValue=function(e){this.value=e,this.updateDom()},n.prototype.updateField=function(e){this.field=e,this.updateDom()},n.prototype.updateDom=function(e){var t=this.dom.tree;t&&(t.style.marginLeft=24*this.getLevel()+"px");var i=this.dom.field;if(i){this.fieldEditable?(i.contentEditable=this.editable.field,i.spellcheck=!1,i.className="jsoneditor-field"):i.className="jsoneditor-readonly";var n;n=void 0!=this.index?this.index:void 0!=this.field?this.field:this._hasChilds()?this.type:"",i.innerHTML=this._escapeHTML(n)}var r=this.dom.value;if(r){var o=this.childs?this.childs.length:0;"array"==this.type?(r.innerHTML="["+o+"]",s.addClassName(this.dom.tr,"jsoneditor-expandable")):"object"==this.type?(r.innerHTML="{"+o+"}",s.addClassName(this.dom.tr,"jsoneditor-expandable")):(r.innerHTML=this._escapeHTML(this.value),s.removeClassName(this.dom.tr,"jsoneditor-expandable"))}this._updateDomField(),this._updateDomValue(),e&&e.updateIndexes===!0&&this._updateDomIndexes(), +e&&e.recurse===!0&&this.childs&&this.childs.forEach(function(t){t.updateDom(e)}),this.append&&this.append.updateDom()},n.prototype._updateDomIndexes=function(){var e=this.dom.value,t=this.childs;e&&t&&("array"==this.type?t.forEach(function(e,t){e.index=t;var i=e.dom.field;i&&(i.innerHTML=t)}):"object"==this.type&&t.forEach(function(e){void 0!=e.index&&(delete e.index,void 0==e.field&&(e.field=""))}))},n.prototype._createDomValue=function(){var e;return"array"==this.type?(e=document.createElement("div"),e.innerHTML="[...]"):"object"==this.type?(e=document.createElement("div"),e.innerHTML="{...}"):!this.editable.value&&s.isUrl(this.value)?(e=document.createElement("a"),e.href=this.value,e.target="_blank",e.innerHTML=this._escapeHTML(this.value)):(e=document.createElement("div"),e.contentEditable=this.editable.value,e.spellcheck=!1,e.innerHTML=this._escapeHTML(this.value)),e},n.prototype._createDomExpandButton=function(){var e=document.createElement("button");return this._hasChilds()?(e.className=this.expanded?"jsoneditor-expanded":"jsoneditor-collapsed",e.title="Click to expand/collapse this field (Ctrl+E). \nCtrl+Click to expand/collapse including all childs."):(e.className="jsoneditor-invisible",e.title=""),e},n.prototype._createDomTree=function(){var e=this.dom,t=document.createElement("table"),i=document.createElement("tbody");t.style.borderCollapse="collapse",t.className="jsoneditor-values",t.appendChild(i);var n=document.createElement("tr");i.appendChild(n);var r=document.createElement("td");r.className="jsoneditor-tree",n.appendChild(r),e.expand=this._createDomExpandButton(),r.appendChild(e.expand),e.tdExpand=r;var o=document.createElement("td");o.className="jsoneditor-tree",n.appendChild(o),e.field=this._createDomField(),o.appendChild(e.field),e.tdField=o;var s=document.createElement("td");s.className="jsoneditor-tree",n.appendChild(s),"object"!=this.type&&"array"!=this.type&&(s.appendChild(document.createTextNode(":")),s.className="jsoneditor-separator"),e.tdSeparator=s;var a=document.createElement("td");return a.className="jsoneditor-tree",n.appendChild(a),e.value=this._createDomValue(),a.appendChild(e.value),e.tdValue=a,t},n.prototype.onEvent=function(e){var t,i=e.type,n=e.target||e.srcElement,r=this.dom,o=this,a=this._hasChilds();if((n==r.drag||n==r.menu)&&("mouseover"==i?this.editor.highlighter.highlight(this):"mouseout"==i&&this.editor.highlighter.unhighlight()),"click"==i&&n==r.menu){var l=o.editor.highlighter;l.highlight(o),l.lock(),s.addClassName(r.menu,"jsoneditor-selected"),this.showContextMenu(r.menu,function(){s.removeClassName(r.menu,"jsoneditor-selected"),l.unlock(),l.unhighlight()})}if("click"==i&&(n==r.expand||("view"===o.editor.options.mode||"form"===o.editor.options.mode)&&"DIV"===n.nodeName)&&a){var c=e.ctrlKey;this._onExpand(c)}"change"==i&&n==r.checkbox&&(this.dom.value.innerHTML=!this.value,this._getDomValue());var h=r.value;if(n==h)switch(i){case"focus":t=this;break;case"blur":case"change":this._getDomValue(!0),this._updateDomValue(),this.value&&(h.innerHTML=this._escapeHTML(this.value));break;case"input":this._getDomValue(!0),this._updateDomValue();break;case"keydown":case"mousedown":this.editor.selection=this.editor.getSelection();break;case"click":(e.ctrlKey||!this.editable.value)&&s.isUrl(this.value)&&window.open(this.value,"_blank");break;case"keyup":this._getDomValue(!0),this._updateDomValue();break;case"cut":case"paste":setTimeout(function(){o._getDomValue(!0),o._updateDomValue()},1)}var d=r.field;if(n==d)switch(i){case"focus":t=this;break;case"blur":case"change":this._getDomField(!0),this._updateDomField(),this.field&&(d.innerHTML=this._escapeHTML(this.field));break;case"input":this._getDomField(!0),this._updateDomField();break;case"keydown":case"mousedown":this.editor.selection=this.editor.getSelection();break;case"keyup":this._getDomField(!0),this._updateDomField();break;case"cut":case"paste":setTimeout(function(){o._getDomField(!0),o._updateDomField()},1)}var u=r.tree;if(n==u.parentNode&&"click"==i&&!e.hasMoved){var f=void 0!=e.offsetX?e.offsetX<24*(this.getLevel()+1):e.pageX0?this.editor.multiselection.nodes:[this],y=A[0],C=A[A.length-1];if(13==u){if(f==this.dom.value)(!this.editable.value||e.ctrlKey)&&s.isUrl(this.value)&&(window.open(this.value,"_blank"),v=!0);else if(f==this.dom.expand){var E=this._hasChilds();if(E){var b=e.ctrlKey;this._onExpand(b),f.focus(),v=!0}}}else if(68==u)p&&w&&(n.onDuplicate(A),v=!0);else if(69==u)p&&(this._onExpand(g),f.focus(),v=!0);else if(77==u&&w)p&&(this.showContextMenu(f),v=!0);else if(46==u&&w)p&&(n.onRemove(A),v=!0);else if(45==u&&w)p&&!g?(this._onInsertBefore(),v=!0):p&&g&&(this._onInsertAfter(),v=!0);else if(35==u){if(m){var F=this._lastNode();F&&F.focus(n.focusElement||this._getElementName(f)),v=!0}}else if(36==u){if(m){var x=this._firstNode();x&&x.focus(n.focusElement||this._getElementName(f)),v=!0}}else if(37==u){if(m&&!g){var S=this._previousElement(f);S&&this.focus(this._getElementName(S)),v=!0}else if(m&&g&&w){if(C.expanded){var $=C.getAppend();r=$?$.nextSibling:void 0}else{var D=C.getDom();r=D.nextSibling}r&&(i=n.getNodeFromTarget(r),o=r.nextSibling,_=n.getNodeFromTarget(o),i&&i instanceof a&&1!=C.parent.childs.length&&_&&_.parent&&(l=this.editor.getSelection(),c=C._nextSibling(),A.forEach(function(e){_.parent.moveBefore(e,_)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:A,oldBeforeNode:c,newBeforeNode:_,oldSelection:l,newSelection:this.editor.getSelection()})))}}else if(38==u)m&&!g?(t=this._previousNode(),t&&(this.editor.deselect(!0),t.focus(n.focusElement||this._getElementName(f))),v=!0):!m&&p&&g&&w?(t=this._previousNode(),t&&(d=this.editor.multiselection,d.start=d.start||this,d.end=t,h=this.editor._findTopLevelNodes(d.start,d.end),this.editor.select(h),t.focus("field")),v=!0):m&&g&&w&&(t=y._previousNode(),t&&t.parent&&(l=this.editor.getSelection(),c=C._nextSibling(),A.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:A,oldBeforeNode:c,newBeforeNode:t,oldSelection:l,newSelection:this.editor.getSelection()})),v=!0);else if(39==u){if(m&&!g){var k=this._nextElement(f);k&&this.focus(this._getElementName(k)),v=!0}else if(m&&g&&w){D=y.getDom();var B=D.previousSibling;B&&(t=n.getNodeFromTarget(B),t&&t.parent&&t instanceof a&&!t.isVisible()&&(l=this.editor.getSelection(),c=C._nextSibling(),A.forEach(function(e){t.parent.moveBefore(e,t)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:A,oldBeforeNode:c,newBeforeNode:t,oldSelection:l,newSelection:this.editor.getSelection()})))}}else if(40==u)if(m&&!g)i=this._nextNode(),i&&(this.editor.deselect(!0),i.focus(n.focusElement||this._getElementName(f))),v=!0;else if(!m&&p&&g&&w)i=this._nextNode(),i&&(d=this.editor.multiselection,d.start=d.start||this,d.end=i,h=this.editor._findTopLevelNodes(d.start,d.end),this.editor.select(h),i.focus("field")),v=!0;else if(m&&g&&w){i=C.expanded?C.append?C.append._nextNode():void 0:C._nextNode();var _=i&&(i._nextNode()||i.parent.append);_&&_.parent&&(l=this.editor.getSelection(),c=C._nextSibling(),A.forEach(function(e){_.parent.moveBefore(e,_)}),this.focus(n.focusElement||this._getElementName(f)),this.editor._onAction("moveNodes",{nodes:A,oldBeforeNode:c,newBeforeNode:_,oldSelection:l,newSelection:this.editor.getSelection()})),v=!0}v&&(e.preventDefault(),e.stopPropagation())},n.prototype._onExpand=function(e){if(e){var t=this.dom.tr.parentNode,i=t.parentNode,n=i.scrollTop;i.removeChild(t)}this.expanded?this.collapse(e):this.expand(e),e&&(i.appendChild(t),i.scrollTop=n)},n.onRemove=function(e){if(!Array.isArray(e))return n.onRemove([e]);if(e&&e.length>0){var t=e[0],i=t.parent,r=t.editor,o=t.getIndex();r.highlighter.unhighlight();var s=r.getSelection();n.blurNodes(e);var a=r.getSelection();e.forEach(function(e){e.parent._remove(e)}),r._onAction("removeNodes",{nodes:e.slice(0),parent:i,index:o,oldSelection:s,newSelection:a})}},n.onDuplicate=function(e){if(!Array.isArray(e))return n.onDuplicate([e]);if(e&&e.length>0){var t=e[e.length-1],i=t.parent,r=t.editor;r.deselect(r.multiselection.nodes);var o=r.getSelection(),s=t,a=e.map(function(e){var t=e.clone();return i.insertAfter(t,s),s=t,t});1===e.length?a[0].focus():r.select(a);var l=r.getSelection();r._onAction("duplicateNodes",{afterNode:t,nodes:a,parent:i,oldSelection:o,newSelection:l})}},n.prototype._onInsertBefore=function(e,t,i){var r=this.editor.getSelection(),o=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});o.expand(!0),this.parent.insertBefore(o,this),this.editor.highlighter.unhighlight(),o.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertBeforeNodes",{nodes:[o],beforeNode:this,parent:this.parent,oldSelection:r,newSelection:s})},n.prototype._onInsertAfter=function(e,t,i){var r=this.editor.getSelection(),o=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});o.expand(!0),this.parent.insertAfter(o,this),this.editor.highlighter.unhighlight(),o.focus("field");var s=this.editor.getSelection();this.editor._onAction("insertAfterNodes",{nodes:[o],afterNode:this,parent:this.parent,oldSelection:r,newSelection:s})},n.prototype._onAppend=function(e,t,i){var r=this.editor.getSelection(),o=new n(this.editor,{field:void 0!=e?e:"",value:void 0!=t?t:"",type:i});o.expand(!0),this.parent.appendChild(o),this.editor.highlighter.unhighlight(),o.focus("field");var s=this.editor.getSelection();this.editor._onAction("appendNodes",{nodes:[o],parent:this.parent,oldSelection:r,newSelection:s})},n.prototype._onChangeType=function(e){var t=this.type;if(e!=t){var i=this.editor.getSelection();this.changeType(e);var n=this.editor.getSelection();this.editor._onAction("changeType",{node:this,oldType:t,newType:e,oldSelection:i,newSelection:n})}},n.prototype._onSort=function(e){if(this._hasChilds()){var t="desc"==e?-1:1,i="array"==this.type?"value":"field";this.hideChilds();var n=this.childs,r=this.sort;this.childs=this.childs.concat(),this.childs.sort(function(e,n){return e[i]>n[i]?t:e[i]/g,">").replace(/ /g,"  ").replace(/^ /," ").replace(/ $/," "),i=JSON.stringify(t),n=i.substring(1,i.length-1);return this.editor.options.escapeUnicode===!0&&(n=s.escapeUnicodeChars(n)),n},n.prototype._unescapeHTML=function(e){var t='"'+this._escapeJSON(e)+'"',i=s.parse(t);return i.replace(/</g,"<").replace(/>/g,">").replace(/ |\u00A0/g," ").replace(/&/g,"&")},n.prototype._escapeJSON=function(e){for(var t="",i=0;i2&&b.push("'"+this.terminals_[y]+"'");var x="";x=this.lexer.showPosition?"Parse error on line "+(c+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+b.join(", ")+", got '"+this.terminals_[g]+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==g?"end of input":"'"+(this.terminals_[g]||g)+"'"),this.parseError(x,{text:this.lexer.match,token:this.terminals_[g]||g,line:this.lexer.yylineno,loc:p,expected:b})}if(3==d){if(g==f)throw new Error(x||"Parsing halted.");h=this.lexer.yyleng,l=this.lexer.yytext,c=this.lexer.yylineno,p=this.lexer.yylloc,g=i()}for(;;){if(u.toString()in a[v])break;if(0==v)throw new Error(x||"Parsing halted.");t(1),v=r[r.length-1]}m=g,g=u,v=r[r.length-1],w=a[v]&&a[v][u],d=3}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+g);switch(w[0]){case 1:r.push(g),o.push(this.lexer.yytext),s.push(this.lexer.yylloc),r.push(w[1]),g=null,m?(g=m,m=null):(h=this.lexer.yyleng,l=this.lexer.yytext,c=this.lexer.yylineno,p=this.lexer.yylloc,d>0&&d--);break;case 2:if(C=this.productions_[w[1]][1],F.$=o[o.length-C],F._$={first_line:s[s.length-(C||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(C||1)].first_column,last_column:s[s.length-1].last_column},A=this.performAction.call(F,l,h,c,this.yy,w[1],o,s),"undefined"!=typeof A)return A;C&&(r=r.slice(0,-1*C*2),o=o.slice(0,-1*C),s=s.slice(0,-1*C)),r.push(this.productions_[w[1]][0]),o.push(F.$),s.push(F._$),E=a[r[r.length-2]][r[r.length-1]],r.push(E);break;case 3:return!0}}return!0}},t=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parseError)throw new Error(e);this.yy.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.match+=e,this.matched+=e;var t=e.match(/\n/);return t&&this.yylineno++,this._input=this._input.slice(1),e},unput:function(e){return this._input=e+this._input,this},more:function(){return this._more=!0,this},less:function(e){this._input=this.match.slice(e)+this._input},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,i,n,r;this._more||(this.yytext="",this.match="");for(var o=this._currentRules(),s=0;st[0].length)||(t=i,n=s,this.options.flex));s++);return t?(r=t[0].match(/\n.*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-1:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,o[n],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e?e:void 0):""===this._input?this.EOF:void this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return"undefined"!=typeof e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)}};return e.options={},e.performAction=function(e,t,i,n){switch(i){case 0:break;case 1:return 6;case 2:return t.yytext=t.yytext.substr(1,t.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return"INVALID"}},e.rules=[/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt\/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/],e.conditions={INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}},e}();return e.lexer=t,e}();t.parser=n,t.parse=n.parse.bind(n)},function(e,t,i){"use strict";function n(e,t,i){var o=this._refs[i];if("string"==typeof o){if(!this._refs[o])return n.call(this,e,t,o);o=this._refs[o]}if(o=o||this._schemas[i],o instanceof w)return a(o.schema,this.opts.inlineRefs)?o.schema:o.validate||this._compile(o);var s,l,c,h=r.call(this,t,i);return h&&(s=h.schema,t=h.root,c=h.baseId),s instanceof w?l=s.validate||e.call(this,s.schema,t,void 0,c):s&&(l=a(s,this.opts.inlineRefs)?s:e.call(this,s,t,void 0,c)),l}function r(e,t){var i=g.parse(t,!1,!0),n=d(i),r=h(e.schema.id);if(n!==r){var a=u(n),l=this._refs[a];if("string"==typeof l)return o.call(this,e,l,i);if(l instanceof w)l.validate||this._compile(l),e=l;else if(l=this._schemas[a],l instanceof w){if(l.validate||this._compile(l),a==u(t))return{schema:l,root:e,baseId:r};e=l}if(!e.schema)return;r=h(e.schema.id)}return s.call(this,i,r,e.schema,e)}function o(e,t,i){var n=r.call(this,e,t);if(n){var o=n.schema,a=n.baseId;return e=n.root,o.id&&(a=f(a,o.id)),s.call(this,i,a,o,e)}}function s(e,t,i,n){if(e.hash=e.hash||"","#/"==e.hash.slice(0,2)){for(var o=e.hash.split("/"),s=1;s=1&&12>=i&&n>=1&&n<=g[i]}function o(e,t){var i=e.match(m);if(!i)return!1;var n=i[1],r=i[2],o=i[3],s=i[5];return 23>=n&&59>=r&&59>=o&&(!t||s)}function s(e){var t=e.split(E);return r(t[0])&&o(t[1],!0)}function a(e){return e.length<=255&&v.test(e)}function l(e){return b.test(e)&&w.test(e)}function c(e){try{return new RegExp(e),!0}catch(t){return!1}}function h(e,t){return e&&t?e>t?1:t>e?-1:e===t?0:void 0:void 0}function d(e,t){return e&&t&&(e=e.match(m),t=t.match(m),e&&t)?(e=e[1]+e[2]+e[3]+(e[4]||""),t=t[1]+t[2]+t[3]+(t[4]||""),e>t?1:t>e?-1:e===t?0:void 0):void 0}function u(e,t){if(e&&t){e=e.split(E),t=t.split(E);var i=h(e[0],t[0]);if(void 0!==i)return i||d(e[1],t[1])}}var f=i(30),p=/^\d\d\d\d-(\d\d)-(\d\d)$/,g=[0,31,29,31,30,31,30,31,31,30,31,30,31],m=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d:\d\d)?$/i,v=/^[a-z](?:(?:[-0-9a-z]{0,61})?[0-9a-z])?(\.[a-z](?:(?:[-0-9a-z]{0,61})?[0-9a-z])?)*$/i,w=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@\/?]|%[0-9a-f]{2})*)?(?:\#(?:[a-z0-9\-._~!$&'()*+,;=:@\/?]|%[0-9a-f]{2})*)?$/i,A=/^(?:urn\:uuid\:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,y=/^(?:\/(?:[^~\/]|~0|~1)+)*(?:\/)?$|^\#(?:\/(?:[a-z0-9_\-\.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)+)*(?:\/)?$/i,C=/^(?:0|[1-9][0-9]*)(?:\#|(?:\/(?:[^~\/]|~0|~1)+)*(?:\/)?)$/; +e.exports=n,n.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^[0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s][0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)$/i,uri:/^(?:[a-z][a-z0-9+-.]*)?(?:\:|\/)\/?[^\s]*$/i,email:/^[a-z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:v,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:c,uuid:A,"json-pointer":y,"relative-json-pointer":C},n.full={date:r,time:o,"date-time":s,uri:l,email:/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&''*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:a,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:c,uuid:A,"json-pointer":y,"relative-json-pointer":C},n.compare={date:h,time:d,"date-time":u};var E=/t|\s/i,b=/\/|\:/},function(e,t,i){"use strict";var n=i(31),r=i(30);e.exports=function(){var e=[{type:"number",rules:["maximum","minimum","multipleOf"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","uniqueItems","items"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","properties"]},{rules:["$ref","enum","not","anyOf","oneOf","allOf"]}];return e.all=["type","additionalProperties","patternProperties"],e.keywords=["additionalItems","$schema","id","title","description","default"],e.types=["number","integer","string","array","object","boolean","null"],e.forEach(function(t){t.rules=t.rules.map(function(t){return e.all.push(t),{keyword:t,code:n[t]}})}),e.keywords=r.toHash(e.all.concat(e.keywords)),e.all=r.toHash(e.all),e.types=r.toHash(e.types),e}},function(e,t,i){"use strict";function n(e){if(e.opts.meta!==!1){var t=i(32);e.addMetaSchema(t,o)}e.addKeyword("constant",{inline:i(33),statements:!0,errors:"full"}),e.addKeyword("contains",{type:"array",macro:r});var n=i(34);e.addKeyword("formatMaximum",{type:"string",inline:n,statements:!0,errors:"full"}),e.addKeyword("formatMinimum",{type:"string",inline:n,statements:!0,errors:"full"}),e.addKeyword("exclusiveFormatMaximum"),e.addKeyword("exclusiveFormatMinimum"),e.addKeyword("patternGroups"),e.addKeyword("switch",{inline:i(35),statements:!0,errors:"full"})}function r(e){return{not:{items:{not:e}}}}var o="https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json";e.exports={enable:n,META_SCHEMA_ID:o}},function(e,t,i){"use strict";e.exports=function(e,t){function i(e,t,n){function o(n){function o(n,o){if(n)t(n);else{if(!r._refs[s]&&!r._schemas[s])try{r.addSchema(o,s)}catch(a){return void t(a)}i(e,t)}}var s=n.missingSchema;if(r._refs[s]||r._schemas[s])return t(new Error("Schema "+s+" is loaded but"+n.missingRef+"cannot be resolved"));var a=r._loadingSchemas[s];a?"function"==typeof a?r._loadingSchemas[s]=[a,o]:a[a.length]=o:(r._loadingSchemas[s]=o,r.opts.loadSchema(s,function(e,t){var i=r._loadingSchemas[s];if(delete r._loadingSchemas[s],"function"==typeof i)i(e,t);else for(var n=0;na;a++)r(s[a]);for(a=0;l>a;a++)i(e,s[a],t)}else s&&r(s),i(e,s,t)}this.RULES.keywords[e]=!0,this.RULES.all[e]=!0}},function(e,t,i){function n(e){function t(e){this.editor=e,this.dom={}}return t.prototype=new e,t.prototype.getDom=function(){var e=this.dom;if(e.tr)return e.tr;this._updateEditability();var t=document.createElement("tr");if(t.node=this,e.tr=t,this.editable.field){e.tdDrag=document.createElement("td");var i=document.createElement("td");e.tdMenu=i;var n=document.createElement("button");n.className="jsoneditor-contextmenu",n.title="Click to open the actions menu (Ctrl+M)",e.menu=n,i.appendChild(e.menu)}var r=document.createElement("td"),o=document.createElement("div");return o.innerHTML="(empty)",o.className="jsoneditor-readonly",r.appendChild(o),e.td=r,e.text=o,this.updateDom(),t},t.prototype.updateDom=function(){var e=this.dom,t=e.td;t&&(t.style.paddingLeft=24*this.getLevel()+26+"px");var i=e.text;i&&(i.innerHTML="(empty "+this.parent.type+")");var n=e.tr;this.isVisible()?e.tr.firstChild||(e.tdDrag&&n.appendChild(e.tdDrag),e.tdMenu&&n.appendChild(e.tdMenu),n.appendChild(t)):e.tr.firstChild&&(e.tdDrag&&n.removeChild(e.tdDrag),e.tdMenu&&n.removeChild(e.tdMenu),n.removeChild(t))},t.prototype.isVisible=function(){return 0==this.parent.childs.length},t.prototype.showContextMenu=function(t,i){var n=this,r=e.TYPE_TITLES,s=[{text:"Append",title:"Append a new field with type 'auto' (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-insert",click:function(){n._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:r.auto,click:function(){n._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:r.array,click:function(){n._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:r.object,click:function(){n._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:r.string,click:function(){n._onAppend("","","string")}}]}],a=new o(s,{close:i});a.show(t,this.editor.content)},t.prototype.onEvent=function(e){var t=e.type,i=e.target||e.srcElement,n=this.dom,o=n.menu;if(i==o&&("mouseover"==t?this.editor.highlighter.highlight(this.parent):"mouseout"==t&&this.editor.highlighter.unhighlight()),"click"==t&&i==n.menu){var s=this.editor.highlighter;s.highlight(this.parent),s.lock(),r.addClassName(n.menu,"jsoneditor-selected"),this.showContextMenu(n.menu,function(){r.removeClassName(n.menu,"jsoneditor-selected"),s.unlock(),s.unhighlight()})}"keydown"==t&&this.onKeyDown(e)},t}var r=i(3),o=i(8);e.exports=n},function(module,exports,__webpack_require__){"use strict";function compile(schema,root,localRefs,baseId){function localCompile(_schema,_root,localRefs,baseId){var isRoot=!_root||_root&&_root.schema==_schema;if(_root.schema!=root.schema)return compile.call(self,_schema,_root,localRefs,baseId);var validateCode=validateGenerator({isTop:!0,schema:_schema,isRoot:isRoot,baseId:baseId,root:_root,schemaPath:"",errSchemaPath:"#",errorPath:'""',RULES:RULES,validate:validateGenerator,util:util,resolve:resolve,resolveRef:resolveRef,usePattern:usePattern,useDefault:useDefault,useCustomRule:useCustomRule,opts:self.opts,formats:formats,self:self});if(validateCode=vars(refVal,refValCode)+vars(patterns,patternCode)+vars(defaults,defaultCode)+vars(customRules,customRuleCode)+validateCode,self.opts.beautify){var opts=self.opts.beautify===!0?{indent_size:2}:self.opts.beautify;beautify?validateCode=beautify(validateCode,opts):console.error('"npm install js-beautify" to use beautify option')}var validate;try{eval(validateCode),refVal[0]=validate}catch(e){throw console.log("Error compiling schema, function code:",validateCode),e}return validate.schema=_schema,validate.errors=null,validate.refs=refs,validate.refVal=refVal,validate.root=isRoot?validate:_root,validate}function resolveRef(e,t,i){t=resolve.url(e,t);var n,r,o=refs[t];if(void 0!==o)return n=refVal[o],r="refVal["+o+"]",resolvedRef(n,r);if(!i){var s=root.refs[t];if(void 0!==s)return n=root.refVal[s],r=addLocalRef(t,n),resolvedRef(n,r)}r=addLocalRef(t);var a=resolve.call(self,localCompile,root,t);if(!a){var l=localRefs&&localRefs[t];l&&(a=resolve.inlineRef(l,self.opts.inlineRefs)?l:compile.call(self,l,root,localRefs,e))}return a?(replaceLocalRef(t,a),resolvedRef(a,r)):void 0}function addLocalRef(e,t){var i=refVal.length;return refVal[i]=t,refs[e]=i,"refVal"+i}function replaceLocalRef(e,t){var i=refs[e];refVal[i]=t}function resolvedRef(e,t){return"object"==typeof e?{schema:e,code:t}:t}function usePattern(e){var t=patternsHash[e];return void 0===t&&(t=patternsHash[e]=patterns.length,patterns[t]=e),"pattern"+t}function useDefault(e){switch(typeof e){case"boolean":case"number":return""+e;case"string":return util.toQuotedString(e);case"object":if(null===e)return"null";var t=stableStringify(e),i=defaultsHash[t];return void 0===i&&(i=defaultsHash[t]=defaults.length,defaults[i]=e),"default"+i}}function useCustomRule(e,t,i,n){var r,o=e.definition.compile,s=e.definition.inline,a=e.definition.macro;o?r=o.call(self,t,i):a?(r=a.call(self,t,i),self.opts.validateSchema!==!1&&self.validateSchema(r,!0)):r=s?s.call(self,n,e.keyword,t,i):e.definition.validate;var l=customRules.length;return customRules[l]=r,{code:"customRule"+l,validate:r}}var self=this,refVal=[void 0],refs={},patterns=[],patternsHash={},defaults=[],defaultsHash={},customRules=[],customRulesHash={};root=root||{schema:schema,refVal:refVal,refs:refs};var formats=this._formats,RULES=this.RULES;return localCompile(schema,root,localRefs,baseId)}function patternCode(e,t){return"var pattern"+e+" = new RegExp("+util.toQuotedString(t[e])+");"}function defaultCode(e){return"var default"+e+" = defaults["+e+"];"}function refValCode(e,t){return t[e]?"var refVal"+e+" = refVal["+e+"];":""}function customRuleCode(e){return"var customRule"+e+" = customRules["+e+"];"}function vars(e,t){if(!e.length)return"";for(var i="",n=0;ns;++s){var c=a(e,t[s]);if(void 0==c&&o.original)return;r.push(c)}return i&&i.apply(null,r)||!0}},o=function(e,t){var i=r("",e,t);return void 0==i&&o.original?o.original.apply(this,arguments):i},s=function(e,t){if(-1!==t.indexOf("!")){var i=t.split("!");return s(e,i[0])+"!"+s(e,i[1])}if("."==t.charAt(0)){var n=e.split("/").slice(0,-1).join("/");for(t=n+"/"+t;-1!==t.indexOf(".")&&r!=t;){var r=t;t=t.replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return t},a=function(e,t){t=s(e,t);var i=n.modules[t];if(!i){if(i=n.payloads[t],"function"==typeof i){var o={},a={id:t,uri:"",exports:o,packaged:!0},l=function(e,i){return r(t,e,i)},c=i(l,o,a);o=c||a.exports,n.modules[t]=o,delete n.payloads[t]}i=n.modules[t]=o||i}return i};e(t)}}(),ace.define("ace/lib/regexp",["require","exports","module"],function(e,t,i){"use strict";function n(e){return(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.extended?"x":"")+(e.sticky?"y":"")}function r(e,t,i){if(Array.prototype.indexOf)return e.indexOf(t,i);for(var n=i||0;n1&&r(l,"")>-1&&(i=RegExp(this.source,o.replace.call(n(this),"g","")),o.replace.call(e.slice(l.index),i,function(){for(var e=1;el.index&&this.lastIndex--}return l},a||(RegExp.prototype.test=function(e){var t=o.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t}))}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,i){function n(){}function r(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function o(e){return e=+e,e!==e?e=0:0!==e&&e!==1/0&&e!==-(1/0)&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if("function"!=typeof t)throw new TypeError("Function.prototype.bind called on incompatible "+t);var i=p.call(arguments,1),r=function(){if(this instanceof r){var n=t.apply(this,i.concat(p.call(arguments)));return Object(n)===n?n:this}return t.apply(e,i.concat(p.call(arguments)))};return t.prototype&&(n.prototype=t.prototype,r.prototype=new n,n.prototype=null),r});var s,a,l,c,h,d=Function.prototype.call,u=Array.prototype,f=Object.prototype,p=u.slice,g=d.bind(f.toString),m=d.bind(f.hasOwnProperty);if((h=m(f,"__defineGetter__"))&&(s=d.bind(f.__defineGetter__),a=d.bind(f.__defineSetter__),l=d.bind(f.__lookupGetter__),c=d.bind(f.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t,i=[];return i.splice.apply(i,e(20)),i.splice.apply(i,e(26)),t=i.length,i.splice(5,0,"XXX"),t+1==i.length,t+1==i.length?!0:void 0}()){var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[void 0===e?0:e,void 0===t?this.length-e:t].concat(p.call(arguments,2))):[]}}else Array.prototype.splice=function(e,t){var i=this.length;e>0?e>i&&(e=i):void 0==e?e=0:0>e&&(e=Math.max(i+e,0)),i>e+t||(t=i-e);var n=this.slice(e,e+t),r=p.call(arguments,2),o=r.length;if(e===i)o&&this.push.apply(this,r);else{var s=Math.min(t,i-e),a=e+s,l=a+o-s,c=i-a,h=i-s;if(a>l)for(var d=0;c>d;++d)this[l+d]=this[a+d];else if(l>a)for(d=c;d--;)this[l+d]=this[a+d];if(o&&e===h)this.length=h,this.push.apply(this,r);else for(this.length=h+o,d=0;o>d;++d)this[e+d]=r[d]}return n};Array.isArray||(Array.isArray=function(e){return"[object Array]"==g(e)});var w=Object("a"),A="a"!=w[0]||!(0 in w);if(Array.prototype.forEach||(Array.prototype.forEach=function(e){var t=M(this),i=A&&"[object String]"==g(this)?this.split(""):t,n=arguments[1],r=-1,o=i.length>>>0;if("[object Function]"!=g(e))throw new TypeError;for(;++r>>0,r=Array(n),o=arguments[1];if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");for(var s=0;n>s;s++)s in i&&(r[s]=e.call(o,i[s],s,t));return r}),Array.prototype.filter||(Array.prototype.filter=function(e){var t,i=M(this),n=A&&"[object String]"==g(this)?this.split(""):i,r=n.length>>>0,o=[],s=arguments[1];if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");for(var a=0;r>a;a++)a in n&&(t=n[a],e.call(s,t,a,i)&&o.push(t));return o}),Array.prototype.every||(Array.prototype.every=function(e){var t=M(this),i=A&&"[object String]"==g(this)?this.split(""):t,n=i.length>>>0,r=arguments[1];if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");for(var o=0;n>o;o++)if(o in i&&!e.call(r,i[o],o,t))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(e){var t=M(this),i=A&&"[object String]"==g(this)?this.split(""):t,n=i.length>>>0,r=arguments[1];if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");for(var o=0;n>o;o++)if(o in i&&e.call(r,i[o],o,t))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(e){var t=M(this),i=A&&"[object String]"==g(this)?this.split(""):t,n=i.length>>>0;if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");if(!n&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var r,o=0;if(arguments.length>=2)r=arguments[1];else for(;;){if(o in i){r=i[o++];break}if(++o>=n)throw new TypeError("reduce of empty array with no initial value")}for(;n>o;o++)o in i&&(r=e.call(void 0,r,i[o],o,t));return r}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(e){var t=M(this),i=A&&"[object String]"==g(this)?this.split(""):t,n=i.length>>>0;if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");if(!n&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var r,o=n-1;if(arguments.length>=2)r=arguments[1];else for(;;){if(o in i){r=i[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}do o in this&&(r=e.call(void 0,r,i[o],o,t));while(o--);return r}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(e){var t=A&&"[object String]"==g(this)?this.split(""):M(this),i=t.length>>>0;if(!i)return-1;var n=0;for(arguments.length>1&&(n=o(arguments[1])),n=n>=0?n:Math.max(0,i+n);i>n;n++)if(n in t&&t[n]===e)return n;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(e){var t=A&&"[object String]"==g(this)?this.split(""):M(this),i=t.length>>>0;if(!i)return-1;var n=i-1;for(arguments.length>1&&(n=Math.min(n,o(arguments[1]))),n=n>=0?n:i-Math.abs(n);n>=0;n--)if(n in t&&e===t[n])return n;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:f)}),!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(e,t){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError(y+e);if(m(e,t)){var i,n,r;if(i={enumerable:!0,configurable:!0},h){var o=e.__proto__;e.__proto__=f;var n=l(e,t),r=c(e,t);if(e.__proto__=o,n||r)return n&&(i.get=n),r&&(i.set=r),i}return i.value=e[t],i}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)}),!Object.create){var C;C=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(e,t){var i;if(null===e)i=C();else{if("object"!=typeof e)throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var n=function(){};n.prototype=e,i=new n,i.__proto__=e}return void 0!==t&&Object.defineProperties(i,t),i}}if(Object.defineProperty){var E=r({}),b="undefined"==typeof document||r(document.createElement("div"));if(!E||!b)var F=Object.defineProperty}if(!Object.defineProperty||F){var x="Property description must be an object: ",S="Object.defineProperty called on non-object: ",$="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(e,t,i){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError(S+e);if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError(x+i);if(F)try{return F.call(Object,e,t,i)}catch(n){}if(m(i,"value"))if(h&&(l(e,t)||c(e,t))){var r=e.__proto__;e.__proto__=f,delete e[t],e[t]=i.value,e.__proto__=r}else e[t]=i.value;else{if(!h)throw new TypeError($);m(i,"get")&&s(e,t,i.get),m(i,"set")&&a(e,t,i.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var i in t)m(t,i)&&Object.defineProperty(e,i,t[i]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze(function(){})}catch(D){Object.freeze=function(e){return function(t){return"function"==typeof t?t:e(t)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;for(var t="";m(e,t);)t+="?";e[t]=!0;var i=m(e,t);return delete e[t],i}),!Object.keys){var k=!0,B=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],_=B.length;for(var L in{toString:null})k=!1;Object.keys=function O(e){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.keys called on a non-object");var O=[];for(var t in e)m(e,t)&&O.push(t);if(k)for(var i=0,n=_;n>i;i++){var r=B[i];m(e,r)&&O.push(r)}return O}}Date.now||(Date.now=function(){return(new Date).getTime()});var R=" \n \f\r   ᠎              \u2028\u2029\ufeff";if(!String.prototype.trim||R.trim()){R="["+R+"]";var T=new RegExp("^"+R+R+"*"),P=new RegExp(R+R+"*$");String.prototype.trim=function(){return String(this).replace(T,"").replace(P,"")}}var M=function(e){if(null==e)throw new TypeError("can't convert "+e+" to object");return Object(e)}}),ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],function(e,t,i){"use strict";e("./regexp"),e("./es5-shim")}),ace.define("ace/lib/dom",["require","exports","module"],function(e,t,i){"use strict";var n="http://www.w3.org/1999/xhtml";return t.getDocumentHead=function(e){return e||(e=document),e.head||e.getElementsByTagName("head")[0]||e.documentElement},t.createElement=function(e,t){return document.createElementNS?document.createElementNS(t||n,e):document.createElement(e)},t.hasCssClass=function(e,t){var i=(e.className||"").split(/\s+/g);return-1!==i.indexOf(t)},t.addCssClass=function(e,i){t.hasCssClass(e,i)||(e.className+=" "+i)},t.removeCssClass=function(e,t){for(var i=e.className.split(/\s+/g);;){var n=i.indexOf(t);if(-1==n)break;i.splice(n,1)}e.className=i.join(" ")},t.toggleCssClass=function(e,t){for(var i=e.className.split(/\s+/g),n=!0;;){var r=i.indexOf(t);if(-1==r)break;n=!1,i.splice(r,1)}return n&&i.push(t),e.className=i.join(" "),n},t.setCssClass=function(e,i,n){n?t.addCssClass(e,i):t.removeCssClass(e,i)},t.hasCssString=function(e,t){var i,n=0;if(t=t||document,t.createStyleSheet&&(i=t.styleSheets)){for(;n=0?(r.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]:(r.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&"Gecko"===window.navigator.product,t.isOldGecko=t.isGecko&&parseInt((r.match(/rv\:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),t.isWebKit=parseFloat(r.split("WebKit/")[1])||void 0,t.isChrome=parseFloat(r.split(" Chrome/")[1])||void 0,t.isAIR=r.indexOf("AdobeAIR")>=0,t.isIPad=r.indexOf("iPad")>=0,t.isTouchPad=r.indexOf("TouchPad")>=0,t.isChromeOS=r.indexOf(" CrOS ")>=0}}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,i){"use strict";function n(e,t,i){var n=c(t);if(!s.isMac&&a){if(a.OSKey&&(n|=8),a.altGr){if(3==(3&n))return;a.altGr=0}if(18===i||17===i){var r="location"in t?t.location:t.keyLocation;if(17===i&&1===r)1==a[i]&&(l=t.timeStamp);else if(18===i&&3===n&&2===r){var h=t.timeStamp-l;50>h&&(a.altGr=!0)}}}if(i in o.MODIFIER_KEYS&&(i=-1),8&n&&i>=91&&93>=i&&(i=-1),!n&&13===i){var r="location"in t?t.location:t.keyLocation;if(3===r&&(e(t,n,-i),t.defaultPrevented))return}if(s.isChromeOS&&8&n){if(e(t,n,i),t.defaultPrevented)return;n&=-9}return n||i in o.FUNCTION_KEYS||i in o.PRINTABLE_KEYS?e(t,n,i):!1}function r(){a=Object.create(null),a.count=0,a.lastT=0}var o=e("./keys"),s=e("./useragent"),a=null,l=0;t.addListener=function(e,t,i){if(e.addEventListener)return e.addEventListener(t,i,!1);if(e.attachEvent){var n=function(){i.call(e,window.event)};i._wrapper=n,e.attachEvent("on"+t,n)}},t.removeListener=function(e,t,i){return e.removeEventListener?e.removeEventListener(t,i,!1):void(e.detachEvent&&e.detachEvent("on"+t,i._wrapper||i))},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return"dblclick"==e.type?0:"contextmenu"==e.type||s.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,i,n){function r(e){i&&i(e),n&&n(e),t.removeListener(document,"mousemove",i,!0),t.removeListener(document,"mouseup",r,!0),t.removeListener(document,"dragstart",r,!0)}return t.addListener(document,"mousemove",i,!0),t.addListener(document,"mouseup",r,!0),t.addListener(document,"dragstart",r,!0),r},t.addTouchMoveListener=function(e,i){if("ontouchmove"in e){var n,r;t.addListener(e,"touchstart",function(e){var t=e.changedTouches[0];n=t.clientX,r=t.clientY}),t.addListener(e,"touchmove",function(e){var t=1,o=e.changedTouches[0];e.wheelX=-(o.clientX-n)/t,e.wheelY=-(o.clientY-r)/t,n=o.clientX,r=o.clientY,i(e)})}},t.addMouseWheelListener=function(e,i){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){var t=8;void 0!==e.wheelDeltaX?(e.wheelX=-e.wheelDeltaX/t,e.wheelY=-e.wheelDeltaY/t):(e.wheelX=0,e.wheelY=-e.wheelDelta/t),i(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){var t=.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*t||0,e.wheelY=e.deltaY*t||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=5*(e.deltaX||0),e.wheelY=5*(e.deltaY||0)}i(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=5*(e.detail||0),e.wheelY=0):(e.wheelX=0,e.wheelY=5*(e.detail||0)),i(e)})},t.addMultiMouseDownListener=function(e,i,n,r){var o,a,l,c=0,h={2:"dblclick",3:"tripleclick",4:"quadclick"};t.addListener(e,"mousedown",function(e){if(0!==t.getButton(e)?c=0:e.detail>1?(c++,c>4&&(c=1)):c=1,s.isIE){var d=Math.abs(e.clientX-o)>5||Math.abs(e.clientY-a)>5;(!l||d)&&(c=1),l&&clearTimeout(l),l=setTimeout(function(){l=null},i[c-1]||600),1==c&&(o=e.clientX,a=e.clientY)}if(e._clicks=c,n[r]("mousedown",e),c>4)c=0;else if(c>1)return n[r](h[c],e)}),s.isOldIE&&t.addListener(e,"dblclick",function(e){c=2,l&&clearTimeout(l),l=setTimeout(function(){l=null},i[c-1]||600),n[r]("mousedown",e),n[r](h[c],e)})};var c=!s.isMac||!s.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};if(t.getModifierString=function(e){return o.KEY_MODS[c(e)]},t.addCommandKeyListener=function(e,i){var o=t.addListener;if(s.isOldGecko||s.isOpera&&!("KeyboardEvent"in window)){var l=null;o(e,"keydown",function(e){l=e.keyCode}),o(e,"keypress",function(e){return n(i,e,l)})}else{var c=null;o(e,"keydown",function(e){var t=e.keyCode;a[t]=(a[t]||0)+1,91==t||92==t?a.OSKey=!0:a.OSKey&&e.timeStamp-a.lastT>200&&1==a.count&&r(),1==a[t]&&a.count++,a.lastT=e.timeStamp;var o=n(i,e,t);return c=e.defaultPrevented,o}),o(e,"keypress",function(e){c&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),c=null)}),o(e,"keyup",function(e){var t=e.keyCode;a[t]?a.count=Math.max(a.count-1,0):r(),(91==t||92==t)&&(a.OSKey=!1),a[t]=null}),a||(r(),o(window,"focus",r))}},"object"==typeof window&&window.postMessage&&!s.isOldIE){var h=1;t.nextTick=function(e,i){i=i||window;var n="zero-timeout-message-"+h;t.addListener(i,"message",function r(o){o.data==n&&(t.stopPropagation(o),t.removeListener(i,"message",r),e())}),i.postMessage(n,"*")}}t.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,i){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){for(var i="";t>0;)1&t&&(i+=e),(t>>=1)&&(e+=e);return i};var n=/^\s\s*/,r=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(n,"")},t.stringTrimRight=function(e){return e.replace(r,"")},t.copyObject=function(e){var t={};for(var i in e)t[i]=e[i];return t},t.copyArray=function(e){for(var t=[],i=0,n=e.length;n>i;i++)e[i]&&"object"==typeof e[i]?t[i]=this.copyObject(e[i]):t[i]=e[i];return t},t.deepCopy=function o(e){if("object"!=typeof e||!e)return e;var t;if(Array.isArray(e)){t=[];for(var i=0;ii?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}var s=(e("../lib/dom"),e("../lib/event"),e("../lib/useragent"),0);(function(){this.onMouseDown=function(e){var t=e.inSelection(),i=e.getDocumentPosition();this.mousedownEvent=e;var n=this.editor,r=e.getButton();if(0!==r){var o=n.getSelectionRange(),s=o.isEmpty();return n.$blockScrolling++,s&&n.selection.moveToPosition(i),n.$blockScrolling--,void n.textInput.onContextMenu(e.domEvent)}return this.mousedownEvent.time=Date.now(),!t||n.isFocused()||(n.focus(),!this.$focusTimout||this.$clickSelection||n.inMultiSelectMode)?(this.captureMouse(e),this.startSelect(i,e.domEvent._clicks>1),e.preventDefault()):(this.setState("focusWait"),void this.captureMouse(e))},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var i=this.editor;i.$blockScrolling++,this.mousedownEvent.getShiftKey()?i.selection.selectToPosition(e):t||i.selection.moveToPosition(e),t||this.select(),i.renderer.scroller.setCapture&&i.renderer.scroller.setCapture(),i.setStyle("ace_selecting"),this.setState("select"),i.$blockScrolling--},this.select=function(){var e,t=this.editor,i=t.renderer.screenToTextCoordinates(this.x,this.y);if(t.$blockScrolling++,this.$clickSelection){var n=this.$clickSelection.comparePoint(i);if(-1==n)e=this.$clickSelection.end;else if(1==n)e=this.$clickSelection.start;else{var r=o(this.$clickSelection,i);i=r.cursor,e=r.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(i),t.$blockScrolling--,t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,i=this.editor,n=i.renderer.screenToTextCoordinates(this.x,this.y),r=i.selection[e](n.row,n.column);if(i.$blockScrolling++,this.$clickSelection){var s=this.$clickSelection.comparePoint(r.start),a=this.$clickSelection.comparePoint(r.end);if(-1==s&&0>=a)t=this.$clickSelection.end,(r.end.row!=n.row||r.end.column!=n.column)&&(n=r.start);else if(1==a&&s>=0)t=this.$clickSelection.start,(r.start.row!=n.row||r.start.column!=n.column)&&(n=r.end);else if(-1==s&&1==a)n=r.end,t=r.start;else{var l=o(this.$clickSelection,n);n=l.cursor,t=l.anchor}i.selection.setSelectionAnchor(t.row,t.column)}i.selection.selectToPosition(n),i.$blockScrolling--,i.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>s||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),i=this.editor,n=i.session,r=n.getBracketRange(t);r?(r.isEmpty()&&(r.start.column--,r.end.column++),this.setState("select")):(r=i.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=r,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),i=this.editor;this.setState("selectByLines");var n=i.getSelectionRange();n.isMultiLine()&&n.contains(t.row,t.column)?(this.$clickSelection=i.selection.getLineRange(n.start.row),this.$clickSelection.end=i.selection.getLineRange(n.end.row).end):this.$clickSelection=i.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(!e.getAccelKey()){e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=e.domEvent.timeStamp,i=t-(this.$lastScrollTime||0),n=this.editor,r=n.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);return r||200>i?(this.$lastScrollTime=t,n.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()):void 0}},this.onTouchMove=function(e){var t=e.domEvent.timeStamp,i=t-(this.$lastScrollTime||0),n=this.editor,r=n.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);return r||200>i?(this.$lastScrollTime=t,n.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()):void 0}}).call(n.prototype),t.DefaultHandlers=n}),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,i){"use strict";function n(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var r=(e("./lib/oop"),e("./lib/dom"));(function(){this.$init=function(){return this.$element=r.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){r.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){r.addCssClass(this.getElement(),e)},this.show=function(e,t,i){null!=e&&this.setText(e),null!=t&&null!=i&&this.setPosition(t,i),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(n.prototype),t.Tooltip=n}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,i){"use strict";function n(e){function t(){var t=d.getDocumentPosition().row,r=l.$annotations[t];if(!r)return i();var o=s.session.getLength();if(t==o){var a=s.renderer.pixelToScreenCoordinates(0,d.y).row,h=d.$pos;if(a>s.session.documentToScreenRow(h.row,h.column))return i()}if(u!=r)if(u=r.text.join("
"),c.setHtml(u),c.show(),s.on("mousewheel",i),e.$tooltipFollowsMouse)n(d);else{var f=d.domEvent.target,p=f.getBoundingClientRect(),g=c.getElement().style;g.left=p.right+"px",g.top=p.bottom+"px"}}function i(){h&&(h=clearTimeout(h)),u&&(c.hide(),u=null,s.removeEventListener("mousewheel",i))}function n(e){c.setPosition(e.x,e.y)}var s=e.editor,l=s.renderer.$gutterLayer,c=new r(s.container);e.editor.setDefaultHandler("guttermousedown",function(t){if(s.isFocused()&&0==t.getButton()){var i=l.getRegion(t);if("foldWidgets"!=i){var n=t.getDocumentPosition().row,r=s.session.selection;if(t.getShiftKey())r.selectTo(n,0);else{if(2==t.domEvent.detail)return s.selectAll(),t.preventDefault();e.$clickSelection=s.selection.getLineRange(n)}return e.setState("selectByLines"),e.captureMouse(t),t.preventDefault()}}});var h,d,u;e.editor.setDefaultHandler("guttermousemove",function(r){var s=r.domEvent.target||r.domEvent.srcElement;return o.hasCssClass(s,"ace_fold-widget")?i():(u&&e.$tooltipFollowsMouse&&n(r),d=r,void(h||(h=setTimeout(function(){h=null,d&&!e.isMousePressed?t():i()},50))))}),a.addListener(s.renderer.$gutter,"mouseout",function(e){d=null,u&&!h&&(h=setTimeout(function(){h=null,i()},50))}),s.on("changeSession",i)}function r(e){l.call(this,e)}var o=e("../lib/dom"),s=e("../lib/oop"),a=e("../lib/event"),l=e("../tooltip").Tooltip;s.inherits(r,l),function(){this.setPosition=function(e,t){var i=window.innerWidth||document.documentElement.clientWidth,n=window.innerHeight||document.documentElement.clientHeight,r=this.getWidth(),o=this.getHeight();e+=15,t+=15,e+r>i&&(e-=e+r-i),t+o>n&&(t-=20+o),l.prototype.setPosition.call(this,e,t)}}.call(r.prototype),t.GutterHandler=n}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";var n=e("../lib/event"),r=e("../lib/useragent"),o=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){n.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){n.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var i=this.getDocumentPosition();this.$inSelection=t.contains(i.row,i.column)}return this.$inSelection},this.getButton=function(){return n.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=r.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(o.prototype)}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";function n(e){function t(e,t){var i=Date.now(),n=!t||e.row!=t.row,o=!t||e.column!=t.column;if(!D||n||o)m.$blockScrolling+=1,m.moveCursorToPosition(e),m.$blockScrolling-=1,D=i,k={x:y,y:C};else{var s=r(k.x,k.y,y,C);s>h?D=null:i-D>=c&&(m.renderer.scrollCursorIntoView(),D=null)}}function i(e,t){var i=Date.now(),n=m.renderer.layerConfig.lineHeight,r=m.renderer.layerConfig.characterWidth,o=m.renderer.scroller.getBoundingClientRect(),s={x:{left:y-o.left,right:o.right-y},y:{top:C-o.top,bottom:o.bottom-C}},a=Math.min(s.x.left,s.x.right),c=Math.min(s.y.top,s.y.bottom),h={row:e.row,column:e.column};2>=a/r&&(h.column+=s.x.left=c/n&&(h.row+=s.y.top=l&&m.renderer.scrollCursorIntoView(h):$=i:$=null}function n(){var e=F;F=m.renderer.screenToTextCoordinates(y,C),t(F,e),i(F,e)}function d(){b=m.selection.toOrientedRange(),A=m.session.addMarker(b,"ace_selection",m.getSelectionStyle()),m.clearSelection(),m.isFocused()&&m.renderer.$cursorLayer.setBlinking(!1),clearInterval(E),n(),E=setInterval(n,20),_=0,s.addListener(document,"mousemove",f)}function u(){clearInterval(E),m.session.removeMarker(A),A=null,m.$blockScrolling+=1,m.selection.fromOrientedRange(b),m.$blockScrolling-=1,m.isFocused()&&!S&&m.renderer.$cursorLayer.setBlinking(!m.getReadOnly()),b=null,F=null,_=0,$=null,D=null,s.removeListener(document,"mousemove",f)}function f(){null==L&&(L=setTimeout(function(){null!=L&&A&&u()},20))}function p(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return"text/plain"==e||"Text"==e})}function g(e){var t=["copy","copymove","all","uninitialized"],i=["move","copymove","linkmove","all","uninitialized"],n=a.isMac?e.altKey:e.ctrlKey,r="uninitialized";try{r=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return n&&t.indexOf(r)>=0?o="copy":i.indexOf(r)>=0?o="move":t.indexOf(r)>=0&&(o="copy"),o}var m=e.editor,v=o.createElement("img");v.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",a.isOpera&&(v.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var w=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];w.forEach(function(t){e[t]=this[t]},this),m.addEventListener("mousedown",this.onMouseDown.bind(e));var A,y,C,E,b,F,x,S,$,D,k,B=m.container,_=0;this.onDragStart=function(e){if(this.cancelDrag||!B.draggable){var t=this;return setTimeout(function(){t.startSelect(),t.captureMouse(e)},0),e.preventDefault()}b=m.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=m.getReadOnly()?"copy":"copyMove",a.isOpera&&(m.container.appendChild(v),v.scrollTop=0),i.setDragImage&&i.setDragImage(v,0,0),a.isOpera&&m.container.removeChild(v),i.clearData(),i.setData("Text",m.session.getTextRange()),S=!0,this.setState("drag")},this.onDragEnd=function(e){if(B.draggable=!1,S=!1,this.setState(null),!m.getReadOnly()){var t=e.dataTransfer.dropEffect;x||"move"!=t||m.session.remove(m.getSelectionRange()),m.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){return!m.getReadOnly()&&p(e.dataTransfer)?(y=e.clientX,C=e.clientY,A||d(),_++,e.dataTransfer.dropEffect=x=g(e),s.preventDefault(e)):void 0},this.onDragOver=function(e){return!m.getReadOnly()&&p(e.dataTransfer)?(y=e.clientX,C=e.clientY,A||(d(),_++),null!==L&&(L=null),e.dataTransfer.dropEffect=x=g(e),s.preventDefault(e)):void 0},this.onDragLeave=function(e){return _--,0>=_&&A?(u(),x=null,s.preventDefault(e)):void 0},this.onDrop=function(e){if(F){var t=e.dataTransfer;if(S)switch(x){case"move":b=b.contains(F.row,F.column)?{start:F,end:F}:m.moveText(b,F);break;case"copy":b=m.moveText(b,F,!0)}else{var i=t.getData("Text");b={start:F,end:m.session.insert(F,i)},m.focus(),x=null}return u(),s.preventDefault(e)}},s.addListener(B,"dragstart",this.onDragStart.bind(e)),s.addListener(B,"dragend",this.onDragEnd.bind(e)),s.addListener(B,"dragenter",this.onDragEnter.bind(e)),s.addListener(B,"dragover",this.onDragOver.bind(e)),s.addListener(B,"dragleave",this.onDragLeave.bind(e)),s.addListener(B,"drop",this.onDrop.bind(e));var L=null}function r(e,t,i,n){return Math.sqrt(Math.pow(i-e,2)+Math.pow(n-t,2))}var o=e("../lib/dom"),s=e("../lib/event"),a=e("../lib/useragent"),l=200,c=200,h=5;(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor,t=e.container;t.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var i=a.isWin?"default":"move";e.renderer.setCursorStyle(i),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(a.isIE&&"dragReady"==this.state){ +var i=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);i>3&&t.dragDrop()}if("dragWait"===this.state){var i=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);i>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(this.$dragEnabled){this.mousedownEvent=e;var t=this.editor,i=e.inSelection(),n=e.getButton(),r=e.domEvent.detail||1;if(1===r&&0===n&&i){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;if("unselectable"in o&&(o.unselectable="on"),t.getDragDelay()){if(a.isWebKit){this.cancelDrag=!0;var s=t.container;s.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}}).call(n.prototype),t.DragdropHandler=n}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";var n=e("./dom");t.get=function(e,t){var i=new XMLHttpRequest;i.open("GET",e,!0),i.onreadystatechange=function(){4===i.readyState&&t(i.responseText)},i.send(null)},t.loadScript=function(e,t){var i=n.getDocumentHead(),r=document.createElement("script");r.src=e,i.appendChild(r),r.onload=r.onreadystatechange=function(e,i){(i||!r.readyState||"loaded"==r.readyState||"complete"==r.readyState)&&(r=r.onload=r.onreadystatechange=null,i||t())}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,i){"use strict";var n={},r=function(){this.propagationStopped=!0},o=function(){this.defaultPrevented=!0};n._emit=n._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var i=this._eventRegistry[e]||[],n=this._defaultHandlers[e];if(i.length||n){"object"==typeof t&&t||(t={}),t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=r),t.preventDefault||(t.preventDefault=o),i=i.slice();for(var s=0;sv;v++){var A=m[v];0===A.name.indexOf("data-ace-")&&(s[o(A.name.replace(/^data-ace-/,""))]=A.value)}var y=g.match(/^(.*)\/ace(\-\w+)?\.js(\?|$)/);y&&(a=y[1])}}a&&(s.base=s.base||a,s.packaged=!0),s.basePath=s.base,s.workerPath=s.workerPath||s.base,s.modePath=s.modePath||s.base,s.themePath=s.themePath||s.base,delete s.base;for(var C in s)"undefined"!=typeof s[C]&&t.set(C,s[C])}function o(e){return e.replace(/-(.)/g,function(e,t){return t.toUpperCase()})}var s=e("./lib/lang"),a=(e("./lib/oop"),e("./lib/net")),l=e("./lib/app_config").AppConfig;n.exports=t=new l;var c=function(){return this||"undefined"!=typeof window&&window}(),h={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:"",suffix:".js",$moduleUrls:{}};t.get=function(e){if(!h.hasOwnProperty(e))throw new Error("Unknown config key: "+e);return h[e]},t.set=function(e,t){if(!h.hasOwnProperty(e))throw new Error("Unknown config key: "+e);h[e]=t},t.all=function(){return s.copyObject(h)},t.moduleUrl=function(e,t){if(h.$moduleUrls[e])return h.$moduleUrls[e];var i=e.split("/");t=t||i[i.length-2]||"";var n="snippets"==t?"/":"-",r=i[i.length-1];if("worker"==t&&"-"==n){var o=new RegExp("^"+t+"[\\-_]|[\\-_]"+t+"$","g");r=r.replace(o,"")}(!r||r==t)&&i.length>1&&(r=i[i.length-2]);var s=h[t+"Path"];return null==s?s=h.basePath:"/"==n&&(t=n=""),s&&"/"!=s.slice(-1)&&(s+="/"),s+t+n+r+this.get("suffix")},t.setModuleUrl=function(e,t){return h.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(i,n){var r,o;Array.isArray(i)&&(o=i[0],i=i[1]);try{r=e(i)}catch(s){}if(r&&!t.$loading[i])return n&&n(r);if(t.$loading[i]||(t.$loading[i]=[]),t.$loading[i].push(n),!(t.$loading[i].length>1)){var l=function(){e([i],function(e){t._emit("load.module",{name:i,module:e});var n=t.$loading[i];t.$loading[i]=null,n.forEach(function(t){t&&t(e)})})};return t.get("packaged")?void a.loadScript(t.moduleUrl(i,o),l):l()}},r(!0),t.init=r}),ace.define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(e,t,i){"use strict";var n=e("../lib/event"),r=e("../lib/useragent"),o=e("./default_handlers").DefaultHandlers,s=e("./default_gutter_handler").GutterHandler,a=e("./mouse_event").MouseEvent,l=e("./dragdrop_handler").DragdropHandler,c=e("../config"),h=function(e){var t=this;this.editor=e,new o(this),new s(this),new l(this);var i=function(t){document.hasFocus&&document.hasFocus()||window.focus(),e.focus(),e.isFocused()||window.focus()},a=e.renderer.getMouseEventTarget();n.addListener(a,"click",this.onMouseEvent.bind(this,"click")),n.addListener(a,"mousemove",this.onMouseMove.bind(this,"mousemove")),n.addMultiMouseDownListener(a,[400,300,250],this,"onMouseEvent"),e.renderer.scrollBarV&&(n.addMultiMouseDownListener(e.renderer.scrollBarV.inner,[400,300,250],this,"onMouseEvent"),n.addMultiMouseDownListener(e.renderer.scrollBarH.inner,[400,300,250],this,"onMouseEvent"),r.isIE&&(n.addListener(e.renderer.scrollBarV.element,"mousedown",i),n.addListener(e.renderer.scrollBarH.element,"mousedown",i))),n.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),n.addTouchMoveListener(e.container,this.onTouchMove.bind(this,"touchmove"));var c=e.renderer.$gutter;n.addListener(c,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),n.addListener(c,"click",this.onMouseEvent.bind(this,"gutterclick")),n.addListener(c,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),n.addListener(c,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),n.addListener(a,"mousedown",i),n.addListener(c,"mousedown",function(t){return e.focus(),n.preventDefault(t)}),e.on("mousemove",function(i){if(!t.state&&!t.$dragDelay&&t.$dragEnabled){var n=e.renderer.screenToTextCoordinates(i.x,i.y),r=e.session.selection.getRange(),o=e.renderer;o.setCursorStyle(!r.isEmpty()&&r.insideStart(n.row,n.column)?"default":"")}})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new a(t,this.editor))},this.onMouseMove=function(e,t){var i=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;i&&i.length&&this.editor._emit(e,new a(t,this.editor))},this.onMouseWheel=function(e,t){var i=new a(t,this.editor);i.speed=2*this.$scrollSpeed,i.wheelX=t.wheelX,i.wheelY=t.wheelY,this.editor._emit(e,i)},this.onTouchMove=function(e,t){var i=new a(t,this.editor);i.speed=1,i.wheelX=t.wheelX,i.wheelY=t.wheelY,this.editor._emit(e,i)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var i=this.editor.renderer;i.$keepTextAreaAtCursor&&(i.$keepTextAreaAtCursor=null);var o=this,s=function(e){if(e){if(r.isWebKit&&!e.which&&o.releaseMouse)return o.releaseMouse();o.x=e.clientX,o.y=e.clientY,t&&t(e),o.mouseEvent=new a(e,o.editor),o.$mouseMoved=!0}},l=function(e){clearInterval(h),c(),o[o.state+"End"]&&o[o.state+"End"](e),o.state="",null==i.$keepTextAreaAtCursor&&(i.$keepTextAreaAtCursor=!0,i.$moveTextAreaToCursor()),o.isMousePressed=!1,o.$onCaptureMouseMove=o.releaseMouse=null,e&&o.onMouseEvent("mouseup",e)},c=function(){o[o.state]&&o[o.state](),o.$mouseMoved=!1};if(r.isOldIE&&"dblclick"==e.domEvent.type)return setTimeout(function(){l(e)});o.$onCaptureMouseMove=s,o.releaseMouse=n.capture(this.editor.container,s,l);var h=setInterval(c,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){t&&t.domEvent&&"contextmenu"!=t.domEvent.type||(this.editor.off("nativecontextmenu",e),t&&t.domEvent&&n.stopEvent(t.domEvent))}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(h.prototype),c.defineOptions(h.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:r.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=h}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,i){"use strict";function n(e){e.on("click",function(t){var i=t.getDocumentPosition(),n=e.session,r=n.getFoldAt(i.row,i.column,1);r&&(t.getAccelKey()?n.removeFold(r):n.expandFold(r),t.stop())}),e.on("gutterclick",function(t){var i=e.renderer.$gutterLayer.getRegion(t);if("foldWidgets"==i){var n=t.getDocumentPosition().row,r=e.session;r.foldWidgets&&r.foldWidgets[n]&&e.session.onFoldWidgetClick(n,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){var i=e.renderer.$gutterLayer.getRegion(t);if("foldWidgets"==i){var n=t.getDocumentPosition().row,r=e.session,o=r.getParentFoldRangeData(n,!0),s=o.range||o.firstRange;if(s){n=s.start.row;var a=r.getFoldAt(n,r.getLine(n).length,1);a?r.removeFold(a):(r.addFold("...",s),e.renderer.scrollCursorIntoView({row:s.start.row,column:0}))}t.stop()}})}t.FoldHandler=n}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,i){"use strict";var n=e("../lib/keys"),r=e("../lib/event"),o=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]!=e){for(;t[t.length-1]&&t[t.length-1]!=this.$defaultHandler;)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)}},this.addKeyboardHandler=function(e,t){if(e){"function"!=typeof e||e.handleKeyboard||(e.handleKeyboard=e);var i=this.$handlers.indexOf(e);-1!=i&&this.$handlers.splice(i,1),void 0==t?this.$handlers.push(e):this.$handlers.splice(t,0,e),-1==i&&e.attach&&e.attach(this.$editor)}},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return-1==t?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(i){return i.getStatusText&&i.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,i,n){for(var o,s=!1,a=this.$editor.commands,l=this.$handlers.length;l--&&(o=this.$handlers[l].handleKeyboard(this.$data,e,t,i,n),!(o&&o.command&&(s="null"==o.command?!0:a.exec(o.command,this.$editor,o.args,n),s&&n&&-1!=e&&1!=o.passEvent&&1!=o.command.passEvent&&r.stopEvent(n),s))););return s||-1!=e||(o={command:"insertstring"},s=a.exec("insertstring",this.$editor,t)),s&&this.$editor._signal("keyboardActivity",o),s},this.onCommandKey=function(e,t,i){var r=n.keyCodeToString(i);this.$callKeyboardHandlers(t,r,i,e)},this.onTextInput=function(e){this.$callKeyboardHandlers(-1,e)}}).call(o.prototype),t.KeyBinding=o}),ace.define("ace/range",["require","exports","module"],function(e,t,i){"use strict";var n=function(e,t){return e.row-t.row||e.column-t.column},r=function(e,t,i,n){this.start={row:e,column:t},this.end={row:i,column:n}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return 0==this.compare(e,t)},this.compareRange=function(e){var t,i=e.end,n=e.start;return t=this.compare(i.row,i.column),1==t?(t=this.compare(n.row,n.column),1==t?2:0==t?1:0):-1==t?-2:(t=this.compare(n.row,n.column),-1==t?-1:1==t?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return 0==this.comparePoint(e.start)&&0==this.comparePoint(e.end)},this.intersects=function(e){var t=this.compareRange(e);return-1==t||0==t||1==t},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){"object"==typeof e?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){"object"==typeof e?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return 0==this.compare(e,t)?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return 0==this.compare(e,t)?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return 0==this.compare(e,t)?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return this.isMultiLine()||e!==this.start.row?ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0:tthis.end.column?1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var i={row:t+1,column:0};else if(this.end.rowt)var n={row:t+1,column:0};else if(this.start.rowt.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?s.fromPoints(t,t):this.isBackwards()?s.fromPoints(t,e):s.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if("undefined"==typeof t){var i=e||this.lead;e=i.row,t=i.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var i,n="number"==typeof e?e:this.lead.row,r=this.session.getFoldLine(n);return r?(n=r.start.row,i=r.end.row):i=n,t===!0?new s(n,0,i,this.session.getLine(i).length):new s(n,0,i+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,-1))this.moveCursorTo(e.start.row,e.start.column);else if(0===t.column)t.row>0&&this.moveCursorTo(t.row-1,this.doc.getLine(t.row-1).length);else{var i=this.session.getTabSize();this.session.isTabStop(t)&&this.doc.getLine(t.row).slice(t.column-i,t.column).split(" ").length-1==i?this.moveCursorBy(0,-i):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,1))this.moveCursorTo(e.end.row,e.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=n)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e,t=this.lead.row,i=this.lead.column,n=this.doc.getLine(t),r=n.substring(i);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var o=this.session.getFoldAt(t,i,1);return o?void this.moveCursorTo(o.end.row,o.end.column):((e=this.session.nonTokenRe.exec(r))&&(i+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(i)),i>=n.length?(this.moveCursorTo(t,n.length),this.moveCursorRight(),void(t=i?(this.moveCursorTo(t,0),this.moveCursorLeft(),void(t>0&&this.moveCursorWordLeft())):((o=this.session.tokenRe.exec(s))&&(i-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),void this.moveCursorTo(t,i))},this.$shortWordEndIndex=function(e){var t,i,n=0,r=/\s/,o=this.session.tokenRe;if(o.lastIndex=0,t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{for(;(i=e[n])&&r.test(i);)n++;if(1>n)for(o.lastIndex=0;(i=e[n])&&!o.test(i);)if(o.lastIndex=0,n++,r.test(i)){if(n>2){n--;break}for(;(i=e[n])&&r.test(i);)n++;if(n>2)break}}return o.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,i=this.doc.getLine(e),n=i.substring(t),r=this.session.getFoldAt(e,t,1);if(r)return this.moveCursorTo(r.end.row,r.end.column);if(t==i.length){var o=this.doc.getLength();do e++,n=this.doc.getLine(e);while(o>e&&/^\s*$/.test(n));/^\s+/.test(n)||(n=""),t=0}var s=this.$shortWordEndIndex(n);this.moveCursorTo(e,t+s)},this.moveCursorShortWordLeft=function(){var e,t=this.lead.row,i=this.lead.column;if(e=this.session.getFoldAt(t,i,-1))return this.moveCursorTo(e.start.row,e.start.column);var n=this.session.getLine(t).substring(0,i);if(0===i){do t--,n=this.doc.getLine(t);while(t>0&&/^\s*$/.test(n));i=n.length,/\s+$/.test(n)||(n="")}var o=r.stringReverse(n),s=this.$shortWordEndIndex(o);return this.moveCursorTo(t,i-s)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var i=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===t&&(this.$desiredColumn?i.column=this.$desiredColumn:this.$desiredColumn=i.column);var n=this.session.screenToDocumentPosition(i.row+e,i.column);0!==e&&0===t&&n.row===this.lead.row&&n.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[n.row]&&(n.row>0||e>0)&&n.row++,this.moveCursorTo(n.row,n.column+t,0===t)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,i){var n=this.session.getFoldAt(e,t,1);n&&(e=n.start.row,t=n.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,i||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,i){var n=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(n.row,n.column,i)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e.call(null,this);var i=this.getCursor();return s.fromPoints(t,i)}catch(n){return s.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(void 0==e.start){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var i=s.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(i.cursor=i.start),this.addRange(i,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(a.prototype),t.Selection=a}),ace.define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,i){"use strict";var n=e("./config"),r=2e3,o=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){for(var i=this.states[t],n=[],r=0,o=this.matchMappings[t]={defaultToken:"text"},s="g",a=[],l=0;l1?c.onMatch=this.$applyToken:c.onMatch=c.token),d>1&&(/\\\d/.test(c.regex)?h=c.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+r+1)}):(d=1,h=this.removeCapturingGroups(c.regex)),c.splitRegex||"string"==typeof c.token||a.push(c)),o[r]=l,r+=d,n.push(h),c.onMatch||(c.onMatch=null)}}n.length||(o[0]=0,n.push("$")),a.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,s)},this),this.regExps[t]=new RegExp("("+n.join(")|(")+")|($)",s)}};(function(){this.$setMaxTokenCount=function(e){r=0|e},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),i=this.token.apply(this,t);if("string"==typeof i)return[{type:i,value:e}];for(var n=[],r=0,o=i.length;o>r;r++)t[r]&&(n[n.length]={type:i[r],value:t[r]});return n},this.$arrayTokens=function(e){if(!e)return[];var t=this.splitRegex.exec(e);if(!t)return"text";for(var i=[],n=this.tokenArray,r=0,o=n.length;o>r;r++)t[r+1]&&(i[i.length]={type:n[r],value:t[r+1]});return i},this.removeCapturingGroups=function(e){var t=e.replace(/\[(?:\\.|[^\]])*?\]|\\.|\(\?[:=!]|(\()/g,function(e,t){return t?"(?:":e});return t},this.createSplitterRegexp=function(e,t){if(-1!=e.indexOf("(?=")){var i=0,n=!1,r={};e.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g,function(e,t,o,s,a,l){return n?n="]"!=a:a?n=!0:s?(i==r.stack&&(r.end=l+1,r.stack=-1),i--):o&&(i++,1!=o.length&&(r.stack=i,r.start=l)),e}),null!=r.end&&/^\)*$/.test(e.substr(r.end))&&(e=e.substring(0,r.start)+e.substr(r.end))}return"^"!=e.charAt(0)&&(e="^"+e),"$"!=e.charAt(e.length-1)&&(e+="$"),new RegExp(e,(t||"").replace("g",""))},this.getLineTokens=function(e,t){if(t&&"string"!=typeof t){var i=t.slice(0);t=i[0],"#tmp"===t&&(i.shift(),t=i.shift())}else var i=[];var n=t||"start",o=this.states[n];o||(n="start",o=this.states[n]);var s=this.matchMappings[n],a=this.regExps[n]; +a.lastIndex=0;for(var l,c=[],h=0,d=0,u={type:null,value:""};l=a.exec(e);){var f=s.defaultToken,p=null,g=l[0],m=a.lastIndex;if(m-g.length>h){var v=e.substring(h,m-g.length);u.type==f?u.value+=v:(u.type&&c.push(u),u={type:f,value:v})}for(var w=0;wr){for(d>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});h1&&i[0]!==n&&i.unshift("#tmp",n),{tokens:c,state:i.length?i:n}},this.reportError=n.reportError}).call(o.prototype),t.Tokenizer=o}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,i){"use strict";var n=e("../lib/lang"),r=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(t)for(var i in e){for(var n=e[i],r=0;r=this.$rowTokens.length;){if(this.$row+=1,e||(e=this.$session.getLength()),this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,i=e[t].start;if(void 0!==i)return i;for(i=0;t>0;)t-=1,i+=e[t].value.length;return i},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}}}).call(n.prototype),t.TokenIterator=n}),ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t,i){"use strict";var n=e("../tokenizer").Tokenizer,r=e("./text_highlight_rules").TextHighlightRules,o=e("./behaviour").Behaviour,s=e("../unicode"),a=e("../lib/lang"),l=e("../token_iterator").TokenIterator,c=e("../range").Range,h=function(){this.HighlightRules=r,this.$behaviour=new o};(function(){this.tokenRe=new RegExp("^["+s.packages.L+s.packages.Mn+s.packages.Mc+s.packages.Nd+s.packages.Pc+"\\$_]+","g"), +this.nonTokenRe=new RegExp("^(?:[^"+s.packages.L+s.packages.Mn+s.packages.Mc+s.packages.Nd+s.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules,this.$tokenizer=new n(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,i,n){function r(e){for(var t=i;n>=t;t++)e(o.getLine(t),t)}var o=t.doc,s=!0,l=!0,c=1/0,h=t.getTabSize(),d=!1;if(this.lineCommentStart){if(Array.isArray(this.lineCommentStart))var u=this.lineCommentStart.map(a.escapeRegExp).join("|"),f=this.lineCommentStart[0];else var u=a.escapeRegExp(this.lineCommentStart),f=this.lineCommentStart;u=new RegExp("^(\\s*)(?:"+u+") ?"),d=t.getUseSoftTabs();var p=function(e,t){var i=e.match(u);if(i){var n=i[1].length,r=i[0].length;w(e,n,r)||" "!=i[0][r-1]||r--,o.removeInLine(t,n,r)}},g=f+" ",m=function(e,t){(!s||/\S/.test(e))&&(w(e,c,c)?o.insertInLine({row:t,column:c},g):o.insertInLine({row:t,column:c},f))},v=function(e,t){return u.test(e)},w=function(e,t,i){for(var n=0;t--&&" "==e.charAt(t);)n++;if(n%h!=0)return!1;for(var n=0;" "==e.charAt(i++);)n++;return h>2?n%h!=h-1:n%h==0}}else{if(!this.blockComment)return!1;var f=this.blockComment.start,A=this.blockComment.end,u=new RegExp("^(\\s*)(?:"+a.escapeRegExp(f)+")"),y=new RegExp("(?:"+a.escapeRegExp(A)+")\\s*$"),m=function(e,t){v(e,t)||(!s||/\S/.test(e))&&(o.insertInLine({row:t,column:e.length},A),o.insertInLine({row:t,column:c},f))},p=function(e,t){var i;(i=e.match(y))&&o.removeInLine(t,e.length-i[0].length,e.length),(i=e.match(u))&&o.removeInLine(t,i[1].length,i[0].length)},v=function(e,i){if(u.test(e))return!0;for(var n=t.getTokens(i),r=0;ri&&(c=i),l&&!v(e,t)&&(l=!1)):C>e.length&&(C=e.length)}),c==1/0&&(c=C,s=!1,l=!1),d&&c%h!=0&&(c=Math.floor(c/h)*h),r(l?p:m)},this.toggleBlockComment=function(e,t,i,n){var r=this.blockComment;if(r){!r.start&&r[0]&&(r=r[0]);var o,s,a=new l(t,n.row,n.column),h=a.getCurrentToken(),d=(t.selection,t.selection.toOrientedRange());if(h&&/comment/.test(h.type)){for(var u,f;h&&/comment/.test(h.type);){var p=h.value.indexOf(r.start);if(-1!=p){var g=a.getCurrentTokenRow(),m=a.getCurrentTokenColumn()+p;u=new c(g,m,g,m+r.start.length);break}h=a.stepBackward()}for(var a=new l(t,n.row,n.column),h=a.getCurrentToken();h&&/comment/.test(h.type);){var p=h.value.indexOf(r.end);if(-1!=p){var g=a.getCurrentTokenRow(),m=a.getCurrentTokenColumn()+p;f=new c(g,m,g,m+r.end.length);break}h=a.stepForward()}f&&t.remove(f),u&&(t.remove(u),o=u.start.row,s=-r.start.length)}else s=r.start.length,o=i.start.row,t.insert(i.end,r.end),t.insert(i.start,r.start);d.start.row==o&&(d.start.column+=s),d.end.row==o&&(d.end.column+=s),t.selection.fromOrientedRange(d)}},this.getNextLineIndent=function(e,t,i){return this.$getIndent(t)},this.checkOutdent=function(e,t,i){return!1},this.autoOutdent=function(e,t,i){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);for(var i=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"],t=0;to;o++)if("string"==typeof r[o].token)/keyword|support|storage/.test(r[o].token)&&i.push(r[o].regex);else if("object"==typeof r[o].token)for(var a=0,l=r[o].token.length;l>a;a++)if(/keyword|support|storage/.test(r[o].token[a])){var n=r[o].regex.match(/\(.+?\)/g)[a];i.push(n.substr(1,n.length-2))}this.completionKeywords=i}return e?i.concat(this.$keywordList||[]):this.$keywordList},this.$createKeywordList=function(){return this.$highlightRules||this.getTokenizer(),this.$keywordList=this.$highlightRules.$keywordList||[]},this.getCompletions=function(e,t,i,n){var r=this.$keywordList||this.$createKeywordList();return r.map(function(e){return{name:e,value:e,score:0,meta:"keyword"}})},this.$id="ace/mode/text"}).call(h.prototype),t.Mode=h}),ace.define("ace/apply_delta",["require","exports","module"],function(e,t,i){"use strict";t.applyDelta=function(e,t,i){var n=t.start.row,r=t.start.column,o=e[n]||"";switch(t.action){case"insert":var s=t.lines;if(1===s.length)e[n]=o.substring(0,r)+t.lines[0]+o.substring(r);else{var a=[n,1].concat(t.lines);e.splice.apply(e,a),e[n]=o.substring(0,r)+e[n],e[n+t.lines.length-1]+=o.substring(r)}break;case"remove":var l=t.end.column,c=t.end.row;n===c?e[n]=o.substring(0,r)+o.substring(l):e.splice(n,c-n+1,o.substring(0,r)+e[c].substring(l))}}}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/event_emitter").EventEmitter,o=t.Anchor=function(e,t,i){this.$onChange=this.onChange.bind(this),this.attach(e),"undefined"==typeof i?this.setPosition(t.row,t.column):this.setPosition(t,i)};(function(){function e(e,t,i){var n=i?e.column<=t.column:e.columnthis.row)){var i=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(i.row,i.column,!0)}},this.setPosition=function(e,t,i){var n;if(n=i?{row:e,column:t}:this.$clipPositionToDocument(e,t),this.row!=n.row||this.column!=n.column){var r={row:this.row,column:this.column};this.row=n.row,this.column=n.column,this._signal("change",{old:r,value:n})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var i={};return e>=this.document.getLength()?(i.row=Math.max(0,this.document.getLength()-1),i.column=this.document.getLine(i.row).length):0>e?(i.row=0,i.column=0):(i.row=e,i.column=Math.min(this.document.getLine(i.row).length,Math.max(0,t))),0>t&&(i.column=0),i}}).call(o.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./apply_delta").applyDelta,o=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,a=e("./anchor").Anchor,l=function(e){this.$lines=[""],0===e.length?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){n.implement(this,o),this.setValue=function(e){var t=this.getLength()-1;this.remove(new s(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new a(this,e,t)},0==="aaa".split(/a/).length?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){this.$newLineMode!==e&&(this.$newLineMode=e,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return"\r\n"==e||"\r"==e||"\n"==e},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var i=t.length-1;e.end.row-e.start.row==i&&(t[i]=t[i].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var i=this.clippedPos(e.row,e.column),n=this.pos(e.row,e.column+t.length);return this.applyDelta({start:i,end:n,action:"insert",lines:[t]},!0),this.clonePos(n)},this.clippedPos=function(e,t){var i=this.getLength();void 0===e?e=i:0>e?e=0:e>=i&&(e=i-1,t=void 0);var n=this.getLine(e);return void 0==t&&(t=n.length),t=Math.min(Math.max(t,0),n.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var i=0;e0,n=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){if(e instanceof s||(e=s.fromPoints(e.start,e.end)),0===t.length&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var i;return i=t?this.insert(e.start,t):e.start},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var i="insert"==e.action;(i?e.lines.length<=1&&!e.lines[0]:!s.comparePoints(e.start,e.end))||(i&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),r(this.$lines,e,t),this._signal("change",e))},this.$splitAndapplyLargeDelta=function(e,t){for(var i=e.lines,n=i.length,r=e.start.row,o=e.start.column,s=0,a=0;;){s=a,a+=t-1;var l=i.slice(s,a);if(a>n){e.lines=l,e.start.row=r+s,e.start.column=o;break}l.push(""),this.applyDelta({start:this.pos(r+s,o),end:this.pos(r+a,o=0),action:e.action,lines:l},!0)}},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:"insert"==e.action?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){for(var i=this.$lines||this.getAllLines(),n=this.getNewLineCharacter().length,r=t||0,o=i.length;o>r;r++)if(e-=i[r].length+n,0>e)return{row:r,column:e+i[r].length+n};return{row:o-1,column:i[o-1].length}},this.positionToIndex=function(e,t){for(var i=this.$lines||this.getAllLines(),n=this.getNewLineCharacter().length,r=0,o=Math.min(e.row,i.length),s=t||0;o>s;++s)r+=i[s].length+n;return r+e.column}}).call(l.prototype),t.Document=l}),ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/event_emitter").EventEmitter,o=function(e,t){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=e;var i=this;this.$worker=function(){if(i.running){for(var e=new Date,t=i.currentLine,n=-1,r=i.doc,o=t;i.lines[t];)t++;var s=r.getLength(),a=0;for(i.running=!1;s>t;){i.$tokenizeRow(t),n=t;do t++;while(i.lines[t]);if(a++,a%5===0&&new Date-e>20){i.running=setTimeout(i.$worker,20);break}}i.currentLine=t,n>=o&&i.fireUpdateEvent(o,n)}}};(function(){n.implement(this,r),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var i={first:e,last:t};this._signal("update",{data:i})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,i=e.end.row-t;if(0===i)this.lines[t]=null;else if("remove"==e.action)this.lines.splice(t,i+1,null),this.states.splice(t,i+1,null);else{var n=Array(i+1);n.unshift(t,1),this.lines.splice.apply(this.lines,n),this.states.splice.apply(this.states,n)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),i=this.states[e-1],n=this.tokenizer.getLineTokens(t,i,e);return this.states[e]+""!=n.state+""?(this.states[e]=n.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=n.tokens}}).call(o.prototype),t.BackgroundTokenizer=o}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,i){"use strict";var n=e("./lib/lang"),r=(e("./lib/oop"),e("./range").Range),o=function(e,t,i){this.setRegexp(e),this.clazz=t,this.type=i||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){this.regExp+""!=e+""&&(this.regExp=e,this.cache=[])},this.update=function(e,t,i,o){if(this.regExp)for(var s=o.firstRow,a=o.lastRow,l=s;a>=l;l++){var c=this.cache[l];null==c&&(c=n.getMatchOffsets(i.getLine(l),this.regExp),c.length>this.MAX_RANGES&&(c=c.slice(0,this.MAX_RANGES)),c=c.map(function(e){return new r(l,e.offset,l,e.offset+e.length)}),this.cache[l]=c.length?c:"");for(var h=c.length;h--;)t.drawSingleLineMarker(e,c[h].toScreenRange(i),this.clazz,o)}}}).call(o.prototype),t.SearchHighlight=o}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,i){"use strict";function n(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var i=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,i.end.row,i.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,i){var n,r,o,s=0,a=this.folds,l=!0;null==t&&(t=this.end.row,i=this.end.column);for(var c=0;ce)return{row:n.start.row,column:n.start.column+e};if(e-=n.placeholder.length,0>e)return n.start;t=n.end.column}return{row:this.end.row,column:this.end.column+e}}}).call(n.prototype),t.FoldLine=n}),ace.define("ace/range_list",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("./range").Range,r=n.comparePoints,o=function(){this.ranges=[]};(function(){this.comparePoints=r,this.pointIndex=function(e,t,i){for(var n=this.ranges,o=i||0;o0)){var l=r(e,s.start);return 0===a?t&&0!==l?-o-2:o:l>0||0===l&&!t?o:-o-1}}return-o-1},this.add=function(e){var t=!e.isEmpty(),i=this.pointIndex(e.start,t);0>i&&(i=-i-1);var n=this.pointIndex(e.end,t,i);return 0>n?n=-n-1:n++,this.ranges.splice(i,n-i,e)},this.addList=function(e){for(var t=[],i=e.length;i--;)t.push.call(t,this.add(e[i]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);return t>=0?this.ranges.splice(t,1):void 0},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return r(e.start,t.start)});for(var i,n=t[0],o=1;os||(0!=s||i.isEmpty()||n.isEmpty())&&(r(i.end,n.end)<0&&(i.end.row=n.end.row,i.end.column=n.end.column),t.splice(o,1),e.push(n),n=i,o--)}return this.ranges=t,e},this.contains=function(e,t){return this.pointIndex({row:e,column:t})>=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);return t>=0?this.ranges[t]:void 0},this.clipRows=function(e,t){var i=this.ranges;if(i[0].start.row>t||i[i.length-1].start.rown&&(n=-n-1);var r=this.pointIndex({row:t,column:0},n);0>r&&(r=-r-1);for(var o=[],s=n;r>s;s++)o.push(i[s]);return o},this.removeAll=function(){return this.ranges.splice(0,this.ranges.length)},this.attach=function(e){this.session&&this.detach(),this.session=e,this.onChange=this.$onChange.bind(this),this.session.on("change",this.onChange)},this.detach=function(){this.session&&(this.session.removeListener("change",this.onChange),this.session=null)},this.$onChange=function(e){if("insert"==e.action)var t=e.start,i=e.end;else var i=e.start,t=e.end;for(var n=t.row,r=i.row,o=r-n,s=-t.column+i.column,a=this.ranges,l=0,c=a.length;c>l;l++){var h=a[l];if(!(h.end.rown)break;if(h.start.row==n&&h.start.column>=t.column&&(h.start.column==t.column&&this.$insertRight||(h.start.column+=s,h.start.row+=o)),h.end.row==n&&h.end.column>=t.column){if(h.end.column==t.column&&this.$insertRight)continue;h.end.column==t.column&&s>0&&c-1>l&&h.end.column>h.start.column&&h.end.column==a[l+1].start.column&&(h.end.column-=s),h.end.column+=s,h.end.row+=o}}}if(0!=o&&c>l)for(;c>l;l++){var h=a[l];h.start.row+=o,h.end.row+=o}}}).call(o.prototype),t.RangeList=o}),ace.define("ace/edit_session/fold",["require","exports","module","ace/range","ace/range_list","ace/lib/oop"],function(e,t,i){"use strict";function n(e,t){e.row-=t.row,0==e.row&&(e.column-=t.column)}function r(e,t){n(e.start,t),n(e.end,t)}function o(e,t){0==e.row&&(e.column+=t.column),e.row+=t.row}function s(e,t){o(e.start,t),o(e.end,t)}var a=(e("../range").Range,e("../range_list").RangeList),l=e("../lib/oop"),c=t.Fold=function(e,t){this.foldLine=null,this.placeholder=t,this.range=e,this.start=e.start,this.end=e.end,this.sameRow=e.start.row==e.end.row,this.subFolds=this.ranges=[]};l.inherits(c,a),function(){this.toString=function(){return'"'+this.placeholder+'" '+this.range.toString()},this.setFoldLine=function(e){this.foldLine=e,this.subFolds.forEach(function(t){t.setFoldLine(e)})},this.clone=function(){var e=this.range.clone(),t=new c(e,this.placeholder);return this.subFolds.forEach(function(e){t.subFolds.push(e.clone())}),t.collapseChildren=this.collapseChildren,t},this.addSubFold=function(e){if(!this.range.isEqual(e)){if(!this.range.containsRange(e))throw new Error("A fold can't intersect already existing fold"+e.range+this.range);r(e,this.start);for(var t=e.start.row,i=e.start.column,n=0,o=-1;n=e)return r;if(r.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var i=this.$foldData,n=0;for(t&&(n=i.indexOf(t)),-1==n&&(n=0),n;n=e)return r}return null},this.getFoldedRowCount=function(e,t){for(var i=this.$foldData,n=t-e+1,r=0;r=t){t>a&&(a>=e?n-=t-a:n=0);break}s>=e&&(n-=a>=e?s-a:s-e+1)}return n},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var i,n=this.$foldData,r=!1;e instanceof s?i=e:(i=new s(t,e),i.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(i.range);var a=i.start.row,l=i.start.column,c=i.end.row,h=i.end.column;if(!(c>a||a==c&&h-2>=l))throw new Error("The range has to be at least 2 characters width");var d=this.getFoldAt(a,l,1),u=this.getFoldAt(c,h,-1);if(d&&u==d)return d.addSubFold(i);d&&!d.range.isStart(a,l)&&this.removeFold(d),u&&!u.range.isEnd(c,h)&&this.removeFold(u);var f=this.getFoldsInRange(i.range);f.length>0&&(this.removeFolds(f),f.forEach(function(e){i.addSubFold(e)}));for(var p=0;p0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var i,n;if(null==e?(i=new r(0,0,this.getLength(),0),t=!0):i="number"==typeof e?new r(e,0,e,this.getLine(e).length):"row"in e?r.fromPoints(e,e):e,n=this.getFoldsInRangeList(i),t)this.removeFolds(n);else for(var o=n;o.length;)this.expandFolds(o),o=this.getFoldsInRangeList(i);return n.length?n:void 0},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var i=this.getFoldLine(e,t);return i?i.end.row:e},this.getRowFoldStart=function(e,t){var i=this.getFoldLine(e,t);return i?i.start.row:e},this.getFoldDisplayLine=function(e,t,i,n,r){null==n&&(n=e.start.row),null==r&&(r=0),null==t&&(t=e.end.row),null==i&&(i=this.getLine(t).length);var o=this.doc,s="";return e.walk(function(e,t,i,a){if(!(n>t)){if(t==n){if(r>i)return;a=Math.max(r,a)}s+=null!=e?e:o.getLine(t).substring(a,i)}},t,i),s},this.getDisplayLine=function(e,t,i,n){var r=this.getFoldLine(e);if(r)return this.getFoldDisplayLine(r,e,t,i,n);var o;return o=this.doc.getLine(e),o.substring(n||0,t||o.length)},this.$cloneFoldData=function(){var e=[];return e=this.$foldData.map(function(t){var i=t.folds.map(function(e){return e.clone()});return new o(e,i)})},this.toggleFold=function(e){var t,i,n=this.selection,r=n.getRange();if(r.isEmpty()){var o=r.start;if(t=this.getFoldAt(o.row,o.column))return void this.expandFold(t);(i=this.findMatchingBracket(o))?1==r.comparePoint(i)?r.end=i:(r.start=i,r.start.column++,r.end.column--):(i=this.findMatchingBracket({row:o.row,column:o.column+1}))?(1==r.comparePoint(i)?r.end=i:r.start=i,r.start.column++):r=this.getCommentFoldRange(o.row,o.column)||r}else{var s=this.getFoldsInRange(r);if(e&&s.length)return void this.expandFolds(s);1==s.length&&(t=s[0])}if(t||(t=this.getFoldAt(r.start.row,r.start.column)),t&&t.range.toString()==r.toString())return void this.expandFold(t);var a="...";if(!r.isMultiLine()){if(a=this.getTextRange(r),a.length<4)return;a=a.trim().substring(0,2)+".."}this.addFold(a,r)},this.getCommentFoldRange=function(e,t,i){var n=new a(this,e,t),o=n.getCurrentToken();if(o&&/^comment|string/.test(o.type)){var s=new r,l=new RegExp(o.type.replace(/\..*/,"\\."));if(1!=i){do o=n.stepBackward();while(o&&l.test(o.type));n.stepForward()}if(s.start.row=n.getCurrentTokenRow(),s.start.column=n.getCurrentTokenColumn()+2,n=new a(this,e,t),-1!=i){do o=n.stepForward();while(o&&l.test(o.type));o=n.stepBackward()}else o=n.getCurrentToken();return s.end.row=n.getCurrentTokenRow(),s.end.column=n.getCurrentTokenColumn()+o.value.length-2,s}},this.foldAll=function(e,t,i){void 0==i&&(i=1e5);var n=this.foldWidgets;if(n){t=t||this.getLength(),e=e||0;for(var r=e;t>r;r++)if(null==n[r]&&(n[r]=this.getFoldWidget(r)),"start"==n[r]){var o=this.getFoldWidgetRange(r);if(o&&o.isMultiLine()&&o.end.row<=t&&o.start.row>=e){r=o.end.row;try{var s=this.addFold("...",o);s&&(s.collapseChildren=i)}catch(a){}}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]"); +if(this.$foldStyle!=e){this.$foldStyle=e,"manual"==e&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)}},this.$setFolding=function(e){if(this.$foldMode!=e){if(this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation"),!e||"manual"==this.$foldStyle)return void(this.foldWidgets=null);this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)}},this.getParentFoldRangeData=function(e,t){var i=this.foldWidgets;if(!i||t&&i[e])return{};for(var n,r=e-1;r>=0;){var o=i[r];if(null==o&&(o=i[r]=this.getFoldWidget(r)),"start"==o){var s=this.getFoldWidgetRange(r);if(n||(n=s),s&&s.end.row>=e)break}r--}return{range:-1!==r&&s,firstRange:n}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var i={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},n=this.$toggleFoldWidget(e,i);if(!n){var r=t.target||t.srcElement;r&&/ace_fold-widget/.test(r.className)&&(r.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(this.getFoldWidget){var i=this.getFoldWidget(e),n=this.getLine(e),r="end"===i?-1:1,o=this.getFoldAt(e,-1===r?0:n.length,r);if(o)return void(t.children||t.all?this.removeFold(o):this.expandFold(o));var s=this.getFoldWidgetRange(e,!0);if(s&&!s.isMultiLine()&&(o=this.getFoldAt(s.start.row,s.start.column,1),o&&s.isEqual(o.range)))return void this.removeFold(o);if(t.siblings){var a=this.getParentFoldRangeData(e);if(a.range)var l=a.range.start.row+1,c=a.range.end.row;this.foldAll(l,c,t.all?1e4:0)}else t.children?(c=s?s.end.row:this.getLength(),this.foldAll(e+1,c,t.all?1e4:0)):s&&(t.all&&(s.collapseChildren=1e4),this.addFold("...",s));return s}},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var i=this.$toggleFoldWidget(t,{});if(!i){var n=this.getParentFoldRangeData(t,!0);if(i=n.range||n.firstRange){t=i.start.row;var r=this.getFoldAt(t,this.getLine(t).length,1);r?this.removeFold(r):this.addFold("...",i)}}},this.updateFoldWidgets=function(e){var t=e.start.row,i=e.end.row-t;if(0===i)this.foldWidgets[t]=null;else if("remove"==e.action)this.foldWidgets.splice(t,i+1,null);else{var n=Array(i+1);n.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,n)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var r=e("../range").Range,o=e("./fold_line").FoldLine,s=e("./fold").Fold,a=e("../token_iterator").TokenIterator;t.Folding=n}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,i){"use strict";function n(){this.findMatchingBracket=function(e,t){if(0==e.column)return null;var i=t||this.getLine(e.row).charAt(e.column-1);if(""==i)return null;var n=i.match(/([\(\[\{])|([\)\]\}])/);return n?n[1]?this.$findClosingBracket(n[1],e):this.$findOpeningBracket(n[2],e):null},this.getBracketRange=function(e){var t,i=this.getLine(e.row),n=!0,r=i.charAt(e.column-1),s=r&&r.match(/([\(\[\{])|([\)\]\}])/);if(s||(r=i.charAt(e.column),e={row:e.row,column:e.column+1},s=r&&r.match(/([\(\[\{])|([\)\]\}])/),n=!1),!s)return null;if(s[1]){var a=this.$findClosingBracket(s[1],e);if(!a)return null;t=o.fromPoints(e,a),n||(t.end.column++,t.start.column--),t.cursor=t.end}else{var a=this.$findOpeningBracket(s[2],e);if(!a)return null;t=o.fromPoints(a,e),n||(t.start.column++,t.end.column--),t.cursor=t.start}return t},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,i){var n=this.$brackets[e],o=1,s=new r(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){i||(i=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-s.getCurrentTokenColumn()-2,c=a.value;;){for(;l>=0;){var h=c.charAt(l);if(h==n){if(o-=1,0==o)return{row:s.getCurrentTokenRow(),column:l+s.getCurrentTokenColumn()}}else h==e&&(o+=1);l-=1}do a=s.stepBackward();while(a&&!i.test(a.type));if(null==a)break;c=a.value,l=c.length-1}return null}},this.$findClosingBracket=function(e,t,i){var n=this.$brackets[e],o=1,s=new r(this,t.row,t.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){i||(i=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-s.getCurrentTokenColumn();;){for(var c=a.value,h=c.length;h>l;){var d=c.charAt(l);if(d==n){if(o-=1,0==o)return{row:s.getCurrentTokenRow(),column:l+s.getCurrentTokenColumn()}}else d==e&&(o+=1);l+=1}do a=s.stepForward();while(a&&!i.test(a.type));if(null==a)break;l=0}return null}}}var r=e("../token_iterator").TokenIterator,o=e("../range").Range;t.BracketMatch=n}),ace.define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/config","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/edit_session/folding","ace/edit_session/bracket_match"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/lang"),o=e("./config"),s=e("./lib/event_emitter").EventEmitter,a=e("./selection").Selection,l=e("./mode/text").Mode,c=e("./range").Range,h=e("./document").Document,d=e("./background_tokenizer").BackgroundTokenizer,u=e("./search_highlight").SearchHighlight,f=function(e,t){this.$breakpoints=[],this.$decorations=[],this.$frontMarkers={},this.$backMarkers={},this.$markerId=1,this.$undoSelect=!0,this.$foldData=[],this.$foldData.toString=function(){return this.join("\n")},this.on("changeFold",this.onChangeFold.bind(this)),this.$onChange=this.onChange.bind(this),"object"==typeof e&&e.getLine||(e=new h(e)),this.setDocument(e),this.selection=new a(this),o.resetOptions(this),this.setMode(t),o._signal("session",this)};(function(){function e(e){return 4352>e?!1:e>=4352&&4447>=e||e>=4515&&4519>=e||e>=4602&&4607>=e||e>=9001&&9002>=e||e>=11904&&11929>=e||e>=11931&&12019>=e||e>=12032&&12245>=e||e>=12272&&12283>=e||e>=12288&&12350>=e||e>=12353&&12438>=e||e>=12441&&12543>=e||e>=12549&&12589>=e||e>=12593&&12686>=e||e>=12688&&12730>=e||e>=12736&&12771>=e||e>=12784&&12830>=e||e>=12832&&12871>=e||e>=12880&&13054>=e||e>=13056&&19903>=e||e>=19968&&42124>=e||e>=42128&&42182>=e||e>=43360&&43388>=e||e>=44032&&55203>=e||e>=55216&&55238>=e||e>=55243&&55291>=e||e>=63744&&64255>=e||e>=65040&&65049>=e||e>=65072&&65106>=e||e>=65108&&65126>=e||e>=65128&&65131>=e||e>=65281&&65376>=e||e>=65504&&65510>=e}n.implement(this,s),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e)return this.$docRowCache=[],void(this.$screenRowCache=[]);var t=this.$docRowCache.length,i=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>i&&(this.$docRowCache.splice(i,t),this.$screenRowCache.splice(i,t))},this.$getRowCacheIndex=function(e,t){for(var i=0,n=e.length-1;n>=i;){var r=i+n>>1,o=e[r];if(t>o)i=r+1;else{if(!(o>t))return r;n=r-1}}return i-1},this.resetCaches=function(){this.$modified=!0,this.$wrapData=[],this.$rowLengthCache=[],this.$resetRowCache(0),this.bgTokenizer&&this.bgTokenizer.start(0)},this.onChangeFold=function(e){var t=e.data;this.$resetRowCache(t.start.row)},this.onChange=function(e){this.$modified=!0,this.$resetRowCache(e.start.row);var t=this.$updateInternalDataOnChange(e);this.$fromUndo||!this.$undoManager||e.ignore||(this.$deltasDoc.push(e),t&&0!=t.length&&this.$deltasFold.push({action:"removeFolds",folds:t}),this.$informUndoManager.schedule()),this.bgTokenizer&&this.bgTokenizer.$updateOnChange(e),this._signal("change",e)},this.setValue=function(e){this.doc.setValue(e),this.selection.moveTo(0,0),this.$resetRowCache(0),this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.setUndoManager(this.$undoManager),this.getUndoManager().reset()},this.getValue=this.toString=function(){return this.doc.getValue()},this.getSelection=function(){return this.selection},this.getState=function(e){return this.bgTokenizer.getState(e)},this.getTokens=function(e){return this.bgTokenizer.getTokens(e)},this.getTokenAt=function(e,t){var i,n=this.bgTokenizer.getTokens(e),r=0;if(null==t)o=n.length-1,r=this.getLine(e).length;else for(var o=0;o=t));o++);return(i=n[o])?(i.index=o,i.start=r-i.value.length,i):null},this.setUndoManager=function(e){if(this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel(),e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=r.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?r.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize===0},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(n=!!i.charAt(t-1).match(this.tokenRe)),n||(n=!!i.charAt(t).match(this.tokenRe)),n)var r=this.tokenRe;else if(/^\s+$/.test(i.slice(t-1,t+1)))var r=/\s/;else var r=this.nonTokenRe;var o=t;if(o>0){do o--;while(o>=0&&i.charAt(o).match(r));o++}for(var s=t;se&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var t=this.doc.getAllLines(),i=this.$rowLengthCache,n=0,r=0,o=this.$foldData[r],s=o?o.start.row:1/0,a=t.length,l=0;a>l;l++){if(l>s){if(l=o.end.row+1,l>=a)break;o=this.$foldData[r++],s=o?o.start.row:1/0}null==i[l]&&(i[l]=this.$getStringScreenWidth(t[l])[0]),i[l]>n&&(n=i[l])}this.screenWidth=n}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var i=null,n=e.length-1;-1!=n;n--){var r=e[n];"doc"==r.group?(this.doc.revertDeltas(r.deltas),i=this.$getUndoSelection(r.deltas,!0,i)):r.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,i&&this.$undoSelect&&!t&&this.selection.setSelectionRange(i),i}},this.redoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var i=null,n=0;ne.end.column&&(o.start.column+=a),o.end.row==e.end.row&&o.end.column>e.end.column&&(o.end.column+=a)),s&&o.start.row>=e.end.row&&(o.start.row+=s,o.end.row+=s)}if(o.end=this.insert(o.start,n),r.length){var l=e.start,h=o.start,s=h.row-l.row,a=h.column-l.column;this.addFolds(r.map(function(e){return e=e.clone(),e.start.row==l.row&&(e.start.column+=a),e.end.row==l.row&&(e.end.column+=a),e.start.row+=s,e.end.row+=s,e}))}return o},this.indentRows=function(e,t,i){i=i.replace(/\t/g,this.getTabString());for(var n=e;t>=n;n++)this.doc.insertInLine({row:n,column:0},i)},this.outdentRows=function(e){for(var t=e.collapseRows(),i=new c(0,0,0,0),n=this.getTabSize(),r=t.start.row;r<=t.end.row;++r){var o=this.getLine(r);i.start.row=r,i.end.row=r;for(var s=0;n>s&&" "==o.charAt(s);++s);n>s&&" "==o.charAt(s)?(i.start.column=s,i.end.column=s+1):(i.start.column=0,i.end.column=s),this.remove(i)}},this.$moveLines=function(e,t,i){if(e=this.getRowFoldStart(e),t=this.getRowFoldEnd(t),0>i){var n=this.getRowFoldStart(e+i);if(0>n)return 0;var r=n-e}else if(i>0){var n=this.getRowFoldEnd(t+i);if(n>this.doc.getLength()-1)return 0;var r=n-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var r=t-e+1}var o=new c(e,0,t,Number.MAX_VALUE),s=this.getFoldsInRange(o).map(function(e){return e=e.clone(),e.start.row+=r,e.end.row+=r,e}),a=0==i?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+r,a),s.length&&this.addFolds(s),r},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return 0>t?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){if(t=Math.max(0,t),0>e)e=0,t=0;else{var i=this.doc.getLength();e>=i?(e=i-1,t=this.doc.getLine(i-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){if(this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0),e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){(this.$wrapLimitRange.min!==e||this.$wrapLimitRange.max!==t)&&(this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$useWrapMode&&this._signal("changeWrapMode"))},this.adjustWrapLimit=function(e,t){var i=this.$wrapLimitRange;i.max<0&&(i={min:t,max:t});var n=this.$constrainWrapLimit(e,i.min,i.max);return n!=this.$wrapLimit&&n>1?(this.$wrapLimit=n,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,i){return t&&(e=Math.max(t,e)),i&&(e=Math.min(i,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,i=e.action,n=e.start,r=e.end,o=n.row,s=r.row,a=s-o,l=null;if(this.$updating=!0,0!=a)if("remove"===i){this[t?"$wrapData":"$rowLengthCache"].splice(o,a);var c=this.$foldData;l=this.getFoldsInRange(e),this.removeFolds(l);var h=this.getFoldLine(r.row),d=0;if(h){h.addRemoveChars(r.row,r.column,n.column-r.column),h.shiftRow(-a);var u=this.getFoldLine(o);u&&u!==h&&(u.merge(h),h=u),d=c.indexOf(h)+1}for(d;d=r.row&&h.shiftRow(-a)}s=o}else{var f=Array(a);f.unshift(o,0);var p=t?this.$wrapData:this.$rowLengthCache;p.splice.apply(p,f);var c=this.$foldData,h=this.getFoldLine(o),d=0;if(h){var g=h.range.compareInside(n.row,n.column);0==g?(h=h.split(n.row,n.column),h&&(h.shiftRow(a),h.addRemoveChars(s,0,r.column-n.column))):-1==g&&(h.addRemoveChars(o,0,r.column-n.column),h.shiftRow(a)),d=c.indexOf(h)+1}for(d;d=o&&h.shiftRow(a)}}else{a=Math.abs(e.start.column-e.end.column),"remove"===i&&(l=this.getFoldsInRange(e),this.removeFolds(l),a=-a);var h=this.getFoldLine(o);h&&h.addRemoveChars(o,n.column,a)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(o,s):this.$updateRowLengthCache(o,s),l},this.$updateRowLengthCache=function(e,t,i){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var i,n,r=this.doc.getAllLines(),o=this.getTabSize(),s=this.$wrapData,l=this.$wrapLimit,c=e;for(t=Math.min(t,r.length-1);t>=c;)n=this.getFoldLine(c,n),n?(i=[],n.walk(function(e,t,n,o){var s;if(null!=e){s=this.$getDisplayTokens(e,i.length),s[0]=a;for(var l=1;lt-A;){var y=c+t-A;if(e[y-1]>=p&&e[y]>=p)o(y);else if(e[y]!=a&&e[y]!=h){for(var C=Math.max(y-(t-(t>>2)),c-1);y>C&&e[y]C&&e[y]C&&e[y]==f;)y--}else for(;y>C&&e[y]C?o(++y):(y=c+t,e[y]==i&&y--,o(y-A))}else{for(y;y!=c-1&&e[y]!=a;y--);if(y>c){o(y);continue}for(y=c+t;yc;c++)s.push(m)}else 32==l?s.push(p):l>39&&48>l||l>57&&64>l?s.push(f):l>=4352&&e(l)?s.push(t,i):s.push(t)}return s},this.$getStringScreenWidth=function(t,i,n){if(0==i)return[0,0];null==i&&(i=1/0),n=n||0;var r,o;for(o=0;o=4352&&e(r)?2:1,!(n>i));o++);return[n,o]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.getRowLineCount=function(e){return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1:1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),i=this.$wrapData[t.row];return i.length&&i[0]e)return{row:0,column:0};var i,n,r=0,o=0,s=0,a=0,l=this.$screenRowCache,c=this.$getRowCacheIndex(l,e),h=l.length;if(h&&c>=0)var s=l[c],r=this.$docRowCache[c],d=e>l[h-1];else var d=!h;for(var u=this.getLength()-1,f=this.getNextFoldLine(r),p=f?f.start.row:1/0;e>=s&&(a=this.getRowLength(r),!(s+a>e||r>=u));)s+=a,r++,r>p&&(r=f.end.row+1,f=this.getNextFoldLine(r,f),p=f?f.start.row:1/0),d&&(this.$docRowCache.push(r),this.$screenRowCache.push(s));if(f&&f.start.row<=r)i=this.getFoldDisplayLine(f),r=f.start.row;else{if(e>=s+a||r>u)return{row:u,column:this.getLine(u).length};i=this.getLine(r),f=null}var g=0;if(this.$useWrapMode){var m=this.$wrapData[r];if(m){var v=Math.floor(e-s);n=m[v],v>0&&m.length&&(g=m.indent,o=m[v-1]||m[m.length-1],i=i.substring(o))}}return o+=this.$getStringScreenWidth(i,t-g)[1],this.$useWrapMode&&o>=n&&(o=n-1),f?f.idxToPosition(o):{row:r,column:o}},this.documentToScreenPosition=function(e,t){if("undefined"==typeof t)var i=this.$clipPositionToDocument(e.row,e.column);else i=this.$clipPositionToDocument(e,t);e=i.row,t=i.column;var n=0,r=null,o=null;o=this.getFoldAt(e,t,1),o&&(e=o.start.row,t=o.start.column);var s,a=0,l=this.$docRowCache,c=this.$getRowCacheIndex(l,e),h=l.length;if(h&&c>=0)var a=l[c],n=this.$screenRowCache[c],d=e>l[h-1];else var d=!h;for(var u=this.getNextFoldLine(a),f=u?u.start.row:1/0;e>a;){if(a>=f){if(s=u.end.row+1,s>e)break;u=this.getNextFoldLine(s,u),f=u?u.start.row:1/0}else s=a+1;n+=this.getRowLength(a),a=s,d&&(this.$docRowCache.push(a),this.$screenRowCache.push(n))}var p="";u&&a>=f?(p=this.getFoldDisplayLine(u,e,t),r=u.start.row):(p=this.getLine(e).substring(0,t),r=e);var g=0;if(this.$useWrapMode){var m=this.$wrapData[r];if(m){for(var v=0;p.length>=m[v];)n++,v++;p=p.substring(m[v-1]||0,p.length),g=v>0?m.indent:0}}return{row:n,column:g+this.$getStringScreenWidth(p)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(this.$useWrapMode)for(var i=this.$wrapData.length,n=0,r=0,t=this.$foldData[r++],o=t?t.start.row:1/0;i>n;){var s=this.$wrapData[n];e+=s?s.length+1:1,n++,n>o&&(n=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:1/0)}else{e=this.getLength();for(var a=this.$foldData,r=0;ri));o++);return[n,o]})},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()}}).call(f.prototype),e("./edit_session/folding").Folding.call(f.prototype),e("./edit_session/bracket_match").BracketMatch.call(f.prototype),o.defineOptions(f.prototype,"session",{wrap:{set:function(e){if(e&&"off"!=e?"free"==e?e=!0:"printMargin"==e?e=-1:"string"==typeof e&&(e=parseInt(e,10)||!1):e=!1,this.$wrap!=e)if(this.$wrap=e,e){var t="number"==typeof e?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?-1==this.$wrap?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e="auto"==e?"text"!=this.$mode.type:"text"!=e,e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){isNaN(e)||this.$tabSize===e||(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=f}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,i){"use strict";var n=e("./lib/lang"),r=e("./lib/oop"),o=e("./range").Range,s=function(){this.$options={}};(function(){this.set=function(e){return r.mixin(this.$options,e),this},this.getOptions=function(){return n.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,i=this.$matchIterator(e,t);if(!i)return!1;var n=null;return i.forEach(function(e,i,r){if(e.start)n=e;else{var s=e.offset+(r||0);if(n=new o(i,s,i,s+e.length),!e.length&&t.start&&t.start.start&&0!=t.skipCurrent&&n.isEqual(t.start))return n=null,!1}return!0}),n},this.findAll=function(e){ +var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var i=t.range,r=i?e.getLines(i.start.row,i.end.row):e.doc.getAllLines(),s=[],a=t.re;if(t.$isMultiLine){var l,c=a.length,h=r.length-c;e:for(var d=a.offset||0;h>=d;d++){for(var u=0;c>u;u++)if(-1==r[d+u].search(a[u]))continue e;var f=r[d],p=r[d+c-1],g=f.length-f.match(a[0])[0].length,m=p.match(a[c-1])[0].length;l&&l.end.row===d&&l.end.column>g||(s.push(l=new o(d,g,d+c-1,m)),c>2&&(d=d+c-2))}}else for(var v=0;vv&&s[v].start.columnv&&s[u].end.column>C&&s[u].end.row==i.end.row;)u--;for(s=s.slice(v,u+1),v=0,u=s.length;u>v;v++)s[v].start.row+=i.start.row,s[v].end.row+=i.start.row}return s},this.replace=function(e,t){var i=this.$options,n=this.$assembleRegExp(i);if(i.$isMultiLine)return t;if(n){var r=n.exec(e);if(!r||r[0].length!=e.length)return null;if(t=e.replace(n,t),i.preserveCase){t=t.split("");for(var o=Math.min(e.length,e.length);o--;){var s=e[o];s&&s.toLowerCase()!=s?t[o]=t[o].toUpperCase():t[o]=t[o].toLowerCase()}t=t.join("")}return t}},this.$matchIterator=function(e,t){var i=this.$assembleRegExp(t);if(!i)return!1;var r;if(t.$isMultiLine)var s=i.length,a=function(t,n,a){var l=t.search(i[0]);if(-1!=l){for(var c=1;s>c;c++)if(t=e.getLine(n+c),-1==t.search(i[c]))return;var h=t.match(i[s-1])[0].length,d=new o(n,l,n+s-1,h);return 1==i.offset?(d.start.row--,d.start.column=Number.MAX_VALUE):a&&(d.start.column+=a),r(d)?!0:void 0}};else if(t.backwards)var a=function(e,t,o){for(var s=n.getMatchOffsets(e,i),a=s.length-1;a>=0;a--)if(r(s[a],t,o))return!0};else var a=function(e,t,o){for(var s=n.getMatchOffsets(e,i),a=0;a=s;n--)if(i(e.getLine(n),n))return;if(0!=t.wrap)for(n=a,s=o.row;n>=s;n--)if(i(e.getLine(n),n))return}}:function(i){var n=o.row,r=e.getLine(n).substr(o.column);if(!i(r,n,o.column)){for(n+=1;a>=n;n++)if(i(e.getLine(n),n))return;if(0!=t.wrap)for(n=s,a=o.row;a>=n;n++)if(i(e.getLine(n),n))return}};return{forEach:l}}}).call(s.prototype),t.Search=s}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,i){"use strict";function n(e,t){this.platform=t||(s.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function r(e,t){n.call(this,e,t),this.$singleCommand=!1}var o=e("../lib/keys"),s=e("../lib/useragent"),a=o.KEY_MODS;r.prototype=n.prototype,function(){function e(e){return"object"==typeof e&&e.bindKey&&e.bindKey.position||0}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var i=e&&("string"==typeof e?e:e.name);e=this.commands[i],t||delete this.commands[i];var n=this.commandKeyBinding;for(var r in n){var o=n[r];if(o==e)delete n[r];else if(Array.isArray(o)){var s=o.indexOf(e);-1!=s&&(o.splice(s,1),1==o.length&&(n[r]=o[0]))}}},this.bindKey=function(e,t,i){return"object"==typeof e&&(void 0==i&&(i=e.position),e=e[this.platform]),e?"function"==typeof t?this.addCommand({exec:t,bindKey:e,name:t.name||e}):void e.split("|").forEach(function(e){var n="";if(-1!=e.indexOf(" ")){var r=e.split(/\s+/);e=r.pop(),r.forEach(function(e){var t=this.parseKeys(e),i=a[t.hashId]+t.key;n+=(n?" ":"")+i,this._addCommandToBinding(n,"chainKeys")},this),n+=" "}var o=this.parseKeys(e),s=a[o.hashId]+o.key;this._addCommandToBinding(n+s,t,i)},this):void 0},this._addCommandToBinding=function(t,i,n){var r,o=this.commandKeyBinding;if(i)if(!o[t]||this.$singleCommand)o[t]=i;else{Array.isArray(o[t])?-1!=(r=o[t].indexOf(i))&&o[t].splice(r,1):o[t]=[o[t]],"number"!=typeof n&&(n=n||i.isDefault?-100:e(i));var s=o[t];for(r=0;rn)break}s.splice(r,0,i)}else delete o[t]},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var i=e[t];if(i){if("string"==typeof i)return this.bindKey(i,t);"function"==typeof i&&(i={exec:i}),"object"==typeof i&&(i.name||(i.name=t),this.addCommand(i))}},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),i=t.pop(),n=o[i];if(o.FUNCTION_KEYS[n])i=o.FUNCTION_KEYS[n].toLowerCase();else{if(!t.length)return{key:i,hashId:-1};if(1==t.length&&"shift"==t[0])return{key:i.toUpperCase(),hashId:-1}}for(var r=0,s=t.length;s--;){var a=o.KEY_MODS[t[s]];if(null==a)return"undefined"!=typeof console&&console.error("invalid modifier "+t[s]+" in "+e),!1;r|=a}return{key:i,hashId:r}},this.findKeyCommand=function(e,t){var i=a[e]+t;return this.commandKeyBinding[i]},this.handleKeyboard=function(e,t,i,n){if(!(0>n)){var r=a[t]+i,o=this.commandKeyBinding[r];return e.$keyChain&&(e.$keyChain+=" "+r,o=this.commandKeyBinding[e.$keyChain]||o),!o||"chainKeys"!=o&&"chainKeys"!=o[o.length-1]?(e.$keyChain&&(t&&4!=t||1!=i.length?(-1==t||n>0)&&(e.$keyChain=""):e.$keyChain=e.$keyChain.slice(0,-r.length-1)),{command:o}):(e.$keyChain=e.$keyChain||r,{command:"null"})}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(n.prototype),t.HashHandler=n,t.MultiHashHandler=r}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/oop"),r=e("../keyboard/hash_handler").MultiHashHandler,o=e("../lib/event_emitter").EventEmitter,s=function(e,t){r.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};n.inherits(s,r),function(){n.implement(this,o),this.exec=function(e,t,i){if(Array.isArray(e)){for(var n=e.length;n--;)if(this.exec(e[n],t,i))return!0;return!1}if("string"==typeof e&&(e=this.commands[e]),!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var r={editor:t,command:e,args:i};return r.returnValue=this._emit("exec",r),this._signal("afterExec",r),r.returnValue===!1?!1:!0},this.toggleRecording=function(e){return this.$inReplay?void 0:(e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0))},this.replay=function(e){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){"string"==typeof t?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}}},this.trimMacro=function(e){return e.map(function(e){return"string"!=typeof e[0]&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(s.prototype),t.CommandManager=s}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,i){"use strict";function n(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),o=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:n("Ctrl-,","Command-,"),exec:function(e){o.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:n("Alt-E","Ctrl-E"),exec:function(e){o.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:n("Alt-Shift-E","Ctrl-Shift-E"),exec:function(e){o.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:n("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:n(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:n("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:n("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:n("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:n("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:n("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:n(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:n("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:n("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:n("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:n("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:n("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:n("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:n("Ctrl-F","Command-F"),exec:function(e){o.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:n("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:n("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:n("Shift-Up","Shift-Up"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:n("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:n("Ctrl-Shift-End","Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:n("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:n("Shift-Down","Shift-Down"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:n("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:n("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:n("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:n("Alt-Shift-Left","Command-Shift-Left"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:n("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:n("Shift-Left","Shift-Left"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:n("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:n("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:n("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:n("Alt-Shift-Right","Command-Shift-Right"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:n("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:n("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:n("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:n(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:n("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:n(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:n("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:n("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:n("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:n("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:n("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:n("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:n("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:n(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(e){},readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",bindKey:n("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:n("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:n("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:n("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:n("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:n("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:n("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:n("Ctrl-H","Command-Option-F"),exec:function(e){o.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:n("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:n("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:n("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:n("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:n("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:n("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:n("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:n("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:n("Shift-Delete",null),exec:function(e){return e.selection.isEmpty()?void e.remove("left"):!1},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:n("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:n("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:n("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:n("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:n("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:n("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:n("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:n("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:n(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:n("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:n("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:n("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:n("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:n(null,null),exec:function(e){for(var t=e.selection.isBackwards(),i=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),n=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(i.row).length,a=e.session.doc.getTextRange(e.selection.getRange()),l=a.replace(/\n\s*/," ").length,c=e.session.doc.getLine(i.row),h=i.row+1;h<=n.row+1;h++){var d=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(h)));0!==d.length&&(d=" "+d),c+=d}n.row+10?(e.selection.moveCursorTo(i.row,i.column),e.selection.selectTo(i.row,i.column+l)):(o=e.session.doc.getLine(i.row).length>o?o+1:o,e.selection.moveCursorTo(i.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:n(null,null),exec:function(e){var t=e.session.doc.getLength()-1,i=e.session.doc.getLine(t).length,n=e.selection.rangeList.ranges,r=[];n.length<1&&(n=[e.selection.getRange()]);for(var o=0;o0&&this.$blockScrolling--;var i=t&&t.scrollIntoView;if(i){switch(i){case"center-animate":i="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var n=this.selection.getRange(),r=this.renderer.layerConfig;(n.start.row>=r.lastRow||n.end.row<=r.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==i&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(this.$mergeUndoDeltas){var t=this.prevOp,i=this.$mergeableCommands,n=t.command&&e.command.name==t.command.name;if("insertstring"==e.command.name){var r=e.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),n=n&&this.mergeNextCommand&&(!/\s/.test(r)||/\s/.test(t.args)),this.mergeNextCommand=!0}else n=n&&-1!==i.indexOf(e.command.name);"always"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(n=!1),n?this.session.mergeUndoDeltas=!0:-1!==i.indexOf(e.command.name)&&(this.sequenceStartTime=Date.now())}},this.setKeyboardHandler=function(e,t){if(e&&"string"==typeof e){this.$keybindingId=e;var i=this;v.loadModule(["keybinding",e],function(n){i.$keybindingId==e&&i.keyBinding.setKeyboardHandler(n&&n.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session!=e){this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.removeEventListener("change",this.$onDocumentChange),this.session.removeEventListener("changeMode",this.$onChangeMode),this.session.removeEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.session.removeEventListener("changeTabSize",this.$onChangeTabSize),this.session.removeEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.session.removeEventListener("changeWrapMode",this.$onChangeWrapMode),this.session.removeEventListener("onChangeFold",this.$onChangeFold),this.session.removeEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.session.removeEventListener("changeBackMarker",this.$onChangeBackMarker),this.session.removeEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.session.removeEventListener("changeAnnotation",this.$onChangeAnnotation),this.session.removeEventListener("changeOverwrite",this.$onCursorChange),this.session.removeEventListener("changeScrollTop",this.$onScrollTopChange),this.session.removeEventListener("changeScrollLeft",this.$onScrollLeftChange);var i=this.session.getSelection();i.removeEventListener("changeCursor",this.$onCursorChange),i.removeEventListener("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.addEventListener("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.addEventListener("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.addEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.addEventListener("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.addEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.addEventListener("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.addEventListener("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.addEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.addEventListener("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.addEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.addEventListener("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.addEventListener("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.addEventListener("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.addEventListener("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.addEventListener("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.addEventListener("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this})}},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?1==t?this.navigateFileEnd():-1==t&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){ +return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||r.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(t&&t.bgTokenizer){var i=t.findMatchingBracket(e.getCursorPosition());if(i)var n=new f(i.row,i.column,i.row,i.column+1);else if(t.$mode.getMatching)var n=t.$mode.getMatching(e.session);n&&(t.$bracketHighlight=t.addMarker(n,"ace_bracket","text"))}},50)}},this.$highlightTags=function(){if(!this.$highlightTagPending){var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(t&&t.bgTokenizer){var i=e.getCursorPosition(),n=new w(e.session,i.row,i.column),r=n.getCurrentToken();if(!r||!/\b(?:tag-open|tag-name)/.test(r.type))return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);if(-1==r.type.indexOf("tag-open")||(r=n.stepForward())){var o=r.value,s=0,a=n.stepBackward();if("<"==a.value){do a=r,r=n.stepForward(),r&&r.value===o&&-1!==r.type.indexOf("tag-name")&&("<"===a.value?s++:"=0)}else{do r=a,a=n.stepBackward(),r&&r.value===o&&-1!==r.type.indexOf("tag-name")&&("<"===a.value?s++:"=s);n.stepForward()}if(!r)return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);var l=n.getCurrentTokenRow(),c=n.getCurrentTokenColumn(),h=new f(l,c,l,c+r.value.length);t.$tagHighlight&&0!==h.compareRange(t.$backMarkers[t.$tagHighlight].range)&&(t.removeMarker(t.$tagHighlight),t.$tagHighlight=null),h&&!t.$tagHighlight&&(t.$tagHighlight=t.addMarker(h,"ace_bracket","text"))}}},50)}},this.focus=function(){var e=this;setTimeout(function(){e.textInput.focus()}),this.textInput.focus()},this.isFocused=function(){return this.textInput.isFocused()},this.blur=function(){this.textInput.blur()},this.onFocus=function(e){this.$isFocused||(this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus",e))},this.onBlur=function(e){this.$isFocused&&(this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur",e))},this.$cursorChange=function(){this.renderer.updateCursor()},this.onDocumentChange=function(e){var t=this.session.$useWrapMode,i=e.start.row==e.end.row?e.end.row:1/0;this.renderer.updateLines(e.start.row,i,t),this._signal("change",e),this.$cursorChange(),this.$updateHighlightActiveLine()},this.onTokenizerUpdate=function(e){var t=e.data;this.renderer.updateLines(t.first,t.last)},this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},this.onCursorChange=function(){this.$cursorChange(),this.$blockScrolling||(v.warn("Automatically scrolling cursor into view after selection change","this will be disabled in the next version","set editor.$blockScrolling = Infinity to disable this message"),this.renderer.scrollCursorIntoView()),this.$highlightBrackets(),this.$highlightTags(),this.$updateHighlightActiveLine(),this._signal("changeSelection")},this.$updateHighlightActiveLine=function(){var e,t=this.getSession();if(this.$highlightActiveLine&&("line"==this.$selectionStyle&&this.selection.isMultiLine()||(e=this.getCursorPosition()),!this.renderer.$maxLines||1!==this.session.getLength()||this.renderer.$minLines>1||(e=!1)),t.$highlightLineMarker&&!e)t.removeMarker(t.$highlightLineMarker.id),t.$highlightLineMarker=null;else if(!t.$highlightLineMarker&&e){var i=new f(e.row,e.column,e.row,1/0);i.id=t.addMarker(i,"ace_active-line","screenLine"),t.$highlightLineMarker=i}else e&&(t.$highlightLineMarker.start.row=e.row,t.$highlightLineMarker.end.row=e.row,t.$highlightLineMarker.start.column=e.column,t._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;if(t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var i=this.selection.getRange(),n=this.getSelectionStyle();t.$selectionMarker=t.addMarker(i,"ace_selection",n)}var r=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(r),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(!t.isEmpty()&&!t.isMultiLine()){var i=t.start.column-1,n=t.end.column+1,r=e.getLine(t.start.row),o=r.length,s=r.substring(Math.max(i,0),Math.min(n,o));if(!(i>=0&&/^[\w\d]/.test(s)||o>=n&&/[\w\d]$/.test(s))&&(s=r.substring(t.start.column,t.end.column),/^[\w\d]+$/.test(s))){var a=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:s});return a}}},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e,t){var i={text:e,event:t};this.commands.exec("paste",this,i)},this.$handlePaste=function(e){"string"==typeof e&&(e={text:e}),this._signal("paste",e);var t=e.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(t);else{var i=t.split(/\r\n|\r|\n/),n=this.selection.rangeList.ranges;if(i.length>n.length||i.length<2||!i[1])return this.commands.exec("insertstring",this,t);for(var r=n.length;r--;){var o=n[r];o.isEmpty()||this.session.remove(o),this.session.insert(o.start,i[r])}}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var i=this.session,n=i.getMode(),r=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var o=n.transformAction(i.getState(r.row),"insertion",this,i,e);o&&(e!==o.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=o.text)}if(" "==e&&(e=this.session.getTabString()),this.selection.isEmpty()){if(this.session.getOverwrite()){var s=new f.fromPoints(r,r);s.end.column+=e.length,this.session.remove(s)}}else{var s=this.getSelectionRange();r=this.session.remove(s),this.clearSelection()}if("\n"==e||"\r\n"==e){var a=i.getLine(r.row);if(r.column>a.search(/\S|$/)){var l=a.substr(r.column).search(/\S|$/);i.doc.removeInLine(r.row,r.column,r.column+l)}}this.clearSelection();var c=r.column,h=i.getState(r.row),a=i.getLine(r.row),d=n.checkOutdent(h,a,e);i.insert(r,e);if(o&&o.selection&&this.selection.setSelectionRange(2==o.selection.length?new f(r.row,c+o.selection[0],r.row,c+o.selection[1]):new f(r.row+o.selection[0],o.selection[1],r.row+o.selection[2],o.selection[3])),i.getDocument().isNewLine(e)){var u=n.getNextLineIndent(h,a.slice(0,r.column),i.getTabString());i.insert({row:r.row+1,column:0},u)}d&&n.autoOutdent(h,i,r.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,i){this.keyBinding.onCommandKey(e,t,i)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&("left"==e?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var i=this.session,n=i.getState(t.start.row),r=i.getMode().transformAction(n,"deletion",this,i,t);if(0===t.end.column){var o=i.getTextRange(t);if("\n"==o[o.length-1]){var s=i.getLine(t.end.row);/^\s+$/.test(s)&&(t.end.column=s.length)}}r&&(t=r)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(this.selection.isEmpty()){var e=this.getCursorPosition(),t=e.column;if(0!==t){var i,n,r=this.session.getLine(e.row);tt.toLowerCase()?1:0});for(var n=new f(0,0,0,0),r=e.first;r<=e.last;r++){var o=t.getLine(r);n.start.row=r,n.end.row=r,n.end.column=o.length,t.replace(n,i[r-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),i=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,i,e)},this.getNumberAt=function(e,t){var i=/[\-]?[0-9]+(?:\.[0-9]+)?/g;i.lastIndex=0;for(var n=this.session.getLine(e);i.lastIndex=t){var o={value:r[0],start:r.index,end:r.index+r[0].length};return o}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,i=this.selection.getCursor().column,n=new f(t,i-1,t,i),r=this.session.getTextRange(n);if(!isNaN(parseFloat(r))&&isFinite(r)){var o=this.getNumberAt(t,i);if(o){var s=o.value.indexOf(".")>=0?o.start+o.value.indexOf(".")+1:o.end,a=o.start+o.value.length-s,l=parseFloat(o.value);l*=Math.pow(10,a),e*=s!==o.end&&s>i?Math.pow(10,o.end-i-1):Math.pow(10,o.end-i),l+=e,l/=Math.pow(10,a);var c=l.toFixed(a),h=new f(t,o.start,t,o.end);this.session.replace(h,c),this.moveCursorTo(t,Math.max(o.start+1,i+c.length-o.value.length))}}},this.removeLines=function(){var e=this.$getSelectedRows();this.session.removeFullLines(e.first,e.last),this.clearSelection()},this.duplicateSelection=function(){var e=this.selection,t=this.session,i=e.getRange(),n=e.isBackwards();if(i.isEmpty()){var r=i.start.row;t.duplicateLines(r,r)}else{var o=n?i.start:i.end,s=t.insert(o,t.getTextRange(i),!1);i.start=o,i.end=s,e.setSelectionRange(i,n)}},this.moveLinesDown=function(){this.$moveLines(1,!1)},this.moveLinesUp=function(){this.$moveLines(-1,!1)},this.moveText=function(e,t,i){return this.session.moveText(e,t,i)},this.copyLinesUp=function(){this.$moveLines(-1,!0)},this.copyLinesDown=function(){this.$moveLines(1,!0)},this.$moveLines=function(e,t){var i,n,r=this.selection;if(!r.inMultiSelectMode||this.inVirtualSelectionMode){var o=r.toOrientedRange();i=this.$getSelectedRows(o),n=this.session.$moveLines(i.first,i.last,t?0:e),t&&-1==e&&(n=0),o.moveBy(n,0),r.fromOrientedRange(o)}else{var s=r.rangeList.ranges;r.rangeList.detach(this.session),this.inVirtualSelectionMode=!0;for(var a=0,l=0,c=s.length,h=0;c>h;h++){var d=h;s[h].moveBy(a,0),i=this.$getSelectedRows(s[h]);for(var u=i.first,f=i.last;++hf+1)break;f=p.last}for(h--,a=this.session.$moveLines(u,f,t?0:e),t&&-1==e&&(d=h+1);h>=d;)s[d].moveBy(a,0),d++;t||(a=0),l+=a}r.fromOrientedRange(r.ranges[0]),r.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var i=this.renderer,n=this.renderer.layerConfig,r=e*Math.floor(n.height/n.lineHeight);this.$blockScrolling++,t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(r,0)}):t===!1&&(this.selection.moveCursorBy(r,0),this.selection.clearSelection()),this.$blockScrolling--;var o=i.scrollTop;i.scrollBy(0,r*n.lineHeight),null!=t&&i.scrollCursorIntoView(null,.5),i.animateScrolling(o)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,i,n){this.renderer.scrollToLine(e,t,i,n)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var i=this.getCursorPosition(),n=new w(this.session,i.row,i.column),r=n.getCurrentToken(),o=r||n.stepForward();if(o){var s,a,l=!1,c={},h=i.column-o.start,d={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(o.value.match(/[{}()\[\]]/g)){for(;h=0;--o)this.$tryReplace(i[o],e)&&n++;return this.selection.setSelectionRange(r),this.$blockScrolling-=1,n},this.$tryReplace=function(e,t){var i=this.session.getTextRange(e);return t=this.$search.replace(i,t),null!==t?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,i){t||(t={}),"string"==typeof e||e instanceof RegExp?t.needle=e:"object"==typeof e&&n.mixin(t,e);var r=this.selection.getRange();null==t.needle&&(e=this.session.getTextRange(r)||this.$search.$options.needle,e||(r=this.session.getWordRange(r.start.row,r.start.column),e=this.session.getTextRange(r)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:r});var o=this.$search.find(this.session);return t.preventScroll?o:o?(this.revealRange(o,i),o):(t.backwards?r.start=r.end:r.end=r.start,void this.selection.setRange(r))},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var i=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(i)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(e){var t,i=this,n=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var r=this.$scrollAnchor;r.style.cssText="position:absolute",this.container.insertBefore(r,this.container.firstChild);var o=this.on("changeSelection",function(){n=!0}),s=this.renderer.on("beforeRender",function(){n&&(t=i.renderer.container.getBoundingClientRect())}),a=this.renderer.on("afterRender",function(){if(n&&t&&(i.isFocused()||i.searchBox&&i.searchBox.isFocused())){var e=i.renderer,o=e.$cursorLayer.$pixelPos,s=e.layerConfig,a=o.top-s.offset;n=o.top>=0&&a+t.top<0?!0:o.topwindow.innerHeight?!1:null,null!=n&&(r.style.top=a+"px",r.style.left=o.left+"px",r.style.height=s.lineHeight+"px",r.scrollIntoView(n)),n=t=null}});this.setAutoScrollEditorIntoView=function(e){e||(delete this.setAutoScrollEditorIntoView,this.removeEventListener("changeSelection",o),this.renderer.removeEventListener("afterRender",a),this.renderer.removeEventListener("beforeRender",s))}}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;t&&(t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&"wide"!=e,r.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e)))}}).call(A.prototype),v.defineOptions(A.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),t.Editor=A}),ace.define("ace/undomanager",["require","exports","module"],function(e,t,i){"use strict";var n=function(){this.reset()};(function(){function e(e){return{action:e.action,start:e.start,end:e.end,lines:1==e.lines.length?null:e.lines,text:1==e.lines.length?e.lines[0]:null}}function t(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines||[e.text]}}function i(e,t){for(var i=new Array(e.length),n=0;n0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return 0===this.dirtyCounter},this.$serializeDeltas=function(t){return i(t,e)},this.$deserializeDeltas=function(e){return i(e,t)}}).call(n.prototype),t.UndoManager=n}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/dom"),r=e("../lib/oop"),o=e("../lib/lang"),s=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=n.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){r.implement(this,s),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e&&e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;ts&&(g=o.end.row+1,o=t.getNextFoldLine(g,o),s=o?o.start.row:1/0),g>r){for(;this.$cells.length>p+1;)f=this.$cells.pop(),this.element.removeChild(f.element);break}f=this.$cells[++p],f||(f={element:null,textNode:null,foldWidget:null},f.element=n.createElement("div"),f.textNode=document.createTextNode(""),f.element.appendChild(f.textNode),this.element.appendChild(f.element),this.$cells[p]=f); +var m="ace_gutter-cell ";l[g]&&(m+=l[g]),c[g]&&(m+=c[g]),this.$annotations[g]&&(m+=this.$annotations[g].className),f.element.className!=m&&(f.element.className=m);var v=t.getRowLength(g)*e.lineHeight+"px";if(v!=f.element.style.height&&(f.element.style.height=v),a){var w=a[g];null==w&&(w=a[g]=t.getFoldWidget(g))}if(w){f.foldWidget||(f.foldWidget=n.createElement("span"),f.element.appendChild(f.foldWidget));var m="ace_fold-widget ace_"+w;m+="start"==w&&g==s&&gi.right-t.right?"foldWidgets":void 0}}).call(a.prototype),t.Gutter=a}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,i){"use strict";var n=e("../range").Range,r=e("../lib/dom"),o=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,i,n){return(e?1:0)|(t?2:0)|(i?4:0)|(n?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){var e=e||this.config;if(e){this.config=e;var t=[];for(var i in this.markers){var n=this.markers[i];if(n.range){var r=n.range.clipRows(e.firstRow,e.lastRow);if(!r.isEmpty())if(r=r.toScreenRange(this.session),n.renderer){var o=this.$getTop(r.start.row,e),s=this.$padding+r.start.column*e.characterWidth;n.renderer(t,r,s,o,e)}else"fullLine"==n.type?this.drawFullLineMarker(t,r,n.clazz,e):"screenLine"==n.type?this.drawScreenLineMarker(t,r,n.clazz,e):r.isMultiLine()?"text"==n.type?this.drawTextMarker(t,r,n.clazz,e):this.drawMultiLineMarker(t,r,n.clazz,e):this.drawSingleLineMarker(t,r,n.clazz+" ace_start ace_br15",e)}else n.update(t,this,this.session,e)}this.element.innerHTML=t.join("")}},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(t,i,r,o,s){for(var a=this.session,l=i.start.row,c=i.end.row,h=l,d=0,u=0,f=a.getScreenLastRowColumn(h),p=new n(h,i.start.column,h,u);c>=h;h++)p.start.row=p.end.row=h,p.start.column=h==l?i.start.column:a.getRowWrapIndent(h),p.end.column=f,d=u,u=f,f=c>h+1?a.getScreenLastRowColumn(h+1):h==c?0:i.end.column,this.drawSingleLineMarker(t,p,r+(h==l?" ace_start":"")+" ace_br"+e(h==l||h==l+1&&i.start.column,u>d,u>f,h==c),o,h==c?0:1,s)},this.drawMultiLineMarker=function(e,t,i,n,r){var o=this.$padding,s=n.lineHeight,a=this.$getTop(t.start.row,n),l=o+t.start.column*n.characterWidth;r=r||"",e.push("
"),a=this.$getTop(t.end.row,n);var c=t.end.column*n.characterWidth;if(e.push("
"),s=(t.end.row-t.start.row-1)*n.lineHeight,!(0>=s)){a=this.$getTop(t.start.row+1,n);var h=(t.start.column?1:0)|(t.end.column?0:8);e.push("
")}},this.drawSingleLineMarker=function(e,t,i,n,r,o){var s=n.lineHeight,a=(t.end.column+(r||0)-t.start.column)*n.characterWidth,l=this.$getTop(t.start.row,n),c=this.$padding+t.start.column*n.characterWidth;e.push("
")},this.drawFullLineMarker=function(e,t,i,n,r){var o=this.$getTop(t.start.row,n),s=n.lineHeight;t.start.row!=t.end.row&&(s+=this.$getTop(t.end.row,n)-o),e.push("
")},this.drawScreenLineMarker=function(e,t,i,n,r){var o=this.$getTop(t.start.row,n),s=n.lineHeight;e.push("
")}}).call(o.prototype),t.Marker=o}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/oop"),r=e("../lib/dom"),o=e("../lib/lang"),s=(e("../lib/useragent"),e("../lib/event_emitter").EventEmitter),a=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){n.implement(this,s),this.EOF_CHAR="¶",this.EOL_CHAR_LF="¬",this.EOL_CHAR_CRLF="¤",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="—",this.SPACE_CHAR="·",this.$padding=0,this.$updateEolChar=function(){var e="\n"==this.session.doc.getNewLineCharacter()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;return this.EOL_CHAR!=e?(this.EOL_CHAR=e,!0):void 0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;for(var t=this.$tabStrings=[0],i=1;e+1>i;i++)t.push(this.showInvisibles?""+o.stringRepeat(this.TAB_CHAR,i)+"":o.stringRepeat(" ",i));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var n="ace_indent-guide",r="",s="";if(this.showInvisibles){n+=" ace_invisible",r=" ace_invisible_space",s=" ace_invisible_tab";var a=o.stringRepeat(this.SPACE_CHAR,this.tabSize),l=o.stringRepeat(this.TAB_CHAR,this.tabSize)}else var a=o.stringRepeat(" ",this.tabSize),l=a;this.$tabStrings[" "]=""+a+"",this.$tabStrings[" "]=""+l+""}},this.updateLines=function(e,t,i){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;for(var n=Math.max(t,e.firstRow),r=Math.min(i,e.lastRow),o=this.element.childNodes,s=0,a=e.firstRow;n>a;a++){var l=this.session.getFoldLine(a);if(l){if(l.containsRow(n)){n=l.start.row;break}a=l.end.row}s++}for(var a=n,l=this.session.getNextFoldLine(a),c=l?l.start.row:1/0;;){if(a>c&&(a=l.end.row+1,l=this.session.getNextFoldLine(a,l),c=l?l.start.row:1/0),a>r)break;var h=o[s++];if(h){var d=[];this.$renderLine(d,a,!this.$useLineGroups(),a==c?l:!1),h.style.height=e.lineHeight*this.session.getRowLength(a)+"px",h.innerHTML=d.join("")}a++}},this.scrollLines=function(e){var t=this.config;if(this.config=e,!t||t.lastRow0;n--)i.removeChild(i.firstChild);if(t.lastRow>e.lastRow)for(var n=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);n>0;n--)i.removeChild(i.lastChild);if(e.firstRowt.lastRow){var r=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);i.appendChild(r)}},this.$renderLinesFragment=function(e,t,i){for(var n=this.element.ownerDocument.createDocumentFragment(),o=t,s=this.session.getNextFoldLine(o),a=s?s.start.row:1/0;;){if(o>a&&(o=s.end.row+1,s=this.session.getNextFoldLine(o,s),a=s?s.start.row:1/0),o>i)break;var l=r.createElement("div"),c=[];if(this.$renderLine(c,o,!1,o==a?s:!1),l.innerHTML=c.join(""),this.$useLineGroups())l.className="ace_line_group",n.appendChild(l),l.style.height=e.lineHeight*this.session.getRowLength(o)+"px";else for(;l.firstChild;)n.appendChild(l.firstChild);o++}return n},this.update=function(e){this.config=e;for(var t=[],i=e.firstRow,n=e.lastRow,r=i,o=this.session.getNextFoldLine(r),s=o?o.start.row:1/0;;){if(r>s&&(r=o.end.row+1,o=this.session.getNextFoldLine(r,o),s=o?o.start.row:1/0),r>n)break;this.$useLineGroups()&&t.push("
"),this.$renderLine(t,r,!1,r==s?o:!1),this.$useLineGroups()&&t.push("
"),r++}this.element.innerHTML=t.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,i,n){var r=this,s=/\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF\uFFF9-\uFFFC])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g,a=function(e,i,n,s,a){if(i)return r.showInvisibles?""+o.stringRepeat(r.SPACE_CHAR,e.length)+"":e;if("&"==e)return"&";if("<"==e)return"<";if(">"==e)return">";if(" "==e){var l=r.session.getScreenTabSize(t+s);return t+=l-1,r.$tabStrings[l]}if(" "==e){var c=r.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",h=r.showInvisibles?r.SPACE_CHAR:"";return t+=1,""+h+""}return n?""+r.SPACE_CHAR+"":(t+=1,""+e+"")},l=n.replace(s,a);if(this.$textToken[i.type])e.push(l);else{var c="ace_"+i.type.replace(/\./g," ace_"),h="";"fold"==i.type&&(h=" style='width:"+i.value.length*this.config.characterWidth+"px;' "),e.push("",l,"")}return t+n.length},this.renderIndentGuide=function(e,t,i){var n=t.search(this.$indentGuideRe);return 0>=n||n>=i?t:" "==t[0]?(n-=n%this.tabSize,e.push(o.stringRepeat(this.$tabStrings[" "],n/this.tabSize)),t.substr(n)):" "==t[0]?(e.push(o.stringRepeat(this.$tabStrings[" "],n)),t.substr(n)):t},this.$renderWrappedLine=function(e,t,i,n){for(var r=0,s=0,a=i[0],l=0,c=0;c=a;)l=this.$renderToken(e,l,h,d.substring(0,a-r)),d=d.substring(a-r),r=a,n||e.push("","
"),e.push(o.stringRepeat(" ",i.indent)),s++,l=0,a=i[s]||Number.MAX_VALUE;0!=d.length&&(r+=d.length,l=this.$renderToken(e,l,h,d))}}},this.$renderSimpleLine=function(e,t){var i=0,n=t[0],r=n.value;this.displayIndentGuides&&(r=this.renderIndentGuide(e,r)),r&&(i=this.$renderToken(e,i,n,r));for(var o=1;o"),r.length){var o=this.session.getRowSplitData(t);o&&o.length?this.$renderWrappedLine(e,r,o,i):this.$renderSimpleLine(e,r)}this.showInvisibles&&(n&&(t=n.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),i||e.push("
")},this.$getFoldLineTokens=function(e,t){function i(e,t,i){for(var n=0,o=0;o+e[n].value.lengthi-t&&(s=s.substring(0,i-t)),r.push({type:e[n].type,value:s}),o=t+s.length,n+=1}for(;i>o&&ni?{type:e[n].type,value:s.substring(0,i-o)}:e[n]),o+=s.length,n+=1}}var n=this.session,r=[],o=n.getTokens(e);return t.walk(function(e,t,s,a,l){null!=e?r.push({type:"fold",value:e}):(l&&(o=n.getTokens(t)),o.length&&i(o,a,s))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";var n,r=e("../lib/dom"),o=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),void 0===n&&(n=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(n?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(e){for(var t=this.cursors,i=t.length;i--;)t[i].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){for(var t=this.cursors,i=t.length;i--;)t[i].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e==this.smoothBlinking||n||(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0),this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()}},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var i=this.session.documentToScreenPosition(e),n=this.$padding+i.column*this.config.characterWidth,r=(i.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:n,top:r}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,i=0,n=0;(void 0===t||0===t.length)&&(t=[{cursor:null}]);for(var i=0,r=t.length;r>i;i++){var o=this.getPixelPosition(t[i].cursor,!0);if(!((o.top>e.height+e.offset||o.top<0)&&i>1)){var s=(this.cursors[n++]||this.addCursor()).style;this.drawCursor?this.drawCursor(s,o,e,t[i],this.session):(s.left=o.left+"px",s.top=o.top+"px",s.width=e.characterWidth+"px",s.height=e.lineHeight+"px")}}for(;this.cursors.length>n;)this.removeCursor();var a=this.session.getOverwrite();this.$setOverwrite(a),this.$pixelPos=o,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(o.prototype),t.Cursor=o}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/dom"),o=e("./lib/event"),s=e("./lib/event_emitter").EventEmitter,a=function(e){this.element=r.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=r.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,o.addListener(this.element,"scroll",this.onScroll.bind(this)),o.addListener(this.element,"mousedown",o.preventDefault)};(function(){n.implement(this,s),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e}}).call(a.prototype);var l=function(e,t){a.call(this,e),this.scrollTop=0,t.$scrollbarWidth=this.width=r.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};n.inherits(l,a),function(){this.classSuffix="-v",this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=function(e){this.inner.style.height=e+"px"},this.setScrollHeight=function(e){this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=e)}}.call(l.prototype);var c=function(e,t){a.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};n.inherits(c,a),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(c.prototype),t.ScrollBar=l,t.ScrollBarV=l,t.ScrollBarH=c,t.VScrollBar=l,t.HScrollBar=c}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,i){"use strict";var n=e("./lib/event"),r=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){if(this.changes=this.changes|e,!this.pending&&this.changes){this.pending=!0;var t=this;n.nextFrame(function(){t.pending=!1;for(var e;e=t.changes;)t.changes=0,t.onRender(e)},this.window)}}}).call(r.prototype),t.RenderLoop=r}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,i){var n=e("../lib/oop"),r=e("../lib/dom"),o=e("../lib/lang"),s=e("../lib/useragent"),a=e("../lib/event_emitter").EventEmitter,l=0,c=t.FontMetrics=function(e,t){this.el=r.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=r.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=r.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),l||this.$testFractionalRect(),this.$measureNode.innerHTML=o.stringRepeat("X",l),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){n.implement(this,a),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=r.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;l=t>0&&1>t?50:100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",s.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(50===l){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}var i={height:e.height,width:e.width/l}}else var i={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/l};return 0===i.width||0===i.height?null:i},this.$measureCharWidth=function(e){this.$main.innerHTML=o.stringRepeat(e,l);var t=this.$main.getBoundingClientRect();return t.width/l},this.getCharacterWidth=function(e){var t=this.charSizes[e];return void 0===t&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(c.prototype)}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),r=e("./lib/dom"),o=e("./config"),s=e("./lib/useragent"),a=e("./layer/gutter").Gutter,l=e("./layer/marker").Marker,c=e("./layer/text").Text,h=e("./layer/cursor").Cursor,d=e("./scrollbar").HScrollBar,u=e("./scrollbar").VScrollBar,f=e("./renderloop").RenderLoop,p=e("./layer/font_metrics").FontMetrics,g=e("./lib/event_emitter").EventEmitter,m='.ace_editor { position: relative; overflow: hidden; font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace; direction: ltr; } .ace_scroller { position: absolute; overflow: hidden; top: 0; bottom: 0; background-color: inherit; -ms-user-select: none; -moz-user-select: none; -webkit-user-select: none; user-select: none; cursor: text; } .ace_content { position: absolute; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; min-width: 100%; } .ace_dragging .ace_scroller:before{ position: absolute; top: 0; left: 0; right: 0; bottom: 0; content: \'\'; background: rgba(250, 250, 250, 0.01); z-index: 1000; } .ace_dragging.ace_dark .ace_scroller:before{ background: rgba(0, 0, 0, 0.01); } .ace_selecting, .ace_selecting * { cursor: text !important; } .ace_gutter { position: absolute; overflow : hidden; width: auto; top: 0; bottom: 0; left: 0; cursor: default; z-index: 4; -ms-user-select: none; -moz-user-select: none; -webkit-user-select: none; user-select: none; } .ace_gutter-active-line { position: absolute; left: 0; right: 0; } .ace_scroller.ace_scroll-left { box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset; } .ace_gutter-cell { padding-left: 19px; padding-right: 6px; background-repeat: no-repeat; } .ace_gutter-cell.ace_error { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg=="); background-repeat: no-repeat; background-position: 2px center; } .ace_gutter-cell.ace_warning { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg=="); background-position: 2px center; } .ace_gutter-cell.ace_info { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII="); background-position: 2px center; } .ace_dark .ace_gutter-cell.ace_info { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC"); } .ace_scrollbar { position: absolute; right: 0; bottom: 0; z-index: 6; } .ace_scrollbar-inner { position: absolute; cursor: text; left: 0; top: 0; } .ace_scrollbar-v{ overflow-x: hidden; overflow-y: scroll; top: 0; } .ace_scrollbar-h { overflow-x: scroll; overflow-y: hidden; left: 0; } .ace_print-margin { position: absolute; height: 100%; } .ace_text-input { position: absolute; z-index: 0; width: 0.5em; height: 1em; opacity: 0; background: transparent; -moz-appearance: none; appearance: none; border: none; resize: none; outline: none; overflow: hidden; font: inherit; padding: 0 1px; margin: 0 -1px; text-indent: -1em; -ms-user-select: text; -moz-user-select: text; -webkit-user-select: text; user-select: text; white-space: pre!important; } .ace_text-input.ace_composition { background: inherit; color: inherit; z-index: 1000; opacity: 1; text-indent: 0; } .ace_layer { z-index: 1; position: absolute; overflow: hidden; word-wrap: normal; white-space: pre; height: 100%; width: 100%; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; pointer-events: none; } .ace_gutter-layer { position: relative; width: auto; text-align: right; pointer-events: auto; } .ace_text-layer { font: inherit !important; } .ace_cjk { display: inline-block; text-align: center; } .ace_cursor-layer { z-index: 4; } .ace_cursor { z-index: 4; position: absolute; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; border-left: 2px solid; transform: translatez(0); } .ace_slim-cursors .ace_cursor { border-left-width: 1px; } .ace_overwrite-cursors .ace_cursor { border-left-width: 0; border-bottom: 1px solid; } .ace_hidden-cursors .ace_cursor { opacity: 0.2; } .ace_smooth-blinking .ace_cursor { -webkit-transition: opacity 0.18s; transition: opacity 0.18s; } .ace_editor.ace_multiselect .ace_cursor { border-left-width: 1px; } .ace_marker-layer .ace_step, .ace_marker-layer .ace_stack { position: absolute; z-index: 3; } .ace_marker-layer .ace_selection { position: absolute; z-index: 5; } .ace_marker-layer .ace_bracket { position: absolute; z-index: 6; } .ace_marker-layer .ace_active-line { position: absolute; z-index: 2; } .ace_marker-layer .ace_selected-word { position: absolute; z-index: 4; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } .ace_line .ace_fold { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; display: inline-block; height: 11px; margin-top: -2px; vertical-align: middle; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="), url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII="); background-repeat: no-repeat, repeat-x; background-position: center center, top left; color: transparent; border: 1px solid black; border-radius: 2px; cursor: pointer; pointer-events: auto; } .ace_dark .ace_fold { } .ace_fold:hover{ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="), url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC"); } .ace_tooltip { background-color: #FFF; background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1)); background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1)); border: 1px solid gray; border-radius: 1px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); color: black; max-width: 100%; padding: 3px 4px; position: fixed; z-index: 999999; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; cursor: default; white-space: pre; word-wrap: break-word; line-height: normal; font-style: normal; font-weight: normal; letter-spacing: normal; pointer-events: none; } .ace_folding-enabled > .ace_gutter-cell { padding-right: 13px; } .ace_fold-widget { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; margin: 0 -12px 0 1px; display: none; width: 11px; vertical-align: top; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg=="); background-repeat: no-repeat; background-position: center; border-radius: 3px; border: 1px solid transparent; cursor: pointer; } .ace_folding-enabled .ace_fold-widget { display: inline-block; } .ace_fold-widget.ace_end { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg=="); } .ace_fold-widget.ace_closed { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA=="); } .ace_fold-widget:hover { border: 1px solid rgba(0, 0, 0, 0.3); background-color: rgba(255, 255, 255, 0.2); box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7); } .ace_fold-widget:active { border: 1px solid rgba(0, 0, 0, 0.4); background-color: rgba(0, 0, 0, 0.05); box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8); } .ace_dark .ace_fold-widget { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC"); } .ace_dark .ace_fold-widget.ace_end { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg=="); } .ace_dark .ace_fold-widget.ace_closed { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg=="); } .ace_dark .ace_fold-widget:hover { box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); background-color: rgba(255, 255, 255, 0.1); } .ace_dark .ace_fold-widget:active { box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); } .ace_fold-widget.ace_invalid { background-color: #FFB4B4; border-color: #DE5555; } .ace_fade-fold-widgets .ace_fold-widget { -webkit-transition: opacity 0.4s ease 0.05s; transition: opacity 0.4s ease 0.05s; opacity: 0; } .ace_fade-fold-widgets:hover .ace_fold-widget { -webkit-transition: opacity 0.05s ease 0.05s; transition: opacity 0.05s ease 0.05s; opacity:1; } .ace_underline { text-decoration: underline; } .ace_bold { font-weight: bold; } .ace_nobold .ace_bold { font-weight: normal; } .ace_italic { font-style: italic; } .ace_error-marker { background-color: rgba(255, 0, 0,0.2); position: absolute; z-index: 9; } .ace_highlight-marker { background-color: rgba(255, 255, 0,0.2); position: absolute; z-index: 8; } .ace_br1 {border-top-left-radius : 3px;} .ace_br2 {border-top-right-radius : 3px;} .ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;} .ace_br4 {border-bottom-right-radius: 3px;} .ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;} .ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;} .ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;} .ace_br8 {border-bottom-left-radius : 3px;} .ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;} .ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;} .ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;} .ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} .ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} .ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} .ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} '; +r.importCssString(m,"ace_editor.css");var v=function(e,t){var i=this;this.container=e||r.createElement("div"),this.$keepTextAreaAtCursor=!s.isOldIE,r.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=r.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=r.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=r.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new a(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new l(this.content);var n=this.$textLayer=new c(this.content);this.canvas=n.element,this.$markerFront=new l(this.content),this.$cursorLayer=new h(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new u(this.container,this),this.scrollBarH=new d(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){i.$scrollAnimation||i.session.setScrollTop(e.data-i.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){i.$scrollAnimation||i.session.setScrollLeft(e.data-i.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new p(this.container,500),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){i.updateCharacterSize(),i.onResize(!0,i.gutterWidth,i.$size.width,i.$size.height),i._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new f(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),o.resetOptions(this),o._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,n.implement(this,g),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),e&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},this.updateLines=function(e,t,i){if(void 0===t&&(t=1/0),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar()},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,i,n){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=e?1:0;var r=this.container;n||(n=r.clientHeight||r.scrollHeight),i||(i=r.clientWidth||r.scrollWidth);var o=this.$updateCachedSize(e,t,i,n);if(!this.$size.scrollerHeight||!i&&!n)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(o|this.$changes,!0):this.$loop.schedule(o|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null}},this.$updateCachedSize=function(e,t,i,n){n-=this.$extraHeight||0;var r=0,o=this.$size,s={width:o.width,height:o.height,scrollerHeight:o.scrollerHeight,scrollerWidth:o.scrollerWidth};return n&&(e||o.height!=n)&&(o.height=n,r|=this.CHANGE_SIZE,o.scrollerHeight=o.height,this.$horizScroll&&(o.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",r|=this.CHANGE_SCROLL),i&&(e||o.width!=i)&&(r|=this.CHANGE_SIZE,o.width=i,null==t&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",o.scrollerWidth=Math.max(0,i-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px",(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)&&(r|=this.CHANGE_FULL)),o.$dirty=!i||!n,r&&this._signal("resize",s),r},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-2*this.$padding,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var i=this.session.selection.getCursor();i.column=0,e=this.$cursorLayer.getPixelPosition(i,!0),t*=this.session.getRowLength(i.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var e=r.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=r.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&-1==this.session.$wrap&&this.adjustWrapLimit()}},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(this.$keepTextAreaAtCursor){var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,i=this.$cursorLayer.$pixelPos.left;t-=e.offset;var n=this.textarea.style,r=this.lineHeight;if(0>t||t>e.height-r)return void(n.top=n.left="0");var o=this.characterWidth;if(this.$composition){var s=this.textarea.value.replace(/^\x01+/,"");o*=this.session.$getStringScreenWidth(s)[0]+2,r+=2}i-=this.scrollLeft,i>this.$size.scrollerWidth-o&&(i=this.$size.scrollerWidth-o),i+=this.gutterWidth,n.height=r+"px",n.width=o+"px",n.left=Math.min(i,this.$size.scrollerWidth-o)+"px",n.top=Math.min(t,this.$size.height-r)+"px"}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var e=Math.floor((this.layerConfig.height+this.layerConfig.offset)/this.layerConfig.lineHeight);return this.layerConfig.firstRow-1+e},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,i,n){var r=this.scrollMargin;r.top=0|e,r.bottom=0|t,r.right=0|n,r.left=0|i,r.v=r.top+r.bottom,r.h=r.left+r.right,r.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-r.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){if(this.$changes&&(e|=this.$changes,this.$changes=0),!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t)return void(this.$changes|=e);if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var i=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){if(e|=this.$computeLayerConfig(),i.firstRow!=this.layerConfig.firstRow&&i.firstRowScreen==this.layerConfig.firstRowScreen){var n=this.scrollTop+(i.firstRow-this.layerConfig.firstRow)*this.lineHeight;n>0&&(this.scrollTop=n,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig())}i=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-i.offset+"px",this.content.style.marginTop=-i.offset+"px",this.content.style.width=i.width+2*this.$padding+"px",this.content.style.height=i.minHeight+"px"}return e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left"),e&this.CHANGE_FULL?(this.$textLayer.update(i),this.$showGutter&&this.$gutterLayer.update(i),this.$markerBack.update(i),this.$markerFront.update(i),this.$cursorLayer.update(i),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),void this._signal("afterRender")):e&this.CHANGE_SCROLL?(e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(i):this.$textLayer.scrollLines(i),this.$showGutter&&this.$gutterLayer.update(i),this.$markerBack.update(i),this.$markerFront.update(i),this.$cursorLayer.update(i),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),void this._signal("afterRender")):(e&this.CHANGE_TEXT?(this.$textLayer.update(i),this.$showGutter&&this.$gutterLayer.update(i)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(i):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(i),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(i),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(i),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(i),void this._signal("afterRender"))},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,i=Math.max((this.$minLines||1)*this.lineHeight,Math.min(t,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(i+=this.scrollBarH.getHeight());var n=e>t;if(i!=this.desiredHeight||this.$size.height!=this.desiredHeight||n!=this.$vScroll){n!=this.$vScroll&&(this.$vScroll=n,this.scrollBarV.setVisible(n));var r=this.container.clientWidth;this.container.style.height=i+"px",this.$updateCachedSize(!0,this.$gutterWidth,r,i),this.desiredHeight=i,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,i=t.height<=2*this.lineHeight,n=this.session.getScreenLength(),r=n*this.lineHeight,o=this.$getLongestLine(),s=!i&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-o-2*this.$padding<0),a=this.$horizScroll!==s;a&&(this.$horizScroll=s,this.scrollBarH.setVisible(s));var l=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var c=this.scrollTop%this.lineHeight,h=t.scrollerHeight+this.lineHeight,d=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;r+=d;var u=this.scrollMargin;this.session.setScrollTop(Math.max(-u.top,Math.min(this.scrollTop,r-t.scrollerHeight+u.bottom))),this.session.setScrollLeft(Math.max(-u.left,Math.min(this.scrollLeft,o+2*this.$padding-t.scrollerWidth+u.right)));var f=!i&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-r+d<0||this.scrollTop>u.top),p=l!==f;p&&(this.$vScroll=f,this.scrollBarV.setVisible(f));var g,m,v=Math.ceil(h/this.lineHeight)-1,w=Math.max(0,Math.round((this.scrollTop-c)/this.lineHeight)),A=w+v,y=this.lineHeight;w=e.screenToDocumentRow(w,0);var C=e.getFoldLine(w);C&&(w=C.start.row),g=e.documentToScreenRow(w,0),m=e.getRowLength(w)*y,A=Math.min(e.screenToDocumentRow(A,0),e.getLength()-1),h=t.scrollerHeight+e.getRowLength(A)*y+m,c=this.scrollTop-g*y;var E=0;return this.layerConfig.width!=o&&(E=this.CHANGE_H_SCROLL),(a||p)&&(E=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),p&&(o=this.$getLongestLine())),this.layerConfig={width:o,padding:this.$padding,firstRow:w,firstRowScreen:g,lastRow:A,lineHeight:y,characterWidth:this.characterWidth,minHeight:h,maxHeight:r,offset:c,gutterOffset:Math.max(0,Math.ceil((c+t.height-t.scrollerHeight)/y)),height:this.$size.scrollerHeight},E},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var i=this.layerConfig;return e>i.lastRow+1||to?(t&&(o-=t*this.$size.scrollerHeight),0===o&&(o=-this.scrollMargin.top),this.session.setScrollTop(o)):l+this.$size.scrollerHeight-ar?(ri;++i)r.push(o(i/this.STEPS,e,t-e));return r},this.scrollToLine=function(e,t,i,n){var r=this.$cursorLayer.getPixelPosition({row:e,column:0}),o=r.top;t&&(o-=this.$size.scrollerHeight/2);var s=this.scrollTop;this.session.setScrollTop(o),i!==!1&&this.animateScrolling(s,n)},this.animateScrolling=function(e,t){var i=this.scrollTop;if(this.$animatedScroll){var n=this;if(e!=i){if(this.$scrollAnimation){var r=this.$scrollAnimation.steps;if(r.length&&(e=r[0],e==i))return}var o=n.$calcSteps(e,i);this.$scrollAnimation={from:e,to:i,steps:o},clearInterval(this.$timer),n.session.setScrollTop(o.shift()),n.session.$scrollTop=i,this.$timer=setInterval(function(){o.length?(n.session.setScrollTop(o.shift()),n.session.$scrollTop=i):null!=i?(n.session.$scrollTop=-1,n.session.setScrollTop(i),i=null):(n.$timer=clearInterval(n.$timer),n.$scrollAnimation=null,t&&t())},10)}}},this.scrollToY=function(e){this.scrollTop!==e&&(this.$loop.schedule(this.CHANGE_SCROLL),this.scrollTop=e)},this.scrollToX=function(e){this.scrollLeft!==e&&(this.scrollLeft=e),this.$loop.schedule(this.CHANGE_H_SCROLL)},this.scrollTo=function(e,t){this.session.setScrollTop(t),this.session.setScrollLeft(t)},this.scrollBy=function(e,t){t&&this.session.setScrollTop(this.session.getScrollTop()+t),e&&this.session.setScrollLeft(this.session.getScrollLeft()+e)},this.isScrollableBy=function(e,t){return 0>t&&this.session.getScrollTop()>=1-this.scrollMargin.top?!0:t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom?!0:0>e&&this.session.getScrollLeft()>=1-this.scrollMargin.left?!0:e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right?!0:void 0},this.pixelToScreenCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=(e+this.scrollLeft-i.left-this.$padding)/this.characterWidth,r=Math.floor((t+this.scrollTop-i.top)/this.lineHeight),o=Math.round(n);return{row:r,column:o,side:n-o>0?1:-1}},this.screenToTextCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=Math.round((e+this.scrollLeft-i.left-this.$padding)/this.characterWidth),r=(t+this.scrollTop-i.top)/this.lineHeight;return this.session.screenToDocumentPosition(r,Math.max(n,0))},this.textToScreenCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=this.session.documentToScreenPosition(e,t),r=this.$padding+Math.round(n.column*this.characterWidth),o=n.row*this.lineHeight;return{pageX:i.left+r-this.scrollLeft,pageY:i.top+o-this.scrollTop}},this.visualizeFocus=function(){r.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){r.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,r.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(r.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null)},this.setTheme=function(e,t){function i(i){if(n.$themeId!=e)return t&&t();if(i.cssClass){r.importCssString(i.cssText,i.cssClass,n.container.ownerDocument),n.theme&&r.removeCssClass(n.container,n.theme.cssClass);var o="padding"in i?i.padding:"padding"in(n.theme||{})?4:n.$padding;n.$padding&&o!=n.$padding&&n.setPadding(o),n.$theme=i.cssClass,n.theme=i,r.addCssClass(n.container,i.cssClass),r.setCssClass(n.container,"ace_dark",i.isDark),n.$size&&(n.$size.width=0,n.$updateSizeAsync()),n._dispatchEvent("themeLoaded",{theme:i}),t&&t()}}var n=this;if(this.$themeId=e,n._dispatchEvent("themeChange",{theme:e}),e&&"string"!=typeof e)i(e);else{var s=e||this.$options.theme.initialValue;o.loadModule(["theme",s],i)}},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){r.setCssClass(this.container,e,t!==!1)},this.unsetStyle=function(e){r.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(v.prototype),o.defineOptions(v.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){"number"==typeof e&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){r.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){return this.$gutterLineHighlight?(this.$gutterLineHighlight.style.display=e?"":"none",void(this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight())):(this.$gutterLineHighlight=r.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",void this.$gutter.appendChild(this.$gutterLineHighlight))},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){this.$vScrollBarAlwaysVisible&&this.$vScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){"number"==typeof e&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},scrollPastEnd:{set:function(e){e=+e||0,this.$scrollPastEnd!=e&&(this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=v}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,n){"use strict";var r=e("../lib/oop"),o=e("../lib/net"),s=e("../lib/event_emitter").EventEmitter,a=e("../config"),l=function(t,n,r,o){if(this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl),a.get("packaged")||!e.toUrl)o=o||a.moduleUrl(n.id,"worker");else{var s=this.$normalizePath;o=o||s(e.toUrl("ace/worker/worker.js",null,"_"));var l={};t.forEach(function(t){l[t]=s(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}try{var c=n.src,h=i(59),d=new h([c],{type:"application/javascript"}),u=(window.URL||window.webkitURL).createObjectURL(d);this.$worker=new Worker(u)}catch(f){if(!(f instanceof window.DOMException))throw f;var d=this.$workerBlob(o),p=window.URL||window.webkitURL,g=p.createObjectURL(d);this.$worker=new Worker(g),p.revokeObjectURL(g)}this.$worker.postMessage({init:!0,tlns:l,module:n.id,classname:r}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){r.implement(this,s),this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var i=this.callbacks[t.id];i&&(i(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return o.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,i){if(i){var n=this.callbackId++;this.callbacks[n]=i,t.push(n)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(i){console.error(i.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),"insert"==e.action?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;e&&(this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e}))},this.$workerBlob=function(e){var t="importScripts('"+o.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(i){var n=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,r=new n;return r.append(t),r.getBlob("application/javascript")}}}).call(l.prototype);var c=function(e,t,i){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var n=null,r=!1,o=Object.create(s),l=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){l.messageBuffer.push(e),n&&(r?setTimeout(c):c())},this.setEmitSync=function(e){r=e};var c=function(){var e=l.messageBuffer.shift();e.command?n[e.command].apply(n,e.args):e.event&&o._signal(e.event,e.data)};o.postMessage=function(e){l.onMessage({data:e})},o.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},o.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},a.loadModule(["worker",t],function(e){for(n=new e[i](o);l.messageBuffer.length;)c()})};c.prototype=l.prototype,t.UIWorkerClient=c,t.WorkerClient=l}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,i){"use strict";var n=e("./range").Range,r=e("./lib/event_emitter").EventEmitter,o=e("./lib/oop"),s=function(e,t,i,n,r,o){var s=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=r,this.othersClass=o,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=n,this.$onCursorChange=function(){setTimeout(function(){s.onCursorChange()})},this.$pos=i;var a=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=a.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){o.implement(this,r),this.setup=function(){var e=this,t=this.doc,i=this.session;this.selectionBefore=i.selection.toJSON(),i.selection.inMultiSelectMode&&i.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var r=this.pos;r.$insertRight=!0,r.detach(),r.markerId=i.addMarker(new n(r.row,r.column,r.row,r.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(i){var n=t.createAnchor(i.row,i.column);n.$insertRight=!0,n.detach(),e.others.push(n)}),i.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(i){i.markerId=e.addMarker(new n(i.row,i.column,i.row,i.column+t.length),t.othersClass,null,!1)})}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,o=t.start.column-this.pos.column;if(this.updateAnchors(e),r&&(this.length+=i),r&&!this.session.$fromUndo)if("insert"===e.action)for(var s=this.others.length-1;s>=0;s--){var a=this.others[s],l={row:a.row,column:a.column+o};this.doc.insertMergedLines(l,e.lines)}else if("remove"===e.action)for(var s=this.others.length-1;s>=0;s--){var a=this.others[s],l={row:a.row,column:a.column+o};this.doc.remove(new n(l.row,l.column,l.row,l.column-i))}this.$updating=!1,this.updateMarkers()}},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(!this.$updating){var e=this,t=this.session,i=function(i,r){t.removeMarker(i.markerId),i.markerId=t.addMarker(new n(i.row,i.column,i.row,i.column+e.length),r,null,!1)};i(this.pos,this.mainClass);for(var r=this.others.length;r--;)i(this.others[r],this.othersClass)}},this.onCursorChange=function(e){if(!this.$updating&&this.session){var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))}},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(-1!==this.$undoStackDepth){for(var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth,i=0;t>i;i++)e.undo(!0);this.selectionBefore&&this.session.selection.fromJSON(this.selectionBefore)}}}).call(s.prototype),t.PlaceHolder=s}),ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,i){function n(e,t){return e.row==t.row&&e.column==t.column}function r(e){var t=e.domEvent,i=t.altKey,r=t.shiftKey,a=t.ctrlKey,l=e.getAccelKey(),c=e.getButton();if(a&&s.isMac&&(c=t.button),e.editor.inMultiSelectMode&&2==c)return void e.editor.textInput.onContextMenu(e.domEvent);if(!a&&!i&&!l)return void(0===c&&e.editor.inMultiSelectMode&&e.editor.exitMultiSelectMode());if(0===c){var h,d=e.editor,u=d.selection,f=d.inMultiSelectMode,p=e.getDocumentPosition(),g=u.getCursor(),m=e.inSelection()||u.isEmpty()&&n(p,g),v=e.x,w=e.y,A=function(e){v=e.clientX,w=e.clientY},y=d.session,C=d.renderer.pixelToScreenCoordinates(v,w),E=C;if(d.$mouseHandler.$enableJumpToDef)a&&i||l&&i?h=r?"block":"add":i&&d.$blockSelectEnabled&&(h="block");else if(l&&!i){if(h="add",!f&&r)return}else i&&d.$blockSelectEnabled&&(h="block");if(h&&s.isMac&&t.ctrlKey&&d.$mouseHandler.cancelContextMenu(),"add"==h){if(!f&&m)return;if(!f){var b=u.toOrientedRange();d.addSelectionMarker(b)}var F=u.rangeList.rangeAtPoint(p);d.$blockScrolling++,d.inVirtualSelectionMode=!0,r&&(F=null,b=u.ranges[0]||b,d.removeSelectionMarker(b)),d.once("mouseup",function(){var e=u.toOrientedRange();F&&e.isEmpty()&&n(F.cursor,e.cursor)?u.substractPoint(e.cursor):(r?u.substractPoint(b.cursor):b&&(d.removeSelectionMarker(b),u.addRange(b)),u.addRange(e)),d.$blockScrolling--,d.inVirtualSelectionMode=!1})}else if("block"==h){e.stop(),d.inVirtualSelectionMode=!0;var x,S=[],$=function(){var e=d.renderer.pixelToScreenCoordinates(v,w),t=y.screenToDocumentPosition(e.row,e.column);n(E,e)&&n(t,u.lead)||(E=e,d.$blockScrolling++,d.selection.moveToPosition(t),d.renderer.scrollCursorIntoView(),d.removeSelectionMarkers(S),S=u.rectangularRangeBlock(E,C),d.$mouseHandler.$clickSelection&&1==S.length&&S[0].isEmpty()&&(S[0]=d.$mouseHandler.$clickSelection.clone()),S.forEach(d.addSelectionMarker,d),d.updateSelectionMarkers(),d.$blockScrolling--)};d.$blockScrolling++,f&&!l?u.toSingleRange():!f&&l&&(x=u.toOrientedRange(),d.addSelectionMarker(x)),r?C=y.documentToScreenPosition(u.lead):u.moveToPosition(p),d.$blockScrolling--,E={row:-1,column:-1};var D=function(e){clearInterval(B),d.removeSelectionMarkers(S),S.length||(S=[u.toOrientedRange()]),d.$blockScrolling++,x&&(d.removeSelectionMarker(x),u.toSingleRange(x));for(var t=0;t1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)}},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);return t?(this.$onRemoveRange(t),t[0]):void 0},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var i=e.length;i--;){var n=this.ranges.indexOf(e[i]);this.ranges.splice(n,1)}this._signal("removeRange",{ranges:e}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new a,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],i=l.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(i,t.cursor==t.start)}else{var i=this.getRange(),n=this.isBackwards(),r=i.start.row,o=i.end.row;if(r==o){if(n)var s=i.end,a=i.start;else var s=i.start,a=i.end;return this.addRange(l.fromPoints(a,a)),void this.addRange(l.fromPoints(s,s))}var c=[],h=this.getLineRange(r,!0);h.start.column=i.start.column,c.push(h);for(var d=r+1;o>d;d++)c.push(this.getLineRange(d,!0));h=this.getLineRange(o,!0),h.end.column=i.end.column,c.push(h),c.forEach(this.addRange,this)}},this.toggleBlockSelection=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],i=l.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(i,t.cursor==t.start)}else{var n=this.session.documentToScreenPosition(this.selectionLead),r=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(n,r);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,i){var n=[],o=e.columns&&(s=0),0>h&&(h=0),h==d&&(i=!0);for(var u=h;d>=u;u++){var f=l.fromPoints(this.session.screenToDocumentPosition(u,s),this.session.screenToDocumentPosition(u,a));if(f.isEmpty()){if(p&&r(f.end,p))break;var p=f.end}f.cursor=o?f.start:f.end,n.push(f)}if(c&&n.reverse(),!i){for(var g=n.length-1;n[g].isEmpty()&&g>0;)g--;if(g>0)for(var m=0;n[m].isEmpty();)m++;for(var v=g;v>=m;v--)n[v].isEmpty()&&n.splice(v,1)}return n}}.call(c.prototype);var v=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(e.marker){this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);-1!=t&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(e){for(var t=this.session.$selectionMarkers,i=e.length;i--;){var n=e[i];if(n.marker){this.session.removeMarker(n.marker);var r=t.indexOf(n);-1!=r&&t.splice(r,1)}}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(e){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(e){var t=e.command,i=e.editor;if(i.multiSelect){if(t.multiSelectAction)"forEach"==t.multiSelectAction?n=i.forEachSelection(t,e.args):"forEachLine"==t.multiSelectAction?n=i.forEachSelection(t,e.args,!0):"single"==t.multiSelectAction?(i.exitMultiSelectMode(),n=t.exec(i,e.args||{})):n=t.multiSelectAction(i,e.args||{});else{var n=t.exec(i,e.args||{});i.multiSelect.addRange(i.multiSelect.toOrientedRange()),i.multiSelect.mergeOverlappingRanges()}return n}},this.forEachSelection=function(e,t,i){if(!this.inVirtualSelectionMode){var n,r=i&&i.keepOrder,o=1==i||i&&i.$byLines,s=this.session,a=this.selection,l=a.rangeList,h=(r?a:l).ranges;if(!h.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var d=a._eventRegistry;a._eventRegistry={};var u=new c(s);this.inVirtualSelectionMode=!0;for(var f=h.length;f--;){if(o)for(;f>0&&h[f].start.row==h[f-1].end.row;)f--;u.fromOrientedRange(h[f]),u.index=f,this.selection=s.selection=u;var p=e.exec?e.exec(this,t||{}):e(this,t||{});n||void 0===p||(n=p),u.toOrientedRange(h[f])}u.detach(),this.selection=s.selection=a,this.inVirtualSelectionMode=!1,a._eventRegistry=d,a.mergeOverlappingRanges();var g=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),g&&g.from==g.to&&this.renderer.animateScrolling(g.from),n}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var t=this.multiSelect.rangeList.ranges,i=[],n=0;ne?a.unshift(a.pop()):a.push(a.shift());for(var r=n.length;r--;){var o=n[r],s=o.clone();t.replace(o,a[r]),o.start.row=s.start.row,o.start.column=s.start.column}},this.selectMore=function(e,t,i){var r=this.session,o=r.multiSelect,s=o.toOrientedRange();if(!s.isEmpty()||(s=r.getWordRange(s.start.row,s.start.column),s.cursor=-1==e?s.start:s.end,this.multiSelect.addRange(s),!i)){var a=r.getTextRange(s),l=n(r,a,e);l&&(l.cursor=-1==e?l.start:l.end,this.$blockScrolling+=1,this.session.unfold(l),this.multiSelect.addRange(l),this.$blockScrolling-=1,this.renderer.scrollCursorIntoView(null,.5)),t&&this.multiSelect.substractPoint(s.cursor)}},this.alignCursors=function(){var e=this.session,t=e.multiSelect,i=t.ranges,n=-1,r=i.filter(function(e){return e.cursor.row==n?!0:void(n=e.cursor.row)});if(i.length&&r.length!=i.length-1){r.forEach(function(e){t.substractPoint(e.cursor)});var o=0,s=1/0,a=i.map(function(t){var i=t.cursor,n=e.getLine(i.row),r=n.substr(i.column).search(/\S/g);return-1==r&&(r=0),i.column>o&&(o=i.column),s>r&&(s=r),r});i.forEach(function(t,i){var n=t.cursor,r=o-n.column,c=a[i]-s;r>c?e.insert(n,u.stringRepeat(" ",r-c)):e.remove(new l(n.row,n.column,n.row,n.column-r+c)),t.start.column=t.end.column=o,t.start.row=t.end.row=n.row,t.cursor=t.end}),t.fromOrientedRange(i[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var c=this.selection.getRange(),h=c.start.row,d=c.end.row,f=h==d;if(f){var p,g=this.session.getLength();do p=this.session.getLine(d);while(/[=:]/.test(p)&&++d0);0>h&&(h=0),d>=g&&(d=g-1)}var m=this.session.removeFullLines(h,d);m=this.$reAlignText(m,f),this.session.insert({row:h,column:0},m.join("\n")+"\n"),f||(c.start.column=0,c.end.column=m[m.length-1].length),this.selection.setRange(c)}},this.$reAlignText=function(e,t){function i(e){return u.stringRepeat(" ",e)}function n(e){return e[2]?i(s)+e[2]+i(a-e[2].length+l)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function r(e){return e[2]?i(s+a-e[2].length)+e[2]+i(l," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function o(e){return e[2]?i(s)+e[2]+i(l)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var s,a,l,c=!0,h=!0;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?null==s?(s=t[1].length,a=t[2].length,l=t[3].length,t):(s+a+l!=t[1].length+t[2].length+t[3].length&&(h=!1),s!=t[1].length&&(c=!1),s>t[1].length&&(s=t[1].length),at[3].length&&(l=t[3].length),t):[e]}).map(t?n:c?h?r:n:o)}}).call(v.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var i=e.oldSession;i&&(i.multiSelect.off("addRange",this.$onAddRange),i.multiSelect.off("removeRange",this.$onRemoveRange),i.multiSelect.off("multiSelect",this.$onMultiSelect),i.multiSelect.off("singleSelect",this.$onSingleSelect),i.multiSelect.lead.off("change",this.$checkMultiselectChange),i.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=o,e("./config").defineOptions(v.prototype,"editor",{enableMultiselect:{set:function(e){o(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",h)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",h))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("../../range").Range,r=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,i){var n=e.getLine(i);return this.foldingStartMarker.test(n)?"start":"markbeginend"==t&&this.foldingStopMarker&&this.foldingStopMarker.test(n)?"end":""},this.getFoldWidgetRange=function(e,t,i){return null},this.indentationBlock=function(e,t,i){var r=/\S/,o=e.getLine(t),s=o.search(r);if(-1!=s){for(var a=i||o.length,l=e.getLength(),c=t,h=t;++t=d)break;h=t}}if(h>c){var u=e.getLine(h).length;return new n(c,a,h,u)}}},this.openingBracketBlock=function(e,t,i,r,o){var s={row:i,column:r+1},a=e.$findClosingBracket(t,s,o);if(a){var l=e.foldWidgets[a.row];return null==l&&(l=e.getFoldWidget(a.row)),"start"==l&&a.row>s.row&&(a.row--,a.column=e.getLine(a.row).length),n.fromPoints(s,a)}},this.closingBracketBlock=function(e,t,i,r,o){var s={row:i,column:r},a=e.$findOpeningBracket(t,s);return a?(a.column++,s.column--,n.fromPoints(a,s)):void 0}}).call(r.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter { background: #f0f0f0; color: #333; } .ace-tm .ace_print-margin { width: 1px; background: #e8e8e8; } .ace-tm .ace_fold { background-color: #6B72E6; } .ace-tm { background-color: #FFFFFF; color: black; } .ace-tm .ace_cursor { color: black; } .ace-tm .ace_invisible { color: rgb(191, 191, 191); } .ace-tm .ace_storage, .ace-tm .ace_keyword { color: blue; } .ace-tm .ace_constant { color: rgb(197, 6, 11); } .ace-tm .ace_constant.ace_buildin { color: rgb(88, 72, 246); } .ace-tm .ace_constant.ace_language { color: rgb(88, 92, 246); } .ace-tm .ace_constant.ace_library { color: rgb(6, 150, 14); } .ace-tm .ace_invalid { background-color: rgba(255, 0, 0, 0.1); color: red; } .ace-tm .ace_support.ace_function { color: rgb(60, 76, 114); } .ace-tm .ace_support.ace_constant { color: rgb(6, 150, 14); } .ace-tm .ace_support.ace_type, .ace-tm .ace_support.ace_class { color: rgb(109, 121, 222); } .ace-tm .ace_keyword.ace_operator { color: rgb(104, 118, 135); } .ace-tm .ace_string { color: rgb(3, 106, 7); } .ace-tm .ace_comment { color: rgb(76, 136, 107); } .ace-tm .ace_comment.ace_doc { color: rgb(0, 102, 255); } .ace-tm .ace_comment.ace_doc.ace_tag { color: rgb(128, 159, 191); } .ace-tm .ace_constant.ace_numeric { color: rgb(0, 0, 205); } .ace-tm .ace_variable { color: rgb(49, 132, 149); } .ace-tm .ace_xml-pe { color: rgb(104, 104, 91); } .ace-tm .ace_entity.ace_name.ace_function { color: #0000A2; } .ace-tm .ace_heading { color: rgb(12, 7, 255); } .ace-tm .ace_list { color:rgb(185, 6, 144); } .ace-tm .ace_meta.ace_tag { color:rgb(0, 22, 142); } .ace-tm .ace_string.ace_regex { color: rgb(255, 0, 0) } .ace-tm .ace_marker-layer .ace_selection { background: rgb(181, 213, 255); } .ace-tm.ace_multiselect .ace_selection.ace_start { box-shadow: 0 0 3px 0px white; } .ace-tm .ace_marker-layer .ace_step { background: rgb(252, 255, 0); } .ace-tm .ace_marker-layer .ace_stack { background: rgb(164, 229, 101); } .ace-tm .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid rgb(192, 192, 192); } .ace-tm .ace_marker-layer .ace_active-line { background: rgba(0, 0, 0, 0.07); } .ace-tm .ace_gutter-active-line { background-color : #dcdcdc; } .ace-tm .ace_marker-layer .ace_selected-word { background: rgb(250, 250, 255); border: 1px solid rgb(200, 200, 250); } .ace-tm .ace_indent-guide { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y; } ';var n=e("../lib/dom");n.importCssString(t.cssText,t.cssClass)}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,i){"use strict";function n(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}var r=(e("./lib/oop"),e("./lib/dom"));e("./range").Range;(function(){this.getRowLength=function(e){var t;return t=this.lineWidgets?this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:0,this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&!t.hidden&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach(),this.editor!=e&&(this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets)))},this.detach=function(e){var t=this.editor;if(t){this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var i=this.session.lineWidgets;i&&i.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})}},this.updateOnFold=function(e,t){var i=t.lineWidgets;if(i&&e.action){for(var n=e.data,r=n.start.row,o=n.end.row,s="add"==e.action,a=r+1;o>a;a++)i[a]&&(i[a].hidden=s);i[o]&&(s?i[r]?i[o].hidden=s:i[r]=i[o]:(i[r]==i[o]&&(i[r]=void 0),i[o].hidden=s))}},this.updateOnChange=function(e){var t=this.session.lineWidgets;if(t){var i=e.start.row,n=e.end.row-i;if(0===n);else if("remove"==e.action){var r=t.splice(i+1,n);r.forEach(function(e){e&&this.removeLineWidget(e)},this),this.$updateRows()}else{var o=new Array(n);o.unshift(i,0),t.splice.apply(t,o),this.$updateRows()}}},this.$updateRows=function(){var e=this.session.lineWidgets;if(e){var t=!0;e.forEach(function(e,i){if(e)for(t=!1,e.row=i;e.$oldWidget;)e.$oldWidget.row=i,e=e.$oldWidget}),t&&(this.session.lineWidgets=null)}},this.addLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength()));var t=this.session.lineWidgets[e.row];t&&(e.$oldWidget=t,t.el&&t.el.parentNode&&(t.el.parentNode.removeChild(t.el),t._inDocument=!1)),this.session.lineWidgets[e.row]=e,e.session=this.session;var i=this.editor.renderer;e.html&&!e.el&&(e.el=r.createElement("div"),e.el.innerHTML=e.html),e.el&&(r.addCssClass(e.el,"ace_lineWidgetContainer"),e.el.style.position="absolute",e.el.style.zIndex=5,i.container.appendChild(e.el),e._inDocument=!0),e.coverGutter||(e.el.style.zIndex=3),e.pixelHeight||(e.pixelHeight=e.el.offsetHeight),null==e.rowCount&&(e.rowCount=e.pixelHeight/i.layerConfig.lineHeight);var n=this.session.getFoldAt(e.row,0);if(e.$fold=n,n){var o=this.session.lineWidgets;e.row!=n.end.row||o[n.start.row]?e.hidden=!0:o[n.start.row]=e}return this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,i),this.onWidgetChanged(e),e},this.removeLineWidget=function(e){if(e._inDocument=!1,e.session=null,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el),e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(t){}if(this.session.lineWidgets){var i=this.session.lineWidgets[e.row];if(i==e)this.session.lineWidgets[e.row]=e.$oldWidget,e.$oldWidget&&this.onWidgetChanged(e.$oldWidget);else for(;i;){if(i.$oldWidget==e){i.$oldWidget=e.$oldWidget;break}i=i.$oldWidget}}this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows()},this.getWidgetsAtRow=function(e){for(var t=this.session.lineWidgets,i=t&&t[e],n=[];i;)n.push(i),i=i.$oldWidget;return n},this.onWidgetChanged=function(e){this.session._changedWidgets.push(e),this.editor&&this.editor.renderer.updateFull()},this.measureWidgets=function(e,t){var i=this.session._changedWidgets,n=t.layerConfig;if(i&&i.length){for(var r=1/0,o=0;oa&&(a=0)),s.rowCount!=a&&(s.rowCount=a,s.row0&&!n[r];)r--;this.firstRow=i.firstRow,this.lastRow=i.lastRow,t.$cursorLayer.config=i;for(var s=r;o>=s;s++){var a=n[s];if(a&&a.el)if(a.hidden)a.el.style.top=-100-(a.pixelHeight||0)+"px";else{a._inDocument||(a._inDocument=!0,t.container.appendChild(a.el));var l=t.$cursorLayer.getPixelPosition({row:s,column:0},!0).top;a.coverLine||(l+=i.lineHeight*this.session.getRowLineCount(a.row)),a.el.style.top=l-i.offset+"px";var c=a.coverGutter?0:t.gutterWidth;a.fixedWidth||(c-=t.scrollLeft),a.el.style.left=c+"px",a.fullWidth&&a.screenWidth&&(a.el.style.minWidth=i.width+2*i.padding+"px"),a.fixedWidth?a.el.style.right=t.scrollBar.getWidth()+"px":a.el.style.right=""}}}}}).call(n.prototype),t.LineWidgets=n}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,i){"use strict";function n(e,t,i){for(var n=0,r=e.length-1;r>=n;){var o=n+r>>1,s=i(t,e[o]);if(s>0)n=o+1;else{if(!(0>s))return o;r=o-1}}return-(n+1)}function r(e,t,i){var r=e.getAnnotations().sort(a.comparePoints);if(r.length){var o=n(r,{row:t,column:-1},a.comparePoints);0>o&&(o=-o-1),o>=r.length?o=i>0?0:r.length-1:0===o&&0>i&&(o=r.length-1);var s=r[o];if(s&&i){if(s.row===t){do s=r[o+=i];while(s&&s.row===t);if(!s)return r.slice()}var l=[];t=s.row;do l[0>i?"unshift":"push"](s),s=r[o+=i];while(s&&s.row==t);return l.length&&l}}}var o=e("../line_widgets").LineWidgets,s=e("../lib/dom"),a=e("../range").Range; +t.showErrorMarker=function(e,t){var i=e.session;i.widgetManager||(i.widgetManager=new o(i),i.widgetManager.attach(e));var n=e.getCursorPosition(),a=n.row,l=i.widgetManager.getWidgetsAtRow(a).filter(function(e){return"errorMarker"==e.type})[0];l?l.destroy():a-=t;var c,h=r(i,a,t);if(h){var d=h[0];n.column=(d.pos&&"number"!=typeof d.column?d.pos.sc:d.column)||0,n.row=d.row,c=e.renderer.$gutterLayer.$annotations[n.row]}else{if(l)return;c={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(n.row),e.selection.moveToPosition(n);var u={row:n.row,fixedWidth:!0,coverGutter:!0,el:s.createElement("div"),type:"errorMarker"},f=u.el.appendChild(s.createElement("div")),p=u.el.appendChild(s.createElement("div"));p.className="error_widget_arrow "+c.className;var g=e.renderer.$cursorLayer.getPixelPosition(n).left;p.style.left=g+e.renderer.gutterWidth-5+"px",u.el.className="error_widget_wrapper",f.className="error_widget "+c.className,f.innerHTML=c.text.join("
"),f.appendChild(s.createElement("div"));var m=function(e,t,i){return 0!==t||"esc"!==i&&"return"!==i?void 0:(u.destroy(),{command:"null"})};u.destroy=function(){e.$mouseHandler.isMousePressed||(e.keyBinding.removeKeyboardHandler(m),i.widgetManager.removeLineWidget(u),e.off("changeSelection",u.destroy),e.off("changeSession",u.destroy),e.off("mouseup",u.destroy),e.off("change",u.destroy))},e.keyBinding.addKeyboardHandler(m),e.on("changeSelection",u.destroy),e.on("changeSession",u.destroy),e.on("mouseup",u.destroy),e.on("change",u.destroy),e.session.widgetManager.addLineWidget(u),u.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:u.el.offsetHeight})},s.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; } ","")}),ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,i){"use strict";e("./lib/fixoldbrowsers");var n=e("./lib/dom"),r=e("./lib/event"),o=e("./editor").Editor,s=e("./edit_session").EditSession,a=e("./undomanager").UndoManager,l=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.acequire=e,t.edit=function(e){if("string"==typeof e){var i=e;if(e=document.getElementById(i),!e)throw new Error("ace.edit can't find div #"+i)}if(e&&e.env&&e.env.editor instanceof o)return e.env.editor;var s="";if(e&&/input|textarea/i.test(e.tagName)){var a=e;s=a.value,e=n.createElement("pre"),a.parentNode.replaceChild(e,a)}else e&&(s=n.getInnerText(e),e.innerHTML="");var c=t.createEditSession(s),h=new o(new l(e));h.setSession(c);var d={document:c,editor:h,onResize:h.resize.bind(h,null)};return a&&(d.textarea=a),r.addListener(window,"resize",d.onResize),h.on("destroy",function(){r.removeListener(window,"resize",d.onResize),d.editor.container.env=null}),h.container.env=h.env=d,h},t.createEditSession=function(e,t){var i=new s(e,t);return i.setUndoManager(new a),i},t.EditSession=s,t.UndoManager=a,t.version="1.2.2"}),function(){ace.acequire(["ace/ace"],function(e){e&&e.config.init(!0),window.ace||(window.ace=e);for(var t in e)e.hasOwnProperty(t)&&(window.ace[t]=e[t])})}(),e.exports=window.ace.acequire("ace/ace")},function(e,t,i){ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,i){"use strict";var n=e("../lib/oop"),r=e("./text_highlight_rules").TextHighlightRules,o=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"invalid.illegal",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"invalid.illegal",regex:"\\/\\/.*$"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"},{token:"string",regex:"",next:"start"}]}};n.inherits(o,r),t.JsonHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("../range").Range,r=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var i=e.getLine(t),r=i.match(/^(\s*\})/);if(!r)return 0;var o=r[1].length,s=e.findMatchingBracket({row:t,column:o});if(!s||s.row==t)return 0;var a=this.$getIndent(e.getLine(s.row));e.replace(new n(t,0,t,o-1),a)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(r.prototype),t.MatchingBraceOutdent=r}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,i){"use strict";var n,r=e("../../lib/oop"),o=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,a=e("../../lib/lang"),l=["text","paren.rparen","punctuation.operator"],c=["text","paren.rparen","punctuation.operator","comment"],h={},d=function(e){var t=-1;return e.multiSelect&&(t=e.selection.index,h.rangeCount!=e.multiSelect.rangeCount&&(h={rangeCount:e.multiSelect.rangeCount})),h[t]?n=h[t]:void(n=h[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""})},u=function(e,t,i,n){var r=e.end.row-e.start.row;return{text:i+t+n,selection:[0,e.start.column+1,r,e.end.column+(r?0:1)]}},f=function(){this.add("braces","insertion",function(e,t,i,r,o){var s=i.getCursorPosition(),l=r.doc.getLine(s.row);if("{"==o){d(i);var c=i.getSelectionRange(),h=r.doc.getTextRange(c);if(""!==h&&"{"!==h&&i.getWrapBehavioursEnabled())return u(c,h,"{","}");if(f.isSaneInsertion(i,r))return/[\]\}\)]/.test(l[s.column])||i.inMultiSelectMode?(f.recordAutoInsert(i,r,"}"),{text:"{}",selection:[1,1]}):(f.recordMaybeInsert(i,r,"{"),{text:"{",selection:[1,1]})}else if("}"==o){d(i);var p=l.substring(s.column,s.column+1);if("}"==p){var g=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(null!==g&&f.isAutoInsertedClosing(s,l,o))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if("\n"==o||"\r\n"==o){d(i);var m="";f.isMaybeInsertedClosing(s,l)&&(m=a.stringRepeat("}",n.maybeInsertedBrackets),f.clearMaybeInsertedClosing());var p=l.substring(s.column,s.column+1);if("}"===p){var v=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!v)return null;var w=this.$getIndent(r.getLine(v.row))}else{if(!m)return void f.clearMaybeInsertedClosing();var w=this.$getIndent(l)}var A=w+r.getTabString();return{text:"\n"+A+"\n"+w+m,selection:[1,A.length,1,A.length]}}f.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,i,r,o){var s=r.doc.getTextRange(o);if(!o.isMultiLine()&&"{"==s){d(i);var a=r.doc.getLine(o.start.row),l=a.substring(o.end.column,o.end.column+1);if("}"==l)return o.end.column++,o;n.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,i,n,r){if("("==r){d(i);var o=i.getSelectionRange(),s=n.doc.getTextRange(o);if(""!==s&&i.getWrapBehavioursEnabled())return u(o,s,"(",")");if(f.isSaneInsertion(i,n))return f.recordAutoInsert(i,n,")"),{text:"()",selection:[1,1]}}else if(")"==r){d(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if(")"==c){var h=n.$findOpeningBracket(")",{column:a.column+1,row:a.row});if(null!==h&&f.isAutoInsertedClosing(a,l,r))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,i,n,r){var o=n.doc.getTextRange(r);if(!r.isMultiLine()&&"("==o){d(i);var s=n.doc.getLine(r.start.row),a=s.substring(r.start.column+1,r.start.column+2);if(")"==a)return r.end.column++,r}}),this.add("brackets","insertion",function(e,t,i,n,r){if("["==r){d(i);var o=i.getSelectionRange(),s=n.doc.getTextRange(o);if(""!==s&&i.getWrapBehavioursEnabled())return u(o,s,"[","]");if(f.isSaneInsertion(i,n))return f.recordAutoInsert(i,n,"]"),{text:"[]",selection:[1,1]}}else if("]"==r){d(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row),c=l.substring(a.column,a.column+1);if("]"==c){var h=n.$findOpeningBracket("]",{column:a.column+1,row:a.row});if(null!==h&&f.isAutoInsertedClosing(a,l,r))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,i,n,r){var o=n.doc.getTextRange(r);if(!r.isMultiLine()&&"["==o){d(i);var s=n.doc.getLine(r.start.row),a=s.substring(r.start.column+1,r.start.column+2);if("]"==a)return r.end.column++,r}}),this.add("string_dquotes","insertion",function(e,t,i,n,r){if('"'==r||"'"==r){d(i);var o=r,s=i.getSelectionRange(),a=n.doc.getTextRange(s);if(""!==a&&"'"!==a&&'"'!=a&&i.getWrapBehavioursEnabled())return u(s,a,o,o);if(!a){var l=i.getCursorPosition(),c=n.doc.getLine(l.row),h=c.substring(l.column-1,l.column),f=c.substring(l.column,l.column+1),p=n.getTokenAt(l.row,l.column),g=n.getTokenAt(l.row,l.column+1);if("\\"==h&&p&&/escape/.test(p.type))return null;var m,v=p&&/string|escape/.test(p.type),w=!g||/string|escape/.test(g.type);if(f==o)m=v!==w;else{if(v&&!w)return null;if(v&&w)return null;var A=n.$mode.tokenRe;A.lastIndex=0;var y=A.test(h);A.lastIndex=0;var C=A.test(h);if(y||C)return null;if(f&&!/[\s;,.})\]\\]/.test(f))return null;m=!0}return{text:m?o+o:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,i,n,r){var o=n.doc.getTextRange(r);if(!r.isMultiLine()&&('"'==o||"'"==o)){d(i);var s=n.doc.getLine(r.start.row),a=s.substring(r.start.column+1,r.start.column+2);if(a==o)return r.end.column++,r}})};f.isSaneInsertion=function(e,t){var i=e.getCursorPosition(),n=new s(t,i.row,i.column);if(!this.$matchTokenType(n.getCurrentToken()||"text",l)){var r=new s(t,i.row,i.column+1);if(!this.$matchTokenType(r.getCurrentToken()||"text",l))return!1}return n.stepForward(),n.getCurrentTokenRow()!==i.row||this.$matchTokenType(n.getCurrentToken()||"text",c)},f.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},f.recordAutoInsert=function(e,t,i){var r=e.getCursorPosition(),o=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,o,n.autoInsertedLineEnd[0])||(n.autoInsertedBrackets=0),n.autoInsertedRow=r.row,n.autoInsertedLineEnd=i+o.substr(r.column),n.autoInsertedBrackets++},f.recordMaybeInsert=function(e,t,i){var r=e.getCursorPosition(),o=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,o)||(n.maybeInsertedBrackets=0),n.maybeInsertedRow=r.row,n.maybeInsertedLineStart=o.substr(0,r.column)+i,n.maybeInsertedLineEnd=o.substr(r.column),n.maybeInsertedBrackets++},f.isAutoInsertedClosing=function(e,t,i){return n.autoInsertedBrackets>0&&e.row===n.autoInsertedRow&&i===n.autoInsertedLineEnd[0]&&t.substr(e.column)===n.autoInsertedLineEnd},f.isMaybeInsertedClosing=function(e,t){return n.maybeInsertedBrackets>0&&e.row===n.maybeInsertedRow&&t.substr(e.column)===n.maybeInsertedLineEnd&&t.substr(0,e.column)==n.maybeInsertedLineStart},f.popAutoInsertedClosing=function(){n.autoInsertedLineEnd=n.autoInsertedLineEnd.substr(1),n.autoInsertedBrackets--},f.clearMaybeInsertedClosing=function(){n&&(n.maybeInsertedBrackets=0,n.maybeInsertedRow=-1)},r.inherits(f,o),t.CstyleBehaviour=f}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,i){"use strict";var n=e("../../lib/oop"),r=e("../../range").Range,o=e("./fold_mode").FoldMode,s=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};n.inherits(s,o),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,i){var n=e.getLine(i);if(this.singleLineBlockCommentRe.test(n)&&!this.startRegionRe.test(n)&&!this.tripleStarBlockCommentRe.test(n))return"";var r=this._getFoldWidgetBase(e,t,i);return!r&&this.startRegionRe.test(n)?"start":r},this.getFoldWidgetRange=function(e,t,i,n){var r=e.getLine(i);if(this.startRegionRe.test(r))return this.getCommentRegionBlock(e,r,i);var o=r.match(this.foldingStartMarker);if(o){var s=o.index;if(o[1])return this.openingBracketBlock(e,o[1],i,s);var a=e.getCommentFoldRange(i,s+o[0].length,1);return a&&!a.isMultiLine()&&(n?a=this.getSectionRange(e,i):"all"!=t&&(a=null)),a}if("markbegin"!==t){var o=r.match(this.foldingStopMarker);if(o){var s=o.index+o[0].length;return o[1]?this.closingBracketBlock(e,o[1],i,s):e.getCommentFoldRange(i,s,-1)}}},this.getSectionRange=function(e,t){var i=e.getLine(t),n=i.search(/\S/),o=t,s=i.length;t+=1;for(var a=t,l=e.getLength();++tc)break;var h=this.getFoldWidgetRange(e,"all",t);if(h){if(h.start.row<=o)break;if(h.isMultiLine())t=h.end.row;else if(n==c)break}a=t}}return new r(o,s,a,e.getLine(a).length)},this.getCommentRegionBlock=function(e,t,i){for(var n=t.search(/\s*$/),o=e.getLength(),s=i,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++is?new r(s,n,h,t.length):void 0}}.call(s.prototype)}),ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),o=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,a=e("./matching_brace_outdent").MatchingBraceOutdent,l=e("./behaviour/cstyle").CstyleBehaviour,c=e("./folding/cstyle").FoldMode,h=e("../worker/worker_client").WorkerClient,d=function(){this.HighlightRules=s,this.$outdent=new a,this.$behaviour=new l,this.foldingRules=new c};r.inherits(d,o),function(){this.getNextLineIndent=function(e,t,i){var n=this.$getIndent(t);if("start"==e){var r=t.match(/^.*[\{\(\[]\s*$/);r&&(n+=i)}return n},this.checkOutdent=function(e,t,i){return this.$outdent.checkOutdent(t,i)},this.autoOutdent=function(e,t,i){this.$outdent.autoOutdent(t,i)},this.createWorker=function(e){var t=new h(["ace"],i(38),"JsonWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/json"}.call(d.prototype),t.Mode=d})},function(e,t,i){ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"],function(e,t,i){"use strict";var n=e("../lib/dom"),r=e("../lib/lang"),o=e("../lib/event"),s=" .ace_search { background-color: #ddd; border: 1px solid #cbcbcb; border-top: 0 none; max-width: 325px; overflow: hidden; margin: 0; padding: 4px; padding-right: 6px; padding-bottom: 0; position: absolute; top: 0px; z-index: 99; white-space: normal; } .ace_search.left { border-left: 0 none; border-radius: 0px 0px 5px 0px; left: 0; } .ace_search.right { border-radius: 0px 0px 0px 5px; border-right: 0 none; right: 0; } .ace_search_form, .ace_replace_form { border-radius: 3px; border: 1px solid #cbcbcb; float: left; margin-bottom: 4px; overflow: hidden; } .ace_search_form.ace_nomatch { outline: 1px solid red; } .ace_search_field { background-color: white; border-right: 1px solid #cbcbcb; border: 0 none; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; float: left; height: 22px; outline: 0; padding: 0 7px; width: 214px; margin: 0; } .ace_searchbtn, .ace_replacebtn { background: #fff; border: 0 none; border-left: 1px solid #dcdcdc; cursor: pointer; float: left; height: 22px; margin: 0; position: relative; } .ace_searchbtn:last-child, .ace_replacebtn:last-child { border-top-right-radius: 3px; border-bottom-right-radius: 3px; } .ace_searchbtn:disabled { background: none; cursor: default; } .ace_searchbtn { background-position: 50% 50%; background-repeat: no-repeat; width: 27px; } .ace_searchbtn.prev { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); } .ace_searchbtn.next { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); } .ace_searchbtn_close { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0; border-radius: 50%; border: 0 none; color: #656565; cursor: pointer; float: right; font: 16px/16px Arial; height: 14px; margin: 5px 1px 9px 5px; padding: 0; text-align: center; width: 14px; } .ace_searchbtn_close:hover { background-color: #656565; background-position: 50% 100%; color: white; } .ace_replacebtn.prev { width: 54px } .ace_replacebtn.next { width: 27px } .ace_button { margin-left: 2px; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -o-user-select: none; -ms-user-select: none; user-select: none; overflow: hidden; opacity: 0.7; border: 1px solid rgba(100,100,100,0.23); padding: 1px; -moz-box-sizing: border-box; box-sizing: border-box; color: black; } .ace_button:hover { background-color: #eee; opacity:1; } .ace_button:active { background-color: #ddd; } .ace_button.checked { border-color: #3399ff; opacity:1; } .ace_search_options{ margin-bottom: 3px; text-align: right; -webkit-user-select: none; -moz-user-select: none; -o-user-select: none; -ms-user-select: none; user-select: none; }",a=e("../keyboard/hash_handler").HashHandler,l=e("../lib/keys");n.importCssString(s,"ace_searchbox");var c=''.replace(/>\s+/g,">"),h=function(e,t,i){var r=n.createElement("div");r.innerHTML=c,this.element=r.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;o.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),o.stopPropagation(e)}),o.addListener(e,"click",function(e){var i=e.target||e.srcElement,n=i.getAttribute("action");n&&t[n]?t[n]():t.$searchBarKb.commands[n]&&t.$searchBarKb.commands[n].exec(t),o.stopPropagation(e)}),o.addCommandKeyListener(e,function(e,i,n){var r=l.keyCodeToString(n),s=t.$searchBarKb.findKeyCommand(i,r);s&&s.exec&&(s.exec(t),o.stopEvent(e))}),this.$onChange=r.delayedCall(function(){t.find(!1,!1)}),o.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),o.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),o.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new a([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new a,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e.searchInput.focus()},"Ctrl-H|Command-Option-F":function(e){e.replaceBox.style.display="",e.replaceInput.focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){n.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),n.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),n.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t,i){var r=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked,preventScroll:i}),o=!r&&this.searchInput.value;n.setCssClass(this.searchBox,"ace_nomatch",o),this.editor._emit("findSearchBox",{match:!o}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var e=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),t=!e&&this.searchInput.value;n.setCssClass(this.searchBox,"ace_nomatch",t),this.editor._emit("findSearchBox",{match:!t}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.find(!1,!1,!0),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(h.prototype),t.SearchBox=h,t.Search=function(e,t){var i=e.searchBox||new h(e);i.show(e.session.getTextRange(),t)}}),function(){ace.acequire(["ace/ext/searchbox"],function(){})}()},function(e,t,i){e.exports={id:"http://json-schema.org/draft-04/schema#",$schema:"http://json-schema.org/draft-04/schema#",description:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},positiveInteger:{type:"integer",minimum:0},positiveIntegerDefault0:{allOf:[{$ref:"#/definitions/positiveInteger"},{"default":0}]},simpleTypes:{"enum":["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},minItems:1,uniqueItems:!0}},type:"object",properties:{id:{type:"string",format:"uri"},$schema:{type:"string",format:"uri"},title:{type:"string"},description:{type:"string"},"default":{},multipleOf:{type:"number",minimum:0,exclusiveMinimum:!0},maximum:{type:"number"},exclusiveMaximum:{type:"boolean","default":!1},minimum:{type:"number"},exclusiveMinimum:{type:"boolean","default":!1},maxLength:{$ref:"#/definitions/positiveInteger"},minLength:{$ref:"#/definitions/positiveIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{anyOf:[{type:"boolean"},{$ref:"#"}],"default":{}},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],"default":{}},maxItems:{$ref:"#/definitions/positiveInteger"},minItems:{$ref:"#/definitions/positiveIntegerDefault0"},uniqueItems:{type:"boolean","default":!1},maxProperties:{$ref:"#/definitions/positiveInteger"},minProperties:{$ref:"#/definitions/positiveIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{anyOf:[{type:"boolean"},{$ref:"#"}],"default":{}},definitions:{type:"object",additionalProperties:{$ref:"#"},"default":{}},properties:{type:"object",additionalProperties:{$ref:"#"},"default":{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},"default":{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},"enum":{type:"array",minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},dependencies:{exclusiveMaximum:["maximum"],exclusiveMinimum:["minimum"]},"default":{}}},function(e,t,i){"use strict";e.exports=function n(e,t){if(e===t)return!0;var i,r=Array.isArray(e),o=Array.isArray(t);if(r&&o){if(e.length!=t.length)return!1;for(i=0;ir;)i++,t=e.charCodeAt(r++),t>=55296&&56319>=t&&n>r&&(t=e.charCodeAt(r),56320==(64512&t)&&r++);return i}function h(e,t){t+="[^0-9]";var i=e.match(new RegExp(t,"g"));return i?i.length:0}function d(e,t,i){return t+="([^0-9])",i=i.replace(/\$/g,"$$$$"),e.replace(new RegExp(t,"g"),i+"$1")}function u(e){return e.replace(S,"").replace($,"").replace(D,"if (!($1))")}function f(e){var t=e.match(k);return t&&2===t.length?e.replace(B,"").replace(_,L):e}function p(e,t){for(var i in e)if(t[i])return!0}function g(e){return"'"+l(e)+"'"}function m(e,t,i,n){var r=i?"'/' + "+t+(n?"":".replace(/~/g, '~0').replace(/\\//g, '~1')"):n?"'[' + "+t+" + ']'":"'[\\'' + "+t+" + '\\']'";return A(e,r)}function v(e,t,i){var n=g(i?"/"+E(t):a(t));return A(e,n)}function w(e,t,i){var n=e.match(R);if(!n)throw new Error("Invalid relative JSON-pointer: "+e);var r=+n[1],o=n[2];if("#"==o){if(r>=t)throw new Error("Cannot access property/index "+r+" levels up, current level is "+t);return i[t-r]}if(r>t)throw new Error("Cannot access data "+r+" levels up, current level is "+t);for(var s="data"+(t-r||""),l=s,c=o.split("/"),h=0;h",b="result"+r,F=e.opts.v5&&s.$data,x=F?e.util.getData(s.$data,o,e.dataPathArr):s;if(F&&(n+=" var schema"+r+" = "+x+"; ",x="schema"+r),C){var S=e.util.getData(y.$data,o,e.dataPathArr),$="exclusive"+r,D="op"+r,k="' + "+D+" + '";n+=" var schemaExcl"+r+" = "+S+"; ",S="schemaExcl"+r,n+=" if (typeof "+S+" != 'boolean' && "+S+" !== undefined) { "+d+" = false; ";var i=A,B=B||[];B.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_exclusiveFormatLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: '"+A+" should be boolean' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var _=n;n=B.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+_+"]; return false; ":" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(p+="}",n+=" else { "),F&&(n+=" if ("+x+" === undefined) "+d+" = true; else if (typeof "+x+" != 'string') "+d+" = false; else { ",p+="}"),f&&(n+=" if (!"+v+") "+d+" = true; else { ",p+="}"),n+=" var "+b+" = "+v+"("+h+", ",n+=F?""+x:""+e.util.toQuotedString(s),n+=" ); if ("+b+" === undefined) "+d+" = false; var exclusive"+r+" = "+S+" === true; if ("+d+" === undefined) { "+d+" = exclusive"+r+" ? "+b+" "+E+" 0 : "+b+" "+E+"= 0; } if (!"+d+") var op"+r+" = exclusive"+r+" ? '"+E+"' : '"+E+"=';"}else{var $=y===!0,k=E;$||(k+="=");var D="'"+k+"'";F&&(n+=" if ("+x+" === undefined) "+d+" = true; else if (typeof "+x+" != 'string') "+d+" = false; else { ",p+="}"),f&&(n+=" if (!"+v+") "+d+" = true; else { ",p+="}"),n+=" var "+b+" = "+v+"("+h+", ",n+=F?""+x:""+e.util.toQuotedString(s),n+=" ); if ("+b+" === undefined) "+d+" = false; if ("+d+" === undefined) "+d+" = "+b+" "+E,$||(n+="="),n+=" 0;"}n+=""+p+"if (!"+d+") { ";var i=t,B=B||[];B.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_formatLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { limit: ',n+=F?""+x:""+e.util.toQuotedString(s),n+=" } ",e.opts.messages!==!1&&(n+=" , message: 'should be "+k+' "',n+=F?"' + "+x+" + '":""+e.util.escapeQuotes(s),n+="\"' "),e.opts.verbose&&(n+=" , schema: ",n+=F?"validate.schema"+a:""+e.util.toQuotedString(s),n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var _=n;return n=B.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+_+"]; return false; ":" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="}"}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u="errs__"+r,f=e.util.copy(e),p="";f.level++;var g,m="ifPassed"+e.level;n+="var "+m+";";var v=s;if(v)for(var w,A=-1,y=v.length-1;y>A;){if(w=v[A+=1],A&&!g&&(n+=" if (!"+m+") { ",p+="}"),w["if"]&&e.util.schemaHasRules(w["if"],e.RULES.all)){n+=" var "+u+" = errors; ";var C=e.compositeRule;if(e.compositeRule=f.compositeRule=!0,f.createErrors=!1,f.schema=w["if"],f.schemaPath=a+"["+A+"].if",f.errSchemaPath=l+"/"+A+"/if",n+=" "+e.validate(f)+" ",f.createErrors=!0,e.compositeRule=f.compositeRule=C,n+=" "+m+" = valid"+f.level+"; if ("+m+") { ","boolean"==typeof w.then){if(w.then===!1){var E=E||[];E.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"switch")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { caseIndex: '+A+" } ",e.opts.messages!==!1&&(n+=" , message: 'should pass \"switch\" keyword validation' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var b=n;n=E.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+b+"]; return false; ":" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}n+=" var valid"+f.level+" = "+w.then+"; "}else f.schema=w.then,f.schemaPath=a+"["+A+"].then",f.errSchemaPath=l+"/"+A+"/then",n+=" "+e.validate(f)+" ";n+=" } else { errors = "+u+"; if (vErrors !== null) { if ("+u+") vErrors.length = "+u+"; else vErrors = null; } } "}else if(n+=" "+m+" = true; ","boolean"==typeof w.then){if(w.then===!1){var E=E||[];E.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"switch")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { caseIndex: '+A+" } ",e.opts.messages!==!1&&(n+=" , message: 'should pass \"switch\" keyword validation' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var b=n;n=E.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+b+"]; return false; ":" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}n+=" var valid"+f.level+" = "+w.then+"; "}else f.schema=w.then,f.schemaPath=a+"["+A+"].then",f.errSchemaPath=l+"/"+A+"/then",n+=" "+e.validate(f)+" ";g=w["continue"]}return n+=""+p+"var "+d+" = valid"+f.level+"; ",n=e.util.cleanUpCode(n)}},function(e,t,i){"use strict";e.exports=function(e,t){function i(e){for(var t=0;tv;)if(m=g[v+=1],i(m)){if(m.type&&(r+=" if ("+e.util.checkDataType(m.type,l)+") { "),e.opts.useDefaults&&!e.compositeRule)if("object"==m.type&&e.schema.properties){var A=e.schema.properties,y=Object.keys(A),C=y;if(C)for(var E,b=-1,F=C.length-1;F>b;){E=C[b+=1];var x=A[E];if(void 0!==x["default"]){var S=l+e.util.getProperty(E);r+=" if ("+S+" === undefined) "+S+" = "+e.useDefault(x["default"])+"; "}}}else if("array"==m.type&&Array.isArray(e.schema.items)){var $=e.schema.items;if($)for(var x,D=-1,k=$.length-1;k>D;)if(x=$[D+=1],void 0!==x["default"]){var S=l+"["+D+"]";r+=" if ("+S+" === undefined) "+S+" = "+e.useDefault(x["default"])+"; "}}var B=m.rules;if(B)for(var _,L=-1,R=B.length-1;R>L;)if(_=B[L+=1],n(_)){if(_.custom){var A=e.schema[_.keyword],T=e.useCustomRule(_,A,e.schema,e),P=T.code+".errors",M=e.schemaPath+"."+_.keyword,O=e.errSchemaPath+"/"+_.keyword,I="errs"+s,D="i"+s,N="ruleErr"+s,j=_.definition,W=j.inline,H=j.macro;if(W||H||(r+=""+P+" = null;"),r+="var "+I+" = errors;",W&&j.statements)r+=" "+T.validate;else if(H){var V=e.util.copy(e);V.level++,V.schema=T.validate,V.schemaPath="";var z=e.compositeRule;e.compositeRule=V.compositeRule=!0;var U=e.validate(V).replace(/validate\.schema/g,T.code);e.compositeRule=V.compositeRule=z,r+=" "+U}r+="if (! ",W?r+=j.statements?" valid"+s+" ":" ("+T.validate+") ":H?r+=" valid"+V.level+" ":(r+=" "+T.code+".call(self ",j.compile?r+=" , "+l+" ":(r+=" , validate.schema"+M+" , "+l+" ",T.validate.length>2&&(r+=" , validate.schema"+e.schemaPath+" ")),r+=" ) "),r+=") { ",c=_.keyword;var K=K||[];K.push(r),r="";var K=K||[];K.push(r),r="",e.createErrors!==!1?(r+=" { keyword: '"+(c||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+O+"\" , params: { keyword: '"+_.keyword+"' } ",e.opts.messages!==!1&&(r+=" , message: 'should pass \""+_.keyword+"\" keyword validation' "),e.opts.verbose&&(r+=" , schema: validate.schema"+M+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),r+=" } "):r+=" {} ";var G=r;r=K.pop(),r+=!e.compositeRule&&d?" validate.errors = ["+G+"]; return false; ":" var err = "+G+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";var q=r;r=K.pop(),W?j.errors?"full"!=j.errors&&(r+=" for (var "+D+"="+I+"; "+D+"",'"',"`"," ","\r","\n"," "],m=["{","}","|","\\","^","`"].concat(g),v=["'"].concat(m),w=["%","/","?",";","#"].concat(v),A=["/","?","#"],y=255,C=/^[a-z0-9A-Z_-]{0,63}$/,E=/^([a-z0-9A-Z_-]{0,63})(.*)$/,b={javascript:!0,"javascript:":!0},F={javascript:!0,"javascript:":!0},x={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},S=i(63);n.prototype.parse=function(e,t,i){if(!l(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var n=e;n=n.trim();var r=f.exec(n);if(r){r=r[0];var o=r.toLowerCase();this.protocol=o,n=n.substr(r.length)}if(i||r||n.match(/^\/\/[^@\/]+@[^@\/]+/)){var s="//"===n.substr(0,2);!s||r&&F[r]||(n=n.substr(2),this.slashes=!0)}if(!F[r]&&(s||r&&!x[r])){for(var a=-1,c=0;ch)&&(a=h)}var d,p;p=-1===a?n.lastIndexOf("@"):n.lastIndexOf("@",a),-1!==p&&(d=n.slice(0,p),n=n.slice(p+1),this.auth=decodeURIComponent(d)),a=-1;for(var c=0;ch)&&(a=h)}-1===a&&(a=n.length),this.host=n.slice(0,a),n=n.slice(a),this.parseHost(),this.hostname=this.hostname||"";var g="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!g)for(var m=this.hostname.split(/\./),c=0,$=m.length;$>c;c++){var D=m[c];if(D&&!D.match(C)){for(var k="",B=0,_=D.length;_>B;B++)k+=D.charCodeAt(B)>127?"x":D[B];if(!k.match(C)){var L=m.slice(0,c),R=m.slice(c+1),T=D.match(E);T&&(L.push(T[1]),R.unshift(T[2])),R.length&&(n="/"+R.join(".")+n),this.hostname=L.join(".");break}}}if(this.hostname.length>y?this.hostname="":this.hostname=this.hostname.toLowerCase(),!g){for(var P=this.hostname.split("."),M=[],c=0;cc;c++){var j=v[c],W=encodeURIComponent(j);W===j&&(W=escape(j)),n=n.split(j).join(W)}var H=n.indexOf("#");-1!==H&&(this.hash=n.substr(H),n=n.slice(0,H));var V=n.indexOf("?");if(-1!==V?(this.search=n.substr(V),this.query=n.substr(V+1),t&&(this.query=S.parse(this.query)),n=n.slice(0,V)):t&&(this.search="",this.query={}),n&&(this.pathname=n),x[o]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){var I=this.pathname||"",O=this.search||"";this.path=I+O}return this.href=this.format(),this},n.prototype.format=function(){var e=this.auth||"";e&&(e=encodeURIComponent(e),e=e.replace(/%3A/i,":"),e+="@");var t=this.protocol||"",i=this.pathname||"",n=this.hash||"",r=!1,o="";this.host?r=e+this.host:this.hostname&&(r=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(r+=":"+this.port)),this.query&&c(this.query)&&Object.keys(this.query).length&&(o=S.stringify(this.query));var s=this.search||o&&"?"+o||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||x[t])&&r!==!1?(r="//"+(r||""),i&&"/"!==i.charAt(0)&&(i="/"+i)):r||(r=""),n&&"#"!==n.charAt(0)&&(n="#"+n),s&&"?"!==s.charAt(0)&&(s="?"+s),i=i.replace(/[?#]/g,function(e){return encodeURIComponent(e)}),s=s.replace("#","%23"),t+r+i+s+n},n.prototype.resolve=function(e){return this.resolveObject(r(e,!1,!0)).format()},n.prototype.resolveObject=function(e){if(l(e)){var t=new n;t.parse(e,!1,!0),e=t}var i=new n;if(Object.keys(this).forEach(function(e){i[e]=this[e]},this),i.hash=e.hash,""===e.href)return i.href=i.format(),i;if(e.slashes&&!e.protocol)return Object.keys(e).forEach(function(t){"protocol"!==t&&(i[t]=e[t])}),x[i.protocol]&&i.hostname&&!i.pathname&&(i.path=i.pathname="/"),i.href=i.format(),i;if(e.protocol&&e.protocol!==i.protocol){if(!x[e.protocol])return Object.keys(e).forEach(function(t){i[t]=e[t]}),i.href=i.format(),i;if(i.protocol=e.protocol,e.host||F[e.protocol])i.pathname=e.pathname;else{for(var r=(e.pathname||"").split("/");r.length&&!(e.host=r.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==r[0]&&r.unshift(""),r.length<2&&r.unshift(""),i.pathname=r.join("/")}if(i.search=e.search,i.query=e.query,i.host=e.host||"",i.auth=e.auth,i.hostname=e.hostname||e.host,i.port=e.port,i.pathname||i.search){var o=i.pathname||"",s=i.search||"";i.path=o+s}return i.slashes=i.slashes||e.slashes,i.href=i.format(),i}var a=i.pathname&&"/"===i.pathname.charAt(0),c=e.host||e.pathname&&"/"===e.pathname.charAt(0),u=c||a||i.host&&e.pathname,f=u,p=i.pathname&&i.pathname.split("/")||[],r=e.pathname&&e.pathname.split("/")||[],g=i.protocol&&!x[i.protocol];if(g&&(i.hostname="",i.port=null,i.host&&(""===p[0]?p[0]=i.host:p.unshift(i.host)),i.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===r[0]?r[0]=e.host:r.unshift(e.host)),e.host=null),u=u&&(""===r[0]||""===p[0])),c)i.host=e.host||""===e.host?e.host:i.host,i.hostname=e.hostname||""===e.hostname?e.hostname:i.hostname,i.search=e.search,i.query=e.query,p=r;else if(r.length)p||(p=[]),p.pop(),p=p.concat(r),i.search=e.search,i.query=e.query;else if(!d(e.search)){if(g){i.hostname=i.host=p.shift();var m=i.host&&i.host.indexOf("@")>0?i.host.split("@"):!1;m&&(i.auth=m.shift(),i.host=i.hostname=m.shift())}return i.search=e.search,i.query=e.query,h(i.pathname)&&h(i.search)||(i.path=(i.pathname?i.pathname:"")+(i.search?i.search:"")),i.href=i.format(),i}if(!p.length)return i.pathname=null,i.search?i.path="/"+i.search:i.path=null,i.href=i.format(),i;for(var v=p.slice(-1)[0],w=(i.host||e.host)&&("."===v||".."===v)||""===v,A=0,y=p.length;y>=0;y--)v=p[y],"."==v?p.splice(y,1):".."===v?(p.splice(y,1),A++):A&&(p.splice(y,1),A--);if(!u&&!f)for(;A--;A)p.unshift("..");!u||""===p[0]||p[0]&&"/"===p[0].charAt(0)||p.unshift(""),w&&"/"!==p.join("/").substr(-1)&&p.push("");var C=""===p[0]||p[0]&&"/"===p[0].charAt(0);if(g){i.hostname=i.host=C?"":p.length?p.shift():"";var m=i.host&&i.host.indexOf("@")>0?i.host.split("@"):!1;m&&(i.auth=m.shift(),i.host=i.hostname=m.shift())}return u=u||i.host&&p.length,u&&!C&&p.unshift(""),p.length?i.pathname=p.join("/"):(i.pathname=null,i.path=null),h(i.pathname)&&h(i.search)||(i.path=(i.pathname?i.pathname:"")+(i.search?i.search:"")),i.auth=e.auth||i.auth,i.slashes=i.slashes||e.slashes,i.href=i.format(),i},n.prototype.parseHost=function(){var e=this.host,t=p.exec(e);t&&(t=t[0],":"!==t&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},function(e,t,i){e.exports.id="ace/mode/json_worker",e.exports.src='"no use strict";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail="";testPath;){var alias=paths[testPath];if("string"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,"/")+(tail||alias.main||alias.name);if(alias===!1)return"";var i=testPath.lastIndexOf("/");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:"error",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf("!")){var chunks=moduleName.split("!");return window.normalizeModule(parentId,chunks[0])+"!"+window.normalizeModule(parentId,chunks[1])}if("."==moduleName.charAt(0)){var base=parentId.split("/").slice(0,-1).join("/");for(moduleName=(base?base+"/":"")+moduleName;-1!==moduleName.indexOf(".")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,"").replace(/\\/\\.\\//,"/").replace(/[^\\/]+\\/\\.\\.\\//,"")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error("worker.js acequire() accepts only (parentId, id) as arguments");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log("unable to load "+id);var path=resolveModuleId(id,window.acequire.tlns);return".js"!=path.slice(-3)&&(path+=".js"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,"string"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),"function"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=["require","exports","module"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case"require":return req;case"exports":return module.exports;case"module":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire("ace/lib/event_emitter").EventEmitter,oop=window.acequire("ace/lib/oop"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:"call",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:"event",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error("Unknown command:"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire("ace/lib/es5-shim"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(acequire,exports){"use strict";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define("ace/range",["require","exports","module"],function(acequire,exports){"use strict";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){"object"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){"object"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define("ace/apply_delta",["require","exports","module"],function(acequire,exports){"use strict";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||"";switch(delta.action){case"insert":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case"remove":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(acequire,exports){"use strict";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){"object"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?"unshift":"push"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),EventEmitter=acequire("./lib/event_emitter").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal("change",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),applyDelta=acequire("./apply_delta").applyDelta,EventEmitter=acequire("./lib/event_emitter").EventEmitter,Range=acequire("./range").Range,Anchor=acequire("./anchor").Anchor,Document=function(textOrLines){this.$lines=[""],0===textOrLines.length?this.$lines=[""]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0==="aaa".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,"\\n").split("\\n")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:"\\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\\r\\n";case"unix":return"\\n";default:return this.$autoNewLine||"\\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return"\\r\\n"==text||"\\r"==text||"\\n"==text},this.getLine=function(row){return this.$lines[row]||""},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||"").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."),this.insertMergedLines(position,["",""])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:"insert",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([""]),column=0):(lines=[""].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:"insert",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:"remove",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:"remove",lines:["",""]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert="insert"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal("change",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(""),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:"insert"==delta.action?"remove":"insert",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define("ace/lib/lang",["require","exports","module"],function(acequire,exports){"use strict";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split("").reverse().join("")},exports.stringRepeat=function(string,count){for(var result="";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,"")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,"")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&"object"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if("object"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}var cons=obj.constructor;if(cons===RegExp)return obj;copy=cons();for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,"\\\\$1")},exports.escapeHTML=function(str){return str.replace(/&/g,"&").replace(/"/g,""").replace(/\'/g,"'").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:"insert",start:data[i],lines:data[i+1]};else var d={action:"remove",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define("ace/mode/json/json_parse",["require","exports","module"],function(){"use strict";var at,ch,text,value,escapee={\'"\':\'"\',"\\\\":"\\\\","/":"/",b:"\\b",f:"\\f",n:"\\n",r:"\\r",t:" "},error=function(m){throw{name:"SyntaxError",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error("Expected \'"+c+"\' instead of \'"+ch+"\'"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string="";for("-"===ch&&(string="-",next("-"));ch>="0"&&"9">=ch;)string+=ch,next();if("."===ch)for(string+=".";next()&&ch>="0"&&"9">=ch;)string+=ch;if("e"===ch||"E"===ch)for(string+=ch,next(),("-"===ch||"+"===ch)&&(string+=ch,next());ch>="0"&&"9">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error("Bad number"),void 0):number},string=function(){var hex,i,uffff,string="";if(\'"\'===ch)for(;next();){if(\'"\'===ch)return next(),string;if("\\\\"===ch)if(next(),"u"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if("string"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error("Bad string")},white=function(){for(;ch&&" ">=ch;)next()},word=function(){switch(ch){case"t":return next("t"),next("r"),next("u"),next("e"),!0;case"f":return next("f"),next("a"),next("l"),next("s"),next("e"),!1;case"n":return next("n"),next("u"),next("l"),next("l"),null}error("Unexpected \'"+ch+"\'")},array=function(){var array=[];if("["===ch){if(next("["),white(),"]"===ch)return next("]"),array;for(;ch;){if(array.push(value()),white(),"]"===ch)return next("]"),array;next(","),white()}}error("Bad array")},object=function(){var key,object={};if("{"===ch){if(next("{"),white(),"}"===ch)return next("}"),object;for(;ch;){if(key=string(),white(),next(":"),Object.hasOwnProperty.call(object,key)&&error(\'Duplicate key "\'+key+\'"\'),object[key]=value(),white(),"}"===ch)return next("}"),object;next(","),white()}}error("Bad object")};return value=function(){switch(white(),ch){case"{":return object();case"[":return array();case\'"\':return string();case"-":return number();default:return ch>="0"&&"9">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=" ",result=value(),white(),ch&&error("Syntax error"),"function"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&"object"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({"":result},""):result}}),ace.define("ace/mode/json_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/json/json_parse"],function(acequire,exports){"use strict";var oop=acequire("../lib/oop"),Mirror=acequire("../worker/mirror").Mirror,parse=acequire("./json/json_parse"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:"error"})}this.sender.emit("annotate",errors)}}.call(JsonWorker.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,"sentinel",{}),"sentinel"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if("function"!=typeof target)throw new TypeError("Function.prototype.bind called on incompatible "+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,"__defineGetter__"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,"XXX"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return"[object Array]"==_toString(obj)});var boxedString=Object("a"),splitString="a"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,thisp=arguments[1],i=-1,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=[],thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError("reduce of empty array with no initial value")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError("reduceRight of empty array with no initial value")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(object,property){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if("object"!=typeof prototype)throw new TypeError("typeof prototype["+typeof prototype+"] != \'object\'");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom="undefined"==typeof document||doesDefinePropertyWork(document.createElement("div"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR="Property description must be an object: ",ERR_NON_OBJECT_TARGET="Object.defineProperty called on non-object: ",ERR_ACCESSORS_NOT_SUPPORTED="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(object,property,descriptor){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if("object"!=typeof descriptor&&"function"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,"value"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,"get")&&defineGetter(object,property,descriptor.get),owns(descriptor,"set")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return"function"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name="";owns(object,name);)name+="?";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError("Object.keys called on a non-object");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=" \\n \\f\\r   ᠎              \\u2028\\u2029";if(!String.prototype.trim||ws.trim()){ws="["+ws+"]";var trimBeginRegexp=RegExp("^"+ws+ws+"*"),trimEndRegexp=RegExp(ws+ws+"*$");String.prototype.trim=function(){return(this+"").replace(trimBeginRegexp,"").replace(trimEndRegexp,"")}}var toObject=function(o){if(null==o)throw new TypeError("can\'t convert "+o+" to object");return Object(o)}});'; +},function(e,t,i){t.parse=i(61),t.stringify=i(62)},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.dataLevel,o=e.schema[t],s=e.errSchemaPath+"/"+t,a=!e.opts.allErrors,l="data"+(r||"");if("#"==o||"#/"==o)e.isRoot?(n+=" if (! validate("+l+", (dataPath || '')",'""'!=e.errorPath&&(n+=" + "+e.errorPath),n+=") ) { if (vErrors === null) vErrors = validate.errors; else vErrors = vErrors.concat(validate.errors); errors = vErrors.length; } ",a&&(n+=" else { ")):(n+=" if (! root.refVal[0]("+l+", (dataPath || '')",'""'!=e.errorPath&&(n+=" + "+e.errorPath),n+=") ) { if (vErrors === null) vErrors = root.refVal[0].errors; else vErrors = vErrors.concat(root.refVal[0].errors); errors = vErrors.length; } ",a&&(n+=" else { "));else{var c=e.resolveRef(e.baseId,o,e.isRoot);if(void 0===c){var h="can't resolve reference "+o+" from id "+e.baseId;if("fail"==e.opts.missingRefs){console.log(h);var d=d||[];d.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"$ref")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+s+"\" , params: { ref: '"+e.util.escapeQuotes(o)+"' } ",e.opts.messages!==!1&&(n+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(o)+"' "),e.opts.verbose&&(n+=" , schema: "+e.util.toQuotedString(o)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+l+" "),n+=" } "):n+=" {} ";var u=n;n=d.pop(),n+=!e.compositeRule&&a?" validate.errors = ["+u+"]; return false; ":" var err = "+u+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a&&(n+=" if (false) { ")}else{if("ignore"!=e.opts.missingRefs){var f=new Error(h);throw f.missingRef=e.resolve.url(e.baseId,o),f.missingSchema=e.resolve.normalizeId(e.resolve.fullPath(f.missingRef)),f}console.log(h),a&&(n+=" if (true) { ")}}else if("string"==typeof c)n+=" if (! "+c+"("+l+", (dataPath || '')",'""'!=e.errorPath&&(n+=" + "+e.errorPath),n+=") ) { if (vErrors === null) vErrors = "+c+".errors; else vErrors = vErrors.concat("+c+".errors); errors = vErrors.length; } ",a&&(n+=" else { ");else{var p=e.util.copy(e);p.level++,p.schema=c.schema,p.schemaPath="",p.errSchemaPath=o;var g=e.validate(p).replace(/validate\.schema/g,c.code);n+=" "+g+" ",a&&(n+=" if (valid"+p.level+") { ")}}return n}},function(e,t,i){"use strict";e.exports=function(e,t){var i=" ",n=e.schema[t],r=e.schemaPath+"."+t,o=e.errSchemaPath+"/"+t,s=!e.opts.allErrors,a=e.util.copy(e),l="";a.level++;var c=n;if(c)for(var h,d=-1,u=c.length-1;u>d;)h=c[d+=1],e.util.schemaHasRules(h,e.RULES.all)&&(a.schema=h,a.schemaPath=r+"["+d+"]",a.errSchemaPath=o+"/"+d,i+=" "+e.validate(a)+" ",s&&(i+=" if (valid"+a.level+") { ",l+="}"));return s&&(i+=" "+l.slice(0,-1)),i=e.util.cleanUpCode(i)}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u="errs__"+r,f=e.util.copy(e),p="";f.level++;var g=s.every(function(t){return e.util.schemaHasRules(t,e.RULES.all)});if(g){n+=" var "+u+" = errors; var "+d+" = false; ";var m=e.compositeRule;e.compositeRule=f.compositeRule=!0;var v=s;if(v)for(var w,A=-1,y=v.length-1;y>A;)w=v[A+=1],f.schema=w,f.schemaPath=a+"["+A+"]",f.errSchemaPath=l+"/"+A,n+=" "+e.validate(f)+" "+d+" = "+d+" || valid"+f.level+"; if (!"+d+") { ",p+="}";e.compositeRule=f.compositeRule=m,n+=" "+p+" if (!"+d+") { var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"anyOf")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: 'should match some schema in anyOf' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else { errors = "+u+"; if (vErrors !== null) { if ("+u+") vErrors.length = "+u+"; else vErrors = null; } ",e.opts.allErrors&&(n+=" } "),n=e.util.cleanUpCode(n)}else c&&(n+=" if (true) { ");return n}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="errs__"+r,u=e.util.copy(e),f="";u.level++;var p={},g={};for(A in s){var m=s[A],v=Array.isArray(m)?g:p;v[A]=m}n+="var "+d+" = errors;";var w=e.errorPath;n+="var missing"+r+";";for(var A in g){v=g[A],n+=" if ("+h+e.util.getProperty(A)+" !== undefined && ( ";var y=v;if(y)for(var C,E=-1,b=y.length-1;b>E;){C=y[E+=1],E&&(n+=" || ");var F=e.util.getProperty(C);n+=" ( "+h+F+" === undefined && (missing"+r+" = "+e.util.toQuotedString(e.opts.jsonPointers?C:F)+") ) "}n+=")) { ";var x="missing"+r,S="' + "+x+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(w,x,!0):w+" + "+x);var $=$||[];$.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"dependencies")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { property: '"+e.util.escapeQuotes(A)+"', missingProperty: '"+S+"', depsCount: "+v.length+", deps: '"+e.util.escapeQuotes(1==v.length?v[0]:v.join(", "))+"' } ",e.opts.messages!==!1&&(n+=" , message: 'should have ",n+=1==v.length?"property "+e.util.escapeQuotes(v[0]):"properties "+e.util.escapeQuotes(v.join(", ")),n+=" when property "+e.util.escapeQuotes(A)+" is present' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var D=n;n=$.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+D+"]; return false; ":" var err = "+D+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(f+="}",n+=" else { ")}e.errorPath=w;for(var A in p){var m=p[A];e.util.schemaHasRules(m,e.RULES.all)&&(n+=" valid"+u.level+" = true; if ("+h+"['"+A+"'] !== undefined) { ",u.schema=m,u.schemaPath=a+e.util.getProperty(A),u.errSchemaPath=l+"/"+e.util.escapeFragment(A),n+=" "+e.validate(u)+" } ",c&&(n+=" if (valid"+u.level+") { ",f+="}"))}return c&&(n+=" "+f+" if ("+d+" == errors) {"),n=e.util.cleanUpCode(n)}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u=e.opts.v5&&s.$data,f=u?e.util.getData(s.$data,o,e.dataPathArr):s;u&&(n+=" var schema"+r+" = "+f+"; ",f="schema"+r);var p="i"+r;u||(n+=" var schema"+r+" = validate.schema"+a+";"),n+="var "+d+";",u&&(n+=" if (schema"+r+" === undefined) "+d+" = true; else if (!Array.isArray(schema"+r+")) "+d+" = false; else {"),n+=""+d+" = false;for (var "+p+"=0; "+p+"b;)if(E=C[b+=1],e.util.schemaHasRules(E,e.RULES.all)){n+=" valid"+f.level+" = true; if ("+h+".length > "+b+") { ";var x=h+"["+b+"]";f.schema=E,f.schemaPath=a+"["+b+"]",f.errSchemaPath=l+"/"+b,f.errorPath=e.util.getPathExpr(e.errorPath,b,e.opts.jsonPointers,!0),e.opts.v5&&(f.dataPathArr[g]=b);var S=e.validate(f);n+=e.util.varOccurences(S,m)<2?" "+e.util.varReplace(S,m,x)+" ":" var "+m+" = "+x+"; "+S+" ",n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}if("object"==typeof v&&e.util.schemaHasRules(v,e.RULES.all)){f.schema=v,f.schemaPath=e.schemaPath+".additionalItems",f.errSchemaPath=e.errSchemaPath+"/additionalItems",n+=" valid"+f.level+" = true; if ("+h+".length > "+s.length+") { for (var i"+r+" = "+s.length+"; i"+r+" < "+h+".length; i"+r+"++) { ",f.errorPath=e.util.getPathExpr(e.errorPath,"i"+r,e.opts.jsonPointers,!0);var x=h+"[i"+r+"]";e.opts.v5&&(f.dataPathArr[g]="i"+r);var S=e.validate(f);n+=e.util.varOccurences(S,m)<2?" "+e.util.varReplace(S,m,x)+" ":" var "+m+" = "+x+"; "+S+" ",c&&(n+=" if (!valid"+f.level+") break; "),n+=" } } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}}else if(e.util.schemaHasRules(s,e.RULES.all)){f.schema=s,f.schemaPath=a,f.errSchemaPath=l,n+=" for (var i"+r+" = 0; i"+r+" < "+h+".length; i"+r+"++) { ",f.errorPath=e.util.getPathExpr(e.errorPath,"i"+r,e.opts.jsonPointers,!0);var x=h+"[i"+r+"]";e.opts.v5&&(f.dataPathArr[g]="i"+r);var S=e.validate(f);n+=e.util.varOccurences(S,m)<2?" "+e.util.varReplace(S,m,x)+" ":" var "+m+" = "+x+"; "+S+" ",c&&(n+=" if (!valid"+f.level+") break; "),n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}return c&&(n+=" "+p+" if ("+u+" == errors) {"),n=e.util.cleanUpCode(n)}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f="maximum"==t,p=f?"exclusiveMaximum":"exclusiveMinimum",g=e.schema[p],m=e.opts.v5&&g&&g.$data,v=f?"<":">",w=f?">":"<";if(m){var A=e.util.getData(g.$data,o,e.dataPathArr),y="exclusive"+r,C="op"+r,E="' + "+C+" + '";n+=" var schemaExcl"+r+" = "+A+"; ",A="schemaExcl"+r,n+=" var exclusive"+r+"; if (typeof "+A+" != 'boolean' && typeof "+A+" != 'undefined') { ";var i=p,b=b||[];b.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: '"+p+" should be boolean' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var F=n;n=b.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else if( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=" ((exclusive"+r+" = "+A+" === true) ? "+h+" "+w+"= "+u+" : "+h+" "+w+" "+u+")) { var op"+r+" = exclusive"+r+" ? '"+v+"' : '"+v+"=';"}else{var y=g===!0,E=v;y||(E+="=");var C="'"+E+"'";n+=" if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=" "+h+" "+w,y&&(n+="="),n+=" "+u+") {"}var i=t,b=b||[];b.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { comparison: '+C+", limit: "+u+", exclusive: "+y+" } ",e.opts.messages!==!1&&(n+=" , message: 'should be "+E+" ",n+=d?"' + "+u:""+s+"'"),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var F=n;return n=b.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+F+"]; return false; ":" var err = "+F+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(n+=" else { "),n}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f="maxItems"==t?">":"<";n+="if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=" "+h+".length "+f+" "+u+") { ";var i=t,p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { limit: '+u+" } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have ",n+="maxItems"==t?"more":"less",n+=" than ",n+=d?"' + "+u+" + '":""+s,n+=" items' "),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var g=n;return n=p.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+g+"]; return false; ":" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f="maxLength"==t?">":"<";n+="if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=e.opts.unicode===!1?" "+h+".length ":" ucs2length("+h+") ",n+=" "+f+" "+u+") { ";var i=t,p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { limit: '+u+" } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT be ",n+="maxLength"==t?"longer":"shorter",n+=" than ",n+=d?"' + "+u+" + '":""+s,n+=" characters' "),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var g=n;return n=p.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+g+"]; return false; ":" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f="maxProperties"==t?">":"<";n+="if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'number') || "),n+=" Object.keys("+h+").length "+f+" "+u+") { ";var i=t,p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { limit: '+u+" } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have ",n+="maxProperties"==t?"more":"less",n+=" than ",n+=d?"' + "+u+" + '":""+s,n+=" properties' "),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var g=n;return n=p.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+g+"]; return false; ":" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r),n+="var division"+r+";if (",d&&(n+=" "+u+" !== undefined && ( typeof "+u+" != 'number' || "),n+=" (division"+r+" = "+h+" / "+u+", ",n+=e.opts.multipleOfPrecision?" Math.abs(Math.round(division"+r+") - division"+r+") > 1e-"+e.opts.multipleOfPrecision+" ":" division"+r+" !== parseInt(division"+r+") ",n+=" ) ",d&&(n+=" ) "),n+=" ) { ";var f=f||[];f.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"multipleOf")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { multipleOf: '+u+" } ",e.opts.messages!==!1&&(n+=" , message: 'should be multiple of ",n+=d?"' + "+u:""+s+"'"),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var p=n;return n=f.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="errs__"+r,u=e.util.copy(e);if(u.level++,e.util.schemaHasRules(s,e.RULES.all)){u.schema=s,u.schemaPath=a,u.errSchemaPath=l,n+=" var "+d+" = errors; ";var f=e.compositeRule;e.compositeRule=u.compositeRule=!0,u.createErrors=!1,n+=" "+e.validate(u)+" ",u.createErrors=!0,e.compositeRule=u.compositeRule=f,n+=" if (valid"+u.level+") { ";var p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"not")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: 'should NOT be valid' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var g=n;n=p.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+g+"]; return false; ":" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; } ",e.opts.allErrors&&(n+=" } ")}else n+=" var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"not")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: 'should NOT be valid' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",c&&(n+=" if (false) { ");return n}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u="errs__"+r,f=e.util.copy(e),p="";f.level++,n+="var "+u+" = errors;var prevValid"+r+" = false;var "+d+" = false; ";var g=e.compositeRule;e.compositeRule=f.compositeRule=!0;var m=s;if(m)for(var v,w=-1,A=m.length-1;A>w;)v=m[w+=1],e.util.schemaHasRules(v,e.RULES.all)?(f.schema=v,f.schemaPath=a+"["+w+"]",f.errSchemaPath=l+"/"+w,n+=" "+e.validate(f)+" "):n+=" var valid"+f.level+" = true; ",w&&(n+=" if (valid"+f.level+" && prevValid"+r+") "+d+" = false; else { ",p+="}"),n+=" if (valid"+f.level+") "+d+" = prevValid"+r+" = true;";e.compositeRule=f.compositeRule=g,n+=""+p+"if (!"+d+") { ";var y=y||[];y.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"oneOf")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: {} ',e.opts.messages!==!1&&(n+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var C=n;return n=y.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+C+"]; return false; ":" var err = "+C+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} else { errors = "+u+"; if (vErrors !== null) { if ("+u+") vErrors.length = "+u+"; else vErrors = null; }",e.opts.allErrors&&(n+=" } "),n}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d=e.opts.v5&&s.$data,u=d?e.util.getData(s.$data,o,e.dataPathArr):s;d&&(n+=" var schema"+r+" = "+u+"; ",u="schema"+r);var f=d?"(new RegExp("+u+"))":e.usePattern(s);n+="if ( ",d&&(n+=" ("+u+" !== undefined && typeof "+u+" != 'string') || "),n+=" !"+f+".test("+h+") ) { ";var p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"pattern")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { pattern: ',n+=d?""+u:""+e.util.toQuotedString(s),n+=" } ",e.opts.messages!==!1&&(n+=" , message: 'should match pattern \"",n+=d?"' + "+u+" + '":""+e.util.escapeQuotes(s),n+="\"' "),e.opts.verbose&&(n+=" , schema: ",n+=d?"validate.schema"+a:""+e.util.toQuotedString(s),n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var g=n;return n=p.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+g+"]; return false; ":" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+="} ",c&&(n+=" else { "),n}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u="errs__"+r,f=e.util.copy(e),p="";f.level++;var g=f.dataLevel=e.dataLevel+1,m="data"+g,v=Object.keys(s||{}),w=e.schema.patternProperties||{},A=Object.keys(w),y=e.schema.additionalProperties,C=v.length||A.length,E=y===!1,b="object"==typeof y&&Object.keys(y).length,F=e.opts.removeAdditional,x=E||b||F,S=e.schema.required;if(S&&(!e.opts.v5||!S.$data)&&S.length5)n+=" || validate.schema"+a+"[key"+r+"] ";else{var B=v;if(B)for(var _,L=-1,R=B.length-1;R>L;)_=B[L+=1],n+=" || key"+r+" == "+e.util.toQuotedString(_)+" "}if(A.length){var T=A;if(T)for(var P,M=-1,O=T.length-1;O>M;)P=T[M+=1],n+=" || "+e.usePattern(P)+".test(key"+r+") "}if(e.opts.v5&&k&&k.length){var I=k;if(I)for(var N,M=-1,j=I.length-1;j>M;)N=I[M+=1],n+=" || "+e.usePattern(N)+".test(key"+r+") "}n+=" ); if (isAdditional"+r+") { "}if("all"==F)n+=" delete "+h+"[key"+r+"]; ";else{var W=e.errorPath,H="' + key"+r+" + '";if(e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers)),E)if(F)n+=" delete "+h+"[key"+r+"]; ";else{n+=" valid"+f.level+" = false; ";var V=l;l=e.errSchemaPath+"/additionalProperties";var z=z||[];z.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"additionalProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { additionalProperty: '"+H+"' } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have additional properties' "),e.opts.verbose&&(n+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var U=n;n=z.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+U+"]; return false; ":" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=V,c&&(n+=" break; ")}else if(b)if("failing"==F){n+=" var "+u+" = errors; ";var K=e.compositeRule;e.compositeRule=f.compositeRule=!0,f.schema=y,f.schemaPath=e.schemaPath+".additionalProperties",f.errSchemaPath=e.errSchemaPath+"/additionalProperties",f.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers);var G=h+"[key"+r+"]";e.opts.v5&&(f.dataPathArr[g]="key"+r);var q=e.validate(f);n+=e.util.varOccurences(q,m)<2?" "+e.util.varReplace(q,m,G)+" ":" var "+m+" = "+G+"; "+q+" ",n+=" if (!valid"+f.level+") { errors = "+u+"; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete "+h+"[key"+r+"]; } ",e.compositeRule=f.compositeRule=K}else{f.schema=y,f.schemaPath=e.schemaPath+".additionalProperties",f.errSchemaPath=e.errSchemaPath+"/additionalProperties",f.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers);var G=h+"[key"+r+"]";e.opts.v5&&(f.dataPathArr[g]="key"+r);var q=e.validate(f);n+=e.util.varOccurences(q,m)<2?" "+e.util.varReplace(q,m,G)+" ":" var "+m+" = "+G+"; "+q+" ",c&&(n+=" if (!valid"+f.level+") break; ")}e.errorPath=W}C&&(n+=" } "),n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}var Q=e.opts.useDefaults&&!e.compositeRule;if(v.length){var Y=v;if(Y)for(var _,J=-1,X=Y.length-1;X>J;){_=Y[J+=1];var Z=s[_];if(e.util.schemaHasRules(Z,e.RULES.all)){var ee=e.util.getProperty(_),G=h+ee,te=Q&&void 0!==Z["default"];f.schema=Z,f.schemaPath=a+ee,f.errSchemaPath=l+"/"+e.util.escapeFragment(_),f.errorPath=e.util.getPath(e.errorPath,_,e.opts.jsonPointers),e.opts.v5&&(f.dataPathArr[g]=e.util.toQuotedString(_));var q=e.validate(f);if(e.util.varOccurences(q,m)<2){q=e.util.varReplace(q,m,G);var ie=G}else{var ie=m;n+=" var "+m+" = "+G+"; "}if(te)n+=" "+q+" ";else{if($&&$[_]){n+=" if ("+ie+" === undefined) { valid"+f.level+" = false; ";var W=e.errorPath,V=l,ne=e.util.escapeQuotes(_);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(W,_,e.opts.jsonPointers)),l=e.errSchemaPath+"/required";var z=z||[];z.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+ne+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+ne+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var U=n;n=z.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+U+"]; return false; ":" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=V,e.errorPath=W,n+=" } else { "}else n+=c?" if ("+ie+" === undefined) { valid"+f.level+" = true; } else { ":" if ("+ie+" !== undefined) { ";n+=" "+q+" } "}}c&&(n+=" if (valid"+f.level+") { ",p+="}")}}var re=A;if(re)for(var P,oe=-1,se=re.length-1;se>oe;){P=re[oe+=1];var Z=w[P];if(e.util.schemaHasRules(Z,e.RULES.all)){f.schema=Z,f.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(P),f.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(P),n+=" for (var key"+r+" in "+h+") { if ("+e.usePattern(P)+".test(key"+r+")) { ",f.errorPath=e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers);var G=h+"[key"+r+"]";e.opts.v5&&(f.dataPathArr[g]="key"+r);var q=e.validate(f);n+=e.util.varOccurences(q,m)<2?" "+e.util.varReplace(q,m,G)+" ":" var "+m+" = "+G+"; "+q+" ",c&&(n+=" if (!valid"+f.level+") break; "),n+=" } ",c&&(n+=" else valid"+f.level+" = true; "),n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}")}}if(e.opts.v5){var ae=k;if(ae)for(var N,le=-1,ce=ae.length-1;ce>le;){N=ae[le+=1];var he=D[N],Z=he.schema;if(e.util.schemaHasRules(Z,e.RULES.all)){f.schema=Z,f.schemaPath=e.schemaPath+".patternGroups"+e.util.getProperty(N)+".schema",f.errSchemaPath=e.errSchemaPath+"/patternGroups/"+e.util.escapeFragment(N)+"/schema",n+=" var pgPropCount"+r+" = 0; for (var key"+r+" in "+h+") { if ("+e.usePattern(N)+".test(key"+r+")) { pgPropCount"+r+"++; ",f.errorPath=e.util.getPathExpr(e.errorPath,"key"+r,e.opts.jsonPointers);var G=h+"[key"+r+"]";e.opts.v5&&(f.dataPathArr[g]="key"+r);var q=e.validate(f);n+=e.util.varOccurences(q,m)<2?" "+e.util.varReplace(q,m,G)+" ":" var "+m+" = "+G+"; "+q+" ",c&&(n+=" if (!valid"+f.level+") break; "),n+=" } ",c&&(n+=" else valid"+f.level+" = true; "),n+=" } ",c&&(n+=" if (valid"+f.level+") { ",p+="}");var de=he.minimum,ue=he.maximum;if(void 0!==de||void 0!==ue){n+=" var "+d+" = true; ";var V=l;if(void 0!==de){var fe=de,pe="minimum",ge="less";n+=" "+d+" = pgPropCount"+r+" >= "+de+"; ",l=e.errSchemaPath+"/patternGroups/minimum",n+=" if (!"+d+") { ";var z=z||[];z.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"patternGroups")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { reason: '"+pe+"', limit: "+fe+", pattern: '"+e.util.escapeQuotes(N)+"' } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have "+ge+" than "+fe+' properties matching pattern "'+e.util.escapeQuotes(N)+"\"' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var U=n;n=z.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+U+"]; return false; ":" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",void 0!==ue&&(n+=" else ")}if(void 0!==ue){var fe=ue,pe="maximum",ge="more";n+=" "+d+" = pgPropCount"+r+" <= "+ue+"; ",l=e.errSchemaPath+"/patternGroups/maximum",n+=" if (!"+d+") { ";var z=z||[];z.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"patternGroups")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { reason: '"+pe+"', limit: "+fe+", pattern: '"+e.util.escapeQuotes(N)+"' } ",e.opts.messages!==!1&&(n+=" , message: 'should NOT have "+ge+" than "+fe+' properties matching pattern "'+e.util.escapeQuotes(N)+"\"' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var U=n;n=z.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+U+"]; return false; ":" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", +n+=" } "}l=V,c&&(n+=" if ("+d+") { ",p+="}")}}}}return c&&(n+=" "+p+" if ("+u+" == errors) {"),n=e.util.cleanUpCode(n)}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u=e.opts.v5&&s.$data,f=u?e.util.getData(s.$data,o,e.dataPathArr):s;if(u&&(n+=" var schema"+r+" = "+f+"; ",f="schema"+r),!u)if(s.lengthv;){m=g[v+=1];var A=e.schema.properties[m];A&&e.util.schemaHasRules(A,e.RULES.all)||(p[p.length]=m)}}else var p=s;if(u||p.length){var y=e.errorPath,C=u||p.length>=e.opts.loopRequired;if(c)if(n+=" var missing"+r+"; ",C){u||(n+=" var schema"+r+" = validate.schema"+a+"; ");var E="i"+r,b="schema"+r+"["+E+"]",F="' + "+b+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(y,b,e.opts.jsonPointers)),n+=" var "+d+" = true; ",u&&(n+=" if (schema"+r+" === undefined) "+d+" = true; else if (!Array.isArray(schema"+r+")) "+d+" = false; else {"),n+=" for (var "+E+" = 0; "+E+" < schema"+r+".length; "+E+"++) { "+d+" = "+h+"[schema"+r+"["+E+"]] !== undefined; if (!"+d+") break; } ",u&&(n+=" } "),n+=" if (!"+d+") { ";var x=x||[];x.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var S=n;n=x.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+S+"]; return false; ":" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { "}else{n+=" if ( ";var $=p;if($)for(var D,E=-1,k=$.length-1;k>E;){D=$[E+=1],E&&(n+=" || ");var B=e.util.getProperty(D);n+=" ( "+h+B+" === undefined && (missing"+r+" = "+e.util.toQuotedString(e.opts.jsonPointers?D:B)+") ) "}n+=") { ";var b="missing"+r,F="' + "+b+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(y,b,!0):y+" + "+b);var x=x||[];x.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var S=n;n=x.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+S+"]; return false; ":" var err = "+S+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } else { "}else if(C){u||(n+=" var schema"+r+" = validate.schema"+a+"; ");var E="i"+r,b="schema"+r+"["+E+"]",F="' + "+b+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(y,b,e.opts.jsonPointers)),u&&(n+=" if (schema"+r+" && !Array.isArray(schema"+r+")) { var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (schema"+r+" !== undefined) { "),n+=" for (var "+E+" = 0; "+E+" < schema"+r+".length; "+E+"++) { if ("+h+"[schema"+r+"["+E+"]] === undefined) { var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ",u&&(n+=" } ")}else{var _=p;if(_)for(var m,E=-1,L=_.length-1;L>E;){m=_[E+=1];var B=e.util.getProperty(m),F=e.util.escapeQuotes(m);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(y,m,e.opts.jsonPointers)),n+=" if ("+h+B+" === undefined) { var err = ",e.createErrors!==!1?(n+=" { keyword: '"+(i||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+"\" , params: { missingProperty: '"+F+"' } ",e.opts.messages!==!1&&(n+=" , message: '",n+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+F+"\\'",n+="' "),e.opts.verbose&&(n+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ",n+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "}}e.errorPath=y}else c&&(n+=" if (true) {");return n}},function(e,t,i){"use strict";e.exports=function(e,t){var i,n=" ",r=e.level,o=e.dataLevel,s=e.schema[t],a=e.schemaPath+"."+t,l=e.errSchemaPath+"/"+t,c=!e.opts.allErrors,h="data"+(o||""),d="valid"+r,u=e.opts.v5&&s.$data,f=u?e.util.getData(s.$data,o,e.dataPathArr):s;if(u&&(n+=" var schema"+r+" = "+f+"; ",f="schema"+r),(s||u)&&e.opts.uniqueItems!==!1){u&&(n+=" var "+d+"; if ("+f+" === false || "+f+" === undefined) "+d+" = true; else if (typeof "+f+" != 'boolean') "+d+" = false; else { "),n+=" var "+d+" = true; if ("+h+".length > 1) { var i = "+h+".length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal("+h+"[i], "+h+"[j])) { "+d+" = false; break outer; } } } } ",u&&(n+=" } "),n+=" if (!"+d+") { ";var p=p||[];p.push(n),n="",e.createErrors!==!1?(n+=" { keyword: '"+(i||"uniqueItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+' , schemaPath: "'+l+'" , params: { i: i, j: j } ',e.opts.messages!==!1&&(n+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(n+=" , schema: ",n+=u?"validate.schema"+a:""+s,n+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),n+=" } "):n+=" {} ";var g=n;n=p.pop(),n+=!e.compositeRule&&c?" validate.errors = ["+g+"]; return false; ":" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",n+=" } ",c&&(n+=" else { ")}else c&&(n+=" if (true) { ");return n}},function(e,t,i){e.exports=function(){throw new Error("define cannot be used indirect")}},function(e,t,i){(function(t){function i(){if(t.Blob)try{return new Blob(["asdf"],{type:"text/plain"}),Blob}catch(e){}var i=t.WebKitBlobBuilder||t.MozBlobBuilder||t.MSBlobBuilder;return function(e,t){var n=new i,r=t.endings,o=t.type;if(r)for(var s=0,a=e.length;a>s;++s)n.append(e[s],r);else for(var s=0,a=e.length;a>s;++s)n.append(e[s]);return o?n.getBlob(o):n.getBlob()}}e.exports=i()}).call(t,function(){return this}())},function(e,t,i){var n;(function(e,r){!function(o){function s(e){throw RangeError(L[e])}function a(e,t){for(var i=e.length,n=[];i--;)n[i]=t(e[i]);return n}function l(e,t){var i=e.split("@"),n="";i.length>1&&(n=i[0]+"@",e=i[1]),e=e.replace(_,".");var r=e.split("."),o=a(r,t).join(".");return n+o}function c(e){for(var t,i,n=[],r=0,o=e.length;o>r;)t=e.charCodeAt(r++),t>=55296&&56319>=t&&o>r?(i=e.charCodeAt(r++),56320==(64512&i)?n.push(((1023&t)<<10)+(1023&i)+65536):(n.push(t),r--)):n.push(t);return n}function h(e){return a(e,function(e){var t="";return e>65535&&(e-=65536,t+=P(e>>>10&1023|55296),e=56320|1023&e),t+=P(e)}).join("")}function d(e){return 10>e-48?e-22:26>e-65?e-65:26>e-97?e-97:C}function u(e,t){return e+22+75*(26>e)-((0!=t)<<5)}function f(e,t,i){var n=0;for(e=i?T(e/x):e>>1,e+=T(e/t);e>R*b>>1;n+=C)e=T(e/R);return T(n+(R+1)*e/(e+F))}function p(e){var t,i,n,r,o,a,l,c,u,p,g=[],m=e.length,v=0,w=$,A=S;for(i=e.lastIndexOf(D),0>i&&(i=0),n=0;i>n;++n)e.charCodeAt(n)>=128&&s("not-basic"),g.push(e.charCodeAt(n));for(r=i>0?i+1:0;m>r;){for(o=v,a=1,l=C;r>=m&&s("invalid-input"),c=d(e.charCodeAt(r++)),(c>=C||c>T((y-v)/a))&&s("overflow"),v+=c*a,u=A>=l?E:l>=A+b?b:l-A,!(u>c);l+=C)p=C-u,a>T(y/p)&&s("overflow"),a*=p;t=g.length+1,A=f(v-o,t,0==o),T(v/t)>y-w&&s("overflow"),w+=T(v/t),v%=t,g.splice(v++,0,w)}return h(g)}function g(e){var t,i,n,r,o,a,l,h,d,p,g,m,v,w,A,F=[];for(e=c(e),m=e.length,t=$,i=0,o=S,a=0;m>a;++a)g=e[a],128>g&&F.push(P(g));for(n=r=F.length,r&&F.push(D);m>n;){for(l=y,a=0;m>a;++a)g=e[a],g>=t&&l>g&&(l=g);for(v=n+1,l-t>T((y-i)/v)&&s("overflow"),i+=(l-t)*v,t=l,a=0;m>a;++a)if(g=e[a],t>g&&++i>y&&s("overflow"),g==t){for(h=i,d=C;p=o>=d?E:d>=o+b?b:d-o,!(p>h);d+=C)A=h-p,w=C-p,F.push(P(u(p+A%w,0))),h=T(A/w);F.push(P(u(h,0))),o=f(i,v,n==r),i=0,++n}++i,++t}return F.join("")}function m(e){return l(e,function(e){return k.test(e)?p(e.slice(4).toLowerCase()):e})}function v(e){return l(e,function(e){return B.test(e)?"xn--"+g(e):e})}var w=("object"==typeof t&&t&&!t.nodeType&&t,"object"==typeof e&&e&&!e.nodeType&&e,"object"==typeof r&&r);(w.global===w||w.window===w||w.self===w)&&(o=w);var A,y=2147483647,C=36,E=1,b=26,F=38,x=700,S=72,$=128,D="-",k=/^xn--/,B=/[^\x20-\x7E]/,_=/[\x2E\u3002\uFF0E\uFF61]/g,L={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},R=C-E,T=Math.floor,P=String.fromCharCode;A={version:"1.3.2",ucs2:{decode:c,encode:h},decode:p,encode:g,toASCII:v,toUnicode:m},n=function(){return A}.call(t,i,t,e),!(void 0!==n&&(e.exports=n))}(this)}).call(t,i(64)(e),function(){return this}())},function(e,t,i){var n,r,o,s,a={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:"\n",r:"\r",t:" "},l=function(e){throw{name:"SyntaxError",message:e,at:n,text:o}},c=function(e){return e&&e!==r&&l("Expected '"+e+"' instead of '"+r+"'"),r=o.charAt(n),n+=1,r},h=function(){var e,t="";for("-"===r&&(t="-",c("-"));r>="0"&&"9">=r;)t+=r,c();if("."===r)for(t+=".";c()&&r>="0"&&"9">=r;)t+=r;if("e"===r||"E"===r)for(t+=r,c(),("-"===r||"+"===r)&&(t+=r,c());r>="0"&&"9">=r;)t+=r,c();return e=+t,isFinite(e)?e:void l("Bad number")},d=function(){var e,t,i,n="";if('"'===r)for(;c();){if('"'===r)return c(),n;if("\\"===r)if(c(),"u"===r){for(i=0,t=0;4>t&&(e=parseInt(c(),16),isFinite(e));t+=1)i=16*i+e;n+=String.fromCharCode(i)}else{if("string"!=typeof a[r])break;n+=a[r]}else n+=r}l("Bad string")},u=function(){for(;r&&" ">=r;)c()},f=function(){switch(r){case"t":return c("t"),c("r"),c("u"),c("e"),!0;case"f":return c("f"),c("a"),c("l"),c("s"),c("e"),!1;case"n":return c("n"),c("u"),c("l"),c("l"),null}l("Unexpected '"+r+"'")},p=function(){var e=[];if("["===r){if(c("["),u(),"]"===r)return c("]"),e;for(;r;){if(e.push(s()),u(),"]"===r)return c("]"),e;c(","),u()}}l("Bad array")},g=function(){var e,t={};if("{"===r){if(c("{"),u(),"}"===r)return c("}"),t;for(;r;){if(e=d(),u(),c(":"),Object.hasOwnProperty.call(t,e)&&l('Duplicate key "'+e+'"'),t[e]=s(),u(),"}"===r)return c("}"),t;c(","),u()}}l("Bad object")};s=function(){switch(u(),r){case"{":return g();case"[":return p();case'"':return d();case"-":return h();default:return r>="0"&&"9">=r?h():f()}},e.exports=function(e,t){var i;return o=e,n=0,r=" ",i=s(),u(),r&&l("Syntax error"),"function"==typeof t?function a(e,i){var n,r,o=e[i];if(o&&"object"==typeof o)for(n in o)Object.prototype.hasOwnProperty.call(o,n)&&(r=a(o,n),void 0!==r?o[n]=r:delete o[n]);return t.call(e,i,o)}({"":i},""):i}},function(e,t,i){function n(e){return l.lastIndex=0,l.test(e)?'"'+e.replace(l,function(e){var t=c[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function r(e,t){var i,l,c,h,d,u=o,f=t[e];switch(f&&"object"==typeof f&&"function"==typeof f.toJSON&&(f=f.toJSON(e)),"function"==typeof a&&(f=a.call(t,e,f)),typeof f){case"string":return n(f);case"number":return isFinite(f)?String(f):"null";case"boolean":case"null":return String(f);case"object":if(!f)return"null";if(o+=s,d=[],"[object Array]"===Object.prototype.toString.apply(f)){for(h=f.length,i=0;h>i;i+=1)d[i]=r(i,f)||"null";return c=0===d.length?"[]":o?"[\n"+o+d.join(",\n"+o)+"\n"+u+"]":"["+d.join(",")+"]",o=u,c}if(a&&"object"==typeof a)for(h=a.length,i=0;h>i;i+=1)l=a[i],"string"==typeof l&&(c=r(l,f),c&&d.push(n(l)+(o?": ":":")+c));else for(l in f)Object.prototype.hasOwnProperty.call(f,l)&&(c=r(l,f),c&&d.push(n(l)+(o?": ":":")+c));return c=0===d.length?"{}":o?"{\n"+o+d.join(",\n"+o)+"\n"+u+"}":"{"+d.join(",")+"}",o=u,c}}var o,s,a,l=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,c={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};e.exports=function(e,t,i){var n;if(o="",s="","number"==typeof i)for(n=0;i>n;n+=1)s+=" ";else"string"==typeof i&&(s=i);if(a=t,t&&"function"!=typeof t&&("object"!=typeof t||"number"!=typeof t.length))throw new Error("JSON.stringify");return r("",{"":e})}},function(e,t,i){"use strict";t.decode=t.parse=i(65),t.encode=t.stringify=i(66)},function(e,t,i){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children=[],e.webpackPolyfill=1),e}},function(e,t,i){"use strict";function n(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,i,r){t=t||"&",i=i||"=";var o={};if("string"!=typeof e||0===e.length)return o;var s=/\+/g;e=e.split(t);var a=1e3;r&&"number"==typeof r.maxKeys&&(a=r.maxKeys);var l=e.length;a>0&&l>a&&(l=a);for(var c=0;l>c;++c){var h,d,u,f,p=e[c].replace(s,"%20"),g=p.indexOf(i);g>=0?(h=p.substr(0,g),d=p.substr(g+1)):(h=p,d=""),u=decodeURIComponent(h),f=decodeURIComponent(d),n(o,u)?Array.isArray(o[u])?o[u].push(f):o[u]=[o[u],f]:o[u]=f}return o}},function(e,t,i){"use strict";var n=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,i,r){return t=t||"&",i=i||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map(function(r){var o=encodeURIComponent(n(r))+i;return Array.isArray(e[r])?e[r].map(function(e){return o+encodeURIComponent(n(e))}).join(t):o+encodeURIComponent(n(e[r]))}).join(t):r?encodeURIComponent(n(r))+i+encodeURIComponent(n(e)):""}}])}); //# sourceMappingURL=jsoneditor.map \ No newline at end of file diff --git a/package.json b/package.json index 093426b..b98964b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jsoneditor", - "version": "5.1.1", + "version": "5.1.2", "main": "./index", "description": "A web-based tool to view, edit, format, and validate JSON", "tags": [ @@ -23,19 +23,19 @@ "test": "mocha test" }, "dependencies": { - "ajv": "3.2.0", + "ajv": "3.4.0", "brace": "0.7.0" }, "devDependencies": { - "gulp": "^3.8.11", - "gulp-concat-css": "^2.0.0", - "gulp-minify-css": "^0.4.5", - "gulp-shell": "^0.3.0", - "gulp-util": "^3.0.3", - "json-loader": "^0.5.4", - "mkdirp": "^0.5.0", - "mocha": "^2.1.0", - "uglify-js": "^2.4.16", - "webpack": "^1.5.3" + "gulp": "3.9.0", + "gulp-concat-css": "2.2.0", + "gulp-minify-css": "1.2.3", + "gulp-shell": "0.5.1", + "gulp-util": "3.0.7", + "json-loader": "0.5.4", + "mkdirp": "0.5.1", + "mocha": "2.3.4", + "uglify-js": "2.6.1", + "webpack": "1.12.11" } }