C,v==b),f,v==b?0:1,p)},u.prototype.drawMultiLineMarker=function(c,h,d,f,p){var m=this.$padding,y=f.lineHeight,b=this.$getTop(h.start.row,f),v=m+h.start.column*f.characterWidth;if(p=p||"",this.session.$bidiHandler.isBidiRow(h.start.row)){var D=h.clone();D.end.row=D.start.row,D.end.column=this.session.getLine(D.start.row).length,this.drawBidiSingleLineMarker(c,D,d+" ace_br1 ace_start",f,null,p)}else this.elt(d+" ace_br1 ace_start","height:"+y+"px;right:"+m+"px;top:"+b+"px;left:"+v+"px;"+(p||""));if(this.session.$bidiHandler.isBidiRow(h.end.row)){var D=h.clone();D.start.row=D.end.row,D.start.column=0,this.drawBidiSingleLineMarker(c,D,d+" ace_br12",f,null,p)}else{b=this.$getTop(h.end.row,f);var E=h.end.column*f.characterWidth;this.elt(d+" ace_br12","height:"+y+"px;width:"+E+"px;top:"+b+"px;left:"+m+"px;"+(p||""))}if(y=(h.end.row-h.start.row-1)*f.lineHeight,!(y<=0)){b=this.$getTop(h.start.row+1,f);var C=(h.start.column?1:0)|(h.end.column?0:8);this.elt(d+(C?" ace_br"+C:""),"height:"+y+"px;right:"+m+"px;top:"+b+"px;left:"+m+"px;"+(p||""))}},u.prototype.drawSingleLineMarker=function(c,h,d,f,p,m){if(this.session.$bidiHandler.isBidiRow(h.start.row))return this.drawBidiSingleLineMarker(c,h,d,f,p,m);var y=f.lineHeight,b=(h.end.column+(p||0)-h.start.column)*f.characterWidth,v=this.$getTop(h.start.row,f),D=this.$padding+h.start.column*f.characterWidth;this.elt(d,"height:"+y+"px;width:"+b+"px;top:"+v+"px;left:"+D+"px;"+(m||""))},u.prototype.drawBidiSingleLineMarker=function(c,h,d,f,p,m){var y=f.lineHeight,b=this.$getTop(h.start.row,f),v=this.$padding,D=this.session.$bidiHandler.getSelections(h.start.column,h.end.column);D.forEach(function(E){this.elt(d,"height:"+y+"px;width:"+(E.width+(p||0))+"px;top:"+b+"px;left:"+(v+E.left)+"px;"+(m||""))},this)},u.prototype.drawFullLineMarker=function(c,h,d,f,p){var m=this.$getTop(h.start.row,f),y=f.lineHeight;h.start.row!=h.end.row&&(y+=this.$getTop(h.end.row,f)-m),this.elt(d,"height:"+y+"px;top:"+m+"px;left:0;right:0;"+(p||""))},u.prototype.drawScreenLineMarker=function(c,h,d,f,p){var m=this.$getTop(h.start.row,f),y=f.lineHeight;this.elt(d,"height:"+y+"px;top:"+m+"px;left:0;right:0;"+(p||""))},u}();a.prototype.$padding=0;function l(u,c,h,d){return(u?1:0)|(c?2:0)|(h?4:0)|(d?8:0)}n.Marker=a}),ace.define("ace/layer/text_util",["require","exports","module"],function(r,n,i){var s=new Set(["text","rparen","lparen"]);n.isTextToken=function(o){return s.has(o)}}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/layer/lines","ace/lib/event_emitter","ace/config","ace/layer/text_util"],function(r,n,i){var s=r("../lib/oop"),o=r("../lib/dom"),a=r("../lib/lang"),l=r("./lines").Lines,u=r("../lib/event_emitter").EventEmitter,c=r("../config").nls,h=r("./text_util").isTextToken,d=function(){function f(p){this.dom=o,this.element=this.dom.createElement("div"),this.element.className="ace_layer ace_text-layer",p.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this),this.$lines=new l(this.element)}return f.prototype.$updateEolChar=function(){var p=this.session.doc,m=p.getNewLineCharacter()==`
+`&&p.getNewLineMode()!="windows",y=m?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=y)return this.EOL_CHAR=y,!0},f.prototype.setPadding=function(p){this.$padding=p,this.element.style.margin="0 "+p+"px"},f.prototype.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},f.prototype.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},f.prototype.$setFontMetrics=function(p){this.$fontMetrics=p,this.$fontMetrics.on("changeCharacterSize",(function(m){this._signal("changeCharacterSize",m)}).bind(this)),this.$pollSizeChanges()},f.prototype.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},f.prototype.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},f.prototype.setSession=function(p){this.session=p,p&&this.$computeTabString()},f.prototype.setShowInvisibles=function(p){return this.showInvisibles==p?!1:(this.showInvisibles=p,typeof p=="string"?(this.showSpaces=/tab/i.test(p),this.showTabs=/space/i.test(p),this.showEOL=/eol/i.test(p)):this.showSpaces=this.showTabs=this.showEOL=p,this.$computeTabString(),!0)},f.prototype.setDisplayIndentGuides=function(p){return this.displayIndentGuides==p?!1:(this.displayIndentGuides=p,this.$computeTabString(),!0)},f.prototype.setHighlightIndentGuides=function(p){return this.$highlightIndentGuides===p?!1:(this.$highlightIndentGuides=p,p)},f.prototype.$computeTabString=function(){var p=this.session.getTabSize();this.tabSize=p;for(var m=this.$tabStrings=[0],y=1;yk&&(w=T.end.row+1,T=this.session.getNextFoldLine(w,T),k=T?T.start.row:1/0),!(w>v);){var O=D[E++];if(O){this.dom.removeChildren(O),this.$renderLine(O,w,w==k?T:!1),C&&(O.style.top=this.$lines.computeLineTop(w,p,this.session)+"px");var P=p.lineHeight*this.session.getRowLength(w)+"px";O.style.height!=P&&(C=!0,O.style.height=P)}w++}if(C)for(;E0;v--)this.$lines.shift();if(m.lastRow>p.lastRow)for(var v=this.session.getFoldedRowCount(p.lastRow+1,m.lastRow);v>0;v--)this.$lines.pop();p.firstRowm.lastRow&&this.$lines.push(this.$renderLinesFragment(p,m.lastRow+1,p.lastRow)),this.$highlightIndentGuide()},f.prototype.$renderLinesFragment=function(p,m,y){for(var b=[],v=m,D=this.session.getNextFoldLine(v),E=D?D.start.row:1/0;v>E&&(v=D.end.row+1,D=this.session.getNextFoldLine(v,D),E=D?D.start.row:1/0),!(v>y);){var C=this.$lines.createCell(v,p,this.session),w=C.element;this.dom.removeChildren(w),o.setStyle(w.style,"height",this.$lines.computeLineHeight(v,p,this.session)+"px"),o.setStyle(w.style,"top",this.$lines.computeLineTop(v,p,this.session)+"px"),this.$renderLine(w,v,v==E?D:!1),this.$useLineGroups()?w.className="ace_line_group":w.className="ace_line",b.push(C),v++}return b},f.prototype.update=function(p){this.$lines.moveContainer(p),this.config=p;for(var m=p.firstRow,y=p.lastRow,b=this.$lines;b.getLength();)b.pop();b.push(this.$renderLinesFragment(p,m,y))},f.prototype.$renderToken=function(p,m,y,b){for(var v=this,D=/(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC\u2066\u2067\u2068\u202A\u202B\u202D\u202E\u202C\u2069\u2060\u2061\u2062\u2063\u2064\u206A\u206B\u206B\u206C\u206D\u206E\u206F]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g,E=this.dom.createFragment(this.element),C,w=0;C=D.exec(b);){var T=C[1],k=C[2],O=C[3],P=C[4],M=C[5];if(!(!v.showSpaces&&k)){var F=w!=C.index?b.slice(w,C.index):"";if(w=C.index+C[0].length,F&&E.appendChild(this.dom.createTextNode(F,this.element)),T){var L=v.session.getScreenTabSize(m+C.index);E.appendChild(v.$tabStrings[L].cloneNode(!0)),m+=L-1}else if(k)if(v.showSpaces){var _=this.dom.createElement("span");_.className="ace_invisible ace_invisible_space",_.textContent=a.stringRepeat(v.SPACE_CHAR,k.length),E.appendChild(_)}else E.appendChild(this.dom.createTextNode(k,this.element));else if(O){var _=this.dom.createElement("span");_.className="ace_invisible ace_invisible_space ace_invalid",_.textContent=a.stringRepeat(v.SPACE_CHAR,O.length),E.appendChild(_)}else if(P){m+=1;var _=this.dom.createElement("span");_.style.width=v.config.characterWidth*2+"px",_.className=v.showSpaces?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",_.textContent=v.showSpaces?v.SPACE_CHAR:P,E.appendChild(_)}else if(M){m+=1;var _=this.dom.createElement("span");_.style.width=v.config.characterWidth*2+"px",_.className="ace_cjk",_.textContent=M,E.appendChild(_)}}}if(E.appendChild(this.dom.createTextNode(w?b.slice(w):b,this.element)),h(y.type))p.appendChild(E);else{var A="ace_"+y.type.replace(/\./g," ace_"),_=this.dom.createElement("span");y.type=="fold"&&(_.style.width=y.value.length*this.config.characterWidth+"px",_.setAttribute("title",c("inline-fold.closed.title","Unfold code"))),_.className=A,_.appendChild(E),p.appendChild(_)}return m+b.length},f.prototype.renderIndentGuide=function(p,m,y){var b=m.search(this.$indentGuideRe);if(b<=0||b>=y)return m;if(m[0]==" "){b-=b%this.tabSize;for(var v=b/this.tabSize,D=0;DD[E].start.row?this.$highlightIndentGuideMarker.dir=-1:this.$highlightIndentGuideMarker.dir=1;break}}if(!this.$highlightIndentGuideMarker.end&&p[m.row]!==""&&m.column===p[m.row].length){this.$highlightIndentGuideMarker.dir=1;for(var E=m.row+1;E0){for(var v=0;v=this.$highlightIndentGuideMarker.start+1){if(b.row>=this.$highlightIndentGuideMarker.end)break;this.$setIndentGuideActive(b,m)}}else for(var y=p.length-1;y>=0;y--){var b=p[y];if(this.$highlightIndentGuideMarker.end&&b.row=D;)E=this.$renderToken(C,E,T,k.substring(0,D-b)),k=k.substring(D-b),b=D,C=this.$createLineElement(),p.appendChild(C),C.appendChild(this.dom.createTextNode(a.stringRepeat(" ",y.indent),this.element)),v++,E=0,D=y[v]||Number.MAX_VALUE;k.length!=0&&(b+=k.length,E=this.$renderToken(C,E,T,k))}}y[y.length-1]>this.MAX_LINE_LENGTH&&this.$renderOverflowMessage(C,E,null,"",!0)},f.prototype.$renderSimpleLine=function(p,m){for(var y=0,b=0;bthis.MAX_LINE_LENGTH)return this.$renderOverflowMessage(p,y,v,D);y=this.$renderToken(p,y,v,D)}}},f.prototype.$renderOverflowMessage=function(p,m,y,b,v){y&&this.$renderToken(p,m,y,b.slice(0,this.MAX_LINE_LENGTH-m));var D=this.dom.createElement("span");D.className="ace_inline_button ace_keyword ace_toggle_wrap",D.textContent=v?"":"",p.appendChild(D)},f.prototype.$renderLine=function(p,m,y){if(!y&&y!=!1&&(y=this.session.getFoldLine(m)),y)var b=this.$getFoldLineTokens(m,y);else var b=this.session.getTokens(m);var v=p;if(b.length){var D=this.session.getRowSplitData(m);if(D&&D.length){this.$renderWrappedLine(p,b,D);var v=p.lastChild}else{var v=p;this.$useLineGroups()&&(v=this.$createLineElement(),p.appendChild(v)),this.$renderSimpleLine(v,b)}}else this.$useLineGroups()&&(v=this.$createLineElement(),p.appendChild(v));if(this.showEOL&&v){y&&(m=y.end.row);var E=this.dom.createElement("span");E.className="ace_invisible ace_invisible_eol",E.textContent=m==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,v.appendChild(E)}},f.prototype.$getFoldLineTokens=function(p,m){var y=this.session,b=[];function v(E,C,w){for(var T=0,k=0;k+E[T].value.lengthw-C&&(O=O.substring(0,w-C)),b.push({type:E[T].type,value:O}),k=C+O.length,T+=1}for(;kw?b.push({type:E[T].type,value:O.substring(0,w-k)}):b.push(E[T]),k+=O.length,T+=1}}var D=y.getTokens(p);return m.walk(function(E,C,w,T,k){E!=null?b.push({type:"fold",value:E}):(k&&(D=y.getTokens(C)),D.length&&v(D,T,w))},m.end.row,this.session.getLine(m.end.row).length),b},f.prototype.$useLineGroups=function(){return this.session.getUseWrapMode()},f}();d.prototype.EOF_CHAR="¶",d.prototype.EOL_CHAR_LF="¬",d.prototype.EOL_CHAR_CRLF="¤",d.prototype.EOL_CHAR=d.prototype.EOL_CHAR_LF,d.prototype.TAB_CHAR="—",d.prototype.SPACE_CHAR="·",d.prototype.$padding=0,d.prototype.MAX_LINE_LENGTH=1e4,d.prototype.showInvisibles=!1,d.prototype.showSpaces=!1,d.prototype.showTabs=!1,d.prototype.showEOL=!1,d.prototype.displayIndentGuides=!0,d.prototype.$highlightIndentGuides=!0,d.prototype.$tabStrings=[],d.prototype.destroy={},d.prototype.onChangeTabSize=d.prototype.$computeTabString,s.implement(d.prototype,u),n.Text=d}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(r,n,i){var s=r("../lib/dom"),o=function(){function a(l){this.element=s.createElement("div"),this.element.className="ace_layer ace_cursor-layer",l.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),s.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=this.$updateOpacity.bind(this)}return a.prototype.$updateOpacity=function(l){for(var u=this.cursors,c=u.length;c--;)s.setStyle(u[c].style,"opacity",l?"":"0")},a.prototype.$startCssAnimation=function(){for(var l=this.cursors,u=l.length;u--;)l[u].style.animationDuration=this.blinkInterval+"ms";this.$isAnimating=!0,setTimeout((function(){this.$isAnimating&&s.addCssClass(this.element,"ace_animate-blinking")}).bind(this))},a.prototype.$stopCssAnimation=function(){this.$isAnimating=!1,s.removeCssClass(this.element,"ace_animate-blinking")},a.prototype.setPadding=function(l){this.$padding=l},a.prototype.setSession=function(l){this.session=l},a.prototype.setBlinking=function(l){l!=this.isBlinking&&(this.isBlinking=l,this.restartTimer())},a.prototype.setBlinkInterval=function(l){l!=this.blinkInterval&&(this.blinkInterval=l,this.restartTimer())},a.prototype.setSmoothBlinking=function(l){l!=this.smoothBlinking&&(this.smoothBlinking=l,s.setCssClass(this.element,"ace_smooth-blinking",l),this.$updateCursors(!0),this.restartTimer())},a.prototype.addCursor=function(){var l=s.createElement("div");return l.className="ace_cursor",this.element.appendChild(l),this.cursors.push(l),l},a.prototype.removeCursor=function(){if(this.cursors.length>1){var l=this.cursors.pop();return l.parentNode.removeChild(l),l}},a.prototype.hideCursor=function(){this.isVisible=!1,s.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},a.prototype.showCursor=function(){this.isVisible=!0,s.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},a.prototype.restartTimer=function(){var l=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.$stopCssAnimation(),this.smoothBlinking&&(this.$isSmoothBlinking=!1,s.removeCssClass(this.element,"ace_smooth-blinking")),l(!0),!this.isBlinking||!this.blinkInterval||!this.isVisible){this.$stopCssAnimation();return}if(this.smoothBlinking&&(this.$isSmoothBlinking=!0,setTimeout((function(){this.$isSmoothBlinking&&s.addCssClass(this.element,"ace_smooth-blinking")}).bind(this))),s.HAS_CSS_ANIMATION)this.$startCssAnimation();else{var u=(function(){this.timeoutId=setTimeout(function(){l(!1)},.6*this.blinkInterval)}).bind(this);this.intervalId=setInterval(function(){l(!0),u()},this.blinkInterval),u()}},a.prototype.getPixelPosition=function(l,u){if(!this.config||!this.session)return{left:0,top:0};l||(l=this.session.selection.getCursor());var c=this.session.documentToScreenPosition(l),h=this.$padding+(this.session.$bidiHandler.isBidiRow(c.row,l.row)?this.session.$bidiHandler.getPosLeft(c.column):c.column*this.config.characterWidth),d=(c.row-(u?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:h,top:d}},a.prototype.isCursorInView=function(l,u){return l.top>=0&&l.topl.height+l.offset||f.top<0)&&c>1)){var p=this.cursors[h++]||this.addCursor(),m=p.style;this.drawCursor?this.drawCursor(p,f,l,u[c],this.session):this.isCursorInView(f,l)?(s.setStyle(m,"display","block"),s.translate(p,f.left,f.top),s.setStyle(m,"width",Math.round(l.characterWidth)+"px"),s.setStyle(m,"height",l.lineHeight+"px")):s.setStyle(m,"display","none")}}for(;this.cursors.length>h;)this.removeCursor();var y=this.session.getOverwrite();this.$setOverwrite(y),this.$pixelPos=f,this.restartTimer()},a.prototype.$setOverwrite=function(l){l!=this.overwrite&&(this.overwrite=l,l?s.addCssClass(this.element,"ace_overwrite-cursors"):s.removeCssClass(this.element,"ace_overwrite-cursors"))},a.prototype.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)},a}();o.prototype.$padding=0,o.prototype.drawCursor=null,n.Cursor=o}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(r,n,i){var s=this&&this.__extends||function(){var p=function(m,y){return p=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(b,v){b.__proto__=v}||function(b,v){for(var D in v)Object.prototype.hasOwnProperty.call(v,D)&&(b[D]=v[D])},p(m,y)};return function(m,y){if(typeof y!="function"&&y!==null)throw new TypeError("Class extends value "+String(y)+" is not a constructor or null");p(m,y);function b(){this.constructor=m}m.prototype=y===null?Object.create(y):(b.prototype=y.prototype,new b)}}(),o=r("./lib/oop"),a=r("./lib/dom"),l=r("./lib/event"),u=r("./lib/event_emitter").EventEmitter,c=32768,h=function(){function p(m,y){this.element=a.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+y,this.inner=a.createElement("div"),this.inner.className="ace_scrollbar-inner",this.inner.textContent=" ",this.element.appendChild(this.inner),m.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,l.addListener(this.element,"scroll",this.onScroll.bind(this)),l.addListener(this.element,"mousedown",l.preventDefault)}return p.prototype.setVisible=function(m){this.element.style.display=m?"":"none",this.isVisible=m,this.coeff=1},p}();o.implement(h.prototype,u);var d=function(p){s(m,p);function m(y,b){var v=p.call(this,y,"-v")||this;return v.scrollTop=0,v.scrollHeight=0,b.$scrollbarWidth=v.width=a.scrollbarWidth(y.ownerDocument),v.inner.style.width=v.element.style.width=(v.width||15)+5+"px",v.$minWidth=0,v}return m.prototype.onScroll=function(){if(!this.skipEvent){if(this.scrollTop=this.element.scrollTop,this.coeff!=1){var y=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-y)/(this.coeff-y)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},m.prototype.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},m.prototype.setHeight=function(y){this.element.style.height=y+"px"},m.prototype.setScrollHeight=function(y){this.scrollHeight=y,y>c?(this.coeff=c/y,y=c):this.coeff!=1&&(this.coeff=1),this.inner.style.height=y+"px"},m.prototype.setScrollTop=function(y){this.scrollTop!=y&&(this.skipEvent=!0,this.scrollTop=y,this.element.scrollTop=y*this.coeff)},m}(h);d.prototype.setInnerHeight=d.prototype.setScrollHeight;var f=function(p){s(m,p);function m(y,b){var v=p.call(this,y,"-h")||this;return v.scrollLeft=0,v.height=b.$scrollbarWidth,v.inner.style.height=v.element.style.height=(v.height||15)+5+"px",v}return m.prototype.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},m.prototype.getHeight=function(){return this.isVisible?this.height:0},m.prototype.setWidth=function(y){this.element.style.width=y+"px"},m.prototype.setInnerWidth=function(y){this.inner.style.width=y+"px"},m.prototype.setScrollWidth=function(y){this.inner.style.width=y+"px"},m.prototype.setScrollLeft=function(y){this.scrollLeft!=y&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=y)},m}(h);n.ScrollBar=d,n.ScrollBarV=d,n.ScrollBarH=f,n.VScrollBar=d,n.HScrollBar=f}),ace.define("ace/scrollbar_custom",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(r,n,i){var s=this&&this.__extends||function(){var f=function(p,m){return f=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(y,b){y.__proto__=b}||function(y,b){for(var v in b)Object.prototype.hasOwnProperty.call(b,v)&&(y[v]=b[v])},f(p,m)};return function(p,m){if(typeof m!="function"&&m!==null)throw new TypeError("Class extends value "+String(m)+" is not a constructor or null");f(p,m);function y(){this.constructor=p}p.prototype=m===null?Object.create(m):(y.prototype=m.prototype,new y)}}(),o=r("./lib/oop"),a=r("./lib/dom"),l=r("./lib/event"),u=r("./lib/event_emitter").EventEmitter;a.importCssString(`.ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{
+ position: absolute;
+ background: rgba(128, 128, 128, 0.6);
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ border: 1px solid #bbb;
+ border-radius: 2px;
+ z-index: 8;
+}
+.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h {
+ position: absolute;
+ z-index: 6;
+ background: none;
+ overflow: hidden!important;
+}
+.ace_editor>.ace_sb-v {
+ z-index: 6;
+ right: 0;
+ top: 0;
+ width: 12px;
+}
+.ace_editor>.ace_sb-v div {
+ z-index: 8;
+ right: 0;
+ width: 100%;
+}
+.ace_editor>.ace_sb-h {
+ bottom: 0;
+ left: 0;
+ height: 12px;
+}
+.ace_editor>.ace_sb-h div {
+ bottom: 0;
+ height: 100%;
+}
+.ace_editor>.ace_sb_grabbed {
+ z-index: 8;
+ background: #000;
+}`,"ace_scrollbar.css",!1);var c=function(){function f(p,m){this.element=a.createElement("div"),this.element.className="ace_sb"+m,this.inner=a.createElement("div"),this.inner.className="",this.element.appendChild(this.inner),this.VScrollWidth=12,this.HScrollHeight=12,p.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,l.addMultiMouseDownListener(this.element,[500,300,300],this,"onMouseDown")}return f.prototype.setVisible=function(p){this.element.style.display=p?"":"none",this.isVisible=p,this.coeff=1},f}();o.implement(c.prototype,u);var h=function(f){s(p,f);function p(m,y){var b=f.call(this,m,"-v")||this;return b.scrollTop=0,b.scrollHeight=0,b.parent=m,b.width=b.VScrollWidth,b.renderer=y,b.inner.style.width=b.element.style.width=(b.width||15)+"px",b.$minWidth=0,b}return p.prototype.onMouseDown=function(m,y){if(m==="mousedown"&&!(l.getButton(y)!==0||y.detail===2)){if(y.target===this.inner){var b=this,v=y.clientY,D=function(P){v=P.clientY},E=function(){clearInterval(k)},C=y.clientY,w=this.thumbTop,T=function(){if(v!==void 0){var P=b.scrollTopFromThumbTop(w+v-C);P!==b.scrollTop&&b._emit("scroll",{data:P})}};l.capture(this.inner,D,E);var k=setInterval(T,20);return l.preventDefault(y)}var O=y.clientY-this.element.getBoundingClientRect().top-this.thumbHeight/2;return this._emit("scroll",{data:this.scrollTopFromThumbTop(O)}),l.preventDefault(y)}},p.prototype.getHeight=function(){return this.height},p.prototype.scrollTopFromThumbTop=function(m){var y=m*(this.pageHeight-this.viewHeight)/(this.slideHeight-this.thumbHeight);return y=y>>0,y<0?y=0:y>this.pageHeight-this.viewHeight&&(y=this.pageHeight-this.viewHeight),y},p.prototype.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},p.prototype.setHeight=function(m){this.height=Math.max(0,m),this.slideHeight=this.height,this.viewHeight=this.height,this.setScrollHeight(this.pageHeight,!0)},p.prototype.setScrollHeight=function(m,y){this.pageHeight===m&&!y||(this.pageHeight=m,this.thumbHeight=this.slideHeight*this.viewHeight/this.pageHeight,this.thumbHeight>this.slideHeight&&(this.thumbHeight=this.slideHeight),this.thumbHeight<15&&(this.thumbHeight=15),this.inner.style.height=this.thumbHeight+"px",this.scrollTop>this.pageHeight-this.viewHeight&&(this.scrollTop=this.pageHeight-this.viewHeight,this.scrollTop<0&&(this.scrollTop=0),this._emit("scroll",{data:this.scrollTop})))},p.prototype.setScrollTop=function(m){this.scrollTop=m,m<0&&(m=0),this.thumbTop=m*(this.slideHeight-this.thumbHeight)/(this.pageHeight-this.viewHeight),this.inner.style.top=this.thumbTop+"px"},p}(c);h.prototype.setInnerHeight=h.prototype.setScrollHeight;var d=function(f){s(p,f);function p(m,y){var b=f.call(this,m,"-h")||this;return b.scrollLeft=0,b.scrollWidth=0,b.height=b.HScrollHeight,b.inner.style.height=b.element.style.height=(b.height||12)+"px",b.renderer=y,b}return p.prototype.onMouseDown=function(m,y){if(m==="mousedown"&&!(l.getButton(y)!==0||y.detail===2)){if(y.target===this.inner){var b=this,v=y.clientX,D=function(P){v=P.clientX},E=function(){clearInterval(k)},C=y.clientX,w=this.thumbLeft,T=function(){if(v!==void 0){var P=b.scrollLeftFromThumbLeft(w+v-C);P!==b.scrollLeft&&b._emit("scroll",{data:P})}};l.capture(this.inner,D,E);var k=setInterval(T,20);return l.preventDefault(y)}var O=y.clientX-this.element.getBoundingClientRect().left-this.thumbWidth/2;return this._emit("scroll",{data:this.scrollLeftFromThumbLeft(O)}),l.preventDefault(y)}},p.prototype.getHeight=function(){return this.isVisible?this.height:0},p.prototype.scrollLeftFromThumbLeft=function(m){var y=m*(this.pageWidth-this.viewWidth)/(this.slideWidth-this.thumbWidth);return y=y>>0,y<0?y=0:y>this.pageWidth-this.viewWidth&&(y=this.pageWidth-this.viewWidth),y},p.prototype.setWidth=function(m){this.width=Math.max(0,m),this.element.style.width=this.width+"px",this.slideWidth=this.width,this.viewWidth=this.width,this.setScrollWidth(this.pageWidth,!0)},p.prototype.setScrollWidth=function(m,y){this.pageWidth===m&&!y||(this.pageWidth=m,this.thumbWidth=this.slideWidth*this.viewWidth/this.pageWidth,this.thumbWidth>this.slideWidth&&(this.thumbWidth=this.slideWidth),this.thumbWidth<15&&(this.thumbWidth=15),this.inner.style.width=this.thumbWidth+"px",this.scrollLeft>this.pageWidth-this.viewWidth&&(this.scrollLeft=this.pageWidth-this.viewWidth,this.scrollLeft<0&&(this.scrollLeft=0),this._emit("scroll",{data:this.scrollLeft})))},p.prototype.setScrollLeft=function(m){this.scrollLeft=m,m<0&&(m=0),this.thumbLeft=m*(this.slideWidth-this.thumbWidth)/(this.pageWidth-this.viewWidth),this.inner.style.left=this.thumbLeft+"px"},p}(c);d.prototype.setInnerWidth=d.prototype.setScrollWidth,n.ScrollBar=h,n.ScrollBarV=h,n.ScrollBarH=d,n.VScrollBar=h,n.HScrollBar=d}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(r,n,i){var s=r("./lib/event"),o=function(){function a(l,u){this.onRender=l,this.pending=!1,this.changes=0,this.$recursionLimit=2,this.window=u||window;var c=this;this._flush=function(h){c.pending=!1;var d=c.changes;if(d&&(s.blockIdle(100),c.changes=0,c.onRender(d)),c.changes){if(c.$recursionLimit--<0)return;c.schedule()}else c.$recursionLimit=2}}return a.prototype.schedule=function(l){this.changes=this.changes|l,this.changes&&!this.pending&&(s.nextFrame(this._flush),this.pending=!0)},a.prototype.clear=function(l){var u=this.changes;return this.changes=0,u},a}();n.RenderLoop=o}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/lib/useragent","ace/lib/event_emitter"],function(r,n,i){var s=r("../lib/oop"),o=r("../lib/dom"),a=r("../lib/lang"),l=r("../lib/event"),u=r("../lib/useragent"),c=r("../lib/event_emitter").EventEmitter,h=512,d=typeof ResizeObserver=="function",f=200,p=function(){function m(y){this.el=o.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=o.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=o.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),y.appendChild(this.el),this.$measureNode.textContent=a.stringRepeat("X",h),this.$characterSize={width:0,height:0},d?this.$addObserver():this.checkForSizeChanges()}return m.prototype.$setMeasureNodeStyles=function(y,b){y.width=y.height="auto",y.left=y.top="0px",y.visibility="hidden",y.position="absolute",y.whiteSpace="pre",u.isIE<8?y["font-family"]="inherit":y.font="inherit",y.overflow=b?"hidden":"visible"},m.prototype.checkForSizeChanges=function(y){if(y===void 0&&(y=this.$measureSizes()),y&&(this.$characterSize.width!==y.width||this.$characterSize.height!==y.height)){this.$measureNode.style.fontWeight="bold";var b=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=y,this.charSizes=Object.create(null),this.allowBoldFonts=b&&b.width===y.width&&b.height===y.height,this._emit("changeCharacterSize",{data:y})}},m.prototype.$addObserver=function(){var y=this;this.$observer=new window.ResizeObserver(function(b){y.checkForSizeChanges()}),this.$observer.observe(this.$measureNode)},m.prototype.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer||this.$observer)return this.$pollSizeChangesTimer;var y=this;return this.$pollSizeChangesTimer=l.onIdle(function b(){y.checkForSizeChanges(),l.onIdle(b,500)},500)},m.prototype.setPolling=function(y){y?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},m.prototype.$measureSizes=function(y){var b={height:(y||this.$measureNode).clientHeight,width:(y||this.$measureNode).clientWidth/h};return b.width===0||b.height===0?null:b},m.prototype.$measureCharWidth=function(y){this.$main.textContent=a.stringRepeat(y,h);var b=this.$main.getBoundingClientRect();return b.width/h},m.prototype.getCharacterWidth=function(y){var b=this.charSizes[y];return b===void 0&&(b=this.charSizes[y]=this.$measureCharWidth(y)/this.$characterSize.width),b},m.prototype.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$observer&&this.$observer.disconnect(),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)},m.prototype.$getZoom=function(y){return!y||!y.parentElement?1:(Number(window.getComputedStyle(y).zoom)||1)*this.$getZoom(y.parentElement)},m.prototype.$initTransformMeasureNodes=function(){var y=function(b,v){return["div",{style:"position: absolute;top:"+b+"px;left:"+v+"px;"}]};this.els=o.buildDom([y(0,0),y(f,0),y(0,f),y(f,f)],this.el)},m.prototype.transformCoordinates=function(y,b){if(y){var v=this.$getZoom(this.el);y=w(1/v,y)}function D(V,K,J){var G=V[1]*K[0]-V[0]*K[1];return[(-K[1]*J[0]+K[0]*J[1])/G,(+V[1]*J[0]-V[0]*J[1])/G]}function E(V,K){return[V[0]-K[0],V[1]-K[1]]}function C(V,K){return[V[0]+K[0],V[1]+K[1]]}function w(V,K){return[V*K[0],V*K[1]]}this.els||this.$initTransformMeasureNodes();function T(V){var K=V.getBoundingClientRect();return[K.left,K.top]}var k=T(this.els[0]),O=T(this.els[1]),P=T(this.els[2]),M=T(this.els[3]),F=D(E(M,O),E(M,P),E(C(O,P),C(M,k))),L=w(1+F[0],E(O,k)),_=w(1+F[1],E(P,k));if(b){var A=b,I=F[0]*A[0]/f+F[1]*A[1]/f+1,R=C(w(A[0],L),w(A[1],_));return C(w(1/I/f,R),k)}var B=E(y,k),U=D(E(L,w(F[0],B)),E(_,w(F[1],B)),B);return w(f,U)},m}();p.prototype.$characterSize={width:0,height:0},s.implement(p.prototype,c),n.FontMetrics=p}),ace.define("ace/css/editor-css",["require","exports","module"],function(r,n,i){i.exports=`
+.ace_br1 {border-top-left-radius : 3px;}
+.ace_br2 {border-top-right-radius : 3px;}
+.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}
+.ace_br4 {border-bottom-right-radius: 3px;}
+.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}
+.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}
+.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}
+.ace_br8 {border-bottom-left-radius : 3px;}
+.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}
+.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}
+.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}
+.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}
+.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}
+.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}
+.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}
+
+
+.ace_editor {
+ position: relative;
+ overflow: hidden;
+ padding: 0;
+ font: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'Source Code Pro', 'source-code-pro', monospace;
+ direction: ltr;
+ text-align: left;
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+ forced-color-adjust: none;
+}
+
+.ace_scroller {
+ position: absolute;
+ overflow: hidden;
+ top: 0;
+ bottom: 0;
+ background-color: inherit;
+ -ms-user-select: none;
+ -moz-user-select: none;
+ -webkit-user-select: none;
+ user-select: none;
+ cursor: text;
+}
+
+.ace_content {
+ position: absolute;
+ box-sizing: border-box;
+ min-width: 100%;
+ contain: style size layout;
+ font-variant-ligatures: no-common-ligatures;
+}
+
+.ace_keyboard-focus:focus {
+ box-shadow: inset 0 0 0 2px #5E9ED6;
+ outline: none;
+}
+
+.ace_dragging .ace_scroller:before{
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ content: '';
+ background: rgba(250, 250, 250, 0.01);
+ z-index: 1000;
+}
+.ace_dragging.ace_dark .ace_scroller:before{
+ background: rgba(0, 0, 0, 0.01);
+}
+
+.ace_gutter {
+ position: absolute;
+ overflow : hidden;
+ width: auto;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ cursor: default;
+ z-index: 4;
+ -ms-user-select: none;
+ -moz-user-select: none;
+ -webkit-user-select: none;
+ user-select: none;
+ contain: style size layout;
+}
+
+.ace_gutter-active-line {
+ position: absolute;
+ left: 0;
+ right: 0;
+}
+
+.ace_scroller.ace_scroll-left:after {
+ content: "";
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;
+ pointer-events: none;
+}
+
+.ace_gutter-cell, .ace_gutter-cell_svg-icons {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ padding-left: 19px;
+ padding-right: 6px;
+ background-repeat: no-repeat;
+}
+
+.ace_gutter-cell_svg-icons .ace_gutter_annotation {
+ margin-left: -14px;
+ float: left;
+}
+
+.ace_gutter-cell .ace_gutter_annotation {
+ margin-left: -19px;
+ float: left;
+}
+
+.ace_gutter-cell.ace_error, .ace_icon.ace_error, .ace_icon.ace_error_fold, .ace_gutter-cell.ace_security, .ace_icon.ace_security, .ace_icon.ace_security_fold {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");
+ background-repeat: no-repeat;
+ background-position: 2px center;
+}
+
+.ace_gutter-cell.ace_warning, .ace_icon.ace_warning, .ace_icon.ace_warning_fold {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");
+ background-repeat: no-repeat;
+ background-position: 2px center;
+}
+
+.ace_gutter-cell.ace_info, .ace_icon.ace_info, .ace_gutter-cell.ace_hint, .ace_icon.ace_hint {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");
+ background-repeat: no-repeat;
+ background-position: 2px center;
+}
+
+.ace_dark .ace_gutter-cell.ace_info, .ace_dark .ace_icon.ace_info, .ace_dark .ace_gutter-cell.ace_hint, .ace_dark .ace_icon.ace_hint {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");
+}
+
+.ace_icon_svg.ace_error {
+ -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJyZWQiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KPGNpcmNsZSBmaWxsPSJub25lIiBjeD0iOCIgY3k9IjgiIHI9IjciIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPGxpbmUgeDE9IjExIiB5MT0iNSIgeDI9IjUiIHkyPSIxMSIvPgo8bGluZSB4MT0iMTEiIHkxPSIxMSIgeDI9IjUiIHkyPSI1Ii8+CjwvZz4KPC9zdmc+");
+ background-color: crimson;
+}
+.ace_icon_svg.ace_security {
+ -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8ZyBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZT0iZGFya29yYW5nZSIgZmlsbD0ibm9uZSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgogICAgICAgIDxwYXRoIGNsYXNzPSJzdHJva2UtbGluZWpvaW4tcm91bmQiIGQ9Ik04IDE0LjgzMDdDOCAxNC44MzA3IDIgMTIuOTA0NyAyIDguMDg5OTJWMy4yNjU0OEM1LjMxIDMuMjY1NDggNy45ODk5OSAxLjM0OTE4IDcuOTg5OTkgMS4zNDkxOEM3Ljk4OTk5IDEuMzQ5MTggMTAuNjkgMy4yNjU0OCAxNCAzLjI2NTQ4VjguMDg5OTJDMTQgMTIuOTA0NyA4IDE0LjgzMDcgOCAxNC44MzA3WiIvPgogICAgICAgIDxwYXRoIGQ9Ik0yIDguMDg5OTJWMy4yNjU0OEM1LjMxIDMuMjY1NDggNy45ODk5OSAxLjM0OTE4IDcuOTg5OTkgMS4zNDkxOCIvPgogICAgICAgIDxwYXRoIGQ9Ik0xMy45OSA4LjA4OTkyVjMuMjY1NDhDMTAuNjggMy4yNjU0OCA4IDEuMzQ5MTggOCAxLjM0OTE4Ii8+CiAgICAgICAgPHBhdGggY2xhc3M9InN0cm9rZS1saW5lam9pbi1yb3VuZCIgZD0iTTggNFY5Ii8+CiAgICAgICAgPHBhdGggY2xhc3M9InN0cm9rZS1saW5lam9pbi1yb3VuZCIgZD0iTTggMTBWMTIiLz4KICAgIDwvZz4KPC9zdmc+");
+ background-color: crimson;
+}
+.ace_icon_svg.ace_warning {
+ -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJkYXJrb3JhbmdlIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+Cjxwb2x5Z29uIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGZpbGw9Im5vbmUiIHBvaW50cz0iOCAxIDE1IDE1IDEgMTUgOCAxIi8+CjxyZWN0IHg9IjgiIHk9IjEyIiB3aWR0aD0iMC4wMSIgaGVpZ2h0PSIwLjAxIi8+CjxsaW5lIHgxPSI4IiB5MT0iNiIgeDI9IjgiIHkyPSIxMCIvPgo8L2c+Cjwvc3ZnPg==");
+ background-color: darkorange;
+}
+.ace_icon_svg.ace_info {
+ -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJibHVlIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+CjxjaXJjbGUgZmlsbD0ibm9uZSIgY3g9IjgiIGN5PSI4IiByPSI3IiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjxwb2x5bGluZSBwb2ludHM9IjggMTEgOCA4Ii8+Cjxwb2x5bGluZSBwb2ludHM9IjkgOCA2IDgiLz4KPGxpbmUgeDE9IjEwIiB5MT0iMTEiIHgyPSI2IiB5Mj0iMTEiLz4KPHJlY3QgeD0iOCIgeT0iNSIgd2lkdGg9IjAuMDEiIGhlaWdodD0iMC4wMSIvPgo8L2c+Cjwvc3ZnPg==");
+ background-color: royalblue;
+}
+.ace_icon_svg.ace_hint {
+ -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8ZyBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZT0ic2lsdmVyIiBmaWxsPSJub25lIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+CiAgICAgICAgPHBhdGggY2xhc3M9InN0cm9rZS1saW5lam9pbi1yb3VuZCIgZD0iTTYgMTRIMTAiLz4KICAgICAgICA8cGF0aCBkPSJNOCAxMUg5QzkgOS40NzAwMiAxMiA4LjU0MDAyIDEyIDUuNzYwMDJDMTIuMDIgNC40MDAwMiAxMS4zOSAzLjM2MDAyIDEwLjQzIDIuNjcwMDJDOSAxLjY0MDAyIDcuMDAwMDEgMS42NDAwMiA1LjU3MDAxIDIuNjcwMDJDNC42MTAwMSAzLjM2MDAyIDMuOTggNC40MDAwMiA0IDUuNzYwMDJDNCA4LjU0MDAyIDcuMDAwMDEgOS40NzAwMiA3LjAwMDAxIDExSDhaIi8+CiAgICA8L2c+Cjwvc3ZnPg==");
+ background-color: silver;
+}
+
+.ace_icon_svg.ace_error_fold {
+ -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiIgZmlsbD0ibm9uZSI+CiAgPHBhdGggZD0ibSAxOC45Mjk4NTEsNy44Mjk4MDc2IGMgMC4xNDYzNTMsNi4zMzc0NjA0IC02LjMyMzE0Nyw3Ljc3Nzg0NDQgLTcuNDc3OTEyLDcuNzc3ODQ0NCAtMi4xMDcyNzI2LC0wLjEyODc1IDUuMTE3Njc4LDAuMzU2MjQ5IDUuMDUxNjk4LC03Ljg3MDA2MTggLTAuNjA0NjcyLC04LjAwMzk3MzQ5IC03LjA3NzI3MDYsLTcuNTYzMTE4OSAtNC44NTczLC03LjQzMDM5NTU2IDEuNjA2LC0wLjExNTE0MjI1IDYuODk3NDg1LDEuMjYyNTQ1OTYgNy4yODM1MTQsNy41MjI2MTI5NiB6IiBmaWxsPSJjcmltc29uIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0ibSA4LjExNDc1NjIsMi4wNTI5ODI4IGMgMy4zNDkxNjk4LDAgNi4wNjQxMzI4LDIuNjc2ODYyNyA2LjA2NDEzMjgsNS45Nzg5NTMgMCwzLjMwMjExMjIgLTIuNzE0OTYzLDUuOTc4OTIwMiAtNi4wNjQxMzI4LDUuOTc4OTIwMiAtMy4zNDkxNDczLDAgLTYuMDY0MTc3MiwtMi42NzY4MDggLTYuMDY0MTc3MiwtNS45Nzg5MjAyIDAuMDA1MzksLTMuMjk5ODg2MSAyLjcxNzI2NTYsLTUuOTczNjQwOCA2LjA2NDE3NzIsLTUuOTc4OTUzIHogbSAwLC0xLjczNTgyNzE5IGMgLTQuMzIxNDgzNiwwIC03LjgyNDc0MDM4LDMuNDU0MDE4NDkgLTcuODI0NzQwMzgsNy43MTQ3ODAxOSAwLDQuMjYwNzI4MiAzLjUwMzI1Njc4LDcuNzE0NzQ1MiA3LjgyNDc0MDM4LDcuNzE0NzQ1MiA0LjMyMTQ0OTgsMCA3LjgyNDY5OTgsLTMuNDU0MDE3IDcuODI0Njk5OCwtNy43MTQ3NDUyIDAsLTIuMDQ2MDkxNCAtMC44MjQzOTIsLTQuMDA4MzY3MiAtMi4yOTE3NTYsLTUuNDU1MTc0NiBDIDEyLjE4MDIyNSwxLjEyOTk2NDggMTAuMTkwMDEzLDAuMzE3MTU1NjEgOC4xMTQ3NTYyLDAuMzE3MTU1NjEgWiBNIDYuOTM3NDU2Myw4LjI0MDU5ODUgNC42NzE4Njg1LDEwLjQ4NTg1MiA2LjAwODY4MTQsMTEuODc2NzI4IDguMzE3MDAzNSw5LjYwMDc5MTEgMTAuNjI1MzM3LDExLjg3NjcyOCAxMS45NjIxMzgsMTAuNDg1ODUyIDkuNjk2NTUwOCw4LjI0MDU5ODUgMTEuOTYyMTM4LDYuMDA2ODA2NiAxMC41NzMyNDYsNC42Mzc0MzM1IDguMzE3MDAzNSw2Ljg3MzQyOTcgNi4wNjA3NjA3LDQuNjM3NDMzNSA0LjY3MTg2ODUsNi4wMDY4MDY2IFoiIGZpbGw9ImNyaW1zb24iIHN0cm9rZS13aWR0aD0iMiIvPgo8L3N2Zz4=");
+ background-color: crimson;
+}
+.ace_icon_svg.ace_security_fold {
+ -webkit-mask-image: url("data:image/svg+xml;base64,CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTcgMTQiIGZpbGw9Im5vbmUiPgogICAgPHBhdGggZD0iTTEwLjAwMDEgMTMuNjk5MkMxMC4wMDAxIDEzLjY5OTIgMTEuOTI0MSAxMy40NzYzIDEzIDEyLjY5OTJDMTQuNDEzOSAxMS42NzgxIDE2IDEwLjUgMTYuMTI1MSA2LjgxMTI2VjIuNTg5ODdDMTYuMTI1MSAyLjU0NzY4IDE2LjEyMjEgMi41MDYxOSAxNi4xMTY0IDIuNDY1NTlWMS43MTQ4NUgxNS4yNDE0TDE1LjIzMDcgMS43MTQ4NEwxNC42MjUxIDEuNjk5MjJWNi44MTEyM0MxNC42MjUxIDguNTEwNjEgMTQuNjI1MSA5LjQ2NDYxIDEyLjc4MjQgMTEuNzIxQzEyLjE1ODYgMTIuNDg0OCAxMC4wMDAxIDEzLjY5OTIgMTAuMDAwMSAxMy42OTkyWiIgZmlsbD0iY3JpbXNvbiIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTcuMzM2MDkgMC4zNjc0NzVDNy4wMzIxNCAwLjE1MjY1MiA2LjYyNTQ4IDAuMTUzNjE0IDYuMzIyNTMgMC4zNjk5OTdMNi4zMDg2OSAwLjM3OTU1NEM2LjI5NTUzIDAuMzg4NTg4IDYuMjczODggMC40MDMyNjYgNi4yNDQxNyAwLjQyMjc4OUM2LjE4NDcxIDAuNDYxODYgNi4wOTMyMSAwLjUyMDE3MSA1Ljk3MzEzIDAuNTkxMzczQzUuNzMyNTEgMC43MzQwNTkgNS4zNzk5IDAuOTI2ODY0IDQuOTQyNzkgMS4xMjAwOUM0LjA2MTQ0IDEuNTA5NyAyLjg3NTQxIDEuODgzNzcgMS41ODk4NCAxLjg4Mzc3SDAuNzE0ODQ0VjIuNzU4NzdWNi45ODAxNUMwLjcxNDg0NCA5LjQ5Mzc0IDIuMjg4NjYgMTEuMTk3MyAzLjcwMjU0IDEyLjIxODVDNC40MTg0NSAxMi43MzU1IDUuMTI4NzQgMTMuMTA1MyA1LjY1NzMzIDEzLjM0NTdDNS45MjI4NCAxMy40NjY0IDYuMTQ1NjYgMTMuNTU1OSA2LjMwNDY1IDEzLjYxNjFDNi4zODQyMyAxMy42NDYyIDYuNDQ4MDUgMTMuNjY5IDYuNDkzNDkgMTMuNjg0OEM2LjUxNjIyIDEzLjY5MjcgNi41MzQzOCAxMy42OTg5IDYuNTQ3NjQgMTMuNzAzM0w2LjU2MzgyIDEzLjcwODdMNi41NjkwOCAxMy43MTA0TDYuNTcwOTkgMTMuNzExTDYuODM5ODQgMTMuNzUzM0w2LjU3MjQyIDEzLjcxMTVDNi43NDYzMyAxMy43NjczIDYuOTMzMzUgMTMuNzY3MyA3LjEwNzI3IDEzLjcxMTVMNy4xMDg3IDEzLjcxMUw3LjExMDYxIDEzLjcxMDRMNy4xMTU4NyAxMy43MDg3TDcuMTMyMDUgMTMuNzAzM0M3LjE0NTMxIDEzLjY5ODkgNy4xNjM0NiAxMy42OTI3IDcuMTg2MTkgMTMuNjg0OEM3LjIzMTY0IDEzLjY2OSA3LjI5NTQ2IDEzLjY0NjIgNy4zNzUwMyAxMy42MTYxQzcuNTM0MDMgMTMuNTU1OSA3Ljc1Njg1IDEzLjQ2NjQgOC4wMjIzNiAxMy4zNDU3QzguNTUwOTUgMTMuMTA1MyA5LjI2MTIzIDEyLjczNTUgOS45NzcxNSAxMi4yMTg1QzExLjM5MSAxMS4xOTczIDEyLjk2NDggOS40OTM3NyAxMi45NjQ4IDYuOTgwMThWMi43NTg4QzEyLjk2NDggMi43MTY2IDEyLjk2MTkgMi42NzUxMSAxMi45NTYxIDIuNjM0NTFWMS44ODM3N0gxMi4wODExQzEyLjA3NzUgMS44ODM3NyAxMi4wNzQgMS44ODM3NyAxMi4wNzA0IDEuODgzNzdDMTAuNzk3OSAxLjg4MDA0IDkuNjE5NjIgMS41MTEwMiA4LjczODk0IDEuMTI0ODZDOC43MzUzNCAxLjEyMzI3IDguNzMxNzQgMS4xMjE2OCA4LjcyODE0IDEuMTIwMDlDOC4yOTEwMyAwLjkyNjg2NCA3LjkzODQyIDAuNzM0MDU5IDcuNjk3NzkgMC41OTEzNzNDNy41Nzc3MiAwLjUyMDE3MSA3LjQ4NjIyIDAuNDYxODYgNy40MjY3NiAwLjQyMjc4OUM3LjM5NzA1IDAuNDAzMjY2IDcuMzc1MzkgMC4zODg1ODggNy4zNjIyNCAwLjM3OTU1NEw3LjM0ODk2IDAuMzcwMzVDNy4zNDg5NiAwLjM3MDM1IDcuMzQ4NDcgMC4zNzAwMiA3LjM0NTYzIDAuMzc0MDU0TDcuMzM3NzkgMC4zNjg2NTlMNy4zMzYwOSAwLjM2NzQ3NVpNOC4wMzQ3MSAyLjcyNjkxQzguODYwNCAzLjA5MDYzIDkuOTYwNjYgMy40NjMwOSAxMS4yMDYxIDMuNTg5MDdWNi45ODAxNUgxMS4yMTQ4QzExLjIxNDggOC42Nzk1MyAxMC4xNjM3IDkuOTI1MDcgOC45NTI1NCAxMC43OTk4QzguMzU1OTUgMTEuMjMwNiA3Ljc1Mzc0IDExLjU0NTQgNy4yOTc5NiAxMS43NTI3QzcuMTE2NzEgMTEuODM1MSA2Ljk2MDYyIDExLjg5OTYgNi44Mzk4NCAxMS45NDY5QzYuNzE5MDYgMTEuODk5NiA2LjU2Mjk3IDExLjgzNTEgNi4zODE3MyAxMS43NTI3QzUuOTI1OTUgMTEuNTQ1NCA1LjMyMzczIDExLjIzMDYgNC43MjcxNSAxMC43OTk4QzMuNTE2MDMgOS45MjUwNyAyLjQ2NDg0IDguNjc5NTUgMi40NjQ4NCA2Ljk4MDE4VjMuNTg5MDlDMy43MTczOCAzLjQ2MjM5IDQuODIzMDggMy4wODYzOSA1LjY1MDMzIDIuNzIwNzFDNi4xNDIyOCAyLjUwMzI0IDYuNTQ0ODUgMi4yODUzNyA2LjgzMjU0IDIuMTE2MjRDNy4xMjE4MSAyLjI4NTM1IDcuNTI3IDIuNTAzNTIgOC4wMjE5NiAyLjcyMTMxQzguMDI2MiAyLjcyMzE3IDguMDMwNDUgMi43MjUwNCA4LjAzNDcxIDIuNzI2OTFaTTUuOTY0ODQgMy40MDE0N1Y3Ljc3NjQ3SDcuNzE0ODRWMy40MDE0N0g1Ljk2NDg0Wk01Ljk2NDg0IDEwLjQwMTVWOC42NTE0N0g3LjcxNDg0VjEwLjQwMTVINS45NjQ4NFoiIGZpbGw9ImNyaW1zb24iIHN0cm9rZS13aWR0aD0iMiIvPgo8L3N2Zz4=");
+ background-color: crimson;
+}
+.ace_icon_svg.ace_warning_fold {
+ -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyMCAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNC43NzY5IDE0LjczMzdMOC42NTE5MiAyLjQ4MzY5QzguMzI5NDYgMS44Mzg3NyA3LjQwOTEzIDEuODM4NzcgNy4wODY2NyAyLjQ4MzY5TDAuOTYxNjY5IDE0LjczMzdDMC42NzA3NzUgMTUuMzE1NSAxLjA5MzgzIDE2IDEuNzQ0MjkgMTZIMTMuOTk0M0MxNC42NDQ4IDE2IDE1LjA2NzggMTUuMzE1NSAxNC43NzY5IDE0LjczMzdaTTMuMTYwMDcgMTQuMjVMNy44NjkyOSA0LjgzMTU2TDEyLjU3ODUgMTQuMjVIMy4xNjAwN1pNOC43NDQyOSAxMS42MjVWMTMuMzc1SDYuOTk0MjlWMTEuNjI1SDguNzQ0MjlaTTYuOTk0MjkgMTAuNzVWNy4yNUg4Ljc0NDI5VjEwLjc1SDYuOTk0MjlaIiBmaWxsPSIjRUM3MjExIi8+CjxwYXRoIGQ9Ik0xMS4xOTkxIDIuOTUyMzhDMTAuODgwOSAyLjMxNDY3IDEwLjM1MzcgMS44MDUyNiA5LjcwNTUgMS41MDlMMTEuMDQxIDEuMDY5NzhDMTEuNjg4MyAwLjk0OTgxNCAxMi4zMzcgMS4yNzI2MyAxMi42MzE3IDEuODYxNDFMMTcuNjEzNiAxMS44MTYxQzE4LjM1MjcgMTMuMjkyOSAxNy41OTM4IDE1LjA4MDQgMTYuMDE4IDE1LjU3NDVDMTYuNDA0NCAxNC40NTA3IDE2LjMyMzEgMTMuMjE4OCAxNS43OTI0IDEyLjE1NTVMMTEuMTk5MSAyLjk1MjM4WiIgZmlsbD0iI0VDNzIxMSIvPgo8L3N2Zz4=");
+ background-color: darkorange;
+}
+
+.ace_scrollbar {
+ contain: strict;
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ z-index: 6;
+}
+
+.ace_scrollbar-inner {
+ position: absolute;
+ cursor: text;
+ left: 0;
+ top: 0;
+}
+
+.ace_scrollbar-v{
+ overflow-x: hidden;
+ overflow-y: scroll;
+ top: 0;
+}
+
+.ace_scrollbar-h {
+ overflow-x: scroll;
+ overflow-y: hidden;
+ left: 0;
+}
+
+.ace_print-margin {
+ position: absolute;
+ height: 100%;
+}
+
+.ace_text-input {
+ position: absolute;
+ z-index: 0;
+ width: 0.5em;
+ height: 1em;
+ opacity: 0;
+ background: transparent;
+ -moz-appearance: none;
+ appearance: none;
+ border: none;
+ resize: none;
+ outline: none;
+ overflow: hidden;
+ font: inherit;
+ padding: 0 1px;
+ margin: 0 -1px;
+ contain: strict;
+ -ms-user-select: text;
+ -moz-user-select: text;
+ -webkit-user-select: text;
+ user-select: text;
+ /*with \`pre-line\` chrome inserts instead of space*/
+ white-space: pre!important;
+}
+.ace_text-input.ace_composition {
+ background: transparent;
+ color: inherit;
+ z-index: 1000;
+ opacity: 1;
+}
+.ace_composition_placeholder { color: transparent }
+.ace_composition_marker {
+ border-bottom: 1px solid;
+ position: absolute;
+ border-radius: 0;
+ margin-top: 1px;
+}
+
+[ace_nocontext=true] {
+ transform: none!important;
+ filter: none!important;
+ clip-path: none!important;
+ mask : none!important;
+ contain: none!important;
+ perspective: none!important;
+ mix-blend-mode: initial!important;
+ z-index: auto;
+}
+
+.ace_layer {
+ z-index: 1;
+ position: absolute;
+ overflow: hidden;
+ /* workaround for chrome bug https://github.com/ajaxorg/ace/issues/2312*/
+ word-wrap: normal;
+ white-space: pre;
+ height: 100%;
+ width: 100%;
+ box-sizing: border-box;
+ /* setting pointer-events: auto; on node under the mouse, which changes
+ during scroll, will break mouse wheel scrolling in Safari */
+ pointer-events: none;
+}
+
+.ace_gutter-layer {
+ position: relative;
+ width: auto;
+ text-align: right;
+ pointer-events: auto;
+ height: 1000000px;
+ contain: style size layout;
+}
+
+.ace_text-layer {
+ font: inherit !important;
+ position: absolute;
+ height: 1000000px;
+ width: 1000000px;
+ contain: style size layout;
+}
+
+.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group {
+ contain: style size layout;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+}
+
+.ace_hidpi .ace_text-layer,
+.ace_hidpi .ace_gutter-layer,
+.ace_hidpi .ace_content,
+.ace_hidpi .ace_gutter {
+ contain: strict;
+}
+.ace_hidpi .ace_text-layer > .ace_line,
+.ace_hidpi .ace_text-layer > .ace_line_group {
+ contain: strict;
+}
+
+.ace_cjk {
+ display: inline-block;
+ text-align: center;
+}
+
+.ace_cursor-layer {
+ z-index: 4;
+}
+
+.ace_cursor {
+ z-index: 4;
+ position: absolute;
+ box-sizing: border-box;
+ border-left: 2px solid;
+ /* workaround for smooth cursor repaintng whole screen in chrome */
+ transform: translatez(0);
+}
+
+.ace_multiselect .ace_cursor {
+ border-left-width: 1px;
+}
+
+.ace_slim-cursors .ace_cursor {
+ border-left-width: 1px;
+}
+
+.ace_overwrite-cursors .ace_cursor {
+ border-left-width: 0;
+ border-bottom: 1px solid;
+}
+
+.ace_hidden-cursors .ace_cursor {
+ opacity: 0.2;
+}
+
+.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {
+ opacity: 0;
+}
+
+.ace_smooth-blinking .ace_cursor {
+ transition: opacity 0.18s;
+}
+
+.ace_animate-blinking .ace_cursor {
+ animation-duration: 1000ms;
+ animation-timing-function: step-end;
+ animation-name: blink-ace-animate;
+ animation-iteration-count: infinite;
+}
+
+.ace_animate-blinking.ace_smooth-blinking .ace_cursor {
+ animation-duration: 1000ms;
+ animation-timing-function: ease-in-out;
+ animation-name: blink-ace-animate-smooth;
+}
+
+@keyframes blink-ace-animate {
+ from, to { opacity: 1; }
+ 60% { opacity: 0; }
+}
+
+@keyframes blink-ace-animate-smooth {
+ from, to { opacity: 1; }
+ 45% { opacity: 1; }
+ 60% { opacity: 0; }
+ 85% { opacity: 0; }
+}
+
+.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {
+ position: absolute;
+ z-index: 3;
+}
+
+.ace_marker-layer .ace_selection {
+ position: absolute;
+ z-index: 5;
+}
+
+.ace_marker-layer .ace_bracket {
+ position: absolute;
+ z-index: 6;
+}
+
+.ace_marker-layer .ace_error_bracket {
+ position: absolute;
+ border-bottom: 1px solid #DE5555;
+ border-radius: 0;
+}
+
+.ace_marker-layer .ace_active-line {
+ position: absolute;
+ z-index: 2;
+}
+
+.ace_marker-layer .ace_selected-word {
+ position: absolute;
+ z-index: 4;
+ box-sizing: border-box;
+}
+
+.ace_line .ace_fold {
+ box-sizing: border-box;
+
+ display: inline-block;
+ height: 11px;
+ margin-top: -2px;
+ vertical-align: middle;
+
+ background-image:
+ url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),
+ url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");
+ background-repeat: no-repeat, repeat-x;
+ background-position: center center, top left;
+ color: transparent;
+
+ border: 1px solid black;
+ border-radius: 2px;
+
+ cursor: pointer;
+ pointer-events: auto;
+}
+
+.ace_dark .ace_fold {
+}
+
+.ace_fold:hover{
+ background-image:
+ url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),
+ url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");
+}
+
+.ace_tooltip {
+ background-color: #f5f5f5;
+ border: 1px solid gray;
+ border-radius: 1px;
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
+ color: black;
+ max-width: 100%;
+ padding: 3px 4px;
+ position: fixed;
+ z-index: 999999;
+ box-sizing: border-box;
+ cursor: default;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+ line-height: normal;
+ font-style: normal;
+ font-weight: normal;
+ letter-spacing: normal;
+ pointer-events: none;
+ overflow: auto;
+ max-width: min(60em, 66vw);
+ overscroll-behavior: contain;
+}
+.ace_tooltip pre {
+ white-space: pre-wrap;
+}
+
+.ace_tooltip.ace_dark {
+ background-color: #636363;
+ color: #fff;
+}
+
+.ace_tooltip:focus {
+ outline: 1px solid #5E9ED6;
+}
+
+.ace_icon {
+ display: inline-block;
+ width: 18px;
+ vertical-align: top;
+}
+
+.ace_icon_svg {
+ display: inline-block;
+ width: 12px;
+ vertical-align: top;
+ -webkit-mask-repeat: no-repeat;
+ -webkit-mask-size: 12px;
+ -webkit-mask-position: center;
+}
+
+.ace_folding-enabled > .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell_svg-icons {
+ padding-right: 13px;
+}
+
+.ace_fold-widget {
+ box-sizing: border-box;
+
+ margin: 0 -12px 0 1px;
+ display: none;
+ width: 11px;
+ vertical-align: top;
+
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");
+ background-repeat: no-repeat;
+ background-position: center;
+
+ border-radius: 3px;
+
+ border: 1px solid transparent;
+ cursor: pointer;
+}
+
+.ace_folding-enabled .ace_fold-widget {
+ display: inline-block;
+}
+
+.ace_fold-widget.ace_end {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");
+}
+
+.ace_fold-widget.ace_closed {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");
+}
+
+.ace_fold-widget:hover {
+ border: 1px solid rgba(0, 0, 0, 0.3);
+ background-color: rgba(255, 255, 255, 0.2);
+ box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);
+}
+
+.ace_fold-widget:active {
+ border: 1px solid rgba(0, 0, 0, 0.4);
+ background-color: rgba(0, 0, 0, 0.05);
+ box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);
+}
+/**
+ * Dark version for fold widgets
+ */
+.ace_dark .ace_fold-widget {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");
+}
+.ace_dark .ace_fold-widget.ace_end {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");
+}
+.ace_dark .ace_fold-widget.ace_closed {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");
+}
+.ace_dark .ace_fold-widget:hover {
+ box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);
+ background-color: rgba(255, 255, 255, 0.1);
+}
+.ace_dark .ace_fold-widget:active {
+ box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);
+}
+
+.ace_inline_button {
+ border: 1px solid lightgray;
+ display: inline-block;
+ margin: -1px 8px;
+ padding: 0 5px;
+ pointer-events: auto;
+ cursor: pointer;
+}
+.ace_inline_button:hover {
+ border-color: gray;
+ background: rgba(200,200,200,0.2);
+ display: inline-block;
+ pointer-events: auto;
+}
+
+.ace_fold-widget.ace_invalid {
+ background-color: #FFB4B4;
+ border-color: #DE5555;
+}
+
+.ace_fade-fold-widgets .ace_fold-widget {
+ transition: opacity 0.4s ease 0.05s;
+ opacity: 0;
+}
+
+.ace_fade-fold-widgets:hover .ace_fold-widget {
+ transition: opacity 0.05s ease 0.05s;
+ opacity:1;
+}
+
+.ace_underline {
+ text-decoration: underline;
+}
+
+.ace_bold {
+ font-weight: bold;
+}
+
+.ace_nobold .ace_bold {
+ font-weight: normal;
+}
+
+.ace_italic {
+ font-style: italic;
+}
+
+
+.ace_error-marker {
+ background-color: rgba(255, 0, 0,0.2);
+ position: absolute;
+ z-index: 9;
+}
+
+.ace_highlight-marker {
+ background-color: rgba(255, 255, 0,0.2);
+ position: absolute;
+ z-index: 8;
+}
+
+.ace_mobile-menu {
+ position: absolute;
+ line-height: 1.5;
+ border-radius: 4px;
+ -ms-user-select: none;
+ -moz-user-select: none;
+ -webkit-user-select: none;
+ user-select: none;
+ background: white;
+ box-shadow: 1px 3px 2px grey;
+ border: 1px solid #dcdcdc;
+ color: black;
+}
+.ace_dark > .ace_mobile-menu {
+ background: #333;
+ color: #ccc;
+ box-shadow: 1px 3px 2px grey;
+ border: 1px solid #444;
+
+}
+.ace_mobile-button {
+ padding: 2px;
+ cursor: pointer;
+ overflow: hidden;
+}
+.ace_mobile-button:hover {
+ background-color: #eee;
+ opacity:1;
+}
+.ace_mobile-button:active {
+ background-color: #ddd;
+}
+
+.ace_placeholder {
+ position: relative;
+ font-family: arial;
+ transform: scale(0.9);
+ transform-origin: left;
+ white-space: pre;
+ opacity: 0.7;
+ margin: 0 10px;
+ z-index: 1;
+}
+
+.ace_ghost_text {
+ opacity: 0.5;
+ font-style: italic;
+}
+
+.ace_ghost_text_container > div {
+ white-space: pre;
+}
+
+.ghost_text_line_wrapped::after {
+ content: "↩";
+ position: absolute;
+}
+
+.ace_lineWidgetContainer.ace_ghost_text {
+ margin: 0px 4px
+}
+
+.ace_screenreader-only {
+ position:absolute;
+ left:-10000px;
+ top:auto;
+ width:1px;
+ height:1px;
+ overflow:hidden;
+}
+
+.ace_hidden_token {
+ display: none;
+}`}),ace.define("ace/layer/decorators",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter"],function(r,n,i){var s=r("../lib/dom"),o=r("../lib/oop"),a=r("../lib/event_emitter").EventEmitter,l=function(){function u(c,h){this.canvas=s.createElement("canvas"),this.renderer=h,this.pixelRatio=1,this.maxHeight=h.layerConfig.maxHeight,this.lineHeight=h.layerConfig.lineHeight,this.canvasHeight=c.parent.scrollHeight,this.heightRatio=this.canvasHeight/this.maxHeight,this.canvasWidth=c.width,this.minDecorationHeight=2*this.pixelRatio|0,this.halfMinDecorationHeight=this.minDecorationHeight/2|0,this.canvas.width=this.canvasWidth,this.canvas.height=this.canvasHeight,this.canvas.style.top="0px",this.canvas.style.right="0px",this.canvas.style.zIndex="7px",this.canvas.style.position="absolute",this.colors={},this.colors.dark={error:"rgba(255, 18, 18, 1)",warning:"rgba(18, 136, 18, 1)",info:"rgba(18, 18, 136, 1)"},this.colors.light={error:"rgb(255,51,51)",warning:"rgb(32,133,72)",info:"rgb(35,68,138)"},c.element.appendChild(this.canvas)}return u.prototype.$updateDecorators=function(c){var h=this.renderer.theme.isDark===!0?this.colors.dark:this.colors.light;if(c){this.maxHeight=c.maxHeight,this.lineHeight=c.lineHeight,this.canvasHeight=c.height;var d=(c.lastRow+1)*this.lineHeight;dF.priority?1:0}var m=this.renderer.session.$annotations;if(f.clearRect(0,0,this.canvas.width,this.canvas.height),m){var y={info:1,warning:2,error:3};m.forEach(function(M){M.priority=y[M.type]||null}),m=m.sort(p);for(var b=this.renderer.session.$foldData,v=0;vthis.canvasHeight&&(O=this.canvasHeight-this.halfMinDecorationHeight),w=Math.round(O-this.halfMinDecorationHeight),T=Math.round(O+this.halfMinDecorationHeight)}f.fillStyle=h[m[v].type]||null,f.fillRect(0,C,this.canvasWidth,T-w)}}var P=this.renderer.session.selection.getCursor();if(P){var E=this.compensateFoldRows(P.row,b),C=Math.round((P.row-E)*this.lineHeight*this.heightRatio);f.fillStyle="rgba(0, 0, 0, 0.5)",f.fillRect(0,C,this.canvasWidth,2)}},u.prototype.compensateFoldRows=function(c,h){var d=0;if(h&&h.length>0)for(var f=0;fh[f].start.row&&c=h[f].end.row&&(d+=h[f].end.row-h[f].start.row);return d},u}();o.implement(l.prototype,a),n.Decorator=l}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/scrollbar_custom","ace/scrollbar_custom","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter","ace/css/editor-css","ace/layer/decorators","ace/lib/useragent","ace/layer/text_util"],function(r,n,i){var s=r("./lib/oop"),o=r("./lib/dom"),a=r("./lib/lang"),l=r("./config"),u=r("./layer/gutter").Gutter,c=r("./layer/marker").Marker,h=r("./layer/text").Text,d=r("./layer/cursor").Cursor,f=r("./scrollbar").HScrollBar,p=r("./scrollbar").VScrollBar,m=r("./scrollbar_custom").HScrollBar,y=r("./scrollbar_custom").VScrollBar,b=r("./renderloop").RenderLoop,v=r("./layer/font_metrics").FontMetrics,D=r("./lib/event_emitter").EventEmitter,E=r("./css/editor-css"),C=r("./layer/decorators").Decorator,w=r("./lib/useragent"),T=r("./layer/text_util").isTextToken;o.importCssString(E,"ace_editor.css",!1);var k=function(){function O(P,M){var F=this;this.container=P||o.createElement("div"),o.addCssClass(this.container,"ace_editor"),o.HI_DPI&&o.addCssClass(this.container,"ace_hidpi"),this.setTheme(M),l.get("useStrictCSP")==null&&l.set("useStrictCSP",!1),this.$gutter=o.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.$gutter.setAttribute("aria-hidden","true"),this.scroller=o.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=o.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new u(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new c(this.content);var L=this.$textLayer=new h(this.content);this.canvas=L.element,this.$markerFront=new c(this.content),this.$cursorLayer=new d(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new p(this.container,this),this.scrollBarH=new f(this.container,this),this.scrollBarV.on("scroll",function(_){F.$scrollAnimation||F.session.setScrollTop(_.data-F.scrollMargin.top)}),this.scrollBarH.on("scroll",function(_){F.$scrollAnimation||F.session.setScrollLeft(_.data-F.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new v(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.on("changeCharacterSize",function(_){F.updateCharacterSize(),F.onResize(!0,F.gutterWidth,F.$size.width,F.$size.height),F._signal("changeCharacterSize",_)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.margin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$keepTextAreaAtCursor=!w.isIOS,this.$loop=new b(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),this.$addResizeObserver(),l.resetOptions(this),l._signal("renderer",this)}return O.prototype.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin(),o.setStyle(this.scroller.style,"line-height",this.lineHeight+"px")},O.prototype.setSession=function(P){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=P,P&&this.scrollMargin.top&&P.getScrollTop()<=0&&P.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(P),this.$markerBack.setSession(P),this.$markerFront.setSession(P),this.$gutterLayer.setSession(P),this.$textLayer.setSession(P),P&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},O.prototype.updateLines=function(P,M,F){if(M===void 0&&(M=1/0),this.$changedLines?(this.$changedLines.firstRow>P&&(this.$changedLines.firstRow=P),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},O.prototype.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar(),this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)},O.prototype.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},O.prototype.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},O.prototype.updateFull=function(P){P?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},O.prototype.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},O.prototype.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},O.prototype.onResize=function(P,M,F,L){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=P?1:0;var _=this.container;L||(L=_.clientHeight||_.scrollHeight),!L&&this.$maxLines&&this.lineHeight>1&&(!_.style.height||_.style.height=="0px")&&(_.style.height="1px",L=_.clientHeight||_.scrollHeight),F||(F=_.clientWidth||_.scrollWidth);var A=this.$updateCachedSize(P,M,F,L);if(this.$resizeTimer&&this.$resizeTimer.cancel(),!this.$size.scrollerHeight||!F&&!L)return this.resizing=0;P&&(this.$gutterLayer.$padding=null),P?this.$renderChanges(A|this.$changes,!0):this.$loop.schedule(A|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.$customScrollbar&&this.$updateCustomScrollbar(!0)}},O.prototype.$updateCachedSize=function(P,M,F,L){L-=this.$extraHeight||0;var _=0,A=this.$size,I={width:A.width,height:A.height,scrollerHeight:A.scrollerHeight,scrollerWidth:A.scrollerWidth};if(L&&(P||A.height!=L)&&(A.height=L,_|=this.CHANGE_SIZE,A.scrollerHeight=A.height,this.$horizScroll&&(A.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.setHeight(A.scrollerHeight),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",_=_|this.CHANGE_SCROLL),F&&(P||A.width!=F)){_|=this.CHANGE_SIZE,A.width=F,M==null&&(M=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=M,o.setStyle(this.scrollBarH.element.style,"left",M+"px"),o.setStyle(this.scroller.style,"left",M+this.margin.left+"px"),A.scrollerWidth=Math.max(0,F-M-this.scrollBarV.getWidth()-this.margin.h),o.setStyle(this.$gutter.style,"left",this.margin.left+"px");var R=this.scrollBarV.getWidth()+"px";o.setStyle(this.scrollBarH.element.style,"right",R),o.setStyle(this.scroller.style,"right",R),o.setStyle(this.scroller.style,"bottom",this.scrollBarH.getHeight()),this.scrollBarH.setWidth(A.scrollerWidth),(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||P)&&(_|=this.CHANGE_FULL)}return A.$dirty=!F||!L,_&&this._signal("resize",I),_},O.prototype.onGutterResize=function(P){var M=this.$showGutter?P:0;M!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,M,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):this.$computeLayerConfig()},O.prototype.adjustWrapLimit=function(){var P=this.$size.scrollerWidth-this.$padding*2,M=Math.floor(P/this.characterWidth);return this.session.adjustWrapLimit(M,this.$showPrintMargin&&this.$printMarginColumn)},O.prototype.setAnimatedScroll=function(P){this.setOption("animatedScroll",P)},O.prototype.getAnimatedScroll=function(){return this.$animatedScroll},O.prototype.setShowInvisibles=function(P){this.setOption("showInvisibles",P),this.session.$bidiHandler.setShowInvisibles(P)},O.prototype.getShowInvisibles=function(){return this.getOption("showInvisibles")},O.prototype.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},O.prototype.setDisplayIndentGuides=function(P){this.setOption("displayIndentGuides",P)},O.prototype.getHighlightIndentGuides=function(){return this.getOption("highlightIndentGuides")},O.prototype.setHighlightIndentGuides=function(P){this.setOption("highlightIndentGuides",P)},O.prototype.setShowPrintMargin=function(P){this.setOption("showPrintMargin",P)},O.prototype.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},O.prototype.setPrintMarginColumn=function(P){this.setOption("printMarginColumn",P)},O.prototype.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},O.prototype.getShowGutter=function(){return this.getOption("showGutter")},O.prototype.setShowGutter=function(P){return this.setOption("showGutter",P)},O.prototype.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},O.prototype.setFadeFoldWidgets=function(P){this.setOption("fadeFoldWidgets",P)},O.prototype.setHighlightGutterLine=function(P){this.setOption("highlightGutterLine",P)},O.prototype.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},O.prototype.$updatePrintMargin=function(){if(!(!this.$showPrintMargin&&!this.$printMarginEl)){if(!this.$printMarginEl){var P=o.createElement("div");P.className="ace_layer ace_print-margin-layer",this.$printMarginEl=o.createElement("div"),this.$printMarginEl.className="ace_print-margin",P.appendChild(this.$printMarginEl),this.content.insertBefore(P,this.content.firstChild)}var M=this.$printMarginEl.style;M.left=Math.round(this.characterWidth*this.$printMarginColumn+this.$padding)+"px",M.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()}},O.prototype.getContainerElement=function(){return this.container},O.prototype.getMouseEventTarget=function(){return this.scroller},O.prototype.getTextAreaContainer=function(){return this.container},O.prototype.$moveTextAreaToCursor=function(){if(!this.$isMousePressed){var P=this.textarea.style,M=this.$composition;if(!this.$keepTextAreaAtCursor&&!M){o.translate(this.textarea,-100,0);return}var F=this.$cursorLayer.$pixelPos;if(F){M&&M.markerRange&&(F=this.$cursorLayer.getPixelPosition(M.markerRange.start,!0));var L=this.layerConfig,_=F.top,A=F.left;_-=L.offset;var I=M&&M.useTextareaForIME||w.isMobile?this.lineHeight:1;if(_<0||_>L.height-I){o.translate(this.textarea,0,0);return}var R=1,B=this.$size.height-I;if(!M)_+=this.lineHeight;else if(M.useTextareaForIME){var U=this.textarea.value;R=this.characterWidth*this.session.$getStringScreenWidth(U)[0]}else _+=this.lineHeight+2;A-=this.scrollLeft,A>this.$size.scrollerWidth-R&&(A=this.$size.scrollerWidth-R),A+=this.gutterWidth+this.margin.left,o.setStyle(P,"height",I+"px"),o.setStyle(P,"width",R+"px"),o.translate(this.textarea,Math.min(A,this.$size.scrollerWidth-R),Math.min(_,B))}}},O.prototype.getFirstVisibleRow=function(){return this.layerConfig.firstRow},O.prototype.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},O.prototype.getLastFullyVisibleRow=function(){var P=this.layerConfig,M=P.lastRow,F=this.session.documentToScreenRow(M,0)*P.lineHeight;return F-this.session.getScrollTop()>P.height-P.lineHeight?M-1:M},O.prototype.getLastVisibleRow=function(){return this.layerConfig.lastRow},O.prototype.setPadding=function(P){this.$padding=P,this.$textLayer.setPadding(P),this.$cursorLayer.setPadding(P),this.$markerFront.setPadding(P),this.$markerBack.setPadding(P),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},O.prototype.setScrollMargin=function(P,M,F,L){var _=this.scrollMargin;_.top=P|0,_.bottom=M|0,_.right=L|0,_.left=F|0,_.v=_.top+_.bottom,_.h=_.left+_.right,_.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-_.top),this.updateFull()},O.prototype.setMargin=function(P,M,F,L){var _=this.margin;_.top=P|0,_.bottom=M|0,_.right=L|0,_.left=F|0,_.v=_.top+_.bottom,_.h=_.left+_.right,this.$updateCachedSize(!0,this.gutterWidth,this.$size.width,this.$size.height),this.updateFull()},O.prototype.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},O.prototype.setHScrollBarAlwaysVisible=function(P){this.setOption("hScrollBarAlwaysVisible",P)},O.prototype.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},O.prototype.setVScrollBarAlwaysVisible=function(P){this.setOption("vScrollBarAlwaysVisible",P)},O.prototype.$updateScrollBarV=function(){var P=this.layerConfig.maxHeight,M=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(P-=(M-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>P-M&&(P=this.scrollTop+M,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(P+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},O.prototype.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},O.prototype.freeze=function(){this.$frozen=!0},O.prototype.unfreeze=function(){this.$frozen=!1},O.prototype.$renderChanges=function(P,M){if(this.$changes&&(P|=this.$changes,this.$changes=0),!this.session||!this.container.offsetWidth||this.$frozen||!P&&!M){this.$changes|=P;return}if(this.$size.$dirty)return this.$changes|=P,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender",P),this.session&&this.session.$bidiHandler&&this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);var F=this.layerConfig;if(P&this.CHANGE_FULL||P&this.CHANGE_SIZE||P&this.CHANGE_TEXT||P&this.CHANGE_LINES||P&this.CHANGE_SCROLL||P&this.CHANGE_H_SCROLL){if(P|=this.$computeLayerConfig()|this.$loop.clear(),F.firstRow!=this.layerConfig.firstRow&&F.firstRowScreen==this.layerConfig.firstRowScreen){var L=this.scrollTop+(F.firstRow-Math.max(this.layerConfig.firstRow,0))*this.lineHeight;L>0&&(this.scrollTop=L,P=P|this.CHANGE_SCROLL,P|=this.$computeLayerConfig()|this.$loop.clear())}F=this.layerConfig,this.$updateScrollBarV(),P&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),o.translate(this.content,-this.scrollLeft,-F.offset);var _=F.width+2*this.$padding+"px",A=F.minHeight+"px";o.setStyle(this.content.style,"width",_),o.setStyle(this.content.style,"height",A)}if(P&this.CHANGE_H_SCROLL&&(o.translate(this.content,-this.scrollLeft,-F.offset),this.scroller.className=this.scrollLeft<=0?"ace_scroller ":"ace_scroller ace_scroll-left ",this.enableKeyboardAccessibility&&(this.scroller.className+=this.keyboardFocusClassName)),P&this.CHANGE_FULL){this.$changedLines=null,this.$textLayer.update(F),this.$showGutter&&this.$gutterLayer.update(F),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(F),this.$markerBack.update(F),this.$markerFront.update(F),this.$cursorLayer.update(F),this.$moveTextAreaToCursor(),this._signal("afterRender",P);return}if(P&this.CHANGE_SCROLL){this.$changedLines=null,P&this.CHANGE_TEXT||P&this.CHANGE_LINES?this.$textLayer.update(F):this.$textLayer.scrollLines(F),this.$showGutter&&(P&this.CHANGE_GUTTER||P&this.CHANGE_LINES?this.$gutterLayer.update(F):this.$gutterLayer.scrollLines(F)),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(F),this.$markerBack.update(F),this.$markerFront.update(F),this.$cursorLayer.update(F),this.$moveTextAreaToCursor(),this._signal("afterRender",P);return}P&this.CHANGE_TEXT?(this.$changedLines=null,this.$textLayer.update(F),this.$showGutter&&this.$gutterLayer.update(F),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(F)):P&this.CHANGE_LINES?((this.$updateLines()||P&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(F),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(F)):P&this.CHANGE_TEXT||P&this.CHANGE_GUTTER?(this.$showGutter&&this.$gutterLayer.update(F),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(F)):P&this.CHANGE_CURSOR&&(this.$highlightGutterLine&&this.$gutterLayer.updateLineHighlight(F),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(F)),P&this.CHANGE_CURSOR&&(this.$cursorLayer.update(F),this.$moveTextAreaToCursor()),P&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(F),P&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(F),this._signal("afterRender",P)},O.prototype.$autosize=function(){var P=this.session.getScreenLength()*this.lineHeight,M=this.$maxLines*this.lineHeight,F=Math.min(M,Math.max((this.$minLines||1)*this.lineHeight,P))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(F+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&F>this.$maxPixelHeight&&(F=this.$maxPixelHeight);var L=F<=2*this.lineHeight,_=!L&&P>M;if(F!=this.desiredHeight||this.$size.height!=this.desiredHeight||_!=this.$vScroll){_!=this.$vScroll&&(this.$vScroll=_,this.scrollBarV.setVisible(_));var A=this.container.clientWidth;this.container.style.height=F+"px",this.$updateCachedSize(!0,this.$gutterWidth,A,F),this.desiredHeight=F,this._signal("autosize")}},O.prototype.$computeLayerConfig=function(){var P=this.session,M=this.$size,F=M.height<=2*this.lineHeight,L=this.session.getScreenLength(),_=L*this.lineHeight,A=this.$getLongestLine(),I=!F&&(this.$hScrollBarAlwaysVisible||M.scrollerWidth-A-2*this.$padding<0),R=this.$horizScroll!==I;R&&(this.$horizScroll=I,this.scrollBarH.setVisible(I));var B=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var U=M.scrollerHeight+this.lineHeight,V=!this.$maxLines&&this.$scrollPastEnd?(M.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;_+=V;var K=this.scrollMargin;this.session.setScrollTop(Math.max(-K.top,Math.min(this.scrollTop,_-M.scrollerHeight+K.bottom))),this.session.setScrollLeft(Math.max(-K.left,Math.min(this.scrollLeft,A+2*this.$padding-M.scrollerWidth+K.right)));var J=!F&&(this.$vScrollBarAlwaysVisible||M.scrollerHeight-_+V<0||this.scrollTop>K.top),G=B!==J;G&&(this.$vScroll=J,this.scrollBarV.setVisible(J));var Y=this.scrollTop%this.lineHeight,Q=Math.ceil(U/this.lineHeight)-1,X=Math.max(0,Math.round((this.scrollTop-Y)/this.lineHeight)),le=X+Q,be,ce,xe=this.lineHeight;X=P.screenToDocumentRow(X,0);var Ae=P.getFoldLine(X);Ae&&(X=Ae.start.row),be=P.documentToScreenRow(X,0),ce=P.getRowLength(X)*xe,le=Math.min(P.screenToDocumentRow(le,0),P.getLength()-1),U=M.scrollerHeight+P.getRowLength(le)*xe+ce,Y=this.scrollTop-be*xe;var Re=0;return(this.layerConfig.width!=A||R)&&(Re=this.CHANGE_H_SCROLL),(R||G)&&(Re|=this.$updateCachedSize(!0,this.gutterWidth,M.width,M.height),this._signal("scrollbarVisibilityChanged"),G&&(A=this.$getLongestLine())),this.layerConfig={width:A,padding:this.$padding,firstRow:X,firstRowScreen:be,lastRow:le,lineHeight:xe,characterWidth:this.characterWidth,minHeight:U,maxHeight:_,offset:Y,gutterOffset:xe?Math.max(0,Math.ceil((Y+M.height-M.scrollerHeight)/xe)):0,height:this.$size.scrollerHeight},this.session.$bidiHandler&&this.session.$bidiHandler.setContentWidth(A-this.$padding),Re},O.prototype.$updateLines=function(){if(this.$changedLines){var P=this.$changedLines.firstRow,M=this.$changedLines.lastRow;this.$changedLines=null;var F=this.layerConfig;if(!(P>F.lastRow+1)&&!(Mthis.$textLayer.MAX_LINE_LENGTH&&(P=this.$textLayer.MAX_LINE_LENGTH+30),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(P*this.characterWidth))},O.prototype.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},O.prototype.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},O.prototype.addGutterDecoration=function(P,M){this.$gutterLayer.addGutterDecoration(P,M)},O.prototype.removeGutterDecoration=function(P,M){this.$gutterLayer.removeGutterDecoration(P,M)},O.prototype.updateBreakpoints=function(P){this._rows=P,this.$loop.schedule(this.CHANGE_GUTTER)},O.prototype.setAnnotations=function(P){this.$gutterLayer.setAnnotations(P),this.$loop.schedule(this.CHANGE_GUTTER)},O.prototype.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},O.prototype.hideCursor=function(){this.$cursorLayer.hideCursor()},O.prototype.showCursor=function(){this.$cursorLayer.showCursor()},O.prototype.scrollSelectionIntoView=function(P,M,F){this.scrollCursorIntoView(P,F),this.scrollCursorIntoView(M,F)},O.prototype.scrollCursorIntoView=function(P,M,F){if(this.$size.scrollerHeight!==0){var L=this.$cursorLayer.getPixelPosition(P),_=L.left,A=L.top,I=F&&F.top||0,R=F&&F.bottom||0;this.$scrollAnimation&&(this.$stopAnimation=!0);var B=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;B+I>A?(M&&B+I>A+this.lineHeight&&(A-=M*this.$size.scrollerHeight),A===0&&(A=-this.scrollMargin.top),this.session.setScrollTop(A)):B+this.$size.scrollerHeight-R=1-this.scrollMargin.top||M>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||P<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||P>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},O.prototype.pixelToScreenCoordinates=function(P,M){var F;if(this.$hasCssTransforms){F={top:0,left:0};var L=this.$fontMetrics.transformCoordinates([P,M]);P=L[1]-this.gutterWidth-this.margin.left,M=L[0]}else F=this.scroller.getBoundingClientRect();var _=P+this.scrollLeft-F.left-this.$padding,A=_/this.characterWidth,I=Math.floor((M+this.scrollTop-F.top)/this.lineHeight),R=this.$blockCursor?Math.floor(A):Math.round(A);return{row:I,column:R,side:A-R>0?1:-1,offsetX:_}},O.prototype.screenToTextCoordinates=function(P,M){var F;if(this.$hasCssTransforms){F={top:0,left:0};var L=this.$fontMetrics.transformCoordinates([P,M]);P=L[1]-this.gutterWidth-this.margin.left,M=L[0]}else F=this.scroller.getBoundingClientRect();var _=P+this.scrollLeft-F.left-this.$padding,A=_/this.characterWidth,I=this.$blockCursor?Math.floor(A):Math.round(A),R=Math.floor((M+this.scrollTop-F.top)/this.lineHeight);return this.session.screenToDocumentPosition(R,Math.max(I,0),_)},O.prototype.textToScreenCoordinates=function(P,M){var F=this.scroller.getBoundingClientRect(),L=this.session.documentToScreenPosition(P,M),_=this.$padding+(this.session.$bidiHandler.isBidiRow(L.row,P)?this.session.$bidiHandler.getPosLeft(L.column):Math.round(L.column*this.characterWidth)),A=L.row*this.lineHeight;return{pageX:F.left+_-this.scrollLeft,pageY:F.top+A-this.scrollTop}},O.prototype.visualizeFocus=function(){o.addCssClass(this.container,"ace_focus")},O.prototype.visualizeBlur=function(){o.removeCssClass(this.container,"ace_focus")},O.prototype.showComposition=function(P){this.$composition=P,P.cssText||(P.cssText=this.textarea.style.cssText),P.useTextareaForIME==null&&(P.useTextareaForIME=this.$useTextareaForIME),this.$useTextareaForIME?(o.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor(),this.$cursorLayer.element.style.display="none"):P.markerId=this.session.addMarker(P.markerRange,"ace_composition_marker","text")},O.prototype.setCompositionText=function(P){var M=this.session.selection.cursor;this.addToken(P,"composition_placeholder",M.row,M.column),this.$moveTextAreaToCursor()},O.prototype.hideComposition=function(){if(this.$composition){this.$composition.markerId&&this.session.removeMarker(this.$composition.markerId),o.removeCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText=this.$composition.cssText;var P=this.session.selection.cursor;this.removeExtraToken(P.row,P.column),this.$composition=null,this.$cursorLayer.element.style.display=""}},O.prototype.setGhostText=function(P,M){var F=this.session.selection.cursor,L=M||{row:F.row,column:F.column};this.removeGhostText();var _=this.$calculateWrappedTextChunks(P,L);this.addToken(_[0].text,"ghost_text",L.row,L.column),this.$ghostText={text:P,position:{row:L.row,column:L.column}};var A=o.createElement("div");if(_.length>1){var I=this.hideTokensAfterPosition(L.row,L.column),R;_.slice(1).forEach(function(G){var Y=o.createElement("div"),Q=o.createElement("span");Q.className="ace_ghost_text",G.wrapped&&(Y.className="ghost_text_line_wrapped"),G.text.length===0&&(G.text=" "),Q.appendChild(o.createTextNode(G.text)),Y.appendChild(Q),A.appendChild(Y),R=Y}),I.forEach(function(G){var Y=o.createElement("span");T(G.type)||(Y.className="ace_"+G.type.replace(/\./g," ace_")),Y.appendChild(o.createTextNode(G.value)),R.appendChild(Y)}),this.$ghostTextWidget={el:A,row:L.row,column:L.column,className:"ace_ghost_text_container"},this.session.widgetManager.addLineWidget(this.$ghostTextWidget);var B=this.$cursorLayer.getPixelPosition(L,!0),U=this.container,V=U.getBoundingClientRect().height,K=_.length*this.lineHeight,J=K0){var U=0;B.push(_[I].length);for(var V=0;V1||Math.abs(P.$size.height-L)>1?P.$resizeTimer.delay():P.$resizeTimer.cancel()}),this.$resizeObserver.observe(this.container)}},O}();k.prototype.CHANGE_CURSOR=1,k.prototype.CHANGE_MARKER=2,k.prototype.CHANGE_GUTTER=4,k.prototype.CHANGE_SCROLL=8,k.prototype.CHANGE_LINES=16,k.prototype.CHANGE_TEXT=32,k.prototype.CHANGE_SIZE=64,k.prototype.CHANGE_MARKER_BACK=128,k.prototype.CHANGE_MARKER_FRONT=256,k.prototype.CHANGE_FULL=512,k.prototype.CHANGE_H_SCROLL=1024,k.prototype.$changes=0,k.prototype.$padding=null,k.prototype.$frozen=!1,k.prototype.STEPS=8,s.implement(k.prototype,D),l.defineOptions(k.prototype,"renderer",{useResizeObserver:{set:function(O){!O&&this.$resizeObserver?(this.$resizeObserver.disconnect(),this.$resizeTimer.cancel(),this.$resizeTimer=this.$resizeObserver=null):O&&!this.$resizeObserver&&this.$addResizeObserver()}},animatedScroll:{initialValue:!1},showInvisibles:{set:function(O){this.$textLayer.setShowInvisibles(O)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(O){typeof O=="number"&&(this.$printMarginColumn=O),this.$showPrintMargin=!!O,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(O){this.$gutter.style.display=O?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},useSvgGutterIcons:{set:function(O){this.$gutterLayer.$useSvgGutterIcons=O},initialValue:!1},showFoldedAnnotations:{set:function(O){this.$gutterLayer.$showFoldedAnnotations=O},initialValue:!1},fadeFoldWidgets:{set:function(O){o.setCssClass(this.$gutter,"ace_fade-fold-widgets",O)},initialValue:!1},showFoldWidgets:{set:function(O){this.$gutterLayer.setShowFoldWidgets(O),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(O){this.$textLayer.setDisplayIndentGuides(O)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightIndentGuides:{set:function(O){this.$textLayer.setHighlightIndentGuides(O)==!0?this.$textLayer.$highlightIndentGuide():this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells)},initialValue:!0},highlightGutterLine:{set:function(O){this.$gutterLayer.setHighlightGutterLine(O),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},hScrollBarAlwaysVisible:{set:function(O){(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(O){(!this.$vScrollBarAlwaysVisible||!this.$vScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(O){typeof O=="number"&&(O=O+"px"),this.container.style.fontSize=O,this.updateFontSize()},initialValue:12},fontFamily:{set:function(O){this.container.style.fontFamily=O,this.updateFontSize()}},maxLines:{set:function(O){this.updateFull()}},minLines:{set:function(O){this.$minLines<562949953421311||(this.$minLines=0),this.updateFull()}},maxPixelHeight:{set:function(O){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(O){O=+O||0,this.$scrollPastEnd!=O&&(this.$scrollPastEnd=O,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(O){this.$gutterLayer.$fixedWidth=!!O,this.$loop.schedule(this.CHANGE_GUTTER)}},customScrollbar:{set:function(O){this.$updateCustomScrollbar(O)},initialValue:!1},theme:{set:function(O){this.setTheme(O)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0},hasCssTransforms:{},useTextareaForIME:{initialValue:!w.isMobile&&!w.isIE}}),n.VirtualRenderer=k}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(r,n,i){var s=r("../lib/oop"),o=r("../lib/net"),a=r("../lib/event_emitter").EventEmitter,l=r("../config");function u(f){var p="importScripts('"+o.qualifyURL(f)+"');";try{return new Blob([p],{type:"application/javascript"})}catch{var m=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,y=new m;return y.append(p),y.getBlob("application/javascript")}}function c(f){if(typeof Worker>"u")return{postMessage:function(){},terminate:function(){}};if(l.get("loadWorkerFromBlob")){var p=u(f),m=window.URL||window.webkitURL,y=m.createObjectURL(p);return new Worker(y)}return new Worker(f)}var h=function(f){f.postMessage||(f=this.$createWorkerFromOldConfig.apply(this,arguments)),this.$worker=f,this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){s.implement(this,a),this.$createWorkerFromOldConfig=function(f,p,m,y,b){if(r.nameToUrl&&!r.toUrl&&(r.toUrl=r.nameToUrl),l.get("packaged")||!r.toUrl)y=y||l.moduleUrl(p,"worker");else{var v=this.$normalizePath;y=y||v(r.toUrl("ace/worker/worker.js",null,"_"));var D={};f.forEach(function(E){D[E]=v(r.toUrl(E,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}return this.$worker=c(y),b&&this.send("importScripts",b),this.$worker.postMessage({init:!0,tlns:D,module:p,classname:m}),this.$worker},this.onMessage=function(f){var p=f.data;switch(p.type){case"event":this._signal(p.name,{data:p.data});break;case"call":var m=this.callbacks[p.id];m&&(m(p.data),delete this.callbacks[p.id]);break;case"error":this.reportError(p.data);break;case"log":window.console&&console.log&&console.log.apply(console,p.data);break}},this.reportError=function(f){window.console&&console.error&&console.error(f)},this.$normalizePath=function(f){return o.qualifyURL(f)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker.onerror=function(f){f.preventDefault()},this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(f,p){this.$worker.postMessage({command:f,args:p})},this.call=function(f,p,m){if(m){var y=this.callbackId++;this.callbacks[y]=m,p.push(y)}this.send(f,p)},this.emit=function(f,p){try{p.data&&p.data.err&&(p.data.err={message:p.data.err.message,stack:p.data.err.stack,code:p.data.err.code}),this.$worker&&this.$worker.postMessage({event:f,data:{data:p.data}})}catch(m){console.error(m.stack)}},this.attachToDocument=function(f){this.$doc&&this.terminate(),this.$doc=f,this.call("setValue",[f.getValue()]),f.on("change",this.changeListener,!0)},this.changeListener=function(f){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),f.action=="insert"?this.deltaQueue.push(f.start,f.lines):this.deltaQueue.push(f.start,f.end)},this.$sendDeltaQueue=function(){var f=this.deltaQueue;f&&(this.deltaQueue=null,f.length>50&&f.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:f}))}}).call(h.prototype);var d=function(f,p,m){var y=null,b=!1,v=Object.create(a),D=[],E=new h({messageBuffer:D,terminate:function(){},postMessage:function(w){D.push(w),y&&(b?setTimeout(C):C())}});E.setEmitSync=function(w){b=w};var C=function(){var w=D.shift();w.command?y[w.command].apply(y,w.args):w.event&&v._signal(w.event,w.data)};return v.postMessage=function(w){E.onMessage({data:w})},v.callback=function(w,T){this.postMessage({type:"call",id:T,data:w})},v.emit=function(w,T){this.postMessage({type:"event",name:w,data:T})},l.loadModule(["worker",p],function(w){for(y=new w[m](v);D.length;)C()}),E};n.UIWorkerClient=d,n.WorkerClient=h,n.createWorker=c}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(r,n,i){var s=r("./range").Range,o=r("./lib/event_emitter").EventEmitter,a=r("./lib/oop"),l=function(){function u(c,h,d,f,p,m){var y=this;this.length=h,this.session=c,this.doc=c.getDocument(),this.mainClass=p,this.othersClass=m,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate,!0),this.$others=f,this.$onCursorChange=function(){setTimeout(function(){y.onCursorChange()})},this.$pos=d;var b=c.getUndoManager().$undoStack||c.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=b.length,this.setup(),c.selection.on("changeCursor",this.$onCursorChange)}return u.prototype.setup=function(){var c=this,h=this.doc,d=this.session;this.selectionBefore=d.selection.toJSON(),d.selection.inMultiSelectMode&&d.selection.toSingleRange(),this.pos=h.createAnchor(this.$pos.row,this.$pos.column);var f=this.pos;f.$insertRight=!0,f.detach(),f.markerId=d.addMarker(new s(f.row,f.column,f.row,f.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(p){var m=h.createAnchor(p.row,p.column);m.$insertRight=!0,m.detach(),c.others.push(m)}),d.setUndoSelect(!1)},u.prototype.showOtherMarkers=function(){if(!this.othersActive){var c=this.session,h=this;this.othersActive=!0,this.others.forEach(function(d){d.markerId=c.addMarker(new s(d.row,d.column,d.row,d.column+h.length),h.othersClass,null,!1)})}},u.prototype.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var c=0;c=this.pos.column&&h.start.column<=this.pos.column+this.length+1,p=h.start.column-this.pos.column;if(this.updateAnchors(c),f&&(this.length+=d),f&&!this.session.$fromUndo){if(c.action==="insert")for(var m=this.others.length-1;m>=0;m--){var y=this.others[m],b={row:y.row,column:y.column+p};this.doc.insertMergedLines(b,c.lines)}else if(c.action==="remove")for(var m=this.others.length-1;m>=0;m--){var y=this.others[m],b={row:y.row,column:y.column+p};this.doc.remove(new s(b.row,b.column,b.row,b.column-d))}}this.$updating=!1,this.updateMarkers()}},u.prototype.updateAnchors=function(c){this.pos.onChange(c);for(var h=this.others.length;h--;)this.others[h].onChange(c);this.updateMarkers()},u.prototype.updateMarkers=function(){if(!this.$updating){var c=this,h=this.session,d=function(p,m){h.removeMarker(p.markerId),p.markerId=h.addMarker(new s(p.row,p.column,p.row,p.column+c.length),m,null,!1)};d(this.pos,this.mainClass);for(var f=this.others.length;f--;)d(this.others[f],this.othersClass)}},u.prototype.onCursorChange=function(c){if(!(this.$updating||!this.session)){var h=this.session.selection.getCursor();h.row===this.pos.row&&h.column>=this.pos.column&&h.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",c)):(this.hideOtherMarkers(),this._emit("cursorLeave",c))}},u.prototype.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.off("change",this.$onUpdate),this.session.selection.off("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},u.prototype.cancel=function(){if(this.$undoStackDepth!==-1){for(var c=this.session.getUndoManager(),h=(c.$undoStack||c.$undostack).length-this.$undoStackDepth,d=0;d1?o.multiSelect.joinSelections():o.multiSelect.splitIntoLines()},bindKey:{win:"Ctrl-Alt-L",mac:"Ctrl-Alt-L"},readOnly:!0},{name:"splitSelectionIntoLines",description:"Split into lines",exec:function(o){o.multiSelect.splitIntoLines()},readOnly:!0},{name:"alignCursors",description:"Align cursors",exec:function(o){o.alignCursors()},bindKey:{win:"Ctrl-Alt-A",mac:"Ctrl-Alt-A"},scrollIntoView:"cursor"},{name:"findAll",description:"Find all",exec:function(o){o.findAll()},bindKey:{win:"Ctrl-Alt-K",mac:"Ctrl-Alt-G"},scrollIntoView:"cursor",readOnly:!0}],n.multiSelectCommands=[{name:"singleSelection",description:"Single selection",bindKey:"esc",exec:function(o){o.exitMultiSelectMode()},scrollIntoView:"cursor",readOnly:!0,isAvailable:function(o){return o&&o.inMultiSelectMode}}];var s=r("../keyboard/hash_handler").HashHandler;n.keyboardHandler=new s(n.multiSelectCommands)}),ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"],function(r,n,i){var s=r("./range_list").RangeList,o=r("./range").Range,a=r("./selection").Selection,l=r("./mouse/multi_select_handler").onMouseDown,u=r("./lib/event"),c=r("./lib/lang"),h=r("./commands/multi_select_commands");n.commands=h.defaultCommands.concat(h.multiSelectCommands);var d=r("./search").Search,f=new d;function p(E,C,w){return f.$options.wrap=!0,f.$options.needle=C,f.$options.backwards=w==-1,f.find(E)}var m=r("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(m.prototype),(function(){this.ranges=null,this.rangeList=null,this.addRange=function(E,C){if(E){if(!this.inMultiSelectMode&&this.rangeCount===0){var w=this.toOrientedRange();if(this.rangeList.add(w),this.rangeList.add(E),this.rangeList.ranges.length!=2)return this.rangeList.removeAll(),C||this.fromOrientedRange(E);this.rangeList.removeAll(),this.rangeList.add(w),this.$onAddRange(w)}E.cursor||(E.cursor=E.end);var T=this.rangeList.add(E);return this.$onAddRange(E),T.length&&this.$onRemoveRange(T),this.rangeCount>1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),C||this.fromOrientedRange(E)}},this.toSingleRange=function(E){E=E||this.ranges[0];var C=this.rangeList.removeAll();C.length&&this.$onRemoveRange(C),E&&this.fromOrientedRange(E)},this.substractPoint=function(E){var C=this.rangeList.substractPoint(E);if(C)return this.$onRemoveRange(C),C[0]},this.mergeOverlappingRanges=function(){var E=this.rangeList.merge();E.length&&this.$onRemoveRange(E)},this.$onAddRange=function(E){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(E),this._signal("addRange",{range:E})},this.$onRemoveRange=function(E){if(this.rangeCount=this.rangeList.ranges.length,this.rangeCount==1&&this.inMultiSelectMode){var C=this.rangeList.ranges.pop();E.push(C),this.rangeCount=0}for(var w=E.length;w--;){var T=this.ranges.indexOf(E[w]);this.ranges.splice(T,1)}this._signal("removeRange",{ranges:E}),this.rangeCount===0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),C=C||this.ranges[0],C&&!C.isEqual(this.getRange())&&this.fromOrientedRange(C)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new s,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){for(var E=this.ranges.length?this.ranges:[this.getRange()],C=[],w=0;w1){var E=this.rangeList.ranges,C=E[E.length-1],w=o.fromPoints(E[0].start,C.end);this.toSingleRange(),this.setSelectionRange(w,C.cursor==C.start)}else{var T=this.session.documentToScreenPosition(this.cursor),k=this.session.documentToScreenPosition(this.anchor),O=this.rectangularRangeBlock(T,k);O.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(E,C,w){var T=[],k=E.column0;)U--;if(U>0)for(var V=0;T[V].isEmpty();)V++;for(var K=U;K>=V;K--)T[K].isEmpty()&&T.splice(K,1)}return T}}).call(a.prototype);var y=r("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(E){E.cursor||(E.cursor=E.end);var C=this.getSelectionStyle();return E.marker=this.session.addMarker(E,"ace_selection",C),this.session.$selectionMarkers.push(E),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,E},this.removeSelectionMarker=function(E){if(E.marker){this.session.removeMarker(E.marker);var C=this.session.$selectionMarkers.indexOf(E);C!=-1&&this.session.$selectionMarkers.splice(C,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(E){for(var C=this.session.$selectionMarkers,w=E.length;w--;){var T=E[w];if(T.marker){this.session.removeMarker(T.marker);var k=C.indexOf(T);k!=-1&&C.splice(k,1)}}this.session.selectionMarkerCount=C.length},this.$onAddRange=function(E){this.addSelectionMarker(E.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(E){this.removeSelectionMarkers(E.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(E){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(h.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(E){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(h.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(E){var C=E.command,w=E.editor;if(w.multiSelect){if(C.multiSelectAction)C.multiSelectAction=="forEach"?T=w.forEachSelection(C,E.args):C.multiSelectAction=="forEachLine"?T=w.forEachSelection(C,E.args,!0):C.multiSelectAction=="single"?(w.exitMultiSelectMode(),T=C.exec(w,E.args||{})):T=C.multiSelectAction(w,E.args||{});else{var T=C.exec(w,E.args||{});w.multiSelect.addRange(w.multiSelect.toOrientedRange()),w.multiSelect.mergeOverlappingRanges()}return T}},this.forEachSelection=function(E,C,w){if(!this.inVirtualSelectionMode){var T=w&&w.keepOrder,k=w==!0||w&&w.$byLines,O=this.session,P=this.selection,M=P.rangeList,F=(T?P:M).ranges,L;if(!F.length)return E.exec?E.exec(this,C||{}):E(this,C||{});var _=P._eventRegistry;P._eventRegistry={};var A=new a(O);this.inVirtualSelectionMode=!0;for(var I=F.length;I--;){if(k)for(;I>0&&F[I].start.row==F[I-1].end.row;)I--;A.fromOrientedRange(F[I]),A.index=I,this.selection=O.selection=A;var R=E.exec?E.exec(this,C||{}):E(this,C||{});!L&&R!==void 0&&(L=R),A.toOrientedRange(F[I])}A.detach(),this.selection=O.selection=P,this.inVirtualSelectionMode=!1,P._eventRegistry=_,P.mergeOverlappingRanges(),P.ranges[0]&&P.fromOrientedRange(P.ranges[0]);var B=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),B&&B.from==B.to&&this.renderer.animateScrolling(B.from),L}},this.exitMultiSelectMode=function(){!this.inMultiSelectMode||this.inVirtualSelectionMode||this.multiSelect.toSingleRange()},this.getSelectedText=function(){var E="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var C=this.multiSelect.rangeList.ranges,w=[],T=0;T0);P<0&&(P=0),M>=L&&(M=L-1)}var A=this.session.removeFullLines(P,M);A=this.$reAlignText(A,F),this.session.insert({row:P,column:0},A.join(`
+`)+`
+`),F||(O.start.column=0,O.end.column=A[A.length-1].length),this.selection.setRange(O)}else{k.forEach(function(U){C.substractPoint(U.cursor)});var I=0,R=1/0,B=w.map(function(U){var V=U.cursor,K=E.getLine(V.row),J=K.substr(V.column).search(/\S/g);return J==-1&&(J=0),V.column>I&&(I=V.column),JG?E.insert(K,c.stringRepeat(" ",J-G)):E.remove(new o(K.row,K.column,K.row,K.column-J+G)),U.start.column=U.end.column=I,U.start.row=U.end.row=K.row,U.cursor=U.end}),C.fromOrientedRange(w[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(E,C){var w=!0,T=!0,k,O,P;return E.map(function(A){var I=A.match(/(\s*)(.*?)(\s*)([=:].*)/);return I?k==null?(k=I[1].length,O=I[2].length,P=I[3].length,I):(k+O+P!=I[1].length+I[2].length+I[3].length&&(T=!1),k!=I[1].length&&(w=!1),k>I[1].length&&(k=I[1].length),OI[3].length&&(P=I[3].length),I):[A]}).map(C?F:w?T?L:F:_);function M(A){return c.stringRepeat(" ",A)}function F(A){return A[2]?M(k)+A[2]+M(O-A[2].length+P)+A[4].replace(/^([=:])\s+/,"$1 "):A[0]}function L(A){return A[2]?M(k+O-A[2].length)+A[2]+M(P)+A[4].replace(/^([=:])\s+/,"$1 "):A[0]}function _(A){return A[2]?M(k)+A[2]+M(P)+A[4].replace(/^([=:])\s+/,"$1 "):A[0]}}}).call(y.prototype);function b(E,C){return E.row==C.row&&E.column==C.column}n.onSessionChange=function(E){var C=E.session;C&&!C.multiSelect&&(C.$selectionMarkers=[],C.selection.$initRangeList(),C.multiSelect=C.selection),this.multiSelect=C&&C.multiSelect;var w=E.oldSession;w&&(w.multiSelect.off("addRange",this.$onAddRange),w.multiSelect.off("removeRange",this.$onRemoveRange),w.multiSelect.off("multiSelect",this.$onMultiSelect),w.multiSelect.off("singleSelect",this.$onSingleSelect),w.multiSelect.lead.off("change",this.$checkMultiselectChange),w.multiSelect.anchor.off("change",this.$checkMultiselectChange)),C&&(C.multiSelect.on("addRange",this.$onAddRange),C.multiSelect.on("removeRange",this.$onRemoveRange),C.multiSelect.on("multiSelect",this.$onMultiSelect),C.multiSelect.on("singleSelect",this.$onSingleSelect),C.multiSelect.lead.on("change",this.$checkMultiselectChange),C.multiSelect.anchor.on("change",this.$checkMultiselectChange)),C&&this.inMultiSelectMode!=C.selection.inMultiSelectMode&&(C.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())};function v(E){E.$multiselectOnSessionChange||(E.$onAddRange=E.$onAddRange.bind(E),E.$onRemoveRange=E.$onRemoveRange.bind(E),E.$onMultiSelect=E.$onMultiSelect.bind(E),E.$onSingleSelect=E.$onSingleSelect.bind(E),E.$multiselectOnSessionChange=n.onSessionChange.bind(E),E.$checkMultiselectChange=E.$checkMultiselectChange.bind(E),E.$multiselectOnSessionChange(E),E.on("changeSession",E.$multiselectOnSessionChange),E.on("mousedown",l),E.commands.addCommands(h.defaultCommands),D(E))}function D(E){if(!E.textInput)return;var C=E.textInput.getElement(),w=!1;u.addListener(C,"keydown",function(k){var O=k.keyCode==18&&!(k.ctrlKey||k.shiftKey||k.metaKey);E.$blockSelectEnabled&&O?w||(E.renderer.setMouseCursor("crosshair"),w=!0):w&&T()},E),u.addListener(C,"keyup",T,E),u.addListener(C,"blur",T,E);function T(k){w&&(E.renderer.setMouseCursor(""),w=!1)}}n.MultiSelect=v,r("./config").defineOptions(y.prototype,"editor",{enableMultiselect:{set:function(E){v(this),E?this.on("mousedown",l):this.off("mousedown",l)},value:!0},enableBlockSelect:{set:function(E){this.$blockSelectEnabled=E},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(r,n,i){var s=r("../../range").Range,o=n.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(a,l,u){var c=a.getLine(u);return this.foldingStartMarker.test(c)?"start":l=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(c)?"end":""},this.getFoldWidgetRange=function(a,l,u){return null},this.indentationBlock=function(a,l,u){var c=/\S/,h=a.getLine(l),d=h.search(c);if(d!=-1){for(var f=u||h.length,p=a.getLength(),m=l,y=l;++lm){var D=a.getLine(y).length;return new s(m,f,y,D)}}},this.openingBracketBlock=function(a,l,u,c,h){var d={row:u,column:c+1},f=a.$findClosingBracket(l,d,h);if(f){var p=a.foldWidgets[f.row];return p==null&&(p=a.getFoldWidget(f.row)),p=="start"&&f.row>d.row&&(f.row--,f.column=a.getLine(f.row).length),s.fromPoints(d,f)}},this.closingBracketBlock=function(a,l,u,c,h){var d={row:u,column:c},f=a.$findOpeningBracket(l,d);if(f)return f.column++,d.column--,s.fromPoints(f,d)}}).call(o.prototype)}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range","ace/config"],function(r,n,i){var s=r("../line_widgets").LineWidgets,o=r("../lib/dom"),a=r("../range").Range,l=r("../config").nls;function u(h,d,f){for(var p=0,m=h.length-1;p<=m;){var y=p+m>>1,b=f(d,h[y]);if(b>0)p=y+1;else if(b<0)m=y-1;else return y}return-(p+1)}function c(h,d,f){var p=h.getAnnotations().sort(a.comparePoints);if(p.length){var m=u(p,{row:d,column:-1},a.comparePoints);m<0&&(m=-m-1),m>=p.length?m=f>0?0:p.length-1:m===0&&f<0&&(m=p.length-1);var y=p[m];if(!(!y||!f)){if(y.row===d){do y=p[m+=f];while(y&&y.row===d);if(!y)return p.slice()}var b=[];d=y.row;do b[f<0?"unshift":"push"](y),y=p[m+=f];while(y&&y.row==d);return b.length&&b}}}n.showErrorMarker=function(h,d){var f=h.session;f.widgetManager||(f.widgetManager=new s(f),f.widgetManager.attach(h));var p=h.getCursorPosition(),m=p.row,y=f.widgetManager.getWidgetsAtRow(m).filter(function(O){return O.type=="errorMarker"})[0];y?y.destroy():m-=d;var b=c(f,m,d),v;if(b){var D=b[0];p.column=(D.pos&&typeof D.column!="number"?D.pos.sc:D.column)||0,p.row=D.row,v=h.renderer.$gutterLayer.$annotations[p.row]}else{if(y)return;v={displayText:[l("error-marker.good-state","Looks good!")],className:"ace_ok"}}h.session.unfold(p.row),h.selection.moveToPosition(p);var E={row:p.row,fixedWidth:!0,coverGutter:!0,el:o.createElement("div"),type:"errorMarker"},C=E.el.appendChild(o.createElement("div")),w=E.el.appendChild(o.createElement("div"));w.className="error_widget_arrow "+v.className;var T=h.renderer.$cursorLayer.getPixelPosition(p).left;w.style.left=T+h.renderer.gutterWidth-5+"px",E.el.className="error_widget_wrapper",C.className="error_widget "+v.className,v.displayText.forEach(function(O,P){C.appendChild(o.createTextNode(O)),P