Path: blob/main/assets/javascript/slope/codemirror.js
15445 views
/*12Copyright (C) 2012 by Marijn Haverbeke <[email protected]>34Permission is hereby granted, free of charge, to any person obtaining a copy5of this software and associated documentation files (the "Software"), to deal6in the Software without restriction, including without limitation the rights7to use, copy, modify, merge, publish, distribute, sublicense, and/or sell8copies of the Software, and to permit persons to whom the Software is9furnished to do so, subject to the following conditions:1011The above copyright notice and this permission notice shall be included in12all copies or substantial portions of the Software.1314THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR15IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,16FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE17AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER18LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,19OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN20THE SOFTWARE.2122Please note that some subdirectories of the CodeMirror distribution23include their own LICENSE files, and are released under different24licences.25*/26window.CodeMirror=function(){function CodeMirror(place,givenOptions){var options={},defaults=CodeMirror.defaults;for(var opt in defaults)if(defaults.hasOwnProperty(opt))options[opt]=(givenOptions&&givenOptions.hasOwnProperty(opt)?givenOptions:defaults)[opt];var input=elt("textarea",null,null,"position: absolute; padding: 0; width: 1px; height: 1em");input.setAttribute("wrap","off");input.setAttribute("autocorrect","off");input.setAttribute("autocapitalize","off");var inputDiv=elt("div",[input],null,27"overflow: hidden; position: relative; width: 3px; height: 0px;");var scrollbarInner=elt("div",null,"CodeMirror-scrollbar-inner");var scrollbar=elt("div",[scrollbarInner],"CodeMirror-scrollbar");var lineDiv=elt("div"),selectionDiv=elt("div",null,null,"position: relative; z-index: -1");var cursor=elt("pre","\u00a0","CodeMirror-cursor"),widthForcer=elt("pre","\u00a0","CodeMirror-cursor","visibility: hidden");var measure=elt("div",null,null,"position: absolute; width: 100%; height: 0px; overflow: hidden; visibility: hidden;");28var lineSpace=elt("div",[measure,cursor,widthForcer,selectionDiv,lineDiv],null,"position: relative; z-index: 0");var gutterText=elt("div",null,"CodeMirror-gutter-text"),gutter=elt("div",[gutterText],"CodeMirror-gutter");var mover=elt("div",[gutter,elt("div",[lineSpace],"CodeMirror-lines")],null,"position: relative");var sizer=elt("div",[mover],null,"position: relative");var scroller=elt("div",[sizer],"CodeMirror-scroll");scroller.setAttribute("tabIndex","-1");var wrapper=elt("div",[inputDiv,scrollbar,29scroller],"CodeMirror"+(options.lineWrapping?" CodeMirror-wrap":""));if(place.appendChild)place.appendChild(wrapper);else place(wrapper);themeChanged();keyMapChanged();if(ios)input.style.width="0px";if(!webkit)scroller.draggable=true;lineSpace.style.outline="none";if(options.tabindex!=null)input.tabIndex=options.tabindex;if(options.autofocus)focusInput();if(!options.gutter&&!options.lineNumbers)gutter.style.display="none";if(khtml)inputDiv.style.height="1px",inputDiv.style.position="absolute";if(mac_geLion){scrollbar.style.zIndex=30-2;scrollbar.style.visibility="hidden"}else if(ie_lt8)scrollbar.style.minWidth="18px";var poll=new Delayed,highlight=new Delayed,blinker;var mode,doc=new BranchChunk([new LeafChunk([new Line("")])]),frontier=0,focused;loadMode();var sel={from:{line:0,ch:0},to:{line:0,ch:0},inverted:false};var shiftSelecting,lastClick,lastDoubleClick,lastScrollTop=0,draggingText,overwrite=false,suppressEdits=false,pasteIncoming=false;var updateInput,userSelChange,changes,textChanged,selectionChanged,gutterDirty,callbacks;31var displayOffset=0,showingFrom=0,showingTo=0,lastSizeC=0;var bracketHighlighted;var maxLine=getLine(0),updateMaxLine=false,maxLineChanged=true;var pollingFast=false;var goalColumn=null;operation(function(){setValue(options.value||"");updateInput=false})();var history=new History;connect(scroller,"mousedown",operation(onMouseDown));connect(scroller,"dblclick",operation(onDoubleClick));connect(lineSpace,"selectstart",e_preventDefault);if(!gecko)connect(scroller,"contextmenu",onContextMenu);connect(scroller,32"scroll",onScrollMain);connect(scrollbar,"scroll",onScrollBar);connect(scrollbar,"mousedown",function(){if(focused)setTimeout(focusInput,0)});var resizeHandler=connect(window,"resize",function(){if(wrapper.parentNode)updateDisplay(true);else resizeHandler()},true);connect(input,"keyup",operation(onKeyUp));connect(input,"input",fastPoll);connect(input,"keydown",operation(onKeyDown));connect(input,"keypress",operation(onKeyPress));connect(input,"focus",onFocus);connect(input,"blur",onBlur);function drag_(e){if(options.onDragEvent&&33options.onDragEvent(instance,addStop(e)))return;e_stop(e)}if(options.dragDrop){connect(scroller,"dragstart",onDragStart);connect(scroller,"dragenter",drag_);connect(scroller,"dragover",drag_);connect(scroller,"drop",operation(onDrop))}connect(scroller,"paste",function(){focusInput();fastPoll()});connect(input,"paste",function(){pasteIncoming=true;fastPoll()});connect(input,"cut",operation(function(){if(!options.readOnly)replaceSelection("")}));if(khtml)connect(sizer,"mouseup",function(){if(document.activeElement==34input)input.blur();focusInput()});var hasFocus;try{hasFocus=document.activeElement==input}catch(e){}if(hasFocus||options.autofocus)setTimeout(onFocus,20);else onBlur();function isLine(l){return l>=0&&l<doc.size}var instance=wrapper.CodeMirror={getValue:getValue,setValue:operation(setValue),getSelection:getSelection,replaceSelection:operation(replaceSelection),focus:function(){window.focus();focusInput();onFocus();fastPoll()},setOption:function(option,value){var oldVal=options[option];options[option]=35value;if(option=="mode"||option=="indentUnit")loadMode();else if(option=="readOnly"&&value=="nocursor"){onBlur();input.blur()}else if(option=="readOnly"&&!value)resetInput(true);else if(option=="theme")themeChanged();else if(option=="lineWrapping"&&oldVal!=value)operation(wrappingChanged)();else if(option=="tabSize")updateDisplay(true);else if(option=="keyMap")keyMapChanged();else if(option=="tabindex")input.tabIndex=value;else if(option=="showCursorWhenSelecting")updateSelection();if(option=="lineNumbers"||36option=="gutter"||option=="firstLineNumber"||option=="theme"||option=="lineNumberFormatter"){gutterChanged();updateDisplay(true)}},getOption:function(option){return options[option]},getMode:function(){return mode},undo:operation(undo),redo:operation(redo),indentLine:operation(function(n,dir){if(typeof dir!="string")if(dir==null)dir=options.smartIndent?"smart":"prev";else dir=dir?"add":"subtract";if(isLine(n))indentLine(n,dir)}),indentSelection:operation(indentSelected),historySize:function(){return{undo:history.done.length,37redo:history.undone.length}},clearHistory:function(){history=new History},setHistory:function(histData){history=new History;history.done=histData.done;history.undone=histData.undone},getHistory:function(){function cp(arr){for(var i=0,nw=[],nwelt;i<arr.length;++i){nw.push(nwelt=[]);for(var j=0,elt=arr[i];j<elt.length;++j){var old=[],cur=elt[j];nwelt.push({start:cur.start,added:cur.added,old:old});for(var k=0;k<cur.old.length;++k)old.push(hlText(cur.old[k]))}}return nw}return{done:cp(history.done),38undone:cp(history.undone)}},matchBrackets:operation(function(){matchBrackets(true)}),getTokenAt:operation(function(pos){pos=clipPos(pos);return getLine(pos.line).getTokenAt(mode,getStateBefore(pos.line),options.tabSize,pos.ch)}),getStateAfter:function(line){line=clipLine(line==null?doc.size-1:line);return getStateBefore(line+1)},cursorCoords:function(start,mode){if(start==null)start=sel.inverted;return this.charCoords(start?sel.from:sel.to,mode)},charCoords:function(pos,mode){pos=clipPos(pos);if(mode==39"local")return localCoords(pos,false);if(mode=="div")return localCoords(pos,true);return pageCoords(pos)},coordsChar:function(coords){var off=eltOffset(lineSpace);return coordsChar(coords.x-off.left,coords.y-off.top)},defaultTextHeight:function(){return textHeight()},markText:operation(markText),setBookmark:setBookmark,findMarksAt:findMarksAt,setMarker:operation(addGutterMarker),clearMarker:operation(removeGutterMarker),setLineClass:operation(setLineClass),hideLine:operation(function(h){return setLineHidden(h,40true)}),showLine:operation(function(h){return setLineHidden(h,false)}),onDeleteLine:function(line,f){if(typeof line=="number"){if(!isLine(line))return null;line=getLine(line)}(line.handlers||(line.handlers=[])).push(f);return line},lineInfo:lineInfo,getViewport:function(){return{from:showingFrom,to:showingTo}},addWidget:function(pos,node,scroll,vert,horiz){pos=localCoords(clipPos(pos));var top=pos.yBot,left=pos.x;node.style.position="absolute";sizer.appendChild(node);if(vert=="over")top=pos.y;else if(vert==41"near"){var vspace=Math.max(scroller.offsetHeight,doc.height*textHeight()),hspace=Math.max(sizer.clientWidth,lineSpace.clientWidth)-paddingLeft();if(pos.yBot+node.offsetHeight>vspace&&pos.y>node.offsetHeight)top=pos.y-node.offsetHeight;if(left+node.offsetWidth>hspace)left=hspace-node.offsetWidth}node.style.top=top+paddingTop()+"px";node.style.left=node.style.right="";if(horiz=="right"){left=sizer.clientWidth-node.offsetWidth;node.style.right="0px"}else{if(horiz=="left")left=0;else if(horiz=="middle")left=42(sizer.clientWidth-node.offsetWidth)/2;node.style.left=left+paddingLeft()+"px"}if(scroll)scrollIntoView(left,top,left+node.offsetWidth,top+node.offsetHeight)},lineCount:function(){return doc.size},clipPos:clipPos,getCursor:function(start){if(start==null||start=="head")start=sel.inverted;if(start=="anchor")start=!sel.inverted;if(start=="end")start=false;return copyPos(start?sel.from:sel.to)},somethingSelected:function(){return!posEq(sel.from,sel.to)},setCursor:operation(function(line,ch,user){if(ch==43null&&typeof line.line=="number")setCursor(line.line,line.ch,user);else setCursor(line,ch,user)}),setSelection:operation(function(from,to,user){(user?setSelectionUser:setSelection)(clipPos(from),clipPos(to||from))}),getLine:function(line){if(isLine(line))return getLine(line).text},getLineHandle:function(line){if(isLine(line))return getLine(line)},setLine:operation(function(line,text){if(isLine(line))replaceRange(text,{line:line,ch:0},{line:line,ch:getLine(line).text.length})}),removeLine:operation(function(line){if(isLine(line))replaceRange("",44{line:line,ch:0},clipPos({line:line+1,ch:0}))}),replaceRange:operation(replaceRange),getRange:function(from,to,lineSep){return getRange(clipPos(from),clipPos(to),lineSep)},triggerOnKeyDown:operation(onKeyDown),execCommand:function(cmd){return commands[cmd](instance)},moveH:operation(moveH),deleteH:operation(deleteH),moveV:operation(moveV),toggleOverwrite:function(){if(overwrite){overwrite=false;cursor.className=cursor.className.replace(" CodeMirror-overwrite","")}else{overwrite=true;cursor.className+=45" CodeMirror-overwrite"}},posFromIndex:function(off){var lineNo=0,ch;doc.iter(0,doc.size,function(line){var sz=line.text.length+1;if(sz>off){ch=off;return true}off-=sz;++lineNo});return clipPos({line:lineNo,ch:ch})},indexFromPos:function(coords){if(coords.line<0||coords.ch<0)return 0;var index=coords.ch;doc.iter(0,coords.line,function(line){index+=line.text.length+1});return index},scrollTo:function(x,y){if(x!=null)scroller.scrollLeft=x;if(y!=null)scrollbar.scrollTop=scroller.scrollTop=y;updateDisplay([])},46getScrollInfo:function(){return{x:scroller.scrollLeft,y:scrollbar.scrollTop,height:scrollbar.scrollHeight,width:scroller.scrollWidth}},scrollIntoView:function(pos){var coords=localCoords(pos?clipPos(pos):sel.inverted?sel.from:sel.to);scrollIntoView(coords.x,coords.y,coords.x,coords.yBot)},setSize:function(width,height){function interpret(val){val=String(val);return/^\d+$/.test(val)?val+"px":val}if(width!=null)wrapper.style.width=interpret(width);if(height!=null)scroller.style.height=interpret(height);47instance.refresh()},operation:function(f){return operation(f)()},compoundChange:function(f){return compoundChange(f)},refresh:function(){updateDisplay(true,null,lastScrollTop);if(scrollbar.scrollHeight>lastScrollTop)scrollbar.scrollTop=lastScrollTop},getInputField:function(){return input},getWrapperElement:function(){return wrapper},getScrollerElement:function(){return scroller},getGutterElement:function(){return gutter}};function getLine(n){return getLineAt(doc,n)}function updateLineHeight(line,48height){gutterDirty=true;var diff=height-line.height;for(var n=line;n;n=n.parent)n.height+=diff}function lineContent(line,wrapAt){if(!line.styles)line.highlight(mode,line.stateAfter=getStateBefore(lineNo(line)),options.tabSize);return line.getContent(options.tabSize,wrapAt,options.lineWrapping)}function setValue(code){var top={line:0,ch:0};updateLines(top,{line:doc.size-1,ch:getLine(doc.size-1).text.length},splitLines(code),top,top);updateInput=true}function getValue(lineSep){var text=[];doc.iter(0,49doc.size,function(line){text.push(line.text)});return text.join(lineSep||"\n")}function onScrollBar(e){if(Math.abs(scrollbar.scrollTop-lastScrollTop)>1){lastScrollTop=scroller.scrollTop=scrollbar.scrollTop;updateDisplay([])}}function onScrollMain(e){if(options.fixedGutter&&gutter.style.left!=scroller.scrollLeft+"px")gutter.style.left=scroller.scrollLeft+"px";if(Math.abs(scroller.scrollTop-lastScrollTop)>1){lastScrollTop=scroller.scrollTop;if(scrollbar.scrollTop!=lastScrollTop)scrollbar.scrollTop=50lastScrollTop;updateDisplay([])}if(options.onScroll)options.onScroll(instance)}function onMouseDown(e){setShift(e_prop(e,"shiftKey"));for(var n=e_target(e);n!=wrapper;n=n.parentNode)if(n.parentNode==sizer&&n!=mover)return;for(var n=e_target(e);n!=wrapper;n=n.parentNode)if(n.parentNode==gutterText){if(options.onGutterClick)options.onGutterClick(instance,indexOf(gutterText.childNodes,n)+showingFrom,e);return e_preventDefault(e)}var start=posFromMouse(e);switch(e_button(e)){case 3:if(gecko)onContextMenu(e);51return;case 2:if(start)setCursor(start.line,start.ch,true);setTimeout(focusInput,20);e_preventDefault(e);return}if(!start){if(e_target(e)==scroller)e_preventDefault(e);return}if(!focused)onFocus();var now=+new Date,type="single";if(lastDoubleClick&&lastDoubleClick.time>now-400&&posEq(lastDoubleClick.pos,start)){type="triple";e_preventDefault(e);setTimeout(focusInput,20);selectLine(start.line)}else if(lastClick&&lastClick.time>now-400&&posEq(lastClick.pos,start)){type="double";lastDoubleClick={time:now,52pos:start};e_preventDefault(e);var word=findWordAt(start);setSelectionUser(word.from,word.to)}else lastClick={time:now,pos:start};function dragEnd(e2){if(webkit)scroller.draggable=false;draggingText=false;up();drop();if(Math.abs(e.clientX-e2.clientX)+Math.abs(e.clientY-e2.clientY)<10){e_preventDefault(e2);setCursor(start.line,start.ch,true);focusInput()}}var last=start,going;if(options.dragDrop&&dragAndDrop&&!options.readOnly&&!posEq(sel.from,sel.to)&&!posLess(start,sel.from)&&!posLess(sel.to,start)&&53type=="single"){if(webkit)scroller.draggable=true;var up=connect(document,"mouseup",operation(dragEnd),true);var drop=connect(scroller,"drop",operation(dragEnd),true);draggingText=true;if(scroller.dragDrop)scroller.dragDrop();return}e_preventDefault(e);if(type=="single")setCursor(start.line,start.ch,true);var startstart=sel.from,startend=sel.to;function doSelect(cur){if(type=="single"){setSelectionUser(clipPos(start),cur);return}startstart=clipPos(startstart);startend=clipPos(startend);if(type=="double"){var word=54findWordAt(cur);if(posLess(cur,startstart))setSelectionUser(word.from,startend);else setSelectionUser(startstart,word.to)}else if(type=="triple")if(posLess(cur,startstart))setSelectionUser(startend,clipPos({line:cur.line,ch:0}));else setSelectionUser(startstart,clipPos({line:cur.line+1,ch:0}))}function extend(e){var cur=posFromMouse(e,true);if(cur&&!posEq(cur,last)){if(!focused)onFocus();last=cur;doSelect(cur);updateInput=false;var visible=visibleLines();if(cur.line>=visible.to||cur.line<visible.from)going=55setTimeout(operation(function(){extend(e)}),150)}}function done(e){clearTimeout(going);var cur=posFromMouse(e);if(cur)doSelect(cur);e_preventDefault(e);focusInput();updateInput=true;move();up()}var move=connect(document,"mousemove",operation(function(e){clearTimeout(going);e_preventDefault(e);if(!ie&&!e_button(e))done(e);else extend(e)}),true);var up=connect(document,"mouseup",operation(done),true)}function onDoubleClick(e){for(var n=e_target(e);n!=wrapper;n=n.parentNode)if(n.parentNode==gutterText)return e_preventDefault(e);56e_preventDefault(e)}function onDrop(e){if(options.onDragEvent&&options.onDragEvent(instance,addStop(e)))return;e_preventDefault(e);var pos=posFromMouse(e,true),files=e.dataTransfer.files;if(!pos||options.readOnly)return;if(files&&files.length&&window.FileReader&&window.File){var n=files.length,text=Array(n),read=0;var loadFile=function(file,i){var reader=new FileReader;reader.onload=function(){text[i]=reader.result;if(++read==n){pos=clipPos(pos);operation(function(){var end=replaceRange(text.join(""),57pos,pos);setSelectionUser(pos,end)})()}};reader.readAsText(file)};for(var i=0;i<n;++i)loadFile(files[i],i)}else{if(draggingText&&!(posLess(pos,sel.from)||posLess(sel.to,pos)))return;try{var text=e.dataTransfer.getData("Text");if(text)compoundChange(function(){var curFrom=sel.from,curTo=sel.to;setSelectionUser(pos,pos);if(draggingText)replaceRange("",curFrom,curTo);replaceSelection(text);focusInput()})}catch(e$0){}}}function onDragStart(e){var txt=getSelection();e.dataTransfer.setData("Text",txt);58if(e.dataTransfer.setDragImage)e.dataTransfer.setDragImage(elt("img"),0,0)}function doHandleBinding(bound,dropShift){if(typeof bound=="string"){bound=commands[bound];if(!bound)return false}var prevShift=shiftSelecting;try{if(options.readOnly)suppressEdits=true;if(dropShift)shiftSelecting=null;bound(instance)}catch(e$1){if(e$1!=Pass)throw e$1;return false}finally{shiftSelecting=prevShift;suppressEdits=false}return true}var maybeTransition;function handleKeyBinding(e){var startMap=getKeyMap(options.keyMap),59next=startMap.auto;clearTimeout(maybeTransition);if(next&&!isModifierKey(e))maybeTransition=setTimeout(function(){if(getKeyMap(options.keyMap)==startMap)options.keyMap=next.call?next.call(null,instance):next},50);var name=keyNames[e_prop(e,"keyCode")],handled=false;if(name==null||e.altGraphKey)return false;if(e_prop(e,"altKey"))name="Alt-"+name;if(e_prop(e,flipCtrlCmd?"metaKey":"ctrlKey"))name="Ctrl-"+name;if(e_prop(e,flipCtrlCmd?"ctrlKey":"metaKey"))name="Cmd-"+name;var stopped=false;function stop(){stopped=60true}if(e_prop(e,"shiftKey"))handled=lookupKey("Shift-"+name,options.extraKeys,options.keyMap,function(b){return doHandleBinding(b,true)},stop)||lookupKey(name,options.extraKeys,options.keyMap,function(b){if(typeof b=="string"&&/^go[A-Z]/.test(b))return doHandleBinding(b)},stop);else handled=lookupKey(name,options.extraKeys,options.keyMap,doHandleBinding,stop);if(stopped)handled=false;if(handled){e_preventDefault(e);restartBlink();if(ie_lt9){e.oldKeyCode=e.keyCode;e.keyCode=0}}return handled}function handleCharBinding(e,61ch){var handled=lookupKey("'"+ch+"'",options.extraKeys,options.keyMap,function(b){return doHandleBinding(b,true)});if(handled){e_preventDefault(e);restartBlink()}return handled}var lastStoppedKey=null;function onKeyDown(e){if(!focused)onFocus();if(ie&&e.keyCode==27)e.returnValue=false;if(pollingFast)if(readInput())pollingFast=false;if(options.onKeyEvent&&options.onKeyEvent(instance,addStop(e)))return;var code=e_prop(e,"keyCode");setShift(code==16||e_prop(e,"shiftKey"));var handled=handleKeyBinding(e);62if(opera){lastStoppedKey=handled?code:null;if(!handled&&code==88&&e_prop(e,mac?"metaKey":"ctrlKey"))replaceSelection("")}}function onKeyPress(e){if(pollingFast)readInput();if(options.onKeyEvent&&options.onKeyEvent(instance,addStop(e)))return;var keyCode=e_prop(e,"keyCode"),charCode=e_prop(e,"charCode");if(opera&&keyCode==lastStoppedKey){lastStoppedKey=null;e_preventDefault(e);return}if((opera&&(!e.which||e.which<10)||khtml)&&handleKeyBinding(e))return;var ch=String.fromCharCode(charCode==null?keyCode:63charCode);if(options.electricChars&&mode.electricChars&&options.smartIndent&&!options.readOnly)if(mode.electricChars.indexOf(ch)>-1)setTimeout(operation(function(){indentLine(sel.to.line,"smart")}),75);if(handleCharBinding(e,ch))return;fastPoll()}function onKeyUp(e){if(options.onKeyEvent&&options.onKeyEvent(instance,addStop(e)))return;if(e_prop(e,"keyCode")==16)shiftSelecting=null}function onFocus(){if(options.readOnly=="nocursor")return;if(!focused){if(options.onFocus)options.onFocus(instance);focused=64true;if(scroller.className.search(/\bCodeMirror-focused\b/)==-1)scroller.className+=" CodeMirror-focused"}slowPoll();restartBlink()}function onBlur(){if(focused){if(options.onBlur)options.onBlur(instance);focused=false;if(bracketHighlighted)operation(function(){if(bracketHighlighted){bracketHighlighted();bracketHighlighted=null}})();scroller.className=scroller.className.replace(" CodeMirror-focused","")}clearInterval(blinker);setTimeout(function(){if(!focused)shiftSelecting=null},150)}function updateLines(from,65to,newText,selFrom,selTo){if(suppressEdits)return;var old=[];doc.iter(from.line,to.line+1,function(line){old.push(newHL(line.text,line.markedSpans))});if(history){history.addChange(from.line,newText.length,old);while(history.done.length>options.undoDepth)history.done.shift()}var lines=updateMarkedSpans(hlSpans(old[0]),hlSpans(lst(old)),from.ch,to.ch,newText);updateLinesNoUndo(from,to,lines,selFrom,selTo)}function unredoHelper(from,to){if(!from.length)return;var set=from.pop(),out=[];for(var i=set.length-661;i>=0;i-=1){var change=set[i];var replaced=[],end=change.start+change.added;doc.iter(change.start,end,function(line){replaced.push(newHL(line.text,line.markedSpans))});out.push({start:change.start,added:change.old.length,old:replaced});var pos={line:change.start+change.old.length-1,ch:editEnd(hlText(lst(replaced)),hlText(lst(change.old)))};updateLinesNoUndo({line:change.start,ch:0},{line:end-1,ch:getLine(end-1).text.length},change.old,pos,pos)}updateInput=true;to.push(out)}function undo(){unredoHelper(history.done,67history.undone)}function redo(){unredoHelper(history.undone,history.done)}function updateLinesNoUndo(from,to,lines,selFrom,selTo){if(suppressEdits)return;var recomputeMaxLength=false,maxLineLength=maxLine.text.length;if(!options.lineWrapping)doc.iter(from.line,to.line+1,function(line){if(!line.hidden&&line.text.length==maxLineLength){recomputeMaxLength=true;return true}});if(from.line!=to.line||lines.length>1)gutterDirty=true;var nlines=to.line-from.line,firstLine=getLine(from.line),lastLine=getLine(to.line);68var lastHL=lst(lines);if(from.ch==0&&to.ch==0&&hlText(lastHL)==""){var added=[],prevLine=null;for(var i=0,e=lines.length-1;i<e;++i)added.push(new Line(hlText(lines[i]),hlSpans(lines[i])));lastLine.update(lastLine.text,hlSpans(lastHL));if(nlines)doc.remove(from.line,nlines,callbacks);if(added.length)doc.insert(from.line,added)}else if(firstLine==lastLine)if(lines.length==1)firstLine.update(firstLine.text.slice(0,from.ch)+hlText(lines[0])+firstLine.text.slice(to.ch),hlSpans(lines[0]));else{for(var added=69[],i=1,e=lines.length-1;i<e;++i)added.push(new Line(hlText(lines[i]),hlSpans(lines[i])));added.push(new Line(hlText(lastHL)+firstLine.text.slice(to.ch),hlSpans(lastHL)));firstLine.update(firstLine.text.slice(0,from.ch)+hlText(lines[0]),hlSpans(lines[0]));doc.insert(from.line+1,added)}else if(lines.length==1){firstLine.update(firstLine.text.slice(0,from.ch)+hlText(lines[0])+lastLine.text.slice(to.ch),hlSpans(lines[0]));doc.remove(from.line+1,nlines,callbacks)}else{var added=[];firstLine.update(firstLine.text.slice(0,70from.ch)+hlText(lines[0]),hlSpans(lines[0]));lastLine.update(hlText(lastHL)+lastLine.text.slice(to.ch),hlSpans(lastHL));for(var i=1,e=lines.length-1;i<e;++i)added.push(new Line(hlText(lines[i]),hlSpans(lines[i])));if(nlines>1)doc.remove(from.line+1,nlines-1,callbacks);doc.insert(from.line+1,added)}if(options.lineWrapping){var perLine=Math.max(5,scroller.clientWidth/charWidth()-3);doc.iter(from.line,from.line+lines.length,function(line){if(line.hidden)return;var guess=Math.ceil(line.text.length/perLine)||711;if(guess!=line.height)updateLineHeight(line,guess)})}else{doc.iter(from.line,from.line+lines.length,function(line){var l=line.text;if(!line.hidden&&l.length>maxLineLength){maxLine=line;maxLineLength=l.length;maxLineChanged=true;recomputeMaxLength=false}});if(recomputeMaxLength)updateMaxLine=true}frontier=Math.min(frontier,from.line);startWorker(400);var lendiff=lines.length-nlines-1;changes.push({from:from.line,to:to.line+1,diff:lendiff});if(options.onChange){for(var i=0;i<lines.length;++i)if(typeof lines[i]!=72"string")lines[i]=lines[i].text;var changeObj={from:from,to:to,text:lines};if(textChanged){for(var cur=textChanged;cur.next;cur=cur.next);cur.next=changeObj}else textChanged=changeObj}function updateLine(n){return n<=Math.min(to.line,to.line+lendiff)?n:n+lendiff}setSelection(clipPos(selFrom),clipPos(selTo),updateLine(sel.from.line),updateLine(sel.to.line))}function needsScrollbar(){var realHeight=doc.height*textHeight()+2*paddingTop();return realHeight*.99>scroller.offsetHeight?realHeight:false}function updateVerticalScroll(scrollTop){var scrollHeight=73needsScrollbar();scrollbar.style.display=scrollHeight?"block":"none";if(scrollHeight){scrollbarInner.style.height=sizer.style.minHeight=scrollHeight+"px";scrollbar.style.height=scroller.clientHeight+"px";if(scrollTop!=null){scrollbar.scrollTop=scroller.scrollTop=scrollTop;if(webkit)setTimeout(function(){if(scrollbar.scrollTop!=scrollTop)return;scrollbar.scrollTop=scrollTop+(scrollTop?-1:1);scrollbar.scrollTop=scrollTop},0)}}else sizer.style.minHeight="";mover.style.top=displayOffset*textHeight()+74"px"}function computeMaxLength(){maxLine=getLine(0);maxLineChanged=true;var maxLineLength=maxLine.text.length;doc.iter(1,doc.size,function(line){var l=line.text;if(!line.hidden&&l.length>maxLineLength){maxLineLength=l.length;maxLine=line}});updateMaxLine=false}function replaceRange(code,from,to){from=clipPos(from);if(!to)to=from;else to=clipPos(to);code=splitLines(code);function adjustPos(pos){if(posLess(pos,from))return pos;if(!posLess(to,pos))return end;var line=pos.line+code.length-(to.line-from.line)-751;var ch=pos.ch;if(pos.line==to.line)ch+=lst(code).length-(to.ch-(to.line==from.line?from.ch:0));return{line:line,ch:ch}}var end;replaceRange1(code,from,to,function(end1){end=end1;return{from:adjustPos(sel.from),to:adjustPos(sel.to)}});return end}function replaceSelection(code,collapse){replaceRange1(splitLines(code),sel.from,sel.to,function(end){if(collapse=="end")return{from:end,to:end};else if(collapse=="start")return{from:sel.from,to:sel.from};else return{from:sel.from,to:end}})}function replaceRange1(code,76from,to,computeSel){var endch=code.length==1?code[0].length+from.ch:lst(code).length;var newSel=computeSel({line:from.line+code.length-1,ch:endch});updateLines(from,to,code,newSel.from,newSel.to)}function getRange(from,to,lineSep){var l1=from.line,l2=to.line;if(l1==l2)return getLine(l1).text.slice(from.ch,to.ch);var code=[getLine(l1).text.slice(from.ch)];doc.iter(l1+1,l2,function(line){code.push(line.text)});code.push(getLine(l2).text.slice(0,to.ch));return code.join(lineSep||"\n")}function getSelection(lineSep){return getRange(sel.from,77sel.to,lineSep)}function slowPoll(){if(pollingFast)return;poll.set(options.pollInterval,function(){readInput();if(focused)slowPoll()})}function fastPoll(){var missed=false;pollingFast=true;function p(){var changed=readInput();if(!changed&&!missed){missed=true;poll.set(60,p)}else{pollingFast=false;slowPoll()}}poll.set(20,p)}var prevInput="";function readInput(){if(!focused||hasSelection(input)||options.readOnly)return false;var text=input.value;if(text==prevInput)return false;if(!nestedOperation)startOperation();78shiftSelecting=null;var same=0,l=Math.min(prevInput.length,text.length);while(same<l&&prevInput[same]==text[same])++same;if(same<prevInput.length)sel.from={line:sel.from.line,ch:sel.from.ch-(prevInput.length-same)};else if(overwrite&&posEq(sel.from,sel.to)&&!pasteIncoming)sel.to={line:sel.to.line,ch:Math.min(getLine(sel.to.line).text.length,sel.to.ch+(text.length-same))};replaceSelection(text.slice(same),"end");if(text.length>1E3)input.value=prevInput="";else prevInput=text;if(!nestedOperation)endOperation();79pasteIncoming=false;return true}function resetInput(user){if(!posEq(sel.from,sel.to)){prevInput="";input.value=getSelection();if(focused)selectInput(input)}else if(user)prevInput=input.value=""}function focusInput(){if(options.readOnly!="nocursor"&&(ie_lt9||document.activeElement!=input))input.focus()}function scrollCursorIntoView(){var coords=calculateCursorCoords();scrollIntoView(coords.x,coords.y,coords.x,coords.yBot);if(!focused)return;var box=sizer.getBoundingClientRect(),doScroll=null;if(coords.y+80box.top<0)doScroll=true;else if(coords.y+box.top+textHeight()>(window.innerHeight||document.documentElement.clientHeight))doScroll=false;if(doScroll!=null){var hidden=cursor.style.display=="none";if(hidden){cursor.style.display="";cursor.style.left=coords.x+"px";cursor.style.top=coords.y-displayOffset+"px"}cursor.scrollIntoView(doScroll);if(hidden)cursor.style.display="none"}}function calculateCursorCoords(){var cursor=localCoords(sel.inverted?sel.from:sel.to);var x=options.lineWrapping?Math.min(cursor.x,81lineSpace.offsetWidth):cursor.x;return{x:x,y:cursor.y,yBot:cursor.yBot}}function scrollIntoView(x1,y1,x2,y2){var scrollPos=calculateScrollPos(x1,y1,x2,y2);if(scrollPos.scrollLeft!=null)scroller.scrollLeft=scrollPos.scrollLeft;if(scrollPos.scrollTop!=null)scrollbar.scrollTop=scroller.scrollTop=scrollPos.scrollTop}function calculateScrollPos(x1,y1,x2,y2){var pl=paddingLeft(),pt=paddingTop();y1+=pt;y2+=pt;x1+=pl;x2+=pl;var screen=scroller.clientHeight,screentop=scrollbar.scrollTop,result={};var docBottom=82needsScrollbar()||Infinity;var atTop=y1<pt+10,atBottom=y2+pt>docBottom-10;if(y1<screentop)result.scrollTop=atTop?0:Math.max(0,y1);else if(y2>screentop+screen)result.scrollTop=(atBottom?docBottom:y2)-screen;var screenw=scroller.clientWidth,screenleft=scroller.scrollLeft;var gutterw=options.fixedGutter?gutter.clientWidth:0;var atLeft=x1<gutterw+pl+10;if(x1<screenleft+gutterw||atLeft){if(atLeft)x1=0;result.scrollLeft=Math.max(0,x1-10-gutterw)}else if(x2>screenw+screenleft-3)result.scrollLeft=x2+10-screenw;83return result}function visibleLines(scrollTop){var lh=textHeight(),top=(scrollTop!=null?scrollTop:scrollbar.scrollTop)-paddingTop();var fromHeight=Math.max(0,Math.floor(top/lh));var toHeight=Math.ceil((top+scroller.clientHeight)/lh);return{from:lineAtHeight(doc,fromHeight),to:lineAtHeight(doc,toHeight)}}function updateDisplay(changes,suppressCallback,scrollTop){if(!scroller.clientWidth){showingFrom=showingTo=displayOffset=0;return}var visible=visibleLines(scrollTop);if(changes!==true&&changes.length==840&&visible.from>showingFrom&&visible.to<showingTo){updateVerticalScroll(scrollTop);return}var from=Math.max(visible.from-100,0),to=Math.min(doc.size,visible.to+100);if(showingFrom<from&&from-showingFrom<20)from=showingFrom;if(showingTo>to&&showingTo-to<20)to=Math.min(doc.size,showingTo);var intact=changes===true?[]:computeIntact([{from:showingFrom,to:showingTo,domStart:0}],changes);var intactLines=0;for(var i=0;i<intact.length;++i){var range=intact[i];if(range.from<from){range.domStart+=from-range.from;85range.from=from}if(range.to>to)range.to=to;if(range.from>=range.to)intact.splice(i--,1);else intactLines+=range.to-range.from}if(intactLines==to-from&&from==showingFrom&&to==showingTo){updateVerticalScroll(scrollTop);return}intact.sort(function(a,b){return a.domStart-b.domStart});var th=textHeight(),gutterDisplay=gutter.style.display;lineDiv.style.display="none";patchDisplay(from,to,intact);lineDiv.style.display=gutter.style.display="";var different=from!=showingFrom||to!=showingTo||lastSizeC!=scroller.clientHeight+86th;if(different)lastSizeC=scroller.clientHeight+th;if(from!=showingFrom||to!=showingTo&&options.onViewportChange)setTimeout(function(){if(options.onViewportChange)options.onViewportChange(instance,from,to)});showingFrom=from;showingTo=to;displayOffset=heightAtLine(doc,from);startWorker(100);if(lineDiv.childNodes.length!=showingTo-showingFrom)throw new Error("BAD PATCH! "+JSON.stringify(intact)+" size="+(showingTo-showingFrom)+" nodes="+lineDiv.childNodes.length);function checkHeights(){var curNode=87lineDiv.firstChild,heightChanged=false;doc.iter(showingFrom,showingTo,function(line){if(!curNode)return;if(!line.hidden){var height=Math.round(curNode.offsetHeight/th)||1;if(line.height!=height){updateLineHeight(line,height);gutterDirty=heightChanged=true}}curNode=curNode.nextSibling});return heightChanged}if(options.lineWrapping)checkHeights();gutter.style.display=gutterDisplay;if(different||gutterDirty)updateGutter()&&options.lineWrapping&&checkHeights()&&updateGutter();updateVerticalScroll(scrollTop);88updateSelection();if(!suppressCallback&&options.onUpdate)options.onUpdate(instance);return true}function computeIntact(intact,changes){for(var i=0,l=changes.length||0;i<l;++i){var change=changes[i],intact2=[],diff=change.diff||0;for(var j=0,l2=intact.length;j<l2;++j){var range=intact[j];if(change.to<=range.from&&change.diff)intact2.push({from:range.from+diff,to:range.to+diff,domStart:range.domStart});else if(change.to<=range.from||change.from>=range.to)intact2.push(range);else{if(change.from>range.from)intact2.push({from:range.from,89to:change.from,domStart:range.domStart});if(change.to<range.to)intact2.push({from:change.to+diff,to:range.to+diff,domStart:range.domStart+(change.to-range.from)})}}intact=intact2}return intact}function patchDisplay(from,to,intact){function killNode(node){var tmp=node.nextSibling;node.parentNode.removeChild(node);return tmp}if(!intact.length)removeChildren(lineDiv);else{var domPos=0,curNode=lineDiv.firstChild,n;for(var i=0;i<intact.length;++i){var cur=intact[i];while(cur.domStart>domPos){curNode=killNode(curNode);90domPos++}for(var j=0,e=cur.to-cur.from;j<e;++j){curNode=curNode.nextSibling;domPos++}}while(curNode)curNode=killNode(curNode)}var nextIntact=intact.shift(),curNode=lineDiv.firstChild,j=from;doc.iter(from,to,function(line){if(nextIntact&&nextIntact.to==j)nextIntact=intact.shift();if(!nextIntact||nextIntact.from>j){if(line.hidden)var lineElement=elt("pre");else{var lineElement=lineContent(line);if(line.className)lineElement.className=line.className;if(line.bgClassName){var pre=elt("pre","\u00a0",line.bgClassName,91"position: absolute; left: 0; right: 0; top: 0; bottom: 0; z-index: -2");lineElement=elt("div",[pre,lineElement],null,"position: relative")}}lineDiv.insertBefore(lineElement,curNode)}else curNode=curNode.nextSibling;++j})}function updateGutter(){if(!options.gutter&&!options.lineNumbers)return;var hText=mover.offsetHeight,hEditor=scroller.clientHeight;gutter.style.height=(hText-hEditor<2?hEditor:hText)+"px";var fragment=document.createDocumentFragment(),i=showingFrom,normalNode;doc.iter(showingFrom,92Math.max(showingTo,showingFrom+1),function(line){if(line.hidden)fragment.appendChild(elt("pre"));else{var marker=line.gutterMarker;var text=options.lineNumbers?options.lineNumberFormatter(i+options.firstLineNumber):null;if(marker&&marker.text)text=marker.text.replace("%N%",text!=null?text:"");else if(text==null)text="\u00a0";var markerElement=fragment.appendChild(elt("pre",null,marker&&marker.style));markerElement.innerHTML=text;for(var j=1;j<line.height;++j){markerElement.appendChild(elt("br"));93markerElement.appendChild(document.createTextNode("\u00a0"))}if(!marker)normalNode=i}++i});gutter.style.display="none";removeChildrenAndAdd(gutterText,fragment);if(normalNode!=null&&options.lineNumbers){var node=gutterText.childNodes[normalNode-showingFrom];var minwidth=String(doc.size).length,val=eltText(node.firstChild),pad="";while(val.length+pad.length<minwidth)pad+="\u00a0";if(pad)node.insertBefore(document.createTextNode(pad),node.firstChild)}gutter.style.display="";var resized=Math.abs((parseInt(lineSpace.style.marginLeft)||940)-gutter.offsetWidth)>2;lineSpace.style.marginLeft=gutter.offsetWidth+"px";gutterDirty=false;return resized}function updateSelection(){var collapsed=posEq(sel.from,sel.to);var fromPos=localCoords(sel.from,true);var toPos=collapsed?fromPos:localCoords(sel.to,true);var headPos=sel.inverted?fromPos:toPos,th=textHeight();var wrapOff=eltOffset(wrapper),lineOff=eltOffset(lineDiv);inputDiv.style.top=Math.max(0,Math.min(scroller.offsetHeight,headPos.y+lineOff.top-wrapOff.top))+"px";inputDiv.style.left=Math.max(0,95Math.min(scroller.offsetWidth,headPos.x+lineOff.left-wrapOff.left))+"px";if(collapsed||options.showCursorWhenSelecting){cursor.style.top=headPos.y+"px";cursor.style.left=(options.lineWrapping?Math.min(headPos.x,lineSpace.offsetWidth):headPos.x)+"px";cursor.style.display=""}else cursor.style.display="none";if(!collapsed){var sameLine=fromPos.y==toPos.y,fragment=document.createDocumentFragment();var clientWidth=lineSpace.clientWidth||lineSpace.offsetWidth;var clientHeight=lineSpace.clientHeight||lineSpace.offsetHeight;96var add=function(left,top,right,height){var rstyle=quirksMode?"width: "+(!right?clientWidth:clientWidth-right-left)+"px":"right: "+(right-1)+"px";fragment.appendChild(elt("div",null,"CodeMirror-selected","position: absolute; left: "+left+"px; top: "+top+"px; "+rstyle+"; height: "+height+"px"))};if(sel.from.ch&&fromPos.y>=0){var right=sameLine?clientWidth-toPos.x:0;add(fromPos.x,fromPos.y,right,th)}var middleStart=Math.max(0,fromPos.y+(sel.from.ch?th:0));var middleHeight=Math.min(toPos.y,clientHeight)-97middleStart;if(middleHeight>.2*th)add(0,middleStart,0,middleHeight);if((!sameLine||!sel.from.ch)&&toPos.y<clientHeight-.5*th)add(0,toPos.y,clientWidth-toPos.x,th);removeChildrenAndAdd(selectionDiv,fragment);selectionDiv.style.display=""}else selectionDiv.style.display="none"}function setShift(val){if(val)shiftSelecting=shiftSelecting||(sel.inverted?sel.to:sel.from);else shiftSelecting=null}function setSelectionUser(from,to){var sh=shiftSelecting&&clipPos(shiftSelecting);if(sh)if(posLess(sh,from))from=98sh;else if(posLess(to,sh))to=sh;setSelection(from,to);userSelChange=true}function setSelection(from,to,oldFrom,oldTo){goalColumn=null;if(oldFrom==null){oldFrom=sel.from.line;oldTo=sel.to.line}if(posEq(sel.from,from)&&posEq(sel.to,to))return;if(posLess(to,from)){var tmp=to;to=from;from=tmp}if(from.line!=oldFrom){var from1=skipHidden(from,oldFrom,sel.from.ch);if(!from1)setLineHidden(from.line,false);else from=from1}if(to.line!=oldTo)to=skipHidden(to,oldTo,sel.to.ch);if(posEq(from,to))sel.inverted=false;99else if(posEq(from,sel.to))sel.inverted=false;else if(posEq(to,sel.from))sel.inverted=true;if(options.autoClearEmptyLines&&posEq(sel.from,sel.to)){var head=sel.inverted?from:to;if(head.line!=sel.from.line&&sel.from.line<doc.size){var oldLine=getLine(sel.from.line);if(/^\s+$/.test(oldLine.text))setTimeout(operation(function(){if(oldLine.parent&&/^\s+$/.test(oldLine.text)){var no=lineNo(oldLine);replaceRange("",{line:no,ch:0},{line:no,ch:oldLine.text.length})}},10))}}sel.from=from;sel.to=to;selectionChanged=100true}function skipHidden(pos,oldLine,oldCh){function getNonHidden(dir){var lNo=pos.line+dir,end=dir==1?doc.size:-1;while(lNo!=end){var line=getLine(lNo);if(!line.hidden){var ch=pos.ch;if(toEnd||ch>oldCh||ch>line.text.length)ch=line.text.length;return{line:lNo,ch:ch}}lNo+=dir}}var line=getLine(pos.line);var toEnd=pos.ch==line.text.length&&pos.ch!=oldCh;if(!line.hidden)return pos;if(pos.line>=oldLine)return getNonHidden(1)||getNonHidden(-1);else return getNonHidden(-1)||getNonHidden(1)}function setCursor(line,101ch,user){var pos=clipPos({line:line,ch:ch||0});(user?setSelectionUser:setSelection)(pos,pos)}function clipLine(n){return Math.max(0,Math.min(n,doc.size-1))}function clipPos(pos){if(pos.line<0)return{line:0,ch:0};if(pos.line>=doc.size)return{line:doc.size-1,ch:getLine(doc.size-1).text.length};var ch=pos.ch,linelen=getLine(pos.line).text.length;if(ch==null||ch>linelen)return{line:pos.line,ch:linelen};else if(ch<0)return{line:pos.line,ch:0};else return pos}function findPosH(dir,unit){var end=sel.inverted?102sel.from:sel.to,line=end.line,ch=end.ch;var lineObj=getLine(line);function findNextLine(){for(var l=line+dir,e=dir<0?-1:doc.size;l!=e;l+=dir){var lo=getLine(l);if(!lo.hidden){line=l;lineObj=lo;return true}}}function moveOnce(boundToLine){if(ch==(dir<0?0:lineObj.text.length))if(!boundToLine&&findNextLine())ch=dir<0?lineObj.text.length:0;else return false;else ch+=dir;return true}if(unit=="char")moveOnce();else if(unit=="column")moveOnce(true);else if(unit=="word"){var sawWord=false;for(;;){if(dir<1030)if(!moveOnce())break;if(isWordChar(lineObj.text.charAt(ch)))sawWord=true;else if(sawWord){if(dir<0){dir=1;moveOnce()}break}if(dir>0)if(!moveOnce())break}}return{line:line,ch:ch}}function moveH(dir,unit){var pos=dir<0?sel.from:sel.to;if(shiftSelecting||posEq(sel.from,sel.to))pos=findPosH(dir,unit);setCursor(pos.line,pos.ch,true)}function deleteH(dir,unit){if(!posEq(sel.from,sel.to))replaceRange("",sel.from,sel.to);else if(dir<0)replaceRange("",findPosH(dir,unit),sel.to);else replaceRange("",sel.from,104findPosH(dir,unit));userSelChange=true}function moveV(dir,unit){var dist=0,pos=localCoords(sel.inverted?sel.from:sel.to,true);if(goalColumn!=null)pos.x=goalColumn;if(unit=="page"){var screen=Math.min(scroller.clientHeight,window.innerHeight||document.documentElement.clientHeight);var target=coordsChar(pos.x,pos.y+screen*dir)}else if(unit=="line"){var th=textHeight();var target=coordsChar(pos.x,pos.y+.5*th+dir*th)}if(unit=="page")scrollbar.scrollTop+=localCoords(target,true).y-pos.y;setCursor(target.line,105target.ch,true);goalColumn=pos.x}function findWordAt(pos){var line=getLine(pos.line).text;var start=pos.ch,end=pos.ch;if(line){if(pos.after===false||end==line.length)--start;else++end;var startChar=line.charAt(start);var check=isWordChar(startChar)?isWordChar:/\s/.test(startChar)?function(ch){return/\s/.test(ch)}:function(ch){return!/\s/.test(ch)&&isWordChar(ch)};while(start>0&&check(line.charAt(start-1)))--start;while(end<line.length&&check(line.charAt(end)))++end}return{from:{line:pos.line,ch:start},106to:{line:pos.line,ch:end}}}function selectLine(line){setSelectionUser({line:line,ch:0},clipPos({line:line+1,ch:0}))}function indentSelected(mode){if(posEq(sel.from,sel.to))return indentLine(sel.from.line,mode);var e=sel.to.line-(sel.to.ch?0:1);for(var i=sel.from.line;i<=e;++i)indentLine(i,mode)}function indentLine(n,how){if(!how)how="add";if(how=="smart")if(!mode.indent)how="prev";else var state=getStateBefore(n);var line=getLine(n),curSpace=line.indentation(options.tabSize),curSpaceString=line.text.match(/^\s*/)[0],107indentation;if(how=="smart"){indentation=mode.indent(state,line.text.slice(curSpaceString.length),line.text);if(indentation==Pass)how="prev"}if(how=="prev")if(n)indentation=getLine(n-1).indentation(options.tabSize);else indentation=0;else if(how=="add")indentation=curSpace+options.indentUnit;else if(how=="subtract")indentation=curSpace-options.indentUnit;indentation=Math.max(0,indentation);var diff=indentation-curSpace;var indentString="",pos=0;if(options.indentWithTabs)for(var i=Math.floor(indentation/108options.tabSize);i;--i){pos+=options.tabSize;indentString+="\t"}if(pos<indentation)indentString+=spaceStr(indentation-pos);if(indentString!=curSpaceString)replaceRange(indentString,{line:n,ch:0},{line:n,ch:curSpaceString.length});line.stateAfter=null}function loadMode(){mode=CodeMirror.getMode(options,options.mode);doc.iter(0,doc.size,function(line){line.stateAfter=null});frontier=0;startWorker(100)}function gutterChanged(){var visible=options.gutter||options.lineNumbers;gutter.style.display=visible?109"":"none";if(visible)gutterDirty=true;else lineDiv.parentNode.style.marginLeft=0}function wrappingChanged(from,to){if(options.lineWrapping){wrapper.className+=" CodeMirror-wrap";var perLine=scroller.clientWidth/charWidth()-3;doc.iter(0,doc.size,function(line){if(line.hidden)return;var guess=Math.ceil(line.text.length/perLine)||1;if(guess!=1)updateLineHeight(line,guess)});lineSpace.style.minWidth=widthForcer.style.left=""}else{wrapper.className=wrapper.className.replace(" CodeMirror-wrap","");computeMaxLength();110doc.iter(0,doc.size,function(line){if(line.height!=1&&!line.hidden)updateLineHeight(line,1)})}changes.push({from:0,to:doc.size})}function themeChanged(){scroller.className=scroller.className.replace(/\s*cm-s-\S+/g,"")+options.theme.replace(/(^|\s)\s*/g," cm-s-")}function keyMapChanged(){var style=keyMap[options.keyMap].style;wrapper.className=wrapper.className.replace(/\s*cm-keymap-\S+/g,"")+(style?" cm-keymap-"+style:"")}function TextMarker(type,style){this.lines=[];this.type=type;if(style)this.style=111style}TextMarker.prototype.clear=operation(function(){var min,max;for(var i=0;i<this.lines.length;++i){var line=this.lines[i];var span=getMarkedSpanFor(line.markedSpans,this);if(span.from!=null)min=lineNo(line);if(span.to!=null)max=lineNo(line);line.markedSpans=removeMarkedSpan(line.markedSpans,span)}if(min!=null)changes.push({from:min,to:max+1});this.lines.length=0;this.explicitlyCleared=true});TextMarker.prototype.find=function(){var from,to;for(var i=0;i<this.lines.length;++i){var line=this.lines[i];112var span=getMarkedSpanFor(line.markedSpans,this);if(span.from!=null||span.to!=null){var found=lineNo(line);if(span.from!=null)from={line:found,ch:span.from};if(span.to!=null)to={line:found,ch:span.to}}}if(this.type=="bookmark")return from;return from&&{from:from,to:to}};function markText(from,to,className,options){from=clipPos(from);to=clipPos(to);var marker=new TextMarker("range",className);if(options)for(var opt in options)if(options.hasOwnProperty(opt))marker[opt]=options[opt];var curLine=from.line;113doc.iter(curLine,to.line+1,function(line){var span={from:curLine==from.line?from.ch:null,to:curLine==to.line?to.ch:null,marker:marker};line.markedSpans=(line.markedSpans||[]).concat([span]);marker.lines.push(line);++curLine});changes.push({from:from.line,to:to.line+1});return marker}function setBookmark(pos){pos=clipPos(pos);var marker=new TextMarker("bookmark"),line=getLine(pos.line);history.addChange(pos.line,1,[newHL(line.text,line.markedSpans)],true);var span={from:pos.ch,to:pos.ch,marker:marker};114line.markedSpans=(line.markedSpans||[]).concat([span]);marker.lines.push(line);return marker}function findMarksAt(pos){pos=clipPos(pos);var markers=[],spans=getLine(pos.line).markedSpans;if(spans)for(var i=0;i<spans.length;++i){var span=spans[i];if((span.from==null||span.from<=pos.ch)&&(span.to==null||span.to>=pos.ch))markers.push(span.marker)}return markers}function addGutterMarker(line,text,className){if(typeof line=="number")line=getLine(clipLine(line));line.gutterMarker={text:text,style:className};115gutterDirty=true;return line}function removeGutterMarker(line){if(typeof line=="number")line=getLine(clipLine(line));line.gutterMarker=null;gutterDirty=true}function changeLine(handle,op){var no=handle,line=handle;if(typeof handle=="number")line=getLine(clipLine(handle));else no=lineNo(handle);if(no==null)return null;if(op(line,no))changes.push({from:no,to:no+1});else return null;return line}function setLineClass(handle,className,bgClassName){return changeLine(handle,function(line){if(line.className!=116className||line.bgClassName!=bgClassName){line.className=className;line.bgClassName=bgClassName;return true}})}function setLineHidden(handle,hidden){return changeLine(handle,function(line,no){if(line.hidden!=hidden){line.hidden=hidden;if(!options.lineWrapping)if(hidden&&line.text.length==maxLine.text.length)updateMaxLine=true;else if(!hidden&&line.text.length>maxLine.text.length){maxLine=line;updateMaxLine=false}updateLineHeight(line,hidden?0:1);var fline=sel.from.line,tline=sel.to.line;if(hidden&&117(fline==no||tline==no)){var from=fline==no?skipHidden({line:fline,ch:0},fline,0):sel.from;var to=tline==no?skipHidden({line:tline,ch:0},tline,0):sel.to;if(!to)return;setSelection(from,to)}return gutterDirty=true}})}function lineInfo(line){if(typeof line=="number"){if(!isLine(line))return null;var n=line;line=getLine(line);if(!line)return null}else{var n=lineNo(line);if(n==null)return null}var marker=line.gutterMarker;return{line:n,handle:line,text:line.text,markerText:marker&&marker.text,markerClass:marker&&118marker.style,lineClass:line.className,bgClass:line.bgClassName}}function measureLine(line,ch){if(ch==0)return{top:0,left:0};var pre=lineContent(line,ch);removeChildrenAndAdd(measure,pre);var anchor=pre.anchor;var top=anchor.offsetTop,left=anchor.offsetLeft;if(ie&&top==0&&left==0){var backup=elt("span","x");anchor.parentNode.insertBefore(backup,anchor.nextSibling);top=backup.offsetTop}return{top:top,left:left}}function localCoords(pos,inLineWrap){var x,lh=textHeight(),y=lh*(heightAtLine(doc,pos.line)-119(inLineWrap?displayOffset:0));if(pos.ch==0)x=0;else{var sp=measureLine(getLine(pos.line),pos.ch);x=sp.left;if(options.lineWrapping)y+=Math.max(0,sp.top)}return{x:x,y:y,yBot:y+lh}}function coordsChar(x,y){var th=textHeight(),cw=charWidth(),heightPos=displayOffset+Math.floor(y/th);if(heightPos<0)return{line:0,ch:0};var lineNo=lineAtHeight(doc,heightPos);if(lineNo>=doc.size)return{line:doc.size-1,ch:getLine(doc.size-1).text.length};var lineObj=getLine(lineNo),text=lineObj.text;var tw=options.lineWrapping,120innerOff=tw?heightPos-heightAtLine(doc,lineNo):0;if(x<=0&&innerOff==0)return{line:lineNo,ch:0};var wrongLine=false;function getX(len){var sp=measureLine(lineObj,len);if(tw){var off=Math.round(sp.top/th);wrongLine=off!=innerOff;return Math.max(0,sp.left+(off-innerOff)*scroller.clientWidth)}return sp.left}var from=0,fromX=0,to=text.length,toX;var estimated=Math.min(to,Math.ceil((x+innerOff*scroller.clientWidth*.9)/cw));for(;;){var estX=getX(estimated);if(estX<=x&&estimated<to)estimated=Math.min(to,121Math.ceil(estimated*1.2));else{toX=estX;to=estimated;break}}if(x>toX)return{line:lineNo,ch:to};estimated=Math.floor(to*.8);estX=getX(estimated);if(estX<x){from=estimated;fromX=estX}for(;;){if(to-from<=1){var after=x-fromX<toX-x;return{line:lineNo,ch:after?from:to,after:after}}var middle=Math.ceil((from+to)/2),middleX=getX(middle);if(middleX>x){to=middle;toX=middleX;if(wrongLine)toX+=1E3}else{from=middle;fromX=middleX}}}function pageCoords(pos){var local=localCoords(pos,true),off=eltOffset(lineSpace);122return{x:off.left+local.x,y:off.top+local.y,yBot:off.top+local.yBot}}var cachedHeight,cachedHeightFor,measurePre;function textHeight(){if(measurePre==null){measurePre=elt("pre");for(var i=0;i<49;++i){measurePre.appendChild(document.createTextNode("x"));measurePre.appendChild(elt("br"))}measurePre.appendChild(document.createTextNode("x"))}var offsetHeight=lineDiv.clientHeight;if(offsetHeight==cachedHeightFor)return cachedHeight;cachedHeightFor=offsetHeight;removeChildrenAndAdd(measure,measurePre.cloneNode(true));123cachedHeight=measure.firstChild.offsetHeight/50||1;removeChildren(measure);return cachedHeight}var cachedWidth,cachedWidthFor=0;function charWidth(){if(scroller.clientWidth==cachedWidthFor)return cachedWidth;cachedWidthFor=scroller.clientWidth;var anchor=elt("span","x");var pre=elt("pre",[anchor]);removeChildrenAndAdd(measure,pre);return cachedWidth=anchor.offsetWidth||10}function paddingTop(){return lineSpace.offsetTop}function paddingLeft(){return lineSpace.offsetLeft}function posFromMouse(e,liberal){var offW=124eltOffset(scroller,true),x,y;try{x=e.clientX;y=e.clientY}catch(e$2){return null}if(!liberal&&(x-offW.left>scroller.clientWidth||y-offW.top>scroller.clientHeight))return null;var offL=eltOffset(lineSpace,true);return coordsChar(x-offL.left,y-offL.top)}var detectingSelectAll;function onContextMenu(e){var pos=posFromMouse(e),scrollPos=scrollbar.scrollTop;if(!pos||opera)return;if(posEq(sel.from,sel.to)||posLess(pos,sel.from)||!posLess(pos,sel.to))operation(setCursor)(pos.line,pos.ch);var oldCSS=input.style.cssText;125inputDiv.style.position="absolute";input.style.cssText="position: fixed; width: 30px; height: 30px; top: "+(e.clientY-5)+"px; left: "+(e.clientX-5)+"px; z-index: 1000; background: white; "+"border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);";focusInput();resetInput(true);if(posEq(sel.from,sel.to))input.value=prevInput=" ";function rehide(){inputDiv.style.position="relative";input.style.cssText=oldCSS;if(ie_lt9)scrollbar.scrollTop=scrollPos;slowPoll();if(input.selectionStart!=126null){clearTimeout(detectingSelectAll);var extval=input.value=" "+(posEq(sel.from,sel.to)?"":input.value),i=0;prevInput=" ";input.selectionStart=1;input.selectionEnd=extval.length;detectingSelectAll=setTimeout(function poll(){if(prevInput==" "&&input.selectionStart==0)operation(commands.selectAll)(instance);else if(i++<10)detectingSelectAll=setTimeout(poll,500);else resetInput()},200)}}if(gecko){e_stop(e);var mouseup=connect(window,"mouseup",function(){mouseup();setTimeout(rehide,20)},true)}else setTimeout(rehide,12750)}function restartBlink(){clearInterval(blinker);var on=true;cursor.style.visibility="";blinker=setInterval(function(){cursor.style.visibility=(on=!on)?"":"hidden"},options.cursorBlinkRate)}var matching={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"};function matchBrackets(autoclear){var head=sel.inverted?sel.from:sel.to,line=getLine(head.line),pos=head.ch-1;var match=pos>=0&&matching[line.text.charAt(pos)]||matching[line.text.charAt(++pos)];if(!match)return;var ch=match.charAt(0),forward=128match.charAt(1)==">",d=forward?1:-1,st=line.styles;for(var off=pos+1,i=0,e=st.length;i<e;i+=2)if((off-=st[i].length)<=0){var style=st[i+1];break}var stack=[line.text.charAt(pos)],re=/[(){}[\]]/;function scan(line,from,to){if(!line.text)return;var st=line.styles,pos=forward?0:line.text.length-1,cur;for(var i=forward?0:st.length-2,e=forward?st.length:-2;i!=e;i+=2*d){var text=st[i];if(st[i+1]!=style){pos+=d*text.length;continue}for(var j=forward?0:text.length-1,te=forward?text.length:-1;j!=te;j+=d,pos+=129d)if(pos>=from&&pos<to&&re.test(cur=text.charAt(j))){var match=matching[cur];if(match.charAt(1)==">"==forward)stack.push(cur);else if(stack.pop()!=match.charAt(0))return{pos:pos,match:false};else if(!stack.length)return{pos:pos,match:true}}}}for(var i=head.line,e=forward?Math.min(i+100,doc.size):Math.max(-1,i-100);i!=e;i+=d){var line=getLine(i),first=i==head.line;var found=scan(line,first&&forward?pos+1:0,first&&!forward?pos:line.text.length);if(found)break}if(!found)found={pos:null,match:false};130var style=found.match?"CodeMirror-matchingbracket":"CodeMirror-nonmatchingbracket";var one=markText({line:head.line,ch:pos},{line:head.line,ch:pos+1},style),two=found.pos!=null&&markText({line:i,ch:found.pos},{line:i,ch:found.pos+1},style);var clear=operation(function(){one.clear();two&&two.clear()});if(autoclear)setTimeout(clear,800);else bracketHighlighted=clear}function findStartLine(n){var minindent,minline;for(var search=n,lim=n-40;search>lim;--search){if(search==0)return 0;var line=getLine(search-1311);if(line.stateAfter)return search;var indented=line.indentation(options.tabSize);if(minline==null||minindent>indented){minline=search-1;minindent=indented}}return minline}function getStateBefore(n){var pos=findStartLine(n),state=pos&&getLine(pos-1).stateAfter;if(!state)state=startState(mode);else state=copyState(mode,state);doc.iter(pos,n,function(line){line.process(mode,state,options.tabSize);line.stateAfter=pos==n-1||pos%5==0?copyState(mode,state):null});return state}function highlightWorker(){if(frontier>=132showingTo)return;var end=+new Date+options.workTime,state=copyState(mode,getStateBefore(frontier));var startFrontier=frontier;doc.iter(frontier,showingTo,function(line){if(frontier>=showingFrom){line.highlight(mode,state,options.tabSize);line.stateAfter=copyState(mode,state)}else{line.process(mode,state,options.tabSize);line.stateAfter=frontier%5==0?copyState(mode,state):null}++frontier;if(+new Date>end){startWorker(options.workDelay);return true}});if(showingTo>startFrontier&&frontier>=showingFrom)operation(function(){changes.push({from:startFrontier,133to:frontier})})()}function startWorker(time){if(frontier<showingTo)highlight.set(time,highlightWorker)}function startOperation(){updateInput=userSelChange=textChanged=null;changes=[];selectionChanged=false;callbacks=[]}function endOperation(){if(updateMaxLine)computeMaxLength();if(maxLineChanged&&!options.lineWrapping){var cursorWidth=widthForcer.offsetWidth,left=measureLine(maxLine,maxLine.text.length).left;if(!ie_lt8){widthForcer.style.left=left+"px";lineSpace.style.minWidth=left+cursorWidth+"px"}maxLineChanged=134false}var newScrollPos,updated;if(selectionChanged){var coords=calculateCursorCoords();newScrollPos=calculateScrollPos(coords.x,coords.y,coords.x,coords.yBot)}if(changes.length||newScrollPos&&newScrollPos.scrollTop!=null)updated=updateDisplay(changes,true,newScrollPos&&newScrollPos.scrollTop);if(!updated){if(selectionChanged)updateSelection();if(gutterDirty)updateGutter()}if(newScrollPos)scrollCursorIntoView();if(selectionChanged)restartBlink();if(focused&&(updateInput===true||updateInput!==false&&135selectionChanged))resetInput(userSelChange);if(selectionChanged&&options.matchBrackets)setTimeout(operation(function(){if(bracketHighlighted){bracketHighlighted();bracketHighlighted=null}if(posEq(sel.from,sel.to))matchBrackets(false)}),20);var sc=selectionChanged,cbs=callbacks;if(textChanged&&options.onChange&&instance)options.onChange(instance,textChanged);if(sc&&options.onCursorActivity)options.onCursorActivity(instance);for(var i=0;i<cbs.length;++i)cbs[i](instance);if(updated&&options.onUpdate)options.onUpdate(instance)}136var nestedOperation=0;function operation(f){return function(){if(!nestedOperation++)startOperation();try{var result=f.apply(this,arguments)}finally{if(!--nestedOperation)endOperation()}return result}}function compoundChange(f){history.startCompound();try{return f()}finally{history.endCompound()}}for(var ext in extensions)if(extensions.propertyIsEnumerable(ext)&&!instance.propertyIsEnumerable(ext))instance[ext]=extensions[ext];for(var i=0;i<initHooks.length;++i)initHooks[i](instance);return instance}137CodeMirror.defaults={value:"",mode:null,theme:"default",indentUnit:2,indentWithTabs:false,smartIndent:true,tabSize:4,keyMap:"default",extraKeys:null,electricChars:true,autoClearEmptyLines:false,onKeyEvent:null,onDragEvent:null,lineWrapping:false,lineNumbers:false,gutter:false,fixedGutter:false,firstLineNumber:1,showCursorWhenSelecting:false,readOnly:false,dragDrop:true,onChange:null,onCursorActivity:null,onViewportChange:null,onGutterClick:null,onUpdate:null,onFocus:null,onBlur:null,onScroll:null,138matchBrackets:false,cursorBlinkRate:530,workTime:100,workDelay:200,pollInterval:100,undoDepth:40,tabindex:null,autofocus:null,lineNumberFormatter:function(integer){return integer}};var ios=/AppleWebKit/.test(navigator.userAgent)&&/Mobile\/\w+/.test(navigator.userAgent);var mac=ios||/Mac/.test(navigator.platform);var win=/Win/.test(navigator.platform);var modes=CodeMirror.modes={},mimeModes=CodeMirror.mimeModes={};CodeMirror.defineMode=function(name,mode){if(!CodeMirror.defaults.mode&&name!="null")CodeMirror.defaults.mode=139name;if(arguments.length>2){mode.dependencies=[];for(var i=2;i<arguments.length;++i)mode.dependencies.push(arguments[i])}modes[name]=mode};CodeMirror.defineMIME=function(mime,spec){mimeModes[mime]=spec};CodeMirror.resolveMode=function(spec){if(typeof spec=="string"&&mimeModes.hasOwnProperty(spec))spec=mimeModes[spec];else if(typeof spec=="string"&&/^[\w\-]+\/[\w\-]+\+xml$/.test(spec))return CodeMirror.resolveMode("application/xml");if(typeof spec=="string")return{name:spec};else return spec||{name:"null"}};140CodeMirror.getMode=function(options,spec){var spec=CodeMirror.resolveMode(spec);var mfactory=modes[spec.name];if(!mfactory)return CodeMirror.getMode(options,"text/plain");var modeObj=mfactory(options,spec);if(modeExtensions.hasOwnProperty(spec.name)){var exts=modeExtensions[spec.name];for(var prop in exts){if(!exts.hasOwnProperty(prop))continue;if(modeObj.hasOwnProperty(prop))modeObj["_"+prop]=modeObj[prop];modeObj[prop]=exts[prop]}}modeObj.name=spec.name;return modeObj};CodeMirror.listModes=function(){var list=141[];for(var m in modes)if(modes.propertyIsEnumerable(m))list.push(m);return list};CodeMirror.listMIMEs=function(){var list=[];for(var m in mimeModes)if(mimeModes.propertyIsEnumerable(m))list.push({mime:m,mode:mimeModes[m]});return list};var extensions=CodeMirror.extensions={};CodeMirror.defineExtension=function(name,func){extensions[name]=func};var initHooks=[];CodeMirror.defineInitHook=function(f){initHooks.push(f)};var modeExtensions=CodeMirror.modeExtensions={};CodeMirror.extendMode=function(mode,142properties){var exts=modeExtensions.hasOwnProperty(mode)?modeExtensions[mode]:modeExtensions[mode]={};for(var prop in properties)if(properties.hasOwnProperty(prop))exts[prop]=properties[prop]};var commands=CodeMirror.commands={selectAll:function(cm){cm.setSelection({line:0,ch:0},{line:cm.lineCount()-1})},killLine:function(cm){var from=cm.getCursor(true),to=cm.getCursor(false),sel=!posEq(from,to);if(!sel&&cm.getLine(from.line).length==from.ch)cm.replaceRange("",from,{line:from.line+1,ch:0});else cm.replaceRange("",143from,sel?to:{line:from.line})},deleteLine:function(cm){var l=cm.getCursor().line;cm.replaceRange("",{line:l,ch:0},{line:l})},undo:function(cm){cm.undo()},redo:function(cm){cm.redo()},goDocStart:function(cm){cm.setCursor(0,0,true)},goDocEnd:function(cm){cm.setSelection({line:cm.lineCount()-1},null,true)},goLineStart:function(cm){cm.setCursor(cm.getCursor().line,0,true)},goLineStartSmart:function(cm){var cur=cm.getCursor();var text=cm.getLine(cur.line),firstNonWS=Math.max(0,text.search(/\S/));cm.setCursor(cur.line,144cur.ch<=firstNonWS&&cur.ch?0:firstNonWS,true)},goLineEnd:function(cm){cm.setSelection({line:cm.getCursor().line},null,true)},goLineUp:function(cm){cm.moveV(-1,"line")},goLineDown:function(cm){cm.moveV(1,"line")},goPageUp:function(cm){cm.moveV(-1,"page")},goPageDown:function(cm){cm.moveV(1,"page")},goCharLeft:function(cm){cm.moveH(-1,"char")},goCharRight:function(cm){cm.moveH(1,"char")},goColumnLeft:function(cm){cm.moveH(-1,"column")},goColumnRight:function(cm){cm.moveH(1,"column")},goWordLeft:function(cm){cm.moveH(-1,145"word")},goWordRight:function(cm){cm.moveH(1,"word")},delCharLeft:function(cm){cm.deleteH(-1,"char")},delCharRight:function(cm){cm.deleteH(1,"char")},delWordLeft:function(cm){cm.deleteH(-1,"word")},delWordRight:function(cm){cm.deleteH(1,"word")},indentAuto:function(cm){cm.indentSelection("smart")},indentMore:function(cm){cm.indentSelection("add")},indentLess:function(cm){cm.indentSelection("subtract")},insertTab:function(cm){cm.replaceSelection("\t","end")},defaultTab:function(cm){if(cm.somethingSelected())cm.indentSelection("add");146else cm.replaceSelection("\t","end")},transposeChars:function(cm){var cur=cm.getCursor(),line=cm.getLine(cur.line);if(cur.ch>0&&cur.ch<line.length-1)cm.replaceRange(line.charAt(cur.ch)+line.charAt(cur.ch-1),{line:cur.line,ch:cur.ch-1},{line:cur.line,ch:cur.ch+1})},newlineAndIndent:function(cm){cm.replaceSelection("\n","end");cm.indentLine(cm.getCursor().line)},toggleOverwrite:function(cm){cm.toggleOverwrite()}};var keyMap=CodeMirror.keyMap={};keyMap.basic={"Left":"goCharLeft","Right":"goCharRight",147"Up":"goLineUp","Down":"goLineDown","End":"goLineEnd","Home":"goLineStartSmart","PageUp":"goPageUp","PageDown":"goPageDown","Delete":"delCharRight","Backspace":"delCharLeft","Tab":"defaultTab","Shift-Tab":"indentAuto","Enter":"newlineAndIndent","Insert":"toggleOverwrite"};keyMap.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Alt-Up":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Down":"goDocEnd","Ctrl-Left":"goWordLeft",148"Ctrl-Right":"goWordRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delWordLeft","Ctrl-Delete":"delWordRight","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore",fallthrough:"basic"};keyMap.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd",149"Alt-Left":"goWordLeft","Alt-Right":"goWordRight","Cmd-Left":"goLineStart","Cmd-Right":"goLineEnd","Alt-Backspace":"delWordLeft","Ctrl-Alt-Backspace":"delWordRight","Alt-Delete":"delWordRight","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore",fallthrough:["basic","emacsy"]};keyMap["default"]=mac?keyMap.macDefault:keyMap.pcDefault;keyMap.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft",150"Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharRight","Ctrl-H":"delCharLeft","Alt-D":"delWordRight","Alt-Backspace":"delWordLeft","Ctrl-K":"killLine","Ctrl-T":"transposeChars"};function getKeyMap(val){if(typeof val=="string")return keyMap[val];else return val}function lookupKey(name,extraMap,map,handle,stop){function lookup(map){map=getKeyMap(map);var found=151map[name];if(found===false){if(stop)stop();return true}if(found!=null&&handle(found))return true;if(map.nofallthrough){if(stop)stop();return true}var fallthrough=map.fallthrough;if(fallthrough==null)return false;if(Object.prototype.toString.call(fallthrough)!="[object Array]")return lookup(fallthrough);for(var i=0,e=fallthrough.length;i<e;++i)if(lookup(fallthrough[i]))return true;return false}if(extraMap&&lookup(extraMap))return true;return lookup(map)}function isModifierKey(event){var name=keyNames[e_prop(event,152"keyCode")];return name=="Ctrl"||name=="Alt"||name=="Shift"||name=="Mod"}CodeMirror.isModifierKey=isModifierKey;CodeMirror.fromTextArea=function(textarea,options){if(!options)options={};options.value=textarea.value;if(!options.tabindex&&textarea.tabindex)options.tabindex=textarea.tabindex;if(options.autofocus==null){var hasFocus=document.body;try{hasFocus=document.activeElement}catch(e){}options.autofocus=hasFocus==textarea||textarea.getAttribute("autofocus")!=null&&hasFocus==document.body}function save(){textarea.value=153instance.getValue()}if(textarea.form){var rmSubmit=connect(textarea.form,"submit",save,true);var form=textarea.form,realSubmit=form.submit;textarea.form.submit=function wrappedSubmit(){save();form.submit=realSubmit;form.submit();form.submit=wrappedSubmit}}textarea.style.display="none";var instance=CodeMirror(function(node){textarea.parentNode.insertBefore(node,textarea.nextSibling)},options);instance.save=save;instance.getTextArea=function(){return textarea};instance.toTextArea=function(){save();154textarea.parentNode.removeChild(instance.getWrapperElement());textarea.style.display="";if(textarea.form){rmSubmit();if(typeof textarea.form.submit=="function")textarea.form.submit=realSubmit}};return instance};var gecko=/gecko\/\d/i.test(navigator.userAgent);var ie=/MSIE \d/.test(navigator.userAgent);var ie_lt8=/MSIE [1-7]\b/.test(navigator.userAgent);var ie_lt9=/MSIE [1-8]\b/.test(navigator.userAgent);var quirksMode=ie&&document.documentMode==5;var webkit=/WebKit\//.test(navigator.userAgent);var qtwebkit=155webkit&&/Qt\/\d+\.\d+/.test(navigator.userAgent);var chrome=/Chrome\//.test(navigator.userAgent);var opera=/Opera\//.test(navigator.userAgent);var safari=/Apple Computer/.test(navigator.vendor);var khtml=/KHTML\//.test(navigator.userAgent);var mac_geLion=/Mac OS X 10\D([7-9]|\d\d)\D/.test(navigator.userAgent);var opera_version=opera&&navigator.userAgent.match(/Version\/(\d*\.\d*)/);if(opera_version)opera_version=Number(opera_version[1]);var flipCtrlCmd=mac&&(qtwebkit||opera&&(opera_version==null||156opera_version<12.11));function copyState(mode,state){if(state===true)return state;if(mode.copyState)return mode.copyState(state);var nstate={};for(var n in state){var val=state[n];if(val instanceof Array)val=val.concat([]);nstate[n]=val}return nstate}CodeMirror.copyState=copyState;function startState(mode,a1,a2){return mode.startState?mode.startState(a1,a2):true}CodeMirror.startState=startState;CodeMirror.innerMode=function(mode,state){while(mode.innerMode){var info=mode.innerMode(state);state=info.state;157mode=info.mode}return info||{mode:mode,state:state}};function StringStream(string,tabSize){this.pos=this.start=0;this.string=string;this.tabSize=tabSize||8}StringStream.prototype={eol:function(){return this.pos>=this.string.length},sol:function(){return this.pos==0},peek:function(){return this.string.charAt(this.pos)||undefined},next:function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},eat:function(match){var ch=this.string.charAt(this.pos);if(typeof match=="string")var ok=158ch==match;else var ok=ch&&(match.test?match.test(ch):match(ch));if(ok){++this.pos;return ch}},eatWhile:function(match){var start=this.pos;while(this.eat(match));return this.pos>start},eatSpace:function(){var start=this.pos;while(/[\s\u00a0]/.test(this.string.charAt(this.pos)))++this.pos;return this.pos>start},skipToEnd:function(){this.pos=this.string.length},skipTo:function(ch){var found=this.string.indexOf(ch,this.pos);if(found>-1){this.pos=found;return true}},backUp:function(n){this.pos-=n},column:function(){return countColumn(this.string,159this.start,this.tabSize)},indentation:function(){return countColumn(this.string,null,this.tabSize)},match:function(pattern,consume,caseInsensitive){if(typeof pattern=="string"){var cased=function(str){return caseInsensitive?str.toLowerCase():str};if(cased(this.string).indexOf(cased(pattern),this.pos)==this.pos){if(consume!==false)this.pos+=pattern.length;return true}}else{var match=this.string.slice(this.pos).match(pattern);if(match&&match.index>0)return null;if(match&&consume!==false)this.pos+=match[0].length;160return match}},current:function(){return this.string.slice(this.start,this.pos)}};CodeMirror.StringStream=StringStream;function MarkedSpan(from,to,marker){this.from=from;this.to=to;this.marker=marker}function getMarkedSpanFor(spans,marker){if(spans)for(var i=0;i<spans.length;++i){var span=spans[i];if(span.marker==marker)return span}}function removeMarkedSpan(spans,span){var r;for(var i=0;i<spans.length;++i)if(spans[i]!=span)(r||(r=[])).push(spans[i]);return r}function markedSpansBefore(old,startCh,161endCh){if(old)for(var i=0,nw;i<old.length;++i){var span=old[i],marker=span.marker;var startsBefore=span.from==null||(marker.inclusiveLeft?span.from<=startCh:span.from<startCh);if(startsBefore||marker.type=="bookmark"&&span.from==startCh&&span.from!=endCh){var endsAfter=span.to==null||(marker.inclusiveRight?span.to>=startCh:span.to>startCh);(nw||(nw=[])).push({from:span.from,to:endsAfter?null:span.to,marker:marker})}}return nw}function markedSpansAfter(old,endCh){if(old)for(var i=0,nw;i<old.length;++i){var span=162old[i],marker=span.marker;var endsAfter=span.to==null||(marker.inclusiveRight?span.to>=endCh:span.to>endCh);if(endsAfter||marker.type=="bookmark"&&span.from==endCh){var startsBefore=span.from==null||(marker.inclusiveLeft?span.from<=endCh:span.from<endCh);(nw||(nw=[])).push({from:startsBefore?null:span.from-endCh,to:span.to==null?null:span.to-endCh,marker:marker})}}return nw}function updateMarkedSpans(oldFirst,oldLast,startCh,endCh,newText){if(!oldFirst&&!oldLast)return newText;var first=markedSpansBefore(oldFirst,163startCh);var last=markedSpansAfter(oldLast,endCh);var sameLine=newText.length==1,offset=lst(newText).length+(sameLine?startCh:0);if(first)for(var i=0;i<first.length;++i){var span=first[i];if(span.to==null){var found=getMarkedSpanFor(last,span.marker);if(!found)span.to=startCh;else if(sameLine)span.to=found.to==null?null:found.to+offset}}if(last)for(var i=0;i<last.length;++i){var span=last[i];if(span.to!=null)span.to+=offset;if(span.from==null){var found=getMarkedSpanFor(first,span.marker);if(!found){span.from=164offset;if(sameLine)(first||(first=[])).push(span)}}else{span.from+=offset;if(sameLine)(first||(first=[])).push(span)}}var newMarkers=[newHL(newText[0],first)];if(!sameLine){var gap=newText.length-2,gapMarkers;if(gap>0&&first)for(var i=0;i<first.length;++i)if(first[i].to==null)(gapMarkers||(gapMarkers=[])).push({from:null,to:null,marker:first[i].marker});for(var i=0;i<gap;++i)newMarkers.push(newHL(newText[i+1],gapMarkers));newMarkers.push(newHL(lst(newText),last))}return newMarkers}function hlText(val){return typeof val==165"string"?val:val.text}function hlSpans(val){if(typeof val=="string")return null;var spans=val.markedSpans,out=null;for(var i=0;i<spans.length;++i)if(spans[i].marker.explicitlyCleared){if(!out)out=spans.slice(0,i)}else if(out)out.push(spans[i]);return!out?spans:out.length?out:null}function newHL(text,spans){return spans?{text:text,markedSpans:spans}:text}function detachMarkedSpans(line){var spans=line.markedSpans;if(!spans)return;for(var i=0;i<spans.length;++i){var lines=spans[i].marker.lines;var ix=166indexOf(lines,line);lines.splice(ix,1)}line.markedSpans=null}function attachMarkedSpans(line,spans){if(!spans)return;for(var i=0;i<spans.length;++i)var marker=spans[i].marker.lines.push(line);line.markedSpans=spans}var eolSpanContent=" ";if(gecko||ie&&!ie_lt8)eolSpanContent="\u200b";else if(opera)eolSpanContent="";function Line(text,markedSpans){this.text=text;this.height=1;attachMarkedSpans(this,markedSpans)}Line.prototype={update:function(text,markedSpans){this.text=text;this.stateAfter=this.styles=167null;detachMarkedSpans(this);attachMarkedSpans(this,markedSpans)},highlight:function(mode,state,tabSize){var stream=new StringStream(this.text,tabSize),st=this.styles||(this.styles=[]);var pos=st.length=0;if(this.text==""&&mode.blankLine)mode.blankLine(state);while(!stream.eol()){var style=mode.token(stream,state),substr=stream.current();stream.start=stream.pos;if(pos&&st[pos-1]==style)st[pos-2]+=substr;else if(substr){st[pos++]=substr;st[pos++]=style}if(stream.pos>5E3){st[pos++]=this.text.slice(stream.pos);168st[pos++]=null;break}}},process:function(mode,state,tabSize){var stream=new StringStream(this.text,tabSize);if(this.text==""&&mode.blankLine)mode.blankLine(state);while(!stream.eol()&&stream.pos<=5E3){mode.token(stream,state);stream.start=stream.pos}},getTokenAt:function(mode,state,tabSize,ch){var txt=this.text,stream=new StringStream(txt,tabSize);while(stream.pos<ch&&!stream.eol()){stream.start=stream.pos;var style=mode.token(stream,state)}return{start:stream.start,end:stream.pos,string:stream.current(),169className:style||null,state:state}},indentation:function(tabSize){return countColumn(this.text,null,tabSize)},getContent:function(tabSize,wrapAt,compensateForWrapping){var first=true,col=0,specials=/[\t\u0000-\u0019\u200b\u2028\u2029\uFEFF]/g;var pre=elt("pre");function span_(html,text,style){if(!text)return;if(first&&ie&&text.charAt(0)==" ")text="\u00a0"+text.slice(1);first=false;if(!specials.test(text)){col+=text.length;var content=document.createTextNode(text)}else{var content=document.createDocumentFragment(),170pos=0;while(true){specials.lastIndex=pos;var m=specials.exec(text);var skipped=m?m.index-pos:text.length-pos;if(skipped){content.appendChild(document.createTextNode(text.slice(pos,pos+skipped)));col+=skipped}if(!m)break;pos+=skipped+1;if(m[0]=="\t"){var tabWidth=tabSize-col%tabSize;content.appendChild(elt("span",spaceStr(tabWidth),"cm-tab"));col+=tabWidth}else{var token=elt("span","\u2022","cm-invalidchar");token.title="\\u"+m[0].charCodeAt(0).toString(16);content.appendChild(token);col+=1}}}if(style)html.appendChild(elt("span",171[content],style));else html.appendChild(content)}var span=span_;if(wrapAt!=null){var outPos=0,anchor=pre.anchor=elt("span");span=function(html,text,style){var l=text.length;if(wrapAt>=outPos&&wrapAt<outPos+l){var cut=wrapAt-outPos;if(cut){span_(html,text.slice(0,cut),style);if(compensateForWrapping){var view=text.slice(cut-1,cut+1);if(spanAffectsWrapping.test(view))html.appendChild(elt("wbr"));else if(!ie_lt8&&/\w\w/.test(view))html.appendChild(document.createTextNode("\u200d"))}}html.appendChild(anchor);172span_(anchor,opera?text.slice(cut,cut+1):text.slice(cut),style);if(opera)span_(html,text.slice(cut+1),style);wrapAt--;outPos+=l}else{outPos+=l;span_(html,text,style);if(outPos==wrapAt&&outPos==len){setTextContent(anchor,eolSpanContent);html.appendChild(anchor)}else if(outPos>wrapAt+10&&/\s/.test(text))span=function(){}}}}var st=this.styles,allText=this.text,marked=this.markedSpans;var len=allText.length;function styleToClass(style){if(!style)return null;return"cm-"+style.replace(/ +/g," cm-")}if(!allText&&173wrapAt==null)span(pre," ");else if(!marked||!marked.length)for(var i=0,ch=0;ch<len;i+=2){var str=st[i],style=st[i+1],l=str.length;if(ch+l>len)str=str.slice(0,len-ch);ch+=l;span(pre,str,styleToClass(style))}else{marked.sort(function(a,b){return a.from-b.from});var pos=0,i=0,text="",style,sg=0;var nextChange=marked[0].from||0,marks=[],markpos=0;var advanceMarks=function(){var m;while(markpos<marked.length&&((m=marked[markpos]).from==pos||m.from==null)){if(m.marker.type=="range")marks.push(m);++markpos}nextChange=174markpos<marked.length?marked[markpos].from:Infinity;for(var i=0;i<marks.length;++i){var to=marks[i].to;if(to==null)to=Infinity;if(to==pos)marks.splice(i--,1);else nextChange=Math.min(to,nextChange)}};var m=0;while(pos<len){if(nextChange==pos)advanceMarks();var upto=Math.min(len,nextChange);while(true){if(text){var end=pos+text.length;var appliedStyle=style;for(var j=0;j<marks.length;++j){var mark=marks[j];appliedStyle=(appliedStyle?appliedStyle+" ":"")+mark.marker.style;if(mark.marker.endStyle&&mark.to===175Math.min(end,upto))appliedStyle+=" "+mark.marker.endStyle;if(mark.marker.startStyle&&mark.from===pos)appliedStyle+=" "+mark.marker.startStyle}span(pre,end>upto?text.slice(0,upto-pos):text,appliedStyle);if(end>=upto){text=text.slice(upto-pos);pos=upto;break}pos=end}text=st[i++];style=styleToClass(st[i++])}}}return pre},cleanUp:function(){this.parent=null;detachMarkedSpans(this)}};function LeafChunk(lines){this.lines=lines;this.parent=null;for(var i=0,e=lines.length,height=0;i<e;++i){lines[i].parent=176this;height+=lines[i].height}this.height=height}LeafChunk.prototype={chunkSize:function(){return this.lines.length},remove:function(at,n,callbacks){for(var i=at,e=at+n;i<e;++i){var line=this.lines[i];this.height-=line.height;line.cleanUp();if(line.handlers)for(var j=0;j<line.handlers.length;++j)callbacks.push(line.handlers[j])}this.lines.splice(at,n)},collapse:function(lines){lines.splice.apply(lines,[lines.length,0].concat(this.lines))},insertHeight:function(at,lines,height){this.height+=height;177this.lines=this.lines.slice(0,at).concat(lines).concat(this.lines.slice(at));for(var i=0,e=lines.length;i<e;++i)lines[i].parent=this},iterN:function(at,n,op){for(var e=at+n;at<e;++at)if(op(this.lines[at]))return true}};function BranchChunk(children){this.children=children;var size=0,height=0;for(var i=0,e=children.length;i<e;++i){var ch=children[i];size+=ch.chunkSize();height+=ch.height;ch.parent=this}this.size=size;this.height=height;this.parent=null}BranchChunk.prototype={chunkSize:function(){return this.size},178remove:function(at,n,callbacks){this.size-=n;for(var i=0;i<this.children.length;++i){var child=this.children[i],sz=child.chunkSize();if(at<sz){var rm=Math.min(n,sz-at),oldHeight=child.height;child.remove(at,rm,callbacks);this.height-=oldHeight-child.height;if(sz==rm){this.children.splice(i--,1);child.parent=null}if((n-=rm)==0)break;at=0}else at-=sz}if(this.size-n<25){var lines=[];this.collapse(lines);this.children=[new LeafChunk(lines)];this.children[0].parent=this}},collapse:function(lines){for(var i=1790,e=this.children.length;i<e;++i)this.children[i].collapse(lines)},insert:function(at,lines){var height=0;for(var i=0,e=lines.length;i<e;++i)height+=lines[i].height;this.insertHeight(at,lines,height)},insertHeight:function(at,lines,height){this.size+=lines.length;this.height+=height;for(var i=0,e=this.children.length;i<e;++i){var child=this.children[i],sz=child.chunkSize();if(at<=sz){child.insertHeight(at,lines,height);if(child.lines&&child.lines.length>50){while(child.lines.length>50){var spilled=180child.lines.splice(child.lines.length-25,25);var newleaf=new LeafChunk(spilled);child.height-=newleaf.height;this.children.splice(i+1,0,newleaf);newleaf.parent=this}this.maybeSpill()}break}at-=sz}},maybeSpill:function(){if(this.children.length<=10)return;var me=this;do{var spilled=me.children.splice(me.children.length-5,5);var sibling=new BranchChunk(spilled);if(!me.parent){var copy=new BranchChunk(me.children);copy.parent=me;me.children=[copy,sibling];me=copy}else{me.size-=sibling.size;me.height-=181sibling.height;var myIndex=indexOf(me.parent.children,me);me.parent.children.splice(myIndex+1,0,sibling)}sibling.parent=me.parent}while(me.children.length>10);me.parent.maybeSpill()},iter:function(from,to,op){this.iterN(from,to-from,op)},iterN:function(at,n,op){for(var i=0,e=this.children.length;i<e;++i){var child=this.children[i],sz=child.chunkSize();if(at<sz){var used=Math.min(n,sz-at);if(child.iterN(at,used,op))return true;if((n-=used)==0)break;at=0}else at-=sz}}};function getLineAt(chunk,n){while(!chunk.lines)for(var i=1820;;++i){var child=chunk.children[i],sz=child.chunkSize();if(n<sz){chunk=child;break}n-=sz}return chunk.lines[n]}function lineNo(line){if(line.parent==null)return null;var cur=line.parent,no=indexOf(cur.lines,line);for(var chunk=cur.parent;chunk;cur=chunk,chunk=chunk.parent)for(var i=0;;++i){if(chunk.children[i]==cur)break;no+=chunk.children[i].chunkSize()}return no}function lineAtHeight(chunk,h){var n=0;outer:do{for(var i=0,e=chunk.children.length;i<e;++i){var child=chunk.children[i],ch=child.height;183if(h<ch){chunk=child;continue outer}h-=ch;n+=child.chunkSize()}return n}while(!chunk.lines);for(var i=0,e=chunk.lines.length;i<e;++i){var line=chunk.lines[i],lh=line.height;if(h<lh)break;h-=lh}return n+i}function heightAtLine(chunk,n){var h=0;outer:do{for(var i=0,e=chunk.children.length;i<e;++i){var child=chunk.children[i],sz=child.chunkSize();if(n<sz){chunk=child;continue outer}n-=sz;h+=child.height}return h}while(!chunk.lines);for(var i=0;i<n;++i)h+=chunk.lines[i].height;return h}function History(){this.time=1840;this.done=[];this.undone=[];this.compound=0;this.closed=false}History.prototype={addChange:function(start,added,old){this.undone.length=0;var time=+new Date,cur=lst(this.done),last=cur&&lst(cur);var dtime=time-this.time;if(cur&&!this.closed&&this.compound)cur.push({start:start,added:added,old:old});else if(dtime>400||!last||this.closed||last.start>start+old.length||last.start+last.added<start){this.done.push([{start:start,added:added,old:old}]);this.closed=false}else{var startBefore=Math.max(0,185last.start-start),endAfter=Math.max(0,start+old.length-(last.start+last.added));for(var i=startBefore;i>0;--i)last.old.unshift(old[i-1]);for(var i=endAfter;i>0;--i)last.old.push(old[old.length-i]);if(startBefore)last.start=start;last.added+=added-(old.length-startBefore-endAfter)}this.time=time},startCompound:function(){if(!this.compound++)this.closed=true},endCompound:function(){if(!--this.compound)this.closed=true}};function stopMethod(){e_stop(this)}function addStop(event){if(!event.stop)event.stop=186stopMethod;return event}function e_preventDefault(e){if(e.preventDefault)e.preventDefault();else e.returnValue=false}function e_stopPropagation(e){if(e.stopPropagation)e.stopPropagation();else e.cancelBubble=true}function e_stop(e){e_preventDefault(e);e_stopPropagation(e)}CodeMirror.e_stop=e_stop;CodeMirror.e_preventDefault=e_preventDefault;CodeMirror.e_stopPropagation=e_stopPropagation;function e_target(e){return e.target||e.srcElement}function e_button(e){var b=e.which;if(b==null)if(e.button&1)b=1871;else if(e.button&2)b=3;else if(e.button&4)b=2;if(mac&&e.ctrlKey&&b==1)b=3;return b}function e_prop(e,prop){var overridden=e.override&&e.override.hasOwnProperty(prop);return overridden?e.override[prop]:e[prop]}function connect(node,type,handler,disconnect){if(typeof node.addEventListener=="function"){node.addEventListener(type,handler,false);if(disconnect)return function(){node.removeEventListener(type,handler,false)}}else{var wrapHandler=function(event){handler(event||window.event)};node.attachEvent("on"+188type,wrapHandler);if(disconnect)return function(){node.detachEvent("on"+type,wrapHandler)}}}CodeMirror.connect=connect;function Delayed(){this.id=null}Delayed.prototype={set:function(ms,f){clearTimeout(this.id);this.id=setTimeout(f,ms)}};var Pass=CodeMirror.Pass={toString:function(){return"CodeMirror.Pass"}};var dragAndDrop=function(){if(ie_lt9)return false;var div=elt("div");return"draggable"in div||"dragDrop"in div}();var lineSep=function(){var te=elt("textarea");te.value="foo\nbar";if(te.value.indexOf("\r")>189-1)return"\r\n";return"\n"}();var spanAffectsWrapping=/^$/;if(gecko)spanAffectsWrapping=/$'/;else if(safari)spanAffectsWrapping=/\-[^ \-?]|\?[^ !'"\),.\-\/:;\?\]\}]/;else if(chrome)spanAffectsWrapping=/\-[^ \-\.?]|\?[^ \-\.?\]\}:;!'"\),\/]|[\.!"#&%\)*+,:;=>\]|\}~][\(\{\[<]|\$'/;function countColumn(string,end,tabSize){if(end==null){end=string.search(/[^\s\u00a0]/);if(end==-1)end=string.length}for(var i=0,n=0;i<end;++i)if(string.charAt(i)=="\t")n+=tabSize-n%tabSize;else++n;return n}function eltOffset(node,190screen){try{var box=node.getBoundingClientRect();box={top:box.top,left:box.left}}catch(e){box={top:0,left:0}}if(!screen)if(window.pageYOffset==null){var t=document.documentElement||document.body.parentNode;if(t.scrollTop==null)t=document.body;box.top+=t.scrollTop;box.left+=t.scrollLeft}else{box.top+=window.pageYOffset;box.left+=window.pageXOffset}return box}function eltText(node){return node.textContent||node.innerText||node.nodeValue||""}var spaceStrs=[""];function spaceStr(n){while(spaceStrs.length<=191n)spaceStrs.push(lst(spaceStrs)+" ");return spaceStrs[n]}function lst(arr){return arr[arr.length-1]}function selectInput(node){if(ios){node.selectionStart=0;node.selectionEnd=node.value.length}else node.select()}function posEq(a,b){return a.line==b.line&&a.ch==b.ch}function posLess(a,b){return a.line<b.line||a.line==b.line&&a.ch<b.ch}function copyPos(x){return{line:x.line,ch:x.ch}}function elt(tag,content,className,style){var e=document.createElement(tag);if(className)e.className=className;if(style)e.style.cssText=192style;if(typeof content=="string")setTextContent(e,content);else if(content)for(var i=0;i<content.length;++i)e.appendChild(content[i]);return e}function removeChildren(e){e.innerHTML="";return e}function removeChildrenAndAdd(parent,e){removeChildren(parent).appendChild(e)}function setTextContent(e,str){if(ie_lt9){e.innerHTML="";e.appendChild(document.createTextNode(str))}else e.textContent=str}function editEnd(from,to){if(!to)return 0;if(!from)return to.length;for(var i=from.length,j=to.length;i>=1930&&j>=0;--i,--j)if(from.charAt(i)!=to.charAt(j))break;return j+1}function indexOf(collection,elt){if(collection.indexOf)return collection.indexOf(elt);for(var i=0,e=collection.length;i<e;++i)if(collection[i]==elt)return i;return-1}var nonASCIISingleCaseWordChar=/[\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc]/;function isWordChar(ch){return/\w/.test(ch)||ch>"\u0080"&&(ch.toUpperCase()!=ch.toLowerCase()||nonASCIISingleCaseWordChar.test(ch))}var splitLines="\n\nb".split(/\n/).length!=3?function(string){var pos=1940,result=[],l=string.length;while(pos<=l){var nl=string.indexOf("\n",pos);if(nl==-1)nl=string.length;var line=string.slice(pos,string.charAt(nl-1)=="\r"?nl-1:nl);var rt=line.indexOf("\r");if(rt!=-1){result.push(line.slice(0,rt));pos+=rt+1}else{result.push(line);pos=nl+1}}return result}:function(string){return string.split(/\r\n?|\n/)};CodeMirror.splitLines=splitLines;var hasSelection=window.getSelection?function(te){try{return te.selectionStart!=te.selectionEnd}catch(e){return false}}:function(te){try{var range=195te.ownerDocument.selection.createRange()}catch(e){}if(!range||range.parentElement()!=te)return false;return range.compareEndPoints("StartToEnd",range)!=0};CodeMirror.defineMode("null",function(){return{token:function(stream){stream.skipToEnd()}}});CodeMirror.defineMIME("text/plain","null");var keyNames={3:"Enter",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",19644:"PrintScrn",45:"Insert",46:"Delete",59:";",91:"Mod",92:"Mod",93:"Mod",109:"-",107:"=",127:"Delete",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63276:"PageUp",63277:"PageDown",63275:"End",63273:"Home",63234:"Left",63232:"Up",63235:"Right",63233:"Down",63302:"Insert",63272:"Delete"};CodeMirror.keyNames=keyNames;(function(){for(var i=0;i<10;i++)keyNames[i+48]=String(i);for(var i=65;i<=90;i++)keyNames[i]=String.fromCharCode(i);for(var i=1;i<=12;i++)keyNames[i+197111]=keyNames[i+63235]="F"+i})();CodeMirror.version="2.38";return CodeMirror}();window["CodeMirror"]=CodeMirror;(function(){CodeMirror.defaults["closeTagEnabled"]=true;CodeMirror.defaults["closeTagIndent"]=["applet","blockquote","body","button","div","dl","fieldset","form","frameset","h1","h2","h3","h4","h5","h6","head","html","iframe","layer","legend","object","ol","p","select","table","ul"];CodeMirror.defaults["closeTagVoid"]=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"];function innerXMLState(cm,state){var inner=CodeMirror.innerMode(cm.getMode(),198state);if(inner.mode.name=="xml")return inner.state}CodeMirror.defineExtension("closeTag",function(cm,ch,indent,vd){if(!cm.getOption("closeTagEnabled"))throw CodeMirror.Pass;var pos=cm.getCursor();var tok=cm.getTokenAt(pos);var state=innerXMLState(cm,tok.state);if(state)if(ch==">"){var type=state.type;if(tok.className=="tag"&&type=="closeTag")throw CodeMirror.Pass;cm.replaceSelection(">");pos={line:pos.line,ch:pos.ch+1};cm.setCursor(pos);tok=cm.getTokenAt(cm.getCursor());state=innerXMLState(cm,tok.state);199if(!state)throw CodeMirror.Pass;var type=state.type;if(tok.className=="tag"&&type!="selfcloseTag"){var tagName=state.tagName;if(tagName.length>0&&shouldClose(cm,vd,tagName))insertEndTag(cm,indent,pos,tagName);return}cm.setSelection({line:pos.line,ch:pos.ch-1},pos);cm.replaceSelection("")}else if(ch=="/")if(tok.className=="tag"&&tok.string=="<"){var ctx=state.context,tagName=ctx?ctx.tagName:"";if(tagName.length>0){completeEndTag(cm,pos,tagName);return}}throw CodeMirror.Pass;});function insertEndTag(cm,200indent,pos,tagName){if(shouldIndent(cm,indent,tagName)){cm.replaceSelection("\n\n</"+tagName+">","end");cm.indentLine(pos.line+1);cm.indentLine(pos.line+2);cm.setCursor({line:pos.line+1,ch:cm.getLine(pos.line+1).length})}else{cm.replaceSelection("</"+tagName+">");cm.setCursor(pos)}}function shouldIndent(cm,indent,tagName){if(typeof indent=="undefined"||indent==null||indent==true)indent=cm.getOption("closeTagIndent");if(!indent)indent=[];return indexOf(indent,tagName.toLowerCase())!=-1}function shouldClose(cm,201vd,tagName){if(cm.getOption("mode")=="xml")return true;if(typeof vd=="undefined"||vd==null)vd=cm.getOption("closeTagVoid");if(!vd)vd=[];return indexOf(vd,tagName.toLowerCase())==-1}function indexOf(collection,elt){if(collection.indexOf)return collection.indexOf(elt);for(var i=0,e=collection.length;i<e;++i)if(collection[i]==elt)return i;return-1}function completeEndTag(cm,pos,tagName){cm.replaceSelection("/"+tagName+">");cm.setCursor({line:pos.line,ch:pos.ch+tagName.length+2})}})();(function(){var modes=["clike","css","javascript"];for(var i=0;i<modes.length;++i)CodeMirror.extendMode(modes[i],{blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:" * "});CodeMirror.commands.newlineAndIndentContinueComment=function(cm){var pos=cm.getCursor(),token=cm.getTokenAt(pos);var mode=CodeMirror.innerMode(cm.getMode(),token.state).mode;var space;if(token.className=="comment"&&mode.blockCommentStart){var end=token.string.indexOf(mode.blockCommentEnd);var full=cm.getRange({line:pos.line,202ch:0},{line:pos.line,ch:token.end}),found;if(end!=-1&&end==token.string.length-mode.blockCommentEnd.length);else if(token.string.indexOf(mode.blockCommentStart)==0){space=full.slice(0,token.start);if(!/^\s*$/.test(space)){space="";for(var i=0;i<token.start;++i)space+=" "}}else if((found=full.indexOf(mode.blockCommentContinue))!=-1&&found+mode.blockCommentContinue.length>token.start&&/^\s*$/.test(full.slice(0,found)))space=full.slice(0,found)}if(space!=null)cm.replaceSelection("\n"+space+mode.blockCommentContinue,203"end");else cm.execCommand("newlineAndIndent")}})();(function(){CodeMirror.commands.newlineAndIndentContinueMarkdownList=function(cm){var pos=cm.getCursor(),token=cm.getTokenAt(pos);var mode=CodeMirror.innerMode(cm.getMode(),token.state).mode;var space;if(token.className=="string"){var full=cm.getRange({line:pos.line,ch:0},{line:pos.line,ch:token.end});var listStart=/\*|\d+\./,listContinue;if(token.string.search(listStart)==0){var reg=/^[\W]*(\d+)\./g;var matches=reg.exec(full);if(matches)listContinue=parseInt(matches[1])+1+". ";else listContinue=204"* ";space=full.slice(0,token.start);if(!/^\s*$/.test(space)){space="";for(var i=0;i<token.start;++i)space+=" "}}}if(space!=null)cm.replaceSelection("\n"+space+listContinue,"end");else cm.execCommand("newlineAndIndent")}})();(function(){function dialogDiv(cm,template,bottom){var wrap=cm.getWrapperElement();var dialog;dialog=wrap.appendChild(document.createElement("div"));if(bottom)dialog.className="CodeMirror-dialog CodeMirror-dialog-bottom";else dialog.className="CodeMirror-dialog CodeMirror-dialog-top";dialog.innerHTML=template;return dialog}CodeMirror.defineExtension("openDialog",function(template,callback,options){var dialog=dialogDiv(this,template,options&&options.bottom);var closed=false,me=this;function close(){if(closed)return;205closed=true;dialog.parentNode.removeChild(dialog)}var inp=dialog.getElementsByTagName("input")[0],button;if(inp){CodeMirror.connect(inp,"keydown",function(e){if(e.keyCode==13||e.keyCode==27){CodeMirror.e_stop(e);close();me.focus();if(e.keyCode==13)callback(inp.value)}});if(options&&options.value)inp.value=options.value;inp.focus();CodeMirror.connect(inp,"blur",close)}else if(button=dialog.getElementsByTagName("button")[0]){CodeMirror.connect(button,"click",function(){close();me.focus()});button.focus();206CodeMirror.connect(button,"blur",close)}return close});CodeMirror.defineExtension("openConfirm",function(template,callbacks,options){var dialog=dialogDiv(this,template,options&&options.bottom);var buttons=dialog.getElementsByTagName("button");var closed=false,me=this,blurring=1;function close(){if(closed)return;closed=true;dialog.parentNode.removeChild(dialog);me.focus()}buttons[0].focus();for(var i=0;i<buttons.length;++i){var b=buttons[i];(function(callback){CodeMirror.connect(b,"click",function(e){CodeMirror.e_preventDefault(e);207close();if(callback)callback(me)})})(callbacks[i]);CodeMirror.connect(b,"blur",function(){--blurring;setTimeout(function(){if(blurring<=0)close()},200)});CodeMirror.connect(b,"focus",function(){++blurring})}})})();CodeMirror.tagRangeFinder=function(cm,line,hideEnd){var nameStartChar="A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD";var nameChar=nameStartChar+"-:.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040";var xmlNAMERegExp=new RegExp("^["+nameStartChar+"]["+nameChar+"]*");var lineText=cm.getLine(line);var found=false;var tag=null;var pos=0;while(!found){pos=lineText.indexOf("<",pos);if(-1==208pos)return;if(pos+1<lineText.length&&lineText[pos+1]=="/"){pos++;continue}if(!lineText.substr(pos+1).match(xmlNAMERegExp)){pos++;continue}var gtPos=lineText.indexOf(">",pos+1);if(-1==gtPos){var l=line+1;var foundGt=false;var lastLine=cm.lineCount();while(l<lastLine&&!foundGt){var lt=cm.getLine(l);var gt=lt.indexOf(">");if(-1!=gt){foundGt=true;var slash=lt.lastIndexOf("/",gt);if(-1!=slash&&slash<gt){var str=lineText.substr(slash,gt-slash+1);if(!str.match(/\/\s*>/)){if(hideEnd===true)l++;return l}}}l++}found=209true}else{var slashPos=lineText.lastIndexOf("/",gtPos);if(-1==slashPos)found=true;else{var str=lineText.substr(slashPos,gtPos-slashPos+1);if(!str.match(/\/\s*>/))found=true}}if(found){var subLine=lineText.substr(pos+1);tag=subLine.match(xmlNAMERegExp);if(tag){tag=tag[0];if(-1!=lineText.indexOf("</"+tag+">",pos))found=false}else found=false}if(!found)pos++}if(found){var startTag="(\\<\\/"+tag+"\\>)|(\\<"+tag+"\\>)|(\\<"+tag+"\\s)|(\\<"+tag+"$)";var startTagRegExp=new RegExp(startTag,"g");var endTag=210"</"+tag+">";var depth=1;var l=line+1;var lastLine=cm.lineCount();while(l<lastLine){lineText=cm.getLine(l);var match=lineText.match(startTagRegExp);if(match)for(var i=0;i<match.length;i++){if(match[i]==endTag)depth--;else depth++;if(!depth){if(hideEnd===true)l++;return l}}l++}return}};211CodeMirror.braceRangeFinder=function(cm,line,hideEnd){var lineText=cm.getLine(line),at=lineText.length,startChar,tokenType;for(;;){var found=lineText.lastIndexOf("{",at);if(found<0)break;tokenType=cm.getTokenAt({line:line,ch:found}).className;if(!/^(comment|string)/.test(tokenType)){startChar=found;break}at=found-1}if(startChar==null||lineText.lastIndexOf("}")>startChar)return;var count=1,lastLine=cm.lineCount(),end;outer:for(var i=line+1;i<lastLine;++i){var text=cm.getLine(i),pos=0;for(;;){var nextOpen=212text.indexOf("{",pos),nextClose=text.indexOf("}",pos);if(nextOpen<0)nextOpen=text.length;if(nextClose<0)nextClose=text.length;pos=Math.min(nextOpen,nextClose);if(pos==text.length)break;if(cm.getTokenAt({line:i,ch:pos+1}).className==tokenType)if(pos==nextOpen)++count;else if(!--count){end=i;break outer}++pos}}if(end==null||end==line+1)return;if(hideEnd===true)end++;return end};213CodeMirror.indentRangeFinder=function(cm,line){var tabSize=cm.getOption("tabSize");var myIndent=cm.getLineHandle(line).indentation(tabSize),last;for(var i=line+1,end=cm.lineCount();i<end;++i){var handle=cm.getLineHandle(i);if(!/^\s*$/.test(handle.text)){if(handle.indentation(tabSize)<=myIndent)break;last=i}}if(!last)return null;return last+1};214CodeMirror.newFoldFunction=function(rangeFinder,markText,hideEnd){var folded=[];if(markText==null)markText='<div style="position: absolute; left: 2px; color:#600">▼</div>%N%';function isFolded(cm,n){for(var i=0;i<folded.length;++i){var start=cm.lineInfo(folded[i].start);if(!start)folded.splice(i--,1);else if(start.line==n)return{pos:i,region:folded[i]}}}function expand(cm,region){cm.clearMarker(region.start);for(var i=0;i<region.hidden.length;++i)cm.showLine(region.hidden[i])}return function(cm,215line){cm.operation(function(){var known=isFolded(cm,line);if(known){folded.splice(known.pos,1);expand(cm,known.region)}else{var end=rangeFinder(cm,line,hideEnd);if(end==null)return;var hidden=[];for(var i=line+1;i<end;++i){var handle=cm.hideLine(i);if(handle)hidden.push(handle)}var first=cm.setMarker(line,markText);var region={start:first,hidden:hidden};cm.onDeleteLine(first,function(){expand(cm,region)});folded.push(region)}})}};(function(){CodeMirror.extendMode("css",{commentStart:"/*",commentEnd:"*/",newlineAfterToken:function(type,content){return/^[;{}]$/.test(content)}});CodeMirror.extendMode("javascript",{commentStart:"/*",commentEnd:"*/",newlineAfterToken:function(type,content,textAfter,state){if(this.jsonMode)return/^[\[,{]$/.test(content)||/^}/.test(textAfter);else{if(content==";"&&state.lexical&&state.lexical.type==")")return false;return/^[;{}]$/.test(content)&&!/^;/.test(textAfter)}}});CodeMirror.extendMode("xml",216{commentStart:"\x3c!--",commentEnd:"--\x3e",newlineAfterToken:function(type,content,textAfter){return type=="tag"&&/>$/.test(content)||/^</.test(textAfter)}});CodeMirror.defineExtension("commentRange",function(isComment,from,to){var cm=this,curMode=CodeMirror.innerMode(cm.getMode(),cm.getTokenAt(from).state).mode;cm.operation(function(){if(isComment){cm.replaceRange(curMode.commentEnd,to);cm.replaceRange(curMode.commentStart,from);if(from.line==to.line&&from.ch==to.ch)cm.setCursor(from.line,from.ch+217curMode.commentStart.length)}else{var selText=cm.getRange(from,to);var startIndex=selText.indexOf(curMode.commentStart);var endIndex=selText.lastIndexOf(curMode.commentEnd);if(startIndex>-1&&endIndex>-1&&endIndex>startIndex)selText=selText.substr(0,startIndex)+selText.substring(startIndex+curMode.commentStart.length,endIndex)+selText.substr(endIndex+curMode.commentEnd.length);cm.replaceRange(selText,from,to)}})});CodeMirror.defineExtension("autoIndentRange",function(from,to){var cmInstance=this;this.operation(function(){for(var i=218from.line;i<=to.line;i++)cmInstance.indentLine(i,"smart")})});CodeMirror.defineExtension("autoFormatRange",function(from,to){var cm=this;var outer=cm.getMode(),text=cm.getRange(from,to).split("\n");var state=CodeMirror.copyState(outer,cm.getTokenAt(from).state);var tabSize=cm.getOption("tabSize");var out="",lines=0,atSol=from.ch==0;function newline(){out+="\n";atSol=true;++lines}for(var i=0;i<text.length;++i){var stream=new CodeMirror.StringStream(text[i],tabSize);while(!stream.eol()){var inner=CodeMirror.innerMode(outer,219state);var style=outer.token(stream,state),cur=stream.current();stream.start=stream.pos;if(!atSol||/\S/.test(cur)){out+=cur;atSol=false}if(!atSol&&inner.mode.newlineAfterToken&&inner.mode.newlineAfterToken(style,cur,stream.string.slice(stream.pos)||text[i+1]||"",inner.state))newline()}if(!stream.pos&&outer.blankLine)outer.blankLine(state);if(!atSol)newline()}cm.operation(function(){cm.replaceRange(out,from,to);for(var cur=from.line+1,end=from.line+lines;cur<=end;++cur)cm.indentLine(cur,"smart");cm.setSelection(from,220cm.getCursor(false))})})})();(function(){function forEach(arr,f){for(var i=0,e=arr.length;i<e;++i)f(arr[i])}function arrayContains(arr,item){if(!Array.prototype.indexOf){var i=arr.length;while(i--)if(arr[i]===item)return true;return false}return arr.indexOf(item)!=-1}function scriptHint(editor,keywords,getToken,options){var cur=editor.getCursor(),token=getToken(editor,cur),tprop=token;if(!/^[\w$_]*$/.test(token.string))token=tprop={start:cur.ch,end:cur.ch,string:"",state:token.state,className:token.string=="."?"property":null};221while(tprop.className=="property"){tprop=getToken(editor,{line:cur.line,ch:tprop.start});if(tprop.string!=".")return;tprop=getToken(editor,{line:cur.line,ch:tprop.start});if(tprop.string==")"){var level=1;do{tprop=getToken(editor,{line:cur.line,ch:tprop.start});switch(tprop.string){case ")":level++;break;case "(":level--;break;default:break}}while(level>0);tprop=getToken(editor,{line:cur.line,ch:tprop.start});if(tprop.className=="variable")tprop.className="function";else return}if(!context)var context=222[];context.push(tprop)}return{list:getCompletions(token,context,keywords,options),from:{line:cur.line,ch:token.start},to:{line:cur.line,ch:token.end}}}CodeMirror.javascriptHint=function(editor,options){return scriptHint(editor,javascriptKeywords,function(e,cur){return e.getTokenAt(cur)},options)};function getCoffeeScriptToken(editor,cur){var token=editor.getTokenAt(cur);if(cur.ch==token.start+1&&token.string.charAt(0)=="."){token.end=token.start;token.string=".";token.className="property"}else if(/^\.[\w$_]*$/.test(token.string)){token.className=223"property";token.start++;token.string=token.string.replace(/\./,"")}return token}CodeMirror.coffeescriptHint=function(editor,options){return scriptHint(editor,coffeescriptKeywords,getCoffeeScriptToken,options)};var stringProps=("charAt charCodeAt indexOf lastIndexOf substring substr slice trim trimLeft trimRight "+"toUpperCase toLowerCase split concat match replace search").split(" ");var arrayProps=("length concat join splice push pop shift unshift slice reverse sort indexOf "+"lastIndexOf every some filter forEach map reduce reduceRight ").split(" ");224var funcProps="prototype apply call bind".split(" ");var javascriptKeywords=("break case catch continue debugger default delete do else false finally for function "+"if in instanceof new null return switch throw true try typeof var void while with").split(" ");var coffeescriptKeywords=("and break catch class continue delete do else extends false finally for "+"if in instanceof isnt new no not null of off on or return switch then throw true try typeof until void while with yes").split(" ");function getCompletions(token,225context,keywords,options){var found=[],start=token.string;function maybeAdd(str){if(str.indexOf(start)==0&&!arrayContains(found,str))found.push(str)}function gatherCompletions(obj){if(typeof obj=="string")forEach(stringProps,maybeAdd);else if(obj instanceof Array)forEach(arrayProps,maybeAdd);else if(obj instanceof Function)forEach(funcProps,maybeAdd);for(var name in obj)maybeAdd(name)}if(context){var obj=context.pop(),base;if(obj.className=="variable"){if(options&&options.additionalContext)base=options.additionalContext[obj.string];226base=base||window[obj.string]}else if(obj.className=="string")base="";else if(obj.className=="atom")base=1;else if(obj.className=="function")if(window.jQuery!=null&&(obj.string=="$"||obj.string=="jQuery")&&typeof window.jQuery=="function")base=window.jQuery();else if(window._!=null&&obj.string=="_"&&typeof window._=="function")base=window._();while(base!=null&&context.length)base=base[context.pop().string];if(base!=null)gatherCompletions(base)}else{for(var v=token.state.localVars;v;v=v.next)maybeAdd(v.name);227for(var v=token.state.globalVars;v;v=v.next)maybeAdd(v.name);gatherCompletions(window);forEach(keywords,maybeAdd)}return found}})();(function(){if(!CodeMirror.modeURL)CodeMirror.modeURL="../mode/%N/%N.js";var loading={};function splitCallback(cont,n){var countDown=n;return function(){if(--countDown==0)cont()}}function ensureDeps(mode,cont){var deps=CodeMirror.modes[mode].dependencies;if(!deps)return cont();var missing=[];for(var i=0;i<deps.length;++i)if(!CodeMirror.modes.hasOwnProperty(deps[i]))missing.push(deps[i]);if(!missing.length)return cont();var split=splitCallback(cont,missing.length);for(var i=0;i<missing.length;++i)CodeMirror.requireMode(missing[i],228split)}CodeMirror.requireMode=function(mode,cont){if(typeof mode!="string")mode=mode.name;if(CodeMirror.modes.hasOwnProperty(mode))return ensureDeps(mode,cont);if(loading.hasOwnProperty(mode))return loading[mode].push(cont);var script=document.createElement("script");script.src=CodeMirror.modeURL.replace(/%N/g,mode);var others=document.getElementsByTagName("script")[0];others.parentNode.insertBefore(script,others);var list=loading[mode]=[cont];var count=0,poll=setInterval(function(){if(++count>100)return clearInterval(poll);229if(CodeMirror.modes.hasOwnProperty(mode)){clearInterval(poll);loading[mode]=null;ensureDeps(mode,function(){for(var i=0;i<list.length;++i)list[i]()})}},200)};CodeMirror.autoLoadMode=function(instance,mode){if(!CodeMirror.modes.hasOwnProperty(mode))CodeMirror.requireMode(mode,function(){instance.setOption("mode",instance.getOption("mode"))})}})();(function(){var DEFAULT_MIN_CHARS=2;function MatchHighlightState(){this.marked=[]}function getMatchHighlightState(cm){return cm._matchHighlightState||(cm._matchHighlightState=new MatchHighlightState)}function clearMarks(cm){var state=getMatchHighlightState(cm);for(var i=0;i<state.marked.length;++i)state.marked[i].clear();state.marked=[]}function markDocument(cm,className,minChars){clearMarks(cm);minChars=typeof minChars!=="undefined"?minChars:DEFAULT_MIN_CHARS;if(cm.somethingSelected()&&cm.getSelection().replace(/^\s+|\s+$/g,230"").length>=minChars){var state=getMatchHighlightState(cm);var query=cm.getSelection();cm.operation(function(){if(cm.lineCount()<2E3)for(var cursor=cm.getSearchCursor(query);cursor.findNext();)if(!(cursor.from().line===cm.getCursor(true).line&&cursor.from().ch===cm.getCursor(true).ch))state.marked.push(cm.markText(cursor.from(),cursor.to(),className))})}}CodeMirror.defineExtension("matchHighlight",function(className,minChars){markDocument(this,className,minChars)})})();CodeMirror.multiplexingMode=function(outer){var others=Array.prototype.slice.call(arguments,1);var n_others=others.length;function indexOf(string,pattern,from){if(typeof pattern=="string")return string.indexOf(pattern,from);var m=pattern.exec(from?string.slice(from):string);return m?m.index+from:-1}return{startState:function(){return{outer:CodeMirror.startState(outer),innerActive:null,inner:null}},copyState:function(state){return{outer:CodeMirror.copyState(outer,state.outer),innerActive:state.innerActive,231inner:state.innerActive&&CodeMirror.copyState(state.innerActive.mode,state.inner)}},token:function(stream,state){if(!state.innerActive){var cutOff=Infinity,oldContent=stream.string;for(var i=0;i<n_others;++i){var other=others[i];var found=indexOf(oldContent,other.open,stream.pos);if(found==stream.pos){stream.match(other.open);state.innerActive=other;state.inner=CodeMirror.startState(other.mode,outer.indent?outer.indent(state.outer,""):0);return other.delimStyle}else if(found!=-1&&found<cutOff)cutOff=232found}if(cutOff!=Infinity)stream.string=oldContent.slice(0,cutOff);var outerToken=outer.token(stream,state.outer);if(cutOff!=Infinity)stream.string=oldContent;return outerToken}else{var curInner=state.innerActive,oldContent=stream.string;var found=indexOf(oldContent,curInner.close,stream.pos);if(found==stream.pos){stream.match(curInner.close);state.innerActive=state.inner=null;return curInner.delimStyle}if(found>-1)stream.string=oldContent.slice(0,found);var innerToken=curInner.mode.token(stream,233state.inner);if(found>-1)stream.string=oldContent;var cur=stream.current(),found=cur.indexOf(curInner.close);if(found>-1)stream.backUp(cur.length-found);return innerToken}},indent:function(state,textAfter){var mode=state.innerActive?state.innerActive.mode:outer;if(!mode.indent)return CodeMirror.Pass;return mode.indent(state.innerActive?state.inner:state.outer,textAfter)},blankLine:function(state){var mode=state.innerActive?state.innerActive.mode:outer;if(mode.blankLine)mode.blankLine(state.innerActive?234state.inner:state.outer);if(!state.innerActive)for(var i=0;i<n_others;++i){var other=others[i];if(other.open==="\n"){state.innerActive=other;state.inner=CodeMirror.startState(other.mode,mode.indent?mode.indent(state.outer,""):0)}}else if(mode.close==="\n")state.innerActive=state.inner=null},electricChars:outer.electricChars,innerMode:function(state){return state.inner?{state:state.inner,mode:state.innerActive.mode}:{state:state.outer,mode:outer}}}};CodeMirror.overlayMode=CodeMirror.overlayParser=function(base,overlay,combine){return{startState:function(){return{base:CodeMirror.startState(base),overlay:CodeMirror.startState(overlay),basePos:0,baseCur:null,overlayPos:0,overlayCur:null}},copyState:function(state){return{base:CodeMirror.copyState(base,state.base),overlay:CodeMirror.copyState(overlay,state.overlay),basePos:state.basePos,baseCur:null,overlayPos:state.overlayPos,overlayCur:null}},token:function(stream,state){if(stream.start==state.basePos){state.baseCur=235base.token(stream,state.base);state.basePos=stream.pos}if(stream.start==state.overlayPos){stream.pos=stream.start;state.overlayCur=overlay.token(stream,state.overlay);state.overlayPos=stream.pos}stream.pos=Math.min(state.basePos,state.overlayPos);if(stream.eol())state.basePos=state.overlayPos=0;if(state.overlayCur==null)return state.baseCur;if(state.baseCur!=null&&combine)return state.baseCur+" "+state.overlayCur;else return state.overlayCur},indent:base.indent&&function(state,textAfter){return base.indent(state.base,236textAfter)},electricChars:base.electricChars,innerMode:function(state){return{state:state.base,mode:base}},blankLine:function(state){if(base.blankLine)base.blankLine(state.base);if(overlay.blankLine)overlay.blankLine(state.overlay)}}};(function(){function forEach(arr,f){for(var i=0,e=arr.length;i<e;++i)f(arr[i])}function arrayContains(arr,item){if(!Array.prototype.indexOf){var i=arr.length;while(i--)if(arr[i]===item)return true;return false}return arr.indexOf(item)!=-1}function scriptHint(editor,keywords,getToken){var cur=editor.getCursor(),token=getToken(editor,cur),tprop=token;if(!/^[\w$_]*$/.test(token.string))token=tprop={start:cur.ch,end:cur.ch,string:"",state:token.state,className:token.string==":"?"pig-type":null};if(!context)var context=237[];context.push(tprop);var completionList=getCompletions(token,context);completionList=completionList.sort();if(completionList.length==1)completionList.push(" ");return{list:completionList,from:{line:cur.line,ch:token.start},to:{line:cur.line,ch:token.end}}}CodeMirror.pigHint=function(editor){return scriptHint(editor,pigKeywordsU,function(e,cur){return e.getTokenAt(cur)})};function toTitleCase(str){return str.replace(/(?:^|\s)\w/g,function(match){return match.toUpperCase()})}var pigKeywords="VOID IMPORT RETURNS DEFINE LOAD FILTER FOREACH ORDER CUBE DISTINCT COGROUP "+238"JOIN CROSS UNION SPLIT INTO IF OTHERWISE ALL AS BY USING INNER OUTER ONSCHEMA PARALLEL "+"PARTITION GROUP AND OR NOT GENERATE FLATTEN ASC DESC IS STREAM THROUGH STORE MAPREDUCE "+"SHIP CACHE INPUT OUTPUT STDERROR STDIN STDOUT LIMIT SAMPLE LEFT RIGHT FULL EQ GT LT GTE LTE "+"NEQ MATCHES TRUE FALSE";var pigKeywordsU=pigKeywords.split(" ");var pigKeywordsL=pigKeywords.toLowerCase().split(" ");var pigTypes="BOOLEAN INT LONG FLOAT DOUBLE CHARARRAY BYTEARRAY BAG TUPLE MAP";var pigTypesU=pigTypes.split(" ");239var pigTypesL=pigTypes.toLowerCase().split(" ");var pigBuiltins="ABS ACOS ARITY ASIN ATAN AVG BAGSIZE BINSTORAGE BLOOM BUILDBLOOM CBRT CEIL "+"CONCAT COR COS COSH COUNT COUNT_STAR COV CONSTANTSIZE CUBEDIMENSIONS DIFF DISTINCT DOUBLEABS "+"DOUBLEAVG DOUBLEBASE DOUBLEMAX DOUBLEMIN DOUBLEROUND DOUBLESUM EXP FLOOR FLOATABS FLOATAVG "+"FLOATMAX FLOATMIN FLOATROUND FLOATSUM GENERICINVOKER INDEXOF INTABS INTAVG INTMAX INTMIN "+"INTSUM INVOKEFORDOUBLE INVOKEFORFLOAT INVOKEFORINT INVOKEFORLONG INVOKEFORSTRING INVOKER "+240"ISEMPTY JSONLOADER JSONMETADATA JSONSTORAGE LAST_INDEX_OF LCFIRST LOG LOG10 LOWER LONGABS "+"LONGAVG LONGMAX LONGMIN LONGSUM MAX MIN MAPSIZE MONITOREDUDF NONDETERMINISTIC OUTPUTSCHEMA "+"PIGSTORAGE PIGSTREAMING RANDOM REGEX_EXTRACT REGEX_EXTRACT_ALL REPLACE ROUND SIN SINH SIZE "+"SQRT STRSPLIT SUBSTRING SUM STRINGCONCAT STRINGMAX STRINGMIN STRINGSIZE TAN TANH TOBAG "+"TOKENIZE TOMAP TOP TOTUPLE TRIM TEXTLOADER TUPLESIZE UCFIRST UPPER UTF8STORAGECONVERTER";var pigBuiltinsU=pigBuiltins.split(" ").join("() ").split(" ");241var pigBuiltinsL=pigBuiltins.toLowerCase().split(" ").join("() ").split(" ");var pigBuiltinsC=("BagSize BinStorage Bloom BuildBloom ConstantSize CubeDimensions DoubleAbs "+"DoubleAvg DoubleBase DoubleMax DoubleMin DoubleRound DoubleSum FloatAbs FloatAvg FloatMax "+"FloatMin FloatRound FloatSum GenericInvoker IntAbs IntAvg IntMax IntMin IntSum "+"InvokeForDouble InvokeForFloat InvokeForInt InvokeForLong InvokeForString Invoker "+"IsEmpty JsonLoader JsonMetadata JsonStorage LongAbs LongAvg LongMax LongMin LongSum MapSize "+242"MonitoredUDF Nondeterministic OutputSchema PigStorage PigStreaming StringConcat StringMax "+"StringMin StringSize TextLoader TupleSize Utf8StorageConverter").split(" ").join("() ").split(" ");function getCompletions(token,context){var found=[],start=token.string;function maybeAdd(str){if(str.indexOf(start)==0&&!arrayContains(found,str))found.push(str)}function gatherCompletions(obj){if(obj==":")forEach(pigTypesL,maybeAdd);else{forEach(pigBuiltinsU,maybeAdd);forEach(pigBuiltinsL,maybeAdd);forEach(pigBuiltinsC,243maybeAdd);forEach(pigTypesU,maybeAdd);forEach(pigTypesL,maybeAdd);forEach(pigKeywordsU,maybeAdd);forEach(pigKeywordsL,maybeAdd)}}if(context){var obj=context.pop(),base;if(obj.className=="pig-word")base=obj.string;else if(obj.className=="pig-type")base=":"+obj.string;while(base!=null&&context.length)base=base[context.pop().string];if(base!=null)gatherCompletions(base)}return found}})();(function(){if(typeof exports==="undefined")return;function splitLines(string){return string.split(/\r?\n|\r/)}function StringStream(string){this.pos=this.start=0;this.string=string}StringStream.prototype={eol:function(){return this.pos>=this.string.length},sol:function(){return this.pos==0},peek:function(){return this.string.charAt(this.pos)||null},next:function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},eat:function(match){var ch=this.string.charAt(this.pos);if(typeof match==244"string")var ok=ch==match;else var ok=ch&&(match.test?match.test(ch):match(ch));if(ok){++this.pos;return ch}},eatWhile:function(match){var start=this.pos;while(this.eat(match));return this.pos>start},eatSpace:function(){var start=this.pos;while(/[\s\u00a0]/.test(this.string.charAt(this.pos)))++this.pos;return this.pos>start},skipToEnd:function(){this.pos=this.string.length},skipTo:function(ch){var found=this.string.indexOf(ch,this.pos);if(found>-1){this.pos=found;return true}},backUp:function(n){this.pos-=245n},column:function(){return this.start},indentation:function(){return 0},match:function(pattern,consume,caseInsensitive){if(typeof pattern=="string"){var cased=function(str){return caseInsensitive?str.toLowerCase():str};if(cased(this.string).indexOf(cased(pattern),this.pos)==this.pos){if(consume!==false)this.pos+=pattern.length;return true}}else{var match=this.string.slice(this.pos).match(pattern);if(match&&consume!==false)this.pos+=match[0].length;return match}},current:function(){return this.string.slice(this.start,246this.pos)}};exports.StringStream=StringStream;exports.startState=function(mode,a1,a2){return mode.startState?mode.startState(a1,a2):true};var modes=exports.modes={},mimeModes=exports.mimeModes={};exports.defineMode=function(name,mode){modes[name]=mode};exports.defineMIME=function(mime,spec){mimeModes[mime]=spec};exports.getMode=function(options,spec){if(typeof spec=="string"&&mimeModes.hasOwnProperty(spec))spec=mimeModes[spec];if(typeof spec=="string")var mname=spec,config={};else if(spec!=null)var mname=247spec.name,config=spec;var mfactory=modes[mname];if(!mfactory)throw new Error("Unknown mode: "+spec);return mfactory(options,config||{})};exports.runMode=function(string,modespec,callback){var mode=exports.getMode({indentUnit:2},modespec);var lines=splitLines(string),state=exports.startState(mode);for(var i=0,e=lines.length;i<e;++i){if(i)callback("\n");var stream=new exports.StringStream(lines[i]);while(!stream.eol()){var style=mode.token(stream,state);callback(stream.current(),style,i,stream.start);248stream.start=stream.pos}}}})();CodeMirror.runMode=function(string,modespec,callback,options){function esc(str){return str.replace(/[<&]/g,function(ch){return ch=="<"?"<":"&"})}var mode=CodeMirror.getMode(CodeMirror.defaults,modespec);var isNode=callback.nodeType==1;var tabSize=options&&options.tabSize||CodeMirror.defaults.tabSize;if(isNode){var node=callback,accum=[],col=0;callback=function(text,style){if(text=="\n"){accum.push("<br>");col=0;return}var escaped="";for(var pos=0;;){var idx=text.indexOf("\t",pos);if(idx==-1){escaped+=249esc(text.slice(pos));col+=text.length-pos;break}else{col+=idx-pos;escaped+=esc(text.slice(pos,idx));var size=tabSize-col%tabSize;col+=size;for(var i=0;i<size;++i)escaped+=" ";pos=idx+1}}if(style)accum.push('<span class="cm-'+esc(style)+'">'+escaped+"</span>");else accum.push(escaped)}}var lines=CodeMirror.splitLines(string),state=CodeMirror.startState(mode);for(var i=0,e=lines.length;i<e;++i){if(i)callback("\n");var stream=new CodeMirror.StringStream(lines[i]);while(!stream.eol()){var style=mode.token(stream,250state);callback(stream.current(),style,i,stream.start);stream.start=stream.pos}}if(isNode)node.innerHTML=accum.join("")};(function(){function SearchState(){this.posFrom=this.posTo=this.query=null;this.marked=[]}function getSearchState(cm){return cm._searchState||(cm._searchState=new SearchState)}function getSearchCursor(cm,query,pos){return cm.getSearchCursor(query,pos,typeof query=="string"&&query==query.toLowerCase())}function dialog(cm,text,shortText,f){if(cm.openDialog)cm.openDialog(text,f);else f(prompt(shortText,""))}function confirmDialog(cm,text,shortText,fs){if(cm.openConfirm)cm.openConfirm(text,fs);else if(confirm(shortText))fs[0]()}251function parseQuery(query){var isRE=query.match(/^\/(.*)\/([a-z]*)$/);return isRE?new RegExp(isRE[1],isRE[2].indexOf("i")==-1?"":"i"):query}var queryDialog='Search: <input type="text" style="width: 10em"/> <span style="color: #888">(Use /re/ syntax for regexp search)</span>';function doSearch(cm,rev){var state=getSearchState(cm);if(state.query)return findNext(cm,rev);dialog(cm,queryDialog,"Search for:",function(query){cm.operation(function(){if(!query||state.query)return;state.query=parseQuery(query);252if(cm.lineCount()<2E3)for(var cursor=getSearchCursor(cm,state.query);cursor.findNext();)state.marked.push(cm.markText(cursor.from(),cursor.to(),"CodeMirror-searching"));state.posFrom=state.posTo=cm.getCursor();findNext(cm,rev)})})}function findNext(cm,rev){cm.operation(function(){var state=getSearchState(cm);var cursor=getSearchCursor(cm,state.query,rev?state.posFrom:state.posTo);if(!cursor.find(rev)){cursor=getSearchCursor(cm,state.query,rev?{line:cm.lineCount()-1}:{line:0,ch:0});if(!cursor.find(rev))return}cm.setSelection(cursor.from(),253cursor.to());state.posFrom=cursor.from();state.posTo=cursor.to()})}function clearSearch(cm){cm.operation(function(){var state=getSearchState(cm);if(!state.query)return;state.query=null;for(var i=0;i<state.marked.length;++i)state.marked[i].clear();state.marked.length=0})}var replaceQueryDialog='Replace: <input type="text" style="width: 10em"/> <span style="color: #888">(Use /re/ syntax for regexp search)</span>';var replacementQueryDialog='With: <input type="text" style="width: 10em"/>';var doReplaceConfirm=254"Replace? <button>Yes</button> <button>No</button> <button>Stop</button>";function replace(cm,all){dialog(cm,replaceQueryDialog,"Replace:",function(query){if(!query)return;query=parseQuery(query);dialog(cm,replacementQueryDialog,"Replace with:",function(text){if(all)cm.compoundChange(function(){cm.operation(function(){for(var cursor=getSearchCursor(cm,query);cursor.findNext();)if(typeof query!="string"){var match=cm.getRange(cursor.from(),cursor.to()).match(query);cursor.replace(text.replace(/\$(\d)/,255function(w,i){return match[i]}))}else cursor.replace(text)})});else{var doReplace=function(match){cursor.replace(typeof query=="string"?text:text.replace(/\$(\d)/,function(w,i){return match[i]}));advance()};var advance=function(){var start=cursor.from(),match;if(!(match=cursor.findNext())){cursor=getSearchCursor(cm,query);if(!(match=cursor.findNext())||start&&cursor.from().line==start.line&&cursor.from().ch==start.ch)return}cm.setSelection(cursor.from(),cursor.to());confirmDialog(cm,doReplaceConfirm,256"Replace?",[function(){doReplace(match)},advance])};clearSearch(cm);var cursor=getSearchCursor(cm,query,cm.getCursor());advance()}})})}CodeMirror.commands.find=function(cm){clearSearch(cm);doSearch(cm)};CodeMirror.commands.findNext=doSearch;CodeMirror.commands.findPrev=function(cm){doSearch(cm,true)};CodeMirror.commands.clearSearch=clearSearch;CodeMirror.commands.replace=replace;CodeMirror.commands.replaceAll=function(cm){replace(cm,true)}})();(function(){function SearchCursor(cm,query,pos,caseFold){this.atOccurrence=false;this.cm=cm;if(caseFold==null&&typeof query=="string")caseFold=false;pos=pos?cm.clipPos(pos):{line:0,ch:0};this.pos={from:pos,to:pos};if(typeof query!="string"){if(!query.global)query=new RegExp(query.source,query.ignoreCase?"ig":"g");this.matches=function(reverse,pos){if(reverse){query.lastIndex=0;var line=cm.getLine(pos.line).slice(0,pos.ch),match=query.exec(line),start=0;while(match){start+=match.index+1;line=line.slice(start);257query.lastIndex=0;var newmatch=query.exec(line);if(newmatch)match=newmatch;else break}start--}else{query.lastIndex=pos.ch;var line=cm.getLine(pos.line),match=query.exec(line),start=match&&match.index}if(match)return{from:{line:pos.line,ch:start},to:{line:pos.line,ch:start+match[0].length},match:match}}}else{if(caseFold)query=query.toLowerCase();var fold=caseFold?function(str){return str.toLowerCase()}:function(str){return str};var target=query.split("\n");if(target.length==1)this.matches=function(reverse,258pos){var line=fold(cm.getLine(pos.line)),len=query.length,match;if(reverse?pos.ch>=len&&(match=line.lastIndexOf(query,pos.ch-len))!=-1:(match=line.indexOf(query,pos.ch))!=-1)return{from:{line:pos.line,ch:match},to:{line:pos.line,ch:match+len}}};else this.matches=function(reverse,pos){var ln=pos.line,idx=reverse?target.length-1:0,match=target[idx],line=fold(cm.getLine(ln));var offsetA=reverse?line.indexOf(match)+match.length:line.lastIndexOf(match);if(reverse?offsetA>=pos.ch||offsetA!=match.length:259offsetA<=pos.ch||offsetA!=line.length-match.length)return;for(;;){if(reverse?!ln:ln==cm.lineCount()-1)return;line=fold(cm.getLine(ln+=reverse?-1:1));match=target[reverse?--idx:++idx];if(idx>0&&idx<target.length-1)if(line!=match)return;else continue;var offsetB=reverse?line.lastIndexOf(match):line.indexOf(match)+match.length;if(reverse?offsetB!=line.length-match.length:offsetB!=match.length)return;var start={line:pos.line,ch:offsetA},end={line:ln,ch:offsetB};return{from:reverse?end:start,to:reverse?260start:end}}}}}SearchCursor.prototype={findNext:function(){return this.find(false)},findPrevious:function(){return this.find(true)},find:function(reverse){var self=this,pos=this.cm.clipPos(reverse?this.pos.from:this.pos.to);function savePosAndFail(line){var pos={line:line,ch:0};self.pos={from:pos,to:pos};self.atOccurrence=false;return false}for(;;){if(this.pos=this.matches(reverse,pos)){this.atOccurrence=true;return this.pos.match||true}if(reverse){if(!pos.line)return savePosAndFail(0);pos={line:pos.line-2611,ch:this.cm.getLine(pos.line-1).length}}else{var maxLine=this.cm.lineCount();if(pos.line==maxLine-1)return savePosAndFail(maxLine);pos={line:pos.line+1,ch:0}}}},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(newText){var self=this;if(this.atOccurrence)self.pos.to=this.cm.replaceRange(newText,self.pos.from,self.pos.to)}};CodeMirror.defineExtension("getSearchCursor",function(query,pos,caseFold){return new SearchCursor(this,262query,pos,caseFold)})})();(function(){CodeMirror.simpleHint=function(editor,getHints,givenOptions){var options={},defaults=CodeMirror.simpleHint.defaults;for(var opt in defaults)if(defaults.hasOwnProperty(opt))options[opt]=(givenOptions&&givenOptions.hasOwnProperty(opt)?givenOptions:defaults)[opt];function collectHints(previousToken){if(editor.somethingSelected())return;var tempToken=editor.getTokenAt(editor.getCursor());if(options.closeOnTokenChange&&previousToken!=null&&(tempToken.start!=previousToken.start||tempToken.className!=263previousToken.className))return;var result=getHints(editor,givenOptions);if(!result||!result.list.length)return;var completions=result.list;function insert(str){editor.replaceRange(str,result.from,result.to)}if(options.completeSingle&&completions.length==1){insert(completions[0]);return true}var complete=document.createElement("div");complete.className="CodeMirror-completions";var sel=complete.appendChild(document.createElement("select"));if(!window.opera)sel.multiple=true;for(var i=0;i<completions.length;++i){var opt=264sel.appendChild(document.createElement("option"));opt.appendChild(document.createTextNode(completions[i]))}sel.firstChild.selected=true;sel.size=Math.min(10,completions.length);var pos=options.alignWithWord?editor.charCoords(result.from):editor.cursorCoords();complete.style.left=pos.x+"px";complete.style.top=pos.yBot+"px";document.body.appendChild(complete);var winW=window.innerWidth||Math.max(document.body.offsetWidth,document.documentElement.offsetWidth);if(winW-pos.x<sel.clientWidth)complete.style.left=265pos.x-sel.clientWidth+"px";if(completions.length<=10)complete.style.width=sel.clientWidth-1+"px";var done=false;function close(){if(done)return;done=true;complete.parentNode.removeChild(complete)}function pick(){insert(completions[sel.selectedIndex]);close();setTimeout(function(){editor.focus()},50)}CodeMirror.connect(sel,"blur",close);CodeMirror.connect(sel,"keydown",function(event){var code=event.keyCode;if(code==13){CodeMirror.e_stop(event);pick()}else if(code==27){CodeMirror.e_stop(event);close();266editor.focus()}else if(code!=38&&code!=40&&code!=33&&code!=34&&!CodeMirror.isModifierKey(event)){close();editor.focus();editor.triggerOnKeyDown(event);if(!options.closeOnBackspace||code!=8)setTimeout(function(){collectHints(tempToken)},50)}});CodeMirror.connect(sel,"dblclick",pick);sel.focus();if(window.opera)setTimeout(function(){if(!done)sel.focus()},100);return true}return collectHints()};CodeMirror.simpleHint.defaults={closeOnBackspace:true,closeOnTokenChange:false,completeSingle:true,alignWithWord:true}})();(function(){CodeMirror.xmlHints=[];CodeMirror.xmlHint=function(cm,simbol){if(simbol.length>0){var cursor=cm.getCursor();cm.replaceSelection(simbol);cursor={line:cursor.line,ch:cursor.ch+1};cm.setCursor(cursor)}CodeMirror.simpleHint(cm,getHint)};var getHint=function(cm){var cursor=cm.getCursor();if(cursor.ch>0){var text=cm.getRange({line:0,ch:0},cursor);var typed="";var simbol="";for(var i=text.length-1;i>=0;i--)if(text[i]==" "||text[i]=="<"){simbol=text[i];break}else typed=text[i]+typed;text=text.slice(0,267text.length-typed.length);var path=getActiveElement(cm,text)+simbol;var hints=CodeMirror.xmlHints[path];if(typeof hints==="undefined")hints=[""];else{hints=hints.slice(0);for(var i=hints.length-1;i>=0;i--)if(hints[i].indexOf(typed)!=0)hints.splice(i,1)}return{list:hints,from:{line:cursor.line,ch:cursor.ch-typed.length},to:cursor}}};var getActiveElement=function(codeMirror,text){var element="";if(text.length>=0){var regex=new RegExp("<([^!?][^\\s/>]*).*?>","g");var matches=[];var match;while((match=268regex.exec(text))!=null)matches.push({tag:match[1],selfclose:match[0].slice(match[0].length-2)==="/>"});for(var i=matches.length-1,skip=0;i>=0;i--){var item=matches[i];if(item.tag[0]=="/")skip++;else if(item.selfclose==false)if(skip>0)skip--;else element="<"+item.tag+">"+element}element+=getOpenTag(text)}return element};var getOpenTag=function(text){var open=text.lastIndexOf("<");var close=text.lastIndexOf(">");if(close<open){text=text.slice(open);if(text!="<"){var space=text.indexOf(" ");if(space<2690)space=text.indexOf("\t");if(space<0)space=text.indexOf("\n");if(space<0)space=text.length;return text.slice(0,space)}}return""}})();CodeMirror.defineMode("xml",function(config,parserConfig){var indentUnit=config.indentUnit;var Kludges=parserConfig.htmlMode?{autoSelfClosers:{"area":true,"base":true,"br":true,"col":true,"command":true,"embed":true,"frame":true,"hr":true,"img":true,"input":true,"keygen":true,"link":true,"meta":true,"param":true,"source":true,"track":true,"wbr":true},implicitlyClosed:{"dd":true,"li":true,"optgroup":true,"option":true,"p":true,"rp":true,"rt":true,"tbody":true,"td":true,"tfoot":true,"th":true,"tr":true},270contextGrabbers:{"dd":{"dd":true,"dt":true},"dt":{"dd":true,"dt":true},"li":{"li":true},"option":{"option":true,"optgroup":true},"optgroup":{"optgroup":true},"p":{"address":true,"article":true,"aside":true,"blockquote":true,"dir":true,"div":true,"dl":true,"fieldset":true,"footer":true,"form":true,"h1":true,"h2":true,"h3":true,"h4":true,"h5":true,"h6":true,"header":true,"hgroup":true,"hr":true,"menu":true,"nav":true,"ol":true,"p":true,"pre":true,"section":true,"table":true,"ul":true},"rp":{"rp":true,271"rt":true},"rt":{"rp":true,"rt":true},"tbody":{"tbody":true,"tfoot":true},"td":{"td":true,"th":true},"tfoot":{"tbody":true},"th":{"td":true,"th":true},"thead":{"tbody":true,"tfoot":true},"tr":{"tr":true}},doNotIndent:{"pre":true},allowUnquoted:true,allowMissing:true}:{autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:false,allowMissing:false};var alignCDATA=parserConfig.alignCDATA;var tagName,type;function inText(stream,state){function chain(parser){state.tokenize=272parser;return parser(stream,state)}var ch=stream.next();if(ch=="<")if(stream.eat("!"))if(stream.eat("["))if(stream.match("CDATA["))return chain(inBlock("atom","]]\x3e"));else return null;else if(stream.match("--"))return chain(inBlock("comment","--\x3e"));else if(stream.match("DOCTYPE",true,true)){stream.eatWhile(/[\w\._\-]/);return chain(doctype(1))}else return null;else if(stream.eat("?")){stream.eatWhile(/[\w\._\-]/);state.tokenize=inBlock("meta","?>");return"meta"}else{var isClose=stream.eat("/");273tagName="";var c;while(c=stream.eat(/[^\s\u00a0=<>"'\/?]/))tagName+=c;if(!tagName)return"error";type=isClose?"closeTag":"openTag";state.tokenize=inTag;return"tag"}else if(ch=="&"){var ok;if(stream.eat("#"))if(stream.eat("x"))ok=stream.eatWhile(/[a-fA-F\d]/)&&stream.eat(";");else ok=stream.eatWhile(/[\d]/)&&stream.eat(";");else ok=stream.eatWhile(/[\w\.\-:]/)&&stream.eat(";");return ok?"atom":"error"}else{stream.eatWhile(/[^&<]/);return null}}function inTag(stream,state){var ch=stream.next();if(ch==274">"||ch=="/"&&stream.eat(">")){state.tokenize=inText;type=ch==">"?"endTag":"selfcloseTag";return"tag"}else if(ch=="="){type="equals";return null}else if(/['"]/.test(ch)){state.tokenize=inAttribute(ch);return state.tokenize(stream,state)}else{stream.eatWhile(/[^\s\u00a0=<>"']/);return"word"}}function inAttribute(quote){return function(stream,state){while(!stream.eol())if(stream.next()==quote){state.tokenize=inTag;break}return"string"}}function inBlock(style,terminator){return function(stream,state){while(!stream.eol()){if(stream.match(terminator)){state.tokenize=275inText;break}stream.next()}return style}}function doctype(depth){return function(stream,state){var ch;while((ch=stream.next())!=null)if(ch=="<"){state.tokenize=doctype(depth+1);return state.tokenize(stream,state)}else if(ch==">")if(depth==1){state.tokenize=inText;break}else{state.tokenize=doctype(depth-1);return state.tokenize(stream,state)}return"meta"}}var curState,setStyle;function pass(){for(var i=arguments.length-1;i>=0;i--)curState.cc.push(arguments[i])}function cont(){pass.apply(null,arguments);276return true}function pushContext(tagName,startOfLine){var noIndent=Kludges.doNotIndent.hasOwnProperty(tagName)||curState.context&&curState.context.noIndent;curState.context={prev:curState.context,tagName:tagName,indent:curState.indented,startOfLine:startOfLine,noIndent:noIndent}}function popContext(){if(curState.context)curState.context=curState.context.prev}function element(type){if(type=="openTag"){curState.tagName=tagName;return cont(attributes,endtag(curState.startOfLine))}else if(type=="closeTag"){var err=277false;if(curState.context){if(curState.context.tagName!=tagName){if(Kludges.implicitlyClosed.hasOwnProperty(curState.context.tagName.toLowerCase()))popContext();err=!curState.context||curState.context.tagName!=tagName}}else err=true;if(err)setStyle="error";return cont(endclosetag(err))}return cont()}function endtag(startOfLine){return function(type){if(type=="selfcloseTag"||type=="endTag"&&Kludges.autoSelfClosers.hasOwnProperty(curState.tagName.toLowerCase())){maybePopContext(curState.tagName.toLowerCase());278return cont()}if(type=="endTag"){maybePopContext(curState.tagName.toLowerCase());pushContext(curState.tagName,startOfLine);return cont()}return cont()}}function endclosetag(err){return function(type){if(err)setStyle="error";if(type=="endTag"){popContext();return cont()}setStyle="error";return cont(arguments.callee)}}function maybePopContext(nextTagName){var parentTagName;while(true){if(!curState.context)return;parentTagName=curState.context.tagName.toLowerCase();if(!Kludges.contextGrabbers.hasOwnProperty(parentTagName)||279!Kludges.contextGrabbers[parentTagName].hasOwnProperty(nextTagName))return;popContext()}}function attributes(type){if(type=="word"){setStyle="attribute";return cont(attribute,attributes)}if(type=="endTag"||type=="selfcloseTag")return pass();setStyle="error";return cont(attributes)}function attribute(type){if(type=="equals")return cont(attvalue,attributes);if(!Kludges.allowMissing)setStyle="error";else if(type=="word")setStyle="attribute";return type=="endTag"||type=="selfcloseTag"?pass():cont()}function attvalue(type){if(type==280"string")return cont(attvaluemaybe);if(type=="word"&&Kludges.allowUnquoted){setStyle="string";return cont()}setStyle="error";return type=="endTag"||type=="selfCloseTag"?pass():cont()}function attvaluemaybe(type){if(type=="string")return cont(attvaluemaybe);else return pass()}return{startState:function(){return{tokenize:inText,cc:[],indented:0,startOfLine:true,tagName:null,context:null}},token:function(stream,state){if(stream.sol()){state.startOfLine=true;state.indented=stream.indentation()}if(stream.eatSpace())return null;281setStyle=type=tagName=null;var style=state.tokenize(stream,state);state.type=type;if((style||type)&&style!="comment"){curState=state;while(true){var comb=state.cc.pop()||element;if(comb(type||style))break}}state.startOfLine=false;return setStyle||style},indent:function(state,textAfter,fullLine){var context=state.context;if(state.tokenize!=inTag&&state.tokenize!=inText||context&&context.noIndent)return fullLine?fullLine.match(/^(\s*)/)[0].length:0;if(alignCDATA&&/<!\[CDATA\[/.test(textAfter))return 0;282if(context&&/^<\//.test(textAfter))context=context.prev;while(context&&!context.startOfLine)context=context.prev;if(context)return context.indent+indentUnit;else return 0},electricChars:"/",configuration:parserConfig.htmlMode?"html":"xml"}});CodeMirror.defineMIME("text/xml","xml");CodeMirror.defineMIME("application/xml","xml");if(!CodeMirror.mimeModes.hasOwnProperty("text/html"))CodeMirror.defineMIME("text/html",{name:"xml",htmlMode:true});CodeMirror.defineMode("css",function(config){var indentUnit=config.indentUnit,type;var atMediaTypes=keySet(["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"]);var atMediaFeatures=keySet(["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio",283"max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid"]);var propertyKeywords=keySet(["align-content","align-items","align-self","alignment-adjust","alignment-baseline","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-iteration-count","animation-name","animation-play-state","animation-timing-function",284"appearance","azimuth","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","binding","bleed","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color",285"border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow",286"box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align",287"drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","font","font-feature-settings","font-family","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position",288"font-weight","grid-cell","grid-column","grid-column-align","grid-column-sizing","grid-column-span","grid-columns","grid-flow","grid-row","grid-row-align","grid-row-sizing","grid-row-span","grid-rows","grid-template","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","justify-content","left","letter-spacing","line-break","line-height","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style",289"list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marker-offset","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","max-height","max-width","min-height","min-width","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x",290"overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","play-during","position","presentation-level","punctuation-trim","quotes","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotation","rotation-point","ruby-align","ruby-overhang","ruby-position","ruby-span","size",291"speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-outline","text-shadow","text-space-collapse",292"text-transform","text-underline-position","text-wrap","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"]);var colorKeywords=keySet(["black",293"silver","gray","white","maroon","red","purple","fuchsia","green","lime","olive","yellow","navy","blue","teal","aqua"]);var valueKeywords=keySet(["above","absolute","activeborder","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","auto","avoid","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","bold",294"bolder","border","border-box","both","bottom","break-all","break-word","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","compact","condensed","contain","content","content-box","context-menu","continuous","copy","cover","crop","cross","crosshair",295"currentcolor","cursive","dashed","decimal","decimal-leading-zero","default","default-button","destination-atop","destination-in","destination-out","destination-over","devanagari","disc","discard","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er",296"ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ew-resize","expanded","extra-condensed","extra-expanded","fantasy","fast","fill","fixed","flat","footnotes","forwards","from","geometricPrecision","georgian","graytext","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hebrew","help","hidden","hide","higher",297"highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-table","inset","inside","intrinsic","invert","italic","justify","kannada","katakana","katakana-iroha","khmer","landscape","lao","large","larger","left","level","lighter","line-through","linear","lines","list-item","listbox","listitem","local",298"logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","malayalam","match","media-controls-background","media-current-time-display","media-fullscreen-button","media-mute-button","media-play-button","media-return-to-realtime-button","media-rewind-button","media-seek-back-button","media-seek-forward-button","media-slider","media-sliderthumb","media-time-remaining-display","media-volume-slider","media-volume-slider-container",299"media-volume-sliderthumb","medium","menu","menulist","menulist-button","menulist-text","menulist-textfield","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","myanmar","n-resize","narrower","navy","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","nw-resize","nwse-resize","oblique","octal","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside",300"overlay","overline","padding","padding-box","painted","paused","persian","plus-darker","plus-lighter","pointer","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radio","read-only","read-write","read-write-plaintext-only","relative","repeat","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","round","row-resize","rtl","run-in","running","s-resize","sans-serif","scroll","scrollbar","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration",301"searchfield-results-button","searchfield-results-decoration","semi-condensed","semi-expanded","separate","serif","show","sidama","single","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","solid","somali","source-atop","source-in","source-out","source-over","space","square","square-button","start","static","status-bar","stretch","stroke","sub","subpixel-antialiased","super","sw-resize",302"table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","transparent","ultra-condensed","ultra-expanded","underline","up","upper-alpha","upper-armenian",303"upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","vertical","vertical-text","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","white","wider","window","windowframe","windowtext","x-large","x-small","xor","xx-large","xx-small","yellow"]);function keySet(array){var keys={};for(var i=0;i<array.length;++i)keys[array[i]]=true;return keys}function ret(style,tp){type=tp;return style}function tokenBase(stream,304state){var ch=stream.next();if(ch=="@"){stream.eatWhile(/[\w\\\-]/);return ret("def",stream.current())}else if(ch=="/"&&stream.eat("*")){state.tokenize=tokenCComment;return tokenCComment(stream,state)}else if(ch=="<"&&stream.eat("!")){state.tokenize=tokenSGMLComment;return tokenSGMLComment(stream,state)}else if(ch=="=")ret(null,"compare");else if((ch=="~"||ch=="|")&&stream.eat("="))return ret(null,"compare");else if(ch=='"'||ch=="'"){state.tokenize=tokenString(ch);return state.tokenize(stream,state)}else if(ch==305"#"){stream.eatWhile(/[\w\\\-]/);return ret("atom","hash")}else if(ch=="!"){stream.match(/^\s*\w*/);return ret("keyword","important")}else if(/\d/.test(ch)){stream.eatWhile(/[\w.%]/);return ret("number","unit")}else if(ch==="-")if(/\d/.test(stream.peek())){stream.eatWhile(/[\w.%]/);return ret("number","unit")}else{if(stream.match(/^[^-]+-/))return ret("meta",type)}else if(/[,+>*\/]/.test(ch))return ret(null,"select-op");else if(ch=="."&&stream.match(/^-?[_a-z][_a-z0-9-]*/i))return ret("qualifier",306type);else if(ch==":")return ret("operator",ch);else if(/[;{}\[\]\(\)]/.test(ch))return ret(null,ch);else if(ch=="u"&&stream.match("rl(")){stream.backUp(1);state.tokenize=tokenParenthesized;return ret("property","variable")}else{stream.eatWhile(/[\w\\\-]/);return ret("property","variable")}}function tokenCComment(stream,state){var maybeEnd=false,ch;while((ch=stream.next())!=null){if(maybeEnd&&ch=="/"){state.tokenize=tokenBase;break}maybeEnd=ch=="*"}return ret("comment","comment")}function tokenSGMLComment(stream,307state){var dashes=0,ch;while((ch=stream.next())!=null){if(dashes>=2&&ch==">"){state.tokenize=tokenBase;break}dashes=ch=="-"?dashes+1:0}return ret("comment","comment")}function tokenString(quote,nonInclusive){return function(stream,state){var escaped=false,ch;while((ch=stream.next())!=null){if(ch==quote&&!escaped)break;escaped=!escaped&&ch=="\\"}if(!escaped){if(nonInclusive)stream.backUp(1);state.tokenize=tokenBase}return ret("string","string")}}function tokenParenthesized(stream,state){stream.next();308if(!stream.match(/\s*["']/,false))state.tokenize=tokenString(")",true);else state.tokenize=tokenBase;return ret(null,"(")}return{startState:function(base){return{tokenize:tokenBase,baseIndent:base||0,stack:[]}},token:function(stream,state){if(state.tokenize==tokenBase&&stream.eatSpace())return null;var style=state.tokenize(stream,state);var context=state.stack[state.stack.length-1];if(style=="property")if(context=="propertyValue")if(valueKeywords[stream.current()])style="string-2";else if(colorKeywords[stream.current()])style=309"keyword";else style="variable-2";else if(context=="rule"){if(!propertyKeywords[stream.current()])style+=" error"}else if(!context||context=="@media{")style="tag";else if(context=="@media")if(atMediaTypes[stream.current()])style="attribute";else if(/^(only|not)$/i.test(stream.current()))style="keyword";else if(stream.current().toLowerCase()=="and")style="error";else if(atMediaFeatures[stream.current()])style="error";else style="attribute error";else if(context=="@mediaType")if(atMediaTypes[stream.current()])style=310"attribute";else if(stream.current().toLowerCase()=="and")style="operator";else if(/^(only|not)$/i.test(stream.current()))style="error";else if(atMediaFeatures[stream.current()])style="error";else style="error";else if(context=="@mediaType(")if(propertyKeywords[stream.current()]);else if(atMediaTypes[stream.current()])style="error";else if(stream.current().toLowerCase()=="and")style="operator";else if(/^(only|not)$/i.test(stream.current()))style="error";else style+=" error";else style="error";else if(style==311"atom")if(!context||context=="@media{")style="builtin";else if(context=="propertyValue"){if(!/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(stream.current()))style+=" error"}else style="error";else if(context=="@media"&&type=="{")style="error";if(type=="{")if(context=="@media"||context=="@mediaType"){state.stack.pop();state.stack[state.stack.length-1]="@media{"}else state.stack.push("rule");else if(type=="}"){state.stack.pop();if(context=="propertyValue")state.stack.pop()}else if(type=="@media")state.stack.push("@media");312else if(context=="@media"&&/\b(keyword|attribute)\b/.test(style))state.stack.push("@mediaType");else if(context=="@mediaType"&&stream.current()==",")state.stack.pop();else if(context=="@mediaType"&&type=="(")state.stack.push("@mediaType(");else if(context=="@mediaType("&&type==")")state.stack.pop();else if(context=="rule"&&type==":")state.stack.push("propertyValue");else if(context=="propertyValue"&&type==";")state.stack.pop();return style},indent:function(state,textAfter){var n=state.stack.length;313if(/^\}/.test(textAfter))n-=state.stack[state.stack.length-1]=="propertyValue"?2:1;return state.baseIndent+n*indentUnit},electricChars:"}"}});CodeMirror.defineMIME("text/css","css");CodeMirror.defineMode("javascript",function(config,parserConfig){var indentUnit=config.indentUnit;var jsonMode=parserConfig.json;var isTS=parserConfig.typescript;var keywords=function(){function kw(type){return{type:type,style:"keyword"}}var A=kw("keyword a"),B=kw("keyword b"),C=kw("keyword c");var operator=kw("operator"),atom={type:"atom",style:"atom"};var jsKeywords={"if":A,"while":A,"with":A,"else":B,"do":B,"try":B,"finally":B,"return":C,"break":C,"continue":C,"new":C,"delete":C,"throw":C,"var":kw("var"),314"const":kw("var"),"let":kw("var"),"function":kw("function"),"catch":kw("catch"),"for":kw("for"),"switch":kw("switch"),"case":kw("case"),"default":kw("default"),"in":operator,"typeof":operator,"instanceof":operator,"true":atom,"false":atom,"null":atom,"undefined":atom,"NaN":atom,"Infinity":atom};if(isTS){var type={type:"variable",style:"variable-3"};var tsKeywords={"interface":kw("interface"),"class":kw("class"),"extends":kw("extends"),"constructor":kw("constructor"),"public":kw("public"),"private":kw("private"),315"protected":kw("protected"),"static":kw("static"),"super":kw("super"),"string":type,"number":type,"bool":type,"any":type};for(var attr in tsKeywords)jsKeywords[attr]=tsKeywords[attr]}return jsKeywords}();var isOperatorChar=/[+\-*&%=<>!?|]/;function chain(stream,state,f){state.tokenize=f;return f(stream,state)}function nextUntilUnescaped(stream,end){var escaped=false,next;while((next=stream.next())!=null){if(next==end&&!escaped)return false;escaped=!escaped&&next=="\\"}return escaped}var type,content;316function ret(tp,style,cont){type=tp;content=cont;return style}function jsTokenBase(stream,state){var ch=stream.next();if(ch=='"'||ch=="'")return chain(stream,state,jsTokenString(ch));else if(/[\[\]{}\(\),;:\.]/.test(ch))return ret(ch);else if(ch=="0"&&stream.eat(/x/i)){stream.eatWhile(/[\da-f]/i);return ret("number","number")}else if(/\d/.test(ch)||ch=="-"&&stream.eat(/\d/)){stream.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/);return ret("number","number")}else if(ch=="/")if(stream.eat("*"))return chain(stream,317state,jsTokenComment);else if(stream.eat("/")){stream.skipToEnd();return ret("comment","comment")}else if(state.lastType=="operator"||state.lastType=="keyword c"||/^[\[{}\(,;:]$/.test(state.lastType)){nextUntilUnescaped(stream,"/");stream.eatWhile(/[gimy]/);return ret("regexp","string-2")}else{stream.eatWhile(isOperatorChar);return ret("operator",null,stream.current())}else if(ch=="#"){stream.skipToEnd();return ret("error","error")}else if(isOperatorChar.test(ch)){stream.eatWhile(isOperatorChar);318return ret("operator",null,stream.current())}else{stream.eatWhile(/[\w\$_]/);var word=stream.current(),known=keywords.propertyIsEnumerable(word)&&keywords[word];return known&&state.lastType!="."?ret(known.type,known.style,word):ret("variable","variable",word)}}function jsTokenString(quote){return function(stream,state){if(!nextUntilUnescaped(stream,quote))state.tokenize=jsTokenBase;return ret("string","string")}}function jsTokenComment(stream,state){var maybeEnd=false,ch;while(ch=stream.next()){if(ch==319"/"&&maybeEnd){state.tokenize=jsTokenBase;break}maybeEnd=ch=="*"}return ret("comment","comment")}var atomicTypes={"atom":true,"number":true,"variable":true,"string":true,"regexp":true};function JSLexical(indented,column,type,align,prev,info){this.indented=indented;this.column=column;this.type=type;this.prev=prev;this.info=info;if(align!=null)this.align=align}function inScope(state,varname){for(var v=state.localVars;v;v=v.next)if(v.name==varname)return true}function parseJS(state,style,type,content,320stream){var cc=state.cc;cx.state=state;cx.stream=stream;cx.marked=null,cx.cc=cc;if(!state.lexical.hasOwnProperty("align"))state.lexical.align=true;while(true){var combinator=cc.length?cc.pop():jsonMode?expression:statement;if(combinator(type,content)){while(cc.length&&cc[cc.length-1].lex)cc.pop()();if(cx.marked)return cx.marked;if(type=="variable"&&inScope(state,content))return"variable-2";return style}}}var cx={state:null,column:null,marked:null,cc:null};function pass(){for(var i=arguments.length-3211;i>=0;i--)cx.cc.push(arguments[i])}function cont(){pass.apply(null,arguments);return true}function register(varname){function inList(list){for(var v=list;v;v=v.next)if(v.name==varname)return true;return false}var state=cx.state;if(state.context){cx.marked="def";if(inList(state.localVars))return;state.localVars={name:varname,next:state.localVars}}else{if(inList(state.globalVars))return;state.globalVars={name:varname,next:state.globalVars}}}var defaultVars={name:"this",next:{name:"arguments"}};function pushcontext(){cx.state.context=322{prev:cx.state.context,vars:cx.state.localVars};cx.state.localVars=defaultVars}function popcontext(){cx.state.localVars=cx.state.context.vars;cx.state.context=cx.state.context.prev}function pushlex(type,info){var result=function(){var state=cx.state;state.lexical=new JSLexical(state.indented,cx.stream.column(),type,null,state.lexical,info)};result.lex=true;return result}function poplex(){var state=cx.state;if(state.lexical.prev){if(state.lexical.type==")")state.indented=state.lexical.indented;state.lexical=323state.lexical.prev}}poplex.lex=true;function expect(wanted){return function expecting(type){if(type==wanted)return cont();else if(wanted==";")return pass();else return cont(arguments.callee)}}function statement(type){if(type=="var")return cont(pushlex("vardef"),vardef1,expect(";"),poplex);if(type=="keyword a")return cont(pushlex("form"),expression,statement,poplex);if(type=="keyword b")return cont(pushlex("form"),statement,poplex);if(type=="{")return cont(pushlex("}"),block,poplex);if(type==";")return cont();324if(type=="function")return cont(functiondef);if(type=="for")return cont(pushlex("form"),expect("("),pushlex(")"),forspec1,expect(")"),poplex,statement,poplex);if(type=="variable")return cont(pushlex("stat"),maybelabel);if(type=="switch")return cont(pushlex("form"),expression,pushlex("}","switch"),expect("{"),block,poplex,poplex);if(type=="case")return cont(expression,expect(":"));if(type=="default")return cont(expect(":"));if(type=="catch")return cont(pushlex("form"),pushcontext,expect("("),funarg,325expect(")"),statement,poplex,popcontext);return pass(pushlex("stat"),expression,expect(";"),poplex)}function expression(type){if(atomicTypes.hasOwnProperty(type))return cont(maybeoperator);if(type=="function")return cont(functiondef);if(type=="keyword c")return cont(maybeexpression);if(type=="(")return cont(pushlex(")"),maybeexpression,expect(")"),poplex,maybeoperator);if(type=="operator")return cont(expression);if(type=="[")return cont(pushlex("]"),commasep(expression,"]"),poplex,maybeoperator);326if(type=="{")return cont(pushlex("}"),commasep(objprop,"}"),poplex,maybeoperator);return cont()}function maybeexpression(type){if(type.match(/[;\}\)\],]/))return pass();return pass(expression)}function maybeoperator(type,value){if(type=="operator"&&/\+\+|--/.test(value))return cont(maybeoperator);if(type=="operator"&&value=="?")return cont(expression,expect(":"),expression);if(type==";")return;if(type=="(")return cont(pushlex(")"),commasep(expression,")"),poplex,maybeoperator);if(type==".")return cont(property,327maybeoperator);if(type=="[")return cont(pushlex("]"),expression,expect("]"),poplex,maybeoperator)}function maybelabel(type){if(type==":")return cont(poplex,statement);return pass(maybeoperator,expect(";"),poplex)}function property(type){if(type=="variable"){cx.marked="property";return cont()}}function objprop(type){if(type=="variable")cx.marked="property";if(atomicTypes.hasOwnProperty(type))return cont(expect(":"),expression)}function commasep(what,end){function proceed(type){if(type==",")return cont(what,328proceed);if(type==end)return cont();return cont(expect(end))}return function commaSeparated(type){if(type==end)return cont();else return pass(what,proceed)}}function block(type){if(type=="}")return cont();return pass(statement,block)}function maybetype(type){if(type==":")return cont(typedef);return pass()}function typedef(type){if(type=="variable"){cx.marked="variable-3";return cont()}return pass()}function vardef1(type,value){if(type=="variable"){register(value);return isTS?cont(maybetype,vardef2):329cont(vardef2)}return pass()}function vardef2(type,value){if(value=="=")return cont(expression,vardef2);if(type==",")return cont(vardef1)}function forspec1(type){if(type=="var")return cont(vardef1,expect(";"),forspec2);if(type==";")return cont(forspec2);if(type=="variable")return cont(formaybein);return cont(forspec2)}function formaybein(type,value){if(value=="in")return cont(expression);return cont(maybeoperator,forspec2)}function forspec2(type,value){if(type==";")return cont(forspec3);if(value==330"in")return cont(expression);return cont(expression,expect(";"),forspec3)}function forspec3(type){if(type!=")")cont(expression)}function functiondef(type,value){if(type=="variable"){register(value);return cont(functiondef)}if(type=="(")return cont(pushlex(")"),pushcontext,commasep(funarg,")"),poplex,statement,popcontext)}function funarg(type,value){if(type=="variable"){register(value);return isTS?cont(maybetype):cont()}}return{startState:function(basecolumn){return{tokenize:jsTokenBase,lastType:null,331cc:[],lexical:new JSLexical((basecolumn||0)-indentUnit,0,"block",false),localVars:parserConfig.localVars,globalVars:parserConfig.globalVars,context:parserConfig.localVars&&{vars:parserConfig.localVars},indented:0}},token:function(stream,state){if(stream.sol()){if(!state.lexical.hasOwnProperty("align"))state.lexical.align=false;state.indented=stream.indentation()}if(stream.eatSpace())return null;var style=state.tokenize(stream,state);if(type=="comment")return style;state.lastType=type;return parseJS(state,332style,type,content,stream)},indent:function(state,textAfter){if(state.tokenize==jsTokenComment)return CodeMirror.Pass;if(state.tokenize!=jsTokenBase)return 0;var firstChar=textAfter&&textAfter.charAt(0),lexical=state.lexical;if(lexical.type=="stat"&&firstChar=="}")lexical=lexical.prev;var type=lexical.type,closing=firstChar==type;if(type=="vardef")return lexical.indented+(state.lastType=="operator"||state.lastType==","?4:0);else if(type=="form"&&firstChar=="{")return lexical.indented;else if(type==333"form")return lexical.indented+indentUnit;else if(type=="stat")return lexical.indented+(state.lastType=="operator"||state.lastType==","?indentUnit:0);else if(lexical.info=="switch"&&!closing)return lexical.indented+(/^(?:case|default)\b/.test(textAfter)?indentUnit:2*indentUnit);else if(lexical.align)return lexical.column+(closing?0:1);else return lexical.indented+(closing?0:indentUnit)},electricChars:":{}",jsonMode:jsonMode}});CodeMirror.defineMIME("text/javascript","javascript");334CodeMirror.defineMIME("text/ecmascript","javascript");CodeMirror.defineMIME("application/javascript","javascript");CodeMirror.defineMIME("application/ecmascript","javascript");CodeMirror.defineMIME("application/json",{name:"javascript",json:true});CodeMirror.defineMIME("text/typescript",{name:"javascript",typescript:true});CodeMirror.defineMIME("application/typescript",{name:"javascript",typescript:true});CodeMirror.defineMode("htmlmixed",function(config){var htmlMode=CodeMirror.getMode(config,{name:"xml",htmlMode:true});var jsMode=CodeMirror.getMode(config,"javascript");var cssMode=CodeMirror.getMode(config,"css");function html(stream,state){var style=htmlMode.token(stream,state.htmlState);if(/(?:^|\s)tag(?:\s|$)/.test(style)&&stream.current()==">"&&state.htmlState.context)if(/^script$/i.test(state.htmlState.context.tagName)){state.token=javascript;state.localState=jsMode.startState(htmlMode.indent(state.htmlState,335""))}else if(/^style$/i.test(state.htmlState.context.tagName)){state.token=css;state.localState=cssMode.startState(htmlMode.indent(state.htmlState,""))}return style}function maybeBackup(stream,pat,style){var cur=stream.current();var close=cur.search(pat),m;if(close>-1)stream.backUp(cur.length-close);else if(m=cur.match(/<\/?$/)){stream.backUp(cur.length);if(!stream.match(pat,false))stream.match(cur[0])}return style}function javascript(stream,state){if(stream.match(/^<\/\s*script\s*>/i,false)){state.token=336html;state.localState=null;return html(stream,state)}return maybeBackup(stream,/<\/\s*script\s*>/,jsMode.token(stream,state.localState))}function css(stream,state){if(stream.match(/^<\/\s*style\s*>/i,false)){state.token=html;state.localState=null;return html(stream,state)}return maybeBackup(stream,/<\/\s*style\s*>/,cssMode.token(stream,state.localState))}return{startState:function(){var state=htmlMode.startState();return{token:html,localState:null,mode:"html",htmlState:state}},copyState:function(state){if(state.localState)var local=337CodeMirror.copyState(state.token==css?cssMode:jsMode,state.localState);return{token:state.token,localState:local,mode:state.mode,htmlState:CodeMirror.copyState(htmlMode,state.htmlState)}},token:function(stream,state){return state.token(stream,state)},indent:function(state,textAfter){if(state.token==html||/^\s*<\//.test(textAfter))return htmlMode.indent(state.htmlState,textAfter);else if(state.token==javascript)return jsMode.indent(state.localState,textAfter);else return cssMode.indent(state.localState,338textAfter)},electricChars:"/{}:",innerMode:function(state){var mode=state.token==html?htmlMode:state.token==javascript?jsMode:cssMode;return{state:state.localState||state.htmlState,mode:mode}}}},"xml","javascript","css");CodeMirror.defineMIME("text/html","htmlmixed");339340